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