Home | History | Annotate | Download | only in sha
      1 OPTION	DOTNAME
      2 .text$	SEGMENT ALIGN(256) 'CODE'
      3 
      4 EXTERN	OPENSSL_ia32cap_P:NEAR
      5 PUBLIC	sha512_block_data_order
      6 
      7 ALIGN	16
      8 sha512_block_data_order	PROC PUBLIC
      9 	mov	QWORD PTR[8+rsp],rdi	;WIN64 prologue
     10 	mov	QWORD PTR[16+rsp],rsi
     11 	mov	rax,rsp
     12 $L$SEH_begin_sha512_block_data_order::
     13 	mov	rdi,rcx
     14 	mov	rsi,rdx
     15 	mov	rdx,r8
     16 
     17 
     18 	push	rbx
     19 	push	rbp
     20 	push	r12
     21 	push	r13
     22 	push	r14
     23 	push	r15
     24 	mov	r11,rsp
     25 	shl	rdx,4
     26 	sub	rsp,16*8+4*8
     27 	lea	rdx,QWORD PTR[rdx*8+rsi]
     28 	and	rsp,-64
     29 	mov	QWORD PTR[((128+0))+rsp],rdi
     30 	mov	QWORD PTR[((128+8))+rsp],rsi
     31 	mov	QWORD PTR[((128+16))+rsp],rdx
     32 	mov	QWORD PTR[((128+24))+rsp],r11
     33 $L$prologue::
     34 
     35 	mov	rax,QWORD PTR[rdi]
     36 	mov	rbx,QWORD PTR[8+rdi]
     37 	mov	rcx,QWORD PTR[16+rdi]
     38 	mov	rdx,QWORD PTR[24+rdi]
     39 	mov	r8,QWORD PTR[32+rdi]
     40 	mov	r9,QWORD PTR[40+rdi]
     41 	mov	r10,QWORD PTR[48+rdi]
     42 	mov	r11,QWORD PTR[56+rdi]
     43 	jmp	$L$loop
     44 
     45 ALIGN	16
     46 $L$loop::
     47 	mov	rdi,rbx
     48 	lea	rbp,QWORD PTR[K512]
     49 	xor	rdi,rcx
     50 	mov	r12,QWORD PTR[rsi]
     51 	mov	r13,r8
     52 	mov	r14,rax
     53 	bswap	r12
     54 	ror	r13,23
     55 	mov	r15,r9
     56 
     57 	xor	r13,r8
     58 	ror	r14,5
     59 	xor	r15,r10
     60 
     61 	mov	QWORD PTR[rsp],r12
     62 	xor	r14,rax
     63 	and	r15,r8
     64 
     65 	ror	r13,4
     66 	add	r12,r11
     67 	xor	r15,r10
     68 
     69 	ror	r14,6
     70 	xor	r13,r8
     71 	add	r12,r15
     72 
     73 	mov	r15,rax
     74 	add	r12,QWORD PTR[rbp]
     75 	xor	r14,rax
     76 
     77 	xor	r15,rbx
     78 	ror	r13,14
     79 	mov	r11,rbx
     80 
     81 	and	rdi,r15
     82 	ror	r14,28
     83 	add	r12,r13
     84 
     85 	xor	r11,rdi
     86 	add	rdx,r12
     87 	add	r11,r12
     88 
     89 	lea	rbp,QWORD PTR[8+rbp]
     90 	add	r11,r14
     91 	mov	r12,QWORD PTR[8+rsi]
     92 	mov	r13,rdx
     93 	mov	r14,r11
     94 	bswap	r12
     95 	ror	r13,23
     96 	mov	rdi,r8
     97 
     98 	xor	r13,rdx
     99 	ror	r14,5
    100 	xor	rdi,r9
    101 
    102 	mov	QWORD PTR[8+rsp],r12
    103 	xor	r14,r11
    104 	and	rdi,rdx
    105 
    106 	ror	r13,4
    107 	add	r12,r10
    108 	xor	rdi,r9
    109 
    110 	ror	r14,6
    111 	xor	r13,rdx
    112 	add	r12,rdi
    113 
    114 	mov	rdi,r11
    115 	add	r12,QWORD PTR[rbp]
    116 	xor	r14,r11
    117 
    118 	xor	rdi,rax
    119 	ror	r13,14
    120 	mov	r10,rax
    121 
    122 	and	r15,rdi
    123 	ror	r14,28
    124 	add	r12,r13
    125 
    126 	xor	r10,r15
    127 	add	rcx,r12
    128 	add	r10,r12
    129 
    130 	lea	rbp,QWORD PTR[24+rbp]
    131 	add	r10,r14
    132 	mov	r12,QWORD PTR[16+rsi]
    133 	mov	r13,rcx
    134 	mov	r14,r10
    135 	bswap	r12
    136 	ror	r13,23
    137 	mov	r15,rdx
    138 
    139 	xor	r13,rcx
    140 	ror	r14,5
    141 	xor	r15,r8
    142 
    143 	mov	QWORD PTR[16+rsp],r12
    144 	xor	r14,r10
    145 	and	r15,rcx
    146 
    147 	ror	r13,4
    148 	add	r12,r9
    149 	xor	r15,r8
    150 
    151 	ror	r14,6
    152 	xor	r13,rcx
    153 	add	r12,r15
    154 
    155 	mov	r15,r10
    156 	add	r12,QWORD PTR[rbp]
    157 	xor	r14,r10
    158 
    159 	xor	r15,r11
    160 	ror	r13,14
    161 	mov	r9,r11
    162 
    163 	and	rdi,r15
    164 	ror	r14,28
    165 	add	r12,r13
    166 
    167 	xor	r9,rdi
    168 	add	rbx,r12
    169 	add	r9,r12
    170 
    171 	lea	rbp,QWORD PTR[8+rbp]
    172 	add	r9,r14
    173 	mov	r12,QWORD PTR[24+rsi]
    174 	mov	r13,rbx
    175 	mov	r14,r9
    176 	bswap	r12
    177 	ror	r13,23
    178 	mov	rdi,rcx
    179 
    180 	xor	r13,rbx
    181 	ror	r14,5
    182 	xor	rdi,rdx
    183 
    184 	mov	QWORD PTR[24+rsp],r12
    185 	xor	r14,r9
    186 	and	rdi,rbx
    187 
    188 	ror	r13,4
    189 	add	r12,r8
    190 	xor	rdi,rdx
    191 
    192 	ror	r14,6
    193 	xor	r13,rbx
    194 	add	r12,rdi
    195 
    196 	mov	rdi,r9
    197 	add	r12,QWORD PTR[rbp]
    198 	xor	r14,r9
    199 
    200 	xor	rdi,r10
    201 	ror	r13,14
    202 	mov	r8,r10
    203 
    204 	and	r15,rdi
    205 	ror	r14,28
    206 	add	r12,r13
    207 
    208 	xor	r8,r15
    209 	add	rax,r12
    210 	add	r8,r12
    211 
    212 	lea	rbp,QWORD PTR[24+rbp]
    213 	add	r8,r14
    214 	mov	r12,QWORD PTR[32+rsi]
    215 	mov	r13,rax
    216 	mov	r14,r8
    217 	bswap	r12
    218 	ror	r13,23
    219 	mov	r15,rbx
    220 
    221 	xor	r13,rax
    222 	ror	r14,5
    223 	xor	r15,rcx
    224 
    225 	mov	QWORD PTR[32+rsp],r12
    226 	xor	r14,r8
    227 	and	r15,rax
    228 
    229 	ror	r13,4
    230 	add	r12,rdx
    231 	xor	r15,rcx
    232 
    233 	ror	r14,6
    234 	xor	r13,rax
    235 	add	r12,r15
    236 
    237 	mov	r15,r8
    238 	add	r12,QWORD PTR[rbp]
    239 	xor	r14,r8
    240 
    241 	xor	r15,r9
    242 	ror	r13,14
    243 	mov	rdx,r9
    244 
    245 	and	rdi,r15
    246 	ror	r14,28
    247 	add	r12,r13
    248 
    249 	xor	rdx,rdi
    250 	add	r11,r12
    251 	add	rdx,r12
    252 
    253 	lea	rbp,QWORD PTR[8+rbp]
    254 	add	rdx,r14
    255 	mov	r12,QWORD PTR[40+rsi]
    256 	mov	r13,r11
    257 	mov	r14,rdx
    258 	bswap	r12
    259 	ror	r13,23
    260 	mov	rdi,rax
    261 
    262 	xor	r13,r11
    263 	ror	r14,5
    264 	xor	rdi,rbx
    265 
    266 	mov	QWORD PTR[40+rsp],r12
    267 	xor	r14,rdx
    268 	and	rdi,r11
    269 
    270 	ror	r13,4
    271 	add	r12,rcx
    272 	xor	rdi,rbx
    273 
    274 	ror	r14,6
    275 	xor	r13,r11
    276 	add	r12,rdi
    277 
    278 	mov	rdi,rdx
    279 	add	r12,QWORD PTR[rbp]
    280 	xor	r14,rdx
    281 
    282 	xor	rdi,r8
    283 	ror	r13,14
    284 	mov	rcx,r8
    285 
    286 	and	r15,rdi
    287 	ror	r14,28
    288 	add	r12,r13
    289 
    290 	xor	rcx,r15
    291 	add	r10,r12
    292 	add	rcx,r12
    293 
    294 	lea	rbp,QWORD PTR[24+rbp]
    295 	add	rcx,r14
    296 	mov	r12,QWORD PTR[48+rsi]
    297 	mov	r13,r10
    298 	mov	r14,rcx
    299 	bswap	r12
    300 	ror	r13,23
    301 	mov	r15,r11
    302 
    303 	xor	r13,r10
    304 	ror	r14,5
    305 	xor	r15,rax
    306 
    307 	mov	QWORD PTR[48+rsp],r12
    308 	xor	r14,rcx
    309 	and	r15,r10
    310 
    311 	ror	r13,4
    312 	add	r12,rbx
    313 	xor	r15,rax
    314 
    315 	ror	r14,6
    316 	xor	r13,r10
    317 	add	r12,r15
    318 
    319 	mov	r15,rcx
    320 	add	r12,QWORD PTR[rbp]
    321 	xor	r14,rcx
    322 
    323 	xor	r15,rdx
    324 	ror	r13,14
    325 	mov	rbx,rdx
    326 
    327 	and	rdi,r15
    328 	ror	r14,28
    329 	add	r12,r13
    330 
    331 	xor	rbx,rdi
    332 	add	r9,r12
    333 	add	rbx,r12
    334 
    335 	lea	rbp,QWORD PTR[8+rbp]
    336 	add	rbx,r14
    337 	mov	r12,QWORD PTR[56+rsi]
    338 	mov	r13,r9
    339 	mov	r14,rbx
    340 	bswap	r12
    341 	ror	r13,23
    342 	mov	rdi,r10
    343 
    344 	xor	r13,r9
    345 	ror	r14,5
    346 	xor	rdi,r11
    347 
    348 	mov	QWORD PTR[56+rsp],r12
    349 	xor	r14,rbx
    350 	and	rdi,r9
    351 
    352 	ror	r13,4
    353 	add	r12,rax
    354 	xor	rdi,r11
    355 
    356 	ror	r14,6
    357 	xor	r13,r9
    358 	add	r12,rdi
    359 
    360 	mov	rdi,rbx
    361 	add	r12,QWORD PTR[rbp]
    362 	xor	r14,rbx
    363 
    364 	xor	rdi,rcx
    365 	ror	r13,14
    366 	mov	rax,rcx
    367 
    368 	and	r15,rdi
    369 	ror	r14,28
    370 	add	r12,r13
    371 
    372 	xor	rax,r15
    373 	add	r8,r12
    374 	add	rax,r12
    375 
    376 	lea	rbp,QWORD PTR[24+rbp]
    377 	add	rax,r14
    378 	mov	r12,QWORD PTR[64+rsi]
    379 	mov	r13,r8
    380 	mov	r14,rax
    381 	bswap	r12
    382 	ror	r13,23
    383 	mov	r15,r9
    384 
    385 	xor	r13,r8
    386 	ror	r14,5
    387 	xor	r15,r10
    388 
    389 	mov	QWORD PTR[64+rsp],r12
    390 	xor	r14,rax
    391 	and	r15,r8
    392 
    393 	ror	r13,4
    394 	add	r12,r11
    395 	xor	r15,r10
    396 
    397 	ror	r14,6
    398 	xor	r13,r8
    399 	add	r12,r15
    400 
    401 	mov	r15,rax
    402 	add	r12,QWORD PTR[rbp]
    403 	xor	r14,rax
    404 
    405 	xor	r15,rbx
    406 	ror	r13,14
    407 	mov	r11,rbx
    408 
    409 	and	rdi,r15
    410 	ror	r14,28
    411 	add	r12,r13
    412 
    413 	xor	r11,rdi
    414 	add	rdx,r12
    415 	add	r11,r12
    416 
    417 	lea	rbp,QWORD PTR[8+rbp]
    418 	add	r11,r14
    419 	mov	r12,QWORD PTR[72+rsi]
    420 	mov	r13,rdx
    421 	mov	r14,r11
    422 	bswap	r12
    423 	ror	r13,23
    424 	mov	rdi,r8
    425 
    426 	xor	r13,rdx
    427 	ror	r14,5
    428 	xor	rdi,r9
    429 
    430 	mov	QWORD PTR[72+rsp],r12
    431 	xor	r14,r11
    432 	and	rdi,rdx
    433 
    434 	ror	r13,4
    435 	add	r12,r10
    436 	xor	rdi,r9
    437 
    438 	ror	r14,6
    439 	xor	r13,rdx
    440 	add	r12,rdi
    441 
    442 	mov	rdi,r11
    443 	add	r12,QWORD PTR[rbp]
    444 	xor	r14,r11
    445 
    446 	xor	rdi,rax
    447 	ror	r13,14
    448 	mov	r10,rax
    449 
    450 	and	r15,rdi
    451 	ror	r14,28
    452 	add	r12,r13
    453 
    454 	xor	r10,r15
    455 	add	rcx,r12
    456 	add	r10,r12
    457 
    458 	lea	rbp,QWORD PTR[24+rbp]
    459 	add	r10,r14
    460 	mov	r12,QWORD PTR[80+rsi]
    461 	mov	r13,rcx
    462 	mov	r14,r10
    463 	bswap	r12
    464 	ror	r13,23
    465 	mov	r15,rdx
    466 
    467 	xor	r13,rcx
    468 	ror	r14,5
    469 	xor	r15,r8
    470 
    471 	mov	QWORD PTR[80+rsp],r12
    472 	xor	r14,r10
    473 	and	r15,rcx
    474 
    475 	ror	r13,4
    476 	add	r12,r9
    477 	xor	r15,r8
    478 
    479 	ror	r14,6
    480 	xor	r13,rcx
    481 	add	r12,r15
    482 
    483 	mov	r15,r10
    484 	add	r12,QWORD PTR[rbp]
    485 	xor	r14,r10
    486 
    487 	xor	r15,r11
    488 	ror	r13,14
    489 	mov	r9,r11
    490 
    491 	and	rdi,r15
    492 	ror	r14,28
    493 	add	r12,r13
    494 
    495 	xor	r9,rdi
    496 	add	rbx,r12
    497 	add	r9,r12
    498 
    499 	lea	rbp,QWORD PTR[8+rbp]
    500 	add	r9,r14
    501 	mov	r12,QWORD PTR[88+rsi]
    502 	mov	r13,rbx
    503 	mov	r14,r9
    504 	bswap	r12
    505 	ror	r13,23
    506 	mov	rdi,rcx
    507 
    508 	xor	r13,rbx
    509 	ror	r14,5
    510 	xor	rdi,rdx
    511 
    512 	mov	QWORD PTR[88+rsp],r12
    513 	xor	r14,r9
    514 	and	rdi,rbx
    515 
    516 	ror	r13,4
    517 	add	r12,r8
    518 	xor	rdi,rdx
    519 
    520 	ror	r14,6
    521 	xor	r13,rbx
    522 	add	r12,rdi
    523 
    524 	mov	rdi,r9
    525 	add	r12,QWORD PTR[rbp]
    526 	xor	r14,r9
    527 
    528 	xor	rdi,r10
    529 	ror	r13,14
    530 	mov	r8,r10
    531 
    532 	and	r15,rdi
    533 	ror	r14,28
    534 	add	r12,r13
    535 
    536 	xor	r8,r15
    537 	add	rax,r12
    538 	add	r8,r12
    539 
    540 	lea	rbp,QWORD PTR[24+rbp]
    541 	add	r8,r14
    542 	mov	r12,QWORD PTR[96+rsi]
    543 	mov	r13,rax
    544 	mov	r14,r8
    545 	bswap	r12
    546 	ror	r13,23
    547 	mov	r15,rbx
    548 
    549 	xor	r13,rax
    550 	ror	r14,5
    551 	xor	r15,rcx
    552 
    553 	mov	QWORD PTR[96+rsp],r12
    554 	xor	r14,r8
    555 	and	r15,rax
    556 
    557 	ror	r13,4
    558 	add	r12,rdx
    559 	xor	r15,rcx
    560 
    561 	ror	r14,6
    562 	xor	r13,rax
    563 	add	r12,r15
    564 
    565 	mov	r15,r8
    566 	add	r12,QWORD PTR[rbp]
    567 	xor	r14,r8
    568 
    569 	xor	r15,r9
    570 	ror	r13,14
    571 	mov	rdx,r9
    572 
    573 	and	rdi,r15
    574 	ror	r14,28
    575 	add	r12,r13
    576 
    577 	xor	rdx,rdi
    578 	add	r11,r12
    579 	add	rdx,r12
    580 
    581 	lea	rbp,QWORD PTR[8+rbp]
    582 	add	rdx,r14
    583 	mov	r12,QWORD PTR[104+rsi]
    584 	mov	r13,r11
    585 	mov	r14,rdx
    586 	bswap	r12
    587 	ror	r13,23
    588 	mov	rdi,rax
    589 
    590 	xor	r13,r11
    591 	ror	r14,5
    592 	xor	rdi,rbx
    593 
    594 	mov	QWORD PTR[104+rsp],r12
    595 	xor	r14,rdx
    596 	and	rdi,r11
    597 
    598 	ror	r13,4
    599 	add	r12,rcx
    600 	xor	rdi,rbx
    601 
    602 	ror	r14,6
    603 	xor	r13,r11
    604 	add	r12,rdi
    605 
    606 	mov	rdi,rdx
    607 	add	r12,QWORD PTR[rbp]
    608 	xor	r14,rdx
    609 
    610 	xor	rdi,r8
    611 	ror	r13,14
    612 	mov	rcx,r8
    613 
    614 	and	r15,rdi
    615 	ror	r14,28
    616 	add	r12,r13
    617 
    618 	xor	rcx,r15
    619 	add	r10,r12
    620 	add	rcx,r12
    621 
    622 	lea	rbp,QWORD PTR[24+rbp]
    623 	add	rcx,r14
    624 	mov	r12,QWORD PTR[112+rsi]
    625 	mov	r13,r10
    626 	mov	r14,rcx
    627 	bswap	r12
    628 	ror	r13,23
    629 	mov	r15,r11
    630 
    631 	xor	r13,r10
    632 	ror	r14,5
    633 	xor	r15,rax
    634 
    635 	mov	QWORD PTR[112+rsp],r12
    636 	xor	r14,rcx
    637 	and	r15,r10
    638 
    639 	ror	r13,4
    640 	add	r12,rbx
    641 	xor	r15,rax
    642 
    643 	ror	r14,6
    644 	xor	r13,r10
    645 	add	r12,r15
    646 
    647 	mov	r15,rcx
    648 	add	r12,QWORD PTR[rbp]
    649 	xor	r14,rcx
    650 
    651 	xor	r15,rdx
    652 	ror	r13,14
    653 	mov	rbx,rdx
    654 
    655 	and	rdi,r15
    656 	ror	r14,28
    657 	add	r12,r13
    658 
    659 	xor	rbx,rdi
    660 	add	r9,r12
    661 	add	rbx,r12
    662 
    663 	lea	rbp,QWORD PTR[8+rbp]
    664 	add	rbx,r14
    665 	mov	r12,QWORD PTR[120+rsi]
    666 	mov	r13,r9
    667 	mov	r14,rbx
    668 	bswap	r12
    669 	ror	r13,23
    670 	mov	rdi,r10
    671 
    672 	xor	r13,r9
    673 	ror	r14,5
    674 	xor	rdi,r11
    675 
    676 	mov	QWORD PTR[120+rsp],r12
    677 	xor	r14,rbx
    678 	and	rdi,r9
    679 
    680 	ror	r13,4
    681 	add	r12,rax
    682 	xor	rdi,r11
    683 
    684 	ror	r14,6
    685 	xor	r13,r9
    686 	add	r12,rdi
    687 
    688 	mov	rdi,rbx
    689 	add	r12,QWORD PTR[rbp]
    690 	xor	r14,rbx
    691 
    692 	xor	rdi,rcx
    693 	ror	r13,14
    694 	mov	rax,rcx
    695 
    696 	and	r15,rdi
    697 	ror	r14,28
    698 	add	r12,r13
    699 
    700 	xor	rax,r15
    701 	add	r8,r12
    702 	add	rax,r12
    703 
    704 	lea	rbp,QWORD PTR[24+rbp]
    705 	jmp	$L$rounds_16_xx
    706 ALIGN	16
    707 $L$rounds_16_xx::
    708 	mov	r13,QWORD PTR[8+rsp]
    709 	mov	r15,QWORD PTR[112+rsp]
    710 
    711 	mov	r12,r13
    712 	ror	r13,7
    713 	add	rax,r14
    714 	mov	r14,r15
    715 	ror	r15,42
    716 
    717 	xor	r13,r12
    718 	shr	r12,7
    719 	ror	r13,1
    720 	xor	r15,r14
    721 	shr	r14,6
    722 
    723 	ror	r15,19
    724 	xor	r12,r13
    725 	xor	r15,r14
    726 	add	r12,QWORD PTR[72+rsp]
    727 
    728 	add	r12,QWORD PTR[rsp]
    729 	mov	r13,r8
    730 	add	r12,r15
    731 	mov	r14,rax
    732 	ror	r13,23
    733 	mov	r15,r9
    734 
    735 	xor	r13,r8
    736 	ror	r14,5
    737 	xor	r15,r10
    738 
    739 	mov	QWORD PTR[rsp],r12
    740 	xor	r14,rax
    741 	and	r15,r8
    742 
    743 	ror	r13,4
    744 	add	r12,r11
    745 	xor	r15,r10
    746 
    747 	ror	r14,6
    748 	xor	r13,r8
    749 	add	r12,r15
    750 
    751 	mov	r15,rax
    752 	add	r12,QWORD PTR[rbp]
    753 	xor	r14,rax
    754 
    755 	xor	r15,rbx
    756 	ror	r13,14
    757 	mov	r11,rbx
    758 
    759 	and	rdi,r15
    760 	ror	r14,28
    761 	add	r12,r13
    762 
    763 	xor	r11,rdi
    764 	add	rdx,r12
    765 	add	r11,r12
    766 
    767 	lea	rbp,QWORD PTR[8+rbp]
    768 	mov	r13,QWORD PTR[16+rsp]
    769 	mov	rdi,QWORD PTR[120+rsp]
    770 
    771 	mov	r12,r13
    772 	ror	r13,7
    773 	add	r11,r14
    774 	mov	r14,rdi
    775 	ror	rdi,42
    776 
    777 	xor	r13,r12
    778 	shr	r12,7
    779 	ror	r13,1
    780 	xor	rdi,r14
    781 	shr	r14,6
    782 
    783 	ror	rdi,19
    784 	xor	r12,r13
    785 	xor	rdi,r14
    786 	add	r12,QWORD PTR[80+rsp]
    787 
    788 	add	r12,QWORD PTR[8+rsp]
    789 	mov	r13,rdx
    790 	add	r12,rdi
    791 	mov	r14,r11
    792 	ror	r13,23
    793 	mov	rdi,r8
    794 
    795 	xor	r13,rdx
    796 	ror	r14,5
    797 	xor	rdi,r9
    798 
    799 	mov	QWORD PTR[8+rsp],r12
    800 	xor	r14,r11
    801 	and	rdi,rdx
    802 
    803 	ror	r13,4
    804 	add	r12,r10
    805 	xor	rdi,r9
    806 
    807 	ror	r14,6
    808 	xor	r13,rdx
    809 	add	r12,rdi
    810 
    811 	mov	rdi,r11
    812 	add	r12,QWORD PTR[rbp]
    813 	xor	r14,r11
    814 
    815 	xor	rdi,rax
    816 	ror	r13,14
    817 	mov	r10,rax
    818 
    819 	and	r15,rdi
    820 	ror	r14,28
    821 	add	r12,r13
    822 
    823 	xor	r10,r15
    824 	add	rcx,r12
    825 	add	r10,r12
    826 
    827 	lea	rbp,QWORD PTR[24+rbp]
    828 	mov	r13,QWORD PTR[24+rsp]
    829 	mov	r15,QWORD PTR[rsp]
    830 
    831 	mov	r12,r13
    832 	ror	r13,7
    833 	add	r10,r14
    834 	mov	r14,r15
    835 	ror	r15,42
    836 
    837 	xor	r13,r12
    838 	shr	r12,7
    839 	ror	r13,1
    840 	xor	r15,r14
    841 	shr	r14,6
    842 
    843 	ror	r15,19
    844 	xor	r12,r13
    845 	xor	r15,r14
    846 	add	r12,QWORD PTR[88+rsp]
    847 
    848 	add	r12,QWORD PTR[16+rsp]
    849 	mov	r13,rcx
    850 	add	r12,r15
    851 	mov	r14,r10
    852 	ror	r13,23
    853 	mov	r15,rdx
    854 
    855 	xor	r13,rcx
    856 	ror	r14,5
    857 	xor	r15,r8
    858 
    859 	mov	QWORD PTR[16+rsp],r12
    860 	xor	r14,r10
    861 	and	r15,rcx
    862 
    863 	ror	r13,4
    864 	add	r12,r9
    865 	xor	r15,r8
    866 
    867 	ror	r14,6
    868 	xor	r13,rcx
    869 	add	r12,r15
    870 
    871 	mov	r15,r10
    872 	add	r12,QWORD PTR[rbp]
    873 	xor	r14,r10
    874 
    875 	xor	r15,r11
    876 	ror	r13,14
    877 	mov	r9,r11
    878 
    879 	and	rdi,r15
    880 	ror	r14,28
    881 	add	r12,r13
    882 
    883 	xor	r9,rdi
    884 	add	rbx,r12
    885 	add	r9,r12
    886 
    887 	lea	rbp,QWORD PTR[8+rbp]
    888 	mov	r13,QWORD PTR[32+rsp]
    889 	mov	rdi,QWORD PTR[8+rsp]
    890 
    891 	mov	r12,r13
    892 	ror	r13,7
    893 	add	r9,r14
    894 	mov	r14,rdi
    895 	ror	rdi,42
    896 
    897 	xor	r13,r12
    898 	shr	r12,7
    899 	ror	r13,1
    900 	xor	rdi,r14
    901 	shr	r14,6
    902 
    903 	ror	rdi,19
    904 	xor	r12,r13
    905 	xor	rdi,r14
    906 	add	r12,QWORD PTR[96+rsp]
    907 
    908 	add	r12,QWORD PTR[24+rsp]
    909 	mov	r13,rbx
    910 	add	r12,rdi
    911 	mov	r14,r9
    912 	ror	r13,23
    913 	mov	rdi,rcx
    914 
    915 	xor	r13,rbx
    916 	ror	r14,5
    917 	xor	rdi,rdx
    918 
    919 	mov	QWORD PTR[24+rsp],r12
    920 	xor	r14,r9
    921 	and	rdi,rbx
    922 
    923 	ror	r13,4
    924 	add	r12,r8
    925 	xor	rdi,rdx
    926 
    927 	ror	r14,6
    928 	xor	r13,rbx
    929 	add	r12,rdi
    930 
    931 	mov	rdi,r9
    932 	add	r12,QWORD PTR[rbp]
    933 	xor	r14,r9
    934 
    935 	xor	rdi,r10
    936 	ror	r13,14
    937 	mov	r8,r10
    938 
    939 	and	r15,rdi
    940 	ror	r14,28
    941 	add	r12,r13
    942 
    943 	xor	r8,r15
    944 	add	rax,r12
    945 	add	r8,r12
    946 
    947 	lea	rbp,QWORD PTR[24+rbp]
    948 	mov	r13,QWORD PTR[40+rsp]
    949 	mov	r15,QWORD PTR[16+rsp]
    950 
    951 	mov	r12,r13
    952 	ror	r13,7
    953 	add	r8,r14
    954 	mov	r14,r15
    955 	ror	r15,42
    956 
    957 	xor	r13,r12
    958 	shr	r12,7
    959 	ror	r13,1
    960 	xor	r15,r14
    961 	shr	r14,6
    962 
    963 	ror	r15,19
    964 	xor	r12,r13
    965 	xor	r15,r14
    966 	add	r12,QWORD PTR[104+rsp]
    967 
    968 	add	r12,QWORD PTR[32+rsp]
    969 	mov	r13,rax
    970 	add	r12,r15
    971 	mov	r14,r8
    972 	ror	r13,23
    973 	mov	r15,rbx
    974 
    975 	xor	r13,rax
    976 	ror	r14,5
    977 	xor	r15,rcx
    978 
    979 	mov	QWORD PTR[32+rsp],r12
    980 	xor	r14,r8
    981 	and	r15,rax
    982 
    983 	ror	r13,4
    984 	add	r12,rdx
    985 	xor	r15,rcx
    986 
    987 	ror	r14,6
    988 	xor	r13,rax
    989 	add	r12,r15
    990 
    991 	mov	r15,r8
    992 	add	r12,QWORD PTR[rbp]
    993 	xor	r14,r8
    994 
    995 	xor	r15,r9
    996 	ror	r13,14
    997 	mov	rdx,r9
    998 
    999 	and	rdi,r15
   1000 	ror	r14,28
   1001 	add	r12,r13
   1002 
   1003 	xor	rdx,rdi
   1004 	add	r11,r12
   1005 	add	rdx,r12
   1006 
   1007 	lea	rbp,QWORD PTR[8+rbp]
   1008 	mov	r13,QWORD PTR[48+rsp]
   1009 	mov	rdi,QWORD PTR[24+rsp]
   1010 
   1011 	mov	r12,r13
   1012 	ror	r13,7
   1013 	add	rdx,r14
   1014 	mov	r14,rdi
   1015 	ror	rdi,42
   1016 
   1017 	xor	r13,r12
   1018 	shr	r12,7
   1019 	ror	r13,1
   1020 	xor	rdi,r14
   1021 	shr	r14,6
   1022 
   1023 	ror	rdi,19
   1024 	xor	r12,r13
   1025 	xor	rdi,r14
   1026 	add	r12,QWORD PTR[112+rsp]
   1027 
   1028 	add	r12,QWORD PTR[40+rsp]
   1029 	mov	r13,r11
   1030 	add	r12,rdi
   1031 	mov	r14,rdx
   1032 	ror	r13,23
   1033 	mov	rdi,rax
   1034 
   1035 	xor	r13,r11
   1036 	ror	r14,5
   1037 	xor	rdi,rbx
   1038 
   1039 	mov	QWORD PTR[40+rsp],r12
   1040 	xor	r14,rdx
   1041 	and	rdi,r11
   1042 
   1043 	ror	r13,4
   1044 	add	r12,rcx
   1045 	xor	rdi,rbx
   1046 
   1047 	ror	r14,6
   1048 	xor	r13,r11
   1049 	add	r12,rdi
   1050 
   1051 	mov	rdi,rdx
   1052 	add	r12,QWORD PTR[rbp]
   1053 	xor	r14,rdx
   1054 
   1055 	xor	rdi,r8
   1056 	ror	r13,14
   1057 	mov	rcx,r8
   1058 
   1059 	and	r15,rdi
   1060 	ror	r14,28
   1061 	add	r12,r13
   1062 
   1063 	xor	rcx,r15
   1064 	add	r10,r12
   1065 	add	rcx,r12
   1066 
   1067 	lea	rbp,QWORD PTR[24+rbp]
   1068 	mov	r13,QWORD PTR[56+rsp]
   1069 	mov	r15,QWORD PTR[32+rsp]
   1070 
   1071 	mov	r12,r13
   1072 	ror	r13,7
   1073 	add	rcx,r14
   1074 	mov	r14,r15
   1075 	ror	r15,42
   1076 
   1077 	xor	r13,r12
   1078 	shr	r12,7
   1079 	ror	r13,1
   1080 	xor	r15,r14
   1081 	shr	r14,6
   1082 
   1083 	ror	r15,19
   1084 	xor	r12,r13
   1085 	xor	r15,r14
   1086 	add	r12,QWORD PTR[120+rsp]
   1087 
   1088 	add	r12,QWORD PTR[48+rsp]
   1089 	mov	r13,r10
   1090 	add	r12,r15
   1091 	mov	r14,rcx
   1092 	ror	r13,23
   1093 	mov	r15,r11
   1094 
   1095 	xor	r13,r10
   1096 	ror	r14,5
   1097 	xor	r15,rax
   1098 
   1099 	mov	QWORD PTR[48+rsp],r12
   1100 	xor	r14,rcx
   1101 	and	r15,r10
   1102 
   1103 	ror	r13,4
   1104 	add	r12,rbx
   1105 	xor	r15,rax
   1106 
   1107 	ror	r14,6
   1108 	xor	r13,r10
   1109 	add	r12,r15
   1110 
   1111 	mov	r15,rcx
   1112 	add	r12,QWORD PTR[rbp]
   1113 	xor	r14,rcx
   1114 
   1115 	xor	r15,rdx
   1116 	ror	r13,14
   1117 	mov	rbx,rdx
   1118 
   1119 	and	rdi,r15
   1120 	ror	r14,28
   1121 	add	r12,r13
   1122 
   1123 	xor	rbx,rdi
   1124 	add	r9,r12
   1125 	add	rbx,r12
   1126 
   1127 	lea	rbp,QWORD PTR[8+rbp]
   1128 	mov	r13,QWORD PTR[64+rsp]
   1129 	mov	rdi,QWORD PTR[40+rsp]
   1130 
   1131 	mov	r12,r13
   1132 	ror	r13,7
   1133 	add	rbx,r14
   1134 	mov	r14,rdi
   1135 	ror	rdi,42
   1136 
   1137 	xor	r13,r12
   1138 	shr	r12,7
   1139 	ror	r13,1
   1140 	xor	rdi,r14
   1141 	shr	r14,6
   1142 
   1143 	ror	rdi,19
   1144 	xor	r12,r13
   1145 	xor	rdi,r14
   1146 	add	r12,QWORD PTR[rsp]
   1147 
   1148 	add	r12,QWORD PTR[56+rsp]
   1149 	mov	r13,r9
   1150 	add	r12,rdi
   1151 	mov	r14,rbx
   1152 	ror	r13,23
   1153 	mov	rdi,r10
   1154 
   1155 	xor	r13,r9
   1156 	ror	r14,5
   1157 	xor	rdi,r11
   1158 
   1159 	mov	QWORD PTR[56+rsp],r12
   1160 	xor	r14,rbx
   1161 	and	rdi,r9
   1162 
   1163 	ror	r13,4
   1164 	add	r12,rax
   1165 	xor	rdi,r11
   1166 
   1167 	ror	r14,6
   1168 	xor	r13,r9
   1169 	add	r12,rdi
   1170 
   1171 	mov	rdi,rbx
   1172 	add	r12,QWORD PTR[rbp]
   1173 	xor	r14,rbx
   1174 
   1175 	xor	rdi,rcx
   1176 	ror	r13,14
   1177 	mov	rax,rcx
   1178 
   1179 	and	r15,rdi
   1180 	ror	r14,28
   1181 	add	r12,r13
   1182 
   1183 	xor	rax,r15
   1184 	add	r8,r12
   1185 	add	rax,r12
   1186 
   1187 	lea	rbp,QWORD PTR[24+rbp]
   1188 	mov	r13,QWORD PTR[72+rsp]
   1189 	mov	r15,QWORD PTR[48+rsp]
   1190 
   1191 	mov	r12,r13
   1192 	ror	r13,7
   1193 	add	rax,r14
   1194 	mov	r14,r15
   1195 	ror	r15,42
   1196 
   1197 	xor	r13,r12
   1198 	shr	r12,7
   1199 	ror	r13,1
   1200 	xor	r15,r14
   1201 	shr	r14,6
   1202 
   1203 	ror	r15,19
   1204 	xor	r12,r13
   1205 	xor	r15,r14
   1206 	add	r12,QWORD PTR[8+rsp]
   1207 
   1208 	add	r12,QWORD PTR[64+rsp]
   1209 	mov	r13,r8
   1210 	add	r12,r15
   1211 	mov	r14,rax
   1212 	ror	r13,23
   1213 	mov	r15,r9
   1214 
   1215 	xor	r13,r8
   1216 	ror	r14,5
   1217 	xor	r15,r10
   1218 
   1219 	mov	QWORD PTR[64+rsp],r12
   1220 	xor	r14,rax
   1221 	and	r15,r8
   1222 
   1223 	ror	r13,4
   1224 	add	r12,r11
   1225 	xor	r15,r10
   1226 
   1227 	ror	r14,6
   1228 	xor	r13,r8
   1229 	add	r12,r15
   1230 
   1231 	mov	r15,rax
   1232 	add	r12,QWORD PTR[rbp]
   1233 	xor	r14,rax
   1234 
   1235 	xor	r15,rbx
   1236 	ror	r13,14
   1237 	mov	r11,rbx
   1238 
   1239 	and	rdi,r15
   1240 	ror	r14,28
   1241 	add	r12,r13
   1242 
   1243 	xor	r11,rdi
   1244 	add	rdx,r12
   1245 	add	r11,r12
   1246 
   1247 	lea	rbp,QWORD PTR[8+rbp]
   1248 	mov	r13,QWORD PTR[80+rsp]
   1249 	mov	rdi,QWORD PTR[56+rsp]
   1250 
   1251 	mov	r12,r13
   1252 	ror	r13,7
   1253 	add	r11,r14
   1254 	mov	r14,rdi
   1255 	ror	rdi,42
   1256 
   1257 	xor	r13,r12
   1258 	shr	r12,7
   1259 	ror	r13,1
   1260 	xor	rdi,r14
   1261 	shr	r14,6
   1262 
   1263 	ror	rdi,19
   1264 	xor	r12,r13
   1265 	xor	rdi,r14
   1266 	add	r12,QWORD PTR[16+rsp]
   1267 
   1268 	add	r12,QWORD PTR[72+rsp]
   1269 	mov	r13,rdx
   1270 	add	r12,rdi
   1271 	mov	r14,r11
   1272 	ror	r13,23
   1273 	mov	rdi,r8
   1274 
   1275 	xor	r13,rdx
   1276 	ror	r14,5
   1277 	xor	rdi,r9
   1278 
   1279 	mov	QWORD PTR[72+rsp],r12
   1280 	xor	r14,r11
   1281 	and	rdi,rdx
   1282 
   1283 	ror	r13,4
   1284 	add	r12,r10
   1285 	xor	rdi,r9
   1286 
   1287 	ror	r14,6
   1288 	xor	r13,rdx
   1289 	add	r12,rdi
   1290 
   1291 	mov	rdi,r11
   1292 	add	r12,QWORD PTR[rbp]
   1293 	xor	r14,r11
   1294 
   1295 	xor	rdi,rax
   1296 	ror	r13,14
   1297 	mov	r10,rax
   1298 
   1299 	and	r15,rdi
   1300 	ror	r14,28
   1301 	add	r12,r13
   1302 
   1303 	xor	r10,r15
   1304 	add	rcx,r12
   1305 	add	r10,r12
   1306 
   1307 	lea	rbp,QWORD PTR[24+rbp]
   1308 	mov	r13,QWORD PTR[88+rsp]
   1309 	mov	r15,QWORD PTR[64+rsp]
   1310 
   1311 	mov	r12,r13
   1312 	ror	r13,7
   1313 	add	r10,r14
   1314 	mov	r14,r15
   1315 	ror	r15,42
   1316 
   1317 	xor	r13,r12
   1318 	shr	r12,7
   1319 	ror	r13,1
   1320 	xor	r15,r14
   1321 	shr	r14,6
   1322 
   1323 	ror	r15,19
   1324 	xor	r12,r13
   1325 	xor	r15,r14
   1326 	add	r12,QWORD PTR[24+rsp]
   1327 
   1328 	add	r12,QWORD PTR[80+rsp]
   1329 	mov	r13,rcx
   1330 	add	r12,r15
   1331 	mov	r14,r10
   1332 	ror	r13,23
   1333 	mov	r15,rdx
   1334 
   1335 	xor	r13,rcx
   1336 	ror	r14,5
   1337 	xor	r15,r8
   1338 
   1339 	mov	QWORD PTR[80+rsp],r12
   1340 	xor	r14,r10
   1341 	and	r15,rcx
   1342 
   1343 	ror	r13,4
   1344 	add	r12,r9
   1345 	xor	r15,r8
   1346 
   1347 	ror	r14,6
   1348 	xor	r13,rcx
   1349 	add	r12,r15
   1350 
   1351 	mov	r15,r10
   1352 	add	r12,QWORD PTR[rbp]
   1353 	xor	r14,r10
   1354 
   1355 	xor	r15,r11
   1356 	ror	r13,14
   1357 	mov	r9,r11
   1358 
   1359 	and	rdi,r15
   1360 	ror	r14,28
   1361 	add	r12,r13
   1362 
   1363 	xor	r9,rdi
   1364 	add	rbx,r12
   1365 	add	r9,r12
   1366 
   1367 	lea	rbp,QWORD PTR[8+rbp]
   1368 	mov	r13,QWORD PTR[96+rsp]
   1369 	mov	rdi,QWORD PTR[72+rsp]
   1370 
   1371 	mov	r12,r13
   1372 	ror	r13,7
   1373 	add	r9,r14
   1374 	mov	r14,rdi
   1375 	ror	rdi,42
   1376 
   1377 	xor	r13,r12
   1378 	shr	r12,7
   1379 	ror	r13,1
   1380 	xor	rdi,r14
   1381 	shr	r14,6
   1382 
   1383 	ror	rdi,19
   1384 	xor	r12,r13
   1385 	xor	rdi,r14
   1386 	add	r12,QWORD PTR[32+rsp]
   1387 
   1388 	add	r12,QWORD PTR[88+rsp]
   1389 	mov	r13,rbx
   1390 	add	r12,rdi
   1391 	mov	r14,r9
   1392 	ror	r13,23
   1393 	mov	rdi,rcx
   1394 
   1395 	xor	r13,rbx
   1396 	ror	r14,5
   1397 	xor	rdi,rdx
   1398 
   1399 	mov	QWORD PTR[88+rsp],r12
   1400 	xor	r14,r9
   1401 	and	rdi,rbx
   1402 
   1403 	ror	r13,4
   1404 	add	r12,r8
   1405 	xor	rdi,rdx
   1406 
   1407 	ror	r14,6
   1408 	xor	r13,rbx
   1409 	add	r12,rdi
   1410 
   1411 	mov	rdi,r9
   1412 	add	r12,QWORD PTR[rbp]
   1413 	xor	r14,r9
   1414 
   1415 	xor	rdi,r10
   1416 	ror	r13,14
   1417 	mov	r8,r10
   1418 
   1419 	and	r15,rdi
   1420 	ror	r14,28
   1421 	add	r12,r13
   1422 
   1423 	xor	r8,r15
   1424 	add	rax,r12
   1425 	add	r8,r12
   1426 
   1427 	lea	rbp,QWORD PTR[24+rbp]
   1428 	mov	r13,QWORD PTR[104+rsp]
   1429 	mov	r15,QWORD PTR[80+rsp]
   1430 
   1431 	mov	r12,r13
   1432 	ror	r13,7
   1433 	add	r8,r14
   1434 	mov	r14,r15
   1435 	ror	r15,42
   1436 
   1437 	xor	r13,r12
   1438 	shr	r12,7
   1439 	ror	r13,1
   1440 	xor	r15,r14
   1441 	shr	r14,6
   1442 
   1443 	ror	r15,19
   1444 	xor	r12,r13
   1445 	xor	r15,r14
   1446 	add	r12,QWORD PTR[40+rsp]
   1447 
   1448 	add	r12,QWORD PTR[96+rsp]
   1449 	mov	r13,rax
   1450 	add	r12,r15
   1451 	mov	r14,r8
   1452 	ror	r13,23
   1453 	mov	r15,rbx
   1454 
   1455 	xor	r13,rax
   1456 	ror	r14,5
   1457 	xor	r15,rcx
   1458 
   1459 	mov	QWORD PTR[96+rsp],r12
   1460 	xor	r14,r8
   1461 	and	r15,rax
   1462 
   1463 	ror	r13,4
   1464 	add	r12,rdx
   1465 	xor	r15,rcx
   1466 
   1467 	ror	r14,6
   1468 	xor	r13,rax
   1469 	add	r12,r15
   1470 
   1471 	mov	r15,r8
   1472 	add	r12,QWORD PTR[rbp]
   1473 	xor	r14,r8
   1474 
   1475 	xor	r15,r9
   1476 	ror	r13,14
   1477 	mov	rdx,r9
   1478 
   1479 	and	rdi,r15
   1480 	ror	r14,28
   1481 	add	r12,r13
   1482 
   1483 	xor	rdx,rdi
   1484 	add	r11,r12
   1485 	add	rdx,r12
   1486 
   1487 	lea	rbp,QWORD PTR[8+rbp]
   1488 	mov	r13,QWORD PTR[112+rsp]
   1489 	mov	rdi,QWORD PTR[88+rsp]
   1490 
   1491 	mov	r12,r13
   1492 	ror	r13,7
   1493 	add	rdx,r14
   1494 	mov	r14,rdi
   1495 	ror	rdi,42
   1496 
   1497 	xor	r13,r12
   1498 	shr	r12,7
   1499 	ror	r13,1
   1500 	xor	rdi,r14
   1501 	shr	r14,6
   1502 
   1503 	ror	rdi,19
   1504 	xor	r12,r13
   1505 	xor	rdi,r14
   1506 	add	r12,QWORD PTR[48+rsp]
   1507 
   1508 	add	r12,QWORD PTR[104+rsp]
   1509 	mov	r13,r11
   1510 	add	r12,rdi
   1511 	mov	r14,rdx
   1512 	ror	r13,23
   1513 	mov	rdi,rax
   1514 
   1515 	xor	r13,r11
   1516 	ror	r14,5
   1517 	xor	rdi,rbx
   1518 
   1519 	mov	QWORD PTR[104+rsp],r12
   1520 	xor	r14,rdx
   1521 	and	rdi,r11
   1522 
   1523 	ror	r13,4
   1524 	add	r12,rcx
   1525 	xor	rdi,rbx
   1526 
   1527 	ror	r14,6
   1528 	xor	r13,r11
   1529 	add	r12,rdi
   1530 
   1531 	mov	rdi,rdx
   1532 	add	r12,QWORD PTR[rbp]
   1533 	xor	r14,rdx
   1534 
   1535 	xor	rdi,r8
   1536 	ror	r13,14
   1537 	mov	rcx,r8
   1538 
   1539 	and	r15,rdi
   1540 	ror	r14,28
   1541 	add	r12,r13
   1542 
   1543 	xor	rcx,r15
   1544 	add	r10,r12
   1545 	add	rcx,r12
   1546 
   1547 	lea	rbp,QWORD PTR[24+rbp]
   1548 	mov	r13,QWORD PTR[120+rsp]
   1549 	mov	r15,QWORD PTR[96+rsp]
   1550 
   1551 	mov	r12,r13
   1552 	ror	r13,7
   1553 	add	rcx,r14
   1554 	mov	r14,r15
   1555 	ror	r15,42
   1556 
   1557 	xor	r13,r12
   1558 	shr	r12,7
   1559 	ror	r13,1
   1560 	xor	r15,r14
   1561 	shr	r14,6
   1562 
   1563 	ror	r15,19
   1564 	xor	r12,r13
   1565 	xor	r15,r14
   1566 	add	r12,QWORD PTR[56+rsp]
   1567 
   1568 	add	r12,QWORD PTR[112+rsp]
   1569 	mov	r13,r10
   1570 	add	r12,r15
   1571 	mov	r14,rcx
   1572 	ror	r13,23
   1573 	mov	r15,r11
   1574 
   1575 	xor	r13,r10
   1576 	ror	r14,5
   1577 	xor	r15,rax
   1578 
   1579 	mov	QWORD PTR[112+rsp],r12
   1580 	xor	r14,rcx
   1581 	and	r15,r10
   1582 
   1583 	ror	r13,4
   1584 	add	r12,rbx
   1585 	xor	r15,rax
   1586 
   1587 	ror	r14,6
   1588 	xor	r13,r10
   1589 	add	r12,r15
   1590 
   1591 	mov	r15,rcx
   1592 	add	r12,QWORD PTR[rbp]
   1593 	xor	r14,rcx
   1594 
   1595 	xor	r15,rdx
   1596 	ror	r13,14
   1597 	mov	rbx,rdx
   1598 
   1599 	and	rdi,r15
   1600 	ror	r14,28
   1601 	add	r12,r13
   1602 
   1603 	xor	rbx,rdi
   1604 	add	r9,r12
   1605 	add	rbx,r12
   1606 
   1607 	lea	rbp,QWORD PTR[8+rbp]
   1608 	mov	r13,QWORD PTR[rsp]
   1609 	mov	rdi,QWORD PTR[104+rsp]
   1610 
   1611 	mov	r12,r13
   1612 	ror	r13,7
   1613 	add	rbx,r14
   1614 	mov	r14,rdi
   1615 	ror	rdi,42
   1616 
   1617 	xor	r13,r12
   1618 	shr	r12,7
   1619 	ror	r13,1
   1620 	xor	rdi,r14
   1621 	shr	r14,6
   1622 
   1623 	ror	rdi,19
   1624 	xor	r12,r13
   1625 	xor	rdi,r14
   1626 	add	r12,QWORD PTR[64+rsp]
   1627 
   1628 	add	r12,QWORD PTR[120+rsp]
   1629 	mov	r13,r9
   1630 	add	r12,rdi
   1631 	mov	r14,rbx
   1632 	ror	r13,23
   1633 	mov	rdi,r10
   1634 
   1635 	xor	r13,r9
   1636 	ror	r14,5
   1637 	xor	rdi,r11
   1638 
   1639 	mov	QWORD PTR[120+rsp],r12
   1640 	xor	r14,rbx
   1641 	and	rdi,r9
   1642 
   1643 	ror	r13,4
   1644 	add	r12,rax
   1645 	xor	rdi,r11
   1646 
   1647 	ror	r14,6
   1648 	xor	r13,r9
   1649 	add	r12,rdi
   1650 
   1651 	mov	rdi,rbx
   1652 	add	r12,QWORD PTR[rbp]
   1653 	xor	r14,rbx
   1654 
   1655 	xor	rdi,rcx
   1656 	ror	r13,14
   1657 	mov	rax,rcx
   1658 
   1659 	and	r15,rdi
   1660 	ror	r14,28
   1661 	add	r12,r13
   1662 
   1663 	xor	rax,r15
   1664 	add	r8,r12
   1665 	add	rax,r12
   1666 
   1667 	lea	rbp,QWORD PTR[24+rbp]
   1668 	cmp	BYTE PTR[7+rbp],0
   1669 	jnz	$L$rounds_16_xx
   1670 
   1671 	mov	rdi,QWORD PTR[((128+0))+rsp]
   1672 	add	rax,r14
   1673 	lea	rsi,QWORD PTR[128+rsi]
   1674 
   1675 	add	rax,QWORD PTR[rdi]
   1676 	add	rbx,QWORD PTR[8+rdi]
   1677 	add	rcx,QWORD PTR[16+rdi]
   1678 	add	rdx,QWORD PTR[24+rdi]
   1679 	add	r8,QWORD PTR[32+rdi]
   1680 	add	r9,QWORD PTR[40+rdi]
   1681 	add	r10,QWORD PTR[48+rdi]
   1682 	add	r11,QWORD PTR[56+rdi]
   1683 
   1684 	cmp	rsi,QWORD PTR[((128+16))+rsp]
   1685 
   1686 	mov	QWORD PTR[rdi],rax
   1687 	mov	QWORD PTR[8+rdi],rbx
   1688 	mov	QWORD PTR[16+rdi],rcx
   1689 	mov	QWORD PTR[24+rdi],rdx
   1690 	mov	QWORD PTR[32+rdi],r8
   1691 	mov	QWORD PTR[40+rdi],r9
   1692 	mov	QWORD PTR[48+rdi],r10
   1693 	mov	QWORD PTR[56+rdi],r11
   1694 	jb	$L$loop
   1695 
   1696 	mov	rsi,QWORD PTR[((128+24))+rsp]
   1697 	mov	r15,QWORD PTR[rsi]
   1698 	mov	r14,QWORD PTR[8+rsi]
   1699 	mov	r13,QWORD PTR[16+rsi]
   1700 	mov	r12,QWORD PTR[24+rsi]
   1701 	mov	rbp,QWORD PTR[32+rsi]
   1702 	mov	rbx,QWORD PTR[40+rsi]
   1703 	lea	rsp,QWORD PTR[48+rsi]
   1704 $L$epilogue::
   1705 	mov	rdi,QWORD PTR[8+rsp]	;WIN64 epilogue
   1706 	mov	rsi,QWORD PTR[16+rsp]
   1707 	DB	0F3h,0C3h		;repret
   1708 $L$SEH_end_sha512_block_data_order::
   1709 sha512_block_data_order	ENDP
   1710 ALIGN	64
   1711 
   1712 K512::
   1713 	DQ	0428a2f98d728ae22h,07137449123ef65cdh
   1714 	DQ	0428a2f98d728ae22h,07137449123ef65cdh
   1715 	DQ	0b5c0fbcfec4d3b2fh,0e9b5dba58189dbbch
   1716 	DQ	0b5c0fbcfec4d3b2fh,0e9b5dba58189dbbch
   1717 	DQ	03956c25bf348b538h,059f111f1b605d019h
   1718 	DQ	03956c25bf348b538h,059f111f1b605d019h
   1719 	DQ	0923f82a4af194f9bh,0ab1c5ed5da6d8118h
   1720 	DQ	0923f82a4af194f9bh,0ab1c5ed5da6d8118h
   1721 	DQ	0d807aa98a3030242h,012835b0145706fbeh
   1722 	DQ	0d807aa98a3030242h,012835b0145706fbeh
   1723 	DQ	0243185be4ee4b28ch,0550c7dc3d5ffb4e2h
   1724 	DQ	0243185be4ee4b28ch,0550c7dc3d5ffb4e2h
   1725 	DQ	072be5d74f27b896fh,080deb1fe3b1696b1h
   1726 	DQ	072be5d74f27b896fh,080deb1fe3b1696b1h
   1727 	DQ	09bdc06a725c71235h,0c19bf174cf692694h
   1728 	DQ	09bdc06a725c71235h,0c19bf174cf692694h
   1729 	DQ	0e49b69c19ef14ad2h,0efbe4786384f25e3h
   1730 	DQ	0e49b69c19ef14ad2h,0efbe4786384f25e3h
   1731 	DQ	00fc19dc68b8cd5b5h,0240ca1cc77ac9c65h
   1732 	DQ	00fc19dc68b8cd5b5h,0240ca1cc77ac9c65h
   1733 	DQ	02de92c6f592b0275h,04a7484aa6ea6e483h
   1734 	DQ	02de92c6f592b0275h,04a7484aa6ea6e483h
   1735 	DQ	05cb0a9dcbd41fbd4h,076f988da831153b5h
   1736 	DQ	05cb0a9dcbd41fbd4h,076f988da831153b5h
   1737 	DQ	0983e5152ee66dfabh,0a831c66d2db43210h
   1738 	DQ	0983e5152ee66dfabh,0a831c66d2db43210h
   1739 	DQ	0b00327c898fb213fh,0bf597fc7beef0ee4h
   1740 	DQ	0b00327c898fb213fh,0bf597fc7beef0ee4h
   1741 	DQ	0c6e00bf33da88fc2h,0d5a79147930aa725h
   1742 	DQ	0c6e00bf33da88fc2h,0d5a79147930aa725h
   1743 	DQ	006ca6351e003826fh,0142929670a0e6e70h
   1744 	DQ	006ca6351e003826fh,0142929670a0e6e70h
   1745 	DQ	027b70a8546d22ffch,02e1b21385c26c926h
   1746 	DQ	027b70a8546d22ffch,02e1b21385c26c926h
   1747 	DQ	04d2c6dfc5ac42aedh,053380d139d95b3dfh
   1748 	DQ	04d2c6dfc5ac42aedh,053380d139d95b3dfh
   1749 	DQ	0650a73548baf63deh,0766a0abb3c77b2a8h
   1750 	DQ	0650a73548baf63deh,0766a0abb3c77b2a8h
   1751 	DQ	081c2c92e47edaee6h,092722c851482353bh
   1752 	DQ	081c2c92e47edaee6h,092722c851482353bh
   1753 	DQ	0a2bfe8a14cf10364h,0a81a664bbc423001h
   1754 	DQ	0a2bfe8a14cf10364h,0a81a664bbc423001h
   1755 	DQ	0c24b8b70d0f89791h,0c76c51a30654be30h
   1756 	DQ	0c24b8b70d0f89791h,0c76c51a30654be30h
   1757 	DQ	0d192e819d6ef5218h,0d69906245565a910h
   1758 	DQ	0d192e819d6ef5218h,0d69906245565a910h
   1759 	DQ	0f40e35855771202ah,0106aa07032bbd1b8h
   1760 	DQ	0f40e35855771202ah,0106aa07032bbd1b8h
   1761 	DQ	019a4c116b8d2d0c8h,01e376c085141ab53h
   1762 	DQ	019a4c116b8d2d0c8h,01e376c085141ab53h
   1763 	DQ	02748774cdf8eeb99h,034b0bcb5e19b48a8h
   1764 	DQ	02748774cdf8eeb99h,034b0bcb5e19b48a8h
   1765 	DQ	0391c0cb3c5c95a63h,04ed8aa4ae3418acbh
   1766 	DQ	0391c0cb3c5c95a63h,04ed8aa4ae3418acbh
   1767 	DQ	05b9cca4f7763e373h,0682e6ff3d6b2b8a3h
   1768 	DQ	05b9cca4f7763e373h,0682e6ff3d6b2b8a3h
   1769 	DQ	0748f82ee5defb2fch,078a5636f43172f60h
   1770 	DQ	0748f82ee5defb2fch,078a5636f43172f60h
   1771 	DQ	084c87814a1f0ab72h,08cc702081a6439ech
   1772 	DQ	084c87814a1f0ab72h,08cc702081a6439ech
   1773 	DQ	090befffa23631e28h,0a4506cebde82bde9h
   1774 	DQ	090befffa23631e28h,0a4506cebde82bde9h
   1775 	DQ	0bef9a3f7b2c67915h,0c67178f2e372532bh
   1776 	DQ	0bef9a3f7b2c67915h,0c67178f2e372532bh
   1777 	DQ	0ca273eceea26619ch,0d186b8c721c0c207h
   1778 	DQ	0ca273eceea26619ch,0d186b8c721c0c207h
   1779 	DQ	0eada7dd6cde0eb1eh,0f57d4f7fee6ed178h
   1780 	DQ	0eada7dd6cde0eb1eh,0f57d4f7fee6ed178h
   1781 	DQ	006f067aa72176fbah,00a637dc5a2c898a6h
   1782 	DQ	006f067aa72176fbah,00a637dc5a2c898a6h
   1783 	DQ	0113f9804bef90daeh,01b710b35131c471bh
   1784 	DQ	0113f9804bef90daeh,01b710b35131c471bh
   1785 	DQ	028db77f523047d84h,032caab7b40c72493h
   1786 	DQ	028db77f523047d84h,032caab7b40c72493h
   1787 	DQ	03c9ebe0a15c9bebch,0431d67c49c100d4ch
   1788 	DQ	03c9ebe0a15c9bebch,0431d67c49c100d4ch
   1789 	DQ	04cc5d4becb3e42b6h,0597f299cfc657e2ah
   1790 	DQ	04cc5d4becb3e42b6h,0597f299cfc657e2ah
   1791 	DQ	05fcb6fab3ad6faech,06c44198c4a475817h
   1792 	DQ	05fcb6fab3ad6faech,06c44198c4a475817h
   1793 
   1794 	DQ	00001020304050607h,008090a0b0c0d0e0fh
   1795 	DQ	00001020304050607h,008090a0b0c0d0e0fh
   1796 DB	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
   1797 DB	110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54
   1798 DB	52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
   1799 DB	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
   1800 DB	111,114,103,62,0
   1801 EXTERN	__imp_RtlVirtualUnwind:NEAR
   1802 
   1803 ALIGN	16
   1804 se_handler	PROC PRIVATE
   1805 	push	rsi
   1806 	push	rdi
   1807 	push	rbx
   1808 	push	rbp
   1809 	push	r12
   1810 	push	r13
   1811 	push	r14
   1812 	push	r15
   1813 	pushfq
   1814 	sub	rsp,64
   1815 
   1816 	mov	rax,QWORD PTR[120+r8]
   1817 	mov	rbx,QWORD PTR[248+r8]
   1818 
   1819 	mov	rsi,QWORD PTR[8+r9]
   1820 	mov	r11,QWORD PTR[56+r9]
   1821 
   1822 	mov	r10d,DWORD PTR[r11]
   1823 	lea	r10,QWORD PTR[r10*1+rsi]
   1824 	cmp	rbx,r10
   1825 	jb	$L$in_prologue
   1826 
   1827 	mov	rax,QWORD PTR[152+r8]
   1828 
   1829 	mov	r10d,DWORD PTR[4+r11]
   1830 	lea	r10,QWORD PTR[r10*1+rsi]
   1831 	cmp	rbx,r10
   1832 	jae	$L$in_prologue
   1833 	mov	rsi,rax
   1834 	mov	rax,QWORD PTR[((128+24))+rax]
   1835 	lea	rax,QWORD PTR[48+rax]
   1836 
   1837 	mov	rbx,QWORD PTR[((-8))+rax]
   1838 	mov	rbp,QWORD PTR[((-16))+rax]
   1839 	mov	r12,QWORD PTR[((-24))+rax]
   1840 	mov	r13,QWORD PTR[((-32))+rax]
   1841 	mov	r14,QWORD PTR[((-40))+rax]
   1842 	mov	r15,QWORD PTR[((-48))+rax]
   1843 	mov	QWORD PTR[144+r8],rbx
   1844 	mov	QWORD PTR[160+r8],rbp
   1845 	mov	QWORD PTR[216+r8],r12
   1846 	mov	QWORD PTR[224+r8],r13
   1847 	mov	QWORD PTR[232+r8],r14
   1848 	mov	QWORD PTR[240+r8],r15
   1849 
   1850 	lea	r10,QWORD PTR[$L$epilogue]
   1851 	cmp	rbx,r10
   1852 	jb	$L$in_prologue
   1853 
   1854 	lea	rsi,QWORD PTR[((128+32))+rsi]
   1855 	lea	rdi,QWORD PTR[512+r8]
   1856 	mov	ecx,12
   1857 	DD	0a548f3fch
   1858 
   1859 $L$in_prologue::
   1860 	mov	rdi,QWORD PTR[8+rax]
   1861 	mov	rsi,QWORD PTR[16+rax]
   1862 	mov	QWORD PTR[152+r8],rax
   1863 	mov	QWORD PTR[168+r8],rsi
   1864 	mov	QWORD PTR[176+r8],rdi
   1865 
   1866 	mov	rdi,QWORD PTR[40+r9]
   1867 	mov	rsi,r8
   1868 	mov	ecx,154
   1869 	DD	0a548f3fch
   1870 
   1871 	mov	rsi,r9
   1872 	xor	rcx,rcx
   1873 	mov	rdx,QWORD PTR[8+rsi]
   1874 	mov	r8,QWORD PTR[rsi]
   1875 	mov	r9,QWORD PTR[16+rsi]
   1876 	mov	r10,QWORD PTR[40+rsi]
   1877 	lea	r11,QWORD PTR[56+rsi]
   1878 	lea	r12,QWORD PTR[24+rsi]
   1879 	mov	QWORD PTR[32+rsp],r10
   1880 	mov	QWORD PTR[40+rsp],r11
   1881 	mov	QWORD PTR[48+rsp],r12
   1882 	mov	QWORD PTR[56+rsp],rcx
   1883 	call	QWORD PTR[__imp_RtlVirtualUnwind]
   1884 
   1885 	mov	eax,1
   1886 	add	rsp,64
   1887 	popfq
   1888 	pop	r15
   1889 	pop	r14
   1890 	pop	r13
   1891 	pop	r12
   1892 	pop	rbp
   1893 	pop	rbx
   1894 	pop	rdi
   1895 	pop	rsi
   1896 	DB	0F3h,0C3h		;repret
   1897 se_handler	ENDP
   1898 .text$	ENDS
   1899 .pdata	SEGMENT READONLY ALIGN(4)
   1900 ALIGN	4
   1901 	DD	imagerel $L$SEH_begin_sha512_block_data_order
   1902 	DD	imagerel $L$SEH_end_sha512_block_data_order
   1903 	DD	imagerel $L$SEH_info_sha512_block_data_order
   1904 .pdata	ENDS
   1905 .xdata	SEGMENT READONLY ALIGN(8)
   1906 ALIGN	8
   1907 $L$SEH_info_sha512_block_data_order::
   1908 DB	9,0,0,0
   1909 	DD	imagerel se_handler
   1910 	DD	imagerel $L$prologue,imagerel $L$epilogue
   1911 
   1912 .xdata	ENDS
   1913 END
   1914