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