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