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