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