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