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