1 # This file is generated from a similarly-named Perl script in the BoringSSL 2 # source tree. Do not edit by hand. 3 4 #if defined(__has_feature) 5 #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM) 6 #define OPENSSL_NO_ASM 7 #endif 8 #endif 9 10 #if defined(__x86_64__) && !defined(OPENSSL_NO_ASM) 11 #if defined(BORINGSSL_PREFIX) 12 #include <boringssl_prefix_symbols_asm.h> 13 #endif 14 .text 15 16 17 18 .p2align 6 19 L$poly: 20 .quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 21 22 L$One: 23 .long 1,1,1,1,1,1,1,1 24 L$Two: 25 .long 2,2,2,2,2,2,2,2 26 L$Three: 27 .long 3,3,3,3,3,3,3,3 28 L$ONE_mont: 29 .quad 0x0000000000000001, 0xffffffff00000000, 0xffffffffffffffff, 0x00000000fffffffe 30 31 32 L$ord: 33 .quad 0xf3b9cac2fc632551, 0xbce6faada7179e84, 0xffffffffffffffff, 0xffffffff00000000 34 L$ordK: 35 .quad 0xccd1c8aaee00bc4f 36 37 38 39 .globl _ecp_nistz256_neg 40 .private_extern _ecp_nistz256_neg 41 42 .p2align 5 43 _ecp_nistz256_neg: 44 45 pushq %r12 46 47 pushq %r13 48 49 L$neg_body: 50 51 xorq %r8,%r8 52 xorq %r9,%r9 53 xorq %r10,%r10 54 xorq %r11,%r11 55 xorq %r13,%r13 56 57 subq 0(%rsi),%r8 58 sbbq 8(%rsi),%r9 59 sbbq 16(%rsi),%r10 60 movq %r8,%rax 61 sbbq 24(%rsi),%r11 62 leaq L$poly(%rip),%rsi 63 movq %r9,%rdx 64 sbbq $0,%r13 65 66 addq 0(%rsi),%r8 67 movq %r10,%rcx 68 adcq 8(%rsi),%r9 69 adcq 16(%rsi),%r10 70 movq %r11,%r12 71 adcq 24(%rsi),%r11 72 testq %r13,%r13 73 74 cmovzq %rax,%r8 75 cmovzq %rdx,%r9 76 movq %r8,0(%rdi) 77 cmovzq %rcx,%r10 78 movq %r9,8(%rdi) 79 cmovzq %r12,%r11 80 movq %r10,16(%rdi) 81 movq %r11,24(%rdi) 82 83 movq 0(%rsp),%r13 84 85 movq 8(%rsp),%r12 86 87 leaq 16(%rsp),%rsp 88 89 L$neg_epilogue: 90 .byte 0xf3,0xc3 91 92 93 94 95 96 97 98 99 .globl _ecp_nistz256_ord_mul_mont 100 .private_extern _ecp_nistz256_ord_mul_mont 101 102 .p2align 5 103 _ecp_nistz256_ord_mul_mont: 104 105 leaq _OPENSSL_ia32cap_P(%rip),%rcx 106 movq 8(%rcx),%rcx 107 andl $0x80100,%ecx 108 cmpl $0x80100,%ecx 109 je L$ecp_nistz256_ord_mul_montx 110 pushq %rbp 111 112 pushq %rbx 113 114 pushq %r12 115 116 pushq %r13 117 118 pushq %r14 119 120 pushq %r15 121 122 L$ord_mul_body: 123 124 movq 0(%rdx),%rax 125 movq %rdx,%rbx 126 leaq L$ord(%rip),%r14 127 movq L$ordK(%rip),%r15 128 129 130 movq %rax,%rcx 131 mulq 0(%rsi) 132 movq %rax,%r8 133 movq %rcx,%rax 134 movq %rdx,%r9 135 136 mulq 8(%rsi) 137 addq %rax,%r9 138 movq %rcx,%rax 139 adcq $0,%rdx 140 movq %rdx,%r10 141 142 mulq 16(%rsi) 143 addq %rax,%r10 144 movq %rcx,%rax 145 adcq $0,%rdx 146 147 movq %r8,%r13 148 imulq %r15,%r8 149 150 movq %rdx,%r11 151 mulq 24(%rsi) 152 addq %rax,%r11 153 movq %r8,%rax 154 adcq $0,%rdx 155 movq %rdx,%r12 156 157 158 mulq 0(%r14) 159 movq %r8,%rbp 160 addq %rax,%r13 161 movq %r8,%rax 162 adcq $0,%rdx 163 movq %rdx,%rcx 164 165 subq %r8,%r10 166 sbbq $0,%r8 167 168 mulq 8(%r14) 169 addq %rcx,%r9 170 adcq $0,%rdx 171 addq %rax,%r9 172 movq %rbp,%rax 173 adcq %rdx,%r10 174 movq %rbp,%rdx 175 adcq $0,%r8 176 177 shlq $32,%rax 178 shrq $32,%rdx 179 subq %rax,%r11 180 movq 8(%rbx),%rax 181 sbbq %rdx,%rbp 182 183 addq %r8,%r11 184 adcq %rbp,%r12 185 adcq $0,%r13 186 187 188 movq %rax,%rcx 189 mulq 0(%rsi) 190 addq %rax,%r9 191 movq %rcx,%rax 192 adcq $0,%rdx 193 movq %rdx,%rbp 194 195 mulq 8(%rsi) 196 addq %rbp,%r10 197 adcq $0,%rdx 198 addq %rax,%r10 199 movq %rcx,%rax 200 adcq $0,%rdx 201 movq %rdx,%rbp 202 203 mulq 16(%rsi) 204 addq %rbp,%r11 205 adcq $0,%rdx 206 addq %rax,%r11 207 movq %rcx,%rax 208 adcq $0,%rdx 209 210 movq %r9,%rcx 211 imulq %r15,%r9 212 213 movq %rdx,%rbp 214 mulq 24(%rsi) 215 addq %rbp,%r12 216 adcq $0,%rdx 217 xorq %r8,%r8 218 addq %rax,%r12 219 movq %r9,%rax 220 adcq %rdx,%r13 221 adcq $0,%r8 222 223 224 mulq 0(%r14) 225 movq %r9,%rbp 226 addq %rax,%rcx 227 movq %r9,%rax 228 adcq %rdx,%rcx 229 230 subq %r9,%r11 231 sbbq $0,%r9 232 233 mulq 8(%r14) 234 addq %rcx,%r10 235 adcq $0,%rdx 236 addq %rax,%r10 237 movq %rbp,%rax 238 adcq %rdx,%r11 239 movq %rbp,%rdx 240 adcq $0,%r9 241 242 shlq $32,%rax 243 shrq $32,%rdx 244 subq %rax,%r12 245 movq 16(%rbx),%rax 246 sbbq %rdx,%rbp 247 248 addq %r9,%r12 249 adcq %rbp,%r13 250 adcq $0,%r8 251 252 253 movq %rax,%rcx 254 mulq 0(%rsi) 255 addq %rax,%r10 256 movq %rcx,%rax 257 adcq $0,%rdx 258 movq %rdx,%rbp 259 260 mulq 8(%rsi) 261 addq %rbp,%r11 262 adcq $0,%rdx 263 addq %rax,%r11 264 movq %rcx,%rax 265 adcq $0,%rdx 266 movq %rdx,%rbp 267 268 mulq 16(%rsi) 269 addq %rbp,%r12 270 adcq $0,%rdx 271 addq %rax,%r12 272 movq %rcx,%rax 273 adcq $0,%rdx 274 275 movq %r10,%rcx 276 imulq %r15,%r10 277 278 movq %rdx,%rbp 279 mulq 24(%rsi) 280 addq %rbp,%r13 281 adcq $0,%rdx 282 xorq %r9,%r9 283 addq %rax,%r13 284 movq %r10,%rax 285 adcq %rdx,%r8 286 adcq $0,%r9 287 288 289 mulq 0(%r14) 290 movq %r10,%rbp 291 addq %rax,%rcx 292 movq %r10,%rax 293 adcq %rdx,%rcx 294 295 subq %r10,%r12 296 sbbq $0,%r10 297 298 mulq 8(%r14) 299 addq %rcx,%r11 300 adcq $0,%rdx 301 addq %rax,%r11 302 movq %rbp,%rax 303 adcq %rdx,%r12 304 movq %rbp,%rdx 305 adcq $0,%r10 306 307 shlq $32,%rax 308 shrq $32,%rdx 309 subq %rax,%r13 310 movq 24(%rbx),%rax 311 sbbq %rdx,%rbp 312 313 addq %r10,%r13 314 adcq %rbp,%r8 315 adcq $0,%r9 316 317 318 movq %rax,%rcx 319 mulq 0(%rsi) 320 addq %rax,%r11 321 movq %rcx,%rax 322 adcq $0,%rdx 323 movq %rdx,%rbp 324 325 mulq 8(%rsi) 326 addq %rbp,%r12 327 adcq $0,%rdx 328 addq %rax,%r12 329 movq %rcx,%rax 330 adcq $0,%rdx 331 movq %rdx,%rbp 332 333 mulq 16(%rsi) 334 addq %rbp,%r13 335 adcq $0,%rdx 336 addq %rax,%r13 337 movq %rcx,%rax 338 adcq $0,%rdx 339 340 movq %r11,%rcx 341 imulq %r15,%r11 342 343 movq %rdx,%rbp 344 mulq 24(%rsi) 345 addq %rbp,%r8 346 adcq $0,%rdx 347 xorq %r10,%r10 348 addq %rax,%r8 349 movq %r11,%rax 350 adcq %rdx,%r9 351 adcq $0,%r10 352 353 354 mulq 0(%r14) 355 movq %r11,%rbp 356 addq %rax,%rcx 357 movq %r11,%rax 358 adcq %rdx,%rcx 359 360 subq %r11,%r13 361 sbbq $0,%r11 362 363 mulq 8(%r14) 364 addq %rcx,%r12 365 adcq $0,%rdx 366 addq %rax,%r12 367 movq %rbp,%rax 368 adcq %rdx,%r13 369 movq %rbp,%rdx 370 adcq $0,%r11 371 372 shlq $32,%rax 373 shrq $32,%rdx 374 subq %rax,%r8 375 sbbq %rdx,%rbp 376 377 addq %r11,%r8 378 adcq %rbp,%r9 379 adcq $0,%r10 380 381 382 movq %r12,%rsi 383 subq 0(%r14),%r12 384 movq %r13,%r11 385 sbbq 8(%r14),%r13 386 movq %r8,%rcx 387 sbbq 16(%r14),%r8 388 movq %r9,%rbp 389 sbbq 24(%r14),%r9 390 sbbq $0,%r10 391 392 cmovcq %rsi,%r12 393 cmovcq %r11,%r13 394 cmovcq %rcx,%r8 395 cmovcq %rbp,%r9 396 397 movq %r12,0(%rdi) 398 movq %r13,8(%rdi) 399 movq %r8,16(%rdi) 400 movq %r9,24(%rdi) 401 402 movq 0(%rsp),%r15 403 404 movq 8(%rsp),%r14 405 406 movq 16(%rsp),%r13 407 408 movq 24(%rsp),%r12 409 410 movq 32(%rsp),%rbx 411 412 movq 40(%rsp),%rbp 413 414 leaq 48(%rsp),%rsp 415 416 L$ord_mul_epilogue: 417 .byte 0xf3,0xc3 418 419 420 421 422 423 424 425 426 427 .globl _ecp_nistz256_ord_sqr_mont 428 .private_extern _ecp_nistz256_ord_sqr_mont 429 430 .p2align 5 431 _ecp_nistz256_ord_sqr_mont: 432 433 leaq _OPENSSL_ia32cap_P(%rip),%rcx 434 movq 8(%rcx),%rcx 435 andl $0x80100,%ecx 436 cmpl $0x80100,%ecx 437 je L$ecp_nistz256_ord_sqr_montx 438 pushq %rbp 439 440 pushq %rbx 441 442 pushq %r12 443 444 pushq %r13 445 446 pushq %r14 447 448 pushq %r15 449 450 L$ord_sqr_body: 451 452 movq 0(%rsi),%r8 453 movq 8(%rsi),%rax 454 movq 16(%rsi),%r14 455 movq 24(%rsi),%r15 456 leaq L$ord(%rip),%rsi 457 movq %rdx,%rbx 458 jmp L$oop_ord_sqr 459 460 .p2align 5 461 L$oop_ord_sqr: 462 463 movq %rax,%rbp 464 mulq %r8 465 movq %rax,%r9 466 .byte 102,72,15,110,205 467 movq %r14,%rax 468 movq %rdx,%r10 469 470 mulq %r8 471 addq %rax,%r10 472 movq %r15,%rax 473 .byte 102,73,15,110,214 474 adcq $0,%rdx 475 movq %rdx,%r11 476 477 mulq %r8 478 addq %rax,%r11 479 movq %r15,%rax 480 .byte 102,73,15,110,223 481 adcq $0,%rdx 482 movq %rdx,%r12 483 484 485 mulq %r14 486 movq %rax,%r13 487 movq %r14,%rax 488 movq %rdx,%r14 489 490 491 mulq %rbp 492 addq %rax,%r11 493 movq %r15,%rax 494 adcq $0,%rdx 495 movq %rdx,%r15 496 497 mulq %rbp 498 addq %rax,%r12 499 adcq $0,%rdx 500 501 addq %r15,%r12 502 adcq %rdx,%r13 503 adcq $0,%r14 504 505 506 xorq %r15,%r15 507 movq %r8,%rax 508 addq %r9,%r9 509 adcq %r10,%r10 510 adcq %r11,%r11 511 adcq %r12,%r12 512 adcq %r13,%r13 513 adcq %r14,%r14 514 adcq $0,%r15 515 516 517 mulq %rax 518 movq %rax,%r8 519 .byte 102,72,15,126,200 520 movq %rdx,%rbp 521 522 mulq %rax 523 addq %rbp,%r9 524 adcq %rax,%r10 525 .byte 102,72,15,126,208 526 adcq $0,%rdx 527 movq %rdx,%rbp 528 529 mulq %rax 530 addq %rbp,%r11 531 adcq %rax,%r12 532 .byte 102,72,15,126,216 533 adcq $0,%rdx 534 movq %rdx,%rbp 535 536 movq %r8,%rcx 537 imulq 32(%rsi),%r8 538 539 mulq %rax 540 addq %rbp,%r13 541 adcq %rax,%r14 542 movq 0(%rsi),%rax 543 adcq %rdx,%r15 544 545 546 mulq %r8 547 movq %r8,%rbp 548 addq %rax,%rcx 549 movq 8(%rsi),%rax 550 adcq %rdx,%rcx 551 552 subq %r8,%r10 553 sbbq $0,%rbp 554 555 mulq %r8 556 addq %rcx,%r9 557 adcq $0,%rdx 558 addq %rax,%r9 559 movq %r8,%rax 560 adcq %rdx,%r10 561 movq %r8,%rdx 562 adcq $0,%rbp 563 564 movq %r9,%rcx 565 imulq 32(%rsi),%r9 566 567 shlq $32,%rax 568 shrq $32,%rdx 569 subq %rax,%r11 570 movq 0(%rsi),%rax 571 sbbq %rdx,%r8 572 573 addq %rbp,%r11 574 adcq $0,%r8 575 576 577 mulq %r9 578 movq %r9,%rbp 579 addq %rax,%rcx 580 movq 8(%rsi),%rax 581 adcq %rdx,%rcx 582 583 subq %r9,%r11 584 sbbq $0,%rbp 585 586 mulq %r9 587 addq %rcx,%r10 588 adcq $0,%rdx 589 addq %rax,%r10 590 movq %r9,%rax 591 adcq %rdx,%r11 592 movq %r9,%rdx 593 adcq $0,%rbp 594 595 movq %r10,%rcx 596 imulq 32(%rsi),%r10 597 598 shlq $32,%rax 599 shrq $32,%rdx 600 subq %rax,%r8 601 movq 0(%rsi),%rax 602 sbbq %rdx,%r9 603 604 addq %rbp,%r8 605 adcq $0,%r9 606 607 608 mulq %r10 609 movq %r10,%rbp 610 addq %rax,%rcx 611 movq 8(%rsi),%rax 612 adcq %rdx,%rcx 613 614 subq %r10,%r8 615 sbbq $0,%rbp 616 617 mulq %r10 618 addq %rcx,%r11 619 adcq $0,%rdx 620 addq %rax,%r11 621 movq %r10,%rax 622 adcq %rdx,%r8 623 movq %r10,%rdx 624 adcq $0,%rbp 625 626 movq %r11,%rcx 627 imulq 32(%rsi),%r11 628 629 shlq $32,%rax 630 shrq $32,%rdx 631 subq %rax,%r9 632 movq 0(%rsi),%rax 633 sbbq %rdx,%r10 634 635 addq %rbp,%r9 636 adcq $0,%r10 637 638 639 mulq %r11 640 movq %r11,%rbp 641 addq %rax,%rcx 642 movq 8(%rsi),%rax 643 adcq %rdx,%rcx 644 645 subq %r11,%r9 646 sbbq $0,%rbp 647 648 mulq %r11 649 addq %rcx,%r8 650 adcq $0,%rdx 651 addq %rax,%r8 652 movq %r11,%rax 653 adcq %rdx,%r9 654 movq %r11,%rdx 655 adcq $0,%rbp 656 657 shlq $32,%rax 658 shrq $32,%rdx 659 subq %rax,%r10 660 sbbq %rdx,%r11 661 662 addq %rbp,%r10 663 adcq $0,%r11 664 665 666 xorq %rdx,%rdx 667 addq %r12,%r8 668 adcq %r13,%r9 669 movq %r8,%r12 670 adcq %r14,%r10 671 adcq %r15,%r11 672 movq %r9,%rax 673 adcq $0,%rdx 674 675 676 subq 0(%rsi),%r8 677 movq %r10,%r14 678 sbbq 8(%rsi),%r9 679 sbbq 16(%rsi),%r10 680 movq %r11,%r15 681 sbbq 24(%rsi),%r11 682 sbbq $0,%rdx 683 684 cmovcq %r12,%r8 685 cmovncq %r9,%rax 686 cmovncq %r10,%r14 687 cmovncq %r11,%r15 688 689 decq %rbx 690 jnz L$oop_ord_sqr 691 692 movq %r8,0(%rdi) 693 movq %rax,8(%rdi) 694 pxor %xmm1,%xmm1 695 movq %r14,16(%rdi) 696 pxor %xmm2,%xmm2 697 movq %r15,24(%rdi) 698 pxor %xmm3,%xmm3 699 700 movq 0(%rsp),%r15 701 702 movq 8(%rsp),%r14 703 704 movq 16(%rsp),%r13 705 706 movq 24(%rsp),%r12 707 708 movq 32(%rsp),%rbx 709 710 movq 40(%rsp),%rbp 711 712 leaq 48(%rsp),%rsp 713 714 L$ord_sqr_epilogue: 715 .byte 0xf3,0xc3 716 717 718 719 720 .p2align 5 721 ecp_nistz256_ord_mul_montx: 722 723 L$ecp_nistz256_ord_mul_montx: 724 pushq %rbp 725 726 pushq %rbx 727 728 pushq %r12 729 730 pushq %r13 731 732 pushq %r14 733 734 pushq %r15 735 736 L$ord_mulx_body: 737 738 movq %rdx,%rbx 739 movq 0(%rdx),%rdx 740 movq 0(%rsi),%r9 741 movq 8(%rsi),%r10 742 movq 16(%rsi),%r11 743 movq 24(%rsi),%r12 744 leaq -128(%rsi),%rsi 745 leaq L$ord-128(%rip),%r14 746 movq L$ordK(%rip),%r15 747 748 749 mulxq %r9,%r8,%r9 750 mulxq %r10,%rcx,%r10 751 mulxq %r11,%rbp,%r11 752 addq %rcx,%r9 753 mulxq %r12,%rcx,%r12 754 movq %r8,%rdx 755 mulxq %r15,%rdx,%rax 756 adcq %rbp,%r10 757 adcq %rcx,%r11 758 adcq $0,%r12 759 760 761 xorq %r13,%r13 762 mulxq 0+128(%r14),%rcx,%rbp 763 adcxq %rcx,%r8 764 adoxq %rbp,%r9 765 766 mulxq 8+128(%r14),%rcx,%rbp 767 adcxq %rcx,%r9 768 adoxq %rbp,%r10 769 770 mulxq 16+128(%r14),%rcx,%rbp 771 adcxq %rcx,%r10 772 adoxq %rbp,%r11 773 774 mulxq 24+128(%r14),%rcx,%rbp 775 movq 8(%rbx),%rdx 776 adcxq %rcx,%r11 777 adoxq %rbp,%r12 778 adcxq %r8,%r12 779 adoxq %r8,%r13 780 adcq $0,%r13 781 782 783 mulxq 0+128(%rsi),%rcx,%rbp 784 adcxq %rcx,%r9 785 adoxq %rbp,%r10 786 787 mulxq 8+128(%rsi),%rcx,%rbp 788 adcxq %rcx,%r10 789 adoxq %rbp,%r11 790 791 mulxq 16+128(%rsi),%rcx,%rbp 792 adcxq %rcx,%r11 793 adoxq %rbp,%r12 794 795 mulxq 24+128(%rsi),%rcx,%rbp 796 movq %r9,%rdx 797 mulxq %r15,%rdx,%rax 798 adcxq %rcx,%r12 799 adoxq %rbp,%r13 800 801 adcxq %r8,%r13 802 adoxq %r8,%r8 803 adcq $0,%r8 804 805 806 mulxq 0+128(%r14),%rcx,%rbp 807 adcxq %rcx,%r9 808 adoxq %rbp,%r10 809 810 mulxq 8+128(%r14),%rcx,%rbp 811 adcxq %rcx,%r10 812 adoxq %rbp,%r11 813 814 mulxq 16+128(%r14),%rcx,%rbp 815 adcxq %rcx,%r11 816 adoxq %rbp,%r12 817 818 mulxq 24+128(%r14),%rcx,%rbp 819 movq 16(%rbx),%rdx 820 adcxq %rcx,%r12 821 adoxq %rbp,%r13 822 adcxq %r9,%r13 823 adoxq %r9,%r8 824 adcq $0,%r8 825 826 827 mulxq 0+128(%rsi),%rcx,%rbp 828 adcxq %rcx,%r10 829 adoxq %rbp,%r11 830 831 mulxq 8+128(%rsi),%rcx,%rbp 832 adcxq %rcx,%r11 833 adoxq %rbp,%r12 834 835 mulxq 16+128(%rsi),%rcx,%rbp 836 adcxq %rcx,%r12 837 adoxq %rbp,%r13 838 839 mulxq 24+128(%rsi),%rcx,%rbp 840 movq %r10,%rdx 841 mulxq %r15,%rdx,%rax 842 adcxq %rcx,%r13 843 adoxq %rbp,%r8 844 845 adcxq %r9,%r8 846 adoxq %r9,%r9 847 adcq $0,%r9 848 849 850 mulxq 0+128(%r14),%rcx,%rbp 851 adcxq %rcx,%r10 852 adoxq %rbp,%r11 853 854 mulxq 8+128(%r14),%rcx,%rbp 855 adcxq %rcx,%r11 856 adoxq %rbp,%r12 857 858 mulxq 16+128(%r14),%rcx,%rbp 859 adcxq %rcx,%r12 860 adoxq %rbp,%r13 861 862 mulxq 24+128(%r14),%rcx,%rbp 863 movq 24(%rbx),%rdx 864 adcxq %rcx,%r13 865 adoxq %rbp,%r8 866 adcxq %r10,%r8 867 adoxq %r10,%r9 868 adcq $0,%r9 869 870 871 mulxq 0+128(%rsi),%rcx,%rbp 872 adcxq %rcx,%r11 873 adoxq %rbp,%r12 874 875 mulxq 8+128(%rsi),%rcx,%rbp 876 adcxq %rcx,%r12 877 adoxq %rbp,%r13 878 879 mulxq 16+128(%rsi),%rcx,%rbp 880 adcxq %rcx,%r13 881 adoxq %rbp,%r8 882 883 mulxq 24+128(%rsi),%rcx,%rbp 884 movq %r11,%rdx 885 mulxq %r15,%rdx,%rax 886 adcxq %rcx,%r8 887 adoxq %rbp,%r9 888 889 adcxq %r10,%r9 890 adoxq %r10,%r10 891 adcq $0,%r10 892 893 894 mulxq 0+128(%r14),%rcx,%rbp 895 adcxq %rcx,%r11 896 adoxq %rbp,%r12 897 898 mulxq 8+128(%r14),%rcx,%rbp 899 adcxq %rcx,%r12 900 adoxq %rbp,%r13 901 902 mulxq 16+128(%r14),%rcx,%rbp 903 adcxq %rcx,%r13 904 adoxq %rbp,%r8 905 906 mulxq 24+128(%r14),%rcx,%rbp 907 leaq 128(%r14),%r14 908 movq %r12,%rbx 909 adcxq %rcx,%r8 910 adoxq %rbp,%r9 911 movq %r13,%rdx 912 adcxq %r11,%r9 913 adoxq %r11,%r10 914 adcq $0,%r10 915 916 917 918 movq %r8,%rcx 919 subq 0(%r14),%r12 920 sbbq 8(%r14),%r13 921 sbbq 16(%r14),%r8 922 movq %r9,%rbp 923 sbbq 24(%r14),%r9 924 sbbq $0,%r10 925 926 cmovcq %rbx,%r12 927 cmovcq %rdx,%r13 928 cmovcq %rcx,%r8 929 cmovcq %rbp,%r9 930 931 movq %r12,0(%rdi) 932 movq %r13,8(%rdi) 933 movq %r8,16(%rdi) 934 movq %r9,24(%rdi) 935 936 movq 0(%rsp),%r15 937 938 movq 8(%rsp),%r14 939 940 movq 16(%rsp),%r13 941 942 movq 24(%rsp),%r12 943 944 movq 32(%rsp),%rbx 945 946 movq 40(%rsp),%rbp 947 948 leaq 48(%rsp),%rsp 949 950 L$ord_mulx_epilogue: 951 .byte 0xf3,0xc3 952 953 954 955 956 .p2align 5 957 ecp_nistz256_ord_sqr_montx: 958 959 L$ecp_nistz256_ord_sqr_montx: 960 pushq %rbp 961 962 pushq %rbx 963 964 pushq %r12 965 966 pushq %r13 967 968 pushq %r14 969 970 pushq %r15 971 972 L$ord_sqrx_body: 973 974 movq %rdx,%rbx 975 movq 0(%rsi),%rdx 976 movq 8(%rsi),%r14 977 movq 16(%rsi),%r15 978 movq 24(%rsi),%r8 979 leaq L$ord(%rip),%rsi 980 jmp L$oop_ord_sqrx 981 982 .p2align 5 983 L$oop_ord_sqrx: 984 mulxq %r14,%r9,%r10 985 mulxq %r15,%rcx,%r11 986 movq %rdx,%rax 987 .byte 102,73,15,110,206 988 mulxq %r8,%rbp,%r12 989 movq %r14,%rdx 990 addq %rcx,%r10 991 .byte 102,73,15,110,215 992 adcq %rbp,%r11 993 adcq $0,%r12 994 xorq %r13,%r13 995 996 mulxq %r15,%rcx,%rbp 997 adcxq %rcx,%r11 998 adoxq %rbp,%r12 999 1000 mulxq %r8,%rcx,%rbp 1001 movq %r15,%rdx 1002 adcxq %rcx,%r12 1003 adoxq %rbp,%r13 1004 adcq $0,%r13 1005 1006 mulxq %r8,%rcx,%r14 1007 movq %rax,%rdx 1008 .byte 102,73,15,110,216 1009 xorq %r15,%r15 1010 adcxq %r9,%r9 1011 adoxq %rcx,%r13 1012 adcxq %r10,%r10 1013 adoxq %r15,%r14 1014 1015 1016 mulxq %rdx,%r8,%rbp 1017 .byte 102,72,15,126,202 1018 adcxq %r11,%r11 1019 adoxq %rbp,%r9 1020 adcxq %r12,%r12 1021 mulxq %rdx,%rcx,%rax 1022 .byte 102,72,15,126,210 1023 adcxq %r13,%r13 1024 adoxq %rcx,%r10 1025 adcxq %r14,%r14 1026 mulxq %rdx,%rcx,%rbp 1027 .byte 0x67 1028 .byte 102,72,15,126,218 1029 adoxq %rax,%r11 1030 adcxq %r15,%r15 1031 adoxq %rcx,%r12 1032 adoxq %rbp,%r13 1033 mulxq %rdx,%rcx,%rax 1034 adoxq %rcx,%r14 1035 adoxq %rax,%r15 1036 1037 1038 movq %r8,%rdx 1039 mulxq 32(%rsi),%rdx,%rcx 1040 1041 xorq %rax,%rax 1042 mulxq 0(%rsi),%rcx,%rbp 1043 adcxq %rcx,%r8 1044 adoxq %rbp,%r9 1045 mulxq 8(%rsi),%rcx,%rbp 1046 adcxq %rcx,%r9 1047 adoxq %rbp,%r10 1048 mulxq 16(%rsi),%rcx,%rbp 1049 adcxq %rcx,%r10 1050 adoxq %rbp,%r11 1051 mulxq 24(%rsi),%rcx,%rbp 1052 adcxq %rcx,%r11 1053 adoxq %rbp,%r8 1054 adcxq %rax,%r8 1055 1056 1057 movq %r9,%rdx 1058 mulxq 32(%rsi),%rdx,%rcx 1059 1060 mulxq 0(%rsi),%rcx,%rbp 1061 adoxq %rcx,%r9 1062 adcxq %rbp,%r10 1063 mulxq 8(%rsi),%rcx,%rbp 1064 adoxq %rcx,%r10 1065 adcxq %rbp,%r11 1066 mulxq 16(%rsi),%rcx,%rbp 1067 adoxq %rcx,%r11 1068 adcxq %rbp,%r8 1069 mulxq 24(%rsi),%rcx,%rbp 1070 adoxq %rcx,%r8 1071 adcxq %rbp,%r9 1072 adoxq %rax,%r9 1073 1074 1075 movq %r10,%rdx 1076 mulxq 32(%rsi),%rdx,%rcx 1077 1078 mulxq 0(%rsi),%rcx,%rbp 1079 adcxq %rcx,%r10 1080 adoxq %rbp,%r11 1081 mulxq 8(%rsi),%rcx,%rbp 1082 adcxq %rcx,%r11 1083 adoxq %rbp,%r8 1084 mulxq 16(%rsi),%rcx,%rbp 1085 adcxq %rcx,%r8 1086 adoxq %rbp,%r9 1087 mulxq 24(%rsi),%rcx,%rbp 1088 adcxq %rcx,%r9 1089 adoxq %rbp,%r10 1090 adcxq %rax,%r10 1091 1092 1093 movq %r11,%rdx 1094 mulxq 32(%rsi),%rdx,%rcx 1095 1096 mulxq 0(%rsi),%rcx,%rbp 1097 adoxq %rcx,%r11 1098 adcxq %rbp,%r8 1099 mulxq 8(%rsi),%rcx,%rbp 1100 adoxq %rcx,%r8 1101 adcxq %rbp,%r9 1102 mulxq 16(%rsi),%rcx,%rbp 1103 adoxq %rcx,%r9 1104 adcxq %rbp,%r10 1105 mulxq 24(%rsi),%rcx,%rbp 1106 adoxq %rcx,%r10 1107 adcxq %rbp,%r11 1108 adoxq %rax,%r11 1109 1110 1111 addq %r8,%r12 1112 adcq %r13,%r9 1113 movq %r12,%rdx 1114 adcq %r14,%r10 1115 adcq %r15,%r11 1116 movq %r9,%r14 1117 adcq $0,%rax 1118 1119 1120 subq 0(%rsi),%r12 1121 movq %r10,%r15 1122 sbbq 8(%rsi),%r9 1123 sbbq 16(%rsi),%r10 1124 movq %r11,%r8 1125 sbbq 24(%rsi),%r11 1126 sbbq $0,%rax 1127 1128 cmovncq %r12,%rdx 1129 cmovncq %r9,%r14 1130 cmovncq %r10,%r15 1131 cmovncq %r11,%r8 1132 1133 decq %rbx 1134 jnz L$oop_ord_sqrx 1135 1136 movq %rdx,0(%rdi) 1137 movq %r14,8(%rdi) 1138 pxor %xmm1,%xmm1 1139 movq %r15,16(%rdi) 1140 pxor %xmm2,%xmm2 1141 movq %r8,24(%rdi) 1142 pxor %xmm3,%xmm3 1143 1144 movq 0(%rsp),%r15 1145 1146 movq 8(%rsp),%r14 1147 1148 movq 16(%rsp),%r13 1149 1150 movq 24(%rsp),%r12 1151 1152 movq 32(%rsp),%rbx 1153 1154 movq 40(%rsp),%rbp 1155 1156 leaq 48(%rsp),%rsp 1157 1158 L$ord_sqrx_epilogue: 1159 .byte 0xf3,0xc3 1160 1161 1162 1163 1164 1165 1166 1167 1168 .globl _ecp_nistz256_mul_mont 1169 .private_extern _ecp_nistz256_mul_mont 1170 1171 .p2align 5 1172 _ecp_nistz256_mul_mont: 1173 1174 leaq _OPENSSL_ia32cap_P(%rip),%rcx 1175 movq 8(%rcx),%rcx 1176 andl $0x80100,%ecx 1177 L$mul_mont: 1178 pushq %rbp 1179 1180 pushq %rbx 1181 1182 pushq %r12 1183 1184 pushq %r13 1185 1186 pushq %r14 1187 1188 pushq %r15 1189 1190 L$mul_body: 1191 cmpl $0x80100,%ecx 1192 je L$mul_montx 1193 movq %rdx,%rbx 1194 movq 0(%rdx),%rax 1195 movq 0(%rsi),%r9 1196 movq 8(%rsi),%r10 1197 movq 16(%rsi),%r11 1198 movq 24(%rsi),%r12 1199 1200 call __ecp_nistz256_mul_montq 1201 jmp L$mul_mont_done 1202 1203 .p2align 5 1204 L$mul_montx: 1205 movq %rdx,%rbx 1206 movq 0(%rdx),%rdx 1207 movq 0(%rsi),%r9 1208 movq 8(%rsi),%r10 1209 movq 16(%rsi),%r11 1210 movq 24(%rsi),%r12 1211 leaq -128(%rsi),%rsi 1212 1213 call __ecp_nistz256_mul_montx 1214 L$mul_mont_done: 1215 movq 0(%rsp),%r15 1216 1217 movq 8(%rsp),%r14 1218 1219 movq 16(%rsp),%r13 1220 1221 movq 24(%rsp),%r12 1222 1223 movq 32(%rsp),%rbx 1224 1225 movq 40(%rsp),%rbp 1226 1227 leaq 48(%rsp),%rsp 1228 1229 L$mul_epilogue: 1230 .byte 0xf3,0xc3 1231 1232 1233 1234 1235 .p2align 5 1236 __ecp_nistz256_mul_montq: 1237 1238 1239 1240 movq %rax,%rbp 1241 mulq %r9 1242 movq L$poly+8(%rip),%r14 1243 movq %rax,%r8 1244 movq %rbp,%rax 1245 movq %rdx,%r9 1246 1247 mulq %r10 1248 movq L$poly+24(%rip),%r15 1249 addq %rax,%r9 1250 movq %rbp,%rax 1251 adcq $0,%rdx 1252 movq %rdx,%r10 1253 1254 mulq %r11 1255 addq %rax,%r10 1256 movq %rbp,%rax 1257 adcq $0,%rdx 1258 movq %rdx,%r11 1259 1260 mulq %r12 1261 addq %rax,%r11 1262 movq %r8,%rax 1263 adcq $0,%rdx 1264 xorq %r13,%r13 1265 movq %rdx,%r12 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 movq %r8,%rbp 1277 shlq $32,%r8 1278 mulq %r15 1279 shrq $32,%rbp 1280 addq %r8,%r9 1281 adcq %rbp,%r10 1282 adcq %rax,%r11 1283 movq 8(%rbx),%rax 1284 adcq %rdx,%r12 1285 adcq $0,%r13 1286 xorq %r8,%r8 1287 1288 1289 1290 movq %rax,%rbp 1291 mulq 0(%rsi) 1292 addq %rax,%r9 1293 movq %rbp,%rax 1294 adcq $0,%rdx 1295 movq %rdx,%rcx 1296 1297 mulq 8(%rsi) 1298 addq %rcx,%r10 1299 adcq $0,%rdx 1300 addq %rax,%r10 1301 movq %rbp,%rax 1302 adcq $0,%rdx 1303 movq %rdx,%rcx 1304 1305 mulq 16(%rsi) 1306 addq %rcx,%r11 1307 adcq $0,%rdx 1308 addq %rax,%r11 1309 movq %rbp,%rax 1310 adcq $0,%rdx 1311 movq %rdx,%rcx 1312 1313 mulq 24(%rsi) 1314 addq %rcx,%r12 1315 adcq $0,%rdx 1316 addq %rax,%r12 1317 movq %r9,%rax 1318 adcq %rdx,%r13 1319 adcq $0,%r8 1320 1321 1322 1323 movq %r9,%rbp 1324 shlq $32,%r9 1325 mulq %r15 1326 shrq $32,%rbp 1327 addq %r9,%r10 1328 adcq %rbp,%r11 1329 adcq %rax,%r12 1330 movq 16(%rbx),%rax 1331 adcq %rdx,%r13 1332 adcq $0,%r8 1333 xorq %r9,%r9 1334 1335 1336 1337 movq %rax,%rbp 1338 mulq 0(%rsi) 1339 addq %rax,%r10 1340 movq %rbp,%rax 1341 adcq $0,%rdx 1342 movq %rdx,%rcx 1343 1344 mulq 8(%rsi) 1345 addq %rcx,%r11 1346 adcq $0,%rdx 1347 addq %rax,%r11 1348 movq %rbp,%rax 1349 adcq $0,%rdx 1350 movq %rdx,%rcx 1351 1352 mulq 16(%rsi) 1353 addq %rcx,%r12 1354 adcq $0,%rdx 1355 addq %rax,%r12 1356 movq %rbp,%rax 1357 adcq $0,%rdx 1358 movq %rdx,%rcx 1359 1360 mulq 24(%rsi) 1361 addq %rcx,%r13 1362 adcq $0,%rdx 1363 addq %rax,%r13 1364 movq %r10,%rax 1365 adcq %rdx,%r8 1366 adcq $0,%r9 1367 1368 1369 1370 movq %r10,%rbp 1371 shlq $32,%r10 1372 mulq %r15 1373 shrq $32,%rbp 1374 addq %r10,%r11 1375 adcq %rbp,%r12 1376 adcq %rax,%r13 1377 movq 24(%rbx),%rax 1378 adcq %rdx,%r8 1379 adcq $0,%r9 1380 xorq %r10,%r10 1381 1382 1383 1384 movq %rax,%rbp 1385 mulq 0(%rsi) 1386 addq %rax,%r11 1387 movq %rbp,%rax 1388 adcq $0,%rdx 1389 movq %rdx,%rcx 1390 1391 mulq 8(%rsi) 1392 addq %rcx,%r12 1393 adcq $0,%rdx 1394 addq %rax,%r12 1395 movq %rbp,%rax 1396 adcq $0,%rdx 1397 movq %rdx,%rcx 1398 1399 mulq 16(%rsi) 1400 addq %rcx,%r13 1401 adcq $0,%rdx 1402 addq %rax,%r13 1403 movq %rbp,%rax 1404 adcq $0,%rdx 1405 movq %rdx,%rcx 1406 1407 mulq 24(%rsi) 1408 addq %rcx,%r8 1409 adcq $0,%rdx 1410 addq %rax,%r8 1411 movq %r11,%rax 1412 adcq %rdx,%r9 1413 adcq $0,%r10 1414 1415 1416 1417 movq %r11,%rbp 1418 shlq $32,%r11 1419 mulq %r15 1420 shrq $32,%rbp 1421 addq %r11,%r12 1422 adcq %rbp,%r13 1423 movq %r12,%rcx 1424 adcq %rax,%r8 1425 adcq %rdx,%r9 1426 movq %r13,%rbp 1427 adcq $0,%r10 1428 1429 1430 1431 subq $-1,%r12 1432 movq %r8,%rbx 1433 sbbq %r14,%r13 1434 sbbq $0,%r8 1435 movq %r9,%rdx 1436 sbbq %r15,%r9 1437 sbbq $0,%r10 1438 1439 cmovcq %rcx,%r12 1440 cmovcq %rbp,%r13 1441 movq %r12,0(%rdi) 1442 cmovcq %rbx,%r8 1443 movq %r13,8(%rdi) 1444 cmovcq %rdx,%r9 1445 movq %r8,16(%rdi) 1446 movq %r9,24(%rdi) 1447 1448 .byte 0xf3,0xc3 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 .globl _ecp_nistz256_sqr_mont 1460 .private_extern _ecp_nistz256_sqr_mont 1461 1462 .p2align 5 1463 _ecp_nistz256_sqr_mont: 1464 1465 leaq _OPENSSL_ia32cap_P(%rip),%rcx 1466 movq 8(%rcx),%rcx 1467 andl $0x80100,%ecx 1468 pushq %rbp 1469 1470 pushq %rbx 1471 1472 pushq %r12 1473 1474 pushq %r13 1475 1476 pushq %r14 1477 1478 pushq %r15 1479 1480 L$sqr_body: 1481 cmpl $0x80100,%ecx 1482 je L$sqr_montx 1483 movq 0(%rsi),%rax 1484 movq 8(%rsi),%r14 1485 movq 16(%rsi),%r15 1486 movq 24(%rsi),%r8 1487 1488 call __ecp_nistz256_sqr_montq 1489 jmp L$sqr_mont_done 1490 1491 .p2align 5 1492 L$sqr_montx: 1493 movq 0(%rsi),%rdx 1494 movq 8(%rsi),%r14 1495 movq 16(%rsi),%r15 1496 movq 24(%rsi),%r8 1497 leaq -128(%rsi),%rsi 1498 1499 call __ecp_nistz256_sqr_montx 1500 L$sqr_mont_done: 1501 movq 0(%rsp),%r15 1502 1503 movq 8(%rsp),%r14 1504 1505 movq 16(%rsp),%r13 1506 1507 movq 24(%rsp),%r12 1508 1509 movq 32(%rsp),%rbx 1510 1511 movq 40(%rsp),%rbp 1512 1513 leaq 48(%rsp),%rsp 1514 1515 L$sqr_epilogue: 1516 .byte 0xf3,0xc3 1517 1518 1519 1520 1521 .p2align 5 1522 __ecp_nistz256_sqr_montq: 1523 1524 movq %rax,%r13 1525 mulq %r14 1526 movq %rax,%r9 1527 movq %r15,%rax 1528 movq %rdx,%r10 1529 1530 mulq %r13 1531 addq %rax,%r10 1532 movq %r8,%rax 1533 adcq $0,%rdx 1534 movq %rdx,%r11 1535 1536 mulq %r13 1537 addq %rax,%r11 1538 movq %r15,%rax 1539 adcq $0,%rdx 1540 movq %rdx,%r12 1541 1542 1543 mulq %r14 1544 addq %rax,%r11 1545 movq %r8,%rax 1546 adcq $0,%rdx 1547 movq %rdx,%rbp 1548 1549 mulq %r14 1550 addq %rax,%r12 1551 movq %r8,%rax 1552 adcq $0,%rdx 1553 addq %rbp,%r12 1554 movq %rdx,%r13 1555 adcq $0,%r13 1556 1557 1558 mulq %r15 1559 xorq %r15,%r15 1560 addq %rax,%r13 1561 movq 0(%rsi),%rax 1562 movq %rdx,%r14 1563 adcq $0,%r14 1564 1565 addq %r9,%r9 1566 adcq %r10,%r10 1567 adcq %r11,%r11 1568 adcq %r12,%r12 1569 adcq %r13,%r13 1570 adcq %r14,%r14 1571 adcq $0,%r15 1572 1573 mulq %rax 1574 movq %rax,%r8 1575 movq 8(%rsi),%rax 1576 movq %rdx,%rcx 1577 1578 mulq %rax 1579 addq %rcx,%r9 1580 adcq %rax,%r10 1581 movq 16(%rsi),%rax 1582 adcq $0,%rdx 1583 movq %rdx,%rcx 1584 1585 mulq %rax 1586 addq %rcx,%r11 1587 adcq %rax,%r12 1588 movq 24(%rsi),%rax 1589 adcq $0,%rdx 1590 movq %rdx,%rcx 1591 1592 mulq %rax 1593 addq %rcx,%r13 1594 adcq %rax,%r14 1595 movq %r8,%rax 1596 adcq %rdx,%r15 1597 1598 movq L$poly+8(%rip),%rsi 1599 movq L$poly+24(%rip),%rbp 1600 1601 1602 1603 1604 movq %r8,%rcx 1605 shlq $32,%r8 1606 mulq %rbp 1607 shrq $32,%rcx 1608 addq %r8,%r9 1609 adcq %rcx,%r10 1610 adcq %rax,%r11 1611 movq %r9,%rax 1612 adcq $0,%rdx 1613 1614 1615 1616 movq %r9,%rcx 1617 shlq $32,%r9 1618 movq %rdx,%r8 1619 mulq %rbp 1620 shrq $32,%rcx 1621 addq %r9,%r10 1622 adcq %rcx,%r11 1623 adcq %rax,%r8 1624 movq %r10,%rax 1625 adcq $0,%rdx 1626 1627 1628 1629 movq %r10,%rcx 1630 shlq $32,%r10 1631 movq %rdx,%r9 1632 mulq %rbp 1633 shrq $32,%rcx 1634 addq %r10,%r11 1635 adcq %rcx,%r8 1636 adcq %rax,%r9 1637 movq %r11,%rax 1638 adcq $0,%rdx 1639 1640 1641 1642 movq %r11,%rcx 1643 shlq $32,%r11 1644 movq %rdx,%r10 1645 mulq %rbp 1646 shrq $32,%rcx 1647 addq %r11,%r8 1648 adcq %rcx,%r9 1649 adcq %rax,%r10 1650 adcq $0,%rdx 1651 xorq %r11,%r11 1652 1653 1654 1655 addq %r8,%r12 1656 adcq %r9,%r13 1657 movq %r12,%r8 1658 adcq %r10,%r14 1659 adcq %rdx,%r15 1660 movq %r13,%r9 1661 adcq $0,%r11 1662 1663 subq $-1,%r12 1664 movq %r14,%r10 1665 sbbq %rsi,%r13 1666 sbbq $0,%r14 1667 movq %r15,%rcx 1668 sbbq %rbp,%r15 1669 sbbq $0,%r11 1670 1671 cmovcq %r8,%r12 1672 cmovcq %r9,%r13 1673 movq %r12,0(%rdi) 1674 cmovcq %r10,%r14 1675 movq %r13,8(%rdi) 1676 cmovcq %rcx,%r15 1677 movq %r14,16(%rdi) 1678 movq %r15,24(%rdi) 1679 1680 .byte 0xf3,0xc3 1681 1682 1683 1684 .p2align 5 1685 __ecp_nistz256_mul_montx: 1686 1687 1688 1689 mulxq %r9,%r8,%r9 1690 mulxq %r10,%rcx,%r10 1691 movq $32,%r14 1692 xorq %r13,%r13 1693 mulxq %r11,%rbp,%r11 1694 movq L$poly+24(%rip),%r15 1695 adcq %rcx,%r9 1696 mulxq %r12,%rcx,%r12 1697 movq %r8,%rdx 1698 adcq %rbp,%r10 1699 shlxq %r14,%r8,%rbp 1700 adcq %rcx,%r11 1701 shrxq %r14,%r8,%rcx 1702 adcq $0,%r12 1703 1704 1705 1706 addq %rbp,%r9 1707 adcq %rcx,%r10 1708 1709 mulxq %r15,%rcx,%rbp 1710 movq 8(%rbx),%rdx 1711 adcq %rcx,%r11 1712 adcq %rbp,%r12 1713 adcq $0,%r13 1714 xorq %r8,%r8 1715 1716 1717 1718 mulxq 0+128(%rsi),%rcx,%rbp 1719 adcxq %rcx,%r9 1720 adoxq %rbp,%r10 1721 1722 mulxq 8+128(%rsi),%rcx,%rbp 1723 adcxq %rcx,%r10 1724 adoxq %rbp,%r11 1725 1726 mulxq 16+128(%rsi),%rcx,%rbp 1727 adcxq %rcx,%r11 1728 adoxq %rbp,%r12 1729 1730 mulxq 24+128(%rsi),%rcx,%rbp 1731 movq %r9,%rdx 1732 adcxq %rcx,%r12 1733 shlxq %r14,%r9,%rcx 1734 adoxq %rbp,%r13 1735 shrxq %r14,%r9,%rbp 1736 1737 adcxq %r8,%r13 1738 adoxq %r8,%r8 1739 adcq $0,%r8 1740 1741 1742 1743 addq %rcx,%r10 1744 adcq %rbp,%r11 1745 1746 mulxq %r15,%rcx,%rbp 1747 movq 16(%rbx),%rdx 1748 adcq %rcx,%r12 1749 adcq %rbp,%r13 1750 adcq $0,%r8 1751 xorq %r9,%r9 1752 1753 1754 1755 mulxq 0+128(%rsi),%rcx,%rbp 1756 adcxq %rcx,%r10 1757 adoxq %rbp,%r11 1758 1759 mulxq 8+128(%rsi),%rcx,%rbp 1760 adcxq %rcx,%r11 1761 adoxq %rbp,%r12 1762 1763 mulxq 16+128(%rsi),%rcx,%rbp 1764 adcxq %rcx,%r12 1765 adoxq %rbp,%r13 1766 1767 mulxq 24+128(%rsi),%rcx,%rbp 1768 movq %r10,%rdx 1769 adcxq %rcx,%r13 1770 shlxq %r14,%r10,%rcx 1771 adoxq %rbp,%r8 1772 shrxq %r14,%r10,%rbp 1773 1774 adcxq %r9,%r8 1775 adoxq %r9,%r9 1776 adcq $0,%r9 1777 1778 1779 1780 addq %rcx,%r11 1781 adcq %rbp,%r12 1782 1783 mulxq %r15,%rcx,%rbp 1784 movq 24(%rbx),%rdx 1785 adcq %rcx,%r13 1786 adcq %rbp,%r8 1787 adcq $0,%r9 1788 xorq %r10,%r10 1789 1790 1791 1792 mulxq 0+128(%rsi),%rcx,%rbp 1793 adcxq %rcx,%r11 1794 adoxq %rbp,%r12 1795 1796 mulxq 8+128(%rsi),%rcx,%rbp 1797 adcxq %rcx,%r12 1798 adoxq %rbp,%r13 1799 1800 mulxq 16+128(%rsi),%rcx,%rbp 1801 adcxq %rcx,%r13 1802 adoxq %rbp,%r8 1803 1804 mulxq 24+128(%rsi),%rcx,%rbp 1805 movq %r11,%rdx 1806 adcxq %rcx,%r8 1807 shlxq %r14,%r11,%rcx 1808 adoxq %rbp,%r9 1809 shrxq %r14,%r11,%rbp 1810 1811 adcxq %r10,%r9 1812 adoxq %r10,%r10 1813 adcq $0,%r10 1814 1815 1816 1817 addq %rcx,%r12 1818 adcq %rbp,%r13 1819 1820 mulxq %r15,%rcx,%rbp 1821 movq %r12,%rbx 1822 movq L$poly+8(%rip),%r14 1823 adcq %rcx,%r8 1824 movq %r13,%rdx 1825 adcq %rbp,%r9 1826 adcq $0,%r10 1827 1828 1829 1830 xorl %eax,%eax 1831 movq %r8,%rcx 1832 sbbq $-1,%r12 1833 sbbq %r14,%r13 1834 sbbq $0,%r8 1835 movq %r9,%rbp 1836 sbbq %r15,%r9 1837 sbbq $0,%r10 1838 1839 cmovcq %rbx,%r12 1840 cmovcq %rdx,%r13 1841 movq %r12,0(%rdi) 1842 cmovcq %rcx,%r8 1843 movq %r13,8(%rdi) 1844 cmovcq %rbp,%r9 1845 movq %r8,16(%rdi) 1846 movq %r9,24(%rdi) 1847 1848 .byte 0xf3,0xc3 1849 1850 1851 1852 1853 .p2align 5 1854 __ecp_nistz256_sqr_montx: 1855 1856 mulxq %r14,%r9,%r10 1857 mulxq %r15,%rcx,%r11 1858 xorl %eax,%eax 1859 adcq %rcx,%r10 1860 mulxq %r8,%rbp,%r12 1861 movq %r14,%rdx 1862 adcq %rbp,%r11 1863 adcq $0,%r12 1864 xorq %r13,%r13 1865 1866 1867 mulxq %r15,%rcx,%rbp 1868 adcxq %rcx,%r11 1869 adoxq %rbp,%r12 1870 1871 mulxq %r8,%rcx,%rbp 1872 movq %r15,%rdx 1873 adcxq %rcx,%r12 1874 adoxq %rbp,%r13 1875 adcq $0,%r13 1876 1877 1878 mulxq %r8,%rcx,%r14 1879 movq 0+128(%rsi),%rdx 1880 xorq %r15,%r15 1881 adcxq %r9,%r9 1882 adoxq %rcx,%r13 1883 adcxq %r10,%r10 1884 adoxq %r15,%r14 1885 1886 mulxq %rdx,%r8,%rbp 1887 movq 8+128(%rsi),%rdx 1888 adcxq %r11,%r11 1889 adoxq %rbp,%r9 1890 adcxq %r12,%r12 1891 mulxq %rdx,%rcx,%rax 1892 movq 16+128(%rsi),%rdx 1893 adcxq %r13,%r13 1894 adoxq %rcx,%r10 1895 adcxq %r14,%r14 1896 .byte 0x67 1897 mulxq %rdx,%rcx,%rbp 1898 movq 24+128(%rsi),%rdx 1899 adoxq %rax,%r11 1900 adcxq %r15,%r15 1901 adoxq %rcx,%r12 1902 movq $32,%rsi 1903 adoxq %rbp,%r13 1904 .byte 0x67,0x67 1905 mulxq %rdx,%rcx,%rax 1906 movq L$poly+24(%rip),%rdx 1907 adoxq %rcx,%r14 1908 shlxq %rsi,%r8,%rcx 1909 adoxq %rax,%r15 1910 shrxq %rsi,%r8,%rax 1911 movq %rdx,%rbp 1912 1913 1914 addq %rcx,%r9 1915 adcq %rax,%r10 1916 1917 mulxq %r8,%rcx,%r8 1918 adcq %rcx,%r11 1919 shlxq %rsi,%r9,%rcx 1920 adcq $0,%r8 1921 shrxq %rsi,%r9,%rax 1922 1923 1924 addq %rcx,%r10 1925 adcq %rax,%r11 1926 1927 mulxq %r9,%rcx,%r9 1928 adcq %rcx,%r8 1929 shlxq %rsi,%r10,%rcx 1930 adcq $0,%r9 1931 shrxq %rsi,%r10,%rax 1932 1933 1934 addq %rcx,%r11 1935 adcq %rax,%r8 1936 1937 mulxq %r10,%rcx,%r10 1938 adcq %rcx,%r9 1939 shlxq %rsi,%r11,%rcx 1940 adcq $0,%r10 1941 shrxq %rsi,%r11,%rax 1942 1943 1944 addq %rcx,%r8 1945 adcq %rax,%r9 1946 1947 mulxq %r11,%rcx,%r11 1948 adcq %rcx,%r10 1949 adcq $0,%r11 1950 1951 xorq %rdx,%rdx 1952 addq %r8,%r12 1953 movq L$poly+8(%rip),%rsi 1954 adcq %r9,%r13 1955 movq %r12,%r8 1956 adcq %r10,%r14 1957 adcq %r11,%r15 1958 movq %r13,%r9 1959 adcq $0,%rdx 1960 1961 subq $-1,%r12 1962 movq %r14,%r10 1963 sbbq %rsi,%r13 1964 sbbq $0,%r14 1965 movq %r15,%r11 1966 sbbq %rbp,%r15 1967 sbbq $0,%rdx 1968 1969 cmovcq %r8,%r12 1970 cmovcq %r9,%r13 1971 movq %r12,0(%rdi) 1972 cmovcq %r10,%r14 1973 movq %r13,8(%rdi) 1974 cmovcq %r11,%r15 1975 movq %r14,16(%rdi) 1976 movq %r15,24(%rdi) 1977 1978 .byte 0xf3,0xc3 1979 1980 1981 1982 1983 .globl _ecp_nistz256_select_w5 1984 .private_extern _ecp_nistz256_select_w5 1985 1986 .p2align 5 1987 _ecp_nistz256_select_w5: 1988 1989 leaq _OPENSSL_ia32cap_P(%rip),%rax 1990 movq 8(%rax),%rax 1991 testl $32,%eax 1992 jnz L$avx2_select_w5 1993 movdqa L$One(%rip),%xmm0 1994 movd %edx,%xmm1 1995 1996 pxor %xmm2,%xmm2 1997 pxor %xmm3,%xmm3 1998 pxor %xmm4,%xmm4 1999 pxor %xmm5,%xmm5 2000 pxor %xmm6,%xmm6 2001 pxor %xmm7,%xmm7 2002 2003 movdqa %xmm0,%xmm8 2004 pshufd $0,%xmm1,%xmm1 2005 2006 movq $16,%rax 2007 L$select_loop_sse_w5: 2008 2009 movdqa %xmm8,%xmm15 2010 paddd %xmm0,%xmm8 2011 pcmpeqd %xmm1,%xmm15 2012 2013 movdqa 0(%rsi),%xmm9 2014 movdqa 16(%rsi),%xmm10 2015 movdqa 32(%rsi),%xmm11 2016 movdqa 48(%rsi),%xmm12 2017 movdqa 64(%rsi),%xmm13 2018 movdqa 80(%rsi),%xmm14 2019 leaq 96(%rsi),%rsi 2020 2021 pand %xmm15,%xmm9 2022 pand %xmm15,%xmm10 2023 por %xmm9,%xmm2 2024 pand %xmm15,%xmm11 2025 por %xmm10,%xmm3 2026 pand %xmm15,%xmm12 2027 por %xmm11,%xmm4 2028 pand %xmm15,%xmm13 2029 por %xmm12,%xmm5 2030 pand %xmm15,%xmm14 2031 por %xmm13,%xmm6 2032 por %xmm14,%xmm7 2033 2034 decq %rax 2035 jnz L$select_loop_sse_w5 2036 2037 movdqu %xmm2,0(%rdi) 2038 movdqu %xmm3,16(%rdi) 2039 movdqu %xmm4,32(%rdi) 2040 movdqu %xmm5,48(%rdi) 2041 movdqu %xmm6,64(%rdi) 2042 movdqu %xmm7,80(%rdi) 2043 .byte 0xf3,0xc3 2044 2045 L$SEH_end_ecp_nistz256_select_w5: 2046 2047 2048 2049 2050 .globl _ecp_nistz256_select_w7 2051 .private_extern _ecp_nistz256_select_w7 2052 2053 .p2align 5 2054 _ecp_nistz256_select_w7: 2055 2056 leaq _OPENSSL_ia32cap_P(%rip),%rax 2057 movq 8(%rax),%rax 2058 testl $32,%eax 2059 jnz L$avx2_select_w7 2060 movdqa L$One(%rip),%xmm8 2061 movd %edx,%xmm1 2062 2063 pxor %xmm2,%xmm2 2064 pxor %xmm3,%xmm3 2065 pxor %xmm4,%xmm4 2066 pxor %xmm5,%xmm5 2067 2068 movdqa %xmm8,%xmm0 2069 pshufd $0,%xmm1,%xmm1 2070 movq $64,%rax 2071 2072 L$select_loop_sse_w7: 2073 movdqa %xmm8,%xmm15 2074 paddd %xmm0,%xmm8 2075 movdqa 0(%rsi),%xmm9 2076 movdqa 16(%rsi),%xmm10 2077 pcmpeqd %xmm1,%xmm15 2078 movdqa 32(%rsi),%xmm11 2079 movdqa 48(%rsi),%xmm12 2080 leaq 64(%rsi),%rsi 2081 2082 pand %xmm15,%xmm9 2083 pand %xmm15,%xmm10 2084 por %xmm9,%xmm2 2085 pand %xmm15,%xmm11 2086 por %xmm10,%xmm3 2087 pand %xmm15,%xmm12 2088 por %xmm11,%xmm4 2089 prefetcht0 255(%rsi) 2090 por %xmm12,%xmm5 2091 2092 decq %rax 2093 jnz L$select_loop_sse_w7 2094 2095 movdqu %xmm2,0(%rdi) 2096 movdqu %xmm3,16(%rdi) 2097 movdqu %xmm4,32(%rdi) 2098 movdqu %xmm5,48(%rdi) 2099 .byte 0xf3,0xc3 2100 2101 L$SEH_end_ecp_nistz256_select_w7: 2102 2103 2104 2105 2106 .p2align 5 2107 ecp_nistz256_avx2_select_w5: 2108 2109 L$avx2_select_w5: 2110 vzeroupper 2111 vmovdqa L$Two(%rip),%ymm0 2112 2113 vpxor %ymm2,%ymm2,%ymm2 2114 vpxor %ymm3,%ymm3,%ymm3 2115 vpxor %ymm4,%ymm4,%ymm4 2116 2117 vmovdqa L$One(%rip),%ymm5 2118 vmovdqa L$Two(%rip),%ymm10 2119 2120 vmovd %edx,%xmm1 2121 vpermd %ymm1,%ymm2,%ymm1 2122 2123 movq $8,%rax 2124 L$select_loop_avx2_w5: 2125 2126 vmovdqa 0(%rsi),%ymm6 2127 vmovdqa 32(%rsi),%ymm7 2128 vmovdqa 64(%rsi),%ymm8 2129 2130 vmovdqa 96(%rsi),%ymm11 2131 vmovdqa 128(%rsi),%ymm12 2132 vmovdqa 160(%rsi),%ymm13 2133 2134 vpcmpeqd %ymm1,%ymm5,%ymm9 2135 vpcmpeqd %ymm1,%ymm10,%ymm14 2136 2137 vpaddd %ymm0,%ymm5,%ymm5 2138 vpaddd %ymm0,%ymm10,%ymm10 2139 leaq 192(%rsi),%rsi 2140 2141 vpand %ymm9,%ymm6,%ymm6 2142 vpand %ymm9,%ymm7,%ymm7 2143 vpand %ymm9,%ymm8,%ymm8 2144 vpand %ymm14,%ymm11,%ymm11 2145 vpand %ymm14,%ymm12,%ymm12 2146 vpand %ymm14,%ymm13,%ymm13 2147 2148 vpxor %ymm6,%ymm2,%ymm2 2149 vpxor %ymm7,%ymm3,%ymm3 2150 vpxor %ymm8,%ymm4,%ymm4 2151 vpxor %ymm11,%ymm2,%ymm2 2152 vpxor %ymm12,%ymm3,%ymm3 2153 vpxor %ymm13,%ymm4,%ymm4 2154 2155 decq %rax 2156 jnz L$select_loop_avx2_w5 2157 2158 vmovdqu %ymm2,0(%rdi) 2159 vmovdqu %ymm3,32(%rdi) 2160 vmovdqu %ymm4,64(%rdi) 2161 vzeroupper 2162 .byte 0xf3,0xc3 2163 2164 L$SEH_end_ecp_nistz256_avx2_select_w5: 2165 2166 2167 2168 2169 .globl _ecp_nistz256_avx2_select_w7 2170 .private_extern _ecp_nistz256_avx2_select_w7 2171 2172 .p2align 5 2173 _ecp_nistz256_avx2_select_w7: 2174 2175 L$avx2_select_w7: 2176 vzeroupper 2177 vmovdqa L$Three(%rip),%ymm0 2178 2179 vpxor %ymm2,%ymm2,%ymm2 2180 vpxor %ymm3,%ymm3,%ymm3 2181 2182 vmovdqa L$One(%rip),%ymm4 2183 vmovdqa L$Two(%rip),%ymm8 2184 vmovdqa L$Three(%rip),%ymm12 2185 2186 vmovd %edx,%xmm1 2187 vpermd %ymm1,%ymm2,%ymm1 2188 2189 2190 movq $21,%rax 2191 L$select_loop_avx2_w7: 2192 2193 vmovdqa 0(%rsi),%ymm5 2194 vmovdqa 32(%rsi),%ymm6 2195 2196 vmovdqa 64(%rsi),%ymm9 2197 vmovdqa 96(%rsi),%ymm10 2198 2199 vmovdqa 128(%rsi),%ymm13 2200 vmovdqa 160(%rsi),%ymm14 2201 2202 vpcmpeqd %ymm1,%ymm4,%ymm7 2203 vpcmpeqd %ymm1,%ymm8,%ymm11 2204 vpcmpeqd %ymm1,%ymm12,%ymm15 2205 2206 vpaddd %ymm0,%ymm4,%ymm4 2207 vpaddd %ymm0,%ymm8,%ymm8 2208 vpaddd %ymm0,%ymm12,%ymm12 2209 leaq 192(%rsi),%rsi 2210 2211 vpand %ymm7,%ymm5,%ymm5 2212 vpand %ymm7,%ymm6,%ymm6 2213 vpand %ymm11,%ymm9,%ymm9 2214 vpand %ymm11,%ymm10,%ymm10 2215 vpand %ymm15,%ymm13,%ymm13 2216 vpand %ymm15,%ymm14,%ymm14 2217 2218 vpxor %ymm5,%ymm2,%ymm2 2219 vpxor %ymm6,%ymm3,%ymm3 2220 vpxor %ymm9,%ymm2,%ymm2 2221 vpxor %ymm10,%ymm3,%ymm3 2222 vpxor %ymm13,%ymm2,%ymm2 2223 vpxor %ymm14,%ymm3,%ymm3 2224 2225 decq %rax 2226 jnz L$select_loop_avx2_w7 2227 2228 2229 vmovdqa 0(%rsi),%ymm5 2230 vmovdqa 32(%rsi),%ymm6 2231 2232 vpcmpeqd %ymm1,%ymm4,%ymm7 2233 2234 vpand %ymm7,%ymm5,%ymm5 2235 vpand %ymm7,%ymm6,%ymm6 2236 2237 vpxor %ymm5,%ymm2,%ymm2 2238 vpxor %ymm6,%ymm3,%ymm3 2239 2240 vmovdqu %ymm2,0(%rdi) 2241 vmovdqu %ymm3,32(%rdi) 2242 vzeroupper 2243 .byte 0xf3,0xc3 2244 2245 L$SEH_end_ecp_nistz256_avx2_select_w7: 2246 2247 2248 .p2align 5 2249 __ecp_nistz256_add_toq: 2250 2251 xorq %r11,%r11 2252 addq 0(%rbx),%r12 2253 adcq 8(%rbx),%r13 2254 movq %r12,%rax 2255 adcq 16(%rbx),%r8 2256 adcq 24(%rbx),%r9 2257 movq %r13,%rbp 2258 adcq $0,%r11 2259 2260 subq $-1,%r12 2261 movq %r8,%rcx 2262 sbbq %r14,%r13 2263 sbbq $0,%r8 2264 movq %r9,%r10 2265 sbbq %r15,%r9 2266 sbbq $0,%r11 2267 2268 cmovcq %rax,%r12 2269 cmovcq %rbp,%r13 2270 movq %r12,0(%rdi) 2271 cmovcq %rcx,%r8 2272 movq %r13,8(%rdi) 2273 cmovcq %r10,%r9 2274 movq %r8,16(%rdi) 2275 movq %r9,24(%rdi) 2276 2277 .byte 0xf3,0xc3 2278 2279 2280 2281 2282 .p2align 5 2283 __ecp_nistz256_sub_fromq: 2284 2285 subq 0(%rbx),%r12 2286 sbbq 8(%rbx),%r13 2287 movq %r12,%rax 2288 sbbq 16(%rbx),%r8 2289 sbbq 24(%rbx),%r9 2290 movq %r13,%rbp 2291 sbbq %r11,%r11 2292 2293 addq $-1,%r12 2294 movq %r8,%rcx 2295 adcq %r14,%r13 2296 adcq $0,%r8 2297 movq %r9,%r10 2298 adcq %r15,%r9 2299 testq %r11,%r11 2300 2301 cmovzq %rax,%r12 2302 cmovzq %rbp,%r13 2303 movq %r12,0(%rdi) 2304 cmovzq %rcx,%r8 2305 movq %r13,8(%rdi) 2306 cmovzq %r10,%r9 2307 movq %r8,16(%rdi) 2308 movq %r9,24(%rdi) 2309 2310 .byte 0xf3,0xc3 2311 2312 2313 2314 2315 .p2align 5 2316 __ecp_nistz256_subq: 2317 2318 subq %r12,%rax 2319 sbbq %r13,%rbp 2320 movq %rax,%r12 2321 sbbq %r8,%rcx 2322 sbbq %r9,%r10 2323 movq %rbp,%r13 2324 sbbq %r11,%r11 2325 2326 addq $-1,%rax 2327 movq %rcx,%r8 2328 adcq %r14,%rbp 2329 adcq $0,%rcx 2330 movq %r10,%r9 2331 adcq %r15,%r10 2332 testq %r11,%r11 2333 2334 cmovnzq %rax,%r12 2335 cmovnzq %rbp,%r13 2336 cmovnzq %rcx,%r8 2337 cmovnzq %r10,%r9 2338 2339 .byte 0xf3,0xc3 2340 2341 2342 2343 2344 .p2align 5 2345 __ecp_nistz256_mul_by_2q: 2346 2347 xorq %r11,%r11 2348 addq %r12,%r12 2349 adcq %r13,%r13 2350 movq %r12,%rax 2351 adcq %r8,%r8 2352 adcq %r9,%r9 2353 movq %r13,%rbp 2354 adcq $0,%r11 2355 2356 subq $-1,%r12 2357 movq %r8,%rcx 2358 sbbq %r14,%r13 2359 sbbq $0,%r8 2360 movq %r9,%r10 2361 sbbq %r15,%r9 2362 sbbq $0,%r11 2363 2364 cmovcq %rax,%r12 2365 cmovcq %rbp,%r13 2366 movq %r12,0(%rdi) 2367 cmovcq %rcx,%r8 2368 movq %r13,8(%rdi) 2369 cmovcq %r10,%r9 2370 movq %r8,16(%rdi) 2371 movq %r9,24(%rdi) 2372 2373 .byte 0xf3,0xc3 2374 2375 2376 .globl _ecp_nistz256_point_double 2377 .private_extern _ecp_nistz256_point_double 2378 2379 .p2align 5 2380 _ecp_nistz256_point_double: 2381 2382 leaq _OPENSSL_ia32cap_P(%rip),%rcx 2383 movq 8(%rcx),%rcx 2384 andl $0x80100,%ecx 2385 cmpl $0x80100,%ecx 2386 je L$point_doublex 2387 pushq %rbp 2388 2389 pushq %rbx 2390 2391 pushq %r12 2392 2393 pushq %r13 2394 2395 pushq %r14 2396 2397 pushq %r15 2398 2399 subq $160+8,%rsp 2400 2401 L$point_doubleq_body: 2402 2403 L$point_double_shortcutq: 2404 movdqu 0(%rsi),%xmm0 2405 movq %rsi,%rbx 2406 movdqu 16(%rsi),%xmm1 2407 movq 32+0(%rsi),%r12 2408 movq 32+8(%rsi),%r13 2409 movq 32+16(%rsi),%r8 2410 movq 32+24(%rsi),%r9 2411 movq L$poly+8(%rip),%r14 2412 movq L$poly+24(%rip),%r15 2413 movdqa %xmm0,96(%rsp) 2414 movdqa %xmm1,96+16(%rsp) 2415 leaq 32(%rdi),%r10 2416 leaq 64(%rdi),%r11 2417 .byte 102,72,15,110,199 2418 .byte 102,73,15,110,202 2419 .byte 102,73,15,110,211 2420 2421 leaq 0(%rsp),%rdi 2422 call __ecp_nistz256_mul_by_2q 2423 2424 movq 64+0(%rsi),%rax 2425 movq 64+8(%rsi),%r14 2426 movq 64+16(%rsi),%r15 2427 movq 64+24(%rsi),%r8 2428 leaq 64-0(%rsi),%rsi 2429 leaq 64(%rsp),%rdi 2430 call __ecp_nistz256_sqr_montq 2431 2432 movq 0+0(%rsp),%rax 2433 movq 8+0(%rsp),%r14 2434 leaq 0+0(%rsp),%rsi 2435 movq 16+0(%rsp),%r15 2436 movq 24+0(%rsp),%r8 2437 leaq 0(%rsp),%rdi 2438 call __ecp_nistz256_sqr_montq 2439 2440 movq 32(%rbx),%rax 2441 movq 64+0(%rbx),%r9 2442 movq 64+8(%rbx),%r10 2443 movq 64+16(%rbx),%r11 2444 movq 64+24(%rbx),%r12 2445 leaq 64-0(%rbx),%rsi 2446 leaq 32(%rbx),%rbx 2447 .byte 102,72,15,126,215 2448 call __ecp_nistz256_mul_montq 2449 call __ecp_nistz256_mul_by_2q 2450 2451 movq 96+0(%rsp),%r12 2452 movq 96+8(%rsp),%r13 2453 leaq 64(%rsp),%rbx 2454 movq 96+16(%rsp),%r8 2455 movq 96+24(%rsp),%r9 2456 leaq 32(%rsp),%rdi 2457 call __ecp_nistz256_add_toq 2458 2459 movq 96+0(%rsp),%r12 2460 movq 96+8(%rsp),%r13 2461 leaq 64(%rsp),%rbx 2462 movq 96+16(%rsp),%r8 2463 movq 96+24(%rsp),%r9 2464 leaq 64(%rsp),%rdi 2465 call __ecp_nistz256_sub_fromq 2466 2467 movq 0+0(%rsp),%rax 2468 movq 8+0(%rsp),%r14 2469 leaq 0+0(%rsp),%rsi 2470 movq 16+0(%rsp),%r15 2471 movq 24+0(%rsp),%r8 2472 .byte 102,72,15,126,207 2473 call __ecp_nistz256_sqr_montq 2474 xorq %r9,%r9 2475 movq %r12,%rax 2476 addq $-1,%r12 2477 movq %r13,%r10 2478 adcq %rsi,%r13 2479 movq %r14,%rcx 2480 adcq $0,%r14 2481 movq %r15,%r8 2482 adcq %rbp,%r15 2483 adcq $0,%r9 2484 xorq %rsi,%rsi 2485 testq $1,%rax 2486 2487 cmovzq %rax,%r12 2488 cmovzq %r10,%r13 2489 cmovzq %rcx,%r14 2490 cmovzq %r8,%r15 2491 cmovzq %rsi,%r9 2492 2493 movq %r13,%rax 2494 shrq $1,%r12 2495 shlq $63,%rax 2496 movq %r14,%r10 2497 shrq $1,%r13 2498 orq %rax,%r12 2499 shlq $63,%r10 2500 movq %r15,%rcx 2501 shrq $1,%r14 2502 orq %r10,%r13 2503 shlq $63,%rcx 2504 movq %r12,0(%rdi) 2505 shrq $1,%r15 2506 movq %r13,8(%rdi) 2507 shlq $63,%r9 2508 orq %rcx,%r14 2509 orq %r9,%r15 2510 movq %r14,16(%rdi) 2511 movq %r15,24(%rdi) 2512 movq 64(%rsp),%rax 2513 leaq 64(%rsp),%rbx 2514 movq 0+32(%rsp),%r9 2515 movq 8+32(%rsp),%r10 2516 leaq 0+32(%rsp),%rsi 2517 movq 16+32(%rsp),%r11 2518 movq 24+32(%rsp),%r12 2519 leaq 32(%rsp),%rdi 2520 call __ecp_nistz256_mul_montq 2521 2522 leaq 128(%rsp),%rdi 2523 call __ecp_nistz256_mul_by_2q 2524 2525 leaq 32(%rsp),%rbx 2526 leaq 32(%rsp),%rdi 2527 call __ecp_nistz256_add_toq 2528 2529 movq 96(%rsp),%rax 2530 leaq 96(%rsp),%rbx 2531 movq 0+0(%rsp),%r9 2532 movq 8+0(%rsp),%r10 2533 leaq 0+0(%rsp),%rsi 2534 movq 16+0(%rsp),%r11 2535 movq 24+0(%rsp),%r12 2536 leaq 0(%rsp),%rdi 2537 call __ecp_nistz256_mul_montq 2538 2539 leaq 128(%rsp),%rdi 2540 call __ecp_nistz256_mul_by_2q 2541 2542 movq 0+32(%rsp),%rax 2543 movq 8+32(%rsp),%r14 2544 leaq 0+32(%rsp),%rsi 2545 movq 16+32(%rsp),%r15 2546 movq 24+32(%rsp),%r8 2547 .byte 102,72,15,126,199 2548 call __ecp_nistz256_sqr_montq 2549 2550 leaq 128(%rsp),%rbx 2551 movq %r14,%r8 2552 movq %r15,%r9 2553 movq %rsi,%r14 2554 movq %rbp,%r15 2555 call __ecp_nistz256_sub_fromq 2556 2557 movq 0+0(%rsp),%rax 2558 movq 0+8(%rsp),%rbp 2559 movq 0+16(%rsp),%rcx 2560 movq 0+24(%rsp),%r10 2561 leaq 0(%rsp),%rdi 2562 call __ecp_nistz256_subq 2563 2564 movq 32(%rsp),%rax 2565 leaq 32(%rsp),%rbx 2566 movq %r12,%r14 2567 xorl %ecx,%ecx 2568 movq %r12,0+0(%rsp) 2569 movq %r13,%r10 2570 movq %r13,0+8(%rsp) 2571 cmovzq %r8,%r11 2572 movq %r8,0+16(%rsp) 2573 leaq 0-0(%rsp),%rsi 2574 cmovzq %r9,%r12 2575 movq %r9,0+24(%rsp) 2576 movq %r14,%r9 2577 leaq 0(%rsp),%rdi 2578 call __ecp_nistz256_mul_montq 2579 2580 .byte 102,72,15,126,203 2581 .byte 102,72,15,126,207 2582 call __ecp_nistz256_sub_fromq 2583 2584 leaq 160+56(%rsp),%rsi 2585 2586 movq -48(%rsi),%r15 2587 2588 movq -40(%rsi),%r14 2589 2590 movq -32(%rsi),%r13 2591 2592 movq -24(%rsi),%r12 2593 2594 movq -16(%rsi),%rbx 2595 2596 movq -8(%rsi),%rbp 2597 2598 leaq (%rsi),%rsp 2599 2600 L$point_doubleq_epilogue: 2601 .byte 0xf3,0xc3 2602 2603 2604 .globl _ecp_nistz256_point_add 2605 .private_extern _ecp_nistz256_point_add 2606 2607 .p2align 5 2608 _ecp_nistz256_point_add: 2609 2610 leaq _OPENSSL_ia32cap_P(%rip),%rcx 2611 movq 8(%rcx),%rcx 2612 andl $0x80100,%ecx 2613 cmpl $0x80100,%ecx 2614 je L$point_addx 2615 pushq %rbp 2616 2617 pushq %rbx 2618 2619 pushq %r12 2620 2621 pushq %r13 2622 2623 pushq %r14 2624 2625 pushq %r15 2626 2627 subq $576+8,%rsp 2628 2629 L$point_addq_body: 2630 2631 movdqu 0(%rsi),%xmm0 2632 movdqu 16(%rsi),%xmm1 2633 movdqu 32(%rsi),%xmm2 2634 movdqu 48(%rsi),%xmm3 2635 movdqu 64(%rsi),%xmm4 2636 movdqu 80(%rsi),%xmm5 2637 movq %rsi,%rbx 2638 movq %rdx,%rsi 2639 movdqa %xmm0,384(%rsp) 2640 movdqa %xmm1,384+16(%rsp) 2641 movdqa %xmm2,416(%rsp) 2642 movdqa %xmm3,416+16(%rsp) 2643 movdqa %xmm4,448(%rsp) 2644 movdqa %xmm5,448+16(%rsp) 2645 por %xmm4,%xmm5 2646 2647 movdqu 0(%rsi),%xmm0 2648 pshufd $0xb1,%xmm5,%xmm3 2649 movdqu 16(%rsi),%xmm1 2650 movdqu 32(%rsi),%xmm2 2651 por %xmm3,%xmm5 2652 movdqu 48(%rsi),%xmm3 2653 movq 64+0(%rsi),%rax 2654 movq 64+8(%rsi),%r14 2655 movq 64+16(%rsi),%r15 2656 movq 64+24(%rsi),%r8 2657 movdqa %xmm0,480(%rsp) 2658 pshufd $0x1e,%xmm5,%xmm4 2659 movdqa %xmm1,480+16(%rsp) 2660 movdqu 64(%rsi),%xmm0 2661 movdqu 80(%rsi),%xmm1 2662 movdqa %xmm2,512(%rsp) 2663 movdqa %xmm3,512+16(%rsp) 2664 por %xmm4,%xmm5 2665 pxor %xmm4,%xmm4 2666 por %xmm0,%xmm1 2667 .byte 102,72,15,110,199 2668 2669 leaq 64-0(%rsi),%rsi 2670 movq %rax,544+0(%rsp) 2671 movq %r14,544+8(%rsp) 2672 movq %r15,544+16(%rsp) 2673 movq %r8,544+24(%rsp) 2674 leaq 96(%rsp),%rdi 2675 call __ecp_nistz256_sqr_montq 2676 2677 pcmpeqd %xmm4,%xmm5 2678 pshufd $0xb1,%xmm1,%xmm4 2679 por %xmm1,%xmm4 2680 pshufd $0,%xmm5,%xmm5 2681 pshufd $0x1e,%xmm4,%xmm3 2682 por %xmm3,%xmm4 2683 pxor %xmm3,%xmm3 2684 pcmpeqd %xmm3,%xmm4 2685 pshufd $0,%xmm4,%xmm4 2686 movq 64+0(%rbx),%rax 2687 movq 64+8(%rbx),%r14 2688 movq 64+16(%rbx),%r15 2689 movq 64+24(%rbx),%r8 2690 .byte 102,72,15,110,203 2691 2692 leaq 64-0(%rbx),%rsi 2693 leaq 32(%rsp),%rdi 2694 call __ecp_nistz256_sqr_montq 2695 2696 movq 544(%rsp),%rax 2697 leaq 544(%rsp),%rbx 2698 movq 0+96(%rsp),%r9 2699 movq 8+96(%rsp),%r10 2700 leaq 0+96(%rsp),%rsi 2701 movq 16+96(%rsp),%r11 2702 movq 24+96(%rsp),%r12 2703 leaq 224(%rsp),%rdi 2704 call __ecp_nistz256_mul_montq 2705 2706 movq 448(%rsp),%rax 2707 leaq 448(%rsp),%rbx 2708 movq 0+32(%rsp),%r9 2709 movq 8+32(%rsp),%r10 2710 leaq 0+32(%rsp),%rsi 2711 movq 16+32(%rsp),%r11 2712 movq 24+32(%rsp),%r12 2713 leaq 256(%rsp),%rdi 2714 call __ecp_nistz256_mul_montq 2715 2716 movq 416(%rsp),%rax 2717 leaq 416(%rsp),%rbx 2718 movq 0+224(%rsp),%r9 2719 movq 8+224(%rsp),%r10 2720 leaq 0+224(%rsp),%rsi 2721 movq 16+224(%rsp),%r11 2722 movq 24+224(%rsp),%r12 2723 leaq 224(%rsp),%rdi 2724 call __ecp_nistz256_mul_montq 2725 2726 movq 512(%rsp),%rax 2727 leaq 512(%rsp),%rbx 2728 movq 0+256(%rsp),%r9 2729 movq 8+256(%rsp),%r10 2730 leaq 0+256(%rsp),%rsi 2731 movq 16+256(%rsp),%r11 2732 movq 24+256(%rsp),%r12 2733 leaq 256(%rsp),%rdi 2734 call __ecp_nistz256_mul_montq 2735 2736 leaq 224(%rsp),%rbx 2737 leaq 64(%rsp),%rdi 2738 call __ecp_nistz256_sub_fromq 2739 2740 orq %r13,%r12 2741 movdqa %xmm4,%xmm2 2742 orq %r8,%r12 2743 orq %r9,%r12 2744 por %xmm5,%xmm2 2745 .byte 102,73,15,110,220 2746 2747 movq 384(%rsp),%rax 2748 leaq 384(%rsp),%rbx 2749 movq 0+96(%rsp),%r9 2750 movq 8+96(%rsp),%r10 2751 leaq 0+96(%rsp),%rsi 2752 movq 16+96(%rsp),%r11 2753 movq 24+96(%rsp),%r12 2754 leaq 160(%rsp),%rdi 2755 call __ecp_nistz256_mul_montq 2756 2757 movq 480(%rsp),%rax 2758 leaq 480(%rsp),%rbx 2759 movq 0+32(%rsp),%r9 2760 movq 8+32(%rsp),%r10 2761 leaq 0+32(%rsp),%rsi 2762 movq 16+32(%rsp),%r11 2763 movq 24+32(%rsp),%r12 2764 leaq 192(%rsp),%rdi 2765 call __ecp_nistz256_mul_montq 2766 2767 leaq 160(%rsp),%rbx 2768 leaq 0(%rsp),%rdi 2769 call __ecp_nistz256_sub_fromq 2770 2771 orq %r13,%r12 2772 orq %r8,%r12 2773 orq %r9,%r12 2774 2775 .byte 0x3e 2776 jnz L$add_proceedq 2777 .byte 102,73,15,126,208 2778 .byte 102,73,15,126,217 2779 testq %r8,%r8 2780 jnz L$add_proceedq 2781 testq %r9,%r9 2782 jz L$add_doubleq 2783 2784 .byte 102,72,15,126,199 2785 pxor %xmm0,%xmm0 2786 movdqu %xmm0,0(%rdi) 2787 movdqu %xmm0,16(%rdi) 2788 movdqu %xmm0,32(%rdi) 2789 movdqu %xmm0,48(%rdi) 2790 movdqu %xmm0,64(%rdi) 2791 movdqu %xmm0,80(%rdi) 2792 jmp L$add_doneq 2793 2794 .p2align 5 2795 L$add_doubleq: 2796 .byte 102,72,15,126,206 2797 .byte 102,72,15,126,199 2798 addq $416,%rsp 2799 2800 jmp L$point_double_shortcutq 2801 2802 2803 .p2align 5 2804 L$add_proceedq: 2805 movq 0+64(%rsp),%rax 2806 movq 8+64(%rsp),%r14 2807 leaq 0+64(%rsp),%rsi 2808 movq 16+64(%rsp),%r15 2809 movq 24+64(%rsp),%r8 2810 leaq 96(%rsp),%rdi 2811 call __ecp_nistz256_sqr_montq 2812 2813 movq 448(%rsp),%rax 2814 leaq 448(%rsp),%rbx 2815 movq 0+0(%rsp),%r9 2816 movq 8+0(%rsp),%r10 2817 leaq 0+0(%rsp),%rsi 2818 movq 16+0(%rsp),%r11 2819 movq 24+0(%rsp),%r12 2820 leaq 352(%rsp),%rdi 2821 call __ecp_nistz256_mul_montq 2822 2823 movq 0+0(%rsp),%rax 2824 movq 8+0(%rsp),%r14 2825 leaq 0+0(%rsp),%rsi 2826 movq 16+0(%rsp),%r15 2827 movq 24+0(%rsp),%r8 2828 leaq 32(%rsp),%rdi 2829 call __ecp_nistz256_sqr_montq 2830 2831 movq 544(%rsp),%rax 2832 leaq 544(%rsp),%rbx 2833 movq 0+352(%rsp),%r9 2834 movq 8+352(%rsp),%r10 2835 leaq 0+352(%rsp),%rsi 2836 movq 16+352(%rsp),%r11 2837 movq 24+352(%rsp),%r12 2838 leaq 352(%rsp),%rdi 2839 call __ecp_nistz256_mul_montq 2840 2841 movq 0(%rsp),%rax 2842 leaq 0(%rsp),%rbx 2843 movq 0+32(%rsp),%r9 2844 movq 8+32(%rsp),%r10 2845 leaq 0+32(%rsp),%rsi 2846 movq 16+32(%rsp),%r11 2847 movq 24+32(%rsp),%r12 2848 leaq 128(%rsp),%rdi 2849 call __ecp_nistz256_mul_montq 2850 2851 movq 160(%rsp),%rax 2852 leaq 160(%rsp),%rbx 2853 movq 0+32(%rsp),%r9 2854 movq 8+32(%rsp),%r10 2855 leaq 0+32(%rsp),%rsi 2856 movq 16+32(%rsp),%r11 2857 movq 24+32(%rsp),%r12 2858 leaq 192(%rsp),%rdi 2859 call __ecp_nistz256_mul_montq 2860 2861 2862 2863 2864 xorq %r11,%r11 2865 addq %r12,%r12 2866 leaq 96(%rsp),%rsi 2867 adcq %r13,%r13 2868 movq %r12,%rax 2869 adcq %r8,%r8 2870 adcq %r9,%r9 2871 movq %r13,%rbp 2872 adcq $0,%r11 2873 2874 subq $-1,%r12 2875 movq %r8,%rcx 2876 sbbq %r14,%r13 2877 sbbq $0,%r8 2878 movq %r9,%r10 2879 sbbq %r15,%r9 2880 sbbq $0,%r11 2881 2882 cmovcq %rax,%r12 2883 movq 0(%rsi),%rax 2884 cmovcq %rbp,%r13 2885 movq 8(%rsi),%rbp 2886 cmovcq %rcx,%r8 2887 movq 16(%rsi),%rcx 2888 cmovcq %r10,%r9 2889 movq 24(%rsi),%r10 2890 2891 call __ecp_nistz256_subq 2892 2893 leaq 128(%rsp),%rbx 2894 leaq 288(%rsp),%rdi 2895 call __ecp_nistz256_sub_fromq 2896 2897 movq 192+0(%rsp),%rax 2898 movq 192+8(%rsp),%rbp 2899 movq 192+16(%rsp),%rcx 2900 movq 192+24(%rsp),%r10 2901 leaq 320(%rsp),%rdi 2902 2903 call __ecp_nistz256_subq 2904 2905 movq %r12,0(%rdi) 2906 movq %r13,8(%rdi) 2907 movq %r8,16(%rdi) 2908 movq %r9,24(%rdi) 2909 movq 128(%rsp),%rax 2910 leaq 128(%rsp),%rbx 2911 movq 0+224(%rsp),%r9 2912 movq 8+224(%rsp),%r10 2913 leaq 0+224(%rsp),%rsi 2914 movq 16+224(%rsp),%r11 2915 movq 24+224(%rsp),%r12 2916 leaq 256(%rsp),%rdi 2917 call __ecp_nistz256_mul_montq 2918 2919 movq 320(%rsp),%rax 2920 leaq 320(%rsp),%rbx 2921 movq 0+64(%rsp),%r9 2922 movq 8+64(%rsp),%r10 2923 leaq 0+64(%rsp),%rsi 2924 movq 16+64(%rsp),%r11 2925 movq 24+64(%rsp),%r12 2926 leaq 320(%rsp),%rdi 2927 call __ecp_nistz256_mul_montq 2928 2929 leaq 256(%rsp),%rbx 2930 leaq 320(%rsp),%rdi 2931 call __ecp_nistz256_sub_fromq 2932 2933 .byte 102,72,15,126,199 2934 2935 movdqa %xmm5,%xmm0 2936 movdqa %xmm5,%xmm1 2937 pandn 352(%rsp),%xmm0 2938 movdqa %xmm5,%xmm2 2939 pandn 352+16(%rsp),%xmm1 2940 movdqa %xmm5,%xmm3 2941 pand 544(%rsp),%xmm2 2942 pand 544+16(%rsp),%xmm3 2943 por %xmm0,%xmm2 2944 por %xmm1,%xmm3 2945 2946 movdqa %xmm4,%xmm0 2947 movdqa %xmm4,%xmm1 2948 pandn %xmm2,%xmm0 2949 movdqa %xmm4,%xmm2 2950 pandn %xmm3,%xmm1 2951 movdqa %xmm4,%xmm3 2952 pand 448(%rsp),%xmm2 2953 pand 448+16(%rsp),%xmm3 2954 por %xmm0,%xmm2 2955 por %xmm1,%xmm3 2956 movdqu %xmm2,64(%rdi) 2957 movdqu %xmm3,80(%rdi) 2958 2959 movdqa %xmm5,%xmm0 2960 movdqa %xmm5,%xmm1 2961 pandn 288(%rsp),%xmm0 2962 movdqa %xmm5,%xmm2 2963 pandn 288+16(%rsp),%xmm1 2964 movdqa %xmm5,%xmm3 2965 pand 480(%rsp),%xmm2 2966 pand 480+16(%rsp),%xmm3 2967 por %xmm0,%xmm2 2968 por %xmm1,%xmm3 2969 2970 movdqa %xmm4,%xmm0 2971 movdqa %xmm4,%xmm1 2972 pandn %xmm2,%xmm0 2973 movdqa %xmm4,%xmm2 2974 pandn %xmm3,%xmm1 2975 movdqa %xmm4,%xmm3 2976 pand 384(%rsp),%xmm2 2977 pand 384+16(%rsp),%xmm3 2978 por %xmm0,%xmm2 2979 por %xmm1,%xmm3 2980 movdqu %xmm2,0(%rdi) 2981 movdqu %xmm3,16(%rdi) 2982 2983 movdqa %xmm5,%xmm0 2984 movdqa %xmm5,%xmm1 2985 pandn 320(%rsp),%xmm0 2986 movdqa %xmm5,%xmm2 2987 pandn 320+16(%rsp),%xmm1 2988 movdqa %xmm5,%xmm3 2989 pand 512(%rsp),%xmm2 2990 pand 512+16(%rsp),%xmm3 2991 por %xmm0,%xmm2 2992 por %xmm1,%xmm3 2993 2994 movdqa %xmm4,%xmm0 2995 movdqa %xmm4,%xmm1 2996 pandn %xmm2,%xmm0 2997 movdqa %xmm4,%xmm2 2998 pandn %xmm3,%xmm1 2999 movdqa %xmm4,%xmm3 3000 pand 416(%rsp),%xmm2 3001 pand 416+16(%rsp),%xmm3 3002 por %xmm0,%xmm2 3003 por %xmm1,%xmm3 3004 movdqu %xmm2,32(%rdi) 3005 movdqu %xmm3,48(%rdi) 3006 3007 L$add_doneq: 3008 leaq 576+56(%rsp),%rsi 3009 3010 movq -48(%rsi),%r15 3011 3012 movq -40(%rsi),%r14 3013 3014 movq -32(%rsi),%r13 3015 3016 movq -24(%rsi),%r12 3017 3018 movq -16(%rsi),%rbx 3019 3020 movq -8(%rsi),%rbp 3021 3022 leaq (%rsi),%rsp 3023 3024 L$point_addq_epilogue: 3025 .byte 0xf3,0xc3 3026 3027 3028 .globl _ecp_nistz256_point_add_affine 3029 .private_extern _ecp_nistz256_point_add_affine 3030 3031 .p2align 5 3032 _ecp_nistz256_point_add_affine: 3033 3034 leaq _OPENSSL_ia32cap_P(%rip),%rcx 3035 movq 8(%rcx),%rcx 3036 andl $0x80100,%ecx 3037 cmpl $0x80100,%ecx 3038 je L$point_add_affinex 3039 pushq %rbp 3040 3041 pushq %rbx 3042 3043 pushq %r12 3044 3045 pushq %r13 3046 3047 pushq %r14 3048 3049 pushq %r15 3050 3051 subq $480+8,%rsp 3052 3053 L$add_affineq_body: 3054 3055 movdqu 0(%rsi),%xmm0 3056 movq %rdx,%rbx 3057 movdqu 16(%rsi),%xmm1 3058 movdqu 32(%rsi),%xmm2 3059 movdqu 48(%rsi),%xmm3 3060 movdqu 64(%rsi),%xmm4 3061 movdqu 80(%rsi),%xmm5 3062 movq 64+0(%rsi),%rax 3063 movq 64+8(%rsi),%r14 3064 movq 64+16(%rsi),%r15 3065 movq 64+24(%rsi),%r8 3066 movdqa %xmm0,320(%rsp) 3067 movdqa %xmm1,320+16(%rsp) 3068 movdqa %xmm2,352(%rsp) 3069 movdqa %xmm3,352+16(%rsp) 3070 movdqa %xmm4,384(%rsp) 3071 movdqa %xmm5,384+16(%rsp) 3072 por %xmm4,%xmm5 3073 3074 movdqu 0(%rbx),%xmm0 3075 pshufd $0xb1,%xmm5,%xmm3 3076 movdqu 16(%rbx),%xmm1 3077 movdqu 32(%rbx),%xmm2 3078 por %xmm3,%xmm5 3079 movdqu 48(%rbx),%xmm3 3080 movdqa %xmm0,416(%rsp) 3081 pshufd $0x1e,%xmm5,%xmm4 3082 movdqa %xmm1,416+16(%rsp) 3083 por %xmm0,%xmm1 3084 .byte 102,72,15,110,199 3085 movdqa %xmm2,448(%rsp) 3086 movdqa %xmm3,448+16(%rsp) 3087 por %xmm2,%xmm3 3088 por %xmm4,%xmm5 3089 pxor %xmm4,%xmm4 3090 por %xmm1,%xmm3 3091 3092 leaq 64-0(%rsi),%rsi 3093 leaq 32(%rsp),%rdi 3094 call __ecp_nistz256_sqr_montq 3095 3096 pcmpeqd %xmm4,%xmm5 3097 pshufd $0xb1,%xmm3,%xmm4 3098 movq 0(%rbx),%rax 3099 3100 movq %r12,%r9 3101 por %xmm3,%xmm4 3102 pshufd $0,%xmm5,%xmm5 3103 pshufd $0x1e,%xmm4,%xmm3 3104 movq %r13,%r10 3105 por %xmm3,%xmm4 3106 pxor %xmm3,%xmm3 3107 movq %r14,%r11 3108 pcmpeqd %xmm3,%xmm4 3109 pshufd $0,%xmm4,%xmm4 3110 3111 leaq 32-0(%rsp),%rsi 3112 movq %r15,%r12 3113 leaq 0(%rsp),%rdi 3114 call __ecp_nistz256_mul_montq 3115 3116 leaq 320(%rsp),%rbx 3117 leaq 64(%rsp),%rdi 3118 call __ecp_nistz256_sub_fromq 3119 3120 movq 384(%rsp),%rax 3121 leaq 384(%rsp),%rbx 3122 movq 0+32(%rsp),%r9 3123 movq 8+32(%rsp),%r10 3124 leaq 0+32(%rsp),%rsi 3125 movq 16+32(%rsp),%r11 3126 movq 24+32(%rsp),%r12 3127 leaq 32(%rsp),%rdi 3128 call __ecp_nistz256_mul_montq 3129 3130 movq 384(%rsp),%rax 3131 leaq 384(%rsp),%rbx 3132 movq 0+64(%rsp),%r9 3133 movq 8+64(%rsp),%r10 3134 leaq 0+64(%rsp),%rsi 3135 movq 16+64(%rsp),%r11 3136 movq 24+64(%rsp),%r12 3137 leaq 288(%rsp),%rdi 3138 call __ecp_nistz256_mul_montq 3139 3140 movq 448(%rsp),%rax 3141 leaq 448(%rsp),%rbx 3142 movq 0+32(%rsp),%r9 3143 movq 8+32(%rsp),%r10 3144 leaq 0+32(%rsp),%rsi 3145 movq 16+32(%rsp),%r11 3146 movq 24+32(%rsp),%r12 3147 leaq 32(%rsp),%rdi 3148 call __ecp_nistz256_mul_montq 3149 3150 leaq 352(%rsp),%rbx 3151 leaq 96(%rsp),%rdi 3152 call __ecp_nistz256_sub_fromq 3153 3154 movq 0+64(%rsp),%rax 3155 movq 8+64(%rsp),%r14 3156 leaq 0+64(%rsp),%rsi 3157 movq 16+64(%rsp),%r15 3158 movq 24+64(%rsp),%r8 3159 leaq 128(%rsp),%rdi 3160 call __ecp_nistz256_sqr_montq 3161 3162 movq 0+96(%rsp),%rax 3163 movq 8+96(%rsp),%r14 3164 leaq 0+96(%rsp),%rsi 3165 movq 16+96(%rsp),%r15 3166 movq 24+96(%rsp),%r8 3167 leaq 192(%rsp),%rdi 3168 call __ecp_nistz256_sqr_montq 3169 3170 movq 128(%rsp),%rax 3171 leaq 128(%rsp),%rbx 3172 movq 0+64(%rsp),%r9 3173 movq 8+64(%rsp),%r10 3174 leaq 0+64(%rsp),%rsi 3175 movq 16+64(%rsp),%r11 3176 movq 24+64(%rsp),%r12 3177 leaq 160(%rsp),%rdi 3178 call __ecp_nistz256_mul_montq 3179 3180 movq 320(%rsp),%rax 3181 leaq 320(%rsp),%rbx 3182 movq 0+128(%rsp),%r9 3183 movq 8+128(%rsp),%r10 3184 leaq 0+128(%rsp),%rsi 3185 movq 16+128(%rsp),%r11 3186 movq 24+128(%rsp),%r12 3187 leaq 0(%rsp),%rdi 3188 call __ecp_nistz256_mul_montq 3189 3190 3191 3192 3193 xorq %r11,%r11 3194 addq %r12,%r12 3195 leaq 192(%rsp),%rsi 3196 adcq %r13,%r13 3197 movq %r12,%rax 3198 adcq %r8,%r8 3199 adcq %r9,%r9 3200 movq %r13,%rbp 3201 adcq $0,%r11 3202 3203 subq $-1,%r12 3204 movq %r8,%rcx 3205 sbbq %r14,%r13 3206 sbbq $0,%r8 3207 movq %r9,%r10 3208 sbbq %r15,%r9 3209 sbbq $0,%r11 3210 3211 cmovcq %rax,%r12 3212 movq 0(%rsi),%rax 3213 cmovcq %rbp,%r13 3214 movq 8(%rsi),%rbp 3215 cmovcq %rcx,%r8 3216 movq 16(%rsi),%rcx 3217 cmovcq %r10,%r9 3218 movq 24(%rsi),%r10 3219 3220 call __ecp_nistz256_subq 3221 3222 leaq 160(%rsp),%rbx 3223 leaq 224(%rsp),%rdi 3224 call __ecp_nistz256_sub_fromq 3225 3226 movq 0+0(%rsp),%rax 3227 movq 0+8(%rsp),%rbp 3228 movq 0+16(%rsp),%rcx 3229 movq 0+24(%rsp),%r10 3230 leaq 64(%rsp),%rdi 3231 3232 call __ecp_nistz256_subq 3233 3234 movq %r12,0(%rdi) 3235 movq %r13,8(%rdi) 3236 movq %r8,16(%rdi) 3237 movq %r9,24(%rdi) 3238 movq 352(%rsp),%rax 3239 leaq 352(%rsp),%rbx 3240 movq 0+160(%rsp),%r9 3241 movq 8+160(%rsp),%r10 3242 leaq 0+160(%rsp),%rsi 3243 movq 16+160(%rsp),%r11 3244 movq 24+160(%rsp),%r12 3245 leaq 32(%rsp),%rdi 3246 call __ecp_nistz256_mul_montq 3247 3248 movq 96(%rsp),%rax 3249 leaq 96(%rsp),%rbx 3250 movq 0+64(%rsp),%r9 3251 movq 8+64(%rsp),%r10 3252 leaq 0+64(%rsp),%rsi 3253 movq 16+64(%rsp),%r11 3254 movq 24+64(%rsp),%r12 3255 leaq 64(%rsp),%rdi 3256 call __ecp_nistz256_mul_montq 3257 3258 leaq 32(%rsp),%rbx 3259 leaq 256(%rsp),%rdi 3260 call __ecp_nistz256_sub_fromq 3261 3262 .byte 102,72,15,126,199 3263 3264 movdqa %xmm5,%xmm0 3265 movdqa %xmm5,%xmm1 3266 pandn 288(%rsp),%xmm0 3267 movdqa %xmm5,%xmm2 3268 pandn 288+16(%rsp),%xmm1 3269 movdqa %xmm5,%xmm3 3270 pand L$ONE_mont(%rip),%xmm2 3271 pand L$ONE_mont+16(%rip),%xmm3 3272 por %xmm0,%xmm2 3273 por %xmm1,%xmm3 3274 3275 movdqa %xmm4,%xmm0 3276 movdqa %xmm4,%xmm1 3277 pandn %xmm2,%xmm0 3278 movdqa %xmm4,%xmm2 3279 pandn %xmm3,%xmm1 3280 movdqa %xmm4,%xmm3 3281 pand 384(%rsp),%xmm2 3282 pand 384+16(%rsp),%xmm3 3283 por %xmm0,%xmm2 3284 por %xmm1,%xmm3 3285 movdqu %xmm2,64(%rdi) 3286 movdqu %xmm3,80(%rdi) 3287 3288 movdqa %xmm5,%xmm0 3289 movdqa %xmm5,%xmm1 3290 pandn 224(%rsp),%xmm0 3291 movdqa %xmm5,%xmm2 3292 pandn 224+16(%rsp),%xmm1 3293 movdqa %xmm5,%xmm3 3294 pand 416(%rsp),%xmm2 3295 pand 416+16(%rsp),%xmm3 3296 por %xmm0,%xmm2 3297 por %xmm1,%xmm3 3298 3299 movdqa %xmm4,%xmm0 3300 movdqa %xmm4,%xmm1 3301 pandn %xmm2,%xmm0 3302 movdqa %xmm4,%xmm2 3303 pandn %xmm3,%xmm1 3304 movdqa %xmm4,%xmm3 3305 pand 320(%rsp),%xmm2 3306 pand 320+16(%rsp),%xmm3 3307 por %xmm0,%xmm2 3308 por %xmm1,%xmm3 3309 movdqu %xmm2,0(%rdi) 3310 movdqu %xmm3,16(%rdi) 3311 3312 movdqa %xmm5,%xmm0 3313 movdqa %xmm5,%xmm1 3314 pandn 256(%rsp),%xmm0 3315 movdqa %xmm5,%xmm2 3316 pandn 256+16(%rsp),%xmm1 3317 movdqa %xmm5,%xmm3 3318 pand 448(%rsp),%xmm2 3319 pand 448+16(%rsp),%xmm3 3320 por %xmm0,%xmm2 3321 por %xmm1,%xmm3 3322 3323 movdqa %xmm4,%xmm0 3324 movdqa %xmm4,%xmm1 3325 pandn %xmm2,%xmm0 3326 movdqa %xmm4,%xmm2 3327 pandn %xmm3,%xmm1 3328 movdqa %xmm4,%xmm3 3329 pand 352(%rsp),%xmm2 3330 pand 352+16(%rsp),%xmm3 3331 por %xmm0,%xmm2 3332 por %xmm1,%xmm3 3333 movdqu %xmm2,32(%rdi) 3334 movdqu %xmm3,48(%rdi) 3335 3336 leaq 480+56(%rsp),%rsi 3337 3338 movq -48(%rsi),%r15 3339 3340 movq -40(%rsi),%r14 3341 3342 movq -32(%rsi),%r13 3343 3344 movq -24(%rsi),%r12 3345 3346 movq -16(%rsi),%rbx 3347 3348 movq -8(%rsi),%rbp 3349 3350 leaq (%rsi),%rsp 3351 3352 L$add_affineq_epilogue: 3353 .byte 0xf3,0xc3 3354 3355 3356 3357 .p2align 5 3358 __ecp_nistz256_add_tox: 3359 3360 xorq %r11,%r11 3361 adcq 0(%rbx),%r12 3362 adcq 8(%rbx),%r13 3363 movq %r12,%rax 3364 adcq 16(%rbx),%r8 3365 adcq 24(%rbx),%r9 3366 movq %r13,%rbp 3367 adcq $0,%r11 3368 3369 xorq %r10,%r10 3370 sbbq $-1,%r12 3371 movq %r8,%rcx 3372 sbbq %r14,%r13 3373 sbbq $0,%r8 3374 movq %r9,%r10 3375 sbbq %r15,%r9 3376 sbbq $0,%r11 3377 3378 cmovcq %rax,%r12 3379 cmovcq %rbp,%r13 3380 movq %r12,0(%rdi) 3381 cmovcq %rcx,%r8 3382 movq %r13,8(%rdi) 3383 cmovcq %r10,%r9 3384 movq %r8,16(%rdi) 3385 movq %r9,24(%rdi) 3386 3387 .byte 0xf3,0xc3 3388 3389 3390 3391 3392 .p2align 5 3393 __ecp_nistz256_sub_fromx: 3394 3395 xorq %r11,%r11 3396 sbbq 0(%rbx),%r12 3397 sbbq 8(%rbx),%r13 3398 movq %r12,%rax 3399 sbbq 16(%rbx),%r8 3400 sbbq 24(%rbx),%r9 3401 movq %r13,%rbp 3402 sbbq $0,%r11 3403 3404 xorq %r10,%r10 3405 adcq $-1,%r12 3406 movq %r8,%rcx 3407 adcq %r14,%r13 3408 adcq $0,%r8 3409 movq %r9,%r10 3410 adcq %r15,%r9 3411 3412 btq $0,%r11 3413 cmovncq %rax,%r12 3414 cmovncq %rbp,%r13 3415 movq %r12,0(%rdi) 3416 cmovncq %rcx,%r8 3417 movq %r13,8(%rdi) 3418 cmovncq %r10,%r9 3419 movq %r8,16(%rdi) 3420 movq %r9,24(%rdi) 3421 3422 .byte 0xf3,0xc3 3423 3424 3425 3426 3427 .p2align 5 3428 __ecp_nistz256_subx: 3429 3430 xorq %r11,%r11 3431 sbbq %r12,%rax 3432 sbbq %r13,%rbp 3433 movq %rax,%r12 3434 sbbq %r8,%rcx 3435 sbbq %r9,%r10 3436 movq %rbp,%r13 3437 sbbq $0,%r11 3438 3439 xorq %r9,%r9 3440 adcq $-1,%rax 3441 movq %rcx,%r8 3442 adcq %r14,%rbp 3443 adcq $0,%rcx 3444 movq %r10,%r9 3445 adcq %r15,%r10 3446 3447 btq $0,%r11 3448 cmovcq %rax,%r12 3449 cmovcq %rbp,%r13 3450 cmovcq %rcx,%r8 3451 cmovcq %r10,%r9 3452 3453 .byte 0xf3,0xc3 3454 3455 3456 3457 3458 .p2align 5 3459 __ecp_nistz256_mul_by_2x: 3460 3461 xorq %r11,%r11 3462 adcq %r12,%r12 3463 adcq %r13,%r13 3464 movq %r12,%rax 3465 adcq %r8,%r8 3466 adcq %r9,%r9 3467 movq %r13,%rbp 3468 adcq $0,%r11 3469 3470 xorq %r10,%r10 3471 sbbq $-1,%r12 3472 movq %r8,%rcx 3473 sbbq %r14,%r13 3474 sbbq $0,%r8 3475 movq %r9,%r10 3476 sbbq %r15,%r9 3477 sbbq $0,%r11 3478 3479 cmovcq %rax,%r12 3480 cmovcq %rbp,%r13 3481 movq %r12,0(%rdi) 3482 cmovcq %rcx,%r8 3483 movq %r13,8(%rdi) 3484 cmovcq %r10,%r9 3485 movq %r8,16(%rdi) 3486 movq %r9,24(%rdi) 3487 3488 .byte 0xf3,0xc3 3489 3490 3491 3492 .p2align 5 3493 ecp_nistz256_point_doublex: 3494 3495 L$point_doublex: 3496 pushq %rbp 3497 3498 pushq %rbx 3499 3500 pushq %r12 3501 3502 pushq %r13 3503 3504 pushq %r14 3505 3506 pushq %r15 3507 3508 subq $160+8,%rsp 3509 3510 L$point_doublex_body: 3511 3512 L$point_double_shortcutx: 3513 movdqu 0(%rsi),%xmm0 3514 movq %rsi,%rbx 3515 movdqu 16(%rsi),%xmm1 3516 movq 32+0(%rsi),%r12 3517 movq 32+8(%rsi),%r13 3518 movq 32+16(%rsi),%r8 3519 movq 32+24(%rsi),%r9 3520 movq L$poly+8(%rip),%r14 3521 movq L$poly+24(%rip),%r15 3522 movdqa %xmm0,96(%rsp) 3523 movdqa %xmm1,96+16(%rsp) 3524 leaq 32(%rdi),%r10 3525 leaq 64(%rdi),%r11 3526 .byte 102,72,15,110,199 3527 .byte 102,73,15,110,202 3528 .byte 102,73,15,110,211 3529 3530 leaq 0(%rsp),%rdi 3531 call __ecp_nistz256_mul_by_2x 3532 3533 movq 64+0(%rsi),%rdx 3534 movq 64+8(%rsi),%r14 3535 movq 64+16(%rsi),%r15 3536 movq 64+24(%rsi),%r8 3537 leaq 64-128(%rsi),%rsi 3538 leaq 64(%rsp),%rdi 3539 call __ecp_nistz256_sqr_montx 3540 3541 movq 0+0(%rsp),%rdx 3542 movq 8+0(%rsp),%r14 3543 leaq -128+0(%rsp),%rsi 3544 movq 16+0(%rsp),%r15 3545 movq 24+0(%rsp),%r8 3546 leaq 0(%rsp),%rdi 3547 call __ecp_nistz256_sqr_montx 3548 3549 movq 32(%rbx),%rdx 3550 movq 64+0(%rbx),%r9 3551 movq 64+8(%rbx),%r10 3552 movq 64+16(%rbx),%r11 3553 movq 64+24(%rbx),%r12 3554 leaq 64-128(%rbx),%rsi 3555 leaq 32(%rbx),%rbx 3556 .byte 102,72,15,126,215 3557 call __ecp_nistz256_mul_montx 3558 call __ecp_nistz256_mul_by_2x 3559 3560 movq 96+0(%rsp),%r12 3561 movq 96+8(%rsp),%r13 3562 leaq 64(%rsp),%rbx 3563 movq 96+16(%rsp),%r8 3564 movq 96+24(%rsp),%r9 3565 leaq 32(%rsp),%rdi 3566 call __ecp_nistz256_add_tox 3567 3568 movq 96+0(%rsp),%r12 3569 movq 96+8(%rsp),%r13 3570 leaq 64(%rsp),%rbx 3571 movq 96+16(%rsp),%r8 3572 movq 96+24(%rsp),%r9 3573 leaq 64(%rsp),%rdi 3574 call __ecp_nistz256_sub_fromx 3575 3576 movq 0+0(%rsp),%rdx 3577 movq 8+0(%rsp),%r14 3578 leaq -128+0(%rsp),%rsi 3579 movq 16+0(%rsp),%r15 3580 movq 24+0(%rsp),%r8 3581 .byte 102,72,15,126,207 3582 call __ecp_nistz256_sqr_montx 3583 xorq %r9,%r9 3584 movq %r12,%rax 3585 addq $-1,%r12 3586 movq %r13,%r10 3587 adcq %rsi,%r13 3588 movq %r14,%rcx 3589 adcq $0,%r14 3590 movq %r15,%r8 3591 adcq %rbp,%r15 3592 adcq $0,%r9 3593 xorq %rsi,%rsi 3594 testq $1,%rax 3595 3596 cmovzq %rax,%r12 3597 cmovzq %r10,%r13 3598 cmovzq %rcx,%r14 3599 cmovzq %r8,%r15 3600 cmovzq %rsi,%r9 3601 3602 movq %r13,%rax 3603 shrq $1,%r12 3604 shlq $63,%rax 3605 movq %r14,%r10 3606 shrq $1,%r13 3607 orq %rax,%r12 3608 shlq $63,%r10 3609 movq %r15,%rcx 3610 shrq $1,%r14 3611 orq %r10,%r13 3612 shlq $63,%rcx 3613 movq %r12,0(%rdi) 3614 shrq $1,%r15 3615 movq %r13,8(%rdi) 3616 shlq $63,%r9 3617 orq %rcx,%r14 3618 orq %r9,%r15 3619 movq %r14,16(%rdi) 3620 movq %r15,24(%rdi) 3621 movq 64(%rsp),%rdx 3622 leaq 64(%rsp),%rbx 3623 movq 0+32(%rsp),%r9 3624 movq 8+32(%rsp),%r10 3625 leaq -128+32(%rsp),%rsi 3626 movq 16+32(%rsp),%r11 3627 movq 24+32(%rsp),%r12 3628 leaq 32(%rsp),%rdi 3629 call __ecp_nistz256_mul_montx 3630 3631 leaq 128(%rsp),%rdi 3632 call __ecp_nistz256_mul_by_2x 3633 3634 leaq 32(%rsp),%rbx 3635 leaq 32(%rsp),%rdi 3636 call __ecp_nistz256_add_tox 3637 3638 movq 96(%rsp),%rdx 3639 leaq 96(%rsp),%rbx 3640 movq 0+0(%rsp),%r9 3641 movq 8+0(%rsp),%r10 3642 leaq -128+0(%rsp),%rsi 3643 movq 16+0(%rsp),%r11 3644 movq 24+0(%rsp),%r12 3645 leaq 0(%rsp),%rdi 3646 call __ecp_nistz256_mul_montx 3647 3648 leaq 128(%rsp),%rdi 3649 call __ecp_nistz256_mul_by_2x 3650 3651 movq 0+32(%rsp),%rdx 3652 movq 8+32(%rsp),%r14 3653 leaq -128+32(%rsp),%rsi 3654 movq 16+32(%rsp),%r15 3655 movq 24+32(%rsp),%r8 3656 .byte 102,72,15,126,199 3657 call __ecp_nistz256_sqr_montx 3658 3659 leaq 128(%rsp),%rbx 3660 movq %r14,%r8 3661 movq %r15,%r9 3662 movq %rsi,%r14 3663 movq %rbp,%r15 3664 call __ecp_nistz256_sub_fromx 3665 3666 movq 0+0(%rsp),%rax 3667 movq 0+8(%rsp),%rbp 3668 movq 0+16(%rsp),%rcx 3669 movq 0+24(%rsp),%r10 3670 leaq 0(%rsp),%rdi 3671 call __ecp_nistz256_subx 3672 3673 movq 32(%rsp),%rdx 3674 leaq 32(%rsp),%rbx 3675 movq %r12,%r14 3676 xorl %ecx,%ecx 3677 movq %r12,0+0(%rsp) 3678 movq %r13,%r10 3679 movq %r13,0+8(%rsp) 3680 cmovzq %r8,%r11 3681 movq %r8,0+16(%rsp) 3682 leaq 0-128(%rsp),%rsi 3683 cmovzq %r9,%r12 3684 movq %r9,0+24(%rsp) 3685 movq %r14,%r9 3686 leaq 0(%rsp),%rdi 3687 call __ecp_nistz256_mul_montx 3688 3689 .byte 102,72,15,126,203 3690 .byte 102,72,15,126,207 3691 call __ecp_nistz256_sub_fromx 3692 3693 leaq 160+56(%rsp),%rsi 3694 3695 movq -48(%rsi),%r15 3696 3697 movq -40(%rsi),%r14 3698 3699 movq -32(%rsi),%r13 3700 3701 movq -24(%rsi),%r12 3702 3703 movq -16(%rsi),%rbx 3704 3705 movq -8(%rsi),%rbp 3706 3707 leaq (%rsi),%rsp 3708 3709 L$point_doublex_epilogue: 3710 .byte 0xf3,0xc3 3711 3712 3713 3714 .p2align 5 3715 ecp_nistz256_point_addx: 3716 3717 L$point_addx: 3718 pushq %rbp 3719 3720 pushq %rbx 3721 3722 pushq %r12 3723 3724 pushq %r13 3725 3726 pushq %r14 3727 3728 pushq %r15 3729 3730 subq $576+8,%rsp 3731 3732 L$point_addx_body: 3733 3734 movdqu 0(%rsi),%xmm0 3735 movdqu 16(%rsi),%xmm1 3736 movdqu 32(%rsi),%xmm2 3737 movdqu 48(%rsi),%xmm3 3738 movdqu 64(%rsi),%xmm4 3739 movdqu 80(%rsi),%xmm5 3740 movq %rsi,%rbx 3741 movq %rdx,%rsi 3742 movdqa %xmm0,384(%rsp) 3743 movdqa %xmm1,384+16(%rsp) 3744 movdqa %xmm2,416(%rsp) 3745 movdqa %xmm3,416+16(%rsp) 3746 movdqa %xmm4,448(%rsp) 3747 movdqa %xmm5,448+16(%rsp) 3748 por %xmm4,%xmm5 3749 3750 movdqu 0(%rsi),%xmm0 3751 pshufd $0xb1,%xmm5,%xmm3 3752 movdqu 16(%rsi),%xmm1 3753 movdqu 32(%rsi),%xmm2 3754 por %xmm3,%xmm5 3755 movdqu 48(%rsi),%xmm3 3756 movq 64+0(%rsi),%rdx 3757 movq 64+8(%rsi),%r14 3758 movq 64+16(%rsi),%r15 3759 movq 64+24(%rsi),%r8 3760 movdqa %xmm0,480(%rsp) 3761 pshufd $0x1e,%xmm5,%xmm4 3762 movdqa %xmm1,480+16(%rsp) 3763 movdqu 64(%rsi),%xmm0 3764 movdqu 80(%rsi),%xmm1 3765 movdqa %xmm2,512(%rsp) 3766 movdqa %xmm3,512+16(%rsp) 3767 por %xmm4,%xmm5 3768 pxor %xmm4,%xmm4 3769 por %xmm0,%xmm1 3770 .byte 102,72,15,110,199 3771 3772 leaq 64-128(%rsi),%rsi 3773 movq %rdx,544+0(%rsp) 3774 movq %r14,544+8(%rsp) 3775 movq %r15,544+16(%rsp) 3776 movq %r8,544+24(%rsp) 3777 leaq 96(%rsp),%rdi 3778 call __ecp_nistz256_sqr_montx 3779 3780 pcmpeqd %xmm4,%xmm5 3781 pshufd $0xb1,%xmm1,%xmm4 3782 por %xmm1,%xmm4 3783 pshufd $0,%xmm5,%xmm5 3784 pshufd $0x1e,%xmm4,%xmm3 3785 por %xmm3,%xmm4 3786 pxor %xmm3,%xmm3 3787 pcmpeqd %xmm3,%xmm4 3788 pshufd $0,%xmm4,%xmm4 3789 movq 64+0(%rbx),%rdx 3790 movq 64+8(%rbx),%r14 3791 movq 64+16(%rbx),%r15 3792 movq 64+24(%rbx),%r8 3793 .byte 102,72,15,110,203 3794 3795 leaq 64-128(%rbx),%rsi 3796 leaq 32(%rsp),%rdi 3797 call __ecp_nistz256_sqr_montx 3798 3799 movq 544(%rsp),%rdx 3800 leaq 544(%rsp),%rbx 3801 movq 0+96(%rsp),%r9 3802 movq 8+96(%rsp),%r10 3803 leaq -128+96(%rsp),%rsi 3804 movq 16+96(%rsp),%r11 3805 movq 24+96(%rsp),%r12 3806 leaq 224(%rsp),%rdi 3807 call __ecp_nistz256_mul_montx 3808 3809 movq 448(%rsp),%rdx 3810 leaq 448(%rsp),%rbx 3811 movq 0+32(%rsp),%r9 3812 movq 8+32(%rsp),%r10 3813 leaq -128+32(%rsp),%rsi 3814 movq 16+32(%rsp),%r11 3815 movq 24+32(%rsp),%r12 3816 leaq 256(%rsp),%rdi 3817 call __ecp_nistz256_mul_montx 3818 3819 movq 416(%rsp),%rdx 3820 leaq 416(%rsp),%rbx 3821 movq 0+224(%rsp),%r9 3822 movq 8+224(%rsp),%r10 3823 leaq -128+224(%rsp),%rsi 3824 movq 16+224(%rsp),%r11 3825 movq 24+224(%rsp),%r12 3826 leaq 224(%rsp),%rdi 3827 call __ecp_nistz256_mul_montx 3828 3829 movq 512(%rsp),%rdx 3830 leaq 512(%rsp),%rbx 3831 movq 0+256(%rsp),%r9 3832 movq 8+256(%rsp),%r10 3833 leaq -128+256(%rsp),%rsi 3834 movq 16+256(%rsp),%r11 3835 movq 24+256(%rsp),%r12 3836 leaq 256(%rsp),%rdi 3837 call __ecp_nistz256_mul_montx 3838 3839 leaq 224(%rsp),%rbx 3840 leaq 64(%rsp),%rdi 3841 call __ecp_nistz256_sub_fromx 3842 3843 orq %r13,%r12 3844 movdqa %xmm4,%xmm2 3845 orq %r8,%r12 3846 orq %r9,%r12 3847 por %xmm5,%xmm2 3848 .byte 102,73,15,110,220 3849 3850 movq 384(%rsp),%rdx 3851 leaq 384(%rsp),%rbx 3852 movq 0+96(%rsp),%r9 3853 movq 8+96(%rsp),%r10 3854 leaq -128+96(%rsp),%rsi 3855 movq 16+96(%rsp),%r11 3856 movq 24+96(%rsp),%r12 3857 leaq 160(%rsp),%rdi 3858 call __ecp_nistz256_mul_montx 3859 3860 movq 480(%rsp),%rdx 3861 leaq 480(%rsp),%rbx 3862 movq 0+32(%rsp),%r9 3863 movq 8+32(%rsp),%r10 3864 leaq -128+32(%rsp),%rsi 3865 movq 16+32(%rsp),%r11 3866 movq 24+32(%rsp),%r12 3867 leaq 192(%rsp),%rdi 3868 call __ecp_nistz256_mul_montx 3869 3870 leaq 160(%rsp),%rbx 3871 leaq 0(%rsp),%rdi 3872 call __ecp_nistz256_sub_fromx 3873 3874 orq %r13,%r12 3875 orq %r8,%r12 3876 orq %r9,%r12 3877 3878 .byte 0x3e 3879 jnz L$add_proceedx 3880 .byte 102,73,15,126,208 3881 .byte 102,73,15,126,217 3882 testq %r8,%r8 3883 jnz L$add_proceedx 3884 testq %r9,%r9 3885 jz L$add_doublex 3886 3887 .byte 102,72,15,126,199 3888 pxor %xmm0,%xmm0 3889 movdqu %xmm0,0(%rdi) 3890 movdqu %xmm0,16(%rdi) 3891 movdqu %xmm0,32(%rdi) 3892 movdqu %xmm0,48(%rdi) 3893 movdqu %xmm0,64(%rdi) 3894 movdqu %xmm0,80(%rdi) 3895 jmp L$add_donex 3896 3897 .p2align 5 3898 L$add_doublex: 3899 .byte 102,72,15,126,206 3900 .byte 102,72,15,126,199 3901 addq $416,%rsp 3902 3903 jmp L$point_double_shortcutx 3904 3905 3906 .p2align 5 3907 L$add_proceedx: 3908 movq 0+64(%rsp),%rdx 3909 movq 8+64(%rsp),%r14 3910 leaq -128+64(%rsp),%rsi 3911 movq 16+64(%rsp),%r15 3912 movq 24+64(%rsp),%r8 3913 leaq 96(%rsp),%rdi 3914 call __ecp_nistz256_sqr_montx 3915 3916 movq 448(%rsp),%rdx 3917 leaq 448(%rsp),%rbx 3918 movq 0+0(%rsp),%r9 3919 movq 8+0(%rsp),%r10 3920 leaq -128+0(%rsp),%rsi 3921 movq 16+0(%rsp),%r11 3922 movq 24+0(%rsp),%r12 3923 leaq 352(%rsp),%rdi 3924 call __ecp_nistz256_mul_montx 3925 3926 movq 0+0(%rsp),%rdx 3927 movq 8+0(%rsp),%r14 3928 leaq -128+0(%rsp),%rsi 3929 movq 16+0(%rsp),%r15 3930 movq 24+0(%rsp),%r8 3931 leaq 32(%rsp),%rdi 3932 call __ecp_nistz256_sqr_montx 3933 3934 movq 544(%rsp),%rdx 3935 leaq 544(%rsp),%rbx 3936 movq 0+352(%rsp),%r9 3937 movq 8+352(%rsp),%r10 3938 leaq -128+352(%rsp),%rsi 3939 movq 16+352(%rsp),%r11 3940 movq 24+352(%rsp),%r12 3941 leaq 352(%rsp),%rdi 3942 call __ecp_nistz256_mul_montx 3943 3944 movq 0(%rsp),%rdx 3945 leaq 0(%rsp),%rbx 3946 movq 0+32(%rsp),%r9 3947 movq 8+32(%rsp),%r10 3948 leaq -128+32(%rsp),%rsi 3949 movq 16+32(%rsp),%r11 3950 movq 24+32(%rsp),%r12 3951 leaq 128(%rsp),%rdi 3952 call __ecp_nistz256_mul_montx 3953 3954 movq 160(%rsp),%rdx 3955 leaq 160(%rsp),%rbx 3956 movq 0+32(%rsp),%r9 3957 movq 8+32(%rsp),%r10 3958 leaq -128+32(%rsp),%rsi 3959 movq 16+32(%rsp),%r11 3960 movq 24+32(%rsp),%r12 3961 leaq 192(%rsp),%rdi 3962 call __ecp_nistz256_mul_montx 3963 3964 3965 3966 3967 xorq %r11,%r11 3968 addq %r12,%r12 3969 leaq 96(%rsp),%rsi 3970 adcq %r13,%r13 3971 movq %r12,%rax 3972 adcq %r8,%r8 3973 adcq %r9,%r9 3974 movq %r13,%rbp 3975 adcq $0,%r11 3976 3977 subq $-1,%r12 3978 movq %r8,%rcx 3979 sbbq %r14,%r13 3980 sbbq $0,%r8 3981 movq %r9,%r10 3982 sbbq %r15,%r9 3983 sbbq $0,%r11 3984 3985 cmovcq %rax,%r12 3986 movq 0(%rsi),%rax 3987 cmovcq %rbp,%r13 3988 movq 8(%rsi),%rbp 3989 cmovcq %rcx,%r8 3990 movq 16(%rsi),%rcx 3991 cmovcq %r10,%r9 3992 movq 24(%rsi),%r10 3993 3994 call __ecp_nistz256_subx 3995 3996 leaq 128(%rsp),%rbx 3997 leaq 288(%rsp),%rdi 3998 call __ecp_nistz256_sub_fromx 3999 4000 movq 192+0(%rsp),%rax 4001 movq 192+8(%rsp),%rbp 4002 movq 192+16(%rsp),%rcx 4003 movq 192+24(%rsp),%r10 4004 leaq 320(%rsp),%rdi 4005 4006 call __ecp_nistz256_subx 4007 4008 movq %r12,0(%rdi) 4009 movq %r13,8(%rdi) 4010 movq %r8,16(%rdi) 4011 movq %r9,24(%rdi) 4012 movq 128(%rsp),%rdx 4013 leaq 128(%rsp),%rbx 4014 movq 0+224(%rsp),%r9 4015 movq 8+224(%rsp),%r10 4016 leaq -128+224(%rsp),%rsi 4017 movq 16+224(%rsp),%r11 4018 movq 24+224(%rsp),%r12 4019 leaq 256(%rsp),%rdi 4020 call __ecp_nistz256_mul_montx 4021 4022 movq 320(%rsp),%rdx 4023 leaq 320(%rsp),%rbx 4024 movq 0+64(%rsp),%r9 4025 movq 8+64(%rsp),%r10 4026 leaq -128+64(%rsp),%rsi 4027 movq 16+64(%rsp),%r11 4028 movq 24+64(%rsp),%r12 4029 leaq 320(%rsp),%rdi 4030 call __ecp_nistz256_mul_montx 4031 4032 leaq 256(%rsp),%rbx 4033 leaq 320(%rsp),%rdi 4034 call __ecp_nistz256_sub_fromx 4035 4036 .byte 102,72,15,126,199 4037 4038 movdqa %xmm5,%xmm0 4039 movdqa %xmm5,%xmm1 4040 pandn 352(%rsp),%xmm0 4041 movdqa %xmm5,%xmm2 4042 pandn 352+16(%rsp),%xmm1 4043 movdqa %xmm5,%xmm3 4044 pand 544(%rsp),%xmm2 4045 pand 544+16(%rsp),%xmm3 4046 por %xmm0,%xmm2 4047 por %xmm1,%xmm3 4048 4049 movdqa %xmm4,%xmm0 4050 movdqa %xmm4,%xmm1 4051 pandn %xmm2,%xmm0 4052 movdqa %xmm4,%xmm2 4053 pandn %xmm3,%xmm1 4054 movdqa %xmm4,%xmm3 4055 pand 448(%rsp),%xmm2 4056 pand 448+16(%rsp),%xmm3 4057 por %xmm0,%xmm2 4058 por %xmm1,%xmm3 4059 movdqu %xmm2,64(%rdi) 4060 movdqu %xmm3,80(%rdi) 4061 4062 movdqa %xmm5,%xmm0 4063 movdqa %xmm5,%xmm1 4064 pandn 288(%rsp),%xmm0 4065 movdqa %xmm5,%xmm2 4066 pandn 288+16(%rsp),%xmm1 4067 movdqa %xmm5,%xmm3 4068 pand 480(%rsp),%xmm2 4069 pand 480+16(%rsp),%xmm3 4070 por %xmm0,%xmm2 4071 por %xmm1,%xmm3 4072 4073 movdqa %xmm4,%xmm0 4074 movdqa %xmm4,%xmm1 4075 pandn %xmm2,%xmm0 4076 movdqa %xmm4,%xmm2 4077 pandn %xmm3,%xmm1 4078 movdqa %xmm4,%xmm3 4079 pand 384(%rsp),%xmm2 4080 pand 384+16(%rsp),%xmm3 4081 por %xmm0,%xmm2 4082 por %xmm1,%xmm3 4083 movdqu %xmm2,0(%rdi) 4084 movdqu %xmm3,16(%rdi) 4085 4086 movdqa %xmm5,%xmm0 4087 movdqa %xmm5,%xmm1 4088 pandn 320(%rsp),%xmm0 4089 movdqa %xmm5,%xmm2 4090 pandn 320+16(%rsp),%xmm1 4091 movdqa %xmm5,%xmm3 4092 pand 512(%rsp),%xmm2 4093 pand 512+16(%rsp),%xmm3 4094 por %xmm0,%xmm2 4095 por %xmm1,%xmm3 4096 4097 movdqa %xmm4,%xmm0 4098 movdqa %xmm4,%xmm1 4099 pandn %xmm2,%xmm0 4100 movdqa %xmm4,%xmm2 4101 pandn %xmm3,%xmm1 4102 movdqa %xmm4,%xmm3 4103 pand 416(%rsp),%xmm2 4104 pand 416+16(%rsp),%xmm3 4105 por %xmm0,%xmm2 4106 por %xmm1,%xmm3 4107 movdqu %xmm2,32(%rdi) 4108 movdqu %xmm3,48(%rdi) 4109 4110 L$add_donex: 4111 leaq 576+56(%rsp),%rsi 4112 4113 movq -48(%rsi),%r15 4114 4115 movq -40(%rsi),%r14 4116 4117 movq -32(%rsi),%r13 4118 4119 movq -24(%rsi),%r12 4120 4121 movq -16(%rsi),%rbx 4122 4123 movq -8(%rsi),%rbp 4124 4125 leaq (%rsi),%rsp 4126 4127 L$point_addx_epilogue: 4128 .byte 0xf3,0xc3 4129 4130 4131 4132 .p2align 5 4133 ecp_nistz256_point_add_affinex: 4134 4135 L$point_add_affinex: 4136 pushq %rbp 4137 4138 pushq %rbx 4139 4140 pushq %r12 4141 4142 pushq %r13 4143 4144 pushq %r14 4145 4146 pushq %r15 4147 4148 subq $480+8,%rsp 4149 4150 L$add_affinex_body: 4151 4152 movdqu 0(%rsi),%xmm0 4153 movq %rdx,%rbx 4154 movdqu 16(%rsi),%xmm1 4155 movdqu 32(%rsi),%xmm2 4156 movdqu 48(%rsi),%xmm3 4157 movdqu 64(%rsi),%xmm4 4158 movdqu 80(%rsi),%xmm5 4159 movq 64+0(%rsi),%rdx 4160 movq 64+8(%rsi),%r14 4161 movq 64+16(%rsi),%r15 4162 movq 64+24(%rsi),%r8 4163 movdqa %xmm0,320(%rsp) 4164 movdqa %xmm1,320+16(%rsp) 4165 movdqa %xmm2,352(%rsp) 4166 movdqa %xmm3,352+16(%rsp) 4167 movdqa %xmm4,384(%rsp) 4168 movdqa %xmm5,384+16(%rsp) 4169 por %xmm4,%xmm5 4170 4171 movdqu 0(%rbx),%xmm0 4172 pshufd $0xb1,%xmm5,%xmm3 4173 movdqu 16(%rbx),%xmm1 4174 movdqu 32(%rbx),%xmm2 4175 por %xmm3,%xmm5 4176 movdqu 48(%rbx),%xmm3 4177 movdqa %xmm0,416(%rsp) 4178 pshufd $0x1e,%xmm5,%xmm4 4179 movdqa %xmm1,416+16(%rsp) 4180 por %xmm0,%xmm1 4181 .byte 102,72,15,110,199 4182 movdqa %xmm2,448(%rsp) 4183 movdqa %xmm3,448+16(%rsp) 4184 por %xmm2,%xmm3 4185 por %xmm4,%xmm5 4186 pxor %xmm4,%xmm4 4187 por %xmm1,%xmm3 4188 4189 leaq 64-128(%rsi),%rsi 4190 leaq 32(%rsp),%rdi 4191 call __ecp_nistz256_sqr_montx 4192 4193 pcmpeqd %xmm4,%xmm5 4194 pshufd $0xb1,%xmm3,%xmm4 4195 movq 0(%rbx),%rdx 4196 4197 movq %r12,%r9 4198 por %xmm3,%xmm4 4199 pshufd $0,%xmm5,%xmm5 4200 pshufd $0x1e,%xmm4,%xmm3 4201 movq %r13,%r10 4202 por %xmm3,%xmm4 4203 pxor %xmm3,%xmm3 4204 movq %r14,%r11 4205 pcmpeqd %xmm3,%xmm4 4206 pshufd $0,%xmm4,%xmm4 4207 4208 leaq 32-128(%rsp),%rsi 4209 movq %r15,%r12 4210 leaq 0(%rsp),%rdi 4211 call __ecp_nistz256_mul_montx 4212 4213 leaq 320(%rsp),%rbx 4214 leaq 64(%rsp),%rdi 4215 call __ecp_nistz256_sub_fromx 4216 4217 movq 384(%rsp),%rdx 4218 leaq 384(%rsp),%rbx 4219 movq 0+32(%rsp),%r9 4220 movq 8+32(%rsp),%r10 4221 leaq -128+32(%rsp),%rsi 4222 movq 16+32(%rsp),%r11 4223 movq 24+32(%rsp),%r12 4224 leaq 32(%rsp),%rdi 4225 call __ecp_nistz256_mul_montx 4226 4227 movq 384(%rsp),%rdx 4228 leaq 384(%rsp),%rbx 4229 movq 0+64(%rsp),%r9 4230 movq 8+64(%rsp),%r10 4231 leaq -128+64(%rsp),%rsi 4232 movq 16+64(%rsp),%r11 4233 movq 24+64(%rsp),%r12 4234 leaq 288(%rsp),%rdi 4235 call __ecp_nistz256_mul_montx 4236 4237 movq 448(%rsp),%rdx 4238 leaq 448(%rsp),%rbx 4239 movq 0+32(%rsp),%r9 4240 movq 8+32(%rsp),%r10 4241 leaq -128+32(%rsp),%rsi 4242 movq 16+32(%rsp),%r11 4243 movq 24+32(%rsp),%r12 4244 leaq 32(%rsp),%rdi 4245 call __ecp_nistz256_mul_montx 4246 4247 leaq 352(%rsp),%rbx 4248 leaq 96(%rsp),%rdi 4249 call __ecp_nistz256_sub_fromx 4250 4251 movq 0+64(%rsp),%rdx 4252 movq 8+64(%rsp),%r14 4253 leaq -128+64(%rsp),%rsi 4254 movq 16+64(%rsp),%r15 4255 movq 24+64(%rsp),%r8 4256 leaq 128(%rsp),%rdi 4257 call __ecp_nistz256_sqr_montx 4258 4259 movq 0+96(%rsp),%rdx 4260 movq 8+96(%rsp),%r14 4261 leaq -128+96(%rsp),%rsi 4262 movq 16+96(%rsp),%r15 4263 movq 24+96(%rsp),%r8 4264 leaq 192(%rsp),%rdi 4265 call __ecp_nistz256_sqr_montx 4266 4267 movq 128(%rsp),%rdx 4268 leaq 128(%rsp),%rbx 4269 movq 0+64(%rsp),%r9 4270 movq 8+64(%rsp),%r10 4271 leaq -128+64(%rsp),%rsi 4272 movq 16+64(%rsp),%r11 4273 movq 24+64(%rsp),%r12 4274 leaq 160(%rsp),%rdi 4275 call __ecp_nistz256_mul_montx 4276 4277 movq 320(%rsp),%rdx 4278 leaq 320(%rsp),%rbx 4279 movq 0+128(%rsp),%r9 4280 movq 8+128(%rsp),%r10 4281 leaq -128+128(%rsp),%rsi 4282 movq 16+128(%rsp),%r11 4283 movq 24+128(%rsp),%r12 4284 leaq 0(%rsp),%rdi 4285 call __ecp_nistz256_mul_montx 4286 4287 4288 4289 4290 xorq %r11,%r11 4291 addq %r12,%r12 4292 leaq 192(%rsp),%rsi 4293 adcq %r13,%r13 4294 movq %r12,%rax 4295 adcq %r8,%r8 4296 adcq %r9,%r9 4297 movq %r13,%rbp 4298 adcq $0,%r11 4299 4300 subq $-1,%r12 4301 movq %r8,%rcx 4302 sbbq %r14,%r13 4303 sbbq $0,%r8 4304 movq %r9,%r10 4305 sbbq %r15,%r9 4306 sbbq $0,%r11 4307 4308 cmovcq %rax,%r12 4309 movq 0(%rsi),%rax 4310 cmovcq %rbp,%r13 4311 movq 8(%rsi),%rbp 4312 cmovcq %rcx,%r8 4313 movq 16(%rsi),%rcx 4314 cmovcq %r10,%r9 4315 movq 24(%rsi),%r10 4316 4317 call __ecp_nistz256_subx 4318 4319 leaq 160(%rsp),%rbx 4320 leaq 224(%rsp),%rdi 4321 call __ecp_nistz256_sub_fromx 4322 4323 movq 0+0(%rsp),%rax 4324 movq 0+8(%rsp),%rbp 4325 movq 0+16(%rsp),%rcx 4326 movq 0+24(%rsp),%r10 4327 leaq 64(%rsp),%rdi 4328 4329 call __ecp_nistz256_subx 4330 4331 movq %r12,0(%rdi) 4332 movq %r13,8(%rdi) 4333 movq %r8,16(%rdi) 4334 movq %r9,24(%rdi) 4335 movq 352(%rsp),%rdx 4336 leaq 352(%rsp),%rbx 4337 movq 0+160(%rsp),%r9 4338 movq 8+160(%rsp),%r10 4339 leaq -128+160(%rsp),%rsi 4340 movq 16+160(%rsp),%r11 4341 movq 24+160(%rsp),%r12 4342 leaq 32(%rsp),%rdi 4343 call __ecp_nistz256_mul_montx 4344 4345 movq 96(%rsp),%rdx 4346 leaq 96(%rsp),%rbx 4347 movq 0+64(%rsp),%r9 4348 movq 8+64(%rsp),%r10 4349 leaq -128+64(%rsp),%rsi 4350 movq 16+64(%rsp),%r11 4351 movq 24+64(%rsp),%r12 4352 leaq 64(%rsp),%rdi 4353 call __ecp_nistz256_mul_montx 4354 4355 leaq 32(%rsp),%rbx 4356 leaq 256(%rsp),%rdi 4357 call __ecp_nistz256_sub_fromx 4358 4359 .byte 102,72,15,126,199 4360 4361 movdqa %xmm5,%xmm0 4362 movdqa %xmm5,%xmm1 4363 pandn 288(%rsp),%xmm0 4364 movdqa %xmm5,%xmm2 4365 pandn 288+16(%rsp),%xmm1 4366 movdqa %xmm5,%xmm3 4367 pand L$ONE_mont(%rip),%xmm2 4368 pand L$ONE_mont+16(%rip),%xmm3 4369 por %xmm0,%xmm2 4370 por %xmm1,%xmm3 4371 4372 movdqa %xmm4,%xmm0 4373 movdqa %xmm4,%xmm1 4374 pandn %xmm2,%xmm0 4375 movdqa %xmm4,%xmm2 4376 pandn %xmm3,%xmm1 4377 movdqa %xmm4,%xmm3 4378 pand 384(%rsp),%xmm2 4379 pand 384+16(%rsp),%xmm3 4380 por %xmm0,%xmm2 4381 por %xmm1,%xmm3 4382 movdqu %xmm2,64(%rdi) 4383 movdqu %xmm3,80(%rdi) 4384 4385 movdqa %xmm5,%xmm0 4386 movdqa %xmm5,%xmm1 4387 pandn 224(%rsp),%xmm0 4388 movdqa %xmm5,%xmm2 4389 pandn 224+16(%rsp),%xmm1 4390 movdqa %xmm5,%xmm3 4391 pand 416(%rsp),%xmm2 4392 pand 416+16(%rsp),%xmm3 4393 por %xmm0,%xmm2 4394 por %xmm1,%xmm3 4395 4396 movdqa %xmm4,%xmm0 4397 movdqa %xmm4,%xmm1 4398 pandn %xmm2,%xmm0 4399 movdqa %xmm4,%xmm2 4400 pandn %xmm3,%xmm1 4401 movdqa %xmm4,%xmm3 4402 pand 320(%rsp),%xmm2 4403 pand 320+16(%rsp),%xmm3 4404 por %xmm0,%xmm2 4405 por %xmm1,%xmm3 4406 movdqu %xmm2,0(%rdi) 4407 movdqu %xmm3,16(%rdi) 4408 4409 movdqa %xmm5,%xmm0 4410 movdqa %xmm5,%xmm1 4411 pandn 256(%rsp),%xmm0 4412 movdqa %xmm5,%xmm2 4413 pandn 256+16(%rsp),%xmm1 4414 movdqa %xmm5,%xmm3 4415 pand 448(%rsp),%xmm2 4416 pand 448+16(%rsp),%xmm3 4417 por %xmm0,%xmm2 4418 por %xmm1,%xmm3 4419 4420 movdqa %xmm4,%xmm0 4421 movdqa %xmm4,%xmm1 4422 pandn %xmm2,%xmm0 4423 movdqa %xmm4,%xmm2 4424 pandn %xmm3,%xmm1 4425 movdqa %xmm4,%xmm3 4426 pand 352(%rsp),%xmm2 4427 pand 352+16(%rsp),%xmm3 4428 por %xmm0,%xmm2 4429 por %xmm1,%xmm3 4430 movdqu %xmm2,32(%rdi) 4431 movdqu %xmm3,48(%rdi) 4432 4433 leaq 480+56(%rsp),%rsi 4434 4435 movq -48(%rsi),%r15 4436 4437 movq -40(%rsi),%r14 4438 4439 movq -32(%rsi),%r13 4440 4441 movq -24(%rsi),%r12 4442 4443 movq -16(%rsi),%rbx 4444 4445 movq -8(%rsi),%rbp 4446 4447 leaq (%rsi),%rsp 4448 4449 L$add_affinex_epilogue: 4450 .byte 0xf3,0xc3 4451 4452 4453 #endif 4454