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