]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/rc4-586.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / rc4-586.S
1 # $FreeBSD$
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
9 RC4:
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
276 private_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
355 RC4_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
394 RC4:
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
657 private_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
732 RC4_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