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