]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - secure/lib/libcrypto/i386/aes-586.S
- Make libcrypto.so position independent on i386.
[FreeBSD/stable/10.git] / secure / lib / libcrypto / i386 / aes-586.S
1 # $FreeBSD$
2 # Do not modify. This file is auto-generated from aes-586.pl.
3 #ifdef PIC
4 .file   "aes-586.S"
5 .text
6 .type   _x86_AES_encrypt_compact,@function
7 .align  16
8 _x86_AES_encrypt_compact:
9         movl    %edi,20(%esp)
10         xorl    (%edi),%eax
11         xorl    4(%edi),%ebx
12         xorl    8(%edi),%ecx
13         xorl    12(%edi),%edx
14         movl    240(%edi),%esi
15         leal    -2(%esi,%esi,1),%esi
16         leal    (%edi,%esi,8),%esi
17         movl    %esi,24(%esp)
18         movl    -128(%ebp),%edi
19         movl    -96(%ebp),%esi
20         movl    -64(%ebp),%edi
21         movl    -32(%ebp),%esi
22         movl    (%ebp),%edi
23         movl    32(%ebp),%esi
24         movl    64(%ebp),%edi
25         movl    96(%ebp),%esi
26 .align  16
27 .L000loop:
28         movl    %eax,%esi
29         andl    $255,%esi
30         movzbl  -128(%ebp,%esi,1),%esi
31         movzbl  %bh,%edi
32         movzbl  -128(%ebp,%edi,1),%edi
33         shll    $8,%edi
34         xorl    %edi,%esi
35         movl    %ecx,%edi
36         shrl    $16,%edi
37         andl    $255,%edi
38         movzbl  -128(%ebp,%edi,1),%edi
39         shll    $16,%edi
40         xorl    %edi,%esi
41         movl    %edx,%edi
42         shrl    $24,%edi
43         movzbl  -128(%ebp,%edi,1),%edi
44         shll    $24,%edi
45         xorl    %edi,%esi
46         movl    %esi,4(%esp)
47
48         movl    %ebx,%esi
49         andl    $255,%esi
50         shrl    $16,%ebx
51         movzbl  -128(%ebp,%esi,1),%esi
52         movzbl  %ch,%edi
53         movzbl  -128(%ebp,%edi,1),%edi
54         shll    $8,%edi
55         xorl    %edi,%esi
56         movl    %edx,%edi
57         shrl    $16,%edi
58         andl    $255,%edi
59         movzbl  -128(%ebp,%edi,1),%edi
60         shll    $16,%edi
61         xorl    %edi,%esi
62         movl    %eax,%edi
63         shrl    $24,%edi
64         movzbl  -128(%ebp,%edi,1),%edi
65         shll    $24,%edi
66         xorl    %edi,%esi
67         movl    %esi,8(%esp)
68
69         movl    %ecx,%esi
70         andl    $255,%esi
71         shrl    $24,%ecx
72         movzbl  -128(%ebp,%esi,1),%esi
73         movzbl  %dh,%edi
74         movzbl  -128(%ebp,%edi,1),%edi
75         shll    $8,%edi
76         xorl    %edi,%esi
77         movl    %eax,%edi
78         shrl    $16,%edi
79         andl    $255,%edx
80         andl    $255,%edi
81         movzbl  -128(%ebp,%edi,1),%edi
82         shll    $16,%edi
83         xorl    %edi,%esi
84         movzbl  %bh,%edi
85         movzbl  -128(%ebp,%edi,1),%edi
86         shll    $24,%edi
87         xorl    %edi,%esi
88
89         andl    $255,%edx
90         movzbl  -128(%ebp,%edx,1),%edx
91         movzbl  %ah,%eax
92         movzbl  -128(%ebp,%eax,1),%eax
93         shll    $8,%eax
94         xorl    %eax,%edx
95         movl    4(%esp),%eax
96         andl    $255,%ebx
97         movzbl  -128(%ebp,%ebx,1),%ebx
98         shll    $16,%ebx
99         xorl    %ebx,%edx
100         movl    8(%esp),%ebx
101         movzbl  -128(%ebp,%ecx,1),%ecx
102         shll    $24,%ecx
103         xorl    %ecx,%edx
104         movl    %esi,%ecx
105
106         movl    %ecx,%esi
107         andl    $2155905152,%esi
108         movl    %esi,%ebp
109         shrl    $7,%ebp
110         leal    (%ecx,%ecx,1),%edi
111         subl    %ebp,%esi
112         andl    $4278124286,%edi
113         andl    $454761243,%esi
114         movl    %ecx,%ebp
115         xorl    %edi,%esi
116         xorl    %esi,%ecx
117         roll    $24,%ecx
118         xorl    %esi,%ecx
119         rorl    $16,%ebp
120         xorl    %ebp,%ecx
121         rorl    $8,%ebp
122         xorl    %ebp,%ecx
123         movl    %edx,%esi
124         andl    $2155905152,%esi
125         movl    %esi,%ebp
126         shrl    $7,%ebp
127         leal    (%edx,%edx,1),%edi
128         subl    %ebp,%esi
129         andl    $4278124286,%edi
130         andl    $454761243,%esi
131         movl    %edx,%ebp
132         xorl    %edi,%esi
133         xorl    %esi,%edx
134         roll    $24,%edx
135         xorl    %esi,%edx
136         rorl    $16,%ebp
137         xorl    %ebp,%edx
138         rorl    $8,%ebp
139         xorl    %ebp,%edx
140         movl    %eax,%esi
141         andl    $2155905152,%esi
142         movl    %esi,%ebp
143         shrl    $7,%ebp
144         leal    (%eax,%eax,1),%edi
145         subl    %ebp,%esi
146         andl    $4278124286,%edi
147         andl    $454761243,%esi
148         movl    %eax,%ebp
149         xorl    %edi,%esi
150         xorl    %esi,%eax
151         roll    $24,%eax
152         xorl    %esi,%eax
153         rorl    $16,%ebp
154         xorl    %ebp,%eax
155         rorl    $8,%ebp
156         xorl    %ebp,%eax
157         movl    %ebx,%esi
158         andl    $2155905152,%esi
159         movl    %esi,%ebp
160         shrl    $7,%ebp
161         leal    (%ebx,%ebx,1),%edi
162         subl    %ebp,%esi
163         andl    $4278124286,%edi
164         andl    $454761243,%esi
165         movl    %ebx,%ebp
166         xorl    %edi,%esi
167         xorl    %esi,%ebx
168         roll    $24,%ebx
169         xorl    %esi,%ebx
170         rorl    $16,%ebp
171         xorl    %ebp,%ebx
172         rorl    $8,%ebp
173         xorl    %ebp,%ebx
174         movl    20(%esp),%edi
175         movl    28(%esp),%ebp
176         addl    $16,%edi
177         xorl    (%edi),%eax
178         xorl    4(%edi),%ebx
179         xorl    8(%edi),%ecx
180         xorl    12(%edi),%edx
181         cmpl    24(%esp),%edi
182         movl    %edi,20(%esp)
183         jb      .L000loop
184         movl    %eax,%esi
185         andl    $255,%esi
186         movzbl  -128(%ebp,%esi,1),%esi
187         movzbl  %bh,%edi
188         movzbl  -128(%ebp,%edi,1),%edi
189         shll    $8,%edi
190         xorl    %edi,%esi
191         movl    %ecx,%edi
192         shrl    $16,%edi
193         andl    $255,%edi
194         movzbl  -128(%ebp,%edi,1),%edi
195         shll    $16,%edi
196         xorl    %edi,%esi
197         movl    %edx,%edi
198         shrl    $24,%edi
199         movzbl  -128(%ebp,%edi,1),%edi
200         shll    $24,%edi
201         xorl    %edi,%esi
202         movl    %esi,4(%esp)
203
204         movl    %ebx,%esi
205         andl    $255,%esi
206         shrl    $16,%ebx
207         movzbl  -128(%ebp,%esi,1),%esi
208         movzbl  %ch,%edi
209         movzbl  -128(%ebp,%edi,1),%edi
210         shll    $8,%edi
211         xorl    %edi,%esi
212         movl    %edx,%edi
213         shrl    $16,%edi
214         andl    $255,%edi
215         movzbl  -128(%ebp,%edi,1),%edi
216         shll    $16,%edi
217         xorl    %edi,%esi
218         movl    %eax,%edi
219         shrl    $24,%edi
220         movzbl  -128(%ebp,%edi,1),%edi
221         shll    $24,%edi
222         xorl    %edi,%esi
223         movl    %esi,8(%esp)
224
225         movl    %ecx,%esi
226         andl    $255,%esi
227         shrl    $24,%ecx
228         movzbl  -128(%ebp,%esi,1),%esi
229         movzbl  %dh,%edi
230         movzbl  -128(%ebp,%edi,1),%edi
231         shll    $8,%edi
232         xorl    %edi,%esi
233         movl    %eax,%edi
234         shrl    $16,%edi
235         andl    $255,%edx
236         andl    $255,%edi
237         movzbl  -128(%ebp,%edi,1),%edi
238         shll    $16,%edi
239         xorl    %edi,%esi
240         movzbl  %bh,%edi
241         movzbl  -128(%ebp,%edi,1),%edi
242         shll    $24,%edi
243         xorl    %edi,%esi
244
245         movl    20(%esp),%edi
246         andl    $255,%edx
247         movzbl  -128(%ebp,%edx,1),%edx
248         movzbl  %ah,%eax
249         movzbl  -128(%ebp,%eax,1),%eax
250         shll    $8,%eax
251         xorl    %eax,%edx
252         movl    4(%esp),%eax
253         andl    $255,%ebx
254         movzbl  -128(%ebp,%ebx,1),%ebx
255         shll    $16,%ebx
256         xorl    %ebx,%edx
257         movl    8(%esp),%ebx
258         movzbl  -128(%ebp,%ecx,1),%ecx
259         shll    $24,%ecx
260         xorl    %ecx,%edx
261         movl    %esi,%ecx
262
263         xorl    16(%edi),%eax
264         xorl    20(%edi),%ebx
265         xorl    24(%edi),%ecx
266         xorl    28(%edi),%edx
267         ret
268 .size   _x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact
269 .type   _sse_AES_encrypt_compact,@function
270 .align  16
271 _sse_AES_encrypt_compact:
272         pxor    (%edi),%mm0
273         pxor    8(%edi),%mm4
274         movl    240(%edi),%esi
275         leal    -2(%esi,%esi,1),%esi
276         leal    (%edi,%esi,8),%esi
277         movl    %esi,24(%esp)
278         movl    $454761243,%eax
279         movl    %eax,8(%esp)
280         movl    %eax,12(%esp)
281         movl    -128(%ebp),%eax
282         movl    -96(%ebp),%ebx
283         movl    -64(%ebp),%ecx
284         movl    -32(%ebp),%edx
285         movl    (%ebp),%eax
286         movl    32(%ebp),%ebx
287         movl    64(%ebp),%ecx
288         movl    96(%ebp),%edx
289 .align  16
290 .L001loop:
291         pshufw  $8,%mm0,%mm1
292         pshufw  $13,%mm4,%mm5
293         movd    %mm1,%eax
294         movd    %mm5,%ebx
295         movzbl  %al,%esi
296         movzbl  -128(%ebp,%esi,1),%ecx
297         pshufw  $13,%mm0,%mm2
298         movzbl  %ah,%edx
299         movzbl  -128(%ebp,%edx,1),%edx
300         shll    $8,%edx
301         shrl    $16,%eax
302         movzbl  %bl,%esi
303         movzbl  -128(%ebp,%esi,1),%esi
304         shll    $16,%esi
305         orl     %esi,%ecx
306         pshufw  $8,%mm4,%mm6
307         movzbl  %bh,%esi
308         movzbl  -128(%ebp,%esi,1),%esi
309         shll    $24,%esi
310         orl     %esi,%edx
311         shrl    $16,%ebx
312         movzbl  %ah,%esi
313         movzbl  -128(%ebp,%esi,1),%esi
314         shll    $8,%esi
315         orl     %esi,%ecx
316         movzbl  %bh,%esi
317         movzbl  -128(%ebp,%esi,1),%esi
318         shll    $24,%esi
319         orl     %esi,%ecx
320         movd    %ecx,%mm0
321         movzbl  %al,%esi
322         movzbl  -128(%ebp,%esi,1),%ecx
323         movd    %mm2,%eax
324         movzbl  %bl,%esi
325         movzbl  -128(%ebp,%esi,1),%esi
326         shll    $16,%esi
327         orl     %esi,%ecx
328         movd    %mm6,%ebx
329         movzbl  %ah,%esi
330         movzbl  -128(%ebp,%esi,1),%esi
331         shll    $24,%esi
332         orl     %esi,%ecx
333         movzbl  %bh,%esi
334         movzbl  -128(%ebp,%esi,1),%esi
335         shll    $8,%esi
336         orl     %esi,%ecx
337         movd    %ecx,%mm1
338         movzbl  %bl,%esi
339         movzbl  -128(%ebp,%esi,1),%ecx
340         shrl    $16,%ebx
341         movzbl  %al,%esi
342         movzbl  -128(%ebp,%esi,1),%esi
343         shll    $16,%esi
344         orl     %esi,%ecx
345         shrl    $16,%eax
346         punpckldq       %mm1,%mm0
347         movzbl  %ah,%esi
348         movzbl  -128(%ebp,%esi,1),%esi
349         shll    $24,%esi
350         orl     %esi,%ecx
351         andl    $255,%eax
352         movzbl  -128(%ebp,%eax,1),%eax
353         shll    $16,%eax
354         orl     %eax,%edx
355         movzbl  %bh,%esi
356         movzbl  -128(%ebp,%esi,1),%esi
357         shll    $8,%esi
358         orl     %esi,%ecx
359         movd    %ecx,%mm4
360         andl    $255,%ebx
361         movzbl  -128(%ebp,%ebx,1),%ebx
362         orl     %ebx,%edx
363         movd    %edx,%mm5
364         punpckldq       %mm5,%mm4
365         addl    $16,%edi
366         cmpl    24(%esp),%edi
367         ja      .L002out
368         movq    8(%esp),%mm2
369         pxor    %mm3,%mm3
370         pxor    %mm7,%mm7
371         movq    %mm0,%mm1
372         movq    %mm4,%mm5
373         pcmpgtb %mm0,%mm3
374         pcmpgtb %mm4,%mm7
375         pand    %mm2,%mm3
376         pand    %mm2,%mm7
377         pshufw  $177,%mm0,%mm2
378         pshufw  $177,%mm4,%mm6
379         paddb   %mm0,%mm0
380         paddb   %mm4,%mm4
381         pxor    %mm3,%mm0
382         pxor    %mm7,%mm4
383         pshufw  $177,%mm2,%mm3
384         pshufw  $177,%mm6,%mm7
385         pxor    %mm0,%mm1
386         pxor    %mm4,%mm5
387         pxor    %mm2,%mm0
388         pxor    %mm6,%mm4
389         movq    %mm3,%mm2
390         movq    %mm7,%mm6
391         pslld   $8,%mm3
392         pslld   $8,%mm7
393         psrld   $24,%mm2
394         psrld   $24,%mm6
395         pxor    %mm3,%mm0
396         pxor    %mm7,%mm4
397         pxor    %mm2,%mm0
398         pxor    %mm6,%mm4
399         movq    %mm1,%mm3
400         movq    %mm5,%mm7
401         movq    (%edi),%mm2
402         movq    8(%edi),%mm6
403         psrld   $8,%mm1
404         psrld   $8,%mm5
405         movl    -128(%ebp),%eax
406         pslld   $24,%mm3
407         pslld   $24,%mm7
408         movl    -64(%ebp),%ebx
409         pxor    %mm1,%mm0
410         pxor    %mm5,%mm4
411         movl    (%ebp),%ecx
412         pxor    %mm3,%mm0
413         pxor    %mm7,%mm4
414         movl    64(%ebp),%edx
415         pxor    %mm2,%mm0
416         pxor    %mm6,%mm4
417         jmp     .L001loop
418 .align  16
419 .L002out:
420         pxor    (%edi),%mm0
421         pxor    8(%edi),%mm4
422         ret
423 .size   _sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact
424 .type   _x86_AES_encrypt,@function
425 .align  16
426 _x86_AES_encrypt:
427         movl    %edi,20(%esp)
428         xorl    (%edi),%eax
429         xorl    4(%edi),%ebx
430         xorl    8(%edi),%ecx
431         xorl    12(%edi),%edx
432         movl    240(%edi),%esi
433         leal    -2(%esi,%esi,1),%esi
434         leal    (%edi,%esi,8),%esi
435         movl    %esi,24(%esp)
436 .align  16
437 .L003loop:
438         movl    %eax,%esi
439         andl    $255,%esi
440         movl    (%ebp,%esi,8),%esi
441         movzbl  %bh,%edi
442         xorl    3(%ebp,%edi,8),%esi
443         movl    %ecx,%edi
444         shrl    $16,%edi
445         andl    $255,%edi
446         xorl    2(%ebp,%edi,8),%esi
447         movl    %edx,%edi
448         shrl    $24,%edi
449         xorl    1(%ebp,%edi,8),%esi
450         movl    %esi,4(%esp)
451
452         movl    %ebx,%esi
453         andl    $255,%esi
454         shrl    $16,%ebx
455         movl    (%ebp,%esi,8),%esi
456         movzbl  %ch,%edi
457         xorl    3(%ebp,%edi,8),%esi
458         movl    %edx,%edi
459         shrl    $16,%edi
460         andl    $255,%edi
461         xorl    2(%ebp,%edi,8),%esi
462         movl    %eax,%edi
463         shrl    $24,%edi
464         xorl    1(%ebp,%edi,8),%esi
465         movl    %esi,8(%esp)
466
467         movl    %ecx,%esi
468         andl    $255,%esi
469         shrl    $24,%ecx
470         movl    (%ebp,%esi,8),%esi
471         movzbl  %dh,%edi
472         xorl    3(%ebp,%edi,8),%esi
473         movl    %eax,%edi
474         shrl    $16,%edi
475         andl    $255,%edx
476         andl    $255,%edi
477         xorl    2(%ebp,%edi,8),%esi
478         movzbl  %bh,%edi
479         xorl    1(%ebp,%edi,8),%esi
480
481         movl    20(%esp),%edi
482         movl    (%ebp,%edx,8),%edx
483         movzbl  %ah,%eax
484         xorl    3(%ebp,%eax,8),%edx
485         movl    4(%esp),%eax
486         andl    $255,%ebx
487         xorl    2(%ebp,%ebx,8),%edx
488         movl    8(%esp),%ebx
489         xorl    1(%ebp,%ecx,8),%edx
490         movl    %esi,%ecx
491
492         addl    $16,%edi
493         xorl    (%edi),%eax
494         xorl    4(%edi),%ebx
495         xorl    8(%edi),%ecx
496         xorl    12(%edi),%edx
497         cmpl    24(%esp),%edi
498         movl    %edi,20(%esp)
499         jb      .L003loop
500         movl    %eax,%esi
501         andl    $255,%esi
502         movl    2(%ebp,%esi,8),%esi
503         andl    $255,%esi
504         movzbl  %bh,%edi
505         movl    (%ebp,%edi,8),%edi
506         andl    $65280,%edi
507         xorl    %edi,%esi
508         movl    %ecx,%edi
509         shrl    $16,%edi
510         andl    $255,%edi
511         movl    (%ebp,%edi,8),%edi
512         andl    $16711680,%edi
513         xorl    %edi,%esi
514         movl    %edx,%edi
515         shrl    $24,%edi
516         movl    2(%ebp,%edi,8),%edi
517         andl    $4278190080,%edi
518         xorl    %edi,%esi
519         movl    %esi,4(%esp)
520         movl    %ebx,%esi
521         andl    $255,%esi
522         shrl    $16,%ebx
523         movl    2(%ebp,%esi,8),%esi
524         andl    $255,%esi
525         movzbl  %ch,%edi
526         movl    (%ebp,%edi,8),%edi
527         andl    $65280,%edi
528         xorl    %edi,%esi
529         movl    %edx,%edi
530         shrl    $16,%edi
531         andl    $255,%edi
532         movl    (%ebp,%edi,8),%edi
533         andl    $16711680,%edi
534         xorl    %edi,%esi
535         movl    %eax,%edi
536         shrl    $24,%edi
537         movl    2(%ebp,%edi,8),%edi
538         andl    $4278190080,%edi
539         xorl    %edi,%esi
540         movl    %esi,8(%esp)
541         movl    %ecx,%esi
542         andl    $255,%esi
543         shrl    $24,%ecx
544         movl    2(%ebp,%esi,8),%esi
545         andl    $255,%esi
546         movzbl  %dh,%edi
547         movl    (%ebp,%edi,8),%edi
548         andl    $65280,%edi
549         xorl    %edi,%esi
550         movl    %eax,%edi
551         shrl    $16,%edi
552         andl    $255,%edx
553         andl    $255,%edi
554         movl    (%ebp,%edi,8),%edi
555         andl    $16711680,%edi
556         xorl    %edi,%esi
557         movzbl  %bh,%edi
558         movl    2(%ebp,%edi,8),%edi
559         andl    $4278190080,%edi
560         xorl    %edi,%esi
561         movl    20(%esp),%edi
562         andl    $255,%edx
563         movl    2(%ebp,%edx,8),%edx
564         andl    $255,%edx
565         movzbl  %ah,%eax
566         movl    (%ebp,%eax,8),%eax
567         andl    $65280,%eax
568         xorl    %eax,%edx
569         movl    4(%esp),%eax
570         andl    $255,%ebx
571         movl    (%ebp,%ebx,8),%ebx
572         andl    $16711680,%ebx
573         xorl    %ebx,%edx
574         movl    8(%esp),%ebx
575         movl    2(%ebp,%ecx,8),%ecx
576         andl    $4278190080,%ecx
577         xorl    %ecx,%edx
578         movl    %esi,%ecx
579         addl    $16,%edi
580         xorl    (%edi),%eax
581         xorl    4(%edi),%ebx
582         xorl    8(%edi),%ecx
583         xorl    12(%edi),%edx
584         ret
585 .align  64
586 .LAES_Te:
587 .long   2774754246,2774754246
588 .long   2222750968,2222750968
589 .long   2574743534,2574743534
590 .long   2373680118,2373680118
591 .long   234025727,234025727
592 .long   3177933782,3177933782
593 .long   2976870366,2976870366
594 .long   1422247313,1422247313
595 .long   1345335392,1345335392
596 .long   50397442,50397442
597 .long   2842126286,2842126286
598 .long   2099981142,2099981142
599 .long   436141799,436141799
600 .long   1658312629,1658312629
601 .long   3870010189,3870010189
602 .long   2591454956,2591454956
603 .long   1170918031,1170918031
604 .long   2642575903,2642575903
605 .long   1086966153,1086966153
606 .long   2273148410,2273148410
607 .long   368769775,368769775
608 .long   3948501426,3948501426
609 .long   3376891790,3376891790
610 .long   200339707,200339707
611 .long   3970805057,3970805057
612 .long   1742001331,1742001331
613 .long   4255294047,4255294047
614 .long   3937382213,3937382213
615 .long   3214711843,3214711843
616 .long   4154762323,4154762323
617 .long   2524082916,2524082916
618 .long   1539358875,1539358875
619 .long   3266819957,3266819957
620 .long   486407649,486407649
621 .long   2928907069,2928907069
622 .long   1780885068,1780885068
623 .long   1513502316,1513502316
624 .long   1094664062,1094664062
625 .long   49805301,49805301
626 .long   1338821763,1338821763
627 .long   1546925160,1546925160
628 .long   4104496465,4104496465
629 .long   887481809,887481809
630 .long   150073849,150073849
631 .long   2473685474,2473685474
632 .long   1943591083,1943591083
633 .long   1395732834,1395732834
634 .long   1058346282,1058346282
635 .long   201589768,201589768
636 .long   1388824469,1388824469
637 .long   1696801606,1696801606
638 .long   1589887901,1589887901
639 .long   672667696,672667696
640 .long   2711000631,2711000631
641 .long   251987210,251987210
642 .long   3046808111,3046808111
643 .long   151455502,151455502
644 .long   907153956,907153956
645 .long   2608889883,2608889883
646 .long   1038279391,1038279391
647 .long   652995533,652995533
648 .long   1764173646,1764173646
649 .long   3451040383,3451040383
650 .long   2675275242,2675275242
651 .long   453576978,453576978
652 .long   2659418909,2659418909
653 .long   1949051992,1949051992
654 .long   773462580,773462580
655 .long   756751158,756751158
656 .long   2993581788,2993581788
657 .long   3998898868,3998898868
658 .long   4221608027,4221608027
659 .long   4132590244,4132590244
660 .long   1295727478,1295727478
661 .long   1641469623,1641469623
662 .long   3467883389,3467883389
663 .long   2066295122,2066295122
664 .long   1055122397,1055122397
665 .long   1898917726,1898917726
666 .long   2542044179,2542044179
667 .long   4115878822,4115878822
668 .long   1758581177,1758581177
669 .long   0,0
670 .long   753790401,753790401
671 .long   1612718144,1612718144
672 .long   536673507,536673507
673 .long   3367088505,3367088505
674 .long   3982187446,3982187446
675 .long   3194645204,3194645204
676 .long   1187761037,1187761037
677 .long   3653156455,3653156455
678 .long   1262041458,1262041458
679 .long   3729410708,3729410708
680 .long   3561770136,3561770136
681 .long   3898103984,3898103984
682 .long   1255133061,1255133061
683 .long   1808847035,1808847035
684 .long   720367557,720367557
685 .long   3853167183,3853167183
686 .long   385612781,385612781
687 .long   3309519750,3309519750
688 .long   3612167578,3612167578
689 .long   1429418854,1429418854
690 .long   2491778321,2491778321
691 .long   3477423498,3477423498
692 .long   284817897,284817897
693 .long   100794884,100794884
694 .long   2172616702,2172616702
695 .long   4031795360,4031795360
696 .long   1144798328,1144798328
697 .long   3131023141,3131023141
698 .long   3819481163,3819481163
699 .long   4082192802,4082192802
700 .long   4272137053,4272137053
701 .long   3225436288,3225436288
702 .long   2324664069,2324664069
703 .long   2912064063,2912064063
704 .long   3164445985,3164445985
705 .long   1211644016,1211644016
706 .long   83228145,83228145
707 .long   3753688163,3753688163
708 .long   3249976951,3249976951
709 .long   1977277103,1977277103
710 .long   1663115586,1663115586
711 .long   806359072,806359072
712 .long   452984805,452984805
713 .long   250868733,250868733
714 .long   1842533055,1842533055
715 .long   1288555905,1288555905
716 .long   336333848,336333848
717 .long   890442534,890442534
718 .long   804056259,804056259
719 .long   3781124030,3781124030
720 .long   2727843637,2727843637
721 .long   3427026056,3427026056
722 .long   957814574,957814574
723 .long   1472513171,1472513171
724 .long   4071073621,4071073621
725 .long   2189328124,2189328124
726 .long   1195195770,1195195770
727 .long   2892260552,2892260552
728 .long   3881655738,3881655738
729 .long   723065138,723065138
730 .long   2507371494,2507371494
731 .long   2690670784,2690670784
732 .long   2558624025,2558624025
733 .long   3511635870,3511635870
734 .long   2145180835,2145180835
735 .long   1713513028,1713513028
736 .long   2116692564,2116692564
737 .long   2878378043,2878378043
738 .long   2206763019,2206763019
739 .long   3393603212,3393603212
740 .long   703524551,703524551
741 .long   3552098411,3552098411
742 .long   1007948840,1007948840
743 .long   2044649127,2044649127
744 .long   3797835452,3797835452
745 .long   487262998,487262998
746 .long   1994120109,1994120109
747 .long   1004593371,1004593371
748 .long   1446130276,1446130276
749 .long   1312438900,1312438900
750 .long   503974420,503974420
751 .long   3679013266,3679013266
752 .long   168166924,168166924
753 .long   1814307912,1814307912
754 .long   3831258296,3831258296
755 .long   1573044895,1573044895
756 .long   1859376061,1859376061
757 .long   4021070915,4021070915
758 .long   2791465668,2791465668
759 .long   2828112185,2828112185
760 .long   2761266481,2761266481
761 .long   937747667,937747667
762 .long   2339994098,2339994098
763 .long   854058965,854058965
764 .long   1137232011,1137232011
765 .long   1496790894,1496790894
766 .long   3077402074,3077402074
767 .long   2358086913,2358086913
768 .long   1691735473,1691735473
769 .long   3528347292,3528347292
770 .long   3769215305,3769215305
771 .long   3027004632,3027004632
772 .long   4199962284,4199962284
773 .long   133494003,133494003
774 .long   636152527,636152527
775 .long   2942657994,2942657994
776 .long   2390391540,2390391540
777 .long   3920539207,3920539207
778 .long   403179536,403179536
779 .long   3585784431,3585784431
780 .long   2289596656,2289596656
781 .long   1864705354,1864705354
782 .long   1915629148,1915629148
783 .long   605822008,605822008
784 .long   4054230615,4054230615
785 .long   3350508659,3350508659
786 .long   1371981463,1371981463
787 .long   602466507,602466507
788 .long   2094914977,2094914977
789 .long   2624877800,2624877800
790 .long   555687742,555687742
791 .long   3712699286,3712699286
792 .long   3703422305,3703422305
793 .long   2257292045,2257292045
794 .long   2240449039,2240449039
795 .long   2423288032,2423288032
796 .long   1111375484,1111375484
797 .long   3300242801,3300242801
798 .long   2858837708,2858837708
799 .long   3628615824,3628615824
800 .long   84083462,84083462
801 .long   32962295,32962295
802 .long   302911004,302911004
803 .long   2741068226,2741068226
804 .long   1597322602,1597322602
805 .long   4183250862,4183250862
806 .long   3501832553,3501832553
807 .long   2441512471,2441512471
808 .long   1489093017,1489093017
809 .long   656219450,656219450
810 .long   3114180135,3114180135
811 .long   954327513,954327513
812 .long   335083755,335083755
813 .long   3013122091,3013122091
814 .long   856756514,856756514
815 .long   3144247762,3144247762
816 .long   1893325225,1893325225
817 .long   2307821063,2307821063
818 .long   2811532339,2811532339
819 .long   3063651117,3063651117
820 .long   572399164,572399164
821 .long   2458355477,2458355477
822 .long   552200649,552200649
823 .long   1238290055,1238290055
824 .long   4283782570,4283782570
825 .long   2015897680,2015897680
826 .long   2061492133,2061492133
827 .long   2408352771,2408352771
828 .long   4171342169,4171342169
829 .long   2156497161,2156497161
830 .long   386731290,386731290
831 .long   3669999461,3669999461
832 .long   837215959,837215959
833 .long   3326231172,3326231172
834 .long   3093850320,3093850320
835 .long   3275833730,3275833730
836 .long   2962856233,2962856233
837 .long   1999449434,1999449434
838 .long   286199582,286199582
839 .long   3417354363,3417354363
840 .long   4233385128,4233385128
841 .long   3602627437,3602627437
842 .long   974525996,974525996
843 .byte   99,124,119,123,242,107,111,197
844 .byte   48,1,103,43,254,215,171,118
845 .byte   202,130,201,125,250,89,71,240
846 .byte   173,212,162,175,156,164,114,192
847 .byte   183,253,147,38,54,63,247,204
848 .byte   52,165,229,241,113,216,49,21
849 .byte   4,199,35,195,24,150,5,154
850 .byte   7,18,128,226,235,39,178,117
851 .byte   9,131,44,26,27,110,90,160
852 .byte   82,59,214,179,41,227,47,132
853 .byte   83,209,0,237,32,252,177,91
854 .byte   106,203,190,57,74,76,88,207
855 .byte   208,239,170,251,67,77,51,133
856 .byte   69,249,2,127,80,60,159,168
857 .byte   81,163,64,143,146,157,56,245
858 .byte   188,182,218,33,16,255,243,210
859 .byte   205,12,19,236,95,151,68,23
860 .byte   196,167,126,61,100,93,25,115
861 .byte   96,129,79,220,34,42,144,136
862 .byte   70,238,184,20,222,94,11,219
863 .byte   224,50,58,10,73,6,36,92
864 .byte   194,211,172,98,145,149,228,121
865 .byte   231,200,55,109,141,213,78,169
866 .byte   108,86,244,234,101,122,174,8
867 .byte   186,120,37,46,28,166,180,198
868 .byte   232,221,116,31,75,189,139,138
869 .byte   112,62,181,102,72,3,246,14
870 .byte   97,53,87,185,134,193,29,158
871 .byte   225,248,152,17,105,217,142,148
872 .byte   155,30,135,233,206,85,40,223
873 .byte   140,161,137,13,191,230,66,104
874 .byte   65,153,45,15,176,84,187,22
875 .byte   99,124,119,123,242,107,111,197
876 .byte   48,1,103,43,254,215,171,118
877 .byte   202,130,201,125,250,89,71,240
878 .byte   173,212,162,175,156,164,114,192
879 .byte   183,253,147,38,54,63,247,204
880 .byte   52,165,229,241,113,216,49,21
881 .byte   4,199,35,195,24,150,5,154
882 .byte   7,18,128,226,235,39,178,117
883 .byte   9,131,44,26,27,110,90,160
884 .byte   82,59,214,179,41,227,47,132
885 .byte   83,209,0,237,32,252,177,91
886 .byte   106,203,190,57,74,76,88,207
887 .byte   208,239,170,251,67,77,51,133
888 .byte   69,249,2,127,80,60,159,168
889 .byte   81,163,64,143,146,157,56,245
890 .byte   188,182,218,33,16,255,243,210
891 .byte   205,12,19,236,95,151,68,23
892 .byte   196,167,126,61,100,93,25,115
893 .byte   96,129,79,220,34,42,144,136
894 .byte   70,238,184,20,222,94,11,219
895 .byte   224,50,58,10,73,6,36,92
896 .byte   194,211,172,98,145,149,228,121
897 .byte   231,200,55,109,141,213,78,169
898 .byte   108,86,244,234,101,122,174,8
899 .byte   186,120,37,46,28,166,180,198
900 .byte   232,221,116,31,75,189,139,138
901 .byte   112,62,181,102,72,3,246,14
902 .byte   97,53,87,185,134,193,29,158
903 .byte   225,248,152,17,105,217,142,148
904 .byte   155,30,135,233,206,85,40,223
905 .byte   140,161,137,13,191,230,66,104
906 .byte   65,153,45,15,176,84,187,22
907 .byte   99,124,119,123,242,107,111,197
908 .byte   48,1,103,43,254,215,171,118
909 .byte   202,130,201,125,250,89,71,240
910 .byte   173,212,162,175,156,164,114,192
911 .byte   183,253,147,38,54,63,247,204
912 .byte   52,165,229,241,113,216,49,21
913 .byte   4,199,35,195,24,150,5,154
914 .byte   7,18,128,226,235,39,178,117
915 .byte   9,131,44,26,27,110,90,160
916 .byte   82,59,214,179,41,227,47,132
917 .byte   83,209,0,237,32,252,177,91
918 .byte   106,203,190,57,74,76,88,207
919 .byte   208,239,170,251,67,77,51,133
920 .byte   69,249,2,127,80,60,159,168
921 .byte   81,163,64,143,146,157,56,245
922 .byte   188,182,218,33,16,255,243,210
923 .byte   205,12,19,236,95,151,68,23
924 .byte   196,167,126,61,100,93,25,115
925 .byte   96,129,79,220,34,42,144,136
926 .byte   70,238,184,20,222,94,11,219
927 .byte   224,50,58,10,73,6,36,92
928 .byte   194,211,172,98,145,149,228,121
929 .byte   231,200,55,109,141,213,78,169
930 .byte   108,86,244,234,101,122,174,8
931 .byte   186,120,37,46,28,166,180,198
932 .byte   232,221,116,31,75,189,139,138
933 .byte   112,62,181,102,72,3,246,14
934 .byte   97,53,87,185,134,193,29,158
935 .byte   225,248,152,17,105,217,142,148
936 .byte   155,30,135,233,206,85,40,223
937 .byte   140,161,137,13,191,230,66,104
938 .byte   65,153,45,15,176,84,187,22
939 .byte   99,124,119,123,242,107,111,197
940 .byte   48,1,103,43,254,215,171,118
941 .byte   202,130,201,125,250,89,71,240
942 .byte   173,212,162,175,156,164,114,192
943 .byte   183,253,147,38,54,63,247,204
944 .byte   52,165,229,241,113,216,49,21
945 .byte   4,199,35,195,24,150,5,154
946 .byte   7,18,128,226,235,39,178,117
947 .byte   9,131,44,26,27,110,90,160
948 .byte   82,59,214,179,41,227,47,132
949 .byte   83,209,0,237,32,252,177,91
950 .byte   106,203,190,57,74,76,88,207
951 .byte   208,239,170,251,67,77,51,133
952 .byte   69,249,2,127,80,60,159,168
953 .byte   81,163,64,143,146,157,56,245
954 .byte   188,182,218,33,16,255,243,210
955 .byte   205,12,19,236,95,151,68,23
956 .byte   196,167,126,61,100,93,25,115
957 .byte   96,129,79,220,34,42,144,136
958 .byte   70,238,184,20,222,94,11,219
959 .byte   224,50,58,10,73,6,36,92
960 .byte   194,211,172,98,145,149,228,121
961 .byte   231,200,55,109,141,213,78,169
962 .byte   108,86,244,234,101,122,174,8
963 .byte   186,120,37,46,28,166,180,198
964 .byte   232,221,116,31,75,189,139,138
965 .byte   112,62,181,102,72,3,246,14
966 .byte   97,53,87,185,134,193,29,158
967 .byte   225,248,152,17,105,217,142,148
968 .byte   155,30,135,233,206,85,40,223
969 .byte   140,161,137,13,191,230,66,104
970 .byte   65,153,45,15,176,84,187,22
971 .long   1,2,4,8
972 .long   16,32,64,128
973 .long   27,54,0,0
974 .long   0,0,0,0
975 .size   _x86_AES_encrypt,.-_x86_AES_encrypt
976 .globl  AES_encrypt
977 .type   AES_encrypt,@function
978 .align  16
979 AES_encrypt:
980 .L_AES_encrypt_begin:
981         pushl   %ebp
982         pushl   %ebx
983         pushl   %esi
984         pushl   %edi
985         movl    20(%esp),%esi
986         movl    28(%esp),%edi
987         movl    %esp,%eax
988         subl    $36,%esp
989         andl    $-64,%esp
990         leal    -127(%edi),%ebx
991         subl    %esp,%ebx
992         negl    %ebx
993         andl    $960,%ebx
994         subl    %ebx,%esp
995         addl    $4,%esp
996         movl    %eax,28(%esp)
997         call    .L004pic_point
998 .L004pic_point:
999         popl    %ebp
1000         leal    _GLOBAL_OFFSET_TABLE_+[.-.L004pic_point](%ebp),%eax
1001         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
1002         leal    .LAES_Te-.L004pic_point(%ebp),%ebp
1003         leal    764(%esp),%ebx
1004         subl    %ebp,%ebx
1005         andl    $768,%ebx
1006         leal    2176(%ebp,%ebx,1),%ebp
1007         btl     $25,(%eax)
1008         jnc     .L005x86
1009         movq    (%esi),%mm0
1010         movq    8(%esi),%mm4
1011         call    _sse_AES_encrypt_compact
1012         movl    28(%esp),%esp
1013         movl    24(%esp),%esi
1014         movq    %mm0,(%esi)
1015         movq    %mm4,8(%esi)
1016         emms
1017         popl    %edi
1018         popl    %esi
1019         popl    %ebx
1020         popl    %ebp
1021         ret
1022 .align  16
1023 .L005x86:
1024         movl    %ebp,24(%esp)
1025         movl    (%esi),%eax
1026         movl    4(%esi),%ebx
1027         movl    8(%esi),%ecx
1028         movl    12(%esi),%edx
1029         call    _x86_AES_encrypt_compact
1030         movl    28(%esp),%esp
1031         movl    24(%esp),%esi
1032         movl    %eax,(%esi)
1033         movl    %ebx,4(%esi)
1034         movl    %ecx,8(%esi)
1035         movl    %edx,12(%esi)
1036         popl    %edi
1037         popl    %esi
1038         popl    %ebx
1039         popl    %ebp
1040         ret
1041 .size   AES_encrypt,.-.L_AES_encrypt_begin
1042 .type   _x86_AES_decrypt_compact,@function
1043 .align  16
1044 _x86_AES_decrypt_compact:
1045         movl    %edi,20(%esp)
1046         xorl    (%edi),%eax
1047         xorl    4(%edi),%ebx
1048         xorl    8(%edi),%ecx
1049         xorl    12(%edi),%edx
1050         movl    240(%edi),%esi
1051         leal    -2(%esi,%esi,1),%esi
1052         leal    (%edi,%esi,8),%esi
1053         movl    %esi,24(%esp)
1054         movl    -128(%ebp),%edi
1055         movl    -96(%ebp),%esi
1056         movl    -64(%ebp),%edi
1057         movl    -32(%ebp),%esi
1058         movl    (%ebp),%edi
1059         movl    32(%ebp),%esi
1060         movl    64(%ebp),%edi
1061         movl    96(%ebp),%esi
1062 .align  16
1063 .L006loop:
1064         movl    %eax,%esi
1065         andl    $255,%esi
1066         movzbl  -128(%ebp,%esi,1),%esi
1067         movzbl  %dh,%edi
1068         movzbl  -128(%ebp,%edi,1),%edi
1069         shll    $8,%edi
1070         xorl    %edi,%esi
1071         movl    %ecx,%edi
1072         shrl    $16,%edi
1073         andl    $255,%edi
1074         movzbl  -128(%ebp,%edi,1),%edi
1075         shll    $16,%edi
1076         xorl    %edi,%esi
1077         movl    %ebx,%edi
1078         shrl    $24,%edi
1079         movzbl  -128(%ebp,%edi,1),%edi
1080         shll    $24,%edi
1081         xorl    %edi,%esi
1082         movl    %esi,4(%esp)
1083         movl    %ebx,%esi
1084         andl    $255,%esi
1085         movzbl  -128(%ebp,%esi,1),%esi
1086         movzbl  %ah,%edi
1087         movzbl  -128(%ebp,%edi,1),%edi
1088         shll    $8,%edi
1089         xorl    %edi,%esi
1090         movl    %edx,%edi
1091         shrl    $16,%edi
1092         andl    $255,%edi
1093         movzbl  -128(%ebp,%edi,1),%edi
1094         shll    $16,%edi
1095         xorl    %edi,%esi
1096         movl    %ecx,%edi
1097         shrl    $24,%edi
1098         movzbl  -128(%ebp,%edi,1),%edi
1099         shll    $24,%edi
1100         xorl    %edi,%esi
1101         movl    %esi,8(%esp)
1102         movl    %ecx,%esi
1103         andl    $255,%esi
1104         movzbl  -128(%ebp,%esi,1),%esi
1105         movzbl  %bh,%edi
1106         movzbl  -128(%ebp,%edi,1),%edi
1107         shll    $8,%edi
1108         xorl    %edi,%esi
1109         movl    %eax,%edi
1110         shrl    $16,%edi
1111         andl    $255,%edi
1112         movzbl  -128(%ebp,%edi,1),%edi
1113         shll    $16,%edi
1114         xorl    %edi,%esi
1115         movl    %edx,%edi
1116         shrl    $24,%edi
1117         movzbl  -128(%ebp,%edi,1),%edi
1118         shll    $24,%edi
1119         xorl    %edi,%esi
1120         andl    $255,%edx
1121         movzbl  -128(%ebp,%edx,1),%edx
1122         movzbl  %ch,%ecx
1123         movzbl  -128(%ebp,%ecx,1),%ecx
1124         shll    $8,%ecx
1125         xorl    %ecx,%edx
1126         movl    %esi,%ecx
1127         shrl    $16,%ebx
1128         andl    $255,%ebx
1129         movzbl  -128(%ebp,%ebx,1),%ebx
1130         shll    $16,%ebx
1131         xorl    %ebx,%edx
1132         shrl    $24,%eax
1133         movzbl  -128(%ebp,%eax,1),%eax
1134         shll    $24,%eax
1135         xorl    %eax,%edx
1136         movl    %ecx,%esi
1137         andl    $2155905152,%esi
1138         movl    %esi,%edi
1139         shrl    $7,%edi
1140         leal    (%ecx,%ecx,1),%eax
1141         subl    %edi,%esi
1142         andl    $4278124286,%eax
1143         andl    $454761243,%esi
1144         xorl    %eax,%esi
1145         movl    %esi,%eax
1146         andl    $2155905152,%esi
1147         movl    %esi,%edi
1148         shrl    $7,%edi
1149         leal    (%eax,%eax,1),%ebx
1150         subl    %edi,%esi
1151         andl    $4278124286,%ebx
1152         andl    $454761243,%esi
1153         xorl    %ecx,%eax
1154         xorl    %ebx,%esi
1155         movl    %esi,%ebx
1156         andl    $2155905152,%esi
1157         movl    %esi,%edi
1158         shrl    $7,%edi
1159         leal    (%ebx,%ebx,1),%ebp
1160         subl    %edi,%esi
1161         andl    $4278124286,%ebp
1162         andl    $454761243,%esi
1163         xorl    %ecx,%ebx
1164         roll    $8,%ecx
1165         xorl    %esi,%ebp
1166         xorl    %eax,%ecx
1167         xorl    %ebp,%eax
1168         roll    $24,%eax
1169         xorl    %ebx,%ecx
1170         xorl    %ebp,%ebx
1171         roll    $16,%ebx
1172         xorl    %ebp,%ecx
1173         roll    $8,%ebp
1174         xorl    %eax,%ecx
1175         xorl    %ebx,%ecx
1176         movl    4(%esp),%eax
1177         xorl    %ebp,%ecx
1178         movl    %ecx,12(%esp)
1179         movl    %edx,%esi
1180         andl    $2155905152,%esi
1181         movl    %esi,%edi
1182         shrl    $7,%edi
1183         leal    (%edx,%edx,1),%ebx
1184         subl    %edi,%esi
1185         andl    $4278124286,%ebx
1186         andl    $454761243,%esi
1187         xorl    %ebx,%esi
1188         movl    %esi,%ebx
1189         andl    $2155905152,%esi
1190         movl    %esi,%edi
1191         shrl    $7,%edi
1192         leal    (%ebx,%ebx,1),%ecx
1193         subl    %edi,%esi
1194         andl    $4278124286,%ecx
1195         andl    $454761243,%esi
1196         xorl    %edx,%ebx
1197         xorl    %ecx,%esi
1198         movl    %esi,%ecx
1199         andl    $2155905152,%esi
1200         movl    %esi,%edi
1201         shrl    $7,%edi
1202         leal    (%ecx,%ecx,1),%ebp
1203         subl    %edi,%esi
1204         andl    $4278124286,%ebp
1205         andl    $454761243,%esi
1206         xorl    %edx,%ecx
1207         roll    $8,%edx
1208         xorl    %esi,%ebp
1209         xorl    %ebx,%edx
1210         xorl    %ebp,%ebx
1211         roll    $24,%ebx
1212         xorl    %ecx,%edx
1213         xorl    %ebp,%ecx
1214         roll    $16,%ecx
1215         xorl    %ebp,%edx
1216         roll    $8,%ebp
1217         xorl    %ebx,%edx
1218         xorl    %ecx,%edx
1219         movl    8(%esp),%ebx
1220         xorl    %ebp,%edx
1221         movl    %edx,16(%esp)
1222         movl    %eax,%esi
1223         andl    $2155905152,%esi
1224         movl    %esi,%edi
1225         shrl    $7,%edi
1226         leal    (%eax,%eax,1),%ecx
1227         subl    %edi,%esi
1228         andl    $4278124286,%ecx
1229         andl    $454761243,%esi
1230         xorl    %ecx,%esi
1231         movl    %esi,%ecx
1232         andl    $2155905152,%esi
1233         movl    %esi,%edi
1234         shrl    $7,%edi
1235         leal    (%ecx,%ecx,1),%edx
1236         subl    %edi,%esi
1237         andl    $4278124286,%edx
1238         andl    $454761243,%esi
1239         xorl    %eax,%ecx
1240         xorl    %edx,%esi
1241         movl    %esi,%edx
1242         andl    $2155905152,%esi
1243         movl    %esi,%edi
1244         shrl    $7,%edi
1245         leal    (%edx,%edx,1),%ebp
1246         subl    %edi,%esi
1247         andl    $4278124286,%ebp
1248         andl    $454761243,%esi
1249         xorl    %eax,%edx
1250         roll    $8,%eax
1251         xorl    %esi,%ebp
1252         xorl    %ecx,%eax
1253         xorl    %ebp,%ecx
1254         roll    $24,%ecx
1255         xorl    %edx,%eax
1256         xorl    %ebp,%edx
1257         roll    $16,%edx
1258         xorl    %ebp,%eax
1259         roll    $8,%ebp
1260         xorl    %ecx,%eax
1261         xorl    %edx,%eax
1262         xorl    %ebp,%eax
1263         movl    %ebx,%esi
1264         andl    $2155905152,%esi
1265         movl    %esi,%edi
1266         shrl    $7,%edi
1267         leal    (%ebx,%ebx,1),%ecx
1268         subl    %edi,%esi
1269         andl    $4278124286,%ecx
1270         andl    $454761243,%esi
1271         xorl    %ecx,%esi
1272         movl    %esi,%ecx
1273         andl    $2155905152,%esi
1274         movl    %esi,%edi
1275         shrl    $7,%edi
1276         leal    (%ecx,%ecx,1),%edx
1277         subl    %edi,%esi
1278         andl    $4278124286,%edx
1279         andl    $454761243,%esi
1280         xorl    %ebx,%ecx
1281         xorl    %edx,%esi
1282         movl    %esi,%edx
1283         andl    $2155905152,%esi
1284         movl    %esi,%edi
1285         shrl    $7,%edi
1286         leal    (%edx,%edx,1),%ebp
1287         subl    %edi,%esi
1288         andl    $4278124286,%ebp
1289         andl    $454761243,%esi
1290         xorl    %ebx,%edx
1291         roll    $8,%ebx
1292         xorl    %esi,%ebp
1293         xorl    %ecx,%ebx
1294         xorl    %ebp,%ecx
1295         roll    $24,%ecx
1296         xorl    %edx,%ebx
1297         xorl    %ebp,%edx
1298         roll    $16,%edx
1299         xorl    %ebp,%ebx
1300         roll    $8,%ebp
1301         xorl    %ecx,%ebx
1302         xorl    %edx,%ebx
1303         movl    12(%esp),%ecx
1304         xorl    %ebp,%ebx
1305         movl    16(%esp),%edx
1306         movl    20(%esp),%edi
1307         movl    28(%esp),%ebp
1308         addl    $16,%edi
1309         xorl    (%edi),%eax
1310         xorl    4(%edi),%ebx
1311         xorl    8(%edi),%ecx
1312         xorl    12(%edi),%edx
1313         cmpl    24(%esp),%edi
1314         movl    %edi,20(%esp)
1315         jb      .L006loop
1316         movl    %eax,%esi
1317         andl    $255,%esi
1318         movzbl  -128(%ebp,%esi,1),%esi
1319         movzbl  %dh,%edi
1320         movzbl  -128(%ebp,%edi,1),%edi
1321         shll    $8,%edi
1322         xorl    %edi,%esi
1323         movl    %ecx,%edi
1324         shrl    $16,%edi
1325         andl    $255,%edi
1326         movzbl  -128(%ebp,%edi,1),%edi
1327         shll    $16,%edi
1328         xorl    %edi,%esi
1329         movl    %ebx,%edi
1330         shrl    $24,%edi
1331         movzbl  -128(%ebp,%edi,1),%edi
1332         shll    $24,%edi
1333         xorl    %edi,%esi
1334         movl    %esi,4(%esp)
1335         movl    %ebx,%esi
1336         andl    $255,%esi
1337         movzbl  -128(%ebp,%esi,1),%esi
1338         movzbl  %ah,%edi
1339         movzbl  -128(%ebp,%edi,1),%edi
1340         shll    $8,%edi
1341         xorl    %edi,%esi
1342         movl    %edx,%edi
1343         shrl    $16,%edi
1344         andl    $255,%edi
1345         movzbl  -128(%ebp,%edi,1),%edi
1346         shll    $16,%edi
1347         xorl    %edi,%esi
1348         movl    %ecx,%edi
1349         shrl    $24,%edi
1350         movzbl  -128(%ebp,%edi,1),%edi
1351         shll    $24,%edi
1352         xorl    %edi,%esi
1353         movl    %esi,8(%esp)
1354         movl    %ecx,%esi
1355         andl    $255,%esi
1356         movzbl  -128(%ebp,%esi,1),%esi
1357         movzbl  %bh,%edi
1358         movzbl  -128(%ebp,%edi,1),%edi
1359         shll    $8,%edi
1360         xorl    %edi,%esi
1361         movl    %eax,%edi
1362         shrl    $16,%edi
1363         andl    $255,%edi
1364         movzbl  -128(%ebp,%edi,1),%edi
1365         shll    $16,%edi
1366         xorl    %edi,%esi
1367         movl    %edx,%edi
1368         shrl    $24,%edi
1369         movzbl  -128(%ebp,%edi,1),%edi
1370         shll    $24,%edi
1371         xorl    %edi,%esi
1372         movl    20(%esp),%edi
1373         andl    $255,%edx
1374         movzbl  -128(%ebp,%edx,1),%edx
1375         movzbl  %ch,%ecx
1376         movzbl  -128(%ebp,%ecx,1),%ecx
1377         shll    $8,%ecx
1378         xorl    %ecx,%edx
1379         movl    %esi,%ecx
1380         shrl    $16,%ebx
1381         andl    $255,%ebx
1382         movzbl  -128(%ebp,%ebx,1),%ebx
1383         shll    $16,%ebx
1384         xorl    %ebx,%edx
1385         movl    8(%esp),%ebx
1386         shrl    $24,%eax
1387         movzbl  -128(%ebp,%eax,1),%eax
1388         shll    $24,%eax
1389         xorl    %eax,%edx
1390         movl    4(%esp),%eax
1391         xorl    16(%edi),%eax
1392         xorl    20(%edi),%ebx
1393         xorl    24(%edi),%ecx
1394         xorl    28(%edi),%edx
1395         ret
1396 .size   _x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact
1397 .type   _sse_AES_decrypt_compact,@function
1398 .align  16
1399 _sse_AES_decrypt_compact:
1400         pxor    (%edi),%mm0
1401         pxor    8(%edi),%mm4
1402         movl    240(%edi),%esi
1403         leal    -2(%esi,%esi,1),%esi
1404         leal    (%edi,%esi,8),%esi
1405         movl    %esi,24(%esp)
1406         movl    $454761243,%eax
1407         movl    %eax,8(%esp)
1408         movl    %eax,12(%esp)
1409         movl    -128(%ebp),%eax
1410         movl    -96(%ebp),%ebx
1411         movl    -64(%ebp),%ecx
1412         movl    -32(%ebp),%edx
1413         movl    (%ebp),%eax
1414         movl    32(%ebp),%ebx
1415         movl    64(%ebp),%ecx
1416         movl    96(%ebp),%edx
1417 .align  16
1418 .L007loop:
1419         pshufw  $12,%mm0,%mm1
1420         movd    %mm1,%eax
1421         pshufw  $9,%mm4,%mm5
1422         movzbl  %al,%esi
1423         movzbl  -128(%ebp,%esi,1),%ecx
1424         movd    %mm5,%ebx
1425         movzbl  %ah,%edx
1426         movzbl  -128(%ebp,%edx,1),%edx
1427         shll    $8,%edx
1428         pshufw  $6,%mm0,%mm2
1429         movzbl  %bl,%esi
1430         movzbl  -128(%ebp,%esi,1),%esi
1431         shll    $16,%esi
1432         orl     %esi,%ecx
1433         shrl    $16,%eax
1434         movzbl  %bh,%esi
1435         movzbl  -128(%ebp,%esi,1),%esi
1436         shll    $24,%esi
1437         orl     %esi,%edx
1438         shrl    $16,%ebx
1439         pshufw  $3,%mm4,%mm6
1440         movzbl  %ah,%esi
1441         movzbl  -128(%ebp,%esi,1),%esi
1442         shll    $24,%esi
1443         orl     %esi,%ecx
1444         movzbl  %bh,%esi
1445         movzbl  -128(%ebp,%esi,1),%esi
1446         shll    $8,%esi
1447         orl     %esi,%ecx
1448         movd    %ecx,%mm0
1449         movzbl  %al,%esi
1450         movd    %mm2,%eax
1451         movzbl  -128(%ebp,%esi,1),%ecx
1452         shll    $16,%ecx
1453         movzbl  %bl,%esi
1454         movd    %mm6,%ebx
1455         movzbl  -128(%ebp,%esi,1),%esi
1456         orl     %esi,%ecx
1457         movzbl  %al,%esi
1458         movzbl  -128(%ebp,%esi,1),%esi
1459         orl     %esi,%edx
1460         movzbl  %bl,%esi
1461         movzbl  -128(%ebp,%esi,1),%esi
1462         shll    $16,%esi
1463         orl     %esi,%edx
1464         movd    %edx,%mm1
1465         movzbl  %ah,%esi
1466         movzbl  -128(%ebp,%esi,1),%edx
1467         shll    $8,%edx
1468         movzbl  %bh,%esi
1469         shrl    $16,%eax
1470         movzbl  -128(%ebp,%esi,1),%esi
1471         shll    $24,%esi
1472         orl     %esi,%edx
1473         shrl    $16,%ebx
1474         punpckldq       %mm1,%mm0
1475         movzbl  %bh,%esi
1476         movzbl  -128(%ebp,%esi,1),%esi
1477         shll    $8,%esi
1478         orl     %esi,%ecx
1479         andl    $255,%ebx
1480         movzbl  -128(%ebp,%ebx,1),%ebx
1481         orl     %ebx,%edx
1482         movzbl  %al,%esi
1483         movzbl  -128(%ebp,%esi,1),%esi
1484         shll    $16,%esi
1485         orl     %esi,%edx
1486         movd    %edx,%mm4
1487         movzbl  %ah,%eax
1488         movzbl  -128(%ebp,%eax,1),%eax
1489         shll    $24,%eax
1490         orl     %eax,%ecx
1491         movd    %ecx,%mm5
1492         punpckldq       %mm5,%mm4
1493         addl    $16,%edi
1494         cmpl    24(%esp),%edi
1495         ja      .L008out
1496         movq    %mm0,%mm3
1497         movq    %mm4,%mm7
1498         pshufw  $228,%mm0,%mm2
1499         pshufw  $228,%mm4,%mm6
1500         movq    %mm0,%mm1
1501         movq    %mm4,%mm5
1502         pshufw  $177,%mm0,%mm0
1503         pshufw  $177,%mm4,%mm4
1504         pslld   $8,%mm2
1505         pslld   $8,%mm6
1506         psrld   $8,%mm3
1507         psrld   $8,%mm7
1508         pxor    %mm2,%mm0
1509         pxor    %mm6,%mm4
1510         pxor    %mm3,%mm0
1511         pxor    %mm7,%mm4
1512         pslld   $16,%mm2
1513         pslld   $16,%mm6
1514         psrld   $16,%mm3
1515         psrld   $16,%mm7
1516         pxor    %mm2,%mm0
1517         pxor    %mm6,%mm4
1518         pxor    %mm3,%mm0
1519         pxor    %mm7,%mm4
1520         movq    8(%esp),%mm3
1521         pxor    %mm2,%mm2
1522         pxor    %mm6,%mm6
1523         pcmpgtb %mm1,%mm2
1524         pcmpgtb %mm5,%mm6
1525         pand    %mm3,%mm2
1526         pand    %mm3,%mm6
1527         paddb   %mm1,%mm1
1528         paddb   %mm5,%mm5
1529         pxor    %mm2,%mm1
1530         pxor    %mm6,%mm5
1531         movq    %mm1,%mm3
1532         movq    %mm5,%mm7
1533         movq    %mm1,%mm2
1534         movq    %mm5,%mm6
1535         pxor    %mm1,%mm0
1536         pxor    %mm5,%mm4
1537         pslld   $24,%mm3
1538         pslld   $24,%mm7
1539         psrld   $8,%mm2
1540         psrld   $8,%mm6
1541         pxor    %mm3,%mm0
1542         pxor    %mm7,%mm4
1543         pxor    %mm2,%mm0
1544         pxor    %mm6,%mm4
1545         movq    8(%esp),%mm2
1546         pxor    %mm3,%mm3
1547         pxor    %mm7,%mm7
1548         pcmpgtb %mm1,%mm3
1549         pcmpgtb %mm5,%mm7
1550         pand    %mm2,%mm3
1551         pand    %mm2,%mm7
1552         paddb   %mm1,%mm1
1553         paddb   %mm5,%mm5
1554         pxor    %mm3,%mm1
1555         pxor    %mm7,%mm5
1556         pshufw  $177,%mm1,%mm3
1557         pshufw  $177,%mm5,%mm7
1558         pxor    %mm1,%mm0
1559         pxor    %mm5,%mm4
1560         pxor    %mm3,%mm0
1561         pxor    %mm7,%mm4
1562         pxor    %mm3,%mm3
1563         pxor    %mm7,%mm7
1564         pcmpgtb %mm1,%mm3
1565         pcmpgtb %mm5,%mm7
1566         pand    %mm2,%mm3
1567         pand    %mm2,%mm7
1568         paddb   %mm1,%mm1
1569         paddb   %mm5,%mm5
1570         pxor    %mm3,%mm1
1571         pxor    %mm7,%mm5
1572         pxor    %mm1,%mm0
1573         pxor    %mm5,%mm4
1574         movq    %mm1,%mm3
1575         movq    %mm5,%mm7
1576         pshufw  $177,%mm1,%mm2
1577         pshufw  $177,%mm5,%mm6
1578         pxor    %mm2,%mm0
1579         pxor    %mm6,%mm4
1580         pslld   $8,%mm1
1581         pslld   $8,%mm5
1582         psrld   $8,%mm3
1583         psrld   $8,%mm7
1584         movq    (%edi),%mm2
1585         movq    8(%edi),%mm6
1586         pxor    %mm1,%mm0
1587         pxor    %mm5,%mm4
1588         pxor    %mm3,%mm0
1589         pxor    %mm7,%mm4
1590         movl    -128(%ebp),%eax
1591         pslld   $16,%mm1
1592         pslld   $16,%mm5
1593         movl    -64(%ebp),%ebx
1594         psrld   $16,%mm3
1595         psrld   $16,%mm7
1596         movl    (%ebp),%ecx
1597         pxor    %mm1,%mm0
1598         pxor    %mm5,%mm4
1599         movl    64(%ebp),%edx
1600         pxor    %mm3,%mm0
1601         pxor    %mm7,%mm4
1602         pxor    %mm2,%mm0
1603         pxor    %mm6,%mm4
1604         jmp     .L007loop
1605 .align  16
1606 .L008out:
1607         pxor    (%edi),%mm0
1608         pxor    8(%edi),%mm4
1609         ret
1610 .size   _sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact
1611 .type   _x86_AES_decrypt,@function
1612 .align  16
1613 _x86_AES_decrypt:
1614         movl    %edi,20(%esp)
1615         xorl    (%edi),%eax
1616         xorl    4(%edi),%ebx
1617         xorl    8(%edi),%ecx
1618         xorl    12(%edi),%edx
1619         movl    240(%edi),%esi
1620         leal    -2(%esi,%esi,1),%esi
1621         leal    (%edi,%esi,8),%esi
1622         movl    %esi,24(%esp)
1623 .align  16
1624 .L009loop:
1625         movl    %eax,%esi
1626         andl    $255,%esi
1627         movl    (%ebp,%esi,8),%esi
1628         movzbl  %dh,%edi
1629         xorl    3(%ebp,%edi,8),%esi
1630         movl    %ecx,%edi
1631         shrl    $16,%edi
1632         andl    $255,%edi
1633         xorl    2(%ebp,%edi,8),%esi
1634         movl    %ebx,%edi
1635         shrl    $24,%edi
1636         xorl    1(%ebp,%edi,8),%esi
1637         movl    %esi,4(%esp)
1638
1639         movl    %ebx,%esi
1640         andl    $255,%esi
1641         movl    (%ebp,%esi,8),%esi
1642         movzbl  %ah,%edi
1643         xorl    3(%ebp,%edi,8),%esi
1644         movl    %edx,%edi
1645         shrl    $16,%edi
1646         andl    $255,%edi
1647         xorl    2(%ebp,%edi,8),%esi
1648         movl    %ecx,%edi
1649         shrl    $24,%edi
1650         xorl    1(%ebp,%edi,8),%esi
1651         movl    %esi,8(%esp)
1652
1653         movl    %ecx,%esi
1654         andl    $255,%esi
1655         movl    (%ebp,%esi,8),%esi
1656         movzbl  %bh,%edi
1657         xorl    3(%ebp,%edi,8),%esi
1658         movl    %eax,%edi
1659         shrl    $16,%edi
1660         andl    $255,%edi
1661         xorl    2(%ebp,%edi,8),%esi
1662         movl    %edx,%edi
1663         shrl    $24,%edi
1664         xorl    1(%ebp,%edi,8),%esi
1665
1666         movl    20(%esp),%edi
1667         andl    $255,%edx
1668         movl    (%ebp,%edx,8),%edx
1669         movzbl  %ch,%ecx
1670         xorl    3(%ebp,%ecx,8),%edx
1671         movl    %esi,%ecx
1672         shrl    $16,%ebx
1673         andl    $255,%ebx
1674         xorl    2(%ebp,%ebx,8),%edx
1675         movl    8(%esp),%ebx
1676         shrl    $24,%eax
1677         xorl    1(%ebp,%eax,8),%edx
1678         movl    4(%esp),%eax
1679
1680         addl    $16,%edi
1681         xorl    (%edi),%eax
1682         xorl    4(%edi),%ebx
1683         xorl    8(%edi),%ecx
1684         xorl    12(%edi),%edx
1685         cmpl    24(%esp),%edi
1686         movl    %edi,20(%esp)
1687         jb      .L009loop
1688         leal    2176(%ebp),%ebp
1689         movl    -128(%ebp),%edi
1690         movl    -96(%ebp),%esi
1691         movl    -64(%ebp),%edi
1692         movl    -32(%ebp),%esi
1693         movl    (%ebp),%edi
1694         movl    32(%ebp),%esi
1695         movl    64(%ebp),%edi
1696         movl    96(%ebp),%esi
1697         leal    -128(%ebp),%ebp
1698         movl    %eax,%esi
1699         andl    $255,%esi
1700         movzbl  (%ebp,%esi,1),%esi
1701         movzbl  %dh,%edi
1702         movzbl  (%ebp,%edi,1),%edi
1703         shll    $8,%edi
1704         xorl    %edi,%esi
1705         movl    %ecx,%edi
1706         shrl    $16,%edi
1707         andl    $255,%edi
1708         movzbl  (%ebp,%edi,1),%edi
1709         shll    $16,%edi
1710         xorl    %edi,%esi
1711         movl    %ebx,%edi
1712         shrl    $24,%edi
1713         movzbl  (%ebp,%edi,1),%edi
1714         shll    $24,%edi
1715         xorl    %edi,%esi
1716         movl    %esi,4(%esp)
1717         movl    %ebx,%esi
1718         andl    $255,%esi
1719         movzbl  (%ebp,%esi,1),%esi
1720         movzbl  %ah,%edi
1721         movzbl  (%ebp,%edi,1),%edi
1722         shll    $8,%edi
1723         xorl    %edi,%esi
1724         movl    %edx,%edi
1725         shrl    $16,%edi
1726         andl    $255,%edi
1727         movzbl  (%ebp,%edi,1),%edi
1728         shll    $16,%edi
1729         xorl    %edi,%esi
1730         movl    %ecx,%edi
1731         shrl    $24,%edi
1732         movzbl  (%ebp,%edi,1),%edi
1733         shll    $24,%edi
1734         xorl    %edi,%esi
1735         movl    %esi,8(%esp)
1736         movl    %ecx,%esi
1737         andl    $255,%esi
1738         movzbl  (%ebp,%esi,1),%esi
1739         movzbl  %bh,%edi
1740         movzbl  (%ebp,%edi,1),%edi
1741         shll    $8,%edi
1742         xorl    %edi,%esi
1743         movl    %eax,%edi
1744         shrl    $16,%edi
1745         andl    $255,%edi
1746         movzbl  (%ebp,%edi,1),%edi
1747         shll    $16,%edi
1748         xorl    %edi,%esi
1749         movl    %edx,%edi
1750         shrl    $24,%edi
1751         movzbl  (%ebp,%edi,1),%edi
1752         shll    $24,%edi
1753         xorl    %edi,%esi
1754         movl    20(%esp),%edi
1755         andl    $255,%edx
1756         movzbl  (%ebp,%edx,1),%edx
1757         movzbl  %ch,%ecx
1758         movzbl  (%ebp,%ecx,1),%ecx
1759         shll    $8,%ecx
1760         xorl    %ecx,%edx
1761         movl    %esi,%ecx
1762         shrl    $16,%ebx
1763         andl    $255,%ebx
1764         movzbl  (%ebp,%ebx,1),%ebx
1765         shll    $16,%ebx
1766         xorl    %ebx,%edx
1767         movl    8(%esp),%ebx
1768         shrl    $24,%eax
1769         movzbl  (%ebp,%eax,1),%eax
1770         shll    $24,%eax
1771         xorl    %eax,%edx
1772         movl    4(%esp),%eax
1773         leal    -2048(%ebp),%ebp
1774         addl    $16,%edi
1775         xorl    (%edi),%eax
1776         xorl    4(%edi),%ebx
1777         xorl    8(%edi),%ecx
1778         xorl    12(%edi),%edx
1779         ret
1780 .align  64
1781 .LAES_Td:
1782 .long   1353184337,1353184337
1783 .long   1399144830,1399144830
1784 .long   3282310938,3282310938
1785 .long   2522752826,2522752826
1786 .long   3412831035,3412831035
1787 .long   4047871263,4047871263
1788 .long   2874735276,2874735276
1789 .long   2466505547,2466505547
1790 .long   1442459680,1442459680
1791 .long   4134368941,4134368941
1792 .long   2440481928,2440481928
1793 .long   625738485,625738485
1794 .long   4242007375,4242007375
1795 .long   3620416197,3620416197
1796 .long   2151953702,2151953702
1797 .long   2409849525,2409849525
1798 .long   1230680542,1230680542
1799 .long   1729870373,1729870373
1800 .long   2551114309,2551114309
1801 .long   3787521629,3787521629
1802 .long   41234371,41234371
1803 .long   317738113,317738113
1804 .long   2744600205,2744600205
1805 .long   3338261355,3338261355
1806 .long   3881799427,3881799427
1807 .long   2510066197,2510066197
1808 .long   3950669247,3950669247
1809 .long   3663286933,3663286933
1810 .long   763608788,763608788
1811 .long   3542185048,3542185048
1812 .long   694804553,694804553
1813 .long   1154009486,1154009486
1814 .long   1787413109,1787413109
1815 .long   2021232372,2021232372
1816 .long   1799248025,1799248025
1817 .long   3715217703,3715217703
1818 .long   3058688446,3058688446
1819 .long   397248752,397248752
1820 .long   1722556617,1722556617
1821 .long   3023752829,3023752829
1822 .long   407560035,407560035
1823 .long   2184256229,2184256229
1824 .long   1613975959,1613975959
1825 .long   1165972322,1165972322
1826 .long   3765920945,3765920945
1827 .long   2226023355,2226023355
1828 .long   480281086,480281086
1829 .long   2485848313,2485848313
1830 .long   1483229296,1483229296
1831 .long   436028815,436028815
1832 .long   2272059028,2272059028
1833 .long   3086515026,3086515026
1834 .long   601060267,601060267
1835 .long   3791801202,3791801202
1836 .long   1468997603,1468997603
1837 .long   715871590,715871590
1838 .long   120122290,120122290
1839 .long   63092015,63092015
1840 .long   2591802758,2591802758
1841 .long   2768779219,2768779219
1842 .long   4068943920,4068943920
1843 .long   2997206819,2997206819
1844 .long   3127509762,3127509762
1845 .long   1552029421,1552029421
1846 .long   723308426,723308426
1847 .long   2461301159,2461301159
1848 .long   4042393587,4042393587
1849 .long   2715969870,2715969870
1850 .long   3455375973,3455375973
1851 .long   3586000134,3586000134
1852 .long   526529745,526529745
1853 .long   2331944644,2331944644
1854 .long   2639474228,2639474228
1855 .long   2689987490,2689987490
1856 .long   853641733,853641733
1857 .long   1978398372,1978398372
1858 .long   971801355,971801355
1859 .long   2867814464,2867814464
1860 .long   111112542,111112542
1861 .long   1360031421,1360031421
1862 .long   4186579262,4186579262
1863 .long   1023860118,1023860118
1864 .long   2919579357,2919579357
1865 .long   1186850381,1186850381
1866 .long   3045938321,3045938321
1867 .long   90031217,90031217
1868 .long   1876166148,1876166148
1869 .long   4279586912,4279586912
1870 .long   620468249,620468249
1871 .long   2548678102,2548678102
1872 .long   3426959497,3426959497
1873 .long   2006899047,2006899047
1874 .long   3175278768,3175278768
1875 .long   2290845959,2290845959
1876 .long   945494503,945494503
1877 .long   3689859193,3689859193
1878 .long   1191869601,1191869601
1879 .long   3910091388,3910091388
1880 .long   3374220536,3374220536
1881 .long   0,0
1882 .long   2206629897,2206629897
1883 .long   1223502642,1223502642
1884 .long   2893025566,2893025566
1885 .long   1316117100,1316117100
1886 .long   4227796733,4227796733
1887 .long   1446544655,1446544655
1888 .long   517320253,517320253
1889 .long   658058550,658058550
1890 .long   1691946762,1691946762
1891 .long   564550760,564550760
1892 .long   3511966619,3511966619
1893 .long   976107044,976107044
1894 .long   2976320012,2976320012
1895 .long   266819475,266819475
1896 .long   3533106868,3533106868
1897 .long   2660342555,2660342555
1898 .long   1338359936,1338359936
1899 .long   2720062561,2720062561
1900 .long   1766553434,1766553434
1901 .long   370807324,370807324
1902 .long   179999714,179999714
1903 .long   3844776128,3844776128
1904 .long   1138762300,1138762300
1905 .long   488053522,488053522
1906 .long   185403662,185403662
1907 .long   2915535858,2915535858
1908 .long   3114841645,3114841645
1909 .long   3366526484,3366526484
1910 .long   2233069911,2233069911
1911 .long   1275557295,1275557295
1912 .long   3151862254,3151862254
1913 .long   4250959779,4250959779
1914 .long   2670068215,2670068215
1915 .long   3170202204,3170202204
1916 .long   3309004356,3309004356
1917 .long   880737115,880737115
1918 .long   1982415755,1982415755
1919 .long   3703972811,3703972811
1920 .long   1761406390,1761406390
1921 .long   1676797112,1676797112
1922 .long   3403428311,3403428311
1923 .long   277177154,277177154
1924 .long   1076008723,1076008723
1925 .long   538035844,538035844
1926 .long   2099530373,2099530373
1927 .long   4164795346,4164795346
1928 .long   288553390,288553390
1929 .long   1839278535,1839278535
1930 .long   1261411869,1261411869
1931 .long   4080055004,4080055004
1932 .long   3964831245,3964831245
1933 .long   3504587127,3504587127
1934 .long   1813426987,1813426987
1935 .long   2579067049,2579067049
1936 .long   4199060497,4199060497
1937 .long   577038663,577038663
1938 .long   3297574056,3297574056
1939 .long   440397984,440397984
1940 .long   3626794326,3626794326
1941 .long   4019204898,4019204898
1942 .long   3343796615,3343796615
1943 .long   3251714265,3251714265
1944 .long   4272081548,4272081548
1945 .long   906744984,906744984
1946 .long   3481400742,3481400742
1947 .long   685669029,685669029
1948 .long   646887386,646887386
1949 .long   2764025151,2764025151
1950 .long   3835509292,3835509292
1951 .long   227702864,227702864
1952 .long   2613862250,2613862250
1953 .long   1648787028,1648787028
1954 .long   3256061430,3256061430
1955 .long   3904428176,3904428176
1956 .long   1593260334,1593260334
1957 .long   4121936770,4121936770
1958 .long   3196083615,3196083615
1959 .long   2090061929,2090061929
1960 .long   2838353263,2838353263
1961 .long   3004310991,3004310991
1962 .long   999926984,999926984
1963 .long   2809993232,2809993232
1964 .long   1852021992,1852021992
1965 .long   2075868123,2075868123
1966 .long   158869197,158869197
1967 .long   4095236462,4095236462
1968 .long   28809964,28809964
1969 .long   2828685187,2828685187
1970 .long   1701746150,1701746150
1971 .long   2129067946,2129067946
1972 .long   147831841,147831841
1973 .long   3873969647,3873969647
1974 .long   3650873274,3650873274
1975 .long   3459673930,3459673930
1976 .long   3557400554,3557400554
1977 .long   3598495785,3598495785
1978 .long   2947720241,2947720241
1979 .long   824393514,824393514
1980 .long   815048134,815048134
1981 .long   3227951669,3227951669
1982 .long   935087732,935087732
1983 .long   2798289660,2798289660
1984 .long   2966458592,2966458592
1985 .long   366520115,366520115
1986 .long   1251476721,1251476721
1987 .long   4158319681,4158319681
1988 .long   240176511,240176511
1989 .long   804688151,804688151
1990 .long   2379631990,2379631990
1991 .long   1303441219,1303441219
1992 .long   1414376140,1414376140
1993 .long   3741619940,3741619940
1994 .long   3820343710,3820343710
1995 .long   461924940,461924940
1996 .long   3089050817,3089050817
1997 .long   2136040774,2136040774
1998 .long   82468509,82468509
1999 .long   1563790337,1563790337
2000 .long   1937016826,1937016826
2001 .long   776014843,776014843
2002 .long   1511876531,1511876531
2003 .long   1389550482,1389550482
2004 .long   861278441,861278441
2005 .long   323475053,323475053
2006 .long   2355222426,2355222426
2007 .long   2047648055,2047648055
2008 .long   2383738969,2383738969
2009 .long   2302415851,2302415851
2010 .long   3995576782,3995576782
2011 .long   902390199,902390199
2012 .long   3991215329,3991215329
2013 .long   1018251130,1018251130
2014 .long   1507840668,1507840668
2015 .long   1064563285,1064563285
2016 .long   2043548696,2043548696
2017 .long   3208103795,3208103795
2018 .long   3939366739,3939366739
2019 .long   1537932639,1537932639
2020 .long   342834655,342834655
2021 .long   2262516856,2262516856
2022 .long   2180231114,2180231114
2023 .long   1053059257,1053059257
2024 .long   741614648,741614648
2025 .long   1598071746,1598071746
2026 .long   1925389590,1925389590
2027 .long   203809468,203809468
2028 .long   2336832552,2336832552
2029 .long   1100287487,1100287487
2030 .long   1895934009,1895934009
2031 .long   3736275976,3736275976
2032 .long   2632234200,2632234200
2033 .long   2428589668,2428589668
2034 .long   1636092795,1636092795
2035 .long   1890988757,1890988757
2036 .long   1952214088,1952214088
2037 .long   1113045200,1113045200
2038 .byte   82,9,106,213,48,54,165,56
2039 .byte   191,64,163,158,129,243,215,251
2040 .byte   124,227,57,130,155,47,255,135
2041 .byte   52,142,67,68,196,222,233,203
2042 .byte   84,123,148,50,166,194,35,61
2043 .byte   238,76,149,11,66,250,195,78
2044 .byte   8,46,161,102,40,217,36,178
2045 .byte   118,91,162,73,109,139,209,37
2046 .byte   114,248,246,100,134,104,152,22
2047 .byte   212,164,92,204,93,101,182,146
2048 .byte   108,112,72,80,253,237,185,218
2049 .byte   94,21,70,87,167,141,157,132
2050 .byte   144,216,171,0,140,188,211,10
2051 .byte   247,228,88,5,184,179,69,6
2052 .byte   208,44,30,143,202,63,15,2
2053 .byte   193,175,189,3,1,19,138,107
2054 .byte   58,145,17,65,79,103,220,234
2055 .byte   151,242,207,206,240,180,230,115
2056 .byte   150,172,116,34,231,173,53,133
2057 .byte   226,249,55,232,28,117,223,110
2058 .byte   71,241,26,113,29,41,197,137
2059 .byte   111,183,98,14,170,24,190,27
2060 .byte   252,86,62,75,198,210,121,32
2061 .byte   154,219,192,254,120,205,90,244
2062 .byte   31,221,168,51,136,7,199,49
2063 .byte   177,18,16,89,39,128,236,95
2064 .byte   96,81,127,169,25,181,74,13
2065 .byte   45,229,122,159,147,201,156,239
2066 .byte   160,224,59,77,174,42,245,176
2067 .byte   200,235,187,60,131,83,153,97
2068 .byte   23,43,4,126,186,119,214,38
2069 .byte   225,105,20,99,85,33,12,125
2070 .byte   82,9,106,213,48,54,165,56
2071 .byte   191,64,163,158,129,243,215,251
2072 .byte   124,227,57,130,155,47,255,135
2073 .byte   52,142,67,68,196,222,233,203
2074 .byte   84,123,148,50,166,194,35,61
2075 .byte   238,76,149,11,66,250,195,78
2076 .byte   8,46,161,102,40,217,36,178
2077 .byte   118,91,162,73,109,139,209,37
2078 .byte   114,248,246,100,134,104,152,22
2079 .byte   212,164,92,204,93,101,182,146
2080 .byte   108,112,72,80,253,237,185,218
2081 .byte   94,21,70,87,167,141,157,132
2082 .byte   144,216,171,0,140,188,211,10
2083 .byte   247,228,88,5,184,179,69,6
2084 .byte   208,44,30,143,202,63,15,2
2085 .byte   193,175,189,3,1,19,138,107
2086 .byte   58,145,17,65,79,103,220,234
2087 .byte   151,242,207,206,240,180,230,115
2088 .byte   150,172,116,34,231,173,53,133
2089 .byte   226,249,55,232,28,117,223,110
2090 .byte   71,241,26,113,29,41,197,137
2091 .byte   111,183,98,14,170,24,190,27
2092 .byte   252,86,62,75,198,210,121,32
2093 .byte   154,219,192,254,120,205,90,244
2094 .byte   31,221,168,51,136,7,199,49
2095 .byte   177,18,16,89,39,128,236,95
2096 .byte   96,81,127,169,25,181,74,13
2097 .byte   45,229,122,159,147,201,156,239
2098 .byte   160,224,59,77,174,42,245,176
2099 .byte   200,235,187,60,131,83,153,97
2100 .byte   23,43,4,126,186,119,214,38
2101 .byte   225,105,20,99,85,33,12,125
2102 .byte   82,9,106,213,48,54,165,56
2103 .byte   191,64,163,158,129,243,215,251
2104 .byte   124,227,57,130,155,47,255,135
2105 .byte   52,142,67,68,196,222,233,203
2106 .byte   84,123,148,50,166,194,35,61
2107 .byte   238,76,149,11,66,250,195,78
2108 .byte   8,46,161,102,40,217,36,178
2109 .byte   118,91,162,73,109,139,209,37
2110 .byte   114,248,246,100,134,104,152,22
2111 .byte   212,164,92,204,93,101,182,146
2112 .byte   108,112,72,80,253,237,185,218
2113 .byte   94,21,70,87,167,141,157,132
2114 .byte   144,216,171,0,140,188,211,10
2115 .byte   247,228,88,5,184,179,69,6
2116 .byte   208,44,30,143,202,63,15,2
2117 .byte   193,175,189,3,1,19,138,107
2118 .byte   58,145,17,65,79,103,220,234
2119 .byte   151,242,207,206,240,180,230,115
2120 .byte   150,172,116,34,231,173,53,133
2121 .byte   226,249,55,232,28,117,223,110
2122 .byte   71,241,26,113,29,41,197,137
2123 .byte   111,183,98,14,170,24,190,27
2124 .byte   252,86,62,75,198,210,121,32
2125 .byte   154,219,192,254,120,205,90,244
2126 .byte   31,221,168,51,136,7,199,49
2127 .byte   177,18,16,89,39,128,236,95
2128 .byte   96,81,127,169,25,181,74,13
2129 .byte   45,229,122,159,147,201,156,239
2130 .byte   160,224,59,77,174,42,245,176
2131 .byte   200,235,187,60,131,83,153,97
2132 .byte   23,43,4,126,186,119,214,38
2133 .byte   225,105,20,99,85,33,12,125
2134 .byte   82,9,106,213,48,54,165,56
2135 .byte   191,64,163,158,129,243,215,251
2136 .byte   124,227,57,130,155,47,255,135
2137 .byte   52,142,67,68,196,222,233,203
2138 .byte   84,123,148,50,166,194,35,61
2139 .byte   238,76,149,11,66,250,195,78
2140 .byte   8,46,161,102,40,217,36,178
2141 .byte   118,91,162,73,109,139,209,37
2142 .byte   114,248,246,100,134,104,152,22
2143 .byte   212,164,92,204,93,101,182,146
2144 .byte   108,112,72,80,253,237,185,218
2145 .byte   94,21,70,87,167,141,157,132
2146 .byte   144,216,171,0,140,188,211,10
2147 .byte   247,228,88,5,184,179,69,6
2148 .byte   208,44,30,143,202,63,15,2
2149 .byte   193,175,189,3,1,19,138,107
2150 .byte   58,145,17,65,79,103,220,234
2151 .byte   151,242,207,206,240,180,230,115
2152 .byte   150,172,116,34,231,173,53,133
2153 .byte   226,249,55,232,28,117,223,110
2154 .byte   71,241,26,113,29,41,197,137
2155 .byte   111,183,98,14,170,24,190,27
2156 .byte   252,86,62,75,198,210,121,32
2157 .byte   154,219,192,254,120,205,90,244
2158 .byte   31,221,168,51,136,7,199,49
2159 .byte   177,18,16,89,39,128,236,95
2160 .byte   96,81,127,169,25,181,74,13
2161 .byte   45,229,122,159,147,201,156,239
2162 .byte   160,224,59,77,174,42,245,176
2163 .byte   200,235,187,60,131,83,153,97
2164 .byte   23,43,4,126,186,119,214,38
2165 .byte   225,105,20,99,85,33,12,125
2166 .size   _x86_AES_decrypt,.-_x86_AES_decrypt
2167 .globl  AES_decrypt
2168 .type   AES_decrypt,@function
2169 .align  16
2170 AES_decrypt:
2171 .L_AES_decrypt_begin:
2172         pushl   %ebp
2173         pushl   %ebx
2174         pushl   %esi
2175         pushl   %edi
2176         movl    20(%esp),%esi
2177         movl    28(%esp),%edi
2178         movl    %esp,%eax
2179         subl    $36,%esp
2180         andl    $-64,%esp
2181         leal    -127(%edi),%ebx
2182         subl    %esp,%ebx
2183         negl    %ebx
2184         andl    $960,%ebx
2185         subl    %ebx,%esp
2186         addl    $4,%esp
2187         movl    %eax,28(%esp)
2188         call    .L010pic_point
2189 .L010pic_point:
2190         popl    %ebp
2191         leal    _GLOBAL_OFFSET_TABLE_+[.-.L010pic_point](%ebp),%eax
2192         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
2193         leal    .LAES_Td-.L010pic_point(%ebp),%ebp
2194         leal    764(%esp),%ebx
2195         subl    %ebp,%ebx
2196         andl    $768,%ebx
2197         leal    2176(%ebp,%ebx,1),%ebp
2198         btl     $25,(%eax)
2199         jnc     .L011x86
2200         movq    (%esi),%mm0
2201         movq    8(%esi),%mm4
2202         call    _sse_AES_decrypt_compact
2203         movl    28(%esp),%esp
2204         movl    24(%esp),%esi
2205         movq    %mm0,(%esi)
2206         movq    %mm4,8(%esi)
2207         emms
2208         popl    %edi
2209         popl    %esi
2210         popl    %ebx
2211         popl    %ebp
2212         ret
2213 .align  16
2214 .L011x86:
2215         movl    %ebp,24(%esp)
2216         movl    (%esi),%eax
2217         movl    4(%esi),%ebx
2218         movl    8(%esi),%ecx
2219         movl    12(%esi),%edx
2220         call    _x86_AES_decrypt_compact
2221         movl    28(%esp),%esp
2222         movl    24(%esp),%esi
2223         movl    %eax,(%esi)
2224         movl    %ebx,4(%esi)
2225         movl    %ecx,8(%esi)
2226         movl    %edx,12(%esi)
2227         popl    %edi
2228         popl    %esi
2229         popl    %ebx
2230         popl    %ebp
2231         ret
2232 .size   AES_decrypt,.-.L_AES_decrypt_begin
2233 .globl  AES_cbc_encrypt
2234 .type   AES_cbc_encrypt,@function
2235 .align  16
2236 AES_cbc_encrypt:
2237 .L_AES_cbc_encrypt_begin:
2238         pushl   %ebp
2239         pushl   %ebx
2240         pushl   %esi
2241         pushl   %edi
2242         movl    28(%esp),%ecx
2243         cmpl    $0,%ecx
2244         je      .L012drop_out
2245         call    .L013pic_point
2246 .L013pic_point:
2247         popl    %ebp
2248         leal    _GLOBAL_OFFSET_TABLE_+[.-.L013pic_point](%ebp),%eax
2249         movl    OPENSSL_ia32cap_P@GOT(%eax),%eax
2250         cmpl    $0,40(%esp)
2251         leal    .LAES_Te-.L013pic_point(%ebp),%ebp
2252         jne     .L014picked_te
2253         leal    .LAES_Td-.LAES_Te(%ebp),%ebp
2254 .L014picked_te:
2255         pushfl
2256         cld
2257         cmpl    $512,%ecx
2258         jb      .L015slow_way
2259         testl   $15,%ecx
2260         jnz     .L015slow_way
2261         btl     $28,(%eax)
2262         jc      .L015slow_way
2263         leal    -324(%esp),%esi
2264         andl    $-64,%esi
2265         movl    %ebp,%eax
2266         leal    2304(%ebp),%ebx
2267         movl    %esi,%edx
2268         andl    $4095,%eax
2269         andl    $4095,%ebx
2270         andl    $4095,%edx
2271         cmpl    %ebx,%edx
2272         jb      .L016tbl_break_out
2273         subl    %ebx,%edx
2274         subl    %edx,%esi
2275         jmp     .L017tbl_ok
2276 .align  4
2277 .L016tbl_break_out:
2278         subl    %eax,%edx
2279         andl    $4095,%edx
2280         addl    $384,%edx
2281         subl    %edx,%esi
2282 .align  4
2283 .L017tbl_ok:
2284         leal    24(%esp),%edx
2285         xchgl   %esi,%esp
2286         addl    $4,%esp
2287         movl    %ebp,24(%esp)
2288         movl    %esi,28(%esp)
2289         movl    (%edx),%eax
2290         movl    4(%edx),%ebx
2291         movl    12(%edx),%edi
2292         movl    16(%edx),%esi
2293         movl    20(%edx),%edx
2294         movl    %eax,32(%esp)
2295         movl    %ebx,36(%esp)
2296         movl    %ecx,40(%esp)
2297         movl    %edi,44(%esp)
2298         movl    %esi,48(%esp)
2299         movl    $0,316(%esp)
2300         movl    %edi,%ebx
2301         movl    $61,%ecx
2302         subl    %ebp,%ebx
2303         movl    %edi,%esi
2304         andl    $4095,%ebx
2305         leal    76(%esp),%edi
2306         cmpl    $2304,%ebx
2307         jb      .L018do_copy
2308         cmpl    $3852,%ebx
2309         jb      .L019skip_copy
2310 .align  4
2311 .L018do_copy:
2312         movl    %edi,44(%esp)
2313 .long   2784229001
2314 .L019skip_copy:
2315         movl    $16,%edi
2316 .align  4
2317 .L020prefetch_tbl:
2318         movl    (%ebp),%eax
2319         movl    32(%ebp),%ebx
2320         movl    64(%ebp),%ecx
2321         movl    96(%ebp),%esi
2322         leal    128(%ebp),%ebp
2323         subl    $1,%edi
2324         jnz     .L020prefetch_tbl
2325         subl    $2048,%ebp
2326         movl    32(%esp),%esi
2327         movl    48(%esp),%edi
2328         cmpl    $0,%edx
2329         je      .L021fast_decrypt
2330         movl    (%edi),%eax
2331         movl    4(%edi),%ebx
2332 .align  16
2333 .L022fast_enc_loop:
2334         movl    8(%edi),%ecx
2335         movl    12(%edi),%edx
2336         xorl    (%esi),%eax
2337         xorl    4(%esi),%ebx
2338         xorl    8(%esi),%ecx
2339         xorl    12(%esi),%edx
2340         movl    44(%esp),%edi
2341         call    _x86_AES_encrypt
2342         movl    32(%esp),%esi
2343         movl    36(%esp),%edi
2344         movl    %eax,(%edi)
2345         movl    %ebx,4(%edi)
2346         movl    %ecx,8(%edi)
2347         movl    %edx,12(%edi)
2348         leal    16(%esi),%esi
2349         movl    40(%esp),%ecx
2350         movl    %esi,32(%esp)
2351         leal    16(%edi),%edx
2352         movl    %edx,36(%esp)
2353         subl    $16,%ecx
2354         movl    %ecx,40(%esp)
2355         jnz     .L022fast_enc_loop
2356         movl    48(%esp),%esi
2357         movl    8(%edi),%ecx
2358         movl    12(%edi),%edx
2359         movl    %eax,(%esi)
2360         movl    %ebx,4(%esi)
2361         movl    %ecx,8(%esi)
2362         movl    %edx,12(%esi)
2363         cmpl    $0,316(%esp)
2364         movl    44(%esp),%edi
2365         je      .L023skip_ezero
2366         movl    $60,%ecx
2367         xorl    %eax,%eax
2368 .align  4
2369 .long   2884892297
2370 .L023skip_ezero:
2371         movl    28(%esp),%esp
2372         popfl
2373 .L012drop_out:
2374         popl    %edi
2375         popl    %esi
2376         popl    %ebx
2377         popl    %ebp
2378         ret
2379         pushfl
2380 .align  16
2381 .L021fast_decrypt:
2382         cmpl    36(%esp),%esi
2383         je      .L024fast_dec_in_place
2384         movl    %edi,52(%esp)
2385 .align  4
2386 .align  16
2387 .L025fast_dec_loop:
2388         movl    (%esi),%eax
2389         movl    4(%esi),%ebx
2390         movl    8(%esi),%ecx
2391         movl    12(%esi),%edx
2392         movl    44(%esp),%edi
2393         call    _x86_AES_decrypt
2394         movl    52(%esp),%edi
2395         movl    40(%esp),%esi
2396         xorl    (%edi),%eax
2397         xorl    4(%edi),%ebx
2398         xorl    8(%edi),%ecx
2399         xorl    12(%edi),%edx
2400         movl    36(%esp),%edi
2401         movl    32(%esp),%esi
2402         movl    %eax,(%edi)
2403         movl    %ebx,4(%edi)
2404         movl    %ecx,8(%edi)
2405         movl    %edx,12(%edi)
2406         movl    40(%esp),%ecx
2407         movl    %esi,52(%esp)
2408         leal    16(%esi),%esi
2409         movl    %esi,32(%esp)
2410         leal    16(%edi),%edi
2411         movl    %edi,36(%esp)
2412         subl    $16,%ecx
2413         movl    %ecx,40(%esp)
2414         jnz     .L025fast_dec_loop
2415         movl    52(%esp),%edi
2416         movl    48(%esp),%esi
2417         movl    (%edi),%eax
2418         movl    4(%edi),%ebx
2419         movl    8(%edi),%ecx
2420         movl    12(%edi),%edx
2421         movl    %eax,(%esi)
2422         movl    %ebx,4(%esi)
2423         movl    %ecx,8(%esi)
2424         movl    %edx,12(%esi)
2425         jmp     .L026fast_dec_out
2426 .align  16
2427 .L024fast_dec_in_place:
2428 .L027fast_dec_in_place_loop:
2429         movl    (%esi),%eax
2430         movl    4(%esi),%ebx
2431         movl    8(%esi),%ecx
2432         movl    12(%esi),%edx
2433         leal    60(%esp),%edi
2434         movl    %eax,(%edi)
2435         movl    %ebx,4(%edi)
2436         movl    %ecx,8(%edi)
2437         movl    %edx,12(%edi)
2438         movl    44(%esp),%edi
2439         call    _x86_AES_decrypt
2440         movl    48(%esp),%edi
2441         movl    36(%esp),%esi
2442         xorl    (%edi),%eax
2443         xorl    4(%edi),%ebx
2444         xorl    8(%edi),%ecx
2445         xorl    12(%edi),%edx
2446         movl    %eax,(%esi)
2447         movl    %ebx,4(%esi)
2448         movl    %ecx,8(%esi)
2449         movl    %edx,12(%esi)
2450         leal    16(%esi),%esi
2451         movl    %esi,36(%esp)
2452         leal    60(%esp),%esi
2453         movl    (%esi),%eax
2454         movl    4(%esi),%ebx
2455         movl    8(%esi),%ecx
2456         movl    12(%esi),%edx
2457         movl    %eax,(%edi)
2458         movl    %ebx,4(%edi)
2459         movl    %ecx,8(%edi)
2460         movl    %edx,12(%edi)
2461         movl    32(%esp),%esi
2462         movl    40(%esp),%ecx
2463         leal    16(%esi),%esi
2464         movl    %esi,32(%esp)
2465         subl    $16,%ecx
2466         movl    %ecx,40(%esp)
2467         jnz     .L027fast_dec_in_place_loop
2468 .align  4
2469 .L026fast_dec_out:
2470         cmpl    $0,316(%esp)
2471         movl    44(%esp),%edi
2472         je      .L028skip_dzero
2473         movl    $60,%ecx
2474         xorl    %eax,%eax
2475 .align  4
2476 .long   2884892297
2477 .L028skip_dzero:
2478         movl    28(%esp),%esp
2479         popfl
2480         popl    %edi
2481         popl    %esi
2482         popl    %ebx
2483         popl    %ebp
2484         ret
2485         pushfl
2486 .align  16
2487 .L015slow_way:
2488         movl    (%eax),%eax
2489         movl    36(%esp),%edi
2490         leal    -80(%esp),%esi
2491         andl    $-64,%esi
2492         leal    -143(%edi),%ebx
2493         subl    %esi,%ebx
2494         negl    %ebx
2495         andl    $960,%ebx
2496         subl    %ebx,%esi
2497         leal    768(%esi),%ebx
2498         subl    %ebp,%ebx
2499         andl    $768,%ebx
2500         leal    2176(%ebp,%ebx,1),%ebp
2501         leal    24(%esp),%edx
2502         xchgl   %esi,%esp
2503         addl    $4,%esp
2504         movl    %ebp,24(%esp)
2505         movl    %esi,28(%esp)
2506         movl    %eax,52(%esp)
2507         movl    (%edx),%eax
2508         movl    4(%edx),%ebx
2509         movl    16(%edx),%esi
2510         movl    20(%edx),%edx
2511         movl    %eax,32(%esp)
2512         movl    %ebx,36(%esp)
2513         movl    %ecx,40(%esp)
2514         movl    %edi,44(%esp)
2515         movl    %esi,48(%esp)
2516         movl    %esi,%edi
2517         movl    %eax,%esi
2518         cmpl    $0,%edx
2519         je      .L029slow_decrypt
2520         cmpl    $16,%ecx
2521         movl    %ebx,%edx
2522         jb      .L030slow_enc_tail
2523         btl     $25,52(%esp)
2524         jnc     .L031slow_enc_x86
2525         movq    (%edi),%mm0
2526         movq    8(%edi),%mm4
2527 .align  16
2528 .L032slow_enc_loop_sse:
2529         pxor    (%esi),%mm0
2530         pxor    8(%esi),%mm4
2531         movl    44(%esp),%edi
2532         call    _sse_AES_encrypt_compact
2533         movl    32(%esp),%esi
2534         movl    36(%esp),%edi
2535         movl    40(%esp),%ecx
2536         movq    %mm0,(%edi)
2537         movq    %mm4,8(%edi)
2538         leal    16(%esi),%esi
2539         movl    %esi,32(%esp)
2540         leal    16(%edi),%edx
2541         movl    %edx,36(%esp)
2542         subl    $16,%ecx
2543         cmpl    $16,%ecx
2544         movl    %ecx,40(%esp)
2545         jae     .L032slow_enc_loop_sse
2546         testl   $15,%ecx
2547         jnz     .L030slow_enc_tail
2548         movl    48(%esp),%esi
2549         movq    %mm0,(%esi)
2550         movq    %mm4,8(%esi)
2551         emms
2552         movl    28(%esp),%esp
2553         popfl
2554         popl    %edi
2555         popl    %esi
2556         popl    %ebx
2557         popl    %ebp
2558         ret
2559         pushfl
2560 .align  16
2561 .L031slow_enc_x86:
2562         movl    (%edi),%eax
2563         movl    4(%edi),%ebx
2564 .align  4
2565 .L033slow_enc_loop_x86:
2566         movl    8(%edi),%ecx
2567         movl    12(%edi),%edx
2568         xorl    (%esi),%eax
2569         xorl    4(%esi),%ebx
2570         xorl    8(%esi),%ecx
2571         xorl    12(%esi),%edx
2572         movl    44(%esp),%edi
2573         call    _x86_AES_encrypt_compact
2574         movl    32(%esp),%esi
2575         movl    36(%esp),%edi
2576         movl    %eax,(%edi)
2577         movl    %ebx,4(%edi)
2578         movl    %ecx,8(%edi)
2579         movl    %edx,12(%edi)
2580         movl    40(%esp),%ecx
2581         leal    16(%esi),%esi
2582         movl    %esi,32(%esp)
2583         leal    16(%edi),%edx
2584         movl    %edx,36(%esp)
2585         subl    $16,%ecx
2586         cmpl    $16,%ecx
2587         movl    %ecx,40(%esp)
2588         jae     .L033slow_enc_loop_x86
2589         testl   $15,%ecx
2590         jnz     .L030slow_enc_tail
2591         movl    48(%esp),%esi
2592         movl    8(%edi),%ecx
2593         movl    12(%edi),%edx
2594         movl    %eax,(%esi)
2595         movl    %ebx,4(%esi)
2596         movl    %ecx,8(%esi)
2597         movl    %edx,12(%esi)
2598         movl    28(%esp),%esp
2599         popfl
2600         popl    %edi
2601         popl    %esi
2602         popl    %ebx
2603         popl    %ebp
2604         ret
2605         pushfl
2606 .align  16
2607 .L030slow_enc_tail:
2608         emms
2609         movl    %edx,%edi
2610         movl    $16,%ebx
2611         subl    %ecx,%ebx
2612         cmpl    %esi,%edi
2613         je      .L034enc_in_place
2614 .align  4
2615 .long   2767451785
2616         jmp     .L035enc_skip_in_place
2617 .L034enc_in_place:
2618         leal    (%edi,%ecx,1),%edi
2619 .L035enc_skip_in_place:
2620         movl    %ebx,%ecx
2621         xorl    %eax,%eax
2622 .align  4
2623 .long   2868115081
2624         movl    48(%esp),%edi
2625         movl    %edx,%esi
2626         movl    (%edi),%eax
2627         movl    4(%edi),%ebx
2628         movl    $16,40(%esp)
2629         jmp     .L033slow_enc_loop_x86
2630 .align  16
2631 .L029slow_decrypt:
2632         btl     $25,52(%esp)
2633         jnc     .L036slow_dec_loop_x86
2634 .align  4
2635 .L037slow_dec_loop_sse:
2636         movq    (%esi),%mm0
2637         movq    8(%esi),%mm4
2638         movl    44(%esp),%edi
2639         call    _sse_AES_decrypt_compact
2640         movl    32(%esp),%esi
2641         leal    60(%esp),%eax
2642         movl    36(%esp),%ebx
2643         movl    40(%esp),%ecx
2644         movl    48(%esp),%edi
2645         movq    (%esi),%mm1
2646         movq    8(%esi),%mm5
2647         pxor    (%edi),%mm0
2648         pxor    8(%edi),%mm4
2649         movq    %mm1,(%edi)
2650         movq    %mm5,8(%edi)
2651         subl    $16,%ecx
2652         jc      .L038slow_dec_partial_sse
2653         movq    %mm0,(%ebx)
2654         movq    %mm4,8(%ebx)
2655         leal    16(%ebx),%ebx
2656         movl    %ebx,36(%esp)
2657         leal    16(%esi),%esi
2658         movl    %esi,32(%esp)
2659         movl    %ecx,40(%esp)
2660         jnz     .L037slow_dec_loop_sse
2661         emms
2662         movl    28(%esp),%esp
2663         popfl
2664         popl    %edi
2665         popl    %esi
2666         popl    %ebx
2667         popl    %ebp
2668         ret
2669         pushfl
2670 .align  16
2671 .L038slow_dec_partial_sse:
2672         movq    %mm0,(%eax)
2673         movq    %mm4,8(%eax)
2674         emms
2675         addl    $16,%ecx
2676         movl    %ebx,%edi
2677         movl    %eax,%esi
2678 .align  4
2679 .long   2767451785
2680         movl    28(%esp),%esp
2681         popfl
2682         popl    %edi
2683         popl    %esi
2684         popl    %ebx
2685         popl    %ebp
2686         ret
2687         pushfl
2688 .align  16
2689 .L036slow_dec_loop_x86:
2690         movl    (%esi),%eax
2691         movl    4(%esi),%ebx
2692         movl    8(%esi),%ecx
2693         movl    12(%esi),%edx
2694         leal    60(%esp),%edi
2695         movl    %eax,(%edi)
2696         movl    %ebx,4(%edi)
2697         movl    %ecx,8(%edi)
2698         movl    %edx,12(%edi)
2699         movl    44(%esp),%edi
2700         call    _x86_AES_decrypt_compact
2701         movl    48(%esp),%edi
2702         movl    40(%esp),%esi
2703         xorl    (%edi),%eax
2704         xorl    4(%edi),%ebx
2705         xorl    8(%edi),%ecx
2706         xorl    12(%edi),%edx
2707         subl    $16,%esi
2708         jc      .L039slow_dec_partial_x86
2709         movl    %esi,40(%esp)
2710         movl    36(%esp),%esi
2711         movl    %eax,(%esi)
2712         movl    %ebx,4(%esi)
2713         movl    %ecx,8(%esi)
2714         movl    %edx,12(%esi)
2715         leal    16(%esi),%esi
2716         movl    %esi,36(%esp)
2717         leal    60(%esp),%esi
2718         movl    (%esi),%eax
2719         movl    4(%esi),%ebx
2720         movl    8(%esi),%ecx
2721         movl    12(%esi),%edx
2722         movl    %eax,(%edi)
2723         movl    %ebx,4(%edi)
2724         movl    %ecx,8(%edi)
2725         movl    %edx,12(%edi)
2726         movl    32(%esp),%esi
2727         leal    16(%esi),%esi
2728         movl    %esi,32(%esp)
2729         jnz     .L036slow_dec_loop_x86
2730         movl    28(%esp),%esp
2731         popfl
2732         popl    %edi
2733         popl    %esi
2734         popl    %ebx
2735         popl    %ebp
2736         ret
2737         pushfl
2738 .align  16
2739 .L039slow_dec_partial_x86:
2740         leal    60(%esp),%esi
2741         movl    %eax,(%esi)
2742         movl    %ebx,4(%esi)
2743         movl    %ecx,8(%esi)
2744         movl    %edx,12(%esi)
2745         movl    32(%esp),%esi
2746         movl    (%esi),%eax
2747         movl    4(%esi),%ebx
2748         movl    8(%esi),%ecx
2749         movl    12(%esi),%edx
2750         movl    %eax,(%edi)
2751         movl    %ebx,4(%edi)
2752         movl    %ecx,8(%edi)
2753         movl    %edx,12(%edi)
2754         movl    40(%esp),%ecx
2755         movl    36(%esp),%edi
2756         leal    60(%esp),%esi
2757 .align  4
2758 .long   2767451785
2759         movl    28(%esp),%esp
2760         popfl
2761         popl    %edi
2762         popl    %esi
2763         popl    %ebx
2764         popl    %ebp
2765         ret
2766 .size   AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin
2767 .type   _x86_AES_set_encrypt_key,@function
2768 .align  16
2769 _x86_AES_set_encrypt_key:
2770         pushl   %ebp
2771         pushl   %ebx
2772         pushl   %esi
2773         pushl   %edi
2774         movl    24(%esp),%esi
2775         movl    32(%esp),%edi
2776         testl   $-1,%esi
2777         jz      .L040badpointer
2778         testl   $-1,%edi
2779         jz      .L040badpointer
2780         call    .L041pic_point
2781 .L041pic_point:
2782         popl    %ebp
2783         leal    .LAES_Te-.L041pic_point(%ebp),%ebp
2784         leal    2176(%ebp),%ebp
2785         movl    -128(%ebp),%eax
2786         movl    -96(%ebp),%ebx
2787         movl    -64(%ebp),%ecx
2788         movl    -32(%ebp),%edx
2789         movl    (%ebp),%eax
2790         movl    32(%ebp),%ebx
2791         movl    64(%ebp),%ecx
2792         movl    96(%ebp),%edx
2793         movl    28(%esp),%ecx
2794         cmpl    $128,%ecx
2795         je      .L04210rounds
2796         cmpl    $192,%ecx
2797         je      .L04312rounds
2798         cmpl    $256,%ecx
2799         je      .L04414rounds
2800         movl    $-2,%eax
2801         jmp     .L045exit
2802 .L04210rounds:
2803         movl    (%esi),%eax
2804         movl    4(%esi),%ebx
2805         movl    8(%esi),%ecx
2806         movl    12(%esi),%edx
2807         movl    %eax,(%edi)
2808         movl    %ebx,4(%edi)
2809         movl    %ecx,8(%edi)
2810         movl    %edx,12(%edi)
2811         xorl    %ecx,%ecx
2812         jmp     .L04610shortcut
2813 .align  4
2814 .L04710loop:
2815         movl    (%edi),%eax
2816         movl    12(%edi),%edx
2817 .L04610shortcut:
2818         movzbl  %dl,%esi
2819         movzbl  -128(%ebp,%esi,1),%ebx
2820         movzbl  %dh,%esi
2821         shll    $24,%ebx
2822         xorl    %ebx,%eax
2823         movzbl  -128(%ebp,%esi,1),%ebx
2824         shrl    $16,%edx
2825         movzbl  %dl,%esi
2826         xorl    %ebx,%eax
2827         movzbl  -128(%ebp,%esi,1),%ebx
2828         movzbl  %dh,%esi
2829         shll    $8,%ebx
2830         xorl    %ebx,%eax
2831         movzbl  -128(%ebp,%esi,1),%ebx
2832         shll    $16,%ebx
2833         xorl    %ebx,%eax
2834         xorl    896(%ebp,%ecx,4),%eax
2835         movl    %eax,16(%edi)
2836         xorl    4(%edi),%eax
2837         movl    %eax,20(%edi)
2838         xorl    8(%edi),%eax
2839         movl    %eax,24(%edi)
2840         xorl    12(%edi),%eax
2841         movl    %eax,28(%edi)
2842         incl    %ecx
2843         addl    $16,%edi
2844         cmpl    $10,%ecx
2845         jl      .L04710loop
2846         movl    $10,80(%edi)
2847         xorl    %eax,%eax
2848         jmp     .L045exit
2849 .L04312rounds:
2850         movl    (%esi),%eax
2851         movl    4(%esi),%ebx
2852         movl    8(%esi),%ecx
2853         movl    12(%esi),%edx
2854         movl    %eax,(%edi)
2855         movl    %ebx,4(%edi)
2856         movl    %ecx,8(%edi)
2857         movl    %edx,12(%edi)
2858         movl    16(%esi),%ecx
2859         movl    20(%esi),%edx
2860         movl    %ecx,16(%edi)
2861         movl    %edx,20(%edi)
2862         xorl    %ecx,%ecx
2863         jmp     .L04812shortcut
2864 .align  4
2865 .L04912loop:
2866         movl    (%edi),%eax
2867         movl    20(%edi),%edx
2868 .L04812shortcut:
2869         movzbl  %dl,%esi
2870         movzbl  -128(%ebp,%esi,1),%ebx
2871         movzbl  %dh,%esi
2872         shll    $24,%ebx
2873         xorl    %ebx,%eax
2874         movzbl  -128(%ebp,%esi,1),%ebx
2875         shrl    $16,%edx
2876         movzbl  %dl,%esi
2877         xorl    %ebx,%eax
2878         movzbl  -128(%ebp,%esi,1),%ebx
2879         movzbl  %dh,%esi
2880         shll    $8,%ebx
2881         xorl    %ebx,%eax
2882         movzbl  -128(%ebp,%esi,1),%ebx
2883         shll    $16,%ebx
2884         xorl    %ebx,%eax
2885         xorl    896(%ebp,%ecx,4),%eax
2886         movl    %eax,24(%edi)
2887         xorl    4(%edi),%eax
2888         movl    %eax,28(%edi)
2889         xorl    8(%edi),%eax
2890         movl    %eax,32(%edi)
2891         xorl    12(%edi),%eax
2892         movl    %eax,36(%edi)
2893         cmpl    $7,%ecx
2894         je      .L05012break
2895         incl    %ecx
2896         xorl    16(%edi),%eax
2897         movl    %eax,40(%edi)
2898         xorl    20(%edi),%eax
2899         movl    %eax,44(%edi)
2900         addl    $24,%edi
2901         jmp     .L04912loop
2902 .L05012break:
2903         movl    $12,72(%edi)
2904         xorl    %eax,%eax
2905         jmp     .L045exit
2906 .L04414rounds:
2907         movl    (%esi),%eax
2908         movl    4(%esi),%ebx
2909         movl    8(%esi),%ecx
2910         movl    12(%esi),%edx
2911         movl    %eax,(%edi)
2912         movl    %ebx,4(%edi)
2913         movl    %ecx,8(%edi)
2914         movl    %edx,12(%edi)
2915         movl    16(%esi),%eax
2916         movl    20(%esi),%ebx
2917         movl    24(%esi),%ecx
2918         movl    28(%esi),%edx
2919         movl    %eax,16(%edi)
2920         movl    %ebx,20(%edi)
2921         movl    %ecx,24(%edi)
2922         movl    %edx,28(%edi)
2923         xorl    %ecx,%ecx
2924         jmp     .L05114shortcut
2925 .align  4
2926 .L05214loop:
2927         movl    28(%edi),%edx
2928 .L05114shortcut:
2929         movl    (%edi),%eax
2930         movzbl  %dl,%esi
2931         movzbl  -128(%ebp,%esi,1),%ebx
2932         movzbl  %dh,%esi
2933         shll    $24,%ebx
2934         xorl    %ebx,%eax
2935         movzbl  -128(%ebp,%esi,1),%ebx
2936         shrl    $16,%edx
2937         movzbl  %dl,%esi
2938         xorl    %ebx,%eax
2939         movzbl  -128(%ebp,%esi,1),%ebx
2940         movzbl  %dh,%esi
2941         shll    $8,%ebx
2942         xorl    %ebx,%eax
2943         movzbl  -128(%ebp,%esi,1),%ebx
2944         shll    $16,%ebx
2945         xorl    %ebx,%eax
2946         xorl    896(%ebp,%ecx,4),%eax
2947         movl    %eax,32(%edi)
2948         xorl    4(%edi),%eax
2949         movl    %eax,36(%edi)
2950         xorl    8(%edi),%eax
2951         movl    %eax,40(%edi)
2952         xorl    12(%edi),%eax
2953         movl    %eax,44(%edi)
2954         cmpl    $6,%ecx
2955         je      .L05314break
2956         incl    %ecx
2957         movl    %eax,%edx
2958         movl    16(%edi),%eax
2959         movzbl  %dl,%esi
2960         movzbl  -128(%ebp,%esi,1),%ebx
2961         movzbl  %dh,%esi
2962         xorl    %ebx,%eax
2963         movzbl  -128(%ebp,%esi,1),%ebx
2964         shrl    $16,%edx
2965         shll    $8,%ebx
2966         movzbl  %dl,%esi
2967         xorl    %ebx,%eax
2968         movzbl  -128(%ebp,%esi,1),%ebx
2969         movzbl  %dh,%esi
2970         shll    $16,%ebx
2971         xorl    %ebx,%eax
2972         movzbl  -128(%ebp,%esi,1),%ebx
2973         shll    $24,%ebx
2974         xorl    %ebx,%eax
2975         movl    %eax,48(%edi)
2976         xorl    20(%edi),%eax
2977         movl    %eax,52(%edi)
2978         xorl    24(%edi),%eax
2979         movl    %eax,56(%edi)
2980         xorl    28(%edi),%eax
2981         movl    %eax,60(%edi)
2982         addl    $32,%edi
2983         jmp     .L05214loop
2984 .L05314break:
2985         movl    $14,48(%edi)
2986         xorl    %eax,%eax
2987         jmp     .L045exit
2988 .L040badpointer:
2989         movl    $-1,%eax
2990 .L045exit:
2991         popl    %edi
2992         popl    %esi
2993         popl    %ebx
2994         popl    %ebp
2995         ret
2996 .size   _x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key
2997 .globl  private_AES_set_encrypt_key
2998 .type   private_AES_set_encrypt_key,@function
2999 .align  16
3000 private_AES_set_encrypt_key:
3001 .L_private_AES_set_encrypt_key_begin:
3002         call    _x86_AES_set_encrypt_key
3003         ret
3004 .size   private_AES_set_encrypt_key,.-.L_private_AES_set_encrypt_key_begin
3005 .globl  private_AES_set_decrypt_key
3006 .type   private_AES_set_decrypt_key,@function
3007 .align  16
3008 private_AES_set_decrypt_key:
3009 .L_private_AES_set_decrypt_key_begin:
3010         call    _x86_AES_set_encrypt_key
3011         cmpl    $0,%eax
3012         je      .L054proceed
3013         ret
3014 .L054proceed:
3015         pushl   %ebp
3016         pushl   %ebx
3017         pushl   %esi
3018         pushl   %edi
3019         movl    28(%esp),%esi
3020         movl    240(%esi),%ecx
3021         leal    (,%ecx,4),%ecx
3022         leal    (%esi,%ecx,4),%edi
3023 .align  4
3024 .L055invert:
3025         movl    (%esi),%eax
3026         movl    4(%esi),%ebx
3027         movl    (%edi),%ecx
3028         movl    4(%edi),%edx
3029         movl    %eax,(%edi)
3030         movl    %ebx,4(%edi)
3031         movl    %ecx,(%esi)
3032         movl    %edx,4(%esi)
3033         movl    8(%esi),%eax
3034         movl    12(%esi),%ebx
3035         movl    8(%edi),%ecx
3036         movl    12(%edi),%edx
3037         movl    %eax,8(%edi)
3038         movl    %ebx,12(%edi)
3039         movl    %ecx,8(%esi)
3040         movl    %edx,12(%esi)
3041         addl    $16,%esi
3042         subl    $16,%edi
3043         cmpl    %edi,%esi
3044         jne     .L055invert
3045         movl    28(%esp),%edi
3046         movl    240(%edi),%esi
3047         leal    -2(%esi,%esi,1),%esi
3048         leal    (%edi,%esi,8),%esi
3049         movl    %esi,28(%esp)
3050         movl    16(%edi),%eax
3051 .align  4
3052 .L056permute:
3053         addl    $16,%edi
3054         movl    %eax,%esi
3055         andl    $2155905152,%esi
3056         movl    %esi,%ebp
3057         shrl    $7,%ebp
3058         leal    (%eax,%eax,1),%ebx
3059         subl    %ebp,%esi
3060         andl    $4278124286,%ebx
3061         andl    $454761243,%esi
3062         xorl    %ebx,%esi
3063         movl    %esi,%ebx
3064         andl    $2155905152,%esi
3065         movl    %esi,%ebp
3066         shrl    $7,%ebp
3067         leal    (%ebx,%ebx,1),%ecx
3068         subl    %ebp,%esi
3069         andl    $4278124286,%ecx
3070         andl    $454761243,%esi
3071         xorl    %eax,%ebx
3072         xorl    %ecx,%esi
3073         movl    %esi,%ecx
3074         andl    $2155905152,%esi
3075         movl    %esi,%ebp
3076         shrl    $7,%ebp
3077         leal    (%ecx,%ecx,1),%edx
3078         xorl    %eax,%ecx
3079         subl    %ebp,%esi
3080         andl    $4278124286,%edx
3081         andl    $454761243,%esi
3082         roll    $8,%eax
3083         xorl    %esi,%edx
3084         movl    4(%edi),%ebp
3085         xorl    %ebx,%eax
3086         xorl    %edx,%ebx
3087         xorl    %ecx,%eax
3088         roll    $24,%ebx
3089         xorl    %edx,%ecx
3090         xorl    %edx,%eax
3091         roll    $16,%ecx
3092         xorl    %ebx,%eax
3093         roll    $8,%edx
3094         xorl    %ecx,%eax
3095         movl    %ebp,%ebx
3096         xorl    %edx,%eax
3097         movl    %eax,(%edi)
3098         movl    %ebx,%esi
3099         andl    $2155905152,%esi
3100         movl    %esi,%ebp
3101         shrl    $7,%ebp
3102         leal    (%ebx,%ebx,1),%ecx
3103         subl    %ebp,%esi
3104         andl    $4278124286,%ecx
3105         andl    $454761243,%esi
3106         xorl    %ecx,%esi
3107         movl    %esi,%ecx
3108         andl    $2155905152,%esi
3109         movl    %esi,%ebp
3110         shrl    $7,%ebp
3111         leal    (%ecx,%ecx,1),%edx
3112         subl    %ebp,%esi
3113         andl    $4278124286,%edx
3114         andl    $454761243,%esi
3115         xorl    %ebx,%ecx
3116         xorl    %edx,%esi
3117         movl    %esi,%edx
3118         andl    $2155905152,%esi
3119         movl    %esi,%ebp
3120         shrl    $7,%ebp
3121         leal    (%edx,%edx,1),%eax
3122         xorl    %ebx,%edx
3123         subl    %ebp,%esi
3124         andl    $4278124286,%eax
3125         andl    $454761243,%esi
3126         roll    $8,%ebx
3127         xorl    %esi,%eax
3128         movl    8(%edi),%ebp
3129         xorl    %ecx,%ebx
3130         xorl    %eax,%ecx
3131         xorl    %edx,%ebx
3132         roll    $24,%ecx
3133         xorl    %eax,%edx
3134         xorl    %eax,%ebx
3135         roll    $16,%edx
3136         xorl    %ecx,%ebx
3137         roll    $8,%eax
3138         xorl    %edx,%ebx
3139         movl    %ebp,%ecx
3140         xorl    %eax,%ebx
3141         movl    %ebx,4(%edi)
3142         movl    %ecx,%esi
3143         andl    $2155905152,%esi
3144         movl    %esi,%ebp
3145         shrl    $7,%ebp
3146         leal    (%ecx,%ecx,1),%edx
3147         subl    %ebp,%esi
3148         andl    $4278124286,%edx
3149         andl    $454761243,%esi
3150         xorl    %edx,%esi
3151         movl    %esi,%edx
3152         andl    $2155905152,%esi
3153         movl    %esi,%ebp
3154         shrl    $7,%ebp
3155         leal    (%edx,%edx,1),%eax
3156         subl    %ebp,%esi
3157         andl    $4278124286,%eax
3158         andl    $454761243,%esi
3159         xorl    %ecx,%edx
3160         xorl    %eax,%esi
3161         movl    %esi,%eax
3162         andl    $2155905152,%esi
3163         movl    %esi,%ebp
3164         shrl    $7,%ebp
3165         leal    (%eax,%eax,1),%ebx
3166         xorl    %ecx,%eax
3167         subl    %ebp,%esi
3168         andl    $4278124286,%ebx
3169         andl    $454761243,%esi
3170         roll    $8,%ecx
3171         xorl    %esi,%ebx
3172         movl    12(%edi),%ebp
3173         xorl    %edx,%ecx
3174         xorl    %ebx,%edx
3175         xorl    %eax,%ecx
3176         roll    $24,%edx
3177         xorl    %ebx,%eax
3178         xorl    %ebx,%ecx
3179         roll    $16,%eax
3180         xorl    %edx,%ecx
3181         roll    $8,%ebx
3182         xorl    %eax,%ecx
3183         movl    %ebp,%edx
3184         xorl    %ebx,%ecx
3185         movl    %ecx,8(%edi)
3186         movl    %edx,%esi
3187         andl    $2155905152,%esi
3188         movl    %esi,%ebp
3189         shrl    $7,%ebp
3190         leal    (%edx,%edx,1),%eax
3191         subl    %ebp,%esi
3192         andl    $4278124286,%eax
3193         andl    $454761243,%esi
3194         xorl    %eax,%esi
3195         movl    %esi,%eax
3196         andl    $2155905152,%esi
3197         movl    %esi,%ebp
3198         shrl    $7,%ebp
3199         leal    (%eax,%eax,1),%ebx
3200         subl    %ebp,%esi
3201         andl    $4278124286,%ebx
3202         andl    $454761243,%esi
3203         xorl    %edx,%eax
3204         xorl    %ebx,%esi
3205         movl    %esi,%ebx
3206         andl    $2155905152,%esi
3207         movl    %esi,%ebp
3208         shrl    $7,%ebp
3209         leal    (%ebx,%ebx,1),%ecx
3210         xorl    %edx,%ebx
3211         subl    %ebp,%esi
3212         andl    $4278124286,%ecx
3213         andl    $454761243,%esi
3214         roll    $8,%edx
3215         xorl    %esi,%ecx
3216         movl    16(%edi),%ebp
3217         xorl    %eax,%edx
3218         xorl    %ecx,%eax
3219         xorl    %ebx,%edx
3220         roll    $24,%eax
3221         xorl    %ecx,%ebx
3222         xorl    %ecx,%edx
3223         roll    $16,%ebx
3224         xorl    %eax,%edx
3225         roll    $8,%ecx
3226         xorl    %ebx,%edx
3227         movl    %ebp,%eax
3228         xorl    %ecx,%edx
3229         movl    %edx,12(%edi)
3230         cmpl    28(%esp),%edi
3231         jb      .L056permute
3232         xorl    %eax,%eax
3233         popl    %edi
3234         popl    %esi
3235         popl    %ebx
3236         popl    %ebp
3237         ret
3238 .size   private_AES_set_decrypt_key,.-.L_private_AES_set_decrypt_key_begin
3239 .byte   65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3240 .byte   80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3241 .byte   111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3242 .comm   OPENSSL_ia32cap_P,8,4
3243 #else
3244 .file   "aes-586.S"
3245 .text
3246 .type   _x86_AES_encrypt_compact,@function
3247 .align  16
3248 _x86_AES_encrypt_compact:
3249         movl    %edi,20(%esp)
3250         xorl    (%edi),%eax
3251         xorl    4(%edi),%ebx
3252         xorl    8(%edi),%ecx
3253         xorl    12(%edi),%edx
3254         movl    240(%edi),%esi
3255         leal    -2(%esi,%esi,1),%esi
3256         leal    (%edi,%esi,8),%esi
3257         movl    %esi,24(%esp)
3258         movl    -128(%ebp),%edi
3259         movl    -96(%ebp),%esi
3260         movl    -64(%ebp),%edi
3261         movl    -32(%ebp),%esi
3262         movl    (%ebp),%edi
3263         movl    32(%ebp),%esi
3264         movl    64(%ebp),%edi
3265         movl    96(%ebp),%esi
3266 .align  16
3267 .L000loop:
3268         movl    %eax,%esi
3269         andl    $255,%esi
3270         movzbl  -128(%ebp,%esi,1),%esi
3271         movzbl  %bh,%edi
3272         movzbl  -128(%ebp,%edi,1),%edi
3273         shll    $8,%edi
3274         xorl    %edi,%esi
3275         movl    %ecx,%edi
3276         shrl    $16,%edi
3277         andl    $255,%edi
3278         movzbl  -128(%ebp,%edi,1),%edi
3279         shll    $16,%edi
3280         xorl    %edi,%esi
3281         movl    %edx,%edi
3282         shrl    $24,%edi
3283         movzbl  -128(%ebp,%edi,1),%edi
3284         shll    $24,%edi
3285         xorl    %edi,%esi
3286         movl    %esi,4(%esp)
3287
3288         movl    %ebx,%esi
3289         andl    $255,%esi
3290         shrl    $16,%ebx
3291         movzbl  -128(%ebp,%esi,1),%esi
3292         movzbl  %ch,%edi
3293         movzbl  -128(%ebp,%edi,1),%edi
3294         shll    $8,%edi
3295         xorl    %edi,%esi
3296         movl    %edx,%edi
3297         shrl    $16,%edi
3298         andl    $255,%edi
3299         movzbl  -128(%ebp,%edi,1),%edi
3300         shll    $16,%edi
3301         xorl    %edi,%esi
3302         movl    %eax,%edi
3303         shrl    $24,%edi
3304         movzbl  -128(%ebp,%edi,1),%edi
3305         shll    $24,%edi
3306         xorl    %edi,%esi
3307         movl    %esi,8(%esp)
3308
3309         movl    %ecx,%esi
3310         andl    $255,%esi
3311         shrl    $24,%ecx
3312         movzbl  -128(%ebp,%esi,1),%esi
3313         movzbl  %dh,%edi
3314         movzbl  -128(%ebp,%edi,1),%edi
3315         shll    $8,%edi
3316         xorl    %edi,%esi
3317         movl    %eax,%edi
3318         shrl    $16,%edi
3319         andl    $255,%edx
3320         andl    $255,%edi
3321         movzbl  -128(%ebp,%edi,1),%edi
3322         shll    $16,%edi
3323         xorl    %edi,%esi
3324         movzbl  %bh,%edi
3325         movzbl  -128(%ebp,%edi,1),%edi
3326         shll    $24,%edi
3327         xorl    %edi,%esi
3328
3329         andl    $255,%edx
3330         movzbl  -128(%ebp,%edx,1),%edx
3331         movzbl  %ah,%eax
3332         movzbl  -128(%ebp,%eax,1),%eax
3333         shll    $8,%eax
3334         xorl    %eax,%edx
3335         movl    4(%esp),%eax
3336         andl    $255,%ebx
3337         movzbl  -128(%ebp,%ebx,1),%ebx
3338         shll    $16,%ebx
3339         xorl    %ebx,%edx
3340         movl    8(%esp),%ebx
3341         movzbl  -128(%ebp,%ecx,1),%ecx
3342         shll    $24,%ecx
3343         xorl    %ecx,%edx
3344         movl    %esi,%ecx
3345
3346         movl    %ecx,%esi
3347         andl    $2155905152,%esi
3348         movl    %esi,%ebp
3349         shrl    $7,%ebp
3350         leal    (%ecx,%ecx,1),%edi
3351         subl    %ebp,%esi
3352         andl    $4278124286,%edi
3353         andl    $454761243,%esi
3354         movl    %ecx,%ebp
3355         xorl    %edi,%esi
3356         xorl    %esi,%ecx
3357         roll    $24,%ecx
3358         xorl    %esi,%ecx
3359         rorl    $16,%ebp
3360         xorl    %ebp,%ecx
3361         rorl    $8,%ebp
3362         xorl    %ebp,%ecx
3363         movl    %edx,%esi
3364         andl    $2155905152,%esi
3365         movl    %esi,%ebp
3366         shrl    $7,%ebp
3367         leal    (%edx,%edx,1),%edi
3368         subl    %ebp,%esi
3369         andl    $4278124286,%edi
3370         andl    $454761243,%esi
3371         movl    %edx,%ebp
3372         xorl    %edi,%esi
3373         xorl    %esi,%edx
3374         roll    $24,%edx
3375         xorl    %esi,%edx
3376         rorl    $16,%ebp
3377         xorl    %ebp,%edx
3378         rorl    $8,%ebp
3379         xorl    %ebp,%edx
3380         movl    %eax,%esi
3381         andl    $2155905152,%esi
3382         movl    %esi,%ebp
3383         shrl    $7,%ebp
3384         leal    (%eax,%eax,1),%edi
3385         subl    %ebp,%esi
3386         andl    $4278124286,%edi
3387         andl    $454761243,%esi
3388         movl    %eax,%ebp
3389         xorl    %edi,%esi
3390         xorl    %esi,%eax
3391         roll    $24,%eax
3392         xorl    %esi,%eax
3393         rorl    $16,%ebp
3394         xorl    %ebp,%eax
3395         rorl    $8,%ebp
3396         xorl    %ebp,%eax
3397         movl    %ebx,%esi
3398         andl    $2155905152,%esi
3399         movl    %esi,%ebp
3400         shrl    $7,%ebp
3401         leal    (%ebx,%ebx,1),%edi
3402         subl    %ebp,%esi
3403         andl    $4278124286,%edi
3404         andl    $454761243,%esi
3405         movl    %ebx,%ebp
3406         xorl    %edi,%esi
3407         xorl    %esi,%ebx
3408         roll    $24,%ebx
3409         xorl    %esi,%ebx
3410         rorl    $16,%ebp
3411         xorl    %ebp,%ebx
3412         rorl    $8,%ebp
3413         xorl    %ebp,%ebx
3414         movl    20(%esp),%edi
3415         movl    28(%esp),%ebp
3416         addl    $16,%edi
3417         xorl    (%edi),%eax
3418         xorl    4(%edi),%ebx
3419         xorl    8(%edi),%ecx
3420         xorl    12(%edi),%edx
3421         cmpl    24(%esp),%edi
3422         movl    %edi,20(%esp)
3423         jb      .L000loop
3424         movl    %eax,%esi
3425         andl    $255,%esi
3426         movzbl  -128(%ebp,%esi,1),%esi
3427         movzbl  %bh,%edi
3428         movzbl  -128(%ebp,%edi,1),%edi
3429         shll    $8,%edi
3430         xorl    %edi,%esi
3431         movl    %ecx,%edi
3432         shrl    $16,%edi
3433         andl    $255,%edi
3434         movzbl  -128(%ebp,%edi,1),%edi
3435         shll    $16,%edi
3436         xorl    %edi,%esi
3437         movl    %edx,%edi
3438         shrl    $24,%edi
3439         movzbl  -128(%ebp,%edi,1),%edi
3440         shll    $24,%edi
3441         xorl    %edi,%esi
3442         movl    %esi,4(%esp)
3443
3444         movl    %ebx,%esi
3445         andl    $255,%esi
3446         shrl    $16,%ebx
3447         movzbl  -128(%ebp,%esi,1),%esi
3448         movzbl  %ch,%edi
3449         movzbl  -128(%ebp,%edi,1),%edi
3450         shll    $8,%edi
3451         xorl    %edi,%esi
3452         movl    %edx,%edi
3453         shrl    $16,%edi
3454         andl    $255,%edi
3455         movzbl  -128(%ebp,%edi,1),%edi
3456         shll    $16,%edi
3457         xorl    %edi,%esi
3458         movl    %eax,%edi
3459         shrl    $24,%edi
3460         movzbl  -128(%ebp,%edi,1),%edi
3461         shll    $24,%edi
3462         xorl    %edi,%esi
3463         movl    %esi,8(%esp)
3464
3465         movl    %ecx,%esi
3466         andl    $255,%esi
3467         shrl    $24,%ecx
3468         movzbl  -128(%ebp,%esi,1),%esi
3469         movzbl  %dh,%edi
3470         movzbl  -128(%ebp,%edi,1),%edi
3471         shll    $8,%edi
3472         xorl    %edi,%esi
3473         movl    %eax,%edi
3474         shrl    $16,%edi
3475         andl    $255,%edx
3476         andl    $255,%edi
3477         movzbl  -128(%ebp,%edi,1),%edi
3478         shll    $16,%edi
3479         xorl    %edi,%esi
3480         movzbl  %bh,%edi
3481         movzbl  -128(%ebp,%edi,1),%edi
3482         shll    $24,%edi
3483         xorl    %edi,%esi
3484
3485         movl    20(%esp),%edi
3486         andl    $255,%edx
3487         movzbl  -128(%ebp,%edx,1),%edx
3488         movzbl  %ah,%eax
3489         movzbl  -128(%ebp,%eax,1),%eax
3490         shll    $8,%eax
3491         xorl    %eax,%edx
3492         movl    4(%esp),%eax
3493         andl    $255,%ebx
3494         movzbl  -128(%ebp,%ebx,1),%ebx
3495         shll    $16,%ebx
3496         xorl    %ebx,%edx
3497         movl    8(%esp),%ebx
3498         movzbl  -128(%ebp,%ecx,1),%ecx
3499         shll    $24,%ecx
3500         xorl    %ecx,%edx
3501         movl    %esi,%ecx
3502
3503         xorl    16(%edi),%eax
3504         xorl    20(%edi),%ebx
3505         xorl    24(%edi),%ecx
3506         xorl    28(%edi),%edx
3507         ret
3508 .size   _x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact
3509 .type   _sse_AES_encrypt_compact,@function
3510 .align  16
3511 _sse_AES_encrypt_compact:
3512         pxor    (%edi),%mm0
3513         pxor    8(%edi),%mm4
3514         movl    240(%edi),%esi
3515         leal    -2(%esi,%esi,1),%esi
3516         leal    (%edi,%esi,8),%esi
3517         movl    %esi,24(%esp)
3518         movl    $454761243,%eax
3519         movl    %eax,8(%esp)
3520         movl    %eax,12(%esp)
3521         movl    -128(%ebp),%eax
3522         movl    -96(%ebp),%ebx
3523         movl    -64(%ebp),%ecx
3524         movl    -32(%ebp),%edx
3525         movl    (%ebp),%eax
3526         movl    32(%ebp),%ebx
3527         movl    64(%ebp),%ecx
3528         movl    96(%ebp),%edx
3529 .align  16
3530 .L001loop:
3531         pshufw  $8,%mm0,%mm1
3532         pshufw  $13,%mm4,%mm5
3533         movd    %mm1,%eax
3534         movd    %mm5,%ebx
3535         movzbl  %al,%esi
3536         movzbl  -128(%ebp,%esi,1),%ecx
3537         pshufw  $13,%mm0,%mm2
3538         movzbl  %ah,%edx
3539         movzbl  -128(%ebp,%edx,1),%edx
3540         shll    $8,%edx
3541         shrl    $16,%eax
3542         movzbl  %bl,%esi
3543         movzbl  -128(%ebp,%esi,1),%esi
3544         shll    $16,%esi
3545         orl     %esi,%ecx
3546         pshufw  $8,%mm4,%mm6
3547         movzbl  %bh,%esi
3548         movzbl  -128(%ebp,%esi,1),%esi
3549         shll    $24,%esi
3550         orl     %esi,%edx
3551         shrl    $16,%ebx
3552         movzbl  %ah,%esi
3553         movzbl  -128(%ebp,%esi,1),%esi
3554         shll    $8,%esi
3555         orl     %esi,%ecx
3556         movzbl  %bh,%esi
3557         movzbl  -128(%ebp,%esi,1),%esi
3558         shll    $24,%esi
3559         orl     %esi,%ecx
3560         movd    %ecx,%mm0
3561         movzbl  %al,%esi
3562         movzbl  -128(%ebp,%esi,1),%ecx
3563         movd    %mm2,%eax
3564         movzbl  %bl,%esi
3565         movzbl  -128(%ebp,%esi,1),%esi
3566         shll    $16,%esi
3567         orl     %esi,%ecx
3568         movd    %mm6,%ebx
3569         movzbl  %ah,%esi
3570         movzbl  -128(%ebp,%esi,1),%esi
3571         shll    $24,%esi
3572         orl     %esi,%ecx
3573         movzbl  %bh,%esi
3574         movzbl  -128(%ebp,%esi,1),%esi
3575         shll    $8,%esi
3576         orl     %esi,%ecx
3577         movd    %ecx,%mm1
3578         movzbl  %bl,%esi
3579         movzbl  -128(%ebp,%esi,1),%ecx
3580         shrl    $16,%ebx
3581         movzbl  %al,%esi
3582         movzbl  -128(%ebp,%esi,1),%esi
3583         shll    $16,%esi
3584         orl     %esi,%ecx
3585         shrl    $16,%eax
3586         punpckldq       %mm1,%mm0
3587         movzbl  %ah,%esi
3588         movzbl  -128(%ebp,%esi,1),%esi
3589         shll    $24,%esi
3590         orl     %esi,%ecx
3591         andl    $255,%eax
3592         movzbl  -128(%ebp,%eax,1),%eax
3593         shll    $16,%eax
3594         orl     %eax,%edx
3595         movzbl  %bh,%esi
3596         movzbl  -128(%ebp,%esi,1),%esi
3597         shll    $8,%esi
3598         orl     %esi,%ecx
3599         movd    %ecx,%mm4
3600         andl    $255,%ebx
3601         movzbl  -128(%ebp,%ebx,1),%ebx
3602         orl     %ebx,%edx
3603         movd    %edx,%mm5
3604         punpckldq       %mm5,%mm4
3605         addl    $16,%edi
3606         cmpl    24(%esp),%edi
3607         ja      .L002out
3608         movq    8(%esp),%mm2
3609         pxor    %mm3,%mm3
3610         pxor    %mm7,%mm7
3611         movq    %mm0,%mm1
3612         movq    %mm4,%mm5
3613         pcmpgtb %mm0,%mm3
3614         pcmpgtb %mm4,%mm7
3615         pand    %mm2,%mm3
3616         pand    %mm2,%mm7
3617         pshufw  $177,%mm0,%mm2
3618         pshufw  $177,%mm4,%mm6
3619         paddb   %mm0,%mm0
3620         paddb   %mm4,%mm4
3621         pxor    %mm3,%mm0
3622         pxor    %mm7,%mm4
3623         pshufw  $177,%mm2,%mm3
3624         pshufw  $177,%mm6,%mm7
3625         pxor    %mm0,%mm1
3626         pxor    %mm4,%mm5
3627         pxor    %mm2,%mm0
3628         pxor    %mm6,%mm4
3629         movq    %mm3,%mm2
3630         movq    %mm7,%mm6
3631         pslld   $8,%mm3
3632         pslld   $8,%mm7
3633         psrld   $24,%mm2
3634         psrld   $24,%mm6
3635         pxor    %mm3,%mm0
3636         pxor    %mm7,%mm4
3637         pxor    %mm2,%mm0
3638         pxor    %mm6,%mm4
3639         movq    %mm1,%mm3
3640         movq    %mm5,%mm7
3641         movq    (%edi),%mm2
3642         movq    8(%edi),%mm6
3643         psrld   $8,%mm1
3644         psrld   $8,%mm5
3645         movl    -128(%ebp),%eax
3646         pslld   $24,%mm3
3647         pslld   $24,%mm7
3648         movl    -64(%ebp),%ebx
3649         pxor    %mm1,%mm0
3650         pxor    %mm5,%mm4
3651         movl    (%ebp),%ecx
3652         pxor    %mm3,%mm0
3653         pxor    %mm7,%mm4
3654         movl    64(%ebp),%edx
3655         pxor    %mm2,%mm0
3656         pxor    %mm6,%mm4
3657         jmp     .L001loop
3658 .align  16
3659 .L002out:
3660         pxor    (%edi),%mm0
3661         pxor    8(%edi),%mm4
3662         ret
3663 .size   _sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact
3664 .type   _x86_AES_encrypt,@function
3665 .align  16
3666 _x86_AES_encrypt:
3667         movl    %edi,20(%esp)
3668         xorl    (%edi),%eax
3669         xorl    4(%edi),%ebx
3670         xorl    8(%edi),%ecx
3671         xorl    12(%edi),%edx
3672         movl    240(%edi),%esi
3673         leal    -2(%esi,%esi,1),%esi
3674         leal    (%edi,%esi,8),%esi
3675         movl    %esi,24(%esp)
3676 .align  16
3677 .L003loop:
3678         movl    %eax,%esi
3679         andl    $255,%esi
3680         movl    (%ebp,%esi,8),%esi
3681         movzbl  %bh,%edi
3682         xorl    3(%ebp,%edi,8),%esi
3683         movl    %ecx,%edi
3684         shrl    $16,%edi
3685         andl    $255,%edi
3686         xorl    2(%ebp,%edi,8),%esi
3687         movl    %edx,%edi
3688         shrl    $24,%edi
3689         xorl    1(%ebp,%edi,8),%esi
3690         movl    %esi,4(%esp)
3691
3692         movl    %ebx,%esi
3693         andl    $255,%esi
3694         shrl    $16,%ebx
3695         movl    (%ebp,%esi,8),%esi
3696         movzbl  %ch,%edi
3697         xorl    3(%ebp,%edi,8),%esi
3698         movl    %edx,%edi
3699         shrl    $16,%edi
3700         andl    $255,%edi
3701         xorl    2(%ebp,%edi,8),%esi
3702         movl    %eax,%edi
3703         shrl    $24,%edi
3704         xorl    1(%ebp,%edi,8),%esi
3705         movl    %esi,8(%esp)
3706
3707         movl    %ecx,%esi
3708         andl    $255,%esi
3709         shrl    $24,%ecx
3710         movl    (%ebp,%esi,8),%esi
3711         movzbl  %dh,%edi
3712         xorl    3(%ebp,%edi,8),%esi
3713         movl    %eax,%edi
3714         shrl    $16,%edi
3715         andl    $255,%edx
3716         andl    $255,%edi
3717         xorl    2(%ebp,%edi,8),%esi
3718         movzbl  %bh,%edi
3719         xorl    1(%ebp,%edi,8),%esi
3720
3721         movl    20(%esp),%edi
3722         movl    (%ebp,%edx,8),%edx
3723         movzbl  %ah,%eax
3724         xorl    3(%ebp,%eax,8),%edx
3725         movl    4(%esp),%eax
3726         andl    $255,%ebx
3727         xorl    2(%ebp,%ebx,8),%edx
3728         movl    8(%esp),%ebx
3729         xorl    1(%ebp,%ecx,8),%edx
3730         movl    %esi,%ecx
3731
3732         addl    $16,%edi
3733         xorl    (%edi),%eax
3734         xorl    4(%edi),%ebx
3735         xorl    8(%edi),%ecx
3736         xorl    12(%edi),%edx
3737         cmpl    24(%esp),%edi
3738         movl    %edi,20(%esp)
3739         jb      .L003loop
3740         movl    %eax,%esi
3741         andl    $255,%esi
3742         movl    2(%ebp,%esi,8),%esi
3743         andl    $255,%esi
3744         movzbl  %bh,%edi
3745         movl    (%ebp,%edi,8),%edi
3746         andl    $65280,%edi
3747         xorl    %edi,%esi
3748         movl    %ecx,%edi
3749         shrl    $16,%edi
3750         andl    $255,%edi
3751         movl    (%ebp,%edi,8),%edi
3752         andl    $16711680,%edi
3753         xorl    %edi,%esi
3754         movl    %edx,%edi
3755         shrl    $24,%edi
3756         movl    2(%ebp,%edi,8),%edi
3757         andl    $4278190080,%edi
3758         xorl    %edi,%esi
3759         movl    %esi,4(%esp)
3760         movl    %ebx,%esi
3761         andl    $255,%esi
3762         shrl    $16,%ebx
3763         movl    2(%ebp,%esi,8),%esi
3764         andl    $255,%esi
3765         movzbl  %ch,%edi
3766         movl    (%ebp,%edi,8),%edi
3767         andl    $65280,%edi
3768         xorl    %edi,%esi
3769         movl    %edx,%edi
3770         shrl    $16,%edi
3771         andl    $255,%edi
3772         movl    (%ebp,%edi,8),%edi
3773         andl    $16711680,%edi
3774         xorl    %edi,%esi
3775         movl    %eax,%edi
3776         shrl    $24,%edi
3777         movl    2(%ebp,%edi,8),%edi
3778         andl    $4278190080,%edi
3779         xorl    %edi,%esi
3780         movl    %esi,8(%esp)
3781         movl    %ecx,%esi
3782         andl    $255,%esi
3783         shrl    $24,%ecx
3784         movl    2(%ebp,%esi,8),%esi
3785         andl    $255,%esi
3786         movzbl  %dh,%edi
3787         movl    (%ebp,%edi,8),%edi
3788         andl    $65280,%edi
3789         xorl    %edi,%esi
3790         movl    %eax,%edi
3791         shrl    $16,%edi
3792         andl    $255,%edx
3793         andl    $255,%edi
3794         movl    (%ebp,%edi,8),%edi
3795         andl    $16711680,%edi
3796         xorl    %edi,%esi
3797         movzbl  %bh,%edi
3798         movl    2(%ebp,%edi,8),%edi
3799         andl    $4278190080,%edi
3800         xorl    %edi,%esi
3801         movl    20(%esp),%edi
3802         andl    $255,%edx
3803         movl    2(%ebp,%edx,8),%edx
3804         andl    $255,%edx
3805         movzbl  %ah,%eax
3806         movl    (%ebp,%eax,8),%eax
3807         andl    $65280,%eax
3808         xorl    %eax,%edx
3809         movl    4(%esp),%eax
3810         andl    $255,%ebx
3811         movl    (%ebp,%ebx,8),%ebx
3812         andl    $16711680,%ebx
3813         xorl    %ebx,%edx
3814         movl    8(%esp),%ebx
3815         movl    2(%ebp,%ecx,8),%ecx
3816         andl    $4278190080,%ecx
3817         xorl    %ecx,%edx
3818         movl    %esi,%ecx
3819         addl    $16,%edi
3820         xorl    (%edi),%eax
3821         xorl    4(%edi),%ebx
3822         xorl    8(%edi),%ecx
3823         xorl    12(%edi),%edx
3824         ret
3825 .align  64
3826 .LAES_Te:
3827 .long   2774754246,2774754246
3828 .long   2222750968,2222750968
3829 .long   2574743534,2574743534
3830 .long   2373680118,2373680118
3831 .long   234025727,234025727
3832 .long   3177933782,3177933782
3833 .long   2976870366,2976870366
3834 .long   1422247313,1422247313
3835 .long   1345335392,1345335392
3836 .long   50397442,50397442
3837 .long   2842126286,2842126286
3838 .long   2099981142,2099981142
3839 .long   436141799,436141799
3840 .long   1658312629,1658312629
3841 .long   3870010189,3870010189
3842 .long   2591454956,2591454956
3843 .long   1170918031,1170918031
3844 .long   2642575903,2642575903
3845 .long   1086966153,1086966153
3846 .long   2273148410,2273148410
3847 .long   368769775,368769775
3848 .long   3948501426,3948501426
3849 .long   3376891790,3376891790
3850 .long   200339707,200339707
3851 .long   3970805057,3970805057
3852 .long   1742001331,1742001331
3853 .long   4255294047,4255294047
3854 .long   3937382213,3937382213
3855 .long   3214711843,3214711843
3856 .long   4154762323,4154762323
3857 .long   2524082916,2524082916
3858 .long   1539358875,1539358875
3859 .long   3266819957,3266819957
3860 .long   486407649,486407649
3861 .long   2928907069,2928907069
3862 .long   1780885068,1780885068
3863 .long   1513502316,1513502316
3864 .long   1094664062,1094664062
3865 .long   49805301,49805301
3866 .long   1338821763,1338821763
3867 .long   1546925160,1546925160
3868 .long   4104496465,4104496465
3869 .long   887481809,887481809
3870 .long   150073849,150073849
3871 .long   2473685474,2473685474
3872 .long   1943591083,1943591083
3873 .long   1395732834,1395732834
3874 .long   1058346282,1058346282
3875 .long   201589768,201589768
3876 .long   1388824469,1388824469
3877 .long   1696801606,1696801606
3878 .long   1589887901,1589887901
3879 .long   672667696,672667696
3880 .long   2711000631,2711000631
3881 .long   251987210,251987210
3882 .long   3046808111,3046808111
3883 .long   151455502,151455502
3884 .long   907153956,907153956
3885 .long   2608889883,2608889883
3886 .long   1038279391,1038279391
3887 .long   652995533,652995533
3888 .long   1764173646,1764173646
3889 .long   3451040383,3451040383
3890 .long   2675275242,2675275242
3891 .long   453576978,453576978
3892 .long   2659418909,2659418909
3893 .long   1949051992,1949051992
3894 .long   773462580,773462580
3895 .long   756751158,756751158
3896 .long   2993581788,2993581788
3897 .long   3998898868,3998898868
3898 .long   4221608027,4221608027
3899 .long   4132590244,4132590244
3900 .long   1295727478,1295727478
3901 .long   1641469623,1641469623
3902 .long   3467883389,3467883389
3903 .long   2066295122,2066295122
3904 .long   1055122397,1055122397
3905 .long   1898917726,1898917726
3906 .long   2542044179,2542044179
3907 .long   4115878822,4115878822
3908 .long   1758581177,1758581177
3909 .long   0,0
3910 .long   753790401,753790401
3911 .long   1612718144,1612718144
3912 .long   536673507,536673507
3913 .long   3367088505,3367088505
3914 .long   3982187446,3982187446
3915 .long   3194645204,3194645204
3916 .long   1187761037,1187761037
3917 .long   3653156455,3653156455
3918 .long   1262041458,1262041458
3919 .long   3729410708,3729410708
3920 .long   3561770136,3561770136
3921 .long   3898103984,3898103984
3922 .long   1255133061,1255133061
3923 .long   1808847035,1808847035
3924 .long   720367557,720367557
3925 .long   3853167183,3853167183
3926 .long   385612781,385612781
3927 .long   3309519750,3309519750
3928 .long   3612167578,3612167578
3929 .long   1429418854,1429418854
3930 .long   2491778321,2491778321
3931 .long   3477423498,3477423498
3932 .long   284817897,284817897
3933 .long   100794884,100794884
3934 .long   2172616702,2172616702
3935 .long   4031795360,4031795360
3936 .long   1144798328,1144798328
3937 .long   3131023141,3131023141
3938 .long   3819481163,3819481163
3939 .long   4082192802,4082192802
3940 .long   4272137053,4272137053
3941 .long   3225436288,3225436288
3942 .long   2324664069,2324664069
3943 .long   2912064063,2912064063
3944 .long   3164445985,3164445985
3945 .long   1211644016,1211644016
3946 .long   83228145,83228145
3947 .long   3753688163,3753688163
3948 .long   3249976951,3249976951
3949 .long   1977277103,1977277103
3950 .long   1663115586,1663115586
3951 .long   806359072,806359072
3952 .long   452984805,452984805
3953 .long   250868733,250868733
3954 .long   1842533055,1842533055
3955 .long   1288555905,1288555905
3956 .long   336333848,336333848
3957 .long   890442534,890442534
3958 .long   804056259,804056259
3959 .long   3781124030,3781124030
3960 .long   2727843637,2727843637
3961 .long   3427026056,3427026056
3962 .long   957814574,957814574
3963 .long   1472513171,1472513171
3964 .long   4071073621,4071073621
3965 .long   2189328124,2189328124
3966 .long   1195195770,1195195770
3967 .long   2892260552,2892260552
3968 .long   3881655738,3881655738
3969 .long   723065138,723065138
3970 .long   2507371494,2507371494
3971 .long   2690670784,2690670784
3972 .long   2558624025,2558624025
3973 .long   3511635870,3511635870
3974 .long   2145180835,2145180835
3975 .long   1713513028,1713513028
3976 .long   2116692564,2116692564
3977 .long   2878378043,2878378043
3978 .long   2206763019,2206763019
3979 .long   3393603212,3393603212
3980 .long   703524551,703524551
3981 .long   3552098411,3552098411
3982 .long   1007948840,1007948840
3983 .long   2044649127,2044649127
3984 .long   3797835452,3797835452
3985 .long   487262998,487262998
3986 .long   1994120109,1994120109
3987 .long   1004593371,1004593371
3988 .long   1446130276,1446130276
3989 .long   1312438900,1312438900
3990 .long   503974420,503974420
3991 .long   3679013266,3679013266
3992 .long   168166924,168166924
3993 .long   1814307912,1814307912
3994 .long   3831258296,3831258296
3995 .long   1573044895,1573044895
3996 .long   1859376061,1859376061
3997 .long   4021070915,4021070915
3998 .long   2791465668,2791465668
3999 .long   2828112185,2828112185
4000 .long   2761266481,2761266481
4001 .long   937747667,937747667
4002 .long   2339994098,2339994098
4003 .long   854058965,854058965
4004 .long   1137232011,1137232011
4005 .long   1496790894,1496790894
4006 .long   3077402074,3077402074
4007 .long   2358086913,2358086913
4008 .long   1691735473,1691735473
4009 .long   3528347292,3528347292
4010 .long   3769215305,3769215305
4011 .long   3027004632,3027004632
4012 .long   4199962284,4199962284
4013 .long   133494003,133494003
4014 .long   636152527,636152527
4015 .long   2942657994,2942657994
4016 .long   2390391540,2390391540
4017 .long   3920539207,3920539207
4018 .long   403179536,403179536
4019 .long   3585784431,3585784431
4020 .long   2289596656,2289596656
4021 .long   1864705354,1864705354
4022 .long   1915629148,1915629148
4023 .long   605822008,605822008
4024 .long   4054230615,4054230615
4025 .long   3350508659,3350508659
4026 .long   1371981463,1371981463
4027 .long   602466507,602466507
4028 .long   2094914977,2094914977
4029 .long   2624877800,2624877800
4030 .long   555687742,555687742
4031 .long   3712699286,3712699286
4032 .long   3703422305,3703422305
4033 .long   2257292045,2257292045
4034 .long   2240449039,2240449039
4035 .long   2423288032,2423288032
4036 .long   1111375484,1111375484
4037 .long   3300242801,3300242801
4038 .long   2858837708,2858837708
4039 .long   3628615824,3628615824
4040 .long   84083462,84083462
4041 .long   32962295,32962295
4042 .long   302911004,302911004
4043 .long   2741068226,2741068226
4044 .long   1597322602,1597322602
4045 .long   4183250862,4183250862
4046 .long   3501832553,3501832553
4047 .long   2441512471,2441512471
4048 .long   1489093017,1489093017
4049 .long   656219450,656219450
4050 .long   3114180135,3114180135
4051 .long   954327513,954327513
4052 .long   335083755,335083755
4053 .long   3013122091,3013122091
4054 .long   856756514,856756514
4055 .long   3144247762,3144247762
4056 .long   1893325225,1893325225
4057 .long   2307821063,2307821063
4058 .long   2811532339,2811532339
4059 .long   3063651117,3063651117
4060 .long   572399164,572399164
4061 .long   2458355477,2458355477
4062 .long   552200649,552200649
4063 .long   1238290055,1238290055
4064 .long   4283782570,4283782570
4065 .long   2015897680,2015897680
4066 .long   2061492133,2061492133
4067 .long   2408352771,2408352771
4068 .long   4171342169,4171342169
4069 .long   2156497161,2156497161
4070 .long   386731290,386731290
4071 .long   3669999461,3669999461
4072 .long   837215959,837215959
4073 .long   3326231172,3326231172
4074 .long   3093850320,3093850320
4075 .long   3275833730,3275833730
4076 .long   2962856233,2962856233
4077 .long   1999449434,1999449434
4078 .long   286199582,286199582
4079 .long   3417354363,3417354363
4080 .long   4233385128,4233385128
4081 .long   3602627437,3602627437
4082 .long   974525996,974525996
4083 .byte   99,124,119,123,242,107,111,197
4084 .byte   48,1,103,43,254,215,171,118
4085 .byte   202,130,201,125,250,89,71,240
4086 .byte   173,212,162,175,156,164,114,192
4087 .byte   183,253,147,38,54,63,247,204
4088 .byte   52,165,229,241,113,216,49,21
4089 .byte   4,199,35,195,24,150,5,154
4090 .byte   7,18,128,226,235,39,178,117
4091 .byte   9,131,44,26,27,110,90,160
4092 .byte   82,59,214,179,41,227,47,132
4093 .byte   83,209,0,237,32,252,177,91
4094 .byte   106,203,190,57,74,76,88,207
4095 .byte   208,239,170,251,67,77,51,133
4096 .byte   69,249,2,127,80,60,159,168
4097 .byte   81,163,64,143,146,157,56,245
4098 .byte   188,182,218,33,16,255,243,210
4099 .byte   205,12,19,236,95,151,68,23
4100 .byte   196,167,126,61,100,93,25,115
4101 .byte   96,129,79,220,34,42,144,136
4102 .byte   70,238,184,20,222,94,11,219
4103 .byte   224,50,58,10,73,6,36,92
4104 .byte   194,211,172,98,145,149,228,121
4105 .byte   231,200,55,109,141,213,78,169
4106 .byte   108,86,244,234,101,122,174,8
4107 .byte   186,120,37,46,28,166,180,198
4108 .byte   232,221,116,31,75,189,139,138
4109 .byte   112,62,181,102,72,3,246,14
4110 .byte   97,53,87,185,134,193,29,158
4111 .byte   225,248,152,17,105,217,142,148
4112 .byte   155,30,135,233,206,85,40,223
4113 .byte   140,161,137,13,191,230,66,104
4114 .byte   65,153,45,15,176,84,187,22
4115 .byte   99,124,119,123,242,107,111,197
4116 .byte   48,1,103,43,254,215,171,118
4117 .byte   202,130,201,125,250,89,71,240
4118 .byte   173,212,162,175,156,164,114,192
4119 .byte   183,253,147,38,54,63,247,204
4120 .byte   52,165,229,241,113,216,49,21
4121 .byte   4,199,35,195,24,150,5,154
4122 .byte   7,18,128,226,235,39,178,117
4123 .byte   9,131,44,26,27,110,90,160
4124 .byte   82,59,214,179,41,227,47,132
4125 .byte   83,209,0,237,32,252,177,91
4126 .byte   106,203,190,57,74,76,88,207
4127 .byte   208,239,170,251,67,77,51,133
4128 .byte   69,249,2,127,80,60,159,168
4129 .byte   81,163,64,143,146,157,56,245
4130 .byte   188,182,218,33,16,255,243,210
4131 .byte   205,12,19,236,95,151,68,23
4132 .byte   196,167,126,61,100,93,25,115
4133 .byte   96,129,79,220,34,42,144,136
4134 .byte   70,238,184,20,222,94,11,219
4135 .byte   224,50,58,10,73,6,36,92
4136 .byte   194,211,172,98,145,149,228,121
4137 .byte   231,200,55,109,141,213,78,169
4138 .byte   108,86,244,234,101,122,174,8
4139 .byte   186,120,37,46,28,166,180,198
4140 .byte   232,221,116,31,75,189,139,138
4141 .byte   112,62,181,102,72,3,246,14
4142 .byte   97,53,87,185,134,193,29,158
4143 .byte   225,248,152,17,105,217,142,148
4144 .byte   155,30,135,233,206,85,40,223
4145 .byte   140,161,137,13,191,230,66,104
4146 .byte   65,153,45,15,176,84,187,22
4147 .byte   99,124,119,123,242,107,111,197
4148 .byte   48,1,103,43,254,215,171,118
4149 .byte   202,130,201,125,250,89,71,240
4150 .byte   173,212,162,175,156,164,114,192
4151 .byte   183,253,147,38,54,63,247,204
4152 .byte   52,165,229,241,113,216,49,21
4153 .byte   4,199,35,195,24,150,5,154
4154 .byte   7,18,128,226,235,39,178,117
4155 .byte   9,131,44,26,27,110,90,160
4156 .byte   82,59,214,179,41,227,47,132
4157 .byte   83,209,0,237,32,252,177,91
4158 .byte   106,203,190,57,74,76,88,207
4159 .byte   208,239,170,251,67,77,51,133
4160 .byte   69,249,2,127,80,60,159,168
4161 .byte   81,163,64,143,146,157,56,245
4162 .byte   188,182,218,33,16,255,243,210
4163 .byte   205,12,19,236,95,151,68,23
4164 .byte   196,167,126,61,100,93,25,115
4165 .byte   96,129,79,220,34,42,144,136
4166 .byte   70,238,184,20,222,94,11,219
4167 .byte   224,50,58,10,73,6,36,92
4168 .byte   194,211,172,98,145,149,228,121
4169 .byte   231,200,55,109,141,213,78,169
4170 .byte   108,86,244,234,101,122,174,8
4171 .byte   186,120,37,46,28,166,180,198
4172 .byte   232,221,116,31,75,189,139,138
4173 .byte   112,62,181,102,72,3,246,14
4174 .byte   97,53,87,185,134,193,29,158
4175 .byte   225,248,152,17,105,217,142,148
4176 .byte   155,30,135,233,206,85,40,223
4177 .byte   140,161,137,13,191,230,66,104
4178 .byte   65,153,45,15,176,84,187,22
4179 .byte   99,124,119,123,242,107,111,197
4180 .byte   48,1,103,43,254,215,171,118
4181 .byte   202,130,201,125,250,89,71,240
4182 .byte   173,212,162,175,156,164,114,192
4183 .byte   183,253,147,38,54,63,247,204
4184 .byte   52,165,229,241,113,216,49,21
4185 .byte   4,199,35,195,24,150,5,154
4186 .byte   7,18,128,226,235,39,178,117
4187 .byte   9,131,44,26,27,110,90,160
4188 .byte   82,59,214,179,41,227,47,132
4189 .byte   83,209,0,237,32,252,177,91
4190 .byte   106,203,190,57,74,76,88,207
4191 .byte   208,239,170,251,67,77,51,133
4192 .byte   69,249,2,127,80,60,159,168
4193 .byte   81,163,64,143,146,157,56,245
4194 .byte   188,182,218,33,16,255,243,210
4195 .byte   205,12,19,236,95,151,68,23
4196 .byte   196,167,126,61,100,93,25,115
4197 .byte   96,129,79,220,34,42,144,136
4198 .byte   70,238,184,20,222,94,11,219
4199 .byte   224,50,58,10,73,6,36,92
4200 .byte   194,211,172,98,145,149,228,121
4201 .byte   231,200,55,109,141,213,78,169
4202 .byte   108,86,244,234,101,122,174,8
4203 .byte   186,120,37,46,28,166,180,198
4204 .byte   232,221,116,31,75,189,139,138
4205 .byte   112,62,181,102,72,3,246,14
4206 .byte   97,53,87,185,134,193,29,158
4207 .byte   225,248,152,17,105,217,142,148
4208 .byte   155,30,135,233,206,85,40,223
4209 .byte   140,161,137,13,191,230,66,104
4210 .byte   65,153,45,15,176,84,187,22
4211 .long   1,2,4,8
4212 .long   16,32,64,128
4213 .long   27,54,0,0
4214 .long   0,0,0,0
4215 .size   _x86_AES_encrypt,.-_x86_AES_encrypt
4216 .globl  AES_encrypt
4217 .type   AES_encrypt,@function
4218 .align  16
4219 AES_encrypt:
4220 .L_AES_encrypt_begin:
4221         pushl   %ebp
4222         pushl   %ebx
4223         pushl   %esi
4224         pushl   %edi
4225         movl    20(%esp),%esi
4226         movl    28(%esp),%edi
4227         movl    %esp,%eax
4228         subl    $36,%esp
4229         andl    $-64,%esp
4230         leal    -127(%edi),%ebx
4231         subl    %esp,%ebx
4232         negl    %ebx
4233         andl    $960,%ebx
4234         subl    %ebx,%esp
4235         addl    $4,%esp
4236         movl    %eax,28(%esp)
4237         call    .L004pic_point
4238 .L004pic_point:
4239         popl    %ebp
4240         leal    OPENSSL_ia32cap_P,%eax
4241         leal    .LAES_Te-.L004pic_point(%ebp),%ebp
4242         leal    764(%esp),%ebx
4243         subl    %ebp,%ebx
4244         andl    $768,%ebx
4245         leal    2176(%ebp,%ebx,1),%ebp
4246         btl     $25,(%eax)
4247         jnc     .L005x86
4248         movq    (%esi),%mm0
4249         movq    8(%esi),%mm4
4250         call    _sse_AES_encrypt_compact
4251         movl    28(%esp),%esp
4252         movl    24(%esp),%esi
4253         movq    %mm0,(%esi)
4254         movq    %mm4,8(%esi)
4255         emms
4256         popl    %edi
4257         popl    %esi
4258         popl    %ebx
4259         popl    %ebp
4260         ret
4261 .align  16
4262 .L005x86:
4263         movl    %ebp,24(%esp)
4264         movl    (%esi),%eax
4265         movl    4(%esi),%ebx
4266         movl    8(%esi),%ecx
4267         movl    12(%esi),%edx
4268         call    _x86_AES_encrypt_compact
4269         movl    28(%esp),%esp
4270         movl    24(%esp),%esi
4271         movl    %eax,(%esi)
4272         movl    %ebx,4(%esi)
4273         movl    %ecx,8(%esi)
4274         movl    %edx,12(%esi)
4275         popl    %edi
4276         popl    %esi
4277         popl    %ebx
4278         popl    %ebp
4279         ret
4280 .size   AES_encrypt,.-.L_AES_encrypt_begin
4281 .type   _x86_AES_decrypt_compact,@function
4282 .align  16
4283 _x86_AES_decrypt_compact:
4284         movl    %edi,20(%esp)
4285         xorl    (%edi),%eax
4286         xorl    4(%edi),%ebx
4287         xorl    8(%edi),%ecx
4288         xorl    12(%edi),%edx
4289         movl    240(%edi),%esi
4290         leal    -2(%esi,%esi,1),%esi
4291         leal    (%edi,%esi,8),%esi
4292         movl    %esi,24(%esp)
4293         movl    -128(%ebp),%edi
4294         movl    -96(%ebp),%esi
4295         movl    -64(%ebp),%edi
4296         movl    -32(%ebp),%esi
4297         movl    (%ebp),%edi
4298         movl    32(%ebp),%esi
4299         movl    64(%ebp),%edi
4300         movl    96(%ebp),%esi
4301 .align  16
4302 .L006loop:
4303         movl    %eax,%esi
4304         andl    $255,%esi
4305         movzbl  -128(%ebp,%esi,1),%esi
4306         movzbl  %dh,%edi
4307         movzbl  -128(%ebp,%edi,1),%edi
4308         shll    $8,%edi
4309         xorl    %edi,%esi
4310         movl    %ecx,%edi
4311         shrl    $16,%edi
4312         andl    $255,%edi
4313         movzbl  -128(%ebp,%edi,1),%edi
4314         shll    $16,%edi
4315         xorl    %edi,%esi
4316         movl    %ebx,%edi
4317         shrl    $24,%edi
4318         movzbl  -128(%ebp,%edi,1),%edi
4319         shll    $24,%edi
4320         xorl    %edi,%esi
4321         movl    %esi,4(%esp)
4322         movl    %ebx,%esi
4323         andl    $255,%esi
4324         movzbl  -128(%ebp,%esi,1),%esi
4325         movzbl  %ah,%edi
4326         movzbl  -128(%ebp,%edi,1),%edi
4327         shll    $8,%edi
4328         xorl    %edi,%esi
4329         movl    %edx,%edi
4330         shrl    $16,%edi
4331         andl    $255,%edi
4332         movzbl  -128(%ebp,%edi,1),%edi
4333         shll    $16,%edi
4334         xorl    %edi,%esi
4335         movl    %ecx,%edi
4336         shrl    $24,%edi
4337         movzbl  -128(%ebp,%edi,1),%edi
4338         shll    $24,%edi
4339         xorl    %edi,%esi
4340         movl    %esi,8(%esp)
4341         movl    %ecx,%esi
4342         andl    $255,%esi
4343         movzbl  -128(%ebp,%esi,1),%esi
4344         movzbl  %bh,%edi
4345         movzbl  -128(%ebp,%edi,1),%edi
4346         shll    $8,%edi
4347         xorl    %edi,%esi
4348         movl    %eax,%edi
4349         shrl    $16,%edi
4350         andl    $255,%edi
4351         movzbl  -128(%ebp,%edi,1),%edi
4352         shll    $16,%edi
4353         xorl    %edi,%esi
4354         movl    %edx,%edi
4355         shrl    $24,%edi
4356         movzbl  -128(%ebp,%edi,1),%edi
4357         shll    $24,%edi
4358         xorl    %edi,%esi
4359         andl    $255,%edx
4360         movzbl  -128(%ebp,%edx,1),%edx
4361         movzbl  %ch,%ecx
4362         movzbl  -128(%ebp,%ecx,1),%ecx
4363         shll    $8,%ecx
4364         xorl    %ecx,%edx
4365         movl    %esi,%ecx
4366         shrl    $16,%ebx
4367         andl    $255,%ebx
4368         movzbl  -128(%ebp,%ebx,1),%ebx
4369         shll    $16,%ebx
4370         xorl    %ebx,%edx
4371         shrl    $24,%eax
4372         movzbl  -128(%ebp,%eax,1),%eax
4373         shll    $24,%eax
4374         xorl    %eax,%edx
4375         movl    %ecx,%esi
4376         andl    $2155905152,%esi
4377         movl    %esi,%edi
4378         shrl    $7,%edi
4379         leal    (%ecx,%ecx,1),%eax
4380         subl    %edi,%esi
4381         andl    $4278124286,%eax
4382         andl    $454761243,%esi
4383         xorl    %eax,%esi
4384         movl    %esi,%eax
4385         andl    $2155905152,%esi
4386         movl    %esi,%edi
4387         shrl    $7,%edi
4388         leal    (%eax,%eax,1),%ebx
4389         subl    %edi,%esi
4390         andl    $4278124286,%ebx
4391         andl    $454761243,%esi
4392         xorl    %ecx,%eax
4393         xorl    %ebx,%esi
4394         movl    %esi,%ebx
4395         andl    $2155905152,%esi
4396         movl    %esi,%edi
4397         shrl    $7,%edi
4398         leal    (%ebx,%ebx,1),%ebp
4399         subl    %edi,%esi
4400         andl    $4278124286,%ebp
4401         andl    $454761243,%esi
4402         xorl    %ecx,%ebx
4403         roll    $8,%ecx
4404         xorl    %esi,%ebp
4405         xorl    %eax,%ecx
4406         xorl    %ebp,%eax
4407         roll    $24,%eax
4408         xorl    %ebx,%ecx
4409         xorl    %ebp,%ebx
4410         roll    $16,%ebx
4411         xorl    %ebp,%ecx
4412         roll    $8,%ebp
4413         xorl    %eax,%ecx
4414         xorl    %ebx,%ecx
4415         movl    4(%esp),%eax
4416         xorl    %ebp,%ecx
4417         movl    %ecx,12(%esp)
4418         movl    %edx,%esi
4419         andl    $2155905152,%esi
4420         movl    %esi,%edi
4421         shrl    $7,%edi
4422         leal    (%edx,%edx,1),%ebx
4423         subl    %edi,%esi
4424         andl    $4278124286,%ebx
4425         andl    $454761243,%esi
4426         xorl    %ebx,%esi
4427         movl    %esi,%ebx
4428         andl    $2155905152,%esi
4429         movl    %esi,%edi
4430         shrl    $7,%edi
4431         leal    (%ebx,%ebx,1),%ecx
4432         subl    %edi,%esi
4433         andl    $4278124286,%ecx
4434         andl    $454761243,%esi
4435         xorl    %edx,%ebx
4436         xorl    %ecx,%esi
4437         movl    %esi,%ecx
4438         andl    $2155905152,%esi
4439         movl    %esi,%edi
4440         shrl    $7,%edi
4441         leal    (%ecx,%ecx,1),%ebp
4442         subl    %edi,%esi
4443         andl    $4278124286,%ebp
4444         andl    $454761243,%esi
4445         xorl    %edx,%ecx
4446         roll    $8,%edx
4447         xorl    %esi,%ebp
4448         xorl    %ebx,%edx
4449         xorl    %ebp,%ebx
4450         roll    $24,%ebx
4451         xorl    %ecx,%edx
4452         xorl    %ebp,%ecx
4453         roll    $16,%ecx
4454         xorl    %ebp,%edx
4455         roll    $8,%ebp
4456         xorl    %ebx,%edx
4457         xorl    %ecx,%edx
4458         movl    8(%esp),%ebx
4459         xorl    %ebp,%edx
4460         movl    %edx,16(%esp)
4461         movl    %eax,%esi
4462         andl    $2155905152,%esi
4463         movl    %esi,%edi
4464         shrl    $7,%edi
4465         leal    (%eax,%eax,1),%ecx
4466         subl    %edi,%esi
4467         andl    $4278124286,%ecx
4468         andl    $454761243,%esi
4469         xorl    %ecx,%esi
4470         movl    %esi,%ecx
4471         andl    $2155905152,%esi
4472         movl    %esi,%edi
4473         shrl    $7,%edi
4474         leal    (%ecx,%ecx,1),%edx
4475         subl    %edi,%esi
4476         andl    $4278124286,%edx
4477         andl    $454761243,%esi
4478         xorl    %eax,%ecx
4479         xorl    %edx,%esi
4480         movl    %esi,%edx
4481         andl    $2155905152,%esi
4482         movl    %esi,%edi
4483         shrl    $7,%edi
4484         leal    (%edx,%edx,1),%ebp
4485         subl    %edi,%esi
4486         andl    $4278124286,%ebp
4487         andl    $454761243,%esi
4488         xorl    %eax,%edx
4489         roll    $8,%eax
4490         xorl    %esi,%ebp
4491         xorl    %ecx,%eax
4492         xorl    %ebp,%ecx
4493         roll    $24,%ecx
4494         xorl    %edx,%eax
4495         xorl    %ebp,%edx
4496         roll    $16,%edx
4497         xorl    %ebp,%eax
4498         roll    $8,%ebp
4499         xorl    %ecx,%eax
4500         xorl    %edx,%eax
4501         xorl    %ebp,%eax
4502         movl    %ebx,%esi
4503         andl    $2155905152,%esi
4504         movl    %esi,%edi
4505         shrl    $7,%edi
4506         leal    (%ebx,%ebx,1),%ecx
4507         subl    %edi,%esi
4508         andl    $4278124286,%ecx
4509         andl    $454761243,%esi
4510         xorl    %ecx,%esi
4511         movl    %esi,%ecx
4512         andl    $2155905152,%esi
4513         movl    %esi,%edi
4514         shrl    $7,%edi
4515         leal    (%ecx,%ecx,1),%edx
4516         subl    %edi,%esi
4517         andl    $4278124286,%edx
4518         andl    $454761243,%esi
4519         xorl    %ebx,%ecx
4520         xorl    %edx,%esi
4521         movl    %esi,%edx
4522         andl    $2155905152,%esi
4523         movl    %esi,%edi
4524         shrl    $7,%edi
4525         leal    (%edx,%edx,1),%ebp
4526         subl    %edi,%esi
4527         andl    $4278124286,%ebp
4528         andl    $454761243,%esi
4529         xorl    %ebx,%edx
4530         roll    $8,%ebx
4531         xorl    %esi,%ebp
4532         xorl    %ecx,%ebx
4533         xorl    %ebp,%ecx
4534         roll    $24,%ecx
4535         xorl    %edx,%ebx
4536         xorl    %ebp,%edx
4537         roll    $16,%edx
4538         xorl    %ebp,%ebx
4539         roll    $8,%ebp
4540         xorl    %ecx,%ebx
4541         xorl    %edx,%ebx
4542         movl    12(%esp),%ecx
4543         xorl    %ebp,%ebx
4544         movl    16(%esp),%edx
4545         movl    20(%esp),%edi
4546         movl    28(%esp),%ebp
4547         addl    $16,%edi
4548         xorl    (%edi),%eax
4549         xorl    4(%edi),%ebx
4550         xorl    8(%edi),%ecx
4551         xorl    12(%edi),%edx
4552         cmpl    24(%esp),%edi
4553         movl    %edi,20(%esp)
4554         jb      .L006loop
4555         movl    %eax,%esi
4556         andl    $255,%esi
4557         movzbl  -128(%ebp,%esi,1),%esi
4558         movzbl  %dh,%edi
4559         movzbl  -128(%ebp,%edi,1),%edi
4560         shll    $8,%edi
4561         xorl    %edi,%esi
4562         movl    %ecx,%edi
4563         shrl    $16,%edi
4564         andl    $255,%edi
4565         movzbl  -128(%ebp,%edi,1),%edi
4566         shll    $16,%edi
4567         xorl    %edi,%esi
4568         movl    %ebx,%edi
4569         shrl    $24,%edi
4570         movzbl  -128(%ebp,%edi,1),%edi
4571         shll    $24,%edi
4572         xorl    %edi,%esi
4573         movl    %esi,4(%esp)
4574         movl    %ebx,%esi
4575         andl    $255,%esi
4576         movzbl  -128(%ebp,%esi,1),%esi
4577         movzbl  %ah,%edi
4578         movzbl  -128(%ebp,%edi,1),%edi
4579         shll    $8,%edi
4580         xorl    %edi,%esi
4581         movl    %edx,%edi
4582         shrl    $16,%edi
4583         andl    $255,%edi
4584         movzbl  -128(%ebp,%edi,1),%edi
4585         shll    $16,%edi
4586         xorl    %edi,%esi
4587         movl    %ecx,%edi
4588         shrl    $24,%edi
4589         movzbl  -128(%ebp,%edi,1),%edi
4590         shll    $24,%edi
4591         xorl    %edi,%esi
4592         movl    %esi,8(%esp)
4593         movl    %ecx,%esi
4594         andl    $255,%esi
4595         movzbl  -128(%ebp,%esi,1),%esi
4596         movzbl  %bh,%edi
4597         movzbl  -128(%ebp,%edi,1),%edi
4598         shll    $8,%edi
4599         xorl    %edi,%esi
4600         movl    %eax,%edi
4601         shrl    $16,%edi
4602         andl    $255,%edi
4603         movzbl  -128(%ebp,%edi,1),%edi
4604         shll    $16,%edi
4605         xorl    %edi,%esi
4606         movl    %edx,%edi
4607         shrl    $24,%edi
4608         movzbl  -128(%ebp,%edi,1),%edi
4609         shll    $24,%edi
4610         xorl    %edi,%esi
4611         movl    20(%esp),%edi
4612         andl    $255,%edx
4613         movzbl  -128(%ebp,%edx,1),%edx
4614         movzbl  %ch,%ecx
4615         movzbl  -128(%ebp,%ecx,1),%ecx
4616         shll    $8,%ecx
4617         xorl    %ecx,%edx
4618         movl    %esi,%ecx
4619         shrl    $16,%ebx
4620         andl    $255,%ebx
4621         movzbl  -128(%ebp,%ebx,1),%ebx
4622         shll    $16,%ebx
4623         xorl    %ebx,%edx
4624         movl    8(%esp),%ebx
4625         shrl    $24,%eax
4626         movzbl  -128(%ebp,%eax,1),%eax
4627         shll    $24,%eax
4628         xorl    %eax,%edx
4629         movl    4(%esp),%eax
4630         xorl    16(%edi),%eax
4631         xorl    20(%edi),%ebx
4632         xorl    24(%edi),%ecx
4633         xorl    28(%edi),%edx
4634         ret
4635 .size   _x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact
4636 .type   _sse_AES_decrypt_compact,@function
4637 .align  16
4638 _sse_AES_decrypt_compact:
4639         pxor    (%edi),%mm0
4640         pxor    8(%edi),%mm4
4641         movl    240(%edi),%esi
4642         leal    -2(%esi,%esi,1),%esi
4643         leal    (%edi,%esi,8),%esi
4644         movl    %esi,24(%esp)
4645         movl    $454761243,%eax
4646         movl    %eax,8(%esp)
4647         movl    %eax,12(%esp)
4648         movl    -128(%ebp),%eax
4649         movl    -96(%ebp),%ebx
4650         movl    -64(%ebp),%ecx
4651         movl    -32(%ebp),%edx
4652         movl    (%ebp),%eax
4653         movl    32(%ebp),%ebx
4654         movl    64(%ebp),%ecx
4655         movl    96(%ebp),%edx
4656 .align  16
4657 .L007loop:
4658         pshufw  $12,%mm0,%mm1
4659         movd    %mm1,%eax
4660         pshufw  $9,%mm4,%mm5
4661         movzbl  %al,%esi
4662         movzbl  -128(%ebp,%esi,1),%ecx
4663         movd    %mm5,%ebx
4664         movzbl  %ah,%edx
4665         movzbl  -128(%ebp,%edx,1),%edx
4666         shll    $8,%edx
4667         pshufw  $6,%mm0,%mm2
4668         movzbl  %bl,%esi
4669         movzbl  -128(%ebp,%esi,1),%esi
4670         shll    $16,%esi
4671         orl     %esi,%ecx
4672         shrl    $16,%eax
4673         movzbl  %bh,%esi
4674         movzbl  -128(%ebp,%esi,1),%esi
4675         shll    $24,%esi
4676         orl     %esi,%edx
4677         shrl    $16,%ebx
4678         pshufw  $3,%mm4,%mm6
4679         movzbl  %ah,%esi
4680         movzbl  -128(%ebp,%esi,1),%esi
4681         shll    $24,%esi
4682         orl     %esi,%ecx
4683         movzbl  %bh,%esi
4684         movzbl  -128(%ebp,%esi,1),%esi
4685         shll    $8,%esi
4686         orl     %esi,%ecx
4687         movd    %ecx,%mm0
4688         movzbl  %al,%esi
4689         movd    %mm2,%eax
4690         movzbl  -128(%ebp,%esi,1),%ecx
4691         shll    $16,%ecx
4692         movzbl  %bl,%esi
4693         movd    %mm6,%ebx
4694         movzbl  -128(%ebp,%esi,1),%esi
4695         orl     %esi,%ecx
4696         movzbl  %al,%esi
4697         movzbl  -128(%ebp,%esi,1),%esi
4698         orl     %esi,%edx
4699         movzbl  %bl,%esi
4700         movzbl  -128(%ebp,%esi,1),%esi
4701         shll    $16,%esi
4702         orl     %esi,%edx
4703         movd    %edx,%mm1
4704         movzbl  %ah,%esi
4705         movzbl  -128(%ebp,%esi,1),%edx
4706         shll    $8,%edx
4707         movzbl  %bh,%esi
4708         shrl    $16,%eax
4709         movzbl  -128(%ebp,%esi,1),%esi
4710         shll    $24,%esi
4711         orl     %esi,%edx
4712         shrl    $16,%ebx
4713         punpckldq       %mm1,%mm0
4714         movzbl  %bh,%esi
4715         movzbl  -128(%ebp,%esi,1),%esi
4716         shll    $8,%esi
4717         orl     %esi,%ecx
4718         andl    $255,%ebx
4719         movzbl  -128(%ebp,%ebx,1),%ebx
4720         orl     %ebx,%edx
4721         movzbl  %al,%esi
4722         movzbl  -128(%ebp,%esi,1),%esi
4723         shll    $16,%esi
4724         orl     %esi,%edx
4725         movd    %edx,%mm4
4726         movzbl  %ah,%eax
4727         movzbl  -128(%ebp,%eax,1),%eax
4728         shll    $24,%eax
4729         orl     %eax,%ecx
4730         movd    %ecx,%mm5
4731         punpckldq       %mm5,%mm4
4732         addl    $16,%edi
4733         cmpl    24(%esp),%edi
4734         ja      .L008out
4735         movq    %mm0,%mm3
4736         movq    %mm4,%mm7
4737         pshufw  $228,%mm0,%mm2
4738         pshufw  $228,%mm4,%mm6
4739         movq    %mm0,%mm1
4740         movq    %mm4,%mm5
4741         pshufw  $177,%mm0,%mm0
4742         pshufw  $177,%mm4,%mm4
4743         pslld   $8,%mm2
4744         pslld   $8,%mm6
4745         psrld   $8,%mm3
4746         psrld   $8,%mm7
4747         pxor    %mm2,%mm0
4748         pxor    %mm6,%mm4
4749         pxor    %mm3,%mm0
4750         pxor    %mm7,%mm4
4751         pslld   $16,%mm2
4752         pslld   $16,%mm6
4753         psrld   $16,%mm3
4754         psrld   $16,%mm7
4755         pxor    %mm2,%mm0
4756         pxor    %mm6,%mm4
4757         pxor    %mm3,%mm0
4758         pxor    %mm7,%mm4
4759         movq    8(%esp),%mm3
4760         pxor    %mm2,%mm2
4761         pxor    %mm6,%mm6
4762         pcmpgtb %mm1,%mm2
4763         pcmpgtb %mm5,%mm6
4764         pand    %mm3,%mm2
4765         pand    %mm3,%mm6
4766         paddb   %mm1,%mm1
4767         paddb   %mm5,%mm5
4768         pxor    %mm2,%mm1
4769         pxor    %mm6,%mm5
4770         movq    %mm1,%mm3
4771         movq    %mm5,%mm7
4772         movq    %mm1,%mm2
4773         movq    %mm5,%mm6
4774         pxor    %mm1,%mm0
4775         pxor    %mm5,%mm4
4776         pslld   $24,%mm3
4777         pslld   $24,%mm7
4778         psrld   $8,%mm2
4779         psrld   $8,%mm6
4780         pxor    %mm3,%mm0
4781         pxor    %mm7,%mm4
4782         pxor    %mm2,%mm0
4783         pxor    %mm6,%mm4
4784         movq    8(%esp),%mm2
4785         pxor    %mm3,%mm3
4786         pxor    %mm7,%mm7
4787         pcmpgtb %mm1,%mm3
4788         pcmpgtb %mm5,%mm7
4789         pand    %mm2,%mm3
4790         pand    %mm2,%mm7
4791         paddb   %mm1,%mm1
4792         paddb   %mm5,%mm5
4793         pxor    %mm3,%mm1
4794         pxor    %mm7,%mm5
4795         pshufw  $177,%mm1,%mm3
4796         pshufw  $177,%mm5,%mm7
4797         pxor    %mm1,%mm0
4798         pxor    %mm5,%mm4
4799         pxor    %mm3,%mm0
4800         pxor    %mm7,%mm4
4801         pxor    %mm3,%mm3
4802         pxor    %mm7,%mm7
4803         pcmpgtb %mm1,%mm3
4804         pcmpgtb %mm5,%mm7
4805         pand    %mm2,%mm3
4806         pand    %mm2,%mm7
4807         paddb   %mm1,%mm1
4808         paddb   %mm5,%mm5
4809         pxor    %mm3,%mm1
4810         pxor    %mm7,%mm5
4811         pxor    %mm1,%mm0
4812         pxor    %mm5,%mm4
4813         movq    %mm1,%mm3
4814         movq    %mm5,%mm7
4815         pshufw  $177,%mm1,%mm2
4816         pshufw  $177,%mm5,%mm6
4817         pxor    %mm2,%mm0
4818         pxor    %mm6,%mm4
4819         pslld   $8,%mm1
4820         pslld   $8,%mm5
4821         psrld   $8,%mm3
4822         psrld   $8,%mm7
4823         movq    (%edi),%mm2
4824         movq    8(%edi),%mm6
4825         pxor    %mm1,%mm0
4826         pxor    %mm5,%mm4
4827         pxor    %mm3,%mm0
4828         pxor    %mm7,%mm4
4829         movl    -128(%ebp),%eax
4830         pslld   $16,%mm1
4831         pslld   $16,%mm5
4832         movl    -64(%ebp),%ebx
4833         psrld   $16,%mm3
4834         psrld   $16,%mm7
4835         movl    (%ebp),%ecx
4836         pxor    %mm1,%mm0
4837         pxor    %mm5,%mm4
4838         movl    64(%ebp),%edx
4839         pxor    %mm3,%mm0
4840         pxor    %mm7,%mm4
4841         pxor    %mm2,%mm0
4842         pxor    %mm6,%mm4
4843         jmp     .L007loop
4844 .align  16
4845 .L008out:
4846         pxor    (%edi),%mm0
4847         pxor    8(%edi),%mm4
4848         ret
4849 .size   _sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact
4850 .type   _x86_AES_decrypt,@function
4851 .align  16
4852 _x86_AES_decrypt:
4853         movl    %edi,20(%esp)
4854         xorl    (%edi),%eax
4855         xorl    4(%edi),%ebx
4856         xorl    8(%edi),%ecx
4857         xorl    12(%edi),%edx
4858         movl    240(%edi),%esi
4859         leal    -2(%esi,%esi,1),%esi
4860         leal    (%edi,%esi,8),%esi
4861         movl    %esi,24(%esp)
4862 .align  16
4863 .L009loop:
4864         movl    %eax,%esi
4865         andl    $255,%esi
4866         movl    (%ebp,%esi,8),%esi
4867         movzbl  %dh,%edi
4868         xorl    3(%ebp,%edi,8),%esi
4869         movl    %ecx,%edi
4870         shrl    $16,%edi
4871         andl    $255,%edi
4872         xorl    2(%ebp,%edi,8),%esi
4873         movl    %ebx,%edi
4874         shrl    $24,%edi
4875         xorl    1(%ebp,%edi,8),%esi
4876         movl    %esi,4(%esp)
4877
4878         movl    %ebx,%esi
4879         andl    $255,%esi
4880         movl    (%ebp,%esi,8),%esi
4881         movzbl  %ah,%edi
4882         xorl    3(%ebp,%edi,8),%esi
4883         movl    %edx,%edi
4884         shrl    $16,%edi
4885         andl    $255,%edi
4886         xorl    2(%ebp,%edi,8),%esi
4887         movl    %ecx,%edi
4888         shrl    $24,%edi
4889         xorl    1(%ebp,%edi,8),%esi
4890         movl    %esi,8(%esp)
4891
4892         movl    %ecx,%esi
4893         andl    $255,%esi
4894         movl    (%ebp,%esi,8),%esi
4895         movzbl  %bh,%edi
4896         xorl    3(%ebp,%edi,8),%esi
4897         movl    %eax,%edi
4898         shrl    $16,%edi
4899         andl    $255,%edi
4900         xorl    2(%ebp,%edi,8),%esi
4901         movl    %edx,%edi
4902         shrl    $24,%edi
4903         xorl    1(%ebp,%edi,8),%esi
4904
4905         movl    20(%esp),%edi
4906         andl    $255,%edx
4907         movl    (%ebp,%edx,8),%edx
4908         movzbl  %ch,%ecx
4909         xorl    3(%ebp,%ecx,8),%edx
4910         movl    %esi,%ecx
4911         shrl    $16,%ebx
4912         andl    $255,%ebx
4913         xorl    2(%ebp,%ebx,8),%edx
4914         movl    8(%esp),%ebx
4915         shrl    $24,%eax
4916         xorl    1(%ebp,%eax,8),%edx
4917         movl    4(%esp),%eax
4918
4919         addl    $16,%edi
4920         xorl    (%edi),%eax
4921         xorl    4(%edi),%ebx
4922         xorl    8(%edi),%ecx
4923         xorl    12(%edi),%edx
4924         cmpl    24(%esp),%edi
4925         movl    %edi,20(%esp)
4926         jb      .L009loop
4927         leal    2176(%ebp),%ebp
4928         movl    -128(%ebp),%edi
4929         movl    -96(%ebp),%esi
4930         movl    -64(%ebp),%edi
4931         movl    -32(%ebp),%esi
4932         movl    (%ebp),%edi
4933         movl    32(%ebp),%esi
4934         movl    64(%ebp),%edi
4935         movl    96(%ebp),%esi
4936         leal    -128(%ebp),%ebp
4937         movl    %eax,%esi
4938         andl    $255,%esi
4939         movzbl  (%ebp,%esi,1),%esi
4940         movzbl  %dh,%edi
4941         movzbl  (%ebp,%edi,1),%edi
4942         shll    $8,%edi
4943         xorl    %edi,%esi
4944         movl    %ecx,%edi
4945         shrl    $16,%edi
4946         andl    $255,%edi
4947         movzbl  (%ebp,%edi,1),%edi
4948         shll    $16,%edi
4949         xorl    %edi,%esi
4950         movl    %ebx,%edi
4951         shrl    $24,%edi
4952         movzbl  (%ebp,%edi,1),%edi
4953         shll    $24,%edi
4954         xorl    %edi,%esi
4955         movl    %esi,4(%esp)
4956         movl    %ebx,%esi
4957         andl    $255,%esi
4958         movzbl  (%ebp,%esi,1),%esi
4959         movzbl  %ah,%edi
4960         movzbl  (%ebp,%edi,1),%edi
4961         shll    $8,%edi
4962         xorl    %edi,%esi
4963         movl    %edx,%edi
4964         shrl    $16,%edi
4965         andl    $255,%edi
4966         movzbl  (%ebp,%edi,1),%edi
4967         shll    $16,%edi
4968         xorl    %edi,%esi
4969         movl    %ecx,%edi
4970         shrl    $24,%edi
4971         movzbl  (%ebp,%edi,1),%edi
4972         shll    $24,%edi
4973         xorl    %edi,%esi
4974         movl    %esi,8(%esp)
4975         movl    %ecx,%esi
4976         andl    $255,%esi
4977         movzbl  (%ebp,%esi,1),%esi
4978         movzbl  %bh,%edi
4979         movzbl  (%ebp,%edi,1),%edi
4980         shll    $8,%edi
4981         xorl    %edi,%esi
4982         movl    %eax,%edi
4983         shrl    $16,%edi
4984         andl    $255,%edi
4985         movzbl  (%ebp,%edi,1),%edi
4986         shll    $16,%edi
4987         xorl    %edi,%esi
4988         movl    %edx,%edi
4989         shrl    $24,%edi
4990         movzbl  (%ebp,%edi,1),%edi
4991         shll    $24,%edi
4992         xorl    %edi,%esi
4993         movl    20(%esp),%edi
4994         andl    $255,%edx
4995         movzbl  (%ebp,%edx,1),%edx
4996         movzbl  %ch,%ecx
4997         movzbl  (%ebp,%ecx,1),%ecx
4998         shll    $8,%ecx
4999         xorl    %ecx,%edx
5000         movl    %esi,%ecx
5001         shrl    $16,%ebx
5002         andl    $255,%ebx
5003         movzbl  (%ebp,%ebx,1),%ebx
5004         shll    $16,%ebx
5005         xorl    %ebx,%edx
5006         movl    8(%esp),%ebx
5007         shrl    $24,%eax
5008         movzbl  (%ebp,%eax,1),%eax
5009         shll    $24,%eax
5010         xorl    %eax,%edx
5011         movl    4(%esp),%eax
5012         leal    -2048(%ebp),%ebp
5013         addl    $16,%edi
5014         xorl    (%edi),%eax
5015         xorl    4(%edi),%ebx
5016         xorl    8(%edi),%ecx
5017         xorl    12(%edi),%edx
5018         ret
5019 .align  64
5020 .LAES_Td:
5021 .long   1353184337,1353184337
5022 .long   1399144830,1399144830
5023 .long   3282310938,3282310938
5024 .long   2522752826,2522752826
5025 .long   3412831035,3412831035
5026 .long   4047871263,4047871263
5027 .long   2874735276,2874735276
5028 .long   2466505547,2466505547
5029 .long   1442459680,1442459680
5030 .long   4134368941,4134368941
5031 .long   2440481928,2440481928
5032 .long   625738485,625738485
5033 .long   4242007375,4242007375
5034 .long   3620416197,3620416197
5035 .long   2151953702,2151953702
5036 .long   2409849525,2409849525
5037 .long   1230680542,1230680542
5038 .long   1729870373,1729870373
5039 .long   2551114309,2551114309
5040 .long   3787521629,3787521629
5041 .long   41234371,41234371
5042 .long   317738113,317738113
5043 .long   2744600205,2744600205
5044 .long   3338261355,3338261355
5045 .long   3881799427,3881799427
5046 .long   2510066197,2510066197
5047 .long   3950669247,3950669247
5048 .long   3663286933,3663286933
5049 .long   763608788,763608788
5050 .long   3542185048,3542185048
5051 .long   694804553,694804553
5052 .long   1154009486,1154009486
5053 .long   1787413109,1787413109
5054 .long   2021232372,2021232372
5055 .long   1799248025,1799248025
5056 .long   3715217703,3715217703
5057 .long   3058688446,3058688446
5058 .long   397248752,397248752
5059 .long   1722556617,1722556617
5060 .long   3023752829,3023752829
5061 .long   407560035,407560035
5062 .long   2184256229,2184256229
5063 .long   1613975959,1613975959
5064 .long   1165972322,1165972322
5065 .long   3765920945,3765920945
5066 .long   2226023355,2226023355
5067 .long   480281086,480281086
5068 .long   2485848313,2485848313
5069 .long   1483229296,1483229296
5070 .long   436028815,436028815
5071 .long   2272059028,2272059028
5072 .long   3086515026,3086515026
5073 .long   601060267,601060267
5074 .long   3791801202,3791801202
5075 .long   1468997603,1468997603
5076 .long   715871590,715871590
5077 .long   120122290,120122290
5078 .long   63092015,63092015
5079 .long   2591802758,2591802758
5080 .long   2768779219,2768779219
5081 .long   4068943920,4068943920
5082 .long   2997206819,2997206819
5083 .long   3127509762,3127509762
5084 .long   1552029421,1552029421
5085 .long   723308426,723308426
5086 .long   2461301159,2461301159
5087 .long   4042393587,4042393587
5088 .long   2715969870,2715969870
5089 .long   3455375973,3455375973
5090 .long   3586000134,3586000134
5091 .long   526529745,526529745
5092 .long   2331944644,2331944644
5093 .long   2639474228,2639474228
5094 .long   2689987490,2689987490
5095 .long   853641733,853641733
5096 .long   1978398372,1978398372
5097 .long   971801355,971801355
5098 .long   2867814464,2867814464
5099 .long   111112542,111112542
5100 .long   1360031421,1360031421
5101 .long   4186579262,4186579262
5102 .long   1023860118,1023860118
5103 .long   2919579357,2919579357
5104 .long   1186850381,1186850381
5105 .long   3045938321,3045938321
5106 .long   90031217,90031217
5107 .long   1876166148,1876166148
5108 .long   4279586912,4279586912
5109 .long   620468249,620468249
5110 .long   2548678102,2548678102
5111 .long   3426959497,3426959497
5112 .long   2006899047,2006899047
5113 .long   3175278768,3175278768
5114 .long   2290845959,2290845959
5115 .long   945494503,945494503
5116 .long   3689859193,3689859193
5117 .long   1191869601,1191869601
5118 .long   3910091388,3910091388
5119 .long   3374220536,3374220536
5120 .long   0,0
5121 .long   2206629897,2206629897
5122 .long   1223502642,1223502642
5123 .long   2893025566,2893025566
5124 .long   1316117100,1316117100
5125 .long   4227796733,4227796733
5126 .long   1446544655,1446544655
5127 .long   517320253,517320253
5128 .long   658058550,658058550
5129 .long   1691946762,1691946762
5130 .long   564550760,564550760
5131 .long   3511966619,3511966619
5132 .long   976107044,976107044
5133 .long   2976320012,2976320012
5134 .long   266819475,266819475
5135 .long   3533106868,3533106868
5136 .long   2660342555,2660342555
5137 .long   1338359936,1338359936
5138 .long   2720062561,2720062561
5139 .long   1766553434,1766553434
5140 .long   370807324,370807324
5141 .long   179999714,179999714
5142 .long   3844776128,3844776128
5143 .long   1138762300,1138762300
5144 .long   488053522,488053522
5145 .long   185403662,185403662
5146 .long   2915535858,2915535858
5147 .long   3114841645,3114841645
5148 .long   3366526484,3366526484
5149 .long   2233069911,2233069911
5150 .long   1275557295,1275557295
5151 .long   3151862254,3151862254
5152 .long   4250959779,4250959779
5153 .long   2670068215,2670068215
5154 .long   3170202204,3170202204
5155 .long   3309004356,3309004356
5156 .long   880737115,880737115
5157 .long   1982415755,1982415755
5158 .long   3703972811,3703972811
5159 .long   1761406390,1761406390
5160 .long   1676797112,1676797112
5161 .long   3403428311,3403428311
5162 .long   277177154,277177154
5163 .long   1076008723,1076008723
5164 .long   538035844,538035844
5165 .long   2099530373,2099530373
5166 .long   4164795346,4164795346
5167 .long   288553390,288553390
5168 .long   1839278535,1839278535
5169 .long   1261411869,1261411869
5170 .long   4080055004,4080055004
5171 .long   3964831245,3964831245
5172 .long   3504587127,3504587127
5173 .long   1813426987,1813426987
5174 .long   2579067049,2579067049
5175 .long   4199060497,4199060497
5176 .long   577038663,577038663
5177 .long   3297574056,3297574056
5178 .long   440397984,440397984
5179 .long   3626794326,3626794326
5180 .long   4019204898,4019204898
5181 .long   3343796615,3343796615
5182 .long   3251714265,3251714265
5183 .long   4272081548,4272081548
5184 .long   906744984,906744984
5185 .long   3481400742,3481400742
5186 .long   685669029,685669029
5187 .long   646887386,646887386
5188 .long   2764025151,2764025151
5189 .long   3835509292,3835509292
5190 .long   227702864,227702864
5191 .long   2613862250,2613862250
5192 .long   1648787028,1648787028
5193 .long   3256061430,3256061430
5194 .long   3904428176,3904428176
5195 .long   1593260334,1593260334
5196 .long   4121936770,4121936770
5197 .long   3196083615,3196083615
5198 .long   2090061929,2090061929
5199 .long   2838353263,2838353263
5200 .long   3004310991,3004310991
5201 .long   999926984,999926984
5202 .long   2809993232,2809993232
5203 .long   1852021992,1852021992
5204 .long   2075868123,2075868123
5205 .long   158869197,158869197
5206 .long   4095236462,4095236462
5207 .long   28809964,28809964
5208 .long   2828685187,2828685187
5209 .long   1701746150,1701746150
5210 .long   2129067946,2129067946
5211 .long   147831841,147831841
5212 .long   3873969647,3873969647
5213 .long   3650873274,3650873274
5214 .long   3459673930,3459673930
5215 .long   3557400554,3557400554
5216 .long   3598495785,3598495785
5217 .long   2947720241,2947720241
5218 .long   824393514,824393514
5219 .long   815048134,815048134
5220 .long   3227951669,3227951669
5221 .long   935087732,935087732
5222 .long   2798289660,2798289660
5223 .long   2966458592,2966458592
5224 .long   366520115,366520115
5225 .long   1251476721,1251476721
5226 .long   4158319681,4158319681
5227 .long   240176511,240176511
5228 .long   804688151,804688151
5229 .long   2379631990,2379631990
5230 .long   1303441219,1303441219
5231 .long   1414376140,1414376140
5232 .long   3741619940,3741619940
5233 .long   3820343710,3820343710
5234 .long   461924940,461924940
5235 .long   3089050817,3089050817
5236 .long   2136040774,2136040774
5237 .long   82468509,82468509
5238 .long   1563790337,1563790337
5239 .long   1937016826,1937016826
5240 .long   776014843,776014843
5241 .long   1511876531,1511876531
5242 .long   1389550482,1389550482
5243 .long   861278441,861278441
5244 .long   323475053,323475053
5245 .long   2355222426,2355222426
5246 .long   2047648055,2047648055
5247 .long   2383738969,2383738969
5248 .long   2302415851,2302415851
5249 .long   3995576782,3995576782
5250 .long   902390199,902390199
5251 .long   3991215329,3991215329
5252 .long   1018251130,1018251130
5253 .long   1507840668,1507840668
5254 .long   1064563285,1064563285
5255 .long   2043548696,2043548696
5256 .long   3208103795,3208103795
5257 .long   3939366739,3939366739
5258 .long   1537932639,1537932639
5259 .long   342834655,342834655
5260 .long   2262516856,2262516856
5261 .long   2180231114,2180231114
5262 .long   1053059257,1053059257
5263 .long   741614648,741614648
5264 .long   1598071746,1598071746
5265 .long   1925389590,1925389590
5266 .long   203809468,203809468
5267 .long   2336832552,2336832552
5268 .long   1100287487,1100287487
5269 .long   1895934009,1895934009
5270 .long   3736275976,3736275976
5271 .long   2632234200,2632234200
5272 .long   2428589668,2428589668
5273 .long   1636092795,1636092795
5274 .long   1890988757,1890988757
5275 .long   1952214088,1952214088
5276 .long   1113045200,1113045200
5277 .byte   82,9,106,213,48,54,165,56
5278 .byte   191,64,163,158,129,243,215,251
5279 .byte   124,227,57,130,155,47,255,135
5280 .byte   52,142,67,68,196,222,233,203
5281 .byte   84,123,148,50,166,194,35,61
5282 .byte   238,76,149,11,66,250,195,78
5283 .byte   8,46,161,102,40,217,36,178
5284 .byte   118,91,162,73,109,139,209,37
5285 .byte   114,248,246,100,134,104,152,22
5286 .byte   212,164,92,204,93,101,182,146
5287 .byte   108,112,72,80,253,237,185,218
5288 .byte   94,21,70,87,167,141,157,132
5289 .byte   144,216,171,0,140,188,211,10
5290 .byte   247,228,88,5,184,179,69,6
5291 .byte   208,44,30,143,202,63,15,2
5292 .byte   193,175,189,3,1,19,138,107
5293 .byte   58,145,17,65,79,103,220,234
5294 .byte   151,242,207,206,240,180,230,115
5295 .byte   150,172,116,34,231,173,53,133
5296 .byte   226,249,55,232,28,117,223,110
5297 .byte   71,241,26,113,29,41,197,137
5298 .byte   111,183,98,14,170,24,190,27
5299 .byte   252,86,62,75,198,210,121,32
5300 .byte   154,219,192,254,120,205,90,244
5301 .byte   31,221,168,51,136,7,199,49
5302 .byte   177,18,16,89,39,128,236,95
5303 .byte   96,81,127,169,25,181,74,13
5304 .byte   45,229,122,159,147,201,156,239
5305 .byte   160,224,59,77,174,42,245,176
5306 .byte   200,235,187,60,131,83,153,97
5307 .byte   23,43,4,126,186,119,214,38
5308 .byte   225,105,20,99,85,33,12,125
5309 .byte   82,9,106,213,48,54,165,56
5310 .byte   191,64,163,158,129,243,215,251
5311 .byte   124,227,57,130,155,47,255,135
5312 .byte   52,142,67,68,196,222,233,203
5313 .byte   84,123,148,50,166,194,35,61
5314 .byte   238,76,149,11,66,250,195,78
5315 .byte   8,46,161,102,40,217,36,178
5316 .byte   118,91,162,73,109,139,209,37
5317 .byte   114,248,246,100,134,104,152,22
5318 .byte   212,164,92,204,93,101,182,146
5319 .byte   108,112,72,80,253,237,185,218
5320 .byte   94,21,70,87,167,141,157,132
5321 .byte   144,216,171,0,140,188,211,10
5322 .byte   247,228,88,5,184,179,69,6
5323 .byte   208,44,30,143,202,63,15,2
5324 .byte   193,175,189,3,1,19,138,107
5325 .byte   58,145,17,65,79,103,220,234
5326 .byte   151,242,207,206,240,180,230,115
5327 .byte   150,172,116,34,231,173,53,133
5328 .byte   226,249,55,232,28,117,223,110
5329 .byte   71,241,26,113,29,41,197,137
5330 .byte   111,183,98,14,170,24,190,27
5331 .byte   252,86,62,75,198,210,121,32
5332 .byte   154,219,192,254,120,205,90,244
5333 .byte   31,221,168,51,136,7,199,49
5334 .byte   177,18,16,89,39,128,236,95
5335 .byte   96,81,127,169,25,181,74,13
5336 .byte   45,229,122,159,147,201,156,239
5337 .byte   160,224,59,77,174,42,245,176
5338 .byte   200,235,187,60,131,83,153,97
5339 .byte   23,43,4,126,186,119,214,38
5340 .byte   225,105,20,99,85,33,12,125
5341 .byte   82,9,106,213,48,54,165,56
5342 .byte   191,64,163,158,129,243,215,251
5343 .byte   124,227,57,130,155,47,255,135
5344 .byte   52,142,67,68,196,222,233,203
5345 .byte   84,123,148,50,166,194,35,61
5346 .byte   238,76,149,11,66,250,195,78
5347 .byte   8,46,161,102,40,217,36,178
5348 .byte   118,91,162,73,109,139,209,37
5349 .byte   114,248,246,100,134,104,152,22
5350 .byte   212,164,92,204,93,101,182,146
5351 .byte   108,112,72,80,253,237,185,218
5352 .byte   94,21,70,87,167,141,157,132
5353 .byte   144,216,171,0,140,188,211,10
5354 .byte   247,228,88,5,184,179,69,6
5355 .byte   208,44,30,143,202,63,15,2
5356 .byte   193,175,189,3,1,19,138,107
5357 .byte   58,145,17,65,79,103,220,234
5358 .byte   151,242,207,206,240,180,230,115
5359 .byte   150,172,116,34,231,173,53,133
5360 .byte   226,249,55,232,28,117,223,110
5361 .byte   71,241,26,113,29,41,197,137
5362 .byte   111,183,98,14,170,24,190,27
5363 .byte   252,86,62,75,198,210,121,32
5364 .byte   154,219,192,254,120,205,90,244
5365 .byte   31,221,168,51,136,7,199,49
5366 .byte   177,18,16,89,39,128,236,95
5367 .byte   96,81,127,169,25,181,74,13
5368 .byte   45,229,122,159,147,201,156,239
5369 .byte   160,224,59,77,174,42,245,176
5370 .byte   200,235,187,60,131,83,153,97
5371 .byte   23,43,4,126,186,119,214,38
5372 .byte   225,105,20,99,85,33,12,125
5373 .byte   82,9,106,213,48,54,165,56
5374 .byte   191,64,163,158,129,243,215,251
5375 .byte   124,227,57,130,155,47,255,135
5376 .byte   52,142,67,68,196,222,233,203
5377 .byte   84,123,148,50,166,194,35,61
5378 .byte   238,76,149,11,66,250,195,78
5379 .byte   8,46,161,102,40,217,36,178
5380 .byte   118,91,162,73,109,139,209,37
5381 .byte   114,248,246,100,134,104,152,22
5382 .byte   212,164,92,204,93,101,182,146
5383 .byte   108,112,72,80,253,237,185,218
5384 .byte   94,21,70,87,167,141,157,132
5385 .byte   144,216,171,0,140,188,211,10
5386 .byte   247,228,88,5,184,179,69,6
5387 .byte   208,44,30,143,202,63,15,2
5388 .byte   193,175,189,3,1,19,138,107
5389 .byte   58,145,17,65,79,103,220,234
5390 .byte   151,242,207,206,240,180,230,115
5391 .byte   150,172,116,34,231,173,53,133
5392 .byte   226,249,55,232,28,117,223,110
5393 .byte   71,241,26,113,29,41,197,137
5394 .byte   111,183,98,14,170,24,190,27
5395 .byte   252,86,62,75,198,210,121,32
5396 .byte   154,219,192,254,120,205,90,244
5397 .byte   31,221,168,51,136,7,199,49
5398 .byte   177,18,16,89,39,128,236,95
5399 .byte   96,81,127,169,25,181,74,13
5400 .byte   45,229,122,159,147,201,156,239
5401 .byte   160,224,59,77,174,42,245,176
5402 .byte   200,235,187,60,131,83,153,97
5403 .byte   23,43,4,126,186,119,214,38
5404 .byte   225,105,20,99,85,33,12,125
5405 .size   _x86_AES_decrypt,.-_x86_AES_decrypt
5406 .globl  AES_decrypt
5407 .type   AES_decrypt,@function
5408 .align  16
5409 AES_decrypt:
5410 .L_AES_decrypt_begin:
5411         pushl   %ebp
5412         pushl   %ebx
5413         pushl   %esi
5414         pushl   %edi
5415         movl    20(%esp),%esi
5416         movl    28(%esp),%edi
5417         movl    %esp,%eax
5418         subl    $36,%esp
5419         andl    $-64,%esp
5420         leal    -127(%edi),%ebx
5421         subl    %esp,%ebx
5422         negl    %ebx
5423         andl    $960,%ebx
5424         subl    %ebx,%esp
5425         addl    $4,%esp
5426         movl    %eax,28(%esp)
5427         call    .L010pic_point
5428 .L010pic_point:
5429         popl    %ebp
5430         leal    OPENSSL_ia32cap_P,%eax
5431         leal    .LAES_Td-.L010pic_point(%ebp),%ebp
5432         leal    764(%esp),%ebx
5433         subl    %ebp,%ebx
5434         andl    $768,%ebx
5435         leal    2176(%ebp,%ebx,1),%ebp
5436         btl     $25,(%eax)
5437         jnc     .L011x86
5438         movq    (%esi),%mm0
5439         movq    8(%esi),%mm4
5440         call    _sse_AES_decrypt_compact
5441         movl    28(%esp),%esp
5442         movl    24(%esp),%esi
5443         movq    %mm0,(%esi)
5444         movq    %mm4,8(%esi)
5445         emms
5446         popl    %edi
5447         popl    %esi
5448         popl    %ebx
5449         popl    %ebp
5450         ret
5451 .align  16
5452 .L011x86:
5453         movl    %ebp,24(%esp)
5454         movl    (%esi),%eax
5455         movl    4(%esi),%ebx
5456         movl    8(%esi),%ecx
5457         movl    12(%esi),%edx
5458         call    _x86_AES_decrypt_compact
5459         movl    28(%esp),%esp
5460         movl    24(%esp),%esi
5461         movl    %eax,(%esi)
5462         movl    %ebx,4(%esi)
5463         movl    %ecx,8(%esi)
5464         movl    %edx,12(%esi)
5465         popl    %edi
5466         popl    %esi
5467         popl    %ebx
5468         popl    %ebp
5469         ret
5470 .size   AES_decrypt,.-.L_AES_decrypt_begin
5471 .globl  AES_cbc_encrypt
5472 .type   AES_cbc_encrypt,@function
5473 .align  16
5474 AES_cbc_encrypt:
5475 .L_AES_cbc_encrypt_begin:
5476         pushl   %ebp
5477         pushl   %ebx
5478         pushl   %esi
5479         pushl   %edi
5480         movl    28(%esp),%ecx
5481         cmpl    $0,%ecx
5482         je      .L012drop_out
5483         call    .L013pic_point
5484 .L013pic_point:
5485         popl    %ebp
5486         leal    OPENSSL_ia32cap_P,%eax
5487         cmpl    $0,40(%esp)
5488         leal    .LAES_Te-.L013pic_point(%ebp),%ebp
5489         jne     .L014picked_te
5490         leal    .LAES_Td-.LAES_Te(%ebp),%ebp
5491 .L014picked_te:
5492         pushfl
5493         cld
5494         cmpl    $512,%ecx
5495         jb      .L015slow_way
5496         testl   $15,%ecx
5497         jnz     .L015slow_way
5498         btl     $28,(%eax)
5499         jc      .L015slow_way
5500         leal    -324(%esp),%esi
5501         andl    $-64,%esi
5502         movl    %ebp,%eax
5503         leal    2304(%ebp),%ebx
5504         movl    %esi,%edx
5505         andl    $4095,%eax
5506         andl    $4095,%ebx
5507         andl    $4095,%edx
5508         cmpl    %ebx,%edx
5509         jb      .L016tbl_break_out
5510         subl    %ebx,%edx
5511         subl    %edx,%esi
5512         jmp     .L017tbl_ok
5513 .align  4
5514 .L016tbl_break_out:
5515         subl    %eax,%edx
5516         andl    $4095,%edx
5517         addl    $384,%edx
5518         subl    %edx,%esi
5519 .align  4
5520 .L017tbl_ok:
5521         leal    24(%esp),%edx
5522         xchgl   %esi,%esp
5523         addl    $4,%esp
5524         movl    %ebp,24(%esp)
5525         movl    %esi,28(%esp)
5526         movl    (%edx),%eax
5527         movl    4(%edx),%ebx
5528         movl    12(%edx),%edi
5529         movl    16(%edx),%esi
5530         movl    20(%edx),%edx
5531         movl    %eax,32(%esp)
5532         movl    %ebx,36(%esp)
5533         movl    %ecx,40(%esp)
5534         movl    %edi,44(%esp)
5535         movl    %esi,48(%esp)
5536         movl    $0,316(%esp)
5537         movl    %edi,%ebx
5538         movl    $61,%ecx
5539         subl    %ebp,%ebx
5540         movl    %edi,%esi
5541         andl    $4095,%ebx
5542         leal    76(%esp),%edi
5543         cmpl    $2304,%ebx
5544         jb      .L018do_copy
5545         cmpl    $3852,%ebx
5546         jb      .L019skip_copy
5547 .align  4
5548 .L018do_copy:
5549         movl    %edi,44(%esp)
5550 .long   2784229001
5551 .L019skip_copy:
5552         movl    $16,%edi
5553 .align  4
5554 .L020prefetch_tbl:
5555         movl    (%ebp),%eax
5556         movl    32(%ebp),%ebx
5557         movl    64(%ebp),%ecx
5558         movl    96(%ebp),%esi
5559         leal    128(%ebp),%ebp
5560         subl    $1,%edi
5561         jnz     .L020prefetch_tbl
5562         subl    $2048,%ebp
5563         movl    32(%esp),%esi
5564         movl    48(%esp),%edi
5565         cmpl    $0,%edx
5566         je      .L021fast_decrypt
5567         movl    (%edi),%eax
5568         movl    4(%edi),%ebx
5569 .align  16
5570 .L022fast_enc_loop:
5571         movl    8(%edi),%ecx
5572         movl    12(%edi),%edx
5573         xorl    (%esi),%eax
5574         xorl    4(%esi),%ebx
5575         xorl    8(%esi),%ecx
5576         xorl    12(%esi),%edx
5577         movl    44(%esp),%edi
5578         call    _x86_AES_encrypt
5579         movl    32(%esp),%esi
5580         movl    36(%esp),%edi
5581         movl    %eax,(%edi)
5582         movl    %ebx,4(%edi)
5583         movl    %ecx,8(%edi)
5584         movl    %edx,12(%edi)
5585         leal    16(%esi),%esi
5586         movl    40(%esp),%ecx
5587         movl    %esi,32(%esp)
5588         leal    16(%edi),%edx
5589         movl    %edx,36(%esp)
5590         subl    $16,%ecx
5591         movl    %ecx,40(%esp)
5592         jnz     .L022fast_enc_loop
5593         movl    48(%esp),%esi
5594         movl    8(%edi),%ecx
5595         movl    12(%edi),%edx
5596         movl    %eax,(%esi)
5597         movl    %ebx,4(%esi)
5598         movl    %ecx,8(%esi)
5599         movl    %edx,12(%esi)
5600         cmpl    $0,316(%esp)
5601         movl    44(%esp),%edi
5602         je      .L023skip_ezero
5603         movl    $60,%ecx
5604         xorl    %eax,%eax
5605 .align  4
5606 .long   2884892297
5607 .L023skip_ezero:
5608         movl    28(%esp),%esp
5609         popfl
5610 .L012drop_out:
5611         popl    %edi
5612         popl    %esi
5613         popl    %ebx
5614         popl    %ebp
5615         ret
5616         pushfl
5617 .align  16
5618 .L021fast_decrypt:
5619         cmpl    36(%esp),%esi
5620         je      .L024fast_dec_in_place
5621         movl    %edi,52(%esp)
5622 .align  4
5623 .align  16
5624 .L025fast_dec_loop:
5625         movl    (%esi),%eax
5626         movl    4(%esi),%ebx
5627         movl    8(%esi),%ecx
5628         movl    12(%esi),%edx
5629         movl    44(%esp),%edi
5630         call    _x86_AES_decrypt
5631         movl    52(%esp),%edi
5632         movl    40(%esp),%esi
5633         xorl    (%edi),%eax
5634         xorl    4(%edi),%ebx
5635         xorl    8(%edi),%ecx
5636         xorl    12(%edi),%edx
5637         movl    36(%esp),%edi
5638         movl    32(%esp),%esi
5639         movl    %eax,(%edi)
5640         movl    %ebx,4(%edi)
5641         movl    %ecx,8(%edi)
5642         movl    %edx,12(%edi)
5643         movl    40(%esp),%ecx
5644         movl    %esi,52(%esp)
5645         leal    16(%esi),%esi
5646         movl    %esi,32(%esp)
5647         leal    16(%edi),%edi
5648         movl    %edi,36(%esp)
5649         subl    $16,%ecx
5650         movl    %ecx,40(%esp)
5651         jnz     .L025fast_dec_loop
5652         movl    52(%esp),%edi
5653         movl    48(%esp),%esi
5654         movl    (%edi),%eax
5655         movl    4(%edi),%ebx
5656         movl    8(%edi),%ecx
5657         movl    12(%edi),%edx
5658         movl    %eax,(%esi)
5659         movl    %ebx,4(%esi)
5660         movl    %ecx,8(%esi)
5661         movl    %edx,12(%esi)
5662         jmp     .L026fast_dec_out
5663 .align  16
5664 .L024fast_dec_in_place:
5665 .L027fast_dec_in_place_loop:
5666         movl    (%esi),%eax
5667         movl    4(%esi),%ebx
5668         movl    8(%esi),%ecx
5669         movl    12(%esi),%edx
5670         leal    60(%esp),%edi
5671         movl    %eax,(%edi)
5672         movl    %ebx,4(%edi)
5673         movl    %ecx,8(%edi)
5674         movl    %edx,12(%edi)
5675         movl    44(%esp),%edi
5676         call    _x86_AES_decrypt
5677         movl    48(%esp),%edi
5678         movl    36(%esp),%esi
5679         xorl    (%edi),%eax
5680         xorl    4(%edi),%ebx
5681         xorl    8(%edi),%ecx
5682         xorl    12(%edi),%edx
5683         movl    %eax,(%esi)
5684         movl    %ebx,4(%esi)
5685         movl    %ecx,8(%esi)
5686         movl    %edx,12(%esi)
5687         leal    16(%esi),%esi
5688         movl    %esi,36(%esp)
5689         leal    60(%esp),%esi
5690         movl    (%esi),%eax
5691         movl    4(%esi),%ebx
5692         movl    8(%esi),%ecx
5693         movl    12(%esi),%edx
5694         movl    %eax,(%edi)
5695         movl    %ebx,4(%edi)
5696         movl    %ecx,8(%edi)
5697         movl    %edx,12(%edi)
5698         movl    32(%esp),%esi
5699         movl    40(%esp),%ecx
5700         leal    16(%esi),%esi
5701         movl    %esi,32(%esp)
5702         subl    $16,%ecx
5703         movl    %ecx,40(%esp)
5704         jnz     .L027fast_dec_in_place_loop
5705 .align  4
5706 .L026fast_dec_out:
5707         cmpl    $0,316(%esp)
5708         movl    44(%esp),%edi
5709         je      .L028skip_dzero
5710         movl    $60,%ecx
5711         xorl    %eax,%eax
5712 .align  4
5713 .long   2884892297
5714 .L028skip_dzero:
5715         movl    28(%esp),%esp
5716         popfl
5717         popl    %edi
5718         popl    %esi
5719         popl    %ebx
5720         popl    %ebp
5721         ret
5722         pushfl
5723 .align  16
5724 .L015slow_way:
5725         movl    (%eax),%eax
5726         movl    36(%esp),%edi
5727         leal    -80(%esp),%esi
5728         andl    $-64,%esi
5729         leal    -143(%edi),%ebx
5730         subl    %esi,%ebx
5731         negl    %ebx
5732         andl    $960,%ebx
5733         subl    %ebx,%esi
5734         leal    768(%esi),%ebx
5735         subl    %ebp,%ebx
5736         andl    $768,%ebx
5737         leal    2176(%ebp,%ebx,1),%ebp
5738         leal    24(%esp),%edx
5739         xchgl   %esi,%esp
5740         addl    $4,%esp
5741         movl    %ebp,24(%esp)
5742         movl    %esi,28(%esp)
5743         movl    %eax,52(%esp)
5744         movl    (%edx),%eax
5745         movl    4(%edx),%ebx
5746         movl    16(%edx),%esi
5747         movl    20(%edx),%edx
5748         movl    %eax,32(%esp)
5749         movl    %ebx,36(%esp)
5750         movl    %ecx,40(%esp)
5751         movl    %edi,44(%esp)
5752         movl    %esi,48(%esp)
5753         movl    %esi,%edi
5754         movl    %eax,%esi
5755         cmpl    $0,%edx
5756         je      .L029slow_decrypt
5757         cmpl    $16,%ecx
5758         movl    %ebx,%edx
5759         jb      .L030slow_enc_tail
5760         btl     $25,52(%esp)
5761         jnc     .L031slow_enc_x86
5762         movq    (%edi),%mm0
5763         movq    8(%edi),%mm4
5764 .align  16
5765 .L032slow_enc_loop_sse:
5766         pxor    (%esi),%mm0
5767         pxor    8(%esi),%mm4
5768         movl    44(%esp),%edi
5769         call    _sse_AES_encrypt_compact
5770         movl    32(%esp),%esi
5771         movl    36(%esp),%edi
5772         movl    40(%esp),%ecx
5773         movq    %mm0,(%edi)
5774         movq    %mm4,8(%edi)
5775         leal    16(%esi),%esi
5776         movl    %esi,32(%esp)
5777         leal    16(%edi),%edx
5778         movl    %edx,36(%esp)
5779         subl    $16,%ecx
5780         cmpl    $16,%ecx
5781         movl    %ecx,40(%esp)
5782         jae     .L032slow_enc_loop_sse
5783         testl   $15,%ecx
5784         jnz     .L030slow_enc_tail
5785         movl    48(%esp),%esi
5786         movq    %mm0,(%esi)
5787         movq    %mm4,8(%esi)
5788         emms
5789         movl    28(%esp),%esp
5790         popfl
5791         popl    %edi
5792         popl    %esi
5793         popl    %ebx
5794         popl    %ebp
5795         ret
5796         pushfl
5797 .align  16
5798 .L031slow_enc_x86:
5799         movl    (%edi),%eax
5800         movl    4(%edi),%ebx
5801 .align  4
5802 .L033slow_enc_loop_x86:
5803         movl    8(%edi),%ecx
5804         movl    12(%edi),%edx
5805         xorl    (%esi),%eax
5806         xorl    4(%esi),%ebx
5807         xorl    8(%esi),%ecx
5808         xorl    12(%esi),%edx
5809         movl    44(%esp),%edi
5810         call    _x86_AES_encrypt_compact
5811         movl    32(%esp),%esi
5812         movl    36(%esp),%edi
5813         movl    %eax,(%edi)
5814         movl    %ebx,4(%edi)
5815         movl    %ecx,8(%edi)
5816         movl    %edx,12(%edi)
5817         movl    40(%esp),%ecx
5818         leal    16(%esi),%esi
5819         movl    %esi,32(%esp)
5820         leal    16(%edi),%edx
5821         movl    %edx,36(%esp)
5822         subl    $16,%ecx
5823         cmpl    $16,%ecx
5824         movl    %ecx,40(%esp)
5825         jae     .L033slow_enc_loop_x86
5826         testl   $15,%ecx
5827         jnz     .L030slow_enc_tail
5828         movl    48(%esp),%esi
5829         movl    8(%edi),%ecx
5830         movl    12(%edi),%edx
5831         movl    %eax,(%esi)
5832         movl    %ebx,4(%esi)
5833         movl    %ecx,8(%esi)
5834         movl    %edx,12(%esi)
5835         movl    28(%esp),%esp
5836         popfl
5837         popl    %edi
5838         popl    %esi
5839         popl    %ebx
5840         popl    %ebp
5841         ret
5842         pushfl
5843 .align  16
5844 .L030slow_enc_tail:
5845         emms
5846         movl    %edx,%edi
5847         movl    $16,%ebx
5848         subl    %ecx,%ebx
5849         cmpl    %esi,%edi
5850         je      .L034enc_in_place
5851 .align  4
5852 .long   2767451785
5853         jmp     .L035enc_skip_in_place
5854 .L034enc_in_place:
5855         leal    (%edi,%ecx,1),%edi
5856 .L035enc_skip_in_place:
5857         movl    %ebx,%ecx
5858         xorl    %eax,%eax
5859 .align  4
5860 .long   2868115081
5861         movl    48(%esp),%edi
5862         movl    %edx,%esi
5863         movl    (%edi),%eax
5864         movl    4(%edi),%ebx
5865         movl    $16,40(%esp)
5866         jmp     .L033slow_enc_loop_x86
5867 .align  16
5868 .L029slow_decrypt:
5869         btl     $25,52(%esp)
5870         jnc     .L036slow_dec_loop_x86
5871 .align  4
5872 .L037slow_dec_loop_sse:
5873         movq    (%esi),%mm0
5874         movq    8(%esi),%mm4
5875         movl    44(%esp),%edi
5876         call    _sse_AES_decrypt_compact
5877         movl    32(%esp),%esi
5878         leal    60(%esp),%eax
5879         movl    36(%esp),%ebx
5880         movl    40(%esp),%ecx
5881         movl    48(%esp),%edi
5882         movq    (%esi),%mm1
5883         movq    8(%esi),%mm5
5884         pxor    (%edi),%mm0
5885         pxor    8(%edi),%mm4
5886         movq    %mm1,(%edi)
5887         movq    %mm5,8(%edi)
5888         subl    $16,%ecx
5889         jc      .L038slow_dec_partial_sse
5890         movq    %mm0,(%ebx)
5891         movq    %mm4,8(%ebx)
5892         leal    16(%ebx),%ebx
5893         movl    %ebx,36(%esp)
5894         leal    16(%esi),%esi
5895         movl    %esi,32(%esp)
5896         movl    %ecx,40(%esp)
5897         jnz     .L037slow_dec_loop_sse
5898         emms
5899         movl    28(%esp),%esp
5900         popfl
5901         popl    %edi
5902         popl    %esi
5903         popl    %ebx
5904         popl    %ebp
5905         ret
5906         pushfl
5907 .align  16
5908 .L038slow_dec_partial_sse:
5909         movq    %mm0,(%eax)
5910         movq    %mm4,8(%eax)
5911         emms
5912         addl    $16,%ecx
5913         movl    %ebx,%edi
5914         movl    %eax,%esi
5915 .align  4
5916 .long   2767451785
5917         movl    28(%esp),%esp
5918         popfl
5919         popl    %edi
5920         popl    %esi
5921         popl    %ebx
5922         popl    %ebp
5923         ret
5924         pushfl
5925 .align  16
5926 .L036slow_dec_loop_x86:
5927         movl    (%esi),%eax
5928         movl    4(%esi),%ebx
5929         movl    8(%esi),%ecx
5930         movl    12(%esi),%edx
5931         leal    60(%esp),%edi
5932         movl    %eax,(%edi)
5933         movl    %ebx,4(%edi)
5934         movl    %ecx,8(%edi)
5935         movl    %edx,12(%edi)
5936         movl    44(%esp),%edi
5937         call    _x86_AES_decrypt_compact
5938         movl    48(%esp),%edi
5939         movl    40(%esp),%esi
5940         xorl    (%edi),%eax
5941         xorl    4(%edi),%ebx
5942         xorl    8(%edi),%ecx
5943         xorl    12(%edi),%edx
5944         subl    $16,%esi
5945         jc      .L039slow_dec_partial_x86
5946         movl    %esi,40(%esp)
5947         movl    36(%esp),%esi
5948         movl    %eax,(%esi)
5949         movl    %ebx,4(%esi)
5950         movl    %ecx,8(%esi)
5951         movl    %edx,12(%esi)
5952         leal    16(%esi),%esi
5953         movl    %esi,36(%esp)
5954         leal    60(%esp),%esi
5955         movl    (%esi),%eax
5956         movl    4(%esi),%ebx
5957         movl    8(%esi),%ecx
5958         movl    12(%esi),%edx
5959         movl    %eax,(%edi)
5960         movl    %ebx,4(%edi)
5961         movl    %ecx,8(%edi)
5962         movl    %edx,12(%edi)
5963         movl    32(%esp),%esi
5964         leal    16(%esi),%esi
5965         movl    %esi,32(%esp)
5966         jnz     .L036slow_dec_loop_x86
5967         movl    28(%esp),%esp
5968         popfl
5969         popl    %edi
5970         popl    %esi
5971         popl    %ebx
5972         popl    %ebp
5973         ret
5974         pushfl
5975 .align  16
5976 .L039slow_dec_partial_x86:
5977         leal    60(%esp),%esi
5978         movl    %eax,(%esi)
5979         movl    %ebx,4(%esi)
5980         movl    %ecx,8(%esi)
5981         movl    %edx,12(%esi)
5982         movl    32(%esp),%esi
5983         movl    (%esi),%eax
5984         movl    4(%esi),%ebx
5985         movl    8(%esi),%ecx
5986         movl    12(%esi),%edx
5987         movl    %eax,(%edi)
5988         movl    %ebx,4(%edi)
5989         movl    %ecx,8(%edi)
5990         movl    %edx,12(%edi)
5991         movl    40(%esp),%ecx
5992         movl    36(%esp),%edi
5993         leal    60(%esp),%esi
5994 .align  4
5995 .long   2767451785
5996         movl    28(%esp),%esp
5997         popfl
5998         popl    %edi
5999         popl    %esi
6000         popl    %ebx
6001         popl    %ebp
6002         ret
6003 .size   AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin
6004 .type   _x86_AES_set_encrypt_key,@function
6005 .align  16
6006 _x86_AES_set_encrypt_key:
6007         pushl   %ebp
6008         pushl   %ebx
6009         pushl   %esi
6010         pushl   %edi
6011         movl    24(%esp),%esi
6012         movl    32(%esp),%edi
6013         testl   $-1,%esi
6014         jz      .L040badpointer
6015         testl   $-1,%edi
6016         jz      .L040badpointer
6017         call    .L041pic_point
6018 .L041pic_point:
6019         popl    %ebp
6020         leal    .LAES_Te-.L041pic_point(%ebp),%ebp
6021         leal    2176(%ebp),%ebp
6022         movl    -128(%ebp),%eax
6023         movl    -96(%ebp),%ebx
6024         movl    -64(%ebp),%ecx
6025         movl    -32(%ebp),%edx
6026         movl    (%ebp),%eax
6027         movl    32(%ebp),%ebx
6028         movl    64(%ebp),%ecx
6029         movl    96(%ebp),%edx
6030         movl    28(%esp),%ecx
6031         cmpl    $128,%ecx
6032         je      .L04210rounds
6033         cmpl    $192,%ecx
6034         je      .L04312rounds
6035         cmpl    $256,%ecx
6036         je      .L04414rounds
6037         movl    $-2,%eax
6038         jmp     .L045exit
6039 .L04210rounds:
6040         movl    (%esi),%eax
6041         movl    4(%esi),%ebx
6042         movl    8(%esi),%ecx
6043         movl    12(%esi),%edx
6044         movl    %eax,(%edi)
6045         movl    %ebx,4(%edi)
6046         movl    %ecx,8(%edi)
6047         movl    %edx,12(%edi)
6048         xorl    %ecx,%ecx
6049         jmp     .L04610shortcut
6050 .align  4
6051 .L04710loop:
6052         movl    (%edi),%eax
6053         movl    12(%edi),%edx
6054 .L04610shortcut:
6055         movzbl  %dl,%esi
6056         movzbl  -128(%ebp,%esi,1),%ebx
6057         movzbl  %dh,%esi
6058         shll    $24,%ebx
6059         xorl    %ebx,%eax
6060         movzbl  -128(%ebp,%esi,1),%ebx
6061         shrl    $16,%edx
6062         movzbl  %dl,%esi
6063         xorl    %ebx,%eax
6064         movzbl  -128(%ebp,%esi,1),%ebx
6065         movzbl  %dh,%esi
6066         shll    $8,%ebx
6067         xorl    %ebx,%eax
6068         movzbl  -128(%ebp,%esi,1),%ebx
6069         shll    $16,%ebx
6070         xorl    %ebx,%eax
6071         xorl    896(%ebp,%ecx,4),%eax
6072         movl    %eax,16(%edi)
6073         xorl    4(%edi),%eax
6074         movl    %eax,20(%edi)
6075         xorl    8(%edi),%eax
6076         movl    %eax,24(%edi)
6077         xorl    12(%edi),%eax
6078         movl    %eax,28(%edi)
6079         incl    %ecx
6080         addl    $16,%edi
6081         cmpl    $10,%ecx
6082         jl      .L04710loop
6083         movl    $10,80(%edi)
6084         xorl    %eax,%eax
6085         jmp     .L045exit
6086 .L04312rounds:
6087         movl    (%esi),%eax
6088         movl    4(%esi),%ebx
6089         movl    8(%esi),%ecx
6090         movl    12(%esi),%edx
6091         movl    %eax,(%edi)
6092         movl    %ebx,4(%edi)
6093         movl    %ecx,8(%edi)
6094         movl    %edx,12(%edi)
6095         movl    16(%esi),%ecx
6096         movl    20(%esi),%edx
6097         movl    %ecx,16(%edi)
6098         movl    %edx,20(%edi)
6099         xorl    %ecx,%ecx
6100         jmp     .L04812shortcut
6101 .align  4
6102 .L04912loop:
6103         movl    (%edi),%eax
6104         movl    20(%edi),%edx
6105 .L04812shortcut:
6106         movzbl  %dl,%esi
6107         movzbl  -128(%ebp,%esi,1),%ebx
6108         movzbl  %dh,%esi
6109         shll    $24,%ebx
6110         xorl    %ebx,%eax
6111         movzbl  -128(%ebp,%esi,1),%ebx
6112         shrl    $16,%edx
6113         movzbl  %dl,%esi
6114         xorl    %ebx,%eax
6115         movzbl  -128(%ebp,%esi,1),%ebx
6116         movzbl  %dh,%esi
6117         shll    $8,%ebx
6118         xorl    %ebx,%eax
6119         movzbl  -128(%ebp,%esi,1),%ebx
6120         shll    $16,%ebx
6121         xorl    %ebx,%eax
6122         xorl    896(%ebp,%ecx,4),%eax
6123         movl    %eax,24(%edi)
6124         xorl    4(%edi),%eax
6125         movl    %eax,28(%edi)
6126         xorl    8(%edi),%eax
6127         movl    %eax,32(%edi)
6128         xorl    12(%edi),%eax
6129         movl    %eax,36(%edi)
6130         cmpl    $7,%ecx
6131         je      .L05012break
6132         incl    %ecx
6133         xorl    16(%edi),%eax
6134         movl    %eax,40(%edi)
6135         xorl    20(%edi),%eax
6136         movl    %eax,44(%edi)
6137         addl    $24,%edi
6138         jmp     .L04912loop
6139 .L05012break:
6140         movl    $12,72(%edi)
6141         xorl    %eax,%eax
6142         jmp     .L045exit
6143 .L04414rounds:
6144         movl    (%esi),%eax
6145         movl    4(%esi),%ebx
6146         movl    8(%esi),%ecx
6147         movl    12(%esi),%edx
6148         movl    %eax,(%edi)
6149         movl    %ebx,4(%edi)
6150         movl    %ecx,8(%edi)
6151         movl    %edx,12(%edi)
6152         movl    16(%esi),%eax
6153         movl    20(%esi),%ebx
6154         movl    24(%esi),%ecx
6155         movl    28(%esi),%edx
6156         movl    %eax,16(%edi)
6157         movl    %ebx,20(%edi)
6158         movl    %ecx,24(%edi)
6159         movl    %edx,28(%edi)
6160         xorl    %ecx,%ecx
6161         jmp     .L05114shortcut
6162 .align  4
6163 .L05214loop:
6164         movl    28(%edi),%edx
6165 .L05114shortcut:
6166         movl    (%edi),%eax
6167         movzbl  %dl,%esi
6168         movzbl  -128(%ebp,%esi,1),%ebx
6169         movzbl  %dh,%esi
6170         shll    $24,%ebx
6171         xorl    %ebx,%eax
6172         movzbl  -128(%ebp,%esi,1),%ebx
6173         shrl    $16,%edx
6174         movzbl  %dl,%esi
6175         xorl    %ebx,%eax
6176         movzbl  -128(%ebp,%esi,1),%ebx
6177         movzbl  %dh,%esi
6178         shll    $8,%ebx
6179         xorl    %ebx,%eax
6180         movzbl  -128(%ebp,%esi,1),%ebx
6181         shll    $16,%ebx
6182         xorl    %ebx,%eax
6183         xorl    896(%ebp,%ecx,4),%eax
6184         movl    %eax,32(%edi)
6185         xorl    4(%edi),%eax
6186         movl    %eax,36(%edi)
6187         xorl    8(%edi),%eax
6188         movl    %eax,40(%edi)
6189         xorl    12(%edi),%eax
6190         movl    %eax,44(%edi)
6191         cmpl    $6,%ecx
6192         je      .L05314break
6193         incl    %ecx
6194         movl    %eax,%edx
6195         movl    16(%edi),%eax
6196         movzbl  %dl,%esi
6197         movzbl  -128(%ebp,%esi,1),%ebx
6198         movzbl  %dh,%esi
6199         xorl    %ebx,%eax
6200         movzbl  -128(%ebp,%esi,1),%ebx
6201         shrl    $16,%edx
6202         shll    $8,%ebx
6203         movzbl  %dl,%esi
6204         xorl    %ebx,%eax
6205         movzbl  -128(%ebp,%esi,1),%ebx
6206         movzbl  %dh,%esi
6207         shll    $16,%ebx
6208         xorl    %ebx,%eax
6209         movzbl  -128(%ebp,%esi,1),%ebx
6210         shll    $24,%ebx
6211         xorl    %ebx,%eax
6212         movl    %eax,48(%edi)
6213         xorl    20(%edi),%eax
6214         movl    %eax,52(%edi)
6215         xorl    24(%edi),%eax
6216         movl    %eax,56(%edi)
6217         xorl    28(%edi),%eax
6218         movl    %eax,60(%edi)
6219         addl    $32,%edi
6220         jmp     .L05214loop
6221 .L05314break:
6222         movl    $14,48(%edi)
6223         xorl    %eax,%eax
6224         jmp     .L045exit
6225 .L040badpointer:
6226         movl    $-1,%eax
6227 .L045exit:
6228         popl    %edi
6229         popl    %esi
6230         popl    %ebx
6231         popl    %ebp
6232         ret
6233 .size   _x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key
6234 .globl  private_AES_set_encrypt_key
6235 .type   private_AES_set_encrypt_key,@function
6236 .align  16
6237 private_AES_set_encrypt_key:
6238 .L_private_AES_set_encrypt_key_begin:
6239         call    _x86_AES_set_encrypt_key
6240         ret
6241 .size   private_AES_set_encrypt_key,.-.L_private_AES_set_encrypt_key_begin
6242 .globl  private_AES_set_decrypt_key
6243 .type   private_AES_set_decrypt_key,@function
6244 .align  16
6245 private_AES_set_decrypt_key:
6246 .L_private_AES_set_decrypt_key_begin:
6247         call    _x86_AES_set_encrypt_key
6248         cmpl    $0,%eax
6249         je      .L054proceed
6250         ret
6251 .L054proceed:
6252         pushl   %ebp
6253         pushl   %ebx
6254         pushl   %esi
6255         pushl   %edi
6256         movl    28(%esp),%esi
6257         movl    240(%esi),%ecx
6258         leal    (,%ecx,4),%ecx
6259         leal    (%esi,%ecx,4),%edi
6260 .align  4
6261 .L055invert:
6262         movl    (%esi),%eax
6263         movl    4(%esi),%ebx
6264         movl    (%edi),%ecx
6265         movl    4(%edi),%edx
6266         movl    %eax,(%edi)
6267         movl    %ebx,4(%edi)
6268         movl    %ecx,(%esi)
6269         movl    %edx,4(%esi)
6270         movl    8(%esi),%eax
6271         movl    12(%esi),%ebx
6272         movl    8(%edi),%ecx
6273         movl    12(%edi),%edx
6274         movl    %eax,8(%edi)
6275         movl    %ebx,12(%edi)
6276         movl    %ecx,8(%esi)
6277         movl    %edx,12(%esi)
6278         addl    $16,%esi
6279         subl    $16,%edi
6280         cmpl    %edi,%esi
6281         jne     .L055invert
6282         movl    28(%esp),%edi
6283         movl    240(%edi),%esi
6284         leal    -2(%esi,%esi,1),%esi
6285         leal    (%edi,%esi,8),%esi
6286         movl    %esi,28(%esp)
6287         movl    16(%edi),%eax
6288 .align  4
6289 .L056permute:
6290         addl    $16,%edi
6291         movl    %eax,%esi
6292         andl    $2155905152,%esi
6293         movl    %esi,%ebp
6294         shrl    $7,%ebp
6295         leal    (%eax,%eax,1),%ebx
6296         subl    %ebp,%esi
6297         andl    $4278124286,%ebx
6298         andl    $454761243,%esi
6299         xorl    %ebx,%esi
6300         movl    %esi,%ebx
6301         andl    $2155905152,%esi
6302         movl    %esi,%ebp
6303         shrl    $7,%ebp
6304         leal    (%ebx,%ebx,1),%ecx
6305         subl    %ebp,%esi
6306         andl    $4278124286,%ecx
6307         andl    $454761243,%esi
6308         xorl    %eax,%ebx
6309         xorl    %ecx,%esi
6310         movl    %esi,%ecx
6311         andl    $2155905152,%esi
6312         movl    %esi,%ebp
6313         shrl    $7,%ebp
6314         leal    (%ecx,%ecx,1),%edx
6315         xorl    %eax,%ecx
6316         subl    %ebp,%esi
6317         andl    $4278124286,%edx
6318         andl    $454761243,%esi
6319         roll    $8,%eax
6320         xorl    %esi,%edx
6321         movl    4(%edi),%ebp
6322         xorl    %ebx,%eax
6323         xorl    %edx,%ebx
6324         xorl    %ecx,%eax
6325         roll    $24,%ebx
6326         xorl    %edx,%ecx
6327         xorl    %edx,%eax
6328         roll    $16,%ecx
6329         xorl    %ebx,%eax
6330         roll    $8,%edx
6331         xorl    %ecx,%eax
6332         movl    %ebp,%ebx
6333         xorl    %edx,%eax
6334         movl    %eax,(%edi)
6335         movl    %ebx,%esi
6336         andl    $2155905152,%esi
6337         movl    %esi,%ebp
6338         shrl    $7,%ebp
6339         leal    (%ebx,%ebx,1),%ecx
6340         subl    %ebp,%esi
6341         andl    $4278124286,%ecx
6342         andl    $454761243,%esi
6343         xorl    %ecx,%esi
6344         movl    %esi,%ecx
6345         andl    $2155905152,%esi
6346         movl    %esi,%ebp
6347         shrl    $7,%ebp
6348         leal    (%ecx,%ecx,1),%edx
6349         subl    %ebp,%esi
6350         andl    $4278124286,%edx
6351         andl    $454761243,%esi
6352         xorl    %ebx,%ecx
6353         xorl    %edx,%esi
6354         movl    %esi,%edx
6355         andl    $2155905152,%esi
6356         movl    %esi,%ebp
6357         shrl    $7,%ebp
6358         leal    (%edx,%edx,1),%eax
6359         xorl    %ebx,%edx
6360         subl    %ebp,%esi
6361         andl    $4278124286,%eax
6362         andl    $454761243,%esi
6363         roll    $8,%ebx
6364         xorl    %esi,%eax
6365         movl    8(%edi),%ebp
6366         xorl    %ecx,%ebx
6367         xorl    %eax,%ecx
6368         xorl    %edx,%ebx
6369         roll    $24,%ecx
6370         xorl    %eax,%edx
6371         xorl    %eax,%ebx
6372         roll    $16,%edx
6373         xorl    %ecx,%ebx
6374         roll    $8,%eax
6375         xorl    %edx,%ebx
6376         movl    %ebp,%ecx
6377         xorl    %eax,%ebx
6378         movl    %ebx,4(%edi)
6379         movl    %ecx,%esi
6380         andl    $2155905152,%esi
6381         movl    %esi,%ebp
6382         shrl    $7,%ebp
6383         leal    (%ecx,%ecx,1),%edx
6384         subl    %ebp,%esi
6385         andl    $4278124286,%edx
6386         andl    $454761243,%esi
6387         xorl    %edx,%esi
6388         movl    %esi,%edx
6389         andl    $2155905152,%esi
6390         movl    %esi,%ebp
6391         shrl    $7,%ebp
6392         leal    (%edx,%edx,1),%eax
6393         subl    %ebp,%esi
6394         andl    $4278124286,%eax
6395         andl    $454761243,%esi
6396         xorl    %ecx,%edx
6397         xorl    %eax,%esi
6398         movl    %esi,%eax
6399         andl    $2155905152,%esi
6400         movl    %esi,%ebp
6401         shrl    $7,%ebp
6402         leal    (%eax,%eax,1),%ebx
6403         xorl    %ecx,%eax
6404         subl    %ebp,%esi
6405         andl    $4278124286,%ebx
6406         andl    $454761243,%esi
6407         roll    $8,%ecx
6408         xorl    %esi,%ebx
6409         movl    12(%edi),%ebp
6410         xorl    %edx,%ecx
6411         xorl    %ebx,%edx
6412         xorl    %eax,%ecx
6413         roll    $24,%edx
6414         xorl    %ebx,%eax
6415         xorl    %ebx,%ecx
6416         roll    $16,%eax
6417         xorl    %edx,%ecx
6418         roll    $8,%ebx
6419         xorl    %eax,%ecx
6420         movl    %ebp,%edx
6421         xorl    %ebx,%ecx
6422         movl    %ecx,8(%edi)
6423         movl    %edx,%esi
6424         andl    $2155905152,%esi
6425         movl    %esi,%ebp
6426         shrl    $7,%ebp
6427         leal    (%edx,%edx,1),%eax
6428         subl    %ebp,%esi
6429         andl    $4278124286,%eax
6430         andl    $454761243,%esi
6431         xorl    %eax,%esi
6432         movl    %esi,%eax
6433         andl    $2155905152,%esi
6434         movl    %esi,%ebp
6435         shrl    $7,%ebp
6436         leal    (%eax,%eax,1),%ebx
6437         subl    %ebp,%esi
6438         andl    $4278124286,%ebx
6439         andl    $454761243,%esi
6440         xorl    %edx,%eax
6441         xorl    %ebx,%esi
6442         movl    %esi,%ebx
6443         andl    $2155905152,%esi
6444         movl    %esi,%ebp
6445         shrl    $7,%ebp
6446         leal    (%ebx,%ebx,1),%ecx
6447         xorl    %edx,%ebx
6448         subl    %ebp,%esi
6449         andl    $4278124286,%ecx
6450         andl    $454761243,%esi
6451         roll    $8,%edx
6452         xorl    %esi,%ecx
6453         movl    16(%edi),%ebp
6454         xorl    %eax,%edx
6455         xorl    %ecx,%eax
6456         xorl    %ebx,%edx
6457         roll    $24,%eax
6458         xorl    %ecx,%ebx
6459         xorl    %ecx,%edx
6460         roll    $16,%ebx
6461         xorl    %eax,%edx
6462         roll    $8,%ecx
6463         xorl    %ebx,%edx
6464         movl    %ebp,%eax
6465         xorl    %ecx,%edx
6466         movl    %edx,12(%edi)
6467         cmpl    28(%esp),%edi
6468         jb      .L056permute
6469         xorl    %eax,%eax
6470         popl    %edi
6471         popl    %esi
6472         popl    %ebx
6473         popl    %ebp
6474         ret
6475 .size   private_AES_set_decrypt_key,.-.L_private_AES_set_decrypt_key_begin
6476 .byte   65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
6477 .byte   80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
6478 .byte   111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
6479 .comm   OPENSSL_ia32cap_P,8,4
6480 #endif