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