rc4-586.S revision 299966
1# $FreeBSD: stable/10/secure/lib/libcrypto/i386/rc4-586.S 299966 2016-05-16 19:30:27Z jkim $
2# Do not modify. This file is auto-generated from rc4-586.pl.
3#ifdef PIC
4.file	"rc4-586.S"
5.text
6.globl	RC4
7.type	RC4,@function
8.align	16
9RC4:
10.L_RC4_begin:
11	pushl	%ebp
12	pushl	%ebx
13	pushl	%esi
14	pushl	%edi
15	movl	20(%esp),%edi
16	movl	24(%esp),%edx
17	movl	28(%esp),%esi
18	movl	32(%esp),%ebp
19	xorl	%eax,%eax
20	xorl	%ebx,%ebx
21	cmpl	$0,%edx
22	je	.L000abort
23	movb	(%edi),%al
24	movb	4(%edi),%bl
25	addl	$8,%edi
26	leal	(%esi,%edx,1),%ecx
27	subl	%esi,%ebp
28	movl	%ecx,24(%esp)
29	incb	%al
30	cmpl	$-1,256(%edi)
31	je	.L001RC4_CHAR
32	movl	(%edi,%eax,4),%ecx
33	andl	$-4,%edx
34	jz	.L002loop1
35	testl	$-8,%edx
36	movl	%ebp,32(%esp)
37	jz	.L003go4loop4
38	call	.L004PIC_me_up
39.L004PIC_me_up:
40	popl	%ebp
41	leal	_GLOBAL_OFFSET_TABLE_+[.-.L004PIC_me_up](%ebp),%ebp
42	movl	OPENSSL_ia32cap_P@GOT(%ebp),%ebp
43	btl	$26,(%ebp)
44	jnc	.L003go4loop4
45	movl	32(%esp),%ebp
46	andl	$-8,%edx
47	leal	-8(%esi,%edx,1),%edx
48	movl	%edx,-4(%edi)
49	addb	%cl,%bl
50	movl	(%edi,%ebx,4),%edx
51	movl	%ecx,(%edi,%ebx,4)
52	movl	%edx,(%edi,%eax,4)
53	incl	%eax
54	addl	%ecx,%edx
55	movzbl	%al,%eax
56	movzbl	%dl,%edx
57	movq	(%esi),%mm0
58	movl	(%edi,%eax,4),%ecx
59	movd	(%edi,%edx,4),%mm2
60	jmp	.L005loop_mmx_enter
61.align	16
62.L006loop_mmx:
63	addb	%cl,%bl
64	psllq	$56,%mm1
65	movl	(%edi,%ebx,4),%edx
66	movl	%ecx,(%edi,%ebx,4)
67	movl	%edx,(%edi,%eax,4)
68	incl	%eax
69	addl	%ecx,%edx
70	movzbl	%al,%eax
71	movzbl	%dl,%edx
72	pxor	%mm1,%mm2
73	movq	(%esi),%mm0
74	movq	%mm2,-8(%ebp,%esi,1)
75	movl	(%edi,%eax,4),%ecx
76	movd	(%edi,%edx,4),%mm2
77.L005loop_mmx_enter:
78	addb	%cl,%bl
79	movl	(%edi,%ebx,4),%edx
80	movl	%ecx,(%edi,%ebx,4)
81	movl	%edx,(%edi,%eax,4)
82	incl	%eax
83	addl	%ecx,%edx
84	movzbl	%al,%eax
85	movzbl	%dl,%edx
86	pxor	%mm0,%mm2
87	movl	(%edi,%eax,4),%ecx
88	movd	(%edi,%edx,4),%mm1
89	addb	%cl,%bl
90	psllq	$8,%mm1
91	movl	(%edi,%ebx,4),%edx
92	movl	%ecx,(%edi,%ebx,4)
93	movl	%edx,(%edi,%eax,4)
94	incl	%eax
95	addl	%ecx,%edx
96	movzbl	%al,%eax
97	movzbl	%dl,%edx
98	pxor	%mm1,%mm2
99	movl	(%edi,%eax,4),%ecx
100	movd	(%edi,%edx,4),%mm1
101	addb	%cl,%bl
102	psllq	$16,%mm1
103	movl	(%edi,%ebx,4),%edx
104	movl	%ecx,(%edi,%ebx,4)
105	movl	%edx,(%edi,%eax,4)
106	incl	%eax
107	addl	%ecx,%edx
108	movzbl	%al,%eax
109	movzbl	%dl,%edx
110	pxor	%mm1,%mm2
111	movl	(%edi,%eax,4),%ecx
112	movd	(%edi,%edx,4),%mm1
113	addb	%cl,%bl
114	psllq	$24,%mm1
115	movl	(%edi,%ebx,4),%edx
116	movl	%ecx,(%edi,%ebx,4)
117	movl	%edx,(%edi,%eax,4)
118	incl	%eax
119	addl	%ecx,%edx
120	movzbl	%al,%eax
121	movzbl	%dl,%edx
122	pxor	%mm1,%mm2
123	movl	(%edi,%eax,4),%ecx
124	movd	(%edi,%edx,4),%mm1
125	addb	%cl,%bl
126	psllq	$32,%mm1
127	movl	(%edi,%ebx,4),%edx
128	movl	%ecx,(%edi,%ebx,4)
129	movl	%edx,(%edi,%eax,4)
130	incl	%eax
131	addl	%ecx,%edx
132	movzbl	%al,%eax
133	movzbl	%dl,%edx
134	pxor	%mm1,%mm2
135	movl	(%edi,%eax,4),%ecx
136	movd	(%edi,%edx,4),%mm1
137	addb	%cl,%bl
138	psllq	$40,%mm1
139	movl	(%edi,%ebx,4),%edx
140	movl	%ecx,(%edi,%ebx,4)
141	movl	%edx,(%edi,%eax,4)
142	incl	%eax
143	addl	%ecx,%edx
144	movzbl	%al,%eax
145	movzbl	%dl,%edx
146	pxor	%mm1,%mm2
147	movl	(%edi,%eax,4),%ecx
148	movd	(%edi,%edx,4),%mm1
149	addb	%cl,%bl
150	psllq	$48,%mm1
151	movl	(%edi,%ebx,4),%edx
152	movl	%ecx,(%edi,%ebx,4)
153	movl	%edx,(%edi,%eax,4)
154	incl	%eax
155	addl	%ecx,%edx
156	movzbl	%al,%eax
157	movzbl	%dl,%edx
158	pxor	%mm1,%mm2
159	movl	(%edi,%eax,4),%ecx
160	movd	(%edi,%edx,4),%mm1
161	movl	%ebx,%edx
162	xorl	%ebx,%ebx
163	movb	%dl,%bl
164	cmpl	-4(%edi),%esi
165	leal	8(%esi),%esi
166	jb	.L006loop_mmx
167	psllq	$56,%mm1
168	pxor	%mm1,%mm2
169	movq	%mm2,-8(%ebp,%esi,1)
170	emms
171	cmpl	24(%esp),%esi
172	je	.L007done
173	jmp	.L002loop1
174.align	16
175.L003go4loop4:
176	leal	-4(%esi,%edx,1),%edx
177	movl	%edx,28(%esp)
178.L008loop4:
179	addb	%cl,%bl
180	movl	(%edi,%ebx,4),%edx
181	movl	%ecx,(%edi,%ebx,4)
182	movl	%edx,(%edi,%eax,4)
183	addl	%ecx,%edx
184	incb	%al
185	andl	$255,%edx
186	movl	(%edi,%eax,4),%ecx
187	movl	(%edi,%edx,4),%ebp
188	addb	%cl,%bl
189	movl	(%edi,%ebx,4),%edx
190	movl	%ecx,(%edi,%ebx,4)
191	movl	%edx,(%edi,%eax,4)
192	addl	%ecx,%edx
193	incb	%al
194	andl	$255,%edx
195	rorl	$8,%ebp
196	movl	(%edi,%eax,4),%ecx
197	orl	(%edi,%edx,4),%ebp
198	addb	%cl,%bl
199	movl	(%edi,%ebx,4),%edx
200	movl	%ecx,(%edi,%ebx,4)
201	movl	%edx,(%edi,%eax,4)
202	addl	%ecx,%edx
203	incb	%al
204	andl	$255,%edx
205	rorl	$8,%ebp
206	movl	(%edi,%eax,4),%ecx
207	orl	(%edi,%edx,4),%ebp
208	addb	%cl,%bl
209	movl	(%edi,%ebx,4),%edx
210	movl	%ecx,(%edi,%ebx,4)
211	movl	%edx,(%edi,%eax,4)
212	addl	%ecx,%edx
213	incb	%al
214	andl	$255,%edx
215	rorl	$8,%ebp
216	movl	32(%esp),%ecx
217	orl	(%edi,%edx,4),%ebp
218	rorl	$8,%ebp
219	xorl	(%esi),%ebp
220	cmpl	28(%esp),%esi
221	movl	%ebp,(%ecx,%esi,1)
222	leal	4(%esi),%esi
223	movl	(%edi,%eax,4),%ecx
224	jb	.L008loop4
225	cmpl	24(%esp),%esi
226	je	.L007done
227	movl	32(%esp),%ebp
228.align	16
229.L002loop1:
230	addb	%cl,%bl
231	movl	(%edi,%ebx,4),%edx
232	movl	%ecx,(%edi,%ebx,4)
233	movl	%edx,(%edi,%eax,4)
234	addl	%ecx,%edx
235	incb	%al
236	andl	$255,%edx
237	movl	(%edi,%edx,4),%edx
238	xorb	(%esi),%dl
239	leal	1(%esi),%esi
240	movl	(%edi,%eax,4),%ecx
241	cmpl	24(%esp),%esi
242	movb	%dl,-1(%ebp,%esi,1)
243	jb	.L002loop1
244	jmp	.L007done
245.align	16
246.L001RC4_CHAR:
247	movzbl	(%edi,%eax,1),%ecx
248.L009cloop1:
249	addb	%cl,%bl
250	movzbl	(%edi,%ebx,1),%edx
251	movb	%cl,(%edi,%ebx,1)
252	movb	%dl,(%edi,%eax,1)
253	addb	%cl,%dl
254	movzbl	(%edi,%edx,1),%edx
255	addb	$1,%al
256	xorb	(%esi),%dl
257	leal	1(%esi),%esi
258	movzbl	(%edi,%eax,1),%ecx
259	cmpl	24(%esp),%esi
260	movb	%dl,-1(%ebp,%esi,1)
261	jb	.L009cloop1
262.L007done:
263	decb	%al
264	movl	%ebx,-4(%edi)
265	movb	%al,-8(%edi)
266.L000abort:
267	popl	%edi
268	popl	%esi
269	popl	%ebx
270	popl	%ebp
271	ret
272.size	RC4,.-.L_RC4_begin
273.globl	private_RC4_set_key
274.type	private_RC4_set_key,@function
275.align	16
276private_RC4_set_key:
277.L_private_RC4_set_key_begin:
278	pushl	%ebp
279	pushl	%ebx
280	pushl	%esi
281	pushl	%edi
282	movl	20(%esp),%edi
283	movl	24(%esp),%ebp
284	movl	28(%esp),%esi
285	call	.L010PIC_me_up
286.L010PIC_me_up:
287	popl	%edx
288	leal	_GLOBAL_OFFSET_TABLE_+[.-.L010PIC_me_up](%edx),%edx
289	movl	OPENSSL_ia32cap_P@GOT(%edx),%edx
290	leal	8(%edi),%edi
291	leal	(%esi,%ebp,1),%esi
292	negl	%ebp
293	xorl	%eax,%eax
294	movl	%ebp,-4(%edi)
295	btl	$20,(%edx)
296	jc	.L011c1stloop
297.align	16
298.L012w1stloop:
299	movl	%eax,(%edi,%eax,4)
300	addb	$1,%al
301	jnc	.L012w1stloop
302	xorl	%ecx,%ecx
303	xorl	%edx,%edx
304.align	16
305.L013w2ndloop:
306	movl	(%edi,%ecx,4),%eax
307	addb	(%esi,%ebp,1),%dl
308	addb	%al,%dl
309	addl	$1,%ebp
310	movl	(%edi,%edx,4),%ebx
311	jnz	.L014wnowrap
312	movl	-4(%edi),%ebp
313.L014wnowrap:
314	movl	%eax,(%edi,%edx,4)
315	movl	%ebx,(%edi,%ecx,4)
316	addb	$1,%cl
317	jnc	.L013w2ndloop
318	jmp	.L015exit
319.align	16
320.L011c1stloop:
321	movb	%al,(%edi,%eax,1)
322	addb	$1,%al
323	jnc	.L011c1stloop
324	xorl	%ecx,%ecx
325	xorl	%edx,%edx
326	xorl	%ebx,%ebx
327.align	16
328.L016c2ndloop:
329	movb	(%edi,%ecx,1),%al
330	addb	(%esi,%ebp,1),%dl
331	addb	%al,%dl
332	addl	$1,%ebp
333	movb	(%edi,%edx,1),%bl
334	jnz	.L017cnowrap
335	movl	-4(%edi),%ebp
336.L017cnowrap:
337	movb	%al,(%edi,%edx,1)
338	movb	%bl,(%edi,%ecx,1)
339	addb	$1,%cl
340	jnc	.L016c2ndloop
341	movl	$-1,256(%edi)
342.L015exit:
343	xorl	%eax,%eax
344	movl	%eax,-8(%edi)
345	movl	%eax,-4(%edi)
346	popl	%edi
347	popl	%esi
348	popl	%ebx
349	popl	%ebp
350	ret
351.size	private_RC4_set_key,.-.L_private_RC4_set_key_begin
352.globl	RC4_options
353.type	RC4_options,@function
354.align	16
355RC4_options:
356.L_RC4_options_begin:
357	call	.L018pic_point
358.L018pic_point:
359	popl	%eax
360	leal	.L019opts-.L018pic_point(%eax),%eax
361	call	.L020PIC_me_up
362.L020PIC_me_up:
363	popl	%edx
364	leal	_GLOBAL_OFFSET_TABLE_+[.-.L020PIC_me_up](%edx),%edx
365	movl	OPENSSL_ia32cap_P@GOT(%edx),%edx
366	movl	(%edx),%edx
367	btl	$20,%edx
368	jc	.L0211xchar
369	btl	$26,%edx
370	jnc	.L022ret
371	addl	$25,%eax
372	ret
373.L0211xchar:
374	addl	$12,%eax
375.L022ret:
376	ret
377.align	64
378.L019opts:
379.byte	114,99,52,40,52,120,44,105,110,116,41,0
380.byte	114,99,52,40,49,120,44,99,104,97,114,41,0
381.byte	114,99,52,40,56,120,44,109,109,120,41,0
382.byte	82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89
383.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
384.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
385.align	64
386.size	RC4_options,.-.L_RC4_options_begin
387.comm	OPENSSL_ia32cap_P,8,4
388#else
389.file	"rc4-586.S"
390.text
391.globl	RC4
392.type	RC4,@function
393.align	16
394RC4:
395.L_RC4_begin:
396	pushl	%ebp
397	pushl	%ebx
398	pushl	%esi
399	pushl	%edi
400	movl	20(%esp),%edi
401	movl	24(%esp),%edx
402	movl	28(%esp),%esi
403	movl	32(%esp),%ebp
404	xorl	%eax,%eax
405	xorl	%ebx,%ebx
406	cmpl	$0,%edx
407	je	.L000abort
408	movb	(%edi),%al
409	movb	4(%edi),%bl
410	addl	$8,%edi
411	leal	(%esi,%edx,1),%ecx
412	subl	%esi,%ebp
413	movl	%ecx,24(%esp)
414	incb	%al
415	cmpl	$-1,256(%edi)
416	je	.L001RC4_CHAR
417	movl	(%edi,%eax,4),%ecx
418	andl	$-4,%edx
419	jz	.L002loop1
420	testl	$-8,%edx
421	movl	%ebp,32(%esp)
422	jz	.L003go4loop4
423	leal	OPENSSL_ia32cap_P,%ebp
424	btl	$26,(%ebp)
425	jnc	.L003go4loop4
426	movl	32(%esp),%ebp
427	andl	$-8,%edx
428	leal	-8(%esi,%edx,1),%edx
429	movl	%edx,-4(%edi)
430	addb	%cl,%bl
431	movl	(%edi,%ebx,4),%edx
432	movl	%ecx,(%edi,%ebx,4)
433	movl	%edx,(%edi,%eax,4)
434	incl	%eax
435	addl	%ecx,%edx
436	movzbl	%al,%eax
437	movzbl	%dl,%edx
438	movq	(%esi),%mm0
439	movl	(%edi,%eax,4),%ecx
440	movd	(%edi,%edx,4),%mm2
441	jmp	.L004loop_mmx_enter
442.align	16
443.L005loop_mmx:
444	addb	%cl,%bl
445	psllq	$56,%mm1
446	movl	(%edi,%ebx,4),%edx
447	movl	%ecx,(%edi,%ebx,4)
448	movl	%edx,(%edi,%eax,4)
449	incl	%eax
450	addl	%ecx,%edx
451	movzbl	%al,%eax
452	movzbl	%dl,%edx
453	pxor	%mm1,%mm2
454	movq	(%esi),%mm0
455	movq	%mm2,-8(%ebp,%esi,1)
456	movl	(%edi,%eax,4),%ecx
457	movd	(%edi,%edx,4),%mm2
458.L004loop_mmx_enter:
459	addb	%cl,%bl
460	movl	(%edi,%ebx,4),%edx
461	movl	%ecx,(%edi,%ebx,4)
462	movl	%edx,(%edi,%eax,4)
463	incl	%eax
464	addl	%ecx,%edx
465	movzbl	%al,%eax
466	movzbl	%dl,%edx
467	pxor	%mm0,%mm2
468	movl	(%edi,%eax,4),%ecx
469	movd	(%edi,%edx,4),%mm1
470	addb	%cl,%bl
471	psllq	$8,%mm1
472	movl	(%edi,%ebx,4),%edx
473	movl	%ecx,(%edi,%ebx,4)
474	movl	%edx,(%edi,%eax,4)
475	incl	%eax
476	addl	%ecx,%edx
477	movzbl	%al,%eax
478	movzbl	%dl,%edx
479	pxor	%mm1,%mm2
480	movl	(%edi,%eax,4),%ecx
481	movd	(%edi,%edx,4),%mm1
482	addb	%cl,%bl
483	psllq	$16,%mm1
484	movl	(%edi,%ebx,4),%edx
485	movl	%ecx,(%edi,%ebx,4)
486	movl	%edx,(%edi,%eax,4)
487	incl	%eax
488	addl	%ecx,%edx
489	movzbl	%al,%eax
490	movzbl	%dl,%edx
491	pxor	%mm1,%mm2
492	movl	(%edi,%eax,4),%ecx
493	movd	(%edi,%edx,4),%mm1
494	addb	%cl,%bl
495	psllq	$24,%mm1
496	movl	(%edi,%ebx,4),%edx
497	movl	%ecx,(%edi,%ebx,4)
498	movl	%edx,(%edi,%eax,4)
499	incl	%eax
500	addl	%ecx,%edx
501	movzbl	%al,%eax
502	movzbl	%dl,%edx
503	pxor	%mm1,%mm2
504	movl	(%edi,%eax,4),%ecx
505	movd	(%edi,%edx,4),%mm1
506	addb	%cl,%bl
507	psllq	$32,%mm1
508	movl	(%edi,%ebx,4),%edx
509	movl	%ecx,(%edi,%ebx,4)
510	movl	%edx,(%edi,%eax,4)
511	incl	%eax
512	addl	%ecx,%edx
513	movzbl	%al,%eax
514	movzbl	%dl,%edx
515	pxor	%mm1,%mm2
516	movl	(%edi,%eax,4),%ecx
517	movd	(%edi,%edx,4),%mm1
518	addb	%cl,%bl
519	psllq	$40,%mm1
520	movl	(%edi,%ebx,4),%edx
521	movl	%ecx,(%edi,%ebx,4)
522	movl	%edx,(%edi,%eax,4)
523	incl	%eax
524	addl	%ecx,%edx
525	movzbl	%al,%eax
526	movzbl	%dl,%edx
527	pxor	%mm1,%mm2
528	movl	(%edi,%eax,4),%ecx
529	movd	(%edi,%edx,4),%mm1
530	addb	%cl,%bl
531	psllq	$48,%mm1
532	movl	(%edi,%ebx,4),%edx
533	movl	%ecx,(%edi,%ebx,4)
534	movl	%edx,(%edi,%eax,4)
535	incl	%eax
536	addl	%ecx,%edx
537	movzbl	%al,%eax
538	movzbl	%dl,%edx
539	pxor	%mm1,%mm2
540	movl	(%edi,%eax,4),%ecx
541	movd	(%edi,%edx,4),%mm1
542	movl	%ebx,%edx
543	xorl	%ebx,%ebx
544	movb	%dl,%bl
545	cmpl	-4(%edi),%esi
546	leal	8(%esi),%esi
547	jb	.L005loop_mmx
548	psllq	$56,%mm1
549	pxor	%mm1,%mm2
550	movq	%mm2,-8(%ebp,%esi,1)
551	emms
552	cmpl	24(%esp),%esi
553	je	.L006done
554	jmp	.L002loop1
555.align	16
556.L003go4loop4:
557	leal	-4(%esi,%edx,1),%edx
558	movl	%edx,28(%esp)
559.L007loop4:
560	addb	%cl,%bl
561	movl	(%edi,%ebx,4),%edx
562	movl	%ecx,(%edi,%ebx,4)
563	movl	%edx,(%edi,%eax,4)
564	addl	%ecx,%edx
565	incb	%al
566	andl	$255,%edx
567	movl	(%edi,%eax,4),%ecx
568	movl	(%edi,%edx,4),%ebp
569	addb	%cl,%bl
570	movl	(%edi,%ebx,4),%edx
571	movl	%ecx,(%edi,%ebx,4)
572	movl	%edx,(%edi,%eax,4)
573	addl	%ecx,%edx
574	incb	%al
575	andl	$255,%edx
576	rorl	$8,%ebp
577	movl	(%edi,%eax,4),%ecx
578	orl	(%edi,%edx,4),%ebp
579	addb	%cl,%bl
580	movl	(%edi,%ebx,4),%edx
581	movl	%ecx,(%edi,%ebx,4)
582	movl	%edx,(%edi,%eax,4)
583	addl	%ecx,%edx
584	incb	%al
585	andl	$255,%edx
586	rorl	$8,%ebp
587	movl	(%edi,%eax,4),%ecx
588	orl	(%edi,%edx,4),%ebp
589	addb	%cl,%bl
590	movl	(%edi,%ebx,4),%edx
591	movl	%ecx,(%edi,%ebx,4)
592	movl	%edx,(%edi,%eax,4)
593	addl	%ecx,%edx
594	incb	%al
595	andl	$255,%edx
596	rorl	$8,%ebp
597	movl	32(%esp),%ecx
598	orl	(%edi,%edx,4),%ebp
599	rorl	$8,%ebp
600	xorl	(%esi),%ebp
601	cmpl	28(%esp),%esi
602	movl	%ebp,(%ecx,%esi,1)
603	leal	4(%esi),%esi
604	movl	(%edi,%eax,4),%ecx
605	jb	.L007loop4
606	cmpl	24(%esp),%esi
607	je	.L006done
608	movl	32(%esp),%ebp
609.align	16
610.L002loop1:
611	addb	%cl,%bl
612	movl	(%edi,%ebx,4),%edx
613	movl	%ecx,(%edi,%ebx,4)
614	movl	%edx,(%edi,%eax,4)
615	addl	%ecx,%edx
616	incb	%al
617	andl	$255,%edx
618	movl	(%edi,%edx,4),%edx
619	xorb	(%esi),%dl
620	leal	1(%esi),%esi
621	movl	(%edi,%eax,4),%ecx
622	cmpl	24(%esp),%esi
623	movb	%dl,-1(%ebp,%esi,1)
624	jb	.L002loop1
625	jmp	.L006done
626.align	16
627.L001RC4_CHAR:
628	movzbl	(%edi,%eax,1),%ecx
629.L008cloop1:
630	addb	%cl,%bl
631	movzbl	(%edi,%ebx,1),%edx
632	movb	%cl,(%edi,%ebx,1)
633	movb	%dl,(%edi,%eax,1)
634	addb	%cl,%dl
635	movzbl	(%edi,%edx,1),%edx
636	addb	$1,%al
637	xorb	(%esi),%dl
638	leal	1(%esi),%esi
639	movzbl	(%edi,%eax,1),%ecx
640	cmpl	24(%esp),%esi
641	movb	%dl,-1(%ebp,%esi,1)
642	jb	.L008cloop1
643.L006done:
644	decb	%al
645	movl	%ebx,-4(%edi)
646	movb	%al,-8(%edi)
647.L000abort:
648	popl	%edi
649	popl	%esi
650	popl	%ebx
651	popl	%ebp
652	ret
653.size	RC4,.-.L_RC4_begin
654.globl	private_RC4_set_key
655.type	private_RC4_set_key,@function
656.align	16
657private_RC4_set_key:
658.L_private_RC4_set_key_begin:
659	pushl	%ebp
660	pushl	%ebx
661	pushl	%esi
662	pushl	%edi
663	movl	20(%esp),%edi
664	movl	24(%esp),%ebp
665	movl	28(%esp),%esi
666	leal	OPENSSL_ia32cap_P,%edx
667	leal	8(%edi),%edi
668	leal	(%esi,%ebp,1),%esi
669	negl	%ebp
670	xorl	%eax,%eax
671	movl	%ebp,-4(%edi)
672	btl	$20,(%edx)
673	jc	.L009c1stloop
674.align	16
675.L010w1stloop:
676	movl	%eax,(%edi,%eax,4)
677	addb	$1,%al
678	jnc	.L010w1stloop
679	xorl	%ecx,%ecx
680	xorl	%edx,%edx
681.align	16
682.L011w2ndloop:
683	movl	(%edi,%ecx,4),%eax
684	addb	(%esi,%ebp,1),%dl
685	addb	%al,%dl
686	addl	$1,%ebp
687	movl	(%edi,%edx,4),%ebx
688	jnz	.L012wnowrap
689	movl	-4(%edi),%ebp
690.L012wnowrap:
691	movl	%eax,(%edi,%edx,4)
692	movl	%ebx,(%edi,%ecx,4)
693	addb	$1,%cl
694	jnc	.L011w2ndloop
695	jmp	.L013exit
696.align	16
697.L009c1stloop:
698	movb	%al,(%edi,%eax,1)
699	addb	$1,%al
700	jnc	.L009c1stloop
701	xorl	%ecx,%ecx
702	xorl	%edx,%edx
703	xorl	%ebx,%ebx
704.align	16
705.L014c2ndloop:
706	movb	(%edi,%ecx,1),%al
707	addb	(%esi,%ebp,1),%dl
708	addb	%al,%dl
709	addl	$1,%ebp
710	movb	(%edi,%edx,1),%bl
711	jnz	.L015cnowrap
712	movl	-4(%edi),%ebp
713.L015cnowrap:
714	movb	%al,(%edi,%edx,1)
715	movb	%bl,(%edi,%ecx,1)
716	addb	$1,%cl
717	jnc	.L014c2ndloop
718	movl	$-1,256(%edi)
719.L013exit:
720	xorl	%eax,%eax
721	movl	%eax,-8(%edi)
722	movl	%eax,-4(%edi)
723	popl	%edi
724	popl	%esi
725	popl	%ebx
726	popl	%ebp
727	ret
728.size	private_RC4_set_key,.-.L_private_RC4_set_key_begin
729.globl	RC4_options
730.type	RC4_options,@function
731.align	16
732RC4_options:
733.L_RC4_options_begin:
734	call	.L016pic_point
735.L016pic_point:
736	popl	%eax
737	leal	.L017opts-.L016pic_point(%eax),%eax
738	leal	OPENSSL_ia32cap_P,%edx
739	movl	(%edx),%edx
740	btl	$20,%edx
741	jc	.L0181xchar
742	btl	$26,%edx
743	jnc	.L019ret
744	addl	$25,%eax
745	ret
746.L0181xchar:
747	addl	$12,%eax
748.L019ret:
749	ret
750.align	64
751.L017opts:
752.byte	114,99,52,40,52,120,44,105,110,116,41,0
753.byte	114,99,52,40,49,120,44,99,104,97,114,41,0
754.byte	114,99,52,40,56,120,44,109,109,120,41,0
755.byte	82,67,52,32,102,111,114,32,120,56,54,44,32,67,82,89
756.byte	80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
757.byte	111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
758.align	64
759.size	RC4_options,.-.L_RC4_options_begin
760.comm	OPENSSL_ia32cap_P,8,4
761#endif
762