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