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