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