1; This file is generated from a similarly-named Perl script in the BoringSSL 2; source tree. Do not edit by hand. 3 4default rel 5%define XMMWORD 6%define YMMWORD 7%define ZMMWORD 8section .text code align=64 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27ALIGN 16 28_vpaes_encrypt_core: 29 30 mov r9,rdx 31 mov r11,16 32 mov eax,DWORD[240+rdx] 33 movdqa xmm1,xmm9 34 movdqa xmm2,XMMWORD[$L$k_ipt] 35 pandn xmm1,xmm0 36 movdqu xmm5,XMMWORD[r9] 37 psrld xmm1,4 38 pand xmm0,xmm9 39DB 102,15,56,0,208 40 movdqa xmm0,XMMWORD[(($L$k_ipt+16))] 41DB 102,15,56,0,193 42 pxor xmm2,xmm5 43 add r9,16 44 pxor xmm0,xmm2 45 lea r10,[$L$k_mc_backward] 46 jmp NEAR $L$enc_entry 47 48ALIGN 16 49$L$enc_loop: 50 51 movdqa xmm4,xmm13 52 movdqa xmm0,xmm12 53DB 102,15,56,0,226 54DB 102,15,56,0,195 55 pxor xmm4,xmm5 56 movdqa xmm5,xmm15 57 pxor xmm0,xmm4 58 movdqa xmm1,XMMWORD[((-64))+r10*1+r11] 59DB 102,15,56,0,234 60 movdqa xmm4,XMMWORD[r10*1+r11] 61 movdqa xmm2,xmm14 62DB 102,15,56,0,211 63 movdqa xmm3,xmm0 64 pxor xmm2,xmm5 65DB 102,15,56,0,193 66 add r9,16 67 pxor xmm0,xmm2 68DB 102,15,56,0,220 69 add r11,16 70 pxor xmm3,xmm0 71DB 102,15,56,0,193 72 and r11,0x30 73 sub rax,1 74 pxor xmm0,xmm3 75 76$L$enc_entry: 77 78 movdqa xmm1,xmm9 79 movdqa xmm5,xmm11 80 pandn xmm1,xmm0 81 psrld xmm1,4 82 pand xmm0,xmm9 83DB 102,15,56,0,232 84 movdqa xmm3,xmm10 85 pxor xmm0,xmm1 86DB 102,15,56,0,217 87 movdqa xmm4,xmm10 88 pxor xmm3,xmm5 89DB 102,15,56,0,224 90 movdqa xmm2,xmm10 91 pxor xmm4,xmm5 92DB 102,15,56,0,211 93 movdqa xmm3,xmm10 94 pxor xmm2,xmm0 95DB 102,15,56,0,220 96 movdqu xmm5,XMMWORD[r9] 97 pxor xmm3,xmm1 98 jnz NEAR $L$enc_loop 99 100 101 movdqa xmm4,XMMWORD[((-96))+r10] 102 movdqa xmm0,XMMWORD[((-80))+r10] 103DB 102,15,56,0,226 104 pxor xmm4,xmm5 105DB 102,15,56,0,195 106 movdqa xmm1,XMMWORD[64+r10*1+r11] 107 pxor xmm0,xmm4 108DB 102,15,56,0,193 109 DB 0F3h,0C3h ;repret 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143ALIGN 16 144_vpaes_encrypt_core_2x: 145 146 mov r9,rdx 147 mov r11,16 148 mov eax,DWORD[240+rdx] 149 movdqa xmm1,xmm9 150 movdqa xmm7,xmm9 151 movdqa xmm2,XMMWORD[$L$k_ipt] 152 movdqa xmm8,xmm2 153 pandn xmm1,xmm0 154 pandn xmm7,xmm6 155 movdqu xmm5,XMMWORD[r9] 156 157 psrld xmm1,4 158 psrld xmm7,4 159 pand xmm0,xmm9 160 pand xmm6,xmm9 161DB 102,15,56,0,208 162DB 102,68,15,56,0,198 163 movdqa xmm0,XMMWORD[(($L$k_ipt+16))] 164 movdqa xmm6,xmm0 165DB 102,15,56,0,193 166DB 102,15,56,0,247 167 pxor xmm2,xmm5 168 pxor xmm8,xmm5 169 add r9,16 170 pxor xmm0,xmm2 171 pxor xmm6,xmm8 172 lea r10,[$L$k_mc_backward] 173 jmp NEAR $L$enc2x_entry 174 175ALIGN 16 176$L$enc2x_loop: 177 178 movdqa xmm4,XMMWORD[$L$k_sb1] 179 movdqa xmm0,XMMWORD[(($L$k_sb1+16))] 180 movdqa xmm12,xmm4 181 movdqa xmm6,xmm0 182DB 102,15,56,0,226 183DB 102,69,15,56,0,224 184DB 102,15,56,0,195 185DB 102,65,15,56,0,243 186 pxor xmm4,xmm5 187 pxor xmm12,xmm5 188 movdqa xmm5,XMMWORD[$L$k_sb2] 189 movdqa xmm13,xmm5 190 pxor xmm0,xmm4 191 pxor xmm6,xmm12 192 movdqa xmm1,XMMWORD[((-64))+r10*1+r11] 193 194DB 102,15,56,0,234 195DB 102,69,15,56,0,232 196 movdqa xmm4,XMMWORD[r10*1+r11] 197 198 movdqa xmm2,XMMWORD[(($L$k_sb2+16))] 199 movdqa xmm8,xmm2 200DB 102,15,56,0,211 201DB 102,69,15,56,0,195 202 movdqa xmm3,xmm0 203 movdqa xmm11,xmm6 204 pxor xmm2,xmm5 205 pxor xmm8,xmm13 206DB 102,15,56,0,193 207DB 102,15,56,0,241 208 add r9,16 209 pxor xmm0,xmm2 210 pxor xmm6,xmm8 211DB 102,15,56,0,220 212DB 102,68,15,56,0,220 213 add r11,16 214 pxor xmm3,xmm0 215 pxor xmm11,xmm6 216DB 102,15,56,0,193 217DB 102,15,56,0,241 218 and r11,0x30 219 sub rax,1 220 pxor xmm0,xmm3 221 pxor xmm6,xmm11 222 223$L$enc2x_entry: 224 225 movdqa xmm1,xmm9 226 movdqa xmm7,xmm9 227 movdqa xmm5,XMMWORD[(($L$k_inv+16))] 228 movdqa xmm13,xmm5 229 pandn xmm1,xmm0 230 pandn xmm7,xmm6 231 psrld xmm1,4 232 psrld xmm7,4 233 pand xmm0,xmm9 234 pand xmm6,xmm9 235DB 102,15,56,0,232 236DB 102,68,15,56,0,238 237 movdqa xmm3,xmm10 238 movdqa xmm11,xmm10 239 pxor xmm0,xmm1 240 pxor xmm6,xmm7 241DB 102,15,56,0,217 242DB 102,68,15,56,0,223 243 movdqa xmm4,xmm10 244 movdqa xmm12,xmm10 245 pxor xmm3,xmm5 246 pxor xmm11,xmm13 247DB 102,15,56,0,224 248DB 102,68,15,56,0,230 249 movdqa xmm2,xmm10 250 movdqa xmm8,xmm10 251 pxor xmm4,xmm5 252 pxor xmm12,xmm13 253DB 102,15,56,0,211 254DB 102,69,15,56,0,195 255 movdqa xmm3,xmm10 256 movdqa xmm11,xmm10 257 pxor xmm2,xmm0 258 pxor xmm8,xmm6 259DB 102,15,56,0,220 260DB 102,69,15,56,0,220 261 movdqu xmm5,XMMWORD[r9] 262 263 pxor xmm3,xmm1 264 pxor xmm11,xmm7 265 jnz NEAR $L$enc2x_loop 266 267 268 movdqa xmm4,XMMWORD[((-96))+r10] 269 movdqa xmm0,XMMWORD[((-80))+r10] 270 movdqa xmm12,xmm4 271 movdqa xmm6,xmm0 272DB 102,15,56,0,226 273DB 102,69,15,56,0,224 274 pxor xmm4,xmm5 275 pxor xmm12,xmm5 276DB 102,15,56,0,195 277DB 102,65,15,56,0,243 278 movdqa xmm1,XMMWORD[64+r10*1+r11] 279 280 pxor xmm0,xmm4 281 pxor xmm6,xmm12 282DB 102,15,56,0,193 283DB 102,15,56,0,241 284 DB 0F3h,0C3h ;repret 285 286 287 288 289 290 291 292 293 294ALIGN 16 295_vpaes_schedule_core: 296 297 298 299 300 301 302 call _vpaes_preheat 303 movdqa xmm8,XMMWORD[$L$k_rcon] 304 movdqu xmm0,XMMWORD[rdi] 305 306 307 movdqa xmm3,xmm0 308 lea r11,[$L$k_ipt] 309 call _vpaes_schedule_transform 310 movdqa xmm7,xmm0 311 312 lea r10,[$L$k_sr] 313 314 315 movdqu XMMWORD[rdx],xmm0 316 317$L$schedule_go: 318 cmp esi,192 319 ja NEAR $L$schedule_256 320 321 322 323 324 325 326 327 328 329 330 331$L$schedule_128: 332 mov esi,10 333 334$L$oop_schedule_128: 335 call _vpaes_schedule_round 336 dec rsi 337 jz NEAR $L$schedule_mangle_last 338 call _vpaes_schedule_mangle 339 jmp NEAR $L$oop_schedule_128 340 341 342 343 344 345 346 347 348 349 350 351ALIGN 16 352$L$schedule_256: 353 movdqu xmm0,XMMWORD[16+rdi] 354 call _vpaes_schedule_transform 355 mov esi,7 356 357$L$oop_schedule_256: 358 call _vpaes_schedule_mangle 359 movdqa xmm6,xmm0 360 361 362 call _vpaes_schedule_round 363 dec rsi 364 jz NEAR $L$schedule_mangle_last 365 call _vpaes_schedule_mangle 366 367 368 pshufd xmm0,xmm0,0xFF 369 movdqa xmm5,xmm7 370 movdqa xmm7,xmm6 371 call _vpaes_schedule_low_round 372 movdqa xmm7,xmm5 373 374 jmp NEAR $L$oop_schedule_256 375 376 377 378 379 380 381 382 383 384 385 386 387ALIGN 16 388$L$schedule_mangle_last: 389 390 lea r11,[$L$k_deskew] 391 392 393 movdqa xmm1,XMMWORD[r10*1+r8] 394DB 102,15,56,0,193 395 lea r11,[$L$k_opt] 396 add rdx,32 397 398$L$schedule_mangle_last_dec: 399 add rdx,-16 400 pxor xmm0,XMMWORD[$L$k_s63] 401 call _vpaes_schedule_transform 402 movdqu XMMWORD[rdx],xmm0 403 404 405 pxor xmm0,xmm0 406 pxor xmm1,xmm1 407 pxor xmm2,xmm2 408 pxor xmm3,xmm3 409 pxor xmm4,xmm4 410 pxor xmm5,xmm5 411 pxor xmm6,xmm6 412 pxor xmm7,xmm7 413 DB 0F3h,0C3h ;repret 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436ALIGN 16 437_vpaes_schedule_round: 438 439 440 pxor xmm1,xmm1 441DB 102,65,15,58,15,200,15 442DB 102,69,15,58,15,192,15 443 pxor xmm7,xmm1 444 445 446 pshufd xmm0,xmm0,0xFF 447DB 102,15,58,15,192,1 448 449 450 451 452_vpaes_schedule_low_round: 453 454 movdqa xmm1,xmm7 455 pslldq xmm7,4 456 pxor xmm7,xmm1 457 movdqa xmm1,xmm7 458 pslldq xmm7,8 459 pxor xmm7,xmm1 460 pxor xmm7,XMMWORD[$L$k_s63] 461 462 463 movdqa xmm1,xmm9 464 pandn xmm1,xmm0 465 psrld xmm1,4 466 pand xmm0,xmm9 467 movdqa xmm2,xmm11 468DB 102,15,56,0,208 469 pxor xmm0,xmm1 470 movdqa xmm3,xmm10 471DB 102,15,56,0,217 472 pxor xmm3,xmm2 473 movdqa xmm4,xmm10 474DB 102,15,56,0,224 475 pxor xmm4,xmm2 476 movdqa xmm2,xmm10 477DB 102,15,56,0,211 478 pxor xmm2,xmm0 479 movdqa xmm3,xmm10 480DB 102,15,56,0,220 481 pxor xmm3,xmm1 482 movdqa xmm4,xmm13 483DB 102,15,56,0,226 484 movdqa xmm0,xmm12 485DB 102,15,56,0,195 486 pxor xmm0,xmm4 487 488 489 pxor xmm0,xmm7 490 movdqa xmm7,xmm0 491 DB 0F3h,0C3h ;repret 492 493 494 495 496 497 498 499 500 501 502 503 504 505ALIGN 16 506_vpaes_schedule_transform: 507 508 movdqa xmm1,xmm9 509 pandn xmm1,xmm0 510 psrld xmm1,4 511 pand xmm0,xmm9 512 movdqa xmm2,XMMWORD[r11] 513DB 102,15,56,0,208 514 movdqa xmm0,XMMWORD[16+r11] 515DB 102,15,56,0,193 516 pxor xmm0,xmm2 517 DB 0F3h,0C3h ;repret 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545ALIGN 16 546_vpaes_schedule_mangle: 547 548 movdqa xmm4,xmm0 549 movdqa xmm5,XMMWORD[$L$k_mc_forward] 550 551 552 add rdx,16 553 pxor xmm4,XMMWORD[$L$k_s63] 554DB 102,15,56,0,229 555 movdqa xmm3,xmm4 556DB 102,15,56,0,229 557 pxor xmm3,xmm4 558DB 102,15,56,0,229 559 pxor xmm3,xmm4 560 561$L$schedule_mangle_both: 562 movdqa xmm1,XMMWORD[r10*1+r8] 563DB 102,15,56,0,217 564 add r8,-16 565 and r8,0x30 566 movdqu XMMWORD[rdx],xmm3 567 DB 0F3h,0C3h ;repret 568 569 570 571 572 573 574global GFp_vpaes_set_encrypt_key 575 576ALIGN 16 577GFp_vpaes_set_encrypt_key: 578 mov QWORD[8+rsp],rdi ;WIN64 prologue 579 mov QWORD[16+rsp],rsi 580 mov rax,rsp 581$L$SEH_begin_GFp_vpaes_set_encrypt_key: 582 mov rdi,rcx 583 mov rsi,rdx 584 mov rdx,r8 585 586 587 588%ifdef BORINGSSL_DISPATCH_TEST 589EXTERN BORINGSSL_function_hit 590 mov BYTE[((BORINGSSL_function_hit+5))],1 591%endif 592 593 lea rsp,[((-184))+rsp] 594 movaps XMMWORD[16+rsp],xmm6 595 movaps XMMWORD[32+rsp],xmm7 596 movaps XMMWORD[48+rsp],xmm8 597 movaps XMMWORD[64+rsp],xmm9 598 movaps XMMWORD[80+rsp],xmm10 599 movaps XMMWORD[96+rsp],xmm11 600 movaps XMMWORD[112+rsp],xmm12 601 movaps XMMWORD[128+rsp],xmm13 602 movaps XMMWORD[144+rsp],xmm14 603 movaps XMMWORD[160+rsp],xmm15 604$L$enc_key_body: 605 mov eax,esi 606 shr eax,5 607 add eax,5 608 mov DWORD[240+rdx],eax 609 610 mov ecx,0 611 mov r8d,0x30 612 call _vpaes_schedule_core 613 movaps xmm6,XMMWORD[16+rsp] 614 movaps xmm7,XMMWORD[32+rsp] 615 movaps xmm8,XMMWORD[48+rsp] 616 movaps xmm9,XMMWORD[64+rsp] 617 movaps xmm10,XMMWORD[80+rsp] 618 movaps xmm11,XMMWORD[96+rsp] 619 movaps xmm12,XMMWORD[112+rsp] 620 movaps xmm13,XMMWORD[128+rsp] 621 movaps xmm14,XMMWORD[144+rsp] 622 movaps xmm15,XMMWORD[160+rsp] 623 lea rsp,[184+rsp] 624$L$enc_key_epilogue: 625 xor eax,eax 626 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 627 mov rsi,QWORD[16+rsp] 628 DB 0F3h,0C3h ;repret 629 630$L$SEH_end_GFp_vpaes_set_encrypt_key: 631 632global GFp_vpaes_encrypt 633 634ALIGN 16 635GFp_vpaes_encrypt: 636 mov QWORD[8+rsp],rdi ;WIN64 prologue 637 mov QWORD[16+rsp],rsi 638 mov rax,rsp 639$L$SEH_begin_GFp_vpaes_encrypt: 640 mov rdi,rcx 641 mov rsi,rdx 642 mov rdx,r8 643 644 645 646 lea rsp,[((-184))+rsp] 647 movaps XMMWORD[16+rsp],xmm6 648 movaps XMMWORD[32+rsp],xmm7 649 movaps XMMWORD[48+rsp],xmm8 650 movaps XMMWORD[64+rsp],xmm9 651 movaps XMMWORD[80+rsp],xmm10 652 movaps XMMWORD[96+rsp],xmm11 653 movaps XMMWORD[112+rsp],xmm12 654 movaps XMMWORD[128+rsp],xmm13 655 movaps XMMWORD[144+rsp],xmm14 656 movaps XMMWORD[160+rsp],xmm15 657$L$enc_body: 658 movdqu xmm0,XMMWORD[rdi] 659 call _vpaes_preheat 660 call _vpaes_encrypt_core 661 movdqu XMMWORD[rsi],xmm0 662 movaps xmm6,XMMWORD[16+rsp] 663 movaps xmm7,XMMWORD[32+rsp] 664 movaps xmm8,XMMWORD[48+rsp] 665 movaps xmm9,XMMWORD[64+rsp] 666 movaps xmm10,XMMWORD[80+rsp] 667 movaps xmm11,XMMWORD[96+rsp] 668 movaps xmm12,XMMWORD[112+rsp] 669 movaps xmm13,XMMWORD[128+rsp] 670 movaps xmm14,XMMWORD[144+rsp] 671 movaps xmm15,XMMWORD[160+rsp] 672 lea rsp,[184+rsp] 673$L$enc_epilogue: 674 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 675 mov rsi,QWORD[16+rsp] 676 DB 0F3h,0C3h ;repret 677 678$L$SEH_end_GFp_vpaes_encrypt: 679global GFp_vpaes_ctr32_encrypt_blocks 680 681ALIGN 16 682GFp_vpaes_ctr32_encrypt_blocks: 683 mov QWORD[8+rsp],rdi ;WIN64 prologue 684 mov QWORD[16+rsp],rsi 685 mov rax,rsp 686$L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks: 687 mov rdi,rcx 688 mov rsi,rdx 689 mov rdx,r8 690 mov rcx,r9 691 mov r8,QWORD[40+rsp] 692 693 694 695 696 xchg rdx,rcx 697 test rcx,rcx 698 jz NEAR $L$ctr32_abort 699 lea rsp,[((-184))+rsp] 700 movaps XMMWORD[16+rsp],xmm6 701 movaps XMMWORD[32+rsp],xmm7 702 movaps XMMWORD[48+rsp],xmm8 703 movaps XMMWORD[64+rsp],xmm9 704 movaps XMMWORD[80+rsp],xmm10 705 movaps XMMWORD[96+rsp],xmm11 706 movaps XMMWORD[112+rsp],xmm12 707 movaps XMMWORD[128+rsp],xmm13 708 movaps XMMWORD[144+rsp],xmm14 709 movaps XMMWORD[160+rsp],xmm15 710$L$ctr32_body: 711 movdqu xmm0,XMMWORD[r8] 712 movdqa xmm8,XMMWORD[$L$ctr_add_one] 713 sub rsi,rdi 714 call _vpaes_preheat 715 movdqa xmm6,xmm0 716 pshufb xmm6,XMMWORD[$L$rev_ctr] 717 718 test rcx,1 719 jz NEAR $L$ctr32_prep_loop 720 721 722 723 movdqu xmm7,XMMWORD[rdi] 724 call _vpaes_encrypt_core 725 pxor xmm0,xmm7 726 paddd xmm6,xmm8 727 movdqu XMMWORD[rdi*1+rsi],xmm0 728 sub rcx,1 729 lea rdi,[16+rdi] 730 jz NEAR $L$ctr32_done 731 732$L$ctr32_prep_loop: 733 734 735 movdqa xmm14,xmm6 736 movdqa xmm15,xmm6 737 paddd xmm15,xmm8 738 739$L$ctr32_loop: 740 movdqa xmm1,XMMWORD[$L$rev_ctr] 741 movdqa xmm0,xmm14 742 movdqa xmm6,xmm15 743DB 102,15,56,0,193 744DB 102,15,56,0,241 745 call _vpaes_encrypt_core_2x 746 movdqu xmm1,XMMWORD[rdi] 747 movdqu xmm2,XMMWORD[16+rdi] 748 movdqa xmm3,XMMWORD[$L$ctr_add_two] 749 pxor xmm0,xmm1 750 pxor xmm6,xmm2 751 paddd xmm14,xmm3 752 paddd xmm15,xmm3 753 movdqu XMMWORD[rdi*1+rsi],xmm0 754 movdqu XMMWORD[16+rdi*1+rsi],xmm6 755 sub rcx,2 756 lea rdi,[32+rdi] 757 jnz NEAR $L$ctr32_loop 758 759$L$ctr32_done: 760 movaps xmm6,XMMWORD[16+rsp] 761 movaps xmm7,XMMWORD[32+rsp] 762 movaps xmm8,XMMWORD[48+rsp] 763 movaps xmm9,XMMWORD[64+rsp] 764 movaps xmm10,XMMWORD[80+rsp] 765 movaps xmm11,XMMWORD[96+rsp] 766 movaps xmm12,XMMWORD[112+rsp] 767 movaps xmm13,XMMWORD[128+rsp] 768 movaps xmm14,XMMWORD[144+rsp] 769 movaps xmm15,XMMWORD[160+rsp] 770 lea rsp,[184+rsp] 771$L$ctr32_epilogue: 772$L$ctr32_abort: 773 mov rdi,QWORD[8+rsp] ;WIN64 epilogue 774 mov rsi,QWORD[16+rsp] 775 DB 0F3h,0C3h ;repret 776 777$L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks: 778 779 780 781 782 783 784 785ALIGN 16 786_vpaes_preheat: 787 788 lea r10,[$L$k_s0F] 789 movdqa xmm10,XMMWORD[((-32))+r10] 790 movdqa xmm11,XMMWORD[((-16))+r10] 791 movdqa xmm9,XMMWORD[r10] 792 movdqa xmm13,XMMWORD[48+r10] 793 movdqa xmm12,XMMWORD[64+r10] 794 movdqa xmm15,XMMWORD[80+r10] 795 movdqa xmm14,XMMWORD[96+r10] 796 DB 0F3h,0C3h ;repret 797 798 799 800 801 802 803 804 805ALIGN 64 806_vpaes_consts: 807$L$k_inv: 808 DQ 0x0E05060F0D080180,0x040703090A0B0C02 809 DQ 0x01040A060F0B0780,0x030D0E0C02050809 810 811$L$k_s0F: 812 DQ 0x0F0F0F0F0F0F0F0F,0x0F0F0F0F0F0F0F0F 813 814$L$k_ipt: 815 DQ 0xC2B2E8985A2A7000,0xCABAE09052227808 816 DQ 0x4C01307D317C4D00,0xCD80B1FCB0FDCC81 817 818$L$k_sb1: 819 DQ 0xB19BE18FCB503E00,0xA5DF7A6E142AF544 820 DQ 0x3618D415FAE22300,0x3BF7CCC10D2ED9EF 821$L$k_sb2: 822 DQ 0xE27A93C60B712400,0x5EB7E955BC982FCD 823 DQ 0x69EB88400AE12900,0xC2A163C8AB82234A 824$L$k_sbo: 825 DQ 0xD0D26D176FBDC700,0x15AABF7AC502A878 826 DQ 0xCFE474A55FBB6A00,0x8E1E90D1412B35FA 827 828$L$k_mc_forward: 829 DQ 0x0407060500030201,0x0C0F0E0D080B0A09 830 DQ 0x080B0A0904070605,0x000302010C0F0E0D 831 DQ 0x0C0F0E0D080B0A09,0x0407060500030201 832 DQ 0x000302010C0F0E0D,0x080B0A0904070605 833 834$L$k_mc_backward: 835 DQ 0x0605040702010003,0x0E0D0C0F0A09080B 836 DQ 0x020100030E0D0C0F,0x0A09080B06050407 837 DQ 0x0E0D0C0F0A09080B,0x0605040702010003 838 DQ 0x0A09080B06050407,0x020100030E0D0C0F 839 840$L$k_sr: 841 DQ 0x0706050403020100,0x0F0E0D0C0B0A0908 842 DQ 0x030E09040F0A0500,0x0B06010C07020D08 843 DQ 0x0F060D040B020900,0x070E050C030A0108 844 DQ 0x0B0E0104070A0D00,0x0306090C0F020508 845 846$L$k_rcon: 847 DQ 0x1F8391B9AF9DEEB6,0x702A98084D7C7D81 848 849$L$k_s63: 850 DQ 0x5B5B5B5B5B5B5B5B,0x5B5B5B5B5B5B5B5B 851 852$L$k_opt: 853 DQ 0xFF9F4929D6B66000,0xF7974121DEBE6808 854 DQ 0x01EDBD5150BCEC00,0xE10D5DB1B05C0CE0 855 856$L$k_deskew: 857 DQ 0x07E4A34047A4E300,0x1DFEB95A5DBEF91A 858 DQ 0x5F36B5DC83EA6900,0x2841C2ABF49D1E77 859 860 861$L$rev_ctr: 862 DQ 0x0706050403020100,0x0c0d0e0f0b0a0908 863 864 865$L$ctr_add_one: 866 DQ 0x0000000000000000,0x0000000100000000 867$L$ctr_add_two: 868 DQ 0x0000000000000000,0x0000000200000000 869 870DB 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105 871DB 111,110,32,65,69,83,32,102,111,114,32,120,56,54,95,54 872DB 52,47,83,83,83,69,51,44,32,77,105,107,101,32,72,97 873DB 109,98,117,114,103,32,40,83,116,97,110,102,111,114,100,32 874DB 85,110,105,118,101,114,115,105,116,121,41,0 875ALIGN 64 876 877EXTERN __imp_RtlVirtualUnwind 878 879ALIGN 16 880se_handler: 881 push rsi 882 push rdi 883 push rbx 884 push rbp 885 push r12 886 push r13 887 push r14 888 push r15 889 pushfq 890 sub rsp,64 891 892 mov rax,QWORD[120+r8] 893 mov rbx,QWORD[248+r8] 894 895 mov rsi,QWORD[8+r9] 896 mov r11,QWORD[56+r9] 897 898 mov r10d,DWORD[r11] 899 lea r10,[r10*1+rsi] 900 cmp rbx,r10 901 jb NEAR $L$in_prologue 902 903 mov rax,QWORD[152+r8] 904 905 mov r10d,DWORD[4+r11] 906 lea r10,[r10*1+rsi] 907 cmp rbx,r10 908 jae NEAR $L$in_prologue 909 910 lea rsi,[16+rax] 911 lea rdi,[512+r8] 912 mov ecx,20 913 DD 0xa548f3fc 914 lea rax,[184+rax] 915 916$L$in_prologue: 917 mov rdi,QWORD[8+rax] 918 mov rsi,QWORD[16+rax] 919 mov QWORD[152+r8],rax 920 mov QWORD[168+r8],rsi 921 mov QWORD[176+r8],rdi 922 923 mov rdi,QWORD[40+r9] 924 mov rsi,r8 925 mov ecx,154 926 DD 0xa548f3fc 927 928 mov rsi,r9 929 xor rcx,rcx 930 mov rdx,QWORD[8+rsi] 931 mov r8,QWORD[rsi] 932 mov r9,QWORD[16+rsi] 933 mov r10,QWORD[40+rsi] 934 lea r11,[56+rsi] 935 lea r12,[24+rsi] 936 mov QWORD[32+rsp],r10 937 mov QWORD[40+rsp],r11 938 mov QWORD[48+rsp],r12 939 mov QWORD[56+rsp],rcx 940 call QWORD[__imp_RtlVirtualUnwind] 941 942 mov eax,1 943 add rsp,64 944 popfq 945 pop r15 946 pop r14 947 pop r13 948 pop r12 949 pop rbp 950 pop rbx 951 pop rdi 952 pop rsi 953 DB 0F3h,0C3h ;repret 954 955 956section .pdata rdata align=4 957ALIGN 4 958 DD $L$SEH_begin_GFp_vpaes_set_encrypt_key wrt ..imagebase 959 DD $L$SEH_end_GFp_vpaes_set_encrypt_key wrt ..imagebase 960 DD $L$SEH_info_GFp_vpaes_set_encrypt_key wrt ..imagebase 961 962 DD $L$SEH_begin_GFp_vpaes_encrypt wrt ..imagebase 963 DD $L$SEH_end_GFp_vpaes_encrypt wrt ..imagebase 964 DD $L$SEH_info_GFp_vpaes_encrypt wrt ..imagebase 965 DD $L$SEH_begin_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase 966 DD $L$SEH_end_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase 967 DD $L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks wrt ..imagebase 968 969section .xdata rdata align=8 970ALIGN 8 971$L$SEH_info_GFp_vpaes_set_encrypt_key: 972DB 9,0,0,0 973 DD se_handler wrt ..imagebase 974 DD $L$enc_key_body wrt ..imagebase,$L$enc_key_epilogue wrt ..imagebase 975$L$SEH_info_GFp_vpaes_encrypt: 976DB 9,0,0,0 977 DD se_handler wrt ..imagebase 978 DD $L$enc_body wrt ..imagebase,$L$enc_epilogue wrt ..imagebase 979$L$SEH_info_GFp_vpaes_ctr32_encrypt_blocks: 980DB 9,0,0,0 981 DD se_handler wrt ..imagebase 982 DD $L$ctr32_body wrt ..imagebase,$L$ctr32_epilogue wrt ..imagebase 983