Home | History | Annotate | Download | only in fipsmodule
      1 default	rel
      2 %define XMMWORD
      3 %define YMMWORD
      4 %define ZMMWORD
      5 section	.text code align=64
      6 
      7 ALIGN	16
      8 
      9 global	md5_block_asm_data_order
     10 
     11 md5_block_asm_data_order:
     12 	mov	QWORD[8+rsp],rdi	;WIN64 prologue
     13 	mov	QWORD[16+rsp],rsi
     14 	mov	rax,rsp
     15 $L$SEH_begin_md5_block_asm_data_order:
     16 	mov	rdi,rcx
     17 	mov	rsi,rdx
     18 	mov	rdx,r8
     19 
     20 
     21 	push	rbp
     22 	push	rbx
     23 	push	r12
     24 	push	r14
     25 	push	r15
     26 $L$prologue:
     27 
     28 
     29 
     30 
     31 	mov	rbp,rdi
     32 	shl	rdx,6
     33 	lea	rdi,[rdx*1+rsi]
     34 	mov	eax,DWORD[rbp]
     35 	mov	ebx,DWORD[4+rbp]
     36 	mov	ecx,DWORD[8+rbp]
     37 	mov	edx,DWORD[12+rbp]
     38 
     39 
     40 
     41 
     42 
     43 
     44 
     45 	cmp	rsi,rdi
     46 	je	NEAR $L$end
     47 
     48 
     49 $L$loop:
     50 	mov	r8d,eax
     51 	mov	r9d,ebx
     52 	mov	r14d,ecx
     53 	mov	r15d,edx
     54 	mov	r10d,DWORD[rsi]
     55 	mov	r11d,edx
     56 	xor	r11d,ecx
     57 	lea	eax,[((-680876936))+r10*1+rax]
     58 	and	r11d,ebx
     59 	xor	r11d,edx
     60 	mov	r10d,DWORD[4+rsi]
     61 	add	eax,r11d
     62 	rol	eax,7
     63 	mov	r11d,ecx
     64 	add	eax,ebx
     65 	xor	r11d,ebx
     66 	lea	edx,[((-389564586))+r10*1+rdx]
     67 	and	r11d,eax
     68 	xor	r11d,ecx
     69 	mov	r10d,DWORD[8+rsi]
     70 	add	edx,r11d
     71 	rol	edx,12
     72 	mov	r11d,ebx
     73 	add	edx,eax
     74 	xor	r11d,eax
     75 	lea	ecx,[606105819+r10*1+rcx]
     76 	and	r11d,edx
     77 	xor	r11d,ebx
     78 	mov	r10d,DWORD[12+rsi]
     79 	add	ecx,r11d
     80 	rol	ecx,17
     81 	mov	r11d,eax
     82 	add	ecx,edx
     83 	xor	r11d,edx
     84 	lea	ebx,[((-1044525330))+r10*1+rbx]
     85 	and	r11d,ecx
     86 	xor	r11d,eax
     87 	mov	r10d,DWORD[16+rsi]
     88 	add	ebx,r11d
     89 	rol	ebx,22
     90 	mov	r11d,edx
     91 	add	ebx,ecx
     92 	xor	r11d,ecx
     93 	lea	eax,[((-176418897))+r10*1+rax]
     94 	and	r11d,ebx
     95 	xor	r11d,edx
     96 	mov	r10d,DWORD[20+rsi]
     97 	add	eax,r11d
     98 	rol	eax,7
     99 	mov	r11d,ecx
    100 	add	eax,ebx
    101 	xor	r11d,ebx
    102 	lea	edx,[1200080426+r10*1+rdx]
    103 	and	r11d,eax
    104 	xor	r11d,ecx
    105 	mov	r10d,DWORD[24+rsi]
    106 	add	edx,r11d
    107 	rol	edx,12
    108 	mov	r11d,ebx
    109 	add	edx,eax
    110 	xor	r11d,eax
    111 	lea	ecx,[((-1473231341))+r10*1+rcx]
    112 	and	r11d,edx
    113 	xor	r11d,ebx
    114 	mov	r10d,DWORD[28+rsi]
    115 	add	ecx,r11d
    116 	rol	ecx,17
    117 	mov	r11d,eax
    118 	add	ecx,edx
    119 	xor	r11d,edx
    120 	lea	ebx,[((-45705983))+r10*1+rbx]
    121 	and	r11d,ecx
    122 	xor	r11d,eax
    123 	mov	r10d,DWORD[32+rsi]
    124 	add	ebx,r11d
    125 	rol	ebx,22
    126 	mov	r11d,edx
    127 	add	ebx,ecx
    128 	xor	r11d,ecx
    129 	lea	eax,[1770035416+r10*1+rax]
    130 	and	r11d,ebx
    131 	xor	r11d,edx
    132 	mov	r10d,DWORD[36+rsi]
    133 	add	eax,r11d
    134 	rol	eax,7
    135 	mov	r11d,ecx
    136 	add	eax,ebx
    137 	xor	r11d,ebx
    138 	lea	edx,[((-1958414417))+r10*1+rdx]
    139 	and	r11d,eax
    140 	xor	r11d,ecx
    141 	mov	r10d,DWORD[40+rsi]
    142 	add	edx,r11d
    143 	rol	edx,12
    144 	mov	r11d,ebx
    145 	add	edx,eax
    146 	xor	r11d,eax
    147 	lea	ecx,[((-42063))+r10*1+rcx]
    148 	and	r11d,edx
    149 	xor	r11d,ebx
    150 	mov	r10d,DWORD[44+rsi]
    151 	add	ecx,r11d
    152 	rol	ecx,17
    153 	mov	r11d,eax
    154 	add	ecx,edx
    155 	xor	r11d,edx
    156 	lea	ebx,[((-1990404162))+r10*1+rbx]
    157 	and	r11d,ecx
    158 	xor	r11d,eax
    159 	mov	r10d,DWORD[48+rsi]
    160 	add	ebx,r11d
    161 	rol	ebx,22
    162 	mov	r11d,edx
    163 	add	ebx,ecx
    164 	xor	r11d,ecx
    165 	lea	eax,[1804603682+r10*1+rax]
    166 	and	r11d,ebx
    167 	xor	r11d,edx
    168 	mov	r10d,DWORD[52+rsi]
    169 	add	eax,r11d
    170 	rol	eax,7
    171 	mov	r11d,ecx
    172 	add	eax,ebx
    173 	xor	r11d,ebx
    174 	lea	edx,[((-40341101))+r10*1+rdx]
    175 	and	r11d,eax
    176 	xor	r11d,ecx
    177 	mov	r10d,DWORD[56+rsi]
    178 	add	edx,r11d
    179 	rol	edx,12
    180 	mov	r11d,ebx
    181 	add	edx,eax
    182 	xor	r11d,eax
    183 	lea	ecx,[((-1502002290))+r10*1+rcx]
    184 	and	r11d,edx
    185 	xor	r11d,ebx
    186 	mov	r10d,DWORD[60+rsi]
    187 	add	ecx,r11d
    188 	rol	ecx,17
    189 	mov	r11d,eax
    190 	add	ecx,edx
    191 	xor	r11d,edx
    192 	lea	ebx,[1236535329+r10*1+rbx]
    193 	and	r11d,ecx
    194 	xor	r11d,eax
    195 	mov	r10d,DWORD[rsi]
    196 	add	ebx,r11d
    197 	rol	ebx,22
    198 	mov	r11d,edx
    199 	add	ebx,ecx
    200 	mov	r10d,DWORD[4+rsi]
    201 	mov	r11d,edx
    202 	mov	r12d,edx
    203 	not	r11d
    204 	lea	eax,[((-165796510))+r10*1+rax]
    205 	and	r12d,ebx
    206 	and	r11d,ecx
    207 	mov	r10d,DWORD[24+rsi]
    208 	or	r12d,r11d
    209 	mov	r11d,ecx
    210 	add	eax,r12d
    211 	mov	r12d,ecx
    212 	rol	eax,5
    213 	add	eax,ebx
    214 	not	r11d
    215 	lea	edx,[((-1069501632))+r10*1+rdx]
    216 	and	r12d,eax
    217 	and	r11d,ebx
    218 	mov	r10d,DWORD[44+rsi]
    219 	or	r12d,r11d
    220 	mov	r11d,ebx
    221 	add	edx,r12d
    222 	mov	r12d,ebx
    223 	rol	edx,9
    224 	add	edx,eax
    225 	not	r11d
    226 	lea	ecx,[643717713+r10*1+rcx]
    227 	and	r12d,edx
    228 	and	r11d,eax
    229 	mov	r10d,DWORD[rsi]
    230 	or	r12d,r11d
    231 	mov	r11d,eax
    232 	add	ecx,r12d
    233 	mov	r12d,eax
    234 	rol	ecx,14
    235 	add	ecx,edx
    236 	not	r11d
    237 	lea	ebx,[((-373897302))+r10*1+rbx]
    238 	and	r12d,ecx
    239 	and	r11d,edx
    240 	mov	r10d,DWORD[20+rsi]
    241 	or	r12d,r11d
    242 	mov	r11d,edx
    243 	add	ebx,r12d
    244 	mov	r12d,edx
    245 	rol	ebx,20
    246 	add	ebx,ecx
    247 	not	r11d
    248 	lea	eax,[((-701558691))+r10*1+rax]
    249 	and	r12d,ebx
    250 	and	r11d,ecx
    251 	mov	r10d,DWORD[40+rsi]
    252 	or	r12d,r11d
    253 	mov	r11d,ecx
    254 	add	eax,r12d
    255 	mov	r12d,ecx
    256 	rol	eax,5
    257 	add	eax,ebx
    258 	not	r11d
    259 	lea	edx,[38016083+r10*1+rdx]
    260 	and	r12d,eax
    261 	and	r11d,ebx
    262 	mov	r10d,DWORD[60+rsi]
    263 	or	r12d,r11d
    264 	mov	r11d,ebx
    265 	add	edx,r12d
    266 	mov	r12d,ebx
    267 	rol	edx,9
    268 	add	edx,eax
    269 	not	r11d
    270 	lea	ecx,[((-660478335))+r10*1+rcx]
    271 	and	r12d,edx
    272 	and	r11d,eax
    273 	mov	r10d,DWORD[16+rsi]
    274 	or	r12d,r11d
    275 	mov	r11d,eax
    276 	add	ecx,r12d
    277 	mov	r12d,eax
    278 	rol	ecx,14
    279 	add	ecx,edx
    280 	not	r11d
    281 	lea	ebx,[((-405537848))+r10*1+rbx]
    282 	and	r12d,ecx
    283 	and	r11d,edx
    284 	mov	r10d,DWORD[36+rsi]
    285 	or	r12d,r11d
    286 	mov	r11d,edx
    287 	add	ebx,r12d
    288 	mov	r12d,edx
    289 	rol	ebx,20
    290 	add	ebx,ecx
    291 	not	r11d
    292 	lea	eax,[568446438+r10*1+rax]
    293 	and	r12d,ebx
    294 	and	r11d,ecx
    295 	mov	r10d,DWORD[56+rsi]
    296 	or	r12d,r11d
    297 	mov	r11d,ecx
    298 	add	eax,r12d
    299 	mov	r12d,ecx
    300 	rol	eax,5
    301 	add	eax,ebx
    302 	not	r11d
    303 	lea	edx,[((-1019803690))+r10*1+rdx]
    304 	and	r12d,eax
    305 	and	r11d,ebx
    306 	mov	r10d,DWORD[12+rsi]
    307 	or	r12d,r11d
    308 	mov	r11d,ebx
    309 	add	edx,r12d
    310 	mov	r12d,ebx
    311 	rol	edx,9
    312 	add	edx,eax
    313 	not	r11d
    314 	lea	ecx,[((-187363961))+r10*1+rcx]
    315 	and	r12d,edx
    316 	and	r11d,eax
    317 	mov	r10d,DWORD[32+rsi]
    318 	or	r12d,r11d
    319 	mov	r11d,eax
    320 	add	ecx,r12d
    321 	mov	r12d,eax
    322 	rol	ecx,14
    323 	add	ecx,edx
    324 	not	r11d
    325 	lea	ebx,[1163531501+r10*1+rbx]
    326 	and	r12d,ecx
    327 	and	r11d,edx
    328 	mov	r10d,DWORD[52+rsi]
    329 	or	r12d,r11d
    330 	mov	r11d,edx
    331 	add	ebx,r12d
    332 	mov	r12d,edx
    333 	rol	ebx,20
    334 	add	ebx,ecx
    335 	not	r11d
    336 	lea	eax,[((-1444681467))+r10*1+rax]
    337 	and	r12d,ebx
    338 	and	r11d,ecx
    339 	mov	r10d,DWORD[8+rsi]
    340 	or	r12d,r11d
    341 	mov	r11d,ecx
    342 	add	eax,r12d
    343 	mov	r12d,ecx
    344 	rol	eax,5
    345 	add	eax,ebx
    346 	not	r11d
    347 	lea	edx,[((-51403784))+r10*1+rdx]
    348 	and	r12d,eax
    349 	and	r11d,ebx
    350 	mov	r10d,DWORD[28+rsi]
    351 	or	r12d,r11d
    352 	mov	r11d,ebx
    353 	add	edx,r12d
    354 	mov	r12d,ebx
    355 	rol	edx,9
    356 	add	edx,eax
    357 	not	r11d
    358 	lea	ecx,[1735328473+r10*1+rcx]
    359 	and	r12d,edx
    360 	and	r11d,eax
    361 	mov	r10d,DWORD[48+rsi]
    362 	or	r12d,r11d
    363 	mov	r11d,eax
    364 	add	ecx,r12d
    365 	mov	r12d,eax
    366 	rol	ecx,14
    367 	add	ecx,edx
    368 	not	r11d
    369 	lea	ebx,[((-1926607734))+r10*1+rbx]
    370 	and	r12d,ecx
    371 	and	r11d,edx
    372 	mov	r10d,DWORD[rsi]
    373 	or	r12d,r11d
    374 	mov	r11d,edx
    375 	add	ebx,r12d
    376 	mov	r12d,edx
    377 	rol	ebx,20
    378 	add	ebx,ecx
    379 	mov	r10d,DWORD[20+rsi]
    380 	mov	r11d,ecx
    381 	lea	eax,[((-378558))+r10*1+rax]
    382 	mov	r10d,DWORD[32+rsi]
    383 	xor	r11d,edx
    384 	xor	r11d,ebx
    385 	add	eax,r11d
    386 	rol	eax,4
    387 	mov	r11d,ebx
    388 	add	eax,ebx
    389 	lea	edx,[((-2022574463))+r10*1+rdx]
    390 	mov	r10d,DWORD[44+rsi]
    391 	xor	r11d,ecx
    392 	xor	r11d,eax
    393 	add	edx,r11d
    394 	rol	edx,11
    395 	mov	r11d,eax
    396 	add	edx,eax
    397 	lea	ecx,[1839030562+r10*1+rcx]
    398 	mov	r10d,DWORD[56+rsi]
    399 	xor	r11d,ebx
    400 	xor	r11d,edx
    401 	add	ecx,r11d
    402 	rol	ecx,16
    403 	mov	r11d,edx
    404 	add	ecx,edx
    405 	lea	ebx,[((-35309556))+r10*1+rbx]
    406 	mov	r10d,DWORD[4+rsi]
    407 	xor	r11d,eax
    408 	xor	r11d,ecx
    409 	add	ebx,r11d
    410 	rol	ebx,23
    411 	mov	r11d,ecx
    412 	add	ebx,ecx
    413 	lea	eax,[((-1530992060))+r10*1+rax]
    414 	mov	r10d,DWORD[16+rsi]
    415 	xor	r11d,edx
    416 	xor	r11d,ebx
    417 	add	eax,r11d
    418 	rol	eax,4
    419 	mov	r11d,ebx
    420 	add	eax,ebx
    421 	lea	edx,[1272893353+r10*1+rdx]
    422 	mov	r10d,DWORD[28+rsi]
    423 	xor	r11d,ecx
    424 	xor	r11d,eax
    425 	add	edx,r11d
    426 	rol	edx,11
    427 	mov	r11d,eax
    428 	add	edx,eax
    429 	lea	ecx,[((-155497632))+r10*1+rcx]
    430 	mov	r10d,DWORD[40+rsi]
    431 	xor	r11d,ebx
    432 	xor	r11d,edx
    433 	add	ecx,r11d
    434 	rol	ecx,16
    435 	mov	r11d,edx
    436 	add	ecx,edx
    437 	lea	ebx,[((-1094730640))+r10*1+rbx]
    438 	mov	r10d,DWORD[52+rsi]
    439 	xor	r11d,eax
    440 	xor	r11d,ecx
    441 	add	ebx,r11d
    442 	rol	ebx,23
    443 	mov	r11d,ecx
    444 	add	ebx,ecx
    445 	lea	eax,[681279174+r10*1+rax]
    446 	mov	r10d,DWORD[rsi]
    447 	xor	r11d,edx
    448 	xor	r11d,ebx
    449 	add	eax,r11d
    450 	rol	eax,4
    451 	mov	r11d,ebx
    452 	add	eax,ebx
    453 	lea	edx,[((-358537222))+r10*1+rdx]
    454 	mov	r10d,DWORD[12+rsi]
    455 	xor	r11d,ecx
    456 	xor	r11d,eax
    457 	add	edx,r11d
    458 	rol	edx,11
    459 	mov	r11d,eax
    460 	add	edx,eax
    461 	lea	ecx,[((-722521979))+r10*1+rcx]
    462 	mov	r10d,DWORD[24+rsi]
    463 	xor	r11d,ebx
    464 	xor	r11d,edx
    465 	add	ecx,r11d
    466 	rol	ecx,16
    467 	mov	r11d,edx
    468 	add	ecx,edx
    469 	lea	ebx,[76029189+r10*1+rbx]
    470 	mov	r10d,DWORD[36+rsi]
    471 	xor	r11d,eax
    472 	xor	r11d,ecx
    473 	add	ebx,r11d
    474 	rol	ebx,23
    475 	mov	r11d,ecx
    476 	add	ebx,ecx
    477 	lea	eax,[((-640364487))+r10*1+rax]
    478 	mov	r10d,DWORD[48+rsi]
    479 	xor	r11d,edx
    480 	xor	r11d,ebx
    481 	add	eax,r11d
    482 	rol	eax,4
    483 	mov	r11d,ebx
    484 	add	eax,ebx
    485 	lea	edx,[((-421815835))+r10*1+rdx]
    486 	mov	r10d,DWORD[60+rsi]
    487 	xor	r11d,ecx
    488 	xor	r11d,eax
    489 	add	edx,r11d
    490 	rol	edx,11
    491 	mov	r11d,eax
    492 	add	edx,eax
    493 	lea	ecx,[530742520+r10*1+rcx]
    494 	mov	r10d,DWORD[8+rsi]
    495 	xor	r11d,ebx
    496 	xor	r11d,edx
    497 	add	ecx,r11d
    498 	rol	ecx,16
    499 	mov	r11d,edx
    500 	add	ecx,edx
    501 	lea	ebx,[((-995338651))+r10*1+rbx]
    502 	mov	r10d,DWORD[rsi]
    503 	xor	r11d,eax
    504 	xor	r11d,ecx
    505 	add	ebx,r11d
    506 	rol	ebx,23
    507 	mov	r11d,ecx
    508 	add	ebx,ecx
    509 	mov	r10d,DWORD[rsi]
    510 	mov	r11d,0xffffffff
    511 	xor	r11d,edx
    512 	lea	eax,[((-198630844))+r10*1+rax]
    513 	or	r11d,ebx
    514 	xor	r11d,ecx
    515 	add	eax,r11d
    516 	mov	r10d,DWORD[28+rsi]
    517 	mov	r11d,0xffffffff
    518 	rol	eax,6
    519 	xor	r11d,ecx
    520 	add	eax,ebx
    521 	lea	edx,[1126891415+r10*1+rdx]
    522 	or	r11d,eax
    523 	xor	r11d,ebx
    524 	add	edx,r11d
    525 	mov	r10d,DWORD[56+rsi]
    526 	mov	r11d,0xffffffff
    527 	rol	edx,10
    528 	xor	r11d,ebx
    529 	add	edx,eax
    530 	lea	ecx,[((-1416354905))+r10*1+rcx]
    531 	or	r11d,edx
    532 	xor	r11d,eax
    533 	add	ecx,r11d
    534 	mov	r10d,DWORD[20+rsi]
    535 	mov	r11d,0xffffffff
    536 	rol	ecx,15
    537 	xor	r11d,eax
    538 	add	ecx,edx
    539 	lea	ebx,[((-57434055))+r10*1+rbx]
    540 	or	r11d,ecx
    541 	xor	r11d,edx
    542 	add	ebx,r11d
    543 	mov	r10d,DWORD[48+rsi]
    544 	mov	r11d,0xffffffff
    545 	rol	ebx,21
    546 	xor	r11d,edx
    547 	add	ebx,ecx
    548 	lea	eax,[1700485571+r10*1+rax]
    549 	or	r11d,ebx
    550 	xor	r11d,ecx
    551 	add	eax,r11d
    552 	mov	r10d,DWORD[12+rsi]
    553 	mov	r11d,0xffffffff
    554 	rol	eax,6
    555 	xor	r11d,ecx
    556 	add	eax,ebx
    557 	lea	edx,[((-1894986606))+r10*1+rdx]
    558 	or	r11d,eax
    559 	xor	r11d,ebx
    560 	add	edx,r11d
    561 	mov	r10d,DWORD[40+rsi]
    562 	mov	r11d,0xffffffff
    563 	rol	edx,10
    564 	xor	r11d,ebx
    565 	add	edx,eax
    566 	lea	ecx,[((-1051523))+r10*1+rcx]
    567 	or	r11d,edx
    568 	xor	r11d,eax
    569 	add	ecx,r11d
    570 	mov	r10d,DWORD[4+rsi]
    571 	mov	r11d,0xffffffff
    572 	rol	ecx,15
    573 	xor	r11d,eax
    574 	add	ecx,edx
    575 	lea	ebx,[((-2054922799))+r10*1+rbx]
    576 	or	r11d,ecx
    577 	xor	r11d,edx
    578 	add	ebx,r11d
    579 	mov	r10d,DWORD[32+rsi]
    580 	mov	r11d,0xffffffff
    581 	rol	ebx,21
    582 	xor	r11d,edx
    583 	add	ebx,ecx
    584 	lea	eax,[1873313359+r10*1+rax]
    585 	or	r11d,ebx
    586 	xor	r11d,ecx
    587 	add	eax,r11d
    588 	mov	r10d,DWORD[60+rsi]
    589 	mov	r11d,0xffffffff
    590 	rol	eax,6
    591 	xor	r11d,ecx
    592 	add	eax,ebx
    593 	lea	edx,[((-30611744))+r10*1+rdx]
    594 	or	r11d,eax
    595 	xor	r11d,ebx
    596 	add	edx,r11d
    597 	mov	r10d,DWORD[24+rsi]
    598 	mov	r11d,0xffffffff
    599 	rol	edx,10
    600 	xor	r11d,ebx
    601 	add	edx,eax
    602 	lea	ecx,[((-1560198380))+r10*1+rcx]
    603 	or	r11d,edx
    604 	xor	r11d,eax
    605 	add	ecx,r11d
    606 	mov	r10d,DWORD[52+rsi]
    607 	mov	r11d,0xffffffff
    608 	rol	ecx,15
    609 	xor	r11d,eax
    610 	add	ecx,edx
    611 	lea	ebx,[1309151649+r10*1+rbx]
    612 	or	r11d,ecx
    613 	xor	r11d,edx
    614 	add	ebx,r11d
    615 	mov	r10d,DWORD[16+rsi]
    616 	mov	r11d,0xffffffff
    617 	rol	ebx,21
    618 	xor	r11d,edx
    619 	add	ebx,ecx
    620 	lea	eax,[((-145523070))+r10*1+rax]
    621 	or	r11d,ebx
    622 	xor	r11d,ecx
    623 	add	eax,r11d
    624 	mov	r10d,DWORD[44+rsi]
    625 	mov	r11d,0xffffffff
    626 	rol	eax,6
    627 	xor	r11d,ecx
    628 	add	eax,ebx
    629 	lea	edx,[((-1120210379))+r10*1+rdx]
    630 	or	r11d,eax
    631 	xor	r11d,ebx
    632 	add	edx,r11d
    633 	mov	r10d,DWORD[8+rsi]
    634 	mov	r11d,0xffffffff
    635 	rol	edx,10
    636 	xor	r11d,ebx
    637 	add	edx,eax
    638 	lea	ecx,[718787259+r10*1+rcx]
    639 	or	r11d,edx
    640 	xor	r11d,eax
    641 	add	ecx,r11d
    642 	mov	r10d,DWORD[36+rsi]
    643 	mov	r11d,0xffffffff
    644 	rol	ecx,15
    645 	xor	r11d,eax
    646 	add	ecx,edx
    647 	lea	ebx,[((-343485551))+r10*1+rbx]
    648 	or	r11d,ecx
    649 	xor	r11d,edx
    650 	add	ebx,r11d
    651 	mov	r10d,DWORD[rsi]
    652 	mov	r11d,0xffffffff
    653 	rol	ebx,21
    654 	xor	r11d,edx
    655 	add	ebx,ecx
    656 
    657 	add	eax,r8d
    658 	add	ebx,r9d
    659 	add	ecx,r14d
    660 	add	edx,r15d
    661 
    662 
    663 	add	rsi,64
    664 	cmp	rsi,rdi
    665 	jb	NEAR $L$loop
    666 
    667 
    668 $L$end:
    669 	mov	DWORD[rbp],eax
    670 	mov	DWORD[4+rbp],ebx
    671 	mov	DWORD[8+rbp],ecx
    672 	mov	DWORD[12+rbp],edx
    673 
    674 	mov	r15,QWORD[rsp]
    675 	mov	r14,QWORD[8+rsp]
    676 	mov	r12,QWORD[16+rsp]
    677 	mov	rbx,QWORD[24+rsp]
    678 	mov	rbp,QWORD[32+rsp]
    679 	add	rsp,40
    680 $L$epilogue:
    681 	mov	rdi,QWORD[8+rsp]	;WIN64 epilogue
    682 	mov	rsi,QWORD[16+rsp]
    683 	DB	0F3h,0C3h		;repret
    684 $L$SEH_end_md5_block_asm_data_order:
    685 EXTERN	__imp_RtlVirtualUnwind
    686 
    687 ALIGN	16
    688 se_handler:
    689 	push	rsi
    690 	push	rdi
    691 	push	rbx
    692 	push	rbp
    693 	push	r12
    694 	push	r13
    695 	push	r14
    696 	push	r15
    697 	pushfq
    698 	sub	rsp,64
    699 
    700 	mov	rax,QWORD[120+r8]
    701 	mov	rbx,QWORD[248+r8]
    702 
    703 	lea	r10,[$L$prologue]
    704 	cmp	rbx,r10
    705 	jb	NEAR $L$in_prologue
    706 
    707 	mov	rax,QWORD[152+r8]
    708 
    709 	lea	r10,[$L$epilogue]
    710 	cmp	rbx,r10
    711 	jae	NEAR $L$in_prologue
    712 
    713 	lea	rax,[40+rax]
    714 
    715 	mov	rbp,QWORD[((-8))+rax]
    716 	mov	rbx,QWORD[((-16))+rax]
    717 	mov	r12,QWORD[((-24))+rax]
    718 	mov	r14,QWORD[((-32))+rax]
    719 	mov	r15,QWORD[((-40))+rax]
    720 	mov	QWORD[144+r8],rbx
    721 	mov	QWORD[160+r8],rbp
    722 	mov	QWORD[216+r8],r12
    723 	mov	QWORD[232+r8],r14
    724 	mov	QWORD[240+r8],r15
    725 
    726 $L$in_prologue:
    727 	mov	rdi,QWORD[8+rax]
    728 	mov	rsi,QWORD[16+rax]
    729 	mov	QWORD[152+r8],rax
    730 	mov	QWORD[168+r8],rsi
    731 	mov	QWORD[176+r8],rdi
    732 
    733 	mov	rdi,QWORD[40+r9]
    734 	mov	rsi,r8
    735 	mov	ecx,154
    736 	DD	0xa548f3fc
    737 
    738 	mov	rsi,r9
    739 	xor	rcx,rcx
    740 	mov	rdx,QWORD[8+rsi]
    741 	mov	r8,QWORD[rsi]
    742 	mov	r9,QWORD[16+rsi]
    743 	mov	r10,QWORD[40+rsi]
    744 	lea	r11,[56+rsi]
    745 	lea	r12,[24+rsi]
    746 	mov	QWORD[32+rsp],r10
    747 	mov	QWORD[40+rsp],r11
    748 	mov	QWORD[48+rsp],r12
    749 	mov	QWORD[56+rsp],rcx
    750 	call	QWORD[__imp_RtlVirtualUnwind]
    751 
    752 	mov	eax,1
    753 	add	rsp,64
    754 	popfq
    755 	pop	r15
    756 	pop	r14
    757 	pop	r13
    758 	pop	r12
    759 	pop	rbp
    760 	pop	rbx
    761 	pop	rdi
    762 	pop	rsi
    763 	DB	0F3h,0C3h		;repret
    764 
    765 
    766 section	.pdata rdata align=4
    767 ALIGN	4
    768 	DD	$L$SEH_begin_md5_block_asm_data_order wrt ..imagebase
    769 	DD	$L$SEH_end_md5_block_asm_data_order wrt ..imagebase
    770 	DD	$L$SEH_info_md5_block_asm_data_order wrt ..imagebase
    771 
    772 section	.xdata rdata align=8
    773 ALIGN	8
    774 $L$SEH_info_md5_block_asm_data_order:
    775 DB	9,0,0,0
    776 	DD	se_handler wrt ..imagebase
    777