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