ecp_nistz256-x86_64.S revision 1.2
1#include <machine/asm.h> 2.text 3 4 5 6.align 64 7.Lpoly: 8.quad 0xffffffffffffffff, 0x00000000ffffffff, 0x0000000000000000, 0xffffffff00000001 9 10 11.LRR: 12.quad 0x0000000000000003, 0xfffffffbffffffff, 0xfffffffffffffffe, 0x00000004fffffffd 13 14.LOne: 15.long 1,1,1,1,1,1,1,1 16.LTwo: 17.long 2,2,2,2,2,2,2,2 18.LThree: 19.long 3,3,3,3,3,3,3,3 20.LONE_mont: 21.quad 0x0000000000000001, 0xffffffff00000000, 0xffffffffffffffff, 0x00000000fffffffe 22 23.globl ecp_nistz256_mul_by_2 24.type ecp_nistz256_mul_by_2,@function 25.align 64 26ecp_nistz256_mul_by_2: 27 pushq %r12 28 pushq %r13 29 30 movq 0(%rsi),%r8 31 xorq %r13,%r13 32 movq 8(%rsi),%r9 33 addq %r8,%r8 34 movq 16(%rsi),%r10 35 adcq %r9,%r9 36 movq 24(%rsi),%r11 37 leaq .Lpoly(%rip),%rsi 38 movq %r8,%rax 39 adcq %r10,%r10 40 adcq %r11,%r11 41 movq %r9,%rdx 42 adcq $0,%r13 43 44 subq 0(%rsi),%r8 45 movq %r10,%rcx 46 sbbq 8(%rsi),%r9 47 sbbq 16(%rsi),%r10 48 movq %r11,%r12 49 sbbq 24(%rsi),%r11 50 sbbq $0,%r13 51 52 cmovcq %rax,%r8 53 cmovcq %rdx,%r9 54 movq %r8,0(%rdi) 55 cmovcq %rcx,%r10 56 movq %r9,8(%rdi) 57 cmovcq %r12,%r11 58 movq %r10,16(%rdi) 59 movq %r11,24(%rdi) 60 61 popq %r13 62 popq %r12 63 .byte 0xf3,0xc3 64.size ecp_nistz256_mul_by_2,.-ecp_nistz256_mul_by_2 65 66 67 68.globl ecp_nistz256_div_by_2 69.type ecp_nistz256_div_by_2,@function 70.align 32 71ecp_nistz256_div_by_2: 72 pushq %r12 73 pushq %r13 74 75 movq 0(%rsi),%r8 76 movq 8(%rsi),%r9 77 movq 16(%rsi),%r10 78 movq %r8,%rax 79 movq 24(%rsi),%r11 80 leaq .Lpoly(%rip),%rsi 81 82 movq %r9,%rdx 83 xorq %r13,%r13 84 addq 0(%rsi),%r8 85 movq %r10,%rcx 86 adcq 8(%rsi),%r9 87 adcq 16(%rsi),%r10 88 movq %r11,%r12 89 adcq 24(%rsi),%r11 90 adcq $0,%r13 91 xorq %rsi,%rsi 92 testq $1,%rax 93 94 cmovzq %rax,%r8 95 cmovzq %rdx,%r9 96 cmovzq %rcx,%r10 97 cmovzq %r12,%r11 98 cmovzq %rsi,%r13 99 100 movq %r9,%rax 101 shrq $1,%r8 102 shlq $63,%rax 103 movq %r10,%rdx 104 shrq $1,%r9 105 orq %rax,%r8 106 shlq $63,%rdx 107 movq %r11,%rcx 108 shrq $1,%r10 109 orq %rdx,%r9 110 shlq $63,%rcx 111 shrq $1,%r11 112 shlq $63,%r13 113 orq %rcx,%r10 114 orq %r13,%r11 115 116 movq %r8,0(%rdi) 117 movq %r9,8(%rdi) 118 movq %r10,16(%rdi) 119 movq %r11,24(%rdi) 120 121 popq %r13 122 popq %r12 123 .byte 0xf3,0xc3 124.size ecp_nistz256_div_by_2,.-ecp_nistz256_div_by_2 125 126 127 128.globl ecp_nistz256_mul_by_3 129.type ecp_nistz256_mul_by_3,@function 130.align 32 131ecp_nistz256_mul_by_3: 132 pushq %r12 133 pushq %r13 134 135 movq 0(%rsi),%r8 136 xorq %r13,%r13 137 movq 8(%rsi),%r9 138 addq %r8,%r8 139 movq 16(%rsi),%r10 140 adcq %r9,%r9 141 movq 24(%rsi),%r11 142 movq %r8,%rax 143 adcq %r10,%r10 144 adcq %r11,%r11 145 movq %r9,%rdx 146 adcq $0,%r13 147 148 subq $-1,%r8 149 movq %r10,%rcx 150 sbbq .Lpoly+8(%rip),%r9 151 sbbq $0,%r10 152 movq %r11,%r12 153 sbbq .Lpoly+24(%rip),%r11 154 sbbq $0,%r13 155 156 cmovcq %rax,%r8 157 cmovcq %rdx,%r9 158 cmovcq %rcx,%r10 159 cmovcq %r12,%r11 160 161 xorq %r13,%r13 162 addq 0(%rsi),%r8 163 adcq 8(%rsi),%r9 164 movq %r8,%rax 165 adcq 16(%rsi),%r10 166 adcq 24(%rsi),%r11 167 movq %r9,%rdx 168 adcq $0,%r13 169 170 subq $-1,%r8 171 movq %r10,%rcx 172 sbbq .Lpoly+8(%rip),%r9 173 sbbq $0,%r10 174 movq %r11,%r12 175 sbbq .Lpoly+24(%rip),%r11 176 sbbq $0,%r13 177 178 cmovcq %rax,%r8 179 cmovcq %rdx,%r9 180 movq %r8,0(%rdi) 181 cmovcq %rcx,%r10 182 movq %r9,8(%rdi) 183 cmovcq %r12,%r11 184 movq %r10,16(%rdi) 185 movq %r11,24(%rdi) 186 187 popq %r13 188 popq %r12 189 .byte 0xf3,0xc3 190.size ecp_nistz256_mul_by_3,.-ecp_nistz256_mul_by_3 191 192 193 194.globl ecp_nistz256_add 195.type ecp_nistz256_add,@function 196.align 32 197ecp_nistz256_add: 198 pushq %r12 199 pushq %r13 200 201 movq 0(%rsi),%r8 202 xorq %r13,%r13 203 movq 8(%rsi),%r9 204 movq 16(%rsi),%r10 205 movq 24(%rsi),%r11 206 leaq .Lpoly(%rip),%rsi 207 208 addq 0(%rdx),%r8 209 adcq 8(%rdx),%r9 210 movq %r8,%rax 211 adcq 16(%rdx),%r10 212 adcq 24(%rdx),%r11 213 movq %r9,%rdx 214 adcq $0,%r13 215 216 subq 0(%rsi),%r8 217 movq %r10,%rcx 218 sbbq 8(%rsi),%r9 219 sbbq 16(%rsi),%r10 220 movq %r11,%r12 221 sbbq 24(%rsi),%r11 222 sbbq $0,%r13 223 224 cmovcq %rax,%r8 225 cmovcq %rdx,%r9 226 movq %r8,0(%rdi) 227 cmovcq %rcx,%r10 228 movq %r9,8(%rdi) 229 cmovcq %r12,%r11 230 movq %r10,16(%rdi) 231 movq %r11,24(%rdi) 232 233 popq %r13 234 popq %r12 235 .byte 0xf3,0xc3 236.size ecp_nistz256_add,.-ecp_nistz256_add 237 238 239 240.globl ecp_nistz256_sub 241.type ecp_nistz256_sub,@function 242.align 32 243ecp_nistz256_sub: 244 pushq %r12 245 pushq %r13 246 247 movq 0(%rsi),%r8 248 xorq %r13,%r13 249 movq 8(%rsi),%r9 250 movq 16(%rsi),%r10 251 movq 24(%rsi),%r11 252 leaq .Lpoly(%rip),%rsi 253 254 subq 0(%rdx),%r8 255 sbbq 8(%rdx),%r9 256 movq %r8,%rax 257 sbbq 16(%rdx),%r10 258 sbbq 24(%rdx),%r11 259 movq %r9,%rdx 260 sbbq $0,%r13 261 262 addq 0(%rsi),%r8 263 movq %r10,%rcx 264 adcq 8(%rsi),%r9 265 adcq 16(%rsi),%r10 266 movq %r11,%r12 267 adcq 24(%rsi),%r11 268 testq %r13,%r13 269 270 cmovzq %rax,%r8 271 cmovzq %rdx,%r9 272 movq %r8,0(%rdi) 273 cmovzq %rcx,%r10 274 movq %r9,8(%rdi) 275 cmovzq %r12,%r11 276 movq %r10,16(%rdi) 277 movq %r11,24(%rdi) 278 279 popq %r13 280 popq %r12 281 .byte 0xf3,0xc3 282.size ecp_nistz256_sub,.-ecp_nistz256_sub 283 284 285 286.globl ecp_nistz256_neg 287.type ecp_nistz256_neg,@function 288.align 32 289ecp_nistz256_neg: 290 pushq %r12 291 pushq %r13 292 293 xorq %r8,%r8 294 xorq %r9,%r9 295 xorq %r10,%r10 296 xorq %r11,%r11 297 xorq %r13,%r13 298 299 subq 0(%rsi),%r8 300 sbbq 8(%rsi),%r9 301 sbbq 16(%rsi),%r10 302 movq %r8,%rax 303 sbbq 24(%rsi),%r11 304 leaq .Lpoly(%rip),%rsi 305 movq %r9,%rdx 306 sbbq $0,%r13 307 308 addq 0(%rsi),%r8 309 movq %r10,%rcx 310 adcq 8(%rsi),%r9 311 adcq 16(%rsi),%r10 312 movq %r11,%r12 313 adcq 24(%rsi),%r11 314 testq %r13,%r13 315 316 cmovzq %rax,%r8 317 cmovzq %rdx,%r9 318 movq %r8,0(%rdi) 319 cmovzq %rcx,%r10 320 movq %r9,8(%rdi) 321 cmovzq %r12,%r11 322 movq %r10,16(%rdi) 323 movq %r11,24(%rdi) 324 325 popq %r13 326 popq %r12 327 .byte 0xf3,0xc3 328.size ecp_nistz256_neg,.-ecp_nistz256_neg 329 330 331 332 333.globl ecp_nistz256_to_mont 334.type ecp_nistz256_to_mont,@function 335.align 32 336ecp_nistz256_to_mont: 337 movl $0x80100,%ecx 338 andl OPENSSL_ia32cap_P+8(%rip),%ecx 339 leaq .LRR(%rip),%rdx 340 jmp .Lmul_mont 341.size ecp_nistz256_to_mont,.-ecp_nistz256_to_mont 342 343 344 345 346 347 348 349.globl ecp_nistz256_mul_mont 350.type ecp_nistz256_mul_mont,@function 351.align 32 352ecp_nistz256_mul_mont: 353 movl $0x80100,%ecx 354 andl OPENSSL_ia32cap_P+8(%rip),%ecx 355.Lmul_mont: 356 pushq %rbp 357 pushq %rbx 358 pushq %r12 359 pushq %r13 360 pushq %r14 361 pushq %r15 362 cmpl $0x80100,%ecx 363 je .Lmul_montx 364 movq %rdx,%rbx 365 movq 0(%rdx),%rax 366 movq 0(%rsi),%r9 367 movq 8(%rsi),%r10 368 movq 16(%rsi),%r11 369 movq 24(%rsi),%r12 370 371 call __ecp_nistz256_mul_montq 372 jmp .Lmul_mont_done 373 374.align 32 375.Lmul_montx: 376 movq %rdx,%rbx 377 movq 0(%rdx),%rdx 378 movq 0(%rsi),%r9 379 movq 8(%rsi),%r10 380 movq 16(%rsi),%r11 381 movq 24(%rsi),%r12 382 leaq -128(%rsi),%rsi 383 384 call __ecp_nistz256_mul_montx 385.Lmul_mont_done: 386 popq %r15 387 popq %r14 388 popq %r13 389 popq %r12 390 popq %rbx 391 popq %rbp 392 .byte 0xf3,0xc3 393.size ecp_nistz256_mul_mont,.-ecp_nistz256_mul_mont 394 395.type __ecp_nistz256_mul_montq,@function 396.align 32 397__ecp_nistz256_mul_montq: 398 399 400 movq %rax,%rbp 401 mulq %r9 402 movq .Lpoly+8(%rip),%r14 403 movq %rax,%r8 404 movq %rbp,%rax 405 movq %rdx,%r9 406 407 mulq %r10 408 movq .Lpoly+24(%rip),%r15 409 addq %rax,%r9 410 movq %rbp,%rax 411 adcq $0,%rdx 412 movq %rdx,%r10 413 414 mulq %r11 415 addq %rax,%r10 416 movq %rbp,%rax 417 adcq $0,%rdx 418 movq %rdx,%r11 419 420 mulq %r12 421 addq %rax,%r11 422 movq %r8,%rax 423 adcq $0,%rdx 424 xorq %r13,%r13 425 movq %rdx,%r12 426 427 428 429 430 431 432 433 434 435 436 movq %r8,%rbp 437 shlq $32,%r8 438 mulq %r15 439 shrq $32,%rbp 440 addq %r8,%r9 441 adcq %rbp,%r10 442 adcq %rax,%r11 443 movq 8(%rbx),%rax 444 adcq %rdx,%r12 445 adcq $0,%r13 446 xorq %r8,%r8 447 448 449 450 movq %rax,%rbp 451 mulq 0(%rsi) 452 addq %rax,%r9 453 movq %rbp,%rax 454 adcq $0,%rdx 455 movq %rdx,%rcx 456 457 mulq 8(%rsi) 458 addq %rcx,%r10 459 adcq $0,%rdx 460 addq %rax,%r10 461 movq %rbp,%rax 462 adcq $0,%rdx 463 movq %rdx,%rcx 464 465 mulq 16(%rsi) 466 addq %rcx,%r11 467 adcq $0,%rdx 468 addq %rax,%r11 469 movq %rbp,%rax 470 adcq $0,%rdx 471 movq %rdx,%rcx 472 473 mulq 24(%rsi) 474 addq %rcx,%r12 475 adcq $0,%rdx 476 addq %rax,%r12 477 movq %r9,%rax 478 adcq %rdx,%r13 479 adcq $0,%r8 480 481 482 483 movq %r9,%rbp 484 shlq $32,%r9 485 mulq %r15 486 shrq $32,%rbp 487 addq %r9,%r10 488 adcq %rbp,%r11 489 adcq %rax,%r12 490 movq 16(%rbx),%rax 491 adcq %rdx,%r13 492 adcq $0,%r8 493 xorq %r9,%r9 494 495 496 497 movq %rax,%rbp 498 mulq 0(%rsi) 499 addq %rax,%r10 500 movq %rbp,%rax 501 adcq $0,%rdx 502 movq %rdx,%rcx 503 504 mulq 8(%rsi) 505 addq %rcx,%r11 506 adcq $0,%rdx 507 addq %rax,%r11 508 movq %rbp,%rax 509 adcq $0,%rdx 510 movq %rdx,%rcx 511 512 mulq 16(%rsi) 513 addq %rcx,%r12 514 adcq $0,%rdx 515 addq %rax,%r12 516 movq %rbp,%rax 517 adcq $0,%rdx 518 movq %rdx,%rcx 519 520 mulq 24(%rsi) 521 addq %rcx,%r13 522 adcq $0,%rdx 523 addq %rax,%r13 524 movq %r10,%rax 525 adcq %rdx,%r8 526 adcq $0,%r9 527 528 529 530 movq %r10,%rbp 531 shlq $32,%r10 532 mulq %r15 533 shrq $32,%rbp 534 addq %r10,%r11 535 adcq %rbp,%r12 536 adcq %rax,%r13 537 movq 24(%rbx),%rax 538 adcq %rdx,%r8 539 adcq $0,%r9 540 xorq %r10,%r10 541 542 543 544 movq %rax,%rbp 545 mulq 0(%rsi) 546 addq %rax,%r11 547 movq %rbp,%rax 548 adcq $0,%rdx 549 movq %rdx,%rcx 550 551 mulq 8(%rsi) 552 addq %rcx,%r12 553 adcq $0,%rdx 554 addq %rax,%r12 555 movq %rbp,%rax 556 adcq $0,%rdx 557 movq %rdx,%rcx 558 559 mulq 16(%rsi) 560 addq %rcx,%r13 561 adcq $0,%rdx 562 addq %rax,%r13 563 movq %rbp,%rax 564 adcq $0,%rdx 565 movq %rdx,%rcx 566 567 mulq 24(%rsi) 568 addq %rcx,%r8 569 adcq $0,%rdx 570 addq %rax,%r8 571 movq %r11,%rax 572 adcq %rdx,%r9 573 adcq $0,%r10 574 575 576 577 movq %r11,%rbp 578 shlq $32,%r11 579 mulq %r15 580 shrq $32,%rbp 581 addq %r11,%r12 582 adcq %rbp,%r13 583 movq %r12,%rcx 584 adcq %rax,%r8 585 adcq %rdx,%r9 586 movq %r13,%rbp 587 adcq $0,%r10 588 589 590 591 subq $-1,%r12 592 movq %r8,%rbx 593 sbbq %r14,%r13 594 sbbq $0,%r8 595 movq %r9,%rdx 596 sbbq %r15,%r9 597 sbbq $0,%r10 598 599 cmovcq %rcx,%r12 600 cmovcq %rbp,%r13 601 movq %r12,0(%rdi) 602 cmovcq %rbx,%r8 603 movq %r13,8(%rdi) 604 cmovcq %rdx,%r9 605 movq %r8,16(%rdi) 606 movq %r9,24(%rdi) 607 608 .byte 0xf3,0xc3 609.size __ecp_nistz256_mul_montq,.-__ecp_nistz256_mul_montq 610 611 612 613 614 615 616 617 618.globl ecp_nistz256_sqr_mont 619.type ecp_nistz256_sqr_mont,@function 620.align 32 621ecp_nistz256_sqr_mont: 622 movl $0x80100,%ecx 623 andl OPENSSL_ia32cap_P+8(%rip),%ecx 624 pushq %rbp 625 pushq %rbx 626 pushq %r12 627 pushq %r13 628 pushq %r14 629 pushq %r15 630 cmpl $0x80100,%ecx 631 je .Lsqr_montx 632 movq 0(%rsi),%rax 633 movq 8(%rsi),%r14 634 movq 16(%rsi),%r15 635 movq 24(%rsi),%r8 636 637 call __ecp_nistz256_sqr_montq 638 jmp .Lsqr_mont_done 639 640.align 32 641.Lsqr_montx: 642 movq 0(%rsi),%rdx 643 movq 8(%rsi),%r14 644 movq 16(%rsi),%r15 645 movq 24(%rsi),%r8 646 leaq -128(%rsi),%rsi 647 648 call __ecp_nistz256_sqr_montx 649.Lsqr_mont_done: 650 popq %r15 651 popq %r14 652 popq %r13 653 popq %r12 654 popq %rbx 655 popq %rbp 656 .byte 0xf3,0xc3 657.size ecp_nistz256_sqr_mont,.-ecp_nistz256_sqr_mont 658 659.type __ecp_nistz256_sqr_montq,@function 660.align 32 661__ecp_nistz256_sqr_montq: 662 movq %rax,%r13 663 mulq %r14 664 movq %rax,%r9 665 movq %r15,%rax 666 movq %rdx,%r10 667 668 mulq %r13 669 addq %rax,%r10 670 movq %r8,%rax 671 adcq $0,%rdx 672 movq %rdx,%r11 673 674 mulq %r13 675 addq %rax,%r11 676 movq %r15,%rax 677 adcq $0,%rdx 678 movq %rdx,%r12 679 680 681 mulq %r14 682 addq %rax,%r11 683 movq %r8,%rax 684 adcq $0,%rdx 685 movq %rdx,%rbp 686 687 mulq %r14 688 addq %rax,%r12 689 movq %r8,%rax 690 adcq $0,%rdx 691 addq %rbp,%r12 692 movq %rdx,%r13 693 adcq $0,%r13 694 695 696 mulq %r15 697 xorq %r15,%r15 698 addq %rax,%r13 699 movq 0(%rsi),%rax 700 movq %rdx,%r14 701 adcq $0,%r14 702 703 addq %r9,%r9 704 adcq %r10,%r10 705 adcq %r11,%r11 706 adcq %r12,%r12 707 adcq %r13,%r13 708 adcq %r14,%r14 709 adcq $0,%r15 710 711 mulq %rax 712 movq %rax,%r8 713 movq 8(%rsi),%rax 714 movq %rdx,%rcx 715 716 mulq %rax 717 addq %rcx,%r9 718 adcq %rax,%r10 719 movq 16(%rsi),%rax 720 adcq $0,%rdx 721 movq %rdx,%rcx 722 723 mulq %rax 724 addq %rcx,%r11 725 adcq %rax,%r12 726 movq 24(%rsi),%rax 727 adcq $0,%rdx 728 movq %rdx,%rcx 729 730 mulq %rax 731 addq %rcx,%r13 732 adcq %rax,%r14 733 movq %r8,%rax 734 adcq %rdx,%r15 735 736 movq .Lpoly+8(%rip),%rsi 737 movq .Lpoly+24(%rip),%rbp 738 739 740 741 742 movq %r8,%rcx 743 shlq $32,%r8 744 mulq %rbp 745 shrq $32,%rcx 746 addq %r8,%r9 747 adcq %rcx,%r10 748 adcq %rax,%r11 749 movq %r9,%rax 750 adcq $0,%rdx 751 752 753 754 movq %r9,%rcx 755 shlq $32,%r9 756 movq %rdx,%r8 757 mulq %rbp 758 shrq $32,%rcx 759 addq %r9,%r10 760 adcq %rcx,%r11 761 adcq %rax,%r8 762 movq %r10,%rax 763 adcq $0,%rdx 764 765 766 767 movq %r10,%rcx 768 shlq $32,%r10 769 movq %rdx,%r9 770 mulq %rbp 771 shrq $32,%rcx 772 addq %r10,%r11 773 adcq %rcx,%r8 774 adcq %rax,%r9 775 movq %r11,%rax 776 adcq $0,%rdx 777 778 779 780 movq %r11,%rcx 781 shlq $32,%r11 782 movq %rdx,%r10 783 mulq %rbp 784 shrq $32,%rcx 785 addq %r11,%r8 786 adcq %rcx,%r9 787 adcq %rax,%r10 788 adcq $0,%rdx 789 xorq %r11,%r11 790 791 792 793 addq %r8,%r12 794 adcq %r9,%r13 795 movq %r12,%r8 796 adcq %r10,%r14 797 adcq %rdx,%r15 798 movq %r13,%r9 799 adcq $0,%r11 800 801 subq $-1,%r12 802 movq %r14,%r10 803 sbbq %rsi,%r13 804 sbbq $0,%r14 805 movq %r15,%rcx 806 sbbq %rbp,%r15 807 sbbq $0,%r11 808 809 cmovcq %r8,%r12 810 cmovcq %r9,%r13 811 movq %r12,0(%rdi) 812 cmovcq %r10,%r14 813 movq %r13,8(%rdi) 814 cmovcq %rcx,%r15 815 movq %r14,16(%rdi) 816 movq %r15,24(%rdi) 817 818 .byte 0xf3,0xc3 819.size __ecp_nistz256_sqr_montq,.-__ecp_nistz256_sqr_montq 820.type __ecp_nistz256_mul_montx,@function 821.align 32 822__ecp_nistz256_mul_montx: 823 824 825 mulxq %r9,%r8,%r9 826 mulxq %r10,%rcx,%r10 827 movq $32,%r14 828 xorq %r13,%r13 829 mulxq %r11,%rbp,%r11 830 movq .Lpoly+24(%rip),%r15 831 adcq %rcx,%r9 832 mulxq %r12,%rcx,%r12 833 movq %r8,%rdx 834 adcq %rbp,%r10 835 shlxq %r14,%r8,%rbp 836 adcq %rcx,%r11 837 shrxq %r14,%r8,%rcx 838 adcq $0,%r12 839 840 841 842 addq %rbp,%r9 843 adcq %rcx,%r10 844 845 mulxq %r15,%rcx,%rbp 846 movq 8(%rbx),%rdx 847 adcq %rcx,%r11 848 adcq %rbp,%r12 849 adcq $0,%r13 850 xorq %r8,%r8 851 852 853 854 mulxq 0+128(%rsi),%rcx,%rbp 855 adcxq %rcx,%r9 856 adoxq %rbp,%r10 857 858 mulxq 8+128(%rsi),%rcx,%rbp 859 adcxq %rcx,%r10 860 adoxq %rbp,%r11 861 862 mulxq 16+128(%rsi),%rcx,%rbp 863 adcxq %rcx,%r11 864 adoxq %rbp,%r12 865 866 mulxq 24+128(%rsi),%rcx,%rbp 867 movq %r9,%rdx 868 adcxq %rcx,%r12 869 shlxq %r14,%r9,%rcx 870 adoxq %rbp,%r13 871 shrxq %r14,%r9,%rbp 872 873 adcxq %r8,%r13 874 adoxq %r8,%r8 875 adcq $0,%r8 876 877 878 879 addq %rcx,%r10 880 adcq %rbp,%r11 881 882 mulxq %r15,%rcx,%rbp 883 movq 16(%rbx),%rdx 884 adcq %rcx,%r12 885 adcq %rbp,%r13 886 adcq $0,%r8 887 xorq %r9,%r9 888 889 890 891 mulxq 0+128(%rsi),%rcx,%rbp 892 adcxq %rcx,%r10 893 adoxq %rbp,%r11 894 895 mulxq 8+128(%rsi),%rcx,%rbp 896 adcxq %rcx,%r11 897 adoxq %rbp,%r12 898 899 mulxq 16+128(%rsi),%rcx,%rbp 900 adcxq %rcx,%r12 901 adoxq %rbp,%r13 902 903 mulxq 24+128(%rsi),%rcx,%rbp 904 movq %r10,%rdx 905 adcxq %rcx,%r13 906 shlxq %r14,%r10,%rcx 907 adoxq %rbp,%r8 908 shrxq %r14,%r10,%rbp 909 910 adcxq %r9,%r8 911 adoxq %r9,%r9 912 adcq $0,%r9 913 914 915 916 addq %rcx,%r11 917 adcq %rbp,%r12 918 919 mulxq %r15,%rcx,%rbp 920 movq 24(%rbx),%rdx 921 adcq %rcx,%r13 922 adcq %rbp,%r8 923 adcq $0,%r9 924 xorq %r10,%r10 925 926 927 928 mulxq 0+128(%rsi),%rcx,%rbp 929 adcxq %rcx,%r11 930 adoxq %rbp,%r12 931 932 mulxq 8+128(%rsi),%rcx,%rbp 933 adcxq %rcx,%r12 934 adoxq %rbp,%r13 935 936 mulxq 16+128(%rsi),%rcx,%rbp 937 adcxq %rcx,%r13 938 adoxq %rbp,%r8 939 940 mulxq 24+128(%rsi),%rcx,%rbp 941 movq %r11,%rdx 942 adcxq %rcx,%r8 943 shlxq %r14,%r11,%rcx 944 adoxq %rbp,%r9 945 shrxq %r14,%r11,%rbp 946 947 adcxq %r10,%r9 948 adoxq %r10,%r10 949 adcq $0,%r10 950 951 952 953 addq %rcx,%r12 954 adcq %rbp,%r13 955 956 mulxq %r15,%rcx,%rbp 957 movq %r12,%rbx 958 movq .Lpoly+8(%rip),%r14 959 adcq %rcx,%r8 960 movq %r13,%rdx 961 adcq %rbp,%r9 962 adcq $0,%r10 963 964 965 966 xorl %eax,%eax 967 movq %r8,%rcx 968 sbbq $-1,%r12 969 sbbq %r14,%r13 970 sbbq $0,%r8 971 movq %r9,%rbp 972 sbbq %r15,%r9 973 sbbq $0,%r10 974 975 cmovcq %rbx,%r12 976 cmovcq %rdx,%r13 977 movq %r12,0(%rdi) 978 cmovcq %rcx,%r8 979 movq %r13,8(%rdi) 980 cmovcq %rbp,%r9 981 movq %r8,16(%rdi) 982 movq %r9,24(%rdi) 983 984 .byte 0xf3,0xc3 985.size __ecp_nistz256_mul_montx,.-__ecp_nistz256_mul_montx 986 987.type __ecp_nistz256_sqr_montx,@function 988.align 32 989__ecp_nistz256_sqr_montx: 990 mulxq %r14,%r9,%r10 991 mulxq %r15,%rcx,%r11 992 xorl %eax,%eax 993 adcq %rcx,%r10 994 mulxq %r8,%rbp,%r12 995 movq %r14,%rdx 996 adcq %rbp,%r11 997 adcq $0,%r12 998 xorq %r13,%r13 999 1000 1001 mulxq %r15,%rcx,%rbp 1002 adcxq %rcx,%r11 1003 adoxq %rbp,%r12 1004 1005 mulxq %r8,%rcx,%rbp 1006 movq %r15,%rdx 1007 adcxq %rcx,%r12 1008 adoxq %rbp,%r13 1009 adcq $0,%r13 1010 1011 1012 mulxq %r8,%rcx,%r14 1013 movq 0+128(%rsi),%rdx 1014 xorq %r15,%r15 1015 adcxq %r9,%r9 1016 adoxq %rcx,%r13 1017 adcxq %r10,%r10 1018 adoxq %r15,%r14 1019 1020 mulxq %rdx,%r8,%rbp 1021 movq 8+128(%rsi),%rdx 1022 adcxq %r11,%r11 1023 adoxq %rbp,%r9 1024 adcxq %r12,%r12 1025 mulxq %rdx,%rcx,%rax 1026 movq 16+128(%rsi),%rdx 1027 adcxq %r13,%r13 1028 adoxq %rcx,%r10 1029 adcxq %r14,%r14 1030.byte 0x67 1031 mulxq %rdx,%rcx,%rbp 1032 movq 24+128(%rsi),%rdx 1033 adoxq %rax,%r11 1034 adcxq %r15,%r15 1035 adoxq %rcx,%r12 1036 movq $32,%rsi 1037 adoxq %rbp,%r13 1038.byte 0x67,0x67 1039 mulxq %rdx,%rcx,%rax 1040 movq %r8,%rdx 1041 adoxq %rcx,%r14 1042 shlxq %rsi,%r8,%rcx 1043 adoxq %rax,%r15 1044 shrxq %rsi,%r8,%rax 1045 movq .Lpoly+24(%rip),%rbp 1046 1047 1048 addq %rcx,%r9 1049 adcq %rax,%r10 1050 1051 mulxq %rbp,%rcx,%r8 1052 movq %r9,%rdx 1053 adcq %rcx,%r11 1054 shlxq %rsi,%r9,%rcx 1055 adcq $0,%r8 1056 shrxq %rsi,%r9,%rax 1057 1058 1059 addq %rcx,%r10 1060 adcq %rax,%r11 1061 1062 mulxq %rbp,%rcx,%r9 1063 movq %r10,%rdx 1064 adcq %rcx,%r8 1065 shlxq %rsi,%r10,%rcx 1066 adcq $0,%r9 1067 shrxq %rsi,%r10,%rax 1068 1069 1070 addq %rcx,%r11 1071 adcq %rax,%r8 1072 1073 mulxq %rbp,%rcx,%r10 1074 movq %r11,%rdx 1075 adcq %rcx,%r9 1076 shlxq %rsi,%r11,%rcx 1077 adcq $0,%r10 1078 shrxq %rsi,%r11,%rax 1079 1080 1081 addq %rcx,%r8 1082 adcq %rax,%r9 1083 1084 mulxq %rbp,%rcx,%r11 1085 adcq %rcx,%r10 1086 adcq $0,%r11 1087 1088 xorq %rdx,%rdx 1089 adcq %r8,%r12 1090 movq .Lpoly+8(%rip),%rsi 1091 adcq %r9,%r13 1092 movq %r12,%r8 1093 adcq %r10,%r14 1094 adcq %r11,%r15 1095 movq %r13,%r9 1096 adcq $0,%rdx 1097 1098 xorl %eax,%eax 1099 sbbq $-1,%r12 1100 movq %r14,%r10 1101 sbbq %rsi,%r13 1102 sbbq $0,%r14 1103 movq %r15,%r11 1104 sbbq %rbp,%r15 1105 sbbq $0,%rdx 1106 1107 cmovcq %r8,%r12 1108 cmovcq %r9,%r13 1109 movq %r12,0(%rdi) 1110 cmovcq %r10,%r14 1111 movq %r13,8(%rdi) 1112 cmovcq %r11,%r15 1113 movq %r14,16(%rdi) 1114 movq %r15,24(%rdi) 1115 1116 .byte 0xf3,0xc3 1117.size __ecp_nistz256_sqr_montx,.-__ecp_nistz256_sqr_montx 1118 1119 1120 1121 1122 1123 1124.globl ecp_nistz256_from_mont 1125.type ecp_nistz256_from_mont,@function 1126.align 32 1127ecp_nistz256_from_mont: 1128 pushq %r12 1129 pushq %r13 1130 1131 movq 0(%rsi),%rax 1132 movq .Lpoly+24(%rip),%r13 1133 movq 8(%rsi),%r9 1134 movq 16(%rsi),%r10 1135 movq 24(%rsi),%r11 1136 movq %rax,%r8 1137 movq .Lpoly+8(%rip),%r12 1138 1139 1140 1141 movq %rax,%rcx 1142 shlq $32,%r8 1143 mulq %r13 1144 shrq $32,%rcx 1145 addq %r8,%r9 1146 adcq %rcx,%r10 1147 adcq %rax,%r11 1148 movq %r9,%rax 1149 adcq $0,%rdx 1150 1151 1152 1153 movq %r9,%rcx 1154 shlq $32,%r9 1155 movq %rdx,%r8 1156 mulq %r13 1157 shrq $32,%rcx 1158 addq %r9,%r10 1159 adcq %rcx,%r11 1160 adcq %rax,%r8 1161 movq %r10,%rax 1162 adcq $0,%rdx 1163 1164 1165 1166 movq %r10,%rcx 1167 shlq $32,%r10 1168 movq %rdx,%r9 1169 mulq %r13 1170 shrq $32,%rcx 1171 addq %r10,%r11 1172 adcq %rcx,%r8 1173 adcq %rax,%r9 1174 movq %r11,%rax 1175 adcq $0,%rdx 1176 1177 1178 1179 movq %r11,%rcx 1180 shlq $32,%r11 1181 movq %rdx,%r10 1182 mulq %r13 1183 shrq $32,%rcx 1184 addq %r11,%r8 1185 adcq %rcx,%r9 1186 movq %r8,%rcx 1187 adcq %rax,%r10 1188 movq %r9,%rsi 1189 adcq $0,%rdx 1190 1191 1192 1193 subq $-1,%r8 1194 movq %r10,%rax 1195 sbbq %r12,%r9 1196 sbbq $0,%r10 1197 movq %rdx,%r11 1198 sbbq %r13,%rdx 1199 sbbq %r13,%r13 1200 1201 cmovnzq %rcx,%r8 1202 cmovnzq %rsi,%r9 1203 movq %r8,0(%rdi) 1204 cmovnzq %rax,%r10 1205 movq %r9,8(%rdi) 1206 cmovzq %rdx,%r11 1207 movq %r10,16(%rdi) 1208 movq %r11,24(%rdi) 1209 1210 popq %r13 1211 popq %r12 1212 .byte 0xf3,0xc3 1213.size ecp_nistz256_from_mont,.-ecp_nistz256_from_mont 1214 1215 1216.globl ecp_nistz256_select_w5 1217.type ecp_nistz256_select_w5,@function 1218.align 32 1219ecp_nistz256_select_w5: 1220 movl OPENSSL_ia32cap_P+8(%rip),%eax 1221 testl $32,%eax 1222 jnz .Lavx2_select_w5 1223 movdqa .LOne(%rip),%xmm0 1224 movd %edx,%xmm1 1225 1226 pxor %xmm2,%xmm2 1227 pxor %xmm3,%xmm3 1228 pxor %xmm4,%xmm4 1229 pxor %xmm5,%xmm5 1230 pxor %xmm6,%xmm6 1231 pxor %xmm7,%xmm7 1232 1233 movdqa %xmm0,%xmm8 1234 pshufd $0,%xmm1,%xmm1 1235 1236 movq $16,%rax 1237.Lselect_loop_sse_w5: 1238 1239 movdqa %xmm8,%xmm15 1240 paddd %xmm0,%xmm8 1241 pcmpeqd %xmm1,%xmm15 1242 1243 movdqa 0(%rsi),%xmm9 1244 movdqa 16(%rsi),%xmm10 1245 movdqa 32(%rsi),%xmm11 1246 movdqa 48(%rsi),%xmm12 1247 movdqa 64(%rsi),%xmm13 1248 movdqa 80(%rsi),%xmm14 1249 leaq 96(%rsi),%rsi 1250 1251 pand %xmm15,%xmm9 1252 pand %xmm15,%xmm10 1253 por %xmm9,%xmm2 1254 pand %xmm15,%xmm11 1255 por %xmm10,%xmm3 1256 pand %xmm15,%xmm12 1257 por %xmm11,%xmm4 1258 pand %xmm15,%xmm13 1259 por %xmm12,%xmm5 1260 pand %xmm15,%xmm14 1261 por %xmm13,%xmm6 1262 por %xmm14,%xmm7 1263 1264 decq %rax 1265 jnz .Lselect_loop_sse_w5 1266 1267 movdqu %xmm2,0(%rdi) 1268 movdqu %xmm3,16(%rdi) 1269 movdqu %xmm4,32(%rdi) 1270 movdqu %xmm5,48(%rdi) 1271 movdqu %xmm6,64(%rdi) 1272 movdqu %xmm7,80(%rdi) 1273 .byte 0xf3,0xc3 1274.size ecp_nistz256_select_w5,.-ecp_nistz256_select_w5 1275 1276 1277 1278.globl ecp_nistz256_select_w7 1279.type ecp_nistz256_select_w7,@function 1280.align 32 1281ecp_nistz256_select_w7: 1282 movl OPENSSL_ia32cap_P+8(%rip),%eax 1283 testl $32,%eax 1284 jnz .Lavx2_select_w7 1285 movdqa .LOne(%rip),%xmm8 1286 movd %edx,%xmm1 1287 1288 pxor %xmm2,%xmm2 1289 pxor %xmm3,%xmm3 1290 pxor %xmm4,%xmm4 1291 pxor %xmm5,%xmm5 1292 1293 movdqa %xmm8,%xmm0 1294 pshufd $0,%xmm1,%xmm1 1295 movq $64,%rax 1296 1297.Lselect_loop_sse_w7: 1298 movdqa %xmm8,%xmm15 1299 paddd %xmm0,%xmm8 1300 movdqa 0(%rsi),%xmm9 1301 movdqa 16(%rsi),%xmm10 1302 pcmpeqd %xmm1,%xmm15 1303 movdqa 32(%rsi),%xmm11 1304 movdqa 48(%rsi),%xmm12 1305 leaq 64(%rsi),%rsi 1306 1307 pand %xmm15,%xmm9 1308 pand %xmm15,%xmm10 1309 por %xmm9,%xmm2 1310 pand %xmm15,%xmm11 1311 por %xmm10,%xmm3 1312 pand %xmm15,%xmm12 1313 por %xmm11,%xmm4 1314 prefetcht0 255(%rsi) 1315 por %xmm12,%xmm5 1316 1317 decq %rax 1318 jnz .Lselect_loop_sse_w7 1319 1320 movdqu %xmm2,0(%rdi) 1321 movdqu %xmm3,16(%rdi) 1322 movdqu %xmm4,32(%rdi) 1323 movdqu %xmm5,48(%rdi) 1324 .byte 0xf3,0xc3 1325.size ecp_nistz256_select_w7,.-ecp_nistz256_select_w7 1326 1327 1328.type ecp_nistz256_avx2_select_w5,@function 1329.align 32 1330ecp_nistz256_avx2_select_w5: 1331.Lavx2_select_w5: 1332 vzeroupper 1333 vmovdqa .LTwo(%rip),%ymm0 1334 1335 vpxor %ymm2,%ymm2,%ymm2 1336 vpxor %ymm3,%ymm3,%ymm3 1337 vpxor %ymm4,%ymm4,%ymm4 1338 1339 vmovdqa .LOne(%rip),%ymm5 1340 vmovdqa .LTwo(%rip),%ymm10 1341 1342 vmovd %edx,%xmm1 1343 vpermd %ymm1,%ymm2,%ymm1 1344 1345 movq $8,%rax 1346.Lselect_loop_avx2_w5: 1347 1348 vmovdqa 0(%rsi),%ymm6 1349 vmovdqa 32(%rsi),%ymm7 1350 vmovdqa 64(%rsi),%ymm8 1351 1352 vmovdqa 96(%rsi),%ymm11 1353 vmovdqa 128(%rsi),%ymm12 1354 vmovdqa 160(%rsi),%ymm13 1355 1356 vpcmpeqd %ymm1,%ymm5,%ymm9 1357 vpcmpeqd %ymm1,%ymm10,%ymm14 1358 1359 vpaddd %ymm0,%ymm5,%ymm5 1360 vpaddd %ymm0,%ymm10,%ymm10 1361 leaq 192(%rsi),%rsi 1362 1363 vpand %ymm9,%ymm6,%ymm6 1364 vpand %ymm9,%ymm7,%ymm7 1365 vpand %ymm9,%ymm8,%ymm8 1366 vpand %ymm14,%ymm11,%ymm11 1367 vpand %ymm14,%ymm12,%ymm12 1368 vpand %ymm14,%ymm13,%ymm13 1369 1370 vpxor %ymm6,%ymm2,%ymm2 1371 vpxor %ymm7,%ymm3,%ymm3 1372 vpxor %ymm8,%ymm4,%ymm4 1373 vpxor %ymm11,%ymm2,%ymm2 1374 vpxor %ymm12,%ymm3,%ymm3 1375 vpxor %ymm13,%ymm4,%ymm4 1376 1377 decq %rax 1378 jnz .Lselect_loop_avx2_w5 1379 1380 vmovdqu %ymm2,0(%rdi) 1381 vmovdqu %ymm3,32(%rdi) 1382 vmovdqu %ymm4,64(%rdi) 1383 vzeroupper 1384 .byte 0xf3,0xc3 1385.size ecp_nistz256_avx2_select_w5,.-ecp_nistz256_avx2_select_w5 1386 1387 1388 1389.globl ecp_nistz256_avx2_select_w7 1390.type ecp_nistz256_avx2_select_w7,@function 1391.align 32 1392ecp_nistz256_avx2_select_w7: 1393.Lavx2_select_w7: 1394 vzeroupper 1395 vmovdqa .LThree(%rip),%ymm0 1396 1397 vpxor %ymm2,%ymm2,%ymm2 1398 vpxor %ymm3,%ymm3,%ymm3 1399 1400 vmovdqa .LOne(%rip),%ymm4 1401 vmovdqa .LTwo(%rip),%ymm8 1402 vmovdqa .LThree(%rip),%ymm12 1403 1404 vmovd %edx,%xmm1 1405 vpermd %ymm1,%ymm2,%ymm1 1406 1407 1408 movq $21,%rax 1409.Lselect_loop_avx2_w7: 1410 1411 vmovdqa 0(%rsi),%ymm5 1412 vmovdqa 32(%rsi),%ymm6 1413 1414 vmovdqa 64(%rsi),%ymm9 1415 vmovdqa 96(%rsi),%ymm10 1416 1417 vmovdqa 128(%rsi),%ymm13 1418 vmovdqa 160(%rsi),%ymm14 1419 1420 vpcmpeqd %ymm1,%ymm4,%ymm7 1421 vpcmpeqd %ymm1,%ymm8,%ymm11 1422 vpcmpeqd %ymm1,%ymm12,%ymm15 1423 1424 vpaddd %ymm0,%ymm4,%ymm4 1425 vpaddd %ymm0,%ymm8,%ymm8 1426 vpaddd %ymm0,%ymm12,%ymm12 1427 leaq 192(%rsi),%rsi 1428 1429 vpand %ymm7,%ymm5,%ymm5 1430 vpand %ymm7,%ymm6,%ymm6 1431 vpand %ymm11,%ymm9,%ymm9 1432 vpand %ymm11,%ymm10,%ymm10 1433 vpand %ymm15,%ymm13,%ymm13 1434 vpand %ymm15,%ymm14,%ymm14 1435 1436 vpxor %ymm5,%ymm2,%ymm2 1437 vpxor %ymm6,%ymm3,%ymm3 1438 vpxor %ymm9,%ymm2,%ymm2 1439 vpxor %ymm10,%ymm3,%ymm3 1440 vpxor %ymm13,%ymm2,%ymm2 1441 vpxor %ymm14,%ymm3,%ymm3 1442 1443 decq %rax 1444 jnz .Lselect_loop_avx2_w7 1445 1446 1447 vmovdqa 0(%rsi),%ymm5 1448 vmovdqa 32(%rsi),%ymm6 1449 1450 vpcmpeqd %ymm1,%ymm4,%ymm7 1451 1452 vpand %ymm7,%ymm5,%ymm5 1453 vpand %ymm7,%ymm6,%ymm6 1454 1455 vpxor %ymm5,%ymm2,%ymm2 1456 vpxor %ymm6,%ymm3,%ymm3 1457 1458 vmovdqu %ymm2,0(%rdi) 1459 vmovdqu %ymm3,32(%rdi) 1460 vzeroupper 1461 .byte 0xf3,0xc3 1462.size ecp_nistz256_avx2_select_w7,.-ecp_nistz256_avx2_select_w7 1463.type __ecp_nistz256_add_toq,@function 1464.align 32 1465__ecp_nistz256_add_toq: 1466 xorq %r11,%r11 1467 addq 0(%rbx),%r12 1468 adcq 8(%rbx),%r13 1469 movq %r12,%rax 1470 adcq 16(%rbx),%r8 1471 adcq 24(%rbx),%r9 1472 movq %r13,%rbp 1473 adcq $0,%r11 1474 1475 subq $-1,%r12 1476 movq %r8,%rcx 1477 sbbq %r14,%r13 1478 sbbq $0,%r8 1479 movq %r9,%r10 1480 sbbq %r15,%r9 1481 sbbq $0,%r11 1482 1483 cmovcq %rax,%r12 1484 cmovcq %rbp,%r13 1485 movq %r12,0(%rdi) 1486 cmovcq %rcx,%r8 1487 movq %r13,8(%rdi) 1488 cmovcq %r10,%r9 1489 movq %r8,16(%rdi) 1490 movq %r9,24(%rdi) 1491 1492 .byte 0xf3,0xc3 1493.size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq 1494 1495.type __ecp_nistz256_sub_fromq,@function 1496.align 32 1497__ecp_nistz256_sub_fromq: 1498 subq 0(%rbx),%r12 1499 sbbq 8(%rbx),%r13 1500 movq %r12,%rax 1501 sbbq 16(%rbx),%r8 1502 sbbq 24(%rbx),%r9 1503 movq %r13,%rbp 1504 sbbq %r11,%r11 1505 1506 addq $-1,%r12 1507 movq %r8,%rcx 1508 adcq %r14,%r13 1509 adcq $0,%r8 1510 movq %r9,%r10 1511 adcq %r15,%r9 1512 testq %r11,%r11 1513 1514 cmovzq %rax,%r12 1515 cmovzq %rbp,%r13 1516 movq %r12,0(%rdi) 1517 cmovzq %rcx,%r8 1518 movq %r13,8(%rdi) 1519 cmovzq %r10,%r9 1520 movq %r8,16(%rdi) 1521 movq %r9,24(%rdi) 1522 1523 .byte 0xf3,0xc3 1524.size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq 1525 1526.type __ecp_nistz256_subq,@function 1527.align 32 1528__ecp_nistz256_subq: 1529 subq %r12,%rax 1530 sbbq %r13,%rbp 1531 movq %rax,%r12 1532 sbbq %r8,%rcx 1533 sbbq %r9,%r10 1534 movq %rbp,%r13 1535 sbbq %r11,%r11 1536 1537 addq $-1,%rax 1538 movq %rcx,%r8 1539 adcq %r14,%rbp 1540 adcq $0,%rcx 1541 movq %r10,%r9 1542 adcq %r15,%r10 1543 testq %r11,%r11 1544 1545 cmovnzq %rax,%r12 1546 cmovnzq %rbp,%r13 1547 cmovnzq %rcx,%r8 1548 cmovnzq %r10,%r9 1549 1550 .byte 0xf3,0xc3 1551.size __ecp_nistz256_subq,.-__ecp_nistz256_subq 1552 1553.type __ecp_nistz256_mul_by_2q,@function 1554.align 32 1555__ecp_nistz256_mul_by_2q: 1556 xorq %r11,%r11 1557 addq %r12,%r12 1558 adcq %r13,%r13 1559 movq %r12,%rax 1560 adcq %r8,%r8 1561 adcq %r9,%r9 1562 movq %r13,%rbp 1563 adcq $0,%r11 1564 1565 subq $-1,%r12 1566 movq %r8,%rcx 1567 sbbq %r14,%r13 1568 sbbq $0,%r8 1569 movq %r9,%r10 1570 sbbq %r15,%r9 1571 sbbq $0,%r11 1572 1573 cmovcq %rax,%r12 1574 cmovcq %rbp,%r13 1575 movq %r12,0(%rdi) 1576 cmovcq %rcx,%r8 1577 movq %r13,8(%rdi) 1578 cmovcq %r10,%r9 1579 movq %r8,16(%rdi) 1580 movq %r9,24(%rdi) 1581 1582 .byte 0xf3,0xc3 1583.size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q 1584.globl ecp_nistz256_point_double 1585.type ecp_nistz256_point_double,@function 1586.align 32 1587ecp_nistz256_point_double: 1588 movl $0x80100,%ecx 1589 andl OPENSSL_ia32cap_P+8(%rip),%ecx 1590 cmpl $0x80100,%ecx 1591 je .Lpoint_doublex 1592 pushq %rbp 1593 pushq %rbx 1594 pushq %r12 1595 pushq %r13 1596 pushq %r14 1597 pushq %r15 1598 subq $160+8,%rsp 1599 1600.Lpoint_double_shortcutq: 1601 movdqu 0(%rsi),%xmm0 1602 movq %rsi,%rbx 1603 movdqu 16(%rsi),%xmm1 1604 movq 32+0(%rsi),%r12 1605 movq 32+8(%rsi),%r13 1606 movq 32+16(%rsi),%r8 1607 movq 32+24(%rsi),%r9 1608 movq .Lpoly+8(%rip),%r14 1609 movq .Lpoly+24(%rip),%r15 1610 movdqa %xmm0,96(%rsp) 1611 movdqa %xmm1,96+16(%rsp) 1612 leaq 32(%rdi),%r10 1613 leaq 64(%rdi),%r11 1614.byte 102,72,15,110,199 1615.byte 102,73,15,110,202 1616.byte 102,73,15,110,211 1617 1618 leaq 0(%rsp),%rdi 1619 call __ecp_nistz256_mul_by_2q 1620 1621 movq 64+0(%rsi),%rax 1622 movq 64+8(%rsi),%r14 1623 movq 64+16(%rsi),%r15 1624 movq 64+24(%rsi),%r8 1625 leaq 64-0(%rsi),%rsi 1626 leaq 64(%rsp),%rdi 1627 call __ecp_nistz256_sqr_montq 1628 1629 movq 0+0(%rsp),%rax 1630 movq 8+0(%rsp),%r14 1631 leaq 0+0(%rsp),%rsi 1632 movq 16+0(%rsp),%r15 1633 movq 24+0(%rsp),%r8 1634 leaq 0(%rsp),%rdi 1635 call __ecp_nistz256_sqr_montq 1636 1637 movq 32(%rbx),%rax 1638 movq 64+0(%rbx),%r9 1639 movq 64+8(%rbx),%r10 1640 movq 64+16(%rbx),%r11 1641 movq 64+24(%rbx),%r12 1642 leaq 64-0(%rbx),%rsi 1643 leaq 32(%rbx),%rbx 1644.byte 102,72,15,126,215 1645 call __ecp_nistz256_mul_montq 1646 call __ecp_nistz256_mul_by_2q 1647 1648 movq 96+0(%rsp),%r12 1649 movq 96+8(%rsp),%r13 1650 leaq 64(%rsp),%rbx 1651 movq 96+16(%rsp),%r8 1652 movq 96+24(%rsp),%r9 1653 leaq 32(%rsp),%rdi 1654 call __ecp_nistz256_add_toq 1655 1656 movq 96+0(%rsp),%r12 1657 movq 96+8(%rsp),%r13 1658 leaq 64(%rsp),%rbx 1659 movq 96+16(%rsp),%r8 1660 movq 96+24(%rsp),%r9 1661 leaq 64(%rsp),%rdi 1662 call __ecp_nistz256_sub_fromq 1663 1664 movq 0+0(%rsp),%rax 1665 movq 8+0(%rsp),%r14 1666 leaq 0+0(%rsp),%rsi 1667 movq 16+0(%rsp),%r15 1668 movq 24+0(%rsp),%r8 1669.byte 102,72,15,126,207 1670 call __ecp_nistz256_sqr_montq 1671 xorq %r9,%r9 1672 movq %r12,%rax 1673 addq $-1,%r12 1674 movq %r13,%r10 1675 adcq %rsi,%r13 1676 movq %r14,%rcx 1677 adcq $0,%r14 1678 movq %r15,%r8 1679 adcq %rbp,%r15 1680 adcq $0,%r9 1681 xorq %rsi,%rsi 1682 testq $1,%rax 1683 1684 cmovzq %rax,%r12 1685 cmovzq %r10,%r13 1686 cmovzq %rcx,%r14 1687 cmovzq %r8,%r15 1688 cmovzq %rsi,%r9 1689 1690 movq %r13,%rax 1691 shrq $1,%r12 1692 shlq $63,%rax 1693 movq %r14,%r10 1694 shrq $1,%r13 1695 orq %rax,%r12 1696 shlq $63,%r10 1697 movq %r15,%rcx 1698 shrq $1,%r14 1699 orq %r10,%r13 1700 shlq $63,%rcx 1701 movq %r12,0(%rdi) 1702 shrq $1,%r15 1703 movq %r13,8(%rdi) 1704 shlq $63,%r9 1705 orq %rcx,%r14 1706 orq %r9,%r15 1707 movq %r14,16(%rdi) 1708 movq %r15,24(%rdi) 1709 movq 64(%rsp),%rax 1710 leaq 64(%rsp),%rbx 1711 movq 0+32(%rsp),%r9 1712 movq 8+32(%rsp),%r10 1713 leaq 0+32(%rsp),%rsi 1714 movq 16+32(%rsp),%r11 1715 movq 24+32(%rsp),%r12 1716 leaq 32(%rsp),%rdi 1717 call __ecp_nistz256_mul_montq 1718 1719 leaq 128(%rsp),%rdi 1720 call __ecp_nistz256_mul_by_2q 1721 1722 leaq 32(%rsp),%rbx 1723 leaq 32(%rsp),%rdi 1724 call __ecp_nistz256_add_toq 1725 1726 movq 96(%rsp),%rax 1727 leaq 96(%rsp),%rbx 1728 movq 0+0(%rsp),%r9 1729 movq 8+0(%rsp),%r10 1730 leaq 0+0(%rsp),%rsi 1731 movq 16+0(%rsp),%r11 1732 movq 24+0(%rsp),%r12 1733 leaq 0(%rsp),%rdi 1734 call __ecp_nistz256_mul_montq 1735 1736 leaq 128(%rsp),%rdi 1737 call __ecp_nistz256_mul_by_2q 1738 1739 movq 0+32(%rsp),%rax 1740 movq 8+32(%rsp),%r14 1741 leaq 0+32(%rsp),%rsi 1742 movq 16+32(%rsp),%r15 1743 movq 24+32(%rsp),%r8 1744.byte 102,72,15,126,199 1745 call __ecp_nistz256_sqr_montq 1746 1747 leaq 128(%rsp),%rbx 1748 movq %r14,%r8 1749 movq %r15,%r9 1750 movq %rsi,%r14 1751 movq %rbp,%r15 1752 call __ecp_nistz256_sub_fromq 1753 1754 movq 0+0(%rsp),%rax 1755 movq 0+8(%rsp),%rbp 1756 movq 0+16(%rsp),%rcx 1757 movq 0+24(%rsp),%r10 1758 leaq 0(%rsp),%rdi 1759 call __ecp_nistz256_subq 1760 1761 movq 32(%rsp),%rax 1762 leaq 32(%rsp),%rbx 1763 movq %r12,%r14 1764 xorl %ecx,%ecx 1765 movq %r12,0+0(%rsp) 1766 movq %r13,%r10 1767 movq %r13,0+8(%rsp) 1768 cmovzq %r8,%r11 1769 movq %r8,0+16(%rsp) 1770 leaq 0-0(%rsp),%rsi 1771 cmovzq %r9,%r12 1772 movq %r9,0+24(%rsp) 1773 movq %r14,%r9 1774 leaq 0(%rsp),%rdi 1775 call __ecp_nistz256_mul_montq 1776 1777.byte 102,72,15,126,203 1778.byte 102,72,15,126,207 1779 call __ecp_nistz256_sub_fromq 1780 1781 addq $160+8,%rsp 1782 popq %r15 1783 popq %r14 1784 popq %r13 1785 popq %r12 1786 popq %rbx 1787 popq %rbp 1788 .byte 0xf3,0xc3 1789.size ecp_nistz256_point_double,.-ecp_nistz256_point_double 1790.globl ecp_nistz256_point_add 1791.type ecp_nistz256_point_add,@function 1792.align 32 1793ecp_nistz256_point_add: 1794 movl $0x80100,%ecx 1795 andl OPENSSL_ia32cap_P+8(%rip),%ecx 1796 cmpl $0x80100,%ecx 1797 je .Lpoint_addx 1798 pushq %rbp 1799 pushq %rbx 1800 pushq %r12 1801 pushq %r13 1802 pushq %r14 1803 pushq %r15 1804 subq $576+8,%rsp 1805 1806 movdqu 0(%rsi),%xmm0 1807 movdqu 16(%rsi),%xmm1 1808 movdqu 32(%rsi),%xmm2 1809 movdqu 48(%rsi),%xmm3 1810 movdqu 64(%rsi),%xmm4 1811 movdqu 80(%rsi),%xmm5 1812 movq %rsi,%rbx 1813 movq %rdx,%rsi 1814 movdqa %xmm0,384(%rsp) 1815 movdqa %xmm1,384+16(%rsp) 1816 movdqa %xmm2,416(%rsp) 1817 movdqa %xmm3,416+16(%rsp) 1818 movdqa %xmm4,448(%rsp) 1819 movdqa %xmm5,448+16(%rsp) 1820 por %xmm4,%xmm5 1821 1822 movdqu 0(%rsi),%xmm0 1823 pshufd $0xb1,%xmm5,%xmm3 1824 movdqu 16(%rsi),%xmm1 1825 movdqu 32(%rsi),%xmm2 1826 por %xmm3,%xmm5 1827 movdqu 48(%rsi),%xmm3 1828 movq 64+0(%rsi),%rax 1829 movq 64+8(%rsi),%r14 1830 movq 64+16(%rsi),%r15 1831 movq 64+24(%rsi),%r8 1832 movdqa %xmm0,480(%rsp) 1833 pshufd $0x1e,%xmm5,%xmm4 1834 movdqa %xmm1,480+16(%rsp) 1835 movdqu 64(%rsi),%xmm0 1836 movdqu 80(%rsi),%xmm1 1837 movdqa %xmm2,512(%rsp) 1838 movdqa %xmm3,512+16(%rsp) 1839 por %xmm4,%xmm5 1840 pxor %xmm4,%xmm4 1841 por %xmm0,%xmm1 1842.byte 102,72,15,110,199 1843 1844 leaq 64-0(%rsi),%rsi 1845 movq %rax,544+0(%rsp) 1846 movq %r14,544+8(%rsp) 1847 movq %r15,544+16(%rsp) 1848 movq %r8,544+24(%rsp) 1849 leaq 96(%rsp),%rdi 1850 call __ecp_nistz256_sqr_montq 1851 1852 pcmpeqd %xmm4,%xmm5 1853 pshufd $0xb1,%xmm1,%xmm4 1854 por %xmm1,%xmm4 1855 pshufd $0,%xmm5,%xmm5 1856 pshufd $0x1e,%xmm4,%xmm3 1857 por %xmm3,%xmm4 1858 pxor %xmm3,%xmm3 1859 pcmpeqd %xmm3,%xmm4 1860 pshufd $0,%xmm4,%xmm4 1861 movq 64+0(%rbx),%rax 1862 movq 64+8(%rbx),%r14 1863 movq 64+16(%rbx),%r15 1864 movq 64+24(%rbx),%r8 1865.byte 102,72,15,110,203 1866 1867 leaq 64-0(%rbx),%rsi 1868 leaq 32(%rsp),%rdi 1869 call __ecp_nistz256_sqr_montq 1870 1871 movq 544(%rsp),%rax 1872 leaq 544(%rsp),%rbx 1873 movq 0+96(%rsp),%r9 1874 movq 8+96(%rsp),%r10 1875 leaq 0+96(%rsp),%rsi 1876 movq 16+96(%rsp),%r11 1877 movq 24+96(%rsp),%r12 1878 leaq 224(%rsp),%rdi 1879 call __ecp_nistz256_mul_montq 1880 1881 movq 448(%rsp),%rax 1882 leaq 448(%rsp),%rbx 1883 movq 0+32(%rsp),%r9 1884 movq 8+32(%rsp),%r10 1885 leaq 0+32(%rsp),%rsi 1886 movq 16+32(%rsp),%r11 1887 movq 24+32(%rsp),%r12 1888 leaq 256(%rsp),%rdi 1889 call __ecp_nistz256_mul_montq 1890 1891 movq 416(%rsp),%rax 1892 leaq 416(%rsp),%rbx 1893 movq 0+224(%rsp),%r9 1894 movq 8+224(%rsp),%r10 1895 leaq 0+224(%rsp),%rsi 1896 movq 16+224(%rsp),%r11 1897 movq 24+224(%rsp),%r12 1898 leaq 224(%rsp),%rdi 1899 call __ecp_nistz256_mul_montq 1900 1901 movq 512(%rsp),%rax 1902 leaq 512(%rsp),%rbx 1903 movq 0+256(%rsp),%r9 1904 movq 8+256(%rsp),%r10 1905 leaq 0+256(%rsp),%rsi 1906 movq 16+256(%rsp),%r11 1907 movq 24+256(%rsp),%r12 1908 leaq 256(%rsp),%rdi 1909 call __ecp_nistz256_mul_montq 1910 1911 leaq 224(%rsp),%rbx 1912 leaq 64(%rsp),%rdi 1913 call __ecp_nistz256_sub_fromq 1914 1915 orq %r13,%r12 1916 movdqa %xmm4,%xmm2 1917 orq %r8,%r12 1918 orq %r9,%r12 1919 por %xmm5,%xmm2 1920.byte 102,73,15,110,220 1921 1922 movq 384(%rsp),%rax 1923 leaq 384(%rsp),%rbx 1924 movq 0+96(%rsp),%r9 1925 movq 8+96(%rsp),%r10 1926 leaq 0+96(%rsp),%rsi 1927 movq 16+96(%rsp),%r11 1928 movq 24+96(%rsp),%r12 1929 leaq 160(%rsp),%rdi 1930 call __ecp_nistz256_mul_montq 1931 1932 movq 480(%rsp),%rax 1933 leaq 480(%rsp),%rbx 1934 movq 0+32(%rsp),%r9 1935 movq 8+32(%rsp),%r10 1936 leaq 0+32(%rsp),%rsi 1937 movq 16+32(%rsp),%r11 1938 movq 24+32(%rsp),%r12 1939 leaq 192(%rsp),%rdi 1940 call __ecp_nistz256_mul_montq 1941 1942 leaq 160(%rsp),%rbx 1943 leaq 0(%rsp),%rdi 1944 call __ecp_nistz256_sub_fromq 1945 1946 orq %r13,%r12 1947 orq %r8,%r12 1948 orq %r9,%r12 1949 1950.byte 0x3e 1951 jnz .Ladd_proceedq 1952.byte 102,73,15,126,208 1953.byte 102,73,15,126,217 1954 testq %r8,%r8 1955 jnz .Ladd_proceedq 1956 testq %r9,%r9 1957 jz .Ladd_doubleq 1958 1959.byte 102,72,15,126,199 1960 pxor %xmm0,%xmm0 1961 movdqu %xmm0,0(%rdi) 1962 movdqu %xmm0,16(%rdi) 1963 movdqu %xmm0,32(%rdi) 1964 movdqu %xmm0,48(%rdi) 1965 movdqu %xmm0,64(%rdi) 1966 movdqu %xmm0,80(%rdi) 1967 jmp .Ladd_doneq 1968 1969.align 32 1970.Ladd_doubleq: 1971.byte 102,72,15,126,206 1972.byte 102,72,15,126,199 1973 addq $416,%rsp 1974 jmp .Lpoint_double_shortcutq 1975 1976.align 32 1977.Ladd_proceedq: 1978 movq 0+64(%rsp),%rax 1979 movq 8+64(%rsp),%r14 1980 leaq 0+64(%rsp),%rsi 1981 movq 16+64(%rsp),%r15 1982 movq 24+64(%rsp),%r8 1983 leaq 96(%rsp),%rdi 1984 call __ecp_nistz256_sqr_montq 1985 1986 movq 448(%rsp),%rax 1987 leaq 448(%rsp),%rbx 1988 movq 0+0(%rsp),%r9 1989 movq 8+0(%rsp),%r10 1990 leaq 0+0(%rsp),%rsi 1991 movq 16+0(%rsp),%r11 1992 movq 24+0(%rsp),%r12 1993 leaq 352(%rsp),%rdi 1994 call __ecp_nistz256_mul_montq 1995 1996 movq 0+0(%rsp),%rax 1997 movq 8+0(%rsp),%r14 1998 leaq 0+0(%rsp),%rsi 1999 movq 16+0(%rsp),%r15 2000 movq 24+0(%rsp),%r8 2001 leaq 32(%rsp),%rdi 2002 call __ecp_nistz256_sqr_montq 2003 2004 movq 544(%rsp),%rax 2005 leaq 544(%rsp),%rbx 2006 movq 0+352(%rsp),%r9 2007 movq 8+352(%rsp),%r10 2008 leaq 0+352(%rsp),%rsi 2009 movq 16+352(%rsp),%r11 2010 movq 24+352(%rsp),%r12 2011 leaq 352(%rsp),%rdi 2012 call __ecp_nistz256_mul_montq 2013 2014 movq 0(%rsp),%rax 2015 leaq 0(%rsp),%rbx 2016 movq 0+32(%rsp),%r9 2017 movq 8+32(%rsp),%r10 2018 leaq 0+32(%rsp),%rsi 2019 movq 16+32(%rsp),%r11 2020 movq 24+32(%rsp),%r12 2021 leaq 128(%rsp),%rdi 2022 call __ecp_nistz256_mul_montq 2023 2024 movq 160(%rsp),%rax 2025 leaq 160(%rsp),%rbx 2026 movq 0+32(%rsp),%r9 2027 movq 8+32(%rsp),%r10 2028 leaq 0+32(%rsp),%rsi 2029 movq 16+32(%rsp),%r11 2030 movq 24+32(%rsp),%r12 2031 leaq 192(%rsp),%rdi 2032 call __ecp_nistz256_mul_montq 2033 2034 2035 2036 2037 xorq %r11,%r11 2038 addq %r12,%r12 2039 leaq 96(%rsp),%rsi 2040 adcq %r13,%r13 2041 movq %r12,%rax 2042 adcq %r8,%r8 2043 adcq %r9,%r9 2044 movq %r13,%rbp 2045 adcq $0,%r11 2046 2047 subq $-1,%r12 2048 movq %r8,%rcx 2049 sbbq %r14,%r13 2050 sbbq $0,%r8 2051 movq %r9,%r10 2052 sbbq %r15,%r9 2053 sbbq $0,%r11 2054 2055 cmovcq %rax,%r12 2056 movq 0(%rsi),%rax 2057 cmovcq %rbp,%r13 2058 movq 8(%rsi),%rbp 2059 cmovcq %rcx,%r8 2060 movq 16(%rsi),%rcx 2061 cmovcq %r10,%r9 2062 movq 24(%rsi),%r10 2063 2064 call __ecp_nistz256_subq 2065 2066 leaq 128(%rsp),%rbx 2067 leaq 288(%rsp),%rdi 2068 call __ecp_nistz256_sub_fromq 2069 2070 movq 192+0(%rsp),%rax 2071 movq 192+8(%rsp),%rbp 2072 movq 192+16(%rsp),%rcx 2073 movq 192+24(%rsp),%r10 2074 leaq 320(%rsp),%rdi 2075 2076 call __ecp_nistz256_subq 2077 2078 movq %r12,0(%rdi) 2079 movq %r13,8(%rdi) 2080 movq %r8,16(%rdi) 2081 movq %r9,24(%rdi) 2082 movq 128(%rsp),%rax 2083 leaq 128(%rsp),%rbx 2084 movq 0+224(%rsp),%r9 2085 movq 8+224(%rsp),%r10 2086 leaq 0+224(%rsp),%rsi 2087 movq 16+224(%rsp),%r11 2088 movq 24+224(%rsp),%r12 2089 leaq 256(%rsp),%rdi 2090 call __ecp_nistz256_mul_montq 2091 2092 movq 320(%rsp),%rax 2093 leaq 320(%rsp),%rbx 2094 movq 0+64(%rsp),%r9 2095 movq 8+64(%rsp),%r10 2096 leaq 0+64(%rsp),%rsi 2097 movq 16+64(%rsp),%r11 2098 movq 24+64(%rsp),%r12 2099 leaq 320(%rsp),%rdi 2100 call __ecp_nistz256_mul_montq 2101 2102 leaq 256(%rsp),%rbx 2103 leaq 320(%rsp),%rdi 2104 call __ecp_nistz256_sub_fromq 2105 2106.byte 102,72,15,126,199 2107 2108 movdqa %xmm5,%xmm0 2109 movdqa %xmm5,%xmm1 2110 pandn 352(%rsp),%xmm0 2111 movdqa %xmm5,%xmm2 2112 pandn 352+16(%rsp),%xmm1 2113 movdqa %xmm5,%xmm3 2114 pand 544(%rsp),%xmm2 2115 pand 544+16(%rsp),%xmm3 2116 por %xmm0,%xmm2 2117 por %xmm1,%xmm3 2118 2119 movdqa %xmm4,%xmm0 2120 movdqa %xmm4,%xmm1 2121 pandn %xmm2,%xmm0 2122 movdqa %xmm4,%xmm2 2123 pandn %xmm3,%xmm1 2124 movdqa %xmm4,%xmm3 2125 pand 448(%rsp),%xmm2 2126 pand 448+16(%rsp),%xmm3 2127 por %xmm0,%xmm2 2128 por %xmm1,%xmm3 2129 movdqu %xmm2,64(%rdi) 2130 movdqu %xmm3,80(%rdi) 2131 2132 movdqa %xmm5,%xmm0 2133 movdqa %xmm5,%xmm1 2134 pandn 288(%rsp),%xmm0 2135 movdqa %xmm5,%xmm2 2136 pandn 288+16(%rsp),%xmm1 2137 movdqa %xmm5,%xmm3 2138 pand 480(%rsp),%xmm2 2139 pand 480+16(%rsp),%xmm3 2140 por %xmm0,%xmm2 2141 por %xmm1,%xmm3 2142 2143 movdqa %xmm4,%xmm0 2144 movdqa %xmm4,%xmm1 2145 pandn %xmm2,%xmm0 2146 movdqa %xmm4,%xmm2 2147 pandn %xmm3,%xmm1 2148 movdqa %xmm4,%xmm3 2149 pand 384(%rsp),%xmm2 2150 pand 384+16(%rsp),%xmm3 2151 por %xmm0,%xmm2 2152 por %xmm1,%xmm3 2153 movdqu %xmm2,0(%rdi) 2154 movdqu %xmm3,16(%rdi) 2155 2156 movdqa %xmm5,%xmm0 2157 movdqa %xmm5,%xmm1 2158 pandn 320(%rsp),%xmm0 2159 movdqa %xmm5,%xmm2 2160 pandn 320+16(%rsp),%xmm1 2161 movdqa %xmm5,%xmm3 2162 pand 512(%rsp),%xmm2 2163 pand 512+16(%rsp),%xmm3 2164 por %xmm0,%xmm2 2165 por %xmm1,%xmm3 2166 2167 movdqa %xmm4,%xmm0 2168 movdqa %xmm4,%xmm1 2169 pandn %xmm2,%xmm0 2170 movdqa %xmm4,%xmm2 2171 pandn %xmm3,%xmm1 2172 movdqa %xmm4,%xmm3 2173 pand 416(%rsp),%xmm2 2174 pand 416+16(%rsp),%xmm3 2175 por %xmm0,%xmm2 2176 por %xmm1,%xmm3 2177 movdqu %xmm2,32(%rdi) 2178 movdqu %xmm3,48(%rdi) 2179 2180.Ladd_doneq: 2181 addq $576+8,%rsp 2182 popq %r15 2183 popq %r14 2184 popq %r13 2185 popq %r12 2186 popq %rbx 2187 popq %rbp 2188 .byte 0xf3,0xc3 2189.size ecp_nistz256_point_add,.-ecp_nistz256_point_add 2190.globl ecp_nistz256_point_add_affine 2191.type ecp_nistz256_point_add_affine,@function 2192.align 32 2193ecp_nistz256_point_add_affine: 2194 movl $0x80100,%ecx 2195 andl OPENSSL_ia32cap_P+8(%rip),%ecx 2196 cmpl $0x80100,%ecx 2197 je .Lpoint_add_affinex 2198 pushq %rbp 2199 pushq %rbx 2200 pushq %r12 2201 pushq %r13 2202 pushq %r14 2203 pushq %r15 2204 subq $480+8,%rsp 2205 2206 movdqu 0(%rsi),%xmm0 2207 movq %rdx,%rbx 2208 movdqu 16(%rsi),%xmm1 2209 movdqu 32(%rsi),%xmm2 2210 movdqu 48(%rsi),%xmm3 2211 movdqu 64(%rsi),%xmm4 2212 movdqu 80(%rsi),%xmm5 2213 movq 64+0(%rsi),%rax 2214 movq 64+8(%rsi),%r14 2215 movq 64+16(%rsi),%r15 2216 movq 64+24(%rsi),%r8 2217 movdqa %xmm0,320(%rsp) 2218 movdqa %xmm1,320+16(%rsp) 2219 movdqa %xmm2,352(%rsp) 2220 movdqa %xmm3,352+16(%rsp) 2221 movdqa %xmm4,384(%rsp) 2222 movdqa %xmm5,384+16(%rsp) 2223 por %xmm4,%xmm5 2224 2225 movdqu 0(%rbx),%xmm0 2226 pshufd $0xb1,%xmm5,%xmm3 2227 movdqu 16(%rbx),%xmm1 2228 movdqu 32(%rbx),%xmm2 2229 por %xmm3,%xmm5 2230 movdqu 48(%rbx),%xmm3 2231 movdqa %xmm0,416(%rsp) 2232 pshufd $0x1e,%xmm5,%xmm4 2233 movdqa %xmm1,416+16(%rsp) 2234 por %xmm0,%xmm1 2235.byte 102,72,15,110,199 2236 movdqa %xmm2,448(%rsp) 2237 movdqa %xmm3,448+16(%rsp) 2238 por %xmm2,%xmm3 2239 por %xmm4,%xmm5 2240 pxor %xmm4,%xmm4 2241 por %xmm1,%xmm3 2242 2243 leaq 64-0(%rsi),%rsi 2244 leaq 32(%rsp),%rdi 2245 call __ecp_nistz256_sqr_montq 2246 2247 pcmpeqd %xmm4,%xmm5 2248 pshufd $0xb1,%xmm3,%xmm4 2249 movq 0(%rbx),%rax 2250 2251 movq %r12,%r9 2252 por %xmm3,%xmm4 2253 pshufd $0,%xmm5,%xmm5 2254 pshufd $0x1e,%xmm4,%xmm3 2255 movq %r13,%r10 2256 por %xmm3,%xmm4 2257 pxor %xmm3,%xmm3 2258 movq %r14,%r11 2259 pcmpeqd %xmm3,%xmm4 2260 pshufd $0,%xmm4,%xmm4 2261 2262 leaq 32-0(%rsp),%rsi 2263 movq %r15,%r12 2264 leaq 0(%rsp),%rdi 2265 call __ecp_nistz256_mul_montq 2266 2267 leaq 320(%rsp),%rbx 2268 leaq 64(%rsp),%rdi 2269 call __ecp_nistz256_sub_fromq 2270 2271 movq 384(%rsp),%rax 2272 leaq 384(%rsp),%rbx 2273 movq 0+32(%rsp),%r9 2274 movq 8+32(%rsp),%r10 2275 leaq 0+32(%rsp),%rsi 2276 movq 16+32(%rsp),%r11 2277 movq 24+32(%rsp),%r12 2278 leaq 32(%rsp),%rdi 2279 call __ecp_nistz256_mul_montq 2280 2281 movq 384(%rsp),%rax 2282 leaq 384(%rsp),%rbx 2283 movq 0+64(%rsp),%r9 2284 movq 8+64(%rsp),%r10 2285 leaq 0+64(%rsp),%rsi 2286 movq 16+64(%rsp),%r11 2287 movq 24+64(%rsp),%r12 2288 leaq 288(%rsp),%rdi 2289 call __ecp_nistz256_mul_montq 2290 2291 movq 448(%rsp),%rax 2292 leaq 448(%rsp),%rbx 2293 movq 0+32(%rsp),%r9 2294 movq 8+32(%rsp),%r10 2295 leaq 0+32(%rsp),%rsi 2296 movq 16+32(%rsp),%r11 2297 movq 24+32(%rsp),%r12 2298 leaq 32(%rsp),%rdi 2299 call __ecp_nistz256_mul_montq 2300 2301 leaq 352(%rsp),%rbx 2302 leaq 96(%rsp),%rdi 2303 call __ecp_nistz256_sub_fromq 2304 2305 movq 0+64(%rsp),%rax 2306 movq 8+64(%rsp),%r14 2307 leaq 0+64(%rsp),%rsi 2308 movq 16+64(%rsp),%r15 2309 movq 24+64(%rsp),%r8 2310 leaq 128(%rsp),%rdi 2311 call __ecp_nistz256_sqr_montq 2312 2313 movq 0+96(%rsp),%rax 2314 movq 8+96(%rsp),%r14 2315 leaq 0+96(%rsp),%rsi 2316 movq 16+96(%rsp),%r15 2317 movq 24+96(%rsp),%r8 2318 leaq 192(%rsp),%rdi 2319 call __ecp_nistz256_sqr_montq 2320 2321 movq 128(%rsp),%rax 2322 leaq 128(%rsp),%rbx 2323 movq 0+64(%rsp),%r9 2324 movq 8+64(%rsp),%r10 2325 leaq 0+64(%rsp),%rsi 2326 movq 16+64(%rsp),%r11 2327 movq 24+64(%rsp),%r12 2328 leaq 160(%rsp),%rdi 2329 call __ecp_nistz256_mul_montq 2330 2331 movq 320(%rsp),%rax 2332 leaq 320(%rsp),%rbx 2333 movq 0+128(%rsp),%r9 2334 movq 8+128(%rsp),%r10 2335 leaq 0+128(%rsp),%rsi 2336 movq 16+128(%rsp),%r11 2337 movq 24+128(%rsp),%r12 2338 leaq 0(%rsp),%rdi 2339 call __ecp_nistz256_mul_montq 2340 2341 2342 2343 2344 xorq %r11,%r11 2345 addq %r12,%r12 2346 leaq 192(%rsp),%rsi 2347 adcq %r13,%r13 2348 movq %r12,%rax 2349 adcq %r8,%r8 2350 adcq %r9,%r9 2351 movq %r13,%rbp 2352 adcq $0,%r11 2353 2354 subq $-1,%r12 2355 movq %r8,%rcx 2356 sbbq %r14,%r13 2357 sbbq $0,%r8 2358 movq %r9,%r10 2359 sbbq %r15,%r9 2360 sbbq $0,%r11 2361 2362 cmovcq %rax,%r12 2363 movq 0(%rsi),%rax 2364 cmovcq %rbp,%r13 2365 movq 8(%rsi),%rbp 2366 cmovcq %rcx,%r8 2367 movq 16(%rsi),%rcx 2368 cmovcq %r10,%r9 2369 movq 24(%rsi),%r10 2370 2371 call __ecp_nistz256_subq 2372 2373 leaq 160(%rsp),%rbx 2374 leaq 224(%rsp),%rdi 2375 call __ecp_nistz256_sub_fromq 2376 2377 movq 0+0(%rsp),%rax 2378 movq 0+8(%rsp),%rbp 2379 movq 0+16(%rsp),%rcx 2380 movq 0+24(%rsp),%r10 2381 leaq 64(%rsp),%rdi 2382 2383 call __ecp_nistz256_subq 2384 2385 movq %r12,0(%rdi) 2386 movq %r13,8(%rdi) 2387 movq %r8,16(%rdi) 2388 movq %r9,24(%rdi) 2389 movq 352(%rsp),%rax 2390 leaq 352(%rsp),%rbx 2391 movq 0+160(%rsp),%r9 2392 movq 8+160(%rsp),%r10 2393 leaq 0+160(%rsp),%rsi 2394 movq 16+160(%rsp),%r11 2395 movq 24+160(%rsp),%r12 2396 leaq 32(%rsp),%rdi 2397 call __ecp_nistz256_mul_montq 2398 2399 movq 96(%rsp),%rax 2400 leaq 96(%rsp),%rbx 2401 movq 0+64(%rsp),%r9 2402 movq 8+64(%rsp),%r10 2403 leaq 0+64(%rsp),%rsi 2404 movq 16+64(%rsp),%r11 2405 movq 24+64(%rsp),%r12 2406 leaq 64(%rsp),%rdi 2407 call __ecp_nistz256_mul_montq 2408 2409 leaq 32(%rsp),%rbx 2410 leaq 256(%rsp),%rdi 2411 call __ecp_nistz256_sub_fromq 2412 2413.byte 102,72,15,126,199 2414 2415 movdqa %xmm5,%xmm0 2416 movdqa %xmm5,%xmm1 2417 pandn 288(%rsp),%xmm0 2418 movdqa %xmm5,%xmm2 2419 pandn 288+16(%rsp),%xmm1 2420 movdqa %xmm5,%xmm3 2421 pand .LONE_mont(%rip),%xmm2 2422 pand .LONE_mont+16(%rip),%xmm3 2423 por %xmm0,%xmm2 2424 por %xmm1,%xmm3 2425 2426 movdqa %xmm4,%xmm0 2427 movdqa %xmm4,%xmm1 2428 pandn %xmm2,%xmm0 2429 movdqa %xmm4,%xmm2 2430 pandn %xmm3,%xmm1 2431 movdqa %xmm4,%xmm3 2432 pand 384(%rsp),%xmm2 2433 pand 384+16(%rsp),%xmm3 2434 por %xmm0,%xmm2 2435 por %xmm1,%xmm3 2436 movdqu %xmm2,64(%rdi) 2437 movdqu %xmm3,80(%rdi) 2438 2439 movdqa %xmm5,%xmm0 2440 movdqa %xmm5,%xmm1 2441 pandn 224(%rsp),%xmm0 2442 movdqa %xmm5,%xmm2 2443 pandn 224+16(%rsp),%xmm1 2444 movdqa %xmm5,%xmm3 2445 pand 416(%rsp),%xmm2 2446 pand 416+16(%rsp),%xmm3 2447 por %xmm0,%xmm2 2448 por %xmm1,%xmm3 2449 2450 movdqa %xmm4,%xmm0 2451 movdqa %xmm4,%xmm1 2452 pandn %xmm2,%xmm0 2453 movdqa %xmm4,%xmm2 2454 pandn %xmm3,%xmm1 2455 movdqa %xmm4,%xmm3 2456 pand 320(%rsp),%xmm2 2457 pand 320+16(%rsp),%xmm3 2458 por %xmm0,%xmm2 2459 por %xmm1,%xmm3 2460 movdqu %xmm2,0(%rdi) 2461 movdqu %xmm3,16(%rdi) 2462 2463 movdqa %xmm5,%xmm0 2464 movdqa %xmm5,%xmm1 2465 pandn 256(%rsp),%xmm0 2466 movdqa %xmm5,%xmm2 2467 pandn 256+16(%rsp),%xmm1 2468 movdqa %xmm5,%xmm3 2469 pand 448(%rsp),%xmm2 2470 pand 448+16(%rsp),%xmm3 2471 por %xmm0,%xmm2 2472 por %xmm1,%xmm3 2473 2474 movdqa %xmm4,%xmm0 2475 movdqa %xmm4,%xmm1 2476 pandn %xmm2,%xmm0 2477 movdqa %xmm4,%xmm2 2478 pandn %xmm3,%xmm1 2479 movdqa %xmm4,%xmm3 2480 pand 352(%rsp),%xmm2 2481 pand 352+16(%rsp),%xmm3 2482 por %xmm0,%xmm2 2483 por %xmm1,%xmm3 2484 movdqu %xmm2,32(%rdi) 2485 movdqu %xmm3,48(%rdi) 2486 2487 addq $480+8,%rsp 2488 popq %r15 2489 popq %r14 2490 popq %r13 2491 popq %r12 2492 popq %rbx 2493 popq %rbp 2494 .byte 0xf3,0xc3 2495.size ecp_nistz256_point_add_affine,.-ecp_nistz256_point_add_affine 2496.type __ecp_nistz256_add_tox,@function 2497.align 32 2498__ecp_nistz256_add_tox: 2499 xorq %r11,%r11 2500 adcq 0(%rbx),%r12 2501 adcq 8(%rbx),%r13 2502 movq %r12,%rax 2503 adcq 16(%rbx),%r8 2504 adcq 24(%rbx),%r9 2505 movq %r13,%rbp 2506 adcq $0,%r11 2507 2508 xorq %r10,%r10 2509 sbbq $-1,%r12 2510 movq %r8,%rcx 2511 sbbq %r14,%r13 2512 sbbq $0,%r8 2513 movq %r9,%r10 2514 sbbq %r15,%r9 2515 sbbq $0,%r11 2516 2517 cmovcq %rax,%r12 2518 cmovcq %rbp,%r13 2519 movq %r12,0(%rdi) 2520 cmovcq %rcx,%r8 2521 movq %r13,8(%rdi) 2522 cmovcq %r10,%r9 2523 movq %r8,16(%rdi) 2524 movq %r9,24(%rdi) 2525 2526 .byte 0xf3,0xc3 2527.size __ecp_nistz256_add_tox,.-__ecp_nistz256_add_tox 2528 2529.type __ecp_nistz256_sub_fromx,@function 2530.align 32 2531__ecp_nistz256_sub_fromx: 2532 xorq %r11,%r11 2533 sbbq 0(%rbx),%r12 2534 sbbq 8(%rbx),%r13 2535 movq %r12,%rax 2536 sbbq 16(%rbx),%r8 2537 sbbq 24(%rbx),%r9 2538 movq %r13,%rbp 2539 sbbq $0,%r11 2540 2541 xorq %r10,%r10 2542 adcq $-1,%r12 2543 movq %r8,%rcx 2544 adcq %r14,%r13 2545 adcq $0,%r8 2546 movq %r9,%r10 2547 adcq %r15,%r9 2548 2549 btq $0,%r11 2550 cmovncq %rax,%r12 2551 cmovncq %rbp,%r13 2552 movq %r12,0(%rdi) 2553 cmovncq %rcx,%r8 2554 movq %r13,8(%rdi) 2555 cmovncq %r10,%r9 2556 movq %r8,16(%rdi) 2557 movq %r9,24(%rdi) 2558 2559 .byte 0xf3,0xc3 2560.size __ecp_nistz256_sub_fromx,.-__ecp_nistz256_sub_fromx 2561 2562.type __ecp_nistz256_subx,@function 2563.align 32 2564__ecp_nistz256_subx: 2565 xorq %r11,%r11 2566 sbbq %r12,%rax 2567 sbbq %r13,%rbp 2568 movq %rax,%r12 2569 sbbq %r8,%rcx 2570 sbbq %r9,%r10 2571 movq %rbp,%r13 2572 sbbq $0,%r11 2573 2574 xorq %r9,%r9 2575 adcq $-1,%rax 2576 movq %rcx,%r8 2577 adcq %r14,%rbp 2578 adcq $0,%rcx 2579 movq %r10,%r9 2580 adcq %r15,%r10 2581 2582 btq $0,%r11 2583 cmovcq %rax,%r12 2584 cmovcq %rbp,%r13 2585 cmovcq %rcx,%r8 2586 cmovcq %r10,%r9 2587 2588 .byte 0xf3,0xc3 2589.size __ecp_nistz256_subx,.-__ecp_nistz256_subx 2590 2591.type __ecp_nistz256_mul_by_2x,@function 2592.align 32 2593__ecp_nistz256_mul_by_2x: 2594 xorq %r11,%r11 2595 adcq %r12,%r12 2596 adcq %r13,%r13 2597 movq %r12,%rax 2598 adcq %r8,%r8 2599 adcq %r9,%r9 2600 movq %r13,%rbp 2601 adcq $0,%r11 2602 2603 xorq %r10,%r10 2604 sbbq $-1,%r12 2605 movq %r8,%rcx 2606 sbbq %r14,%r13 2607 sbbq $0,%r8 2608 movq %r9,%r10 2609 sbbq %r15,%r9 2610 sbbq $0,%r11 2611 2612 cmovcq %rax,%r12 2613 cmovcq %rbp,%r13 2614 movq %r12,0(%rdi) 2615 cmovcq %rcx,%r8 2616 movq %r13,8(%rdi) 2617 cmovcq %r10,%r9 2618 movq %r8,16(%rdi) 2619 movq %r9,24(%rdi) 2620 2621 .byte 0xf3,0xc3 2622.size __ecp_nistz256_mul_by_2x,.-__ecp_nistz256_mul_by_2x 2623.type ecp_nistz256_point_doublex,@function 2624.align 32 2625ecp_nistz256_point_doublex: 2626.Lpoint_doublex: 2627 pushq %rbp 2628 pushq %rbx 2629 pushq %r12 2630 pushq %r13 2631 pushq %r14 2632 pushq %r15 2633 subq $160+8,%rsp 2634 2635.Lpoint_double_shortcutx: 2636 movdqu 0(%rsi),%xmm0 2637 movq %rsi,%rbx 2638 movdqu 16(%rsi),%xmm1 2639 movq 32+0(%rsi),%r12 2640 movq 32+8(%rsi),%r13 2641 movq 32+16(%rsi),%r8 2642 movq 32+24(%rsi),%r9 2643 movq .Lpoly+8(%rip),%r14 2644 movq .Lpoly+24(%rip),%r15 2645 movdqa %xmm0,96(%rsp) 2646 movdqa %xmm1,96+16(%rsp) 2647 leaq 32(%rdi),%r10 2648 leaq 64(%rdi),%r11 2649.byte 102,72,15,110,199 2650.byte 102,73,15,110,202 2651.byte 102,73,15,110,211 2652 2653 leaq 0(%rsp),%rdi 2654 call __ecp_nistz256_mul_by_2x 2655 2656 movq 64+0(%rsi),%rdx 2657 movq 64+8(%rsi),%r14 2658 movq 64+16(%rsi),%r15 2659 movq 64+24(%rsi),%r8 2660 leaq 64-128(%rsi),%rsi 2661 leaq 64(%rsp),%rdi 2662 call __ecp_nistz256_sqr_montx 2663 2664 movq 0+0(%rsp),%rdx 2665 movq 8+0(%rsp),%r14 2666 leaq -128+0(%rsp),%rsi 2667 movq 16+0(%rsp),%r15 2668 movq 24+0(%rsp),%r8 2669 leaq 0(%rsp),%rdi 2670 call __ecp_nistz256_sqr_montx 2671 2672 movq 32(%rbx),%rdx 2673 movq 64+0(%rbx),%r9 2674 movq 64+8(%rbx),%r10 2675 movq 64+16(%rbx),%r11 2676 movq 64+24(%rbx),%r12 2677 leaq 64-128(%rbx),%rsi 2678 leaq 32(%rbx),%rbx 2679.byte 102,72,15,126,215 2680 call __ecp_nistz256_mul_montx 2681 call __ecp_nistz256_mul_by_2x 2682 2683 movq 96+0(%rsp),%r12 2684 movq 96+8(%rsp),%r13 2685 leaq 64(%rsp),%rbx 2686 movq 96+16(%rsp),%r8 2687 movq 96+24(%rsp),%r9 2688 leaq 32(%rsp),%rdi 2689 call __ecp_nistz256_add_tox 2690 2691 movq 96+0(%rsp),%r12 2692 movq 96+8(%rsp),%r13 2693 leaq 64(%rsp),%rbx 2694 movq 96+16(%rsp),%r8 2695 movq 96+24(%rsp),%r9 2696 leaq 64(%rsp),%rdi 2697 call __ecp_nistz256_sub_fromx 2698 2699 movq 0+0(%rsp),%rdx 2700 movq 8+0(%rsp),%r14 2701 leaq -128+0(%rsp),%rsi 2702 movq 16+0(%rsp),%r15 2703 movq 24+0(%rsp),%r8 2704.byte 102,72,15,126,207 2705 call __ecp_nistz256_sqr_montx 2706 xorq %r9,%r9 2707 movq %r12,%rax 2708 addq $-1,%r12 2709 movq %r13,%r10 2710 adcq %rsi,%r13 2711 movq %r14,%rcx 2712 adcq $0,%r14 2713 movq %r15,%r8 2714 adcq %rbp,%r15 2715 adcq $0,%r9 2716 xorq %rsi,%rsi 2717 testq $1,%rax 2718 2719 cmovzq %rax,%r12 2720 cmovzq %r10,%r13 2721 cmovzq %rcx,%r14 2722 cmovzq %r8,%r15 2723 cmovzq %rsi,%r9 2724 2725 movq %r13,%rax 2726 shrq $1,%r12 2727 shlq $63,%rax 2728 movq %r14,%r10 2729 shrq $1,%r13 2730 orq %rax,%r12 2731 shlq $63,%r10 2732 movq %r15,%rcx 2733 shrq $1,%r14 2734 orq %r10,%r13 2735 shlq $63,%rcx 2736 movq %r12,0(%rdi) 2737 shrq $1,%r15 2738 movq %r13,8(%rdi) 2739 shlq $63,%r9 2740 orq %rcx,%r14 2741 orq %r9,%r15 2742 movq %r14,16(%rdi) 2743 movq %r15,24(%rdi) 2744 movq 64(%rsp),%rdx 2745 leaq 64(%rsp),%rbx 2746 movq 0+32(%rsp),%r9 2747 movq 8+32(%rsp),%r10 2748 leaq -128+32(%rsp),%rsi 2749 movq 16+32(%rsp),%r11 2750 movq 24+32(%rsp),%r12 2751 leaq 32(%rsp),%rdi 2752 call __ecp_nistz256_mul_montx 2753 2754 leaq 128(%rsp),%rdi 2755 call __ecp_nistz256_mul_by_2x 2756 2757 leaq 32(%rsp),%rbx 2758 leaq 32(%rsp),%rdi 2759 call __ecp_nistz256_add_tox 2760 2761 movq 96(%rsp),%rdx 2762 leaq 96(%rsp),%rbx 2763 movq 0+0(%rsp),%r9 2764 movq 8+0(%rsp),%r10 2765 leaq -128+0(%rsp),%rsi 2766 movq 16+0(%rsp),%r11 2767 movq 24+0(%rsp),%r12 2768 leaq 0(%rsp),%rdi 2769 call __ecp_nistz256_mul_montx 2770 2771 leaq 128(%rsp),%rdi 2772 call __ecp_nistz256_mul_by_2x 2773 2774 movq 0+32(%rsp),%rdx 2775 movq 8+32(%rsp),%r14 2776 leaq -128+32(%rsp),%rsi 2777 movq 16+32(%rsp),%r15 2778 movq 24+32(%rsp),%r8 2779.byte 102,72,15,126,199 2780 call __ecp_nistz256_sqr_montx 2781 2782 leaq 128(%rsp),%rbx 2783 movq %r14,%r8 2784 movq %r15,%r9 2785 movq %rsi,%r14 2786 movq %rbp,%r15 2787 call __ecp_nistz256_sub_fromx 2788 2789 movq 0+0(%rsp),%rax 2790 movq 0+8(%rsp),%rbp 2791 movq 0+16(%rsp),%rcx 2792 movq 0+24(%rsp),%r10 2793 leaq 0(%rsp),%rdi 2794 call __ecp_nistz256_subx 2795 2796 movq 32(%rsp),%rdx 2797 leaq 32(%rsp),%rbx 2798 movq %r12,%r14 2799 xorl %ecx,%ecx 2800 movq %r12,0+0(%rsp) 2801 movq %r13,%r10 2802 movq %r13,0+8(%rsp) 2803 cmovzq %r8,%r11 2804 movq %r8,0+16(%rsp) 2805 leaq 0-128(%rsp),%rsi 2806 cmovzq %r9,%r12 2807 movq %r9,0+24(%rsp) 2808 movq %r14,%r9 2809 leaq 0(%rsp),%rdi 2810 call __ecp_nistz256_mul_montx 2811 2812.byte 102,72,15,126,203 2813.byte 102,72,15,126,207 2814 call __ecp_nistz256_sub_fromx 2815 2816 addq $160+8,%rsp 2817 popq %r15 2818 popq %r14 2819 popq %r13 2820 popq %r12 2821 popq %rbx 2822 popq %rbp 2823 .byte 0xf3,0xc3 2824.size ecp_nistz256_point_doublex,.-ecp_nistz256_point_doublex 2825.type ecp_nistz256_point_addx,@function 2826.align 32 2827ecp_nistz256_point_addx: 2828.Lpoint_addx: 2829 pushq %rbp 2830 pushq %rbx 2831 pushq %r12 2832 pushq %r13 2833 pushq %r14 2834 pushq %r15 2835 subq $576+8,%rsp 2836 2837 movdqu 0(%rsi),%xmm0 2838 movdqu 16(%rsi),%xmm1 2839 movdqu 32(%rsi),%xmm2 2840 movdqu 48(%rsi),%xmm3 2841 movdqu 64(%rsi),%xmm4 2842 movdqu 80(%rsi),%xmm5 2843 movq %rsi,%rbx 2844 movq %rdx,%rsi 2845 movdqa %xmm0,384(%rsp) 2846 movdqa %xmm1,384+16(%rsp) 2847 movdqa %xmm2,416(%rsp) 2848 movdqa %xmm3,416+16(%rsp) 2849 movdqa %xmm4,448(%rsp) 2850 movdqa %xmm5,448+16(%rsp) 2851 por %xmm4,%xmm5 2852 2853 movdqu 0(%rsi),%xmm0 2854 pshufd $0xb1,%xmm5,%xmm3 2855 movdqu 16(%rsi),%xmm1 2856 movdqu 32(%rsi),%xmm2 2857 por %xmm3,%xmm5 2858 movdqu 48(%rsi),%xmm3 2859 movq 64+0(%rsi),%rdx 2860 movq 64+8(%rsi),%r14 2861 movq 64+16(%rsi),%r15 2862 movq 64+24(%rsi),%r8 2863 movdqa %xmm0,480(%rsp) 2864 pshufd $0x1e,%xmm5,%xmm4 2865 movdqa %xmm1,480+16(%rsp) 2866 movdqu 64(%rsi),%xmm0 2867 movdqu 80(%rsi),%xmm1 2868 movdqa %xmm2,512(%rsp) 2869 movdqa %xmm3,512+16(%rsp) 2870 por %xmm4,%xmm5 2871 pxor %xmm4,%xmm4 2872 por %xmm0,%xmm1 2873.byte 102,72,15,110,199 2874 2875 leaq 64-128(%rsi),%rsi 2876 movq %rdx,544+0(%rsp) 2877 movq %r14,544+8(%rsp) 2878 movq %r15,544+16(%rsp) 2879 movq %r8,544+24(%rsp) 2880 leaq 96(%rsp),%rdi 2881 call __ecp_nistz256_sqr_montx 2882 2883 pcmpeqd %xmm4,%xmm5 2884 pshufd $0xb1,%xmm1,%xmm4 2885 por %xmm1,%xmm4 2886 pshufd $0,%xmm5,%xmm5 2887 pshufd $0x1e,%xmm4,%xmm3 2888 por %xmm3,%xmm4 2889 pxor %xmm3,%xmm3 2890 pcmpeqd %xmm3,%xmm4 2891 pshufd $0,%xmm4,%xmm4 2892 movq 64+0(%rbx),%rdx 2893 movq 64+8(%rbx),%r14 2894 movq 64+16(%rbx),%r15 2895 movq 64+24(%rbx),%r8 2896.byte 102,72,15,110,203 2897 2898 leaq 64-128(%rbx),%rsi 2899 leaq 32(%rsp),%rdi 2900 call __ecp_nistz256_sqr_montx 2901 2902 movq 544(%rsp),%rdx 2903 leaq 544(%rsp),%rbx 2904 movq 0+96(%rsp),%r9 2905 movq 8+96(%rsp),%r10 2906 leaq -128+96(%rsp),%rsi 2907 movq 16+96(%rsp),%r11 2908 movq 24+96(%rsp),%r12 2909 leaq 224(%rsp),%rdi 2910 call __ecp_nistz256_mul_montx 2911 2912 movq 448(%rsp),%rdx 2913 leaq 448(%rsp),%rbx 2914 movq 0+32(%rsp),%r9 2915 movq 8+32(%rsp),%r10 2916 leaq -128+32(%rsp),%rsi 2917 movq 16+32(%rsp),%r11 2918 movq 24+32(%rsp),%r12 2919 leaq 256(%rsp),%rdi 2920 call __ecp_nistz256_mul_montx 2921 2922 movq 416(%rsp),%rdx 2923 leaq 416(%rsp),%rbx 2924 movq 0+224(%rsp),%r9 2925 movq 8+224(%rsp),%r10 2926 leaq -128+224(%rsp),%rsi 2927 movq 16+224(%rsp),%r11 2928 movq 24+224(%rsp),%r12 2929 leaq 224(%rsp),%rdi 2930 call __ecp_nistz256_mul_montx 2931 2932 movq 512(%rsp),%rdx 2933 leaq 512(%rsp),%rbx 2934 movq 0+256(%rsp),%r9 2935 movq 8+256(%rsp),%r10 2936 leaq -128+256(%rsp),%rsi 2937 movq 16+256(%rsp),%r11 2938 movq 24+256(%rsp),%r12 2939 leaq 256(%rsp),%rdi 2940 call __ecp_nistz256_mul_montx 2941 2942 leaq 224(%rsp),%rbx 2943 leaq 64(%rsp),%rdi 2944 call __ecp_nistz256_sub_fromx 2945 2946 orq %r13,%r12 2947 movdqa %xmm4,%xmm2 2948 orq %r8,%r12 2949 orq %r9,%r12 2950 por %xmm5,%xmm2 2951.byte 102,73,15,110,220 2952 2953 movq 384(%rsp),%rdx 2954 leaq 384(%rsp),%rbx 2955 movq 0+96(%rsp),%r9 2956 movq 8+96(%rsp),%r10 2957 leaq -128+96(%rsp),%rsi 2958 movq 16+96(%rsp),%r11 2959 movq 24+96(%rsp),%r12 2960 leaq 160(%rsp),%rdi 2961 call __ecp_nistz256_mul_montx 2962 2963 movq 480(%rsp),%rdx 2964 leaq 480(%rsp),%rbx 2965 movq 0+32(%rsp),%r9 2966 movq 8+32(%rsp),%r10 2967 leaq -128+32(%rsp),%rsi 2968 movq 16+32(%rsp),%r11 2969 movq 24+32(%rsp),%r12 2970 leaq 192(%rsp),%rdi 2971 call __ecp_nistz256_mul_montx 2972 2973 leaq 160(%rsp),%rbx 2974 leaq 0(%rsp),%rdi 2975 call __ecp_nistz256_sub_fromx 2976 2977 orq %r13,%r12 2978 orq %r8,%r12 2979 orq %r9,%r12 2980 2981.byte 0x3e 2982 jnz .Ladd_proceedx 2983.byte 102,73,15,126,208 2984.byte 102,73,15,126,217 2985 testq %r8,%r8 2986 jnz .Ladd_proceedx 2987 testq %r9,%r9 2988 jz .Ladd_doublex 2989 2990.byte 102,72,15,126,199 2991 pxor %xmm0,%xmm0 2992 movdqu %xmm0,0(%rdi) 2993 movdqu %xmm0,16(%rdi) 2994 movdqu %xmm0,32(%rdi) 2995 movdqu %xmm0,48(%rdi) 2996 movdqu %xmm0,64(%rdi) 2997 movdqu %xmm0,80(%rdi) 2998 jmp .Ladd_donex 2999 3000.align 32 3001.Ladd_doublex: 3002.byte 102,72,15,126,206 3003.byte 102,72,15,126,199 3004 addq $416,%rsp 3005 jmp .Lpoint_double_shortcutx 3006 3007.align 32 3008.Ladd_proceedx: 3009 movq 0+64(%rsp),%rdx 3010 movq 8+64(%rsp),%r14 3011 leaq -128+64(%rsp),%rsi 3012 movq 16+64(%rsp),%r15 3013 movq 24+64(%rsp),%r8 3014 leaq 96(%rsp),%rdi 3015 call __ecp_nistz256_sqr_montx 3016 3017 movq 448(%rsp),%rdx 3018 leaq 448(%rsp),%rbx 3019 movq 0+0(%rsp),%r9 3020 movq 8+0(%rsp),%r10 3021 leaq -128+0(%rsp),%rsi 3022 movq 16+0(%rsp),%r11 3023 movq 24+0(%rsp),%r12 3024 leaq 352(%rsp),%rdi 3025 call __ecp_nistz256_mul_montx 3026 3027 movq 0+0(%rsp),%rdx 3028 movq 8+0(%rsp),%r14 3029 leaq -128+0(%rsp),%rsi 3030 movq 16+0(%rsp),%r15 3031 movq 24+0(%rsp),%r8 3032 leaq 32(%rsp),%rdi 3033 call __ecp_nistz256_sqr_montx 3034 3035 movq 544(%rsp),%rdx 3036 leaq 544(%rsp),%rbx 3037 movq 0+352(%rsp),%r9 3038 movq 8+352(%rsp),%r10 3039 leaq -128+352(%rsp),%rsi 3040 movq 16+352(%rsp),%r11 3041 movq 24+352(%rsp),%r12 3042 leaq 352(%rsp),%rdi 3043 call __ecp_nistz256_mul_montx 3044 3045 movq 0(%rsp),%rdx 3046 leaq 0(%rsp),%rbx 3047 movq 0+32(%rsp),%r9 3048 movq 8+32(%rsp),%r10 3049 leaq -128+32(%rsp),%rsi 3050 movq 16+32(%rsp),%r11 3051 movq 24+32(%rsp),%r12 3052 leaq 128(%rsp),%rdi 3053 call __ecp_nistz256_mul_montx 3054 3055 movq 160(%rsp),%rdx 3056 leaq 160(%rsp),%rbx 3057 movq 0+32(%rsp),%r9 3058 movq 8+32(%rsp),%r10 3059 leaq -128+32(%rsp),%rsi 3060 movq 16+32(%rsp),%r11 3061 movq 24+32(%rsp),%r12 3062 leaq 192(%rsp),%rdi 3063 call __ecp_nistz256_mul_montx 3064 3065 3066 3067 3068 xorq %r11,%r11 3069 addq %r12,%r12 3070 leaq 96(%rsp),%rsi 3071 adcq %r13,%r13 3072 movq %r12,%rax 3073 adcq %r8,%r8 3074 adcq %r9,%r9 3075 movq %r13,%rbp 3076 adcq $0,%r11 3077 3078 subq $-1,%r12 3079 movq %r8,%rcx 3080 sbbq %r14,%r13 3081 sbbq $0,%r8 3082 movq %r9,%r10 3083 sbbq %r15,%r9 3084 sbbq $0,%r11 3085 3086 cmovcq %rax,%r12 3087 movq 0(%rsi),%rax 3088 cmovcq %rbp,%r13 3089 movq 8(%rsi),%rbp 3090 cmovcq %rcx,%r8 3091 movq 16(%rsi),%rcx 3092 cmovcq %r10,%r9 3093 movq 24(%rsi),%r10 3094 3095 call __ecp_nistz256_subx 3096 3097 leaq 128(%rsp),%rbx 3098 leaq 288(%rsp),%rdi 3099 call __ecp_nistz256_sub_fromx 3100 3101 movq 192+0(%rsp),%rax 3102 movq 192+8(%rsp),%rbp 3103 movq 192+16(%rsp),%rcx 3104 movq 192+24(%rsp),%r10 3105 leaq 320(%rsp),%rdi 3106 3107 call __ecp_nistz256_subx 3108 3109 movq %r12,0(%rdi) 3110 movq %r13,8(%rdi) 3111 movq %r8,16(%rdi) 3112 movq %r9,24(%rdi) 3113 movq 128(%rsp),%rdx 3114 leaq 128(%rsp),%rbx 3115 movq 0+224(%rsp),%r9 3116 movq 8+224(%rsp),%r10 3117 leaq -128+224(%rsp),%rsi 3118 movq 16+224(%rsp),%r11 3119 movq 24+224(%rsp),%r12 3120 leaq 256(%rsp),%rdi 3121 call __ecp_nistz256_mul_montx 3122 3123 movq 320(%rsp),%rdx 3124 leaq 320(%rsp),%rbx 3125 movq 0+64(%rsp),%r9 3126 movq 8+64(%rsp),%r10 3127 leaq -128+64(%rsp),%rsi 3128 movq 16+64(%rsp),%r11 3129 movq 24+64(%rsp),%r12 3130 leaq 320(%rsp),%rdi 3131 call __ecp_nistz256_mul_montx 3132 3133 leaq 256(%rsp),%rbx 3134 leaq 320(%rsp),%rdi 3135 call __ecp_nistz256_sub_fromx 3136 3137.byte 102,72,15,126,199 3138 3139 movdqa %xmm5,%xmm0 3140 movdqa %xmm5,%xmm1 3141 pandn 352(%rsp),%xmm0 3142 movdqa %xmm5,%xmm2 3143 pandn 352+16(%rsp),%xmm1 3144 movdqa %xmm5,%xmm3 3145 pand 544(%rsp),%xmm2 3146 pand 544+16(%rsp),%xmm3 3147 por %xmm0,%xmm2 3148 por %xmm1,%xmm3 3149 3150 movdqa %xmm4,%xmm0 3151 movdqa %xmm4,%xmm1 3152 pandn %xmm2,%xmm0 3153 movdqa %xmm4,%xmm2 3154 pandn %xmm3,%xmm1 3155 movdqa %xmm4,%xmm3 3156 pand 448(%rsp),%xmm2 3157 pand 448+16(%rsp),%xmm3 3158 por %xmm0,%xmm2 3159 por %xmm1,%xmm3 3160 movdqu %xmm2,64(%rdi) 3161 movdqu %xmm3,80(%rdi) 3162 3163 movdqa %xmm5,%xmm0 3164 movdqa %xmm5,%xmm1 3165 pandn 288(%rsp),%xmm0 3166 movdqa %xmm5,%xmm2 3167 pandn 288+16(%rsp),%xmm1 3168 movdqa %xmm5,%xmm3 3169 pand 480(%rsp),%xmm2 3170 pand 480+16(%rsp),%xmm3 3171 por %xmm0,%xmm2 3172 por %xmm1,%xmm3 3173 3174 movdqa %xmm4,%xmm0 3175 movdqa %xmm4,%xmm1 3176 pandn %xmm2,%xmm0 3177 movdqa %xmm4,%xmm2 3178 pandn %xmm3,%xmm1 3179 movdqa %xmm4,%xmm3 3180 pand 384(%rsp),%xmm2 3181 pand 384+16(%rsp),%xmm3 3182 por %xmm0,%xmm2 3183 por %xmm1,%xmm3 3184 movdqu %xmm2,0(%rdi) 3185 movdqu %xmm3,16(%rdi) 3186 3187 movdqa %xmm5,%xmm0 3188 movdqa %xmm5,%xmm1 3189 pandn 320(%rsp),%xmm0 3190 movdqa %xmm5,%xmm2 3191 pandn 320+16(%rsp),%xmm1 3192 movdqa %xmm5,%xmm3 3193 pand 512(%rsp),%xmm2 3194 pand 512+16(%rsp),%xmm3 3195 por %xmm0,%xmm2 3196 por %xmm1,%xmm3 3197 3198 movdqa %xmm4,%xmm0 3199 movdqa %xmm4,%xmm1 3200 pandn %xmm2,%xmm0 3201 movdqa %xmm4,%xmm2 3202 pandn %xmm3,%xmm1 3203 movdqa %xmm4,%xmm3 3204 pand 416(%rsp),%xmm2 3205 pand 416+16(%rsp),%xmm3 3206 por %xmm0,%xmm2 3207 por %xmm1,%xmm3 3208 movdqu %xmm2,32(%rdi) 3209 movdqu %xmm3,48(%rdi) 3210 3211.Ladd_donex: 3212 addq $576+8,%rsp 3213 popq %r15 3214 popq %r14 3215 popq %r13 3216 popq %r12 3217 popq %rbx 3218 popq %rbp 3219 .byte 0xf3,0xc3 3220.size ecp_nistz256_point_addx,.-ecp_nistz256_point_addx 3221.type ecp_nistz256_point_add_affinex,@function 3222.align 32 3223ecp_nistz256_point_add_affinex: 3224.Lpoint_add_affinex: 3225 pushq %rbp 3226 pushq %rbx 3227 pushq %r12 3228 pushq %r13 3229 pushq %r14 3230 pushq %r15 3231 subq $480+8,%rsp 3232 3233 movdqu 0(%rsi),%xmm0 3234 movq %rdx,%rbx 3235 movdqu 16(%rsi),%xmm1 3236 movdqu 32(%rsi),%xmm2 3237 movdqu 48(%rsi),%xmm3 3238 movdqu 64(%rsi),%xmm4 3239 movdqu 80(%rsi),%xmm5 3240 movq 64+0(%rsi),%rdx 3241 movq 64+8(%rsi),%r14 3242 movq 64+16(%rsi),%r15 3243 movq 64+24(%rsi),%r8 3244 movdqa %xmm0,320(%rsp) 3245 movdqa %xmm1,320+16(%rsp) 3246 movdqa %xmm2,352(%rsp) 3247 movdqa %xmm3,352+16(%rsp) 3248 movdqa %xmm4,384(%rsp) 3249 movdqa %xmm5,384+16(%rsp) 3250 por %xmm4,%xmm5 3251 3252 movdqu 0(%rbx),%xmm0 3253 pshufd $0xb1,%xmm5,%xmm3 3254 movdqu 16(%rbx),%xmm1 3255 movdqu 32(%rbx),%xmm2 3256 por %xmm3,%xmm5 3257 movdqu 48(%rbx),%xmm3 3258 movdqa %xmm0,416(%rsp) 3259 pshufd $0x1e,%xmm5,%xmm4 3260 movdqa %xmm1,416+16(%rsp) 3261 por %xmm0,%xmm1 3262.byte 102,72,15,110,199 3263 movdqa %xmm2,448(%rsp) 3264 movdqa %xmm3,448+16(%rsp) 3265 por %xmm2,%xmm3 3266 por %xmm4,%xmm5 3267 pxor %xmm4,%xmm4 3268 por %xmm1,%xmm3 3269 3270 leaq 64-128(%rsi),%rsi 3271 leaq 32(%rsp),%rdi 3272 call __ecp_nistz256_sqr_montx 3273 3274 pcmpeqd %xmm4,%xmm5 3275 pshufd $0xb1,%xmm3,%xmm4 3276 movq 0(%rbx),%rdx 3277 3278 movq %r12,%r9 3279 por %xmm3,%xmm4 3280 pshufd $0,%xmm5,%xmm5 3281 pshufd $0x1e,%xmm4,%xmm3 3282 movq %r13,%r10 3283 por %xmm3,%xmm4 3284 pxor %xmm3,%xmm3 3285 movq %r14,%r11 3286 pcmpeqd %xmm3,%xmm4 3287 pshufd $0,%xmm4,%xmm4 3288 3289 leaq 32-128(%rsp),%rsi 3290 movq %r15,%r12 3291 leaq 0(%rsp),%rdi 3292 call __ecp_nistz256_mul_montx 3293 3294 leaq 320(%rsp),%rbx 3295 leaq 64(%rsp),%rdi 3296 call __ecp_nistz256_sub_fromx 3297 3298 movq 384(%rsp),%rdx 3299 leaq 384(%rsp),%rbx 3300 movq 0+32(%rsp),%r9 3301 movq 8+32(%rsp),%r10 3302 leaq -128+32(%rsp),%rsi 3303 movq 16+32(%rsp),%r11 3304 movq 24+32(%rsp),%r12 3305 leaq 32(%rsp),%rdi 3306 call __ecp_nistz256_mul_montx 3307 3308 movq 384(%rsp),%rdx 3309 leaq 384(%rsp),%rbx 3310 movq 0+64(%rsp),%r9 3311 movq 8+64(%rsp),%r10 3312 leaq -128+64(%rsp),%rsi 3313 movq 16+64(%rsp),%r11 3314 movq 24+64(%rsp),%r12 3315 leaq 288(%rsp),%rdi 3316 call __ecp_nistz256_mul_montx 3317 3318 movq 448(%rsp),%rdx 3319 leaq 448(%rsp),%rbx 3320 movq 0+32(%rsp),%r9 3321 movq 8+32(%rsp),%r10 3322 leaq -128+32(%rsp),%rsi 3323 movq 16+32(%rsp),%r11 3324 movq 24+32(%rsp),%r12 3325 leaq 32(%rsp),%rdi 3326 call __ecp_nistz256_mul_montx 3327 3328 leaq 352(%rsp),%rbx 3329 leaq 96(%rsp),%rdi 3330 call __ecp_nistz256_sub_fromx 3331 3332 movq 0+64(%rsp),%rdx 3333 movq 8+64(%rsp),%r14 3334 leaq -128+64(%rsp),%rsi 3335 movq 16+64(%rsp),%r15 3336 movq 24+64(%rsp),%r8 3337 leaq 128(%rsp),%rdi 3338 call __ecp_nistz256_sqr_montx 3339 3340 movq 0+96(%rsp),%rdx 3341 movq 8+96(%rsp),%r14 3342 leaq -128+96(%rsp),%rsi 3343 movq 16+96(%rsp),%r15 3344 movq 24+96(%rsp),%r8 3345 leaq 192(%rsp),%rdi 3346 call __ecp_nistz256_sqr_montx 3347 3348 movq 128(%rsp),%rdx 3349 leaq 128(%rsp),%rbx 3350 movq 0+64(%rsp),%r9 3351 movq 8+64(%rsp),%r10 3352 leaq -128+64(%rsp),%rsi 3353 movq 16+64(%rsp),%r11 3354 movq 24+64(%rsp),%r12 3355 leaq 160(%rsp),%rdi 3356 call __ecp_nistz256_mul_montx 3357 3358 movq 320(%rsp),%rdx 3359 leaq 320(%rsp),%rbx 3360 movq 0+128(%rsp),%r9 3361 movq 8+128(%rsp),%r10 3362 leaq -128+128(%rsp),%rsi 3363 movq 16+128(%rsp),%r11 3364 movq 24+128(%rsp),%r12 3365 leaq 0(%rsp),%rdi 3366 call __ecp_nistz256_mul_montx 3367 3368 3369 3370 3371 xorq %r11,%r11 3372 addq %r12,%r12 3373 leaq 192(%rsp),%rsi 3374 adcq %r13,%r13 3375 movq %r12,%rax 3376 adcq %r8,%r8 3377 adcq %r9,%r9 3378 movq %r13,%rbp 3379 adcq $0,%r11 3380 3381 subq $-1,%r12 3382 movq %r8,%rcx 3383 sbbq %r14,%r13 3384 sbbq $0,%r8 3385 movq %r9,%r10 3386 sbbq %r15,%r9 3387 sbbq $0,%r11 3388 3389 cmovcq %rax,%r12 3390 movq 0(%rsi),%rax 3391 cmovcq %rbp,%r13 3392 movq 8(%rsi),%rbp 3393 cmovcq %rcx,%r8 3394 movq 16(%rsi),%rcx 3395 cmovcq %r10,%r9 3396 movq 24(%rsi),%r10 3397 3398 call __ecp_nistz256_subx 3399 3400 leaq 160(%rsp),%rbx 3401 leaq 224(%rsp),%rdi 3402 call __ecp_nistz256_sub_fromx 3403 3404 movq 0+0(%rsp),%rax 3405 movq 0+8(%rsp),%rbp 3406 movq 0+16(%rsp),%rcx 3407 movq 0+24(%rsp),%r10 3408 leaq 64(%rsp),%rdi 3409 3410 call __ecp_nistz256_subx 3411 3412 movq %r12,0(%rdi) 3413 movq %r13,8(%rdi) 3414 movq %r8,16(%rdi) 3415 movq %r9,24(%rdi) 3416 movq 352(%rsp),%rdx 3417 leaq 352(%rsp),%rbx 3418 movq 0+160(%rsp),%r9 3419 movq 8+160(%rsp),%r10 3420 leaq -128+160(%rsp),%rsi 3421 movq 16+160(%rsp),%r11 3422 movq 24+160(%rsp),%r12 3423 leaq 32(%rsp),%rdi 3424 call __ecp_nistz256_mul_montx 3425 3426 movq 96(%rsp),%rdx 3427 leaq 96(%rsp),%rbx 3428 movq 0+64(%rsp),%r9 3429 movq 8+64(%rsp),%r10 3430 leaq -128+64(%rsp),%rsi 3431 movq 16+64(%rsp),%r11 3432 movq 24+64(%rsp),%r12 3433 leaq 64(%rsp),%rdi 3434 call __ecp_nistz256_mul_montx 3435 3436 leaq 32(%rsp),%rbx 3437 leaq 256(%rsp),%rdi 3438 call __ecp_nistz256_sub_fromx 3439 3440.byte 102,72,15,126,199 3441 3442 movdqa %xmm5,%xmm0 3443 movdqa %xmm5,%xmm1 3444 pandn 288(%rsp),%xmm0 3445 movdqa %xmm5,%xmm2 3446 pandn 288+16(%rsp),%xmm1 3447 movdqa %xmm5,%xmm3 3448 pand .LONE_mont(%rip),%xmm2 3449 pand .LONE_mont+16(%rip),%xmm3 3450 por %xmm0,%xmm2 3451 por %xmm1,%xmm3 3452 3453 movdqa %xmm4,%xmm0 3454 movdqa %xmm4,%xmm1 3455 pandn %xmm2,%xmm0 3456 movdqa %xmm4,%xmm2 3457 pandn %xmm3,%xmm1 3458 movdqa %xmm4,%xmm3 3459 pand 384(%rsp),%xmm2 3460 pand 384+16(%rsp),%xmm3 3461 por %xmm0,%xmm2 3462 por %xmm1,%xmm3 3463 movdqu %xmm2,64(%rdi) 3464 movdqu %xmm3,80(%rdi) 3465 3466 movdqa %xmm5,%xmm0 3467 movdqa %xmm5,%xmm1 3468 pandn 224(%rsp),%xmm0 3469 movdqa %xmm5,%xmm2 3470 pandn 224+16(%rsp),%xmm1 3471 movdqa %xmm5,%xmm3 3472 pand 416(%rsp),%xmm2 3473 pand 416+16(%rsp),%xmm3 3474 por %xmm0,%xmm2 3475 por %xmm1,%xmm3 3476 3477 movdqa %xmm4,%xmm0 3478 movdqa %xmm4,%xmm1 3479 pandn %xmm2,%xmm0 3480 movdqa %xmm4,%xmm2 3481 pandn %xmm3,%xmm1 3482 movdqa %xmm4,%xmm3 3483 pand 320(%rsp),%xmm2 3484 pand 320+16(%rsp),%xmm3 3485 por %xmm0,%xmm2 3486 por %xmm1,%xmm3 3487 movdqu %xmm2,0(%rdi) 3488 movdqu %xmm3,16(%rdi) 3489 3490 movdqa %xmm5,%xmm0 3491 movdqa %xmm5,%xmm1 3492 pandn 256(%rsp),%xmm0 3493 movdqa %xmm5,%xmm2 3494 pandn 256+16(%rsp),%xmm1 3495 movdqa %xmm5,%xmm3 3496 pand 448(%rsp),%xmm2 3497 pand 448+16(%rsp),%xmm3 3498 por %xmm0,%xmm2 3499 por %xmm1,%xmm3 3500 3501 movdqa %xmm4,%xmm0 3502 movdqa %xmm4,%xmm1 3503 pandn %xmm2,%xmm0 3504 movdqa %xmm4,%xmm2 3505 pandn %xmm3,%xmm1 3506 movdqa %xmm4,%xmm3 3507 pand 352(%rsp),%xmm2 3508 pand 352+16(%rsp),%xmm3 3509 por %xmm0,%xmm2 3510 por %xmm1,%xmm3 3511 movdqu %xmm2,32(%rdi) 3512 movdqu %xmm3,48(%rdi) 3513 3514 addq $480+8,%rsp 3515 popq %r15 3516 popq %r14 3517 popq %r13 3518 popq %r12 3519 popq %rbx 3520 popq %rbp 3521 .byte 0xf3,0xc3 3522.size ecp_nistz256_point_add_affinex,.-ecp_nistz256_point_add_affinex 3523