Home | History | Annotate | Download | only in sha
      1 default	rel
      2 %define XMMWORD
      3 %define YMMWORD
      4 %define ZMMWORD
      5 section	.text code align=64
      6 
      7 
      8 EXTERN	OPENSSL_ia32cap_P
      9 global	sha512_block_data_order
     10 
     11 ALIGN	16
     12 sha512_block_data_order:
     13 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
     14 	mov	QWORD[16+rsp],rsi
     15 	mov	rax,rsp
     16 $L$SEH_begin_sha512_block_data_order:
     17 	mov	rdi,rcx
     18 	mov	rsi,rdx
     19 	mov	rdx,r8
     20 
     21 
     22 	lea	r11,[OPENSSL_ia32cap_P]
     23 	mov	r9d,DWORD[r11]
     24 	mov	r10d,DWORD[4+r11]
     25 	mov	r11d,DWORD[8+r11]
     26 	test	r10d,2048
     27 	jnz	NEAR $L$xop_shortcut
     28 	and	r9d,1073741824
     29 	and	r10d,268435968
     30 	or	r10d,r9d
     31 	cmp	r10d,1342177792
     32 	je	NEAR $L$avx_shortcut
     33 	mov	rax,rsp
     34 	push	rbx
     35 	push	rbp
     36 	push	r12
     37 	push	r13
     38 	push	r14
     39 	push	r15
     40 	shl	rdx,4
     41 	sub	rsp,16*8+4*8
     42 	lea	rdx,[rdx*8+rsi]
     43 	and	rsp,-64
     44 	mov	QWORD[((128+0))+rsp],rdi
     45 	mov	QWORD[((128+8))+rsp],rsi
     46 	mov	QWORD[((128+16))+rsp],rdx
     47 	mov	QWORD[((128+24))+rsp],rax
     48 $L$prologue:
     49 
     50 	mov	rax,QWORD[rdi]
     51 	mov	rbx,QWORD[8+rdi]
     52 	mov	rcx,QWORD[16+rdi]
     53 	mov	rdx,QWORD[24+rdi]
     54 	mov	r8,QWORD[32+rdi]
     55 	mov	r9,QWORD[40+rdi]
     56 	mov	r10,QWORD[48+rdi]
     57 	mov	r11,QWORD[56+rdi]
     58 	jmp	NEAR $L$loop
     59 
     60 ALIGN	16
     61 $L$loop:
     62 	mov	rdi,rbx
     63 	lea	rbp,[K512]
     64 	xor	rdi,rcx
     65 	mov	r12,QWORD[rsi]
     66 	mov	r13,r8
     67 	mov	r14,rax
     68 	bswap	r12
     69 	ror	r13,23
     70 	mov	r15,r9
     71 
     72 	xor	r13,r8
     73 	ror	r14,5
     74 	xor	r15,r10
     75 
     76 	mov	QWORD[rsp],r12
     77 	xor	r14,rax
     78 	and	r15,r8
     79 
     80 	ror	r13,4
     81 	add	r12,r11
     82 	xor	r15,r10
     83 
     84 	ror	r14,6
     85 	xor	r13,r8
     86 	add	r12,r15
     87 
     88 	mov	r15,rax
     89 	add	r12,QWORD[rbp]
     90 	xor	r14,rax
     91 
     92 	xor	r15,rbx
     93 	ror	r13,14
     94 	mov	r11,rbx
     95 
     96 	and	rdi,r15
     97 	ror	r14,28
     98 	add	r12,r13
     99 
    100 	xor	r11,rdi
    101 	add	rdx,r12
    102 	add	r11,r12
    103 
    104 	lea	rbp,[8+rbp]
    105 	add	r11,r14
    106 	mov	r12,QWORD[8+rsi]
    107 	mov	r13,rdx
    108 	mov	r14,r11
    109 	bswap	r12
    110 	ror	r13,23
    111 	mov	rdi,r8
    112 
    113 	xor	r13,rdx
    114 	ror	r14,5
    115 	xor	rdi,r9
    116 
    117 	mov	QWORD[8+rsp],r12
    118 	xor	r14,r11
    119 	and	rdi,rdx
    120 
    121 	ror	r13,4
    122 	add	r12,r10
    123 	xor	rdi,r9
    124 
    125 	ror	r14,6
    126 	xor	r13,rdx
    127 	add	r12,rdi
    128 
    129 	mov	rdi,r11
    130 	add	r12,QWORD[rbp]
    131 	xor	r14,r11
    132 
    133 	xor	rdi,rax
    134 	ror	r13,14
    135 	mov	r10,rax
    136 
    137 	and	r15,rdi
    138 	ror	r14,28
    139 	add	r12,r13
    140 
    141 	xor	r10,r15
    142 	add	rcx,r12
    143 	add	r10,r12
    144 
    145 	lea	rbp,[24+rbp]
    146 	add	r10,r14
    147 	mov	r12,QWORD[16+rsi]
    148 	mov	r13,rcx
    149 	mov	r14,r10
    150 	bswap	r12
    151 	ror	r13,23
    152 	mov	r15,rdx
    153 
    154 	xor	r13,rcx
    155 	ror	r14,5
    156 	xor	r15,r8
    157 
    158 	mov	QWORD[16+rsp],r12
    159 	xor	r14,r10
    160 	and	r15,rcx
    161 
    162 	ror	r13,4
    163 	add	r12,r9
    164 	xor	r15,r8
    165 
    166 	ror	r14,6
    167 	xor	r13,rcx
    168 	add	r12,r15
    169 
    170 	mov	r15,r10
    171 	add	r12,QWORD[rbp]
    172 	xor	r14,r10
    173 
    174 	xor	r15,r11
    175 	ror	r13,14
    176 	mov	r9,r11
    177 
    178 	and	rdi,r15
    179 	ror	r14,28
    180 	add	r12,r13
    181 
    182 	xor	r9,rdi
    183 	add	rbx,r12
    184 	add	r9,r12
    185 
    186 	lea	rbp,[8+rbp]
    187 	add	r9,r14
    188 	mov	r12,QWORD[24+rsi]
    189 	mov	r13,rbx
    190 	mov	r14,r9
    191 	bswap	r12
    192 	ror	r13,23
    193 	mov	rdi,rcx
    194 
    195 	xor	r13,rbx
    196 	ror	r14,5
    197 	xor	rdi,rdx
    198 
    199 	mov	QWORD[24+rsp],r12
    200 	xor	r14,r9
    201 	and	rdi,rbx
    202 
    203 	ror	r13,4
    204 	add	r12,r8
    205 	xor	rdi,rdx
    206 
    207 	ror	r14,6
    208 	xor	r13,rbx
    209 	add	r12,rdi
    210 
    211 	mov	rdi,r9
    212 	add	r12,QWORD[rbp]
    213 	xor	r14,r9
    214 
    215 	xor	rdi,r10
    216 	ror	r13,14
    217 	mov	r8,r10
    218 
    219 	and	r15,rdi
    220 	ror	r14,28
    221 	add	r12,r13
    222 
    223 	xor	r8,r15
    224 	add	rax,r12
    225 	add	r8,r12
    226 
    227 	lea	rbp,[24+rbp]
    228 	add	r8,r14
    229 	mov	r12,QWORD[32+rsi]
    230 	mov	r13,rax
    231 	mov	r14,r8
    232 	bswap	r12
    233 	ror	r13,23
    234 	mov	r15,rbx
    235 
    236 	xor	r13,rax
    237 	ror	r14,5
    238 	xor	r15,rcx
    239 
    240 	mov	QWORD[32+rsp],r12
    241 	xor	r14,r8
    242 	and	r15,rax
    243 
    244 	ror	r13,4
    245 	add	r12,rdx
    246 	xor	r15,rcx
    247 
    248 	ror	r14,6
    249 	xor	r13,rax
    250 	add	r12,r15
    251 
    252 	mov	r15,r8
    253 	add	r12,QWORD[rbp]
    254 	xor	r14,r8
    255 
    256 	xor	r15,r9
    257 	ror	r13,14
    258 	mov	rdx,r9
    259 
    260 	and	rdi,r15
    261 	ror	r14,28
    262 	add	r12,r13
    263 
    264 	xor	rdx,rdi
    265 	add	r11,r12
    266 	add	rdx,r12
    267 
    268 	lea	rbp,[8+rbp]
    269 	add	rdx,r14
    270 	mov	r12,QWORD[40+rsi]
    271 	mov	r13,r11
    272 	mov	r14,rdx
    273 	bswap	r12
    274 	ror	r13,23
    275 	mov	rdi,rax
    276 
    277 	xor	r13,r11
    278 	ror	r14,5
    279 	xor	rdi,rbx
    280 
    281 	mov	QWORD[40+rsp],r12
    282 	xor	r14,rdx
    283 	and	rdi,r11
    284 
    285 	ror	r13,4
    286 	add	r12,rcx
    287 	xor	rdi,rbx
    288 
    289 	ror	r14,6
    290 	xor	r13,r11
    291 	add	r12,rdi
    292 
    293 	mov	rdi,rdx
    294 	add	r12,QWORD[rbp]
    295 	xor	r14,rdx
    296 
    297 	xor	rdi,r8
    298 	ror	r13,14
    299 	mov	rcx,r8
    300 
    301 	and	r15,rdi
    302 	ror	r14,28
    303 	add	r12,r13
    304 
    305 	xor	rcx,r15
    306 	add	r10,r12
    307 	add	rcx,r12
    308 
    309 	lea	rbp,[24+rbp]
    310 	add	rcx,r14
    311 	mov	r12,QWORD[48+rsi]
    312 	mov	r13,r10
    313 	mov	r14,rcx
    314 	bswap	r12
    315 	ror	r13,23
    316 	mov	r15,r11
    317 
    318 	xor	r13,r10
    319 	ror	r14,5
    320 	xor	r15,rax
    321 
    322 	mov	QWORD[48+rsp],r12
    323 	xor	r14,rcx
    324 	and	r15,r10
    325 
    326 	ror	r13,4
    327 	add	r12,rbx
    328 	xor	r15,rax
    329 
    330 	ror	r14,6
    331 	xor	r13,r10
    332 	add	r12,r15
    333 
    334 	mov	r15,rcx
    335 	add	r12,QWORD[rbp]
    336 	xor	r14,rcx
    337 
    338 	xor	r15,rdx
    339 	ror	r13,14
    340 	mov	rbx,rdx
    341 
    342 	and	rdi,r15
    343 	ror	r14,28
    344 	add	r12,r13
    345 
    346 	xor	rbx,rdi
    347 	add	r9,r12
    348 	add	rbx,r12
    349 
    350 	lea	rbp,[8+rbp]
    351 	add	rbx,r14
    352 	mov	r12,QWORD[56+rsi]
    353 	mov	r13,r9
    354 	mov	r14,rbx
    355 	bswap	r12
    356 	ror	r13,23
    357 	mov	rdi,r10
    358 
    359 	xor	r13,r9
    360 	ror	r14,5
    361 	xor	rdi,r11
    362 
    363 	mov	QWORD[56+rsp],r12
    364 	xor	r14,rbx
    365 	and	rdi,r9
    366 
    367 	ror	r13,4
    368 	add	r12,rax
    369 	xor	rdi,r11
    370 
    371 	ror	r14,6
    372 	xor	r13,r9
    373 	add	r12,rdi
    374 
    375 	mov	rdi,rbx
    376 	add	r12,QWORD[rbp]
    377 	xor	r14,rbx
    378 
    379 	xor	rdi,rcx
    380 	ror	r13,14
    381 	mov	rax,rcx
    382 
    383 	and	r15,rdi
    384 	ror	r14,28
    385 	add	r12,r13
    386 
    387 	xor	rax,r15
    388 	add	r8,r12
    389 	add	rax,r12
    390 
    391 	lea	rbp,[24+rbp]
    392 	add	rax,r14
    393 	mov	r12,QWORD[64+rsi]
    394 	mov	r13,r8
    395 	mov	r14,rax
    396 	bswap	r12
    397 	ror	r13,23
    398 	mov	r15,r9
    399 
    400 	xor	r13,r8
    401 	ror	r14,5
    402 	xor	r15,r10
    403 
    404 	mov	QWORD[64+rsp],r12
    405 	xor	r14,rax
    406 	and	r15,r8
    407 
    408 	ror	r13,4
    409 	add	r12,r11
    410 	xor	r15,r10
    411 
    412 	ror	r14,6
    413 	xor	r13,r8
    414 	add	r12,r15
    415 
    416 	mov	r15,rax
    417 	add	r12,QWORD[rbp]
    418 	xor	r14,rax
    419 
    420 	xor	r15,rbx
    421 	ror	r13,14
    422 	mov	r11,rbx
    423 
    424 	and	rdi,r15
    425 	ror	r14,28
    426 	add	r12,r13
    427 
    428 	xor	r11,rdi
    429 	add	rdx,r12
    430 	add	r11,r12
    431 
    432 	lea	rbp,[8+rbp]
    433 	add	r11,r14
    434 	mov	r12,QWORD[72+rsi]
    435 	mov	r13,rdx
    436 	mov	r14,r11
    437 	bswap	r12
    438 	ror	r13,23
    439 	mov	rdi,r8
    440 
    441 	xor	r13,rdx
    442 	ror	r14,5
    443 	xor	rdi,r9
    444 
    445 	mov	QWORD[72+rsp],r12
    446 	xor	r14,r11
    447 	and	rdi,rdx
    448 
    449 	ror	r13,4
    450 	add	r12,r10
    451 	xor	rdi,r9
    452 
    453 	ror	r14,6
    454 	xor	r13,rdx
    455 	add	r12,rdi
    456 
    457 	mov	rdi,r11
    458 	add	r12,QWORD[rbp]
    459 	xor	r14,r11
    460 
    461 	xor	rdi,rax
    462 	ror	r13,14
    463 	mov	r10,rax
    464 
    465 	and	r15,rdi
    466 	ror	r14,28
    467 	add	r12,r13
    468 
    469 	xor	r10,r15
    470 	add	rcx,r12
    471 	add	r10,r12
    472 
    473 	lea	rbp,[24+rbp]
    474 	add	r10,r14
    475 	mov	r12,QWORD[80+rsi]
    476 	mov	r13,rcx
    477 	mov	r14,r10
    478 	bswap	r12
    479 	ror	r13,23
    480 	mov	r15,rdx
    481 
    482 	xor	r13,rcx
    483 	ror	r14,5
    484 	xor	r15,r8
    485 
    486 	mov	QWORD[80+rsp],r12
    487 	xor	r14,r10
    488 	and	r15,rcx
    489 
    490 	ror	r13,4
    491 	add	r12,r9
    492 	xor	r15,r8
    493 
    494 	ror	r14,6
    495 	xor	r13,rcx
    496 	add	r12,r15
    497 
    498 	mov	r15,r10
    499 	add	r12,QWORD[rbp]
    500 	xor	r14,r10
    501 
    502 	xor	r15,r11
    503 	ror	r13,14
    504 	mov	r9,r11
    505 
    506 	and	rdi,r15
    507 	ror	r14,28
    508 	add	r12,r13
    509 
    510 	xor	r9,rdi
    511 	add	rbx,r12
    512 	add	r9,r12
    513 
    514 	lea	rbp,[8+rbp]
    515 	add	r9,r14
    516 	mov	r12,QWORD[88+rsi]
    517 	mov	r13,rbx
    518 	mov	r14,r9
    519 	bswap	r12
    520 	ror	r13,23
    521 	mov	rdi,rcx
    522 
    523 	xor	r13,rbx
    524 	ror	r14,5
    525 	xor	rdi,rdx
    526 
    527 	mov	QWORD[88+rsp],r12
    528 	xor	r14,r9
    529 	and	rdi,rbx
    530 
    531 	ror	r13,4
    532 	add	r12,r8
    533 	xor	rdi,rdx
    534 
    535 	ror	r14,6
    536 	xor	r13,rbx
    537 	add	r12,rdi
    538 
    539 	mov	rdi,r9
    540 	add	r12,QWORD[rbp]
    541 	xor	r14,r9
    542 
    543 	xor	rdi,r10
    544 	ror	r13,14
    545 	mov	r8,r10
    546 
    547 	and	r15,rdi
    548 	ror	r14,28
    549 	add	r12,r13
    550 
    551 	xor	r8,r15
    552 	add	rax,r12
    553 	add	r8,r12
    554 
    555 	lea	rbp,[24+rbp]
    556 	add	r8,r14
    557 	mov	r12,QWORD[96+rsi]
    558 	mov	r13,rax
    559 	mov	r14,r8
    560 	bswap	r12
    561 	ror	r13,23
    562 	mov	r15,rbx
    563 
    564 	xor	r13,rax
    565 	ror	r14,5
    566 	xor	r15,rcx
    567 
    568 	mov	QWORD[96+rsp],r12
    569 	xor	r14,r8
    570 	and	r15,rax
    571 
    572 	ror	r13,4
    573 	add	r12,rdx
    574 	xor	r15,rcx
    575 
    576 	ror	r14,6
    577 	xor	r13,rax
    578 	add	r12,r15
    579 
    580 	mov	r15,r8
    581 	add	r12,QWORD[rbp]
    582 	xor	r14,r8
    583 
    584 	xor	r15,r9
    585 	ror	r13,14
    586 	mov	rdx,r9
    587 
    588 	and	rdi,r15
    589 	ror	r14,28
    590 	add	r12,r13
    591 
    592 	xor	rdx,rdi
    593 	add	r11,r12
    594 	add	rdx,r12
    595 
    596 	lea	rbp,[8+rbp]
    597 	add	rdx,r14
    598 	mov	r12,QWORD[104+rsi]
    599 	mov	r13,r11
    600 	mov	r14,rdx
    601 	bswap	r12
    602 	ror	r13,23
    603 	mov	rdi,rax
    604 
    605 	xor	r13,r11
    606 	ror	r14,5
    607 	xor	rdi,rbx
    608 
    609 	mov	QWORD[104+rsp],r12
    610 	xor	r14,rdx
    611 	and	rdi,r11
    612 
    613 	ror	r13,4
    614 	add	r12,rcx
    615 	xor	rdi,rbx
    616 
    617 	ror	r14,6
    618 	xor	r13,r11
    619 	add	r12,rdi
    620 
    621 	mov	rdi,rdx
    622 	add	r12,QWORD[rbp]
    623 	xor	r14,rdx
    624 
    625 	xor	rdi,r8
    626 	ror	r13,14
    627 	mov	rcx,r8
    628 
    629 	and	r15,rdi
    630 	ror	r14,28
    631 	add	r12,r13
    632 
    633 	xor	rcx,r15
    634 	add	r10,r12
    635 	add	rcx,r12
    636 
    637 	lea	rbp,[24+rbp]
    638 	add	rcx,r14
    639 	mov	r12,QWORD[112+rsi]
    640 	mov	r13,r10
    641 	mov	r14,rcx
    642 	bswap	r12
    643 	ror	r13,23
    644 	mov	r15,r11
    645 
    646 	xor	r13,r10
    647 	ror	r14,5
    648 	xor	r15,rax
    649 
    650 	mov	QWORD[112+rsp],r12
    651 	xor	r14,rcx
    652 	and	r15,r10
    653 
    654 	ror	r13,4
    655 	add	r12,rbx
    656 	xor	r15,rax
    657 
    658 	ror	r14,6
    659 	xor	r13,r10
    660 	add	r12,r15
    661 
    662 	mov	r15,rcx
    663 	add	r12,QWORD[rbp]
    664 	xor	r14,rcx
    665 
    666 	xor	r15,rdx
    667 	ror	r13,14
    668 	mov	rbx,rdx
    669 
    670 	and	rdi,r15
    671 	ror	r14,28
    672 	add	r12,r13
    673 
    674 	xor	rbx,rdi
    675 	add	r9,r12
    676 	add	rbx,r12
    677 
    678 	lea	rbp,[8+rbp]
    679 	add	rbx,r14
    680 	mov	r12,QWORD[120+rsi]
    681 	mov	r13,r9
    682 	mov	r14,rbx
    683 	bswap	r12
    684 	ror	r13,23
    685 	mov	rdi,r10
    686 
    687 	xor	r13,r9
    688 	ror	r14,5
    689 	xor	rdi,r11
    690 
    691 	mov	QWORD[120+rsp],r12
    692 	xor	r14,rbx
    693 	and	rdi,r9
    694 
    695 	ror	r13,4
    696 	add	r12,rax
    697 	xor	rdi,r11
    698 
    699 	ror	r14,6
    700 	xor	r13,r9
    701 	add	r12,rdi
    702 
    703 	mov	rdi,rbx
    704 	add	r12,QWORD[rbp]
    705 	xor	r14,rbx
    706 
    707 	xor	rdi,rcx
    708 	ror	r13,14
    709 	mov	rax,rcx
    710 
    711 	and	r15,rdi
    712 	ror	r14,28
    713 	add	r12,r13
    714 
    715 	xor	rax,r15
    716 	add	r8,r12
    717 	add	rax,r12
    718 
    719 	lea	rbp,[24+rbp]
    720 	jmp	NEAR $L$rounds_16_xx
    721 ALIGN	16
    722 $L$rounds_16_xx:
    723 	mov	r13,QWORD[8+rsp]
    724 	mov	r15,QWORD[112+rsp]
    725 
    726 	mov	r12,r13
    727 	ror	r13,7
    728 	add	rax,r14
    729 	mov	r14,r15
    730 	ror	r15,42
    731 
    732 	xor	r13,r12
    733 	shr	r12,7
    734 	ror	r13,1
    735 	xor	r15,r14
    736 	shr	r14,6
    737 
    738 	ror	r15,19
    739 	xor	r12,r13
    740 	xor	r15,r14
    741 	add	r12,QWORD[72+rsp]
    742 
    743 	add	r12,QWORD[rsp]
    744 	mov	r13,r8
    745 	add	r12,r15
    746 	mov	r14,rax
    747 	ror	r13,23
    748 	mov	r15,r9
    749 
    750 	xor	r13,r8
    751 	ror	r14,5
    752 	xor	r15,r10
    753 
    754 	mov	QWORD[rsp],r12
    755 	xor	r14,rax
    756 	and	r15,r8
    757 
    758 	ror	r13,4
    759 	add	r12,r11
    760 	xor	r15,r10
    761 
    762 	ror	r14,6
    763 	xor	r13,r8
    764 	add	r12,r15
    765 
    766 	mov	r15,rax
    767 	add	r12,QWORD[rbp]
    768 	xor	r14,rax
    769 
    770 	xor	r15,rbx
    771 	ror	r13,14
    772 	mov	r11,rbx
    773 
    774 	and	rdi,r15
    775 	ror	r14,28
    776 	add	r12,r13
    777 
    778 	xor	r11,rdi
    779 	add	rdx,r12
    780 	add	r11,r12
    781 
    782 	lea	rbp,[8+rbp]
    783 	mov	r13,QWORD[16+rsp]
    784 	mov	rdi,QWORD[120+rsp]
    785 
    786 	mov	r12,r13
    787 	ror	r13,7
    788 	add	r11,r14
    789 	mov	r14,rdi
    790 	ror	rdi,42
    791 
    792 	xor	r13,r12
    793 	shr	r12,7
    794 	ror	r13,1
    795 	xor	rdi,r14
    796 	shr	r14,6
    797 
    798 	ror	rdi,19
    799 	xor	r12,r13
    800 	xor	rdi,r14
    801 	add	r12,QWORD[80+rsp]
    802 
    803 	add	r12,QWORD[8+rsp]
    804 	mov	r13,rdx
    805 	add	r12,rdi
    806 	mov	r14,r11
    807 	ror	r13,23
    808 	mov	rdi,r8
    809 
    810 	xor	r13,rdx
    811 	ror	r14,5
    812 	xor	rdi,r9
    813 
    814 	mov	QWORD[8+rsp],r12
    815 	xor	r14,r11
    816 	and	rdi,rdx
    817 
    818 	ror	r13,4
    819 	add	r12,r10
    820 	xor	rdi,r9
    821 
    822 	ror	r14,6
    823 	xor	r13,rdx
    824 	add	r12,rdi
    825 
    826 	mov	rdi,r11
    827 	add	r12,QWORD[rbp]
    828 	xor	r14,r11
    829 
    830 	xor	rdi,rax
    831 	ror	r13,14
    832 	mov	r10,rax
    833 
    834 	and	r15,rdi
    835 	ror	r14,28
    836 	add	r12,r13
    837 
    838 	xor	r10,r15
    839 	add	rcx,r12
    840 	add	r10,r12
    841 
    842 	lea	rbp,[24+rbp]
    843 	mov	r13,QWORD[24+rsp]
    844 	mov	r15,QWORD[rsp]
    845 
    846 	mov	r12,r13
    847 	ror	r13,7
    848 	add	r10,r14
    849 	mov	r14,r15
    850 	ror	r15,42
    851 
    852 	xor	r13,r12
    853 	shr	r12,7
    854 	ror	r13,1
    855 	xor	r15,r14
    856 	shr	r14,6
    857 
    858 	ror	r15,19
    859 	xor	r12,r13
    860 	xor	r15,r14
    861 	add	r12,QWORD[88+rsp]
    862 
    863 	add	r12,QWORD[16+rsp]
    864 	mov	r13,rcx
    865 	add	r12,r15
    866 	mov	r14,r10
    867 	ror	r13,23
    868 	mov	r15,rdx
    869 
    870 	xor	r13,rcx
    871 	ror	r14,5
    872 	xor	r15,r8
    873 
    874 	mov	QWORD[16+rsp],r12
    875 	xor	r14,r10
    876 	and	r15,rcx
    877 
    878 	ror	r13,4
    879 	add	r12,r9
    880 	xor	r15,r8
    881 
    882 	ror	r14,6
    883 	xor	r13,rcx
    884 	add	r12,r15
    885 
    886 	mov	r15,r10
    887 	add	r12,QWORD[rbp]
    888 	xor	r14,r10
    889 
    890 	xor	r15,r11
    891 	ror	r13,14
    892 	mov	r9,r11
    893 
    894 	and	rdi,r15
    895 	ror	r14,28
    896 	add	r12,r13
    897 
    898 	xor	r9,rdi
    899 	add	rbx,r12
    900 	add	r9,r12
    901 
    902 	lea	rbp,[8+rbp]
    903 	mov	r13,QWORD[32+rsp]
    904 	mov	rdi,QWORD[8+rsp]
    905 
    906 	mov	r12,r13
    907 	ror	r13,7
    908 	add	r9,r14
    909 	mov	r14,rdi
    910 	ror	rdi,42
    911 
    912 	xor	r13,r12
    913 	shr	r12,7
    914 	ror	r13,1
    915 	xor	rdi,r14
    916 	shr	r14,6
    917 
    918 	ror	rdi,19
    919 	xor	r12,r13
    920 	xor	rdi,r14
    921 	add	r12,QWORD[96+rsp]
    922 
    923 	add	r12,QWORD[24+rsp]
    924 	mov	r13,rbx
    925 	add	r12,rdi
    926 	mov	r14,r9
    927 	ror	r13,23
    928 	mov	rdi,rcx
    929 
    930 	xor	r13,rbx
    931 	ror	r14,5
    932 	xor	rdi,rdx
    933 
    934 	mov	QWORD[24+rsp],r12
    935 	xor	r14,r9
    936 	and	rdi,rbx
    937 
    938 	ror	r13,4
    939 	add	r12,r8
    940 	xor	rdi,rdx
    941 
    942 	ror	r14,6
    943 	xor	r13,rbx
    944 	add	r12,rdi
    945 
    946 	mov	rdi,r9
    947 	add	r12,QWORD[rbp]
    948 	xor	r14,r9
    949 
    950 	xor	rdi,r10
    951 	ror	r13,14
    952 	mov	r8,r10
    953 
    954 	and	r15,rdi
    955 	ror	r14,28
    956 	add	r12,r13
    957 
    958 	xor	r8,r15
    959 	add	rax,r12
    960 	add	r8,r12
    961 
    962 	lea	rbp,[24+rbp]
    963 	mov	r13,QWORD[40+rsp]
    964 	mov	r15,QWORD[16+rsp]
    965 
    966 	mov	r12,r13
    967 	ror	r13,7
    968 	add	r8,r14
    969 	mov	r14,r15
    970 	ror	r15,42
    971 
    972 	xor	r13,r12
    973 	shr	r12,7
    974 	ror	r13,1
    975 	xor	r15,r14
    976 	shr	r14,6
    977 
    978 	ror	r15,19
    979 	xor	r12,r13
    980 	xor	r15,r14
    981 	add	r12,QWORD[104+rsp]
    982 
    983 	add	r12,QWORD[32+rsp]
    984 	mov	r13,rax
    985 	add	r12,r15
    986 	mov	r14,r8
    987 	ror	r13,23
    988 	mov	r15,rbx
    989 
    990 	xor	r13,rax
    991 	ror	r14,5
    992 	xor	r15,rcx
    993 
    994 	mov	QWORD[32+rsp],r12
    995 	xor	r14,r8
    996 	and	r15,rax
    997 
    998 	ror	r13,4
    999 	add	r12,rdx
   1000 	xor	r15,rcx
   1001 
   1002 	ror	r14,6
   1003 	xor	r13,rax
   1004 	add	r12,r15
   1005 
   1006 	mov	r15,r8
   1007 	add	r12,QWORD[rbp]
   1008 	xor	r14,r8
   1009 
   1010 	xor	r15,r9
   1011 	ror	r13,14
   1012 	mov	rdx,r9
   1013 
   1014 	and	rdi,r15
   1015 	ror	r14,28
   1016 	add	r12,r13
   1017 
   1018 	xor	rdx,rdi
   1019 	add	r11,r12
   1020 	add	rdx,r12
   1021 
   1022 	lea	rbp,[8+rbp]
   1023 	mov	r13,QWORD[48+rsp]
   1024 	mov	rdi,QWORD[24+rsp]
   1025 
   1026 	mov	r12,r13
   1027 	ror	r13,7
   1028 	add	rdx,r14
   1029 	mov	r14,rdi
   1030 	ror	rdi,42
   1031 
   1032 	xor	r13,r12
   1033 	shr	r12,7
   1034 	ror	r13,1
   1035 	xor	rdi,r14
   1036 	shr	r14,6
   1037 
   1038 	ror	rdi,19
   1039 	xor	r12,r13
   1040 	xor	rdi,r14
   1041 	add	r12,QWORD[112+rsp]
   1042 
   1043 	add	r12,QWORD[40+rsp]
   1044 	mov	r13,r11
   1045 	add	r12,rdi
   1046 	mov	r14,rdx
   1047 	ror	r13,23
   1048 	mov	rdi,rax
   1049 
   1050 	xor	r13,r11
   1051 	ror	r14,5
   1052 	xor	rdi,rbx
   1053 
   1054 	mov	QWORD[40+rsp],r12
   1055 	xor	r14,rdx
   1056 	and	rdi,r11
   1057 
   1058 	ror	r13,4
   1059 	add	r12,rcx
   1060 	xor	rdi,rbx
   1061 
   1062 	ror	r14,6
   1063 	xor	r13,r11
   1064 	add	r12,rdi
   1065 
   1066 	mov	rdi,rdx
   1067 	add	r12,QWORD[rbp]
   1068 	xor	r14,rdx
   1069 
   1070 	xor	rdi,r8
   1071 	ror	r13,14
   1072 	mov	rcx,r8
   1073 
   1074 	and	r15,rdi
   1075 	ror	r14,28
   1076 	add	r12,r13
   1077 
   1078 	xor	rcx,r15
   1079 	add	r10,r12
   1080 	add	rcx,r12
   1081 
   1082 	lea	rbp,[24+rbp]
   1083 	mov	r13,QWORD[56+rsp]
   1084 	mov	r15,QWORD[32+rsp]
   1085 
   1086 	mov	r12,r13
   1087 	ror	r13,7
   1088 	add	rcx,r14
   1089 	mov	r14,r15
   1090 	ror	r15,42
   1091 
   1092 	xor	r13,r12
   1093 	shr	r12,7
   1094 	ror	r13,1
   1095 	xor	r15,r14
   1096 	shr	r14,6
   1097 
   1098 	ror	r15,19
   1099 	xor	r12,r13
   1100 	xor	r15,r14
   1101 	add	r12,QWORD[120+rsp]
   1102 
   1103 	add	r12,QWORD[48+rsp]
   1104 	mov	r13,r10
   1105 	add	r12,r15
   1106 	mov	r14,rcx
   1107 	ror	r13,23
   1108 	mov	r15,r11
   1109 
   1110 	xor	r13,r10
   1111 	ror	r14,5
   1112 	xor	r15,rax
   1113 
   1114 	mov	QWORD[48+rsp],r12
   1115 	xor	r14,rcx
   1116 	and	r15,r10
   1117 
   1118 	ror	r13,4
   1119 	add	r12,rbx
   1120 	xor	r15,rax
   1121 
   1122 	ror	r14,6
   1123 	xor	r13,r10
   1124 	add	r12,r15
   1125 
   1126 	mov	r15,rcx
   1127 	add	r12,QWORD[rbp]
   1128 	xor	r14,rcx
   1129 
   1130 	xor	r15,rdx
   1131 	ror	r13,14
   1132 	mov	rbx,rdx
   1133 
   1134 	and	rdi,r15
   1135 	ror	r14,28
   1136 	add	r12,r13
   1137 
   1138 	xor	rbx,rdi
   1139 	add	r9,r12
   1140 	add	rbx,r12
   1141 
   1142 	lea	rbp,[8+rbp]
   1143 	mov	r13,QWORD[64+rsp]
   1144 	mov	rdi,QWORD[40+rsp]
   1145 
   1146 	mov	r12,r13
   1147 	ror	r13,7
   1148 	add	rbx,r14
   1149 	mov	r14,rdi
   1150 	ror	rdi,42
   1151 
   1152 	xor	r13,r12
   1153 	shr	r12,7
   1154 	ror	r13,1
   1155 	xor	rdi,r14
   1156 	shr	r14,6
   1157 
   1158 	ror	rdi,19
   1159 	xor	r12,r13
   1160 	xor	rdi,r14
   1161 	add	r12,QWORD[rsp]
   1162 
   1163 	add	r12,QWORD[56+rsp]
   1164 	mov	r13,r9
   1165 	add	r12,rdi
   1166 	mov	r14,rbx
   1167 	ror	r13,23
   1168 	mov	rdi,r10
   1169 
   1170 	xor	r13,r9
   1171 	ror	r14,5
   1172 	xor	rdi,r11
   1173 
   1174 	mov	QWORD[56+rsp],r12
   1175 	xor	r14,rbx
   1176 	and	rdi,r9
   1177 
   1178 	ror	r13,4
   1179 	add	r12,rax
   1180 	xor	rdi,r11
   1181 
   1182 	ror	r14,6
   1183 	xor	r13,r9
   1184 	add	r12,rdi
   1185 
   1186 	mov	rdi,rbx
   1187 	add	r12,QWORD[rbp]
   1188 	xor	r14,rbx
   1189 
   1190 	xor	rdi,rcx
   1191 	ror	r13,14
   1192 	mov	rax,rcx
   1193 
   1194 	and	r15,rdi
   1195 	ror	r14,28
   1196 	add	r12,r13
   1197 
   1198 	xor	rax,r15
   1199 	add	r8,r12
   1200 	add	rax,r12
   1201 
   1202 	lea	rbp,[24+rbp]
   1203 	mov	r13,QWORD[72+rsp]
   1204 	mov	r15,QWORD[48+rsp]
   1205 
   1206 	mov	r12,r13
   1207 	ror	r13,7
   1208 	add	rax,r14
   1209 	mov	r14,r15
   1210 	ror	r15,42
   1211 
   1212 	xor	r13,r12
   1213 	shr	r12,7
   1214 	ror	r13,1
   1215 	xor	r15,r14
   1216 	shr	r14,6
   1217 
   1218 	ror	r15,19
   1219 	xor	r12,r13
   1220 	xor	r15,r14
   1221 	add	r12,QWORD[8+rsp]
   1222 
   1223 	add	r12,QWORD[64+rsp]
   1224 	mov	r13,r8
   1225 	add	r12,r15
   1226 	mov	r14,rax
   1227 	ror	r13,23
   1228 	mov	r15,r9
   1229 
   1230 	xor	r13,r8
   1231 	ror	r14,5
   1232 	xor	r15,r10
   1233 
   1234 	mov	QWORD[64+rsp],r12
   1235 	xor	r14,rax
   1236 	and	r15,r8
   1237 
   1238 	ror	r13,4
   1239 	add	r12,r11
   1240 	xor	r15,r10
   1241 
   1242 	ror	r14,6
   1243 	xor	r13,r8
   1244 	add	r12,r15
   1245 
   1246 	mov	r15,rax
   1247 	add	r12,QWORD[rbp]
   1248 	xor	r14,rax
   1249 
   1250 	xor	r15,rbx
   1251 	ror	r13,14
   1252 	mov	r11,rbx
   1253 
   1254 	and	rdi,r15
   1255 	ror	r14,28
   1256 	add	r12,r13
   1257 
   1258 	xor	r11,rdi
   1259 	add	rdx,r12
   1260 	add	r11,r12
   1261 
   1262 	lea	rbp,[8+rbp]
   1263 	mov	r13,QWORD[80+rsp]
   1264 	mov	rdi,QWORD[56+rsp]
   1265 
   1266 	mov	r12,r13
   1267 	ror	r13,7
   1268 	add	r11,r14
   1269 	mov	r14,rdi
   1270 	ror	rdi,42
   1271 
   1272 	xor	r13,r12
   1273 	shr	r12,7
   1274 	ror	r13,1
   1275 	xor	rdi,r14
   1276 	shr	r14,6
   1277 
   1278 	ror	rdi,19
   1279 	xor	r12,r13
   1280 	xor	rdi,r14
   1281 	add	r12,QWORD[16+rsp]
   1282 
   1283 	add	r12,QWORD[72+rsp]
   1284 	mov	r13,rdx
   1285 	add	r12,rdi
   1286 	mov	r14,r11
   1287 	ror	r13,23
   1288 	mov	rdi,r8
   1289 
   1290 	xor	r13,rdx
   1291 	ror	r14,5
   1292 	xor	rdi,r9
   1293 
   1294 	mov	QWORD[72+rsp],r12
   1295 	xor	r14,r11
   1296 	and	rdi,rdx
   1297 
   1298 	ror	r13,4
   1299 	add	r12,r10
   1300 	xor	rdi,r9
   1301 
   1302 	ror	r14,6
   1303 	xor	r13,rdx
   1304 	add	r12,rdi
   1305 
   1306 	mov	rdi,r11
   1307 	add	r12,QWORD[rbp]
   1308 	xor	r14,r11
   1309 
   1310 	xor	rdi,rax
   1311 	ror	r13,14
   1312 	mov	r10,rax
   1313 
   1314 	and	r15,rdi
   1315 	ror	r14,28
   1316 	add	r12,r13
   1317 
   1318 	xor	r10,r15
   1319 	add	rcx,r12
   1320 	add	r10,r12
   1321 
   1322 	lea	rbp,[24+rbp]
   1323 	mov	r13,QWORD[88+rsp]
   1324 	mov	r15,QWORD[64+rsp]
   1325 
   1326 	mov	r12,r13
   1327 	ror	r13,7
   1328 	add	r10,r14
   1329 	mov	r14,r15
   1330 	ror	r15,42
   1331 
   1332 	xor	r13,r12
   1333 	shr	r12,7
   1334 	ror	r13,1
   1335 	xor	r15,r14
   1336 	shr	r14,6
   1337 
   1338 	ror	r15,19
   1339 	xor	r12,r13
   1340 	xor	r15,r14
   1341 	add	r12,QWORD[24+rsp]
   1342 
   1343 	add	r12,QWORD[80+rsp]
   1344 	mov	r13,rcx
   1345 	add	r12,r15
   1346 	mov	r14,r10
   1347 	ror	r13,23
   1348 	mov	r15,rdx
   1349 
   1350 	xor	r13,rcx
   1351 	ror	r14,5
   1352 	xor	r15,r8
   1353 
   1354 	mov	QWORD[80+rsp],r12
   1355 	xor	r14,r10
   1356 	and	r15,rcx
   1357 
   1358 	ror	r13,4
   1359 	add	r12,r9
   1360 	xor	r15,r8
   1361 
   1362 	ror	r14,6
   1363 	xor	r13,rcx
   1364 	add	r12,r15
   1365 
   1366 	mov	r15,r10
   1367 	add	r12,QWORD[rbp]
   1368 	xor	r14,r10
   1369 
   1370 	xor	r15,r11
   1371 	ror	r13,14
   1372 	mov	r9,r11
   1373 
   1374 	and	rdi,r15
   1375 	ror	r14,28
   1376 	add	r12,r13
   1377 
   1378 	xor	r9,rdi
   1379 	add	rbx,r12
   1380 	add	r9,r12
   1381 
   1382 	lea	rbp,[8+rbp]
   1383 	mov	r13,QWORD[96+rsp]
   1384 	mov	rdi,QWORD[72+rsp]
   1385 
   1386 	mov	r12,r13
   1387 	ror	r13,7
   1388 	add	r9,r14
   1389 	mov	r14,rdi
   1390 	ror	rdi,42
   1391 
   1392 	xor	r13,r12
   1393 	shr	r12,7
   1394 	ror	r13,1
   1395 	xor	rdi,r14
   1396 	shr	r14,6
   1397 
   1398 	ror	rdi,19
   1399 	xor	r12,r13
   1400 	xor	rdi,r14
   1401 	add	r12,QWORD[32+rsp]
   1402 
   1403 	add	r12,QWORD[88+rsp]
   1404 	mov	r13,rbx
   1405 	add	r12,rdi
   1406 	mov	r14,r9
   1407 	ror	r13,23
   1408 	mov	rdi,rcx
   1409 
   1410 	xor	r13,rbx
   1411 	ror	r14,5
   1412 	xor	rdi,rdx
   1413 
   1414 	mov	QWORD[88+rsp],r12
   1415 	xor	r14,r9
   1416 	and	rdi,rbx
   1417 
   1418 	ror	r13,4
   1419 	add	r12,r8
   1420 	xor	rdi,rdx
   1421 
   1422 	ror	r14,6
   1423 	xor	r13,rbx
   1424 	add	r12,rdi
   1425 
   1426 	mov	rdi,r9
   1427 	add	r12,QWORD[rbp]
   1428 	xor	r14,r9
   1429 
   1430 	xor	rdi,r10
   1431 	ror	r13,14
   1432 	mov	r8,r10
   1433 
   1434 	and	r15,rdi
   1435 	ror	r14,28
   1436 	add	r12,r13
   1437 
   1438 	xor	r8,r15
   1439 	add	rax,r12
   1440 	add	r8,r12
   1441 
   1442 	lea	rbp,[24+rbp]
   1443 	mov	r13,QWORD[104+rsp]
   1444 	mov	r15,QWORD[80+rsp]
   1445 
   1446 	mov	r12,r13
   1447 	ror	r13,7
   1448 	add	r8,r14
   1449 	mov	r14,r15
   1450 	ror	r15,42
   1451 
   1452 	xor	r13,r12
   1453 	shr	r12,7
   1454 	ror	r13,1
   1455 	xor	r15,r14
   1456 	shr	r14,6
   1457 
   1458 	ror	r15,19
   1459 	xor	r12,r13
   1460 	xor	r15,r14
   1461 	add	r12,QWORD[40+rsp]
   1462 
   1463 	add	r12,QWORD[96+rsp]
   1464 	mov	r13,rax
   1465 	add	r12,r15
   1466 	mov	r14,r8
   1467 	ror	r13,23
   1468 	mov	r15,rbx
   1469 
   1470 	xor	r13,rax
   1471 	ror	r14,5
   1472 	xor	r15,rcx
   1473 
   1474 	mov	QWORD[96+rsp],r12
   1475 	xor	r14,r8
   1476 	and	r15,rax
   1477 
   1478 	ror	r13,4
   1479 	add	r12,rdx
   1480 	xor	r15,rcx
   1481 
   1482 	ror	r14,6
   1483 	xor	r13,rax
   1484 	add	r12,r15
   1485 
   1486 	mov	r15,r8
   1487 	add	r12,QWORD[rbp]
   1488 	xor	r14,r8
   1489 
   1490 	xor	r15,r9
   1491 	ror	r13,14
   1492 	mov	rdx,r9
   1493 
   1494 	and	rdi,r15
   1495 	ror	r14,28
   1496 	add	r12,r13
   1497 
   1498 	xor	rdx,rdi
   1499 	add	r11,r12
   1500 	add	rdx,r12
   1501 
   1502 	lea	rbp,[8+rbp]
   1503 	mov	r13,QWORD[112+rsp]
   1504 	mov	rdi,QWORD[88+rsp]
   1505 
   1506 	mov	r12,r13
   1507 	ror	r13,7
   1508 	add	rdx,r14
   1509 	mov	r14,rdi
   1510 	ror	rdi,42
   1511 
   1512 	xor	r13,r12
   1513 	shr	r12,7
   1514 	ror	r13,1
   1515 	xor	rdi,r14
   1516 	shr	r14,6
   1517 
   1518 	ror	rdi,19
   1519 	xor	r12,r13
   1520 	xor	rdi,r14
   1521 	add	r12,QWORD[48+rsp]
   1522 
   1523 	add	r12,QWORD[104+rsp]
   1524 	mov	r13,r11
   1525 	add	r12,rdi
   1526 	mov	r14,rdx
   1527 	ror	r13,23
   1528 	mov	rdi,rax
   1529 
   1530 	xor	r13,r11
   1531 	ror	r14,5
   1532 	xor	rdi,rbx
   1533 
   1534 	mov	QWORD[104+rsp],r12
   1535 	xor	r14,rdx
   1536 	and	rdi,r11
   1537 
   1538 	ror	r13,4
   1539 	add	r12,rcx
   1540 	xor	rdi,rbx
   1541 
   1542 	ror	r14,6
   1543 	xor	r13,r11
   1544 	add	r12,rdi
   1545 
   1546 	mov	rdi,rdx
   1547 	add	r12,QWORD[rbp]
   1548 	xor	r14,rdx
   1549 
   1550 	xor	rdi,r8
   1551 	ror	r13,14
   1552 	mov	rcx,r8
   1553 
   1554 	and	r15,rdi
   1555 	ror	r14,28
   1556 	add	r12,r13
   1557 
   1558 	xor	rcx,r15
   1559 	add	r10,r12
   1560 	add	rcx,r12
   1561 
   1562 	lea	rbp,[24+rbp]
   1563 	mov	r13,QWORD[120+rsp]
   1564 	mov	r15,QWORD[96+rsp]
   1565 
   1566 	mov	r12,r13
   1567 	ror	r13,7
   1568 	add	rcx,r14
   1569 	mov	r14,r15
   1570 	ror	r15,42
   1571 
   1572 	xor	r13,r12
   1573 	shr	r12,7
   1574 	ror	r13,1
   1575 	xor	r15,r14
   1576 	shr	r14,6
   1577 
   1578 	ror	r15,19
   1579 	xor	r12,r13
   1580 	xor	r15,r14
   1581 	add	r12,QWORD[56+rsp]
   1582 
   1583 	add	r12,QWORD[112+rsp]
   1584 	mov	r13,r10
   1585 	add	r12,r15
   1586 	mov	r14,rcx
   1587 	ror	r13,23
   1588 	mov	r15,r11
   1589 
   1590 	xor	r13,r10
   1591 	ror	r14,5
   1592 	xor	r15,rax
   1593 
   1594 	mov	QWORD[112+rsp],r12
   1595 	xor	r14,rcx
   1596 	and	r15,r10
   1597 
   1598 	ror	r13,4
   1599 	add	r12,rbx
   1600 	xor	r15,rax
   1601 
   1602 	ror	r14,6
   1603 	xor	r13,r10
   1604 	add	r12,r15
   1605 
   1606 	mov	r15,rcx
   1607 	add	r12,QWORD[rbp]
   1608 	xor	r14,rcx
   1609 
   1610 	xor	r15,rdx
   1611 	ror	r13,14
   1612 	mov	rbx,rdx
   1613 
   1614 	and	rdi,r15
   1615 	ror	r14,28
   1616 	add	r12,r13
   1617 
   1618 	xor	rbx,rdi
   1619 	add	r9,r12
   1620 	add	rbx,r12
   1621 
   1622 	lea	rbp,[8+rbp]
   1623 	mov	r13,QWORD[rsp]
   1624 	mov	rdi,QWORD[104+rsp]
   1625 
   1626 	mov	r12,r13
   1627 	ror	r13,7
   1628 	add	rbx,r14
   1629 	mov	r14,rdi
   1630 	ror	rdi,42
   1631 
   1632 	xor	r13,r12
   1633 	shr	r12,7
   1634 	ror	r13,1
   1635 	xor	rdi,r14
   1636 	shr	r14,6
   1637 
   1638 	ror	rdi,19
   1639 	xor	r12,r13
   1640 	xor	rdi,r14
   1641 	add	r12,QWORD[64+rsp]
   1642 
   1643 	add	r12,QWORD[120+rsp]
   1644 	mov	r13,r9
   1645 	add	r12,rdi
   1646 	mov	r14,rbx
   1647 	ror	r13,23
   1648 	mov	rdi,r10
   1649 
   1650 	xor	r13,r9
   1651 	ror	r14,5
   1652 	xor	rdi,r11
   1653 
   1654 	mov	QWORD[120+rsp],r12
   1655 	xor	r14,rbx
   1656 	and	rdi,r9
   1657 
   1658 	ror	r13,4
   1659 	add	r12,rax
   1660 	xor	rdi,r11
   1661 
   1662 	ror	r14,6
   1663 	xor	r13,r9
   1664 	add	r12,rdi
   1665 
   1666 	mov	rdi,rbx
   1667 	add	r12,QWORD[rbp]
   1668 	xor	r14,rbx
   1669 
   1670 	xor	rdi,rcx
   1671 	ror	r13,14
   1672 	mov	rax,rcx
   1673 
   1674 	and	r15,rdi
   1675 	ror	r14,28
   1676 	add	r12,r13
   1677 
   1678 	xor	rax,r15
   1679 	add	r8,r12
   1680 	add	rax,r12
   1681 
   1682 	lea	rbp,[24+rbp]
   1683 	cmp	BYTE[7+rbp],0
   1684 	jnz	NEAR $L$rounds_16_xx
   1685 
   1686 	mov	rdi,QWORD[((128+0))+rsp]
   1687 	add	rax,r14
   1688 	lea	rsi,[128+rsi]
   1689 
   1690 	add	rax,QWORD[rdi]
   1691 	add	rbx,QWORD[8+rdi]
   1692 	add	rcx,QWORD[16+rdi]
   1693 	add	rdx,QWORD[24+rdi]
   1694 	add	r8,QWORD[32+rdi]
   1695 	add	r9,QWORD[40+rdi]
   1696 	add	r10,QWORD[48+rdi]
   1697 	add	r11,QWORD[56+rdi]
   1698 
   1699 	cmp	rsi,QWORD[((128+16))+rsp]
   1700 
   1701 	mov	QWORD[rdi],rax
   1702 	mov	QWORD[8+rdi],rbx
   1703 	mov	QWORD[16+rdi],rcx
   1704 	mov	QWORD[24+rdi],rdx
   1705 	mov	QWORD[32+rdi],r8
   1706 	mov	QWORD[40+rdi],r9
   1707 	mov	QWORD[48+rdi],r10
   1708 	mov	QWORD[56+rdi],r11
   1709 	jb	NEAR $L$loop
   1710 
   1711 	mov	rsi,QWORD[((128+24))+rsp]
   1712 	mov	r15,QWORD[((-48))+rsi]
   1713 	mov	r14,QWORD[((-40))+rsi]
   1714 	mov	r13,QWORD[((-32))+rsi]
   1715 	mov	r12,QWORD[((-24))+rsi]
   1716 	mov	rbp,QWORD[((-16))+rsi]
   1717 	mov	rbx,QWORD[((-8))+rsi]
   1718 	lea	rsp,[rsi]
   1719 $L$epilogue:
   1720 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
   1721 	mov	rsi,QWORD[16+rsp]
   1722 	DB	0F3h,0C3h		;repret
   1723 $L$SEH_end_sha512_block_data_order:
   1724 ALIGN	64
   1725 
   1726 K512:
   1727 	DQ	0x428a2f98d728ae22,0x7137449123ef65cd
   1728 	DQ	0x428a2f98d728ae22,0x7137449123ef65cd
   1729 	DQ	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
   1730 	DQ	0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
   1731 	DQ	0x3956c25bf348b538,0x59f111f1b605d019
   1732 	DQ	0x3956c25bf348b538,0x59f111f1b605d019
   1733 	DQ	0x923f82a4af194f9b,0xab1c5ed5da6d8118
   1734 	DQ	0x923f82a4af194f9b,0xab1c5ed5da6d8118
   1735 	DQ	0xd807aa98a3030242,0x12835b0145706fbe
   1736 	DQ	0xd807aa98a3030242,0x12835b0145706fbe
   1737 	DQ	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
   1738 	DQ	0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
   1739 	DQ	0x72be5d74f27b896f,0x80deb1fe3b1696b1
   1740 	DQ	0x72be5d74f27b896f,0x80deb1fe3b1696b1
   1741 	DQ	0x9bdc06a725c71235,0xc19bf174cf692694
   1742 	DQ	0x9bdc06a725c71235,0xc19bf174cf692694
   1743 	DQ	0xe49b69c19ef14ad2,0xefbe4786384f25e3
   1744 	DQ	0xe49b69c19ef14ad2,0xefbe4786384f25e3
   1745 	DQ	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
   1746 	DQ	0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
   1747 	DQ	0x2de92c6f592b0275,0x4a7484aa6ea6e483
   1748 	DQ	0x2de92c6f592b0275,0x4a7484aa6ea6e483
   1749 	DQ	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
   1750 	DQ	0x5cb0a9dcbd41fbd4,0x76f988da831153b5
   1751 	DQ	0x983e5152ee66dfab,0xa831c66d2db43210
   1752 	DQ	0x983e5152ee66dfab,0xa831c66d2db43210
   1753 	DQ	0xb00327c898fb213f,0xbf597fc7beef0ee4
   1754 	DQ	0xb00327c898fb213f,0xbf597fc7beef0ee4
   1755 	DQ	0xc6e00bf33da88fc2,0xd5a79147930aa725
   1756 	DQ	0xc6e00bf33da88fc2,0xd5a79147930aa725
   1757 	DQ	0x06ca6351e003826f,0x142929670a0e6e70
   1758 	DQ	0x06ca6351e003826f,0x142929670a0e6e70
   1759 	DQ	0x27b70a8546d22ffc,0x2e1b21385c26c926
   1760 	DQ	0x27b70a8546d22ffc,0x2e1b21385c26c926
   1761 	DQ	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
   1762 	DQ	0x4d2c6dfc5ac42aed,0x53380d139d95b3df
   1763 	DQ	0x650a73548baf63de,0x766a0abb3c77b2a8
   1764 	DQ	0x650a73548baf63de,0x766a0abb3c77b2a8
   1765 	DQ	0x81c2c92e47edaee6,0x92722c851482353b
   1766 	DQ	0x81c2c92e47edaee6,0x92722c851482353b
   1767 	DQ	0xa2bfe8a14cf10364,0xa81a664bbc423001
   1768 	DQ	0xa2bfe8a14cf10364,0xa81a664bbc423001
   1769 	DQ	0xc24b8b70d0f89791,0xc76c51a30654be30
   1770 	DQ	0xc24b8b70d0f89791,0xc76c51a30654be30
   1771 	DQ	0xd192e819d6ef5218,0xd69906245565a910
   1772 	DQ	0xd192e819d6ef5218,0xd69906245565a910
   1773 	DQ	0xf40e35855771202a,0x106aa07032bbd1b8
   1774 	DQ	0xf40e35855771202a,0x106aa07032bbd1b8
   1775 	DQ	0x19a4c116b8d2d0c8,0x1e376c085141ab53
   1776 	DQ	0x19a4c116b8d2d0c8,0x1e376c085141ab53
   1777 	DQ	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
   1778 	DQ	0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
   1779 	DQ	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
   1780 	DQ	0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
   1781 	DQ	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
   1782 	DQ	0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
   1783 	DQ	0x748f82ee5defb2fc,0x78a5636f43172f60
   1784 	DQ	0x748f82ee5defb2fc,0x78a5636f43172f60
   1785 	DQ	0x84c87814a1f0ab72,0x8cc702081a6439ec
   1786 	DQ	0x84c87814a1f0ab72,0x8cc702081a6439ec
   1787 	DQ	0x90befffa23631e28,0xa4506cebde82bde9
   1788 	DQ	0x90befffa23631e28,0xa4506cebde82bde9
   1789 	DQ	0xbef9a3f7b2c67915,0xc67178f2e372532b
   1790 	DQ	0xbef9a3f7b2c67915,0xc67178f2e372532b
   1791 	DQ	0xca273eceea26619c,0xd186b8c721c0c207
   1792 	DQ	0xca273eceea26619c,0xd186b8c721c0c207
   1793 	DQ	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
   1794 	DQ	0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
   1795 	DQ	0x06f067aa72176fba,0x0a637dc5a2c898a6
   1796 	DQ	0x06f067aa72176fba,0x0a637dc5a2c898a6
   1797 	DQ	0x113f9804bef90dae,0x1b710b35131c471b
   1798 	DQ	0x113f9804bef90dae,0x1b710b35131c471b
   1799 	DQ	0x28db77f523047d84,0x32caab7b40c72493
   1800 	DQ	0x28db77f523047d84,0x32caab7b40c72493
   1801 	DQ	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
   1802 	DQ	0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
   1803 	DQ	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
   1804 	DQ	0x4cc5d4becb3e42b6,0x597f299cfc657e2a
   1805 	DQ	0x5fcb6fab3ad6faec,0x6c44198c4a475817
   1806 	DQ	0x5fcb6fab3ad6faec,0x6c44198c4a475817
   1807 
   1808 	DQ	0x0001020304050607,0x08090a0b0c0d0e0f
   1809 	DQ	0x0001020304050607,0x08090a0b0c0d0e0f
   1810 DB	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
   1811 DB	110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
   1812 DB	52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
   1813 DB	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
   1814 DB	111,114,103,62,0
   1815 
   1816 ALIGN	64
   1817 sha512_block_data_order_xop:
   1818 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
   1819 	mov	QWORD[16+rsp],rsi
   1820 	mov	rax,rsp
   1821 $L$SEH_begin_sha512_block_data_order_xop:
   1822 	mov	rdi,rcx
   1823 	mov	rsi,rdx
   1824 	mov	rdx,r8
   1825 
   1826 
   1827 $L$xop_shortcut:
   1828 	mov	rax,rsp
   1829 	push	rbx
   1830 	push	rbp
   1831 	push	r12
   1832 	push	r13
   1833 	push	r14
   1834 	push	r15
   1835 	shl	rdx,4
   1836 	sub	rsp,256
   1837 	lea	rdx,[rdx*8+rsi]
   1838 	and	rsp,-64
   1839 	mov	QWORD[((128+0))+rsp],rdi
   1840 	mov	QWORD[((128+8))+rsp],rsi
   1841 	mov	QWORD[((128+16))+rsp],rdx
   1842 	mov	QWORD[((128+24))+rsp],rax
   1843 	movaps	XMMWORD[(128+32)+rsp],xmm6
   1844 	movaps	XMMWORD[(128+48)+rsp],xmm7
   1845 	movaps	XMMWORD[(128+64)+rsp],xmm8
   1846 	movaps	XMMWORD[(128+80)+rsp],xmm9
   1847 	movaps	XMMWORD[(128+96)+rsp],xmm10
   1848 	movaps	XMMWORD[(128+112)+rsp],xmm11
   1849 $L$prologue_xop:
   1850 
   1851 	vzeroupper
   1852 	mov	rax,QWORD[rdi]
   1853 	mov	rbx,QWORD[8+rdi]
   1854 	mov	rcx,QWORD[16+rdi]
   1855 	mov	rdx,QWORD[24+rdi]
   1856 	mov	r8,QWORD[32+rdi]
   1857 	mov	r9,QWORD[40+rdi]
   1858 	mov	r10,QWORD[48+rdi]
   1859 	mov	r11,QWORD[56+rdi]
   1860 	jmp	NEAR $L$loop_xop
   1861 ALIGN	16
   1862 $L$loop_xop:
   1863 	vmovdqa	xmm11,XMMWORD[((K512+1280))]
   1864 	vmovdqu	xmm0,XMMWORD[rsi]
   1865 	lea	rbp,[((K512+128))]
   1866 	vmovdqu	xmm1,XMMWORD[16+rsi]
   1867 	vmovdqu	xmm2,XMMWORD[32+rsi]
   1868 	vpshufb	xmm0,xmm0,xmm11
   1869 	vmovdqu	xmm3,XMMWORD[48+rsi]
   1870 	vpshufb	xmm1,xmm1,xmm11
   1871 	vmovdqu	xmm4,XMMWORD[64+rsi]
   1872 	vpshufb	xmm2,xmm2,xmm11
   1873 	vmovdqu	xmm5,XMMWORD[80+rsi]
   1874 	vpshufb	xmm3,xmm3,xmm11
   1875 	vmovdqu	xmm6,XMMWORD[96+rsi]
   1876 	vpshufb	xmm4,xmm4,xmm11
   1877 	vmovdqu	xmm7,XMMWORD[112+rsi]
   1878 	vpshufb	xmm5,xmm5,xmm11
   1879 	vpaddq	xmm8,xmm0,XMMWORD[((-128))+rbp]
   1880 	vpshufb	xmm6,xmm6,xmm11
   1881 	vpaddq	xmm9,xmm1,XMMWORD[((-96))+rbp]
   1882 	vpshufb	xmm7,xmm7,xmm11
   1883 	vpaddq	xmm10,xmm2,XMMWORD[((-64))+rbp]
   1884 	vpaddq	xmm11,xmm3,XMMWORD[((-32))+rbp]
   1885 	vmovdqa	XMMWORD[rsp],xmm8
   1886 	vpaddq	xmm8,xmm4,XMMWORD[rbp]
   1887 	vmovdqa	XMMWORD[16+rsp],xmm9
   1888 	vpaddq	xmm9,xmm5,XMMWORD[32+rbp]
   1889 	vmovdqa	XMMWORD[32+rsp],xmm10
   1890 	vpaddq	xmm10,xmm6,XMMWORD[64+rbp]
   1891 	vmovdqa	XMMWORD[48+rsp],xmm11
   1892 	vpaddq	xmm11,xmm7,XMMWORD[96+rbp]
   1893 	vmovdqa	XMMWORD[64+rsp],xmm8
   1894 	mov	r14,rax
   1895 	vmovdqa	XMMWORD[80+rsp],xmm9
   1896 	mov	rdi,rbx
   1897 	vmovdqa	XMMWORD[96+rsp],xmm10
   1898 	xor	rdi,rcx
   1899 	vmovdqa	XMMWORD[112+rsp],xmm11
   1900 	mov	r13,r8
   1901 	jmp	NEAR $L$xop_00_47
   1902 
   1903 ALIGN	16
   1904 $L$xop_00_47:
   1905 	add	rbp,256
   1906 	vpalignr	xmm8,xmm1,xmm0,8
   1907 	ror	r13,23
   1908 	mov	rax,r14
   1909 	vpalignr	xmm11,xmm5,xmm4,8
   1910 	mov	r12,r9
   1911 	ror	r14,5
   1912 DB	143,72,120,195,200,56
   1913 	xor	r13,r8
   1914 	xor	r12,r10
   1915 	vpsrlq	xmm8,xmm8,7
   1916 	ror	r13,4
   1917 	xor	r14,rax
   1918 	vpaddq	xmm0,xmm0,xmm11
   1919 	and	r12,r8
   1920 	xor	r13,r8
   1921 	add	r11,QWORD[rsp]
   1922 	mov	r15,rax
   1923 DB	143,72,120,195,209,7
   1924 	xor	r12,r10
   1925 	ror	r14,6
   1926 	vpxor	xmm8,xmm8,xmm9
   1927 	xor	r15,rbx
   1928 	add	r11,r12
   1929 	ror	r13,14
   1930 	and	rdi,r15
   1931 DB	143,104,120,195,223,3
   1932 	xor	r14,rax
   1933 	add	r11,r13
   1934 	vpxor	xmm8,xmm8,xmm10
   1935 	xor	rdi,rbx
   1936 	ror	r14,28
   1937 	vpsrlq	xmm10,xmm7,6
   1938 	add	rdx,r11
   1939 	add	r11,rdi
   1940 	vpaddq	xmm0,xmm0,xmm8
   1941 	mov	r13,rdx
   1942 	add	r14,r11
   1943 DB	143,72,120,195,203,42
   1944 	ror	r13,23
   1945 	mov	r11,r14
   1946 	vpxor	xmm11,xmm11,xmm10
   1947 	mov	r12,r8
   1948 	ror	r14,5
   1949 	xor	r13,rdx
   1950 	xor	r12,r9
   1951 	vpxor	xmm11,xmm11,xmm9
   1952 	ror	r13,4
   1953 	xor	r14,r11
   1954 	and	r12,rdx
   1955 	xor	r13,rdx
   1956 	vpaddq	xmm0,xmm0,xmm11
   1957 	add	r10,QWORD[8+rsp]
   1958 	mov	rdi,r11
   1959 	xor	r12,r9
   1960 	ror	r14,6
   1961 	vpaddq	xmm10,xmm0,XMMWORD[((-128))+rbp]
   1962 	xor	rdi,rax
   1963 	add	r10,r12
   1964 	ror	r13,14
   1965 	and	r15,rdi
   1966 	xor	r14,r11
   1967 	add	r10,r13
   1968 	xor	r15,rax
   1969 	ror	r14,28
   1970 	add	rcx,r10
   1971 	add	r10,r15
   1972 	mov	r13,rcx
   1973 	add	r14,r10
   1974 	vmovdqa	XMMWORD[rsp],xmm10
   1975 	vpalignr	xmm8,xmm2,xmm1,8
   1976 	ror	r13,23
   1977 	mov	r10,r14
   1978 	vpalignr	xmm11,xmm6,xmm5,8
   1979 	mov	r12,rdx
   1980 	ror	r14,5
   1981 DB	143,72,120,195,200,56
   1982 	xor	r13,rcx
   1983 	xor	r12,r8
   1984 	vpsrlq	xmm8,xmm8,7
   1985 	ror	r13,4
   1986 	xor	r14,r10
   1987 	vpaddq	xmm1,xmm1,xmm11
   1988 	and	r12,rcx
   1989 	xor	r13,rcx
   1990 	add	r9,QWORD[16+rsp]
   1991 	mov	r15,r10
   1992 DB	143,72,120,195,209,7
   1993 	xor	r12,r8
   1994 	ror	r14,6
   1995 	vpxor	xmm8,xmm8,xmm9
   1996 	xor	r15,r11
   1997 	add	r9,r12
   1998 	ror	r13,14
   1999 	and	rdi,r15
   2000 DB	143,104,120,195,216,3
   2001 	xor	r14,r10
   2002 	add	r9,r13
   2003 	vpxor	xmm8,xmm8,xmm10
   2004 	xor	rdi,r11
   2005 	ror	r14,28
   2006 	vpsrlq	xmm10,xmm0,6
   2007 	add	rbx,r9
   2008 	add	r9,rdi
   2009 	vpaddq	xmm1,xmm1,xmm8
   2010 	mov	r13,rbx
   2011 	add	r14,r9
   2012 DB	143,72,120,195,203,42
   2013 	ror	r13,23
   2014 	mov	r9,r14
   2015 	vpxor	xmm11,xmm11,xmm10
   2016 	mov	r12,rcx
   2017 	ror	r14,5
   2018 	xor	r13,rbx
   2019 	xor	r12,rdx
   2020 	vpxor	xmm11,xmm11,xmm9
   2021 	ror	r13,4
   2022 	xor	r14,r9
   2023 	and	r12,rbx
   2024 	xor	r13,rbx
   2025 	vpaddq	xmm1,xmm1,xmm11
   2026 	add	r8,QWORD[24+rsp]
   2027 	mov	rdi,r9
   2028 	xor	r12,rdx
   2029 	ror	r14,6
   2030 	vpaddq	xmm10,xmm1,XMMWORD[((-96))+rbp]
   2031 	xor	rdi,r10
   2032 	add	r8,r12
   2033 	ror	r13,14
   2034 	and	r15,rdi
   2035 	xor	r14,r9
   2036 	add	r8,r13
   2037 	xor	r15,r10
   2038 	ror	r14,28
   2039 	add	rax,r8
   2040 	add	r8,r15
   2041 	mov	r13,rax
   2042 	add	r14,r8
   2043 	vmovdqa	XMMWORD[16+rsp],xmm10
   2044 	vpalignr	xmm8,xmm3,xmm2,8
   2045 	ror	r13,23
   2046 	mov	r8,r14
   2047 	vpalignr	xmm11,xmm7,xmm6,8
   2048 	mov	r12,rbx
   2049 	ror	r14,5
   2050 DB	143,72,120,195,200,56
   2051 	xor	r13,rax
   2052 	xor	r12,rcx
   2053 	vpsrlq	xmm8,xmm8,7
   2054 	ror	r13,4
   2055 	xor	r14,r8
   2056 	vpaddq	xmm2,xmm2,xmm11
   2057 	and	r12,rax
   2058 	xor	r13,rax
   2059 	add	rdx,QWORD[32+rsp]
   2060 	mov	r15,r8
   2061 DB	143,72,120,195,209,7
   2062 	xor	r12,rcx
   2063 	ror	r14,6
   2064 	vpxor	xmm8,xmm8,xmm9
   2065 	xor	r15,r9
   2066 	add	rdx,r12
   2067 	ror	r13,14
   2068 	and	rdi,r15
   2069 DB	143,104,120,195,217,3
   2070 	xor	r14,r8
   2071 	add	rdx,r13
   2072 	vpxor	xmm8,xmm8,xmm10
   2073 	xor	rdi,r9
   2074 	ror	r14,28
   2075 	vpsrlq	xmm10,xmm1,6
   2076 	add	r11,rdx
   2077 	add	rdx,rdi
   2078 	vpaddq	xmm2,xmm2,xmm8
   2079 	mov	r13,r11
   2080 	add	r14,rdx
   2081 DB	143,72,120,195,203,42
   2082 	ror	r13,23
   2083 	mov	rdx,r14
   2084 	vpxor	xmm11,xmm11,xmm10
   2085 	mov	r12,rax
   2086 	ror	r14,5
   2087 	xor	r13,r11
   2088 	xor	r12,rbx
   2089 	vpxor	xmm11,xmm11,xmm9
   2090 	ror	r13,4
   2091 	xor	r14,rdx
   2092 	and	r12,r11
   2093 	xor	r13,r11
   2094 	vpaddq	xmm2,xmm2,xmm11
   2095 	add	rcx,QWORD[40+rsp]
   2096 	mov	rdi,rdx
   2097 	xor	r12,rbx
   2098 	ror	r14,6
   2099 	vpaddq	xmm10,xmm2,XMMWORD[((-64))+rbp]
   2100 	xor	rdi,r8
   2101 	add	rcx,r12
   2102 	ror	r13,14
   2103 	and	r15,rdi
   2104 	xor	r14,rdx
   2105 	add	rcx,r13
   2106 	xor	r15,r8
   2107 	ror	r14,28
   2108 	add	r10,rcx
   2109 	add	rcx,r15
   2110 	mov	r13,r10
   2111 	add	r14,rcx
   2112 	vmovdqa	XMMWORD[32+rsp],xmm10
   2113 	vpalignr	xmm8,xmm4,xmm3,8
   2114 	ror	r13,23
   2115 	mov	rcx,r14
   2116 	vpalignr	xmm11,xmm0,xmm7,8
   2117 	mov	r12,r11
   2118 	ror	r14,5
   2119 DB	143,72,120,195,200,56
   2120 	xor	r13,r10
   2121 	xor	r12,rax
   2122 	vpsrlq	xmm8,xmm8,7
   2123 	ror	r13,4
   2124 	xor	r14,rcx
   2125 	vpaddq	xmm3,xmm3,xmm11
   2126 	and	r12,r10
   2127 	xor	r13,r10
   2128 	add	rbx,QWORD[48+rsp]
   2129 	mov	r15,rcx
   2130 DB	143,72,120,195,209,7
   2131 	xor	r12,rax
   2132 	ror	r14,6
   2133 	vpxor	xmm8,xmm8,xmm9
   2134 	xor	r15,rdx
   2135 	add	rbx,r12
   2136 	ror	r13,14
   2137 	and	rdi,r15
   2138 DB	143,104,120,195,218,3
   2139 	xor	r14,rcx
   2140 	add	rbx,r13
   2141 	vpxor	xmm8,xmm8,xmm10
   2142 	xor	rdi,rdx
   2143 	ror	r14,28
   2144 	vpsrlq	xmm10,xmm2,6
   2145 	add	r9,rbx
   2146 	add	rbx,rdi
   2147 	vpaddq	xmm3,xmm3,xmm8
   2148 	mov	r13,r9
   2149 	add	r14,rbx
   2150 DB	143,72,120,195,203,42
   2151 	ror	r13,23
   2152 	mov	rbx,r14
   2153 	vpxor	xmm11,xmm11,xmm10
   2154 	mov	r12,r10
   2155 	ror	r14,5
   2156 	xor	r13,r9
   2157 	xor	r12,r11
   2158 	vpxor	xmm11,xmm11,xmm9
   2159 	ror	r13,4
   2160 	xor	r14,rbx
   2161 	and	r12,r9
   2162 	xor	r13,r9
   2163 	vpaddq	xmm3,xmm3,xmm11
   2164 	add	rax,QWORD[56+rsp]
   2165 	mov	rdi,rbx
   2166 	xor	r12,r11
   2167 	ror	r14,6
   2168 	vpaddq	xmm10,xmm3,XMMWORD[((-32))+rbp]
   2169 	xor	rdi,rcx
   2170 	add	rax,r12
   2171 	ror	r13,14
   2172 	and	r15,rdi
   2173 	xor	r14,rbx
   2174 	add	rax,r13
   2175 	xor	r15,rcx
   2176 	ror	r14,28
   2177 	add	r8,rax
   2178 	add	rax,r15
   2179 	mov	r13,r8
   2180 	add	r14,rax
   2181 	vmovdqa	XMMWORD[48+rsp],xmm10
   2182 	vpalignr	xmm8,xmm5,xmm4,8
   2183 	ror	r13,23
   2184 	mov	rax,r14
   2185 	vpalignr	xmm11,xmm1,xmm0,8
   2186 	mov	r12,r9
   2187 	ror	r14,5
   2188 DB	143,72,120,195,200,56
   2189 	xor	r13,r8
   2190 	xor	r12,r10
   2191 	vpsrlq	xmm8,xmm8,7
   2192 	ror	r13,4
   2193 	xor	r14,rax
   2194 	vpaddq	xmm4,xmm4,xmm11
   2195 	and	r12,r8
   2196 	xor	r13,r8
   2197 	add	r11,QWORD[64+rsp]
   2198 	mov	r15,rax
   2199 DB	143,72,120,195,209,7
   2200 	xor	r12,r10
   2201 	ror	r14,6
   2202 	vpxor	xmm8,xmm8,xmm9
   2203 	xor	r15,rbx
   2204 	add	r11,r12
   2205 	ror	r13,14
   2206 	and	rdi,r15
   2207 DB	143,104,120,195,219,3
   2208 	xor	r14,rax
   2209 	add	r11,r13
   2210 	vpxor	xmm8,xmm8,xmm10
   2211 	xor	rdi,rbx
   2212 	ror	r14,28
   2213 	vpsrlq	xmm10,xmm3,6
   2214 	add	rdx,r11
   2215 	add	r11,rdi
   2216 	vpaddq	xmm4,xmm4,xmm8
   2217 	mov	r13,rdx
   2218 	add	r14,r11
   2219 DB	143,72,120,195,203,42
   2220 	ror	r13,23
   2221 	mov	r11,r14
   2222 	vpxor	xmm11,xmm11,xmm10
   2223 	mov	r12,r8
   2224 	ror	r14,5
   2225 	xor	r13,rdx
   2226 	xor	r12,r9
   2227 	vpxor	xmm11,xmm11,xmm9
   2228 	ror	r13,4
   2229 	xor	r14,r11
   2230 	and	r12,rdx
   2231 	xor	r13,rdx
   2232 	vpaddq	xmm4,xmm4,xmm11
   2233 	add	r10,QWORD[72+rsp]
   2234 	mov	rdi,r11
   2235 	xor	r12,r9
   2236 	ror	r14,6
   2237 	vpaddq	xmm10,xmm4,XMMWORD[rbp]
   2238 	xor	rdi,rax
   2239 	add	r10,r12
   2240 	ror	r13,14
   2241 	and	r15,rdi
   2242 	xor	r14,r11
   2243 	add	r10,r13
   2244 	xor	r15,rax
   2245 	ror	r14,28
   2246 	add	rcx,r10
   2247 	add	r10,r15
   2248 	mov	r13,rcx
   2249 	add	r14,r10
   2250 	vmovdqa	XMMWORD[64+rsp],xmm10
   2251 	vpalignr	xmm8,xmm6,xmm5,8
   2252 	ror	r13,23
   2253 	mov	r10,r14
   2254 	vpalignr	xmm11,xmm2,xmm1,8
   2255 	mov	r12,rdx
   2256 	ror	r14,5
   2257 DB	143,72,120,195,200,56
   2258 	xor	r13,rcx
   2259 	xor	r12,r8
   2260 	vpsrlq	xmm8,xmm8,7
   2261 	ror	r13,4
   2262 	xor	r14,r10
   2263 	vpaddq	xmm5,xmm5,xmm11
   2264 	and	r12,rcx
   2265 	xor	r13,rcx
   2266 	add	r9,QWORD[80+rsp]
   2267 	mov	r15,r10
   2268 DB	143,72,120,195,209,7
   2269 	xor	r12,r8
   2270 	ror	r14,6
   2271 	vpxor	xmm8,xmm8,xmm9
   2272 	xor	r15,r11
   2273 	add	r9,r12
   2274 	ror	r13,14
   2275 	and	rdi,r15
   2276 DB	143,104,120,195,220,3
   2277 	xor	r14,r10
   2278 	add	r9,r13
   2279 	vpxor	xmm8,xmm8,xmm10
   2280 	xor	rdi,r11
   2281 	ror	r14,28
   2282 	vpsrlq	xmm10,xmm4,6
   2283 	add	rbx,r9
   2284 	add	r9,rdi
   2285 	vpaddq	xmm5,xmm5,xmm8
   2286 	mov	r13,rbx
   2287 	add	r14,r9
   2288 DB	143,72,120,195,203,42
   2289 	ror	r13,23
   2290 	mov	r9,r14
   2291 	vpxor	xmm11,xmm11,xmm10
   2292 	mov	r12,rcx
   2293 	ror	r14,5
   2294 	xor	r13,rbx
   2295 	xor	r12,rdx
   2296 	vpxor	xmm11,xmm11,xmm9
   2297 	ror	r13,4
   2298 	xor	r14,r9
   2299 	and	r12,rbx
   2300 	xor	r13,rbx
   2301 	vpaddq	xmm5,xmm5,xmm11
   2302 	add	r8,QWORD[88+rsp]
   2303 	mov	rdi,r9
   2304 	xor	r12,rdx
   2305 	ror	r14,6
   2306 	vpaddq	xmm10,xmm5,XMMWORD[32+rbp]
   2307 	xor	rdi,r10
   2308 	add	r8,r12
   2309 	ror	r13,14
   2310 	and	r15,rdi
   2311 	xor	r14,r9
   2312 	add	r8,r13
   2313 	xor	r15,r10
   2314 	ror	r14,28
   2315 	add	rax,r8
   2316 	add	r8,r15
   2317 	mov	r13,rax
   2318 	add	r14,r8
   2319 	vmovdqa	XMMWORD[80+rsp],xmm10
   2320 	vpalignr	xmm8,xmm7,xmm6,8
   2321 	ror	r13,23
   2322 	mov	r8,r14
   2323 	vpalignr	xmm11,xmm3,xmm2,8
   2324 	mov	r12,rbx
   2325 	ror	r14,5
   2326 DB	143,72,120,195,200,56
   2327 	xor	r13,rax
   2328 	xor	r12,rcx
   2329 	vpsrlq	xmm8,xmm8,7
   2330 	ror	r13,4
   2331 	xor	r14,r8
   2332 	vpaddq	xmm6,xmm6,xmm11
   2333 	and	r12,rax
   2334 	xor	r13,rax
   2335 	add	rdx,QWORD[96+rsp]
   2336 	mov	r15,r8
   2337 DB	143,72,120,195,209,7
   2338 	xor	r12,rcx
   2339 	ror	r14,6
   2340 	vpxor	xmm8,xmm8,xmm9
   2341 	xor	r15,r9
   2342 	add	rdx,r12
   2343 	ror	r13,14
   2344 	and	rdi,r15
   2345 DB	143,104,120,195,221,3
   2346 	xor	r14,r8
   2347 	add	rdx,r13
   2348 	vpxor	xmm8,xmm8,xmm10
   2349 	xor	rdi,r9
   2350 	ror	r14,28
   2351 	vpsrlq	xmm10,xmm5,6
   2352 	add	r11,rdx
   2353 	add	rdx,rdi
   2354 	vpaddq	xmm6,xmm6,xmm8
   2355 	mov	r13,r11
   2356 	add	r14,rdx
   2357 DB	143,72,120,195,203,42
   2358 	ror	r13,23
   2359 	mov	rdx,r14
   2360 	vpxor	xmm11,xmm11,xmm10
   2361 	mov	r12,rax
   2362 	ror	r14,5
   2363 	xor	r13,r11
   2364 	xor	r12,rbx
   2365 	vpxor	xmm11,xmm11,xmm9
   2366 	ror	r13,4
   2367 	xor	r14,rdx
   2368 	and	r12,r11
   2369 	xor	r13,r11
   2370 	vpaddq	xmm6,xmm6,xmm11
   2371 	add	rcx,QWORD[104+rsp]
   2372 	mov	rdi,rdx
   2373 	xor	r12,rbx
   2374 	ror	r14,6
   2375 	vpaddq	xmm10,xmm6,XMMWORD[64+rbp]
   2376 	xor	rdi,r8
   2377 	add	rcx,r12
   2378 	ror	r13,14
   2379 	and	r15,rdi
   2380 	xor	r14,rdx
   2381 	add	rcx,r13
   2382 	xor	r15,r8
   2383 	ror	r14,28
   2384 	add	r10,rcx
   2385 	add	rcx,r15
   2386 	mov	r13,r10
   2387 	add	r14,rcx
   2388 	vmovdqa	XMMWORD[96+rsp],xmm10
   2389 	vpalignr	xmm8,xmm0,xmm7,8
   2390 	ror	r13,23
   2391 	mov	rcx,r14
   2392 	vpalignr	xmm11,xmm4,xmm3,8
   2393 	mov	r12,r11
   2394 	ror	r14,5
   2395 DB	143,72,120,195,200,56
   2396 	xor	r13,r10
   2397 	xor	r12,rax
   2398 	vpsrlq	xmm8,xmm8,7
   2399 	ror	r13,4
   2400 	xor	r14,rcx
   2401 	vpaddq	xmm7,xmm7,xmm11
   2402 	and	r12,r10
   2403 	xor	r13,r10
   2404 	add	rbx,QWORD[112+rsp]
   2405 	mov	r15,rcx
   2406 DB	143,72,120,195,209,7
   2407 	xor	r12,rax
   2408 	ror	r14,6
   2409 	vpxor	xmm8,xmm8,xmm9
   2410 	xor	r15,rdx
   2411 	add	rbx,r12
   2412 	ror	r13,14
   2413 	and	rdi,r15
   2414 DB	143,104,120,195,222,3
   2415 	xor	r14,rcx
   2416 	add	rbx,r13
   2417 	vpxor	xmm8,xmm8,xmm10
   2418 	xor	rdi,rdx
   2419 	ror	r14,28
   2420 	vpsrlq	xmm10,xmm6,6
   2421 	add	r9,rbx
   2422 	add	rbx,rdi
   2423 	vpaddq	xmm7,xmm7,xmm8
   2424 	mov	r13,r9
   2425 	add	r14,rbx
   2426 DB	143,72,120,195,203,42
   2427 	ror	r13,23
   2428 	mov	rbx,r14
   2429 	vpxor	xmm11,xmm11,xmm10
   2430 	mov	r12,r10
   2431 	ror	r14,5
   2432 	xor	r13,r9
   2433 	xor	r12,r11
   2434 	vpxor	xmm11,xmm11,xmm9
   2435 	ror	r13,4
   2436 	xor	r14,rbx
   2437 	and	r12,r9
   2438 	xor	r13,r9
   2439 	vpaddq	xmm7,xmm7,xmm11
   2440 	add	rax,QWORD[120+rsp]
   2441 	mov	rdi,rbx
   2442 	xor	r12,r11
   2443 	ror	r14,6
   2444 	vpaddq	xmm10,xmm7,XMMWORD[96+rbp]
   2445 	xor	rdi,rcx
   2446 	add	rax,r12
   2447 	ror	r13,14
   2448 	and	r15,rdi
   2449 	xor	r14,rbx
   2450 	add	rax,r13
   2451 	xor	r15,rcx
   2452 	ror	r14,28
   2453 	add	r8,rax
   2454 	add	rax,r15
   2455 	mov	r13,r8
   2456 	add	r14,rax
   2457 	vmovdqa	XMMWORD[112+rsp],xmm10
   2458 	cmp	BYTE[135+rbp],0
   2459 	jne	NEAR $L$xop_00_47
   2460 	ror	r13,23
   2461 	mov	rax,r14
   2462 	mov	r12,r9
   2463 	ror	r14,5
   2464 	xor	r13,r8
   2465 	xor	r12,r10
   2466 	ror	r13,4
   2467 	xor	r14,rax
   2468 	and	r12,r8
   2469 	xor	r13,r8
   2470 	add	r11,QWORD[rsp]
   2471 	mov	r15,rax
   2472 	xor	r12,r10
   2473 	ror	r14,6
   2474 	xor	r15,rbx
   2475 	add	r11,r12
   2476 	ror	r13,14
   2477 	and	rdi,r15
   2478 	xor	r14,rax
   2479 	add	r11,r13
   2480 	xor	rdi,rbx
   2481 	ror	r14,28
   2482 	add	rdx,r11
   2483 	add	r11,rdi
   2484 	mov	r13,rdx
   2485 	add	r14,r11
   2486 	ror	r13,23
   2487 	mov	r11,r14
   2488 	mov	r12,r8
   2489 	ror	r14,5
   2490 	xor	r13,rdx
   2491 	xor	r12,r9
   2492 	ror	r13,4
   2493 	xor	r14,r11
   2494 	and	r12,rdx
   2495 	xor	r13,rdx
   2496 	add	r10,QWORD[8+rsp]
   2497 	mov	rdi,r11
   2498 	xor	r12,r9
   2499 	ror	r14,6
   2500 	xor	rdi,rax
   2501 	add	r10,r12
   2502 	ror	r13,14
   2503 	and	r15,rdi
   2504 	xor	r14,r11
   2505 	add	r10,r13
   2506 	xor	r15,rax
   2507 	ror	r14,28
   2508 	add	rcx,r10
   2509 	add	r10,r15
   2510 	mov	r13,rcx
   2511 	add	r14,r10
   2512 	ror	r13,23
   2513 	mov	r10,r14
   2514 	mov	r12,rdx
   2515 	ror	r14,5
   2516 	xor	r13,rcx
   2517 	xor	r12,r8
   2518 	ror	r13,4
   2519 	xor	r14,r10
   2520 	and	r12,rcx
   2521 	xor	r13,rcx
   2522 	add	r9,QWORD[16+rsp]
   2523 	mov	r15,r10
   2524 	xor	r12,r8
   2525 	ror	r14,6
   2526 	xor	r15,r11
   2527 	add	r9,r12
   2528 	ror	r13,14
   2529 	and	rdi,r15
   2530 	xor	r14,r10
   2531 	add	r9,r13
   2532 	xor	rdi,r11
   2533 	ror	r14,28
   2534 	add	rbx,r9
   2535 	add	r9,rdi
   2536 	mov	r13,rbx
   2537 	add	r14,r9
   2538 	ror	r13,23
   2539 	mov	r9,r14
   2540 	mov	r12,rcx
   2541 	ror	r14,5
   2542 	xor	r13,rbx
   2543 	xor	r12,rdx
   2544 	ror	r13,4
   2545 	xor	r14,r9
   2546 	and	r12,rbx
   2547 	xor	r13,rbx
   2548 	add	r8,QWORD[24+rsp]
   2549 	mov	rdi,r9
   2550 	xor	r12,rdx
   2551 	ror	r14,6
   2552 	xor	rdi,r10
   2553 	add	r8,r12
   2554 	ror	r13,14
   2555 	and	r15,rdi
   2556 	xor	r14,r9
   2557 	add	r8,r13
   2558 	xor	r15,r10
   2559 	ror	r14,28
   2560 	add	rax,r8
   2561 	add	r8,r15
   2562 	mov	r13,rax
   2563 	add	r14,r8
   2564 	ror	r13,23
   2565 	mov	r8,r14
   2566 	mov	r12,rbx
   2567 	ror	r14,5
   2568 	xor	r13,rax
   2569 	xor	r12,rcx
   2570 	ror	r13,4
   2571 	xor	r14,r8
   2572 	and	r12,rax
   2573 	xor	r13,rax
   2574 	add	rdx,QWORD[32+rsp]
   2575 	mov	r15,r8
   2576 	xor	r12,rcx
   2577 	ror	r14,6
   2578 	xor	r15,r9
   2579 	add	rdx,r12
   2580 	ror	r13,14
   2581 	and	rdi,r15
   2582 	xor	r14,r8
   2583 	add	rdx,r13
   2584 	xor	rdi,r9
   2585 	ror	r14,28
   2586 	add	r11,rdx
   2587 	add	rdx,rdi
   2588 	mov	r13,r11
   2589 	add	r14,rdx
   2590 	ror	r13,23
   2591 	mov	rdx,r14
   2592 	mov	r12,rax
   2593 	ror	r14,5
   2594 	xor	r13,r11
   2595 	xor	r12,rbx
   2596 	ror	r13,4
   2597 	xor	r14,rdx
   2598 	and	r12,r11
   2599 	xor	r13,r11
   2600 	add	rcx,QWORD[40+rsp]
   2601 	mov	rdi,rdx
   2602 	xor	r12,rbx
   2603 	ror	r14,6
   2604 	xor	rdi,r8
   2605 	add	rcx,r12
   2606 	ror	r13,14
   2607 	and	r15,rdi
   2608 	xor	r14,rdx
   2609 	add	rcx,r13
   2610 	xor	r15,r8
   2611 	ror	r14,28
   2612 	add	r10,rcx
   2613 	add	rcx,r15
   2614 	mov	r13,r10
   2615 	add	r14,rcx
   2616 	ror	r13,23
   2617 	mov	rcx,r14
   2618 	mov	r12,r11
   2619 	ror	r14,5
   2620 	xor	r13,r10
   2621 	xor	r12,rax
   2622 	ror	r13,4
   2623 	xor	r14,rcx
   2624 	and	r12,r10
   2625 	xor	r13,r10
   2626 	add	rbx,QWORD[48+rsp]
   2627 	mov	r15,rcx
   2628 	xor	r12,rax
   2629 	ror	r14,6
   2630 	xor	r15,rdx
   2631 	add	rbx,r12
   2632 	ror	r13,14
   2633 	and	rdi,r15
   2634 	xor	r14,rcx
   2635 	add	rbx,r13
   2636 	xor	rdi,rdx
   2637 	ror	r14,28
   2638 	add	r9,rbx
   2639 	add	rbx,rdi
   2640 	mov	r13,r9
   2641 	add	r14,rbx
   2642 	ror	r13,23
   2643 	mov	rbx,r14
   2644 	mov	r12,r10
   2645 	ror	r14,5
   2646 	xor	r13,r9
   2647 	xor	r12,r11
   2648 	ror	r13,4
   2649 	xor	r14,rbx
   2650 	and	r12,r9
   2651 	xor	r13,r9
   2652 	add	rax,QWORD[56+rsp]
   2653 	mov	rdi,rbx
   2654 	xor	r12,r11
   2655 	ror	r14,6
   2656 	xor	rdi,rcx
   2657 	add	rax,r12
   2658 	ror	r13,14
   2659 	and	r15,rdi
   2660 	xor	r14,rbx
   2661 	add	rax,r13
   2662 	xor	r15,rcx
   2663 	ror	r14,28
   2664 	add	r8,rax
   2665 	add	rax,r15
   2666 	mov	r13,r8
   2667 	add	r14,rax
   2668 	ror	r13,23
   2669 	mov	rax,r14
   2670 	mov	r12,r9
   2671 	ror	r14,5
   2672 	xor	r13,r8
   2673 	xor	r12,r10
   2674 	ror	r13,4
   2675 	xor	r14,rax
   2676 	and	r12,r8
   2677 	xor	r13,r8
   2678 	add	r11,QWORD[64+rsp]
   2679 	mov	r15,rax
   2680 	xor	r12,r10
   2681 	ror	r14,6
   2682 	xor	r15,rbx
   2683 	add	r11,r12
   2684 	ror	r13,14
   2685 	and	rdi,r15
   2686 	xor	r14,rax
   2687 	add	r11,r13
   2688 	xor	rdi,rbx
   2689 	ror	r14,28
   2690 	add	rdx,r11
   2691 	add	r11,rdi
   2692 	mov	r13,rdx
   2693 	add	r14,r11
   2694 	ror	r13,23
   2695 	mov	r11,r14
   2696 	mov	r12,r8
   2697 	ror	r14,5
   2698 	xor	r13,rdx
   2699 	xor	r12,r9
   2700 	ror	r13,4
   2701 	xor	r14,r11
   2702 	and	r12,rdx
   2703 	xor	r13,rdx
   2704 	add	r10,QWORD[72+rsp]
   2705 	mov	rdi,r11
   2706 	xor	r12,r9
   2707 	ror	r14,6
   2708 	xor	rdi,rax
   2709 	add	r10,r12
   2710 	ror	r13,14
   2711 	and	r15,rdi
   2712 	xor	r14,r11
   2713 	add	r10,r13
   2714 	xor	r15,rax
   2715 	ror	r14,28
   2716 	add	rcx,r10
   2717 	add	r10,r15
   2718 	mov	r13,rcx
   2719 	add	r14,r10
   2720 	ror	r13,23
   2721 	mov	r10,r14
   2722 	mov	r12,rdx
   2723 	ror	r14,5
   2724 	xor	r13,rcx
   2725 	xor	r12,r8
   2726 	ror	r13,4
   2727 	xor	r14,r10
   2728 	and	r12,rcx
   2729 	xor	r13,rcx
   2730 	add	r9,QWORD[80+rsp]
   2731 	mov	r15,r10
   2732 	xor	r12,r8
   2733 	ror	r14,6
   2734 	xor	r15,r11
   2735 	add	r9,r12
   2736 	ror	r13,14
   2737 	and	rdi,r15
   2738 	xor	r14,r10
   2739 	add	r9,r13
   2740 	xor	rdi,r11
   2741 	ror	r14,28
   2742 	add	rbx,r9
   2743 	add	r9,rdi
   2744 	mov	r13,rbx
   2745 	add	r14,r9
   2746 	ror	r13,23
   2747 	mov	r9,r14
   2748 	mov	r12,rcx
   2749 	ror	r14,5
   2750 	xor	r13,rbx
   2751 	xor	r12,rdx
   2752 	ror	r13,4
   2753 	xor	r14,r9
   2754 	and	r12,rbx
   2755 	xor	r13,rbx
   2756 	add	r8,QWORD[88+rsp]
   2757 	mov	rdi,r9
   2758 	xor	r12,rdx
   2759 	ror	r14,6
   2760 	xor	rdi,r10
   2761 	add	r8,r12
   2762 	ror	r13,14
   2763 	and	r15,rdi
   2764 	xor	r14,r9
   2765 	add	r8,r13
   2766 	xor	r15,r10
   2767 	ror	r14,28
   2768 	add	rax,r8
   2769 	add	r8,r15
   2770 	mov	r13,rax
   2771 	add	r14,r8
   2772 	ror	r13,23
   2773 	mov	r8,r14
   2774 	mov	r12,rbx
   2775 	ror	r14,5
   2776 	xor	r13,rax
   2777 	xor	r12,rcx
   2778 	ror	r13,4
   2779 	xor	r14,r8
   2780 	and	r12,rax
   2781 	xor	r13,rax
   2782 	add	rdx,QWORD[96+rsp]
   2783 	mov	r15,r8
   2784 	xor	r12,rcx
   2785 	ror	r14,6
   2786 	xor	r15,r9
   2787 	add	rdx,r12
   2788 	ror	r13,14
   2789 	and	rdi,r15
   2790 	xor	r14,r8
   2791 	add	rdx,r13
   2792 	xor	rdi,r9
   2793 	ror	r14,28
   2794 	add	r11,rdx
   2795 	add	rdx,rdi
   2796 	mov	r13,r11
   2797 	add	r14,rdx
   2798 	ror	r13,23
   2799 	mov	rdx,r14
   2800 	mov	r12,rax
   2801 	ror	r14,5
   2802 	xor	r13,r11
   2803 	xor	r12,rbx
   2804 	ror	r13,4
   2805 	xor	r14,rdx
   2806 	and	r12,r11
   2807 	xor	r13,r11
   2808 	add	rcx,QWORD[104+rsp]
   2809 	mov	rdi,rdx
   2810 	xor	r12,rbx
   2811 	ror	r14,6
   2812 	xor	rdi,r8
   2813 	add	rcx,r12
   2814 	ror	r13,14
   2815 	and	r15,rdi
   2816 	xor	r14,rdx
   2817 	add	rcx,r13
   2818 	xor	r15,r8
   2819 	ror	r14,28
   2820 	add	r10,rcx
   2821 	add	rcx,r15
   2822 	mov	r13,r10
   2823 	add	r14,rcx
   2824 	ror	r13,23
   2825 	mov	rcx,r14
   2826 	mov	r12,r11
   2827 	ror	r14,5
   2828 	xor	r13,r10
   2829 	xor	r12,rax
   2830 	ror	r13,4
   2831 	xor	r14,rcx
   2832 	and	r12,r10
   2833 	xor	r13,r10
   2834 	add	rbx,QWORD[112+rsp]
   2835 	mov	r15,rcx
   2836 	xor	r12,rax
   2837 	ror	r14,6
   2838 	xor	r15,rdx
   2839 	add	rbx,r12
   2840 	ror	r13,14
   2841 	and	rdi,r15
   2842 	xor	r14,rcx
   2843 	add	rbx,r13
   2844 	xor	rdi,rdx
   2845 	ror	r14,28
   2846 	add	r9,rbx
   2847 	add	rbx,rdi
   2848 	mov	r13,r9
   2849 	add	r14,rbx
   2850 	ror	r13,23
   2851 	mov	rbx,r14
   2852 	mov	r12,r10
   2853 	ror	r14,5
   2854 	xor	r13,r9
   2855 	xor	r12,r11
   2856 	ror	r13,4
   2857 	xor	r14,rbx
   2858 	and	r12,r9
   2859 	xor	r13,r9
   2860 	add	rax,QWORD[120+rsp]
   2861 	mov	rdi,rbx
   2862 	xor	r12,r11
   2863 	ror	r14,6
   2864 	xor	rdi,rcx
   2865 	add	rax,r12
   2866 	ror	r13,14
   2867 	and	r15,rdi
   2868 	xor	r14,rbx
   2869 	add	rax,r13
   2870 	xor	r15,rcx
   2871 	ror	r14,28
   2872 	add	r8,rax
   2873 	add	rax,r15
   2874 	mov	r13,r8
   2875 	add	r14,rax
   2876 	mov	rdi,QWORD[((128+0))+rsp]
   2877 	mov	rax,r14
   2878 
   2879 	add	rax,QWORD[rdi]
   2880 	lea	rsi,[128+rsi]
   2881 	add	rbx,QWORD[8+rdi]
   2882 	add	rcx,QWORD[16+rdi]
   2883 	add	rdx,QWORD[24+rdi]
   2884 	add	r8,QWORD[32+rdi]
   2885 	add	r9,QWORD[40+rdi]
   2886 	add	r10,QWORD[48+rdi]
   2887 	add	r11,QWORD[56+rdi]
   2888 
   2889 	cmp	rsi,QWORD[((128+16))+rsp]
   2890 
   2891 	mov	QWORD[rdi],rax
   2892 	mov	QWORD[8+rdi],rbx
   2893 	mov	QWORD[16+rdi],rcx
   2894 	mov	QWORD[24+rdi],rdx
   2895 	mov	QWORD[32+rdi],r8
   2896 	mov	QWORD[40+rdi],r9
   2897 	mov	QWORD[48+rdi],r10
   2898 	mov	QWORD[56+rdi],r11
   2899 	jb	NEAR $L$loop_xop
   2900 
   2901 	mov	rsi,QWORD[((128+24))+rsp]
   2902 	vzeroupper
   2903 	movaps	xmm6,XMMWORD[((128+32))+rsp]
   2904 	movaps	xmm7,XMMWORD[((128+48))+rsp]
   2905 	movaps	xmm8,XMMWORD[((128+64))+rsp]
   2906 	movaps	xmm9,XMMWORD[((128+80))+rsp]
   2907 	movaps	xmm10,XMMWORD[((128+96))+rsp]
   2908 	movaps	xmm11,XMMWORD[((128+112))+rsp]
   2909 	mov	r15,QWORD[((-48))+rsi]
   2910 	mov	r14,QWORD[((-40))+rsi]
   2911 	mov	r13,QWORD[((-32))+rsi]
   2912 	mov	r12,QWORD[((-24))+rsi]
   2913 	mov	rbp,QWORD[((-16))+rsi]
   2914 	mov	rbx,QWORD[((-8))+rsi]
   2915 	lea	rsp,[rsi]
   2916 $L$epilogue_xop:
   2917 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
   2918 	mov	rsi,QWORD[16+rsp]
   2919 	DB	0F3h,0C3h		;repret
   2920 $L$SEH_end_sha512_block_data_order_xop:
   2921 
   2922 ALIGN	64
   2923 sha512_block_data_order_avx:
   2924 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
   2925 	mov	QWORD[16+rsp],rsi
   2926 	mov	rax,rsp
   2927 $L$SEH_begin_sha512_block_data_order_avx:
   2928 	mov	rdi,rcx
   2929 	mov	rsi,rdx
   2930 	mov	rdx,r8
   2931 
   2932 
   2933 $L$avx_shortcut:
   2934 	mov	rax,rsp
   2935 	push	rbx
   2936 	push	rbp
   2937 	push	r12
   2938 	push	r13
   2939 	push	r14
   2940 	push	r15
   2941 	shl	rdx,4
   2942 	sub	rsp,256
   2943 	lea	rdx,[rdx*8+rsi]
   2944 	and	rsp,-64
   2945 	mov	QWORD[((128+0))+rsp],rdi
   2946 	mov	QWORD[((128+8))+rsp],rsi
   2947 	mov	QWORD[((128+16))+rsp],rdx
   2948 	mov	QWORD[((128+24))+rsp],rax
   2949 	movaps	XMMWORD[(128+32)+rsp],xmm6
   2950 	movaps	XMMWORD[(128+48)+rsp],xmm7
   2951 	movaps	XMMWORD[(128+64)+rsp],xmm8
   2952 	movaps	XMMWORD[(128+80)+rsp],xmm9
   2953 	movaps	XMMWORD[(128+96)+rsp],xmm10
   2954 	movaps	XMMWORD[(128+112)+rsp],xmm11
   2955 $L$prologue_avx:
   2956 
   2957 	vzeroupper
   2958 	mov	rax,QWORD[rdi]
   2959 	mov	rbx,QWORD[8+rdi]
   2960 	mov	rcx,QWORD[16+rdi]
   2961 	mov	rdx,QWORD[24+rdi]
   2962 	mov	r8,QWORD[32+rdi]
   2963 	mov	r9,QWORD[40+rdi]
   2964 	mov	r10,QWORD[48+rdi]
   2965 	mov	r11,QWORD[56+rdi]
   2966 	jmp	NEAR $L$loop_avx
   2967 ALIGN	16
   2968 $L$loop_avx:
   2969 	vmovdqa	xmm11,XMMWORD[((K512+1280))]
   2970 	vmovdqu	xmm0,XMMWORD[rsi]
   2971 	lea	rbp,[((K512+128))]
   2972 	vmovdqu	xmm1,XMMWORD[16+rsi]
   2973 	vmovdqu	xmm2,XMMWORD[32+rsi]
   2974 	vpshufb	xmm0,xmm0,xmm11
   2975 	vmovdqu	xmm3,XMMWORD[48+rsi]
   2976 	vpshufb	xmm1,xmm1,xmm11
   2977 	vmovdqu	xmm4,XMMWORD[64+rsi]
   2978 	vpshufb	xmm2,xmm2,xmm11
   2979 	vmovdqu	xmm5,XMMWORD[80+rsi]
   2980 	vpshufb	xmm3,xmm3,xmm11
   2981 	vmovdqu	xmm6,XMMWORD[96+rsi]
   2982 	vpshufb	xmm4,xmm4,xmm11
   2983 	vmovdqu	xmm7,XMMWORD[112+rsi]
   2984 	vpshufb	xmm5,xmm5,xmm11
   2985 	vpaddq	xmm8,xmm0,XMMWORD[((-128))+rbp]
   2986 	vpshufb	xmm6,xmm6,xmm11
   2987 	vpaddq	xmm9,xmm1,XMMWORD[((-96))+rbp]
   2988 	vpshufb	xmm7,xmm7,xmm11
   2989 	vpaddq	xmm10,xmm2,XMMWORD[((-64))+rbp]
   2990 	vpaddq	xmm11,xmm3,XMMWORD[((-32))+rbp]
   2991 	vmovdqa	XMMWORD[rsp],xmm8
   2992 	vpaddq	xmm8,xmm4,XMMWORD[rbp]
   2993 	vmovdqa	XMMWORD[16+rsp],xmm9
   2994 	vpaddq	xmm9,xmm5,XMMWORD[32+rbp]
   2995 	vmovdqa	XMMWORD[32+rsp],xmm10
   2996 	vpaddq	xmm10,xmm6,XMMWORD[64+rbp]
   2997 	vmovdqa	XMMWORD[48+rsp],xmm11
   2998 	vpaddq	xmm11,xmm7,XMMWORD[96+rbp]
   2999 	vmovdqa	XMMWORD[64+rsp],xmm8
   3000 	mov	r14,rax
   3001 	vmovdqa	XMMWORD[80+rsp],xmm9
   3002 	mov	rdi,rbx
   3003 	vmovdqa	XMMWORD[96+rsp],xmm10
   3004 	xor	rdi,rcx
   3005 	vmovdqa	XMMWORD[112+rsp],xmm11
   3006 	mov	r13,r8
   3007 	jmp	NEAR $L$avx_00_47
   3008 
   3009 ALIGN	16
   3010 $L$avx_00_47:
   3011 	add	rbp,256
   3012 	vpalignr	xmm8,xmm1,xmm0,8
   3013 	shrd	r13,r13,23
   3014 	mov	rax,r14
   3015 	vpalignr	xmm11,xmm5,xmm4,8
   3016 	mov	r12,r9
   3017 	shrd	r14,r14,5
   3018 	vpsrlq	xmm10,xmm8,1
   3019 	xor	r13,r8
   3020 	xor	r12,r10
   3021 	vpaddq	xmm0,xmm0,xmm11
   3022 	shrd	r13,r13,4
   3023 	xor	r14,rax
   3024 	vpsrlq	xmm11,xmm8,7
   3025 	and	r12,r8
   3026 	xor	r13,r8
   3027 	vpsllq	xmm9,xmm8,56
   3028 	add	r11,QWORD[rsp]
   3029 	mov	r15,rax
   3030 	vpxor	xmm8,xmm11,xmm10
   3031 	xor	r12,r10
   3032 	shrd	r14,r14,6
   3033 	vpsrlq	xmm10,xmm10,7
   3034 	xor	r15,rbx
   3035 	add	r11,r12
   3036 	vpxor	xmm8,xmm8,xmm9
   3037 	shrd	r13,r13,14
   3038 	and	rdi,r15
   3039 	vpsllq	xmm9,xmm9,7
   3040 	xor	r14,rax
   3041 	add	r11,r13
   3042 	vpxor	xmm8,xmm8,xmm10
   3043 	xor	rdi,rbx
   3044 	shrd	r14,r14,28
   3045 	vpsrlq	xmm11,xmm7,6
   3046 	add	rdx,r11
   3047 	add	r11,rdi
   3048 	vpxor	xmm8,xmm8,xmm9
   3049 	mov	r13,rdx
   3050 	add	r14,r11
   3051 	vpsllq	xmm10,xmm7,3
   3052 	shrd	r13,r13,23
   3053 	mov	r11,r14
   3054 	vpaddq	xmm0,xmm0,xmm8
   3055 	mov	r12,r8
   3056 	shrd	r14,r14,5
   3057 	vpsrlq	xmm9,xmm7,19
   3058 	xor	r13,rdx
   3059 	xor	r12,r9
   3060 	vpxor	xmm11,xmm11,xmm10
   3061 	shrd	r13,r13,4
   3062 	xor	r14,r11
   3063 	vpsllq	xmm10,xmm10,42
   3064 	and	r12,rdx
   3065 	xor	r13,rdx
   3066 	vpxor	xmm11,xmm11,xmm9
   3067 	add	r10,QWORD[8+rsp]
   3068 	mov	rdi,r11
   3069 	vpsrlq	xmm9,xmm9,42
   3070 	xor	r12,r9
   3071 	shrd	r14,r14,6
   3072 	vpxor	xmm11,xmm11,xmm10
   3073 	xor	rdi,rax
   3074 	add	r10,r12
   3075 	vpxor	xmm11,xmm11,xmm9
   3076 	shrd	r13,r13,14
   3077 	and	r15,rdi
   3078 	vpaddq	xmm0,xmm0,xmm11
   3079 	xor	r14,r11
   3080 	add	r10,r13
   3081 	vpaddq	xmm10,xmm0,XMMWORD[((-128))+rbp]
   3082 	xor	r15,rax
   3083 	shrd	r14,r14,28
   3084 	add	rcx,r10
   3085 	add	r10,r15
   3086 	mov	r13,rcx
   3087 	add	r14,r10
   3088 	vmovdqa	XMMWORD[rsp],xmm10
   3089 	vpalignr	xmm8,xmm2,xmm1,8
   3090 	shrd	r13,r13,23
   3091 	mov	r10,r14
   3092 	vpalignr	xmm11,xmm6,xmm5,8
   3093 	mov	r12,rdx
   3094 	shrd	r14,r14,5
   3095 	vpsrlq	xmm10,xmm8,1
   3096 	xor	r13,rcx
   3097 	xor	r12,r8
   3098 	vpaddq	xmm1,xmm1,xmm11
   3099 	shrd	r13,r13,4
   3100 	xor	r14,r10
   3101 	vpsrlq	xmm11,xmm8,7
   3102 	and	r12,rcx
   3103 	xor	r13,rcx
   3104 	vpsllq	xmm9,xmm8,56
   3105 	add	r9,QWORD[16+rsp]
   3106 	mov	r15,r10
   3107 	vpxor	xmm8,xmm11,xmm10
   3108 	xor	r12,r8
   3109 	shrd	r14,r14,6
   3110 	vpsrlq	xmm10,xmm10,7
   3111 	xor	r15,r11
   3112 	add	r9,r12
   3113 	vpxor	xmm8,xmm8,xmm9
   3114 	shrd	r13,r13,14
   3115 	and	rdi,r15
   3116 	vpsllq	xmm9,xmm9,7
   3117 	xor	r14,r10
   3118 	add	r9,r13
   3119 	vpxor	xmm8,xmm8,xmm10
   3120 	xor	rdi,r11
   3121 	shrd	r14,r14,28
   3122 	vpsrlq	xmm11,xmm0,6
   3123 	add	rbx,r9
   3124 	add	r9,rdi
   3125 	vpxor	xmm8,xmm8,xmm9
   3126 	mov	r13,rbx
   3127 	add	r14,r9
   3128 	vpsllq	xmm10,xmm0,3
   3129 	shrd	r13,r13,23
   3130 	mov	r9,r14
   3131 	vpaddq	xmm1,xmm1,xmm8
   3132 	mov	r12,rcx
   3133 	shrd	r14,r14,5
   3134 	vpsrlq	xmm9,xmm0,19
   3135 	xor	r13,rbx
   3136 	xor	r12,rdx
   3137 	vpxor	xmm11,xmm11,xmm10
   3138 	shrd	r13,r13,4
   3139 	xor	r14,r9
   3140 	vpsllq	xmm10,xmm10,42
   3141 	and	r12,rbx
   3142 	xor	r13,rbx
   3143 	vpxor	xmm11,xmm11,xmm9
   3144 	add	r8,QWORD[24+rsp]
   3145 	mov	rdi,r9
   3146 	vpsrlq	xmm9,xmm9,42
   3147 	xor	r12,rdx
   3148 	shrd	r14,r14,6
   3149 	vpxor	xmm11,xmm11,xmm10
   3150 	xor	rdi,r10
   3151 	add	r8,r12
   3152 	vpxor	xmm11,xmm11,xmm9
   3153 	shrd	r13,r13,14
   3154 	and	r15,rdi
   3155 	vpaddq	xmm1,xmm1,xmm11
   3156 	xor	r14,r9
   3157 	add	r8,r13
   3158 	vpaddq	xmm10,xmm1,XMMWORD[((-96))+rbp]
   3159 	xor	r15,r10
   3160 	shrd	r14,r14,28
   3161 	add	rax,r8
   3162 	add	r8,r15
   3163 	mov	r13,rax
   3164 	add	r14,r8
   3165 	vmovdqa	XMMWORD[16+rsp],xmm10
   3166 	vpalignr	xmm8,xmm3,xmm2,8
   3167 	shrd	r13,r13,23
   3168 	mov	r8,r14
   3169 	vpalignr	xmm11,xmm7,xmm6,8
   3170 	mov	r12,rbx
   3171 	shrd	r14,r14,5
   3172 	vpsrlq	xmm10,xmm8,1
   3173 	xor	r13,rax
   3174 	xor	r12,rcx
   3175 	vpaddq	xmm2,xmm2,xmm11
   3176 	shrd	r13,r13,4
   3177 	xor	r14,r8
   3178 	vpsrlq	xmm11,xmm8,7
   3179 	and	r12,rax
   3180 	xor	r13,rax
   3181 	vpsllq	xmm9,xmm8,56
   3182 	add	rdx,QWORD[32+rsp]
   3183 	mov	r15,r8
   3184 	vpxor	xmm8,xmm11,xmm10
   3185 	xor	r12,rcx
   3186 	shrd	r14,r14,6
   3187 	vpsrlq	xmm10,xmm10,7
   3188 	xor	r15,r9
   3189 	add	rdx,r12
   3190 	vpxor	xmm8,xmm8,xmm9
   3191 	shrd	r13,r13,14
   3192 	and	rdi,r15
   3193 	vpsllq	xmm9,xmm9,7
   3194 	xor	r14,r8
   3195 	add	rdx,r13
   3196 	vpxor	xmm8,xmm8,xmm10
   3197 	xor	rdi,r9
   3198 	shrd	r14,r14,28
   3199 	vpsrlq	xmm11,xmm1,6
   3200 	add	r11,rdx
   3201 	add	rdx,rdi
   3202 	vpxor	xmm8,xmm8,xmm9
   3203 	mov	r13,r11
   3204 	add	r14,rdx
   3205 	vpsllq	xmm10,xmm1,3
   3206 	shrd	r13,r13,23
   3207 	mov	rdx,r14
   3208 	vpaddq	xmm2,xmm2,xmm8
   3209 	mov	r12,rax
   3210 	shrd	r14,r14,5
   3211 	vpsrlq	xmm9,xmm1,19
   3212 	xor	r13,r11
   3213 	xor	r12,rbx
   3214 	vpxor	xmm11,xmm11,xmm10
   3215 	shrd	r13,r13,4
   3216 	xor	r14,rdx
   3217 	vpsllq	xmm10,xmm10,42
   3218 	and	r12,r11
   3219 	xor	r13,r11
   3220 	vpxor	xmm11,xmm11,xmm9
   3221 	add	rcx,QWORD[40+rsp]
   3222 	mov	rdi,rdx
   3223 	vpsrlq	xmm9,xmm9,42
   3224 	xor	r12,rbx
   3225 	shrd	r14,r14,6
   3226 	vpxor	xmm11,xmm11,xmm10
   3227 	xor	rdi,r8
   3228 	add	rcx,r12
   3229 	vpxor	xmm11,xmm11,xmm9
   3230 	shrd	r13,r13,14
   3231 	and	r15,rdi
   3232 	vpaddq	xmm2,xmm2,xmm11
   3233 	xor	r14,rdx
   3234 	add	rcx,r13
   3235 	vpaddq	xmm10,xmm2,XMMWORD[((-64))+rbp]
   3236 	xor	r15,r8
   3237 	shrd	r14,r14,28
   3238 	add	r10,rcx
   3239 	add	rcx,r15
   3240 	mov	r13,r10
   3241 	add	r14,rcx
   3242 	vmovdqa	XMMWORD[32+rsp],xmm10
   3243 	vpalignr	xmm8,xmm4,xmm3,8
   3244 	shrd	r13,r13,23
   3245 	mov	rcx,r14
   3246 	vpalignr	xmm11,xmm0,xmm7,8
   3247 	mov	r12,r11
   3248 	shrd	r14,r14,5
   3249 	vpsrlq	xmm10,xmm8,1
   3250 	xor	r13,r10
   3251 	xor	r12,rax
   3252 	vpaddq	xmm3,xmm3,xmm11
   3253 	shrd	r13,r13,4
   3254 	xor	r14,rcx
   3255 	vpsrlq	xmm11,xmm8,7
   3256 	and	r12,r10
   3257 	xor	r13,r10
   3258 	vpsllq	xmm9,xmm8,56
   3259 	add	rbx,QWORD[48+rsp]
   3260 	mov	r15,rcx
   3261 	vpxor	xmm8,xmm11,xmm10
   3262 	xor	r12,rax
   3263 	shrd	r14,r14,6
   3264 	vpsrlq	xmm10,xmm10,7
   3265 	xor	r15,rdx
   3266 	add	rbx,r12
   3267 	vpxor	xmm8,xmm8,xmm9
   3268 	shrd	r13,r13,14
   3269 	and	rdi,r15
   3270 	vpsllq	xmm9,xmm9,7
   3271 	xor	r14,rcx
   3272 	add	rbx,r13
   3273 	vpxor	xmm8,xmm8,xmm10
   3274 	xor	rdi,rdx
   3275 	shrd	r14,r14,28
   3276 	vpsrlq	xmm11,xmm2,6
   3277 	add	r9,rbx
   3278 	add	rbx,rdi
   3279 	vpxor	xmm8,xmm8,xmm9
   3280 	mov	r13,r9
   3281 	add	r14,rbx
   3282 	vpsllq	xmm10,xmm2,3
   3283 	shrd	r13,r13,23
   3284 	mov	rbx,r14
   3285 	vpaddq	xmm3,xmm3,xmm8
   3286 	mov	r12,r10
   3287 	shrd	r14,r14,5
   3288 	vpsrlq	xmm9,xmm2,19
   3289 	xor	r13,r9
   3290 	xor	r12,r11
   3291 	vpxor	xmm11,xmm11,xmm10
   3292 	shrd	r13,r13,4
   3293 	xor	r14,rbx
   3294 	vpsllq	xmm10,xmm10,42
   3295 	and	r12,r9
   3296 	xor	r13,r9
   3297 	vpxor	xmm11,xmm11,xmm9
   3298 	add	rax,QWORD[56+rsp]
   3299 	mov	rdi,rbx
   3300 	vpsrlq	xmm9,xmm9,42
   3301 	xor	r12,r11
   3302 	shrd	r14,r14,6
   3303 	vpxor	xmm11,xmm11,xmm10
   3304 	xor	rdi,rcx
   3305 	add	rax,r12
   3306 	vpxor	xmm11,xmm11,xmm9
   3307 	shrd	r13,r13,14
   3308 	and	r15,rdi
   3309 	vpaddq	xmm3,xmm3,xmm11
   3310 	xor	r14,rbx
   3311 	add	rax,r13
   3312 	vpaddq	xmm10,xmm3,XMMWORD[((-32))+rbp]
   3313 	xor	r15,rcx
   3314 	shrd	r14,r14,28
   3315 	add	r8,rax
   3316 	add	rax,r15
   3317 	mov	r13,r8
   3318 	add	r14,rax
   3319 	vmovdqa	XMMWORD[48+rsp],xmm10
   3320 	vpalignr	xmm8,xmm5,xmm4,8
   3321 	shrd	r13,r13,23
   3322 	mov	rax,r14
   3323 	vpalignr	xmm11,xmm1,xmm0,8
   3324 	mov	r12,r9
   3325 	shrd	r14,r14,5
   3326 	vpsrlq	xmm10,xmm8,1
   3327 	xor	r13,r8
   3328 	xor	r12,r10
   3329 	vpaddq	xmm4,xmm4,xmm11
   3330 	shrd	r13,r13,4
   3331 	xor	r14,rax
   3332 	vpsrlq	xmm11,xmm8,7
   3333 	and	r12,r8
   3334 	xor	r13,r8
   3335 	vpsllq	xmm9,xmm8,56
   3336 	add	r11,QWORD[64+rsp]
   3337 	mov	r15,rax
   3338 	vpxor	xmm8,xmm11,xmm10
   3339 	xor	r12,r10
   3340 	shrd	r14,r14,6
   3341 	vpsrlq	xmm10,xmm10,7
   3342 	xor	r15,rbx
   3343 	add	r11,r12
   3344 	vpxor	xmm8,xmm8,xmm9
   3345 	shrd	r13,r13,14
   3346 	and	rdi,r15
   3347 	vpsllq	xmm9,xmm9,7
   3348 	xor	r14,rax
   3349 	add	r11,r13
   3350 	vpxor	xmm8,xmm8,xmm10
   3351 	xor	rdi,rbx
   3352 	shrd	r14,r14,28
   3353 	vpsrlq	xmm11,xmm3,6
   3354 	add	rdx,r11
   3355 	add	r11,rdi
   3356 	vpxor	xmm8,xmm8,xmm9
   3357 	mov	r13,rdx
   3358 	add	r14,r11
   3359 	vpsllq	xmm10,xmm3,3
   3360 	shrd	r13,r13,23
   3361 	mov	r11,r14
   3362 	vpaddq	xmm4,xmm4,xmm8
   3363 	mov	r12,r8
   3364 	shrd	r14,r14,5
   3365 	vpsrlq	xmm9,xmm3,19
   3366 	xor	r13,rdx
   3367 	xor	r12,r9
   3368 	vpxor	xmm11,xmm11,xmm10
   3369 	shrd	r13,r13,4
   3370 	xor	r14,r11
   3371 	vpsllq	xmm10,xmm10,42
   3372 	and	r12,rdx
   3373 	xor	r13,rdx
   3374 	vpxor	xmm11,xmm11,xmm9
   3375 	add	r10,QWORD[72+rsp]
   3376 	mov	rdi,r11
   3377 	vpsrlq	xmm9,xmm9,42
   3378 	xor	r12,r9
   3379 	shrd	r14,r14,6
   3380 	vpxor	xmm11,xmm11,xmm10
   3381 	xor	rdi,rax
   3382 	add	r10,r12
   3383 	vpxor	xmm11,xmm11,xmm9
   3384 	shrd	r13,r13,14
   3385 	and	r15,rdi
   3386 	vpaddq	xmm4,xmm4,xmm11
   3387 	xor	r14,r11
   3388 	add	r10,r13
   3389 	vpaddq	xmm10,xmm4,XMMWORD[rbp]
   3390 	xor	r15,rax
   3391 	shrd	r14,r14,28
   3392 	add	rcx,r10
   3393 	add	r10,r15
   3394 	mov	r13,rcx
   3395 	add	r14,r10
   3396 	vmovdqa	XMMWORD[64+rsp],xmm10
   3397 	vpalignr	xmm8,xmm6,xmm5,8
   3398 	shrd	r13,r13,23
   3399 	mov	r10,r14
   3400 	vpalignr	xmm11,xmm2,xmm1,8
   3401 	mov	r12,rdx
   3402 	shrd	r14,r14,5
   3403 	vpsrlq	xmm10,xmm8,1
   3404 	xor	r13,rcx
   3405 	xor	r12,r8
   3406 	vpaddq	xmm5,xmm5,xmm11
   3407 	shrd	r13,r13,4
   3408 	xor	r14,r10
   3409 	vpsrlq	xmm11,xmm8,7
   3410 	and	r12,rcx
   3411 	xor	r13,rcx
   3412 	vpsllq	xmm9,xmm8,56
   3413 	add	r9,QWORD[80+rsp]
   3414 	mov	r15,r10
   3415 	vpxor	xmm8,xmm11,xmm10
   3416 	xor	r12,r8
   3417 	shrd	r14,r14,6
   3418 	vpsrlq	xmm10,xmm10,7
   3419 	xor	r15,r11
   3420 	add	r9,r12
   3421 	vpxor	xmm8,xmm8,xmm9
   3422 	shrd	r13,r13,14
   3423 	and	rdi,r15
   3424 	vpsllq	xmm9,xmm9,7
   3425 	xor	r14,r10
   3426 	add	r9,r13
   3427 	vpxor	xmm8,xmm8,xmm10
   3428 	xor	rdi,r11
   3429 	shrd	r14,r14,28
   3430 	vpsrlq	xmm11,xmm4,6
   3431 	add	rbx,r9
   3432 	add	r9,rdi
   3433 	vpxor	xmm8,xmm8,xmm9
   3434 	mov	r13,rbx
   3435 	add	r14,r9
   3436 	vpsllq	xmm10,xmm4,3
   3437 	shrd	r13,r13,23
   3438 	mov	r9,r14
   3439 	vpaddq	xmm5,xmm5,xmm8
   3440 	mov	r12,rcx
   3441 	shrd	r14,r14,5
   3442 	vpsrlq	xmm9,xmm4,19
   3443 	xor	r13,rbx
   3444 	xor	r12,rdx
   3445 	vpxor	xmm11,xmm11,xmm10
   3446 	shrd	r13,r13,4
   3447 	xor	r14,r9
   3448 	vpsllq	xmm10,xmm10,42
   3449 	and	r12,rbx
   3450 	xor	r13,rbx
   3451 	vpxor	xmm11,xmm11,xmm9
   3452 	add	r8,QWORD[88+rsp]
   3453 	mov	rdi,r9
   3454 	vpsrlq	xmm9,xmm9,42
   3455 	xor	r12,rdx
   3456 	shrd	r14,r14,6
   3457 	vpxor	xmm11,xmm11,xmm10
   3458 	xor	rdi,r10
   3459 	add	r8,r12
   3460 	vpxor	xmm11,xmm11,xmm9
   3461 	shrd	r13,r13,14
   3462 	and	r15,rdi
   3463 	vpaddq	xmm5,xmm5,xmm11
   3464 	xor	r14,r9
   3465 	add	r8,r13
   3466 	vpaddq	xmm10,xmm5,XMMWORD[32+rbp]
   3467 	xor	r15,r10
   3468 	shrd	r14,r14,28
   3469 	add	rax,r8
   3470 	add	r8,r15
   3471 	mov	r13,rax
   3472 	add	r14,r8
   3473 	vmovdqa	XMMWORD[80+rsp],xmm10
   3474 	vpalignr	xmm8,xmm7,xmm6,8
   3475 	shrd	r13,r13,23
   3476 	mov	r8,r14
   3477 	vpalignr	xmm11,xmm3,xmm2,8
   3478 	mov	r12,rbx
   3479 	shrd	r14,r14,5
   3480 	vpsrlq	xmm10,xmm8,1
   3481 	xor	r13,rax
   3482 	xor	r12,rcx
   3483 	vpaddq	xmm6,xmm6,xmm11
   3484 	shrd	r13,r13,4
   3485 	xor	r14,r8
   3486 	vpsrlq	xmm11,xmm8,7
   3487 	and	r12,rax
   3488 	xor	r13,rax
   3489 	vpsllq	xmm9,xmm8,56
   3490 	add	rdx,QWORD[96+rsp]
   3491 	mov	r15,r8
   3492 	vpxor	xmm8,xmm11,xmm10
   3493 	xor	r12,rcx
   3494 	shrd	r14,r14,6
   3495 	vpsrlq	xmm10,xmm10,7
   3496 	xor	r15,r9
   3497 	add	rdx,r12
   3498 	vpxor	xmm8,xmm8,xmm9
   3499 	shrd	r13,r13,14
   3500 	and	rdi,r15
   3501 	vpsllq	xmm9,xmm9,7
   3502 	xor	r14,r8
   3503 	add	rdx,r13
   3504 	vpxor	xmm8,xmm8,xmm10
   3505 	xor	rdi,r9
   3506 	shrd	r14,r14,28
   3507 	vpsrlq	xmm11,xmm5,6
   3508 	add	r11,rdx
   3509 	add	rdx,rdi
   3510 	vpxor	xmm8,xmm8,xmm9
   3511 	mov	r13,r11
   3512 	add	r14,rdx
   3513 	vpsllq	xmm10,xmm5,3
   3514 	shrd	r13,r13,23
   3515 	mov	rdx,r14
   3516 	vpaddq	xmm6,xmm6,xmm8
   3517 	mov	r12,rax
   3518 	shrd	r14,r14,5
   3519 	vpsrlq	xmm9,xmm5,19
   3520 	xor	r13,r11
   3521 	xor	r12,rbx
   3522 	vpxor	xmm11,xmm11,xmm10
   3523 	shrd	r13,r13,4
   3524 	xor	r14,rdx
   3525 	vpsllq	xmm10,xmm10,42
   3526 	and	r12,r11
   3527 	xor	r13,r11
   3528 	vpxor	xmm11,xmm11,xmm9
   3529 	add	rcx,QWORD[104+rsp]
   3530 	mov	rdi,rdx
   3531 	vpsrlq	xmm9,xmm9,42
   3532 	xor	r12,rbx
   3533 	shrd	r14,r14,6
   3534 	vpxor	xmm11,xmm11,xmm10
   3535 	xor	rdi,r8
   3536 	add	rcx,r12
   3537 	vpxor	xmm11,xmm11,xmm9
   3538 	shrd	r13,r13,14
   3539 	and	r15,rdi
   3540 	vpaddq	xmm6,xmm6,xmm11
   3541 	xor	r14,rdx
   3542 	add	rcx,r13
   3543 	vpaddq	xmm10,xmm6,XMMWORD[64+rbp]
   3544 	xor	r15,r8
   3545 	shrd	r14,r14,28
   3546 	add	r10,rcx
   3547 	add	rcx,r15
   3548 	mov	r13,r10
   3549 	add	r14,rcx
   3550 	vmovdqa	XMMWORD[96+rsp],xmm10
   3551 	vpalignr	xmm8,xmm0,xmm7,8
   3552 	shrd	r13,r13,23
   3553 	mov	rcx,r14
   3554 	vpalignr	xmm11,xmm4,xmm3,8
   3555 	mov	r12,r11
   3556 	shrd	r14,r14,5
   3557 	vpsrlq	xmm10,xmm8,1
   3558 	xor	r13,r10
   3559 	xor	r12,rax
   3560 	vpaddq	xmm7,xmm7,xmm11
   3561 	shrd	r13,r13,4
   3562 	xor	r14,rcx
   3563 	vpsrlq	xmm11,xmm8,7
   3564 	and	r12,r10
   3565 	xor	r13,r10
   3566 	vpsllq	xmm9,xmm8,56
   3567 	add	rbx,QWORD[112+rsp]
   3568 	mov	r15,rcx
   3569 	vpxor	xmm8,xmm11,xmm10
   3570 	xor	r12,rax
   3571 	shrd	r14,r14,6
   3572 	vpsrlq	xmm10,xmm10,7
   3573 	xor	r15,rdx
   3574 	add	rbx,r12
   3575 	vpxor	xmm8,xmm8,xmm9
   3576 	shrd	r13,r13,14
   3577 	and	rdi,r15
   3578 	vpsllq	xmm9,xmm9,7
   3579 	xor	r14,rcx
   3580 	add	rbx,r13
   3581 	vpxor	xmm8,xmm8,xmm10
   3582 	xor	rdi,rdx
   3583 	shrd	r14,r14,28
   3584 	vpsrlq	xmm11,xmm6,6
   3585 	add	r9,rbx
   3586 	add	rbx,rdi
   3587 	vpxor	xmm8,xmm8,xmm9
   3588 	mov	r13,r9
   3589 	add	r14,rbx
   3590 	vpsllq	xmm10,xmm6,3
   3591 	shrd	r13,r13,23
   3592 	mov	rbx,r14
   3593 	vpaddq	xmm7,xmm7,xmm8
   3594 	mov	r12,r10
   3595 	shrd	r14,r14,5
   3596 	vpsrlq	xmm9,xmm6,19
   3597 	xor	r13,r9
   3598 	xor	r12,r11
   3599 	vpxor	xmm11,xmm11,xmm10
   3600 	shrd	r13,r13,4
   3601 	xor	r14,rbx
   3602 	vpsllq	xmm10,xmm10,42
   3603 	and	r12,r9
   3604 	xor	r13,r9
   3605 	vpxor	xmm11,xmm11,xmm9
   3606 	add	rax,QWORD[120+rsp]
   3607 	mov	rdi,rbx
   3608 	vpsrlq	xmm9,xmm9,42
   3609 	xor	r12,r11
   3610 	shrd	r14,r14,6
   3611 	vpxor	xmm11,xmm11,xmm10
   3612 	xor	rdi,rcx
   3613 	add	rax,r12
   3614 	vpxor	xmm11,xmm11,xmm9
   3615 	shrd	r13,r13,14
   3616 	and	r15,rdi
   3617 	vpaddq	xmm7,xmm7,xmm11
   3618 	xor	r14,rbx
   3619 	add	rax,r13
   3620 	vpaddq	xmm10,xmm7,XMMWORD[96+rbp]
   3621 	xor	r15,rcx
   3622 	shrd	r14,r14,28
   3623 	add	r8,rax
   3624 	add	rax,r15
   3625 	mov	r13,r8
   3626 	add	r14,rax
   3627 	vmovdqa	XMMWORD[112+rsp],xmm10
   3628 	cmp	BYTE[135+rbp],0
   3629 	jne	NEAR $L$avx_00_47
   3630 	shrd	r13,r13,23
   3631 	mov	rax,r14
   3632 	mov	r12,r9
   3633 	shrd	r14,r14,5
   3634 	xor	r13,r8
   3635 	xor	r12,r10
   3636 	shrd	r13,r13,4
   3637 	xor	r14,rax
   3638 	and	r12,r8
   3639 	xor	r13,r8
   3640 	add	r11,QWORD[rsp]
   3641 	mov	r15,rax
   3642 	xor	r12,r10
   3643 	shrd	r14,r14,6
   3644 	xor	r15,rbx
   3645 	add	r11,r12
   3646 	shrd	r13,r13,14
   3647 	and	rdi,r15
   3648 	xor	r14,rax
   3649 	add	r11,r13
   3650 	xor	rdi,rbx
   3651 	shrd	r14,r14,28
   3652 	add	rdx,r11
   3653 	add	r11,rdi
   3654 	mov	r13,rdx
   3655 	add	r14,r11
   3656 	shrd	r13,r13,23
   3657 	mov	r11,r14
   3658 	mov	r12,r8
   3659 	shrd	r14,r14,5
   3660 	xor	r13,rdx
   3661 	xor	r12,r9
   3662 	shrd	r13,r13,4
   3663 	xor	r14,r11
   3664 	and	r12,rdx
   3665 	xor	r13,rdx
   3666 	add	r10,QWORD[8+rsp]
   3667 	mov	rdi,r11
   3668 	xor	r12,r9
   3669 	shrd	r14,r14,6
   3670 	xor	rdi,rax
   3671 	add	r10,r12
   3672 	shrd	r13,r13,14
   3673 	and	r15,rdi
   3674 	xor	r14,r11
   3675 	add	r10,r13
   3676 	xor	r15,rax
   3677 	shrd	r14,r14,28
   3678 	add	rcx,r10
   3679 	add	r10,r15
   3680 	mov	r13,rcx
   3681 	add	r14,r10
   3682 	shrd	r13,r13,23
   3683 	mov	r10,r14
   3684 	mov	r12,rdx
   3685 	shrd	r14,r14,5
   3686 	xor	r13,rcx
   3687 	xor	r12,r8
   3688 	shrd	r13,r13,4
   3689 	xor	r14,r10
   3690 	and	r12,rcx
   3691 	xor	r13,rcx
   3692 	add	r9,QWORD[16+rsp]
   3693 	mov	r15,r10
   3694 	xor	r12,r8
   3695 	shrd	r14,r14,6
   3696 	xor	r15,r11
   3697 	add	r9,r12
   3698 	shrd	r13,r13,14
   3699 	and	rdi,r15
   3700 	xor	r14,r10
   3701 	add	r9,r13
   3702 	xor	rdi,r11
   3703 	shrd	r14,r14,28
   3704 	add	rbx,r9
   3705 	add	r9,rdi
   3706 	mov	r13,rbx
   3707 	add	r14,r9
   3708 	shrd	r13,r13,23
   3709 	mov	r9,r14
   3710 	mov	r12,rcx
   3711 	shrd	r14,r14,5
   3712 	xor	r13,rbx
   3713 	xor	r12,rdx
   3714 	shrd	r13,r13,4
   3715 	xor	r14,r9
   3716 	and	r12,rbx
   3717 	xor	r13,rbx
   3718 	add	r8,QWORD[24+rsp]
   3719 	mov	rdi,r9
   3720 	xor	r12,rdx
   3721 	shrd	r14,r14,6
   3722 	xor	rdi,r10
   3723 	add	r8,r12
   3724 	shrd	r13,r13,14
   3725 	and	r15,rdi
   3726 	xor	r14,r9
   3727 	add	r8,r13
   3728 	xor	r15,r10
   3729 	shrd	r14,r14,28
   3730 	add	rax,r8
   3731 	add	r8,r15
   3732 	mov	r13,rax
   3733 	add	r14,r8
   3734 	shrd	r13,r13,23
   3735 	mov	r8,r14
   3736 	mov	r12,rbx
   3737 	shrd	r14,r14,5
   3738 	xor	r13,rax
   3739 	xor	r12,rcx
   3740 	shrd	r13,r13,4
   3741 	xor	r14,r8
   3742 	and	r12,rax
   3743 	xor	r13,rax
   3744 	add	rdx,QWORD[32+rsp]
   3745 	mov	r15,r8
   3746 	xor	r12,rcx
   3747 	shrd	r14,r14,6
   3748 	xor	r15,r9
   3749 	add	rdx,r12
   3750 	shrd	r13,r13,14
   3751 	and	rdi,r15
   3752 	xor	r14,r8
   3753 	add	rdx,r13
   3754 	xor	rdi,r9
   3755 	shrd	r14,r14,28
   3756 	add	r11,rdx
   3757 	add	rdx,rdi
   3758 	mov	r13,r11
   3759 	add	r14,rdx
   3760 	shrd	r13,r13,23
   3761 	mov	rdx,r14
   3762 	mov	r12,rax
   3763 	shrd	r14,r14,5
   3764 	xor	r13,r11
   3765 	xor	r12,rbx
   3766 	shrd	r13,r13,4
   3767 	xor	r14,rdx
   3768 	and	r12,r11
   3769 	xor	r13,r11
   3770 	add	rcx,QWORD[40+rsp]
   3771 	mov	rdi,rdx
   3772 	xor	r12,rbx
   3773 	shrd	r14,r14,6
   3774 	xor	rdi,r8
   3775 	add	rcx,r12
   3776 	shrd	r13,r13,14
   3777 	and	r15,rdi
   3778 	xor	r14,rdx
   3779 	add	rcx,r13
   3780 	xor	r15,r8
   3781 	shrd	r14,r14,28
   3782 	add	r10,rcx
   3783 	add	rcx,r15
   3784 	mov	r13,r10
   3785 	add	r14,rcx
   3786 	shrd	r13,r13,23
   3787 	mov	rcx,r14
   3788 	mov	r12,r11
   3789 	shrd	r14,r14,5
   3790 	xor	r13,r10
   3791 	xor	r12,rax
   3792 	shrd	r13,r13,4
   3793 	xor	r14,rcx
   3794 	and	r12,r10
   3795 	xor	r13,r10
   3796 	add	rbx,QWORD[48+rsp]
   3797 	mov	r15,rcx
   3798 	xor	r12,rax
   3799 	shrd	r14,r14,6
   3800 	xor	r15,rdx
   3801 	add	rbx,r12
   3802 	shrd	r13,r13,14
   3803 	and	rdi,r15
   3804 	xor	r14,rcx
   3805 	add	rbx,r13
   3806 	xor	rdi,rdx
   3807 	shrd	r14,r14,28
   3808 	add	r9,rbx
   3809 	add	rbx,rdi
   3810 	mov	r13,r9
   3811 	add	r14,rbx
   3812 	shrd	r13,r13,23
   3813 	mov	rbx,r14
   3814 	mov	r12,r10
   3815 	shrd	r14,r14,5
   3816 	xor	r13,r9
   3817 	xor	r12,r11
   3818 	shrd	r13,r13,4
   3819 	xor	r14,rbx
   3820 	and	r12,r9
   3821 	xor	r13,r9
   3822 	add	rax,QWORD[56+rsp]
   3823 	mov	rdi,rbx
   3824 	xor	r12,r11
   3825 	shrd	r14,r14,6
   3826 	xor	rdi,rcx
   3827 	add	rax,r12
   3828 	shrd	r13,r13,14
   3829 	and	r15,rdi
   3830 	xor	r14,rbx
   3831 	add	rax,r13
   3832 	xor	r15,rcx
   3833 	shrd	r14,r14,28
   3834 	add	r8,rax
   3835 	add	rax,r15
   3836 	mov	r13,r8
   3837 	add	r14,rax
   3838 	shrd	r13,r13,23
   3839 	mov	rax,r14
   3840 	mov	r12,r9
   3841 	shrd	r14,r14,5
   3842 	xor	r13,r8
   3843 	xor	r12,r10
   3844 	shrd	r13,r13,4
   3845 	xor	r14,rax
   3846 	and	r12,r8
   3847 	xor	r13,r8
   3848 	add	r11,QWORD[64+rsp]
   3849 	mov	r15,rax
   3850 	xor	r12,r10
   3851 	shrd	r14,r14,6
   3852 	xor	r15,rbx
   3853 	add	r11,r12
   3854 	shrd	r13,r13,14
   3855 	and	rdi,r15
   3856 	xor	r14,rax
   3857 	add	r11,r13
   3858 	xor	rdi,rbx
   3859 	shrd	r14,r14,28
   3860 	add	rdx,r11
   3861 	add	r11,rdi
   3862 	mov	r13,rdx
   3863 	add	r14,r11
   3864 	shrd	r13,r13,23
   3865 	mov	r11,r14
   3866 	mov	r12,r8
   3867 	shrd	r14,r14,5
   3868 	xor	r13,rdx
   3869 	xor	r12,r9
   3870 	shrd	r13,r13,4
   3871 	xor	r14,r11
   3872 	and	r12,rdx
   3873 	xor	r13,rdx
   3874 	add	r10,QWORD[72+rsp]
   3875 	mov	rdi,r11
   3876 	xor	r12,r9
   3877 	shrd	r14,r14,6
   3878 	xor	rdi,rax
   3879 	add	r10,r12
   3880 	shrd	r13,r13,14
   3881 	and	r15,rdi
   3882 	xor	r14,r11
   3883 	add	r10,r13
   3884 	xor	r15,rax
   3885 	shrd	r14,r14,28
   3886 	add	rcx,r10
   3887 	add	r10,r15
   3888 	mov	r13,rcx
   3889 	add	r14,r10
   3890 	shrd	r13,r13,23
   3891 	mov	r10,r14
   3892 	mov	r12,rdx
   3893 	shrd	r14,r14,5
   3894 	xor	r13,rcx
   3895 	xor	r12,r8
   3896 	shrd	r13,r13,4
   3897 	xor	r14,r10
   3898 	and	r12,rcx
   3899 	xor	r13,rcx
   3900 	add	r9,QWORD[80+rsp]
   3901 	mov	r15,r10
   3902 	xor	r12,r8
   3903 	shrd	r14,r14,6
   3904 	xor	r15,r11
   3905 	add	r9,r12
   3906 	shrd	r13,r13,14
   3907 	and	rdi,r15
   3908 	xor	r14,r10
   3909 	add	r9,r13
   3910 	xor	rdi,r11
   3911 	shrd	r14,r14,28
   3912 	add	rbx,r9
   3913 	add	r9,rdi
   3914 	mov	r13,rbx
   3915 	add	r14,r9
   3916 	shrd	r13,r13,23
   3917 	mov	r9,r14
   3918 	mov	r12,rcx
   3919 	shrd	r14,r14,5
   3920 	xor	r13,rbx
   3921 	xor	r12,rdx
   3922 	shrd	r13,r13,4
   3923 	xor	r14,r9
   3924 	and	r12,rbx
   3925 	xor	r13,rbx
   3926 	add	r8,QWORD[88+rsp]
   3927 	mov	rdi,r9
   3928 	xor	r12,rdx
   3929 	shrd	r14,r14,6
   3930 	xor	rdi,r10
   3931 	add	r8,r12
   3932 	shrd	r13,r13,14
   3933 	and	r15,rdi
   3934 	xor	r14,r9
   3935 	add	r8,r13
   3936 	xor	r15,r10
   3937 	shrd	r14,r14,28
   3938 	add	rax,r8
   3939 	add	r8,r15
   3940 	mov	r13,rax
   3941 	add	r14,r8
   3942 	shrd	r13,r13,23
   3943 	mov	r8,r14
   3944 	mov	r12,rbx
   3945 	shrd	r14,r14,5
   3946 	xor	r13,rax
   3947 	xor	r12,rcx
   3948 	shrd	r13,r13,4
   3949 	xor	r14,r8
   3950 	and	r12,rax
   3951 	xor	r13,rax
   3952 	add	rdx,QWORD[96+rsp]
   3953 	mov	r15,r8
   3954 	xor	r12,rcx
   3955 	shrd	r14,r14,6
   3956 	xor	r15,r9
   3957 	add	rdx,r12
   3958 	shrd	r13,r13,14
   3959 	and	rdi,r15
   3960 	xor	r14,r8
   3961 	add	rdx,r13
   3962 	xor	rdi,r9
   3963 	shrd	r14,r14,28
   3964 	add	r11,rdx
   3965 	add	rdx,rdi
   3966 	mov	r13,r11
   3967 	add	r14,rdx
   3968 	shrd	r13,r13,23
   3969 	mov	rdx,r14
   3970 	mov	r12,rax
   3971 	shrd	r14,r14,5
   3972 	xor	r13,r11
   3973 	xor	r12,rbx
   3974 	shrd	r13,r13,4
   3975 	xor	r14,rdx
   3976 	and	r12,r11
   3977 	xor	r13,r11
   3978 	add	rcx,QWORD[104+rsp]
   3979 	mov	rdi,rdx
   3980 	xor	r12,rbx
   3981 	shrd	r14,r14,6
   3982 	xor	rdi,r8
   3983 	add	rcx,r12
   3984 	shrd	r13,r13,14
   3985 	and	r15,rdi
   3986 	xor	r14,rdx
   3987 	add	rcx,r13
   3988 	xor	r15,r8
   3989 	shrd	r14,r14,28
   3990 	add	r10,rcx
   3991 	add	rcx,r15
   3992 	mov	r13,r10
   3993 	add	r14,rcx
   3994 	shrd	r13,r13,23
   3995 	mov	rcx,r14
   3996 	mov	r12,r11
   3997 	shrd	r14,r14,5
   3998 	xor	r13,r10
   3999 	xor	r12,rax
   4000 	shrd	r13,r13,4
   4001 	xor	r14,rcx
   4002 	and	r12,r10
   4003 	xor	r13,r10
   4004 	add	rbx,QWORD[112+rsp]
   4005 	mov	r15,rcx
   4006 	xor	r12,rax
   4007 	shrd	r14,r14,6
   4008 	xor	r15,rdx
   4009 	add	rbx,r12
   4010 	shrd	r13,r13,14
   4011 	and	rdi,r15
   4012 	xor	r14,rcx
   4013 	add	rbx,r13
   4014 	xor	rdi,rdx
   4015 	shrd	r14,r14,28
   4016 	add	r9,rbx
   4017 	add	rbx,rdi
   4018 	mov	r13,r9
   4019 	add	r14,rbx
   4020 	shrd	r13,r13,23
   4021 	mov	rbx,r14
   4022 	mov	r12,r10
   4023 	shrd	r14,r14,5
   4024 	xor	r13,r9
   4025 	xor	r12,r11
   4026 	shrd	r13,r13,4
   4027 	xor	r14,rbx
   4028 	and	r12,r9
   4029 	xor	r13,r9
   4030 	add	rax,QWORD[120+rsp]
   4031 	mov	rdi,rbx
   4032 	xor	r12,r11
   4033 	shrd	r14,r14,6
   4034 	xor	rdi,rcx
   4035 	add	rax,r12
   4036 	shrd	r13,r13,14
   4037 	and	r15,rdi
   4038 	xor	r14,rbx
   4039 	add	rax,r13
   4040 	xor	r15,rcx
   4041 	shrd	r14,r14,28
   4042 	add	r8,rax
   4043 	add	rax,r15
   4044 	mov	r13,r8
   4045 	add	r14,rax
   4046 	mov	rdi,QWORD[((128+0))+rsp]
   4047 	mov	rax,r14
   4048 
   4049 	add	rax,QWORD[rdi]
   4050 	lea	rsi,[128+rsi]
   4051 	add	rbx,QWORD[8+rdi]
   4052 	add	rcx,QWORD[16+rdi]
   4053 	add	rdx,QWORD[24+rdi]
   4054 	add	r8,QWORD[32+rdi]
   4055 	add	r9,QWORD[40+rdi]
   4056 	add	r10,QWORD[48+rdi]
   4057 	add	r11,QWORD[56+rdi]
   4058 
   4059 	cmp	rsi,QWORD[((128+16))+rsp]
   4060 
   4061 	mov	QWORD[rdi],rax
   4062 	mov	QWORD[8+rdi],rbx
   4063 	mov	QWORD[16+rdi],rcx
   4064 	mov	QWORD[24+rdi],rdx
   4065 	mov	QWORD[32+rdi],r8
   4066 	mov	QWORD[40+rdi],r9
   4067 	mov	QWORD[48+rdi],r10
   4068 	mov	QWORD[56+rdi],r11
   4069 	jb	NEAR $L$loop_avx
   4070 
   4071 	mov	rsi,QWORD[((128+24))+rsp]
   4072 	vzeroupper
   4073 	movaps	xmm6,XMMWORD[((128+32))+rsp]
   4074 	movaps	xmm7,XMMWORD[((128+48))+rsp]
   4075 	movaps	xmm8,XMMWORD[((128+64))+rsp]
   4076 	movaps	xmm9,XMMWORD[((128+80))+rsp]
   4077 	movaps	xmm10,XMMWORD[((128+96))+rsp]
   4078 	movaps	xmm11,XMMWORD[((128+112))+rsp]
   4079 	mov	r15,QWORD[((-48))+rsi]
   4080 	mov	r14,QWORD[((-40))+rsi]
   4081 	mov	r13,QWORD[((-32))+rsi]
   4082 	mov	r12,QWORD[((-24))+rsi]
   4083 	mov	rbp,QWORD[((-16))+rsi]
   4084 	mov	rbx,QWORD[((-8))+rsi]
   4085 	lea	rsp,[rsi]
   4086 $L$epilogue_avx:
   4087 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
   4088 	mov	rsi,QWORD[16+rsp]
   4089 	DB	0F3h,0C3h		;repret
   4090 $L$SEH_end_sha512_block_data_order_avx:
   4091 EXTERN	__imp_RtlVirtualUnwind
   4092 
   4093 ALIGN	16
   4094 se_handler:
   4095 	push	rsi
   4096 	push	rdi
   4097 	push	rbx
   4098 	push	rbp
   4099 	push	r12
   4100 	push	r13
   4101 	push	r14
   4102 	push	r15
   4103 	pushfq
   4104 	sub	rsp,64
   4105 
   4106 	mov	rax,QWORD[120+r8]
   4107 	mov	rbx,QWORD[248+r8]
   4108 
   4109 	mov	rsi,QWORD[8+r9]
   4110 	mov	r11,QWORD[56+r9]
   4111 
   4112 	mov	r10d,DWORD[r11]
   4113 	lea	r10,[r10*1+rsi]
   4114 	cmp	rbx,r10
   4115 	jb	NEAR $L$in_prologue
   4116 
   4117 	mov	rax,QWORD[152+r8]
   4118 
   4119 	mov	r10d,DWORD[4+r11]
   4120 	lea	r10,[r10*1+rsi]
   4121 	cmp	rbx,r10
   4122 	jae	NEAR $L$in_prologue
   4123 	mov	rsi,rax
   4124 	mov	rax,QWORD[((128+24))+rax]
   4125 
   4126 	mov	rbx,QWORD[((-8))+rax]
   4127 	mov	rbp,QWORD[((-16))+rax]
   4128 	mov	r12,QWORD[((-24))+rax]
   4129 	mov	r13,QWORD[((-32))+rax]
   4130 	mov	r14,QWORD[((-40))+rax]
   4131 	mov	r15,QWORD[((-48))+rax]
   4132 	mov	QWORD[144+r8],rbx
   4133 	mov	QWORD[160+r8],rbp
   4134 	mov	QWORD[216+r8],r12
   4135 	mov	QWORD[224+r8],r13
   4136 	mov	QWORD[232+r8],r14
   4137 	mov	QWORD[240+r8],r15
   4138 
   4139 	lea	r10,[$L$epilogue]
   4140 	cmp	rbx,r10
   4141 	jb	NEAR $L$in_prologue
   4142 
   4143 	lea	rsi,[((128+32))+rsi]
   4144 	lea	rdi,[512+r8]
   4145 	mov	ecx,12
   4146 	DD	0xa548f3fc
   4147 
   4148 $L$in_prologue:
   4149 	mov	rdi,QWORD[8+rax]
   4150 	mov	rsi,QWORD[16+rax]
   4151 	mov	QWORD[152+r8],rax
   4152 	mov	QWORD[168+r8],rsi
   4153 	mov	QWORD[176+r8],rdi
   4154 
   4155 	mov	rdi,QWORD[40+r9]
   4156 	mov	rsi,r8
   4157 	mov	ecx,154
   4158 	DD	0xa548f3fc
   4159 
   4160 	mov	rsi,r9
   4161 	xor	rcx,rcx
   4162 	mov	rdx,QWORD[8+rsi]
   4163 	mov	r8,QWORD[rsi]
   4164 	mov	r9,QWORD[16+rsi]
   4165 	mov	r10,QWORD[40+rsi]
   4166 	lea	r11,[56+rsi]
   4167 	lea	r12,[24+rsi]
   4168 	mov	QWORD[32+rsp],r10
   4169 	mov	QWORD[40+rsp],r11
   4170 	mov	QWORD[48+rsp],r12
   4171 	mov	QWORD[56+rsp],rcx
   4172 	call	QWORD[__imp_RtlVirtualUnwind]
   4173 
   4174 	mov	eax,1
   4175 	add	rsp,64
   4176 	popfq
   4177 	pop	r15
   4178 	pop	r14
   4179 	pop	r13
   4180 	pop	r12
   4181 	pop	rbp
   4182 	pop	rbx
   4183 	pop	rdi
   4184 	pop	rsi
   4185 	DB	0F3h,0C3h		;repret
   4186 
   4187 section	.pdata rdata align=4
   4188 ALIGN	4
   4189 	DD	$L$SEH_begin_sha512_block_data_order wrt ..imagebase
   4190 	DD	$L$SEH_end_sha512_block_data_order wrt ..imagebase
   4191 	DD	$L$SEH_info_sha512_block_data_order wrt ..imagebase
   4192 	DD	$L$SEH_begin_sha512_block_data_order_xop wrt ..imagebase
   4193 	DD	$L$SEH_end_sha512_block_data_order_xop wrt ..imagebase
   4194 	DD	$L$SEH_info_sha512_block_data_order_xop wrt ..imagebase
   4195 	DD	$L$SEH_begin_sha512_block_data_order_avx wrt ..imagebase
   4196 	DD	$L$SEH_end_sha512_block_data_order_avx wrt ..imagebase
   4197 	DD	$L$SEH_info_sha512_block_data_order_avx wrt ..imagebase
   4198 section	.xdata rdata align=8
   4199 ALIGN	8
   4200 $L$SEH_info_sha512_block_data_order:
   4201 DB	9,0,0,0
   4202 	DD	se_handler wrt ..imagebase
   4203 	DD	$L$prologue wrt ..imagebase,$L$epilogue wrt ..imagebase
   4204 $L$SEH_info_sha512_block_data_order_xop:
   4205 DB	9,0,0,0
   4206 	DD	se_handler wrt ..imagebase
   4207 	DD	$L$prologue_xop wrt ..imagebase,$L$epilogue_xop wrt ..imagebase
   4208 $L$SEH_info_sha512_block_data_order_avx:
   4209 DB	9,0,0,0
   4210 	DD	se_handler wrt ..imagebase
   4211 	DD	$L$prologue_avx wrt ..imagebase,$L$epilogue_avx wrt ..imagebase
   4212