ecp_nistz256-x86_64.S revision 305153
1/* $FreeBSD: stable/11/secure/lib/libcrypto/amd64/ecp_nistz256-x86_64.S 305153 2016-08-31 20:33:59Z 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 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 sbbq %r13,%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 testq %r13,%r13 51 52 cmovzq %rax,%r8 53 cmovzq %rdx,%r9 54 movq %r8,0(%rdi) 55 cmovzq %rcx,%r10 56 movq %r9,8(%rdi) 57 cmovzq %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 testq %r13,%r13 155 156 cmovzq %rax,%r8 157 cmovzq %rdx,%r9 158 cmovzq %rcx,%r10 159 cmovzq %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 testq %r13,%r13 177 178 cmovzq %rax,%r8 179 cmovzq %rdx,%r9 180 movq %r8,0(%rdi) 181 cmovzq %rcx,%r10 182 movq %r9,8(%rdi) 183 cmovzq %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 testq %r13,%r13 223 224 cmovzq %rax,%r8 225 cmovzq %rdx,%r9 226 movq %r8,0(%rdi) 227 cmovzq %rcx,%r10 228 movq %r9,8(%rdi) 229 cmovzq %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 addq 0(%rbx),%r12 1467 adcq 8(%rbx),%r13 1468 movq %r12,%rax 1469 adcq 16(%rbx),%r8 1470 adcq 24(%rbx),%r9 1471 movq %r13,%rbp 1472 sbbq %r11,%r11 1473 1474 subq $-1,%r12 1475 movq %r8,%rcx 1476 sbbq %r14,%r13 1477 sbbq $0,%r8 1478 movq %r9,%r10 1479 sbbq %r15,%r9 1480 testq %r11,%r11 1481 1482 cmovzq %rax,%r12 1483 cmovzq %rbp,%r13 1484 movq %r12,0(%rdi) 1485 cmovzq %rcx,%r8 1486 movq %r13,8(%rdi) 1487 cmovzq %r10,%r9 1488 movq %r8,16(%rdi) 1489 movq %r9,24(%rdi) 1490 1491 .byte 0xf3,0xc3 1492.size __ecp_nistz256_add_toq,.-__ecp_nistz256_add_toq 1493 1494.type __ecp_nistz256_sub_fromq,@function 1495.align 32 1496__ecp_nistz256_sub_fromq: 1497 subq 0(%rbx),%r12 1498 sbbq 8(%rbx),%r13 1499 movq %r12,%rax 1500 sbbq 16(%rbx),%r8 1501 sbbq 24(%rbx),%r9 1502 movq %r13,%rbp 1503 sbbq %r11,%r11 1504 1505 addq $-1,%r12 1506 movq %r8,%rcx 1507 adcq %r14,%r13 1508 adcq $0,%r8 1509 movq %r9,%r10 1510 adcq %r15,%r9 1511 testq %r11,%r11 1512 1513 cmovzq %rax,%r12 1514 cmovzq %rbp,%r13 1515 movq %r12,0(%rdi) 1516 cmovzq %rcx,%r8 1517 movq %r13,8(%rdi) 1518 cmovzq %r10,%r9 1519 movq %r8,16(%rdi) 1520 movq %r9,24(%rdi) 1521 1522 .byte 0xf3,0xc3 1523.size __ecp_nistz256_sub_fromq,.-__ecp_nistz256_sub_fromq 1524 1525.type __ecp_nistz256_subq,@function 1526.align 32 1527__ecp_nistz256_subq: 1528 subq %r12,%rax 1529 sbbq %r13,%rbp 1530 movq %rax,%r12 1531 sbbq %r8,%rcx 1532 sbbq %r9,%r10 1533 movq %rbp,%r13 1534 sbbq %r11,%r11 1535 1536 addq $-1,%rax 1537 movq %rcx,%r8 1538 adcq %r14,%rbp 1539 adcq $0,%rcx 1540 movq %r10,%r9 1541 adcq %r15,%r10 1542 testq %r11,%r11 1543 1544 cmovnzq %rax,%r12 1545 cmovnzq %rbp,%r13 1546 cmovnzq %rcx,%r8 1547 cmovnzq %r10,%r9 1548 1549 .byte 0xf3,0xc3 1550.size __ecp_nistz256_subq,.-__ecp_nistz256_subq 1551 1552.type __ecp_nistz256_mul_by_2q,@function 1553.align 32 1554__ecp_nistz256_mul_by_2q: 1555 addq %r12,%r12 1556 adcq %r13,%r13 1557 movq %r12,%rax 1558 adcq %r8,%r8 1559 adcq %r9,%r9 1560 movq %r13,%rbp 1561 sbbq %r11,%r11 1562 1563 subq $-1,%r12 1564 movq %r8,%rcx 1565 sbbq %r14,%r13 1566 sbbq $0,%r8 1567 movq %r9,%r10 1568 sbbq %r15,%r9 1569 testq %r11,%r11 1570 1571 cmovzq %rax,%r12 1572 cmovzq %rbp,%r13 1573 movq %r12,0(%rdi) 1574 cmovzq %rcx,%r8 1575 movq %r13,8(%rdi) 1576 cmovzq %r10,%r9 1577 movq %r8,16(%rdi) 1578 movq %r9,24(%rdi) 1579 1580 .byte 0xf3,0xc3 1581.size __ecp_nistz256_mul_by_2q,.-__ecp_nistz256_mul_by_2q 1582.globl ecp_nistz256_point_double 1583.type ecp_nistz256_point_double,@function 1584.align 32 1585ecp_nistz256_point_double: 1586 movl $0x80100,%ecx 1587 andl OPENSSL_ia32cap_P+8(%rip),%ecx 1588 cmpl $0x80100,%ecx 1589 je .Lpoint_doublex 1590 pushq %rbp 1591 pushq %rbx 1592 pushq %r12 1593 pushq %r13 1594 pushq %r14 1595 pushq %r15 1596 subq $160+8,%rsp 1597 1598.Lpoint_double_shortcutq: 1599 movdqu 0(%rsi),%xmm0 1600 movq %rsi,%rbx 1601 movdqu 16(%rsi),%xmm1 1602 movq 32+0(%rsi),%r12 1603 movq 32+8(%rsi),%r13 1604 movq 32+16(%rsi),%r8 1605 movq 32+24(%rsi),%r9 1606 movq .Lpoly+8(%rip),%r14 1607 movq .Lpoly+24(%rip),%r15 1608 movdqa %xmm0,96(%rsp) 1609 movdqa %xmm1,96+16(%rsp) 1610 leaq 32(%rdi),%r10 1611 leaq 64(%rdi),%r11 1612.byte 102,72,15,110,199 1613.byte 102,73,15,110,202 1614.byte 102,73,15,110,211 1615 1616 leaq 0(%rsp),%rdi 1617 call __ecp_nistz256_mul_by_2q 1618 1619 movq 64+0(%rsi),%rax 1620 movq 64+8(%rsi),%r14 1621 movq 64+16(%rsi),%r15 1622 movq 64+24(%rsi),%r8 1623 leaq 64-0(%rsi),%rsi 1624 leaq 64(%rsp),%rdi 1625 call __ecp_nistz256_sqr_montq 1626 1627 movq 0+0(%rsp),%rax 1628 movq 8+0(%rsp),%r14 1629 leaq 0+0(%rsp),%rsi 1630 movq 16+0(%rsp),%r15 1631 movq 24+0(%rsp),%r8 1632 leaq 0(%rsp),%rdi 1633 call __ecp_nistz256_sqr_montq 1634 1635 movq 32(%rbx),%rax 1636 movq 64+0(%rbx),%r9 1637 movq 64+8(%rbx),%r10 1638 movq 64+16(%rbx),%r11 1639 movq 64+24(%rbx),%r12 1640 leaq 64-0(%rbx),%rsi 1641 leaq 32(%rbx),%rbx 1642.byte 102,72,15,126,215 1643 call __ecp_nistz256_mul_montq 1644 call __ecp_nistz256_mul_by_2q 1645 1646 movq 96+0(%rsp),%r12 1647 movq 96+8(%rsp),%r13 1648 leaq 64(%rsp),%rbx 1649 movq 96+16(%rsp),%r8 1650 movq 96+24(%rsp),%r9 1651 leaq 32(%rsp),%rdi 1652 call __ecp_nistz256_add_toq 1653 1654 movq 96+0(%rsp),%r12 1655 movq 96+8(%rsp),%r13 1656 leaq 64(%rsp),%rbx 1657 movq 96+16(%rsp),%r8 1658 movq 96+24(%rsp),%r9 1659 leaq 64(%rsp),%rdi 1660 call __ecp_nistz256_sub_fromq 1661 1662 movq 0+0(%rsp),%rax 1663 movq 8+0(%rsp),%r14 1664 leaq 0+0(%rsp),%rsi 1665 movq 16+0(%rsp),%r15 1666 movq 24+0(%rsp),%r8 1667.byte 102,72,15,126,207 1668 call __ecp_nistz256_sqr_montq 1669 xorq %r9,%r9 1670 movq %r12,%rax 1671 addq $-1,%r12 1672 movq %r13,%r10 1673 adcq %rsi,%r13 1674 movq %r14,%rcx 1675 adcq $0,%r14 1676 movq %r15,%r8 1677 adcq %rbp,%r15 1678 adcq $0,%r9 1679 xorq %rsi,%rsi 1680 testq $1,%rax 1681 1682 cmovzq %rax,%r12 1683 cmovzq %r10,%r13 1684 cmovzq %rcx,%r14 1685 cmovzq %r8,%r15 1686 cmovzq %rsi,%r9 1687 1688 movq %r13,%rax 1689 shrq $1,%r12 1690 shlq $63,%rax 1691 movq %r14,%r10 1692 shrq $1,%r13 1693 orq %rax,%r12 1694 shlq $63,%r10 1695 movq %r15,%rcx 1696 shrq $1,%r14 1697 orq %r10,%r13 1698 shlq $63,%rcx 1699 movq %r12,0(%rdi) 1700 shrq $1,%r15 1701 movq %r13,8(%rdi) 1702 shlq $63,%r9 1703 orq %rcx,%r14 1704 orq %r9,%r15 1705 movq %r14,16(%rdi) 1706 movq %r15,24(%rdi) 1707 movq 64(%rsp),%rax 1708 leaq 64(%rsp),%rbx 1709 movq 0+32(%rsp),%r9 1710 movq 8+32(%rsp),%r10 1711 leaq 0+32(%rsp),%rsi 1712 movq 16+32(%rsp),%r11 1713 movq 24+32(%rsp),%r12 1714 leaq 32(%rsp),%rdi 1715 call __ecp_nistz256_mul_montq 1716 1717 leaq 128(%rsp),%rdi 1718 call __ecp_nistz256_mul_by_2q 1719 1720 leaq 32(%rsp),%rbx 1721 leaq 32(%rsp),%rdi 1722 call __ecp_nistz256_add_toq 1723 1724 movq 96(%rsp),%rax 1725 leaq 96(%rsp),%rbx 1726 movq 0+0(%rsp),%r9 1727 movq 8+0(%rsp),%r10 1728 leaq 0+0(%rsp),%rsi 1729 movq 16+0(%rsp),%r11 1730 movq 24+0(%rsp),%r12 1731 leaq 0(%rsp),%rdi 1732 call __ecp_nistz256_mul_montq 1733 1734 leaq 128(%rsp),%rdi 1735 call __ecp_nistz256_mul_by_2q 1736 1737 movq 0+32(%rsp),%rax 1738 movq 8+32(%rsp),%r14 1739 leaq 0+32(%rsp),%rsi 1740 movq 16+32(%rsp),%r15 1741 movq 24+32(%rsp),%r8 1742.byte 102,72,15,126,199 1743 call __ecp_nistz256_sqr_montq 1744 1745 leaq 128(%rsp),%rbx 1746 movq %r14,%r8 1747 movq %r15,%r9 1748 movq %rsi,%r14 1749 movq %rbp,%r15 1750 call __ecp_nistz256_sub_fromq 1751 1752 movq 0+0(%rsp),%rax 1753 movq 0+8(%rsp),%rbp 1754 movq 0+16(%rsp),%rcx 1755 movq 0+24(%rsp),%r10 1756 leaq 0(%rsp),%rdi 1757 call __ecp_nistz256_subq 1758 1759 movq 32(%rsp),%rax 1760 leaq 32(%rsp),%rbx 1761 movq %r12,%r14 1762 xorl %ecx,%ecx 1763 movq %r12,0+0(%rsp) 1764 movq %r13,%r10 1765 movq %r13,0+8(%rsp) 1766 cmovzq %r8,%r11 1767 movq %r8,0+16(%rsp) 1768 leaq 0-0(%rsp),%rsi 1769 cmovzq %r9,%r12 1770 movq %r9,0+24(%rsp) 1771 movq %r14,%r9 1772 leaq 0(%rsp),%rdi 1773 call __ecp_nistz256_mul_montq 1774 1775.byte 102,72,15,126,203 1776.byte 102,72,15,126,207 1777 call __ecp_nistz256_sub_fromq 1778 1779 addq $160+8,%rsp 1780 popq %r15 1781 popq %r14 1782 popq %r13 1783 popq %r12 1784 popq %rbx 1785 popq %rbp 1786 .byte 0xf3,0xc3 1787.size ecp_nistz256_point_double,.-ecp_nistz256_point_double 1788.globl ecp_nistz256_point_add 1789.type ecp_nistz256_point_add,@function 1790.align 32 1791ecp_nistz256_point_add: 1792 movl $0x80100,%ecx 1793 andl OPENSSL_ia32cap_P+8(%rip),%ecx 1794 cmpl $0x80100,%ecx 1795 je .Lpoint_addx 1796 pushq %rbp 1797 pushq %rbx 1798 pushq %r12 1799 pushq %r13 1800 pushq %r14 1801 pushq %r15 1802 subq $576+8,%rsp 1803 1804 movdqu 0(%rsi),%xmm0 1805 movdqu 16(%rsi),%xmm1 1806 movdqu 32(%rsi),%xmm2 1807 movdqu 48(%rsi),%xmm3 1808 movdqu 64(%rsi),%xmm4 1809 movdqu 80(%rsi),%xmm5 1810 movq %rsi,%rbx 1811 movq %rdx,%rsi 1812 movdqa %xmm0,384(%rsp) 1813 movdqa %xmm1,384+16(%rsp) 1814 por %xmm0,%xmm1 1815 movdqa %xmm2,416(%rsp) 1816 movdqa %xmm3,416+16(%rsp) 1817 por %xmm2,%xmm3 1818 movdqa %xmm4,448(%rsp) 1819 movdqa %xmm5,448+16(%rsp) 1820 por %xmm1,%xmm3 1821 1822 movdqu 0(%rsi),%xmm0 1823 pshufd $0xb1,%xmm3,%xmm5 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 por %xmm0,%xmm1 1836.byte 102,72,15,110,199 1837 movdqa %xmm2,512(%rsp) 1838 movdqa %xmm3,512+16(%rsp) 1839 por %xmm2,%xmm3 1840 por %xmm4,%xmm5 1841 pxor %xmm4,%xmm4 1842 por %xmm1,%xmm3 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,%xmm3,%xmm4 1854 por %xmm3,%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 addq %r12,%r12 2038 leaq 96(%rsp),%rsi 2039 adcq %r13,%r13 2040 movq %r12,%rax 2041 adcq %r8,%r8 2042 adcq %r9,%r9 2043 movq %r13,%rbp 2044 sbbq %r11,%r11 2045 2046 subq $-1,%r12 2047 movq %r8,%rcx 2048 sbbq %r14,%r13 2049 sbbq $0,%r8 2050 movq %r9,%r10 2051 sbbq %r15,%r9 2052 testq %r11,%r11 2053 2054 cmovzq %rax,%r12 2055 movq 0(%rsi),%rax 2056 cmovzq %rbp,%r13 2057 movq 8(%rsi),%rbp 2058 cmovzq %rcx,%r8 2059 movq 16(%rsi),%rcx 2060 cmovzq %r10,%r9 2061 movq 24(%rsi),%r10 2062 2063 call __ecp_nistz256_subq 2064 2065 leaq 128(%rsp),%rbx 2066 leaq 288(%rsp),%rdi 2067 call __ecp_nistz256_sub_fromq 2068 2069 movq 192+0(%rsp),%rax 2070 movq 192+8(%rsp),%rbp 2071 movq 192+16(%rsp),%rcx 2072 movq 192+24(%rsp),%r10 2073 leaq 320(%rsp),%rdi 2074 2075 call __ecp_nistz256_subq 2076 2077 movq %r12,0(%rdi) 2078 movq %r13,8(%rdi) 2079 movq %r8,16(%rdi) 2080 movq %r9,24(%rdi) 2081 movq 128(%rsp),%rax 2082 leaq 128(%rsp),%rbx 2083 movq 0+224(%rsp),%r9 2084 movq 8+224(%rsp),%r10 2085 leaq 0+224(%rsp),%rsi 2086 movq 16+224(%rsp),%r11 2087 movq 24+224(%rsp),%r12 2088 leaq 256(%rsp),%rdi 2089 call __ecp_nistz256_mul_montq 2090 2091 movq 320(%rsp),%rax 2092 leaq 320(%rsp),%rbx 2093 movq 0+64(%rsp),%r9 2094 movq 8+64(%rsp),%r10 2095 leaq 0+64(%rsp),%rsi 2096 movq 16+64(%rsp),%r11 2097 movq 24+64(%rsp),%r12 2098 leaq 320(%rsp),%rdi 2099 call __ecp_nistz256_mul_montq 2100 2101 leaq 256(%rsp),%rbx 2102 leaq 320(%rsp),%rdi 2103 call __ecp_nistz256_sub_fromq 2104 2105.byte 102,72,15,126,199 2106 2107 movdqa %xmm5,%xmm0 2108 movdqa %xmm5,%xmm1 2109 pandn 352(%rsp),%xmm0 2110 movdqa %xmm5,%xmm2 2111 pandn 352+16(%rsp),%xmm1 2112 movdqa %xmm5,%xmm3 2113 pand 544(%rsp),%xmm2 2114 pand 544+16(%rsp),%xmm3 2115 por %xmm0,%xmm2 2116 por %xmm1,%xmm3 2117 2118 movdqa %xmm4,%xmm0 2119 movdqa %xmm4,%xmm1 2120 pandn %xmm2,%xmm0 2121 movdqa %xmm4,%xmm2 2122 pandn %xmm3,%xmm1 2123 movdqa %xmm4,%xmm3 2124 pand 448(%rsp),%xmm2 2125 pand 448+16(%rsp),%xmm3 2126 por %xmm0,%xmm2 2127 por %xmm1,%xmm3 2128 movdqu %xmm2,64(%rdi) 2129 movdqu %xmm3,80(%rdi) 2130 2131 movdqa %xmm5,%xmm0 2132 movdqa %xmm5,%xmm1 2133 pandn 288(%rsp),%xmm0 2134 movdqa %xmm5,%xmm2 2135 pandn 288+16(%rsp),%xmm1 2136 movdqa %xmm5,%xmm3 2137 pand 480(%rsp),%xmm2 2138 pand 480+16(%rsp),%xmm3 2139 por %xmm0,%xmm2 2140 por %xmm1,%xmm3 2141 2142 movdqa %xmm4,%xmm0 2143 movdqa %xmm4,%xmm1 2144 pandn %xmm2,%xmm0 2145 movdqa %xmm4,%xmm2 2146 pandn %xmm3,%xmm1 2147 movdqa %xmm4,%xmm3 2148 pand 384(%rsp),%xmm2 2149 pand 384+16(%rsp),%xmm3 2150 por %xmm0,%xmm2 2151 por %xmm1,%xmm3 2152 movdqu %xmm2,0(%rdi) 2153 movdqu %xmm3,16(%rdi) 2154 2155 movdqa %xmm5,%xmm0 2156 movdqa %xmm5,%xmm1 2157 pandn 320(%rsp),%xmm0 2158 movdqa %xmm5,%xmm2 2159 pandn 320+16(%rsp),%xmm1 2160 movdqa %xmm5,%xmm3 2161 pand 512(%rsp),%xmm2 2162 pand 512+16(%rsp),%xmm3 2163 por %xmm0,%xmm2 2164 por %xmm1,%xmm3 2165 2166 movdqa %xmm4,%xmm0 2167 movdqa %xmm4,%xmm1 2168 pandn %xmm2,%xmm0 2169 movdqa %xmm4,%xmm2 2170 pandn %xmm3,%xmm1 2171 movdqa %xmm4,%xmm3 2172 pand 416(%rsp),%xmm2 2173 pand 416+16(%rsp),%xmm3 2174 por %xmm0,%xmm2 2175 por %xmm1,%xmm3 2176 movdqu %xmm2,32(%rdi) 2177 movdqu %xmm3,48(%rdi) 2178 2179.Ladd_doneq: 2180 addq $576+8,%rsp 2181 popq %r15 2182 popq %r14 2183 popq %r13 2184 popq %r12 2185 popq %rbx 2186 popq %rbp 2187 .byte 0xf3,0xc3 2188.size ecp_nistz256_point_add,.-ecp_nistz256_point_add 2189.globl ecp_nistz256_point_add_affine 2190.type ecp_nistz256_point_add_affine,@function 2191.align 32 2192ecp_nistz256_point_add_affine: 2193 movl $0x80100,%ecx 2194 andl OPENSSL_ia32cap_P+8(%rip),%ecx 2195 cmpl $0x80100,%ecx 2196 je .Lpoint_add_affinex 2197 pushq %rbp 2198 pushq %rbx 2199 pushq %r12 2200 pushq %r13 2201 pushq %r14 2202 pushq %r15 2203 subq $480+8,%rsp 2204 2205 movdqu 0(%rsi),%xmm0 2206 movq %rdx,%rbx 2207 movdqu 16(%rsi),%xmm1 2208 movdqu 32(%rsi),%xmm2 2209 movdqu 48(%rsi),%xmm3 2210 movdqu 64(%rsi),%xmm4 2211 movdqu 80(%rsi),%xmm5 2212 movq 64+0(%rsi),%rax 2213 movq 64+8(%rsi),%r14 2214 movq 64+16(%rsi),%r15 2215 movq 64+24(%rsi),%r8 2216 movdqa %xmm0,320(%rsp) 2217 movdqa %xmm1,320+16(%rsp) 2218 por %xmm0,%xmm1 2219 movdqa %xmm2,352(%rsp) 2220 movdqa %xmm3,352+16(%rsp) 2221 por %xmm2,%xmm3 2222 movdqa %xmm4,384(%rsp) 2223 movdqa %xmm5,384+16(%rsp) 2224 por %xmm1,%xmm3 2225 2226 movdqu 0(%rbx),%xmm0 2227 pshufd $0xb1,%xmm3,%xmm5 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 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 sbbq %r11,%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 testq %r11,%r11 2361 2362 cmovzq %rax,%r12 2363 movq 0(%rsi),%rax 2364 cmovzq %rbp,%r13 2365 movq 8(%rsi),%rbp 2366 cmovzq %rcx,%r8 2367 movq 16(%rsi),%rcx 2368 cmovzq %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 2516 btq $0,%r11 2517 cmovncq %rax,%r12 2518 cmovncq %rbp,%r13 2519 movq %r12,0(%rdi) 2520 cmovncq %rcx,%r8 2521 movq %r13,8(%rdi) 2522 cmovncq %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 2611 btq $0,%r11 2612 cmovncq %rax,%r12 2613 cmovncq %rbp,%r13 2614 movq %r12,0(%rdi) 2615 cmovncq %rcx,%r8 2616 movq %r13,8(%rdi) 2617 cmovncq %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 por %xmm0,%xmm1 2848 movdqa %xmm2,416(%rsp) 2849 movdqa %xmm3,416+16(%rsp) 2850 por %xmm2,%xmm3 2851 movdqa %xmm4,448(%rsp) 2852 movdqa %xmm5,448+16(%rsp) 2853 por %xmm1,%xmm3 2854 2855 movdqu 0(%rsi),%xmm0 2856 pshufd $0xb1,%xmm3,%xmm5 2857 movdqu 16(%rsi),%xmm1 2858 movdqu 32(%rsi),%xmm2 2859 por %xmm3,%xmm5 2860 movdqu 48(%rsi),%xmm3 2861 movq 64+0(%rsi),%rdx 2862 movq 64+8(%rsi),%r14 2863 movq 64+16(%rsi),%r15 2864 movq 64+24(%rsi),%r8 2865 movdqa %xmm0,480(%rsp) 2866 pshufd $0x1e,%xmm5,%xmm4 2867 movdqa %xmm1,480+16(%rsp) 2868 por %xmm0,%xmm1 2869.byte 102,72,15,110,199 2870 movdqa %xmm2,512(%rsp) 2871 movdqa %xmm3,512+16(%rsp) 2872 por %xmm2,%xmm3 2873 por %xmm4,%xmm5 2874 pxor %xmm4,%xmm4 2875 por %xmm1,%xmm3 2876 2877 leaq 64-128(%rsi),%rsi 2878 movq %rdx,544+0(%rsp) 2879 movq %r14,544+8(%rsp) 2880 movq %r15,544+16(%rsp) 2881 movq %r8,544+24(%rsp) 2882 leaq 96(%rsp),%rdi 2883 call __ecp_nistz256_sqr_montx 2884 2885 pcmpeqd %xmm4,%xmm5 2886 pshufd $0xb1,%xmm3,%xmm4 2887 por %xmm3,%xmm4 2888 pshufd $0,%xmm5,%xmm5 2889 pshufd $0x1e,%xmm4,%xmm3 2890 por %xmm3,%xmm4 2891 pxor %xmm3,%xmm3 2892 pcmpeqd %xmm3,%xmm4 2893 pshufd $0,%xmm4,%xmm4 2894 movq 64+0(%rbx),%rdx 2895 movq 64+8(%rbx),%r14 2896 movq 64+16(%rbx),%r15 2897 movq 64+24(%rbx),%r8 2898.byte 102,72,15,110,203 2899 2900 leaq 64-128(%rbx),%rsi 2901 leaq 32(%rsp),%rdi 2902 call __ecp_nistz256_sqr_montx 2903 2904 movq 544(%rsp),%rdx 2905 leaq 544(%rsp),%rbx 2906 movq 0+96(%rsp),%r9 2907 movq 8+96(%rsp),%r10 2908 leaq -128+96(%rsp),%rsi 2909 movq 16+96(%rsp),%r11 2910 movq 24+96(%rsp),%r12 2911 leaq 224(%rsp),%rdi 2912 call __ecp_nistz256_mul_montx 2913 2914 movq 448(%rsp),%rdx 2915 leaq 448(%rsp),%rbx 2916 movq 0+32(%rsp),%r9 2917 movq 8+32(%rsp),%r10 2918 leaq -128+32(%rsp),%rsi 2919 movq 16+32(%rsp),%r11 2920 movq 24+32(%rsp),%r12 2921 leaq 256(%rsp),%rdi 2922 call __ecp_nistz256_mul_montx 2923 2924 movq 416(%rsp),%rdx 2925 leaq 416(%rsp),%rbx 2926 movq 0+224(%rsp),%r9 2927 movq 8+224(%rsp),%r10 2928 leaq -128+224(%rsp),%rsi 2929 movq 16+224(%rsp),%r11 2930 movq 24+224(%rsp),%r12 2931 leaq 224(%rsp),%rdi 2932 call __ecp_nistz256_mul_montx 2933 2934 movq 512(%rsp),%rdx 2935 leaq 512(%rsp),%rbx 2936 movq 0+256(%rsp),%r9 2937 movq 8+256(%rsp),%r10 2938 leaq -128+256(%rsp),%rsi 2939 movq 16+256(%rsp),%r11 2940 movq 24+256(%rsp),%r12 2941 leaq 256(%rsp),%rdi 2942 call __ecp_nistz256_mul_montx 2943 2944 leaq 224(%rsp),%rbx 2945 leaq 64(%rsp),%rdi 2946 call __ecp_nistz256_sub_fromx 2947 2948 orq %r13,%r12 2949 movdqa %xmm4,%xmm2 2950 orq %r8,%r12 2951 orq %r9,%r12 2952 por %xmm5,%xmm2 2953.byte 102,73,15,110,220 2954 2955 movq 384(%rsp),%rdx 2956 leaq 384(%rsp),%rbx 2957 movq 0+96(%rsp),%r9 2958 movq 8+96(%rsp),%r10 2959 leaq -128+96(%rsp),%rsi 2960 movq 16+96(%rsp),%r11 2961 movq 24+96(%rsp),%r12 2962 leaq 160(%rsp),%rdi 2963 call __ecp_nistz256_mul_montx 2964 2965 movq 480(%rsp),%rdx 2966 leaq 480(%rsp),%rbx 2967 movq 0+32(%rsp),%r9 2968 movq 8+32(%rsp),%r10 2969 leaq -128+32(%rsp),%rsi 2970 movq 16+32(%rsp),%r11 2971 movq 24+32(%rsp),%r12 2972 leaq 192(%rsp),%rdi 2973 call __ecp_nistz256_mul_montx 2974 2975 leaq 160(%rsp),%rbx 2976 leaq 0(%rsp),%rdi 2977 call __ecp_nistz256_sub_fromx 2978 2979 orq %r13,%r12 2980 orq %r8,%r12 2981 orq %r9,%r12 2982 2983.byte 0x3e 2984 jnz .Ladd_proceedx 2985.byte 102,73,15,126,208 2986.byte 102,73,15,126,217 2987 testq %r8,%r8 2988 jnz .Ladd_proceedx 2989 testq %r9,%r9 2990 jz .Ladd_doublex 2991 2992.byte 102,72,15,126,199 2993 pxor %xmm0,%xmm0 2994 movdqu %xmm0,0(%rdi) 2995 movdqu %xmm0,16(%rdi) 2996 movdqu %xmm0,32(%rdi) 2997 movdqu %xmm0,48(%rdi) 2998 movdqu %xmm0,64(%rdi) 2999 movdqu %xmm0,80(%rdi) 3000 jmp .Ladd_donex 3001 3002.align 32 3003.Ladd_doublex: 3004.byte 102,72,15,126,206 3005.byte 102,72,15,126,199 3006 addq $416,%rsp 3007 jmp .Lpoint_double_shortcutx 3008 3009.align 32 3010.Ladd_proceedx: 3011 movq 0+64(%rsp),%rdx 3012 movq 8+64(%rsp),%r14 3013 leaq -128+64(%rsp),%rsi 3014 movq 16+64(%rsp),%r15 3015 movq 24+64(%rsp),%r8 3016 leaq 96(%rsp),%rdi 3017 call __ecp_nistz256_sqr_montx 3018 3019 movq 448(%rsp),%rdx 3020 leaq 448(%rsp),%rbx 3021 movq 0+0(%rsp),%r9 3022 movq 8+0(%rsp),%r10 3023 leaq -128+0(%rsp),%rsi 3024 movq 16+0(%rsp),%r11 3025 movq 24+0(%rsp),%r12 3026 leaq 352(%rsp),%rdi 3027 call __ecp_nistz256_mul_montx 3028 3029 movq 0+0(%rsp),%rdx 3030 movq 8+0(%rsp),%r14 3031 leaq -128+0(%rsp),%rsi 3032 movq 16+0(%rsp),%r15 3033 movq 24+0(%rsp),%r8 3034 leaq 32(%rsp),%rdi 3035 call __ecp_nistz256_sqr_montx 3036 3037 movq 544(%rsp),%rdx 3038 leaq 544(%rsp),%rbx 3039 movq 0+352(%rsp),%r9 3040 movq 8+352(%rsp),%r10 3041 leaq -128+352(%rsp),%rsi 3042 movq 16+352(%rsp),%r11 3043 movq 24+352(%rsp),%r12 3044 leaq 352(%rsp),%rdi 3045 call __ecp_nistz256_mul_montx 3046 3047 movq 0(%rsp),%rdx 3048 leaq 0(%rsp),%rbx 3049 movq 0+32(%rsp),%r9 3050 movq 8+32(%rsp),%r10 3051 leaq -128+32(%rsp),%rsi 3052 movq 16+32(%rsp),%r11 3053 movq 24+32(%rsp),%r12 3054 leaq 128(%rsp),%rdi 3055 call __ecp_nistz256_mul_montx 3056 3057 movq 160(%rsp),%rdx 3058 leaq 160(%rsp),%rbx 3059 movq 0+32(%rsp),%r9 3060 movq 8+32(%rsp),%r10 3061 leaq -128+32(%rsp),%rsi 3062 movq 16+32(%rsp),%r11 3063 movq 24+32(%rsp),%r12 3064 leaq 192(%rsp),%rdi 3065 call __ecp_nistz256_mul_montx 3066 3067 3068 3069 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 sbbq %r11,%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 testq %r11,%r11 3086 3087 cmovzq %rax,%r12 3088 movq 0(%rsi),%rax 3089 cmovzq %rbp,%r13 3090 movq 8(%rsi),%rbp 3091 cmovzq %rcx,%r8 3092 movq 16(%rsi),%rcx 3093 cmovzq %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 por %xmm0,%xmm1 3248 movdqa %xmm2,352(%rsp) 3249 movdqa %xmm3,352+16(%rsp) 3250 por %xmm2,%xmm3 3251 movdqa %xmm4,384(%rsp) 3252 movdqa %xmm5,384+16(%rsp) 3253 por %xmm1,%xmm3 3254 3255 movdqu 0(%rbx),%xmm0 3256 pshufd $0xb1,%xmm3,%xmm5 3257 movdqu 16(%rbx),%xmm1 3258 movdqu 32(%rbx),%xmm2 3259 por %xmm3,%xmm5 3260 movdqu 48(%rbx),%xmm3 3261 movdqa %xmm0,416(%rsp) 3262 pshufd $0x1e,%xmm5,%xmm4 3263 movdqa %xmm1,416+16(%rsp) 3264 por %xmm0,%xmm1 3265.byte 102,72,15,110,199 3266 movdqa %xmm2,448(%rsp) 3267 movdqa %xmm3,448+16(%rsp) 3268 por %xmm2,%xmm3 3269 por %xmm4,%xmm5 3270 pxor %xmm4,%xmm4 3271 por %xmm1,%xmm3 3272 3273 leaq 64-128(%rsi),%rsi 3274 leaq 32(%rsp),%rdi 3275 call __ecp_nistz256_sqr_montx 3276 3277 pcmpeqd %xmm4,%xmm5 3278 pshufd $0xb1,%xmm3,%xmm4 3279 movq 0(%rbx),%rdx 3280 3281 movq %r12,%r9 3282 por %xmm3,%xmm4 3283 pshufd $0,%xmm5,%xmm5 3284 pshufd $0x1e,%xmm4,%xmm3 3285 movq %r13,%r10 3286 por %xmm3,%xmm4 3287 pxor %xmm3,%xmm3 3288 movq %r14,%r11 3289 pcmpeqd %xmm3,%xmm4 3290 pshufd $0,%xmm4,%xmm4 3291 3292 leaq 32-128(%rsp),%rsi 3293 movq %r15,%r12 3294 leaq 0(%rsp),%rdi 3295 call __ecp_nistz256_mul_montx 3296 3297 leaq 320(%rsp),%rbx 3298 leaq 64(%rsp),%rdi 3299 call __ecp_nistz256_sub_fromx 3300 3301 movq 384(%rsp),%rdx 3302 leaq 384(%rsp),%rbx 3303 movq 0+32(%rsp),%r9 3304 movq 8+32(%rsp),%r10 3305 leaq -128+32(%rsp),%rsi 3306 movq 16+32(%rsp),%r11 3307 movq 24+32(%rsp),%r12 3308 leaq 32(%rsp),%rdi 3309 call __ecp_nistz256_mul_montx 3310 3311 movq 384(%rsp),%rdx 3312 leaq 384(%rsp),%rbx 3313 movq 0+64(%rsp),%r9 3314 movq 8+64(%rsp),%r10 3315 leaq -128+64(%rsp),%rsi 3316 movq 16+64(%rsp),%r11 3317 movq 24+64(%rsp),%r12 3318 leaq 288(%rsp),%rdi 3319 call __ecp_nistz256_mul_montx 3320 3321 movq 448(%rsp),%rdx 3322 leaq 448(%rsp),%rbx 3323 movq 0+32(%rsp),%r9 3324 movq 8+32(%rsp),%r10 3325 leaq -128+32(%rsp),%rsi 3326 movq 16+32(%rsp),%r11 3327 movq 24+32(%rsp),%r12 3328 leaq 32(%rsp),%rdi 3329 call __ecp_nistz256_mul_montx 3330 3331 leaq 352(%rsp),%rbx 3332 leaq 96(%rsp),%rdi 3333 call __ecp_nistz256_sub_fromx 3334 3335 movq 0+64(%rsp),%rdx 3336 movq 8+64(%rsp),%r14 3337 leaq -128+64(%rsp),%rsi 3338 movq 16+64(%rsp),%r15 3339 movq 24+64(%rsp),%r8 3340 leaq 128(%rsp),%rdi 3341 call __ecp_nistz256_sqr_montx 3342 3343 movq 0+96(%rsp),%rdx 3344 movq 8+96(%rsp),%r14 3345 leaq -128+96(%rsp),%rsi 3346 movq 16+96(%rsp),%r15 3347 movq 24+96(%rsp),%r8 3348 leaq 192(%rsp),%rdi 3349 call __ecp_nistz256_sqr_montx 3350 3351 movq 128(%rsp),%rdx 3352 leaq 128(%rsp),%rbx 3353 movq 0+64(%rsp),%r9 3354 movq 8+64(%rsp),%r10 3355 leaq -128+64(%rsp),%rsi 3356 movq 16+64(%rsp),%r11 3357 movq 24+64(%rsp),%r12 3358 leaq 160(%rsp),%rdi 3359 call __ecp_nistz256_mul_montx 3360 3361 movq 320(%rsp),%rdx 3362 leaq 320(%rsp),%rbx 3363 movq 0+128(%rsp),%r9 3364 movq 8+128(%rsp),%r10 3365 leaq -128+128(%rsp),%rsi 3366 movq 16+128(%rsp),%r11 3367 movq 24+128(%rsp),%r12 3368 leaq 0(%rsp),%rdi 3369 call __ecp_nistz256_mul_montx 3370 3371 3372 3373 3374 addq %r12,%r12 3375 leaq 192(%rsp),%rsi 3376 adcq %r13,%r13 3377 movq %r12,%rax 3378 adcq %r8,%r8 3379 adcq %r9,%r9 3380 movq %r13,%rbp 3381 sbbq %r11,%r11 3382 3383 subq $-1,%r12 3384 movq %r8,%rcx 3385 sbbq %r14,%r13 3386 sbbq $0,%r8 3387 movq %r9,%r10 3388 sbbq %r15,%r9 3389 testq %r11,%r11 3390 3391 cmovzq %rax,%r12 3392 movq 0(%rsi),%rax 3393 cmovzq %rbp,%r13 3394 movq 8(%rsi),%rbp 3395 cmovzq %rcx,%r8 3396 movq 16(%rsi),%rcx 3397 cmovzq %r10,%r9 3398 movq 24(%rsi),%r10 3399 3400 call __ecp_nistz256_subx 3401 3402 leaq 160(%rsp),%rbx 3403 leaq 224(%rsp),%rdi 3404 call __ecp_nistz256_sub_fromx 3405 3406 movq 0+0(%rsp),%rax 3407 movq 0+8(%rsp),%rbp 3408 movq 0+16(%rsp),%rcx 3409 movq 0+24(%rsp),%r10 3410 leaq 64(%rsp),%rdi 3411 3412 call __ecp_nistz256_subx 3413 3414 movq %r12,0(%rdi) 3415 movq %r13,8(%rdi) 3416 movq %r8,16(%rdi) 3417 movq %r9,24(%rdi) 3418 movq 352(%rsp),%rdx 3419 leaq 352(%rsp),%rbx 3420 movq 0+160(%rsp),%r9 3421 movq 8+160(%rsp),%r10 3422 leaq -128+160(%rsp),%rsi 3423 movq 16+160(%rsp),%r11 3424 movq 24+160(%rsp),%r12 3425 leaq 32(%rsp),%rdi 3426 call __ecp_nistz256_mul_montx 3427 3428 movq 96(%rsp),%rdx 3429 leaq 96(%rsp),%rbx 3430 movq 0+64(%rsp),%r9 3431 movq 8+64(%rsp),%r10 3432 leaq -128+64(%rsp),%rsi 3433 movq 16+64(%rsp),%r11 3434 movq 24+64(%rsp),%r12 3435 leaq 64(%rsp),%rdi 3436 call __ecp_nistz256_mul_montx 3437 3438 leaq 32(%rsp),%rbx 3439 leaq 256(%rsp),%rdi 3440 call __ecp_nistz256_sub_fromx 3441 3442.byte 102,72,15,126,199 3443 3444 movdqa %xmm5,%xmm0 3445 movdqa %xmm5,%xmm1 3446 pandn 288(%rsp),%xmm0 3447 movdqa %xmm5,%xmm2 3448 pandn 288+16(%rsp),%xmm1 3449 movdqa %xmm5,%xmm3 3450 pand .LONE_mont(%rip),%xmm2 3451 pand .LONE_mont+16(%rip),%xmm3 3452 por %xmm0,%xmm2 3453 por %xmm1,%xmm3 3454 3455 movdqa %xmm4,%xmm0 3456 movdqa %xmm4,%xmm1 3457 pandn %xmm2,%xmm0 3458 movdqa %xmm4,%xmm2 3459 pandn %xmm3,%xmm1 3460 movdqa %xmm4,%xmm3 3461 pand 384(%rsp),%xmm2 3462 pand 384+16(%rsp),%xmm3 3463 por %xmm0,%xmm2 3464 por %xmm1,%xmm3 3465 movdqu %xmm2,64(%rdi) 3466 movdqu %xmm3,80(%rdi) 3467 3468 movdqa %xmm5,%xmm0 3469 movdqa %xmm5,%xmm1 3470 pandn 224(%rsp),%xmm0 3471 movdqa %xmm5,%xmm2 3472 pandn 224+16(%rsp),%xmm1 3473 movdqa %xmm5,%xmm3 3474 pand 416(%rsp),%xmm2 3475 pand 416+16(%rsp),%xmm3 3476 por %xmm0,%xmm2 3477 por %xmm1,%xmm3 3478 3479 movdqa %xmm4,%xmm0 3480 movdqa %xmm4,%xmm1 3481 pandn %xmm2,%xmm0 3482 movdqa %xmm4,%xmm2 3483 pandn %xmm3,%xmm1 3484 movdqa %xmm4,%xmm3 3485 pand 320(%rsp),%xmm2 3486 pand 320+16(%rsp),%xmm3 3487 por %xmm0,%xmm2 3488 por %xmm1,%xmm3 3489 movdqu %xmm2,0(%rdi) 3490 movdqu %xmm3,16(%rdi) 3491 3492 movdqa %xmm5,%xmm0 3493 movdqa %xmm5,%xmm1 3494 pandn 256(%rsp),%xmm0 3495 movdqa %xmm5,%xmm2 3496 pandn 256+16(%rsp),%xmm1 3497 movdqa %xmm5,%xmm3 3498 pand 448(%rsp),%xmm2 3499 pand 448+16(%rsp),%xmm3 3500 por %xmm0,%xmm2 3501 por %xmm1,%xmm3 3502 3503 movdqa %xmm4,%xmm0 3504 movdqa %xmm4,%xmm1 3505 pandn %xmm2,%xmm0 3506 movdqa %xmm4,%xmm2 3507 pandn %xmm3,%xmm1 3508 movdqa %xmm4,%xmm3 3509 pand 352(%rsp),%xmm2 3510 pand 352+16(%rsp),%xmm3 3511 por %xmm0,%xmm2 3512 por %xmm1,%xmm3 3513 movdqu %xmm2,32(%rdi) 3514 movdqu %xmm3,48(%rdi) 3515 3516 addq $480+8,%rsp 3517 popq %r15 3518 popq %r14 3519 popq %r13 3520 popq %r12 3521 popq %rbx 3522 popq %rbp 3523 .byte 0xf3,0xc3 3524.size ecp_nistz256_point_add_affinex,.-ecp_nistz256_point_add_affinex 3525