xref: /freebsd/sys/crypto/openssl/amd64/rc4-x86_64.S (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1/* $FreeBSD$ */
2/* Do not modify. This file is auto-generated from rc4-x86_64.pl. */
3.text
4
5
6.globl	RC4
7.type	RC4,@function
8.align	16
9RC4:
10.cfi_startproc
11	orq	%rsi,%rsi
12	jne	.Lentry
13	.byte	0xf3,0xc3
14.Lentry:
15	pushq	%rbx
16.cfi_adjust_cfa_offset	8
17.cfi_offset	%rbx,-16
18	pushq	%r12
19.cfi_adjust_cfa_offset	8
20.cfi_offset	%r12,-24
21	pushq	%r13
22.cfi_adjust_cfa_offset	8
23.cfi_offset	%r13,-32
24.Lprologue:
25	movq	%rsi,%r11
26	movq	%rdx,%r12
27	movq	%rcx,%r13
28	xorq	%r10,%r10
29	xorq	%rcx,%rcx
30
31	leaq	8(%rdi),%rdi
32	movb	-8(%rdi),%r10b
33	movb	-4(%rdi),%cl
34	cmpl	$-1,256(%rdi)
35	je	.LRC4_CHAR
36	movl	OPENSSL_ia32cap_P(%rip),%r8d
37	xorq	%rbx,%rbx
38	incb	%r10b
39	subq	%r10,%rbx
40	subq	%r12,%r13
41	movl	(%rdi,%r10,4),%eax
42	testq	$-16,%r11
43	jz	.Lloop1
44	btl	$30,%r8d
45	jc	.Lintel
46	andq	$7,%rbx
47	leaq	1(%r10),%rsi
48	jz	.Loop8
49	subq	%rbx,%r11
50.Loop8_warmup:
51	addb	%al,%cl
52	movl	(%rdi,%rcx,4),%edx
53	movl	%eax,(%rdi,%rcx,4)
54	movl	%edx,(%rdi,%r10,4)
55	addb	%dl,%al
56	incb	%r10b
57	movl	(%rdi,%rax,4),%edx
58	movl	(%rdi,%r10,4),%eax
59	xorb	(%r12),%dl
60	movb	%dl,(%r12,%r13,1)
61	leaq	1(%r12),%r12
62	decq	%rbx
63	jnz	.Loop8_warmup
64
65	leaq	1(%r10),%rsi
66	jmp	.Loop8
67.align	16
68.Loop8:
69	addb	%al,%cl
70	movl	(%rdi,%rcx,4),%edx
71	movl	%eax,(%rdi,%rcx,4)
72	movl	0(%rdi,%rsi,4),%ebx
73	rorq	$8,%r8
74	movl	%edx,0(%rdi,%r10,4)
75	addb	%al,%dl
76	movb	(%rdi,%rdx,4),%r8b
77	addb	%bl,%cl
78	movl	(%rdi,%rcx,4),%edx
79	movl	%ebx,(%rdi,%rcx,4)
80	movl	4(%rdi,%rsi,4),%eax
81	rorq	$8,%r8
82	movl	%edx,4(%rdi,%r10,4)
83	addb	%bl,%dl
84	movb	(%rdi,%rdx,4),%r8b
85	addb	%al,%cl
86	movl	(%rdi,%rcx,4),%edx
87	movl	%eax,(%rdi,%rcx,4)
88	movl	8(%rdi,%rsi,4),%ebx
89	rorq	$8,%r8
90	movl	%edx,8(%rdi,%r10,4)
91	addb	%al,%dl
92	movb	(%rdi,%rdx,4),%r8b
93	addb	%bl,%cl
94	movl	(%rdi,%rcx,4),%edx
95	movl	%ebx,(%rdi,%rcx,4)
96	movl	12(%rdi,%rsi,4),%eax
97	rorq	$8,%r8
98	movl	%edx,12(%rdi,%r10,4)
99	addb	%bl,%dl
100	movb	(%rdi,%rdx,4),%r8b
101	addb	%al,%cl
102	movl	(%rdi,%rcx,4),%edx
103	movl	%eax,(%rdi,%rcx,4)
104	movl	16(%rdi,%rsi,4),%ebx
105	rorq	$8,%r8
106	movl	%edx,16(%rdi,%r10,4)
107	addb	%al,%dl
108	movb	(%rdi,%rdx,4),%r8b
109	addb	%bl,%cl
110	movl	(%rdi,%rcx,4),%edx
111	movl	%ebx,(%rdi,%rcx,4)
112	movl	20(%rdi,%rsi,4),%eax
113	rorq	$8,%r8
114	movl	%edx,20(%rdi,%r10,4)
115	addb	%bl,%dl
116	movb	(%rdi,%rdx,4),%r8b
117	addb	%al,%cl
118	movl	(%rdi,%rcx,4),%edx
119	movl	%eax,(%rdi,%rcx,4)
120	movl	24(%rdi,%rsi,4),%ebx
121	rorq	$8,%r8
122	movl	%edx,24(%rdi,%r10,4)
123	addb	%al,%dl
124	movb	(%rdi,%rdx,4),%r8b
125	addb	$8,%sil
126	addb	%bl,%cl
127	movl	(%rdi,%rcx,4),%edx
128	movl	%ebx,(%rdi,%rcx,4)
129	movl	-4(%rdi,%rsi,4),%eax
130	rorq	$8,%r8
131	movl	%edx,28(%rdi,%r10,4)
132	addb	%bl,%dl
133	movb	(%rdi,%rdx,4),%r8b
134	addb	$8,%r10b
135	rorq	$8,%r8
136	subq	$8,%r11
137
138	xorq	(%r12),%r8
139	movq	%r8,(%r12,%r13,1)
140	leaq	8(%r12),%r12
141
142	testq	$-8,%r11
143	jnz	.Loop8
144	cmpq	$0,%r11
145	jne	.Lloop1
146	jmp	.Lexit
147
148.align	16
149.Lintel:
150	testq	$-32,%r11
151	jz	.Lloop1
152	andq	$15,%rbx
153	jz	.Loop16_is_hot
154	subq	%rbx,%r11
155.Loop16_warmup:
156	addb	%al,%cl
157	movl	(%rdi,%rcx,4),%edx
158	movl	%eax,(%rdi,%rcx,4)
159	movl	%edx,(%rdi,%r10,4)
160	addb	%dl,%al
161	incb	%r10b
162	movl	(%rdi,%rax,4),%edx
163	movl	(%rdi,%r10,4),%eax
164	xorb	(%r12),%dl
165	movb	%dl,(%r12,%r13,1)
166	leaq	1(%r12),%r12
167	decq	%rbx
168	jnz	.Loop16_warmup
169
170	movq	%rcx,%rbx
171	xorq	%rcx,%rcx
172	movb	%bl,%cl
173
174.Loop16_is_hot:
175	leaq	(%rdi,%r10,4),%rsi
176	addb	%al,%cl
177	movl	(%rdi,%rcx,4),%edx
178	pxor	%xmm0,%xmm0
179	movl	%eax,(%rdi,%rcx,4)
180	addb	%dl,%al
181	movl	4(%rsi),%ebx
182	movzbl	%al,%eax
183	movl	%edx,0(%rsi)
184	addb	%bl,%cl
185	pinsrw	$0,(%rdi,%rax,4),%xmm0
186	jmp	.Loop16_enter
187.align	16
188.Loop16:
189	addb	%al,%cl
190	movl	(%rdi,%rcx,4),%edx
191	pxor	%xmm0,%xmm2
192	psllq	$8,%xmm1
193	pxor	%xmm0,%xmm0
194	movl	%eax,(%rdi,%rcx,4)
195	addb	%dl,%al
196	movl	4(%rsi),%ebx
197	movzbl	%al,%eax
198	movl	%edx,0(%rsi)
199	pxor	%xmm1,%xmm2
200	addb	%bl,%cl
201	pinsrw	$0,(%rdi,%rax,4),%xmm0
202	movdqu	%xmm2,(%r12,%r13,1)
203	leaq	16(%r12),%r12
204.Loop16_enter:
205	movl	(%rdi,%rcx,4),%edx
206	pxor	%xmm1,%xmm1
207	movl	%ebx,(%rdi,%rcx,4)
208	addb	%dl,%bl
209	movl	8(%rsi),%eax
210	movzbl	%bl,%ebx
211	movl	%edx,4(%rsi)
212	addb	%al,%cl
213	pinsrw	$0,(%rdi,%rbx,4),%xmm1
214	movl	(%rdi,%rcx,4),%edx
215	movl	%eax,(%rdi,%rcx,4)
216	addb	%dl,%al
217	movl	12(%rsi),%ebx
218	movzbl	%al,%eax
219	movl	%edx,8(%rsi)
220	addb	%bl,%cl
221	pinsrw	$1,(%rdi,%rax,4),%xmm0
222	movl	(%rdi,%rcx,4),%edx
223	movl	%ebx,(%rdi,%rcx,4)
224	addb	%dl,%bl
225	movl	16(%rsi),%eax
226	movzbl	%bl,%ebx
227	movl	%edx,12(%rsi)
228	addb	%al,%cl
229	pinsrw	$1,(%rdi,%rbx,4),%xmm1
230	movl	(%rdi,%rcx,4),%edx
231	movl	%eax,(%rdi,%rcx,4)
232	addb	%dl,%al
233	movl	20(%rsi),%ebx
234	movzbl	%al,%eax
235	movl	%edx,16(%rsi)
236	addb	%bl,%cl
237	pinsrw	$2,(%rdi,%rax,4),%xmm0
238	movl	(%rdi,%rcx,4),%edx
239	movl	%ebx,(%rdi,%rcx,4)
240	addb	%dl,%bl
241	movl	24(%rsi),%eax
242	movzbl	%bl,%ebx
243	movl	%edx,20(%rsi)
244	addb	%al,%cl
245	pinsrw	$2,(%rdi,%rbx,4),%xmm1
246	movl	(%rdi,%rcx,4),%edx
247	movl	%eax,(%rdi,%rcx,4)
248	addb	%dl,%al
249	movl	28(%rsi),%ebx
250	movzbl	%al,%eax
251	movl	%edx,24(%rsi)
252	addb	%bl,%cl
253	pinsrw	$3,(%rdi,%rax,4),%xmm0
254	movl	(%rdi,%rcx,4),%edx
255	movl	%ebx,(%rdi,%rcx,4)
256	addb	%dl,%bl
257	movl	32(%rsi),%eax
258	movzbl	%bl,%ebx
259	movl	%edx,28(%rsi)
260	addb	%al,%cl
261	pinsrw	$3,(%rdi,%rbx,4),%xmm1
262	movl	(%rdi,%rcx,4),%edx
263	movl	%eax,(%rdi,%rcx,4)
264	addb	%dl,%al
265	movl	36(%rsi),%ebx
266	movzbl	%al,%eax
267	movl	%edx,32(%rsi)
268	addb	%bl,%cl
269	pinsrw	$4,(%rdi,%rax,4),%xmm0
270	movl	(%rdi,%rcx,4),%edx
271	movl	%ebx,(%rdi,%rcx,4)
272	addb	%dl,%bl
273	movl	40(%rsi),%eax
274	movzbl	%bl,%ebx
275	movl	%edx,36(%rsi)
276	addb	%al,%cl
277	pinsrw	$4,(%rdi,%rbx,4),%xmm1
278	movl	(%rdi,%rcx,4),%edx
279	movl	%eax,(%rdi,%rcx,4)
280	addb	%dl,%al
281	movl	44(%rsi),%ebx
282	movzbl	%al,%eax
283	movl	%edx,40(%rsi)
284	addb	%bl,%cl
285	pinsrw	$5,(%rdi,%rax,4),%xmm0
286	movl	(%rdi,%rcx,4),%edx
287	movl	%ebx,(%rdi,%rcx,4)
288	addb	%dl,%bl
289	movl	48(%rsi),%eax
290	movzbl	%bl,%ebx
291	movl	%edx,44(%rsi)
292	addb	%al,%cl
293	pinsrw	$5,(%rdi,%rbx,4),%xmm1
294	movl	(%rdi,%rcx,4),%edx
295	movl	%eax,(%rdi,%rcx,4)
296	addb	%dl,%al
297	movl	52(%rsi),%ebx
298	movzbl	%al,%eax
299	movl	%edx,48(%rsi)
300	addb	%bl,%cl
301	pinsrw	$6,(%rdi,%rax,4),%xmm0
302	movl	(%rdi,%rcx,4),%edx
303	movl	%ebx,(%rdi,%rcx,4)
304	addb	%dl,%bl
305	movl	56(%rsi),%eax
306	movzbl	%bl,%ebx
307	movl	%edx,52(%rsi)
308	addb	%al,%cl
309	pinsrw	$6,(%rdi,%rbx,4),%xmm1
310	movl	(%rdi,%rcx,4),%edx
311	movl	%eax,(%rdi,%rcx,4)
312	addb	%dl,%al
313	movl	60(%rsi),%ebx
314	movzbl	%al,%eax
315	movl	%edx,56(%rsi)
316	addb	%bl,%cl
317	pinsrw	$7,(%rdi,%rax,4),%xmm0
318	addb	$16,%r10b
319	movdqu	(%r12),%xmm2
320	movl	(%rdi,%rcx,4),%edx
321	movl	%ebx,(%rdi,%rcx,4)
322	addb	%dl,%bl
323	movzbl	%bl,%ebx
324	movl	%edx,60(%rsi)
325	leaq	(%rdi,%r10,4),%rsi
326	pinsrw	$7,(%rdi,%rbx,4),%xmm1
327	movl	(%rsi),%eax
328	movq	%rcx,%rbx
329	xorq	%rcx,%rcx
330	subq	$16,%r11
331	movb	%bl,%cl
332	testq	$-16,%r11
333	jnz	.Loop16
334
335	psllq	$8,%xmm1
336	pxor	%xmm0,%xmm2
337	pxor	%xmm1,%xmm2
338	movdqu	%xmm2,(%r12,%r13,1)
339	leaq	16(%r12),%r12
340
341	cmpq	$0,%r11
342	jne	.Lloop1
343	jmp	.Lexit
344
345.align	16
346.Lloop1:
347	addb	%al,%cl
348	movl	(%rdi,%rcx,4),%edx
349	movl	%eax,(%rdi,%rcx,4)
350	movl	%edx,(%rdi,%r10,4)
351	addb	%dl,%al
352	incb	%r10b
353	movl	(%rdi,%rax,4),%edx
354	movl	(%rdi,%r10,4),%eax
355	xorb	(%r12),%dl
356	movb	%dl,(%r12,%r13,1)
357	leaq	1(%r12),%r12
358	decq	%r11
359	jnz	.Lloop1
360	jmp	.Lexit
361
362.align	16
363.LRC4_CHAR:
364	addb	$1,%r10b
365	movzbl	(%rdi,%r10,1),%eax
366	testq	$-8,%r11
367	jz	.Lcloop1
368	jmp	.Lcloop8
369.align	16
370.Lcloop8:
371	movl	(%r12),%r8d
372	movl	4(%r12),%r9d
373	addb	%al,%cl
374	leaq	1(%r10),%rsi
375	movzbl	(%rdi,%rcx,1),%edx
376	movzbl	%sil,%esi
377	movzbl	(%rdi,%rsi,1),%ebx
378	movb	%al,(%rdi,%rcx,1)
379	cmpq	%rsi,%rcx
380	movb	%dl,(%rdi,%r10,1)
381	jne	.Lcmov0
382	movq	%rax,%rbx
383.Lcmov0:
384	addb	%al,%dl
385	xorb	(%rdi,%rdx,1),%r8b
386	rorl	$8,%r8d
387	addb	%bl,%cl
388	leaq	1(%rsi),%r10
389	movzbl	(%rdi,%rcx,1),%edx
390	movzbl	%r10b,%r10d
391	movzbl	(%rdi,%r10,1),%eax
392	movb	%bl,(%rdi,%rcx,1)
393	cmpq	%r10,%rcx
394	movb	%dl,(%rdi,%rsi,1)
395	jne	.Lcmov1
396	movq	%rbx,%rax
397.Lcmov1:
398	addb	%bl,%dl
399	xorb	(%rdi,%rdx,1),%r8b
400	rorl	$8,%r8d
401	addb	%al,%cl
402	leaq	1(%r10),%rsi
403	movzbl	(%rdi,%rcx,1),%edx
404	movzbl	%sil,%esi
405	movzbl	(%rdi,%rsi,1),%ebx
406	movb	%al,(%rdi,%rcx,1)
407	cmpq	%rsi,%rcx
408	movb	%dl,(%rdi,%r10,1)
409	jne	.Lcmov2
410	movq	%rax,%rbx
411.Lcmov2:
412	addb	%al,%dl
413	xorb	(%rdi,%rdx,1),%r8b
414	rorl	$8,%r8d
415	addb	%bl,%cl
416	leaq	1(%rsi),%r10
417	movzbl	(%rdi,%rcx,1),%edx
418	movzbl	%r10b,%r10d
419	movzbl	(%rdi,%r10,1),%eax
420	movb	%bl,(%rdi,%rcx,1)
421	cmpq	%r10,%rcx
422	movb	%dl,(%rdi,%rsi,1)
423	jne	.Lcmov3
424	movq	%rbx,%rax
425.Lcmov3:
426	addb	%bl,%dl
427	xorb	(%rdi,%rdx,1),%r8b
428	rorl	$8,%r8d
429	addb	%al,%cl
430	leaq	1(%r10),%rsi
431	movzbl	(%rdi,%rcx,1),%edx
432	movzbl	%sil,%esi
433	movzbl	(%rdi,%rsi,1),%ebx
434	movb	%al,(%rdi,%rcx,1)
435	cmpq	%rsi,%rcx
436	movb	%dl,(%rdi,%r10,1)
437	jne	.Lcmov4
438	movq	%rax,%rbx
439.Lcmov4:
440	addb	%al,%dl
441	xorb	(%rdi,%rdx,1),%r9b
442	rorl	$8,%r9d
443	addb	%bl,%cl
444	leaq	1(%rsi),%r10
445	movzbl	(%rdi,%rcx,1),%edx
446	movzbl	%r10b,%r10d
447	movzbl	(%rdi,%r10,1),%eax
448	movb	%bl,(%rdi,%rcx,1)
449	cmpq	%r10,%rcx
450	movb	%dl,(%rdi,%rsi,1)
451	jne	.Lcmov5
452	movq	%rbx,%rax
453.Lcmov5:
454	addb	%bl,%dl
455	xorb	(%rdi,%rdx,1),%r9b
456	rorl	$8,%r9d
457	addb	%al,%cl
458	leaq	1(%r10),%rsi
459	movzbl	(%rdi,%rcx,1),%edx
460	movzbl	%sil,%esi
461	movzbl	(%rdi,%rsi,1),%ebx
462	movb	%al,(%rdi,%rcx,1)
463	cmpq	%rsi,%rcx
464	movb	%dl,(%rdi,%r10,1)
465	jne	.Lcmov6
466	movq	%rax,%rbx
467.Lcmov6:
468	addb	%al,%dl
469	xorb	(%rdi,%rdx,1),%r9b
470	rorl	$8,%r9d
471	addb	%bl,%cl
472	leaq	1(%rsi),%r10
473	movzbl	(%rdi,%rcx,1),%edx
474	movzbl	%r10b,%r10d
475	movzbl	(%rdi,%r10,1),%eax
476	movb	%bl,(%rdi,%rcx,1)
477	cmpq	%r10,%rcx
478	movb	%dl,(%rdi,%rsi,1)
479	jne	.Lcmov7
480	movq	%rbx,%rax
481.Lcmov7:
482	addb	%bl,%dl
483	xorb	(%rdi,%rdx,1),%r9b
484	rorl	$8,%r9d
485	leaq	-8(%r11),%r11
486	movl	%r8d,(%r13)
487	leaq	8(%r12),%r12
488	movl	%r9d,4(%r13)
489	leaq	8(%r13),%r13
490
491	testq	$-8,%r11
492	jnz	.Lcloop8
493	cmpq	$0,%r11
494	jne	.Lcloop1
495	jmp	.Lexit
496.align	16
497.Lcloop1:
498	addb	%al,%cl
499	movzbl	%cl,%ecx
500	movzbl	(%rdi,%rcx,1),%edx
501	movb	%al,(%rdi,%rcx,1)
502	movb	%dl,(%rdi,%r10,1)
503	addb	%al,%dl
504	addb	$1,%r10b
505	movzbl	%dl,%edx
506	movzbl	%r10b,%r10d
507	movzbl	(%rdi,%rdx,1),%edx
508	movzbl	(%rdi,%r10,1),%eax
509	xorb	(%r12),%dl
510	leaq	1(%r12),%r12
511	movb	%dl,(%r13)
512	leaq	1(%r13),%r13
513	subq	$1,%r11
514	jnz	.Lcloop1
515	jmp	.Lexit
516
517.align	16
518.Lexit:
519	subb	$1,%r10b
520	movl	%r10d,-8(%rdi)
521	movl	%ecx,-4(%rdi)
522
523	movq	(%rsp),%r13
524.cfi_restore	%r13
525	movq	8(%rsp),%r12
526.cfi_restore	%r12
527	movq	16(%rsp),%rbx
528.cfi_restore	%rbx
529	addq	$24,%rsp
530.cfi_adjust_cfa_offset	-24
531.Lepilogue:
532	.byte	0xf3,0xc3
533.cfi_endproc
534.size	RC4,.-RC4
535.globl	RC4_set_key
536.type	RC4_set_key,@function
537.align	16
538RC4_set_key:
539.cfi_startproc
540	leaq	8(%rdi),%rdi
541	leaq	(%rdx,%rsi,1),%rdx
542	negq	%rsi
543	movq	%rsi,%rcx
544	xorl	%eax,%eax
545	xorq	%r9,%r9
546	xorq	%r10,%r10
547	xorq	%r11,%r11
548
549	movl	OPENSSL_ia32cap_P(%rip),%r8d
550	btl	$20,%r8d
551	jc	.Lc1stloop
552	jmp	.Lw1stloop
553
554.align	16
555.Lw1stloop:
556	movl	%eax,(%rdi,%rax,4)
557	addb	$1,%al
558	jnc	.Lw1stloop
559
560	xorq	%r9,%r9
561	xorq	%r8,%r8
562.align	16
563.Lw2ndloop:
564	movl	(%rdi,%r9,4),%r10d
565	addb	(%rdx,%rsi,1),%r8b
566	addb	%r10b,%r8b
567	addq	$1,%rsi
568	movl	(%rdi,%r8,4),%r11d
569	cmovzq	%rcx,%rsi
570	movl	%r10d,(%rdi,%r8,4)
571	movl	%r11d,(%rdi,%r9,4)
572	addb	$1,%r9b
573	jnc	.Lw2ndloop
574	jmp	.Lexit_key
575
576.align	16
577.Lc1stloop:
578	movb	%al,(%rdi,%rax,1)
579	addb	$1,%al
580	jnc	.Lc1stloop
581
582	xorq	%r9,%r9
583	xorq	%r8,%r8
584.align	16
585.Lc2ndloop:
586	movb	(%rdi,%r9,1),%r10b
587	addb	(%rdx,%rsi,1),%r8b
588	addb	%r10b,%r8b
589	addq	$1,%rsi
590	movb	(%rdi,%r8,1),%r11b
591	jnz	.Lcnowrap
592	movq	%rcx,%rsi
593.Lcnowrap:
594	movb	%r10b,(%rdi,%r8,1)
595	movb	%r11b,(%rdi,%r9,1)
596	addb	$1,%r9b
597	jnc	.Lc2ndloop
598	movl	$-1,256(%rdi)
599
600.align	16
601.Lexit_key:
602	xorl	%eax,%eax
603	movl	%eax,-8(%rdi)
604	movl	%eax,-4(%rdi)
605	.byte	0xf3,0xc3
606.cfi_endproc
607.size	RC4_set_key,.-RC4_set_key
608
609.globl	RC4_options
610.type	RC4_options,@function
611.align	16
612RC4_options:
613.cfi_startproc
614	leaq	.Lopts(%rip),%rax
615	movl	OPENSSL_ia32cap_P(%rip),%edx
616	btl	$20,%edx
617	jc	.L8xchar
618	btl	$30,%edx
619	jnc	.Ldone
620	addq	$25,%rax
621	.byte	0xf3,0xc3
622.L8xchar:
623	addq	$12,%rax
624.Ldone:
625	.byte	0xf3,0xc3
626.cfi_endproc
627.align	64
628.Lopts:
629.byte	114,99,52,40,56,120,44,105,110,116,41,0
630.byte	114,99,52,40,56,120,44,99,104,97,114,41,0
631.byte	114,99,52,40,49,54,120,44,105,110,116,41,0
632.byte	82,67,52,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
633.align	64
634.size	RC4_options,.-RC4_options
635