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