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