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