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