VirtualBox

source: vbox/trunk/src/libs/openssl-1.1.0g/crypto/genasm-nasm/aes-586.S@ 69881

Last change on this file since 69881 was 69881, checked in by vboxsync, 7 years ago

Update OpenSSL to 1.1.0g.
bugref:8070: src/libs maintenance

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette