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