]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - secure/lib/libcrypto/i386/aes-586.s
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / secure / lib / libcrypto / i386 / aes-586.s
1         # $FreeBSD$
2 .file   "aes-586.s"
3 .text
4 .type   _x86_AES_encrypt_compact,@function
5 .align  16
6 _x86_AES_encrypt_compact:
7         movl    %edi,20(%esp)
8         xorl    (%edi),%eax
9         xorl    4(%edi),%ebx
10         xorl    8(%edi),%ecx
11         xorl    12(%edi),%edx
12         movl    240(%edi),%esi
13         leal    -2(%esi,%esi,1),%esi
14         leal    (%edi,%esi,8),%esi
15         movl    %esi,24(%esp)
16         movl    -128(%ebp),%edi
17         movl    -96(%ebp),%esi
18         movl    -64(%ebp),%edi
19         movl    -32(%ebp),%esi
20         movl    (%ebp),%edi
21         movl    32(%ebp),%esi
22         movl    64(%ebp),%edi
23         movl    96(%ebp),%esi
24 .align  16
25 .L000loop:
26         movl    %eax,%esi
27         andl    $255,%esi
28         movzbl  -128(%ebp,%esi,1),%esi
29         movzbl  %bh,%edi
30         movzbl  -128(%ebp,%edi,1),%edi
31         shll    $8,%edi
32         xorl    %edi,%esi
33         movl    %ecx,%edi
34         shrl    $16,%edi
35         andl    $255,%edi
36         movzbl  -128(%ebp,%edi,1),%edi
37         shll    $16,%edi
38         xorl    %edi,%esi
39         movl    %edx,%edi
40         shrl    $24,%edi
41         movzbl  -128(%ebp,%edi,1),%edi
42         shll    $24,%edi
43         xorl    %edi,%esi
44         movl    %esi,4(%esp)
45
46         movl    %ebx,%esi
47         andl    $255,%esi
48         shrl    $16,%ebx
49         movzbl  -128(%ebp,%esi,1),%esi
50         movzbl  %ch,%edi
51         movzbl  -128(%ebp,%edi,1),%edi
52         shll    $8,%edi
53         xorl    %edi,%esi
54         movl    %edx,%edi
55         shrl    $16,%edi
56         andl    $255,%edi
57         movzbl  -128(%ebp,%edi,1),%edi
58         shll    $16,%edi
59         xorl    %edi,%esi
60         movl    %eax,%edi
61         shrl    $24,%edi
62         movzbl  -128(%ebp,%edi,1),%edi
63         shll    $24,%edi
64         xorl    %edi,%esi
65         movl    %esi,8(%esp)
66
67         movl    %ecx,%esi
68         andl    $255,%esi
69         shrl    $24,%ecx
70         movzbl  -128(%ebp,%esi,1),%esi
71         movzbl  %dh,%edi
72         movzbl  -128(%ebp,%edi,1),%edi
73         shll    $8,%edi
74         xorl    %edi,%esi
75         movl    %eax,%edi
76         shrl    $16,%edi
77         andl    $255,%edx
78         andl    $255,%edi
79         movzbl  -128(%ebp,%edi,1),%edi
80         shll    $16,%edi
81         xorl    %edi,%esi
82         movzbl  %bh,%edi
83         movzbl  -128(%ebp,%edi,1),%edi
84         shll    $24,%edi
85         xorl    %edi,%esi
86
87         andl    $255,%edx
88         movzbl  -128(%ebp,%edx,1),%edx
89         movzbl  %ah,%eax
90         movzbl  -128(%ebp,%eax,1),%eax
91         shll    $8,%eax
92         xorl    %eax,%edx
93         movl    4(%esp),%eax
94         andl    $255,%ebx
95         movzbl  -128(%ebp,%ebx,1),%ebx
96         shll    $16,%ebx
97         xorl    %ebx,%edx
98         movl    8(%esp),%ebx
99         movzbl  -128(%ebp,%ecx,1),%ecx
100         shll    $24,%ecx
101         xorl    %ecx,%edx
102         movl    %esi,%ecx
103
104         movl    %ecx,%esi
105         andl    $2155905152,%esi
106         movl    %esi,%ebp
107         shrl    $7,%ebp
108         leal    (%ecx,%ecx,1),%edi
109         subl    %ebp,%esi
110         andl    $4278124286,%edi
111         andl    $454761243,%esi
112         movl    %ecx,%ebp
113         xorl    %edi,%esi
114         xorl    %esi,%ecx
115         roll    $24,%ecx
116         xorl    %esi,%ecx
117         rorl    $16,%ebp
118         xorl    %ebp,%ecx
119         rorl    $8,%ebp
120         xorl    %ebp,%ecx
121         movl    %edx,%esi
122         andl    $2155905152,%esi
123         movl    %esi,%ebp
124         shrl    $7,%ebp
125         leal    (%edx,%edx,1),%edi
126         subl    %ebp,%esi
127         andl    $4278124286,%edi
128         andl    $454761243,%esi
129         movl    %edx,%ebp
130         xorl    %edi,%esi
131         xorl    %esi,%edx
132         roll    $24,%edx
133         xorl    %esi,%edx
134         rorl    $16,%ebp
135         xorl    %ebp,%edx
136         rorl    $8,%ebp
137         xorl    %ebp,%edx
138         movl    %eax,%esi
139         andl    $2155905152,%esi
140         movl    %esi,%ebp
141         shrl    $7,%ebp
142         leal    (%eax,%eax,1),%edi
143         subl    %ebp,%esi
144         andl    $4278124286,%edi
145         andl    $454761243,%esi
146         movl    %eax,%ebp
147         xorl    %edi,%esi
148         xorl    %esi,%eax
149         roll    $24,%eax
150         xorl    %esi,%eax
151         rorl    $16,%ebp
152         xorl    %ebp,%eax
153         rorl    $8,%ebp
154         xorl    %ebp,%eax
155         movl    %ebx,%esi
156         andl    $2155905152,%esi
157         movl    %esi,%ebp
158         shrl    $7,%ebp
159         leal    (%ebx,%ebx,1),%edi
160         subl    %ebp,%esi
161         andl    $4278124286,%edi
162         andl    $454761243,%esi
163         movl    %ebx,%ebp
164         xorl    %edi,%esi
165         xorl    %esi,%ebx
166         roll    $24,%ebx
167         xorl    %esi,%ebx
168         rorl    $16,%ebp
169         xorl    %ebp,%ebx
170         rorl    $8,%ebp
171         xorl    %ebp,%ebx
172         movl    20(%esp),%edi
173         movl    28(%esp),%ebp
174         addl    $16,%edi
175         xorl    (%edi),%eax
176         xorl    4(%edi),%ebx
177         xorl    8(%edi),%ecx
178         xorl    12(%edi),%edx
179         cmpl    24(%esp),%edi
180         movl    %edi,20(%esp)
181         jb      .L000loop
182         movl    %eax,%esi
183         andl    $255,%esi
184         movzbl  -128(%ebp,%esi,1),%esi
185         movzbl  %bh,%edi
186         movzbl  -128(%ebp,%edi,1),%edi
187         shll    $8,%edi
188         xorl    %edi,%esi
189         movl    %ecx,%edi
190         shrl    $16,%edi
191         andl    $255,%edi
192         movzbl  -128(%ebp,%edi,1),%edi
193         shll    $16,%edi
194         xorl    %edi,%esi
195         movl    %edx,%edi
196         shrl    $24,%edi
197         movzbl  -128(%ebp,%edi,1),%edi
198         shll    $24,%edi
199         xorl    %edi,%esi
200         movl    %esi,4(%esp)
201
202         movl    %ebx,%esi
203         andl    $255,%esi
204         shrl    $16,%ebx
205         movzbl  -128(%ebp,%esi,1),%esi
206         movzbl  %ch,%edi
207         movzbl  -128(%ebp,%edi,1),%edi
208         shll    $8,%edi
209         xorl    %edi,%esi
210         movl    %edx,%edi
211         shrl    $16,%edi
212         andl    $255,%edi
213         movzbl  -128(%ebp,%edi,1),%edi
214         shll    $16,%edi
215         xorl    %edi,%esi
216         movl    %eax,%edi
217         shrl    $24,%edi
218         movzbl  -128(%ebp,%edi,1),%edi
219         shll    $24,%edi
220         xorl    %edi,%esi
221         movl    %esi,8(%esp)
222
223         movl    %ecx,%esi
224         andl    $255,%esi
225         shrl    $24,%ecx
226         movzbl  -128(%ebp,%esi,1),%esi
227         movzbl  %dh,%edi
228         movzbl  -128(%ebp,%edi,1),%edi
229         shll    $8,%edi
230         xorl    %edi,%esi
231         movl    %eax,%edi
232         shrl    $16,%edi
233         andl    $255,%edx
234         andl    $255,%edi
235         movzbl  -128(%ebp,%edi,1),%edi
236         shll    $16,%edi
237         xorl    %edi,%esi
238         movzbl  %bh,%edi
239         movzbl  -128(%ebp,%edi,1),%edi
240         shll    $24,%edi
241         xorl    %edi,%esi
242
243         movl    20(%esp),%edi
244         andl    $255,%edx
245         movzbl  -128(%ebp,%edx,1),%edx
246         movzbl  %ah,%eax
247         movzbl  -128(%ebp,%eax,1),%eax
248         shll    $8,%eax
249         xorl    %eax,%edx
250         movl    4(%esp),%eax
251         andl    $255,%ebx
252         movzbl  -128(%ebp,%ebx,1),%ebx
253         shll    $16,%ebx
254         xorl    %ebx,%edx
255         movl    8(%esp),%ebx
256         movzbl  -128(%ebp,%ecx,1),%ecx
257         shll    $24,%ecx
258         xorl    %ecx,%edx
259         movl    %esi,%ecx
260
261         xorl    16(%edi),%eax
262         xorl    20(%edi),%ebx
263         xorl    24(%edi),%ecx
264         xorl    28(%edi),%edx
265         ret
266 .size   _x86_AES_encrypt_compact,.-_x86_AES_encrypt_compact
267 .type   _sse_AES_encrypt_compact,@function
268 .align  16
269 _sse_AES_encrypt_compact:
270         pxor    (%edi),%mm0
271         pxor    8(%edi),%mm4
272         movl    240(%edi),%esi
273         leal    -2(%esi,%esi,1),%esi
274         leal    (%edi,%esi,8),%esi
275         movl    %esi,24(%esp)
276         movl    $454761243,%eax
277         movl    %eax,8(%esp)
278         movl    %eax,12(%esp)
279         movl    -128(%ebp),%eax
280         movl    -96(%ebp),%ebx
281         movl    -64(%ebp),%ecx
282         movl    -32(%ebp),%edx
283         movl    (%ebp),%eax
284         movl    32(%ebp),%ebx
285         movl    64(%ebp),%ecx
286         movl    96(%ebp),%edx
287 .align  16
288 .L001loop:
289         pshufw  $8,%mm0,%mm1
290         pshufw  $13,%mm4,%mm5
291         movd    %mm1,%eax
292         movd    %mm5,%ebx
293         movzbl  %al,%esi
294         movzbl  -128(%ebp,%esi,1),%ecx
295         pshufw  $13,%mm0,%mm2
296         movzbl  %ah,%edx
297         movzbl  -128(%ebp,%edx,1),%edx
298         shll    $8,%edx
299         shrl    $16,%eax
300         movzbl  %bl,%esi
301         movzbl  -128(%ebp,%esi,1),%esi
302         shll    $16,%esi
303         orl     %esi,%ecx
304         pshufw  $8,%mm4,%mm6
305         movzbl  %bh,%esi
306         movzbl  -128(%ebp,%esi,1),%esi
307         shll    $24,%esi
308         orl     %esi,%edx
309         shrl    $16,%ebx
310         movzbl  %ah,%esi
311         movzbl  -128(%ebp,%esi,1),%esi
312         shll    $8,%esi
313         orl     %esi,%ecx
314         movzbl  %bh,%esi
315         movzbl  -128(%ebp,%esi,1),%esi
316         shll    $24,%esi
317         orl     %esi,%ecx
318         movd    %ecx,%mm0
319         movzbl  %al,%esi
320         movzbl  -128(%ebp,%esi,1),%ecx
321         movd    %mm2,%eax
322         movzbl  %bl,%esi
323         movzbl  -128(%ebp,%esi,1),%esi
324         shll    $16,%esi
325         orl     %esi,%ecx
326         movd    %mm6,%ebx
327         movzbl  %ah,%esi
328         movzbl  -128(%ebp,%esi,1),%esi
329         shll    $24,%esi
330         orl     %esi,%ecx
331         movzbl  %bh,%esi
332         movzbl  -128(%ebp,%esi,1),%esi
333         shll    $8,%esi
334         orl     %esi,%ecx
335         movd    %ecx,%mm1
336         movzbl  %bl,%esi
337         movzbl  -128(%ebp,%esi,1),%ecx
338         shrl    $16,%ebx
339         movzbl  %al,%esi
340         movzbl  -128(%ebp,%esi,1),%esi
341         shll    $16,%esi
342         orl     %esi,%ecx
343         shrl    $16,%eax
344         punpckldq       %mm1,%mm0
345         movzbl  %ah,%esi
346         movzbl  -128(%ebp,%esi,1),%esi
347         shll    $24,%esi
348         orl     %esi,%ecx
349         andl    $255,%eax
350         movzbl  -128(%ebp,%eax,1),%eax
351         shll    $16,%eax
352         orl     %eax,%edx
353         movzbl  %bh,%esi
354         movzbl  -128(%ebp,%esi,1),%esi
355         shll    $8,%esi
356         orl     %esi,%ecx
357         movd    %ecx,%mm4
358         andl    $255,%ebx
359         movzbl  -128(%ebp,%ebx,1),%ebx
360         orl     %ebx,%edx
361         movd    %edx,%mm5
362         punpckldq       %mm5,%mm4
363         addl    $16,%edi
364         cmpl    24(%esp),%edi
365         ja      .L002out
366         movq    8(%esp),%mm2
367         pxor    %mm3,%mm3
368         pxor    %mm7,%mm7
369         movq    %mm0,%mm1
370         movq    %mm4,%mm5
371         pcmpgtb %mm0,%mm3
372         pcmpgtb %mm4,%mm7
373         pand    %mm2,%mm3
374         pand    %mm2,%mm7
375         pshufw  $177,%mm0,%mm2
376         pshufw  $177,%mm4,%mm6
377         paddb   %mm0,%mm0
378         paddb   %mm4,%mm4
379         pxor    %mm3,%mm0
380         pxor    %mm7,%mm4
381         pshufw  $177,%mm2,%mm3
382         pshufw  $177,%mm6,%mm7
383         pxor    %mm0,%mm1
384         pxor    %mm4,%mm5
385         pxor    %mm2,%mm0
386         pxor    %mm6,%mm4
387         movq    %mm3,%mm2
388         movq    %mm7,%mm6
389         pslld   $8,%mm3
390         pslld   $8,%mm7
391         psrld   $24,%mm2
392         psrld   $24,%mm6
393         pxor    %mm3,%mm0
394         pxor    %mm7,%mm4
395         pxor    %mm2,%mm0
396         pxor    %mm6,%mm4
397         movq    %mm1,%mm3
398         movq    %mm5,%mm7
399         movq    (%edi),%mm2
400         movq    8(%edi),%mm6
401         psrld   $8,%mm1
402         psrld   $8,%mm5
403         movl    -128(%ebp),%eax
404         pslld   $24,%mm3
405         pslld   $24,%mm7
406         movl    -64(%ebp),%ebx
407         pxor    %mm1,%mm0
408         pxor    %mm5,%mm4
409         movl    (%ebp),%ecx
410         pxor    %mm3,%mm0
411         pxor    %mm7,%mm4
412         movl    64(%ebp),%edx
413         pxor    %mm2,%mm0
414         pxor    %mm6,%mm4
415         jmp     .L001loop
416 .align  16
417 .L002out:
418         pxor    (%edi),%mm0
419         pxor    8(%edi),%mm4
420         ret
421 .size   _sse_AES_encrypt_compact,.-_sse_AES_encrypt_compact
422 .type   _x86_AES_encrypt,@function
423 .align  16
424 _x86_AES_encrypt:
425         movl    %edi,20(%esp)
426         xorl    (%edi),%eax
427         xorl    4(%edi),%ebx
428         xorl    8(%edi),%ecx
429         xorl    12(%edi),%edx
430         movl    240(%edi),%esi
431         leal    -2(%esi,%esi,1),%esi
432         leal    (%edi,%esi,8),%esi
433         movl    %esi,24(%esp)
434 .align  16
435 .L003loop:
436         movl    %eax,%esi
437         andl    $255,%esi
438         movl    (%ebp,%esi,8),%esi
439         movzbl  %bh,%edi
440         xorl    3(%ebp,%edi,8),%esi
441         movl    %ecx,%edi
442         shrl    $16,%edi
443         andl    $255,%edi
444         xorl    2(%ebp,%edi,8),%esi
445         movl    %edx,%edi
446         shrl    $24,%edi
447         xorl    1(%ebp,%edi,8),%esi
448         movl    %esi,4(%esp)
449
450         movl    %ebx,%esi
451         andl    $255,%esi
452         shrl    $16,%ebx
453         movl    (%ebp,%esi,8),%esi
454         movzbl  %ch,%edi
455         xorl    3(%ebp,%edi,8),%esi
456         movl    %edx,%edi
457         shrl    $16,%edi
458         andl    $255,%edi
459         xorl    2(%ebp,%edi,8),%esi
460         movl    %eax,%edi
461         shrl    $24,%edi
462         xorl    1(%ebp,%edi,8),%esi
463         movl    %esi,8(%esp)
464
465         movl    %ecx,%esi
466         andl    $255,%esi
467         shrl    $24,%ecx
468         movl    (%ebp,%esi,8),%esi
469         movzbl  %dh,%edi
470         xorl    3(%ebp,%edi,8),%esi
471         movl    %eax,%edi
472         shrl    $16,%edi
473         andl    $255,%edx
474         andl    $255,%edi
475         xorl    2(%ebp,%edi,8),%esi
476         movzbl  %bh,%edi
477         xorl    1(%ebp,%edi,8),%esi
478
479         movl    20(%esp),%edi
480         movl    (%ebp,%edx,8),%edx
481         movzbl  %ah,%eax
482         xorl    3(%ebp,%eax,8),%edx
483         movl    4(%esp),%eax
484         andl    $255,%ebx
485         xorl    2(%ebp,%ebx,8),%edx
486         movl    8(%esp),%ebx
487         xorl    1(%ebp,%ecx,8),%edx
488         movl    %esi,%ecx
489
490         addl    $16,%edi
491         xorl    (%edi),%eax
492         xorl    4(%edi),%ebx
493         xorl    8(%edi),%ecx
494         xorl    12(%edi),%edx
495         cmpl    24(%esp),%edi
496         movl    %edi,20(%esp)
497         jb      .L003loop
498         movl    %eax,%esi
499         andl    $255,%esi
500         movl    2(%ebp,%esi,8),%esi
501         andl    $255,%esi
502         movzbl  %bh,%edi
503         movl    (%ebp,%edi,8),%edi
504         andl    $65280,%edi
505         xorl    %edi,%esi
506         movl    %ecx,%edi
507         shrl    $16,%edi
508         andl    $255,%edi
509         movl    (%ebp,%edi,8),%edi
510         andl    $16711680,%edi
511         xorl    %edi,%esi
512         movl    %edx,%edi
513         shrl    $24,%edi
514         movl    2(%ebp,%edi,8),%edi
515         andl    $4278190080,%edi
516         xorl    %edi,%esi
517         movl    %esi,4(%esp)
518         movl    %ebx,%esi
519         andl    $255,%esi
520         shrl    $16,%ebx
521         movl    2(%ebp,%esi,8),%esi
522         andl    $255,%esi
523         movzbl  %ch,%edi
524         movl    (%ebp,%edi,8),%edi
525         andl    $65280,%edi
526         xorl    %edi,%esi
527         movl    %edx,%edi
528         shrl    $16,%edi
529         andl    $255,%edi
530         movl    (%ebp,%edi,8),%edi
531         andl    $16711680,%edi
532         xorl    %edi,%esi
533         movl    %eax,%edi
534         shrl    $24,%edi
535         movl    2(%ebp,%edi,8),%edi
536         andl    $4278190080,%edi
537         xorl    %edi,%esi
538         movl    %esi,8(%esp)
539         movl    %ecx,%esi
540         andl    $255,%esi
541         shrl    $24,%ecx
542         movl    2(%ebp,%esi,8),%esi
543         andl    $255,%esi
544         movzbl  %dh,%edi
545         movl    (%ebp,%edi,8),%edi
546         andl    $65280,%edi
547         xorl    %edi,%esi
548         movl    %eax,%edi
549         shrl    $16,%edi
550         andl    $255,%edx
551         andl    $255,%edi
552         movl    (%ebp,%edi,8),%edi
553         andl    $16711680,%edi
554         xorl    %edi,%esi
555         movzbl  %bh,%edi
556         movl    2(%ebp,%edi,8),%edi
557         andl    $4278190080,%edi
558         xorl    %edi,%esi
559         movl    20(%esp),%edi
560         andl    $255,%edx
561         movl    2(%ebp,%edx,8),%edx
562         andl    $255,%edx
563         movzbl  %ah,%eax
564         movl    (%ebp,%eax,8),%eax
565         andl    $65280,%eax
566         xorl    %eax,%edx
567         movl    4(%esp),%eax
568         andl    $255,%ebx
569         movl    (%ebp,%ebx,8),%ebx
570         andl    $16711680,%ebx
571         xorl    %ebx,%edx
572         movl    8(%esp),%ebx
573         movl    2(%ebp,%ecx,8),%ecx
574         andl    $4278190080,%ecx
575         xorl    %ecx,%edx
576         movl    %esi,%ecx
577         addl    $16,%edi
578         xorl    (%edi),%eax
579         xorl    4(%edi),%ebx
580         xorl    8(%edi),%ecx
581         xorl    12(%edi),%edx
582         ret
583 .align  64
584 .LAES_Te:
585 .long   2774754246,2774754246
586 .long   2222750968,2222750968
587 .long   2574743534,2574743534
588 .long   2373680118,2373680118
589 .long   234025727,234025727
590 .long   3177933782,3177933782
591 .long   2976870366,2976870366
592 .long   1422247313,1422247313
593 .long   1345335392,1345335392
594 .long   50397442,50397442
595 .long   2842126286,2842126286
596 .long   2099981142,2099981142
597 .long   436141799,436141799
598 .long   1658312629,1658312629
599 .long   3870010189,3870010189
600 .long   2591454956,2591454956
601 .long   1170918031,1170918031
602 .long   2642575903,2642575903
603 .long   1086966153,1086966153
604 .long   2273148410,2273148410
605 .long   368769775,368769775
606 .long   3948501426,3948501426
607 .long   3376891790,3376891790
608 .long   200339707,200339707
609 .long   3970805057,3970805057
610 .long   1742001331,1742001331
611 .long   4255294047,4255294047
612 .long   3937382213,3937382213
613 .long   3214711843,3214711843
614 .long   4154762323,4154762323
615 .long   2524082916,2524082916
616 .long   1539358875,1539358875
617 .long   3266819957,3266819957
618 .long   486407649,486407649
619 .long   2928907069,2928907069
620 .long   1780885068,1780885068
621 .long   1513502316,1513502316
622 .long   1094664062,1094664062
623 .long   49805301,49805301
624 .long   1338821763,1338821763
625 .long   1546925160,1546925160
626 .long   4104496465,4104496465
627 .long   887481809,887481809
628 .long   150073849,150073849
629 .long   2473685474,2473685474
630 .long   1943591083,1943591083
631 .long   1395732834,1395732834
632 .long   1058346282,1058346282
633 .long   201589768,201589768
634 .long   1388824469,1388824469
635 .long   1696801606,1696801606
636 .long   1589887901,1589887901
637 .long   672667696,672667696
638 .long   2711000631,2711000631
639 .long   251987210,251987210
640 .long   3046808111,3046808111
641 .long   151455502,151455502
642 .long   907153956,907153956
643 .long   2608889883,2608889883
644 .long   1038279391,1038279391
645 .long   652995533,652995533
646 .long   1764173646,1764173646
647 .long   3451040383,3451040383
648 .long   2675275242,2675275242
649 .long   453576978,453576978
650 .long   2659418909,2659418909
651 .long   1949051992,1949051992
652 .long   773462580,773462580
653 .long   756751158,756751158
654 .long   2993581788,2993581788
655 .long   3998898868,3998898868
656 .long   4221608027,4221608027
657 .long   4132590244,4132590244
658 .long   1295727478,1295727478
659 .long   1641469623,1641469623
660 .long   3467883389,3467883389
661 .long   2066295122,2066295122
662 .long   1055122397,1055122397
663 .long   1898917726,1898917726
664 .long   2542044179,2542044179
665 .long   4115878822,4115878822
666 .long   1758581177,1758581177
667 .long   0,0
668 .long   753790401,753790401
669 .long   1612718144,1612718144
670 .long   536673507,536673507
671 .long   3367088505,3367088505
672 .long   3982187446,3982187446
673 .long   3194645204,3194645204
674 .long   1187761037,1187761037
675 .long   3653156455,3653156455
676 .long   1262041458,1262041458
677 .long   3729410708,3729410708
678 .long   3561770136,3561770136
679 .long   3898103984,3898103984
680 .long   1255133061,1255133061
681 .long   1808847035,1808847035
682 .long   720367557,720367557
683 .long   3853167183,3853167183
684 .long   385612781,385612781
685 .long   3309519750,3309519750
686 .long   3612167578,3612167578
687 .long   1429418854,1429418854
688 .long   2491778321,2491778321
689 .long   3477423498,3477423498
690 .long   284817897,284817897
691 .long   100794884,100794884
692 .long   2172616702,2172616702
693 .long   4031795360,4031795360
694 .long   1144798328,1144798328
695 .long   3131023141,3131023141
696 .long   3819481163,3819481163
697 .long   4082192802,4082192802
698 .long   4272137053,4272137053
699 .long   3225436288,3225436288
700 .long   2324664069,2324664069
701 .long   2912064063,2912064063
702 .long   3164445985,3164445985
703 .long   1211644016,1211644016
704 .long   83228145,83228145
705 .long   3753688163,3753688163
706 .long   3249976951,3249976951
707 .long   1977277103,1977277103
708 .long   1663115586,1663115586
709 .long   806359072,806359072
710 .long   452984805,452984805
711 .long   250868733,250868733
712 .long   1842533055,1842533055
713 .long   1288555905,1288555905
714 .long   336333848,336333848
715 .long   890442534,890442534
716 .long   804056259,804056259
717 .long   3781124030,3781124030
718 .long   2727843637,2727843637
719 .long   3427026056,3427026056
720 .long   957814574,957814574
721 .long   1472513171,1472513171
722 .long   4071073621,4071073621
723 .long   2189328124,2189328124
724 .long   1195195770,1195195770
725 .long   2892260552,2892260552
726 .long   3881655738,3881655738
727 .long   723065138,723065138
728 .long   2507371494,2507371494
729 .long   2690670784,2690670784
730 .long   2558624025,2558624025
731 .long   3511635870,3511635870
732 .long   2145180835,2145180835
733 .long   1713513028,1713513028
734 .long   2116692564,2116692564
735 .long   2878378043,2878378043
736 .long   2206763019,2206763019
737 .long   3393603212,3393603212
738 .long   703524551,703524551
739 .long   3552098411,3552098411
740 .long   1007948840,1007948840
741 .long   2044649127,2044649127
742 .long   3797835452,3797835452
743 .long   487262998,487262998
744 .long   1994120109,1994120109
745 .long   1004593371,1004593371
746 .long   1446130276,1446130276
747 .long   1312438900,1312438900
748 .long   503974420,503974420
749 .long   3679013266,3679013266
750 .long   168166924,168166924
751 .long   1814307912,1814307912
752 .long   3831258296,3831258296
753 .long   1573044895,1573044895
754 .long   1859376061,1859376061
755 .long   4021070915,4021070915
756 .long   2791465668,2791465668
757 .long   2828112185,2828112185
758 .long   2761266481,2761266481
759 .long   937747667,937747667
760 .long   2339994098,2339994098
761 .long   854058965,854058965
762 .long   1137232011,1137232011
763 .long   1496790894,1496790894
764 .long   3077402074,3077402074
765 .long   2358086913,2358086913
766 .long   1691735473,1691735473
767 .long   3528347292,3528347292
768 .long   3769215305,3769215305
769 .long   3027004632,3027004632
770 .long   4199962284,4199962284
771 .long   133494003,133494003
772 .long   636152527,636152527
773 .long   2942657994,2942657994
774 .long   2390391540,2390391540
775 .long   3920539207,3920539207
776 .long   403179536,403179536
777 .long   3585784431,3585784431
778 .long   2289596656,2289596656
779 .long   1864705354,1864705354
780 .long   1915629148,1915629148
781 .long   605822008,605822008
782 .long   4054230615,4054230615
783 .long   3350508659,3350508659
784 .long   1371981463,1371981463
785 .long   602466507,602466507
786 .long   2094914977,2094914977
787 .long   2624877800,2624877800
788 .long   555687742,555687742
789 .long   3712699286,3712699286
790 .long   3703422305,3703422305
791 .long   2257292045,2257292045
792 .long   2240449039,2240449039
793 .long   2423288032,2423288032
794 .long   1111375484,1111375484
795 .long   3300242801,3300242801
796 .long   2858837708,2858837708
797 .long   3628615824,3628615824
798 .long   84083462,84083462
799 .long   32962295,32962295
800 .long   302911004,302911004
801 .long   2741068226,2741068226
802 .long   1597322602,1597322602
803 .long   4183250862,4183250862
804 .long   3501832553,3501832553
805 .long   2441512471,2441512471
806 .long   1489093017,1489093017
807 .long   656219450,656219450
808 .long   3114180135,3114180135
809 .long   954327513,954327513
810 .long   335083755,335083755
811 .long   3013122091,3013122091
812 .long   856756514,856756514
813 .long   3144247762,3144247762
814 .long   1893325225,1893325225
815 .long   2307821063,2307821063
816 .long   2811532339,2811532339
817 .long   3063651117,3063651117
818 .long   572399164,572399164
819 .long   2458355477,2458355477
820 .long   552200649,552200649
821 .long   1238290055,1238290055
822 .long   4283782570,4283782570
823 .long   2015897680,2015897680
824 .long   2061492133,2061492133
825 .long   2408352771,2408352771
826 .long   4171342169,4171342169
827 .long   2156497161,2156497161
828 .long   386731290,386731290
829 .long   3669999461,3669999461
830 .long   837215959,837215959
831 .long   3326231172,3326231172
832 .long   3093850320,3093850320
833 .long   3275833730,3275833730
834 .long   2962856233,2962856233
835 .long   1999449434,1999449434
836 .long   286199582,286199582
837 .long   3417354363,3417354363
838 .long   4233385128,4233385128
839 .long   3602627437,3602627437
840 .long   974525996,974525996
841 .byte   99,124,119,123,242,107,111,197
842 .byte   48,1,103,43,254,215,171,118
843 .byte   202,130,201,125,250,89,71,240
844 .byte   173,212,162,175,156,164,114,192
845 .byte   183,253,147,38,54,63,247,204
846 .byte   52,165,229,241,113,216,49,21
847 .byte   4,199,35,195,24,150,5,154
848 .byte   7,18,128,226,235,39,178,117
849 .byte   9,131,44,26,27,110,90,160
850 .byte   82,59,214,179,41,227,47,132
851 .byte   83,209,0,237,32,252,177,91
852 .byte   106,203,190,57,74,76,88,207
853 .byte   208,239,170,251,67,77,51,133
854 .byte   69,249,2,127,80,60,159,168
855 .byte   81,163,64,143,146,157,56,245
856 .byte   188,182,218,33,16,255,243,210
857 .byte   205,12,19,236,95,151,68,23
858 .byte   196,167,126,61,100,93,25,115
859 .byte   96,129,79,220,34,42,144,136
860 .byte   70,238,184,20,222,94,11,219
861 .byte   224,50,58,10,73,6,36,92
862 .byte   194,211,172,98,145,149,228,121
863 .byte   231,200,55,109,141,213,78,169
864 .byte   108,86,244,234,101,122,174,8
865 .byte   186,120,37,46,28,166,180,198
866 .byte   232,221,116,31,75,189,139,138
867 .byte   112,62,181,102,72,3,246,14
868 .byte   97,53,87,185,134,193,29,158
869 .byte   225,248,152,17,105,217,142,148
870 .byte   155,30,135,233,206,85,40,223
871 .byte   140,161,137,13,191,230,66,104
872 .byte   65,153,45,15,176,84,187,22
873 .byte   99,124,119,123,242,107,111,197
874 .byte   48,1,103,43,254,215,171,118
875 .byte   202,130,201,125,250,89,71,240
876 .byte   173,212,162,175,156,164,114,192
877 .byte   183,253,147,38,54,63,247,204
878 .byte   52,165,229,241,113,216,49,21
879 .byte   4,199,35,195,24,150,5,154
880 .byte   7,18,128,226,235,39,178,117
881 .byte   9,131,44,26,27,110,90,160
882 .byte   82,59,214,179,41,227,47,132
883 .byte   83,209,0,237,32,252,177,91
884 .byte   106,203,190,57,74,76,88,207
885 .byte   208,239,170,251,67,77,51,133
886 .byte   69,249,2,127,80,60,159,168
887 .byte   81,163,64,143,146,157,56,245
888 .byte   188,182,218,33,16,255,243,210
889 .byte   205,12,19,236,95,151,68,23
890 .byte   196,167,126,61,100,93,25,115
891 .byte   96,129,79,220,34,42,144,136
892 .byte   70,238,184,20,222,94,11,219
893 .byte   224,50,58,10,73,6,36,92
894 .byte   194,211,172,98,145,149,228,121
895 .byte   231,200,55,109,141,213,78,169
896 .byte   108,86,244,234,101,122,174,8
897 .byte   186,120,37,46,28,166,180,198
898 .byte   232,221,116,31,75,189,139,138
899 .byte   112,62,181,102,72,3,246,14
900 .byte   97,53,87,185,134,193,29,158
901 .byte   225,248,152,17,105,217,142,148
902 .byte   155,30,135,233,206,85,40,223
903 .byte   140,161,137,13,191,230,66,104
904 .byte   65,153,45,15,176,84,187,22
905 .byte   99,124,119,123,242,107,111,197
906 .byte   48,1,103,43,254,215,171,118
907 .byte   202,130,201,125,250,89,71,240
908 .byte   173,212,162,175,156,164,114,192
909 .byte   183,253,147,38,54,63,247,204
910 .byte   52,165,229,241,113,216,49,21
911 .byte   4,199,35,195,24,150,5,154
912 .byte   7,18,128,226,235,39,178,117
913 .byte   9,131,44,26,27,110,90,160
914 .byte   82,59,214,179,41,227,47,132
915 .byte   83,209,0,237,32,252,177,91
916 .byte   106,203,190,57,74,76,88,207
917 .byte   208,239,170,251,67,77,51,133
918 .byte   69,249,2,127,80,60,159,168
919 .byte   81,163,64,143,146,157,56,245
920 .byte   188,182,218,33,16,255,243,210
921 .byte   205,12,19,236,95,151,68,23
922 .byte   196,167,126,61,100,93,25,115
923 .byte   96,129,79,220,34,42,144,136
924 .byte   70,238,184,20,222,94,11,219
925 .byte   224,50,58,10,73,6,36,92
926 .byte   194,211,172,98,145,149,228,121
927 .byte   231,200,55,109,141,213,78,169
928 .byte   108,86,244,234,101,122,174,8
929 .byte   186,120,37,46,28,166,180,198
930 .byte   232,221,116,31,75,189,139,138
931 .byte   112,62,181,102,72,3,246,14
932 .byte   97,53,87,185,134,193,29,158
933 .byte   225,248,152,17,105,217,142,148
934 .byte   155,30,135,233,206,85,40,223
935 .byte   140,161,137,13,191,230,66,104
936 .byte   65,153,45,15,176,84,187,22
937 .byte   99,124,119,123,242,107,111,197
938 .byte   48,1,103,43,254,215,171,118
939 .byte   202,130,201,125,250,89,71,240
940 .byte   173,212,162,175,156,164,114,192
941 .byte   183,253,147,38,54,63,247,204
942 .byte   52,165,229,241,113,216,49,21
943 .byte   4,199,35,195,24,150,5,154
944 .byte   7,18,128,226,235,39,178,117
945 .byte   9,131,44,26,27,110,90,160
946 .byte   82,59,214,179,41,227,47,132
947 .byte   83,209,0,237,32,252,177,91
948 .byte   106,203,190,57,74,76,88,207
949 .byte   208,239,170,251,67,77,51,133
950 .byte   69,249,2,127,80,60,159,168
951 .byte   81,163,64,143,146,157,56,245
952 .byte   188,182,218,33,16,255,243,210
953 .byte   205,12,19,236,95,151,68,23
954 .byte   196,167,126,61,100,93,25,115
955 .byte   96,129,79,220,34,42,144,136
956 .byte   70,238,184,20,222,94,11,219
957 .byte   224,50,58,10,73,6,36,92
958 .byte   194,211,172,98,145,149,228,121
959 .byte   231,200,55,109,141,213,78,169
960 .byte   108,86,244,234,101,122,174,8
961 .byte   186,120,37,46,28,166,180,198
962 .byte   232,221,116,31,75,189,139,138
963 .byte   112,62,181,102,72,3,246,14
964 .byte   97,53,87,185,134,193,29,158
965 .byte   225,248,152,17,105,217,142,148
966 .byte   155,30,135,233,206,85,40,223
967 .byte   140,161,137,13,191,230,66,104
968 .byte   65,153,45,15,176,84,187,22
969 .long   1,2,4,8
970 .long   16,32,64,128
971 .long   27,54,0,0
972 .long   0,0,0,0
973 .size   _x86_AES_encrypt,.-_x86_AES_encrypt
974 .globl  AES_encrypt
975 .type   AES_encrypt,@function
976 .align  16
977 AES_encrypt:
978 .L_AES_encrypt_begin:
979         pushl   %ebp
980         pushl   %ebx
981         pushl   %esi
982         pushl   %edi
983         movl    20(%esp),%esi
984         movl    28(%esp),%edi
985         movl    %esp,%eax
986         subl    $36,%esp
987         andl    $-64,%esp
988         leal    -127(%edi),%ebx
989         subl    %esp,%ebx
990         negl    %ebx
991         andl    $960,%ebx
992         subl    %ebx,%esp
993         addl    $4,%esp
994         movl    %eax,28(%esp)
995         call    .L004pic_point
996 .L004pic_point:
997         popl    %ebp
998         leal    OPENSSL_ia32cap_P,%eax
999         leal    .LAES_Te-.L004pic_point(%ebp),%ebp
1000         leal    764(%esp),%ebx
1001         subl    %ebp,%ebx
1002         andl    $768,%ebx
1003         leal    2176(%ebp,%ebx,1),%ebp
1004         btl     $25,(%eax)
1005         jnc     .L005x86
1006         movq    (%esi),%mm0
1007         movq    8(%esi),%mm4
1008         call    _sse_AES_encrypt_compact
1009         movl    28(%esp),%esp
1010         movl    24(%esp),%esi
1011         movq    %mm0,(%esi)
1012         movq    %mm4,8(%esi)
1013         emms
1014         popl    %edi
1015         popl    %esi
1016         popl    %ebx
1017         popl    %ebp
1018         ret
1019 .align  16
1020 .L005x86:
1021         movl    %ebp,24(%esp)
1022         movl    (%esi),%eax
1023         movl    4(%esi),%ebx
1024         movl    8(%esi),%ecx
1025         movl    12(%esi),%edx
1026         call    _x86_AES_encrypt_compact
1027         movl    28(%esp),%esp
1028         movl    24(%esp),%esi
1029         movl    %eax,(%esi)
1030         movl    %ebx,4(%esi)
1031         movl    %ecx,8(%esi)
1032         movl    %edx,12(%esi)
1033         popl    %edi
1034         popl    %esi
1035         popl    %ebx
1036         popl    %ebp
1037         ret
1038 .size   AES_encrypt,.-.L_AES_encrypt_begin
1039 .type   _x86_AES_decrypt_compact,@function
1040 .align  16
1041 _x86_AES_decrypt_compact:
1042         movl    %edi,20(%esp)
1043         xorl    (%edi),%eax
1044         xorl    4(%edi),%ebx
1045         xorl    8(%edi),%ecx
1046         xorl    12(%edi),%edx
1047         movl    240(%edi),%esi
1048         leal    -2(%esi,%esi,1),%esi
1049         leal    (%edi,%esi,8),%esi
1050         movl    %esi,24(%esp)
1051         movl    -128(%ebp),%edi
1052         movl    -96(%ebp),%esi
1053         movl    -64(%ebp),%edi
1054         movl    -32(%ebp),%esi
1055         movl    (%ebp),%edi
1056         movl    32(%ebp),%esi
1057         movl    64(%ebp),%edi
1058         movl    96(%ebp),%esi
1059 .align  16
1060 .L006loop:
1061         movl    %eax,%esi
1062         andl    $255,%esi
1063         movzbl  -128(%ebp,%esi,1),%esi
1064         movzbl  %dh,%edi
1065         movzbl  -128(%ebp,%edi,1),%edi
1066         shll    $8,%edi
1067         xorl    %edi,%esi
1068         movl    %ecx,%edi
1069         shrl    $16,%edi
1070         andl    $255,%edi
1071         movzbl  -128(%ebp,%edi,1),%edi
1072         shll    $16,%edi
1073         xorl    %edi,%esi
1074         movl    %ebx,%edi
1075         shrl    $24,%edi
1076         movzbl  -128(%ebp,%edi,1),%edi
1077         shll    $24,%edi
1078         xorl    %edi,%esi
1079         movl    %esi,4(%esp)
1080         movl    %ebx,%esi
1081         andl    $255,%esi
1082         movzbl  -128(%ebp,%esi,1),%esi
1083         movzbl  %ah,%edi
1084         movzbl  -128(%ebp,%edi,1),%edi
1085         shll    $8,%edi
1086         xorl    %edi,%esi
1087         movl    %edx,%edi
1088         shrl    $16,%edi
1089         andl    $255,%edi
1090         movzbl  -128(%ebp,%edi,1),%edi
1091         shll    $16,%edi
1092         xorl    %edi,%esi
1093         movl    %ecx,%edi
1094         shrl    $24,%edi
1095         movzbl  -128(%ebp,%edi,1),%edi
1096         shll    $24,%edi
1097         xorl    %edi,%esi
1098         movl    %esi,8(%esp)
1099         movl    %ecx,%esi
1100         andl    $255,%esi
1101         movzbl  -128(%ebp,%esi,1),%esi
1102         movzbl  %bh,%edi
1103         movzbl  -128(%ebp,%edi,1),%edi
1104         shll    $8,%edi
1105         xorl    %edi,%esi
1106         movl    %eax,%edi
1107         shrl    $16,%edi
1108         andl    $255,%edi
1109         movzbl  -128(%ebp,%edi,1),%edi
1110         shll    $16,%edi
1111         xorl    %edi,%esi
1112         movl    %edx,%edi
1113         shrl    $24,%edi
1114         movzbl  -128(%ebp,%edi,1),%edi
1115         shll    $24,%edi
1116         xorl    %edi,%esi
1117         andl    $255,%edx
1118         movzbl  -128(%ebp,%edx,1),%edx
1119         movzbl  %ch,%ecx
1120         movzbl  -128(%ebp,%ecx,1),%ecx
1121         shll    $8,%ecx
1122         xorl    %ecx,%edx
1123         movl    %esi,%ecx
1124         shrl    $16,%ebx
1125         andl    $255,%ebx
1126         movzbl  -128(%ebp,%ebx,1),%ebx
1127         shll    $16,%ebx
1128         xorl    %ebx,%edx
1129         shrl    $24,%eax
1130         movzbl  -128(%ebp,%eax,1),%eax
1131         shll    $24,%eax
1132         xorl    %eax,%edx
1133         movl    %ecx,%esi
1134         andl    $2155905152,%esi
1135         movl    %esi,%edi
1136         shrl    $7,%edi
1137         leal    (%ecx,%ecx,1),%eax
1138         subl    %edi,%esi
1139         andl    $4278124286,%eax
1140         andl    $454761243,%esi
1141         xorl    %eax,%esi
1142         movl    %esi,%eax
1143         andl    $2155905152,%esi
1144         movl    %esi,%edi
1145         shrl    $7,%edi
1146         leal    (%eax,%eax,1),%ebx
1147         subl    %edi,%esi
1148         andl    $4278124286,%ebx
1149         andl    $454761243,%esi
1150         xorl    %ecx,%eax
1151         xorl    %ebx,%esi
1152         movl    %esi,%ebx
1153         andl    $2155905152,%esi
1154         movl    %esi,%edi
1155         shrl    $7,%edi
1156         leal    (%ebx,%ebx,1),%ebp
1157         subl    %edi,%esi
1158         andl    $4278124286,%ebp
1159         andl    $454761243,%esi
1160         xorl    %ecx,%ebx
1161         roll    $8,%ecx
1162         xorl    %esi,%ebp
1163         xorl    %eax,%ecx
1164         xorl    %ebp,%eax
1165         roll    $24,%eax
1166         xorl    %ebx,%ecx
1167         xorl    %ebp,%ebx
1168         roll    $16,%ebx
1169         xorl    %ebp,%ecx
1170         roll    $8,%ebp
1171         xorl    %eax,%ecx
1172         xorl    %ebx,%ecx
1173         movl    4(%esp),%eax
1174         xorl    %ebp,%ecx
1175         movl    %ecx,12(%esp)
1176         movl    %edx,%esi
1177         andl    $2155905152,%esi
1178         movl    %esi,%edi
1179         shrl    $7,%edi
1180         leal    (%edx,%edx,1),%ebx
1181         subl    %edi,%esi
1182         andl    $4278124286,%ebx
1183         andl    $454761243,%esi
1184         xorl    %ebx,%esi
1185         movl    %esi,%ebx
1186         andl    $2155905152,%esi
1187         movl    %esi,%edi
1188         shrl    $7,%edi
1189         leal    (%ebx,%ebx,1),%ecx
1190         subl    %edi,%esi
1191         andl    $4278124286,%ecx
1192         andl    $454761243,%esi
1193         xorl    %edx,%ebx
1194         xorl    %ecx,%esi
1195         movl    %esi,%ecx
1196         andl    $2155905152,%esi
1197         movl    %esi,%edi
1198         shrl    $7,%edi
1199         leal    (%ecx,%ecx,1),%ebp
1200         subl    %edi,%esi
1201         andl    $4278124286,%ebp
1202         andl    $454761243,%esi
1203         xorl    %edx,%ecx
1204         roll    $8,%edx
1205         xorl    %esi,%ebp
1206         xorl    %ebx,%edx
1207         xorl    %ebp,%ebx
1208         roll    $24,%ebx
1209         xorl    %ecx,%edx
1210         xorl    %ebp,%ecx
1211         roll    $16,%ecx
1212         xorl    %ebp,%edx
1213         roll    $8,%ebp
1214         xorl    %ebx,%edx
1215         xorl    %ecx,%edx
1216         movl    8(%esp),%ebx
1217         xorl    %ebp,%edx
1218         movl    %edx,16(%esp)
1219         movl    %eax,%esi
1220         andl    $2155905152,%esi
1221         movl    %esi,%edi
1222         shrl    $7,%edi
1223         leal    (%eax,%eax,1),%ecx
1224         subl    %edi,%esi
1225         andl    $4278124286,%ecx
1226         andl    $454761243,%esi
1227         xorl    %ecx,%esi
1228         movl    %esi,%ecx
1229         andl    $2155905152,%esi
1230         movl    %esi,%edi
1231         shrl    $7,%edi
1232         leal    (%ecx,%ecx,1),%edx
1233         subl    %edi,%esi
1234         andl    $4278124286,%edx
1235         andl    $454761243,%esi
1236         xorl    %eax,%ecx
1237         xorl    %edx,%esi
1238         movl    %esi,%edx
1239         andl    $2155905152,%esi
1240         movl    %esi,%edi
1241         shrl    $7,%edi
1242         leal    (%edx,%edx,1),%ebp
1243         subl    %edi,%esi
1244         andl    $4278124286,%ebp
1245         andl    $454761243,%esi
1246         xorl    %eax,%edx
1247         roll    $8,%eax
1248         xorl    %esi,%ebp
1249         xorl    %ecx,%eax
1250         xorl    %ebp,%ecx
1251         roll    $24,%ecx
1252         xorl    %edx,%eax
1253         xorl    %ebp,%edx
1254         roll    $16,%edx
1255         xorl    %ebp,%eax
1256         roll    $8,%ebp
1257         xorl    %ecx,%eax
1258         xorl    %edx,%eax
1259         xorl    %ebp,%eax
1260         movl    %ebx,%esi
1261         andl    $2155905152,%esi
1262         movl    %esi,%edi
1263         shrl    $7,%edi
1264         leal    (%ebx,%ebx,1),%ecx
1265         subl    %edi,%esi
1266         andl    $4278124286,%ecx
1267         andl    $454761243,%esi
1268         xorl    %ecx,%esi
1269         movl    %esi,%ecx
1270         andl    $2155905152,%esi
1271         movl    %esi,%edi
1272         shrl    $7,%edi
1273         leal    (%ecx,%ecx,1),%edx
1274         subl    %edi,%esi
1275         andl    $4278124286,%edx
1276         andl    $454761243,%esi
1277         xorl    %ebx,%ecx
1278         xorl    %edx,%esi
1279         movl    %esi,%edx
1280         andl    $2155905152,%esi
1281         movl    %esi,%edi
1282         shrl    $7,%edi
1283         leal    (%edx,%edx,1),%ebp
1284         subl    %edi,%esi
1285         andl    $4278124286,%ebp
1286         andl    $454761243,%esi
1287         xorl    %ebx,%edx
1288         roll    $8,%ebx
1289         xorl    %esi,%ebp
1290         xorl    %ecx,%ebx
1291         xorl    %ebp,%ecx
1292         roll    $24,%ecx
1293         xorl    %edx,%ebx
1294         xorl    %ebp,%edx
1295         roll    $16,%edx
1296         xorl    %ebp,%ebx
1297         roll    $8,%ebp
1298         xorl    %ecx,%ebx
1299         xorl    %edx,%ebx
1300         movl    12(%esp),%ecx
1301         xorl    %ebp,%ebx
1302         movl    16(%esp),%edx
1303         movl    20(%esp),%edi
1304         movl    28(%esp),%ebp
1305         addl    $16,%edi
1306         xorl    (%edi),%eax
1307         xorl    4(%edi),%ebx
1308         xorl    8(%edi),%ecx
1309         xorl    12(%edi),%edx
1310         cmpl    24(%esp),%edi
1311         movl    %edi,20(%esp)
1312         jb      .L006loop
1313         movl    %eax,%esi
1314         andl    $255,%esi
1315         movzbl  -128(%ebp,%esi,1),%esi
1316         movzbl  %dh,%edi
1317         movzbl  -128(%ebp,%edi,1),%edi
1318         shll    $8,%edi
1319         xorl    %edi,%esi
1320         movl    %ecx,%edi
1321         shrl    $16,%edi
1322         andl    $255,%edi
1323         movzbl  -128(%ebp,%edi,1),%edi
1324         shll    $16,%edi
1325         xorl    %edi,%esi
1326         movl    %ebx,%edi
1327         shrl    $24,%edi
1328         movzbl  -128(%ebp,%edi,1),%edi
1329         shll    $24,%edi
1330         xorl    %edi,%esi
1331         movl    %esi,4(%esp)
1332         movl    %ebx,%esi
1333         andl    $255,%esi
1334         movzbl  -128(%ebp,%esi,1),%esi
1335         movzbl  %ah,%edi
1336         movzbl  -128(%ebp,%edi,1),%edi
1337         shll    $8,%edi
1338         xorl    %edi,%esi
1339         movl    %edx,%edi
1340         shrl    $16,%edi
1341         andl    $255,%edi
1342         movzbl  -128(%ebp,%edi,1),%edi
1343         shll    $16,%edi
1344         xorl    %edi,%esi
1345         movl    %ecx,%edi
1346         shrl    $24,%edi
1347         movzbl  -128(%ebp,%edi,1),%edi
1348         shll    $24,%edi
1349         xorl    %edi,%esi
1350         movl    %esi,8(%esp)
1351         movl    %ecx,%esi
1352         andl    $255,%esi
1353         movzbl  -128(%ebp,%esi,1),%esi
1354         movzbl  %bh,%edi
1355         movzbl  -128(%ebp,%edi,1),%edi
1356         shll    $8,%edi
1357         xorl    %edi,%esi
1358         movl    %eax,%edi
1359         shrl    $16,%edi
1360         andl    $255,%edi
1361         movzbl  -128(%ebp,%edi,1),%edi
1362         shll    $16,%edi
1363         xorl    %edi,%esi
1364         movl    %edx,%edi
1365         shrl    $24,%edi
1366         movzbl  -128(%ebp,%edi,1),%edi
1367         shll    $24,%edi
1368         xorl    %edi,%esi
1369         movl    20(%esp),%edi
1370         andl    $255,%edx
1371         movzbl  -128(%ebp,%edx,1),%edx
1372         movzbl  %ch,%ecx
1373         movzbl  -128(%ebp,%ecx,1),%ecx
1374         shll    $8,%ecx
1375         xorl    %ecx,%edx
1376         movl    %esi,%ecx
1377         shrl    $16,%ebx
1378         andl    $255,%ebx
1379         movzbl  -128(%ebp,%ebx,1),%ebx
1380         shll    $16,%ebx
1381         xorl    %ebx,%edx
1382         movl    8(%esp),%ebx
1383         shrl    $24,%eax
1384         movzbl  -128(%ebp,%eax,1),%eax
1385         shll    $24,%eax
1386         xorl    %eax,%edx
1387         movl    4(%esp),%eax
1388         xorl    16(%edi),%eax
1389         xorl    20(%edi),%ebx
1390         xorl    24(%edi),%ecx
1391         xorl    28(%edi),%edx
1392         ret
1393 .size   _x86_AES_decrypt_compact,.-_x86_AES_decrypt_compact
1394 .type   _sse_AES_decrypt_compact,@function
1395 .align  16
1396 _sse_AES_decrypt_compact:
1397         pxor    (%edi),%mm0
1398         pxor    8(%edi),%mm4
1399         movl    240(%edi),%esi
1400         leal    -2(%esi,%esi,1),%esi
1401         leal    (%edi,%esi,8),%esi
1402         movl    %esi,24(%esp)
1403         movl    $454761243,%eax
1404         movl    %eax,8(%esp)
1405         movl    %eax,12(%esp)
1406         movl    -128(%ebp),%eax
1407         movl    -96(%ebp),%ebx
1408         movl    -64(%ebp),%ecx
1409         movl    -32(%ebp),%edx
1410         movl    (%ebp),%eax
1411         movl    32(%ebp),%ebx
1412         movl    64(%ebp),%ecx
1413         movl    96(%ebp),%edx
1414 .align  16
1415 .L007loop:
1416         pshufw  $12,%mm0,%mm1
1417         movd    %mm1,%eax
1418         pshufw  $9,%mm4,%mm5
1419         movzbl  %al,%esi
1420         movzbl  -128(%ebp,%esi,1),%ecx
1421         movd    %mm5,%ebx
1422         movzbl  %ah,%edx
1423         movzbl  -128(%ebp,%edx,1),%edx
1424         shll    $8,%edx
1425         pshufw  $6,%mm0,%mm2
1426         movzbl  %bl,%esi
1427         movzbl  -128(%ebp,%esi,1),%esi
1428         shll    $16,%esi
1429         orl     %esi,%ecx
1430         shrl    $16,%eax
1431         movzbl  %bh,%esi
1432         movzbl  -128(%ebp,%esi,1),%esi
1433         shll    $24,%esi
1434         orl     %esi,%edx
1435         shrl    $16,%ebx
1436         pshufw  $3,%mm4,%mm6
1437         movzbl  %ah,%esi
1438         movzbl  -128(%ebp,%esi,1),%esi
1439         shll    $24,%esi
1440         orl     %esi,%ecx
1441         movzbl  %bh,%esi
1442         movzbl  -128(%ebp,%esi,1),%esi
1443         shll    $8,%esi
1444         orl     %esi,%ecx
1445         movd    %ecx,%mm0
1446         movzbl  %al,%esi
1447         movd    %mm2,%eax
1448         movzbl  -128(%ebp,%esi,1),%ecx
1449         shll    $16,%ecx
1450         movzbl  %bl,%esi
1451         movd    %mm6,%ebx
1452         movzbl  -128(%ebp,%esi,1),%esi
1453         orl     %esi,%ecx
1454         movzbl  %al,%esi
1455         movzbl  -128(%ebp,%esi,1),%esi
1456         orl     %esi,%edx
1457         movzbl  %bl,%esi
1458         movzbl  -128(%ebp,%esi,1),%esi
1459         shll    $16,%esi
1460         orl     %esi,%edx
1461         movd    %edx,%mm1
1462         movzbl  %ah,%esi
1463         movzbl  -128(%ebp,%esi,1),%edx
1464         shll    $8,%edx
1465         movzbl  %bh,%esi
1466         shrl    $16,%eax
1467         movzbl  -128(%ebp,%esi,1),%esi
1468         shll    $24,%esi
1469         orl     %esi,%edx
1470         shrl    $16,%ebx
1471         punpckldq       %mm1,%mm0
1472         movzbl  %bh,%esi
1473         movzbl  -128(%ebp,%esi,1),%esi
1474         shll    $8,%esi
1475         orl     %esi,%ecx
1476         andl    $255,%ebx
1477         movzbl  -128(%ebp,%ebx,1),%ebx
1478         orl     %ebx,%edx
1479         movzbl  %al,%esi
1480         movzbl  -128(%ebp,%esi,1),%esi
1481         shll    $16,%esi
1482         orl     %esi,%edx
1483         movd    %edx,%mm4
1484         movzbl  %ah,%eax
1485         movzbl  -128(%ebp,%eax,1),%eax
1486         shll    $24,%eax
1487         orl     %eax,%ecx
1488         movd    %ecx,%mm5
1489         punpckldq       %mm5,%mm4
1490         addl    $16,%edi
1491         cmpl    24(%esp),%edi
1492         ja      .L008out
1493         movq    %mm0,%mm3
1494         movq    %mm4,%mm7
1495         pshufw  $228,%mm0,%mm2
1496         pshufw  $228,%mm4,%mm6
1497         movq    %mm0,%mm1
1498         movq    %mm4,%mm5
1499         pshufw  $177,%mm0,%mm0
1500         pshufw  $177,%mm4,%mm4
1501         pslld   $8,%mm2
1502         pslld   $8,%mm6
1503         psrld   $8,%mm3
1504         psrld   $8,%mm7
1505         pxor    %mm2,%mm0
1506         pxor    %mm6,%mm4
1507         pxor    %mm3,%mm0
1508         pxor    %mm7,%mm4
1509         pslld   $16,%mm2
1510         pslld   $16,%mm6
1511         psrld   $16,%mm3
1512         psrld   $16,%mm7
1513         pxor    %mm2,%mm0
1514         pxor    %mm6,%mm4
1515         pxor    %mm3,%mm0
1516         pxor    %mm7,%mm4
1517         movq    8(%esp),%mm3
1518         pxor    %mm2,%mm2
1519         pxor    %mm6,%mm6
1520         pcmpgtb %mm1,%mm2
1521         pcmpgtb %mm5,%mm6
1522         pand    %mm3,%mm2
1523         pand    %mm3,%mm6
1524         paddb   %mm1,%mm1
1525         paddb   %mm5,%mm5
1526         pxor    %mm2,%mm1
1527         pxor    %mm6,%mm5
1528         movq    %mm1,%mm3
1529         movq    %mm5,%mm7
1530         movq    %mm1,%mm2
1531         movq    %mm5,%mm6
1532         pxor    %mm1,%mm0
1533         pxor    %mm5,%mm4
1534         pslld   $24,%mm3
1535         pslld   $24,%mm7
1536         psrld   $8,%mm2
1537         psrld   $8,%mm6
1538         pxor    %mm3,%mm0
1539         pxor    %mm7,%mm4
1540         pxor    %mm2,%mm0
1541         pxor    %mm6,%mm4
1542         movq    8(%esp),%mm2
1543         pxor    %mm3,%mm3
1544         pxor    %mm7,%mm7
1545         pcmpgtb %mm1,%mm3
1546         pcmpgtb %mm5,%mm7
1547         pand    %mm2,%mm3
1548         pand    %mm2,%mm7
1549         paddb   %mm1,%mm1
1550         paddb   %mm5,%mm5
1551         pxor    %mm3,%mm1
1552         pxor    %mm7,%mm5
1553         pshufw  $177,%mm1,%mm3
1554         pshufw  $177,%mm5,%mm7
1555         pxor    %mm1,%mm0
1556         pxor    %mm5,%mm4
1557         pxor    %mm3,%mm0
1558         pxor    %mm7,%mm4
1559         pxor    %mm3,%mm3
1560         pxor    %mm7,%mm7
1561         pcmpgtb %mm1,%mm3
1562         pcmpgtb %mm5,%mm7
1563         pand    %mm2,%mm3
1564         pand    %mm2,%mm7
1565         paddb   %mm1,%mm1
1566         paddb   %mm5,%mm5
1567         pxor    %mm3,%mm1
1568         pxor    %mm7,%mm5
1569         pxor    %mm1,%mm0
1570         pxor    %mm5,%mm4
1571         movq    %mm1,%mm3
1572         movq    %mm5,%mm7
1573         pshufw  $177,%mm1,%mm2
1574         pshufw  $177,%mm5,%mm6
1575         pxor    %mm2,%mm0
1576         pxor    %mm6,%mm4
1577         pslld   $8,%mm1
1578         pslld   $8,%mm5
1579         psrld   $8,%mm3
1580         psrld   $8,%mm7
1581         movq    (%edi),%mm2
1582         movq    8(%edi),%mm6
1583         pxor    %mm1,%mm0
1584         pxor    %mm5,%mm4
1585         pxor    %mm3,%mm0
1586         pxor    %mm7,%mm4
1587         movl    -128(%ebp),%eax
1588         pslld   $16,%mm1
1589         pslld   $16,%mm5
1590         movl    -64(%ebp),%ebx
1591         psrld   $16,%mm3
1592         psrld   $16,%mm7
1593         movl    (%ebp),%ecx
1594         pxor    %mm1,%mm0
1595         pxor    %mm5,%mm4
1596         movl    64(%ebp),%edx
1597         pxor    %mm3,%mm0
1598         pxor    %mm7,%mm4
1599         pxor    %mm2,%mm0
1600         pxor    %mm6,%mm4
1601         jmp     .L007loop
1602 .align  16
1603 .L008out:
1604         pxor    (%edi),%mm0
1605         pxor    8(%edi),%mm4
1606         ret
1607 .size   _sse_AES_decrypt_compact,.-_sse_AES_decrypt_compact
1608 .type   _x86_AES_decrypt,@function
1609 .align  16
1610 _x86_AES_decrypt:
1611         movl    %edi,20(%esp)
1612         xorl    (%edi),%eax
1613         xorl    4(%edi),%ebx
1614         xorl    8(%edi),%ecx
1615         xorl    12(%edi),%edx
1616         movl    240(%edi),%esi
1617         leal    -2(%esi,%esi,1),%esi
1618         leal    (%edi,%esi,8),%esi
1619         movl    %esi,24(%esp)
1620 .align  16
1621 .L009loop:
1622         movl    %eax,%esi
1623         andl    $255,%esi
1624         movl    (%ebp,%esi,8),%esi
1625         movzbl  %dh,%edi
1626         xorl    3(%ebp,%edi,8),%esi
1627         movl    %ecx,%edi
1628         shrl    $16,%edi
1629         andl    $255,%edi
1630         xorl    2(%ebp,%edi,8),%esi
1631         movl    %ebx,%edi
1632         shrl    $24,%edi
1633         xorl    1(%ebp,%edi,8),%esi
1634         movl    %esi,4(%esp)
1635
1636         movl    %ebx,%esi
1637         andl    $255,%esi
1638         movl    (%ebp,%esi,8),%esi
1639         movzbl  %ah,%edi
1640         xorl    3(%ebp,%edi,8),%esi
1641         movl    %edx,%edi
1642         shrl    $16,%edi
1643         andl    $255,%edi
1644         xorl    2(%ebp,%edi,8),%esi
1645         movl    %ecx,%edi
1646         shrl    $24,%edi
1647         xorl    1(%ebp,%edi,8),%esi
1648         movl    %esi,8(%esp)
1649
1650         movl    %ecx,%esi
1651         andl    $255,%esi
1652         movl    (%ebp,%esi,8),%esi
1653         movzbl  %bh,%edi
1654         xorl    3(%ebp,%edi,8),%esi
1655         movl    %eax,%edi
1656         shrl    $16,%edi
1657         andl    $255,%edi
1658         xorl    2(%ebp,%edi,8),%esi
1659         movl    %edx,%edi
1660         shrl    $24,%edi
1661         xorl    1(%ebp,%edi,8),%esi
1662
1663         movl    20(%esp),%edi
1664         andl    $255,%edx
1665         movl    (%ebp,%edx,8),%edx
1666         movzbl  %ch,%ecx
1667         xorl    3(%ebp,%ecx,8),%edx
1668         movl    %esi,%ecx
1669         shrl    $16,%ebx
1670         andl    $255,%ebx
1671         xorl    2(%ebp,%ebx,8),%edx
1672         movl    8(%esp),%ebx
1673         shrl    $24,%eax
1674         xorl    1(%ebp,%eax,8),%edx
1675         movl    4(%esp),%eax
1676
1677         addl    $16,%edi
1678         xorl    (%edi),%eax
1679         xorl    4(%edi),%ebx
1680         xorl    8(%edi),%ecx
1681         xorl    12(%edi),%edx
1682         cmpl    24(%esp),%edi
1683         movl    %edi,20(%esp)
1684         jb      .L009loop
1685         leal    2176(%ebp),%ebp
1686         movl    -128(%ebp),%edi
1687         movl    -96(%ebp),%esi
1688         movl    -64(%ebp),%edi
1689         movl    -32(%ebp),%esi
1690         movl    (%ebp),%edi
1691         movl    32(%ebp),%esi
1692         movl    64(%ebp),%edi
1693         movl    96(%ebp),%esi
1694         leal    -128(%ebp),%ebp
1695         movl    %eax,%esi
1696         andl    $255,%esi
1697         movzbl  (%ebp,%esi,1),%esi
1698         movzbl  %dh,%edi
1699         movzbl  (%ebp,%edi,1),%edi
1700         shll    $8,%edi
1701         xorl    %edi,%esi
1702         movl    %ecx,%edi
1703         shrl    $16,%edi
1704         andl    $255,%edi
1705         movzbl  (%ebp,%edi,1),%edi
1706         shll    $16,%edi
1707         xorl    %edi,%esi
1708         movl    %ebx,%edi
1709         shrl    $24,%edi
1710         movzbl  (%ebp,%edi,1),%edi
1711         shll    $24,%edi
1712         xorl    %edi,%esi
1713         movl    %esi,4(%esp)
1714         movl    %ebx,%esi
1715         andl    $255,%esi
1716         movzbl  (%ebp,%esi,1),%esi
1717         movzbl  %ah,%edi
1718         movzbl  (%ebp,%edi,1),%edi
1719         shll    $8,%edi
1720         xorl    %edi,%esi
1721         movl    %edx,%edi
1722         shrl    $16,%edi
1723         andl    $255,%edi
1724         movzbl  (%ebp,%edi,1),%edi
1725         shll    $16,%edi
1726         xorl    %edi,%esi
1727         movl    %ecx,%edi
1728         shrl    $24,%edi
1729         movzbl  (%ebp,%edi,1),%edi
1730         shll    $24,%edi
1731         xorl    %edi,%esi
1732         movl    %esi,8(%esp)
1733         movl    %ecx,%esi
1734         andl    $255,%esi
1735         movzbl  (%ebp,%esi,1),%esi
1736         movzbl  %bh,%edi
1737         movzbl  (%ebp,%edi,1),%edi
1738         shll    $8,%edi
1739         xorl    %edi,%esi
1740         movl    %eax,%edi
1741         shrl    $16,%edi
1742         andl    $255,%edi
1743         movzbl  (%ebp,%edi,1),%edi
1744         shll    $16,%edi
1745         xorl    %edi,%esi
1746         movl    %edx,%edi
1747         shrl    $24,%edi
1748         movzbl  (%ebp,%edi,1),%edi
1749         shll    $24,%edi
1750         xorl    %edi,%esi
1751         movl    20(%esp),%edi
1752         andl    $255,%edx
1753         movzbl  (%ebp,%edx,1),%edx
1754         movzbl  %ch,%ecx
1755         movzbl  (%ebp,%ecx,1),%ecx
1756         shll    $8,%ecx
1757         xorl    %ecx,%edx
1758         movl    %esi,%ecx
1759         shrl    $16,%ebx
1760         andl    $255,%ebx
1761         movzbl  (%ebp,%ebx,1),%ebx
1762         shll    $16,%ebx
1763         xorl    %ebx,%edx
1764         movl    8(%esp),%ebx
1765         shrl    $24,%eax
1766         movzbl  (%ebp,%eax,1),%eax
1767         shll    $24,%eax
1768         xorl    %eax,%edx
1769         movl    4(%esp),%eax
1770         leal    -2048(%ebp),%ebp
1771         addl    $16,%edi
1772         xorl    (%edi),%eax
1773         xorl    4(%edi),%ebx
1774         xorl    8(%edi),%ecx
1775         xorl    12(%edi),%edx
1776         ret
1777 .align  64
1778 .LAES_Td:
1779 .long   1353184337,1353184337
1780 .long   1399144830,1399144830
1781 .long   3282310938,3282310938
1782 .long   2522752826,2522752826
1783 .long   3412831035,3412831035
1784 .long   4047871263,4047871263
1785 .long   2874735276,2874735276
1786 .long   2466505547,2466505547
1787 .long   1442459680,1442459680
1788 .long   4134368941,4134368941
1789 .long   2440481928,2440481928
1790 .long   625738485,625738485
1791 .long   4242007375,4242007375
1792 .long   3620416197,3620416197
1793 .long   2151953702,2151953702
1794 .long   2409849525,2409849525
1795 .long   1230680542,1230680542
1796 .long   1729870373,1729870373
1797 .long   2551114309,2551114309
1798 .long   3787521629,3787521629
1799 .long   41234371,41234371
1800 .long   317738113,317738113
1801 .long   2744600205,2744600205
1802 .long   3338261355,3338261355
1803 .long   3881799427,3881799427
1804 .long   2510066197,2510066197
1805 .long   3950669247,3950669247
1806 .long   3663286933,3663286933
1807 .long   763608788,763608788
1808 .long   3542185048,3542185048
1809 .long   694804553,694804553
1810 .long   1154009486,1154009486
1811 .long   1787413109,1787413109
1812 .long   2021232372,2021232372
1813 .long   1799248025,1799248025
1814 .long   3715217703,3715217703
1815 .long   3058688446,3058688446
1816 .long   397248752,397248752
1817 .long   1722556617,1722556617
1818 .long   3023752829,3023752829
1819 .long   407560035,407560035
1820 .long   2184256229,2184256229
1821 .long   1613975959,1613975959
1822 .long   1165972322,1165972322
1823 .long   3765920945,3765920945
1824 .long   2226023355,2226023355
1825 .long   480281086,480281086
1826 .long   2485848313,2485848313
1827 .long   1483229296,1483229296
1828 .long   436028815,436028815
1829 .long   2272059028,2272059028
1830 .long   3086515026,3086515026
1831 .long   601060267,601060267
1832 .long   3791801202,3791801202
1833 .long   1468997603,1468997603
1834 .long   715871590,715871590
1835 .long   120122290,120122290
1836 .long   63092015,63092015
1837 .long   2591802758,2591802758
1838 .long   2768779219,2768779219
1839 .long   4068943920,4068943920
1840 .long   2997206819,2997206819
1841 .long   3127509762,3127509762
1842 .long   1552029421,1552029421
1843 .long   723308426,723308426
1844 .long   2461301159,2461301159
1845 .long   4042393587,4042393587
1846 .long   2715969870,2715969870
1847 .long   3455375973,3455375973
1848 .long   3586000134,3586000134
1849 .long   526529745,526529745
1850 .long   2331944644,2331944644
1851 .long   2639474228,2639474228
1852 .long   2689987490,2689987490
1853 .long   853641733,853641733
1854 .long   1978398372,1978398372
1855 .long   971801355,971801355
1856 .long   2867814464,2867814464
1857 .long   111112542,111112542
1858 .long   1360031421,1360031421
1859 .long   4186579262,4186579262
1860 .long   1023860118,1023860118
1861 .long   2919579357,2919579357
1862 .long   1186850381,1186850381
1863 .long   3045938321,3045938321
1864 .long   90031217,90031217
1865 .long   1876166148,1876166148
1866 .long   4279586912,4279586912
1867 .long   620468249,620468249
1868 .long   2548678102,2548678102
1869 .long   3426959497,3426959497
1870 .long   2006899047,2006899047
1871 .long   3175278768,3175278768
1872 .long   2290845959,2290845959
1873 .long   945494503,945494503
1874 .long   3689859193,3689859193
1875 .long   1191869601,1191869601
1876 .long   3910091388,3910091388
1877 .long   3374220536,3374220536
1878 .long   0,0
1879 .long   2206629897,2206629897
1880 .long   1223502642,1223502642
1881 .long   2893025566,2893025566
1882 .long   1316117100,1316117100
1883 .long   4227796733,4227796733
1884 .long   1446544655,1446544655
1885 .long   517320253,517320253
1886 .long   658058550,658058550
1887 .long   1691946762,1691946762
1888 .long   564550760,564550760
1889 .long   3511966619,3511966619
1890 .long   976107044,976107044
1891 .long   2976320012,2976320012
1892 .long   266819475,266819475
1893 .long   3533106868,3533106868
1894 .long   2660342555,2660342555
1895 .long   1338359936,1338359936
1896 .long   2720062561,2720062561
1897 .long   1766553434,1766553434
1898 .long   370807324,370807324
1899 .long   179999714,179999714
1900 .long   3844776128,3844776128
1901 .long   1138762300,1138762300
1902 .long   488053522,488053522
1903 .long   185403662,185403662
1904 .long   2915535858,2915535858
1905 .long   3114841645,3114841645
1906 .long   3366526484,3366526484
1907 .long   2233069911,2233069911
1908 .long   1275557295,1275557295
1909 .long   3151862254,3151862254
1910 .long   4250959779,4250959779
1911 .long   2670068215,2670068215
1912 .long   3170202204,3170202204
1913 .long   3309004356,3309004356
1914 .long   880737115,880737115
1915 .long   1982415755,1982415755
1916 .long   3703972811,3703972811
1917 .long   1761406390,1761406390
1918 .long   1676797112,1676797112
1919 .long   3403428311,3403428311
1920 .long   277177154,277177154
1921 .long   1076008723,1076008723
1922 .long   538035844,538035844
1923 .long   2099530373,2099530373
1924 .long   4164795346,4164795346
1925 .long   288553390,288553390
1926 .long   1839278535,1839278535
1927 .long   1261411869,1261411869
1928 .long   4080055004,4080055004
1929 .long   3964831245,3964831245
1930 .long   3504587127,3504587127
1931 .long   1813426987,1813426987
1932 .long   2579067049,2579067049
1933 .long   4199060497,4199060497
1934 .long   577038663,577038663
1935 .long   3297574056,3297574056
1936 .long   440397984,440397984
1937 .long   3626794326,3626794326
1938 .long   4019204898,4019204898
1939 .long   3343796615,3343796615
1940 .long   3251714265,3251714265
1941 .long   4272081548,4272081548
1942 .long   906744984,906744984
1943 .long   3481400742,3481400742
1944 .long   685669029,685669029
1945 .long   646887386,646887386
1946 .long   2764025151,2764025151
1947 .long   3835509292,3835509292
1948 .long   227702864,227702864
1949 .long   2613862250,2613862250
1950 .long   1648787028,1648787028
1951 .long   3256061430,3256061430
1952 .long   3904428176,3904428176
1953 .long   1593260334,1593260334
1954 .long   4121936770,4121936770
1955 .long   3196083615,3196083615
1956 .long   2090061929,2090061929
1957 .long   2838353263,2838353263
1958 .long   3004310991,3004310991
1959 .long   999926984,999926984
1960 .long   2809993232,2809993232
1961 .long   1852021992,1852021992
1962 .long   2075868123,2075868123
1963 .long   158869197,158869197
1964 .long   4095236462,4095236462
1965 .long   28809964,28809964
1966 .long   2828685187,2828685187
1967 .long   1701746150,1701746150
1968 .long   2129067946,2129067946
1969 .long   147831841,147831841
1970 .long   3873969647,3873969647
1971 .long   3650873274,3650873274
1972 .long   3459673930,3459673930
1973 .long   3557400554,3557400554
1974 .long   3598495785,3598495785
1975 .long   2947720241,2947720241
1976 .long   824393514,824393514
1977 .long   815048134,815048134
1978 .long   3227951669,3227951669
1979 .long   935087732,935087732
1980 .long   2798289660,2798289660
1981 .long   2966458592,2966458592
1982 .long   366520115,366520115
1983 .long   1251476721,1251476721
1984 .long   4158319681,4158319681
1985 .long   240176511,240176511
1986 .long   804688151,804688151
1987 .long   2379631990,2379631990
1988 .long   1303441219,1303441219
1989 .long   1414376140,1414376140
1990 .long   3741619940,3741619940
1991 .long   3820343710,3820343710
1992 .long   461924940,461924940
1993 .long   3089050817,3089050817
1994 .long   2136040774,2136040774
1995 .long   82468509,82468509
1996 .long   1563790337,1563790337
1997 .long   1937016826,1937016826
1998 .long   776014843,776014843
1999 .long   1511876531,1511876531
2000 .long   1389550482,1389550482
2001 .long   861278441,861278441
2002 .long   323475053,323475053
2003 .long   2355222426,2355222426
2004 .long   2047648055,2047648055
2005 .long   2383738969,2383738969
2006 .long   2302415851,2302415851
2007 .long   3995576782,3995576782
2008 .long   902390199,902390199
2009 .long   3991215329,3991215329
2010 .long   1018251130,1018251130
2011 .long   1507840668,1507840668
2012 .long   1064563285,1064563285
2013 .long   2043548696,2043548696
2014 .long   3208103795,3208103795
2015 .long   3939366739,3939366739
2016 .long   1537932639,1537932639
2017 .long   342834655,342834655
2018 .long   2262516856,2262516856
2019 .long   2180231114,2180231114
2020 .long   1053059257,1053059257
2021 .long   741614648,741614648
2022 .long   1598071746,1598071746
2023 .long   1925389590,1925389590
2024 .long   203809468,203809468
2025 .long   2336832552,2336832552
2026 .long   1100287487,1100287487
2027 .long   1895934009,1895934009
2028 .long   3736275976,3736275976
2029 .long   2632234200,2632234200
2030 .long   2428589668,2428589668
2031 .long   1636092795,1636092795
2032 .long   1890988757,1890988757
2033 .long   1952214088,1952214088
2034 .long   1113045200,1113045200
2035 .byte   82,9,106,213,48,54,165,56
2036 .byte   191,64,163,158,129,243,215,251
2037 .byte   124,227,57,130,155,47,255,135
2038 .byte   52,142,67,68,196,222,233,203
2039 .byte   84,123,148,50,166,194,35,61
2040 .byte   238,76,149,11,66,250,195,78
2041 .byte   8,46,161,102,40,217,36,178
2042 .byte   118,91,162,73,109,139,209,37
2043 .byte   114,248,246,100,134,104,152,22
2044 .byte   212,164,92,204,93,101,182,146
2045 .byte   108,112,72,80,253,237,185,218
2046 .byte   94,21,70,87,167,141,157,132
2047 .byte   144,216,171,0,140,188,211,10
2048 .byte   247,228,88,5,184,179,69,6
2049 .byte   208,44,30,143,202,63,15,2
2050 .byte   193,175,189,3,1,19,138,107
2051 .byte   58,145,17,65,79,103,220,234
2052 .byte   151,242,207,206,240,180,230,115
2053 .byte   150,172,116,34,231,173,53,133
2054 .byte   226,249,55,232,28,117,223,110
2055 .byte   71,241,26,113,29,41,197,137
2056 .byte   111,183,98,14,170,24,190,27
2057 .byte   252,86,62,75,198,210,121,32
2058 .byte   154,219,192,254,120,205,90,244
2059 .byte   31,221,168,51,136,7,199,49
2060 .byte   177,18,16,89,39,128,236,95
2061 .byte   96,81,127,169,25,181,74,13
2062 .byte   45,229,122,159,147,201,156,239
2063 .byte   160,224,59,77,174,42,245,176
2064 .byte   200,235,187,60,131,83,153,97
2065 .byte   23,43,4,126,186,119,214,38
2066 .byte   225,105,20,99,85,33,12,125
2067 .byte   82,9,106,213,48,54,165,56
2068 .byte   191,64,163,158,129,243,215,251
2069 .byte   124,227,57,130,155,47,255,135
2070 .byte   52,142,67,68,196,222,233,203
2071 .byte   84,123,148,50,166,194,35,61
2072 .byte   238,76,149,11,66,250,195,78
2073 .byte   8,46,161,102,40,217,36,178
2074 .byte   118,91,162,73,109,139,209,37
2075 .byte   114,248,246,100,134,104,152,22
2076 .byte   212,164,92,204,93,101,182,146
2077 .byte   108,112,72,80,253,237,185,218
2078 .byte   94,21,70,87,167,141,157,132
2079 .byte   144,216,171,0,140,188,211,10
2080 .byte   247,228,88,5,184,179,69,6
2081 .byte   208,44,30,143,202,63,15,2
2082 .byte   193,175,189,3,1,19,138,107
2083 .byte   58,145,17,65,79,103,220,234
2084 .byte   151,242,207,206,240,180,230,115
2085 .byte   150,172,116,34,231,173,53,133
2086 .byte   226,249,55,232,28,117,223,110
2087 .byte   71,241,26,113,29,41,197,137
2088 .byte   111,183,98,14,170,24,190,27
2089 .byte   252,86,62,75,198,210,121,32
2090 .byte   154,219,192,254,120,205,90,244
2091 .byte   31,221,168,51,136,7,199,49
2092 .byte   177,18,16,89,39,128,236,95
2093 .byte   96,81,127,169,25,181,74,13
2094 .byte   45,229,122,159,147,201,156,239
2095 .byte   160,224,59,77,174,42,245,176
2096 .byte   200,235,187,60,131,83,153,97
2097 .byte   23,43,4,126,186,119,214,38
2098 .byte   225,105,20,99,85,33,12,125
2099 .byte   82,9,106,213,48,54,165,56
2100 .byte   191,64,163,158,129,243,215,251
2101 .byte   124,227,57,130,155,47,255,135
2102 .byte   52,142,67,68,196,222,233,203
2103 .byte   84,123,148,50,166,194,35,61
2104 .byte   238,76,149,11,66,250,195,78
2105 .byte   8,46,161,102,40,217,36,178
2106 .byte   118,91,162,73,109,139,209,37
2107 .byte   114,248,246,100,134,104,152,22
2108 .byte   212,164,92,204,93,101,182,146
2109 .byte   108,112,72,80,253,237,185,218
2110 .byte   94,21,70,87,167,141,157,132
2111 .byte   144,216,171,0,140,188,211,10
2112 .byte   247,228,88,5,184,179,69,6
2113 .byte   208,44,30,143,202,63,15,2
2114 .byte   193,175,189,3,1,19,138,107
2115 .byte   58,145,17,65,79,103,220,234
2116 .byte   151,242,207,206,240,180,230,115
2117 .byte   150,172,116,34,231,173,53,133
2118 .byte   226,249,55,232,28,117,223,110
2119 .byte   71,241,26,113,29,41,197,137
2120 .byte   111,183,98,14,170,24,190,27
2121 .byte   252,86,62,75,198,210,121,32
2122 .byte   154,219,192,254,120,205,90,244
2123 .byte   31,221,168,51,136,7,199,49
2124 .byte   177,18,16,89,39,128,236,95
2125 .byte   96,81,127,169,25,181,74,13
2126 .byte   45,229,122,159,147,201,156,239
2127 .byte   160,224,59,77,174,42,245,176
2128 .byte   200,235,187,60,131,83,153,97
2129 .byte   23,43,4,126,186,119,214,38
2130 .byte   225,105,20,99,85,33,12,125
2131 .byte   82,9,106,213,48,54,165,56
2132 .byte   191,64,163,158,129,243,215,251
2133 .byte   124,227,57,130,155,47,255,135
2134 .byte   52,142,67,68,196,222,233,203
2135 .byte   84,123,148,50,166,194,35,61
2136 .byte   238,76,149,11,66,250,195,78
2137 .byte   8,46,161,102,40,217,36,178
2138 .byte   118,91,162,73,109,139,209,37
2139 .byte   114,248,246,100,134,104,152,22
2140 .byte   212,164,92,204,93,101,182,146
2141 .byte   108,112,72,80,253,237,185,218
2142 .byte   94,21,70,87,167,141,157,132
2143 .byte   144,216,171,0,140,188,211,10
2144 .byte   247,228,88,5,184,179,69,6
2145 .byte   208,44,30,143,202,63,15,2
2146 .byte   193,175,189,3,1,19,138,107
2147 .byte   58,145,17,65,79,103,220,234
2148 .byte   151,242,207,206,240,180,230,115
2149 .byte   150,172,116,34,231,173,53,133
2150 .byte   226,249,55,232,28,117,223,110
2151 .byte   71,241,26,113,29,41,197,137
2152 .byte   111,183,98,14,170,24,190,27
2153 .byte   252,86,62,75,198,210,121,32
2154 .byte   154,219,192,254,120,205,90,244
2155 .byte   31,221,168,51,136,7,199,49
2156 .byte   177,18,16,89,39,128,236,95
2157 .byte   96,81,127,169,25,181,74,13
2158 .byte   45,229,122,159,147,201,156,239
2159 .byte   160,224,59,77,174,42,245,176
2160 .byte   200,235,187,60,131,83,153,97
2161 .byte   23,43,4,126,186,119,214,38
2162 .byte   225,105,20,99,85,33,12,125
2163 .size   _x86_AES_decrypt,.-_x86_AES_decrypt
2164 .globl  AES_decrypt
2165 .type   AES_decrypt,@function
2166 .align  16
2167 AES_decrypt:
2168 .L_AES_decrypt_begin:
2169         pushl   %ebp
2170         pushl   %ebx
2171         pushl   %esi
2172         pushl   %edi
2173         movl    20(%esp),%esi
2174         movl    28(%esp),%edi
2175         movl    %esp,%eax
2176         subl    $36,%esp
2177         andl    $-64,%esp
2178         leal    -127(%edi),%ebx
2179         subl    %esp,%ebx
2180         negl    %ebx
2181         andl    $960,%ebx
2182         subl    %ebx,%esp
2183         addl    $4,%esp
2184         movl    %eax,28(%esp)
2185         call    .L010pic_point
2186 .L010pic_point:
2187         popl    %ebp
2188         leal    OPENSSL_ia32cap_P,%eax
2189         leal    .LAES_Td-.L010pic_point(%ebp),%ebp
2190         leal    764(%esp),%ebx
2191         subl    %ebp,%ebx
2192         andl    $768,%ebx
2193         leal    2176(%ebp,%ebx,1),%ebp
2194         btl     $25,(%eax)
2195         jnc     .L011x86
2196         movq    (%esi),%mm0
2197         movq    8(%esi),%mm4
2198         call    _sse_AES_decrypt_compact
2199         movl    28(%esp),%esp
2200         movl    24(%esp),%esi
2201         movq    %mm0,(%esi)
2202         movq    %mm4,8(%esi)
2203         emms
2204         popl    %edi
2205         popl    %esi
2206         popl    %ebx
2207         popl    %ebp
2208         ret
2209 .align  16
2210 .L011x86:
2211         movl    %ebp,24(%esp)
2212         movl    (%esi),%eax
2213         movl    4(%esi),%ebx
2214         movl    8(%esi),%ecx
2215         movl    12(%esi),%edx
2216         call    _x86_AES_decrypt_compact
2217         movl    28(%esp),%esp
2218         movl    24(%esp),%esi
2219         movl    %eax,(%esi)
2220         movl    %ebx,4(%esi)
2221         movl    %ecx,8(%esi)
2222         movl    %edx,12(%esi)
2223         popl    %edi
2224         popl    %esi
2225         popl    %ebx
2226         popl    %ebp
2227         ret
2228 .size   AES_decrypt,.-.L_AES_decrypt_begin
2229 .globl  AES_cbc_encrypt
2230 .type   AES_cbc_encrypt,@function
2231 .align  16
2232 AES_cbc_encrypt:
2233 .L_AES_cbc_encrypt_begin:
2234         pushl   %ebp
2235         pushl   %ebx
2236         pushl   %esi
2237         pushl   %edi
2238         movl    28(%esp),%ecx
2239         cmpl    $0,%ecx
2240         je      .L012drop_out
2241         call    .L013pic_point
2242 .L013pic_point:
2243         popl    %ebp
2244         leal    OPENSSL_ia32cap_P,%eax
2245         cmpl    $0,40(%esp)
2246         leal    .LAES_Te-.L013pic_point(%ebp),%ebp
2247         jne     .L014picked_te
2248         leal    .LAES_Td-.LAES_Te(%ebp),%ebp
2249 .L014picked_te:
2250         pushfl
2251         cld
2252         cmpl    $512,%ecx
2253         jb      .L015slow_way
2254         testl   $15,%ecx
2255         jnz     .L015slow_way
2256         btl     $28,(%eax)
2257         jc      .L015slow_way
2258         leal    -324(%esp),%esi
2259         andl    $-64,%esi
2260         movl    %ebp,%eax
2261         leal    2304(%ebp),%ebx
2262         movl    %esi,%edx
2263         andl    $4095,%eax
2264         andl    $4095,%ebx
2265         andl    $4095,%edx
2266         cmpl    %ebx,%edx
2267         jb      .L016tbl_break_out
2268         subl    %ebx,%edx
2269         subl    %edx,%esi
2270         jmp     .L017tbl_ok
2271 .align  4
2272 .L016tbl_break_out:
2273         subl    %eax,%edx
2274         andl    $4095,%edx
2275         addl    $384,%edx
2276         subl    %edx,%esi
2277 .align  4
2278 .L017tbl_ok:
2279         leal    24(%esp),%edx
2280         xchgl   %esi,%esp
2281         addl    $4,%esp
2282         movl    %ebp,24(%esp)
2283         movl    %esi,28(%esp)
2284         movl    (%edx),%eax
2285         movl    4(%edx),%ebx
2286         movl    12(%edx),%edi
2287         movl    16(%edx),%esi
2288         movl    20(%edx),%edx
2289         movl    %eax,32(%esp)
2290         movl    %ebx,36(%esp)
2291         movl    %ecx,40(%esp)
2292         movl    %edi,44(%esp)
2293         movl    %esi,48(%esp)
2294         movl    $0,316(%esp)
2295         movl    %edi,%ebx
2296         movl    $61,%ecx
2297         subl    %ebp,%ebx
2298         movl    %edi,%esi
2299         andl    $4095,%ebx
2300         leal    76(%esp),%edi
2301         cmpl    $2304,%ebx
2302         jb      .L018do_copy
2303         cmpl    $3852,%ebx
2304         jb      .L019skip_copy
2305 .align  4
2306 .L018do_copy:
2307         movl    %edi,44(%esp)
2308 .long   2784229001
2309 .L019skip_copy:
2310         movl    $16,%edi
2311 .align  4
2312 .L020prefetch_tbl:
2313         movl    (%ebp),%eax
2314         movl    32(%ebp),%ebx
2315         movl    64(%ebp),%ecx
2316         movl    96(%ebp),%esi
2317         leal    128(%ebp),%ebp
2318         subl    $1,%edi
2319         jnz     .L020prefetch_tbl
2320         subl    $2048,%ebp
2321         movl    32(%esp),%esi
2322         movl    48(%esp),%edi
2323         cmpl    $0,%edx
2324         je      .L021fast_decrypt
2325         movl    (%edi),%eax
2326         movl    4(%edi),%ebx
2327 .align  16
2328 .L022fast_enc_loop:
2329         movl    8(%edi),%ecx
2330         movl    12(%edi),%edx
2331         xorl    (%esi),%eax
2332         xorl    4(%esi),%ebx
2333         xorl    8(%esi),%ecx
2334         xorl    12(%esi),%edx
2335         movl    44(%esp),%edi
2336         call    _x86_AES_encrypt
2337         movl    32(%esp),%esi
2338         movl    36(%esp),%edi
2339         movl    %eax,(%edi)
2340         movl    %ebx,4(%edi)
2341         movl    %ecx,8(%edi)
2342         movl    %edx,12(%edi)
2343         leal    16(%esi),%esi
2344         movl    40(%esp),%ecx
2345         movl    %esi,32(%esp)
2346         leal    16(%edi),%edx
2347         movl    %edx,36(%esp)
2348         subl    $16,%ecx
2349         movl    %ecx,40(%esp)
2350         jnz     .L022fast_enc_loop
2351         movl    48(%esp),%esi
2352         movl    8(%edi),%ecx
2353         movl    12(%edi),%edx
2354         movl    %eax,(%esi)
2355         movl    %ebx,4(%esi)
2356         movl    %ecx,8(%esi)
2357         movl    %edx,12(%esi)
2358         cmpl    $0,316(%esp)
2359         movl    44(%esp),%edi
2360         je      .L023skip_ezero
2361         movl    $60,%ecx
2362         xorl    %eax,%eax
2363 .align  4
2364 .long   2884892297
2365 .L023skip_ezero:
2366         movl    28(%esp),%esp
2367         popfl
2368 .L012drop_out:
2369         popl    %edi
2370         popl    %esi
2371         popl    %ebx
2372         popl    %ebp
2373         ret
2374         pushfl
2375 .align  16
2376 .L021fast_decrypt:
2377         cmpl    36(%esp),%esi
2378         je      .L024fast_dec_in_place
2379         movl    %edi,52(%esp)
2380 .align  4
2381 .align  16
2382 .L025fast_dec_loop:
2383         movl    (%esi),%eax
2384         movl    4(%esi),%ebx
2385         movl    8(%esi),%ecx
2386         movl    12(%esi),%edx
2387         movl    44(%esp),%edi
2388         call    _x86_AES_decrypt
2389         movl    52(%esp),%edi
2390         movl    40(%esp),%esi
2391         xorl    (%edi),%eax
2392         xorl    4(%edi),%ebx
2393         xorl    8(%edi),%ecx
2394         xorl    12(%edi),%edx
2395         movl    36(%esp),%edi
2396         movl    32(%esp),%esi
2397         movl    %eax,(%edi)
2398         movl    %ebx,4(%edi)
2399         movl    %ecx,8(%edi)
2400         movl    %edx,12(%edi)
2401         movl    40(%esp),%ecx
2402         movl    %esi,52(%esp)
2403         leal    16(%esi),%esi
2404         movl    %esi,32(%esp)
2405         leal    16(%edi),%edi
2406         movl    %edi,36(%esp)
2407         subl    $16,%ecx
2408         movl    %ecx,40(%esp)
2409         jnz     .L025fast_dec_loop
2410         movl    52(%esp),%edi
2411         movl    48(%esp),%esi
2412         movl    (%edi),%eax
2413         movl    4(%edi),%ebx
2414         movl    8(%edi),%ecx
2415         movl    12(%edi),%edx
2416         movl    %eax,(%esi)
2417         movl    %ebx,4(%esi)
2418         movl    %ecx,8(%esi)
2419         movl    %edx,12(%esi)
2420         jmp     .L026fast_dec_out
2421 .align  16
2422 .L024fast_dec_in_place:
2423 .L027fast_dec_in_place_loop:
2424         movl    (%esi),%eax
2425         movl    4(%esi),%ebx
2426         movl    8(%esi),%ecx
2427         movl    12(%esi),%edx
2428         leal    60(%esp),%edi
2429         movl    %eax,(%edi)
2430         movl    %ebx,4(%edi)
2431         movl    %ecx,8(%edi)
2432         movl    %edx,12(%edi)
2433         movl    44(%esp),%edi
2434         call    _x86_AES_decrypt
2435         movl    48(%esp),%edi
2436         movl    36(%esp),%esi
2437         xorl    (%edi),%eax
2438         xorl    4(%edi),%ebx
2439         xorl    8(%edi),%ecx
2440         xorl    12(%edi),%edx
2441         movl    %eax,(%esi)
2442         movl    %ebx,4(%esi)
2443         movl    %ecx,8(%esi)
2444         movl    %edx,12(%esi)
2445         leal    16(%esi),%esi
2446         movl    %esi,36(%esp)
2447         leal    60(%esp),%esi
2448         movl    (%esi),%eax
2449         movl    4(%esi),%ebx
2450         movl    8(%esi),%ecx
2451         movl    12(%esi),%edx
2452         movl    %eax,(%edi)
2453         movl    %ebx,4(%edi)
2454         movl    %ecx,8(%edi)
2455         movl    %edx,12(%edi)
2456         movl    32(%esp),%esi
2457         movl    40(%esp),%ecx
2458         leal    16(%esi),%esi
2459         movl    %esi,32(%esp)
2460         subl    $16,%ecx
2461         movl    %ecx,40(%esp)
2462         jnz     .L027fast_dec_in_place_loop
2463 .align  4
2464 .L026fast_dec_out:
2465         cmpl    $0,316(%esp)
2466         movl    44(%esp),%edi
2467         je      .L028skip_dzero
2468         movl    $60,%ecx
2469         xorl    %eax,%eax
2470 .align  4
2471 .long   2884892297
2472 .L028skip_dzero:
2473         movl    28(%esp),%esp
2474         popfl
2475         popl    %edi
2476         popl    %esi
2477         popl    %ebx
2478         popl    %ebp
2479         ret
2480         pushfl
2481 .align  16
2482 .L015slow_way:
2483         movl    (%eax),%eax
2484         movl    36(%esp),%edi
2485         leal    -80(%esp),%esi
2486         andl    $-64,%esi
2487         leal    -143(%edi),%ebx
2488         subl    %esi,%ebx
2489         negl    %ebx
2490         andl    $960,%ebx
2491         subl    %ebx,%esi
2492         leal    768(%esi),%ebx
2493         subl    %ebp,%ebx
2494         andl    $768,%ebx
2495         leal    2176(%ebp,%ebx,1),%ebp
2496         leal    24(%esp),%edx
2497         xchgl   %esi,%esp
2498         addl    $4,%esp
2499         movl    %ebp,24(%esp)
2500         movl    %esi,28(%esp)
2501         movl    %eax,52(%esp)
2502         movl    (%edx),%eax
2503         movl    4(%edx),%ebx
2504         movl    16(%edx),%esi
2505         movl    20(%edx),%edx
2506         movl    %eax,32(%esp)
2507         movl    %ebx,36(%esp)
2508         movl    %ecx,40(%esp)
2509         movl    %edi,44(%esp)
2510         movl    %esi,48(%esp)
2511         movl    %esi,%edi
2512         movl    %eax,%esi
2513         cmpl    $0,%edx
2514         je      .L029slow_decrypt
2515         cmpl    $16,%ecx
2516         movl    %ebx,%edx
2517         jb      .L030slow_enc_tail
2518         btl     $25,52(%esp)
2519         jnc     .L031slow_enc_x86
2520         movq    (%edi),%mm0
2521         movq    8(%edi),%mm4
2522 .align  16
2523 .L032slow_enc_loop_sse:
2524         pxor    (%esi),%mm0
2525         pxor    8(%esi),%mm4
2526         movl    44(%esp),%edi
2527         call    _sse_AES_encrypt_compact
2528         movl    32(%esp),%esi
2529         movl    36(%esp),%edi
2530         movl    40(%esp),%ecx
2531         movq    %mm0,(%edi)
2532         movq    %mm4,8(%edi)
2533         leal    16(%esi),%esi
2534         movl    %esi,32(%esp)
2535         leal    16(%edi),%edx
2536         movl    %edx,36(%esp)
2537         subl    $16,%ecx
2538         cmpl    $16,%ecx
2539         movl    %ecx,40(%esp)
2540         jae     .L032slow_enc_loop_sse
2541         testl   $15,%ecx
2542         jnz     .L030slow_enc_tail
2543         movl    48(%esp),%esi
2544         movq    %mm0,(%esi)
2545         movq    %mm4,8(%esi)
2546         emms
2547         movl    28(%esp),%esp
2548         popfl
2549         popl    %edi
2550         popl    %esi
2551         popl    %ebx
2552         popl    %ebp
2553         ret
2554         pushfl
2555 .align  16
2556 .L031slow_enc_x86:
2557         movl    (%edi),%eax
2558         movl    4(%edi),%ebx
2559 .align  4
2560 .L033slow_enc_loop_x86:
2561         movl    8(%edi),%ecx
2562         movl    12(%edi),%edx
2563         xorl    (%esi),%eax
2564         xorl    4(%esi),%ebx
2565         xorl    8(%esi),%ecx
2566         xorl    12(%esi),%edx
2567         movl    44(%esp),%edi
2568         call    _x86_AES_encrypt_compact
2569         movl    32(%esp),%esi
2570         movl    36(%esp),%edi
2571         movl    %eax,(%edi)
2572         movl    %ebx,4(%edi)
2573         movl    %ecx,8(%edi)
2574         movl    %edx,12(%edi)
2575         movl    40(%esp),%ecx
2576         leal    16(%esi),%esi
2577         movl    %esi,32(%esp)
2578         leal    16(%edi),%edx
2579         movl    %edx,36(%esp)
2580         subl    $16,%ecx
2581         cmpl    $16,%ecx
2582         movl    %ecx,40(%esp)
2583         jae     .L033slow_enc_loop_x86
2584         testl   $15,%ecx
2585         jnz     .L030slow_enc_tail
2586         movl    48(%esp),%esi
2587         movl    8(%edi),%ecx
2588         movl    12(%edi),%edx
2589         movl    %eax,(%esi)
2590         movl    %ebx,4(%esi)
2591         movl    %ecx,8(%esi)
2592         movl    %edx,12(%esi)
2593         movl    28(%esp),%esp
2594         popfl
2595         popl    %edi
2596         popl    %esi
2597         popl    %ebx
2598         popl    %ebp
2599         ret
2600         pushfl
2601 .align  16
2602 .L030slow_enc_tail:
2603         emms
2604         movl    %edx,%edi
2605         movl    $16,%ebx
2606         subl    %ecx,%ebx
2607         cmpl    %esi,%edi
2608         je      .L034enc_in_place
2609 .align  4
2610 .long   2767451785
2611         jmp     .L035enc_skip_in_place
2612 .L034enc_in_place:
2613         leal    (%edi,%ecx,1),%edi
2614 .L035enc_skip_in_place:
2615         movl    %ebx,%ecx
2616         xorl    %eax,%eax
2617 .align  4
2618 .long   2868115081
2619         movl    48(%esp),%edi
2620         movl    %edx,%esi
2621         movl    (%edi),%eax
2622         movl    4(%edi),%ebx
2623         movl    $16,40(%esp)
2624         jmp     .L033slow_enc_loop_x86
2625 .align  16
2626 .L029slow_decrypt:
2627         btl     $25,52(%esp)
2628         jnc     .L036slow_dec_loop_x86
2629 .align  4
2630 .L037slow_dec_loop_sse:
2631         movq    (%esi),%mm0
2632         movq    8(%esi),%mm4
2633         movl    44(%esp),%edi
2634         call    _sse_AES_decrypt_compact
2635         movl    32(%esp),%esi
2636         leal    60(%esp),%eax
2637         movl    36(%esp),%ebx
2638         movl    40(%esp),%ecx
2639         movl    48(%esp),%edi
2640         movq    (%esi),%mm1
2641         movq    8(%esi),%mm5
2642         pxor    (%edi),%mm0
2643         pxor    8(%edi),%mm4
2644         movq    %mm1,(%edi)
2645         movq    %mm5,8(%edi)
2646         subl    $16,%ecx
2647         jc      .L038slow_dec_partial_sse
2648         movq    %mm0,(%ebx)
2649         movq    %mm4,8(%ebx)
2650         leal    16(%ebx),%ebx
2651         movl    %ebx,36(%esp)
2652         leal    16(%esi),%esi
2653         movl    %esi,32(%esp)
2654         movl    %ecx,40(%esp)
2655         jnz     .L037slow_dec_loop_sse
2656         emms
2657         movl    28(%esp),%esp
2658         popfl
2659         popl    %edi
2660         popl    %esi
2661         popl    %ebx
2662         popl    %ebp
2663         ret
2664         pushfl
2665 .align  16
2666 .L038slow_dec_partial_sse:
2667         movq    %mm0,(%eax)
2668         movq    %mm4,8(%eax)
2669         emms
2670         addl    $16,%ecx
2671         movl    %ebx,%edi
2672         movl    %eax,%esi
2673 .align  4
2674 .long   2767451785
2675         movl    28(%esp),%esp
2676         popfl
2677         popl    %edi
2678         popl    %esi
2679         popl    %ebx
2680         popl    %ebp
2681         ret
2682         pushfl
2683 .align  16
2684 .L036slow_dec_loop_x86:
2685         movl    (%esi),%eax
2686         movl    4(%esi),%ebx
2687         movl    8(%esi),%ecx
2688         movl    12(%esi),%edx
2689         leal    60(%esp),%edi
2690         movl    %eax,(%edi)
2691         movl    %ebx,4(%edi)
2692         movl    %ecx,8(%edi)
2693         movl    %edx,12(%edi)
2694         movl    44(%esp),%edi
2695         call    _x86_AES_decrypt_compact
2696         movl    48(%esp),%edi
2697         movl    40(%esp),%esi
2698         xorl    (%edi),%eax
2699         xorl    4(%edi),%ebx
2700         xorl    8(%edi),%ecx
2701         xorl    12(%edi),%edx
2702         subl    $16,%esi
2703         jc      .L039slow_dec_partial_x86
2704         movl    %esi,40(%esp)
2705         movl    36(%esp),%esi
2706         movl    %eax,(%esi)
2707         movl    %ebx,4(%esi)
2708         movl    %ecx,8(%esi)
2709         movl    %edx,12(%esi)
2710         leal    16(%esi),%esi
2711         movl    %esi,36(%esp)
2712         leal    60(%esp),%esi
2713         movl    (%esi),%eax
2714         movl    4(%esi),%ebx
2715         movl    8(%esi),%ecx
2716         movl    12(%esi),%edx
2717         movl    %eax,(%edi)
2718         movl    %ebx,4(%edi)
2719         movl    %ecx,8(%edi)
2720         movl    %edx,12(%edi)
2721         movl    32(%esp),%esi
2722         leal    16(%esi),%esi
2723         movl    %esi,32(%esp)
2724         jnz     .L036slow_dec_loop_x86
2725         movl    28(%esp),%esp
2726         popfl
2727         popl    %edi
2728         popl    %esi
2729         popl    %ebx
2730         popl    %ebp
2731         ret
2732         pushfl
2733 .align  16
2734 .L039slow_dec_partial_x86:
2735         leal    60(%esp),%esi
2736         movl    %eax,(%esi)
2737         movl    %ebx,4(%esi)
2738         movl    %ecx,8(%esi)
2739         movl    %edx,12(%esi)
2740         movl    32(%esp),%esi
2741         movl    (%esi),%eax
2742         movl    4(%esi),%ebx
2743         movl    8(%esi),%ecx
2744         movl    12(%esi),%edx
2745         movl    %eax,(%edi)
2746         movl    %ebx,4(%edi)
2747         movl    %ecx,8(%edi)
2748         movl    %edx,12(%edi)
2749         movl    40(%esp),%ecx
2750         movl    36(%esp),%edi
2751         leal    60(%esp),%esi
2752 .align  4
2753 .long   2767451785
2754         movl    28(%esp),%esp
2755         popfl
2756         popl    %edi
2757         popl    %esi
2758         popl    %ebx
2759         popl    %ebp
2760         ret
2761 .size   AES_cbc_encrypt,.-.L_AES_cbc_encrypt_begin
2762 .type   _x86_AES_set_encrypt_key,@function
2763 .align  16
2764 _x86_AES_set_encrypt_key:
2765         pushl   %ebp
2766         pushl   %ebx
2767         pushl   %esi
2768         pushl   %edi
2769         movl    24(%esp),%esi
2770         movl    32(%esp),%edi
2771         testl   $-1,%esi
2772         jz      .L040badpointer
2773         testl   $-1,%edi
2774         jz      .L040badpointer
2775         call    .L041pic_point
2776 .L041pic_point:
2777         popl    %ebp
2778         leal    .LAES_Te-.L041pic_point(%ebp),%ebp
2779         leal    2176(%ebp),%ebp
2780         movl    -128(%ebp),%eax
2781         movl    -96(%ebp),%ebx
2782         movl    -64(%ebp),%ecx
2783         movl    -32(%ebp),%edx
2784         movl    (%ebp),%eax
2785         movl    32(%ebp),%ebx
2786         movl    64(%ebp),%ecx
2787         movl    96(%ebp),%edx
2788         movl    28(%esp),%ecx
2789         cmpl    $128,%ecx
2790         je      .L04210rounds
2791         cmpl    $192,%ecx
2792         je      .L04312rounds
2793         cmpl    $256,%ecx
2794         je      .L04414rounds
2795         movl    $-2,%eax
2796         jmp     .L045exit
2797 .L04210rounds:
2798         movl    (%esi),%eax
2799         movl    4(%esi),%ebx
2800         movl    8(%esi),%ecx
2801         movl    12(%esi),%edx
2802         movl    %eax,(%edi)
2803         movl    %ebx,4(%edi)
2804         movl    %ecx,8(%edi)
2805         movl    %edx,12(%edi)
2806         xorl    %ecx,%ecx
2807         jmp     .L04610shortcut
2808 .align  4
2809 .L04710loop:
2810         movl    (%edi),%eax
2811         movl    12(%edi),%edx
2812 .L04610shortcut:
2813         movzbl  %dl,%esi
2814         movzbl  -128(%ebp,%esi,1),%ebx
2815         movzbl  %dh,%esi
2816         shll    $24,%ebx
2817         xorl    %ebx,%eax
2818         movzbl  -128(%ebp,%esi,1),%ebx
2819         shrl    $16,%edx
2820         movzbl  %dl,%esi
2821         xorl    %ebx,%eax
2822         movzbl  -128(%ebp,%esi,1),%ebx
2823         movzbl  %dh,%esi
2824         shll    $8,%ebx
2825         xorl    %ebx,%eax
2826         movzbl  -128(%ebp,%esi,1),%ebx
2827         shll    $16,%ebx
2828         xorl    %ebx,%eax
2829         xorl    896(%ebp,%ecx,4),%eax
2830         movl    %eax,16(%edi)
2831         xorl    4(%edi),%eax
2832         movl    %eax,20(%edi)
2833         xorl    8(%edi),%eax
2834         movl    %eax,24(%edi)
2835         xorl    12(%edi),%eax
2836         movl    %eax,28(%edi)
2837         incl    %ecx
2838         addl    $16,%edi
2839         cmpl    $10,%ecx
2840         jl      .L04710loop
2841         movl    $10,80(%edi)
2842         xorl    %eax,%eax
2843         jmp     .L045exit
2844 .L04312rounds:
2845         movl    (%esi),%eax
2846         movl    4(%esi),%ebx
2847         movl    8(%esi),%ecx
2848         movl    12(%esi),%edx
2849         movl    %eax,(%edi)
2850         movl    %ebx,4(%edi)
2851         movl    %ecx,8(%edi)
2852         movl    %edx,12(%edi)
2853         movl    16(%esi),%ecx
2854         movl    20(%esi),%edx
2855         movl    %ecx,16(%edi)
2856         movl    %edx,20(%edi)
2857         xorl    %ecx,%ecx
2858         jmp     .L04812shortcut
2859 .align  4
2860 .L04912loop:
2861         movl    (%edi),%eax
2862         movl    20(%edi),%edx
2863 .L04812shortcut:
2864         movzbl  %dl,%esi
2865         movzbl  -128(%ebp,%esi,1),%ebx
2866         movzbl  %dh,%esi
2867         shll    $24,%ebx
2868         xorl    %ebx,%eax
2869         movzbl  -128(%ebp,%esi,1),%ebx
2870         shrl    $16,%edx
2871         movzbl  %dl,%esi
2872         xorl    %ebx,%eax
2873         movzbl  -128(%ebp,%esi,1),%ebx
2874         movzbl  %dh,%esi
2875         shll    $8,%ebx
2876         xorl    %ebx,%eax
2877         movzbl  -128(%ebp,%esi,1),%ebx
2878         shll    $16,%ebx
2879         xorl    %ebx,%eax
2880         xorl    896(%ebp,%ecx,4),%eax
2881         movl    %eax,24(%edi)
2882         xorl    4(%edi),%eax
2883         movl    %eax,28(%edi)
2884         xorl    8(%edi),%eax
2885         movl    %eax,32(%edi)
2886         xorl    12(%edi),%eax
2887         movl    %eax,36(%edi)
2888         cmpl    $7,%ecx
2889         je      .L05012break
2890         incl    %ecx
2891         xorl    16(%edi),%eax
2892         movl    %eax,40(%edi)
2893         xorl    20(%edi),%eax
2894         movl    %eax,44(%edi)
2895         addl    $24,%edi
2896         jmp     .L04912loop
2897 .L05012break:
2898         movl    $12,72(%edi)
2899         xorl    %eax,%eax
2900         jmp     .L045exit
2901 .L04414rounds:
2902         movl    (%esi),%eax
2903         movl    4(%esi),%ebx
2904         movl    8(%esi),%ecx
2905         movl    12(%esi),%edx
2906         movl    %eax,(%edi)
2907         movl    %ebx,4(%edi)
2908         movl    %ecx,8(%edi)
2909         movl    %edx,12(%edi)
2910         movl    16(%esi),%eax
2911         movl    20(%esi),%ebx
2912         movl    24(%esi),%ecx
2913         movl    28(%esi),%edx
2914         movl    %eax,16(%edi)
2915         movl    %ebx,20(%edi)
2916         movl    %ecx,24(%edi)
2917         movl    %edx,28(%edi)
2918         xorl    %ecx,%ecx
2919         jmp     .L05114shortcut
2920 .align  4
2921 .L05214loop:
2922         movl    28(%edi),%edx
2923 .L05114shortcut:
2924         movl    (%edi),%eax
2925         movzbl  %dl,%esi
2926         movzbl  -128(%ebp,%esi,1),%ebx
2927         movzbl  %dh,%esi
2928         shll    $24,%ebx
2929         xorl    %ebx,%eax
2930         movzbl  -128(%ebp,%esi,1),%ebx
2931         shrl    $16,%edx
2932         movzbl  %dl,%esi
2933         xorl    %ebx,%eax
2934         movzbl  -128(%ebp,%esi,1),%ebx
2935         movzbl  %dh,%esi
2936         shll    $8,%ebx
2937         xorl    %ebx,%eax
2938         movzbl  -128(%ebp,%esi,1),%ebx
2939         shll    $16,%ebx
2940         xorl    %ebx,%eax
2941         xorl    896(%ebp,%ecx,4),%eax
2942         movl    %eax,32(%edi)
2943         xorl    4(%edi),%eax
2944         movl    %eax,36(%edi)
2945         xorl    8(%edi),%eax
2946         movl    %eax,40(%edi)
2947         xorl    12(%edi),%eax
2948         movl    %eax,44(%edi)
2949         cmpl    $6,%ecx
2950         je      .L05314break
2951         incl    %ecx
2952         movl    %eax,%edx
2953         movl    16(%edi),%eax
2954         movzbl  %dl,%esi
2955         movzbl  -128(%ebp,%esi,1),%ebx
2956         movzbl  %dh,%esi
2957         xorl    %ebx,%eax
2958         movzbl  -128(%ebp,%esi,1),%ebx
2959         shrl    $16,%edx
2960         shll    $8,%ebx
2961         movzbl  %dl,%esi
2962         xorl    %ebx,%eax
2963         movzbl  -128(%ebp,%esi,1),%ebx
2964         movzbl  %dh,%esi
2965         shll    $16,%ebx
2966         xorl    %ebx,%eax
2967         movzbl  -128(%ebp,%esi,1),%ebx
2968         shll    $24,%ebx
2969         xorl    %ebx,%eax
2970         movl    %eax,48(%edi)
2971         xorl    20(%edi),%eax
2972         movl    %eax,52(%edi)
2973         xorl    24(%edi),%eax
2974         movl    %eax,56(%edi)
2975         xorl    28(%edi),%eax
2976         movl    %eax,60(%edi)
2977         addl    $32,%edi
2978         jmp     .L05214loop
2979 .L05314break:
2980         movl    $14,48(%edi)
2981         xorl    %eax,%eax
2982         jmp     .L045exit
2983 .L040badpointer:
2984         movl    $-1,%eax
2985 .L045exit:
2986         popl    %edi
2987         popl    %esi
2988         popl    %ebx
2989         popl    %ebp
2990         ret
2991 .size   _x86_AES_set_encrypt_key,.-_x86_AES_set_encrypt_key
2992 .globl  private_AES_set_encrypt_key
2993 .type   private_AES_set_encrypt_key,@function
2994 .align  16
2995 private_AES_set_encrypt_key:
2996 .L_private_AES_set_encrypt_key_begin:
2997         call    _x86_AES_set_encrypt_key
2998         ret
2999 .size   private_AES_set_encrypt_key,.-.L_private_AES_set_encrypt_key_begin
3000 .globl  private_AES_set_decrypt_key
3001 .type   private_AES_set_decrypt_key,@function
3002 .align  16
3003 private_AES_set_decrypt_key:
3004 .L_private_AES_set_decrypt_key_begin:
3005         call    _x86_AES_set_encrypt_key
3006         cmpl    $0,%eax
3007         je      .L054proceed
3008         ret
3009 .L054proceed:
3010         pushl   %ebp
3011         pushl   %ebx
3012         pushl   %esi
3013         pushl   %edi
3014         movl    28(%esp),%esi
3015         movl    240(%esi),%ecx
3016         leal    (,%ecx,4),%ecx
3017         leal    (%esi,%ecx,4),%edi
3018 .align  4
3019 .L055invert:
3020         movl    (%esi),%eax
3021         movl    4(%esi),%ebx
3022         movl    (%edi),%ecx
3023         movl    4(%edi),%edx
3024         movl    %eax,(%edi)
3025         movl    %ebx,4(%edi)
3026         movl    %ecx,(%esi)
3027         movl    %edx,4(%esi)
3028         movl    8(%esi),%eax
3029         movl    12(%esi),%ebx
3030         movl    8(%edi),%ecx
3031         movl    12(%edi),%edx
3032         movl    %eax,8(%edi)
3033         movl    %ebx,12(%edi)
3034         movl    %ecx,8(%esi)
3035         movl    %edx,12(%esi)
3036         addl    $16,%esi
3037         subl    $16,%edi
3038         cmpl    %edi,%esi
3039         jne     .L055invert
3040         movl    28(%esp),%edi
3041         movl    240(%edi),%esi
3042         leal    -2(%esi,%esi,1),%esi
3043         leal    (%edi,%esi,8),%esi
3044         movl    %esi,28(%esp)
3045         movl    16(%edi),%eax
3046 .align  4
3047 .L056permute:
3048         addl    $16,%edi
3049         movl    %eax,%esi
3050         andl    $2155905152,%esi
3051         movl    %esi,%ebp
3052         shrl    $7,%ebp
3053         leal    (%eax,%eax,1),%ebx
3054         subl    %ebp,%esi
3055         andl    $4278124286,%ebx
3056         andl    $454761243,%esi
3057         xorl    %ebx,%esi
3058         movl    %esi,%ebx
3059         andl    $2155905152,%esi
3060         movl    %esi,%ebp
3061         shrl    $7,%ebp
3062         leal    (%ebx,%ebx,1),%ecx
3063         subl    %ebp,%esi
3064         andl    $4278124286,%ecx
3065         andl    $454761243,%esi
3066         xorl    %eax,%ebx
3067         xorl    %ecx,%esi
3068         movl    %esi,%ecx
3069         andl    $2155905152,%esi
3070         movl    %esi,%ebp
3071         shrl    $7,%ebp
3072         leal    (%ecx,%ecx,1),%edx
3073         xorl    %eax,%ecx
3074         subl    %ebp,%esi
3075         andl    $4278124286,%edx
3076         andl    $454761243,%esi
3077         roll    $8,%eax
3078         xorl    %esi,%edx
3079         movl    4(%edi),%ebp
3080         xorl    %ebx,%eax
3081         xorl    %edx,%ebx
3082         xorl    %ecx,%eax
3083         roll    $24,%ebx
3084         xorl    %edx,%ecx
3085         xorl    %edx,%eax
3086         roll    $16,%ecx
3087         xorl    %ebx,%eax
3088         roll    $8,%edx
3089         xorl    %ecx,%eax
3090         movl    %ebp,%ebx
3091         xorl    %edx,%eax
3092         movl    %eax,(%edi)
3093         movl    %ebx,%esi
3094         andl    $2155905152,%esi
3095         movl    %esi,%ebp
3096         shrl    $7,%ebp
3097         leal    (%ebx,%ebx,1),%ecx
3098         subl    %ebp,%esi
3099         andl    $4278124286,%ecx
3100         andl    $454761243,%esi
3101         xorl    %ecx,%esi
3102         movl    %esi,%ecx
3103         andl    $2155905152,%esi
3104         movl    %esi,%ebp
3105         shrl    $7,%ebp
3106         leal    (%ecx,%ecx,1),%edx
3107         subl    %ebp,%esi
3108         andl    $4278124286,%edx
3109         andl    $454761243,%esi
3110         xorl    %ebx,%ecx
3111         xorl    %edx,%esi
3112         movl    %esi,%edx
3113         andl    $2155905152,%esi
3114         movl    %esi,%ebp
3115         shrl    $7,%ebp
3116         leal    (%edx,%edx,1),%eax
3117         xorl    %ebx,%edx
3118         subl    %ebp,%esi
3119         andl    $4278124286,%eax
3120         andl    $454761243,%esi
3121         roll    $8,%ebx
3122         xorl    %esi,%eax
3123         movl    8(%edi),%ebp
3124         xorl    %ecx,%ebx
3125         xorl    %eax,%ecx
3126         xorl    %edx,%ebx
3127         roll    $24,%ecx
3128         xorl    %eax,%edx
3129         xorl    %eax,%ebx
3130         roll    $16,%edx
3131         xorl    %ecx,%ebx
3132         roll    $8,%eax
3133         xorl    %edx,%ebx
3134         movl    %ebp,%ecx
3135         xorl    %eax,%ebx
3136         movl    %ebx,4(%edi)
3137         movl    %ecx,%esi
3138         andl    $2155905152,%esi
3139         movl    %esi,%ebp
3140         shrl    $7,%ebp
3141         leal    (%ecx,%ecx,1),%edx
3142         subl    %ebp,%esi
3143         andl    $4278124286,%edx
3144         andl    $454761243,%esi
3145         xorl    %edx,%esi
3146         movl    %esi,%edx
3147         andl    $2155905152,%esi
3148         movl    %esi,%ebp
3149         shrl    $7,%ebp
3150         leal    (%edx,%edx,1),%eax
3151         subl    %ebp,%esi
3152         andl    $4278124286,%eax
3153         andl    $454761243,%esi
3154         xorl    %ecx,%edx
3155         xorl    %eax,%esi
3156         movl    %esi,%eax
3157         andl    $2155905152,%esi
3158         movl    %esi,%ebp
3159         shrl    $7,%ebp
3160         leal    (%eax,%eax,1),%ebx
3161         xorl    %ecx,%eax
3162         subl    %ebp,%esi
3163         andl    $4278124286,%ebx
3164         andl    $454761243,%esi
3165         roll    $8,%ecx
3166         xorl    %esi,%ebx
3167         movl    12(%edi),%ebp
3168         xorl    %edx,%ecx
3169         xorl    %ebx,%edx
3170         xorl    %eax,%ecx
3171         roll    $24,%edx
3172         xorl    %ebx,%eax
3173         xorl    %ebx,%ecx
3174         roll    $16,%eax
3175         xorl    %edx,%ecx
3176         roll    $8,%ebx
3177         xorl    %eax,%ecx
3178         movl    %ebp,%edx
3179         xorl    %ebx,%ecx
3180         movl    %ecx,8(%edi)
3181         movl    %edx,%esi
3182         andl    $2155905152,%esi
3183         movl    %esi,%ebp
3184         shrl    $7,%ebp
3185         leal    (%edx,%edx,1),%eax
3186         subl    %ebp,%esi
3187         andl    $4278124286,%eax
3188         andl    $454761243,%esi
3189         xorl    %eax,%esi
3190         movl    %esi,%eax
3191         andl    $2155905152,%esi
3192         movl    %esi,%ebp
3193         shrl    $7,%ebp
3194         leal    (%eax,%eax,1),%ebx
3195         subl    %ebp,%esi
3196         andl    $4278124286,%ebx
3197         andl    $454761243,%esi
3198         xorl    %edx,%eax
3199         xorl    %ebx,%esi
3200         movl    %esi,%ebx
3201         andl    $2155905152,%esi
3202         movl    %esi,%ebp
3203         shrl    $7,%ebp
3204         leal    (%ebx,%ebx,1),%ecx
3205         xorl    %edx,%ebx
3206         subl    %ebp,%esi
3207         andl    $4278124286,%ecx
3208         andl    $454761243,%esi
3209         roll    $8,%edx
3210         xorl    %esi,%ecx
3211         movl    16(%edi),%ebp
3212         xorl    %eax,%edx
3213         xorl    %ecx,%eax
3214         xorl    %ebx,%edx
3215         roll    $24,%eax
3216         xorl    %ecx,%ebx
3217         xorl    %ecx,%edx
3218         roll    $16,%ebx
3219         xorl    %eax,%edx
3220         roll    $8,%ecx
3221         xorl    %ebx,%edx
3222         movl    %ebp,%eax
3223         xorl    %ecx,%edx
3224         movl    %edx,12(%edi)
3225         cmpl    28(%esp),%edi
3226         jb      .L056permute
3227         xorl    %eax,%eax
3228         popl    %edi
3229         popl    %esi
3230         popl    %ebx
3231         popl    %ebp
3232         ret
3233 .size   private_AES_set_decrypt_key,.-.L_private_AES_set_decrypt_key_begin
3234 .byte   65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89
3235 .byte   80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114
3236 .byte   111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
3237 .comm   OPENSSL_ia32cap_P,8,4