diff options
| author | auth12 <[email protected]> | 2020-07-22 08:40:38 -0700 |
|---|---|---|
| committer | auth12 <[email protected]> | 2020-07-22 08:40:38 -0700 |
| commit | 4ff89e85e74884e8f04edb5c31a94b4323e895e9 (patch) | |
| tree | 65f98ebf9af0d0947e44bf397b1fac0f107d7a2f /client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S | |
| parent | Client injection. (diff) | |
| download | loader-4ff89e85e74884e8f04edb5c31a94b4323e895e9.tar.xz loader-4ff89e85e74884e8f04edb5c31a94b4323e895e9.zip | |
Removed wolfssl
Diffstat (limited to 'client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S')
| -rw-r--r-- | client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S | 41830 |
1 files changed, 0 insertions, 41830 deletions
diff --git a/client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S b/client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S deleted file mode 100644 index c6941f1..0000000 --- a/client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S +++ /dev/null @@ -1,41830 +0,0 @@ -/* sp_x86_64_asm - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#define HAVE_INTEL_AVX2 -#ifndef WOLFSSL_SP_NO_2048 -#ifndef WOLFSSL_SP_NO_2048 -/* Read big endian unsigned byte array into r. - * - * r A single precision integer. - * size Maximum number of bytes to convert - * a Byte array. - * n Number of bytes in array to read. - */ -#ifndef __APPLE__ -.globl sp_2048_from_bin -.type sp_2048_from_bin,@function -.align 16 -sp_2048_from_bin: -#else -.globl _sp_2048_from_bin -.p2align 4 -_sp_2048_from_bin: -#endif /* __APPLE__ */ - movq %rdx, %r9 - movq %rdi, %r10 - addq %rcx, %r9 - addq $256, %r10 - xorq %r11, %r11 - jmp L_2048_from_bin_64_end -L_2048_from_bin_64_start: - subq $64, %r9 - movbeq 56(%r9), %rax - movbeq 48(%r9), %r8 - movq %rax, (%rdi) - movq %r8, 8(%rdi) - movbeq 40(%r9), %rax - movbeq 32(%r9), %r8 - movq %rax, 16(%rdi) - movq %r8, 24(%rdi) - movbeq 24(%r9), %rax - movbeq 16(%r9), %r8 - movq %rax, 32(%rdi) - movq %r8, 40(%rdi) - movbeq 8(%r9), %rax - movbeq (%r9), %r8 - movq %rax, 48(%rdi) - movq %r8, 56(%rdi) - addq $64, %rdi - subq $64, %rcx -L_2048_from_bin_64_end: - cmpq $63, %rcx - jg L_2048_from_bin_64_start - jmp L_2048_from_bin_8_end -L_2048_from_bin_8_start: - subq $8, %r9 - movbeq (%r9), %rax - movq %rax, (%rdi) - addq $8, %rdi - subq $8, %rcx -L_2048_from_bin_8_end: - cmpq $7, %rcx - jg L_2048_from_bin_8_start - cmpq %r11, %rcx - je L_2048_from_bin_hi_end - movq %r11, %r8 - movq %r11, %rax -L_2048_from_bin_hi_start: - movb (%rdx), %al - shlq $8, %r8 - incq %rdx - addq %rax, %r8 - decq %rcx - jg L_2048_from_bin_hi_start - movq %r8, (%rdi) - addq $8, %rdi -L_2048_from_bin_hi_end: - cmpq %r10, %rdi - je L_2048_from_bin_zero_end -L_2048_from_bin_zero_start: - movq %r11, (%rdi) - addq $8, %rdi - cmpq %r10, %rdi - jl L_2048_from_bin_zero_start -L_2048_from_bin_zero_end: - repz retq -#ifndef __APPLE__ -.size sp_2048_from_bin,.-sp_2048_from_bin -#endif /* __APPLE__ */ -/* Write r as big endian to byte array. - * Fixed length number of bytes written: 256 - * - * r A single precision integer. - * a Byte array. - */ -#ifndef __APPLE__ -.globl sp_2048_to_bin -.type sp_2048_to_bin,@function -.align 16 -sp_2048_to_bin: -#else -.globl _sp_2048_to_bin -.p2align 4 -_sp_2048_to_bin: -#endif /* __APPLE__ */ - movbeq 248(%rdi), %rdx - movbeq 240(%rdi), %rax - movq %rdx, (%rsi) - movq %rax, 8(%rsi) - movbeq 232(%rdi), %rdx - movbeq 224(%rdi), %rax - movq %rdx, 16(%rsi) - movq %rax, 24(%rsi) - movbeq 216(%rdi), %rdx - movbeq 208(%rdi), %rax - movq %rdx, 32(%rsi) - movq %rax, 40(%rsi) - movbeq 200(%rdi), %rdx - movbeq 192(%rdi), %rax - movq %rdx, 48(%rsi) - movq %rax, 56(%rsi) - movbeq 184(%rdi), %rdx - movbeq 176(%rdi), %rax - movq %rdx, 64(%rsi) - movq %rax, 72(%rsi) - movbeq 168(%rdi), %rdx - movbeq 160(%rdi), %rax - movq %rdx, 80(%rsi) - movq %rax, 88(%rsi) - movbeq 152(%rdi), %rdx - movbeq 144(%rdi), %rax - movq %rdx, 96(%rsi) - movq %rax, 104(%rsi) - movbeq 136(%rdi), %rdx - movbeq 128(%rdi), %rax - movq %rdx, 112(%rsi) - movq %rax, 120(%rsi) - movbeq 120(%rdi), %rdx - movbeq 112(%rdi), %rax - movq %rdx, 128(%rsi) - movq %rax, 136(%rsi) - movbeq 104(%rdi), %rdx - movbeq 96(%rdi), %rax - movq %rdx, 144(%rsi) - movq %rax, 152(%rsi) - movbeq 88(%rdi), %rdx - movbeq 80(%rdi), %rax - movq %rdx, 160(%rsi) - movq %rax, 168(%rsi) - movbeq 72(%rdi), %rdx - movbeq 64(%rdi), %rax - movq %rdx, 176(%rsi) - movq %rax, 184(%rsi) - movbeq 56(%rdi), %rdx - movbeq 48(%rdi), %rax - movq %rdx, 192(%rsi) - movq %rax, 200(%rsi) - movbeq 40(%rdi), %rdx - movbeq 32(%rdi), %rax - movq %rdx, 208(%rsi) - movq %rax, 216(%rsi) - movbeq 24(%rdi), %rdx - movbeq 16(%rdi), %rax - movq %rdx, 224(%rsi) - movq %rax, 232(%rsi) - movbeq 8(%rdi), %rdx - movbeq (%rdi), %rax - movq %rdx, 240(%rsi) - movq %rax, 248(%rsi) - repz retq -#ifndef __APPLE__ -.size sp_2048_to_bin,.-sp_2048_to_bin -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_16 -.type sp_2048_mul_16,@function -.align 16 -sp_2048_mul_16: -#else -.globl _sp_2048_mul_16 -.p2align 4 -_sp_2048_mul_16: -#endif /* __APPLE__ */ - movq %rdx, %rcx - subq $128, %rsp - # A[0] * B[0] - movq (%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - movq %rax, (%rsp) - movq %rdx, %r9 - # A[0] * B[1] - movq 8(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[0] - movq (%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 8(%rsp) - # A[0] * B[2] - movq 16(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[1] - movq 8(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[0] - movq (%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 16(%rsp) - # A[0] * B[3] - movq 24(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[2] - movq 16(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[1] - movq 8(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[0] - movq (%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 24(%rsp) - # A[0] * B[4] - movq 32(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[3] - movq 24(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[2] - movq 16(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[1] - movq 8(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[0] - movq (%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 32(%rsp) - # A[0] * B[5] - movq 40(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[4] - movq 32(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[3] - movq 24(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[2] - movq 16(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[1] - movq 8(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[0] - movq (%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 40(%rsp) - # A[0] * B[6] - movq 48(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[5] - movq 40(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[4] - movq 32(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[3] - movq 24(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[2] - movq 16(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[1] - movq 8(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[0] - movq (%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 48(%rsp) - # A[0] * B[7] - movq 56(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[6] - movq 48(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[5] - movq 40(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[4] - movq 32(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[3] - movq 24(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[2] - movq 16(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[1] - movq 8(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[0] - movq (%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 56(%rsp) - # A[0] * B[8] - movq 64(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[7] - movq 56(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[6] - movq 48(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[5] - movq 40(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[4] - movq 32(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[3] - movq 24(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[2] - movq 16(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[1] - movq 8(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[0] - movq (%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 64(%rsp) - # A[0] * B[9] - movq 72(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[8] - movq 64(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[7] - movq 56(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[6] - movq 48(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[5] - movq 40(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[4] - movq 32(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[3] - movq 24(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[2] - movq 16(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[1] - movq 8(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[0] - movq (%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 72(%rsp) - # A[0] * B[10] - movq 80(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[9] - movq 72(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[8] - movq 64(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[7] - movq 56(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[6] - movq 48(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[5] - movq 40(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[4] - movq 32(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[3] - movq 24(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[2] - movq 16(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[1] - movq 8(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[0] - movq (%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 80(%rsp) - # A[0] * B[11] - movq 88(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[10] - movq 80(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[9] - movq 72(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[8] - movq 64(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[7] - movq 56(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[6] - movq 48(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[5] - movq 40(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[4] - movq 32(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[3] - movq 24(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[2] - movq 16(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[1] - movq 8(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[0] - movq (%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 88(%rsp) - # A[0] * B[12] - movq 96(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[11] - movq 88(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[10] - movq 80(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[9] - movq 72(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[8] - movq 64(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[7] - movq 56(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[6] - movq 48(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[5] - movq 40(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[4] - movq 32(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[3] - movq 24(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[2] - movq 16(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[1] - movq 8(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[0] - movq (%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 96(%rsp) - # A[0] * B[13] - movq 104(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[12] - movq 96(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[11] - movq 88(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[10] - movq 80(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[9] - movq 72(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[8] - movq 64(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[7] - movq 56(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[6] - movq 48(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[5] - movq 40(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[4] - movq 32(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[3] - movq 24(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[2] - movq 16(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[1] - movq 8(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[0] - movq (%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 104(%rsp) - # A[0] * B[14] - movq 112(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[13] - movq 104(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[12] - movq 96(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[11] - movq 88(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[10] - movq 80(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[9] - movq 72(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[8] - movq 64(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[7] - movq 56(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[6] - movq 48(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[5] - movq 40(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[4] - movq 32(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[3] - movq 24(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[2] - movq 16(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[1] - movq 8(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[0] - movq (%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 112(%rsp) - # A[0] * B[15] - movq 120(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[14] - movq 112(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[13] - movq 104(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[12] - movq 96(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[11] - movq 88(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[10] - movq 80(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[9] - movq 72(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[8] - movq 64(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[7] - movq 56(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[6] - movq 48(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[5] - movq 40(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[4] - movq 32(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[3] - movq 24(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[2] - movq 16(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[1] - movq 8(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[0] - movq (%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 120(%rsp) - # A[1] * B[15] - movq 120(%rcx), %rax - mulq 8(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[14] - movq 112(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[13] - movq 104(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[12] - movq 96(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[11] - movq 88(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[10] - movq 80(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[9] - movq 72(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[8] - movq 64(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[7] - movq 56(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[6] - movq 48(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[5] - movq 40(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[4] - movq 32(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[3] - movq 24(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[2] - movq 16(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[1] - movq 8(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 128(%rdi) - # A[2] * B[15] - movq 120(%rcx), %rax - mulq 16(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[14] - movq 112(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[13] - movq 104(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[12] - movq 96(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[11] - movq 88(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[10] - movq 80(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[9] - movq 72(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[8] - movq 64(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[7] - movq 56(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[6] - movq 48(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[5] - movq 40(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[4] - movq 32(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[3] - movq 24(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[2] - movq 16(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 136(%rdi) - # A[3] * B[15] - movq 120(%rcx), %rax - mulq 24(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[14] - movq 112(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[13] - movq 104(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[12] - movq 96(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[11] - movq 88(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[10] - movq 80(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[9] - movq 72(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[8] - movq 64(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[7] - movq 56(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[6] - movq 48(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[5] - movq 40(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[4] - movq 32(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[3] - movq 24(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 144(%rdi) - # A[4] * B[15] - movq 120(%rcx), %rax - mulq 32(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[14] - movq 112(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[13] - movq 104(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[12] - movq 96(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[11] - movq 88(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[10] - movq 80(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[9] - movq 72(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[8] - movq 64(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[7] - movq 56(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[6] - movq 48(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[5] - movq 40(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[4] - movq 32(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 152(%rdi) - # A[5] * B[15] - movq 120(%rcx), %rax - mulq 40(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[14] - movq 112(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[13] - movq 104(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[12] - movq 96(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[11] - movq 88(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[10] - movq 80(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[9] - movq 72(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[8] - movq 64(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[7] - movq 56(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[6] - movq 48(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[5] - movq 40(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 160(%rdi) - # A[6] * B[15] - movq 120(%rcx), %rax - mulq 48(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[14] - movq 112(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[13] - movq 104(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[12] - movq 96(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[11] - movq 88(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[10] - movq 80(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[9] - movq 72(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[8] - movq 64(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[7] - movq 56(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[6] - movq 48(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 168(%rdi) - # A[7] * B[15] - movq 120(%rcx), %rax - mulq 56(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[14] - movq 112(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[13] - movq 104(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[12] - movq 96(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[11] - movq 88(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[10] - movq 80(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[9] - movq 72(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[8] - movq 64(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[7] - movq 56(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 176(%rdi) - # A[8] * B[15] - movq 120(%rcx), %rax - mulq 64(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[14] - movq 112(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[13] - movq 104(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[12] - movq 96(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[11] - movq 88(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[10] - movq 80(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[9] - movq 72(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[8] - movq 64(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 184(%rdi) - # A[9] * B[15] - movq 120(%rcx), %rax - mulq 72(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[14] - movq 112(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[13] - movq 104(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[12] * B[12] - movq 96(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[11] - movq 88(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[10] - movq 80(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[9] - movq 72(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 192(%rdi) - # A[10] * B[15] - movq 120(%rcx), %rax - mulq 80(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[14] - movq 112(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[12] * B[13] - movq 104(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[13] * B[12] - movq 96(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[11] - movq 88(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[10] - movq 80(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 200(%rdi) - # A[11] * B[15] - movq 120(%rcx), %rax - mulq 88(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B[14] - movq 112(%rcx), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * B[13] - movq 104(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[14] * B[12] - movq 96(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[11] - movq 88(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 208(%rdi) - # A[12] * B[15] - movq 120(%rcx), %rax - mulq 96(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B[14] - movq 112(%rcx), %rax - mulq 104(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[14] * B[13] - movq 104(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[15] * B[12] - movq 96(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 216(%rdi) - # A[13] * B[15] - movq 120(%rcx), %rax - mulq 104(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B[14] - movq 112(%rcx), %rax - mulq 112(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[15] * B[13] - movq 104(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 224(%rdi) - # A[14] * B[15] - movq 120(%rcx), %rax - mulq 112(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B[14] - movq 112(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 232(%rdi) - # A[15] * B[15] - movq 120(%rcx), %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r8 - movq 24(%rsp), %r9 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq 48(%rsp), %r8 - movq 56(%rsp), %r9 - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq 64(%rsp), %rax - movq 72(%rsp), %rdx - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq %rax, 64(%rdi) - movq %rdx, 72(%rdi) - movq %r8, 80(%rdi) - movq %r9, 88(%rdi) - movq 96(%rsp), %rax - movq 104(%rsp), %rdx - movq 112(%rsp), %r8 - movq 120(%rsp), %r9 - movq %rax, 96(%rdi) - movq %rdx, 104(%rdi) - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - addq $128, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_16,.-sp_2048_mul_16 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sqr_16 -.type sp_2048_sqr_16,@function -.align 16 -sp_2048_sqr_16: -#else -.globl _sp_2048_sqr_16 -.p2align 4 -_sp_2048_sqr_16: -#endif /* __APPLE__ */ - push %r12 - subq $128, %rsp - # A[0] * A[0] - movq (%rsi), %rax - mulq %rax - xorq %r9, %r9 - movq %rax, (%rsp) - movq %rdx, %r8 - # A[0] * A[1] - movq 8(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 8(%rsp) - # A[0] * A[2] - movq 16(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[1] * A[1] - movq 8(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 16(%rsp) - # A[0] * A[3] - movq 24(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * A[2] - movq 16(%rsi), %rax - mulq 8(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 24(%rsp) - # A[0] * A[4] - movq 32(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[1] * A[3] - movq 24(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[2] * A[2] - movq 16(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 32(%rsp) - # A[0] * A[5] - movq 40(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[4] - movq 32(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[3] - movq 24(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 40(%rsp) - # A[0] * A[6] - movq 48(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[5] - movq 40(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[4] - movq 32(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[3] - movq 24(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 48(%rsp) - # A[0] * A[7] - movq 56(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[6] - movq 48(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[5] - movq 40(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[4] - movq 32(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 56(%rsp) - # A[0] * A[8] - movq 64(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[7] - movq 56(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[6] - movq 48(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[5] - movq 40(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[4] - movq 32(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 64(%rsp) - # A[0] * A[9] - movq 72(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[8] - movq 64(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[7] - movq 56(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[6] - movq 48(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[5] - movq 40(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 72(%rsp) - # A[0] * A[10] - movq 80(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[9] - movq 72(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[8] - movq 64(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[7] - movq 56(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[6] - movq 48(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[5] - movq 40(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 80(%rsp) - # A[0] * A[11] - movq 88(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[10] - movq 80(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[9] - movq 72(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[8] - movq 64(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[7] - movq 56(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[6] - movq 48(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 88(%rsp) - # A[0] * A[12] - movq 96(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[11] - movq 88(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[10] - movq 80(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[9] - movq 72(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[8] - movq 64(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[7] - movq 56(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[6] - movq 48(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 96(%rsp) - # A[0] * A[13] - movq 104(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[12] - movq 96(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[11] - movq 88(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[10] - movq 80(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[9] - movq 72(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[8] - movq 64(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[7] - movq 56(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 104(%rsp) - # A[0] * A[14] - movq 112(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[13] - movq 104(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[12] - movq 96(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[11] - movq 88(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[10] - movq 80(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[9] - movq 72(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[8] - movq 64(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[7] - movq 56(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 112(%rsp) - # A[0] * A[15] - movq 120(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[14] - movq 112(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[13] - movq 104(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[12] - movq 96(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[11] - movq 88(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[10] - movq 80(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[9] - movq 72(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[8] - movq 64(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 120(%rsp) - # A[1] * A[15] - movq 120(%rsi), %rax - mulq 8(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[2] * A[14] - movq 112(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[13] - movq 104(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[12] - movq 96(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[11] - movq 88(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[10] - movq 80(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[9] - movq 72(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[8] - movq 64(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 128(%rdi) - # A[2] * A[15] - movq 120(%rsi), %rax - mulq 16(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[3] * A[14] - movq 112(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[13] - movq 104(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[12] - movq 96(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[11] - movq 88(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[10] - movq 80(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[9] - movq 72(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 136(%rdi) - # A[3] * A[15] - movq 120(%rsi), %rax - mulq 24(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[4] * A[14] - movq 112(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[13] - movq 104(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[12] - movq 96(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[11] - movq 88(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[10] - movq 80(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[9] - movq 72(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 144(%rdi) - # A[4] * A[15] - movq 120(%rsi), %rax - mulq 32(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[5] * A[14] - movq 112(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[13] - movq 104(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[12] - movq 96(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[11] - movq 88(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[10] - movq 80(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 152(%rdi) - # A[5] * A[15] - movq 120(%rsi), %rax - mulq 40(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[6] * A[14] - movq 112(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[13] - movq 104(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[12] - movq 96(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[11] - movq 88(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[10] - movq 80(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 160(%rdi) - # A[6] * A[15] - movq 120(%rsi), %rax - mulq 48(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[7] * A[14] - movq 112(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[13] - movq 104(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[12] - movq 96(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[11] - movq 88(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 168(%rdi) - # A[7] * A[15] - movq 120(%rsi), %rax - mulq 56(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[8] * A[14] - movq 112(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[9] * A[13] - movq 104(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[12] - movq 96(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[11] - movq 88(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 176(%rdi) - # A[8] * A[15] - movq 120(%rsi), %rax - mulq 64(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[9] * A[14] - movq 112(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[10] * A[13] - movq 104(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[12] - movq 96(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 184(%rdi) - # A[9] * A[15] - movq 120(%rsi), %rax - mulq 72(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[10] * A[14] - movq 112(%rsi), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[11] * A[13] - movq 104(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[12] - movq 96(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 192(%rdi) - # A[10] * A[15] - movq 120(%rsi), %rax - mulq 80(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[11] * A[14] - movq 112(%rsi), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[12] * A[13] - movq 104(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 200(%rdi) - # A[11] * A[15] - movq 120(%rsi), %rax - mulq 88(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[12] * A[14] - movq 112(%rsi), %rax - mulq 96(%rsi) - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[13] * A[13] - movq 104(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 208(%rdi) - # A[12] * A[15] - movq 120(%rsi), %rax - mulq 96(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[13] * A[14] - movq 112(%rsi), %rax - mulq 104(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 216(%rdi) - # A[13] * A[15] - movq 120(%rsi), %rax - mulq 104(%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[14] * A[14] - movq 112(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 224(%rdi) - # A[14] * A[15] - movq 120(%rsi), %rax - mulq 112(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 232(%rdi) - # A[15] * A[15] - movq 120(%rsi), %rax - mulq %rax - addq %rax, %rcx - adcq %rdx, %r8 - movq %rcx, 240(%rdi) - movq %r8, 248(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq 48(%rsp), %r10 - movq 56(%rsp), %r11 - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - movq %r10, 48(%rdi) - movq %r11, 56(%rdi) - movq 64(%rsp), %rax - movq 72(%rsp), %rdx - movq 80(%rsp), %r10 - movq 88(%rsp), %r11 - movq %rax, 64(%rdi) - movq %rdx, 72(%rdi) - movq %r10, 80(%rdi) - movq %r11, 88(%rdi) - movq 96(%rsp), %rax - movq 104(%rsp), %rdx - movq 112(%rsp), %r10 - movq 120(%rsp), %r11 - movq %rax, 96(%rdi) - movq %rdx, 104(%rdi) - movq %r10, 112(%rdi) - movq %r11, 120(%rdi) - addq $128, %rsp - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_sqr_16,.-sp_2048_sqr_16 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Multiply a and b into r. (r = a * b) - * - * r Result of multiplication. - * a First number to multiply. - * b Second number to multiply. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_avx2_16 -.type sp_2048_mul_avx2_16,@function -.align 16 -sp_2048_mul_avx2_16: -#else -.globl _sp_2048_mul_avx2_16 -.p2align 4 -_sp_2048_mul_avx2_16: -#endif /* __APPLE__ */ - push %rbx - push %rbp - push %r12 - push %r13 - push %r14 - movq %rdx, %rbp - subq $128, %rsp - cmpq %rdi, %rsi - movq %rsp, %rbx - cmovne %rdi, %rbx - cmpq %rdi, %rbp - cmove %rsp, %rbx - xorq %r14, %r14 - movq (%rsi), %rdx - # A[0] * B[0] - mulx (%rbp), %r8, %r9 - # A[0] * B[1] - mulx 8(%rbp), %rax, %r10 - movq %r8, (%rbx) - adcxq %rax, %r9 - # A[0] * B[2] - mulx 16(%rbp), %rax, %r11 - movq %r9, 8(%rbx) - adcxq %rax, %r10 - # A[0] * B[3] - mulx 24(%rbp), %rax, %r12 - movq %r10, 16(%rbx) - adcxq %rax, %r11 - movq %r11, 24(%rbx) - # A[0] * B[4] - mulx 32(%rbp), %rax, %r8 - adcxq %rax, %r12 - # A[0] * B[5] - mulx 40(%rbp), %rax, %r9 - movq %r12, 32(%rbx) - adcxq %rax, %r8 - # A[0] * B[6] - mulx 48(%rbp), %rax, %r10 - movq %r8, 40(%rbx) - adcxq %rax, %r9 - # A[0] * B[7] - mulx 56(%rbp), %rax, %r11 - movq %r9, 48(%rbx) - adcxq %rax, %r10 - movq %r10, 56(%rbx) - # A[0] * B[8] - mulx 64(%rbp), %rax, %r12 - adcxq %rax, %r11 - # A[0] * B[9] - mulx 72(%rbp), %rax, %r8 - movq %r11, 64(%rbx) - adcxq %rax, %r12 - # A[0] * B[10] - mulx 80(%rbp), %rax, %r9 - movq %r12, 72(%rbx) - adcxq %rax, %r8 - # A[0] * B[11] - mulx 88(%rbp), %rax, %r10 - movq %r8, 80(%rbx) - adcxq %rax, %r9 - movq %r9, 88(%rbx) - # A[0] * B[12] - mulx 96(%rbp), %rax, %r11 - adcxq %rax, %r10 - # A[0] * B[13] - mulx 104(%rbp), %rax, %r12 - movq %r10, 96(%rbx) - adcxq %rax, %r11 - # A[0] * B[14] - mulx 112(%rbp), %rax, %r8 - movq %r11, 104(%rbx) - adcxq %rax, %r12 - # A[0] * B[15] - mulx 120(%rbp), %rax, %r9 - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adcxq %r14, %r9 - movq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 120(%rbx) - movq %r9, 128(%rdi) - movq 8(%rsi), %rdx - movq 8(%rbx), %r9 - movq 16(%rbx), %r10 - movq 24(%rbx), %r11 - movq 32(%rbx), %r12 - movq 40(%rbx), %r8 - # A[1] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 8(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[1] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, 16(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[1] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, 24(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 32(%rbx) - movq 48(%rbx), %r9 - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - # A[1] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[1] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 40(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r9, 48(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[1] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 64(%rbx) - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - # A[1] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[1] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[1] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rbx) - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - # A[1] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[1] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[1] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[1] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 128(%rdi) - movq %r10, 136(%rdi) - movq 16(%rsi), %rdx - movq 16(%rbx), %r10 - movq 24(%rbx), %r11 - movq 32(%rbx), %r12 - movq 40(%rbx), %r8 - movq 48(%rbx), %r9 - # A[2] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[2] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 16(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[2] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 24(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[2] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 32(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 40(%rbx) - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - # A[2] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[2] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 48(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[2] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[2] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 72(%rbx) - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - # A[2] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[2] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[2] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rbx) - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[2] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[2] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[2] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 136(%rdi) - movq %r11, 144(%rdi) - movq 24(%rsi), %rdx - movq 24(%rbx), %r11 - movq 32(%rbx), %r12 - movq 40(%rbx), %r8 - movq 48(%rbx), %r9 - movq 56(%rbx), %r10 - # A[3] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[3] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, 24(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[3] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 32(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 40(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 48(%rbx) - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - # A[3] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[3] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[3] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[3] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 80(%rbx) - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - # A[3] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[3] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[3] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 112(%rbx) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - # A[3] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[3] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 144(%rdi) - movq %r12, 152(%rdi) - movq 32(%rsi), %rdx - movq 32(%rbx), %r12 - movq 40(%rbx), %r8 - movq 48(%rbx), %r9 - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - # A[4] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[4] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 32(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 40(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 48(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 56(%rbx) - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - # A[4] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[4] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 88(%rbx) - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - # A[4] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[4] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[4] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rbx) - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - # A[4] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[4] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 152(%rdi) - movq %r8, 160(%rdi) - movq 40(%rsi), %rdx - movq 40(%rbx), %r8 - movq 48(%rbx), %r9 - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - # A[5] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 40(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 48(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 64(%rbx) - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - # A[5] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[5] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rbx) - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[5] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[5] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[5] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - # A[5] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[5] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[5] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[5] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 160(%rdi) - movq %r9, 168(%rdi) - movq 48(%rsi), %rdx - movq 48(%rbx), %r9 - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - # A[6] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 48(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 72(%rbx) - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - # A[6] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[6] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rbx) - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - # A[6] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[6] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rdi) - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[6] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[6] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[6] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 168(%rdi) - movq %r10, 176(%rdi) - movq 56(%rsi), %rdx - movq 56(%rbx), %r10 - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - # A[7] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[7] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 56(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[7] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 80(%rbx) - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - # A[7] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[7] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[7] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 112(%rbx) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - # A[7] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[7] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[7] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - # A[7] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[7] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[7] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 176(%rdi) - movq %r11, 184(%rdi) - movq 64(%rsi), %rdx - movq 64(%rbx), %r11 - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - # A[8] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[8] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, 64(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[8] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 88(%rbx) - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - # A[8] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[8] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[8] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rbx) - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - # A[8] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[8] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rdi) - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - # A[8] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[8] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 184(%rdi) - movq %r12, 192(%rdi) - movq 72(%rsi), %rdx - movq 72(%rbx), %r12 - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - # A[9] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[9] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 72(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rbx) - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[9] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[9] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[9] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[9] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[9] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[9] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[9] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rdi) - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - movq 192(%rdi), %r12 - # A[9] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[9] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[9] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 192(%rdi) - movq %r8, 200(%rdi) - movq 80(%rsi), %rdx - movq 80(%rbx), %r8 - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - # A[10] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 80(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 104(%rbx) - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - # A[10] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[10] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rdi) - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - # A[10] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[10] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[10] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rdi) - movq 184(%rdi), %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[10] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[10] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[10] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[10] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r8, 200(%rdi) - movq %r9, 208(%rdi) - movq 88(%rsi), %rdx - movq 88(%rbx), %r9 - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - # A[11] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 88(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[11] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[11] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 112(%rbx) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - # A[11] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[11] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - # A[11] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[11] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 176(%rdi) - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[11] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[11] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[11] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - movq %r14, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r13, %r10 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r9, 208(%rdi) - movq %r10, 216(%rdi) - movq 96(%rsi), %rdx - movq 96(%rbx), %r10 - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - # A[12] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 96(%rbx) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rbx) - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - # A[12] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[12] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 152(%rdi) - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - movq 192(%rdi), %r12 - # A[12] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[12] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 184(%rdi) - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[12] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[12] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - movq %r14, %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - adcxq %r13, %r11 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r10, 216(%rdi) - movq %r11, 224(%rdi) - movq 104(%rsi), %rdx - movq 104(%rbx), %r11 - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[13] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r11, 104(%rbx) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[13] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[13] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rdi) - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - # A[13] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[13] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - movq %r12, 192(%rdi) - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - # A[13] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[13] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - movq %r14, %r12 - adcxq %rax, %r11 - adoxq %rcx, %r12 - adcxq %r13, %r12 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r11, 224(%rdi) - movq %r12, 232(%rdi) - movq 112(%rsi), %rdx - movq 112(%rbx), %r12 - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - # A[14] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r12, 112(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 136(%rdi) - movq 152(%rdi), %r12 - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - # A[14] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r11, 144(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 168(%rdi) - movq 184(%rdi), %r11 - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - # A[14] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 176(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[14] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 200(%rdi) - movq 216(%rdi), %r10 - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - # A[14] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r9, 208(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[14] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[14] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - movq %r14, %r8 - adcxq %rax, %r12 - adoxq %rcx, %r8 - adcxq %r13, %r8 - movq %r14, %r13 - adoxq %r14, %r13 - adcxq %r14, %r13 - movq %r12, 232(%rdi) - movq %r8, 240(%rdi) - movq 120(%rsi), %rdx - movq 120(%rbx), %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - movq 144(%rdi), %r11 - movq 152(%rdi), %r12 - # A[15] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 120(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[2] - mulx 16(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - movq %r11, 144(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - movq 176(%rdi), %r10 - movq 184(%rdi), %r11 - # A[15] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r12, 152(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[6] - mulx 48(%rbp), %rax, %rcx - movq %r8, 160(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 168(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 176(%rdi) - movq 192(%rdi), %r12 - movq 200(%rdi), %r8 - movq 208(%rdi), %r9 - movq 216(%rdi), %r10 - # A[15] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[15] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r11, 184(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[10] - mulx 80(%rbp), %rax, %rcx - movq %r12, 192(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 200(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 208(%rdi) - movq 224(%rdi), %r11 - movq 232(%rdi), %r12 - movq 240(%rdi), %r8 - # A[15] * B[12] - mulx 96(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[15] * B[13] - mulx 104(%rbp), %rax, %rcx - movq %r10, 216(%rdi) - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[15] * B[14] - mulx 112(%rbp), %rax, %rcx - movq %r11, 224(%rdi) - adcxq %rax, %r12 - adoxq %rcx, %r8 - # A[15] * B[15] - mulx 120(%rbp), %rax, %rcx - movq %r12, 232(%rdi) - movq %r14, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r13, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - cmpq %rdi, %rsi - je L_start_2048_mul_avx2_16 - cmpq %rdi, %rbp - jne L_end_2048_mul_avx2_16 -L_start_2048_mul_avx2_16: - vmovdqu (%rbx), %xmm0 - vmovups %xmm0, (%rdi) - vmovdqu 16(%rbx), %xmm0 - vmovups %xmm0, 16(%rdi) - vmovdqu 32(%rbx), %xmm0 - vmovups %xmm0, 32(%rdi) - vmovdqu 48(%rbx), %xmm0 - vmovups %xmm0, 48(%rdi) - vmovdqu 64(%rbx), %xmm0 - vmovups %xmm0, 64(%rdi) - vmovdqu 80(%rbx), %xmm0 - vmovups %xmm0, 80(%rdi) - vmovdqu 96(%rbx), %xmm0 - vmovups %xmm0, 96(%rdi) - vmovdqu 112(%rbx), %xmm0 - vmovups %xmm0, 112(%rdi) -L_end_2048_mul_avx2_16: - addq $128, %rsp - pop %r14 - pop %r13 - pop %r12 - pop %rbp - pop %rbx - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_avx2_16,.-sp_2048_mul_avx2_16 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -#ifdef HAVE_INTEL_AVX2 -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sqr_avx2_16 -.type sp_2048_sqr_avx2_16,@function -.align 16 -sp_2048_sqr_avx2_16: -#else -.globl _sp_2048_sqr_avx2_16 -.p2align 4 -_sp_2048_sqr_avx2_16: -#endif /* __APPLE__ */ - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - subq $128, %rsp - cmpq %rdi, %rsi - movq %rsp, %rbp - cmovne %rdi, %rbp - xorq %r11, %r11 - # Diagonal 1 - xorq %r10, %r10 - # A[1] x A[0] - movq (%rsi), %rdx - mulxq 8(%rsi), %r8, %r9 - # A[2] x A[0] - mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 8(%rbp) - movq %r9, 16(%rbp) - movq %r11, %r8 - movq %r11, %r9 - # A[3] x A[0] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[4] x A[0] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 24(%rbp) - movq %r8, 32(%rbp) - movq %r11, %r10 - movq %r11, %r8 - # A[5] x A[0] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] x A[0] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 40(%rbp) - movq %r10, 48(%rbp) - movq %r11, %r9 - movq %r11, %r10 - # A[7] x A[0] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] x A[0] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 56(%rbp) - movq %r9, 64(%rbp) - movq %r11, %r8 - movq %r11, %r9 - # A[9] x A[0] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[10] x A[0] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 72(%rbp) - movq %r8, 80(%rbp) - movq %r11, %r10 - movq %r11, %r8 - # A[11] x A[0] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] x A[0] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 88(%rbp) - movq %r10, %r13 - movq %r11, %r9 - movq %r11, %r10 - # A[13] x A[0] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[0] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, %r14 - movq %r9, %r15 - movq %r11, %r8 - # A[15] x A[0] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, %rbx - # Carry - adcxq %r11, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 128(%rdi) - # Diagonal 2 - movq 24(%rbp), %r8 - movq 32(%rbp), %r9 - movq 40(%rbp), %r10 - # A[2] x A[1] - movq 8(%rsi), %rdx - mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] x A[1] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 24(%rbp) - movq %r9, 32(%rbp) - movq 48(%rbp), %r8 - movq 56(%rbp), %r9 - # A[4] x A[1] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[5] x A[1] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 40(%rbp) - movq %r8, 48(%rbp) - movq 64(%rbp), %r10 - movq 72(%rbp), %r8 - # A[6] x A[1] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] x A[1] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 56(%rbp) - movq %r10, 64(%rbp) - movq 80(%rbp), %r9 - movq 88(%rbp), %r10 - # A[8] x A[1] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] x A[1] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 72(%rbp) - movq %r9, 80(%rbp) - # No load %r13 - %r8 - # No load %r14 - %r9 - # A[10] x A[1] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r13 - # A[11] x A[1] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %r10, 88(%rbp) - # No store %r13 - # No load %r15 - %r10 - # No load %rbx - %r8 - # A[12] x A[1] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[13] x A[1] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r9 - movq %r11, %r10 - # A[14] x A[1] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r9 - # A[15] x A[1] - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # No store %rbx - movq %r9, 128(%rdi) - movq %r11, %r8 - # A[15] x A[2] - movq 16(%rsi), %rdx - mulxq 120(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 136(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 144(%rdi) - # Diagonal 3 - movq 40(%rbp), %r8 - movq 48(%rbp), %r9 - movq 56(%rbp), %r10 - # A[3] x A[2] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] x A[2] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 40(%rbp) - movq %r9, 48(%rbp) - movq 64(%rbp), %r8 - movq 72(%rbp), %r9 - # A[5] x A[2] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[6] x A[2] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 56(%rbp) - movq %r8, 64(%rbp) - movq 80(%rbp), %r10 - movq 88(%rbp), %r8 - # A[7] x A[2] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] x A[2] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 72(%rbp) - movq %r10, 80(%rbp) - # No load %r13 - %r9 - # No load %r14 - %r10 - # A[9] x A[2] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r13 - # A[10] x A[2] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %r8, 88(%rbp) - # No store %r13 - # No load %r15 - %r8 - # No load %rbx - %r9 - # A[11] x A[2] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[12] x A[2] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r10 - movq 136(%rdi), %r8 - # A[13] x A[2] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r10 - # A[14] x A[2] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # No store %rbx - movq %r10, 128(%rdi) - movq 144(%rdi), %r9 - movq %r11, %r10 - # A[14] x A[3] - movq 112(%rsi), %rdx - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[4] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 136(%rdi) - movq %r9, 144(%rdi) - movq %r11, %r8 - # A[14] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 152(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 160(%rdi) - # Diagonal 4 - movq 56(%rbp), %r8 - movq 64(%rbp), %r9 - movq 72(%rbp), %r10 - # A[4] x A[3] - movq 24(%rsi), %rdx - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] x A[3] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 56(%rbp) - movq %r9, 64(%rbp) - movq 80(%rbp), %r8 - movq 88(%rbp), %r9 - # A[6] x A[3] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[7] x A[3] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 72(%rbp) - movq %r8, 80(%rbp) - # No load %r13 - %r10 - # No load %r14 - %r8 - # A[8] x A[3] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r13 - # A[9] x A[3] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %r9, 88(%rbp) - # No store %r13 - # No load %r15 - %r9 - # No load %rbx - %r10 - # A[10] x A[3] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[11] x A[3] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r8 - movq 136(%rdi), %r9 - # A[12] x A[3] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r8 - # A[13] x A[3] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # No store %rbx - movq %r8, 128(%rdi) - movq 144(%rdi), %r10 - movq 152(%rdi), %r8 - # A[13] x A[4] - movq 104(%rsi), %rdx - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 136(%rdi) - movq %r10, 144(%rdi) - movq 160(%rdi), %r9 - movq %r11, %r10 - # A[13] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 152(%rdi) - movq %r9, 160(%rdi) - movq %r11, %r8 - # A[13] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 168(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 176(%rdi) - # Diagonal 5 - movq 72(%rbp), %r8 - movq 80(%rbp), %r9 - movq 88(%rbp), %r10 - # A[5] x A[4] - movq 32(%rsi), %rdx - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] x A[4] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 72(%rbp) - movq %r9, 80(%rbp) - # No load %r13 - %r8 - # No load %r14 - %r9 - # A[7] x A[4] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r13 - # A[8] x A[4] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %r10, 88(%rbp) - # No store %r13 - # No load %r15 - %r10 - # No load %rbx - %r8 - # A[9] x A[4] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[10] x A[4] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[11] x A[4] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r9 - # A[12] x A[4] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # No store %rbx - movq %r9, 128(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[12] x A[5] - movq 96(%rsi), %rdx - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[12] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 136(%rdi) - movq %r8, 144(%rdi) - movq 160(%rdi), %r10 - movq 168(%rdi), %r8 - # A[12] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[12] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 152(%rdi) - movq %r10, 160(%rdi) - movq 176(%rdi), %r9 - movq %r11, %r10 - # A[12] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[12] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 168(%rdi) - movq %r9, 176(%rdi) - movq %r11, %r8 - # A[12] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 184(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 192(%rdi) - # Diagonal 6 - movq 88(%rbp), %r8 - # No load %r13 - %r9 - # No load %r14 - %r10 - # A[6] x A[5] - movq 40(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r13 - # A[7] x A[5] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %r8, 88(%rbp) - # No store %r13 - # No load %r15 - %r8 - # No load %rbx - %r9 - # A[8] x A[5] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[9] x A[5] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r10 - movq 136(%rdi), %r8 - # A[10] x A[5] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r10 - # A[11] x A[5] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # No store %rbx - movq %r10, 128(%rdi) - movq 144(%rdi), %r9 - movq 152(%rdi), %r10 - # A[11] x A[6] - movq 88(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 136(%rdi) - movq %r9, 144(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[11] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[11] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 152(%rdi) - movq %r8, 160(%rdi) - movq 176(%rdi), %r10 - movq 184(%rdi), %r8 - # A[11] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[13] x A[9] - movq 104(%rsi), %rdx - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 168(%rdi) - movq %r10, 176(%rdi) - movq 192(%rdi), %r9 - movq %r11, %r10 - # A[13] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[13] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 184(%rdi) - movq %r9, 192(%rdi) - movq %r11, %r8 - # A[13] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 200(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 208(%rdi) - # Diagonal 7 - # No load %r14 - %r8 - # No load %r15 - %r9 - # No load %rbx - %r10 - # A[7] x A[6] - movq 48(%rsi), %rdx - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[8] x A[6] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r14 - # No store %r15 - movq 128(%rdi), %r8 - movq 136(%rdi), %r9 - # A[9] x A[6] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r8 - # A[10] x A[6] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # No store %rbx - movq %r8, 128(%rdi) - movq 144(%rdi), %r10 - movq 152(%rdi), %r8 - # A[10] x A[7] - movq 80(%rsi), %rdx - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 136(%rdi) - movq %r10, 144(%rdi) - movq 160(%rdi), %r9 - movq 168(%rdi), %r10 - # A[10] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[6] - movq 112(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 152(%rdi) - movq %r9, 160(%rdi) - movq 176(%rdi), %r8 - movq 184(%rdi), %r9 - # A[14] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[14] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 168(%rdi) - movq %r8, 176(%rdi) - movq 192(%rdi), %r10 - movq 200(%rdi), %r8 - # A[14] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[14] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 184(%rdi) - movq %r10, 192(%rdi) - movq 208(%rdi), %r9 - movq %r11, %r10 - # A[14] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[14] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 200(%rdi) - movq %r9, 208(%rdi) - movq %r11, %r8 - # A[14] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 216(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 224(%rdi) - # Diagonal 8 - # No load %rbx - %r8 - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[8] x A[7] - movq 56(%rsi), %rdx - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r9 - # A[9] x A[7] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # No store %rbx - movq %r9, 128(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[9] x A[8] - movq 64(%rsi), %rdx - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[15] x A[3] - movq 120(%rsi), %rdx - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 136(%rdi) - movq %r8, 144(%rdi) - movq 160(%rdi), %r10 - movq 168(%rdi), %r8 - # A[15] x A[4] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 152(%rdi) - movq %r10, 160(%rdi) - movq 176(%rdi), %r9 - movq 184(%rdi), %r10 - # A[15] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 168(%rdi) - movq %r9, 176(%rdi) - movq 192(%rdi), %r8 - movq 200(%rdi), %r9 - # A[15] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[15] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r10, 184(%rdi) - movq %r8, 192(%rdi) - movq 208(%rdi), %r10 - movq 216(%rdi), %r8 - # A[15] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[15] x A[11] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r9, 200(%rdi) - movq %r10, 208(%rdi) - movq 224(%rdi), %r9 - movq %r11, %r10 - # A[15] x A[12] - mulxq 96(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[15] x A[13] - mulxq 104(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r8, 216(%rdi) - movq %r9, 224(%rdi) - movq %r11, %r8 - # A[15] x A[14] - mulxq 112(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 232(%rdi) - # Carry - adcxq %r12, %r8 - movq %r11, %r12 - adcxq %r11, %r12 - adoxq %r11, %r12 - movq %r8, 240(%rdi) - movq %r12, 248(%rdi) - # Double and Add in A[i] x A[i] - movq 8(%rbp), %r9 - # A[0] x A[0] - movq (%rsi), %rdx - mulxq %rdx, %rax, %rcx - movq %rax, (%rbp) - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r9, 8(%rbp) - movq 16(%rbp), %r8 - movq 24(%rbp), %r9 - # A[1] x A[1] - movq 8(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 16(%rbp) - movq %r9, 24(%rbp) - movq 32(%rbp), %r8 - movq 40(%rbp), %r9 - # A[2] x A[2] - movq 16(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 32(%rbp) - movq %r9, 40(%rbp) - movq 48(%rbp), %r8 - movq 56(%rbp), %r9 - # A[3] x A[3] - movq 24(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 48(%rbp) - movq %r9, 56(%rbp) - movq 64(%rbp), %r8 - movq 72(%rbp), %r9 - # A[4] x A[4] - movq 32(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 64(%rbp) - movq %r9, 72(%rbp) - movq 80(%rbp), %r8 - movq 88(%rbp), %r9 - # A[5] x A[5] - movq 40(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 80(%rbp) - movq %r9, 88(%rbp) - # A[6] x A[6] - movq 48(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r13, %r13 - adoxq %r14, %r14 - adcxq %rax, %r13 - adcxq %rcx, %r14 - # A[7] x A[7] - movq 56(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r15, %r15 - adoxq %rbx, %rbx - adcxq %rax, %r15 - adcxq %rcx, %rbx - movq 128(%rdi), %r8 - movq 136(%rdi), %r9 - # A[8] x A[8] - movq 64(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 128(%rdi) - movq %r9, 136(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[9] x A[9] - movq 72(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 144(%rdi) - movq %r9, 152(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[10] x A[10] - movq 80(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 160(%rdi) - movq %r9, 168(%rdi) - movq 176(%rdi), %r8 - movq 184(%rdi), %r9 - # A[11] x A[11] - movq 88(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq 192(%rdi), %r8 - movq 200(%rdi), %r9 - # A[12] x A[12] - movq 96(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 192(%rdi) - movq %r9, 200(%rdi) - movq 208(%rdi), %r8 - movq 216(%rdi), %r9 - # A[13] x A[13] - movq 104(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 208(%rdi) - movq %r9, 216(%rdi) - movq 224(%rdi), %r8 - movq 232(%rdi), %r9 - # A[14] x A[14] - movq 112(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 224(%rdi) - movq %r9, 232(%rdi) - movq 240(%rdi), %r8 - movq 248(%rdi), %r9 - # A[15] x A[15] - movq 120(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq %r13, 96(%rdi) - movq %r14, 104(%rdi) - movq %r15, 112(%rdi) - movq %rbx, 120(%rdi) - cmpq %rdi, %rsi - jne L_end_2048_sqr_avx2_16 - vmovdqu (%rbp), %xmm0 - vmovups %xmm0, (%rdi) - vmovdqu 16(%rbp), %xmm0 - vmovups %xmm0, 16(%rdi) - vmovdqu 32(%rbp), %xmm0 - vmovups %xmm0, 32(%rdi) - vmovdqu 48(%rbp), %xmm0 - vmovups %xmm0, 48(%rdi) - vmovdqu 64(%rbp), %xmm0 - vmovups %xmm0, 64(%rdi) - vmovdqu 80(%rbp), %xmm0 - vmovups %xmm0, 80(%rdi) -L_end_2048_sqr_avx2_16: - addq $128, %rsp - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %rbp - repz retq -#ifndef __APPLE__ -.size sp_2048_sqr_avx2_16,.-sp_2048_sqr_avx2_16 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_add_16 -.type sp_2048_add_16,@function -.align 16 -sp_2048_add_16: -#else -.globl _sp_2048_add_16 -.p2align 4 -_sp_2048_add_16: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - adcq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - adcq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - adcq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - adcq 120(%rdx), %r8 - movq %r8, 120(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_add_16,.-sp_2048_add_16 -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sub_in_place_32 -.type sp_2048_sub_in_place_32,@function -.align 16 -sp_2048_sub_in_place_32: -#else -.globl _sp_2048_sub_in_place_32 -.p2align 4 -_sp_2048_sub_in_place_32: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq 128(%rdi), %rdx - movq %rcx, 120(%rdi) - sbbq 128(%rsi), %rdx - movq 136(%rdi), %rcx - movq %rdx, 128(%rdi) - sbbq 136(%rsi), %rcx - movq 144(%rdi), %rdx - movq %rcx, 136(%rdi) - sbbq 144(%rsi), %rdx - movq 152(%rdi), %rcx - movq %rdx, 144(%rdi) - sbbq 152(%rsi), %rcx - movq 160(%rdi), %rdx - movq %rcx, 152(%rdi) - sbbq 160(%rsi), %rdx - movq 168(%rdi), %rcx - movq %rdx, 160(%rdi) - sbbq 168(%rsi), %rcx - movq 176(%rdi), %rdx - movq %rcx, 168(%rdi) - sbbq 176(%rsi), %rdx - movq 184(%rdi), %rcx - movq %rdx, 176(%rdi) - sbbq 184(%rsi), %rcx - movq 192(%rdi), %rdx - movq %rcx, 184(%rdi) - sbbq 192(%rsi), %rdx - movq 200(%rdi), %rcx - movq %rdx, 192(%rdi) - sbbq 200(%rsi), %rcx - movq 208(%rdi), %rdx - movq %rcx, 200(%rdi) - sbbq 208(%rsi), %rdx - movq 216(%rdi), %rcx - movq %rdx, 208(%rdi) - sbbq 216(%rsi), %rcx - movq 224(%rdi), %rdx - movq %rcx, 216(%rdi) - sbbq 224(%rsi), %rdx - movq 232(%rdi), %rcx - movq %rdx, 224(%rdi) - sbbq 232(%rsi), %rcx - movq 240(%rdi), %rdx - movq %rcx, 232(%rdi) - sbbq 240(%rsi), %rdx - movq 248(%rdi), %rcx - movq %rdx, 240(%rdi) - sbbq 248(%rsi), %rcx - movq %rcx, 248(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_sub_in_place_32,.-sp_2048_sub_in_place_32 -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_add_32 -.type sp_2048_add_32,@function -.align 16 -sp_2048_add_32: -#else -.globl _sp_2048_add_32 -.p2align 4 -_sp_2048_add_32: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - adcq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - adcq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - adcq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - adcq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - adcq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - adcq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - adcq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - adcq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - adcq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - adcq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - adcq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - adcq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - adcq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - adcq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - adcq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - adcq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - adcq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - adcq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - adcq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - adcq 248(%rdx), %r8 - movq %r8, 248(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_add_32,.-sp_2048_add_32 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_32 -.type sp_2048_mul_32,@function -.align 16 -sp_2048_mul_32: -#else -.globl _sp_2048_mul_32 -.p2align 4 -_sp_2048_mul_32: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $808, %rsp - movq %rdi, 768(%rsp) - movq %rsi, 776(%rsp) - movq %rdx, 784(%rsp) - leaq 512(%rsp), %r10 - leaq 128(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq %rax, 120(%r10) - adcq $0, %r13 - movq %r13, 792(%rsp) - leaq 640(%rsp), %r11 - leaq 128(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq %rax, 120(%r11) - adcq $0, %r14 - movq %r14, 800(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_mul_16@plt -#else - callq _sp_2048_mul_16 -#endif /* __APPLE__ */ - movq 784(%rsp), %rdx - movq 776(%rsp), %rsi - leaq 256(%rsp), %rdi - addq $128, %rdx - addq $128, %rsi -#ifndef __APPLE__ - callq sp_2048_mul_16@plt -#else - callq _sp_2048_mul_16 -#endif /* __APPLE__ */ - movq 784(%rsp), %rdx - movq 776(%rsp), %rsi - movq 768(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_mul_16@plt -#else - callq _sp_2048_mul_16 -#endif /* __APPLE__ */ - movq 792(%rsp), %r13 - movq 800(%rsp), %r14 - movq 768(%rsp), %r15 - movq %r13, %r9 - leaq 512(%rsp), %r10 - leaq 640(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $256, %r15 - movq (%r10), %rax - movq (%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, (%r10) - movq %rcx, (%r11) - movq 8(%r10), %rax - movq 8(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 8(%r10) - movq %rcx, 8(%r11) - movq 16(%r10), %rax - movq 16(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 16(%r10) - movq %rcx, 16(%r11) - movq 24(%r10), %rax - movq 24(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 24(%r10) - movq %rcx, 24(%r11) - movq 32(%r10), %rax - movq 32(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 32(%r10) - movq %rcx, 32(%r11) - movq 40(%r10), %rax - movq 40(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 40(%r10) - movq %rcx, 40(%r11) - movq 48(%r10), %rax - movq 48(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 48(%r10) - movq %rcx, 48(%r11) - movq 56(%r10), %rax - movq 56(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 56(%r10) - movq %rcx, 56(%r11) - movq 64(%r10), %rax - movq 64(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 64(%r10) - movq %rcx, 64(%r11) - movq 72(%r10), %rax - movq 72(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 72(%r10) - movq %rcx, 72(%r11) - movq 80(%r10), %rax - movq 80(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 80(%r10) - movq %rcx, 80(%r11) - movq 88(%r10), %rax - movq 88(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 88(%r10) - movq %rcx, 88(%r11) - movq 96(%r10), %rax - movq 96(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 96(%r10) - movq %rcx, 96(%r11) - movq 104(%r10), %rax - movq 104(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 104(%r10) - movq %rcx, 104(%r11) - movq 112(%r10), %rax - movq 112(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 112(%r10) - movq %rcx, 112(%r11) - movq 120(%r10), %rax - movq 120(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 120(%r10) - movq %rcx, 120(%r11) - movq (%r10), %rax - addq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq %rax, 120(%r15) - adcq $0, %r9 - leaq 256(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq %rcx, 248(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq %rcx, 248(%r10) - sbbq $0, %r9 - subq $128, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq %rcx, 248(%r15) - adcq $0, %r9 - movq %r9, 384(%rdi) - addq $128, %r15 - # Add - movq (%r15), %rax - xorq %r9, %r9 - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq %rcx, 128(%r15) - adcq $0, %r9 - # Add to zero - movq 136(%r11), %rax - adcq $0, %rax - movq 144(%r11), %rcx - movq %rax, 136(%r15) - adcq $0, %rcx - movq 152(%r11), %r8 - movq %rcx, 144(%r15) - adcq $0, %r8 - movq 160(%r11), %rax - movq %r8, 152(%r15) - adcq $0, %rax - movq 168(%r11), %rcx - movq %rax, 160(%r15) - adcq $0, %rcx - movq 176(%r11), %r8 - movq %rcx, 168(%r15) - adcq $0, %r8 - movq 184(%r11), %rax - movq %r8, 176(%r15) - adcq $0, %rax - movq 192(%r11), %rcx - movq %rax, 184(%r15) - adcq $0, %rcx - movq 200(%r11), %r8 - movq %rcx, 192(%r15) - adcq $0, %r8 - movq 208(%r11), %rax - movq %r8, 200(%r15) - adcq $0, %rax - movq 216(%r11), %rcx - movq %rax, 208(%r15) - adcq $0, %rcx - movq 224(%r11), %r8 - movq %rcx, 216(%r15) - adcq $0, %r8 - movq 232(%r11), %rax - movq %r8, 224(%r15) - adcq $0, %rax - movq 240(%r11), %rcx - movq %rax, 232(%r15) - adcq $0, %rcx - movq 248(%r11), %r8 - movq %rcx, 240(%r15) - adcq $0, %r8 - movq %r8, 248(%r15) - addq $808, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_32,.-sp_2048_mul_32 -#endif /* __APPLE__ */ -/* Add a to a into r. (r = a + a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_dbl_16 -.type sp_2048_dbl_16,@function -.align 16 -sp_2048_dbl_16: -#else -.globl _sp_2048_dbl_16 -.p2align 4 -_sp_2048_dbl_16: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - xorq %rax, %rax - addq %rdx, %rdx - movq 8(%rsi), %rcx - movq %rdx, (%rdi) - adcq %rcx, %rcx - movq 16(%rsi), %rdx - movq %rcx, 8(%rdi) - adcq %rdx, %rdx - movq 24(%rsi), %rcx - movq %rdx, 16(%rdi) - adcq %rcx, %rcx - movq 32(%rsi), %rdx - movq %rcx, 24(%rdi) - adcq %rdx, %rdx - movq 40(%rsi), %rcx - movq %rdx, 32(%rdi) - adcq %rcx, %rcx - movq 48(%rsi), %rdx - movq %rcx, 40(%rdi) - adcq %rdx, %rdx - movq 56(%rsi), %rcx - movq %rdx, 48(%rdi) - adcq %rcx, %rcx - movq 64(%rsi), %rdx - movq %rcx, 56(%rdi) - adcq %rdx, %rdx - movq 72(%rsi), %rcx - movq %rdx, 64(%rdi) - adcq %rcx, %rcx - movq 80(%rsi), %rdx - movq %rcx, 72(%rdi) - adcq %rdx, %rdx - movq 88(%rsi), %rcx - movq %rdx, 80(%rdi) - adcq %rcx, %rcx - movq 96(%rsi), %rdx - movq %rcx, 88(%rdi) - adcq %rdx, %rdx - movq 104(%rsi), %rcx - movq %rdx, 96(%rdi) - adcq %rcx, %rcx - movq 112(%rsi), %rdx - movq %rcx, 104(%rdi) - adcq %rdx, %rdx - movq 120(%rsi), %rcx - movq %rdx, 112(%rdi) - adcq %rcx, %rcx - movq %rcx, 120(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_dbl_16,.-sp_2048_dbl_16 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sqr_32 -.type sp_2048_sqr_32,@function -.align 16 -sp_2048_sqr_32: -#else -.globl _sp_2048_sqr_32 -.p2align 4 -_sp_2048_sqr_32: -#endif /* __APPLE__ */ - subq $664, %rsp - movq %rdi, 640(%rsp) - movq %rsi, 648(%rsp) - leaq 512(%rsp), %r8 - leaq 128(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq %rax, 120(%r8) - adcq $0, %rcx - movq %rcx, 656(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_16@plt -#else - callq _sp_2048_sqr_16 -#endif /* __APPLE__ */ - movq 648(%rsp), %rsi - leaq 256(%rsp), %rdi - addq $128, %rsi -#ifndef __APPLE__ - callq sp_2048_sqr_16@plt -#else - callq _sp_2048_sqr_16 -#endif /* __APPLE__ */ - movq 648(%rsp), %rsi - movq 640(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_16@plt -#else - callq _sp_2048_sqr_16 -#endif /* __APPLE__ */ - movq 656(%rsp), %r10 - leaq 512(%rsp), %r8 - movq %r10, %rcx - negq %r10 - movq (%r8), %rdx - movq 8(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 256(%rdi) - movq %rax, 264(%rdi) - movq 16(%r8), %rdx - movq 24(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 272(%rdi) - movq %rax, 280(%rdi) - movq 32(%r8), %rdx - movq 40(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 288(%rdi) - movq %rax, 296(%rdi) - movq 48(%r8), %rdx - movq 56(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 304(%rdi) - movq %rax, 312(%rdi) - movq 64(%r8), %rdx - movq 72(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 320(%rdi) - movq %rax, 328(%rdi) - movq 80(%r8), %rdx - movq 88(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 336(%rdi) - movq %rax, 344(%rdi) - movq 96(%r8), %rdx - movq 104(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 352(%rdi) - movq %rax, 360(%rdi) - movq 112(%r8), %rdx - movq 120(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 368(%rdi) - movq %rax, 376(%rdi) - movq 256(%rdi), %rdx - addq %rdx, %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq %rax, %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq %rdx, %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq %rax, %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq %rdx, %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq %rax, %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq %rdx, %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq %rax, %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq %rdx, %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq %rax, %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq %rdx, %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq %rax, %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq %rdx, %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq %rax, %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq %rdx, %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq %rax, %rax - movq %rax, 376(%rdi) - adcq $0, %rcx - leaq 256(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq %rax, 248(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq %rax, 248(%r8) - sbbq $0, %rcx - # Add in place - movq 128(%rdi), %rdx - addq (%r8), %rdx - movq 136(%rdi), %rax - movq %rdx, 128(%rdi) - adcq 8(%r8), %rax - movq 144(%rdi), %rdx - movq %rax, 136(%rdi) - adcq 16(%r8), %rdx - movq 152(%rdi), %rax - movq %rdx, 144(%rdi) - adcq 24(%r8), %rax - movq 160(%rdi), %rdx - movq %rax, 152(%rdi) - adcq 32(%r8), %rdx - movq 168(%rdi), %rax - movq %rdx, 160(%rdi) - adcq 40(%r8), %rax - movq 176(%rdi), %rdx - movq %rax, 168(%rdi) - adcq 48(%r8), %rdx - movq 184(%rdi), %rax - movq %rdx, 176(%rdi) - adcq 56(%r8), %rax - movq 192(%rdi), %rdx - movq %rax, 184(%rdi) - adcq 64(%r8), %rdx - movq 200(%rdi), %rax - movq %rdx, 192(%rdi) - adcq 72(%r8), %rax - movq 208(%rdi), %rdx - movq %rax, 200(%rdi) - adcq 80(%r8), %rdx - movq 216(%rdi), %rax - movq %rdx, 208(%rdi) - adcq 88(%r8), %rax - movq 224(%rdi), %rdx - movq %rax, 216(%rdi) - adcq 96(%r8), %rdx - movq 232(%rdi), %rax - movq %rdx, 224(%rdi) - adcq 104(%r8), %rax - movq 240(%rdi), %rdx - movq %rax, 232(%rdi) - adcq 112(%r8), %rdx - movq 248(%rdi), %rax - movq %rdx, 240(%rdi) - adcq 120(%r8), %rax - movq 256(%rdi), %rdx - movq %rax, 248(%rdi) - adcq 128(%r8), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 136(%r8), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 144(%r8), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 152(%r8), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 160(%r8), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 168(%r8), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 176(%r8), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 184(%r8), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 192(%r8), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 200(%r8), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 208(%r8), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 216(%r8), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 224(%r8), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 232(%r8), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 240(%r8), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 248(%r8), %rax - movq %rax, 376(%rdi) - adcq $0, %rcx - movq %rcx, 384(%rdi) - # Add in place - movq 256(%rdi), %rdx - xorq %rcx, %rcx - addq (%rsi), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 8(%rsi), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 16(%rsi), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 24(%rsi), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 32(%rsi), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 40(%rsi), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 48(%rsi), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 56(%rsi), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 64(%rsi), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 72(%rsi), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 80(%rsi), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 88(%rsi), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 96(%rsi), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 104(%rsi), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 112(%rsi), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 120(%rsi), %rax - movq 384(%rdi), %rdx - movq %rax, 376(%rdi) - adcq 128(%rsi), %rdx - movq %rdx, 384(%rdi) - adcq $0, %rcx - # Add to zero - movq 136(%rsi), %rdx - adcq $0, %rdx - movq 144(%rsi), %rax - movq %rdx, 392(%rdi) - adcq $0, %rax - movq 152(%rsi), %rdx - movq %rax, 400(%rdi) - adcq $0, %rdx - movq 160(%rsi), %rax - movq %rdx, 408(%rdi) - adcq $0, %rax - movq 168(%rsi), %rdx - movq %rax, 416(%rdi) - adcq $0, %rdx - movq 176(%rsi), %rax - movq %rdx, 424(%rdi) - adcq $0, %rax - movq 184(%rsi), %rdx - movq %rax, 432(%rdi) - adcq $0, %rdx - movq 192(%rsi), %rax - movq %rdx, 440(%rdi) - adcq $0, %rax - movq 200(%rsi), %rdx - movq %rax, 448(%rdi) - adcq $0, %rdx - movq 208(%rsi), %rax - movq %rdx, 456(%rdi) - adcq $0, %rax - movq 216(%rsi), %rdx - movq %rax, 464(%rdi) - adcq $0, %rdx - movq 224(%rsi), %rax - movq %rdx, 472(%rdi) - adcq $0, %rax - movq 232(%rsi), %rdx - movq %rax, 480(%rdi) - adcq $0, %rdx - movq 240(%rsi), %rax - movq %rdx, 488(%rdi) - adcq $0, %rax - movq 248(%rsi), %rdx - movq %rax, 496(%rdi) - adcq $0, %rdx - movq %rdx, 504(%rdi) - addq $664, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_sqr_32,.-sp_2048_sqr_32 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_avx2_32 -.type sp_2048_mul_avx2_32,@function -.align 16 -sp_2048_mul_avx2_32: -#else -.globl _sp_2048_mul_avx2_32 -.p2align 4 -_sp_2048_mul_avx2_32: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $808, %rsp - movq %rdi, 768(%rsp) - movq %rsi, 776(%rsp) - movq %rdx, 784(%rsp) - leaq 512(%rsp), %r10 - leaq 128(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq %rax, 120(%r10) - adcq $0, %r13 - movq %r13, 792(%rsp) - leaq 640(%rsp), %r11 - leaq 128(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq %rax, 120(%r11) - adcq $0, %r14 - movq %r14, 800(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_16@plt -#else - callq _sp_2048_mul_avx2_16 -#endif /* __APPLE__ */ - movq 784(%rsp), %rdx - movq 776(%rsp), %rsi - leaq 256(%rsp), %rdi - addq $128, %rdx - addq $128, %rsi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_16@plt -#else - callq _sp_2048_mul_avx2_16 -#endif /* __APPLE__ */ - movq 784(%rsp), %rdx - movq 776(%rsp), %rsi - movq 768(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_16@plt -#else - callq _sp_2048_mul_avx2_16 -#endif /* __APPLE__ */ - movq 792(%rsp), %r13 - movq 800(%rsp), %r14 - movq 768(%rsp), %r15 - movq %r13, %r9 - leaq 512(%rsp), %r10 - leaq 640(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $256, %r15 - movq (%r10), %rax - movq (%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - addq %rcx, %rax - movq 8(%r10), %rcx - movq 8(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, (%r15) - adcq %r8, %rcx - movq 16(%r10), %r8 - movq 16(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 8(%r15) - adcq %rax, %r8 - movq 24(%r10), %rax - movq 24(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 16(%r15) - adcq %rcx, %rax - movq 32(%r10), %rcx - movq 32(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 24(%r15) - adcq %r8, %rcx - movq 40(%r10), %r8 - movq 40(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 32(%r15) - adcq %rax, %r8 - movq 48(%r10), %rax - movq 48(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 40(%r15) - adcq %rcx, %rax - movq 56(%r10), %rcx - movq 56(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 48(%r15) - adcq %r8, %rcx - movq 64(%r10), %r8 - movq 64(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 56(%r15) - adcq %rax, %r8 - movq 72(%r10), %rax - movq 72(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 64(%r15) - adcq %rcx, %rax - movq 80(%r10), %rcx - movq 80(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 72(%r15) - adcq %r8, %rcx - movq 88(%r10), %r8 - movq 88(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 80(%r15) - adcq %rax, %r8 - movq 96(%r10), %rax - movq 96(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 88(%r15) - adcq %rcx, %rax - movq 104(%r10), %rcx - movq 104(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 96(%r15) - adcq %r8, %rcx - movq 112(%r10), %r8 - movq 112(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 104(%r15) - adcq %rax, %r8 - movq 120(%r10), %rax - movq 120(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 112(%r15) - adcq %rcx, %rax - movq %rax, 120(%r15) - adcq $0, %r9 - leaq 256(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq %rcx, 248(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq %rcx, 248(%r10) - sbbq $0, %r9 - subq $128, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq %rcx, 248(%r15) - adcq $0, %r9 - movq %r9, 384(%rdi) - addq $128, %r15 - # Add - movq (%r15), %rax - xorq %r9, %r9 - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq %rcx, 128(%r15) - adcq $0, %r9 - # Add to zero - movq 136(%r11), %rax - adcq $0, %rax - movq 144(%r11), %rcx - movq %rax, 136(%r15) - adcq $0, %rcx - movq 152(%r11), %r8 - movq %rcx, 144(%r15) - adcq $0, %r8 - movq 160(%r11), %rax - movq %r8, 152(%r15) - adcq $0, %rax - movq 168(%r11), %rcx - movq %rax, 160(%r15) - adcq $0, %rcx - movq 176(%r11), %r8 - movq %rcx, 168(%r15) - adcq $0, %r8 - movq 184(%r11), %rax - movq %r8, 176(%r15) - adcq $0, %rax - movq 192(%r11), %rcx - movq %rax, 184(%r15) - adcq $0, %rcx - movq 200(%r11), %r8 - movq %rcx, 192(%r15) - adcq $0, %r8 - movq 208(%r11), %rax - movq %r8, 200(%r15) - adcq $0, %rax - movq 216(%r11), %rcx - movq %rax, 208(%r15) - adcq $0, %rcx - movq 224(%r11), %r8 - movq %rcx, 216(%r15) - adcq $0, %r8 - movq 232(%r11), %rax - movq %r8, 224(%r15) - adcq $0, %rax - movq 240(%r11), %rcx - movq %rax, 232(%r15) - adcq $0, %rcx - movq 248(%r11), %r8 - movq %rcx, 240(%r15) - adcq $0, %r8 - movq %r8, 248(%r15) - addq $808, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_avx2_32,.-sp_2048_mul_avx2_32 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sqr_avx2_32 -.type sp_2048_sqr_avx2_32,@function -.align 16 -sp_2048_sqr_avx2_32: -#else -.globl _sp_2048_sqr_avx2_32 -.p2align 4 -_sp_2048_sqr_avx2_32: -#endif /* __APPLE__ */ - subq $664, %rsp - movq %rdi, 640(%rsp) - movq %rsi, 648(%rsp) - leaq 512(%rsp), %r8 - leaq 128(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq %rax, 120(%r8) - adcq $0, %rcx - movq %rcx, 656(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_16@plt -#else - callq _sp_2048_sqr_avx2_16 -#endif /* __APPLE__ */ - movq 648(%rsp), %rsi - leaq 256(%rsp), %rdi - addq $128, %rsi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_16@plt -#else - callq _sp_2048_sqr_avx2_16 -#endif /* __APPLE__ */ - movq 648(%rsp), %rsi - movq 640(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_16@plt -#else - callq _sp_2048_sqr_avx2_16 -#endif /* __APPLE__ */ - movq 656(%rsp), %r10 - leaq 512(%rsp), %r8 - movq %r10, %rcx - negq %r10 - movq (%r8), %rdx - pextq %r10, %rdx, %rdx - addq %rdx, %rdx - movq 8(%r8), %rax - movq %rdx, 256(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 16(%r8), %rdx - movq %rax, 264(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 24(%r8), %rax - movq %rdx, 272(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 32(%r8), %rdx - movq %rax, 280(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 40(%r8), %rax - movq %rdx, 288(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 48(%r8), %rdx - movq %rax, 296(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 56(%r8), %rax - movq %rdx, 304(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 64(%r8), %rdx - movq %rax, 312(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 72(%r8), %rax - movq %rdx, 320(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 80(%r8), %rdx - movq %rax, 328(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 88(%r8), %rax - movq %rdx, 336(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 96(%r8), %rdx - movq %rax, 344(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 104(%r8), %rax - movq %rdx, 352(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 112(%r8), %rdx - movq %rax, 360(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 120(%r8), %rax - movq %rdx, 368(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq %rax, 376(%rdi) - adcq $0, %rcx - leaq 256(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq %rax, 248(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq %rax, 248(%r8) - sbbq $0, %rcx - # Add in place - movq 128(%rdi), %rdx - addq (%r8), %rdx - movq 136(%rdi), %rax - movq %rdx, 128(%rdi) - adcq 8(%r8), %rax - movq 144(%rdi), %rdx - movq %rax, 136(%rdi) - adcq 16(%r8), %rdx - movq 152(%rdi), %rax - movq %rdx, 144(%rdi) - adcq 24(%r8), %rax - movq 160(%rdi), %rdx - movq %rax, 152(%rdi) - adcq 32(%r8), %rdx - movq 168(%rdi), %rax - movq %rdx, 160(%rdi) - adcq 40(%r8), %rax - movq 176(%rdi), %rdx - movq %rax, 168(%rdi) - adcq 48(%r8), %rdx - movq 184(%rdi), %rax - movq %rdx, 176(%rdi) - adcq 56(%r8), %rax - movq 192(%rdi), %rdx - movq %rax, 184(%rdi) - adcq 64(%r8), %rdx - movq 200(%rdi), %rax - movq %rdx, 192(%rdi) - adcq 72(%r8), %rax - movq 208(%rdi), %rdx - movq %rax, 200(%rdi) - adcq 80(%r8), %rdx - movq 216(%rdi), %rax - movq %rdx, 208(%rdi) - adcq 88(%r8), %rax - movq 224(%rdi), %rdx - movq %rax, 216(%rdi) - adcq 96(%r8), %rdx - movq 232(%rdi), %rax - movq %rdx, 224(%rdi) - adcq 104(%r8), %rax - movq 240(%rdi), %rdx - movq %rax, 232(%rdi) - adcq 112(%r8), %rdx - movq 248(%rdi), %rax - movq %rdx, 240(%rdi) - adcq 120(%r8), %rax - movq 256(%rdi), %rdx - movq %rax, 248(%rdi) - adcq 128(%r8), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 136(%r8), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 144(%r8), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 152(%r8), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 160(%r8), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 168(%r8), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 176(%r8), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 184(%r8), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 192(%r8), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 200(%r8), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 208(%r8), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 216(%r8), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 224(%r8), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 232(%r8), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 240(%r8), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 248(%r8), %rax - movq %rax, 376(%rdi) - adcq $0, %rcx - movq %rcx, 384(%rdi) - # Add in place - movq 256(%rdi), %rdx - xorq %rcx, %rcx - addq (%rsi), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 8(%rsi), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 16(%rsi), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 24(%rsi), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 32(%rsi), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 40(%rsi), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 48(%rsi), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 56(%rsi), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 64(%rsi), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 72(%rsi), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 80(%rsi), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 88(%rsi), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 96(%rsi), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 104(%rsi), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 112(%rsi), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 120(%rsi), %rax - movq 384(%rdi), %rdx - movq %rax, 376(%rdi) - adcq 128(%rsi), %rdx - movq %rdx, 384(%rdi) - adcq $0, %rcx - # Add to zero - movq 136(%rsi), %rdx - adcq $0, %rdx - movq 144(%rsi), %rax - movq %rdx, 392(%rdi) - adcq $0, %rax - movq 152(%rsi), %rdx - movq %rax, 400(%rdi) - adcq $0, %rdx - movq 160(%rsi), %rax - movq %rdx, 408(%rdi) - adcq $0, %rax - movq 168(%rsi), %rdx - movq %rax, 416(%rdi) - adcq $0, %rdx - movq 176(%rsi), %rax - movq %rdx, 424(%rdi) - adcq $0, %rax - movq 184(%rsi), %rdx - movq %rax, 432(%rdi) - adcq $0, %rdx - movq 192(%rsi), %rax - movq %rdx, 440(%rdi) - adcq $0, %rax - movq 200(%rsi), %rdx - movq %rax, 448(%rdi) - adcq $0, %rdx - movq 208(%rsi), %rax - movq %rdx, 456(%rdi) - adcq $0, %rax - movq 216(%rsi), %rdx - movq %rax, 464(%rdi) - adcq $0, %rdx - movq 224(%rsi), %rax - movq %rdx, 472(%rdi) - adcq $0, %rax - movq 232(%rsi), %rdx - movq %rax, 480(%rdi) - adcq $0, %rdx - movq 240(%rsi), %rax - movq %rdx, 488(%rdi) - adcq $0, %rax - movq 248(%rsi), %rdx - movq %rax, 496(%rdi) - adcq $0, %rdx - movq %rdx, 504(%rdi) - addq $664, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_sqr_avx2_32,.-sp_2048_sqr_avx2_32 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_d_32 -.type sp_2048_mul_d_32,@function -.align 16 -sp_2048_mul_d_32: -#else -.globl _sp_2048_mul_d_32 -.p2align 4 -_sp_2048_mul_d_32: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 40(%rsi) - addq %rax, %r10 - movq %r10, 40(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 48(%rsi) - addq %rax, %r8 - movq %r8, 48(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 56(%rsi) - addq %rax, %r9 - movq %r9, 56(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 64(%rsi) - addq %rax, %r10 - movq %r10, 64(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 72(%rsi) - addq %rax, %r8 - movq %r8, 72(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 80(%rsi) - addq %rax, %r9 - movq %r9, 80(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 88(%rsi) - addq %rax, %r10 - movq %r10, 88(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 96(%rsi) - addq %rax, %r8 - movq %r8, 96(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 104(%rsi) - addq %rax, %r9 - movq %r9, 104(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 112(%rsi) - addq %rax, %r10 - movq %r10, 112(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 120(%rsi) - addq %rax, %r8 - movq %r8, 120(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 128(%rsi) - addq %rax, %r9 - movq %r9, 128(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 136(%rsi) - addq %rax, %r10 - movq %r10, 136(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 144(%rsi) - addq %rax, %r8 - movq %r8, 144(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 152(%rsi) - addq %rax, %r9 - movq %r9, 152(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 160(%rsi) - addq %rax, %r10 - movq %r10, 160(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 168(%rsi) - addq %rax, %r8 - movq %r8, 168(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 176(%rsi) - addq %rax, %r9 - movq %r9, 176(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 184(%rsi) - addq %rax, %r10 - movq %r10, 184(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[24] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 192(%rsi) - addq %rax, %r8 - movq %r8, 192(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[25] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 200(%rsi) - addq %rax, %r9 - movq %r9, 200(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[26] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 208(%rsi) - addq %rax, %r10 - movq %r10, 208(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[27] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 216(%rsi) - addq %rax, %r8 - movq %r8, 216(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[28] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 224(%rsi) - addq %rax, %r9 - movq %r9, 224(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[29] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 232(%rsi) - addq %rax, %r10 - movq %r10, 232(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[30] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 240(%rsi) - addq %rax, %r8 - movq %r8, 240(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[31] * B - movq %rcx, %rax - mulq 248(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - movq %r9, 248(%rdi) - movq %r10, 256(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_d_32,.-sp_2048_mul_d_32 -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sub_in_place_16 -.type sp_2048_sub_in_place_16,@function -.align 16 -sp_2048_sub_in_place_16: -#else -.globl _sp_2048_sub_in_place_16 -.p2align 4 -_sp_2048_sub_in_place_16: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq %rcx, 120(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_sub_in_place_16,.-sp_2048_sub_in_place_16 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_sub_16 -.type sp_2048_cond_sub_16,@function -.align 16 -sp_2048_cond_sub_16: -#else -.globl _sp_2048_cond_sub_16 -.p2align 4 -_sp_2048_cond_sub_16: -#endif /* __APPLE__ */ - subq $128, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - sbbq $0, %rax - addq $128, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_sub_16,.-sp_2048_cond_sub_16 -#endif /* __APPLE__ */ -/* Reduce the number back to 2048 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_2048_mont_reduce_16 -.type sp_2048_mont_reduce_16,@function -.align 16 -sp_2048_mont_reduce_16: -#else -.globl _sp_2048_mont_reduce_16 -.p2align 4 -_sp_2048_mont_reduce_16: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 16 - movq $16, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_16: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq $0, %r9 - # a[i+6] += m[6] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 48(%rsi) - movq 48(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 48(%rdi) - adcq $0, %r10 - # a[i+7] += m[7] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 56(%rsi) - movq 56(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 56(%rdi) - adcq $0, %r9 - # a[i+8] += m[8] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 64(%rsi) - movq 64(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 64(%rdi) - adcq $0, %r10 - # a[i+9] += m[9] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 72(%rsi) - movq 72(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 72(%rdi) - adcq $0, %r9 - # a[i+10] += m[10] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 80(%rsi) - movq 80(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 80(%rdi) - adcq $0, %r10 - # a[i+11] += m[11] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 88(%rsi) - movq 88(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 88(%rdi) - adcq $0, %r9 - # a[i+12] += m[12] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 96(%rsi) - movq 96(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 96(%rdi) - adcq $0, %r10 - # a[i+13] += m[13] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 104(%rsi) - movq 104(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 104(%rdi) - adcq $0, %r9 - # a[i+14] += m[14] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 112(%rsi) - movq 112(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 112(%rdi) - adcq $0, %r10 - # a[i+15] += m[15] * mu - movq %r11, %rax - mulq 120(%rsi) - movq 120(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 120(%rdi) - adcq %rdx, 128(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_16 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $128, %rdi -#ifndef __APPLE__ - callq sp_2048_cond_sub_16@plt -#else - callq _sp_2048_cond_sub_16 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mont_reduce_16,.-sp_2048_mont_reduce_16 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_sub_avx2_16 -.type sp_2048_cond_sub_avx2_16,@function -.align 16 -sp_2048_cond_sub_avx2_16: -#else -.globl _sp_2048_cond_sub_avx2_16 -.p2align 4 -_sp_2048_cond_sub_avx2_16: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - sbbq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - sbbq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - sbbq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - sbbq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - sbbq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - sbbq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - sbbq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - sbbq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - sbbq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - sbbq %r9, %r8 - movq %r8, 120(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_sub_avx2_16,.-sp_2048_cond_sub_avx2_16 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_d_16 -.type sp_2048_mul_d_16,@function -.align 16 -sp_2048_mul_d_16: -#else -.globl _sp_2048_mul_d_16 -.p2align 4 -_sp_2048_mul_d_16: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 40(%rsi) - addq %rax, %r10 - movq %r10, 40(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 48(%rsi) - addq %rax, %r8 - movq %r8, 48(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 56(%rsi) - addq %rax, %r9 - movq %r9, 56(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 64(%rsi) - addq %rax, %r10 - movq %r10, 64(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 72(%rsi) - addq %rax, %r8 - movq %r8, 72(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 80(%rsi) - addq %rax, %r9 - movq %r9, 80(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 88(%rsi) - addq %rax, %r10 - movq %r10, 88(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 96(%rsi) - addq %rax, %r8 - movq %r8, 96(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 104(%rsi) - addq %rax, %r9 - movq %r9, 104(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 112(%rsi) - addq %rax, %r10 - movq %r10, 112(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B - movq %rcx, %rax - mulq 120(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 120(%rdi) - movq %r9, 128(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_d_16,.-sp_2048_mul_d_16 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_d_avx2_16 -.type sp_2048_mul_d_avx2_16,@function -.align 16 -sp_2048_mul_d_avx2_16: -#else -.globl _sp_2048_mul_d_avx2_16 -.p2align 4 -_sp_2048_mul_d_avx2_16: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 40(%rdi) - adoxq %r8, %r9 - # A[6] * B - mulxq 48(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 48(%rdi) - adoxq %r8, %r10 - # A[7] * B - mulxq 56(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 56(%rdi) - adoxq %r8, %r9 - # A[8] * B - mulxq 64(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 64(%rdi) - adoxq %r8, %r10 - # A[9] * B - mulxq 72(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 72(%rdi) - adoxq %r8, %r9 - # A[10] * B - mulxq 80(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 80(%rdi) - adoxq %r8, %r10 - # A[11] * B - mulxq 88(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 88(%rdi) - adoxq %r8, %r9 - # A[12] * B - mulxq 96(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 96(%rdi) - adoxq %r8, %r10 - # A[13] * B - mulxq 104(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 104(%rdi) - adoxq %r8, %r9 - # A[14] * B - mulxq 112(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 112(%rdi) - adoxq %r8, %r10 - # A[15] * B - mulxq 120(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 120(%rdi) - movq %r9, 128(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_d_avx2_16,.-sp_2048_mul_d_avx2_16 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_2048_cmp_16 -.type sp_2048_cmp_16,@function -.align 16 -sp_2048_cmp_16: -#else -.globl _sp_2048_cmp_16 -.p2align 4 -_sp_2048_cmp_16: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 120(%rdi), %r9 - movq 120(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 112(%rdi), %r9 - movq 112(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 104(%rdi), %r9 - movq 104(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 96(%rdi), %r9 - movq 96(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 88(%rdi), %r9 - movq 88(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 80(%rdi), %r9 - movq 80(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 72(%rdi), %r9 - movq 72(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 64(%rdi), %r9 - movq 64(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 56(%rdi), %r9 - movq 56(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 48(%rdi), %r9 - movq 48(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_cmp_16,.-sp_2048_cmp_16 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 2048 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_2048_mont_reduce_avx2_16 -.type sp_2048_mont_reduce_avx2_16,@function -.align 16 -sp_2048_mont_reduce_avx2_16: -#else -.globl _sp_2048_mont_reduce_avx2_16 -.p2align 4 -_sp_2048_mont_reduce_avx2_16: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - movq %rdx, %r8 - xorq %r14, %r14 - # i = 16 - movq $16, %r9 - movq (%rdi), %r13 - addq $64, %rdi - xorq %r12, %r12 -L_mont_loop_avx2_16: - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -56(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -48(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -48(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -40(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -32(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -24(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq -8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -16(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq (%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -8(%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq 8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, (%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq 16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 8(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq 24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 16(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq 32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 24(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq 40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 32(%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq 48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 40(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq 56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 48(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq 64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 56(%rdi) - adcxq %r14, %r10 - movq %r10, 64(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -48(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -40(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -32(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -40(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -24(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -32(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -16(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -24(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -8(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -16(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq (%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -8(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq 8(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, (%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq 16(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 8(%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq 24(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 16(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq 32(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 24(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq 40(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 32(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq 48(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 40(%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq 56(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 48(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq 64(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 56(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq 72(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 64(%rdi) - adcxq %r14, %r10 - movq %r10, 72(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # a += 2 - addq $16, %rdi - # i -= 2 - subq $2, %r9 - jnz L_mont_loop_avx2_16 - subq $64, %rdi - negq %r14 - movq %rdi, %r8 - subq $128, %rdi - movq (%rsi), %rcx - movq %r13, %rdx - pextq %r14, %rcx, %rcx - subq %rcx, %rdx - movq 8(%rsi), %rcx - movq 8(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, (%rdi) - sbbq %rcx, %rax - movq 16(%rsi), %rdx - movq 16(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 8(%rdi) - sbbq %rdx, %rcx - movq 24(%rsi), %rax - movq 24(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 16(%rdi) - sbbq %rax, %rdx - movq 32(%rsi), %rcx - movq 32(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 24(%rdi) - sbbq %rcx, %rax - movq 40(%rsi), %rdx - movq 40(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 32(%rdi) - sbbq %rdx, %rcx - movq 48(%rsi), %rax - movq 48(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 40(%rdi) - sbbq %rax, %rdx - movq 56(%rsi), %rcx - movq 56(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 48(%rdi) - sbbq %rcx, %rax - movq 64(%rsi), %rdx - movq 64(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 56(%rdi) - sbbq %rdx, %rcx - movq 72(%rsi), %rax - movq 72(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 64(%rdi) - sbbq %rax, %rdx - movq 80(%rsi), %rcx - movq 80(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 72(%rdi) - sbbq %rcx, %rax - movq 88(%rsi), %rdx - movq 88(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 80(%rdi) - sbbq %rdx, %rcx - movq 96(%rsi), %rax - movq 96(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 88(%rdi) - sbbq %rax, %rdx - movq 104(%rsi), %rcx - movq 104(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 96(%rdi) - sbbq %rcx, %rax - movq 112(%rsi), %rdx - movq 112(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 104(%rdi) - sbbq %rdx, %rcx - movq 120(%rsi), %rax - movq 120(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 112(%rdi) - sbbq %rax, %rdx - movq %rdx, 120(%rdi) - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mont_reduce_avx2_16,.-sp_2048_mont_reduce_avx2_16 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_sub_32 -.type sp_2048_cond_sub_32,@function -.align 16 -sp_2048_cond_sub_32: -#else -.globl _sp_2048_cond_sub_32 -.p2align 4 -_sp_2048_cond_sub_32: -#endif /* __APPLE__ */ - subq $256, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq 192(%rdx), %r8 - movq 200(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 192(%rsp) - movq %r9, 200(%rsp) - movq 208(%rdx), %r8 - movq 216(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 208(%rsp) - movq %r9, 216(%rsp) - movq 224(%rdx), %r8 - movq 232(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 224(%rsp) - movq %r9, 232(%rsp) - movq 240(%rdx), %r8 - movq 248(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 240(%rsp) - movq %r9, 248(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 176(%rdi) - movq 192(%rsi), %r8 - movq 192(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 184(%rdi) - movq 200(%rsi), %r9 - movq 200(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 192(%rdi) - movq 208(%rsi), %r8 - movq 208(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 200(%rdi) - movq 216(%rsi), %r9 - movq 216(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 208(%rdi) - movq 224(%rsi), %r8 - movq 224(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 216(%rdi) - movq 232(%rsi), %r9 - movq 232(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 224(%rdi) - movq 240(%rsi), %r8 - movq 240(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 232(%rdi) - movq 248(%rsi), %r9 - movq 248(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - sbbq $0, %rax - addq $256, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_sub_32,.-sp_2048_cond_sub_32 -#endif /* __APPLE__ */ -/* Reduce the number back to 2048 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_2048_mont_reduce_32 -.type sp_2048_mont_reduce_32,@function -.align 16 -sp_2048_mont_reduce_32: -#else -.globl _sp_2048_mont_reduce_32 -.p2align 4 -_sp_2048_mont_reduce_32: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 32 - movq $32, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_32: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq $0, %r9 - # a[i+6] += m[6] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 48(%rsi) - movq 48(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 48(%rdi) - adcq $0, %r10 - # a[i+7] += m[7] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 56(%rsi) - movq 56(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 56(%rdi) - adcq $0, %r9 - # a[i+8] += m[8] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 64(%rsi) - movq 64(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 64(%rdi) - adcq $0, %r10 - # a[i+9] += m[9] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 72(%rsi) - movq 72(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 72(%rdi) - adcq $0, %r9 - # a[i+10] += m[10] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 80(%rsi) - movq 80(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 80(%rdi) - adcq $0, %r10 - # a[i+11] += m[11] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 88(%rsi) - movq 88(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 88(%rdi) - adcq $0, %r9 - # a[i+12] += m[12] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 96(%rsi) - movq 96(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 96(%rdi) - adcq $0, %r10 - # a[i+13] += m[13] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 104(%rsi) - movq 104(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 104(%rdi) - adcq $0, %r9 - # a[i+14] += m[14] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 112(%rsi) - movq 112(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 112(%rdi) - adcq $0, %r10 - # a[i+15] += m[15] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 120(%rsi) - movq 120(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 120(%rdi) - adcq $0, %r9 - # a[i+16] += m[16] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 128(%rsi) - movq 128(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 128(%rdi) - adcq $0, %r10 - # a[i+17] += m[17] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 136(%rsi) - movq 136(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 136(%rdi) - adcq $0, %r9 - # a[i+18] += m[18] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 144(%rsi) - movq 144(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 144(%rdi) - adcq $0, %r10 - # a[i+19] += m[19] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 152(%rsi) - movq 152(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 152(%rdi) - adcq $0, %r9 - # a[i+20] += m[20] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 160(%rsi) - movq 160(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 160(%rdi) - adcq $0, %r10 - # a[i+21] += m[21] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 168(%rsi) - movq 168(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 168(%rdi) - adcq $0, %r9 - # a[i+22] += m[22] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 176(%rsi) - movq 176(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 176(%rdi) - adcq $0, %r10 - # a[i+23] += m[23] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 184(%rsi) - movq 184(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 184(%rdi) - adcq $0, %r9 - # a[i+24] += m[24] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 192(%rsi) - movq 192(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 192(%rdi) - adcq $0, %r10 - # a[i+25] += m[25] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 200(%rsi) - movq 200(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 200(%rdi) - adcq $0, %r9 - # a[i+26] += m[26] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 208(%rsi) - movq 208(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 208(%rdi) - adcq $0, %r10 - # a[i+27] += m[27] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 216(%rsi) - movq 216(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 216(%rdi) - adcq $0, %r9 - # a[i+28] += m[28] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 224(%rsi) - movq 224(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 224(%rdi) - adcq $0, %r10 - # a[i+29] += m[29] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 232(%rsi) - movq 232(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 232(%rdi) - adcq $0, %r9 - # a[i+30] += m[30] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 240(%rsi) - movq 240(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 240(%rdi) - adcq $0, %r10 - # a[i+31] += m[31] * mu - movq %r11, %rax - mulq 248(%rsi) - movq 248(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 248(%rdi) - adcq %rdx, 256(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_32 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $256, %rdi -#ifndef __APPLE__ - callq sp_2048_cond_sub_32@plt -#else - callq _sp_2048_cond_sub_32 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mont_reduce_32,.-sp_2048_mont_reduce_32 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_sub_avx2_32 -.type sp_2048_cond_sub_avx2_32,@function -.align 16 -sp_2048_cond_sub_avx2_32: -#else -.globl _sp_2048_cond_sub_avx2_32 -.p2align 4 -_sp_2048_cond_sub_avx2_32: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - sbbq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - sbbq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - sbbq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - sbbq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - sbbq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - sbbq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - sbbq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - sbbq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - sbbq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - sbbq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - sbbq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - sbbq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - sbbq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - sbbq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - sbbq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - sbbq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - sbbq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - sbbq %r8, %r10 - movq 192(%rdx), %r9 - movq 192(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 184(%rdi) - sbbq %r9, %r8 - movq 200(%rdx), %r10 - movq 200(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 192(%rdi) - sbbq %r10, %r9 - movq 208(%rdx), %r8 - movq 208(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 200(%rdi) - sbbq %r8, %r10 - movq 216(%rdx), %r9 - movq 216(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 208(%rdi) - sbbq %r9, %r8 - movq 224(%rdx), %r10 - movq 224(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 216(%rdi) - sbbq %r10, %r9 - movq 232(%rdx), %r8 - movq 232(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 224(%rdi) - sbbq %r8, %r10 - movq 240(%rdx), %r9 - movq 240(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 232(%rdi) - sbbq %r9, %r8 - movq 248(%rdx), %r10 - movq 248(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 240(%rdi) - sbbq %r10, %r9 - movq %r9, 248(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_sub_avx2_32,.-sp_2048_cond_sub_avx2_32 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_2048_mul_d_avx2_32 -.type sp_2048_mul_d_avx2_32,@function -.align 16 -sp_2048_mul_d_avx2_32: -#else -.globl _sp_2048_mul_d_avx2_32 -.p2align 4 -_sp_2048_mul_d_avx2_32: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 40(%rdi) - adoxq %r8, %r9 - # A[6] * B - mulxq 48(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 48(%rdi) - adoxq %r8, %r10 - # A[7] * B - mulxq 56(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 56(%rdi) - adoxq %r8, %r9 - # A[8] * B - mulxq 64(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 64(%rdi) - adoxq %r8, %r10 - # A[9] * B - mulxq 72(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 72(%rdi) - adoxq %r8, %r9 - # A[10] * B - mulxq 80(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 80(%rdi) - adoxq %r8, %r10 - # A[11] * B - mulxq 88(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 88(%rdi) - adoxq %r8, %r9 - # A[12] * B - mulxq 96(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 96(%rdi) - adoxq %r8, %r10 - # A[13] * B - mulxq 104(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 104(%rdi) - adoxq %r8, %r9 - # A[14] * B - mulxq 112(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 112(%rdi) - adoxq %r8, %r10 - # A[15] * B - mulxq 120(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 120(%rdi) - adoxq %r8, %r9 - # A[16] * B - mulxq 128(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 128(%rdi) - adoxq %r8, %r10 - # A[17] * B - mulxq 136(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 136(%rdi) - adoxq %r8, %r9 - # A[18] * B - mulxq 144(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 144(%rdi) - adoxq %r8, %r10 - # A[19] * B - mulxq 152(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 152(%rdi) - adoxq %r8, %r9 - # A[20] * B - mulxq 160(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 160(%rdi) - adoxq %r8, %r10 - # A[21] * B - mulxq 168(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 168(%rdi) - adoxq %r8, %r9 - # A[22] * B - mulxq 176(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 176(%rdi) - adoxq %r8, %r10 - # A[23] * B - mulxq 184(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 184(%rdi) - adoxq %r8, %r9 - # A[24] * B - mulxq 192(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 192(%rdi) - adoxq %r8, %r10 - # A[25] * B - mulxq 200(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 200(%rdi) - adoxq %r8, %r9 - # A[26] * B - mulxq 208(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 208(%rdi) - adoxq %r8, %r10 - # A[27] * B - mulxq 216(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 216(%rdi) - adoxq %r8, %r9 - # A[28] * B - mulxq 224(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 224(%rdi) - adoxq %r8, %r10 - # A[29] * B - mulxq 232(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 232(%rdi) - adoxq %r8, %r9 - # A[30] * B - mulxq 240(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 240(%rdi) - adoxq %r8, %r10 - # A[31] * B - mulxq 248(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 248(%rdi) - movq %r9, 256(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_2048_mul_d_avx2_32,.-sp_2048_mul_d_avx2_32 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_2048_cmp_32 -.type sp_2048_cmp_32,@function -.align 16 -sp_2048_cmp_32: -#else -.globl _sp_2048_cmp_32 -.p2align 4 -_sp_2048_cmp_32: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 248(%rdi), %r9 - movq 248(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 240(%rdi), %r9 - movq 240(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 232(%rdi), %r9 - movq 232(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 224(%rdi), %r9 - movq 224(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 216(%rdi), %r9 - movq 216(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 208(%rdi), %r9 - movq 208(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 200(%rdi), %r9 - movq 200(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 192(%rdi), %r9 - movq 192(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 184(%rdi), %r9 - movq 184(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 176(%rdi), %r9 - movq 176(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 168(%rdi), %r9 - movq 168(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 160(%rdi), %r9 - movq 160(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 152(%rdi), %r9 - movq 152(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 144(%rdi), %r9 - movq 144(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 136(%rdi), %r9 - movq 136(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 128(%rdi), %r9 - movq 128(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 120(%rdi), %r9 - movq 120(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 112(%rdi), %r9 - movq 112(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 104(%rdi), %r9 - movq 104(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 96(%rdi), %r9 - movq 96(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 88(%rdi), %r9 - movq 88(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 80(%rdi), %r9 - movq 80(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 72(%rdi), %r9 - movq 72(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 64(%rdi), %r9 - movq 64(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 56(%rdi), %r9 - movq 56(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 48(%rdi), %r9 - movq 48(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_cmp_32,.-sp_2048_cmp_32 -#endif /* __APPLE__ */ -/* Sub b from a into r. (r = a - b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_sub_32 -.type sp_2048_sub_32,@function -.align 16 -sp_2048_sub_32: -#else -.globl _sp_2048_sub_32 -.p2align 4 -_sp_2048_sub_32: -#endif /* __APPLE__ */ - movq (%rsi), %rcx - xorq %rax, %rax - subq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - sbbq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - sbbq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - sbbq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - sbbq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - sbbq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - sbbq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - sbbq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - sbbq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - sbbq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - sbbq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - sbbq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - sbbq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - sbbq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - sbbq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - sbbq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - sbbq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - sbbq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - sbbq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - sbbq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - sbbq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - sbbq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - sbbq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - sbbq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - sbbq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - sbbq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - sbbq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - sbbq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - sbbq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - sbbq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - sbbq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - sbbq 248(%rdx), %r8 - movq %r8, 248(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_sub_32,.-sp_2048_sub_32 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 2048 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_2048_mont_reduce_avx2_32 -.type sp_2048_mont_reduce_avx2_32,@function -.align 16 -sp_2048_mont_reduce_avx2_32: -#else -.globl _sp_2048_mont_reduce_avx2_32 -.p2align 4 -_sp_2048_mont_reduce_avx2_32: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - movq %rdx, %r8 - xorq %r14, %r14 - # i = 32 - movq $32, %r9 - movq (%rdi), %r13 - addq $128, %rdi - xorq %r12, %r12 -L_mont_loop_avx2_32: - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -120(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -112(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -112(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -104(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -96(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -88(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq -72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -80(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq -64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -72(%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq -56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -64(%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq -48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -56(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq -40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -48(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq -32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -40(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq -24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -32(%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq -16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -24(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq -8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -16(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq (%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -8(%rdi) - # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rax, %rcx - movq 8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, (%rdi) - # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rax, %rcx - movq 16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 8(%rdi) - # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rax, %rcx - movq 24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 16(%rdi) - # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rax, %rcx - movq 32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 24(%rdi) - # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rax, %rcx - movq 40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 32(%rdi) - # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rax, %rcx - movq 48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 40(%rdi) - # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rax, %rcx - movq 56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 48(%rdi) - # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rax, %rcx - movq 64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 56(%rdi) - # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rax, %rcx - movq 72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 64(%rdi) - # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rax, %rcx - movq 80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 72(%rdi) - # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rax, %rcx - movq 88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 80(%rdi) - # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rax, %rcx - movq 96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 88(%rdi) - # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rax, %rcx - movq 104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rdi) - # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rax, %rcx - movq 112(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 104(%rdi) - # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rax, %rcx - movq 120(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 112(%rdi) - # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rax, %rcx - movq 128(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 120(%rdi) - adcxq %r14, %r10 - movq %r10, 128(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # a += 1 - addq $8, %rdi - # i -= 1 - subq $1, %r9 - jnz L_mont_loop_avx2_32 - subq $128, %rdi - negq %r14 - movq %rdi, %r8 - subq $256, %rdi - movq (%rsi), %rcx - movq %r13, %rdx - pextq %r14, %rcx, %rcx - subq %rcx, %rdx - movq 8(%rsi), %rcx - movq 8(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, (%rdi) - sbbq %rcx, %rax - movq 16(%rsi), %rdx - movq 16(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 8(%rdi) - sbbq %rdx, %rcx - movq 24(%rsi), %rax - movq 24(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 16(%rdi) - sbbq %rax, %rdx - movq 32(%rsi), %rcx - movq 32(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 24(%rdi) - sbbq %rcx, %rax - movq 40(%rsi), %rdx - movq 40(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 32(%rdi) - sbbq %rdx, %rcx - movq 48(%rsi), %rax - movq 48(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 40(%rdi) - sbbq %rax, %rdx - movq 56(%rsi), %rcx - movq 56(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 48(%rdi) - sbbq %rcx, %rax - movq 64(%rsi), %rdx - movq 64(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 56(%rdi) - sbbq %rdx, %rcx - movq 72(%rsi), %rax - movq 72(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 64(%rdi) - sbbq %rax, %rdx - movq 80(%rsi), %rcx - movq 80(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 72(%rdi) - sbbq %rcx, %rax - movq 88(%rsi), %rdx - movq 88(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 80(%rdi) - sbbq %rdx, %rcx - movq 96(%rsi), %rax - movq 96(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 88(%rdi) - sbbq %rax, %rdx - movq 104(%rsi), %rcx - movq 104(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 96(%rdi) - sbbq %rcx, %rax - movq 112(%rsi), %rdx - movq 112(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 104(%rdi) - sbbq %rdx, %rcx - movq 120(%rsi), %rax - movq 120(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 112(%rdi) - sbbq %rax, %rdx - movq 128(%rsi), %rcx - movq 128(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 120(%rdi) - sbbq %rcx, %rax - movq 136(%rsi), %rdx - movq 136(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 128(%rdi) - sbbq %rdx, %rcx - movq 144(%rsi), %rax - movq 144(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 136(%rdi) - sbbq %rax, %rdx - movq 152(%rsi), %rcx - movq 152(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 144(%rdi) - sbbq %rcx, %rax - movq 160(%rsi), %rdx - movq 160(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 152(%rdi) - sbbq %rdx, %rcx - movq 168(%rsi), %rax - movq 168(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 160(%rdi) - sbbq %rax, %rdx - movq 176(%rsi), %rcx - movq 176(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 168(%rdi) - sbbq %rcx, %rax - movq 184(%rsi), %rdx - movq 184(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 176(%rdi) - sbbq %rdx, %rcx - movq 192(%rsi), %rax - movq 192(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 184(%rdi) - sbbq %rax, %rdx - movq 200(%rsi), %rcx - movq 200(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 192(%rdi) - sbbq %rcx, %rax - movq 208(%rsi), %rdx - movq 208(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 200(%rdi) - sbbq %rdx, %rcx - movq 216(%rsi), %rax - movq 216(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 208(%rdi) - sbbq %rax, %rdx - movq 224(%rsi), %rcx - movq 224(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 216(%rdi) - sbbq %rcx, %rax - movq 232(%rsi), %rdx - movq 232(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 224(%rdi) - sbbq %rdx, %rcx - movq 240(%rsi), %rax - movq 240(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 232(%rdi) - sbbq %rax, %rdx - movq 248(%rsi), %rcx - movq 248(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 240(%rdi) - sbbq %rcx, %rax - movq %rax, 248(%rdi) - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_2048_mont_reduce_avx2_32,.-sp_2048_mont_reduce_avx2_32 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_add_16 -.type sp_2048_cond_add_16,@function -.align 16 -sp_2048_cond_add_16: -#else -.globl _sp_2048_cond_add_16 -.p2align 4 -_sp_2048_cond_add_16: -#endif /* __APPLE__ */ - subq $128, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - addq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - adcq $0, %rax - addq $128, %rsp - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_add_16,.-sp_2048_cond_add_16 -#endif /* __APPLE__ */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_2048_cond_add_avx2_16 -.type sp_2048_cond_add_avx2_16,@function -.align 16 -sp_2048_cond_add_avx2_16: -#else -.globl _sp_2048_cond_add_avx2_16 -.p2align 4 -_sp_2048_cond_add_avx2_16: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - addq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - adcq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - adcq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - adcq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - adcq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - adcq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - adcq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - adcq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - adcq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - adcq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - adcq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - adcq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - adcq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - adcq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - adcq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - adcq %r9, %r8 - movq %r8, 120(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_cond_add_avx2_16,.-sp_2048_cond_add_avx2_16 -#endif /* __APPLE__ */ -/* Shift number left by n bit. (r = a << n) - * - * r Result of left shift by n. - * a Number to shift. - * n Amoutnt o shift. - */ -#ifndef __APPLE__ -.globl sp_2048_lshift_32 -.type sp_2048_lshift_32,@function -.align 16 -sp_2048_lshift_32: -#else -.globl _sp_2048_lshift_32 -.p2align 4 -_sp_2048_lshift_32: -#endif /* __APPLE__ */ - movq %rdx, %rcx - movq $0, %r10 - movq 216(%rsi), %r11 - movq 224(%rsi), %rdx - movq 232(%rsi), %rax - movq 240(%rsi), %r8 - movq 248(%rsi), %r9 - shldq %cl, %r9, %r10 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 224(%rdi) - movq %rax, 232(%rdi) - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq %r10, 256(%rdi) - movq 184(%rsi), %r9 - movq 192(%rsi), %rdx - movq 200(%rsi), %rax - movq 208(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 192(%rdi) - movq %rax, 200(%rdi) - movq %r8, 208(%rdi) - movq %r11, 216(%rdi) - movq 152(%rsi), %r11 - movq 160(%rsi), %rdx - movq 168(%rsi), %rax - movq 176(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 160(%rdi) - movq %rax, 168(%rdi) - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq 120(%rsi), %r9 - movq 128(%rsi), %rdx - movq 136(%rsi), %rax - movq 144(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 128(%rdi) - movq %rax, 136(%rdi) - movq %r8, 144(%rdi) - movq %r11, 152(%rdi) - movq 88(%rsi), %r11 - movq 96(%rsi), %rdx - movq 104(%rsi), %rax - movq 112(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 96(%rdi) - movq %rax, 104(%rdi) - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - movq 56(%rsi), %r9 - movq 64(%rsi), %rdx - movq 72(%rsi), %rax - movq 80(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 64(%rdi) - movq %rax, 72(%rdi) - movq %r8, 80(%rdi) - movq %r11, 88(%rdi) - movq 24(%rsi), %r11 - movq 32(%rsi), %rdx - movq 40(%rsi), %rax - movq 48(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 32(%rdi) - movq %rax, 40(%rdi) - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shlq %cl, %rdx - movq %rdx, (%rdi) - movq %rax, 8(%rdi) - movq %r8, 16(%rdi) - movq %r11, 24(%rdi) - repz retq -#endif /* !WOLFSSL_SP_NO_2048 */ -#endif /* !WOLFSSL_SP_NO_2048 */ -#ifndef WOLFSSL_SP_NO_3072 -#ifndef WOLFSSL_SP_NO_3072 -/* Read big endian unsigned byte array into r. - * - * r A single precision integer. - * size Maximum number of bytes to convert - * a Byte array. - * n Number of bytes in array to read. - */ -#ifndef __APPLE__ -.globl sp_3072_from_bin -.type sp_3072_from_bin,@function -.align 16 -sp_3072_from_bin: -#else -.globl _sp_3072_from_bin -.p2align 4 -_sp_3072_from_bin: -#endif /* __APPLE__ */ - movq %rdx, %r9 - movq %rdi, %r10 - addq %rcx, %r9 - addq $384, %r10 - xorq %r11, %r11 - jmp L_3072_from_bin_64_end -L_3072_from_bin_64_start: - subq $64, %r9 - movbeq 56(%r9), %rax - movbeq 48(%r9), %r8 - movq %rax, (%rdi) - movq %r8, 8(%rdi) - movbeq 40(%r9), %rax - movbeq 32(%r9), %r8 - movq %rax, 16(%rdi) - movq %r8, 24(%rdi) - movbeq 24(%r9), %rax - movbeq 16(%r9), %r8 - movq %rax, 32(%rdi) - movq %r8, 40(%rdi) - movbeq 8(%r9), %rax - movbeq (%r9), %r8 - movq %rax, 48(%rdi) - movq %r8, 56(%rdi) - addq $64, %rdi - subq $64, %rcx -L_3072_from_bin_64_end: - cmpq $63, %rcx - jg L_3072_from_bin_64_start - jmp L_3072_from_bin_8_end -L_3072_from_bin_8_start: - subq $8, %r9 - movbeq (%r9), %rax - movq %rax, (%rdi) - addq $8, %rdi - subq $8, %rcx -L_3072_from_bin_8_end: - cmpq $7, %rcx - jg L_3072_from_bin_8_start - cmpq %r11, %rcx - je L_3072_from_bin_hi_end - movq %r11, %r8 - movq %r11, %rax -L_3072_from_bin_hi_start: - movb (%rdx), %al - shlq $8, %r8 - incq %rdx - addq %rax, %r8 - decq %rcx - jg L_3072_from_bin_hi_start - movq %r8, (%rdi) - addq $8, %rdi -L_3072_from_bin_hi_end: - cmpq %r10, %rdi - je L_3072_from_bin_zero_end -L_3072_from_bin_zero_start: - movq %r11, (%rdi) - addq $8, %rdi - cmpq %r10, %rdi - jl L_3072_from_bin_zero_start -L_3072_from_bin_zero_end: - repz retq -#ifndef __APPLE__ -.size sp_3072_from_bin,.-sp_3072_from_bin -#endif /* __APPLE__ */ -/* Write r as big endian to byte array. - * Fixed length number of bytes written: 384 - * - * r A single precision integer. - * a Byte array. - */ -#ifndef __APPLE__ -.globl sp_3072_to_bin -.type sp_3072_to_bin,@function -.align 16 -sp_3072_to_bin: -#else -.globl _sp_3072_to_bin -.p2align 4 -_sp_3072_to_bin: -#endif /* __APPLE__ */ - movbeq 376(%rdi), %rdx - movbeq 368(%rdi), %rax - movq %rdx, (%rsi) - movq %rax, 8(%rsi) - movbeq 360(%rdi), %rdx - movbeq 352(%rdi), %rax - movq %rdx, 16(%rsi) - movq %rax, 24(%rsi) - movbeq 344(%rdi), %rdx - movbeq 336(%rdi), %rax - movq %rdx, 32(%rsi) - movq %rax, 40(%rsi) - movbeq 328(%rdi), %rdx - movbeq 320(%rdi), %rax - movq %rdx, 48(%rsi) - movq %rax, 56(%rsi) - movbeq 312(%rdi), %rdx - movbeq 304(%rdi), %rax - movq %rdx, 64(%rsi) - movq %rax, 72(%rsi) - movbeq 296(%rdi), %rdx - movbeq 288(%rdi), %rax - movq %rdx, 80(%rsi) - movq %rax, 88(%rsi) - movbeq 280(%rdi), %rdx - movbeq 272(%rdi), %rax - movq %rdx, 96(%rsi) - movq %rax, 104(%rsi) - movbeq 264(%rdi), %rdx - movbeq 256(%rdi), %rax - movq %rdx, 112(%rsi) - movq %rax, 120(%rsi) - movbeq 248(%rdi), %rdx - movbeq 240(%rdi), %rax - movq %rdx, 128(%rsi) - movq %rax, 136(%rsi) - movbeq 232(%rdi), %rdx - movbeq 224(%rdi), %rax - movq %rdx, 144(%rsi) - movq %rax, 152(%rsi) - movbeq 216(%rdi), %rdx - movbeq 208(%rdi), %rax - movq %rdx, 160(%rsi) - movq %rax, 168(%rsi) - movbeq 200(%rdi), %rdx - movbeq 192(%rdi), %rax - movq %rdx, 176(%rsi) - movq %rax, 184(%rsi) - movbeq 184(%rdi), %rdx - movbeq 176(%rdi), %rax - movq %rdx, 192(%rsi) - movq %rax, 200(%rsi) - movbeq 168(%rdi), %rdx - movbeq 160(%rdi), %rax - movq %rdx, 208(%rsi) - movq %rax, 216(%rsi) - movbeq 152(%rdi), %rdx - movbeq 144(%rdi), %rax - movq %rdx, 224(%rsi) - movq %rax, 232(%rsi) - movbeq 136(%rdi), %rdx - movbeq 128(%rdi), %rax - movq %rdx, 240(%rsi) - movq %rax, 248(%rsi) - movbeq 120(%rdi), %rdx - movbeq 112(%rdi), %rax - movq %rdx, 256(%rsi) - movq %rax, 264(%rsi) - movbeq 104(%rdi), %rdx - movbeq 96(%rdi), %rax - movq %rdx, 272(%rsi) - movq %rax, 280(%rsi) - movbeq 88(%rdi), %rdx - movbeq 80(%rdi), %rax - movq %rdx, 288(%rsi) - movq %rax, 296(%rsi) - movbeq 72(%rdi), %rdx - movbeq 64(%rdi), %rax - movq %rdx, 304(%rsi) - movq %rax, 312(%rsi) - movbeq 56(%rdi), %rdx - movbeq 48(%rdi), %rax - movq %rdx, 320(%rsi) - movq %rax, 328(%rsi) - movbeq 40(%rdi), %rdx - movbeq 32(%rdi), %rax - movq %rdx, 336(%rsi) - movq %rax, 344(%rsi) - movbeq 24(%rdi), %rdx - movbeq 16(%rdi), %rax - movq %rdx, 352(%rsi) - movq %rax, 360(%rsi) - movbeq 8(%rdi), %rdx - movbeq (%rdi), %rax - movq %rdx, 368(%rsi) - movq %rax, 376(%rsi) - repz retq -#ifndef __APPLE__ -.size sp_3072_to_bin,.-sp_3072_to_bin -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_12 -.type sp_3072_mul_12,@function -.align 16 -sp_3072_mul_12: -#else -.globl _sp_3072_mul_12 -.p2align 4 -_sp_3072_mul_12: -#endif /* __APPLE__ */ - movq %rdx, %rcx - subq $96, %rsp - # A[0] * B[0] - movq (%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - movq %rax, (%rsp) - movq %rdx, %r9 - # A[0] * B[1] - movq 8(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[0] - movq (%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 8(%rsp) - # A[0] * B[2] - movq 16(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[1] - movq 8(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[0] - movq (%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 16(%rsp) - # A[0] * B[3] - movq 24(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[2] - movq 16(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[1] - movq 8(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[0] - movq (%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 24(%rsp) - # A[0] * B[4] - movq 32(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[3] - movq 24(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[2] - movq 16(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[1] - movq 8(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[0] - movq (%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 32(%rsp) - # A[0] * B[5] - movq 40(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[4] - movq 32(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[3] - movq 24(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[2] - movq 16(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[1] - movq 8(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[0] - movq (%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 40(%rsp) - # A[0] * B[6] - movq 48(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[5] - movq 40(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[4] - movq 32(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[3] - movq 24(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[2] - movq 16(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[1] - movq 8(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[0] - movq (%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 48(%rsp) - # A[0] * B[7] - movq 56(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[6] - movq 48(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[5] - movq 40(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[4] - movq 32(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[3] - movq 24(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[2] - movq 16(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[1] - movq 8(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[0] - movq (%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 56(%rsp) - # A[0] * B[8] - movq 64(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[7] - movq 56(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[6] - movq 48(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[5] - movq 40(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[4] - movq 32(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[3] - movq 24(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[2] - movq 16(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[1] - movq 8(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[0] - movq (%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 64(%rsp) - # A[0] * B[9] - movq 72(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[8] - movq 64(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[7] - movq 56(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[6] - movq 48(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[5] - movq 40(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[4] - movq 32(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[3] - movq 24(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[2] - movq 16(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[1] - movq 8(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[0] - movq (%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 72(%rsp) - # A[0] * B[10] - movq 80(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[9] - movq 72(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[8] - movq 64(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[7] - movq 56(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[6] - movq 48(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[5] - movq 40(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[4] - movq 32(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[3] - movq 24(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[2] - movq 16(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[1] - movq 8(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[0] - movq (%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 80(%rsp) - # A[0] * B[11] - movq 88(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[10] - movq 80(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[9] - movq 72(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[8] - movq 64(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[7] - movq 56(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[6] - movq 48(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[5] - movq 40(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[4] - movq 32(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[3] - movq 24(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[2] - movq 16(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[1] - movq 8(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[0] - movq (%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 88(%rsp) - # A[1] * B[11] - movq 88(%rcx), %rax - mulq 8(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[10] - movq 80(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[9] - movq 72(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[8] - movq 64(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[7] - movq 56(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[6] - movq 48(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[5] - movq 40(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[4] - movq 32(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[3] - movq 24(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[2] - movq 16(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[1] - movq 8(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 96(%rdi) - # A[2] * B[11] - movq 88(%rcx), %rax - mulq 16(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[10] - movq 80(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[9] - movq 72(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[8] - movq 64(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[7] - movq 56(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[6] - movq 48(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[5] - movq 40(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[4] - movq 32(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[3] - movq 24(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[2] - movq 16(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 104(%rdi) - # A[3] * B[11] - movq 88(%rcx), %rax - mulq 24(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[10] - movq 80(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[9] - movq 72(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B[8] - movq 64(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[7] - movq 56(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[6] - movq 48(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[5] - movq 40(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[4] - movq 32(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[3] - movq 24(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 112(%rdi) - # A[4] * B[11] - movq 88(%rcx), %rax - mulq 32(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[10] - movq 80(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[6] * B[9] - movq 72(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B[8] - movq 64(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[7] - movq 56(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[6] - movq 48(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[5] - movq 40(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[4] - movq 32(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 120(%rdi) - # A[5] * B[11] - movq 88(%rcx), %rax - mulq 40(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[6] * B[10] - movq 80(%rcx), %rax - mulq 48(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[7] * B[9] - movq 72(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B[8] - movq 64(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[7] - movq 56(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[6] - movq 48(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[5] - movq 40(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 128(%rdi) - # A[6] * B[11] - movq 88(%rcx), %rax - mulq 48(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[7] * B[10] - movq 80(%rcx), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * B[9] - movq 72(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B[8] - movq 64(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[7] - movq 56(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[6] - movq 48(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 136(%rdi) - # A[7] * B[11] - movq 88(%rcx), %rax - mulq 56(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[8] * B[10] - movq 80(%rcx), %rax - mulq 64(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[9] * B[9] - movq 72(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B[8] - movq 64(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[7] - movq 56(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 144(%rdi) - # A[8] * B[11] - movq 88(%rcx), %rax - mulq 64(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[9] * B[10] - movq 80(%rcx), %rax - mulq 72(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[10] * B[9] - movq 72(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B[8] - movq 64(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 152(%rdi) - # A[9] * B[11] - movq 88(%rcx), %rax - mulq 72(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[10] * B[10] - movq 80(%rcx), %rax - mulq 80(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[11] * B[9] - movq 72(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 160(%rdi) - # A[10] * B[11] - movq 88(%rcx), %rax - mulq 80(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[11] * B[10] - movq 80(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 168(%rdi) - # A[11] * B[11] - movq 88(%rcx), %rax - mulq 88(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - movq %r9, 176(%rdi) - movq %r10, 184(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r8 - movq 24(%rsp), %r9 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq 48(%rsp), %r8 - movq 56(%rsp), %r9 - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq 64(%rsp), %rax - movq 72(%rsp), %rdx - movq 80(%rsp), %r8 - movq 88(%rsp), %r9 - movq %rax, 64(%rdi) - movq %rdx, 72(%rdi) - movq %r8, 80(%rdi) - movq %r9, 88(%rdi) - addq $96, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_12,.-sp_3072_mul_12 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_12 -.type sp_3072_sqr_12,@function -.align 16 -sp_3072_sqr_12: -#else -.globl _sp_3072_sqr_12 -.p2align 4 -_sp_3072_sqr_12: -#endif /* __APPLE__ */ - push %r12 - subq $96, %rsp - # A[0] * A[0] - movq (%rsi), %rax - mulq %rax - xorq %r9, %r9 - movq %rax, (%rsp) - movq %rdx, %r8 - # A[0] * A[1] - movq 8(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 8(%rsp) - # A[0] * A[2] - movq 16(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[1] * A[1] - movq 8(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 16(%rsp) - # A[0] * A[3] - movq 24(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * A[2] - movq 16(%rsi), %rax - mulq 8(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 24(%rsp) - # A[0] * A[4] - movq 32(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[1] * A[3] - movq 24(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[2] * A[2] - movq 16(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 32(%rsp) - # A[0] * A[5] - movq 40(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[4] - movq 32(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[3] - movq 24(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 40(%rsp) - # A[0] * A[6] - movq 48(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[5] - movq 40(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[4] - movq 32(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[3] - movq 24(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 48(%rsp) - # A[0] * A[7] - movq 56(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[6] - movq 48(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[5] - movq 40(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[4] - movq 32(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 56(%rsp) - # A[0] * A[8] - movq 64(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[7] - movq 56(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[6] - movq 48(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[5] - movq 40(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[4] - movq 32(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 64(%rsp) - # A[0] * A[9] - movq 72(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[8] - movq 64(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[7] - movq 56(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[6] - movq 48(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[5] - movq 40(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 72(%rsp) - # A[0] * A[10] - movq 80(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[9] - movq 72(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[8] - movq 64(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[7] - movq 56(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[6] - movq 48(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[5] - movq 40(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 80(%rsp) - # A[0] * A[11] - movq 88(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[10] - movq 80(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[9] - movq 72(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[8] - movq 64(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[7] - movq 56(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[6] - movq 48(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 88(%rsp) - # A[1] * A[11] - movq 88(%rsi), %rax - mulq 8(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[2] * A[10] - movq 80(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[3] * A[9] - movq 72(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[8] - movq 64(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[7] - movq 56(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[6] - movq 48(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 96(%rdi) - # A[2] * A[11] - movq 88(%rsi), %rax - mulq 16(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[3] * A[10] - movq 80(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[4] * A[9] - movq 72(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[8] - movq 64(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[7] - movq 56(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 104(%rdi) - # A[3] * A[11] - movq 88(%rsi), %rax - mulq 24(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[4] * A[10] - movq 80(%rsi), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[5] * A[9] - movq 72(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[8] - movq 64(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[7] - movq 56(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 112(%rdi) - # A[4] * A[11] - movq 88(%rsi), %rax - mulq 32(%rsi) - xorq %r9, %r9 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[5] * A[10] - movq 80(%rsi), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[6] * A[9] - movq 72(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[8] - movq 64(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %rcx - adcq %r11, %r8 - adcq %r12, %r9 - movq %rcx, 120(%rdi) - # A[5] * A[11] - movq 88(%rsi), %rax - mulq 40(%rsi) - xorq %rcx, %rcx - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[6] * A[10] - movq 80(%rsi), %rax - mulq 48(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[7] * A[9] - movq 72(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[8] - movq 64(%rsi), %rax - mulq %rax - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r8 - adcq %r11, %r9 - adcq %r12, %rcx - movq %r8, 128(%rdi) - # A[6] * A[11] - movq 88(%rsi), %rax - mulq 48(%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[7] * A[10] - movq 80(%rsi), %rax - mulq 56(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[8] * A[9] - movq 72(%rsi), %rax - mulq 64(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 136(%rdi) - # A[7] * A[11] - movq 88(%rsi), %rax - mulq 56(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[8] * A[10] - movq 80(%rsi), %rax - mulq 64(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * A[9] - movq 72(%rsi), %rax - mulq %rax - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 144(%rdi) - # A[8] * A[11] - movq 88(%rsi), %rax - mulq 64(%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[9] * A[10] - movq 80(%rsi), %rax - mulq 72(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 152(%rdi) - # A[9] * A[11] - movq 88(%rsi), %rax - mulq 72(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[10] * A[10] - movq 80(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 160(%rdi) - # A[10] * A[11] - movq 88(%rsi), %rax - mulq 80(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 168(%rdi) - # A[11] * A[11] - movq 88(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq 48(%rsp), %r10 - movq 56(%rsp), %r11 - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - movq %r10, 48(%rdi) - movq %r11, 56(%rdi) - movq 64(%rsp), %rax - movq 72(%rsp), %rdx - movq 80(%rsp), %r10 - movq 88(%rsp), %r11 - movq %rax, 64(%rdi) - movq %rdx, 72(%rdi) - movq %r10, 80(%rdi) - movq %r11, 88(%rdi) - addq $96, %rsp - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_12,.-sp_3072_sqr_12 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Multiply a and b into r. (r = a * b) - * - * r Result of multiplication. - * a First number to multiply. - * b Second number to multiply. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_avx2_12 -.type sp_3072_mul_avx2_12,@function -.align 16 -sp_3072_mul_avx2_12: -#else -.globl _sp_3072_mul_avx2_12 -.p2align 4 -_sp_3072_mul_avx2_12: -#endif /* __APPLE__ */ - push %rbx - push %rbp - push %r12 - movq %rdx, %rbp - subq $96, %rsp - cmpq %rdi, %rsi - movq %rsp, %rbx - cmovne %rdi, %rbx - cmpq %rdi, %rbp - cmove %rsp, %rbx - xorq %r12, %r12 - movq (%rsi), %rdx - # A[0] * B[0] - mulx (%rbp), %r8, %r9 - # A[0] * B[1] - mulx 8(%rbp), %rax, %r10 - movq %r8, (%rbx) - adcxq %rax, %r9 - movq %r9, 8(%rbx) - # A[0] * B[2] - mulx 16(%rbp), %rax, %r8 - adcxq %rax, %r10 - # A[0] * B[3] - mulx 24(%rbp), %rax, %r9 - movq %r10, 16(%rbx) - adcxq %rax, %r8 - movq %r8, 24(%rbx) - # A[0] * B[4] - mulx 32(%rbp), %rax, %r10 - adcxq %rax, %r9 - # A[0] * B[5] - mulx 40(%rbp), %rax, %r8 - movq %r9, 32(%rbx) - adcxq %rax, %r10 - movq %r10, 40(%rbx) - # A[0] * B[6] - mulx 48(%rbp), %rax, %r9 - adcxq %rax, %r8 - # A[0] * B[7] - mulx 56(%rbp), %rax, %r10 - movq %r8, 48(%rbx) - adcxq %rax, %r9 - movq %r9, 56(%rbx) - # A[0] * B[8] - mulx 64(%rbp), %rax, %r8 - adcxq %rax, %r10 - # A[0] * B[9] - mulx 72(%rbp), %rax, %r9 - movq %r10, 64(%rbx) - adcxq %rax, %r8 - movq %r8, 72(%rbx) - # A[0] * B[10] - mulx 80(%rbp), %rax, %r10 - adcxq %rax, %r9 - # A[0] * B[11] - mulx 88(%rbp), %rax, %r8 - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adcxq %r12, %r8 - movq %r12, %r11 - adcxq %r12, %r11 - movq %r10, 88(%rbx) - movq %r8, 96(%rdi) - movq 8(%rsi), %rdx - movq 8(%rbx), %r9 - movq 16(%rbx), %r10 - movq 24(%rbx), %r8 - # A[1] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 8(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 16(%rbx) - movq 32(%rbx), %r9 - movq 40(%rbx), %r10 - # A[1] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[1] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 24(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 32(%rbx) - movq 48(%rbx), %r8 - movq 56(%rbx), %r9 - # A[1] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[1] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 40(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 48(%rbx) - movq 64(%rbx), %r10 - movq 72(%rbx), %r8 - # A[1] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[1] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 56(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 64(%rbx) - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - # A[1] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[1] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 72(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 80(%rbx) - movq 96(%rdi), %r8 - # A[1] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[1] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - movq %r12, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r11, %r9 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r8, 96(%rdi) - movq %r9, 104(%rdi) - movq 16(%rsi), %rdx - movq 16(%rbx), %r10 - movq 24(%rbx), %r8 - movq 32(%rbx), %r9 - # A[2] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[2] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 16(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 24(%rbx) - movq 40(%rbx), %r10 - movq 48(%rbx), %r8 - # A[2] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[2] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 32(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 40(%rbx) - movq 56(%rbx), %r9 - movq 64(%rbx), %r10 - # A[2] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 48(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 56(%rbx) - movq 72(%rbx), %r8 - movq 80(%rbx), %r9 - # A[2] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[2] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 64(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 72(%rbx) - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - # A[2] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[2] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 88(%rbx) - movq 104(%rdi), %r9 - # A[2] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[2] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 96(%rdi) - movq %r12, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r11, %r10 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r9, 104(%rdi) - movq %r10, 112(%rdi) - movq 24(%rsi), %rdx - movq 24(%rbx), %r8 - movq 32(%rbx), %r9 - movq 40(%rbx), %r10 - # A[3] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 24(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 32(%rbx) - movq 48(%rbx), %r8 - movq 56(%rbx), %r9 - # A[3] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[3] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 40(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 48(%rbx) - movq 64(%rbx), %r10 - movq 72(%rbx), %r8 - # A[3] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 56(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 64(%rbx) - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - # A[3] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[3] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 72(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 80(%rbx) - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[3] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[3] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r10 - # A[3] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[3] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 104(%rdi) - movq %r12, %r8 - adcxq %rax, %r10 - adoxq %rcx, %r8 - adcxq %r11, %r8 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r10, 112(%rdi) - movq %r8, 120(%rdi) - movq 32(%rsi), %rdx - movq 32(%rbx), %r9 - movq 40(%rbx), %r10 - movq 48(%rbx), %r8 - # A[4] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 32(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 40(%rbx) - movq 56(%rbx), %r9 - movq 64(%rbx), %r10 - # A[4] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 48(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 56(%rbx) - movq 72(%rbx), %r8 - movq 80(%rbx), %r9 - # A[4] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[4] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 64(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 72(%rbx) - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - # A[4] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[4] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 88(%rbx) - movq 104(%rdi), %r9 - movq 112(%rdi), %r10 - # A[4] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[4] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 96(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 104(%rdi) - movq 120(%rdi), %r8 - # A[4] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[4] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 112(%rdi) - movq %r12, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r11, %r9 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r8, 120(%rdi) - movq %r9, 128(%rdi) - movq 40(%rsi), %rdx - movq 40(%rbx), %r10 - movq 48(%rbx), %r8 - movq 56(%rbx), %r9 - # A[5] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[5] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 40(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 48(%rbx) - movq 64(%rbx), %r10 - movq 72(%rbx), %r8 - # A[5] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 56(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 64(%rbx) - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - # A[5] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 72(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 80(%rbx) - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[5] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[5] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r10 - movq 120(%rdi), %r8 - # A[5] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[5] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 104(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 112(%rdi) - movq 128(%rdi), %r9 - # A[5] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[5] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 120(%rdi) - movq %r12, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r11, %r10 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r9, 128(%rdi) - movq %r10, 136(%rdi) - movq 48(%rsi), %rdx - movq 48(%rbx), %r8 - movq 56(%rbx), %r9 - movq 64(%rbx), %r10 - # A[6] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 48(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 56(%rbx) - movq 72(%rbx), %r8 - movq 80(%rbx), %r9 - # A[6] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[6] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 64(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 72(%rbx) - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - # A[6] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 88(%rbx) - movq 104(%rdi), %r9 - movq 112(%rdi), %r10 - # A[6] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[6] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 96(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 104(%rdi) - movq 120(%rdi), %r8 - movq 128(%rdi), %r9 - # A[6] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[6] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 112(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rdi) - movq 136(%rdi), %r10 - # A[6] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[6] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - movq %r12, %r8 - adcxq %rax, %r10 - adoxq %rcx, %r8 - adcxq %r11, %r8 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r10, 136(%rdi) - movq %r8, 144(%rdi) - movq 56(%rsi), %rdx - movq 56(%rbx), %r9 - movq 64(%rbx), %r10 - movq 72(%rbx), %r8 - # A[7] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 56(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 64(%rbx) - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - # A[7] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[7] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 72(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 80(%rbx) - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[7] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[7] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r10 - movq 120(%rdi), %r8 - # A[7] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[7] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 104(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 112(%rdi) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[7] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[7] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 120(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r8 - # A[7] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[7] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - movq %r12, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r11, %r9 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r8, 144(%rdi) - movq %r9, 152(%rdi) - movq 64(%rsi), %rdx - movq 64(%rbx), %r10 - movq 72(%rbx), %r8 - movq 80(%rbx), %r9 - # A[8] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[8] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 64(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 72(%rbx) - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - # A[8] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 88(%rbx) - movq 104(%rdi), %r9 - movq 112(%rdi), %r10 - # A[8] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 96(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 104(%rdi) - movq 120(%rdi), %r8 - movq 128(%rdi), %r9 - # A[8] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[8] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 112(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rdi) - movq 136(%rdi), %r10 - movq 144(%rdi), %r8 - # A[8] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[8] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 136(%rdi) - movq 152(%rdi), %r9 - # A[8] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[8] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 144(%rdi) - movq %r12, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r11, %r10 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r9, 152(%rdi) - movq %r10, 160(%rdi) - movq 72(%rsi), %rdx - movq 72(%rbx), %r8 - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - # A[9] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r8, 72(%rbx) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 80(%rbx) - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[9] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[9] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r10 - movq 120(%rdi), %r8 - # A[9] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r9, 104(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 112(%rdi) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[9] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[9] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r8, 120(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[9] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[9] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 144(%rdi) - movq 160(%rdi), %r10 - # A[9] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[9] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r9, 152(%rdi) - movq %r12, %r8 - adcxq %rax, %r10 - adoxq %rcx, %r8 - adcxq %r11, %r8 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r10, 160(%rdi) - movq %r8, 168(%rdi) - movq 80(%rsi), %rdx - movq 80(%rbx), %r9 - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - # A[10] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r9, 80(%rbx) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 88(%rbx) - movq 104(%rdi), %r9 - movq 112(%rdi), %r10 - # A[10] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r8, 96(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 104(%rdi) - movq 120(%rdi), %r8 - movq 128(%rdi), %r9 - # A[10] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[10] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r10, 112(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rdi) - movq 136(%rdi), %r10 - movq 144(%rdi), %r8 - # A[10] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[10] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r9, 128(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 136(%rdi) - movq 152(%rdi), %r9 - movq 160(%rdi), %r10 - # A[10] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[10] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r8, 144(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 152(%rdi) - movq 168(%rdi), %r8 - # A[10] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[10] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r10, 160(%rdi) - movq %r12, %r9 - adcxq %rax, %r8 - adoxq %rcx, %r9 - adcxq %r11, %r9 - movq %r12, %r11 - adoxq %r12, %r11 - adcxq %r12, %r11 - movq %r8, 168(%rdi) - movq %r9, 176(%rdi) - movq 88(%rsi), %rdx - movq 88(%rbx), %r10 - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[11] * B[0] - mulx (%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[11] * B[1] - mulx 8(%rbp), %rax, %rcx - movq %r10, 88(%rbx) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r10 - movq 120(%rdi), %r8 - # A[11] * B[2] - mulx 16(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[3] - mulx 24(%rbp), %rax, %rcx - movq %r9, 104(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 112(%rdi) - movq 128(%rdi), %r9 - movq 136(%rdi), %r10 - # A[11] * B[4] - mulx 32(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[5] - mulx 40(%rbp), %rax, %rcx - movq %r8, 120(%rdi) - adcxq %rax, %r9 - adoxq %rcx, %r10 - movq %r9, 128(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[11] * B[6] - mulx 48(%rbp), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r8 - # A[11] * B[7] - mulx 56(%rbp), %rax, %rcx - movq %r10, 136(%rdi) - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 144(%rdi) - movq 160(%rdi), %r10 - movq 168(%rdi), %r8 - # A[11] * B[8] - mulx 64(%rbp), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r10 - # A[11] * B[9] - mulx 72(%rbp), %rax, %rcx - movq %r9, 152(%rdi) - adcxq %rax, %r10 - adoxq %rcx, %r8 - movq %r10, 160(%rdi) - movq 176(%rdi), %r9 - # A[11] * B[10] - mulx 80(%rbp), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - # A[11] * B[11] - mulx 88(%rbp), %rax, %rcx - movq %r8, 168(%rdi) - movq %r12, %r10 - adcxq %rax, %r9 - adoxq %rcx, %r10 - adcxq %r11, %r10 - movq %r9, 176(%rdi) - movq %r10, 184(%rdi) - cmpq %rdi, %rsi - je L_start_3072_mul_avx2_12 - cmpq %rdi, %rbp - jne L_end_3072_mul_avx2_12 -L_start_3072_mul_avx2_12: - vmovdqu (%rbx), %xmm0 - vmovups %xmm0, (%rdi) - vmovdqu 16(%rbx), %xmm0 - vmovups %xmm0, 16(%rdi) - vmovdqu 32(%rbx), %xmm0 - vmovups %xmm0, 32(%rdi) - vmovdqu 48(%rbx), %xmm0 - vmovups %xmm0, 48(%rdi) - vmovdqu 64(%rbx), %xmm0 - vmovups %xmm0, 64(%rdi) - vmovdqu 80(%rbx), %xmm0 - vmovups %xmm0, 80(%rdi) -L_end_3072_mul_avx2_12: - addq $96, %rsp - pop %r12 - pop %rbp - pop %rbx - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_avx2_12,.-sp_3072_mul_avx2_12 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -#ifdef HAVE_INTEL_AVX2 -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_avx2_12 -.type sp_3072_sqr_avx2_12,@function -.align 16 -sp_3072_sqr_avx2_12: -#else -.globl _sp_3072_sqr_avx2_12 -.p2align 4 -_sp_3072_sqr_avx2_12: -#endif /* __APPLE__ */ - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - subq $96, %rsp - cmpq %rdi, %rsi - movq %rsp, %rbp - cmovne %rdi, %rbp - xorq %r10, %r10 - # Diagonal 1 - # A[1] x A[0] - movq (%rsi), %rdx - mulxq 8(%rsi), %r8, %r9 - movq %r8, 8(%rbp) - movq %r10, %r8 - # A[2] x A[0] - mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 16(%rbp) - movq %r10, %r9 - # A[3] x A[0] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 24(%rbp) - movq %r10, %r8 - # A[4] x A[0] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 32(%rbp) - movq %r10, %r9 - # A[5] x A[0] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 40(%rbp) - movq %r10, %r8 - # A[6] x A[0] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 48(%rbp) - movq %r10, %r9 - # A[7] x A[0] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, %r12 - movq %r10, %r8 - # A[8] x A[0] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, %r13 - movq %r10, %r9 - # A[9] x A[0] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, %r14 - movq %r10, %r8 - # A[10] x A[0] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, %r15 - movq %r10, %r9 - # A[11] x A[0] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, %rbx - # Carry - adcxq %r10, %r9 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r9, 96(%rdi) - # Diagonal 2 - movq 24(%rbp), %r9 - movq 32(%rbp), %r8 - # A[2] x A[1] - movq 8(%rsi), %rdx - mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 24(%rbp) - movq 40(%rbp), %r9 - # A[3] x A[1] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 32(%rbp) - movq 48(%rbp), %r8 - # A[4] x A[1] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 40(%rbp) - # No load %r12 - %r9 - # A[5] x A[1] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r12 - movq %r8, 48(%rbp) - # No load %r13 - %r8 - # A[6] x A[1] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r13 - # No store %r12 - # No load %r14 - %r9 - # A[7] x A[1] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - # No store %r13 - # No load %r15 - %r8 - # A[8] x A[1] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # No store %r14 - # No load %rbx - %r9 - # A[9] x A[1] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r15 - movq 96(%rdi), %r8 - # A[10] x A[1] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r8 - # No store %rbx - movq %r10, %r9 - # A[11] x A[1] - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq %r10, %r8 - # A[11] x A[2] - movq 16(%rsi), %rdx - mulxq 88(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 104(%rdi) - # Carry - adcxq %r11, %r8 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r8, 112(%rdi) - # Diagonal 3 - movq 40(%rbp), %r8 - movq 48(%rbp), %r9 - # A[3] x A[2] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 40(%rbp) - # No load %r12 - %r8 - # A[4] x A[2] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r12 - movq %r9, 48(%rbp) - # No load %r13 - %r9 - # A[5] x A[2] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r13 - # No store %r12 - # No load %r14 - %r8 - # A[6] x A[2] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - # No store %r13 - # No load %r15 - %r9 - # A[7] x A[2] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # No store %r14 - # No load %rbx - %r8 - # A[8] x A[2] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r15 - movq 96(%rdi), %r9 - # A[9] x A[2] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r9 - # No store %rbx - movq 104(%rdi), %r8 - # A[10] x A[2] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 96(%rdi) - movq 112(%rdi), %r9 - # A[10] x A[3] - movq 80(%rsi), %rdx - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 104(%rdi) - movq %r10, %r8 - # A[10] x A[4] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 112(%rdi) - movq %r10, %r9 - # A[10] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rdi) - # Carry - adcxq %r11, %r9 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r9, 128(%rdi) - # Diagonal 4 - # No load %r12 - %r9 - # No load %r13 - %r8 - # A[4] x A[3] - movq 24(%rsi), %rdx - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r13 - # No store %r12 - # No load %r14 - %r9 - # A[5] x A[3] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - # No store %r13 - # No load %r15 - %r8 - # A[6] x A[3] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # No store %r14 - # No load %rbx - %r9 - # A[7] x A[3] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r15 - movq 96(%rdi), %r8 - # A[8] x A[3] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r8 - # No store %rbx - movq 104(%rdi), %r9 - # A[9] x A[3] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r8 - # A[9] x A[4] - movq 72(%rsi), %rdx - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 104(%rdi) - movq 120(%rdi), %r9 - # A[9] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 112(%rdi) - movq 128(%rdi), %r8 - # A[9] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 120(%rdi) - movq %r10, %r9 - # A[9] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 128(%rdi) - movq %r10, %r8 - # A[9] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 136(%rdi) - # Carry - adcxq %r11, %r8 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r8, 144(%rdi) - # Diagonal 5 - # No load %r14 - %r8 - # No load %r15 - %r9 - # A[5] x A[4] - movq 32(%rsi), %rdx - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # No store %r14 - # No load %rbx - %r8 - # A[6] x A[4] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r15 - adoxq %rcx, %rbx - # No store %r15 - movq 96(%rdi), %r9 - # A[7] x A[4] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r9 - # No store %rbx - movq 104(%rdi), %r8 - # A[8] x A[4] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 96(%rdi) - movq 112(%rdi), %r9 - # A[8] x A[5] - movq 64(%rsi), %rdx - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 104(%rdi) - movq 120(%rdi), %r8 - # A[8] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 112(%rdi) - movq 128(%rdi), %r9 - # A[8] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 120(%rdi) - movq 136(%rdi), %r8 - # A[10] x A[6] - movq 80(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 128(%rdi) - movq 144(%rdi), %r9 - # A[10] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 136(%rdi) - movq %r10, %r8 - # A[10] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 144(%rdi) - movq %r10, %r9 - # A[10] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 152(%rdi) - # Carry - adcxq %r11, %r9 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r9, 160(%rdi) - # Diagonal 6 - # No load %rbx - %r9 - movq 96(%rdi), %r8 - # A[6] x A[5] - movq 40(%rsi), %rdx - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %rbx - adoxq %rcx, %r8 - # No store %rbx - movq 104(%rdi), %r9 - # A[7] x A[5] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 96(%rdi) - movq 112(%rdi), %r8 - # A[7] x A[6] - movq 48(%rsi), %rdx - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 104(%rdi) - movq 120(%rdi), %r9 - # A[11] x A[3] - movq 88(%rsi), %rdx - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 112(%rdi) - movq 128(%rdi), %r8 - # A[11] x A[4] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 120(%rdi) - movq 136(%rdi), %r9 - # A[11] x A[5] - mulxq 40(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 128(%rdi) - movq 144(%rdi), %r8 - # A[11] x A[6] - mulxq 48(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 136(%rdi) - movq 152(%rdi), %r9 - # A[11] x A[7] - mulxq 56(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 144(%rdi) - movq 160(%rdi), %r8 - # A[11] x A[8] - mulxq 64(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 152(%rdi) - movq %r10, %r9 - # A[11] x A[9] - mulxq 72(%rsi), %rax, %rcx - adcxq %rax, %r8 - adoxq %rcx, %r9 - movq %r8, 160(%rdi) - movq %r10, %r8 - # A[11] x A[10] - mulxq 80(%rsi), %rax, %rcx - adcxq %rax, %r9 - adoxq %rcx, %r8 - movq %r9, 168(%rdi) - # Carry - adcxq %r11, %r8 - movq %r10, %r11 - adcxq %r10, %r11 - adoxq %r10, %r11 - movq %r8, 176(%rdi) - movq %r11, 184(%rdi) - # Double and Add in A[i] x A[i] - movq 8(%rbp), %r9 - # A[0] x A[0] - movq (%rsi), %rdx - mulxq %rdx, %rax, %rcx - movq %rax, (%rbp) - adoxq %r9, %r9 - adcxq %rcx, %r9 - movq %r9, 8(%rbp) - movq 16(%rbp), %r8 - movq 24(%rbp), %r9 - # A[1] x A[1] - movq 8(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 16(%rbp) - movq %r9, 24(%rbp) - movq 32(%rbp), %r8 - movq 40(%rbp), %r9 - # A[2] x A[2] - movq 16(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 32(%rbp) - movq %r9, 40(%rbp) - movq 48(%rbp), %r8 - # A[3] x A[3] - movq 24(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r12, %r12 - adcxq %rax, %r8 - adcxq %rcx, %r12 - movq %r8, 48(%rbp) - # A[4] x A[4] - movq 32(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r13, %r13 - adoxq %r14, %r14 - adcxq %rax, %r13 - adcxq %rcx, %r14 - # A[5] x A[5] - movq 40(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r15, %r15 - adoxq %rbx, %rbx - adcxq %rax, %r15 - adcxq %rcx, %rbx - movq 96(%rdi), %r8 - movq 104(%rdi), %r9 - # A[6] x A[6] - movq 48(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 96(%rdi) - movq %r9, 104(%rdi) - movq 112(%rdi), %r8 - movq 120(%rdi), %r9 - # A[7] x A[7] - movq 56(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - movq 128(%rdi), %r8 - movq 136(%rdi), %r9 - # A[8] x A[8] - movq 64(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 128(%rdi) - movq %r9, 136(%rdi) - movq 144(%rdi), %r8 - movq 152(%rdi), %r9 - # A[9] x A[9] - movq 72(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 144(%rdi) - movq %r9, 152(%rdi) - movq 160(%rdi), %r8 - movq 168(%rdi), %r9 - # A[10] x A[10] - movq 80(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 160(%rdi) - movq %r9, 168(%rdi) - movq 176(%rdi), %r8 - movq 184(%rdi), %r9 - # A[11] x A[11] - movq 88(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r8, %r8 - adoxq %r9, %r9 - adcxq %rax, %r8 - adcxq %rcx, %r9 - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq %r12, 56(%rdi) - movq %r13, 64(%rdi) - movq %r14, 72(%rdi) - movq %r15, 80(%rdi) - movq %rbx, 88(%rdi) - cmpq %rdi, %rsi - jne L_end_3072_sqr_avx2_12 - vmovdqu (%rbp), %xmm0 - vmovups %xmm0, (%rdi) - vmovdqu 16(%rbp), %xmm0 - vmovups %xmm0, 16(%rdi) - vmovdqu 32(%rbp), %xmm0 - vmovups %xmm0, 32(%rdi) - movq 48(%rbp), %rax - movq %rax, 48(%rdi) -L_end_3072_sqr_avx2_12: - addq $96, %rsp - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %rbp - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_avx2_12,.-sp_3072_sqr_avx2_12 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_add_12 -.type sp_3072_add_12,@function -.align 16 -sp_3072_add_12: -#else -.globl _sp_3072_add_12 -.p2align 4 -_sp_3072_add_12: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq %r8, 88(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_add_12,.-sp_3072_add_12 -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sub_in_place_24 -.type sp_3072_sub_in_place_24,@function -.align 16 -sp_3072_sub_in_place_24: -#else -.globl _sp_3072_sub_in_place_24 -.p2align 4 -_sp_3072_sub_in_place_24: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq 128(%rdi), %rdx - movq %rcx, 120(%rdi) - sbbq 128(%rsi), %rdx - movq 136(%rdi), %rcx - movq %rdx, 128(%rdi) - sbbq 136(%rsi), %rcx - movq 144(%rdi), %rdx - movq %rcx, 136(%rdi) - sbbq 144(%rsi), %rdx - movq 152(%rdi), %rcx - movq %rdx, 144(%rdi) - sbbq 152(%rsi), %rcx - movq 160(%rdi), %rdx - movq %rcx, 152(%rdi) - sbbq 160(%rsi), %rdx - movq 168(%rdi), %rcx - movq %rdx, 160(%rdi) - sbbq 168(%rsi), %rcx - movq 176(%rdi), %rdx - movq %rcx, 168(%rdi) - sbbq 176(%rsi), %rdx - movq 184(%rdi), %rcx - movq %rdx, 176(%rdi) - sbbq 184(%rsi), %rcx - movq %rcx, 184(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_sub_in_place_24,.-sp_3072_sub_in_place_24 -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_add_24 -.type sp_3072_add_24,@function -.align 16 -sp_3072_add_24: -#else -.globl _sp_3072_add_24 -.p2align 4 -_sp_3072_add_24: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - adcq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - adcq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - adcq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - adcq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - adcq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - adcq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - adcq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - adcq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - adcq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - adcq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - adcq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - adcq 184(%rdx), %r8 - movq %r8, 184(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_add_24,.-sp_3072_add_24 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_24 -.type sp_3072_mul_24,@function -.align 16 -sp_3072_mul_24: -#else -.globl _sp_3072_mul_24 -.p2align 4 -_sp_3072_mul_24: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $616, %rsp - movq %rdi, 576(%rsp) - movq %rsi, 584(%rsp) - movq %rdx, 592(%rsp) - leaq 384(%rsp), %r10 - leaq 96(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq %r8, 88(%r10) - adcq $0, %r13 - movq %r13, 600(%rsp) - leaq 480(%rsp), %r11 - leaq 96(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq %r8, 88(%r11) - adcq $0, %r14 - movq %r14, 608(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_mul_12@plt -#else - callq _sp_3072_mul_12 -#endif /* __APPLE__ */ - movq 592(%rsp), %rdx - movq 584(%rsp), %rsi - leaq 192(%rsp), %rdi - addq $96, %rdx - addq $96, %rsi -#ifndef __APPLE__ - callq sp_3072_mul_12@plt -#else - callq _sp_3072_mul_12 -#endif /* __APPLE__ */ - movq 592(%rsp), %rdx - movq 584(%rsp), %rsi - movq 576(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_mul_12@plt -#else - callq _sp_3072_mul_12 -#endif /* __APPLE__ */ - movq 600(%rsp), %r13 - movq 608(%rsp), %r14 - movq 576(%rsp), %r15 - movq %r13, %r9 - leaq 384(%rsp), %r10 - leaq 480(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $192, %r15 - movq (%r10), %rax - movq (%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, (%r10) - movq %rcx, (%r11) - movq 8(%r10), %rax - movq 8(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 8(%r10) - movq %rcx, 8(%r11) - movq 16(%r10), %rax - movq 16(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 16(%r10) - movq %rcx, 16(%r11) - movq 24(%r10), %rax - movq 24(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 24(%r10) - movq %rcx, 24(%r11) - movq 32(%r10), %rax - movq 32(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 32(%r10) - movq %rcx, 32(%r11) - movq 40(%r10), %rax - movq 40(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 40(%r10) - movq %rcx, 40(%r11) - movq 48(%r10), %rax - movq 48(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 48(%r10) - movq %rcx, 48(%r11) - movq 56(%r10), %rax - movq 56(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 56(%r10) - movq %rcx, 56(%r11) - movq 64(%r10), %rax - movq 64(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 64(%r10) - movq %rcx, 64(%r11) - movq 72(%r10), %rax - movq 72(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 72(%r10) - movq %rcx, 72(%r11) - movq 80(%r10), %rax - movq 80(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 80(%r10) - movq %rcx, 80(%r11) - movq 88(%r10), %rax - movq 88(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 88(%r10) - movq %rcx, 88(%r11) - movq (%r10), %rax - addq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq %r8, 88(%r15) - adcq $0, %r9 - leaq 192(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq %r8, 184(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq %r8, 184(%r10) - sbbq $0, %r9 - subq $96, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq %r8, 184(%r15) - adcq $0, %r9 - movq %r9, 288(%rdi) - addq $96, %r15 - # Add - movq (%r15), %rax - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq %rax, 96(%r15) - # Add to zero - movq 104(%r11), %rax - adcq $0, %rax - movq 112(%r11), %rcx - movq %rax, 104(%r15) - adcq $0, %rcx - movq 120(%r11), %r8 - movq %rcx, 112(%r15) - adcq $0, %r8 - movq 128(%r11), %rax - movq %r8, 120(%r15) - adcq $0, %rax - movq 136(%r11), %rcx - movq %rax, 128(%r15) - adcq $0, %rcx - movq 144(%r11), %r8 - movq %rcx, 136(%r15) - adcq $0, %r8 - movq 152(%r11), %rax - movq %r8, 144(%r15) - adcq $0, %rax - movq 160(%r11), %rcx - movq %rax, 152(%r15) - adcq $0, %rcx - movq 168(%r11), %r8 - movq %rcx, 160(%r15) - adcq $0, %r8 - movq 176(%r11), %rax - movq %r8, 168(%r15) - adcq $0, %rax - movq 184(%r11), %rcx - movq %rax, 176(%r15) - adcq $0, %rcx - movq %rcx, 184(%r15) - addq $616, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_24,.-sp_3072_mul_24 -#endif /* __APPLE__ */ -/* Add a to a into r. (r = a + a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_dbl_12 -.type sp_3072_dbl_12,@function -.align 16 -sp_3072_dbl_12: -#else -.globl _sp_3072_dbl_12 -.p2align 4 -_sp_3072_dbl_12: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - xorq %rax, %rax - addq %rdx, %rdx - movq 8(%rsi), %rcx - movq %rdx, (%rdi) - adcq %rcx, %rcx - movq 16(%rsi), %rdx - movq %rcx, 8(%rdi) - adcq %rdx, %rdx - movq 24(%rsi), %rcx - movq %rdx, 16(%rdi) - adcq %rcx, %rcx - movq 32(%rsi), %rdx - movq %rcx, 24(%rdi) - adcq %rdx, %rdx - movq 40(%rsi), %rcx - movq %rdx, 32(%rdi) - adcq %rcx, %rcx - movq 48(%rsi), %rdx - movq %rcx, 40(%rdi) - adcq %rdx, %rdx - movq 56(%rsi), %rcx - movq %rdx, 48(%rdi) - adcq %rcx, %rcx - movq 64(%rsi), %rdx - movq %rcx, 56(%rdi) - adcq %rdx, %rdx - movq 72(%rsi), %rcx - movq %rdx, 64(%rdi) - adcq %rcx, %rcx - movq 80(%rsi), %rdx - movq %rcx, 72(%rdi) - adcq %rdx, %rdx - movq 88(%rsi), %rcx - movq %rdx, 80(%rdi) - adcq %rcx, %rcx - movq %rcx, 88(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_dbl_12,.-sp_3072_dbl_12 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_24 -.type sp_3072_sqr_24,@function -.align 16 -sp_3072_sqr_24: -#else -.globl _sp_3072_sqr_24 -.p2align 4 -_sp_3072_sqr_24: -#endif /* __APPLE__ */ - subq $504, %rsp - movq %rdi, 480(%rsp) - movq %rsi, 488(%rsp) - leaq 384(%rsp), %r8 - leaq 96(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq %rax, 88(%r8) - adcq $0, %rcx - movq %rcx, 496(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_12@plt -#else - callq _sp_3072_sqr_12 -#endif /* __APPLE__ */ - movq 488(%rsp), %rsi - leaq 192(%rsp), %rdi - addq $96, %rsi -#ifndef __APPLE__ - callq sp_3072_sqr_12@plt -#else - callq _sp_3072_sqr_12 -#endif /* __APPLE__ */ - movq 488(%rsp), %rsi - movq 480(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_12@plt -#else - callq _sp_3072_sqr_12 -#endif /* __APPLE__ */ - movq 496(%rsp), %r10 - movq %rdi, %r9 - leaq 384(%rsp), %r8 - movq %r10, %rcx - negq %r10 - addq $192, %r9 - movq (%r8), %rdx - movq 8(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, (%r9) - movq %rax, 8(%r9) - movq 16(%r8), %rdx - movq 24(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 16(%r9) - movq %rax, 24(%r9) - movq 32(%r8), %rdx - movq 40(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 32(%r9) - movq %rax, 40(%r9) - movq 48(%r8), %rdx - movq 56(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 48(%r9) - movq %rax, 56(%r9) - movq 64(%r8), %rdx - movq 72(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 64(%r9) - movq %rax, 72(%r9) - movq 80(%r8), %rdx - movq 88(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 80(%r9) - movq %rax, 88(%r9) - movq (%r9), %rdx - addq %rdx, %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq %rax, %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq %rdx, %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq %rax, %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq %rdx, %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq %rax, %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq %rdx, %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq %rax, %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq %rdx, %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq %rax, %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq %rdx, %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq %rax, %rax - movq %rax, 88(%r9) - adcq $0, %rcx - leaq 192(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq %rax, 184(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq %rax, 184(%r8) - sbbq $0, %rcx - subq $96, %r9 - # Add in place - movq (%r9), %rdx - addq (%r8), %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq 8(%r8), %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq 16(%r8), %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq 24(%r8), %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq 32(%r8), %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq 40(%r8), %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq 48(%r8), %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq 56(%r8), %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq 64(%r8), %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq 72(%r8), %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq 80(%r8), %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq 88(%r8), %rax - movq 96(%r9), %rdx - movq %rax, 88(%r9) - adcq 96(%r8), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 104(%r8), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 112(%r8), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 120(%r8), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 128(%r8), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 136(%r8), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 144(%r8), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 152(%r8), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 160(%r8), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 168(%r8), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 176(%r8), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 184(%r8), %rax - movq %rax, 184(%r9) - adcq $0, %rcx - movq %rcx, 288(%rdi) - # Add in place - movq 96(%r9), %rdx - addq (%rsi), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 8(%rsi), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 16(%rsi), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 24(%rsi), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 32(%rsi), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 40(%rsi), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 48(%rsi), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 56(%rsi), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 64(%rsi), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 72(%rsi), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 80(%rsi), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 88(%rsi), %rax - movq 192(%r9), %rdx - movq %rax, 184(%r9) - adcq 96(%rsi), %rdx - movq %rdx, 192(%r9) - # Add to zero - movq 104(%rsi), %rdx - adcq $0, %rdx - movq 112(%rsi), %rax - movq %rdx, 200(%r9) - adcq $0, %rax - movq 120(%rsi), %rdx - movq %rax, 208(%r9) - adcq $0, %rdx - movq 128(%rsi), %rax - movq %rdx, 216(%r9) - adcq $0, %rax - movq 136(%rsi), %rdx - movq %rax, 224(%r9) - adcq $0, %rdx - movq 144(%rsi), %rax - movq %rdx, 232(%r9) - adcq $0, %rax - movq 152(%rsi), %rdx - movq %rax, 240(%r9) - adcq $0, %rdx - movq 160(%rsi), %rax - movq %rdx, 248(%r9) - adcq $0, %rax - movq 168(%rsi), %rdx - movq %rax, 256(%r9) - adcq $0, %rdx - movq 176(%rsi), %rax - movq %rdx, 264(%r9) - adcq $0, %rax - movq 184(%rsi), %rdx - movq %rax, 272(%r9) - adcq $0, %rdx - movq %rdx, 280(%r9) - addq $504, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_24,.-sp_3072_sqr_24 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_avx2_24 -.type sp_3072_mul_avx2_24,@function -.align 16 -sp_3072_mul_avx2_24: -#else -.globl _sp_3072_mul_avx2_24 -.p2align 4 -_sp_3072_mul_avx2_24: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $616, %rsp - movq %rdi, 576(%rsp) - movq %rsi, 584(%rsp) - movq %rdx, 592(%rsp) - leaq 384(%rsp), %r10 - leaq 96(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq %r8, 88(%r10) - adcq $0, %r13 - movq %r13, 600(%rsp) - leaq 480(%rsp), %r11 - leaq 96(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq %r8, 88(%r11) - adcq $0, %r14 - movq %r14, 608(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_12@plt -#else - callq _sp_3072_mul_avx2_12 -#endif /* __APPLE__ */ - movq 592(%rsp), %rdx - movq 584(%rsp), %rsi - leaq 192(%rsp), %rdi - addq $96, %rdx - addq $96, %rsi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_12@plt -#else - callq _sp_3072_mul_avx2_12 -#endif /* __APPLE__ */ - movq 592(%rsp), %rdx - movq 584(%rsp), %rsi - movq 576(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_12@plt -#else - callq _sp_3072_mul_avx2_12 -#endif /* __APPLE__ */ - movq 600(%rsp), %r13 - movq 608(%rsp), %r14 - movq 576(%rsp), %r15 - movq %r13, %r9 - leaq 384(%rsp), %r10 - leaq 480(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $192, %r15 - movq (%r10), %rax - movq (%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - addq %rcx, %rax - movq 8(%r10), %rcx - movq 8(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, (%r15) - adcq %r8, %rcx - movq 16(%r10), %r8 - movq 16(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 8(%r15) - adcq %rax, %r8 - movq 24(%r10), %rax - movq 24(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 16(%r15) - adcq %rcx, %rax - movq 32(%r10), %rcx - movq 32(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 24(%r15) - adcq %r8, %rcx - movq 40(%r10), %r8 - movq 40(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 32(%r15) - adcq %rax, %r8 - movq 48(%r10), %rax - movq 48(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 40(%r15) - adcq %rcx, %rax - movq 56(%r10), %rcx - movq 56(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 48(%r15) - adcq %r8, %rcx - movq 64(%r10), %r8 - movq 64(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 56(%r15) - adcq %rax, %r8 - movq 72(%r10), %rax - movq 72(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 64(%r15) - adcq %rcx, %rax - movq 80(%r10), %rcx - movq 80(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 72(%r15) - adcq %r8, %rcx - movq 88(%r10), %r8 - movq 88(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 80(%r15) - adcq %rax, %r8 - movq %r8, 88(%r15) - adcq $0, %r9 - leaq 192(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq %r8, 184(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq %r8, 184(%r10) - sbbq $0, %r9 - subq $96, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq %r8, 184(%r15) - adcq $0, %r9 - movq %r9, 288(%rdi) - addq $96, %r15 - # Add - movq (%r15), %rax - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq %rax, 96(%r15) - # Add to zero - movq 104(%r11), %rax - adcq $0, %rax - movq 112(%r11), %rcx - movq %rax, 104(%r15) - adcq $0, %rcx - movq 120(%r11), %r8 - movq %rcx, 112(%r15) - adcq $0, %r8 - movq 128(%r11), %rax - movq %r8, 120(%r15) - adcq $0, %rax - movq 136(%r11), %rcx - movq %rax, 128(%r15) - adcq $0, %rcx - movq 144(%r11), %r8 - movq %rcx, 136(%r15) - adcq $0, %r8 - movq 152(%r11), %rax - movq %r8, 144(%r15) - adcq $0, %rax - movq 160(%r11), %rcx - movq %rax, 152(%r15) - adcq $0, %rcx - movq 168(%r11), %r8 - movq %rcx, 160(%r15) - adcq $0, %r8 - movq 176(%r11), %rax - movq %r8, 168(%r15) - adcq $0, %rax - movq 184(%r11), %rcx - movq %rax, 176(%r15) - adcq $0, %rcx - movq %rcx, 184(%r15) - addq $616, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_avx2_24,.-sp_3072_mul_avx2_24 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_avx2_24 -.type sp_3072_sqr_avx2_24,@function -.align 16 -sp_3072_sqr_avx2_24: -#else -.globl _sp_3072_sqr_avx2_24 -.p2align 4 -_sp_3072_sqr_avx2_24: -#endif /* __APPLE__ */ - subq $504, %rsp - movq %rdi, 480(%rsp) - movq %rsi, 488(%rsp) - leaq 384(%rsp), %r8 - leaq 96(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq %rax, 88(%r8) - adcq $0, %rcx - movq %rcx, 496(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_12@plt -#else - callq _sp_3072_sqr_avx2_12 -#endif /* __APPLE__ */ - movq 488(%rsp), %rsi - leaq 192(%rsp), %rdi - addq $96, %rsi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_12@plt -#else - callq _sp_3072_sqr_avx2_12 -#endif /* __APPLE__ */ - movq 488(%rsp), %rsi - movq 480(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_12@plt -#else - callq _sp_3072_sqr_avx2_12 -#endif /* __APPLE__ */ - movq 496(%rsp), %r10 - movq %rdi, %r9 - leaq 384(%rsp), %r8 - movq %r10, %rcx - negq %r10 - addq $192, %r9 - movq (%r8), %rdx - pextq %r10, %rdx, %rdx - addq %rdx, %rdx - movq 8(%r8), %rax - movq %rdx, (%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 16(%r8), %rdx - movq %rax, 8(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 32(%r8), %rdx - movq %rax, 24(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 48(%r8), %rdx - movq %rax, 40(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 64(%r8), %rdx - movq %rax, 56(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 80(%r8), %rdx - movq %rax, 72(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq %rax, 88(%r9) - adcq $0, %rcx - leaq 192(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq %rax, 184(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq %rax, 184(%r8) - sbbq $0, %rcx - subq $96, %r9 - # Add in place - movq (%r9), %rdx - addq (%r8), %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq 8(%r8), %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq 16(%r8), %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq 24(%r8), %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq 32(%r8), %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq 40(%r8), %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq 48(%r8), %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq 56(%r8), %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq 64(%r8), %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq 72(%r8), %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq 80(%r8), %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq 88(%r8), %rax - movq 96(%r9), %rdx - movq %rax, 88(%r9) - adcq 96(%r8), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 104(%r8), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 112(%r8), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 120(%r8), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 128(%r8), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 136(%r8), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 144(%r8), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 152(%r8), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 160(%r8), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 168(%r8), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 176(%r8), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 184(%r8), %rax - movq %rax, 184(%r9) - adcq $0, %rcx - movq %rcx, 288(%rdi) - # Add in place - movq 96(%r9), %rdx - addq (%rsi), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 8(%rsi), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 16(%rsi), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 24(%rsi), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 32(%rsi), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 40(%rsi), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 48(%rsi), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 56(%rsi), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 64(%rsi), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 72(%rsi), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 80(%rsi), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 88(%rsi), %rax - movq 192(%r9), %rdx - movq %rax, 184(%r9) - adcq 96(%rsi), %rdx - movq %rdx, 192(%r9) - # Add to zero - movq 104(%rsi), %rdx - adcq $0, %rdx - movq 112(%rsi), %rax - movq %rdx, 200(%r9) - adcq $0, %rax - movq 120(%rsi), %rdx - movq %rax, 208(%r9) - adcq $0, %rdx - movq 128(%rsi), %rax - movq %rdx, 216(%r9) - adcq $0, %rax - movq 136(%rsi), %rdx - movq %rax, 224(%r9) - adcq $0, %rdx - movq 144(%rsi), %rax - movq %rdx, 232(%r9) - adcq $0, %rax - movq 152(%rsi), %rdx - movq %rax, 240(%r9) - adcq $0, %rdx - movq 160(%rsi), %rax - movq %rdx, 248(%r9) - adcq $0, %rax - movq 168(%rsi), %rdx - movq %rax, 256(%r9) - adcq $0, %rdx - movq 176(%rsi), %rax - movq %rdx, 264(%r9) - adcq $0, %rax - movq 184(%rsi), %rdx - movq %rax, 272(%r9) - adcq $0, %rdx - movq %rdx, 280(%r9) - addq $504, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_avx2_24,.-sp_3072_sqr_avx2_24 -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sub_in_place_48 -.type sp_3072_sub_in_place_48,@function -.align 16 -sp_3072_sub_in_place_48: -#else -.globl _sp_3072_sub_in_place_48 -.p2align 4 -_sp_3072_sub_in_place_48: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq 128(%rdi), %rdx - movq %rcx, 120(%rdi) - sbbq 128(%rsi), %rdx - movq 136(%rdi), %rcx - movq %rdx, 128(%rdi) - sbbq 136(%rsi), %rcx - movq 144(%rdi), %rdx - movq %rcx, 136(%rdi) - sbbq 144(%rsi), %rdx - movq 152(%rdi), %rcx - movq %rdx, 144(%rdi) - sbbq 152(%rsi), %rcx - movq 160(%rdi), %rdx - movq %rcx, 152(%rdi) - sbbq 160(%rsi), %rdx - movq 168(%rdi), %rcx - movq %rdx, 160(%rdi) - sbbq 168(%rsi), %rcx - movq 176(%rdi), %rdx - movq %rcx, 168(%rdi) - sbbq 176(%rsi), %rdx - movq 184(%rdi), %rcx - movq %rdx, 176(%rdi) - sbbq 184(%rsi), %rcx - movq 192(%rdi), %rdx - movq %rcx, 184(%rdi) - sbbq 192(%rsi), %rdx - movq 200(%rdi), %rcx - movq %rdx, 192(%rdi) - sbbq 200(%rsi), %rcx - movq 208(%rdi), %rdx - movq %rcx, 200(%rdi) - sbbq 208(%rsi), %rdx - movq 216(%rdi), %rcx - movq %rdx, 208(%rdi) - sbbq 216(%rsi), %rcx - movq 224(%rdi), %rdx - movq %rcx, 216(%rdi) - sbbq 224(%rsi), %rdx - movq 232(%rdi), %rcx - movq %rdx, 224(%rdi) - sbbq 232(%rsi), %rcx - movq 240(%rdi), %rdx - movq %rcx, 232(%rdi) - sbbq 240(%rsi), %rdx - movq 248(%rdi), %rcx - movq %rdx, 240(%rdi) - sbbq 248(%rsi), %rcx - movq 256(%rdi), %rdx - movq %rcx, 248(%rdi) - sbbq 256(%rsi), %rdx - movq 264(%rdi), %rcx - movq %rdx, 256(%rdi) - sbbq 264(%rsi), %rcx - movq 272(%rdi), %rdx - movq %rcx, 264(%rdi) - sbbq 272(%rsi), %rdx - movq 280(%rdi), %rcx - movq %rdx, 272(%rdi) - sbbq 280(%rsi), %rcx - movq 288(%rdi), %rdx - movq %rcx, 280(%rdi) - sbbq 288(%rsi), %rdx - movq 296(%rdi), %rcx - movq %rdx, 288(%rdi) - sbbq 296(%rsi), %rcx - movq 304(%rdi), %rdx - movq %rcx, 296(%rdi) - sbbq 304(%rsi), %rdx - movq 312(%rdi), %rcx - movq %rdx, 304(%rdi) - sbbq 312(%rsi), %rcx - movq 320(%rdi), %rdx - movq %rcx, 312(%rdi) - sbbq 320(%rsi), %rdx - movq 328(%rdi), %rcx - movq %rdx, 320(%rdi) - sbbq 328(%rsi), %rcx - movq 336(%rdi), %rdx - movq %rcx, 328(%rdi) - sbbq 336(%rsi), %rdx - movq 344(%rdi), %rcx - movq %rdx, 336(%rdi) - sbbq 344(%rsi), %rcx - movq 352(%rdi), %rdx - movq %rcx, 344(%rdi) - sbbq 352(%rsi), %rdx - movq 360(%rdi), %rcx - movq %rdx, 352(%rdi) - sbbq 360(%rsi), %rcx - movq 368(%rdi), %rdx - movq %rcx, 360(%rdi) - sbbq 368(%rsi), %rdx - movq 376(%rdi), %rcx - movq %rdx, 368(%rdi) - sbbq 376(%rsi), %rcx - movq %rcx, 376(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_sub_in_place_48,.-sp_3072_sub_in_place_48 -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_add_48 -.type sp_3072_add_48,@function -.align 16 -sp_3072_add_48: -#else -.globl _sp_3072_add_48 -.p2align 4 -_sp_3072_add_48: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - adcq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - adcq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - adcq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - adcq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - adcq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - adcq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - adcq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - adcq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - adcq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - adcq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - adcq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - adcq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - adcq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - adcq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - adcq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - adcq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - adcq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - adcq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - adcq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - adcq 248(%rdx), %r8 - movq 256(%rsi), %rcx - movq %r8, 248(%rdi) - adcq 256(%rdx), %rcx - movq 264(%rsi), %r8 - movq %rcx, 256(%rdi) - adcq 264(%rdx), %r8 - movq 272(%rsi), %rcx - movq %r8, 264(%rdi) - adcq 272(%rdx), %rcx - movq 280(%rsi), %r8 - movq %rcx, 272(%rdi) - adcq 280(%rdx), %r8 - movq 288(%rsi), %rcx - movq %r8, 280(%rdi) - adcq 288(%rdx), %rcx - movq 296(%rsi), %r8 - movq %rcx, 288(%rdi) - adcq 296(%rdx), %r8 - movq 304(%rsi), %rcx - movq %r8, 296(%rdi) - adcq 304(%rdx), %rcx - movq 312(%rsi), %r8 - movq %rcx, 304(%rdi) - adcq 312(%rdx), %r8 - movq 320(%rsi), %rcx - movq %r8, 312(%rdi) - adcq 320(%rdx), %rcx - movq 328(%rsi), %r8 - movq %rcx, 320(%rdi) - adcq 328(%rdx), %r8 - movq 336(%rsi), %rcx - movq %r8, 328(%rdi) - adcq 336(%rdx), %rcx - movq 344(%rsi), %r8 - movq %rcx, 336(%rdi) - adcq 344(%rdx), %r8 - movq 352(%rsi), %rcx - movq %r8, 344(%rdi) - adcq 352(%rdx), %rcx - movq 360(%rsi), %r8 - movq %rcx, 352(%rdi) - adcq 360(%rdx), %r8 - movq 368(%rsi), %rcx - movq %r8, 360(%rdi) - adcq 368(%rdx), %rcx - movq 376(%rsi), %r8 - movq %rcx, 368(%rdi) - adcq 376(%rdx), %r8 - movq %r8, 376(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_add_48,.-sp_3072_add_48 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_48 -.type sp_3072_mul_48,@function -.align 16 -sp_3072_mul_48: -#else -.globl _sp_3072_mul_48 -.p2align 4 -_sp_3072_mul_48: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $1192, %rsp - movq %rdi, 1152(%rsp) - movq %rsi, 1160(%rsp) - movq %rdx, 1168(%rsp) - leaq 768(%rsp), %r10 - leaq 192(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq 128(%rsi), %rcx - movq %rax, 120(%r10) - adcq 128(%r12), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%r10) - adcq 136(%r12), %r8 - movq 144(%rsi), %rax - movq %r8, 136(%r10) - adcq 144(%r12), %rax - movq 152(%rsi), %rcx - movq %rax, 144(%r10) - adcq 152(%r12), %rcx - movq 160(%rsi), %r8 - movq %rcx, 152(%r10) - adcq 160(%r12), %r8 - movq 168(%rsi), %rax - movq %r8, 160(%r10) - adcq 168(%r12), %rax - movq 176(%rsi), %rcx - movq %rax, 168(%r10) - adcq 176(%r12), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%r10) - adcq 184(%r12), %r8 - movq %r8, 184(%r10) - adcq $0, %r13 - movq %r13, 1176(%rsp) - leaq 960(%rsp), %r11 - leaq 192(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq 128(%rdx), %rcx - movq %rax, 120(%r11) - adcq 128(%r12), %rcx - movq 136(%rdx), %r8 - movq %rcx, 128(%r11) - adcq 136(%r12), %r8 - movq 144(%rdx), %rax - movq %r8, 136(%r11) - adcq 144(%r12), %rax - movq 152(%rdx), %rcx - movq %rax, 144(%r11) - adcq 152(%r12), %rcx - movq 160(%rdx), %r8 - movq %rcx, 152(%r11) - adcq 160(%r12), %r8 - movq 168(%rdx), %rax - movq %r8, 160(%r11) - adcq 168(%r12), %rax - movq 176(%rdx), %rcx - movq %rax, 168(%r11) - adcq 176(%r12), %rcx - movq 184(%rdx), %r8 - movq %rcx, 176(%r11) - adcq 184(%r12), %r8 - movq %r8, 184(%r11) - adcq $0, %r14 - movq %r14, 1184(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_mul_24@plt -#else - callq _sp_3072_mul_24 -#endif /* __APPLE__ */ - movq 1168(%rsp), %rdx - movq 1160(%rsp), %rsi - leaq 384(%rsp), %rdi - addq $192, %rdx - addq $192, %rsi -#ifndef __APPLE__ - callq sp_3072_mul_24@plt -#else - callq _sp_3072_mul_24 -#endif /* __APPLE__ */ - movq 1168(%rsp), %rdx - movq 1160(%rsp), %rsi - movq 1152(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_mul_24@plt -#else - callq _sp_3072_mul_24 -#endif /* __APPLE__ */ - movq 1176(%rsp), %r13 - movq 1184(%rsp), %r14 - movq 1152(%rsp), %r15 - movq %r13, %r9 - leaq 768(%rsp), %r10 - leaq 960(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $384, %r15 - movq (%r10), %rax - movq (%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, (%r10) - movq %rcx, (%r11) - movq 8(%r10), %rax - movq 8(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 8(%r10) - movq %rcx, 8(%r11) - movq 16(%r10), %rax - movq 16(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 16(%r10) - movq %rcx, 16(%r11) - movq 24(%r10), %rax - movq 24(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 24(%r10) - movq %rcx, 24(%r11) - movq 32(%r10), %rax - movq 32(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 32(%r10) - movq %rcx, 32(%r11) - movq 40(%r10), %rax - movq 40(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 40(%r10) - movq %rcx, 40(%r11) - movq 48(%r10), %rax - movq 48(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 48(%r10) - movq %rcx, 48(%r11) - movq 56(%r10), %rax - movq 56(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 56(%r10) - movq %rcx, 56(%r11) - movq 64(%r10), %rax - movq 64(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 64(%r10) - movq %rcx, 64(%r11) - movq 72(%r10), %rax - movq 72(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 72(%r10) - movq %rcx, 72(%r11) - movq 80(%r10), %rax - movq 80(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 80(%r10) - movq %rcx, 80(%r11) - movq 88(%r10), %rax - movq 88(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 88(%r10) - movq %rcx, 88(%r11) - movq 96(%r10), %rax - movq 96(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 96(%r10) - movq %rcx, 96(%r11) - movq 104(%r10), %rax - movq 104(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 104(%r10) - movq %rcx, 104(%r11) - movq 112(%r10), %rax - movq 112(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 112(%r10) - movq %rcx, 112(%r11) - movq 120(%r10), %rax - movq 120(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 120(%r10) - movq %rcx, 120(%r11) - movq 128(%r10), %rax - movq 128(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 128(%r10) - movq %rcx, 128(%r11) - movq 136(%r10), %rax - movq 136(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 136(%r10) - movq %rcx, 136(%r11) - movq 144(%r10), %rax - movq 144(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 144(%r10) - movq %rcx, 144(%r11) - movq 152(%r10), %rax - movq 152(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 152(%r10) - movq %rcx, 152(%r11) - movq 160(%r10), %rax - movq 160(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 160(%r10) - movq %rcx, 160(%r11) - movq 168(%r10), %rax - movq 168(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 168(%r10) - movq %rcx, 168(%r11) - movq 176(%r10), %rax - movq 176(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 176(%r10) - movq %rcx, 176(%r11) - movq 184(%r10), %rax - movq 184(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 184(%r10) - movq %rcx, 184(%r11) - movq (%r10), %rax - addq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq %r8, 184(%r15) - adcq $0, %r9 - leaq 384(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%r11), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%r11), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%r11), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%r11), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%r11), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%r11), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%r11), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%r11), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%r11), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%r11), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%r11), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%r11), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%r11), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%r11), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%r11), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%r11), %r8 - movq %r8, 376(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%rdi), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%rdi), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%rdi), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%rdi), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%rdi), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%rdi), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%rdi), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%rdi), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%rdi), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%rdi), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%rdi), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%rdi), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%rdi), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%rdi), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%rdi), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%rdi), %r8 - movq %r8, 376(%r10) - sbbq $0, %r9 - subq $192, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r10), %r8 - movq 264(%r15), %rax - movq %r8, 256(%r15) - adcq 264(%r10), %rax - movq 272(%r15), %rcx - movq %rax, 264(%r15) - adcq 272(%r10), %rcx - movq 280(%r15), %r8 - movq %rcx, 272(%r15) - adcq 280(%r10), %r8 - movq 288(%r15), %rax - movq %r8, 280(%r15) - adcq 288(%r10), %rax - movq 296(%r15), %rcx - movq %rax, 288(%r15) - adcq 296(%r10), %rcx - movq 304(%r15), %r8 - movq %rcx, 296(%r15) - adcq 304(%r10), %r8 - movq 312(%r15), %rax - movq %r8, 304(%r15) - adcq 312(%r10), %rax - movq 320(%r15), %rcx - movq %rax, 312(%r15) - adcq 320(%r10), %rcx - movq 328(%r15), %r8 - movq %rcx, 320(%r15) - adcq 328(%r10), %r8 - movq 336(%r15), %rax - movq %r8, 328(%r15) - adcq 336(%r10), %rax - movq 344(%r15), %rcx - movq %rax, 336(%r15) - adcq 344(%r10), %rcx - movq 352(%r15), %r8 - movq %rcx, 344(%r15) - adcq 352(%r10), %r8 - movq 360(%r15), %rax - movq %r8, 352(%r15) - adcq 360(%r10), %rax - movq 368(%r15), %rcx - movq %rax, 360(%r15) - adcq 368(%r10), %rcx - movq 376(%r15), %r8 - movq %rcx, 368(%r15) - adcq 376(%r10), %r8 - movq %r8, 376(%r15) - adcq $0, %r9 - movq %r9, 576(%rdi) - addq $192, %r15 - # Add - movq (%r15), %rax - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r11), %rax - movq %rax, 192(%r15) - # Add to zero - movq 200(%r11), %rax - adcq $0, %rax - movq 208(%r11), %rcx - movq %rax, 200(%r15) - adcq $0, %rcx - movq 216(%r11), %r8 - movq %rcx, 208(%r15) - adcq $0, %r8 - movq 224(%r11), %rax - movq %r8, 216(%r15) - adcq $0, %rax - movq 232(%r11), %rcx - movq %rax, 224(%r15) - adcq $0, %rcx - movq 240(%r11), %r8 - movq %rcx, 232(%r15) - adcq $0, %r8 - movq 248(%r11), %rax - movq %r8, 240(%r15) - adcq $0, %rax - movq 256(%r11), %rcx - movq %rax, 248(%r15) - adcq $0, %rcx - movq 264(%r11), %r8 - movq %rcx, 256(%r15) - adcq $0, %r8 - movq 272(%r11), %rax - movq %r8, 264(%r15) - adcq $0, %rax - movq 280(%r11), %rcx - movq %rax, 272(%r15) - adcq $0, %rcx - movq 288(%r11), %r8 - movq %rcx, 280(%r15) - adcq $0, %r8 - movq 296(%r11), %rax - movq %r8, 288(%r15) - adcq $0, %rax - movq 304(%r11), %rcx - movq %rax, 296(%r15) - adcq $0, %rcx - movq 312(%r11), %r8 - movq %rcx, 304(%r15) - adcq $0, %r8 - movq 320(%r11), %rax - movq %r8, 312(%r15) - adcq $0, %rax - movq 328(%r11), %rcx - movq %rax, 320(%r15) - adcq $0, %rcx - movq 336(%r11), %r8 - movq %rcx, 328(%r15) - adcq $0, %r8 - movq 344(%r11), %rax - movq %r8, 336(%r15) - adcq $0, %rax - movq 352(%r11), %rcx - movq %rax, 344(%r15) - adcq $0, %rcx - movq 360(%r11), %r8 - movq %rcx, 352(%r15) - adcq $0, %r8 - movq 368(%r11), %rax - movq %r8, 360(%r15) - adcq $0, %rax - movq 376(%r11), %rcx - movq %rax, 368(%r15) - adcq $0, %rcx - movq %rcx, 376(%r15) - addq $1192, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_48,.-sp_3072_mul_48 -#endif /* __APPLE__ */ -/* Add a to a into r. (r = a + a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_dbl_24 -.type sp_3072_dbl_24,@function -.align 16 -sp_3072_dbl_24: -#else -.globl _sp_3072_dbl_24 -.p2align 4 -_sp_3072_dbl_24: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - xorq %rax, %rax - addq %rdx, %rdx - movq 8(%rsi), %rcx - movq %rdx, (%rdi) - adcq %rcx, %rcx - movq 16(%rsi), %rdx - movq %rcx, 8(%rdi) - adcq %rdx, %rdx - movq 24(%rsi), %rcx - movq %rdx, 16(%rdi) - adcq %rcx, %rcx - movq 32(%rsi), %rdx - movq %rcx, 24(%rdi) - adcq %rdx, %rdx - movq 40(%rsi), %rcx - movq %rdx, 32(%rdi) - adcq %rcx, %rcx - movq 48(%rsi), %rdx - movq %rcx, 40(%rdi) - adcq %rdx, %rdx - movq 56(%rsi), %rcx - movq %rdx, 48(%rdi) - adcq %rcx, %rcx - movq 64(%rsi), %rdx - movq %rcx, 56(%rdi) - adcq %rdx, %rdx - movq 72(%rsi), %rcx - movq %rdx, 64(%rdi) - adcq %rcx, %rcx - movq 80(%rsi), %rdx - movq %rcx, 72(%rdi) - adcq %rdx, %rdx - movq 88(%rsi), %rcx - movq %rdx, 80(%rdi) - adcq %rcx, %rcx - movq 96(%rsi), %rdx - movq %rcx, 88(%rdi) - adcq %rdx, %rdx - movq 104(%rsi), %rcx - movq %rdx, 96(%rdi) - adcq %rcx, %rcx - movq 112(%rsi), %rdx - movq %rcx, 104(%rdi) - adcq %rdx, %rdx - movq 120(%rsi), %rcx - movq %rdx, 112(%rdi) - adcq %rcx, %rcx - movq 128(%rsi), %rdx - movq %rcx, 120(%rdi) - adcq %rdx, %rdx - movq 136(%rsi), %rcx - movq %rdx, 128(%rdi) - adcq %rcx, %rcx - movq 144(%rsi), %rdx - movq %rcx, 136(%rdi) - adcq %rdx, %rdx - movq 152(%rsi), %rcx - movq %rdx, 144(%rdi) - adcq %rcx, %rcx - movq 160(%rsi), %rdx - movq %rcx, 152(%rdi) - adcq %rdx, %rdx - movq 168(%rsi), %rcx - movq %rdx, 160(%rdi) - adcq %rcx, %rcx - movq 176(%rsi), %rdx - movq %rcx, 168(%rdi) - adcq %rdx, %rdx - movq 184(%rsi), %rcx - movq %rdx, 176(%rdi) - adcq %rcx, %rcx - movq %rcx, 184(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_dbl_24,.-sp_3072_dbl_24 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_48 -.type sp_3072_sqr_48,@function -.align 16 -sp_3072_sqr_48: -#else -.globl _sp_3072_sqr_48 -.p2align 4 -_sp_3072_sqr_48: -#endif /* __APPLE__ */ - subq $984, %rsp - movq %rdi, 960(%rsp) - movq %rsi, 968(%rsp) - leaq 768(%rsp), %r8 - leaq 192(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq 128(%rsi), %rdx - movq %rax, 120(%r8) - adcq 128(%r9), %rdx - movq 136(%rsi), %rax - movq %rdx, 128(%r8) - adcq 136(%r9), %rax - movq 144(%rsi), %rdx - movq %rax, 136(%r8) - adcq 144(%r9), %rdx - movq 152(%rsi), %rax - movq %rdx, 144(%r8) - adcq 152(%r9), %rax - movq 160(%rsi), %rdx - movq %rax, 152(%r8) - adcq 160(%r9), %rdx - movq 168(%rsi), %rax - movq %rdx, 160(%r8) - adcq 168(%r9), %rax - movq 176(%rsi), %rdx - movq %rax, 168(%r8) - adcq 176(%r9), %rdx - movq 184(%rsi), %rax - movq %rdx, 176(%r8) - adcq 184(%r9), %rax - movq %rax, 184(%r8) - adcq $0, %rcx - movq %rcx, 976(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_24@plt -#else - callq _sp_3072_sqr_24 -#endif /* __APPLE__ */ - movq 968(%rsp), %rsi - leaq 384(%rsp), %rdi - addq $192, %rsi -#ifndef __APPLE__ - callq sp_3072_sqr_24@plt -#else - callq _sp_3072_sqr_24 -#endif /* __APPLE__ */ - movq 968(%rsp), %rsi - movq 960(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_24@plt -#else - callq _sp_3072_sqr_24 -#endif /* __APPLE__ */ - movq 976(%rsp), %r10 - movq %rdi, %r9 - leaq 768(%rsp), %r8 - movq %r10, %rcx - negq %r10 - addq $384, %r9 - movq (%r8), %rdx - movq 8(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, (%r9) - movq %rax, 8(%r9) - movq 16(%r8), %rdx - movq 24(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 16(%r9) - movq %rax, 24(%r9) - movq 32(%r8), %rdx - movq 40(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 32(%r9) - movq %rax, 40(%r9) - movq 48(%r8), %rdx - movq 56(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 48(%r9) - movq %rax, 56(%r9) - movq 64(%r8), %rdx - movq 72(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 64(%r9) - movq %rax, 72(%r9) - movq 80(%r8), %rdx - movq 88(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 80(%r9) - movq %rax, 88(%r9) - movq 96(%r8), %rdx - movq 104(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 96(%r9) - movq %rax, 104(%r9) - movq 112(%r8), %rdx - movq 120(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 112(%r9) - movq %rax, 120(%r9) - movq 128(%r8), %rdx - movq 136(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 128(%r9) - movq %rax, 136(%r9) - movq 144(%r8), %rdx - movq 152(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 144(%r9) - movq %rax, 152(%r9) - movq 160(%r8), %rdx - movq 168(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 160(%r9) - movq %rax, 168(%r9) - movq 176(%r8), %rdx - movq 184(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 176(%r9) - movq %rax, 184(%r9) - movq (%r9), %rdx - addq %rdx, %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq %rax, %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq %rdx, %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq %rax, %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq %rdx, %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq %rax, %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq %rdx, %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq %rax, %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq %rdx, %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq %rax, %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq %rdx, %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq %rax, %rax - movq 96(%r9), %rdx - movq %rax, 88(%r9) - adcq %rdx, %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq %rax, %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq %rdx, %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq %rax, %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq %rdx, %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq %rax, %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq %rdx, %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq %rax, %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq %rdx, %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq %rax, %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq %rdx, %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq %rax, %rax - movq %rax, 184(%r9) - adcq $0, %rcx - leaq 384(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rsi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rsi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rsi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rsi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rsi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rsi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rsi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rsi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rsi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rsi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rsi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rsi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rsi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rsi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rsi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rsi), %rax - movq %rax, 376(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rdi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rdi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rdi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rdi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rdi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rdi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rdi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rdi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rdi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rdi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rdi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rdi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rdi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rdi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rdi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rdi), %rax - movq %rax, 376(%r8) - sbbq $0, %rcx - subq $192, %r9 - # Add in place - movq (%r9), %rdx - addq (%r8), %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq 8(%r8), %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq 16(%r8), %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq 24(%r8), %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq 32(%r8), %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq 40(%r8), %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq 48(%r8), %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq 56(%r8), %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq 64(%r8), %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq 72(%r8), %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq 80(%r8), %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq 88(%r8), %rax - movq 96(%r9), %rdx - movq %rax, 88(%r9) - adcq 96(%r8), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 104(%r8), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 112(%r8), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 120(%r8), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 128(%r8), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 136(%r8), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 144(%r8), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 152(%r8), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 160(%r8), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 168(%r8), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 176(%r8), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 184(%r8), %rax - movq 192(%r9), %rdx - movq %rax, 184(%r9) - adcq 192(%r8), %rdx - movq 200(%r9), %rax - movq %rdx, 192(%r9) - adcq 200(%r8), %rax - movq 208(%r9), %rdx - movq %rax, 200(%r9) - adcq 208(%r8), %rdx - movq 216(%r9), %rax - movq %rdx, 208(%r9) - adcq 216(%r8), %rax - movq 224(%r9), %rdx - movq %rax, 216(%r9) - adcq 224(%r8), %rdx - movq 232(%r9), %rax - movq %rdx, 224(%r9) - adcq 232(%r8), %rax - movq 240(%r9), %rdx - movq %rax, 232(%r9) - adcq 240(%r8), %rdx - movq 248(%r9), %rax - movq %rdx, 240(%r9) - adcq 248(%r8), %rax - movq 256(%r9), %rdx - movq %rax, 248(%r9) - adcq 256(%r8), %rdx - movq 264(%r9), %rax - movq %rdx, 256(%r9) - adcq 264(%r8), %rax - movq 272(%r9), %rdx - movq %rax, 264(%r9) - adcq 272(%r8), %rdx - movq 280(%r9), %rax - movq %rdx, 272(%r9) - adcq 280(%r8), %rax - movq 288(%r9), %rdx - movq %rax, 280(%r9) - adcq 288(%r8), %rdx - movq 296(%r9), %rax - movq %rdx, 288(%r9) - adcq 296(%r8), %rax - movq 304(%r9), %rdx - movq %rax, 296(%r9) - adcq 304(%r8), %rdx - movq 312(%r9), %rax - movq %rdx, 304(%r9) - adcq 312(%r8), %rax - movq 320(%r9), %rdx - movq %rax, 312(%r9) - adcq 320(%r8), %rdx - movq 328(%r9), %rax - movq %rdx, 320(%r9) - adcq 328(%r8), %rax - movq 336(%r9), %rdx - movq %rax, 328(%r9) - adcq 336(%r8), %rdx - movq 344(%r9), %rax - movq %rdx, 336(%r9) - adcq 344(%r8), %rax - movq 352(%r9), %rdx - movq %rax, 344(%r9) - adcq 352(%r8), %rdx - movq 360(%r9), %rax - movq %rdx, 352(%r9) - adcq 360(%r8), %rax - movq 368(%r9), %rdx - movq %rax, 360(%r9) - adcq 368(%r8), %rdx - movq 376(%r9), %rax - movq %rdx, 368(%r9) - adcq 376(%r8), %rax - movq %rax, 376(%r9) - adcq $0, %rcx - movq %rcx, 576(%rdi) - # Add in place - movq 192(%r9), %rdx - addq (%rsi), %rdx - movq 200(%r9), %rax - movq %rdx, 192(%r9) - adcq 8(%rsi), %rax - movq 208(%r9), %rdx - movq %rax, 200(%r9) - adcq 16(%rsi), %rdx - movq 216(%r9), %rax - movq %rdx, 208(%r9) - adcq 24(%rsi), %rax - movq 224(%r9), %rdx - movq %rax, 216(%r9) - adcq 32(%rsi), %rdx - movq 232(%r9), %rax - movq %rdx, 224(%r9) - adcq 40(%rsi), %rax - movq 240(%r9), %rdx - movq %rax, 232(%r9) - adcq 48(%rsi), %rdx - movq 248(%r9), %rax - movq %rdx, 240(%r9) - adcq 56(%rsi), %rax - movq 256(%r9), %rdx - movq %rax, 248(%r9) - adcq 64(%rsi), %rdx - movq 264(%r9), %rax - movq %rdx, 256(%r9) - adcq 72(%rsi), %rax - movq 272(%r9), %rdx - movq %rax, 264(%r9) - adcq 80(%rsi), %rdx - movq 280(%r9), %rax - movq %rdx, 272(%r9) - adcq 88(%rsi), %rax - movq 288(%r9), %rdx - movq %rax, 280(%r9) - adcq 96(%rsi), %rdx - movq 296(%r9), %rax - movq %rdx, 288(%r9) - adcq 104(%rsi), %rax - movq 304(%r9), %rdx - movq %rax, 296(%r9) - adcq 112(%rsi), %rdx - movq 312(%r9), %rax - movq %rdx, 304(%r9) - adcq 120(%rsi), %rax - movq 320(%r9), %rdx - movq %rax, 312(%r9) - adcq 128(%rsi), %rdx - movq 328(%r9), %rax - movq %rdx, 320(%r9) - adcq 136(%rsi), %rax - movq 336(%r9), %rdx - movq %rax, 328(%r9) - adcq 144(%rsi), %rdx - movq 344(%r9), %rax - movq %rdx, 336(%r9) - adcq 152(%rsi), %rax - movq 352(%r9), %rdx - movq %rax, 344(%r9) - adcq 160(%rsi), %rdx - movq 360(%r9), %rax - movq %rdx, 352(%r9) - adcq 168(%rsi), %rax - movq 368(%r9), %rdx - movq %rax, 360(%r9) - adcq 176(%rsi), %rdx - movq 376(%r9), %rax - movq %rdx, 368(%r9) - adcq 184(%rsi), %rax - movq 384(%r9), %rdx - movq %rax, 376(%r9) - adcq 192(%rsi), %rdx - movq %rdx, 384(%r9) - # Add to zero - movq 200(%rsi), %rdx - adcq $0, %rdx - movq 208(%rsi), %rax - movq %rdx, 392(%r9) - adcq $0, %rax - movq 216(%rsi), %rdx - movq %rax, 400(%r9) - adcq $0, %rdx - movq 224(%rsi), %rax - movq %rdx, 408(%r9) - adcq $0, %rax - movq 232(%rsi), %rdx - movq %rax, 416(%r9) - adcq $0, %rdx - movq 240(%rsi), %rax - movq %rdx, 424(%r9) - adcq $0, %rax - movq 248(%rsi), %rdx - movq %rax, 432(%r9) - adcq $0, %rdx - movq 256(%rsi), %rax - movq %rdx, 440(%r9) - adcq $0, %rax - movq 264(%rsi), %rdx - movq %rax, 448(%r9) - adcq $0, %rdx - movq 272(%rsi), %rax - movq %rdx, 456(%r9) - adcq $0, %rax - movq 280(%rsi), %rdx - movq %rax, 464(%r9) - adcq $0, %rdx - movq 288(%rsi), %rax - movq %rdx, 472(%r9) - adcq $0, %rax - movq 296(%rsi), %rdx - movq %rax, 480(%r9) - adcq $0, %rdx - movq 304(%rsi), %rax - movq %rdx, 488(%r9) - adcq $0, %rax - movq 312(%rsi), %rdx - movq %rax, 496(%r9) - adcq $0, %rdx - movq 320(%rsi), %rax - movq %rdx, 504(%r9) - adcq $0, %rax - movq 328(%rsi), %rdx - movq %rax, 512(%r9) - adcq $0, %rdx - movq 336(%rsi), %rax - movq %rdx, 520(%r9) - adcq $0, %rax - movq 344(%rsi), %rdx - movq %rax, 528(%r9) - adcq $0, %rdx - movq 352(%rsi), %rax - movq %rdx, 536(%r9) - adcq $0, %rax - movq 360(%rsi), %rdx - movq %rax, 544(%r9) - adcq $0, %rdx - movq 368(%rsi), %rax - movq %rdx, 552(%r9) - adcq $0, %rax - movq 376(%rsi), %rdx - movq %rax, 560(%r9) - adcq $0, %rdx - movq %rdx, 568(%r9) - addq $984, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_48,.-sp_3072_sqr_48 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_avx2_48 -.type sp_3072_mul_avx2_48,@function -.align 16 -sp_3072_mul_avx2_48: -#else -.globl _sp_3072_mul_avx2_48 -.p2align 4 -_sp_3072_mul_avx2_48: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $1192, %rsp - movq %rdi, 1152(%rsp) - movq %rsi, 1160(%rsp) - movq %rdx, 1168(%rsp) - leaq 768(%rsp), %r10 - leaq 192(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq 128(%rsi), %rcx - movq %rax, 120(%r10) - adcq 128(%r12), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%r10) - adcq 136(%r12), %r8 - movq 144(%rsi), %rax - movq %r8, 136(%r10) - adcq 144(%r12), %rax - movq 152(%rsi), %rcx - movq %rax, 144(%r10) - adcq 152(%r12), %rcx - movq 160(%rsi), %r8 - movq %rcx, 152(%r10) - adcq 160(%r12), %r8 - movq 168(%rsi), %rax - movq %r8, 160(%r10) - adcq 168(%r12), %rax - movq 176(%rsi), %rcx - movq %rax, 168(%r10) - adcq 176(%r12), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%r10) - adcq 184(%r12), %r8 - movq %r8, 184(%r10) - adcq $0, %r13 - movq %r13, 1176(%rsp) - leaq 960(%rsp), %r11 - leaq 192(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq 128(%rdx), %rcx - movq %rax, 120(%r11) - adcq 128(%r12), %rcx - movq 136(%rdx), %r8 - movq %rcx, 128(%r11) - adcq 136(%r12), %r8 - movq 144(%rdx), %rax - movq %r8, 136(%r11) - adcq 144(%r12), %rax - movq 152(%rdx), %rcx - movq %rax, 144(%r11) - adcq 152(%r12), %rcx - movq 160(%rdx), %r8 - movq %rcx, 152(%r11) - adcq 160(%r12), %r8 - movq 168(%rdx), %rax - movq %r8, 160(%r11) - adcq 168(%r12), %rax - movq 176(%rdx), %rcx - movq %rax, 168(%r11) - adcq 176(%r12), %rcx - movq 184(%rdx), %r8 - movq %rcx, 176(%r11) - adcq 184(%r12), %r8 - movq %r8, 184(%r11) - adcq $0, %r14 - movq %r14, 1184(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_24@plt -#else - callq _sp_3072_mul_avx2_24 -#endif /* __APPLE__ */ - movq 1168(%rsp), %rdx - movq 1160(%rsp), %rsi - leaq 384(%rsp), %rdi - addq $192, %rdx - addq $192, %rsi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_24@plt -#else - callq _sp_3072_mul_avx2_24 -#endif /* __APPLE__ */ - movq 1168(%rsp), %rdx - movq 1160(%rsp), %rsi - movq 1152(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_mul_avx2_24@plt -#else - callq _sp_3072_mul_avx2_24 -#endif /* __APPLE__ */ - movq 1176(%rsp), %r13 - movq 1184(%rsp), %r14 - movq 1152(%rsp), %r15 - movq %r13, %r9 - leaq 768(%rsp), %r10 - leaq 960(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $384, %r15 - movq (%r10), %rax - movq (%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - addq %rcx, %rax - movq 8(%r10), %rcx - movq 8(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, (%r15) - adcq %r8, %rcx - movq 16(%r10), %r8 - movq 16(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 8(%r15) - adcq %rax, %r8 - movq 24(%r10), %rax - movq 24(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 16(%r15) - adcq %rcx, %rax - movq 32(%r10), %rcx - movq 32(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 24(%r15) - adcq %r8, %rcx - movq 40(%r10), %r8 - movq 40(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 32(%r15) - adcq %rax, %r8 - movq 48(%r10), %rax - movq 48(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 40(%r15) - adcq %rcx, %rax - movq 56(%r10), %rcx - movq 56(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 48(%r15) - adcq %r8, %rcx - movq 64(%r10), %r8 - movq 64(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 56(%r15) - adcq %rax, %r8 - movq 72(%r10), %rax - movq 72(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 64(%r15) - adcq %rcx, %rax - movq 80(%r10), %rcx - movq 80(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 72(%r15) - adcq %r8, %rcx - movq 88(%r10), %r8 - movq 88(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 80(%r15) - adcq %rax, %r8 - movq 96(%r10), %rax - movq 96(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 88(%r15) - adcq %rcx, %rax - movq 104(%r10), %rcx - movq 104(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 96(%r15) - adcq %r8, %rcx - movq 112(%r10), %r8 - movq 112(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 104(%r15) - adcq %rax, %r8 - movq 120(%r10), %rax - movq 120(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 112(%r15) - adcq %rcx, %rax - movq 128(%r10), %rcx - movq 128(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 120(%r15) - adcq %r8, %rcx - movq 136(%r10), %r8 - movq 136(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 128(%r15) - adcq %rax, %r8 - movq 144(%r10), %rax - movq 144(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 136(%r15) - adcq %rcx, %rax - movq 152(%r10), %rcx - movq 152(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 144(%r15) - adcq %r8, %rcx - movq 160(%r10), %r8 - movq 160(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 152(%r15) - adcq %rax, %r8 - movq 168(%r10), %rax - movq 168(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 160(%r15) - adcq %rcx, %rax - movq 176(%r10), %rcx - movq 176(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 168(%r15) - adcq %r8, %rcx - movq 184(%r10), %r8 - movq 184(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 176(%r15) - adcq %rax, %r8 - movq %r8, 184(%r15) - adcq $0, %r9 - leaq 384(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%r11), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%r11), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%r11), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%r11), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%r11), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%r11), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%r11), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%r11), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%r11), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%r11), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%r11), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%r11), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%r11), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%r11), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%r11), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%r11), %r8 - movq %r8, 376(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%rdi), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%rdi), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%rdi), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%rdi), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%rdi), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%rdi), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%rdi), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%rdi), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%rdi), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%rdi), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%rdi), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%rdi), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%rdi), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%rdi), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%rdi), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%rdi), %r8 - movq %r8, 376(%r10) - sbbq $0, %r9 - subq $192, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r10), %r8 - movq 264(%r15), %rax - movq %r8, 256(%r15) - adcq 264(%r10), %rax - movq 272(%r15), %rcx - movq %rax, 264(%r15) - adcq 272(%r10), %rcx - movq 280(%r15), %r8 - movq %rcx, 272(%r15) - adcq 280(%r10), %r8 - movq 288(%r15), %rax - movq %r8, 280(%r15) - adcq 288(%r10), %rax - movq 296(%r15), %rcx - movq %rax, 288(%r15) - adcq 296(%r10), %rcx - movq 304(%r15), %r8 - movq %rcx, 296(%r15) - adcq 304(%r10), %r8 - movq 312(%r15), %rax - movq %r8, 304(%r15) - adcq 312(%r10), %rax - movq 320(%r15), %rcx - movq %rax, 312(%r15) - adcq 320(%r10), %rcx - movq 328(%r15), %r8 - movq %rcx, 320(%r15) - adcq 328(%r10), %r8 - movq 336(%r15), %rax - movq %r8, 328(%r15) - adcq 336(%r10), %rax - movq 344(%r15), %rcx - movq %rax, 336(%r15) - adcq 344(%r10), %rcx - movq 352(%r15), %r8 - movq %rcx, 344(%r15) - adcq 352(%r10), %r8 - movq 360(%r15), %rax - movq %r8, 352(%r15) - adcq 360(%r10), %rax - movq 368(%r15), %rcx - movq %rax, 360(%r15) - adcq 368(%r10), %rcx - movq 376(%r15), %r8 - movq %rcx, 368(%r15) - adcq 376(%r10), %r8 - movq %r8, 376(%r15) - adcq $0, %r9 - movq %r9, 576(%rdi) - addq $192, %r15 - # Add - movq (%r15), %rax - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r11), %rax - movq %rax, 192(%r15) - # Add to zero - movq 200(%r11), %rax - adcq $0, %rax - movq 208(%r11), %rcx - movq %rax, 200(%r15) - adcq $0, %rcx - movq 216(%r11), %r8 - movq %rcx, 208(%r15) - adcq $0, %r8 - movq 224(%r11), %rax - movq %r8, 216(%r15) - adcq $0, %rax - movq 232(%r11), %rcx - movq %rax, 224(%r15) - adcq $0, %rcx - movq 240(%r11), %r8 - movq %rcx, 232(%r15) - adcq $0, %r8 - movq 248(%r11), %rax - movq %r8, 240(%r15) - adcq $0, %rax - movq 256(%r11), %rcx - movq %rax, 248(%r15) - adcq $0, %rcx - movq 264(%r11), %r8 - movq %rcx, 256(%r15) - adcq $0, %r8 - movq 272(%r11), %rax - movq %r8, 264(%r15) - adcq $0, %rax - movq 280(%r11), %rcx - movq %rax, 272(%r15) - adcq $0, %rcx - movq 288(%r11), %r8 - movq %rcx, 280(%r15) - adcq $0, %r8 - movq 296(%r11), %rax - movq %r8, 288(%r15) - adcq $0, %rax - movq 304(%r11), %rcx - movq %rax, 296(%r15) - adcq $0, %rcx - movq 312(%r11), %r8 - movq %rcx, 304(%r15) - adcq $0, %r8 - movq 320(%r11), %rax - movq %r8, 312(%r15) - adcq $0, %rax - movq 328(%r11), %rcx - movq %rax, 320(%r15) - adcq $0, %rcx - movq 336(%r11), %r8 - movq %rcx, 328(%r15) - adcq $0, %r8 - movq 344(%r11), %rax - movq %r8, 336(%r15) - adcq $0, %rax - movq 352(%r11), %rcx - movq %rax, 344(%r15) - adcq $0, %rcx - movq 360(%r11), %r8 - movq %rcx, 352(%r15) - adcq $0, %r8 - movq 368(%r11), %rax - movq %r8, 360(%r15) - adcq $0, %rax - movq 376(%r11), %rcx - movq %rax, 368(%r15) - adcq $0, %rcx - movq %rcx, 376(%r15) - addq $1192, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_avx2_48,.-sp_3072_mul_avx2_48 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sqr_avx2_48 -.type sp_3072_sqr_avx2_48,@function -.align 16 -sp_3072_sqr_avx2_48: -#else -.globl _sp_3072_sqr_avx2_48 -.p2align 4 -_sp_3072_sqr_avx2_48: -#endif /* __APPLE__ */ - subq $984, %rsp - movq %rdi, 960(%rsp) - movq %rsi, 968(%rsp) - leaq 768(%rsp), %r8 - leaq 192(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq 128(%rsi), %rdx - movq %rax, 120(%r8) - adcq 128(%r9), %rdx - movq 136(%rsi), %rax - movq %rdx, 128(%r8) - adcq 136(%r9), %rax - movq 144(%rsi), %rdx - movq %rax, 136(%r8) - adcq 144(%r9), %rdx - movq 152(%rsi), %rax - movq %rdx, 144(%r8) - adcq 152(%r9), %rax - movq 160(%rsi), %rdx - movq %rax, 152(%r8) - adcq 160(%r9), %rdx - movq 168(%rsi), %rax - movq %rdx, 160(%r8) - adcq 168(%r9), %rax - movq 176(%rsi), %rdx - movq %rax, 168(%r8) - adcq 176(%r9), %rdx - movq 184(%rsi), %rax - movq %rdx, 176(%r8) - adcq 184(%r9), %rax - movq %rax, 184(%r8) - adcq $0, %rcx - movq %rcx, 976(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_24@plt -#else - callq _sp_3072_sqr_avx2_24 -#endif /* __APPLE__ */ - movq 968(%rsp), %rsi - leaq 384(%rsp), %rdi - addq $192, %rsi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_24@plt -#else - callq _sp_3072_sqr_avx2_24 -#endif /* __APPLE__ */ - movq 968(%rsp), %rsi - movq 960(%rsp), %rdi -#ifndef __APPLE__ - callq sp_3072_sqr_avx2_24@plt -#else - callq _sp_3072_sqr_avx2_24 -#endif /* __APPLE__ */ - movq 976(%rsp), %r10 - movq %rdi, %r9 - leaq 768(%rsp), %r8 - movq %r10, %rcx - negq %r10 - addq $384, %r9 - movq (%r8), %rdx - pextq %r10, %rdx, %rdx - addq %rdx, %rdx - movq 8(%r8), %rax - movq %rdx, (%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 16(%r8), %rdx - movq %rax, 8(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 32(%r8), %rdx - movq %rax, 24(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 48(%r8), %rdx - movq %rax, 40(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 64(%r8), %rdx - movq %rax, 56(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 80(%r8), %rdx - movq %rax, 72(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 96(%r8), %rdx - movq %rax, 88(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 112(%r8), %rdx - movq %rax, 104(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 128(%r8), %rdx - movq %rax, 120(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 144(%r8), %rdx - movq %rax, 136(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 160(%r8), %rdx - movq %rax, 152(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 176(%r8), %rdx - movq %rax, 168(%r9) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r9) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq %rax, 184(%r9) - adcq $0, %rcx - leaq 384(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rsi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rsi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rsi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rsi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rsi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rsi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rsi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rsi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rsi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rsi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rsi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rsi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rsi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rsi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rsi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rsi), %rax - movq %rax, 376(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rdi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rdi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rdi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rdi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rdi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rdi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rdi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rdi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rdi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rdi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rdi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rdi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rdi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rdi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rdi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rdi), %rax - movq %rax, 376(%r8) - sbbq $0, %rcx - subq $192, %r9 - # Add in place - movq (%r9), %rdx - addq (%r8), %rdx - movq 8(%r9), %rax - movq %rdx, (%r9) - adcq 8(%r8), %rax - movq 16(%r9), %rdx - movq %rax, 8(%r9) - adcq 16(%r8), %rdx - movq 24(%r9), %rax - movq %rdx, 16(%r9) - adcq 24(%r8), %rax - movq 32(%r9), %rdx - movq %rax, 24(%r9) - adcq 32(%r8), %rdx - movq 40(%r9), %rax - movq %rdx, 32(%r9) - adcq 40(%r8), %rax - movq 48(%r9), %rdx - movq %rax, 40(%r9) - adcq 48(%r8), %rdx - movq 56(%r9), %rax - movq %rdx, 48(%r9) - adcq 56(%r8), %rax - movq 64(%r9), %rdx - movq %rax, 56(%r9) - adcq 64(%r8), %rdx - movq 72(%r9), %rax - movq %rdx, 64(%r9) - adcq 72(%r8), %rax - movq 80(%r9), %rdx - movq %rax, 72(%r9) - adcq 80(%r8), %rdx - movq 88(%r9), %rax - movq %rdx, 80(%r9) - adcq 88(%r8), %rax - movq 96(%r9), %rdx - movq %rax, 88(%r9) - adcq 96(%r8), %rdx - movq 104(%r9), %rax - movq %rdx, 96(%r9) - adcq 104(%r8), %rax - movq 112(%r9), %rdx - movq %rax, 104(%r9) - adcq 112(%r8), %rdx - movq 120(%r9), %rax - movq %rdx, 112(%r9) - adcq 120(%r8), %rax - movq 128(%r9), %rdx - movq %rax, 120(%r9) - adcq 128(%r8), %rdx - movq 136(%r9), %rax - movq %rdx, 128(%r9) - adcq 136(%r8), %rax - movq 144(%r9), %rdx - movq %rax, 136(%r9) - adcq 144(%r8), %rdx - movq 152(%r9), %rax - movq %rdx, 144(%r9) - adcq 152(%r8), %rax - movq 160(%r9), %rdx - movq %rax, 152(%r9) - adcq 160(%r8), %rdx - movq 168(%r9), %rax - movq %rdx, 160(%r9) - adcq 168(%r8), %rax - movq 176(%r9), %rdx - movq %rax, 168(%r9) - adcq 176(%r8), %rdx - movq 184(%r9), %rax - movq %rdx, 176(%r9) - adcq 184(%r8), %rax - movq 192(%r9), %rdx - movq %rax, 184(%r9) - adcq 192(%r8), %rdx - movq 200(%r9), %rax - movq %rdx, 192(%r9) - adcq 200(%r8), %rax - movq 208(%r9), %rdx - movq %rax, 200(%r9) - adcq 208(%r8), %rdx - movq 216(%r9), %rax - movq %rdx, 208(%r9) - adcq 216(%r8), %rax - movq 224(%r9), %rdx - movq %rax, 216(%r9) - adcq 224(%r8), %rdx - movq 232(%r9), %rax - movq %rdx, 224(%r9) - adcq 232(%r8), %rax - movq 240(%r9), %rdx - movq %rax, 232(%r9) - adcq 240(%r8), %rdx - movq 248(%r9), %rax - movq %rdx, 240(%r9) - adcq 248(%r8), %rax - movq 256(%r9), %rdx - movq %rax, 248(%r9) - adcq 256(%r8), %rdx - movq 264(%r9), %rax - movq %rdx, 256(%r9) - adcq 264(%r8), %rax - movq 272(%r9), %rdx - movq %rax, 264(%r9) - adcq 272(%r8), %rdx - movq 280(%r9), %rax - movq %rdx, 272(%r9) - adcq 280(%r8), %rax - movq 288(%r9), %rdx - movq %rax, 280(%r9) - adcq 288(%r8), %rdx - movq 296(%r9), %rax - movq %rdx, 288(%r9) - adcq 296(%r8), %rax - movq 304(%r9), %rdx - movq %rax, 296(%r9) - adcq 304(%r8), %rdx - movq 312(%r9), %rax - movq %rdx, 304(%r9) - adcq 312(%r8), %rax - movq 320(%r9), %rdx - movq %rax, 312(%r9) - adcq 320(%r8), %rdx - movq 328(%r9), %rax - movq %rdx, 320(%r9) - adcq 328(%r8), %rax - movq 336(%r9), %rdx - movq %rax, 328(%r9) - adcq 336(%r8), %rdx - movq 344(%r9), %rax - movq %rdx, 336(%r9) - adcq 344(%r8), %rax - movq 352(%r9), %rdx - movq %rax, 344(%r9) - adcq 352(%r8), %rdx - movq 360(%r9), %rax - movq %rdx, 352(%r9) - adcq 360(%r8), %rax - movq 368(%r9), %rdx - movq %rax, 360(%r9) - adcq 368(%r8), %rdx - movq 376(%r9), %rax - movq %rdx, 368(%r9) - adcq 376(%r8), %rax - movq %rax, 376(%r9) - adcq $0, %rcx - movq %rcx, 576(%rdi) - # Add in place - movq 192(%r9), %rdx - addq (%rsi), %rdx - movq 200(%r9), %rax - movq %rdx, 192(%r9) - adcq 8(%rsi), %rax - movq 208(%r9), %rdx - movq %rax, 200(%r9) - adcq 16(%rsi), %rdx - movq 216(%r9), %rax - movq %rdx, 208(%r9) - adcq 24(%rsi), %rax - movq 224(%r9), %rdx - movq %rax, 216(%r9) - adcq 32(%rsi), %rdx - movq 232(%r9), %rax - movq %rdx, 224(%r9) - adcq 40(%rsi), %rax - movq 240(%r9), %rdx - movq %rax, 232(%r9) - adcq 48(%rsi), %rdx - movq 248(%r9), %rax - movq %rdx, 240(%r9) - adcq 56(%rsi), %rax - movq 256(%r9), %rdx - movq %rax, 248(%r9) - adcq 64(%rsi), %rdx - movq 264(%r9), %rax - movq %rdx, 256(%r9) - adcq 72(%rsi), %rax - movq 272(%r9), %rdx - movq %rax, 264(%r9) - adcq 80(%rsi), %rdx - movq 280(%r9), %rax - movq %rdx, 272(%r9) - adcq 88(%rsi), %rax - movq 288(%r9), %rdx - movq %rax, 280(%r9) - adcq 96(%rsi), %rdx - movq 296(%r9), %rax - movq %rdx, 288(%r9) - adcq 104(%rsi), %rax - movq 304(%r9), %rdx - movq %rax, 296(%r9) - adcq 112(%rsi), %rdx - movq 312(%r9), %rax - movq %rdx, 304(%r9) - adcq 120(%rsi), %rax - movq 320(%r9), %rdx - movq %rax, 312(%r9) - adcq 128(%rsi), %rdx - movq 328(%r9), %rax - movq %rdx, 320(%r9) - adcq 136(%rsi), %rax - movq 336(%r9), %rdx - movq %rax, 328(%r9) - adcq 144(%rsi), %rdx - movq 344(%r9), %rax - movq %rdx, 336(%r9) - adcq 152(%rsi), %rax - movq 352(%r9), %rdx - movq %rax, 344(%r9) - adcq 160(%rsi), %rdx - movq 360(%r9), %rax - movq %rdx, 352(%r9) - adcq 168(%rsi), %rax - movq 368(%r9), %rdx - movq %rax, 360(%r9) - adcq 176(%rsi), %rdx - movq 376(%r9), %rax - movq %rdx, 368(%r9) - adcq 184(%rsi), %rax - movq 384(%r9), %rdx - movq %rax, 376(%r9) - adcq 192(%rsi), %rdx - movq %rdx, 384(%r9) - # Add to zero - movq 200(%rsi), %rdx - adcq $0, %rdx - movq 208(%rsi), %rax - movq %rdx, 392(%r9) - adcq $0, %rax - movq 216(%rsi), %rdx - movq %rax, 400(%r9) - adcq $0, %rdx - movq 224(%rsi), %rax - movq %rdx, 408(%r9) - adcq $0, %rax - movq 232(%rsi), %rdx - movq %rax, 416(%r9) - adcq $0, %rdx - movq 240(%rsi), %rax - movq %rdx, 424(%r9) - adcq $0, %rax - movq 248(%rsi), %rdx - movq %rax, 432(%r9) - adcq $0, %rdx - movq 256(%rsi), %rax - movq %rdx, 440(%r9) - adcq $0, %rax - movq 264(%rsi), %rdx - movq %rax, 448(%r9) - adcq $0, %rdx - movq 272(%rsi), %rax - movq %rdx, 456(%r9) - adcq $0, %rax - movq 280(%rsi), %rdx - movq %rax, 464(%r9) - adcq $0, %rdx - movq 288(%rsi), %rax - movq %rdx, 472(%r9) - adcq $0, %rax - movq 296(%rsi), %rdx - movq %rax, 480(%r9) - adcq $0, %rdx - movq 304(%rsi), %rax - movq %rdx, 488(%r9) - adcq $0, %rax - movq 312(%rsi), %rdx - movq %rax, 496(%r9) - adcq $0, %rdx - movq 320(%rsi), %rax - movq %rdx, 504(%r9) - adcq $0, %rax - movq 328(%rsi), %rdx - movq %rax, 512(%r9) - adcq $0, %rdx - movq 336(%rsi), %rax - movq %rdx, 520(%r9) - adcq $0, %rax - movq 344(%rsi), %rdx - movq %rax, 528(%r9) - adcq $0, %rdx - movq 352(%rsi), %rax - movq %rdx, 536(%r9) - adcq $0, %rax - movq 360(%rsi), %rdx - movq %rax, 544(%r9) - adcq $0, %rdx - movq 368(%rsi), %rax - movq %rdx, 552(%r9) - adcq $0, %rax - movq 376(%rsi), %rdx - movq %rax, 560(%r9) - adcq $0, %rdx - movq %rdx, 568(%r9) - addq $984, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_sqr_avx2_48,.-sp_3072_sqr_avx2_48 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_d_48 -.type sp_3072_mul_d_48,@function -.align 16 -sp_3072_mul_d_48: -#else -.globl _sp_3072_mul_d_48 -.p2align 4 -_sp_3072_mul_d_48: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 40(%rsi) - addq %rax, %r10 - movq %r10, 40(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 48(%rsi) - addq %rax, %r8 - movq %r8, 48(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 56(%rsi) - addq %rax, %r9 - movq %r9, 56(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 64(%rsi) - addq %rax, %r10 - movq %r10, 64(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 72(%rsi) - addq %rax, %r8 - movq %r8, 72(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 80(%rsi) - addq %rax, %r9 - movq %r9, 80(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 88(%rsi) - addq %rax, %r10 - movq %r10, 88(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 96(%rsi) - addq %rax, %r8 - movq %r8, 96(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 104(%rsi) - addq %rax, %r9 - movq %r9, 104(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 112(%rsi) - addq %rax, %r10 - movq %r10, 112(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 120(%rsi) - addq %rax, %r8 - movq %r8, 120(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 128(%rsi) - addq %rax, %r9 - movq %r9, 128(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 136(%rsi) - addq %rax, %r10 - movq %r10, 136(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 144(%rsi) - addq %rax, %r8 - movq %r8, 144(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 152(%rsi) - addq %rax, %r9 - movq %r9, 152(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 160(%rsi) - addq %rax, %r10 - movq %r10, 160(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 168(%rsi) - addq %rax, %r8 - movq %r8, 168(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 176(%rsi) - addq %rax, %r9 - movq %r9, 176(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 184(%rsi) - addq %rax, %r10 - movq %r10, 184(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[24] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 192(%rsi) - addq %rax, %r8 - movq %r8, 192(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[25] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 200(%rsi) - addq %rax, %r9 - movq %r9, 200(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[26] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 208(%rsi) - addq %rax, %r10 - movq %r10, 208(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[27] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 216(%rsi) - addq %rax, %r8 - movq %r8, 216(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[28] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 224(%rsi) - addq %rax, %r9 - movq %r9, 224(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[29] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 232(%rsi) - addq %rax, %r10 - movq %r10, 232(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[30] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 240(%rsi) - addq %rax, %r8 - movq %r8, 240(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[31] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 248(%rsi) - addq %rax, %r9 - movq %r9, 248(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[32] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 256(%rsi) - addq %rax, %r10 - movq %r10, 256(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[33] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 264(%rsi) - addq %rax, %r8 - movq %r8, 264(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[34] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 272(%rsi) - addq %rax, %r9 - movq %r9, 272(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[35] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 280(%rsi) - addq %rax, %r10 - movq %r10, 280(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[36] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 288(%rsi) - addq %rax, %r8 - movq %r8, 288(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[37] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 296(%rsi) - addq %rax, %r9 - movq %r9, 296(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[38] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 304(%rsi) - addq %rax, %r10 - movq %r10, 304(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[39] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 312(%rsi) - addq %rax, %r8 - movq %r8, 312(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[40] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 320(%rsi) - addq %rax, %r9 - movq %r9, 320(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[41] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 328(%rsi) - addq %rax, %r10 - movq %r10, 328(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[42] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 336(%rsi) - addq %rax, %r8 - movq %r8, 336(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[43] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 344(%rsi) - addq %rax, %r9 - movq %r9, 344(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[44] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 352(%rsi) - addq %rax, %r10 - movq %r10, 352(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[45] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 360(%rsi) - addq %rax, %r8 - movq %r8, 360(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[46] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 368(%rsi) - addq %rax, %r9 - movq %r9, 368(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[47] * B - movq %rcx, %rax - mulq 376(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - movq %r10, 376(%rdi) - movq %r8, 384(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_d_48,.-sp_3072_mul_d_48 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_sub_24 -.type sp_3072_cond_sub_24,@function -.align 16 -sp_3072_cond_sub_24: -#else -.globl _sp_3072_cond_sub_24 -.p2align 4 -_sp_3072_cond_sub_24: -#endif /* __APPLE__ */ - subq $192, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - sbbq $0, %rax - addq $192, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_sub_24,.-sp_3072_cond_sub_24 -#endif /* __APPLE__ */ -/* Reduce the number back to 3072 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_3072_mont_reduce_24 -.type sp_3072_mont_reduce_24,@function -.align 16 -sp_3072_mont_reduce_24: -#else -.globl _sp_3072_mont_reduce_24 -.p2align 4 -_sp_3072_mont_reduce_24: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 24 - movq $24, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_24: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq $0, %r9 - # a[i+6] += m[6] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 48(%rsi) - movq 48(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 48(%rdi) - adcq $0, %r10 - # a[i+7] += m[7] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 56(%rsi) - movq 56(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 56(%rdi) - adcq $0, %r9 - # a[i+8] += m[8] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 64(%rsi) - movq 64(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 64(%rdi) - adcq $0, %r10 - # a[i+9] += m[9] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 72(%rsi) - movq 72(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 72(%rdi) - adcq $0, %r9 - # a[i+10] += m[10] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 80(%rsi) - movq 80(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 80(%rdi) - adcq $0, %r10 - # a[i+11] += m[11] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 88(%rsi) - movq 88(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 88(%rdi) - adcq $0, %r9 - # a[i+12] += m[12] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 96(%rsi) - movq 96(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 96(%rdi) - adcq $0, %r10 - # a[i+13] += m[13] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 104(%rsi) - movq 104(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 104(%rdi) - adcq $0, %r9 - # a[i+14] += m[14] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 112(%rsi) - movq 112(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 112(%rdi) - adcq $0, %r10 - # a[i+15] += m[15] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 120(%rsi) - movq 120(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 120(%rdi) - adcq $0, %r9 - # a[i+16] += m[16] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 128(%rsi) - movq 128(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 128(%rdi) - adcq $0, %r10 - # a[i+17] += m[17] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 136(%rsi) - movq 136(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 136(%rdi) - adcq $0, %r9 - # a[i+18] += m[18] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 144(%rsi) - movq 144(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 144(%rdi) - adcq $0, %r10 - # a[i+19] += m[19] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 152(%rsi) - movq 152(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 152(%rdi) - adcq $0, %r9 - # a[i+20] += m[20] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 160(%rsi) - movq 160(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 160(%rdi) - adcq $0, %r10 - # a[i+21] += m[21] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 168(%rsi) - movq 168(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 168(%rdi) - adcq $0, %r9 - # a[i+22] += m[22] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 176(%rsi) - movq 176(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 176(%rdi) - adcq $0, %r10 - # a[i+23] += m[23] * mu - movq %r11, %rax - mulq 184(%rsi) - movq 184(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 184(%rdi) - adcq %rdx, 192(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_24 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $192, %rdi -#ifndef __APPLE__ - callq sp_3072_cond_sub_24@plt -#else - callq _sp_3072_cond_sub_24 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mont_reduce_24,.-sp_3072_mont_reduce_24 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_sub_avx2_24 -.type sp_3072_cond_sub_avx2_24,@function -.align 16 -sp_3072_cond_sub_avx2_24: -#else -.globl _sp_3072_cond_sub_avx2_24 -.p2align 4 -_sp_3072_cond_sub_avx2_24: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - sbbq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - sbbq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - sbbq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - sbbq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - sbbq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - sbbq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - sbbq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - sbbq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - sbbq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - sbbq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - sbbq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - sbbq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - sbbq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - sbbq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - sbbq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - sbbq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - sbbq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - sbbq %r8, %r10 - movq %r10, 184(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_sub_avx2_24,.-sp_3072_cond_sub_avx2_24 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_d_24 -.type sp_3072_mul_d_24,@function -.align 16 -sp_3072_mul_d_24: -#else -.globl _sp_3072_mul_d_24 -.p2align 4 -_sp_3072_mul_d_24: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 40(%rsi) - addq %rax, %r10 - movq %r10, 40(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 48(%rsi) - addq %rax, %r8 - movq %r8, 48(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 56(%rsi) - addq %rax, %r9 - movq %r9, 56(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 64(%rsi) - addq %rax, %r10 - movq %r10, 64(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 72(%rsi) - addq %rax, %r8 - movq %r8, 72(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 80(%rsi) - addq %rax, %r9 - movq %r9, 80(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 88(%rsi) - addq %rax, %r10 - movq %r10, 88(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 96(%rsi) - addq %rax, %r8 - movq %r8, 96(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 104(%rsi) - addq %rax, %r9 - movq %r9, 104(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 112(%rsi) - addq %rax, %r10 - movq %r10, 112(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 120(%rsi) - addq %rax, %r8 - movq %r8, 120(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 128(%rsi) - addq %rax, %r9 - movq %r9, 128(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 136(%rsi) - addq %rax, %r10 - movq %r10, 136(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 144(%rsi) - addq %rax, %r8 - movq %r8, 144(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 152(%rsi) - addq %rax, %r9 - movq %r9, 152(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 160(%rsi) - addq %rax, %r10 - movq %r10, 160(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 168(%rsi) - addq %rax, %r8 - movq %r8, 168(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 176(%rsi) - addq %rax, %r9 - movq %r9, 176(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B - movq %rcx, %rax - mulq 184(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - movq %r10, 184(%rdi) - movq %r8, 192(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_d_24,.-sp_3072_mul_d_24 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_d_avx2_24 -.type sp_3072_mul_d_avx2_24,@function -.align 16 -sp_3072_mul_d_avx2_24: -#else -.globl _sp_3072_mul_d_avx2_24 -.p2align 4 -_sp_3072_mul_d_avx2_24: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 40(%rdi) - adoxq %r8, %r9 - # A[6] * B - mulxq 48(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 48(%rdi) - adoxq %r8, %r10 - # A[7] * B - mulxq 56(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 56(%rdi) - adoxq %r8, %r9 - # A[8] * B - mulxq 64(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 64(%rdi) - adoxq %r8, %r10 - # A[9] * B - mulxq 72(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 72(%rdi) - adoxq %r8, %r9 - # A[10] * B - mulxq 80(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 80(%rdi) - adoxq %r8, %r10 - # A[11] * B - mulxq 88(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 88(%rdi) - adoxq %r8, %r9 - # A[12] * B - mulxq 96(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 96(%rdi) - adoxq %r8, %r10 - # A[13] * B - mulxq 104(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 104(%rdi) - adoxq %r8, %r9 - # A[14] * B - mulxq 112(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 112(%rdi) - adoxq %r8, %r10 - # A[15] * B - mulxq 120(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 120(%rdi) - adoxq %r8, %r9 - # A[16] * B - mulxq 128(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 128(%rdi) - adoxq %r8, %r10 - # A[17] * B - mulxq 136(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 136(%rdi) - adoxq %r8, %r9 - # A[18] * B - mulxq 144(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 144(%rdi) - adoxq %r8, %r10 - # A[19] * B - mulxq 152(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 152(%rdi) - adoxq %r8, %r9 - # A[20] * B - mulxq 160(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 160(%rdi) - adoxq %r8, %r10 - # A[21] * B - mulxq 168(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 168(%rdi) - adoxq %r8, %r9 - # A[22] * B - mulxq 176(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 176(%rdi) - adoxq %r8, %r10 - # A[23] * B - mulxq 184(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 184(%rdi) - movq %r9, 192(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_d_avx2_24,.-sp_3072_mul_d_avx2_24 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_3072_cmp_24 -.type sp_3072_cmp_24,@function -.align 16 -sp_3072_cmp_24: -#else -.globl _sp_3072_cmp_24 -.p2align 4 -_sp_3072_cmp_24: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 184(%rdi), %r9 - movq 184(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 176(%rdi), %r9 - movq 176(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 168(%rdi), %r9 - movq 168(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 160(%rdi), %r9 - movq 160(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 152(%rdi), %r9 - movq 152(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 144(%rdi), %r9 - movq 144(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 136(%rdi), %r9 - movq 136(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 128(%rdi), %r9 - movq 128(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 120(%rdi), %r9 - movq 120(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 112(%rdi), %r9 - movq 112(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 104(%rdi), %r9 - movq 104(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 96(%rdi), %r9 - movq 96(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 88(%rdi), %r9 - movq 88(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 80(%rdi), %r9 - movq 80(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 72(%rdi), %r9 - movq 72(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 64(%rdi), %r9 - movq 64(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 56(%rdi), %r9 - movq 56(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 48(%rdi), %r9 - movq 48(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_cmp_24,.-sp_3072_cmp_24 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 3072 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_3072_mont_reduce_avx2_24 -.type sp_3072_mont_reduce_avx2_24,@function -.align 16 -sp_3072_mont_reduce_avx2_24: -#else -.globl _sp_3072_mont_reduce_avx2_24 -.p2align 4 -_sp_3072_mont_reduce_avx2_24: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - movq %rdx, %r8 - xorq %r14, %r14 - # i = 24 - movq $24, %r9 - movq (%rdi), %r13 - addq $96, %rdi - xorq %r12, %r12 -L_mont_loop_avx2_24: - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -88(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -80(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -80(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -72(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -64(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -56(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq -40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -48(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq -32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -40(%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq -24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -32(%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq -16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -24(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq -8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -16(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq (%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -8(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq 8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, (%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq 16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 8(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq 24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 16(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq 32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 24(%rdi) - # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rax, %rcx - movq 40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 32(%rdi) - # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rax, %rcx - movq 48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 40(%rdi) - # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rax, %rcx - movq 56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 48(%rdi) - # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rax, %rcx - movq 64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 56(%rdi) - # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rax, %rcx - movq 72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 64(%rdi) - # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rax, %rcx - movq 80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 72(%rdi) - # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rax, %rcx - movq 88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 80(%rdi) - # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rax, %rcx - movq 96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 88(%rdi) - adcxq %r14, %r10 - movq %r10, 96(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # a += 1 - addq $8, %rdi - # i -= 1 - subq $1, %r9 - jnz L_mont_loop_avx2_24 - subq $96, %rdi - negq %r14 - movq %rdi, %r8 - subq $192, %rdi - movq (%rsi), %rcx - movq %r13, %rdx - pextq %r14, %rcx, %rcx - subq %rcx, %rdx - movq 8(%rsi), %rcx - movq 8(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, (%rdi) - sbbq %rcx, %rax - movq 16(%rsi), %rdx - movq 16(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 8(%rdi) - sbbq %rdx, %rcx - movq 24(%rsi), %rax - movq 24(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 16(%rdi) - sbbq %rax, %rdx - movq 32(%rsi), %rcx - movq 32(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 24(%rdi) - sbbq %rcx, %rax - movq 40(%rsi), %rdx - movq 40(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 32(%rdi) - sbbq %rdx, %rcx - movq 48(%rsi), %rax - movq 48(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 40(%rdi) - sbbq %rax, %rdx - movq 56(%rsi), %rcx - movq 56(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 48(%rdi) - sbbq %rcx, %rax - movq 64(%rsi), %rdx - movq 64(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 56(%rdi) - sbbq %rdx, %rcx - movq 72(%rsi), %rax - movq 72(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 64(%rdi) - sbbq %rax, %rdx - movq 80(%rsi), %rcx - movq 80(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 72(%rdi) - sbbq %rcx, %rax - movq 88(%rsi), %rdx - movq 88(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 80(%rdi) - sbbq %rdx, %rcx - movq 96(%rsi), %rax - movq 96(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 88(%rdi) - sbbq %rax, %rdx - movq 104(%rsi), %rcx - movq 104(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 96(%rdi) - sbbq %rcx, %rax - movq 112(%rsi), %rdx - movq 112(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 104(%rdi) - sbbq %rdx, %rcx - movq 120(%rsi), %rax - movq 120(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 112(%rdi) - sbbq %rax, %rdx - movq 128(%rsi), %rcx - movq 128(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 120(%rdi) - sbbq %rcx, %rax - movq 136(%rsi), %rdx - movq 136(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 128(%rdi) - sbbq %rdx, %rcx - movq 144(%rsi), %rax - movq 144(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 136(%rdi) - sbbq %rax, %rdx - movq 152(%rsi), %rcx - movq 152(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 144(%rdi) - sbbq %rcx, %rax - movq 160(%rsi), %rdx - movq 160(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 152(%rdi) - sbbq %rdx, %rcx - movq 168(%rsi), %rax - movq 168(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 160(%rdi) - sbbq %rax, %rdx - movq 176(%rsi), %rcx - movq 176(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 168(%rdi) - sbbq %rcx, %rax - movq 184(%rsi), %rdx - movq 184(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 176(%rdi) - sbbq %rdx, %rcx - movq %rcx, 184(%rdi) - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mont_reduce_avx2_24,.-sp_3072_mont_reduce_avx2_24 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_sub_48 -.type sp_3072_cond_sub_48,@function -.align 16 -sp_3072_cond_sub_48: -#else -.globl _sp_3072_cond_sub_48 -.p2align 4 -_sp_3072_cond_sub_48: -#endif /* __APPLE__ */ - subq $384, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq 192(%rdx), %r8 - movq 200(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 192(%rsp) - movq %r9, 200(%rsp) - movq 208(%rdx), %r8 - movq 216(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 208(%rsp) - movq %r9, 216(%rsp) - movq 224(%rdx), %r8 - movq 232(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 224(%rsp) - movq %r9, 232(%rsp) - movq 240(%rdx), %r8 - movq 248(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 240(%rsp) - movq %r9, 248(%rsp) - movq 256(%rdx), %r8 - movq 264(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 256(%rsp) - movq %r9, 264(%rsp) - movq 272(%rdx), %r8 - movq 280(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 272(%rsp) - movq %r9, 280(%rsp) - movq 288(%rdx), %r8 - movq 296(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 288(%rsp) - movq %r9, 296(%rsp) - movq 304(%rdx), %r8 - movq 312(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 304(%rsp) - movq %r9, 312(%rsp) - movq 320(%rdx), %r8 - movq 328(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 320(%rsp) - movq %r9, 328(%rsp) - movq 336(%rdx), %r8 - movq 344(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 336(%rsp) - movq %r9, 344(%rsp) - movq 352(%rdx), %r8 - movq 360(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 352(%rsp) - movq %r9, 360(%rsp) - movq 368(%rdx), %r8 - movq 376(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 368(%rsp) - movq %r9, 376(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 176(%rdi) - movq 192(%rsi), %r8 - movq 192(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 184(%rdi) - movq 200(%rsi), %r9 - movq 200(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 192(%rdi) - movq 208(%rsi), %r8 - movq 208(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 200(%rdi) - movq 216(%rsi), %r9 - movq 216(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 208(%rdi) - movq 224(%rsi), %r8 - movq 224(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 216(%rdi) - movq 232(%rsi), %r9 - movq 232(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 224(%rdi) - movq 240(%rsi), %r8 - movq 240(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 232(%rdi) - movq 248(%rsi), %r9 - movq 248(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 240(%rdi) - movq 256(%rsi), %r8 - movq 256(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 248(%rdi) - movq 264(%rsi), %r9 - movq 264(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 256(%rdi) - movq 272(%rsi), %r8 - movq 272(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 264(%rdi) - movq 280(%rsi), %r9 - movq 280(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 272(%rdi) - movq 288(%rsi), %r8 - movq 288(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 280(%rdi) - movq 296(%rsi), %r9 - movq 296(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 288(%rdi) - movq 304(%rsi), %r8 - movq 304(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 296(%rdi) - movq 312(%rsi), %r9 - movq 312(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 304(%rdi) - movq 320(%rsi), %r8 - movq 320(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 312(%rdi) - movq 328(%rsi), %r9 - movq 328(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 320(%rdi) - movq 336(%rsi), %r8 - movq 336(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 328(%rdi) - movq 344(%rsi), %r9 - movq 344(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 336(%rdi) - movq 352(%rsi), %r8 - movq 352(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 344(%rdi) - movq 360(%rsi), %r9 - movq 360(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 352(%rdi) - movq 368(%rsi), %r8 - movq 368(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 360(%rdi) - movq 376(%rsi), %r9 - movq 376(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 368(%rdi) - movq %r9, 376(%rdi) - sbbq $0, %rax - addq $384, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_sub_48,.-sp_3072_cond_sub_48 -#endif /* __APPLE__ */ -/* Reduce the number back to 3072 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_3072_mont_reduce_48 -.type sp_3072_mont_reduce_48,@function -.align 16 -sp_3072_mont_reduce_48: -#else -.globl _sp_3072_mont_reduce_48 -.p2align 4 -_sp_3072_mont_reduce_48: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 48 - movq $48, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_48: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq $0, %r9 - # a[i+6] += m[6] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 48(%rsi) - movq 48(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 48(%rdi) - adcq $0, %r10 - # a[i+7] += m[7] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 56(%rsi) - movq 56(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 56(%rdi) - adcq $0, %r9 - # a[i+8] += m[8] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 64(%rsi) - movq 64(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 64(%rdi) - adcq $0, %r10 - # a[i+9] += m[9] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 72(%rsi) - movq 72(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 72(%rdi) - adcq $0, %r9 - # a[i+10] += m[10] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 80(%rsi) - movq 80(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 80(%rdi) - adcq $0, %r10 - # a[i+11] += m[11] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 88(%rsi) - movq 88(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 88(%rdi) - adcq $0, %r9 - # a[i+12] += m[12] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 96(%rsi) - movq 96(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 96(%rdi) - adcq $0, %r10 - # a[i+13] += m[13] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 104(%rsi) - movq 104(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 104(%rdi) - adcq $0, %r9 - # a[i+14] += m[14] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 112(%rsi) - movq 112(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 112(%rdi) - adcq $0, %r10 - # a[i+15] += m[15] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 120(%rsi) - movq 120(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 120(%rdi) - adcq $0, %r9 - # a[i+16] += m[16] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 128(%rsi) - movq 128(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 128(%rdi) - adcq $0, %r10 - # a[i+17] += m[17] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 136(%rsi) - movq 136(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 136(%rdi) - adcq $0, %r9 - # a[i+18] += m[18] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 144(%rsi) - movq 144(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 144(%rdi) - adcq $0, %r10 - # a[i+19] += m[19] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 152(%rsi) - movq 152(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 152(%rdi) - adcq $0, %r9 - # a[i+20] += m[20] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 160(%rsi) - movq 160(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 160(%rdi) - adcq $0, %r10 - # a[i+21] += m[21] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 168(%rsi) - movq 168(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 168(%rdi) - adcq $0, %r9 - # a[i+22] += m[22] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 176(%rsi) - movq 176(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 176(%rdi) - adcq $0, %r10 - # a[i+23] += m[23] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 184(%rsi) - movq 184(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 184(%rdi) - adcq $0, %r9 - # a[i+24] += m[24] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 192(%rsi) - movq 192(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 192(%rdi) - adcq $0, %r10 - # a[i+25] += m[25] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 200(%rsi) - movq 200(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 200(%rdi) - adcq $0, %r9 - # a[i+26] += m[26] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 208(%rsi) - movq 208(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 208(%rdi) - adcq $0, %r10 - # a[i+27] += m[27] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 216(%rsi) - movq 216(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 216(%rdi) - adcq $0, %r9 - # a[i+28] += m[28] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 224(%rsi) - movq 224(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 224(%rdi) - adcq $0, %r10 - # a[i+29] += m[29] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 232(%rsi) - movq 232(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 232(%rdi) - adcq $0, %r9 - # a[i+30] += m[30] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 240(%rsi) - movq 240(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 240(%rdi) - adcq $0, %r10 - # a[i+31] += m[31] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 248(%rsi) - movq 248(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 248(%rdi) - adcq $0, %r9 - # a[i+32] += m[32] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 256(%rsi) - movq 256(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 256(%rdi) - adcq $0, %r10 - # a[i+33] += m[33] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 264(%rsi) - movq 264(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 264(%rdi) - adcq $0, %r9 - # a[i+34] += m[34] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 272(%rsi) - movq 272(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 272(%rdi) - adcq $0, %r10 - # a[i+35] += m[35] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 280(%rsi) - movq 280(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 280(%rdi) - adcq $0, %r9 - # a[i+36] += m[36] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 288(%rsi) - movq 288(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 288(%rdi) - adcq $0, %r10 - # a[i+37] += m[37] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 296(%rsi) - movq 296(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 296(%rdi) - adcq $0, %r9 - # a[i+38] += m[38] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 304(%rsi) - movq 304(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 304(%rdi) - adcq $0, %r10 - # a[i+39] += m[39] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 312(%rsi) - movq 312(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 312(%rdi) - adcq $0, %r9 - # a[i+40] += m[40] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 320(%rsi) - movq 320(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 320(%rdi) - adcq $0, %r10 - # a[i+41] += m[41] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 328(%rsi) - movq 328(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 328(%rdi) - adcq $0, %r9 - # a[i+42] += m[42] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 336(%rsi) - movq 336(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 336(%rdi) - adcq $0, %r10 - # a[i+43] += m[43] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 344(%rsi) - movq 344(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 344(%rdi) - adcq $0, %r9 - # a[i+44] += m[44] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 352(%rsi) - movq 352(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 352(%rdi) - adcq $0, %r10 - # a[i+45] += m[45] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 360(%rsi) - movq 360(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 360(%rdi) - adcq $0, %r9 - # a[i+46] += m[46] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 368(%rsi) - movq 368(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 368(%rdi) - adcq $0, %r10 - # a[i+47] += m[47] * mu - movq %r11, %rax - mulq 376(%rsi) - movq 376(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 376(%rdi) - adcq %rdx, 384(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_48 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $384, %rdi -#ifndef __APPLE__ - callq sp_3072_cond_sub_48@plt -#else - callq _sp_3072_cond_sub_48 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mont_reduce_48,.-sp_3072_mont_reduce_48 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_sub_avx2_48 -.type sp_3072_cond_sub_avx2_48,@function -.align 16 -sp_3072_cond_sub_avx2_48: -#else -.globl _sp_3072_cond_sub_avx2_48 -.p2align 4 -_sp_3072_cond_sub_avx2_48: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - sbbq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - sbbq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - sbbq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - sbbq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - sbbq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - sbbq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - sbbq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - sbbq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - sbbq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - sbbq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - sbbq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - sbbq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - sbbq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - sbbq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - sbbq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - sbbq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - sbbq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - sbbq %r8, %r10 - movq 192(%rdx), %r9 - movq 192(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 184(%rdi) - sbbq %r9, %r8 - movq 200(%rdx), %r10 - movq 200(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 192(%rdi) - sbbq %r10, %r9 - movq 208(%rdx), %r8 - movq 208(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 200(%rdi) - sbbq %r8, %r10 - movq 216(%rdx), %r9 - movq 216(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 208(%rdi) - sbbq %r9, %r8 - movq 224(%rdx), %r10 - movq 224(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 216(%rdi) - sbbq %r10, %r9 - movq 232(%rdx), %r8 - movq 232(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 224(%rdi) - sbbq %r8, %r10 - movq 240(%rdx), %r9 - movq 240(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 232(%rdi) - sbbq %r9, %r8 - movq 248(%rdx), %r10 - movq 248(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 240(%rdi) - sbbq %r10, %r9 - movq 256(%rdx), %r8 - movq 256(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 248(%rdi) - sbbq %r8, %r10 - movq 264(%rdx), %r9 - movq 264(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 256(%rdi) - sbbq %r9, %r8 - movq 272(%rdx), %r10 - movq 272(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 264(%rdi) - sbbq %r10, %r9 - movq 280(%rdx), %r8 - movq 280(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 272(%rdi) - sbbq %r8, %r10 - movq 288(%rdx), %r9 - movq 288(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 280(%rdi) - sbbq %r9, %r8 - movq 296(%rdx), %r10 - movq 296(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 288(%rdi) - sbbq %r10, %r9 - movq 304(%rdx), %r8 - movq 304(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 296(%rdi) - sbbq %r8, %r10 - movq 312(%rdx), %r9 - movq 312(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 304(%rdi) - sbbq %r9, %r8 - movq 320(%rdx), %r10 - movq 320(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 312(%rdi) - sbbq %r10, %r9 - movq 328(%rdx), %r8 - movq 328(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 320(%rdi) - sbbq %r8, %r10 - movq 336(%rdx), %r9 - movq 336(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 328(%rdi) - sbbq %r9, %r8 - movq 344(%rdx), %r10 - movq 344(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 336(%rdi) - sbbq %r10, %r9 - movq 352(%rdx), %r8 - movq 352(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 344(%rdi) - sbbq %r8, %r10 - movq 360(%rdx), %r9 - movq 360(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 352(%rdi) - sbbq %r9, %r8 - movq 368(%rdx), %r10 - movq 368(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 360(%rdi) - sbbq %r10, %r9 - movq 376(%rdx), %r8 - movq 376(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 368(%rdi) - sbbq %r8, %r10 - movq %r10, 376(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_sub_avx2_48,.-sp_3072_cond_sub_avx2_48 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_3072_mul_d_avx2_48 -.type sp_3072_mul_d_avx2_48,@function -.align 16 -sp_3072_mul_d_avx2_48: -#else -.globl _sp_3072_mul_d_avx2_48 -.p2align 4 -_sp_3072_mul_d_avx2_48: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 40(%rdi) - adoxq %r8, %r9 - # A[6] * B - mulxq 48(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 48(%rdi) - adoxq %r8, %r10 - # A[7] * B - mulxq 56(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 56(%rdi) - adoxq %r8, %r9 - # A[8] * B - mulxq 64(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 64(%rdi) - adoxq %r8, %r10 - # A[9] * B - mulxq 72(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 72(%rdi) - adoxq %r8, %r9 - # A[10] * B - mulxq 80(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 80(%rdi) - adoxq %r8, %r10 - # A[11] * B - mulxq 88(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 88(%rdi) - adoxq %r8, %r9 - # A[12] * B - mulxq 96(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 96(%rdi) - adoxq %r8, %r10 - # A[13] * B - mulxq 104(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 104(%rdi) - adoxq %r8, %r9 - # A[14] * B - mulxq 112(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 112(%rdi) - adoxq %r8, %r10 - # A[15] * B - mulxq 120(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 120(%rdi) - adoxq %r8, %r9 - # A[16] * B - mulxq 128(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 128(%rdi) - adoxq %r8, %r10 - # A[17] * B - mulxq 136(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 136(%rdi) - adoxq %r8, %r9 - # A[18] * B - mulxq 144(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 144(%rdi) - adoxq %r8, %r10 - # A[19] * B - mulxq 152(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 152(%rdi) - adoxq %r8, %r9 - # A[20] * B - mulxq 160(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 160(%rdi) - adoxq %r8, %r10 - # A[21] * B - mulxq 168(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 168(%rdi) - adoxq %r8, %r9 - # A[22] * B - mulxq 176(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 176(%rdi) - adoxq %r8, %r10 - # A[23] * B - mulxq 184(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 184(%rdi) - adoxq %r8, %r9 - # A[24] * B - mulxq 192(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 192(%rdi) - adoxq %r8, %r10 - # A[25] * B - mulxq 200(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 200(%rdi) - adoxq %r8, %r9 - # A[26] * B - mulxq 208(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 208(%rdi) - adoxq %r8, %r10 - # A[27] * B - mulxq 216(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 216(%rdi) - adoxq %r8, %r9 - # A[28] * B - mulxq 224(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 224(%rdi) - adoxq %r8, %r10 - # A[29] * B - mulxq 232(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 232(%rdi) - adoxq %r8, %r9 - # A[30] * B - mulxq 240(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 240(%rdi) - adoxq %r8, %r10 - # A[31] * B - mulxq 248(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 248(%rdi) - adoxq %r8, %r9 - # A[32] * B - mulxq 256(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 256(%rdi) - adoxq %r8, %r10 - # A[33] * B - mulxq 264(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 264(%rdi) - adoxq %r8, %r9 - # A[34] * B - mulxq 272(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 272(%rdi) - adoxq %r8, %r10 - # A[35] * B - mulxq 280(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 280(%rdi) - adoxq %r8, %r9 - # A[36] * B - mulxq 288(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 288(%rdi) - adoxq %r8, %r10 - # A[37] * B - mulxq 296(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 296(%rdi) - adoxq %r8, %r9 - # A[38] * B - mulxq 304(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 304(%rdi) - adoxq %r8, %r10 - # A[39] * B - mulxq 312(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 312(%rdi) - adoxq %r8, %r9 - # A[40] * B - mulxq 320(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 320(%rdi) - adoxq %r8, %r10 - # A[41] * B - mulxq 328(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 328(%rdi) - adoxq %r8, %r9 - # A[42] * B - mulxq 336(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 336(%rdi) - adoxq %r8, %r10 - # A[43] * B - mulxq 344(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 344(%rdi) - adoxq %r8, %r9 - # A[44] * B - mulxq 352(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 352(%rdi) - adoxq %r8, %r10 - # A[45] * B - mulxq 360(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 360(%rdi) - adoxq %r8, %r9 - # A[46] * B - mulxq 368(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 368(%rdi) - adoxq %r8, %r10 - # A[47] * B - mulxq 376(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 376(%rdi) - movq %r9, 384(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_3072_mul_d_avx2_48,.-sp_3072_mul_d_avx2_48 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_3072_cmp_48 -.type sp_3072_cmp_48,@function -.align 16 -sp_3072_cmp_48: -#else -.globl _sp_3072_cmp_48 -.p2align 4 -_sp_3072_cmp_48: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 376(%rdi), %r9 - movq 376(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 368(%rdi), %r9 - movq 368(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 360(%rdi), %r9 - movq 360(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 352(%rdi), %r9 - movq 352(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 344(%rdi), %r9 - movq 344(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 336(%rdi), %r9 - movq 336(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 328(%rdi), %r9 - movq 328(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 320(%rdi), %r9 - movq 320(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 312(%rdi), %r9 - movq 312(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 304(%rdi), %r9 - movq 304(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 296(%rdi), %r9 - movq 296(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 288(%rdi), %r9 - movq 288(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 280(%rdi), %r9 - movq 280(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 272(%rdi), %r9 - movq 272(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 264(%rdi), %r9 - movq 264(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 256(%rdi), %r9 - movq 256(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 248(%rdi), %r9 - movq 248(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 240(%rdi), %r9 - movq 240(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 232(%rdi), %r9 - movq 232(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 224(%rdi), %r9 - movq 224(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 216(%rdi), %r9 - movq 216(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 208(%rdi), %r9 - movq 208(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 200(%rdi), %r9 - movq 200(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 192(%rdi), %r9 - movq 192(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 184(%rdi), %r9 - movq 184(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 176(%rdi), %r9 - movq 176(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 168(%rdi), %r9 - movq 168(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 160(%rdi), %r9 - movq 160(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 152(%rdi), %r9 - movq 152(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 144(%rdi), %r9 - movq 144(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 136(%rdi), %r9 - movq 136(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 128(%rdi), %r9 - movq 128(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 120(%rdi), %r9 - movq 120(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 112(%rdi), %r9 - movq 112(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 104(%rdi), %r9 - movq 104(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 96(%rdi), %r9 - movq 96(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 88(%rdi), %r9 - movq 88(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 80(%rdi), %r9 - movq 80(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 72(%rdi), %r9 - movq 72(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 64(%rdi), %r9 - movq 64(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 56(%rdi), %r9 - movq 56(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 48(%rdi), %r9 - movq 48(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_cmp_48,.-sp_3072_cmp_48 -#endif /* __APPLE__ */ -/* Sub b from a into r. (r = a - b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_3072_sub_48 -.type sp_3072_sub_48,@function -.align 16 -sp_3072_sub_48: -#else -.globl _sp_3072_sub_48 -.p2align 4 -_sp_3072_sub_48: -#endif /* __APPLE__ */ - movq (%rsi), %rcx - xorq %rax, %rax - subq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - sbbq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - sbbq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - sbbq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - sbbq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - sbbq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - sbbq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - sbbq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - sbbq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - sbbq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - sbbq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - sbbq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - sbbq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - sbbq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - sbbq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - sbbq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - sbbq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - sbbq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - sbbq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - sbbq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - sbbq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - sbbq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - sbbq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - sbbq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - sbbq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - sbbq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - sbbq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - sbbq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - sbbq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - sbbq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - sbbq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - sbbq 248(%rdx), %r8 - movq 256(%rsi), %rcx - movq %r8, 248(%rdi) - sbbq 256(%rdx), %rcx - movq 264(%rsi), %r8 - movq %rcx, 256(%rdi) - sbbq 264(%rdx), %r8 - movq 272(%rsi), %rcx - movq %r8, 264(%rdi) - sbbq 272(%rdx), %rcx - movq 280(%rsi), %r8 - movq %rcx, 272(%rdi) - sbbq 280(%rdx), %r8 - movq 288(%rsi), %rcx - movq %r8, 280(%rdi) - sbbq 288(%rdx), %rcx - movq 296(%rsi), %r8 - movq %rcx, 288(%rdi) - sbbq 296(%rdx), %r8 - movq 304(%rsi), %rcx - movq %r8, 296(%rdi) - sbbq 304(%rdx), %rcx - movq 312(%rsi), %r8 - movq %rcx, 304(%rdi) - sbbq 312(%rdx), %r8 - movq 320(%rsi), %rcx - movq %r8, 312(%rdi) - sbbq 320(%rdx), %rcx - movq 328(%rsi), %r8 - movq %rcx, 320(%rdi) - sbbq 328(%rdx), %r8 - movq 336(%rsi), %rcx - movq %r8, 328(%rdi) - sbbq 336(%rdx), %rcx - movq 344(%rsi), %r8 - movq %rcx, 336(%rdi) - sbbq 344(%rdx), %r8 - movq 352(%rsi), %rcx - movq %r8, 344(%rdi) - sbbq 352(%rdx), %rcx - movq 360(%rsi), %r8 - movq %rcx, 352(%rdi) - sbbq 360(%rdx), %r8 - movq 368(%rsi), %rcx - movq %r8, 360(%rdi) - sbbq 368(%rdx), %rcx - movq 376(%rsi), %r8 - movq %rcx, 368(%rdi) - sbbq 376(%rdx), %r8 - movq %r8, 376(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_sub_48,.-sp_3072_sub_48 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 3072 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_3072_mont_reduce_avx2_48 -.type sp_3072_mont_reduce_avx2_48,@function -.align 16 -sp_3072_mont_reduce_avx2_48: -#else -.globl _sp_3072_mont_reduce_avx2_48 -.p2align 4 -_sp_3072_mont_reduce_avx2_48: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - movq %rdx, %r8 - xorq %r14, %r14 - # i = 48 - movq $48, %r9 - movq (%rdi), %r13 - addq $192, %rdi - xorq %r12, %r12 -L_mont_loop_avx2_48: - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -184(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -176(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -168(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -176(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -160(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -168(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -152(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -160(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -144(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -152(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq -136(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -144(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq -128(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -136(%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq -120(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -128(%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq -112(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -120(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq -104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -112(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq -96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -104(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq -88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -96(%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq -80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -88(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq -72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -80(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq -64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -72(%rdi) - # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rax, %rcx - movq -56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -64(%rdi) - # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rax, %rcx - movq -48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -56(%rdi) - # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rax, %rcx - movq -40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -48(%rdi) - # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rax, %rcx - movq -32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -40(%rdi) - # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rax, %rcx - movq -24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -32(%rdi) - # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rax, %rcx - movq -16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -24(%rdi) - # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rax, %rcx - movq -8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -16(%rdi) - # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rax, %rcx - movq (%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -8(%rdi) - # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rax, %rcx - movq 8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, (%rdi) - # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rax, %rcx - movq 16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 8(%rdi) - # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rax, %rcx - movq 24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 16(%rdi) - # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rax, %rcx - movq 32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 24(%rdi) - # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rax, %rcx - movq 40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 32(%rdi) - # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rax, %rcx - movq 48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 40(%rdi) - # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rax, %rcx - movq 56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 48(%rdi) - # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rax, %rcx - movq 64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 56(%rdi) - # a[i+32] += m[32] * mu - mulxq 256(%rsi), %rax, %rcx - movq 72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 64(%rdi) - # a[i+33] += m[33] * mu - mulxq 264(%rsi), %rax, %rcx - movq 80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 72(%rdi) - # a[i+34] += m[34] * mu - mulxq 272(%rsi), %rax, %rcx - movq 88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 80(%rdi) - # a[i+35] += m[35] * mu - mulxq 280(%rsi), %rax, %rcx - movq 96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 88(%rdi) - # a[i+36] += m[36] * mu - mulxq 288(%rsi), %rax, %rcx - movq 104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rdi) - # a[i+37] += m[37] * mu - mulxq 296(%rsi), %rax, %rcx - movq 112(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 104(%rdi) - # a[i+38] += m[38] * mu - mulxq 304(%rsi), %rax, %rcx - movq 120(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 112(%rdi) - # a[i+39] += m[39] * mu - mulxq 312(%rsi), %rax, %rcx - movq 128(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 120(%rdi) - # a[i+40] += m[40] * mu - mulxq 320(%rsi), %rax, %rcx - movq 136(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 128(%rdi) - # a[i+41] += m[41] * mu - mulxq 328(%rsi), %rax, %rcx - movq 144(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 136(%rdi) - # a[i+42] += m[42] * mu - mulxq 336(%rsi), %rax, %rcx - movq 152(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 144(%rdi) - # a[i+43] += m[43] * mu - mulxq 344(%rsi), %rax, %rcx - movq 160(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 152(%rdi) - # a[i+44] += m[44] * mu - mulxq 352(%rsi), %rax, %rcx - movq 168(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 160(%rdi) - # a[i+45] += m[45] * mu - mulxq 360(%rsi), %rax, %rcx - movq 176(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 168(%rdi) - # a[i+46] += m[46] * mu - mulxq 368(%rsi), %rax, %rcx - movq 184(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 176(%rdi) - # a[i+47] += m[47] * mu - mulxq 376(%rsi), %rax, %rcx - movq 192(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 184(%rdi) - adcxq %r14, %r10 - movq %r10, 192(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # a += 1 - addq $8, %rdi - # i -= 1 - subq $1, %r9 - jnz L_mont_loop_avx2_48 - subq $192, %rdi - negq %r14 - movq %rdi, %r8 - subq $384, %rdi - movq (%rsi), %rcx - movq %r13, %rdx - pextq %r14, %rcx, %rcx - subq %rcx, %rdx - movq 8(%rsi), %rcx - movq 8(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, (%rdi) - sbbq %rcx, %rax - movq 16(%rsi), %rdx - movq 16(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 8(%rdi) - sbbq %rdx, %rcx - movq 24(%rsi), %rax - movq 24(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 16(%rdi) - sbbq %rax, %rdx - movq 32(%rsi), %rcx - movq 32(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 24(%rdi) - sbbq %rcx, %rax - movq 40(%rsi), %rdx - movq 40(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 32(%rdi) - sbbq %rdx, %rcx - movq 48(%rsi), %rax - movq 48(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 40(%rdi) - sbbq %rax, %rdx - movq 56(%rsi), %rcx - movq 56(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 48(%rdi) - sbbq %rcx, %rax - movq 64(%rsi), %rdx - movq 64(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 56(%rdi) - sbbq %rdx, %rcx - movq 72(%rsi), %rax - movq 72(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 64(%rdi) - sbbq %rax, %rdx - movq 80(%rsi), %rcx - movq 80(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 72(%rdi) - sbbq %rcx, %rax - movq 88(%rsi), %rdx - movq 88(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 80(%rdi) - sbbq %rdx, %rcx - movq 96(%rsi), %rax - movq 96(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 88(%rdi) - sbbq %rax, %rdx - movq 104(%rsi), %rcx - movq 104(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 96(%rdi) - sbbq %rcx, %rax - movq 112(%rsi), %rdx - movq 112(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 104(%rdi) - sbbq %rdx, %rcx - movq 120(%rsi), %rax - movq 120(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 112(%rdi) - sbbq %rax, %rdx - movq 128(%rsi), %rcx - movq 128(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 120(%rdi) - sbbq %rcx, %rax - movq 136(%rsi), %rdx - movq 136(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 128(%rdi) - sbbq %rdx, %rcx - movq 144(%rsi), %rax - movq 144(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 136(%rdi) - sbbq %rax, %rdx - movq 152(%rsi), %rcx - movq 152(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 144(%rdi) - sbbq %rcx, %rax - movq 160(%rsi), %rdx - movq 160(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 152(%rdi) - sbbq %rdx, %rcx - movq 168(%rsi), %rax - movq 168(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 160(%rdi) - sbbq %rax, %rdx - movq 176(%rsi), %rcx - movq 176(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 168(%rdi) - sbbq %rcx, %rax - movq 184(%rsi), %rdx - movq 184(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 176(%rdi) - sbbq %rdx, %rcx - movq 192(%rsi), %rax - movq 192(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 184(%rdi) - sbbq %rax, %rdx - movq 200(%rsi), %rcx - movq 200(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 192(%rdi) - sbbq %rcx, %rax - movq 208(%rsi), %rdx - movq 208(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 200(%rdi) - sbbq %rdx, %rcx - movq 216(%rsi), %rax - movq 216(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 208(%rdi) - sbbq %rax, %rdx - movq 224(%rsi), %rcx - movq 224(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 216(%rdi) - sbbq %rcx, %rax - movq 232(%rsi), %rdx - movq 232(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 224(%rdi) - sbbq %rdx, %rcx - movq 240(%rsi), %rax - movq 240(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 232(%rdi) - sbbq %rax, %rdx - movq 248(%rsi), %rcx - movq 248(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 240(%rdi) - sbbq %rcx, %rax - movq 256(%rsi), %rdx - movq 256(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 248(%rdi) - sbbq %rdx, %rcx - movq 264(%rsi), %rax - movq 264(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 256(%rdi) - sbbq %rax, %rdx - movq 272(%rsi), %rcx - movq 272(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 264(%rdi) - sbbq %rcx, %rax - movq 280(%rsi), %rdx - movq 280(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 272(%rdi) - sbbq %rdx, %rcx - movq 288(%rsi), %rax - movq 288(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 280(%rdi) - sbbq %rax, %rdx - movq 296(%rsi), %rcx - movq 296(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 288(%rdi) - sbbq %rcx, %rax - movq 304(%rsi), %rdx - movq 304(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 296(%rdi) - sbbq %rdx, %rcx - movq 312(%rsi), %rax - movq 312(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 304(%rdi) - sbbq %rax, %rdx - movq 320(%rsi), %rcx - movq 320(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 312(%rdi) - sbbq %rcx, %rax - movq 328(%rsi), %rdx - movq 328(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 320(%rdi) - sbbq %rdx, %rcx - movq 336(%rsi), %rax - movq 336(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 328(%rdi) - sbbq %rax, %rdx - movq 344(%rsi), %rcx - movq 344(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 336(%rdi) - sbbq %rcx, %rax - movq 352(%rsi), %rdx - movq 352(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 344(%rdi) - sbbq %rdx, %rcx - movq 360(%rsi), %rax - movq 360(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 352(%rdi) - sbbq %rax, %rdx - movq 368(%rsi), %rcx - movq 368(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 360(%rdi) - sbbq %rcx, %rax - movq 376(%rsi), %rdx - movq 376(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 368(%rdi) - sbbq %rdx, %rcx - movq %rcx, 376(%rdi) - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_3072_mont_reduce_avx2_48,.-sp_3072_mont_reduce_avx2_48 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_add_24 -.type sp_3072_cond_add_24,@function -.align 16 -sp_3072_cond_add_24: -#else -.globl _sp_3072_cond_add_24 -.p2align 4 -_sp_3072_cond_add_24: -#endif /* __APPLE__ */ - subq $192, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - addq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - adcq $0, %rax - addq $192, %rsp - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_add_24,.-sp_3072_cond_add_24 -#endif /* __APPLE__ */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_3072_cond_add_avx2_24 -.type sp_3072_cond_add_avx2_24,@function -.align 16 -sp_3072_cond_add_avx2_24: -#else -.globl _sp_3072_cond_add_avx2_24 -.p2align 4 -_sp_3072_cond_add_avx2_24: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - addq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - adcq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - adcq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - adcq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - adcq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - adcq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - adcq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - adcq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - adcq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - adcq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - adcq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - adcq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - adcq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - adcq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - adcq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - adcq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - adcq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - adcq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - adcq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - adcq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - adcq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - adcq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - adcq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - adcq %r8, %r10 - movq %r10, 184(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_3072_cond_add_avx2_24,.-sp_3072_cond_add_avx2_24 -#endif /* __APPLE__ */ -/* Shift number left by n bit. (r = a << n) - * - * r Result of left shift by n. - * a Number to shift. - * n Amoutnt o shift. - */ -#ifndef __APPLE__ -.globl sp_3072_lshift_48 -.type sp_3072_lshift_48,@function -.align 16 -sp_3072_lshift_48: -#else -.globl _sp_3072_lshift_48 -.p2align 4 -_sp_3072_lshift_48: -#endif /* __APPLE__ */ - movq %rdx, %rcx - movq $0, %r10 - movq 344(%rsi), %r11 - movq 352(%rsi), %rdx - movq 360(%rsi), %rax - movq 368(%rsi), %r8 - movq 376(%rsi), %r9 - shldq %cl, %r9, %r10 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 352(%rdi) - movq %rax, 360(%rdi) - movq %r8, 368(%rdi) - movq %r9, 376(%rdi) - movq %r10, 384(%rdi) - movq 312(%rsi), %r9 - movq 320(%rsi), %rdx - movq 328(%rsi), %rax - movq 336(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 320(%rdi) - movq %rax, 328(%rdi) - movq %r8, 336(%rdi) - movq %r11, 344(%rdi) - movq 280(%rsi), %r11 - movq 288(%rsi), %rdx - movq 296(%rsi), %rax - movq 304(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 288(%rdi) - movq %rax, 296(%rdi) - movq %r8, 304(%rdi) - movq %r9, 312(%rdi) - movq 248(%rsi), %r9 - movq 256(%rsi), %rdx - movq 264(%rsi), %rax - movq 272(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 256(%rdi) - movq %rax, 264(%rdi) - movq %r8, 272(%rdi) - movq %r11, 280(%rdi) - movq 216(%rsi), %r11 - movq 224(%rsi), %rdx - movq 232(%rsi), %rax - movq 240(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 224(%rdi) - movq %rax, 232(%rdi) - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq 184(%rsi), %r9 - movq 192(%rsi), %rdx - movq 200(%rsi), %rax - movq 208(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 192(%rdi) - movq %rax, 200(%rdi) - movq %r8, 208(%rdi) - movq %r11, 216(%rdi) - movq 152(%rsi), %r11 - movq 160(%rsi), %rdx - movq 168(%rsi), %rax - movq 176(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 160(%rdi) - movq %rax, 168(%rdi) - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq 120(%rsi), %r9 - movq 128(%rsi), %rdx - movq 136(%rsi), %rax - movq 144(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 128(%rdi) - movq %rax, 136(%rdi) - movq %r8, 144(%rdi) - movq %r11, 152(%rdi) - movq 88(%rsi), %r11 - movq 96(%rsi), %rdx - movq 104(%rsi), %rax - movq 112(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 96(%rdi) - movq %rax, 104(%rdi) - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - movq 56(%rsi), %r9 - movq 64(%rsi), %rdx - movq 72(%rsi), %rax - movq 80(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 64(%rdi) - movq %rax, 72(%rdi) - movq %r8, 80(%rdi) - movq %r11, 88(%rdi) - movq 24(%rsi), %r11 - movq 32(%rsi), %rdx - movq 40(%rsi), %rax - movq 48(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 32(%rdi) - movq %rax, 40(%rdi) - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shlq %cl, %rdx - movq %rdx, (%rdi) - movq %rax, 8(%rdi) - movq %r8, 16(%rdi) - movq %r11, 24(%rdi) - repz retq -#endif /* !WOLFSSL_SP_NO_3072 */ -#endif /* !WOLFSSL_SP_NO_3072 */ -#ifdef WOLFSSL_SP_4096 -#ifdef WOLFSSL_SP_4096 -/* Read big endian unsigned byte array into r. - * - * r A single precision integer. - * size Maximum number of bytes to convert - * a Byte array. - * n Number of bytes in array to read. - */ -#ifndef __APPLE__ -.globl sp_4096_from_bin -.type sp_4096_from_bin,@function -.align 16 -sp_4096_from_bin: -#else -.globl _sp_4096_from_bin -.p2align 4 -_sp_4096_from_bin: -#endif /* __APPLE__ */ - movq %rdx, %r9 - movq %rdi, %r10 - addq %rcx, %r9 - addq $512, %r10 - xorq %r11, %r11 - jmp L_4096_from_bin_64_end -L_4096_from_bin_64_start: - subq $64, %r9 - movbeq 56(%r9), %rax - movbeq 48(%r9), %r8 - movq %rax, (%rdi) - movq %r8, 8(%rdi) - movbeq 40(%r9), %rax - movbeq 32(%r9), %r8 - movq %rax, 16(%rdi) - movq %r8, 24(%rdi) - movbeq 24(%r9), %rax - movbeq 16(%r9), %r8 - movq %rax, 32(%rdi) - movq %r8, 40(%rdi) - movbeq 8(%r9), %rax - movbeq (%r9), %r8 - movq %rax, 48(%rdi) - movq %r8, 56(%rdi) - addq $64, %rdi - subq $64, %rcx -L_4096_from_bin_64_end: - cmpq $63, %rcx - jg L_4096_from_bin_64_start - jmp L_4096_from_bin_8_end -L_4096_from_bin_8_start: - subq $8, %r9 - movbeq (%r9), %rax - movq %rax, (%rdi) - addq $8, %rdi - subq $8, %rcx -L_4096_from_bin_8_end: - cmpq $7, %rcx - jg L_4096_from_bin_8_start - cmpq %r11, %rcx - je L_4096_from_bin_hi_end - movq %r11, %r8 - movq %r11, %rax -L_4096_from_bin_hi_start: - movb (%rdx), %al - shlq $8, %r8 - incq %rdx - addq %rax, %r8 - decq %rcx - jg L_4096_from_bin_hi_start - movq %r8, (%rdi) - addq $8, %rdi -L_4096_from_bin_hi_end: - cmpq %r10, %rdi - je L_4096_from_bin_zero_end -L_4096_from_bin_zero_start: - movq %r11, (%rdi) - addq $8, %rdi - cmpq %r10, %rdi - jl L_4096_from_bin_zero_start -L_4096_from_bin_zero_end: - repz retq -#ifndef __APPLE__ -.size sp_4096_from_bin,.-sp_4096_from_bin -#endif /* __APPLE__ */ -/* Write r as big endian to byte array. - * Fixed length number of bytes written: 512 - * - * r A single precision integer. - * a Byte array. - */ -#ifndef __APPLE__ -.globl sp_4096_to_bin -.type sp_4096_to_bin,@function -.align 16 -sp_4096_to_bin: -#else -.globl _sp_4096_to_bin -.p2align 4 -_sp_4096_to_bin: -#endif /* __APPLE__ */ - movbeq 504(%rdi), %rdx - movbeq 496(%rdi), %rax - movq %rdx, (%rsi) - movq %rax, 8(%rsi) - movbeq 488(%rdi), %rdx - movbeq 480(%rdi), %rax - movq %rdx, 16(%rsi) - movq %rax, 24(%rsi) - movbeq 472(%rdi), %rdx - movbeq 464(%rdi), %rax - movq %rdx, 32(%rsi) - movq %rax, 40(%rsi) - movbeq 456(%rdi), %rdx - movbeq 448(%rdi), %rax - movq %rdx, 48(%rsi) - movq %rax, 56(%rsi) - movbeq 440(%rdi), %rdx - movbeq 432(%rdi), %rax - movq %rdx, 64(%rsi) - movq %rax, 72(%rsi) - movbeq 424(%rdi), %rdx - movbeq 416(%rdi), %rax - movq %rdx, 80(%rsi) - movq %rax, 88(%rsi) - movbeq 408(%rdi), %rdx - movbeq 400(%rdi), %rax - movq %rdx, 96(%rsi) - movq %rax, 104(%rsi) - movbeq 392(%rdi), %rdx - movbeq 384(%rdi), %rax - movq %rdx, 112(%rsi) - movq %rax, 120(%rsi) - movbeq 376(%rdi), %rdx - movbeq 368(%rdi), %rax - movq %rdx, 128(%rsi) - movq %rax, 136(%rsi) - movbeq 360(%rdi), %rdx - movbeq 352(%rdi), %rax - movq %rdx, 144(%rsi) - movq %rax, 152(%rsi) - movbeq 344(%rdi), %rdx - movbeq 336(%rdi), %rax - movq %rdx, 160(%rsi) - movq %rax, 168(%rsi) - movbeq 328(%rdi), %rdx - movbeq 320(%rdi), %rax - movq %rdx, 176(%rsi) - movq %rax, 184(%rsi) - movbeq 312(%rdi), %rdx - movbeq 304(%rdi), %rax - movq %rdx, 192(%rsi) - movq %rax, 200(%rsi) - movbeq 296(%rdi), %rdx - movbeq 288(%rdi), %rax - movq %rdx, 208(%rsi) - movq %rax, 216(%rsi) - movbeq 280(%rdi), %rdx - movbeq 272(%rdi), %rax - movq %rdx, 224(%rsi) - movq %rax, 232(%rsi) - movbeq 264(%rdi), %rdx - movbeq 256(%rdi), %rax - movq %rdx, 240(%rsi) - movq %rax, 248(%rsi) - movbeq 248(%rdi), %rdx - movbeq 240(%rdi), %rax - movq %rdx, 256(%rsi) - movq %rax, 264(%rsi) - movbeq 232(%rdi), %rdx - movbeq 224(%rdi), %rax - movq %rdx, 272(%rsi) - movq %rax, 280(%rsi) - movbeq 216(%rdi), %rdx - movbeq 208(%rdi), %rax - movq %rdx, 288(%rsi) - movq %rax, 296(%rsi) - movbeq 200(%rdi), %rdx - movbeq 192(%rdi), %rax - movq %rdx, 304(%rsi) - movq %rax, 312(%rsi) - movbeq 184(%rdi), %rdx - movbeq 176(%rdi), %rax - movq %rdx, 320(%rsi) - movq %rax, 328(%rsi) - movbeq 168(%rdi), %rdx - movbeq 160(%rdi), %rax - movq %rdx, 336(%rsi) - movq %rax, 344(%rsi) - movbeq 152(%rdi), %rdx - movbeq 144(%rdi), %rax - movq %rdx, 352(%rsi) - movq %rax, 360(%rsi) - movbeq 136(%rdi), %rdx - movbeq 128(%rdi), %rax - movq %rdx, 368(%rsi) - movq %rax, 376(%rsi) - movbeq 120(%rdi), %rdx - movbeq 112(%rdi), %rax - movq %rdx, 384(%rsi) - movq %rax, 392(%rsi) - movbeq 104(%rdi), %rdx - movbeq 96(%rdi), %rax - movq %rdx, 400(%rsi) - movq %rax, 408(%rsi) - movbeq 88(%rdi), %rdx - movbeq 80(%rdi), %rax - movq %rdx, 416(%rsi) - movq %rax, 424(%rsi) - movbeq 72(%rdi), %rdx - movbeq 64(%rdi), %rax - movq %rdx, 432(%rsi) - movq %rax, 440(%rsi) - movbeq 56(%rdi), %rdx - movbeq 48(%rdi), %rax - movq %rdx, 448(%rsi) - movq %rax, 456(%rsi) - movbeq 40(%rdi), %rdx - movbeq 32(%rdi), %rax - movq %rdx, 464(%rsi) - movq %rax, 472(%rsi) - movbeq 24(%rdi), %rdx - movbeq 16(%rdi), %rax - movq %rdx, 480(%rsi) - movq %rax, 488(%rsi) - movbeq 8(%rdi), %rdx - movbeq (%rdi), %rax - movq %rdx, 496(%rsi) - movq %rax, 504(%rsi) - repz retq -#ifndef __APPLE__ -.size sp_4096_to_bin,.-sp_4096_to_bin -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_sub_in_place_64 -.type sp_4096_sub_in_place_64,@function -.align 16 -sp_4096_sub_in_place_64: -#else -.globl _sp_4096_sub_in_place_64 -.p2align 4 -_sp_4096_sub_in_place_64: -#endif /* __APPLE__ */ - movq (%rdi), %rdx - xorq %rax, %rax - subq (%rsi), %rdx - movq 8(%rdi), %rcx - movq %rdx, (%rdi) - sbbq 8(%rsi), %rcx - movq 16(%rdi), %rdx - movq %rcx, 8(%rdi) - sbbq 16(%rsi), %rdx - movq 24(%rdi), %rcx - movq %rdx, 16(%rdi) - sbbq 24(%rsi), %rcx - movq 32(%rdi), %rdx - movq %rcx, 24(%rdi) - sbbq 32(%rsi), %rdx - movq 40(%rdi), %rcx - movq %rdx, 32(%rdi) - sbbq 40(%rsi), %rcx - movq 48(%rdi), %rdx - movq %rcx, 40(%rdi) - sbbq 48(%rsi), %rdx - movq 56(%rdi), %rcx - movq %rdx, 48(%rdi) - sbbq 56(%rsi), %rcx - movq 64(%rdi), %rdx - movq %rcx, 56(%rdi) - sbbq 64(%rsi), %rdx - movq 72(%rdi), %rcx - movq %rdx, 64(%rdi) - sbbq 72(%rsi), %rcx - movq 80(%rdi), %rdx - movq %rcx, 72(%rdi) - sbbq 80(%rsi), %rdx - movq 88(%rdi), %rcx - movq %rdx, 80(%rdi) - sbbq 88(%rsi), %rcx - movq 96(%rdi), %rdx - movq %rcx, 88(%rdi) - sbbq 96(%rsi), %rdx - movq 104(%rdi), %rcx - movq %rdx, 96(%rdi) - sbbq 104(%rsi), %rcx - movq 112(%rdi), %rdx - movq %rcx, 104(%rdi) - sbbq 112(%rsi), %rdx - movq 120(%rdi), %rcx - movq %rdx, 112(%rdi) - sbbq 120(%rsi), %rcx - movq 128(%rdi), %rdx - movq %rcx, 120(%rdi) - sbbq 128(%rsi), %rdx - movq 136(%rdi), %rcx - movq %rdx, 128(%rdi) - sbbq 136(%rsi), %rcx - movq 144(%rdi), %rdx - movq %rcx, 136(%rdi) - sbbq 144(%rsi), %rdx - movq 152(%rdi), %rcx - movq %rdx, 144(%rdi) - sbbq 152(%rsi), %rcx - movq 160(%rdi), %rdx - movq %rcx, 152(%rdi) - sbbq 160(%rsi), %rdx - movq 168(%rdi), %rcx - movq %rdx, 160(%rdi) - sbbq 168(%rsi), %rcx - movq 176(%rdi), %rdx - movq %rcx, 168(%rdi) - sbbq 176(%rsi), %rdx - movq 184(%rdi), %rcx - movq %rdx, 176(%rdi) - sbbq 184(%rsi), %rcx - movq 192(%rdi), %rdx - movq %rcx, 184(%rdi) - sbbq 192(%rsi), %rdx - movq 200(%rdi), %rcx - movq %rdx, 192(%rdi) - sbbq 200(%rsi), %rcx - movq 208(%rdi), %rdx - movq %rcx, 200(%rdi) - sbbq 208(%rsi), %rdx - movq 216(%rdi), %rcx - movq %rdx, 208(%rdi) - sbbq 216(%rsi), %rcx - movq 224(%rdi), %rdx - movq %rcx, 216(%rdi) - sbbq 224(%rsi), %rdx - movq 232(%rdi), %rcx - movq %rdx, 224(%rdi) - sbbq 232(%rsi), %rcx - movq 240(%rdi), %rdx - movq %rcx, 232(%rdi) - sbbq 240(%rsi), %rdx - movq 248(%rdi), %rcx - movq %rdx, 240(%rdi) - sbbq 248(%rsi), %rcx - movq 256(%rdi), %rdx - movq %rcx, 248(%rdi) - sbbq 256(%rsi), %rdx - movq 264(%rdi), %rcx - movq %rdx, 256(%rdi) - sbbq 264(%rsi), %rcx - movq 272(%rdi), %rdx - movq %rcx, 264(%rdi) - sbbq 272(%rsi), %rdx - movq 280(%rdi), %rcx - movq %rdx, 272(%rdi) - sbbq 280(%rsi), %rcx - movq 288(%rdi), %rdx - movq %rcx, 280(%rdi) - sbbq 288(%rsi), %rdx - movq 296(%rdi), %rcx - movq %rdx, 288(%rdi) - sbbq 296(%rsi), %rcx - movq 304(%rdi), %rdx - movq %rcx, 296(%rdi) - sbbq 304(%rsi), %rdx - movq 312(%rdi), %rcx - movq %rdx, 304(%rdi) - sbbq 312(%rsi), %rcx - movq 320(%rdi), %rdx - movq %rcx, 312(%rdi) - sbbq 320(%rsi), %rdx - movq 328(%rdi), %rcx - movq %rdx, 320(%rdi) - sbbq 328(%rsi), %rcx - movq 336(%rdi), %rdx - movq %rcx, 328(%rdi) - sbbq 336(%rsi), %rdx - movq 344(%rdi), %rcx - movq %rdx, 336(%rdi) - sbbq 344(%rsi), %rcx - movq 352(%rdi), %rdx - movq %rcx, 344(%rdi) - sbbq 352(%rsi), %rdx - movq 360(%rdi), %rcx - movq %rdx, 352(%rdi) - sbbq 360(%rsi), %rcx - movq 368(%rdi), %rdx - movq %rcx, 360(%rdi) - sbbq 368(%rsi), %rdx - movq 376(%rdi), %rcx - movq %rdx, 368(%rdi) - sbbq 376(%rsi), %rcx - movq 384(%rdi), %rdx - movq %rcx, 376(%rdi) - sbbq 384(%rsi), %rdx - movq 392(%rdi), %rcx - movq %rdx, 384(%rdi) - sbbq 392(%rsi), %rcx - movq 400(%rdi), %rdx - movq %rcx, 392(%rdi) - sbbq 400(%rsi), %rdx - movq 408(%rdi), %rcx - movq %rdx, 400(%rdi) - sbbq 408(%rsi), %rcx - movq 416(%rdi), %rdx - movq %rcx, 408(%rdi) - sbbq 416(%rsi), %rdx - movq 424(%rdi), %rcx - movq %rdx, 416(%rdi) - sbbq 424(%rsi), %rcx - movq 432(%rdi), %rdx - movq %rcx, 424(%rdi) - sbbq 432(%rsi), %rdx - movq 440(%rdi), %rcx - movq %rdx, 432(%rdi) - sbbq 440(%rsi), %rcx - movq 448(%rdi), %rdx - movq %rcx, 440(%rdi) - sbbq 448(%rsi), %rdx - movq 456(%rdi), %rcx - movq %rdx, 448(%rdi) - sbbq 456(%rsi), %rcx - movq 464(%rdi), %rdx - movq %rcx, 456(%rdi) - sbbq 464(%rsi), %rdx - movq 472(%rdi), %rcx - movq %rdx, 464(%rdi) - sbbq 472(%rsi), %rcx - movq 480(%rdi), %rdx - movq %rcx, 472(%rdi) - sbbq 480(%rsi), %rdx - movq 488(%rdi), %rcx - movq %rdx, 480(%rdi) - sbbq 488(%rsi), %rcx - movq 496(%rdi), %rdx - movq %rcx, 488(%rdi) - sbbq 496(%rsi), %rdx - movq 504(%rdi), %rcx - movq %rdx, 496(%rdi) - sbbq 504(%rsi), %rcx - movq %rcx, 504(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_sub_in_place_64,.-sp_4096_sub_in_place_64 -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_add_64 -.type sp_4096_add_64,@function -.align 16 -sp_4096_add_64: -#else -.globl _sp_4096_add_64 -.p2align 4 -_sp_4096_add_64: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - adcq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - adcq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - adcq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - adcq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - adcq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - adcq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - adcq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - adcq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - adcq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - adcq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - adcq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - adcq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - adcq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - adcq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - adcq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - adcq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - adcq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - adcq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - adcq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - adcq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - adcq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - adcq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - adcq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - adcq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - adcq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - adcq 248(%rdx), %r8 - movq 256(%rsi), %rcx - movq %r8, 248(%rdi) - adcq 256(%rdx), %rcx - movq 264(%rsi), %r8 - movq %rcx, 256(%rdi) - adcq 264(%rdx), %r8 - movq 272(%rsi), %rcx - movq %r8, 264(%rdi) - adcq 272(%rdx), %rcx - movq 280(%rsi), %r8 - movq %rcx, 272(%rdi) - adcq 280(%rdx), %r8 - movq 288(%rsi), %rcx - movq %r8, 280(%rdi) - adcq 288(%rdx), %rcx - movq 296(%rsi), %r8 - movq %rcx, 288(%rdi) - adcq 296(%rdx), %r8 - movq 304(%rsi), %rcx - movq %r8, 296(%rdi) - adcq 304(%rdx), %rcx - movq 312(%rsi), %r8 - movq %rcx, 304(%rdi) - adcq 312(%rdx), %r8 - movq 320(%rsi), %rcx - movq %r8, 312(%rdi) - adcq 320(%rdx), %rcx - movq 328(%rsi), %r8 - movq %rcx, 320(%rdi) - adcq 328(%rdx), %r8 - movq 336(%rsi), %rcx - movq %r8, 328(%rdi) - adcq 336(%rdx), %rcx - movq 344(%rsi), %r8 - movq %rcx, 336(%rdi) - adcq 344(%rdx), %r8 - movq 352(%rsi), %rcx - movq %r8, 344(%rdi) - adcq 352(%rdx), %rcx - movq 360(%rsi), %r8 - movq %rcx, 352(%rdi) - adcq 360(%rdx), %r8 - movq 368(%rsi), %rcx - movq %r8, 360(%rdi) - adcq 368(%rdx), %rcx - movq 376(%rsi), %r8 - movq %rcx, 368(%rdi) - adcq 376(%rdx), %r8 - movq 384(%rsi), %rcx - movq %r8, 376(%rdi) - adcq 384(%rdx), %rcx - movq 392(%rsi), %r8 - movq %rcx, 384(%rdi) - adcq 392(%rdx), %r8 - movq 400(%rsi), %rcx - movq %r8, 392(%rdi) - adcq 400(%rdx), %rcx - movq 408(%rsi), %r8 - movq %rcx, 400(%rdi) - adcq 408(%rdx), %r8 - movq 416(%rsi), %rcx - movq %r8, 408(%rdi) - adcq 416(%rdx), %rcx - movq 424(%rsi), %r8 - movq %rcx, 416(%rdi) - adcq 424(%rdx), %r8 - movq 432(%rsi), %rcx - movq %r8, 424(%rdi) - adcq 432(%rdx), %rcx - movq 440(%rsi), %r8 - movq %rcx, 432(%rdi) - adcq 440(%rdx), %r8 - movq 448(%rsi), %rcx - movq %r8, 440(%rdi) - adcq 448(%rdx), %rcx - movq 456(%rsi), %r8 - movq %rcx, 448(%rdi) - adcq 456(%rdx), %r8 - movq 464(%rsi), %rcx - movq %r8, 456(%rdi) - adcq 464(%rdx), %rcx - movq 472(%rsi), %r8 - movq %rcx, 464(%rdi) - adcq 472(%rdx), %r8 - movq 480(%rsi), %rcx - movq %r8, 472(%rdi) - adcq 480(%rdx), %rcx - movq 488(%rsi), %r8 - movq %rcx, 480(%rdi) - adcq 488(%rdx), %r8 - movq 496(%rsi), %rcx - movq %r8, 488(%rdi) - adcq 496(%rdx), %rcx - movq 504(%rsi), %r8 - movq %rcx, 496(%rdi) - adcq 504(%rdx), %r8 - movq %r8, 504(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_add_64,.-sp_4096_add_64 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_mul_64 -.type sp_4096_mul_64,@function -.align 16 -sp_4096_mul_64: -#else -.globl _sp_4096_mul_64 -.p2align 4 -_sp_4096_mul_64: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $1576, %rsp - movq %rdi, 1536(%rsp) - movq %rsi, 1544(%rsp) - movq %rdx, 1552(%rsp) - leaq 1024(%rsp), %r10 - leaq 256(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq 128(%rsi), %rcx - movq %rax, 120(%r10) - adcq 128(%r12), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%r10) - adcq 136(%r12), %r8 - movq 144(%rsi), %rax - movq %r8, 136(%r10) - adcq 144(%r12), %rax - movq 152(%rsi), %rcx - movq %rax, 144(%r10) - adcq 152(%r12), %rcx - movq 160(%rsi), %r8 - movq %rcx, 152(%r10) - adcq 160(%r12), %r8 - movq 168(%rsi), %rax - movq %r8, 160(%r10) - adcq 168(%r12), %rax - movq 176(%rsi), %rcx - movq %rax, 168(%r10) - adcq 176(%r12), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%r10) - adcq 184(%r12), %r8 - movq 192(%rsi), %rax - movq %r8, 184(%r10) - adcq 192(%r12), %rax - movq 200(%rsi), %rcx - movq %rax, 192(%r10) - adcq 200(%r12), %rcx - movq 208(%rsi), %r8 - movq %rcx, 200(%r10) - adcq 208(%r12), %r8 - movq 216(%rsi), %rax - movq %r8, 208(%r10) - adcq 216(%r12), %rax - movq 224(%rsi), %rcx - movq %rax, 216(%r10) - adcq 224(%r12), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%r10) - adcq 232(%r12), %r8 - movq 240(%rsi), %rax - movq %r8, 232(%r10) - adcq 240(%r12), %rax - movq 248(%rsi), %rcx - movq %rax, 240(%r10) - adcq 248(%r12), %rcx - movq %rcx, 248(%r10) - adcq $0, %r13 - movq %r13, 1560(%rsp) - leaq 1280(%rsp), %r11 - leaq 256(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq 128(%rdx), %rcx - movq %rax, 120(%r11) - adcq 128(%r12), %rcx - movq 136(%rdx), %r8 - movq %rcx, 128(%r11) - adcq 136(%r12), %r8 - movq 144(%rdx), %rax - movq %r8, 136(%r11) - adcq 144(%r12), %rax - movq 152(%rdx), %rcx - movq %rax, 144(%r11) - adcq 152(%r12), %rcx - movq 160(%rdx), %r8 - movq %rcx, 152(%r11) - adcq 160(%r12), %r8 - movq 168(%rdx), %rax - movq %r8, 160(%r11) - adcq 168(%r12), %rax - movq 176(%rdx), %rcx - movq %rax, 168(%r11) - adcq 176(%r12), %rcx - movq 184(%rdx), %r8 - movq %rcx, 176(%r11) - adcq 184(%r12), %r8 - movq 192(%rdx), %rax - movq %r8, 184(%r11) - adcq 192(%r12), %rax - movq 200(%rdx), %rcx - movq %rax, 192(%r11) - adcq 200(%r12), %rcx - movq 208(%rdx), %r8 - movq %rcx, 200(%r11) - adcq 208(%r12), %r8 - movq 216(%rdx), %rax - movq %r8, 208(%r11) - adcq 216(%r12), %rax - movq 224(%rdx), %rcx - movq %rax, 216(%r11) - adcq 224(%r12), %rcx - movq 232(%rdx), %r8 - movq %rcx, 224(%r11) - adcq 232(%r12), %r8 - movq 240(%rdx), %rax - movq %r8, 232(%r11) - adcq 240(%r12), %rax - movq 248(%rdx), %rcx - movq %rax, 240(%r11) - adcq 248(%r12), %rcx - movq %rcx, 248(%r11) - adcq $0, %r14 - movq %r14, 1568(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_mul_32@plt -#else - callq _sp_2048_mul_32 -#endif /* __APPLE__ */ - movq 1552(%rsp), %rdx - movq 1544(%rsp), %rsi - leaq 512(%rsp), %rdi - addq $256, %rdx - addq $256, %rsi -#ifndef __APPLE__ - callq sp_2048_mul_32@plt -#else - callq _sp_2048_mul_32 -#endif /* __APPLE__ */ - movq 1552(%rsp), %rdx - movq 1544(%rsp), %rsi - movq 1536(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_mul_32@plt -#else - callq _sp_2048_mul_32 -#endif /* __APPLE__ */ - movq 1560(%rsp), %r13 - movq 1568(%rsp), %r14 - movq 1536(%rsp), %r15 - movq %r13, %r9 - leaq 1024(%rsp), %r10 - leaq 1280(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $512, %r15 - movq (%r10), %rax - movq (%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, (%r10) - movq %rcx, (%r11) - movq 8(%r10), %rax - movq 8(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 8(%r10) - movq %rcx, 8(%r11) - movq 16(%r10), %rax - movq 16(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 16(%r10) - movq %rcx, 16(%r11) - movq 24(%r10), %rax - movq 24(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 24(%r10) - movq %rcx, 24(%r11) - movq 32(%r10), %rax - movq 32(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 32(%r10) - movq %rcx, 32(%r11) - movq 40(%r10), %rax - movq 40(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 40(%r10) - movq %rcx, 40(%r11) - movq 48(%r10), %rax - movq 48(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 48(%r10) - movq %rcx, 48(%r11) - movq 56(%r10), %rax - movq 56(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 56(%r10) - movq %rcx, 56(%r11) - movq 64(%r10), %rax - movq 64(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 64(%r10) - movq %rcx, 64(%r11) - movq 72(%r10), %rax - movq 72(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 72(%r10) - movq %rcx, 72(%r11) - movq 80(%r10), %rax - movq 80(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 80(%r10) - movq %rcx, 80(%r11) - movq 88(%r10), %rax - movq 88(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 88(%r10) - movq %rcx, 88(%r11) - movq 96(%r10), %rax - movq 96(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 96(%r10) - movq %rcx, 96(%r11) - movq 104(%r10), %rax - movq 104(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 104(%r10) - movq %rcx, 104(%r11) - movq 112(%r10), %rax - movq 112(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 112(%r10) - movq %rcx, 112(%r11) - movq 120(%r10), %rax - movq 120(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 120(%r10) - movq %rcx, 120(%r11) - movq 128(%r10), %rax - movq 128(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 128(%r10) - movq %rcx, 128(%r11) - movq 136(%r10), %rax - movq 136(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 136(%r10) - movq %rcx, 136(%r11) - movq 144(%r10), %rax - movq 144(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 144(%r10) - movq %rcx, 144(%r11) - movq 152(%r10), %rax - movq 152(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 152(%r10) - movq %rcx, 152(%r11) - movq 160(%r10), %rax - movq 160(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 160(%r10) - movq %rcx, 160(%r11) - movq 168(%r10), %rax - movq 168(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 168(%r10) - movq %rcx, 168(%r11) - movq 176(%r10), %rax - movq 176(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 176(%r10) - movq %rcx, 176(%r11) - movq 184(%r10), %rax - movq 184(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 184(%r10) - movq %rcx, 184(%r11) - movq 192(%r10), %rax - movq 192(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 192(%r10) - movq %rcx, 192(%r11) - movq 200(%r10), %rax - movq 200(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 200(%r10) - movq %rcx, 200(%r11) - movq 208(%r10), %rax - movq 208(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 208(%r10) - movq %rcx, 208(%r11) - movq 216(%r10), %rax - movq 216(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 216(%r10) - movq %rcx, 216(%r11) - movq 224(%r10), %rax - movq 224(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 224(%r10) - movq %rcx, 224(%r11) - movq 232(%r10), %rax - movq 232(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 232(%r10) - movq %rcx, 232(%r11) - movq 240(%r10), %rax - movq 240(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 240(%r10) - movq %rcx, 240(%r11) - movq 248(%r10), %rax - movq 248(%r11), %rcx - andq %r14, %rax - andq %r13, %rcx - movq %rax, 248(%r10) - movq %rcx, 248(%r11) - movq (%r10), %rax - addq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r15) - adcq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r15) - adcq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r15) - adcq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r15) - adcq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r15) - adcq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r15) - adcq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r15) - adcq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r15) - adcq 248(%r11), %rcx - movq %rcx, 248(%r15) - adcq $0, %r9 - leaq 512(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%r11), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%r11), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%r11), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%r11), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%r11), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%r11), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%r11), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%r11), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%r11), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%r11), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%r11), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%r11), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%r11), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%r11), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%r11), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%r11), %r8 - movq 384(%r10), %rax - movq %r8, 376(%r10) - sbbq 384(%r11), %rax - movq 392(%r10), %rcx - movq %rax, 384(%r10) - sbbq 392(%r11), %rcx - movq 400(%r10), %r8 - movq %rcx, 392(%r10) - sbbq 400(%r11), %r8 - movq 408(%r10), %rax - movq %r8, 400(%r10) - sbbq 408(%r11), %rax - movq 416(%r10), %rcx - movq %rax, 408(%r10) - sbbq 416(%r11), %rcx - movq 424(%r10), %r8 - movq %rcx, 416(%r10) - sbbq 424(%r11), %r8 - movq 432(%r10), %rax - movq %r8, 424(%r10) - sbbq 432(%r11), %rax - movq 440(%r10), %rcx - movq %rax, 432(%r10) - sbbq 440(%r11), %rcx - movq 448(%r10), %r8 - movq %rcx, 440(%r10) - sbbq 448(%r11), %r8 - movq 456(%r10), %rax - movq %r8, 448(%r10) - sbbq 456(%r11), %rax - movq 464(%r10), %rcx - movq %rax, 456(%r10) - sbbq 464(%r11), %rcx - movq 472(%r10), %r8 - movq %rcx, 464(%r10) - sbbq 472(%r11), %r8 - movq 480(%r10), %rax - movq %r8, 472(%r10) - sbbq 480(%r11), %rax - movq 488(%r10), %rcx - movq %rax, 480(%r10) - sbbq 488(%r11), %rcx - movq 496(%r10), %r8 - movq %rcx, 488(%r10) - sbbq 496(%r11), %r8 - movq 504(%r10), %rax - movq %r8, 496(%r10) - sbbq 504(%r11), %rax - movq %rax, 504(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%rdi), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%rdi), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%rdi), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%rdi), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%rdi), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%rdi), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%rdi), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%rdi), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%rdi), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%rdi), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%rdi), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%rdi), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%rdi), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%rdi), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%rdi), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%rdi), %r8 - movq 384(%r10), %rax - movq %r8, 376(%r10) - sbbq 384(%rdi), %rax - movq 392(%r10), %rcx - movq %rax, 384(%r10) - sbbq 392(%rdi), %rcx - movq 400(%r10), %r8 - movq %rcx, 392(%r10) - sbbq 400(%rdi), %r8 - movq 408(%r10), %rax - movq %r8, 400(%r10) - sbbq 408(%rdi), %rax - movq 416(%r10), %rcx - movq %rax, 408(%r10) - sbbq 416(%rdi), %rcx - movq 424(%r10), %r8 - movq %rcx, 416(%r10) - sbbq 424(%rdi), %r8 - movq 432(%r10), %rax - movq %r8, 424(%r10) - sbbq 432(%rdi), %rax - movq 440(%r10), %rcx - movq %rax, 432(%r10) - sbbq 440(%rdi), %rcx - movq 448(%r10), %r8 - movq %rcx, 440(%r10) - sbbq 448(%rdi), %r8 - movq 456(%r10), %rax - movq %r8, 448(%r10) - sbbq 456(%rdi), %rax - movq 464(%r10), %rcx - movq %rax, 456(%r10) - sbbq 464(%rdi), %rcx - movq 472(%r10), %r8 - movq %rcx, 464(%r10) - sbbq 472(%rdi), %r8 - movq 480(%r10), %rax - movq %r8, 472(%r10) - sbbq 480(%rdi), %rax - movq 488(%r10), %rcx - movq %rax, 480(%r10) - sbbq 488(%rdi), %rcx - movq 496(%r10), %r8 - movq %rcx, 488(%r10) - sbbq 496(%rdi), %r8 - movq 504(%r10), %rax - movq %r8, 496(%r10) - sbbq 504(%rdi), %rax - movq %rax, 504(%r10) - sbbq $0, %r9 - subq $256, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r10), %r8 - movq 264(%r15), %rax - movq %r8, 256(%r15) - adcq 264(%r10), %rax - movq 272(%r15), %rcx - movq %rax, 264(%r15) - adcq 272(%r10), %rcx - movq 280(%r15), %r8 - movq %rcx, 272(%r15) - adcq 280(%r10), %r8 - movq 288(%r15), %rax - movq %r8, 280(%r15) - adcq 288(%r10), %rax - movq 296(%r15), %rcx - movq %rax, 288(%r15) - adcq 296(%r10), %rcx - movq 304(%r15), %r8 - movq %rcx, 296(%r15) - adcq 304(%r10), %r8 - movq 312(%r15), %rax - movq %r8, 304(%r15) - adcq 312(%r10), %rax - movq 320(%r15), %rcx - movq %rax, 312(%r15) - adcq 320(%r10), %rcx - movq 328(%r15), %r8 - movq %rcx, 320(%r15) - adcq 328(%r10), %r8 - movq 336(%r15), %rax - movq %r8, 328(%r15) - adcq 336(%r10), %rax - movq 344(%r15), %rcx - movq %rax, 336(%r15) - adcq 344(%r10), %rcx - movq 352(%r15), %r8 - movq %rcx, 344(%r15) - adcq 352(%r10), %r8 - movq 360(%r15), %rax - movq %r8, 352(%r15) - adcq 360(%r10), %rax - movq 368(%r15), %rcx - movq %rax, 360(%r15) - adcq 368(%r10), %rcx - movq 376(%r15), %r8 - movq %rcx, 368(%r15) - adcq 376(%r10), %r8 - movq 384(%r15), %rax - movq %r8, 376(%r15) - adcq 384(%r10), %rax - movq 392(%r15), %rcx - movq %rax, 384(%r15) - adcq 392(%r10), %rcx - movq 400(%r15), %r8 - movq %rcx, 392(%r15) - adcq 400(%r10), %r8 - movq 408(%r15), %rax - movq %r8, 400(%r15) - adcq 408(%r10), %rax - movq 416(%r15), %rcx - movq %rax, 408(%r15) - adcq 416(%r10), %rcx - movq 424(%r15), %r8 - movq %rcx, 416(%r15) - adcq 424(%r10), %r8 - movq 432(%r15), %rax - movq %r8, 424(%r15) - adcq 432(%r10), %rax - movq 440(%r15), %rcx - movq %rax, 432(%r15) - adcq 440(%r10), %rcx - movq 448(%r15), %r8 - movq %rcx, 440(%r15) - adcq 448(%r10), %r8 - movq 456(%r15), %rax - movq %r8, 448(%r15) - adcq 456(%r10), %rax - movq 464(%r15), %rcx - movq %rax, 456(%r15) - adcq 464(%r10), %rcx - movq 472(%r15), %r8 - movq %rcx, 464(%r15) - adcq 472(%r10), %r8 - movq 480(%r15), %rax - movq %r8, 472(%r15) - adcq 480(%r10), %rax - movq 488(%r15), %rcx - movq %rax, 480(%r15) - adcq 488(%r10), %rcx - movq 496(%r15), %r8 - movq %rcx, 488(%r15) - adcq 496(%r10), %r8 - movq 504(%r15), %rax - movq %r8, 496(%r15) - adcq 504(%r10), %rax - movq %rax, 504(%r15) - adcq $0, %r9 - movq %r9, 768(%rdi) - addq $256, %r15 - # Add - movq (%r15), %rax - xorq %r9, %r9 - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r11), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r11), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r11), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r11), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r11), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r11), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r11), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r11), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r11), %r8 - movq %r8, 256(%r15) - adcq $0, %r9 - # Add to zero - movq 264(%r11), %rax - adcq $0, %rax - movq 272(%r11), %rcx - movq %rax, 264(%r15) - adcq $0, %rcx - movq 280(%r11), %r8 - movq %rcx, 272(%r15) - adcq $0, %r8 - movq 288(%r11), %rax - movq %r8, 280(%r15) - adcq $0, %rax - movq 296(%r11), %rcx - movq %rax, 288(%r15) - adcq $0, %rcx - movq 304(%r11), %r8 - movq %rcx, 296(%r15) - adcq $0, %r8 - movq 312(%r11), %rax - movq %r8, 304(%r15) - adcq $0, %rax - movq 320(%r11), %rcx - movq %rax, 312(%r15) - adcq $0, %rcx - movq 328(%r11), %r8 - movq %rcx, 320(%r15) - adcq $0, %r8 - movq 336(%r11), %rax - movq %r8, 328(%r15) - adcq $0, %rax - movq 344(%r11), %rcx - movq %rax, 336(%r15) - adcq $0, %rcx - movq 352(%r11), %r8 - movq %rcx, 344(%r15) - adcq $0, %r8 - movq 360(%r11), %rax - movq %r8, 352(%r15) - adcq $0, %rax - movq 368(%r11), %rcx - movq %rax, 360(%r15) - adcq $0, %rcx - movq 376(%r11), %r8 - movq %rcx, 368(%r15) - adcq $0, %r8 - movq 384(%r11), %rax - movq %r8, 376(%r15) - adcq $0, %rax - movq 392(%r11), %rcx - movq %rax, 384(%r15) - adcq $0, %rcx - movq 400(%r11), %r8 - movq %rcx, 392(%r15) - adcq $0, %r8 - movq 408(%r11), %rax - movq %r8, 400(%r15) - adcq $0, %rax - movq 416(%r11), %rcx - movq %rax, 408(%r15) - adcq $0, %rcx - movq 424(%r11), %r8 - movq %rcx, 416(%r15) - adcq $0, %r8 - movq 432(%r11), %rax - movq %r8, 424(%r15) - adcq $0, %rax - movq 440(%r11), %rcx - movq %rax, 432(%r15) - adcq $0, %rcx - movq 448(%r11), %r8 - movq %rcx, 440(%r15) - adcq $0, %r8 - movq 456(%r11), %rax - movq %r8, 448(%r15) - adcq $0, %rax - movq 464(%r11), %rcx - movq %rax, 456(%r15) - adcq $0, %rcx - movq 472(%r11), %r8 - movq %rcx, 464(%r15) - adcq $0, %r8 - movq 480(%r11), %rax - movq %r8, 472(%r15) - adcq $0, %rax - movq 488(%r11), %rcx - movq %rax, 480(%r15) - adcq $0, %rcx - movq 496(%r11), %r8 - movq %rcx, 488(%r15) - adcq $0, %r8 - movq 504(%r11), %rax - movq %r8, 496(%r15) - adcq $0, %rax - movq %rax, 504(%r15) - addq $1576, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_4096_mul_64,.-sp_4096_mul_64 -#endif /* __APPLE__ */ -/* Add a to a into r. (r = a + a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_2048_dbl_32 -.type sp_2048_dbl_32,@function -.align 16 -sp_2048_dbl_32: -#else -.globl _sp_2048_dbl_32 -.p2align 4 -_sp_2048_dbl_32: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - xorq %rax, %rax - addq %rdx, %rdx - movq 8(%rsi), %rcx - movq %rdx, (%rdi) - adcq %rcx, %rcx - movq 16(%rsi), %rdx - movq %rcx, 8(%rdi) - adcq %rdx, %rdx - movq 24(%rsi), %rcx - movq %rdx, 16(%rdi) - adcq %rcx, %rcx - movq 32(%rsi), %rdx - movq %rcx, 24(%rdi) - adcq %rdx, %rdx - movq 40(%rsi), %rcx - movq %rdx, 32(%rdi) - adcq %rcx, %rcx - movq 48(%rsi), %rdx - movq %rcx, 40(%rdi) - adcq %rdx, %rdx - movq 56(%rsi), %rcx - movq %rdx, 48(%rdi) - adcq %rcx, %rcx - movq 64(%rsi), %rdx - movq %rcx, 56(%rdi) - adcq %rdx, %rdx - movq 72(%rsi), %rcx - movq %rdx, 64(%rdi) - adcq %rcx, %rcx - movq 80(%rsi), %rdx - movq %rcx, 72(%rdi) - adcq %rdx, %rdx - movq 88(%rsi), %rcx - movq %rdx, 80(%rdi) - adcq %rcx, %rcx - movq 96(%rsi), %rdx - movq %rcx, 88(%rdi) - adcq %rdx, %rdx - movq 104(%rsi), %rcx - movq %rdx, 96(%rdi) - adcq %rcx, %rcx - movq 112(%rsi), %rdx - movq %rcx, 104(%rdi) - adcq %rdx, %rdx - movq 120(%rsi), %rcx - movq %rdx, 112(%rdi) - adcq %rcx, %rcx - movq 128(%rsi), %rdx - movq %rcx, 120(%rdi) - adcq %rdx, %rdx - movq 136(%rsi), %rcx - movq %rdx, 128(%rdi) - adcq %rcx, %rcx - movq 144(%rsi), %rdx - movq %rcx, 136(%rdi) - adcq %rdx, %rdx - movq 152(%rsi), %rcx - movq %rdx, 144(%rdi) - adcq %rcx, %rcx - movq 160(%rsi), %rdx - movq %rcx, 152(%rdi) - adcq %rdx, %rdx - movq 168(%rsi), %rcx - movq %rdx, 160(%rdi) - adcq %rcx, %rcx - movq 176(%rsi), %rdx - movq %rcx, 168(%rdi) - adcq %rdx, %rdx - movq 184(%rsi), %rcx - movq %rdx, 176(%rdi) - adcq %rcx, %rcx - movq 192(%rsi), %rdx - movq %rcx, 184(%rdi) - adcq %rdx, %rdx - movq 200(%rsi), %rcx - movq %rdx, 192(%rdi) - adcq %rcx, %rcx - movq 208(%rsi), %rdx - movq %rcx, 200(%rdi) - adcq %rdx, %rdx - movq 216(%rsi), %rcx - movq %rdx, 208(%rdi) - adcq %rcx, %rcx - movq 224(%rsi), %rdx - movq %rcx, 216(%rdi) - adcq %rdx, %rdx - movq 232(%rsi), %rcx - movq %rdx, 224(%rdi) - adcq %rcx, %rcx - movq 240(%rsi), %rdx - movq %rcx, 232(%rdi) - adcq %rdx, %rdx - movq 248(%rsi), %rcx - movq %rdx, 240(%rdi) - adcq %rcx, %rcx - movq %rcx, 248(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_2048_dbl_32,.-sp_2048_dbl_32 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_sqr_64 -.type sp_4096_sqr_64,@function -.align 16 -sp_4096_sqr_64: -#else -.globl _sp_4096_sqr_64 -.p2align 4 -_sp_4096_sqr_64: -#endif /* __APPLE__ */ - subq $1304, %rsp - movq %rdi, 1280(%rsp) - movq %rsi, 1288(%rsp) - leaq 1024(%rsp), %r8 - leaq 256(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq 128(%rsi), %rdx - movq %rax, 120(%r8) - adcq 128(%r9), %rdx - movq 136(%rsi), %rax - movq %rdx, 128(%r8) - adcq 136(%r9), %rax - movq 144(%rsi), %rdx - movq %rax, 136(%r8) - adcq 144(%r9), %rdx - movq 152(%rsi), %rax - movq %rdx, 144(%r8) - adcq 152(%r9), %rax - movq 160(%rsi), %rdx - movq %rax, 152(%r8) - adcq 160(%r9), %rdx - movq 168(%rsi), %rax - movq %rdx, 160(%r8) - adcq 168(%r9), %rax - movq 176(%rsi), %rdx - movq %rax, 168(%r8) - adcq 176(%r9), %rdx - movq 184(%rsi), %rax - movq %rdx, 176(%r8) - adcq 184(%r9), %rax - movq 192(%rsi), %rdx - movq %rax, 184(%r8) - adcq 192(%r9), %rdx - movq 200(%rsi), %rax - movq %rdx, 192(%r8) - adcq 200(%r9), %rax - movq 208(%rsi), %rdx - movq %rax, 200(%r8) - adcq 208(%r9), %rdx - movq 216(%rsi), %rax - movq %rdx, 208(%r8) - adcq 216(%r9), %rax - movq 224(%rsi), %rdx - movq %rax, 216(%r8) - adcq 224(%r9), %rdx - movq 232(%rsi), %rax - movq %rdx, 224(%r8) - adcq 232(%r9), %rax - movq 240(%rsi), %rdx - movq %rax, 232(%r8) - adcq 240(%r9), %rdx - movq 248(%rsi), %rax - movq %rdx, 240(%r8) - adcq 248(%r9), %rax - movq %rax, 248(%r8) - adcq $0, %rcx - movq %rcx, 1296(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_32@plt -#else - callq _sp_2048_sqr_32 -#endif /* __APPLE__ */ - movq 1288(%rsp), %rsi - leaq 512(%rsp), %rdi - addq $256, %rsi -#ifndef __APPLE__ - callq sp_2048_sqr_32@plt -#else - callq _sp_2048_sqr_32 -#endif /* __APPLE__ */ - movq 1288(%rsp), %rsi - movq 1280(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_32@plt -#else - callq _sp_2048_sqr_32 -#endif /* __APPLE__ */ - movq 1296(%rsp), %r10 - leaq 1024(%rsp), %r8 - movq %r10, %rcx - negq %r10 - movq (%r8), %rdx - movq 8(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 512(%rdi) - movq %rax, 520(%rdi) - movq 16(%r8), %rdx - movq 24(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 528(%rdi) - movq %rax, 536(%rdi) - movq 32(%r8), %rdx - movq 40(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 544(%rdi) - movq %rax, 552(%rdi) - movq 48(%r8), %rdx - movq 56(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 560(%rdi) - movq %rax, 568(%rdi) - movq 64(%r8), %rdx - movq 72(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 576(%rdi) - movq %rax, 584(%rdi) - movq 80(%r8), %rdx - movq 88(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 592(%rdi) - movq %rax, 600(%rdi) - movq 96(%r8), %rdx - movq 104(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 608(%rdi) - movq %rax, 616(%rdi) - movq 112(%r8), %rdx - movq 120(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 624(%rdi) - movq %rax, 632(%rdi) - movq 128(%r8), %rdx - movq 136(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 640(%rdi) - movq %rax, 648(%rdi) - movq 144(%r8), %rdx - movq 152(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 656(%rdi) - movq %rax, 664(%rdi) - movq 160(%r8), %rdx - movq 168(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 672(%rdi) - movq %rax, 680(%rdi) - movq 176(%r8), %rdx - movq 184(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 688(%rdi) - movq %rax, 696(%rdi) - movq 192(%r8), %rdx - movq 200(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 704(%rdi) - movq %rax, 712(%rdi) - movq 208(%r8), %rdx - movq 216(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 720(%rdi) - movq %rax, 728(%rdi) - movq 224(%r8), %rdx - movq 232(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 736(%rdi) - movq %rax, 744(%rdi) - movq 240(%r8), %rdx - movq 248(%r8), %rax - andq %r10, %rdx - andq %r10, %rax - movq %rdx, 752(%rdi) - movq %rax, 760(%rdi) - movq 512(%rdi), %rdx - addq %rdx, %rdx - movq 520(%rdi), %rax - movq %rdx, 512(%rdi) - adcq %rax, %rax - movq 528(%rdi), %rdx - movq %rax, 520(%rdi) - adcq %rdx, %rdx - movq 536(%rdi), %rax - movq %rdx, 528(%rdi) - adcq %rax, %rax - movq 544(%rdi), %rdx - movq %rax, 536(%rdi) - adcq %rdx, %rdx - movq 552(%rdi), %rax - movq %rdx, 544(%rdi) - adcq %rax, %rax - movq 560(%rdi), %rdx - movq %rax, 552(%rdi) - adcq %rdx, %rdx - movq 568(%rdi), %rax - movq %rdx, 560(%rdi) - adcq %rax, %rax - movq 576(%rdi), %rdx - movq %rax, 568(%rdi) - adcq %rdx, %rdx - movq 584(%rdi), %rax - movq %rdx, 576(%rdi) - adcq %rax, %rax - movq 592(%rdi), %rdx - movq %rax, 584(%rdi) - adcq %rdx, %rdx - movq 600(%rdi), %rax - movq %rdx, 592(%rdi) - adcq %rax, %rax - movq 608(%rdi), %rdx - movq %rax, 600(%rdi) - adcq %rdx, %rdx - movq 616(%rdi), %rax - movq %rdx, 608(%rdi) - adcq %rax, %rax - movq 624(%rdi), %rdx - movq %rax, 616(%rdi) - adcq %rdx, %rdx - movq 632(%rdi), %rax - movq %rdx, 624(%rdi) - adcq %rax, %rax - movq 640(%rdi), %rdx - movq %rax, 632(%rdi) - adcq %rdx, %rdx - movq 648(%rdi), %rax - movq %rdx, 640(%rdi) - adcq %rax, %rax - movq 656(%rdi), %rdx - movq %rax, 648(%rdi) - adcq %rdx, %rdx - movq 664(%rdi), %rax - movq %rdx, 656(%rdi) - adcq %rax, %rax - movq 672(%rdi), %rdx - movq %rax, 664(%rdi) - adcq %rdx, %rdx - movq 680(%rdi), %rax - movq %rdx, 672(%rdi) - adcq %rax, %rax - movq 688(%rdi), %rdx - movq %rax, 680(%rdi) - adcq %rdx, %rdx - movq 696(%rdi), %rax - movq %rdx, 688(%rdi) - adcq %rax, %rax - movq 704(%rdi), %rdx - movq %rax, 696(%rdi) - adcq %rdx, %rdx - movq 712(%rdi), %rax - movq %rdx, 704(%rdi) - adcq %rax, %rax - movq 720(%rdi), %rdx - movq %rax, 712(%rdi) - adcq %rdx, %rdx - movq 728(%rdi), %rax - movq %rdx, 720(%rdi) - adcq %rax, %rax - movq 736(%rdi), %rdx - movq %rax, 728(%rdi) - adcq %rdx, %rdx - movq 744(%rdi), %rax - movq %rdx, 736(%rdi) - adcq %rax, %rax - movq 752(%rdi), %rdx - movq %rax, 744(%rdi) - adcq %rdx, %rdx - movq 760(%rdi), %rax - movq %rdx, 752(%rdi) - adcq %rax, %rax - movq %rax, 760(%rdi) - adcq $0, %rcx - leaq 512(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rsi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rsi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rsi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rsi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rsi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rsi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rsi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rsi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rsi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rsi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rsi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rsi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rsi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rsi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rsi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rsi), %rax - movq 384(%r8), %rdx - movq %rax, 376(%r8) - sbbq 384(%rsi), %rdx - movq 392(%r8), %rax - movq %rdx, 384(%r8) - sbbq 392(%rsi), %rax - movq 400(%r8), %rdx - movq %rax, 392(%r8) - sbbq 400(%rsi), %rdx - movq 408(%r8), %rax - movq %rdx, 400(%r8) - sbbq 408(%rsi), %rax - movq 416(%r8), %rdx - movq %rax, 408(%r8) - sbbq 416(%rsi), %rdx - movq 424(%r8), %rax - movq %rdx, 416(%r8) - sbbq 424(%rsi), %rax - movq 432(%r8), %rdx - movq %rax, 424(%r8) - sbbq 432(%rsi), %rdx - movq 440(%r8), %rax - movq %rdx, 432(%r8) - sbbq 440(%rsi), %rax - movq 448(%r8), %rdx - movq %rax, 440(%r8) - sbbq 448(%rsi), %rdx - movq 456(%r8), %rax - movq %rdx, 448(%r8) - sbbq 456(%rsi), %rax - movq 464(%r8), %rdx - movq %rax, 456(%r8) - sbbq 464(%rsi), %rdx - movq 472(%r8), %rax - movq %rdx, 464(%r8) - sbbq 472(%rsi), %rax - movq 480(%r8), %rdx - movq %rax, 472(%r8) - sbbq 480(%rsi), %rdx - movq 488(%r8), %rax - movq %rdx, 480(%r8) - sbbq 488(%rsi), %rax - movq 496(%r8), %rdx - movq %rax, 488(%r8) - sbbq 496(%rsi), %rdx - movq 504(%r8), %rax - movq %rdx, 496(%r8) - sbbq 504(%rsi), %rax - movq %rax, 504(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rdi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rdi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rdi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rdi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rdi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rdi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rdi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rdi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rdi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rdi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rdi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rdi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rdi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rdi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rdi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rdi), %rax - movq 384(%r8), %rdx - movq %rax, 376(%r8) - sbbq 384(%rdi), %rdx - movq 392(%r8), %rax - movq %rdx, 384(%r8) - sbbq 392(%rdi), %rax - movq 400(%r8), %rdx - movq %rax, 392(%r8) - sbbq 400(%rdi), %rdx - movq 408(%r8), %rax - movq %rdx, 400(%r8) - sbbq 408(%rdi), %rax - movq 416(%r8), %rdx - movq %rax, 408(%r8) - sbbq 416(%rdi), %rdx - movq 424(%r8), %rax - movq %rdx, 416(%r8) - sbbq 424(%rdi), %rax - movq 432(%r8), %rdx - movq %rax, 424(%r8) - sbbq 432(%rdi), %rdx - movq 440(%r8), %rax - movq %rdx, 432(%r8) - sbbq 440(%rdi), %rax - movq 448(%r8), %rdx - movq %rax, 440(%r8) - sbbq 448(%rdi), %rdx - movq 456(%r8), %rax - movq %rdx, 448(%r8) - sbbq 456(%rdi), %rax - movq 464(%r8), %rdx - movq %rax, 456(%r8) - sbbq 464(%rdi), %rdx - movq 472(%r8), %rax - movq %rdx, 464(%r8) - sbbq 472(%rdi), %rax - movq 480(%r8), %rdx - movq %rax, 472(%r8) - sbbq 480(%rdi), %rdx - movq 488(%r8), %rax - movq %rdx, 480(%r8) - sbbq 488(%rdi), %rax - movq 496(%r8), %rdx - movq %rax, 488(%r8) - sbbq 496(%rdi), %rdx - movq 504(%r8), %rax - movq %rdx, 496(%r8) - sbbq 504(%rdi), %rax - movq %rax, 504(%r8) - sbbq $0, %rcx - # Add in place - movq 256(%rdi), %rdx - addq (%r8), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 8(%r8), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 16(%r8), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 24(%r8), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 32(%r8), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 40(%r8), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 48(%r8), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 56(%r8), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 64(%r8), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 72(%r8), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 80(%r8), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 88(%r8), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 96(%r8), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 104(%r8), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 112(%r8), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 120(%r8), %rax - movq 384(%rdi), %rdx - movq %rax, 376(%rdi) - adcq 128(%r8), %rdx - movq 392(%rdi), %rax - movq %rdx, 384(%rdi) - adcq 136(%r8), %rax - movq 400(%rdi), %rdx - movq %rax, 392(%rdi) - adcq 144(%r8), %rdx - movq 408(%rdi), %rax - movq %rdx, 400(%rdi) - adcq 152(%r8), %rax - movq 416(%rdi), %rdx - movq %rax, 408(%rdi) - adcq 160(%r8), %rdx - movq 424(%rdi), %rax - movq %rdx, 416(%rdi) - adcq 168(%r8), %rax - movq 432(%rdi), %rdx - movq %rax, 424(%rdi) - adcq 176(%r8), %rdx - movq 440(%rdi), %rax - movq %rdx, 432(%rdi) - adcq 184(%r8), %rax - movq 448(%rdi), %rdx - movq %rax, 440(%rdi) - adcq 192(%r8), %rdx - movq 456(%rdi), %rax - movq %rdx, 448(%rdi) - adcq 200(%r8), %rax - movq 464(%rdi), %rdx - movq %rax, 456(%rdi) - adcq 208(%r8), %rdx - movq 472(%rdi), %rax - movq %rdx, 464(%rdi) - adcq 216(%r8), %rax - movq 480(%rdi), %rdx - movq %rax, 472(%rdi) - adcq 224(%r8), %rdx - movq 488(%rdi), %rax - movq %rdx, 480(%rdi) - adcq 232(%r8), %rax - movq 496(%rdi), %rdx - movq %rax, 488(%rdi) - adcq 240(%r8), %rdx - movq 504(%rdi), %rax - movq %rdx, 496(%rdi) - adcq 248(%r8), %rax - movq 512(%rdi), %rdx - movq %rax, 504(%rdi) - adcq 256(%r8), %rdx - movq 520(%rdi), %rax - movq %rdx, 512(%rdi) - adcq 264(%r8), %rax - movq 528(%rdi), %rdx - movq %rax, 520(%rdi) - adcq 272(%r8), %rdx - movq 536(%rdi), %rax - movq %rdx, 528(%rdi) - adcq 280(%r8), %rax - movq 544(%rdi), %rdx - movq %rax, 536(%rdi) - adcq 288(%r8), %rdx - movq 552(%rdi), %rax - movq %rdx, 544(%rdi) - adcq 296(%r8), %rax - movq 560(%rdi), %rdx - movq %rax, 552(%rdi) - adcq 304(%r8), %rdx - movq 568(%rdi), %rax - movq %rdx, 560(%rdi) - adcq 312(%r8), %rax - movq 576(%rdi), %rdx - movq %rax, 568(%rdi) - adcq 320(%r8), %rdx - movq 584(%rdi), %rax - movq %rdx, 576(%rdi) - adcq 328(%r8), %rax - movq 592(%rdi), %rdx - movq %rax, 584(%rdi) - adcq 336(%r8), %rdx - movq 600(%rdi), %rax - movq %rdx, 592(%rdi) - adcq 344(%r8), %rax - movq 608(%rdi), %rdx - movq %rax, 600(%rdi) - adcq 352(%r8), %rdx - movq 616(%rdi), %rax - movq %rdx, 608(%rdi) - adcq 360(%r8), %rax - movq 624(%rdi), %rdx - movq %rax, 616(%rdi) - adcq 368(%r8), %rdx - movq 632(%rdi), %rax - movq %rdx, 624(%rdi) - adcq 376(%r8), %rax - movq 640(%rdi), %rdx - movq %rax, 632(%rdi) - adcq 384(%r8), %rdx - movq 648(%rdi), %rax - movq %rdx, 640(%rdi) - adcq 392(%r8), %rax - movq 656(%rdi), %rdx - movq %rax, 648(%rdi) - adcq 400(%r8), %rdx - movq 664(%rdi), %rax - movq %rdx, 656(%rdi) - adcq 408(%r8), %rax - movq 672(%rdi), %rdx - movq %rax, 664(%rdi) - adcq 416(%r8), %rdx - movq 680(%rdi), %rax - movq %rdx, 672(%rdi) - adcq 424(%r8), %rax - movq 688(%rdi), %rdx - movq %rax, 680(%rdi) - adcq 432(%r8), %rdx - movq 696(%rdi), %rax - movq %rdx, 688(%rdi) - adcq 440(%r8), %rax - movq 704(%rdi), %rdx - movq %rax, 696(%rdi) - adcq 448(%r8), %rdx - movq 712(%rdi), %rax - movq %rdx, 704(%rdi) - adcq 456(%r8), %rax - movq 720(%rdi), %rdx - movq %rax, 712(%rdi) - adcq 464(%r8), %rdx - movq 728(%rdi), %rax - movq %rdx, 720(%rdi) - adcq 472(%r8), %rax - movq 736(%rdi), %rdx - movq %rax, 728(%rdi) - adcq 480(%r8), %rdx - movq 744(%rdi), %rax - movq %rdx, 736(%rdi) - adcq 488(%r8), %rax - movq 752(%rdi), %rdx - movq %rax, 744(%rdi) - adcq 496(%r8), %rdx - movq 760(%rdi), %rax - movq %rdx, 752(%rdi) - adcq 504(%r8), %rax - movq %rax, 760(%rdi) - adcq $0, %rcx - movq %rcx, 768(%rdi) - # Add in place - movq 512(%rdi), %rdx - xorq %rcx, %rcx - addq (%rsi), %rdx - movq 520(%rdi), %rax - movq %rdx, 512(%rdi) - adcq 8(%rsi), %rax - movq 528(%rdi), %rdx - movq %rax, 520(%rdi) - adcq 16(%rsi), %rdx - movq 536(%rdi), %rax - movq %rdx, 528(%rdi) - adcq 24(%rsi), %rax - movq 544(%rdi), %rdx - movq %rax, 536(%rdi) - adcq 32(%rsi), %rdx - movq 552(%rdi), %rax - movq %rdx, 544(%rdi) - adcq 40(%rsi), %rax - movq 560(%rdi), %rdx - movq %rax, 552(%rdi) - adcq 48(%rsi), %rdx - movq 568(%rdi), %rax - movq %rdx, 560(%rdi) - adcq 56(%rsi), %rax - movq 576(%rdi), %rdx - movq %rax, 568(%rdi) - adcq 64(%rsi), %rdx - movq 584(%rdi), %rax - movq %rdx, 576(%rdi) - adcq 72(%rsi), %rax - movq 592(%rdi), %rdx - movq %rax, 584(%rdi) - adcq 80(%rsi), %rdx - movq 600(%rdi), %rax - movq %rdx, 592(%rdi) - adcq 88(%rsi), %rax - movq 608(%rdi), %rdx - movq %rax, 600(%rdi) - adcq 96(%rsi), %rdx - movq 616(%rdi), %rax - movq %rdx, 608(%rdi) - adcq 104(%rsi), %rax - movq 624(%rdi), %rdx - movq %rax, 616(%rdi) - adcq 112(%rsi), %rdx - movq 632(%rdi), %rax - movq %rdx, 624(%rdi) - adcq 120(%rsi), %rax - movq 640(%rdi), %rdx - movq %rax, 632(%rdi) - adcq 128(%rsi), %rdx - movq 648(%rdi), %rax - movq %rdx, 640(%rdi) - adcq 136(%rsi), %rax - movq 656(%rdi), %rdx - movq %rax, 648(%rdi) - adcq 144(%rsi), %rdx - movq 664(%rdi), %rax - movq %rdx, 656(%rdi) - adcq 152(%rsi), %rax - movq 672(%rdi), %rdx - movq %rax, 664(%rdi) - adcq 160(%rsi), %rdx - movq 680(%rdi), %rax - movq %rdx, 672(%rdi) - adcq 168(%rsi), %rax - movq 688(%rdi), %rdx - movq %rax, 680(%rdi) - adcq 176(%rsi), %rdx - movq 696(%rdi), %rax - movq %rdx, 688(%rdi) - adcq 184(%rsi), %rax - movq 704(%rdi), %rdx - movq %rax, 696(%rdi) - adcq 192(%rsi), %rdx - movq 712(%rdi), %rax - movq %rdx, 704(%rdi) - adcq 200(%rsi), %rax - movq 720(%rdi), %rdx - movq %rax, 712(%rdi) - adcq 208(%rsi), %rdx - movq 728(%rdi), %rax - movq %rdx, 720(%rdi) - adcq 216(%rsi), %rax - movq 736(%rdi), %rdx - movq %rax, 728(%rdi) - adcq 224(%rsi), %rdx - movq 744(%rdi), %rax - movq %rdx, 736(%rdi) - adcq 232(%rsi), %rax - movq 752(%rdi), %rdx - movq %rax, 744(%rdi) - adcq 240(%rsi), %rdx - movq 760(%rdi), %rax - movq %rdx, 752(%rdi) - adcq 248(%rsi), %rax - movq 768(%rdi), %rdx - movq %rax, 760(%rdi) - adcq 256(%rsi), %rdx - movq %rdx, 768(%rdi) - adcq $0, %rcx - # Add to zero - movq 264(%rsi), %rdx - adcq $0, %rdx - movq 272(%rsi), %rax - movq %rdx, 776(%rdi) - adcq $0, %rax - movq 280(%rsi), %rdx - movq %rax, 784(%rdi) - adcq $0, %rdx - movq 288(%rsi), %rax - movq %rdx, 792(%rdi) - adcq $0, %rax - movq 296(%rsi), %rdx - movq %rax, 800(%rdi) - adcq $0, %rdx - movq 304(%rsi), %rax - movq %rdx, 808(%rdi) - adcq $0, %rax - movq 312(%rsi), %rdx - movq %rax, 816(%rdi) - adcq $0, %rdx - movq 320(%rsi), %rax - movq %rdx, 824(%rdi) - adcq $0, %rax - movq 328(%rsi), %rdx - movq %rax, 832(%rdi) - adcq $0, %rdx - movq 336(%rsi), %rax - movq %rdx, 840(%rdi) - adcq $0, %rax - movq 344(%rsi), %rdx - movq %rax, 848(%rdi) - adcq $0, %rdx - movq 352(%rsi), %rax - movq %rdx, 856(%rdi) - adcq $0, %rax - movq 360(%rsi), %rdx - movq %rax, 864(%rdi) - adcq $0, %rdx - movq 368(%rsi), %rax - movq %rdx, 872(%rdi) - adcq $0, %rax - movq 376(%rsi), %rdx - movq %rax, 880(%rdi) - adcq $0, %rdx - movq 384(%rsi), %rax - movq %rdx, 888(%rdi) - adcq $0, %rax - movq 392(%rsi), %rdx - movq %rax, 896(%rdi) - adcq $0, %rdx - movq 400(%rsi), %rax - movq %rdx, 904(%rdi) - adcq $0, %rax - movq 408(%rsi), %rdx - movq %rax, 912(%rdi) - adcq $0, %rdx - movq 416(%rsi), %rax - movq %rdx, 920(%rdi) - adcq $0, %rax - movq 424(%rsi), %rdx - movq %rax, 928(%rdi) - adcq $0, %rdx - movq 432(%rsi), %rax - movq %rdx, 936(%rdi) - adcq $0, %rax - movq 440(%rsi), %rdx - movq %rax, 944(%rdi) - adcq $0, %rdx - movq 448(%rsi), %rax - movq %rdx, 952(%rdi) - adcq $0, %rax - movq 456(%rsi), %rdx - movq %rax, 960(%rdi) - adcq $0, %rdx - movq 464(%rsi), %rax - movq %rdx, 968(%rdi) - adcq $0, %rax - movq 472(%rsi), %rdx - movq %rax, 976(%rdi) - adcq $0, %rdx - movq 480(%rsi), %rax - movq %rdx, 984(%rdi) - adcq $0, %rax - movq 488(%rsi), %rdx - movq %rax, 992(%rdi) - adcq $0, %rdx - movq 496(%rsi), %rax - movq %rdx, 1000(%rdi) - adcq $0, %rax - movq 504(%rsi), %rdx - movq %rax, 1008(%rdi) - adcq $0, %rdx - movq %rdx, 1016(%rdi) - addq $1304, %rsp - repz retq -#ifndef __APPLE__ -.size sp_4096_sqr_64,.-sp_4096_sqr_64 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_mul_avx2_64 -.type sp_4096_mul_avx2_64,@function -.align 16 -sp_4096_mul_avx2_64: -#else -.globl _sp_4096_mul_avx2_64 -.p2align 4 -_sp_4096_mul_avx2_64: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - subq $1576, %rsp - movq %rdi, 1536(%rsp) - movq %rsi, 1544(%rsp) - movq %rdx, 1552(%rsp) - leaq 1024(%rsp), %r10 - leaq 256(%rsi), %r12 - # Add - movq (%rsi), %rax - xorq %r13, %r13 - addq (%r12), %rax - movq 8(%rsi), %rcx - movq %rax, (%r10) - adcq 8(%r12), %rcx - movq 16(%rsi), %r8 - movq %rcx, 8(%r10) - adcq 16(%r12), %r8 - movq 24(%rsi), %rax - movq %r8, 16(%r10) - adcq 24(%r12), %rax - movq 32(%rsi), %rcx - movq %rax, 24(%r10) - adcq 32(%r12), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%r10) - adcq 40(%r12), %r8 - movq 48(%rsi), %rax - movq %r8, 40(%r10) - adcq 48(%r12), %rax - movq 56(%rsi), %rcx - movq %rax, 48(%r10) - adcq 56(%r12), %rcx - movq 64(%rsi), %r8 - movq %rcx, 56(%r10) - adcq 64(%r12), %r8 - movq 72(%rsi), %rax - movq %r8, 64(%r10) - adcq 72(%r12), %rax - movq 80(%rsi), %rcx - movq %rax, 72(%r10) - adcq 80(%r12), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%r10) - adcq 88(%r12), %r8 - movq 96(%rsi), %rax - movq %r8, 88(%r10) - adcq 96(%r12), %rax - movq 104(%rsi), %rcx - movq %rax, 96(%r10) - adcq 104(%r12), %rcx - movq 112(%rsi), %r8 - movq %rcx, 104(%r10) - adcq 112(%r12), %r8 - movq 120(%rsi), %rax - movq %r8, 112(%r10) - adcq 120(%r12), %rax - movq 128(%rsi), %rcx - movq %rax, 120(%r10) - adcq 128(%r12), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%r10) - adcq 136(%r12), %r8 - movq 144(%rsi), %rax - movq %r8, 136(%r10) - adcq 144(%r12), %rax - movq 152(%rsi), %rcx - movq %rax, 144(%r10) - adcq 152(%r12), %rcx - movq 160(%rsi), %r8 - movq %rcx, 152(%r10) - adcq 160(%r12), %r8 - movq 168(%rsi), %rax - movq %r8, 160(%r10) - adcq 168(%r12), %rax - movq 176(%rsi), %rcx - movq %rax, 168(%r10) - adcq 176(%r12), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%r10) - adcq 184(%r12), %r8 - movq 192(%rsi), %rax - movq %r8, 184(%r10) - adcq 192(%r12), %rax - movq 200(%rsi), %rcx - movq %rax, 192(%r10) - adcq 200(%r12), %rcx - movq 208(%rsi), %r8 - movq %rcx, 200(%r10) - adcq 208(%r12), %r8 - movq 216(%rsi), %rax - movq %r8, 208(%r10) - adcq 216(%r12), %rax - movq 224(%rsi), %rcx - movq %rax, 216(%r10) - adcq 224(%r12), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%r10) - adcq 232(%r12), %r8 - movq 240(%rsi), %rax - movq %r8, 232(%r10) - adcq 240(%r12), %rax - movq 248(%rsi), %rcx - movq %rax, 240(%r10) - adcq 248(%r12), %rcx - movq %rcx, 248(%r10) - adcq $0, %r13 - movq %r13, 1560(%rsp) - leaq 1280(%rsp), %r11 - leaq 256(%rdx), %r12 - # Add - movq (%rdx), %rax - xorq %r14, %r14 - addq (%r12), %rax - movq 8(%rdx), %rcx - movq %rax, (%r11) - adcq 8(%r12), %rcx - movq 16(%rdx), %r8 - movq %rcx, 8(%r11) - adcq 16(%r12), %r8 - movq 24(%rdx), %rax - movq %r8, 16(%r11) - adcq 24(%r12), %rax - movq 32(%rdx), %rcx - movq %rax, 24(%r11) - adcq 32(%r12), %rcx - movq 40(%rdx), %r8 - movq %rcx, 32(%r11) - adcq 40(%r12), %r8 - movq 48(%rdx), %rax - movq %r8, 40(%r11) - adcq 48(%r12), %rax - movq 56(%rdx), %rcx - movq %rax, 48(%r11) - adcq 56(%r12), %rcx - movq 64(%rdx), %r8 - movq %rcx, 56(%r11) - adcq 64(%r12), %r8 - movq 72(%rdx), %rax - movq %r8, 64(%r11) - adcq 72(%r12), %rax - movq 80(%rdx), %rcx - movq %rax, 72(%r11) - adcq 80(%r12), %rcx - movq 88(%rdx), %r8 - movq %rcx, 80(%r11) - adcq 88(%r12), %r8 - movq 96(%rdx), %rax - movq %r8, 88(%r11) - adcq 96(%r12), %rax - movq 104(%rdx), %rcx - movq %rax, 96(%r11) - adcq 104(%r12), %rcx - movq 112(%rdx), %r8 - movq %rcx, 104(%r11) - adcq 112(%r12), %r8 - movq 120(%rdx), %rax - movq %r8, 112(%r11) - adcq 120(%r12), %rax - movq 128(%rdx), %rcx - movq %rax, 120(%r11) - adcq 128(%r12), %rcx - movq 136(%rdx), %r8 - movq %rcx, 128(%r11) - adcq 136(%r12), %r8 - movq 144(%rdx), %rax - movq %r8, 136(%r11) - adcq 144(%r12), %rax - movq 152(%rdx), %rcx - movq %rax, 144(%r11) - adcq 152(%r12), %rcx - movq 160(%rdx), %r8 - movq %rcx, 152(%r11) - adcq 160(%r12), %r8 - movq 168(%rdx), %rax - movq %r8, 160(%r11) - adcq 168(%r12), %rax - movq 176(%rdx), %rcx - movq %rax, 168(%r11) - adcq 176(%r12), %rcx - movq 184(%rdx), %r8 - movq %rcx, 176(%r11) - adcq 184(%r12), %r8 - movq 192(%rdx), %rax - movq %r8, 184(%r11) - adcq 192(%r12), %rax - movq 200(%rdx), %rcx - movq %rax, 192(%r11) - adcq 200(%r12), %rcx - movq 208(%rdx), %r8 - movq %rcx, 200(%r11) - adcq 208(%r12), %r8 - movq 216(%rdx), %rax - movq %r8, 208(%r11) - adcq 216(%r12), %rax - movq 224(%rdx), %rcx - movq %rax, 216(%r11) - adcq 224(%r12), %rcx - movq 232(%rdx), %r8 - movq %rcx, 224(%r11) - adcq 232(%r12), %r8 - movq 240(%rdx), %rax - movq %r8, 232(%r11) - adcq 240(%r12), %rax - movq 248(%rdx), %rcx - movq %rax, 240(%r11) - adcq 248(%r12), %rcx - movq %rcx, 248(%r11) - adcq $0, %r14 - movq %r14, 1568(%rsp) - movq %r11, %rdx - movq %r10, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_32@plt -#else - callq _sp_2048_mul_avx2_32 -#endif /* __APPLE__ */ - movq 1552(%rsp), %rdx - movq 1544(%rsp), %rsi - leaq 512(%rsp), %rdi - addq $256, %rdx - addq $256, %rsi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_32@plt -#else - callq _sp_2048_mul_avx2_32 -#endif /* __APPLE__ */ - movq 1552(%rsp), %rdx - movq 1544(%rsp), %rsi - movq 1536(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_mul_avx2_32@plt -#else - callq _sp_2048_mul_avx2_32 -#endif /* __APPLE__ */ - movq 1560(%rsp), %r13 - movq 1568(%rsp), %r14 - movq 1536(%rsp), %r15 - movq %r13, %r9 - leaq 1024(%rsp), %r10 - leaq 1280(%rsp), %r11 - andq %r14, %r9 - negq %r13 - negq %r14 - addq $512, %r15 - movq (%r10), %rax - movq (%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - addq %rcx, %rax - movq 8(%r10), %rcx - movq 8(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, (%r15) - adcq %r8, %rcx - movq 16(%r10), %r8 - movq 16(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 8(%r15) - adcq %rax, %r8 - movq 24(%r10), %rax - movq 24(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 16(%r15) - adcq %rcx, %rax - movq 32(%r10), %rcx - movq 32(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 24(%r15) - adcq %r8, %rcx - movq 40(%r10), %r8 - movq 40(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 32(%r15) - adcq %rax, %r8 - movq 48(%r10), %rax - movq 48(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 40(%r15) - adcq %rcx, %rax - movq 56(%r10), %rcx - movq 56(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 48(%r15) - adcq %r8, %rcx - movq 64(%r10), %r8 - movq 64(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 56(%r15) - adcq %rax, %r8 - movq 72(%r10), %rax - movq 72(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 64(%r15) - adcq %rcx, %rax - movq 80(%r10), %rcx - movq 80(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 72(%r15) - adcq %r8, %rcx - movq 88(%r10), %r8 - movq 88(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 80(%r15) - adcq %rax, %r8 - movq 96(%r10), %rax - movq 96(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 88(%r15) - adcq %rcx, %rax - movq 104(%r10), %rcx - movq 104(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 96(%r15) - adcq %r8, %rcx - movq 112(%r10), %r8 - movq 112(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 104(%r15) - adcq %rax, %r8 - movq 120(%r10), %rax - movq 120(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 112(%r15) - adcq %rcx, %rax - movq 128(%r10), %rcx - movq 128(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 120(%r15) - adcq %r8, %rcx - movq 136(%r10), %r8 - movq 136(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 128(%r15) - adcq %rax, %r8 - movq 144(%r10), %rax - movq 144(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 136(%r15) - adcq %rcx, %rax - movq 152(%r10), %rcx - movq 152(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 144(%r15) - adcq %r8, %rcx - movq 160(%r10), %r8 - movq 160(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 152(%r15) - adcq %rax, %r8 - movq 168(%r10), %rax - movq 168(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 160(%r15) - adcq %rcx, %rax - movq 176(%r10), %rcx - movq 176(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 168(%r15) - adcq %r8, %rcx - movq 184(%r10), %r8 - movq 184(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 176(%r15) - adcq %rax, %r8 - movq 192(%r10), %rax - movq 192(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 184(%r15) - adcq %rcx, %rax - movq 200(%r10), %rcx - movq 200(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 192(%r15) - adcq %r8, %rcx - movq 208(%r10), %r8 - movq 208(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 200(%r15) - adcq %rax, %r8 - movq 216(%r10), %rax - movq 216(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 208(%r15) - adcq %rcx, %rax - movq 224(%r10), %rcx - movq 224(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 216(%r15) - adcq %r8, %rcx - movq 232(%r10), %r8 - movq 232(%r11), %rax - pextq %r14, %r8, %r8 - pextq %r13, %rax, %rax - movq %rcx, 224(%r15) - adcq %rax, %r8 - movq 240(%r10), %rax - movq 240(%r11), %rcx - pextq %r14, %rax, %rax - pextq %r13, %rcx, %rcx - movq %r8, 232(%r15) - adcq %rcx, %rax - movq 248(%r10), %rcx - movq 248(%r11), %r8 - pextq %r14, %rcx, %rcx - pextq %r13, %r8, %r8 - movq %rax, 240(%r15) - adcq %r8, %rcx - movq %rcx, 248(%r15) - adcq $0, %r9 - leaq 512(%rsp), %r11 - movq %rsp, %r10 - movq (%r10), %rax - subq (%r11), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%r11), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%r11), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%r11), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%r11), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%r11), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%r11), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%r11), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%r11), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%r11), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%r11), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%r11), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%r11), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%r11), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%r11), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%r11), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%r11), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%r11), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%r11), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%r11), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%r11), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%r11), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%r11), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%r11), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%r11), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%r11), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%r11), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%r11), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%r11), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%r11), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%r11), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%r11), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%r11), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%r11), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%r11), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%r11), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%r11), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%r11), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%r11), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%r11), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%r11), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%r11), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%r11), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%r11), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%r11), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%r11), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%r11), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%r11), %r8 - movq 384(%r10), %rax - movq %r8, 376(%r10) - sbbq 384(%r11), %rax - movq 392(%r10), %rcx - movq %rax, 384(%r10) - sbbq 392(%r11), %rcx - movq 400(%r10), %r8 - movq %rcx, 392(%r10) - sbbq 400(%r11), %r8 - movq 408(%r10), %rax - movq %r8, 400(%r10) - sbbq 408(%r11), %rax - movq 416(%r10), %rcx - movq %rax, 408(%r10) - sbbq 416(%r11), %rcx - movq 424(%r10), %r8 - movq %rcx, 416(%r10) - sbbq 424(%r11), %r8 - movq 432(%r10), %rax - movq %r8, 424(%r10) - sbbq 432(%r11), %rax - movq 440(%r10), %rcx - movq %rax, 432(%r10) - sbbq 440(%r11), %rcx - movq 448(%r10), %r8 - movq %rcx, 440(%r10) - sbbq 448(%r11), %r8 - movq 456(%r10), %rax - movq %r8, 448(%r10) - sbbq 456(%r11), %rax - movq 464(%r10), %rcx - movq %rax, 456(%r10) - sbbq 464(%r11), %rcx - movq 472(%r10), %r8 - movq %rcx, 464(%r10) - sbbq 472(%r11), %r8 - movq 480(%r10), %rax - movq %r8, 472(%r10) - sbbq 480(%r11), %rax - movq 488(%r10), %rcx - movq %rax, 480(%r10) - sbbq 488(%r11), %rcx - movq 496(%r10), %r8 - movq %rcx, 488(%r10) - sbbq 496(%r11), %r8 - movq 504(%r10), %rax - movq %r8, 496(%r10) - sbbq 504(%r11), %rax - movq %rax, 504(%r10) - sbbq $0, %r9 - movq (%r10), %rax - subq (%rdi), %rax - movq 8(%r10), %rcx - movq %rax, (%r10) - sbbq 8(%rdi), %rcx - movq 16(%r10), %r8 - movq %rcx, 8(%r10) - sbbq 16(%rdi), %r8 - movq 24(%r10), %rax - movq %r8, 16(%r10) - sbbq 24(%rdi), %rax - movq 32(%r10), %rcx - movq %rax, 24(%r10) - sbbq 32(%rdi), %rcx - movq 40(%r10), %r8 - movq %rcx, 32(%r10) - sbbq 40(%rdi), %r8 - movq 48(%r10), %rax - movq %r8, 40(%r10) - sbbq 48(%rdi), %rax - movq 56(%r10), %rcx - movq %rax, 48(%r10) - sbbq 56(%rdi), %rcx - movq 64(%r10), %r8 - movq %rcx, 56(%r10) - sbbq 64(%rdi), %r8 - movq 72(%r10), %rax - movq %r8, 64(%r10) - sbbq 72(%rdi), %rax - movq 80(%r10), %rcx - movq %rax, 72(%r10) - sbbq 80(%rdi), %rcx - movq 88(%r10), %r8 - movq %rcx, 80(%r10) - sbbq 88(%rdi), %r8 - movq 96(%r10), %rax - movq %r8, 88(%r10) - sbbq 96(%rdi), %rax - movq 104(%r10), %rcx - movq %rax, 96(%r10) - sbbq 104(%rdi), %rcx - movq 112(%r10), %r8 - movq %rcx, 104(%r10) - sbbq 112(%rdi), %r8 - movq 120(%r10), %rax - movq %r8, 112(%r10) - sbbq 120(%rdi), %rax - movq 128(%r10), %rcx - movq %rax, 120(%r10) - sbbq 128(%rdi), %rcx - movq 136(%r10), %r8 - movq %rcx, 128(%r10) - sbbq 136(%rdi), %r8 - movq 144(%r10), %rax - movq %r8, 136(%r10) - sbbq 144(%rdi), %rax - movq 152(%r10), %rcx - movq %rax, 144(%r10) - sbbq 152(%rdi), %rcx - movq 160(%r10), %r8 - movq %rcx, 152(%r10) - sbbq 160(%rdi), %r8 - movq 168(%r10), %rax - movq %r8, 160(%r10) - sbbq 168(%rdi), %rax - movq 176(%r10), %rcx - movq %rax, 168(%r10) - sbbq 176(%rdi), %rcx - movq 184(%r10), %r8 - movq %rcx, 176(%r10) - sbbq 184(%rdi), %r8 - movq 192(%r10), %rax - movq %r8, 184(%r10) - sbbq 192(%rdi), %rax - movq 200(%r10), %rcx - movq %rax, 192(%r10) - sbbq 200(%rdi), %rcx - movq 208(%r10), %r8 - movq %rcx, 200(%r10) - sbbq 208(%rdi), %r8 - movq 216(%r10), %rax - movq %r8, 208(%r10) - sbbq 216(%rdi), %rax - movq 224(%r10), %rcx - movq %rax, 216(%r10) - sbbq 224(%rdi), %rcx - movq 232(%r10), %r8 - movq %rcx, 224(%r10) - sbbq 232(%rdi), %r8 - movq 240(%r10), %rax - movq %r8, 232(%r10) - sbbq 240(%rdi), %rax - movq 248(%r10), %rcx - movq %rax, 240(%r10) - sbbq 248(%rdi), %rcx - movq 256(%r10), %r8 - movq %rcx, 248(%r10) - sbbq 256(%rdi), %r8 - movq 264(%r10), %rax - movq %r8, 256(%r10) - sbbq 264(%rdi), %rax - movq 272(%r10), %rcx - movq %rax, 264(%r10) - sbbq 272(%rdi), %rcx - movq 280(%r10), %r8 - movq %rcx, 272(%r10) - sbbq 280(%rdi), %r8 - movq 288(%r10), %rax - movq %r8, 280(%r10) - sbbq 288(%rdi), %rax - movq 296(%r10), %rcx - movq %rax, 288(%r10) - sbbq 296(%rdi), %rcx - movq 304(%r10), %r8 - movq %rcx, 296(%r10) - sbbq 304(%rdi), %r8 - movq 312(%r10), %rax - movq %r8, 304(%r10) - sbbq 312(%rdi), %rax - movq 320(%r10), %rcx - movq %rax, 312(%r10) - sbbq 320(%rdi), %rcx - movq 328(%r10), %r8 - movq %rcx, 320(%r10) - sbbq 328(%rdi), %r8 - movq 336(%r10), %rax - movq %r8, 328(%r10) - sbbq 336(%rdi), %rax - movq 344(%r10), %rcx - movq %rax, 336(%r10) - sbbq 344(%rdi), %rcx - movq 352(%r10), %r8 - movq %rcx, 344(%r10) - sbbq 352(%rdi), %r8 - movq 360(%r10), %rax - movq %r8, 352(%r10) - sbbq 360(%rdi), %rax - movq 368(%r10), %rcx - movq %rax, 360(%r10) - sbbq 368(%rdi), %rcx - movq 376(%r10), %r8 - movq %rcx, 368(%r10) - sbbq 376(%rdi), %r8 - movq 384(%r10), %rax - movq %r8, 376(%r10) - sbbq 384(%rdi), %rax - movq 392(%r10), %rcx - movq %rax, 384(%r10) - sbbq 392(%rdi), %rcx - movq 400(%r10), %r8 - movq %rcx, 392(%r10) - sbbq 400(%rdi), %r8 - movq 408(%r10), %rax - movq %r8, 400(%r10) - sbbq 408(%rdi), %rax - movq 416(%r10), %rcx - movq %rax, 408(%r10) - sbbq 416(%rdi), %rcx - movq 424(%r10), %r8 - movq %rcx, 416(%r10) - sbbq 424(%rdi), %r8 - movq 432(%r10), %rax - movq %r8, 424(%r10) - sbbq 432(%rdi), %rax - movq 440(%r10), %rcx - movq %rax, 432(%r10) - sbbq 440(%rdi), %rcx - movq 448(%r10), %r8 - movq %rcx, 440(%r10) - sbbq 448(%rdi), %r8 - movq 456(%r10), %rax - movq %r8, 448(%r10) - sbbq 456(%rdi), %rax - movq 464(%r10), %rcx - movq %rax, 456(%r10) - sbbq 464(%rdi), %rcx - movq 472(%r10), %r8 - movq %rcx, 464(%r10) - sbbq 472(%rdi), %r8 - movq 480(%r10), %rax - movq %r8, 472(%r10) - sbbq 480(%rdi), %rax - movq 488(%r10), %rcx - movq %rax, 480(%r10) - sbbq 488(%rdi), %rcx - movq 496(%r10), %r8 - movq %rcx, 488(%r10) - sbbq 496(%rdi), %r8 - movq 504(%r10), %rax - movq %r8, 496(%r10) - sbbq 504(%rdi), %rax - movq %rax, 504(%r10) - sbbq $0, %r9 - subq $256, %r15 - # Add - movq (%r15), %rax - addq (%r10), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r10), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r10), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r10), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r10), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r10), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r10), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r10), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r10), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r10), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r10), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r10), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r10), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r10), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r10), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r10), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r10), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r10), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r10), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r10), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r10), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r10), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r10), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r10), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r10), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r10), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r10), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r10), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r10), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r10), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r10), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r10), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r10), %r8 - movq 264(%r15), %rax - movq %r8, 256(%r15) - adcq 264(%r10), %rax - movq 272(%r15), %rcx - movq %rax, 264(%r15) - adcq 272(%r10), %rcx - movq 280(%r15), %r8 - movq %rcx, 272(%r15) - adcq 280(%r10), %r8 - movq 288(%r15), %rax - movq %r8, 280(%r15) - adcq 288(%r10), %rax - movq 296(%r15), %rcx - movq %rax, 288(%r15) - adcq 296(%r10), %rcx - movq 304(%r15), %r8 - movq %rcx, 296(%r15) - adcq 304(%r10), %r8 - movq 312(%r15), %rax - movq %r8, 304(%r15) - adcq 312(%r10), %rax - movq 320(%r15), %rcx - movq %rax, 312(%r15) - adcq 320(%r10), %rcx - movq 328(%r15), %r8 - movq %rcx, 320(%r15) - adcq 328(%r10), %r8 - movq 336(%r15), %rax - movq %r8, 328(%r15) - adcq 336(%r10), %rax - movq 344(%r15), %rcx - movq %rax, 336(%r15) - adcq 344(%r10), %rcx - movq 352(%r15), %r8 - movq %rcx, 344(%r15) - adcq 352(%r10), %r8 - movq 360(%r15), %rax - movq %r8, 352(%r15) - adcq 360(%r10), %rax - movq 368(%r15), %rcx - movq %rax, 360(%r15) - adcq 368(%r10), %rcx - movq 376(%r15), %r8 - movq %rcx, 368(%r15) - adcq 376(%r10), %r8 - movq 384(%r15), %rax - movq %r8, 376(%r15) - adcq 384(%r10), %rax - movq 392(%r15), %rcx - movq %rax, 384(%r15) - adcq 392(%r10), %rcx - movq 400(%r15), %r8 - movq %rcx, 392(%r15) - adcq 400(%r10), %r8 - movq 408(%r15), %rax - movq %r8, 400(%r15) - adcq 408(%r10), %rax - movq 416(%r15), %rcx - movq %rax, 408(%r15) - adcq 416(%r10), %rcx - movq 424(%r15), %r8 - movq %rcx, 416(%r15) - adcq 424(%r10), %r8 - movq 432(%r15), %rax - movq %r8, 424(%r15) - adcq 432(%r10), %rax - movq 440(%r15), %rcx - movq %rax, 432(%r15) - adcq 440(%r10), %rcx - movq 448(%r15), %r8 - movq %rcx, 440(%r15) - adcq 448(%r10), %r8 - movq 456(%r15), %rax - movq %r8, 448(%r15) - adcq 456(%r10), %rax - movq 464(%r15), %rcx - movq %rax, 456(%r15) - adcq 464(%r10), %rcx - movq 472(%r15), %r8 - movq %rcx, 464(%r15) - adcq 472(%r10), %r8 - movq 480(%r15), %rax - movq %r8, 472(%r15) - adcq 480(%r10), %rax - movq 488(%r15), %rcx - movq %rax, 480(%r15) - adcq 488(%r10), %rcx - movq 496(%r15), %r8 - movq %rcx, 488(%r15) - adcq 496(%r10), %r8 - movq 504(%r15), %rax - movq %r8, 496(%r15) - adcq 504(%r10), %rax - movq %rax, 504(%r15) - adcq $0, %r9 - movq %r9, 768(%rdi) - addq $256, %r15 - # Add - movq (%r15), %rax - xorq %r9, %r9 - addq (%r11), %rax - movq 8(%r15), %rcx - movq %rax, (%r15) - adcq 8(%r11), %rcx - movq 16(%r15), %r8 - movq %rcx, 8(%r15) - adcq 16(%r11), %r8 - movq 24(%r15), %rax - movq %r8, 16(%r15) - adcq 24(%r11), %rax - movq 32(%r15), %rcx - movq %rax, 24(%r15) - adcq 32(%r11), %rcx - movq 40(%r15), %r8 - movq %rcx, 32(%r15) - adcq 40(%r11), %r8 - movq 48(%r15), %rax - movq %r8, 40(%r15) - adcq 48(%r11), %rax - movq 56(%r15), %rcx - movq %rax, 48(%r15) - adcq 56(%r11), %rcx - movq 64(%r15), %r8 - movq %rcx, 56(%r15) - adcq 64(%r11), %r8 - movq 72(%r15), %rax - movq %r8, 64(%r15) - adcq 72(%r11), %rax - movq 80(%r15), %rcx - movq %rax, 72(%r15) - adcq 80(%r11), %rcx - movq 88(%r15), %r8 - movq %rcx, 80(%r15) - adcq 88(%r11), %r8 - movq 96(%r15), %rax - movq %r8, 88(%r15) - adcq 96(%r11), %rax - movq 104(%r15), %rcx - movq %rax, 96(%r15) - adcq 104(%r11), %rcx - movq 112(%r15), %r8 - movq %rcx, 104(%r15) - adcq 112(%r11), %r8 - movq 120(%r15), %rax - movq %r8, 112(%r15) - adcq 120(%r11), %rax - movq 128(%r15), %rcx - movq %rax, 120(%r15) - adcq 128(%r11), %rcx - movq 136(%r15), %r8 - movq %rcx, 128(%r15) - adcq 136(%r11), %r8 - movq 144(%r15), %rax - movq %r8, 136(%r15) - adcq 144(%r11), %rax - movq 152(%r15), %rcx - movq %rax, 144(%r15) - adcq 152(%r11), %rcx - movq 160(%r15), %r8 - movq %rcx, 152(%r15) - adcq 160(%r11), %r8 - movq 168(%r15), %rax - movq %r8, 160(%r15) - adcq 168(%r11), %rax - movq 176(%r15), %rcx - movq %rax, 168(%r15) - adcq 176(%r11), %rcx - movq 184(%r15), %r8 - movq %rcx, 176(%r15) - adcq 184(%r11), %r8 - movq 192(%r15), %rax - movq %r8, 184(%r15) - adcq 192(%r11), %rax - movq 200(%r15), %rcx - movq %rax, 192(%r15) - adcq 200(%r11), %rcx - movq 208(%r15), %r8 - movq %rcx, 200(%r15) - adcq 208(%r11), %r8 - movq 216(%r15), %rax - movq %r8, 208(%r15) - adcq 216(%r11), %rax - movq 224(%r15), %rcx - movq %rax, 216(%r15) - adcq 224(%r11), %rcx - movq 232(%r15), %r8 - movq %rcx, 224(%r15) - adcq 232(%r11), %r8 - movq 240(%r15), %rax - movq %r8, 232(%r15) - adcq 240(%r11), %rax - movq 248(%r15), %rcx - movq %rax, 240(%r15) - adcq 248(%r11), %rcx - movq 256(%r15), %r8 - movq %rcx, 248(%r15) - adcq 256(%r11), %r8 - movq %r8, 256(%r15) - adcq $0, %r9 - # Add to zero - movq 264(%r11), %rax - adcq $0, %rax - movq 272(%r11), %rcx - movq %rax, 264(%r15) - adcq $0, %rcx - movq 280(%r11), %r8 - movq %rcx, 272(%r15) - adcq $0, %r8 - movq 288(%r11), %rax - movq %r8, 280(%r15) - adcq $0, %rax - movq 296(%r11), %rcx - movq %rax, 288(%r15) - adcq $0, %rcx - movq 304(%r11), %r8 - movq %rcx, 296(%r15) - adcq $0, %r8 - movq 312(%r11), %rax - movq %r8, 304(%r15) - adcq $0, %rax - movq 320(%r11), %rcx - movq %rax, 312(%r15) - adcq $0, %rcx - movq 328(%r11), %r8 - movq %rcx, 320(%r15) - adcq $0, %r8 - movq 336(%r11), %rax - movq %r8, 328(%r15) - adcq $0, %rax - movq 344(%r11), %rcx - movq %rax, 336(%r15) - adcq $0, %rcx - movq 352(%r11), %r8 - movq %rcx, 344(%r15) - adcq $0, %r8 - movq 360(%r11), %rax - movq %r8, 352(%r15) - adcq $0, %rax - movq 368(%r11), %rcx - movq %rax, 360(%r15) - adcq $0, %rcx - movq 376(%r11), %r8 - movq %rcx, 368(%r15) - adcq $0, %r8 - movq 384(%r11), %rax - movq %r8, 376(%r15) - adcq $0, %rax - movq 392(%r11), %rcx - movq %rax, 384(%r15) - adcq $0, %rcx - movq 400(%r11), %r8 - movq %rcx, 392(%r15) - adcq $0, %r8 - movq 408(%r11), %rax - movq %r8, 400(%r15) - adcq $0, %rax - movq 416(%r11), %rcx - movq %rax, 408(%r15) - adcq $0, %rcx - movq 424(%r11), %r8 - movq %rcx, 416(%r15) - adcq $0, %r8 - movq 432(%r11), %rax - movq %r8, 424(%r15) - adcq $0, %rax - movq 440(%r11), %rcx - movq %rax, 432(%r15) - adcq $0, %rcx - movq 448(%r11), %r8 - movq %rcx, 440(%r15) - adcq $0, %r8 - movq 456(%r11), %rax - movq %r8, 448(%r15) - adcq $0, %rax - movq 464(%r11), %rcx - movq %rax, 456(%r15) - adcq $0, %rcx - movq 472(%r11), %r8 - movq %rcx, 464(%r15) - adcq $0, %r8 - movq 480(%r11), %rax - movq %r8, 472(%r15) - adcq $0, %rax - movq 488(%r11), %rcx - movq %rax, 480(%r15) - adcq $0, %rcx - movq 496(%r11), %r8 - movq %rcx, 488(%r15) - adcq $0, %r8 - movq 504(%r11), %rax - movq %r8, 496(%r15) - adcq $0, %rax - movq %rax, 504(%r15) - addq $1576, %rsp - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_4096_mul_avx2_64,.-sp_4096_mul_avx2_64 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_sqr_avx2_64 -.type sp_4096_sqr_avx2_64,@function -.align 16 -sp_4096_sqr_avx2_64: -#else -.globl _sp_4096_sqr_avx2_64 -.p2align 4 -_sp_4096_sqr_avx2_64: -#endif /* __APPLE__ */ - subq $1304, %rsp - movq %rdi, 1280(%rsp) - movq %rsi, 1288(%rsp) - leaq 1024(%rsp), %r8 - leaq 256(%rsi), %r9 - # Add - movq (%rsi), %rdx - xorq %rcx, %rcx - addq (%r9), %rdx - movq 8(%rsi), %rax - movq %rdx, (%r8) - adcq 8(%r9), %rax - movq 16(%rsi), %rdx - movq %rax, 8(%r8) - adcq 16(%r9), %rdx - movq 24(%rsi), %rax - movq %rdx, 16(%r8) - adcq 24(%r9), %rax - movq 32(%rsi), %rdx - movq %rax, 24(%r8) - adcq 32(%r9), %rdx - movq 40(%rsi), %rax - movq %rdx, 32(%r8) - adcq 40(%r9), %rax - movq 48(%rsi), %rdx - movq %rax, 40(%r8) - adcq 48(%r9), %rdx - movq 56(%rsi), %rax - movq %rdx, 48(%r8) - adcq 56(%r9), %rax - movq 64(%rsi), %rdx - movq %rax, 56(%r8) - adcq 64(%r9), %rdx - movq 72(%rsi), %rax - movq %rdx, 64(%r8) - adcq 72(%r9), %rax - movq 80(%rsi), %rdx - movq %rax, 72(%r8) - adcq 80(%r9), %rdx - movq 88(%rsi), %rax - movq %rdx, 80(%r8) - adcq 88(%r9), %rax - movq 96(%rsi), %rdx - movq %rax, 88(%r8) - adcq 96(%r9), %rdx - movq 104(%rsi), %rax - movq %rdx, 96(%r8) - adcq 104(%r9), %rax - movq 112(%rsi), %rdx - movq %rax, 104(%r8) - adcq 112(%r9), %rdx - movq 120(%rsi), %rax - movq %rdx, 112(%r8) - adcq 120(%r9), %rax - movq 128(%rsi), %rdx - movq %rax, 120(%r8) - adcq 128(%r9), %rdx - movq 136(%rsi), %rax - movq %rdx, 128(%r8) - adcq 136(%r9), %rax - movq 144(%rsi), %rdx - movq %rax, 136(%r8) - adcq 144(%r9), %rdx - movq 152(%rsi), %rax - movq %rdx, 144(%r8) - adcq 152(%r9), %rax - movq 160(%rsi), %rdx - movq %rax, 152(%r8) - adcq 160(%r9), %rdx - movq 168(%rsi), %rax - movq %rdx, 160(%r8) - adcq 168(%r9), %rax - movq 176(%rsi), %rdx - movq %rax, 168(%r8) - adcq 176(%r9), %rdx - movq 184(%rsi), %rax - movq %rdx, 176(%r8) - adcq 184(%r9), %rax - movq 192(%rsi), %rdx - movq %rax, 184(%r8) - adcq 192(%r9), %rdx - movq 200(%rsi), %rax - movq %rdx, 192(%r8) - adcq 200(%r9), %rax - movq 208(%rsi), %rdx - movq %rax, 200(%r8) - adcq 208(%r9), %rdx - movq 216(%rsi), %rax - movq %rdx, 208(%r8) - adcq 216(%r9), %rax - movq 224(%rsi), %rdx - movq %rax, 216(%r8) - adcq 224(%r9), %rdx - movq 232(%rsi), %rax - movq %rdx, 224(%r8) - adcq 232(%r9), %rax - movq 240(%rsi), %rdx - movq %rax, 232(%r8) - adcq 240(%r9), %rdx - movq 248(%rsi), %rax - movq %rdx, 240(%r8) - adcq 248(%r9), %rax - movq %rax, 248(%r8) - adcq $0, %rcx - movq %rcx, 1296(%rsp) - movq %r8, %rsi - movq %rsp, %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_32@plt -#else - callq _sp_2048_sqr_avx2_32 -#endif /* __APPLE__ */ - movq 1288(%rsp), %rsi - leaq 512(%rsp), %rdi - addq $256, %rsi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_32@plt -#else - callq _sp_2048_sqr_avx2_32 -#endif /* __APPLE__ */ - movq 1288(%rsp), %rsi - movq 1280(%rsp), %rdi -#ifndef __APPLE__ - callq sp_2048_sqr_avx2_32@plt -#else - callq _sp_2048_sqr_avx2_32 -#endif /* __APPLE__ */ - movq 1296(%rsp), %r10 - leaq 1024(%rsp), %r8 - movq %r10, %rcx - negq %r10 - movq (%r8), %rdx - pextq %r10, %rdx, %rdx - addq %rdx, %rdx - movq 8(%r8), %rax - movq %rdx, 512(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 16(%r8), %rdx - movq %rax, 520(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 24(%r8), %rax - movq %rdx, 528(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 32(%r8), %rdx - movq %rax, 536(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 40(%r8), %rax - movq %rdx, 544(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 48(%r8), %rdx - movq %rax, 552(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 56(%r8), %rax - movq %rdx, 560(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 64(%r8), %rdx - movq %rax, 568(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 72(%r8), %rax - movq %rdx, 576(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 80(%r8), %rdx - movq %rax, 584(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 88(%r8), %rax - movq %rdx, 592(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 96(%r8), %rdx - movq %rax, 600(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 104(%r8), %rax - movq %rdx, 608(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 112(%r8), %rdx - movq %rax, 616(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 120(%r8), %rax - movq %rdx, 624(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 128(%r8), %rdx - movq %rax, 632(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 136(%r8), %rax - movq %rdx, 640(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 144(%r8), %rdx - movq %rax, 648(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 152(%r8), %rax - movq %rdx, 656(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 160(%r8), %rdx - movq %rax, 664(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 168(%r8), %rax - movq %rdx, 672(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 176(%r8), %rdx - movq %rax, 680(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 184(%r8), %rax - movq %rdx, 688(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 192(%r8), %rdx - movq %rax, 696(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 200(%r8), %rax - movq %rdx, 704(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 208(%r8), %rdx - movq %rax, 712(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 216(%r8), %rax - movq %rdx, 720(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 224(%r8), %rdx - movq %rax, 728(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 232(%r8), %rax - movq %rdx, 736(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq 240(%r8), %rdx - movq %rax, 744(%rdi) - pextq %r10, %rdx, %rdx - adcq %rdx, %rdx - movq 248(%r8), %rax - movq %rdx, 752(%rdi) - pextq %r10, %rax, %rax - adcq %rax, %rax - movq %rax, 760(%rdi) - adcq $0, %rcx - leaq 512(%rsp), %rsi - movq %rsp, %r8 - movq (%r8), %rdx - subq (%rsi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rsi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rsi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rsi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rsi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rsi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rsi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rsi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rsi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rsi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rsi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rsi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rsi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rsi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rsi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rsi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rsi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rsi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rsi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rsi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rsi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rsi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rsi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rsi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rsi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rsi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rsi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rsi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rsi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rsi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rsi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rsi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rsi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rsi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rsi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rsi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rsi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rsi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rsi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rsi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rsi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rsi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rsi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rsi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rsi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rsi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rsi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rsi), %rax - movq 384(%r8), %rdx - movq %rax, 376(%r8) - sbbq 384(%rsi), %rdx - movq 392(%r8), %rax - movq %rdx, 384(%r8) - sbbq 392(%rsi), %rax - movq 400(%r8), %rdx - movq %rax, 392(%r8) - sbbq 400(%rsi), %rdx - movq 408(%r8), %rax - movq %rdx, 400(%r8) - sbbq 408(%rsi), %rax - movq 416(%r8), %rdx - movq %rax, 408(%r8) - sbbq 416(%rsi), %rdx - movq 424(%r8), %rax - movq %rdx, 416(%r8) - sbbq 424(%rsi), %rax - movq 432(%r8), %rdx - movq %rax, 424(%r8) - sbbq 432(%rsi), %rdx - movq 440(%r8), %rax - movq %rdx, 432(%r8) - sbbq 440(%rsi), %rax - movq 448(%r8), %rdx - movq %rax, 440(%r8) - sbbq 448(%rsi), %rdx - movq 456(%r8), %rax - movq %rdx, 448(%r8) - sbbq 456(%rsi), %rax - movq 464(%r8), %rdx - movq %rax, 456(%r8) - sbbq 464(%rsi), %rdx - movq 472(%r8), %rax - movq %rdx, 464(%r8) - sbbq 472(%rsi), %rax - movq 480(%r8), %rdx - movq %rax, 472(%r8) - sbbq 480(%rsi), %rdx - movq 488(%r8), %rax - movq %rdx, 480(%r8) - sbbq 488(%rsi), %rax - movq 496(%r8), %rdx - movq %rax, 488(%r8) - sbbq 496(%rsi), %rdx - movq 504(%r8), %rax - movq %rdx, 496(%r8) - sbbq 504(%rsi), %rax - movq %rax, 504(%r8) - sbbq $0, %rcx - movq (%r8), %rdx - subq (%rdi), %rdx - movq 8(%r8), %rax - movq %rdx, (%r8) - sbbq 8(%rdi), %rax - movq 16(%r8), %rdx - movq %rax, 8(%r8) - sbbq 16(%rdi), %rdx - movq 24(%r8), %rax - movq %rdx, 16(%r8) - sbbq 24(%rdi), %rax - movq 32(%r8), %rdx - movq %rax, 24(%r8) - sbbq 32(%rdi), %rdx - movq 40(%r8), %rax - movq %rdx, 32(%r8) - sbbq 40(%rdi), %rax - movq 48(%r8), %rdx - movq %rax, 40(%r8) - sbbq 48(%rdi), %rdx - movq 56(%r8), %rax - movq %rdx, 48(%r8) - sbbq 56(%rdi), %rax - movq 64(%r8), %rdx - movq %rax, 56(%r8) - sbbq 64(%rdi), %rdx - movq 72(%r8), %rax - movq %rdx, 64(%r8) - sbbq 72(%rdi), %rax - movq 80(%r8), %rdx - movq %rax, 72(%r8) - sbbq 80(%rdi), %rdx - movq 88(%r8), %rax - movq %rdx, 80(%r8) - sbbq 88(%rdi), %rax - movq 96(%r8), %rdx - movq %rax, 88(%r8) - sbbq 96(%rdi), %rdx - movq 104(%r8), %rax - movq %rdx, 96(%r8) - sbbq 104(%rdi), %rax - movq 112(%r8), %rdx - movq %rax, 104(%r8) - sbbq 112(%rdi), %rdx - movq 120(%r8), %rax - movq %rdx, 112(%r8) - sbbq 120(%rdi), %rax - movq 128(%r8), %rdx - movq %rax, 120(%r8) - sbbq 128(%rdi), %rdx - movq 136(%r8), %rax - movq %rdx, 128(%r8) - sbbq 136(%rdi), %rax - movq 144(%r8), %rdx - movq %rax, 136(%r8) - sbbq 144(%rdi), %rdx - movq 152(%r8), %rax - movq %rdx, 144(%r8) - sbbq 152(%rdi), %rax - movq 160(%r8), %rdx - movq %rax, 152(%r8) - sbbq 160(%rdi), %rdx - movq 168(%r8), %rax - movq %rdx, 160(%r8) - sbbq 168(%rdi), %rax - movq 176(%r8), %rdx - movq %rax, 168(%r8) - sbbq 176(%rdi), %rdx - movq 184(%r8), %rax - movq %rdx, 176(%r8) - sbbq 184(%rdi), %rax - movq 192(%r8), %rdx - movq %rax, 184(%r8) - sbbq 192(%rdi), %rdx - movq 200(%r8), %rax - movq %rdx, 192(%r8) - sbbq 200(%rdi), %rax - movq 208(%r8), %rdx - movq %rax, 200(%r8) - sbbq 208(%rdi), %rdx - movq 216(%r8), %rax - movq %rdx, 208(%r8) - sbbq 216(%rdi), %rax - movq 224(%r8), %rdx - movq %rax, 216(%r8) - sbbq 224(%rdi), %rdx - movq 232(%r8), %rax - movq %rdx, 224(%r8) - sbbq 232(%rdi), %rax - movq 240(%r8), %rdx - movq %rax, 232(%r8) - sbbq 240(%rdi), %rdx - movq 248(%r8), %rax - movq %rdx, 240(%r8) - sbbq 248(%rdi), %rax - movq 256(%r8), %rdx - movq %rax, 248(%r8) - sbbq 256(%rdi), %rdx - movq 264(%r8), %rax - movq %rdx, 256(%r8) - sbbq 264(%rdi), %rax - movq 272(%r8), %rdx - movq %rax, 264(%r8) - sbbq 272(%rdi), %rdx - movq 280(%r8), %rax - movq %rdx, 272(%r8) - sbbq 280(%rdi), %rax - movq 288(%r8), %rdx - movq %rax, 280(%r8) - sbbq 288(%rdi), %rdx - movq 296(%r8), %rax - movq %rdx, 288(%r8) - sbbq 296(%rdi), %rax - movq 304(%r8), %rdx - movq %rax, 296(%r8) - sbbq 304(%rdi), %rdx - movq 312(%r8), %rax - movq %rdx, 304(%r8) - sbbq 312(%rdi), %rax - movq 320(%r8), %rdx - movq %rax, 312(%r8) - sbbq 320(%rdi), %rdx - movq 328(%r8), %rax - movq %rdx, 320(%r8) - sbbq 328(%rdi), %rax - movq 336(%r8), %rdx - movq %rax, 328(%r8) - sbbq 336(%rdi), %rdx - movq 344(%r8), %rax - movq %rdx, 336(%r8) - sbbq 344(%rdi), %rax - movq 352(%r8), %rdx - movq %rax, 344(%r8) - sbbq 352(%rdi), %rdx - movq 360(%r8), %rax - movq %rdx, 352(%r8) - sbbq 360(%rdi), %rax - movq 368(%r8), %rdx - movq %rax, 360(%r8) - sbbq 368(%rdi), %rdx - movq 376(%r8), %rax - movq %rdx, 368(%r8) - sbbq 376(%rdi), %rax - movq 384(%r8), %rdx - movq %rax, 376(%r8) - sbbq 384(%rdi), %rdx - movq 392(%r8), %rax - movq %rdx, 384(%r8) - sbbq 392(%rdi), %rax - movq 400(%r8), %rdx - movq %rax, 392(%r8) - sbbq 400(%rdi), %rdx - movq 408(%r8), %rax - movq %rdx, 400(%r8) - sbbq 408(%rdi), %rax - movq 416(%r8), %rdx - movq %rax, 408(%r8) - sbbq 416(%rdi), %rdx - movq 424(%r8), %rax - movq %rdx, 416(%r8) - sbbq 424(%rdi), %rax - movq 432(%r8), %rdx - movq %rax, 424(%r8) - sbbq 432(%rdi), %rdx - movq 440(%r8), %rax - movq %rdx, 432(%r8) - sbbq 440(%rdi), %rax - movq 448(%r8), %rdx - movq %rax, 440(%r8) - sbbq 448(%rdi), %rdx - movq 456(%r8), %rax - movq %rdx, 448(%r8) - sbbq 456(%rdi), %rax - movq 464(%r8), %rdx - movq %rax, 456(%r8) - sbbq 464(%rdi), %rdx - movq 472(%r8), %rax - movq %rdx, 464(%r8) - sbbq 472(%rdi), %rax - movq 480(%r8), %rdx - movq %rax, 472(%r8) - sbbq 480(%rdi), %rdx - movq 488(%r8), %rax - movq %rdx, 480(%r8) - sbbq 488(%rdi), %rax - movq 496(%r8), %rdx - movq %rax, 488(%r8) - sbbq 496(%rdi), %rdx - movq 504(%r8), %rax - movq %rdx, 496(%r8) - sbbq 504(%rdi), %rax - movq %rax, 504(%r8) - sbbq $0, %rcx - # Add in place - movq 256(%rdi), %rdx - addq (%r8), %rdx - movq 264(%rdi), %rax - movq %rdx, 256(%rdi) - adcq 8(%r8), %rax - movq 272(%rdi), %rdx - movq %rax, 264(%rdi) - adcq 16(%r8), %rdx - movq 280(%rdi), %rax - movq %rdx, 272(%rdi) - adcq 24(%r8), %rax - movq 288(%rdi), %rdx - movq %rax, 280(%rdi) - adcq 32(%r8), %rdx - movq 296(%rdi), %rax - movq %rdx, 288(%rdi) - adcq 40(%r8), %rax - movq 304(%rdi), %rdx - movq %rax, 296(%rdi) - adcq 48(%r8), %rdx - movq 312(%rdi), %rax - movq %rdx, 304(%rdi) - adcq 56(%r8), %rax - movq 320(%rdi), %rdx - movq %rax, 312(%rdi) - adcq 64(%r8), %rdx - movq 328(%rdi), %rax - movq %rdx, 320(%rdi) - adcq 72(%r8), %rax - movq 336(%rdi), %rdx - movq %rax, 328(%rdi) - adcq 80(%r8), %rdx - movq 344(%rdi), %rax - movq %rdx, 336(%rdi) - adcq 88(%r8), %rax - movq 352(%rdi), %rdx - movq %rax, 344(%rdi) - adcq 96(%r8), %rdx - movq 360(%rdi), %rax - movq %rdx, 352(%rdi) - adcq 104(%r8), %rax - movq 368(%rdi), %rdx - movq %rax, 360(%rdi) - adcq 112(%r8), %rdx - movq 376(%rdi), %rax - movq %rdx, 368(%rdi) - adcq 120(%r8), %rax - movq 384(%rdi), %rdx - movq %rax, 376(%rdi) - adcq 128(%r8), %rdx - movq 392(%rdi), %rax - movq %rdx, 384(%rdi) - adcq 136(%r8), %rax - movq 400(%rdi), %rdx - movq %rax, 392(%rdi) - adcq 144(%r8), %rdx - movq 408(%rdi), %rax - movq %rdx, 400(%rdi) - adcq 152(%r8), %rax - movq 416(%rdi), %rdx - movq %rax, 408(%rdi) - adcq 160(%r8), %rdx - movq 424(%rdi), %rax - movq %rdx, 416(%rdi) - adcq 168(%r8), %rax - movq 432(%rdi), %rdx - movq %rax, 424(%rdi) - adcq 176(%r8), %rdx - movq 440(%rdi), %rax - movq %rdx, 432(%rdi) - adcq 184(%r8), %rax - movq 448(%rdi), %rdx - movq %rax, 440(%rdi) - adcq 192(%r8), %rdx - movq 456(%rdi), %rax - movq %rdx, 448(%rdi) - adcq 200(%r8), %rax - movq 464(%rdi), %rdx - movq %rax, 456(%rdi) - adcq 208(%r8), %rdx - movq 472(%rdi), %rax - movq %rdx, 464(%rdi) - adcq 216(%r8), %rax - movq 480(%rdi), %rdx - movq %rax, 472(%rdi) - adcq 224(%r8), %rdx - movq 488(%rdi), %rax - movq %rdx, 480(%rdi) - adcq 232(%r8), %rax - movq 496(%rdi), %rdx - movq %rax, 488(%rdi) - adcq 240(%r8), %rdx - movq 504(%rdi), %rax - movq %rdx, 496(%rdi) - adcq 248(%r8), %rax - movq 512(%rdi), %rdx - movq %rax, 504(%rdi) - adcq 256(%r8), %rdx - movq 520(%rdi), %rax - movq %rdx, 512(%rdi) - adcq 264(%r8), %rax - movq 528(%rdi), %rdx - movq %rax, 520(%rdi) - adcq 272(%r8), %rdx - movq 536(%rdi), %rax - movq %rdx, 528(%rdi) - adcq 280(%r8), %rax - movq 544(%rdi), %rdx - movq %rax, 536(%rdi) - adcq 288(%r8), %rdx - movq 552(%rdi), %rax - movq %rdx, 544(%rdi) - adcq 296(%r8), %rax - movq 560(%rdi), %rdx - movq %rax, 552(%rdi) - adcq 304(%r8), %rdx - movq 568(%rdi), %rax - movq %rdx, 560(%rdi) - adcq 312(%r8), %rax - movq 576(%rdi), %rdx - movq %rax, 568(%rdi) - adcq 320(%r8), %rdx - movq 584(%rdi), %rax - movq %rdx, 576(%rdi) - adcq 328(%r8), %rax - movq 592(%rdi), %rdx - movq %rax, 584(%rdi) - adcq 336(%r8), %rdx - movq 600(%rdi), %rax - movq %rdx, 592(%rdi) - adcq 344(%r8), %rax - movq 608(%rdi), %rdx - movq %rax, 600(%rdi) - adcq 352(%r8), %rdx - movq 616(%rdi), %rax - movq %rdx, 608(%rdi) - adcq 360(%r8), %rax - movq 624(%rdi), %rdx - movq %rax, 616(%rdi) - adcq 368(%r8), %rdx - movq 632(%rdi), %rax - movq %rdx, 624(%rdi) - adcq 376(%r8), %rax - movq 640(%rdi), %rdx - movq %rax, 632(%rdi) - adcq 384(%r8), %rdx - movq 648(%rdi), %rax - movq %rdx, 640(%rdi) - adcq 392(%r8), %rax - movq 656(%rdi), %rdx - movq %rax, 648(%rdi) - adcq 400(%r8), %rdx - movq 664(%rdi), %rax - movq %rdx, 656(%rdi) - adcq 408(%r8), %rax - movq 672(%rdi), %rdx - movq %rax, 664(%rdi) - adcq 416(%r8), %rdx - movq 680(%rdi), %rax - movq %rdx, 672(%rdi) - adcq 424(%r8), %rax - movq 688(%rdi), %rdx - movq %rax, 680(%rdi) - adcq 432(%r8), %rdx - movq 696(%rdi), %rax - movq %rdx, 688(%rdi) - adcq 440(%r8), %rax - movq 704(%rdi), %rdx - movq %rax, 696(%rdi) - adcq 448(%r8), %rdx - movq 712(%rdi), %rax - movq %rdx, 704(%rdi) - adcq 456(%r8), %rax - movq 720(%rdi), %rdx - movq %rax, 712(%rdi) - adcq 464(%r8), %rdx - movq 728(%rdi), %rax - movq %rdx, 720(%rdi) - adcq 472(%r8), %rax - movq 736(%rdi), %rdx - movq %rax, 728(%rdi) - adcq 480(%r8), %rdx - movq 744(%rdi), %rax - movq %rdx, 736(%rdi) - adcq 488(%r8), %rax - movq 752(%rdi), %rdx - movq %rax, 744(%rdi) - adcq 496(%r8), %rdx - movq 760(%rdi), %rax - movq %rdx, 752(%rdi) - adcq 504(%r8), %rax - movq %rax, 760(%rdi) - adcq $0, %rcx - movq %rcx, 768(%rdi) - # Add in place - movq 512(%rdi), %rdx - xorq %rcx, %rcx - addq (%rsi), %rdx - movq 520(%rdi), %rax - movq %rdx, 512(%rdi) - adcq 8(%rsi), %rax - movq 528(%rdi), %rdx - movq %rax, 520(%rdi) - adcq 16(%rsi), %rdx - movq 536(%rdi), %rax - movq %rdx, 528(%rdi) - adcq 24(%rsi), %rax - movq 544(%rdi), %rdx - movq %rax, 536(%rdi) - adcq 32(%rsi), %rdx - movq 552(%rdi), %rax - movq %rdx, 544(%rdi) - adcq 40(%rsi), %rax - movq 560(%rdi), %rdx - movq %rax, 552(%rdi) - adcq 48(%rsi), %rdx - movq 568(%rdi), %rax - movq %rdx, 560(%rdi) - adcq 56(%rsi), %rax - movq 576(%rdi), %rdx - movq %rax, 568(%rdi) - adcq 64(%rsi), %rdx - movq 584(%rdi), %rax - movq %rdx, 576(%rdi) - adcq 72(%rsi), %rax - movq 592(%rdi), %rdx - movq %rax, 584(%rdi) - adcq 80(%rsi), %rdx - movq 600(%rdi), %rax - movq %rdx, 592(%rdi) - adcq 88(%rsi), %rax - movq 608(%rdi), %rdx - movq %rax, 600(%rdi) - adcq 96(%rsi), %rdx - movq 616(%rdi), %rax - movq %rdx, 608(%rdi) - adcq 104(%rsi), %rax - movq 624(%rdi), %rdx - movq %rax, 616(%rdi) - adcq 112(%rsi), %rdx - movq 632(%rdi), %rax - movq %rdx, 624(%rdi) - adcq 120(%rsi), %rax - movq 640(%rdi), %rdx - movq %rax, 632(%rdi) - adcq 128(%rsi), %rdx - movq 648(%rdi), %rax - movq %rdx, 640(%rdi) - adcq 136(%rsi), %rax - movq 656(%rdi), %rdx - movq %rax, 648(%rdi) - adcq 144(%rsi), %rdx - movq 664(%rdi), %rax - movq %rdx, 656(%rdi) - adcq 152(%rsi), %rax - movq 672(%rdi), %rdx - movq %rax, 664(%rdi) - adcq 160(%rsi), %rdx - movq 680(%rdi), %rax - movq %rdx, 672(%rdi) - adcq 168(%rsi), %rax - movq 688(%rdi), %rdx - movq %rax, 680(%rdi) - adcq 176(%rsi), %rdx - movq 696(%rdi), %rax - movq %rdx, 688(%rdi) - adcq 184(%rsi), %rax - movq 704(%rdi), %rdx - movq %rax, 696(%rdi) - adcq 192(%rsi), %rdx - movq 712(%rdi), %rax - movq %rdx, 704(%rdi) - adcq 200(%rsi), %rax - movq 720(%rdi), %rdx - movq %rax, 712(%rdi) - adcq 208(%rsi), %rdx - movq 728(%rdi), %rax - movq %rdx, 720(%rdi) - adcq 216(%rsi), %rax - movq 736(%rdi), %rdx - movq %rax, 728(%rdi) - adcq 224(%rsi), %rdx - movq 744(%rdi), %rax - movq %rdx, 736(%rdi) - adcq 232(%rsi), %rax - movq 752(%rdi), %rdx - movq %rax, 744(%rdi) - adcq 240(%rsi), %rdx - movq 760(%rdi), %rax - movq %rdx, 752(%rdi) - adcq 248(%rsi), %rax - movq 768(%rdi), %rdx - movq %rax, 760(%rdi) - adcq 256(%rsi), %rdx - movq %rdx, 768(%rdi) - adcq $0, %rcx - # Add to zero - movq 264(%rsi), %rdx - adcq $0, %rdx - movq 272(%rsi), %rax - movq %rdx, 776(%rdi) - adcq $0, %rax - movq 280(%rsi), %rdx - movq %rax, 784(%rdi) - adcq $0, %rdx - movq 288(%rsi), %rax - movq %rdx, 792(%rdi) - adcq $0, %rax - movq 296(%rsi), %rdx - movq %rax, 800(%rdi) - adcq $0, %rdx - movq 304(%rsi), %rax - movq %rdx, 808(%rdi) - adcq $0, %rax - movq 312(%rsi), %rdx - movq %rax, 816(%rdi) - adcq $0, %rdx - movq 320(%rsi), %rax - movq %rdx, 824(%rdi) - adcq $0, %rax - movq 328(%rsi), %rdx - movq %rax, 832(%rdi) - adcq $0, %rdx - movq 336(%rsi), %rax - movq %rdx, 840(%rdi) - adcq $0, %rax - movq 344(%rsi), %rdx - movq %rax, 848(%rdi) - adcq $0, %rdx - movq 352(%rsi), %rax - movq %rdx, 856(%rdi) - adcq $0, %rax - movq 360(%rsi), %rdx - movq %rax, 864(%rdi) - adcq $0, %rdx - movq 368(%rsi), %rax - movq %rdx, 872(%rdi) - adcq $0, %rax - movq 376(%rsi), %rdx - movq %rax, 880(%rdi) - adcq $0, %rdx - movq 384(%rsi), %rax - movq %rdx, 888(%rdi) - adcq $0, %rax - movq 392(%rsi), %rdx - movq %rax, 896(%rdi) - adcq $0, %rdx - movq 400(%rsi), %rax - movq %rdx, 904(%rdi) - adcq $0, %rax - movq 408(%rsi), %rdx - movq %rax, 912(%rdi) - adcq $0, %rdx - movq 416(%rsi), %rax - movq %rdx, 920(%rdi) - adcq $0, %rax - movq 424(%rsi), %rdx - movq %rax, 928(%rdi) - adcq $0, %rdx - movq 432(%rsi), %rax - movq %rdx, 936(%rdi) - adcq $0, %rax - movq 440(%rsi), %rdx - movq %rax, 944(%rdi) - adcq $0, %rdx - movq 448(%rsi), %rax - movq %rdx, 952(%rdi) - adcq $0, %rax - movq 456(%rsi), %rdx - movq %rax, 960(%rdi) - adcq $0, %rdx - movq 464(%rsi), %rax - movq %rdx, 968(%rdi) - adcq $0, %rax - movq 472(%rsi), %rdx - movq %rax, 976(%rdi) - adcq $0, %rdx - movq 480(%rsi), %rax - movq %rdx, 984(%rdi) - adcq $0, %rax - movq 488(%rsi), %rdx - movq %rax, 992(%rdi) - adcq $0, %rdx - movq 496(%rsi), %rax - movq %rdx, 1000(%rdi) - adcq $0, %rax - movq 504(%rsi), %rdx - movq %rax, 1008(%rdi) - adcq $0, %rdx - movq %rdx, 1016(%rdi) - addq $1304, %rsp - repz retq -#ifndef __APPLE__ -.size sp_4096_sqr_avx2_64,.-sp_4096_sqr_avx2_64 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_4096_mul_d_64 -.type sp_4096_mul_d_64,@function -.align 16 -sp_4096_mul_d_64: -#else -.globl _sp_4096_mul_d_64 -.p2align 4 -_sp_4096_mul_d_64: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 40(%rsi) - addq %rax, %r10 - movq %r10, 40(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[6] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 48(%rsi) - addq %rax, %r8 - movq %r8, 48(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[7] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 56(%rsi) - addq %rax, %r9 - movq %r9, 56(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[8] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 64(%rsi) - addq %rax, %r10 - movq %r10, 64(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[9] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 72(%rsi) - addq %rax, %r8 - movq %r8, 72(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[10] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 80(%rsi) - addq %rax, %r9 - movq %r9, 80(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[11] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 88(%rsi) - addq %rax, %r10 - movq %r10, 88(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[12] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 96(%rsi) - addq %rax, %r8 - movq %r8, 96(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[13] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 104(%rsi) - addq %rax, %r9 - movq %r9, 104(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[14] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 112(%rsi) - addq %rax, %r10 - movq %r10, 112(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[15] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 120(%rsi) - addq %rax, %r8 - movq %r8, 120(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[16] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 128(%rsi) - addq %rax, %r9 - movq %r9, 128(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[17] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 136(%rsi) - addq %rax, %r10 - movq %r10, 136(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[18] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 144(%rsi) - addq %rax, %r8 - movq %r8, 144(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[19] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 152(%rsi) - addq %rax, %r9 - movq %r9, 152(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[20] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 160(%rsi) - addq %rax, %r10 - movq %r10, 160(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[21] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 168(%rsi) - addq %rax, %r8 - movq %r8, 168(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[22] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 176(%rsi) - addq %rax, %r9 - movq %r9, 176(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[23] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 184(%rsi) - addq %rax, %r10 - movq %r10, 184(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[24] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 192(%rsi) - addq %rax, %r8 - movq %r8, 192(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[25] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 200(%rsi) - addq %rax, %r9 - movq %r9, 200(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[26] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 208(%rsi) - addq %rax, %r10 - movq %r10, 208(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[27] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 216(%rsi) - addq %rax, %r8 - movq %r8, 216(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[28] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 224(%rsi) - addq %rax, %r9 - movq %r9, 224(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[29] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 232(%rsi) - addq %rax, %r10 - movq %r10, 232(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[30] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 240(%rsi) - addq %rax, %r8 - movq %r8, 240(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[31] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 248(%rsi) - addq %rax, %r9 - movq %r9, 248(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[32] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 256(%rsi) - addq %rax, %r10 - movq %r10, 256(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[33] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 264(%rsi) - addq %rax, %r8 - movq %r8, 264(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[34] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 272(%rsi) - addq %rax, %r9 - movq %r9, 272(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[35] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 280(%rsi) - addq %rax, %r10 - movq %r10, 280(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[36] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 288(%rsi) - addq %rax, %r8 - movq %r8, 288(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[37] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 296(%rsi) - addq %rax, %r9 - movq %r9, 296(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[38] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 304(%rsi) - addq %rax, %r10 - movq %r10, 304(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[39] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 312(%rsi) - addq %rax, %r8 - movq %r8, 312(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[40] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 320(%rsi) - addq %rax, %r9 - movq %r9, 320(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[41] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 328(%rsi) - addq %rax, %r10 - movq %r10, 328(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[42] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 336(%rsi) - addq %rax, %r8 - movq %r8, 336(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[43] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 344(%rsi) - addq %rax, %r9 - movq %r9, 344(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[44] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 352(%rsi) - addq %rax, %r10 - movq %r10, 352(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[45] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 360(%rsi) - addq %rax, %r8 - movq %r8, 360(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[46] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 368(%rsi) - addq %rax, %r9 - movq %r9, 368(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[47] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 376(%rsi) - addq %rax, %r10 - movq %r10, 376(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[48] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 384(%rsi) - addq %rax, %r8 - movq %r8, 384(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[49] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 392(%rsi) - addq %rax, %r9 - movq %r9, 392(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[50] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 400(%rsi) - addq %rax, %r10 - movq %r10, 400(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[51] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 408(%rsi) - addq %rax, %r8 - movq %r8, 408(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[52] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 416(%rsi) - addq %rax, %r9 - movq %r9, 416(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[53] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 424(%rsi) - addq %rax, %r10 - movq %r10, 424(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[54] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 432(%rsi) - addq %rax, %r8 - movq %r8, 432(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[55] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 440(%rsi) - addq %rax, %r9 - movq %r9, 440(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[56] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 448(%rsi) - addq %rax, %r10 - movq %r10, 448(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[57] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 456(%rsi) - addq %rax, %r8 - movq %r8, 456(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[58] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 464(%rsi) - addq %rax, %r9 - movq %r9, 464(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[59] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 472(%rsi) - addq %rax, %r10 - movq %r10, 472(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[60] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 480(%rsi) - addq %rax, %r8 - movq %r8, 480(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[61] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 488(%rsi) - addq %rax, %r9 - movq %r9, 488(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[62] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 496(%rsi) - addq %rax, %r10 - movq %r10, 496(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[63] * B - movq %rcx, %rax - mulq 504(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 504(%rdi) - movq %r9, 512(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_4096_mul_d_64,.-sp_4096_mul_d_64 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_4096_cond_sub_64 -.type sp_4096_cond_sub_64,@function -.align 16 -sp_4096_cond_sub_64: -#else -.globl _sp_4096_cond_sub_64 -.p2align 4 -_sp_4096_cond_sub_64: -#endif /* __APPLE__ */ - subq $512, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq 192(%rdx), %r8 - movq 200(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 192(%rsp) - movq %r9, 200(%rsp) - movq 208(%rdx), %r8 - movq 216(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 208(%rsp) - movq %r9, 216(%rsp) - movq 224(%rdx), %r8 - movq 232(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 224(%rsp) - movq %r9, 232(%rsp) - movq 240(%rdx), %r8 - movq 248(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 240(%rsp) - movq %r9, 248(%rsp) - movq 256(%rdx), %r8 - movq 264(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 256(%rsp) - movq %r9, 264(%rsp) - movq 272(%rdx), %r8 - movq 280(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 272(%rsp) - movq %r9, 280(%rsp) - movq 288(%rdx), %r8 - movq 296(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 288(%rsp) - movq %r9, 296(%rsp) - movq 304(%rdx), %r8 - movq 312(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 304(%rsp) - movq %r9, 312(%rsp) - movq 320(%rdx), %r8 - movq 328(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 320(%rsp) - movq %r9, 328(%rsp) - movq 336(%rdx), %r8 - movq 344(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 336(%rsp) - movq %r9, 344(%rsp) - movq 352(%rdx), %r8 - movq 360(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 352(%rsp) - movq %r9, 360(%rsp) - movq 368(%rdx), %r8 - movq 376(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 368(%rsp) - movq %r9, 376(%rsp) - movq 384(%rdx), %r8 - movq 392(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 384(%rsp) - movq %r9, 392(%rsp) - movq 400(%rdx), %r8 - movq 408(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 400(%rsp) - movq %r9, 408(%rsp) - movq 416(%rdx), %r8 - movq 424(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 416(%rsp) - movq %r9, 424(%rsp) - movq 432(%rdx), %r8 - movq 440(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 432(%rsp) - movq %r9, 440(%rsp) - movq 448(%rdx), %r8 - movq 456(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 448(%rsp) - movq %r9, 456(%rsp) - movq 464(%rdx), %r8 - movq 472(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 464(%rsp) - movq %r9, 472(%rsp) - movq 480(%rdx), %r8 - movq 488(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 480(%rsp) - movq %r9, 488(%rsp) - movq 496(%rdx), %r8 - movq 504(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 496(%rsp) - movq %r9, 504(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 176(%rdi) - movq 192(%rsi), %r8 - movq 192(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 184(%rdi) - movq 200(%rsi), %r9 - movq 200(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 192(%rdi) - movq 208(%rsi), %r8 - movq 208(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 200(%rdi) - movq 216(%rsi), %r9 - movq 216(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 208(%rdi) - movq 224(%rsi), %r8 - movq 224(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 216(%rdi) - movq 232(%rsi), %r9 - movq 232(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 224(%rdi) - movq 240(%rsi), %r8 - movq 240(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 232(%rdi) - movq 248(%rsi), %r9 - movq 248(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 240(%rdi) - movq 256(%rsi), %r8 - movq 256(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 248(%rdi) - movq 264(%rsi), %r9 - movq 264(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 256(%rdi) - movq 272(%rsi), %r8 - movq 272(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 264(%rdi) - movq 280(%rsi), %r9 - movq 280(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 272(%rdi) - movq 288(%rsi), %r8 - movq 288(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 280(%rdi) - movq 296(%rsi), %r9 - movq 296(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 288(%rdi) - movq 304(%rsi), %r8 - movq 304(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 296(%rdi) - movq 312(%rsi), %r9 - movq 312(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 304(%rdi) - movq 320(%rsi), %r8 - movq 320(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 312(%rdi) - movq 328(%rsi), %r9 - movq 328(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 320(%rdi) - movq 336(%rsi), %r8 - movq 336(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 328(%rdi) - movq 344(%rsi), %r9 - movq 344(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 336(%rdi) - movq 352(%rsi), %r8 - movq 352(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 344(%rdi) - movq 360(%rsi), %r9 - movq 360(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 352(%rdi) - movq 368(%rsi), %r8 - movq 368(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 360(%rdi) - movq 376(%rsi), %r9 - movq 376(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 368(%rdi) - movq 384(%rsi), %r8 - movq 384(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 376(%rdi) - movq 392(%rsi), %r9 - movq 392(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 384(%rdi) - movq 400(%rsi), %r8 - movq 400(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 392(%rdi) - movq 408(%rsi), %r9 - movq 408(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 400(%rdi) - movq 416(%rsi), %r8 - movq 416(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 408(%rdi) - movq 424(%rsi), %r9 - movq 424(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 416(%rdi) - movq 432(%rsi), %r8 - movq 432(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 424(%rdi) - movq 440(%rsi), %r9 - movq 440(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 432(%rdi) - movq 448(%rsi), %r8 - movq 448(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 440(%rdi) - movq 456(%rsi), %r9 - movq 456(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 448(%rdi) - movq 464(%rsi), %r8 - movq 464(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 456(%rdi) - movq 472(%rsi), %r9 - movq 472(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 464(%rdi) - movq 480(%rsi), %r8 - movq 480(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 472(%rdi) - movq 488(%rsi), %r9 - movq 488(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 480(%rdi) - movq 496(%rsi), %r8 - movq 496(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 488(%rdi) - movq 504(%rsi), %r9 - movq 504(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 496(%rdi) - movq %r9, 504(%rdi) - sbbq $0, %rax - addq $512, %rsp - repz retq -#ifndef __APPLE__ -.size sp_4096_cond_sub_64,.-sp_4096_cond_sub_64 -#endif /* __APPLE__ */ -/* Reduce the number back to 4096 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_4096_mont_reduce_64 -.type sp_4096_mont_reduce_64,@function -.align 16 -sp_4096_mont_reduce_64: -#else -.globl _sp_4096_mont_reduce_64 -.p2align 4 -_sp_4096_mont_reduce_64: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 64 - movq $64, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_64: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq $0, %r9 - # a[i+6] += m[6] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 48(%rsi) - movq 48(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 48(%rdi) - adcq $0, %r10 - # a[i+7] += m[7] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 56(%rsi) - movq 56(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 56(%rdi) - adcq $0, %r9 - # a[i+8] += m[8] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 64(%rsi) - movq 64(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 64(%rdi) - adcq $0, %r10 - # a[i+9] += m[9] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 72(%rsi) - movq 72(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 72(%rdi) - adcq $0, %r9 - # a[i+10] += m[10] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 80(%rsi) - movq 80(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 80(%rdi) - adcq $0, %r10 - # a[i+11] += m[11] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 88(%rsi) - movq 88(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 88(%rdi) - adcq $0, %r9 - # a[i+12] += m[12] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 96(%rsi) - movq 96(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 96(%rdi) - adcq $0, %r10 - # a[i+13] += m[13] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 104(%rsi) - movq 104(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 104(%rdi) - adcq $0, %r9 - # a[i+14] += m[14] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 112(%rsi) - movq 112(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 112(%rdi) - adcq $0, %r10 - # a[i+15] += m[15] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 120(%rsi) - movq 120(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 120(%rdi) - adcq $0, %r9 - # a[i+16] += m[16] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 128(%rsi) - movq 128(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 128(%rdi) - adcq $0, %r10 - # a[i+17] += m[17] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 136(%rsi) - movq 136(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 136(%rdi) - adcq $0, %r9 - # a[i+18] += m[18] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 144(%rsi) - movq 144(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 144(%rdi) - adcq $0, %r10 - # a[i+19] += m[19] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 152(%rsi) - movq 152(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 152(%rdi) - adcq $0, %r9 - # a[i+20] += m[20] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 160(%rsi) - movq 160(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 160(%rdi) - adcq $0, %r10 - # a[i+21] += m[21] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 168(%rsi) - movq 168(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 168(%rdi) - adcq $0, %r9 - # a[i+22] += m[22] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 176(%rsi) - movq 176(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 176(%rdi) - adcq $0, %r10 - # a[i+23] += m[23] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 184(%rsi) - movq 184(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 184(%rdi) - adcq $0, %r9 - # a[i+24] += m[24] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 192(%rsi) - movq 192(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 192(%rdi) - adcq $0, %r10 - # a[i+25] += m[25] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 200(%rsi) - movq 200(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 200(%rdi) - adcq $0, %r9 - # a[i+26] += m[26] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 208(%rsi) - movq 208(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 208(%rdi) - adcq $0, %r10 - # a[i+27] += m[27] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 216(%rsi) - movq 216(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 216(%rdi) - adcq $0, %r9 - # a[i+28] += m[28] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 224(%rsi) - movq 224(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 224(%rdi) - adcq $0, %r10 - # a[i+29] += m[29] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 232(%rsi) - movq 232(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 232(%rdi) - adcq $0, %r9 - # a[i+30] += m[30] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 240(%rsi) - movq 240(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 240(%rdi) - adcq $0, %r10 - # a[i+31] += m[31] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 248(%rsi) - movq 248(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 248(%rdi) - adcq $0, %r9 - # a[i+32] += m[32] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 256(%rsi) - movq 256(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 256(%rdi) - adcq $0, %r10 - # a[i+33] += m[33] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 264(%rsi) - movq 264(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 264(%rdi) - adcq $0, %r9 - # a[i+34] += m[34] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 272(%rsi) - movq 272(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 272(%rdi) - adcq $0, %r10 - # a[i+35] += m[35] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 280(%rsi) - movq 280(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 280(%rdi) - adcq $0, %r9 - # a[i+36] += m[36] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 288(%rsi) - movq 288(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 288(%rdi) - adcq $0, %r10 - # a[i+37] += m[37] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 296(%rsi) - movq 296(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 296(%rdi) - adcq $0, %r9 - # a[i+38] += m[38] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 304(%rsi) - movq 304(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 304(%rdi) - adcq $0, %r10 - # a[i+39] += m[39] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 312(%rsi) - movq 312(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 312(%rdi) - adcq $0, %r9 - # a[i+40] += m[40] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 320(%rsi) - movq 320(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 320(%rdi) - adcq $0, %r10 - # a[i+41] += m[41] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 328(%rsi) - movq 328(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 328(%rdi) - adcq $0, %r9 - # a[i+42] += m[42] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 336(%rsi) - movq 336(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 336(%rdi) - adcq $0, %r10 - # a[i+43] += m[43] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 344(%rsi) - movq 344(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 344(%rdi) - adcq $0, %r9 - # a[i+44] += m[44] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 352(%rsi) - movq 352(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 352(%rdi) - adcq $0, %r10 - # a[i+45] += m[45] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 360(%rsi) - movq 360(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 360(%rdi) - adcq $0, %r9 - # a[i+46] += m[46] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 368(%rsi) - movq 368(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 368(%rdi) - adcq $0, %r10 - # a[i+47] += m[47] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 376(%rsi) - movq 376(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 376(%rdi) - adcq $0, %r9 - # a[i+48] += m[48] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 384(%rsi) - movq 384(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 384(%rdi) - adcq $0, %r10 - # a[i+49] += m[49] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 392(%rsi) - movq 392(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 392(%rdi) - adcq $0, %r9 - # a[i+50] += m[50] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 400(%rsi) - movq 400(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 400(%rdi) - adcq $0, %r10 - # a[i+51] += m[51] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 408(%rsi) - movq 408(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 408(%rdi) - adcq $0, %r9 - # a[i+52] += m[52] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 416(%rsi) - movq 416(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 416(%rdi) - adcq $0, %r10 - # a[i+53] += m[53] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 424(%rsi) - movq 424(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 424(%rdi) - adcq $0, %r9 - # a[i+54] += m[54] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 432(%rsi) - movq 432(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 432(%rdi) - adcq $0, %r10 - # a[i+55] += m[55] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 440(%rsi) - movq 440(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 440(%rdi) - adcq $0, %r9 - # a[i+56] += m[56] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 448(%rsi) - movq 448(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 448(%rdi) - adcq $0, %r10 - # a[i+57] += m[57] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 456(%rsi) - movq 456(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 456(%rdi) - adcq $0, %r9 - # a[i+58] += m[58] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 464(%rsi) - movq 464(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 464(%rdi) - adcq $0, %r10 - # a[i+59] += m[59] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 472(%rsi) - movq 472(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 472(%rdi) - adcq $0, %r9 - # a[i+60] += m[60] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 480(%rsi) - movq 480(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 480(%rdi) - adcq $0, %r10 - # a[i+61] += m[61] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 488(%rsi) - movq 488(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 488(%rdi) - adcq $0, %r9 - # a[i+62] += m[62] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 496(%rsi) - movq 496(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 496(%rdi) - adcq $0, %r10 - # a[i+63] += m[63] * mu - movq %r11, %rax - mulq 504(%rsi) - movq 504(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 504(%rdi) - adcq %rdx, 512(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_64 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $512, %rdi -#ifndef __APPLE__ - callq sp_4096_cond_sub_64@plt -#else - callq _sp_4096_cond_sub_64 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_4096_mont_reduce_64,.-sp_4096_mont_reduce_64 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_4096_cond_sub_avx2_64 -.type sp_4096_cond_sub_avx2_64,@function -.align 16 -sp_4096_cond_sub_avx2_64: -#else -.globl _sp_4096_cond_sub_avx2_64 -.p2align 4 -_sp_4096_cond_sub_avx2_64: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - sbbq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - sbbq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - sbbq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - sbbq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - sbbq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - sbbq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - sbbq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - sbbq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - sbbq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - sbbq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - sbbq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - sbbq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - sbbq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - sbbq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - sbbq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - sbbq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - sbbq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - sbbq %r8, %r10 - movq 192(%rdx), %r9 - movq 192(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 184(%rdi) - sbbq %r9, %r8 - movq 200(%rdx), %r10 - movq 200(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 192(%rdi) - sbbq %r10, %r9 - movq 208(%rdx), %r8 - movq 208(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 200(%rdi) - sbbq %r8, %r10 - movq 216(%rdx), %r9 - movq 216(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 208(%rdi) - sbbq %r9, %r8 - movq 224(%rdx), %r10 - movq 224(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 216(%rdi) - sbbq %r10, %r9 - movq 232(%rdx), %r8 - movq 232(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 224(%rdi) - sbbq %r8, %r10 - movq 240(%rdx), %r9 - movq 240(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 232(%rdi) - sbbq %r9, %r8 - movq 248(%rdx), %r10 - movq 248(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 240(%rdi) - sbbq %r10, %r9 - movq 256(%rdx), %r8 - movq 256(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 248(%rdi) - sbbq %r8, %r10 - movq 264(%rdx), %r9 - movq 264(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 256(%rdi) - sbbq %r9, %r8 - movq 272(%rdx), %r10 - movq 272(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 264(%rdi) - sbbq %r10, %r9 - movq 280(%rdx), %r8 - movq 280(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 272(%rdi) - sbbq %r8, %r10 - movq 288(%rdx), %r9 - movq 288(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 280(%rdi) - sbbq %r9, %r8 - movq 296(%rdx), %r10 - movq 296(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 288(%rdi) - sbbq %r10, %r9 - movq 304(%rdx), %r8 - movq 304(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 296(%rdi) - sbbq %r8, %r10 - movq 312(%rdx), %r9 - movq 312(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 304(%rdi) - sbbq %r9, %r8 - movq 320(%rdx), %r10 - movq 320(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 312(%rdi) - sbbq %r10, %r9 - movq 328(%rdx), %r8 - movq 328(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 320(%rdi) - sbbq %r8, %r10 - movq 336(%rdx), %r9 - movq 336(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 328(%rdi) - sbbq %r9, %r8 - movq 344(%rdx), %r10 - movq 344(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 336(%rdi) - sbbq %r10, %r9 - movq 352(%rdx), %r8 - movq 352(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 344(%rdi) - sbbq %r8, %r10 - movq 360(%rdx), %r9 - movq 360(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 352(%rdi) - sbbq %r9, %r8 - movq 368(%rdx), %r10 - movq 368(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 360(%rdi) - sbbq %r10, %r9 - movq 376(%rdx), %r8 - movq 376(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 368(%rdi) - sbbq %r8, %r10 - movq 384(%rdx), %r9 - movq 384(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 376(%rdi) - sbbq %r9, %r8 - movq 392(%rdx), %r10 - movq 392(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 384(%rdi) - sbbq %r10, %r9 - movq 400(%rdx), %r8 - movq 400(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 392(%rdi) - sbbq %r8, %r10 - movq 408(%rdx), %r9 - movq 408(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 400(%rdi) - sbbq %r9, %r8 - movq 416(%rdx), %r10 - movq 416(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 408(%rdi) - sbbq %r10, %r9 - movq 424(%rdx), %r8 - movq 424(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 416(%rdi) - sbbq %r8, %r10 - movq 432(%rdx), %r9 - movq 432(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 424(%rdi) - sbbq %r9, %r8 - movq 440(%rdx), %r10 - movq 440(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 432(%rdi) - sbbq %r10, %r9 - movq 448(%rdx), %r8 - movq 448(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 440(%rdi) - sbbq %r8, %r10 - movq 456(%rdx), %r9 - movq 456(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 448(%rdi) - sbbq %r9, %r8 - movq 464(%rdx), %r10 - movq 464(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 456(%rdi) - sbbq %r10, %r9 - movq 472(%rdx), %r8 - movq 472(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 464(%rdi) - sbbq %r8, %r10 - movq 480(%rdx), %r9 - movq 480(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 472(%rdi) - sbbq %r9, %r8 - movq 488(%rdx), %r10 - movq 488(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 480(%rdi) - sbbq %r10, %r9 - movq 496(%rdx), %r8 - movq 496(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 488(%rdi) - sbbq %r8, %r10 - movq 504(%rdx), %r9 - movq 504(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 496(%rdi) - sbbq %r9, %r8 - movq %r8, 504(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_cond_sub_avx2_64,.-sp_4096_cond_sub_avx2_64 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_4096_mul_d_avx2_64 -.type sp_4096_mul_d_avx2_64,@function -.align 16 -sp_4096_mul_d_avx2_64: -#else -.globl _sp_4096_mul_d_avx2_64 -.p2align 4 -_sp_4096_mul_d_avx2_64: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 40(%rdi) - adoxq %r8, %r9 - # A[6] * B - mulxq 48(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 48(%rdi) - adoxq %r8, %r10 - # A[7] * B - mulxq 56(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 56(%rdi) - adoxq %r8, %r9 - # A[8] * B - mulxq 64(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 64(%rdi) - adoxq %r8, %r10 - # A[9] * B - mulxq 72(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 72(%rdi) - adoxq %r8, %r9 - # A[10] * B - mulxq 80(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 80(%rdi) - adoxq %r8, %r10 - # A[11] * B - mulxq 88(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 88(%rdi) - adoxq %r8, %r9 - # A[12] * B - mulxq 96(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 96(%rdi) - adoxq %r8, %r10 - # A[13] * B - mulxq 104(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 104(%rdi) - adoxq %r8, %r9 - # A[14] * B - mulxq 112(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 112(%rdi) - adoxq %r8, %r10 - # A[15] * B - mulxq 120(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 120(%rdi) - adoxq %r8, %r9 - # A[16] * B - mulxq 128(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 128(%rdi) - adoxq %r8, %r10 - # A[17] * B - mulxq 136(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 136(%rdi) - adoxq %r8, %r9 - # A[18] * B - mulxq 144(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 144(%rdi) - adoxq %r8, %r10 - # A[19] * B - mulxq 152(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 152(%rdi) - adoxq %r8, %r9 - # A[20] * B - mulxq 160(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 160(%rdi) - adoxq %r8, %r10 - # A[21] * B - mulxq 168(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 168(%rdi) - adoxq %r8, %r9 - # A[22] * B - mulxq 176(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 176(%rdi) - adoxq %r8, %r10 - # A[23] * B - mulxq 184(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 184(%rdi) - adoxq %r8, %r9 - # A[24] * B - mulxq 192(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 192(%rdi) - adoxq %r8, %r10 - # A[25] * B - mulxq 200(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 200(%rdi) - adoxq %r8, %r9 - # A[26] * B - mulxq 208(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 208(%rdi) - adoxq %r8, %r10 - # A[27] * B - mulxq 216(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 216(%rdi) - adoxq %r8, %r9 - # A[28] * B - mulxq 224(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 224(%rdi) - adoxq %r8, %r10 - # A[29] * B - mulxq 232(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 232(%rdi) - adoxq %r8, %r9 - # A[30] * B - mulxq 240(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 240(%rdi) - adoxq %r8, %r10 - # A[31] * B - mulxq 248(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 248(%rdi) - adoxq %r8, %r9 - # A[32] * B - mulxq 256(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 256(%rdi) - adoxq %r8, %r10 - # A[33] * B - mulxq 264(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 264(%rdi) - adoxq %r8, %r9 - # A[34] * B - mulxq 272(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 272(%rdi) - adoxq %r8, %r10 - # A[35] * B - mulxq 280(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 280(%rdi) - adoxq %r8, %r9 - # A[36] * B - mulxq 288(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 288(%rdi) - adoxq %r8, %r10 - # A[37] * B - mulxq 296(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 296(%rdi) - adoxq %r8, %r9 - # A[38] * B - mulxq 304(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 304(%rdi) - adoxq %r8, %r10 - # A[39] * B - mulxq 312(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 312(%rdi) - adoxq %r8, %r9 - # A[40] * B - mulxq 320(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 320(%rdi) - adoxq %r8, %r10 - # A[41] * B - mulxq 328(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 328(%rdi) - adoxq %r8, %r9 - # A[42] * B - mulxq 336(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 336(%rdi) - adoxq %r8, %r10 - # A[43] * B - mulxq 344(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 344(%rdi) - adoxq %r8, %r9 - # A[44] * B - mulxq 352(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 352(%rdi) - adoxq %r8, %r10 - # A[45] * B - mulxq 360(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 360(%rdi) - adoxq %r8, %r9 - # A[46] * B - mulxq 368(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 368(%rdi) - adoxq %r8, %r10 - # A[47] * B - mulxq 376(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 376(%rdi) - adoxq %r8, %r9 - # A[48] * B - mulxq 384(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 384(%rdi) - adoxq %r8, %r10 - # A[49] * B - mulxq 392(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 392(%rdi) - adoxq %r8, %r9 - # A[50] * B - mulxq 400(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 400(%rdi) - adoxq %r8, %r10 - # A[51] * B - mulxq 408(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 408(%rdi) - adoxq %r8, %r9 - # A[52] * B - mulxq 416(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 416(%rdi) - adoxq %r8, %r10 - # A[53] * B - mulxq 424(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 424(%rdi) - adoxq %r8, %r9 - # A[54] * B - mulxq 432(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 432(%rdi) - adoxq %r8, %r10 - # A[55] * B - mulxq 440(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 440(%rdi) - adoxq %r8, %r9 - # A[56] * B - mulxq 448(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 448(%rdi) - adoxq %r8, %r10 - # A[57] * B - mulxq 456(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 456(%rdi) - adoxq %r8, %r9 - # A[58] * B - mulxq 464(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 464(%rdi) - adoxq %r8, %r10 - # A[59] * B - mulxq 472(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 472(%rdi) - adoxq %r8, %r9 - # A[60] * B - mulxq 480(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 480(%rdi) - adoxq %r8, %r10 - # A[61] * B - mulxq 488(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 488(%rdi) - adoxq %r8, %r9 - # A[62] * B - mulxq 496(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 496(%rdi) - adoxq %r8, %r10 - # A[63] * B - mulxq 504(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 504(%rdi) - movq %r9, 512(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_4096_mul_d_avx2_64,.-sp_4096_mul_d_avx2_64 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_4096_cmp_64 -.type sp_4096_cmp_64,@function -.align 16 -sp_4096_cmp_64: -#else -.globl _sp_4096_cmp_64 -.p2align 4 -_sp_4096_cmp_64: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 504(%rdi), %r9 - movq 504(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 496(%rdi), %r9 - movq 496(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 488(%rdi), %r9 - movq 488(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 480(%rdi), %r9 - movq 480(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 472(%rdi), %r9 - movq 472(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 464(%rdi), %r9 - movq 464(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 456(%rdi), %r9 - movq 456(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 448(%rdi), %r9 - movq 448(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 440(%rdi), %r9 - movq 440(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 432(%rdi), %r9 - movq 432(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 424(%rdi), %r9 - movq 424(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 416(%rdi), %r9 - movq 416(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 408(%rdi), %r9 - movq 408(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 400(%rdi), %r9 - movq 400(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 392(%rdi), %r9 - movq 392(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 384(%rdi), %r9 - movq 384(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 376(%rdi), %r9 - movq 376(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 368(%rdi), %r9 - movq 368(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 360(%rdi), %r9 - movq 360(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 352(%rdi), %r9 - movq 352(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 344(%rdi), %r9 - movq 344(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 336(%rdi), %r9 - movq 336(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 328(%rdi), %r9 - movq 328(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 320(%rdi), %r9 - movq 320(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 312(%rdi), %r9 - movq 312(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 304(%rdi), %r9 - movq 304(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 296(%rdi), %r9 - movq 296(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 288(%rdi), %r9 - movq 288(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 280(%rdi), %r9 - movq 280(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 272(%rdi), %r9 - movq 272(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 264(%rdi), %r9 - movq 264(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 256(%rdi), %r9 - movq 256(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 248(%rdi), %r9 - movq 248(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 240(%rdi), %r9 - movq 240(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 232(%rdi), %r9 - movq 232(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 224(%rdi), %r9 - movq 224(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 216(%rdi), %r9 - movq 216(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 208(%rdi), %r9 - movq 208(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 200(%rdi), %r9 - movq 200(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 192(%rdi), %r9 - movq 192(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 184(%rdi), %r9 - movq 184(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 176(%rdi), %r9 - movq 176(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 168(%rdi), %r9 - movq 168(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 160(%rdi), %r9 - movq 160(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 152(%rdi), %r9 - movq 152(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 144(%rdi), %r9 - movq 144(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 136(%rdi), %r9 - movq 136(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 128(%rdi), %r9 - movq 128(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 120(%rdi), %r9 - movq 120(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 112(%rdi), %r9 - movq 112(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 104(%rdi), %r9 - movq 104(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 96(%rdi), %r9 - movq 96(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 88(%rdi), %r9 - movq 88(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 80(%rdi), %r9 - movq 80(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 72(%rdi), %r9 - movq 72(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 64(%rdi), %r9 - movq 64(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 56(%rdi), %r9 - movq 56(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 48(%rdi), %r9 - movq 48(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_cmp_64,.-sp_4096_cmp_64 -#endif /* __APPLE__ */ -/* Sub b from a into r. (r = a - b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_4096_sub_64 -.type sp_4096_sub_64,@function -.align 16 -sp_4096_sub_64: -#else -.globl _sp_4096_sub_64 -.p2align 4 -_sp_4096_sub_64: -#endif /* __APPLE__ */ - movq (%rsi), %rcx - xorq %rax, %rax - subq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - sbbq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - sbbq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - sbbq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - sbbq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - sbbq 40(%rdx), %r8 - movq 48(%rsi), %rcx - movq %r8, 40(%rdi) - sbbq 48(%rdx), %rcx - movq 56(%rsi), %r8 - movq %rcx, 48(%rdi) - sbbq 56(%rdx), %r8 - movq 64(%rsi), %rcx - movq %r8, 56(%rdi) - sbbq 64(%rdx), %rcx - movq 72(%rsi), %r8 - movq %rcx, 64(%rdi) - sbbq 72(%rdx), %r8 - movq 80(%rsi), %rcx - movq %r8, 72(%rdi) - sbbq 80(%rdx), %rcx - movq 88(%rsi), %r8 - movq %rcx, 80(%rdi) - sbbq 88(%rdx), %r8 - movq 96(%rsi), %rcx - movq %r8, 88(%rdi) - sbbq 96(%rdx), %rcx - movq 104(%rsi), %r8 - movq %rcx, 96(%rdi) - sbbq 104(%rdx), %r8 - movq 112(%rsi), %rcx - movq %r8, 104(%rdi) - sbbq 112(%rdx), %rcx - movq 120(%rsi), %r8 - movq %rcx, 112(%rdi) - sbbq 120(%rdx), %r8 - movq 128(%rsi), %rcx - movq %r8, 120(%rdi) - sbbq 128(%rdx), %rcx - movq 136(%rsi), %r8 - movq %rcx, 128(%rdi) - sbbq 136(%rdx), %r8 - movq 144(%rsi), %rcx - movq %r8, 136(%rdi) - sbbq 144(%rdx), %rcx - movq 152(%rsi), %r8 - movq %rcx, 144(%rdi) - sbbq 152(%rdx), %r8 - movq 160(%rsi), %rcx - movq %r8, 152(%rdi) - sbbq 160(%rdx), %rcx - movq 168(%rsi), %r8 - movq %rcx, 160(%rdi) - sbbq 168(%rdx), %r8 - movq 176(%rsi), %rcx - movq %r8, 168(%rdi) - sbbq 176(%rdx), %rcx - movq 184(%rsi), %r8 - movq %rcx, 176(%rdi) - sbbq 184(%rdx), %r8 - movq 192(%rsi), %rcx - movq %r8, 184(%rdi) - sbbq 192(%rdx), %rcx - movq 200(%rsi), %r8 - movq %rcx, 192(%rdi) - sbbq 200(%rdx), %r8 - movq 208(%rsi), %rcx - movq %r8, 200(%rdi) - sbbq 208(%rdx), %rcx - movq 216(%rsi), %r8 - movq %rcx, 208(%rdi) - sbbq 216(%rdx), %r8 - movq 224(%rsi), %rcx - movq %r8, 216(%rdi) - sbbq 224(%rdx), %rcx - movq 232(%rsi), %r8 - movq %rcx, 224(%rdi) - sbbq 232(%rdx), %r8 - movq 240(%rsi), %rcx - movq %r8, 232(%rdi) - sbbq 240(%rdx), %rcx - movq 248(%rsi), %r8 - movq %rcx, 240(%rdi) - sbbq 248(%rdx), %r8 - movq 256(%rsi), %rcx - movq %r8, 248(%rdi) - sbbq 256(%rdx), %rcx - movq 264(%rsi), %r8 - movq %rcx, 256(%rdi) - sbbq 264(%rdx), %r8 - movq 272(%rsi), %rcx - movq %r8, 264(%rdi) - sbbq 272(%rdx), %rcx - movq 280(%rsi), %r8 - movq %rcx, 272(%rdi) - sbbq 280(%rdx), %r8 - movq 288(%rsi), %rcx - movq %r8, 280(%rdi) - sbbq 288(%rdx), %rcx - movq 296(%rsi), %r8 - movq %rcx, 288(%rdi) - sbbq 296(%rdx), %r8 - movq 304(%rsi), %rcx - movq %r8, 296(%rdi) - sbbq 304(%rdx), %rcx - movq 312(%rsi), %r8 - movq %rcx, 304(%rdi) - sbbq 312(%rdx), %r8 - movq 320(%rsi), %rcx - movq %r8, 312(%rdi) - sbbq 320(%rdx), %rcx - movq 328(%rsi), %r8 - movq %rcx, 320(%rdi) - sbbq 328(%rdx), %r8 - movq 336(%rsi), %rcx - movq %r8, 328(%rdi) - sbbq 336(%rdx), %rcx - movq 344(%rsi), %r8 - movq %rcx, 336(%rdi) - sbbq 344(%rdx), %r8 - movq 352(%rsi), %rcx - movq %r8, 344(%rdi) - sbbq 352(%rdx), %rcx - movq 360(%rsi), %r8 - movq %rcx, 352(%rdi) - sbbq 360(%rdx), %r8 - movq 368(%rsi), %rcx - movq %r8, 360(%rdi) - sbbq 368(%rdx), %rcx - movq 376(%rsi), %r8 - movq %rcx, 368(%rdi) - sbbq 376(%rdx), %r8 - movq 384(%rsi), %rcx - movq %r8, 376(%rdi) - sbbq 384(%rdx), %rcx - movq 392(%rsi), %r8 - movq %rcx, 384(%rdi) - sbbq 392(%rdx), %r8 - movq 400(%rsi), %rcx - movq %r8, 392(%rdi) - sbbq 400(%rdx), %rcx - movq 408(%rsi), %r8 - movq %rcx, 400(%rdi) - sbbq 408(%rdx), %r8 - movq 416(%rsi), %rcx - movq %r8, 408(%rdi) - sbbq 416(%rdx), %rcx - movq 424(%rsi), %r8 - movq %rcx, 416(%rdi) - sbbq 424(%rdx), %r8 - movq 432(%rsi), %rcx - movq %r8, 424(%rdi) - sbbq 432(%rdx), %rcx - movq 440(%rsi), %r8 - movq %rcx, 432(%rdi) - sbbq 440(%rdx), %r8 - movq 448(%rsi), %rcx - movq %r8, 440(%rdi) - sbbq 448(%rdx), %rcx - movq 456(%rsi), %r8 - movq %rcx, 448(%rdi) - sbbq 456(%rdx), %r8 - movq 464(%rsi), %rcx - movq %r8, 456(%rdi) - sbbq 464(%rdx), %rcx - movq 472(%rsi), %r8 - movq %rcx, 464(%rdi) - sbbq 472(%rdx), %r8 - movq 480(%rsi), %rcx - movq %r8, 472(%rdi) - sbbq 480(%rdx), %rcx - movq 488(%rsi), %r8 - movq %rcx, 480(%rdi) - sbbq 488(%rdx), %r8 - movq 496(%rsi), %rcx - movq %r8, 488(%rdi) - sbbq 496(%rdx), %rcx - movq 504(%rsi), %r8 - movq %rcx, 496(%rdi) - sbbq 504(%rdx), %r8 - movq %r8, 504(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_sub_64,.-sp_4096_sub_64 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 4096 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_4096_mont_reduce_avx2_64 -.type sp_4096_mont_reduce_avx2_64,@function -.align 16 -sp_4096_mont_reduce_avx2_64: -#else -.globl _sp_4096_mont_reduce_avx2_64 -.p2align 4 -_sp_4096_mont_reduce_avx2_64: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - movq %rdx, %r8 - xorq %r14, %r14 - # i = 64 - movq $64, %r9 - movq (%rdi), %r13 - addq $256, %rdi - xorq %r12, %r12 -L_mont_loop_avx2_64: - # mu = a[i] * mp - movq %r13, %rdx - movq %r13, %r10 - imulq %r8, %rdx - xorq %r12, %r12 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rax, %rcx - movq -248(%rdi), %r13 - adcxq %rax, %r10 - adoxq %rcx, %r13 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rax, %rcx - movq -240(%rdi), %r10 - adcxq %rax, %r13 - adoxq %rcx, %r10 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rax, %rcx - movq -232(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -240(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rax, %rcx - movq -224(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -232(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rax, %rcx - movq -216(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -224(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rax, %rcx - movq -208(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -216(%rdi) - # a[i+6] += m[6] * mu - mulxq 48(%rsi), %rax, %rcx - movq -200(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -208(%rdi) - # a[i+7] += m[7] * mu - mulxq 56(%rsi), %rax, %rcx - movq -192(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -200(%rdi) - # a[i+8] += m[8] * mu - mulxq 64(%rsi), %rax, %rcx - movq -184(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -192(%rdi) - # a[i+9] += m[9] * mu - mulxq 72(%rsi), %rax, %rcx - movq -176(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -184(%rdi) - # a[i+10] += m[10] * mu - mulxq 80(%rsi), %rax, %rcx - movq -168(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -176(%rdi) - # a[i+11] += m[11] * mu - mulxq 88(%rsi), %rax, %rcx - movq -160(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -168(%rdi) - # a[i+12] += m[12] * mu - mulxq 96(%rsi), %rax, %rcx - movq -152(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -160(%rdi) - # a[i+13] += m[13] * mu - mulxq 104(%rsi), %rax, %rcx - movq -144(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -152(%rdi) - # a[i+14] += m[14] * mu - mulxq 112(%rsi), %rax, %rcx - movq -136(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -144(%rdi) - # a[i+15] += m[15] * mu - mulxq 120(%rsi), %rax, %rcx - movq -128(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -136(%rdi) - # a[i+16] += m[16] * mu - mulxq 128(%rsi), %rax, %rcx - movq -120(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -128(%rdi) - # a[i+17] += m[17] * mu - mulxq 136(%rsi), %rax, %rcx - movq -112(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -120(%rdi) - # a[i+18] += m[18] * mu - mulxq 144(%rsi), %rax, %rcx - movq -104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -112(%rdi) - # a[i+19] += m[19] * mu - mulxq 152(%rsi), %rax, %rcx - movq -96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -104(%rdi) - # a[i+20] += m[20] * mu - mulxq 160(%rsi), %rax, %rcx - movq -88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -96(%rdi) - # a[i+21] += m[21] * mu - mulxq 168(%rsi), %rax, %rcx - movq -80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -88(%rdi) - # a[i+22] += m[22] * mu - mulxq 176(%rsi), %rax, %rcx - movq -72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -80(%rdi) - # a[i+23] += m[23] * mu - mulxq 184(%rsi), %rax, %rcx - movq -64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -72(%rdi) - # a[i+24] += m[24] * mu - mulxq 192(%rsi), %rax, %rcx - movq -56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -64(%rdi) - # a[i+25] += m[25] * mu - mulxq 200(%rsi), %rax, %rcx - movq -48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -56(%rdi) - # a[i+26] += m[26] * mu - mulxq 208(%rsi), %rax, %rcx - movq -40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -48(%rdi) - # a[i+27] += m[27] * mu - mulxq 216(%rsi), %rax, %rcx - movq -32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -40(%rdi) - # a[i+28] += m[28] * mu - mulxq 224(%rsi), %rax, %rcx - movq -24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -32(%rdi) - # a[i+29] += m[29] * mu - mulxq 232(%rsi), %rax, %rcx - movq -16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -24(%rdi) - # a[i+30] += m[30] * mu - mulxq 240(%rsi), %rax, %rcx - movq -8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, -16(%rdi) - # a[i+31] += m[31] * mu - mulxq 248(%rsi), %rax, %rcx - movq (%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, -8(%rdi) - # a[i+32] += m[32] * mu - mulxq 256(%rsi), %rax, %rcx - movq 8(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, (%rdi) - # a[i+33] += m[33] * mu - mulxq 264(%rsi), %rax, %rcx - movq 16(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 8(%rdi) - # a[i+34] += m[34] * mu - mulxq 272(%rsi), %rax, %rcx - movq 24(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 16(%rdi) - # a[i+35] += m[35] * mu - mulxq 280(%rsi), %rax, %rcx - movq 32(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 24(%rdi) - # a[i+36] += m[36] * mu - mulxq 288(%rsi), %rax, %rcx - movq 40(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 32(%rdi) - # a[i+37] += m[37] * mu - mulxq 296(%rsi), %rax, %rcx - movq 48(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 40(%rdi) - # a[i+38] += m[38] * mu - mulxq 304(%rsi), %rax, %rcx - movq 56(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 48(%rdi) - # a[i+39] += m[39] * mu - mulxq 312(%rsi), %rax, %rcx - movq 64(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 56(%rdi) - # a[i+40] += m[40] * mu - mulxq 320(%rsi), %rax, %rcx - movq 72(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 64(%rdi) - # a[i+41] += m[41] * mu - mulxq 328(%rsi), %rax, %rcx - movq 80(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 72(%rdi) - # a[i+42] += m[42] * mu - mulxq 336(%rsi), %rax, %rcx - movq 88(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 80(%rdi) - # a[i+43] += m[43] * mu - mulxq 344(%rsi), %rax, %rcx - movq 96(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 88(%rdi) - # a[i+44] += m[44] * mu - mulxq 352(%rsi), %rax, %rcx - movq 104(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 96(%rdi) - # a[i+45] += m[45] * mu - mulxq 360(%rsi), %rax, %rcx - movq 112(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 104(%rdi) - # a[i+46] += m[46] * mu - mulxq 368(%rsi), %rax, %rcx - movq 120(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 112(%rdi) - # a[i+47] += m[47] * mu - mulxq 376(%rsi), %rax, %rcx - movq 128(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 120(%rdi) - # a[i+48] += m[48] * mu - mulxq 384(%rsi), %rax, %rcx - movq 136(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 128(%rdi) - # a[i+49] += m[49] * mu - mulxq 392(%rsi), %rax, %rcx - movq 144(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 136(%rdi) - # a[i+50] += m[50] * mu - mulxq 400(%rsi), %rax, %rcx - movq 152(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 144(%rdi) - # a[i+51] += m[51] * mu - mulxq 408(%rsi), %rax, %rcx - movq 160(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 152(%rdi) - # a[i+52] += m[52] * mu - mulxq 416(%rsi), %rax, %rcx - movq 168(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 160(%rdi) - # a[i+53] += m[53] * mu - mulxq 424(%rsi), %rax, %rcx - movq 176(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 168(%rdi) - # a[i+54] += m[54] * mu - mulxq 432(%rsi), %rax, %rcx - movq 184(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 176(%rdi) - # a[i+55] += m[55] * mu - mulxq 440(%rsi), %rax, %rcx - movq 192(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 184(%rdi) - # a[i+56] += m[56] * mu - mulxq 448(%rsi), %rax, %rcx - movq 200(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 192(%rdi) - # a[i+57] += m[57] * mu - mulxq 456(%rsi), %rax, %rcx - movq 208(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 200(%rdi) - # a[i+58] += m[58] * mu - mulxq 464(%rsi), %rax, %rcx - movq 216(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 208(%rdi) - # a[i+59] += m[59] * mu - mulxq 472(%rsi), %rax, %rcx - movq 224(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 216(%rdi) - # a[i+60] += m[60] * mu - mulxq 480(%rsi), %rax, %rcx - movq 232(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 224(%rdi) - # a[i+61] += m[61] * mu - mulxq 488(%rsi), %rax, %rcx - movq 240(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 232(%rdi) - # a[i+62] += m[62] * mu - mulxq 496(%rsi), %rax, %rcx - movq 248(%rdi), %r11 - adcxq %rax, %r10 - adoxq %rcx, %r11 - movq %r10, 240(%rdi) - # a[i+63] += m[63] * mu - mulxq 504(%rsi), %rax, %rcx - movq 256(%rdi), %r10 - adcxq %rax, %r11 - adoxq %rcx, %r10 - movq %r11, 248(%rdi) - adcxq %r14, %r10 - movq %r10, 256(%rdi) - movq %r12, %r14 - adoxq %r12, %r14 - adcxq %r12, %r14 - # a += 1 - addq $8, %rdi - # i -= 1 - subq $1, %r9 - jnz L_mont_loop_avx2_64 - subq $256, %rdi - negq %r14 - movq %rdi, %r8 - subq $512, %rdi - movq (%rsi), %rcx - movq %r13, %rdx - pextq %r14, %rcx, %rcx - subq %rcx, %rdx - movq 8(%rsi), %rcx - movq 8(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, (%rdi) - sbbq %rcx, %rax - movq 16(%rsi), %rdx - movq 16(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 8(%rdi) - sbbq %rdx, %rcx - movq 24(%rsi), %rax - movq 24(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 16(%rdi) - sbbq %rax, %rdx - movq 32(%rsi), %rcx - movq 32(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 24(%rdi) - sbbq %rcx, %rax - movq 40(%rsi), %rdx - movq 40(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 32(%rdi) - sbbq %rdx, %rcx - movq 48(%rsi), %rax - movq 48(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 40(%rdi) - sbbq %rax, %rdx - movq 56(%rsi), %rcx - movq 56(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 48(%rdi) - sbbq %rcx, %rax - movq 64(%rsi), %rdx - movq 64(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 56(%rdi) - sbbq %rdx, %rcx - movq 72(%rsi), %rax - movq 72(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 64(%rdi) - sbbq %rax, %rdx - movq 80(%rsi), %rcx - movq 80(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 72(%rdi) - sbbq %rcx, %rax - movq 88(%rsi), %rdx - movq 88(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 80(%rdi) - sbbq %rdx, %rcx - movq 96(%rsi), %rax - movq 96(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 88(%rdi) - sbbq %rax, %rdx - movq 104(%rsi), %rcx - movq 104(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 96(%rdi) - sbbq %rcx, %rax - movq 112(%rsi), %rdx - movq 112(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 104(%rdi) - sbbq %rdx, %rcx - movq 120(%rsi), %rax - movq 120(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 112(%rdi) - sbbq %rax, %rdx - movq 128(%rsi), %rcx - movq 128(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 120(%rdi) - sbbq %rcx, %rax - movq 136(%rsi), %rdx - movq 136(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 128(%rdi) - sbbq %rdx, %rcx - movq 144(%rsi), %rax - movq 144(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 136(%rdi) - sbbq %rax, %rdx - movq 152(%rsi), %rcx - movq 152(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 144(%rdi) - sbbq %rcx, %rax - movq 160(%rsi), %rdx - movq 160(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 152(%rdi) - sbbq %rdx, %rcx - movq 168(%rsi), %rax - movq 168(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 160(%rdi) - sbbq %rax, %rdx - movq 176(%rsi), %rcx - movq 176(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 168(%rdi) - sbbq %rcx, %rax - movq 184(%rsi), %rdx - movq 184(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 176(%rdi) - sbbq %rdx, %rcx - movq 192(%rsi), %rax - movq 192(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 184(%rdi) - sbbq %rax, %rdx - movq 200(%rsi), %rcx - movq 200(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 192(%rdi) - sbbq %rcx, %rax - movq 208(%rsi), %rdx - movq 208(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 200(%rdi) - sbbq %rdx, %rcx - movq 216(%rsi), %rax - movq 216(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 208(%rdi) - sbbq %rax, %rdx - movq 224(%rsi), %rcx - movq 224(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 216(%rdi) - sbbq %rcx, %rax - movq 232(%rsi), %rdx - movq 232(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 224(%rdi) - sbbq %rdx, %rcx - movq 240(%rsi), %rax - movq 240(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 232(%rdi) - sbbq %rax, %rdx - movq 248(%rsi), %rcx - movq 248(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 240(%rdi) - sbbq %rcx, %rax - movq 256(%rsi), %rdx - movq 256(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 248(%rdi) - sbbq %rdx, %rcx - movq 264(%rsi), %rax - movq 264(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 256(%rdi) - sbbq %rax, %rdx - movq 272(%rsi), %rcx - movq 272(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 264(%rdi) - sbbq %rcx, %rax - movq 280(%rsi), %rdx - movq 280(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 272(%rdi) - sbbq %rdx, %rcx - movq 288(%rsi), %rax - movq 288(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 280(%rdi) - sbbq %rax, %rdx - movq 296(%rsi), %rcx - movq 296(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 288(%rdi) - sbbq %rcx, %rax - movq 304(%rsi), %rdx - movq 304(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 296(%rdi) - sbbq %rdx, %rcx - movq 312(%rsi), %rax - movq 312(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 304(%rdi) - sbbq %rax, %rdx - movq 320(%rsi), %rcx - movq 320(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 312(%rdi) - sbbq %rcx, %rax - movq 328(%rsi), %rdx - movq 328(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 320(%rdi) - sbbq %rdx, %rcx - movq 336(%rsi), %rax - movq 336(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 328(%rdi) - sbbq %rax, %rdx - movq 344(%rsi), %rcx - movq 344(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 336(%rdi) - sbbq %rcx, %rax - movq 352(%rsi), %rdx - movq 352(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 344(%rdi) - sbbq %rdx, %rcx - movq 360(%rsi), %rax - movq 360(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 352(%rdi) - sbbq %rax, %rdx - movq 368(%rsi), %rcx - movq 368(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 360(%rdi) - sbbq %rcx, %rax - movq 376(%rsi), %rdx - movq 376(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 368(%rdi) - sbbq %rdx, %rcx - movq 384(%rsi), %rax - movq 384(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 376(%rdi) - sbbq %rax, %rdx - movq 392(%rsi), %rcx - movq 392(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 384(%rdi) - sbbq %rcx, %rax - movq 400(%rsi), %rdx - movq 400(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 392(%rdi) - sbbq %rdx, %rcx - movq 408(%rsi), %rax - movq 408(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 400(%rdi) - sbbq %rax, %rdx - movq 416(%rsi), %rcx - movq 416(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 408(%rdi) - sbbq %rcx, %rax - movq 424(%rsi), %rdx - movq 424(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 416(%rdi) - sbbq %rdx, %rcx - movq 432(%rsi), %rax - movq 432(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 424(%rdi) - sbbq %rax, %rdx - movq 440(%rsi), %rcx - movq 440(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 432(%rdi) - sbbq %rcx, %rax - movq 448(%rsi), %rdx - movq 448(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 440(%rdi) - sbbq %rdx, %rcx - movq 456(%rsi), %rax - movq 456(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 448(%rdi) - sbbq %rax, %rdx - movq 464(%rsi), %rcx - movq 464(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 456(%rdi) - sbbq %rcx, %rax - movq 472(%rsi), %rdx - movq 472(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 464(%rdi) - sbbq %rdx, %rcx - movq 480(%rsi), %rax - movq 480(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 472(%rdi) - sbbq %rax, %rdx - movq 488(%rsi), %rcx - movq 488(%r8), %rax - pextq %r14, %rcx, %rcx - movq %rdx, 480(%rdi) - sbbq %rcx, %rax - movq 496(%rsi), %rdx - movq 496(%r8), %rcx - pextq %r14, %rdx, %rdx - movq %rax, 488(%rdi) - sbbq %rdx, %rcx - movq 504(%rsi), %rax - movq 504(%r8), %rdx - pextq %r14, %rax, %rax - movq %rcx, 496(%rdi) - sbbq %rax, %rdx - movq %rdx, 504(%rdi) - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_4096_mont_reduce_avx2_64,.-sp_4096_mont_reduce_avx2_64 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_4096_cond_add_32 -.type sp_4096_cond_add_32,@function -.align 16 -sp_4096_cond_add_32: -#else -.globl _sp_4096_cond_add_32 -.p2align 4 -_sp_4096_cond_add_32: -#endif /* __APPLE__ */ - subq $256, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq 48(%rdx), %r8 - movq 56(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 48(%rsp) - movq %r9, 56(%rsp) - movq 64(%rdx), %r8 - movq 72(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 64(%rsp) - movq %r9, 72(%rsp) - movq 80(%rdx), %r8 - movq 88(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 80(%rsp) - movq %r9, 88(%rsp) - movq 96(%rdx), %r8 - movq 104(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 96(%rsp) - movq %r9, 104(%rsp) - movq 112(%rdx), %r8 - movq 120(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 112(%rsp) - movq %r9, 120(%rsp) - movq 128(%rdx), %r8 - movq 136(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 128(%rsp) - movq %r9, 136(%rsp) - movq 144(%rdx), %r8 - movq 152(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 144(%rsp) - movq %r9, 152(%rsp) - movq 160(%rdx), %r8 - movq 168(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 160(%rsp) - movq %r9, 168(%rsp) - movq 176(%rdx), %r8 - movq 184(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 176(%rsp) - movq %r9, 184(%rsp) - movq 192(%rdx), %r8 - movq 200(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 192(%rsp) - movq %r9, 200(%rsp) - movq 208(%rdx), %r8 - movq 216(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 208(%rsp) - movq %r9, 216(%rsp) - movq 224(%rdx), %r8 - movq 232(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 224(%rsp) - movq %r9, 232(%rsp) - movq 240(%rdx), %r8 - movq 248(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 240(%rsp) - movq %r9, 248(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - addq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 32(%rdi) - movq 48(%rsi), %r8 - movq 48(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 40(%rdi) - movq 56(%rsi), %r9 - movq 56(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 48(%rdi) - movq 64(%rsi), %r8 - movq 64(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 56(%rdi) - movq 72(%rsi), %r9 - movq 72(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 64(%rdi) - movq 80(%rsi), %r8 - movq 80(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 72(%rdi) - movq 88(%rsi), %r9 - movq 88(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 80(%rdi) - movq 96(%rsi), %r8 - movq 96(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 88(%rdi) - movq 104(%rsi), %r9 - movq 104(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 96(%rdi) - movq 112(%rsi), %r8 - movq 112(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 104(%rdi) - movq 120(%rsi), %r9 - movq 120(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 112(%rdi) - movq 128(%rsi), %r8 - movq 128(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 120(%rdi) - movq 136(%rsi), %r9 - movq 136(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 128(%rdi) - movq 144(%rsi), %r8 - movq 144(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 136(%rdi) - movq 152(%rsi), %r9 - movq 152(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 144(%rdi) - movq 160(%rsi), %r8 - movq 160(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 152(%rdi) - movq 168(%rsi), %r9 - movq 168(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 160(%rdi) - movq 176(%rsi), %r8 - movq 176(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 168(%rdi) - movq 184(%rsi), %r9 - movq 184(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 176(%rdi) - movq 192(%rsi), %r8 - movq 192(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 184(%rdi) - movq 200(%rsi), %r9 - movq 200(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 192(%rdi) - movq 208(%rsi), %r8 - movq 208(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 200(%rdi) - movq 216(%rsi), %r9 - movq 216(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 208(%rdi) - movq 224(%rsi), %r8 - movq 224(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 216(%rdi) - movq 232(%rsi), %r9 - movq 232(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 224(%rdi) - movq 240(%rsi), %r8 - movq 240(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 232(%rdi) - movq 248(%rsi), %r9 - movq 248(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - adcq $0, %rax - addq $256, %rsp - repz retq -#ifndef __APPLE__ -.size sp_4096_cond_add_32,.-sp_4096_cond_add_32 -#endif /* __APPLE__ */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_4096_cond_add_avx2_32 -.type sp_4096_cond_add_avx2_32,@function -.align 16 -sp_4096_cond_add_avx2_32: -#else -.globl _sp_4096_cond_add_avx2_32 -.p2align 4 -_sp_4096_cond_add_avx2_32: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - addq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - adcq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - adcq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - adcq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - adcq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - adcq %r8, %r10 - movq 48(%rdx), %r9 - movq 48(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 40(%rdi) - adcq %r9, %r8 - movq 56(%rdx), %r10 - movq 56(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 48(%rdi) - adcq %r10, %r9 - movq 64(%rdx), %r8 - movq 64(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 56(%rdi) - adcq %r8, %r10 - movq 72(%rdx), %r9 - movq 72(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 64(%rdi) - adcq %r9, %r8 - movq 80(%rdx), %r10 - movq 80(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 72(%rdi) - adcq %r10, %r9 - movq 88(%rdx), %r8 - movq 88(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 80(%rdi) - adcq %r8, %r10 - movq 96(%rdx), %r9 - movq 96(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 88(%rdi) - adcq %r9, %r8 - movq 104(%rdx), %r10 - movq 104(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 96(%rdi) - adcq %r10, %r9 - movq 112(%rdx), %r8 - movq 112(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 104(%rdi) - adcq %r8, %r10 - movq 120(%rdx), %r9 - movq 120(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 112(%rdi) - adcq %r9, %r8 - movq 128(%rdx), %r10 - movq 128(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 120(%rdi) - adcq %r10, %r9 - movq 136(%rdx), %r8 - movq 136(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 128(%rdi) - adcq %r8, %r10 - movq 144(%rdx), %r9 - movq 144(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 136(%rdi) - adcq %r9, %r8 - movq 152(%rdx), %r10 - movq 152(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 144(%rdi) - adcq %r10, %r9 - movq 160(%rdx), %r8 - movq 160(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 152(%rdi) - adcq %r8, %r10 - movq 168(%rdx), %r9 - movq 168(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 160(%rdi) - adcq %r9, %r8 - movq 176(%rdx), %r10 - movq 176(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 168(%rdi) - adcq %r10, %r9 - movq 184(%rdx), %r8 - movq 184(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 176(%rdi) - adcq %r8, %r10 - movq 192(%rdx), %r9 - movq 192(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 184(%rdi) - adcq %r9, %r8 - movq 200(%rdx), %r10 - movq 200(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 192(%rdi) - adcq %r10, %r9 - movq 208(%rdx), %r8 - movq 208(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 200(%rdi) - adcq %r8, %r10 - movq 216(%rdx), %r9 - movq 216(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 208(%rdi) - adcq %r9, %r8 - movq 224(%rdx), %r10 - movq 224(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 216(%rdi) - adcq %r10, %r9 - movq 232(%rdx), %r8 - movq 232(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 224(%rdi) - adcq %r8, %r10 - movq 240(%rdx), %r9 - movq 240(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 232(%rdi) - adcq %r9, %r8 - movq 248(%rdx), %r10 - movq 248(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 240(%rdi) - adcq %r10, %r9 - movq %r9, 248(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_4096_cond_add_avx2_32,.-sp_4096_cond_add_avx2_32 -#endif /* __APPLE__ */ -/* Shift number left by n bit. (r = a << n) - * - * r Result of left shift by n. - * a Number to shift. - * n Amoutnt o shift. - */ -#ifndef __APPLE__ -.globl sp_4096_lshift_64 -.type sp_4096_lshift_64,@function -.align 16 -sp_4096_lshift_64: -#else -.globl _sp_4096_lshift_64 -.p2align 4 -_sp_4096_lshift_64: -#endif /* __APPLE__ */ - movq %rdx, %rcx - movq $0, %r10 - movq 472(%rsi), %r11 - movq 480(%rsi), %rdx - movq 488(%rsi), %rax - movq 496(%rsi), %r8 - movq 504(%rsi), %r9 - shldq %cl, %r9, %r10 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 480(%rdi) - movq %rax, 488(%rdi) - movq %r8, 496(%rdi) - movq %r9, 504(%rdi) - movq %r10, 512(%rdi) - movq 440(%rsi), %r9 - movq 448(%rsi), %rdx - movq 456(%rsi), %rax - movq 464(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 448(%rdi) - movq %rax, 456(%rdi) - movq %r8, 464(%rdi) - movq %r11, 472(%rdi) - movq 408(%rsi), %r11 - movq 416(%rsi), %rdx - movq 424(%rsi), %rax - movq 432(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 416(%rdi) - movq %rax, 424(%rdi) - movq %r8, 432(%rdi) - movq %r9, 440(%rdi) - movq 376(%rsi), %r9 - movq 384(%rsi), %rdx - movq 392(%rsi), %rax - movq 400(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 384(%rdi) - movq %rax, 392(%rdi) - movq %r8, 400(%rdi) - movq %r11, 408(%rdi) - movq 344(%rsi), %r11 - movq 352(%rsi), %rdx - movq 360(%rsi), %rax - movq 368(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 352(%rdi) - movq %rax, 360(%rdi) - movq %r8, 368(%rdi) - movq %r9, 376(%rdi) - movq 312(%rsi), %r9 - movq 320(%rsi), %rdx - movq 328(%rsi), %rax - movq 336(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 320(%rdi) - movq %rax, 328(%rdi) - movq %r8, 336(%rdi) - movq %r11, 344(%rdi) - movq 280(%rsi), %r11 - movq 288(%rsi), %rdx - movq 296(%rsi), %rax - movq 304(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 288(%rdi) - movq %rax, 296(%rdi) - movq %r8, 304(%rdi) - movq %r9, 312(%rdi) - movq 248(%rsi), %r9 - movq 256(%rsi), %rdx - movq 264(%rsi), %rax - movq 272(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 256(%rdi) - movq %rax, 264(%rdi) - movq %r8, 272(%rdi) - movq %r11, 280(%rdi) - movq 216(%rsi), %r11 - movq 224(%rsi), %rdx - movq 232(%rsi), %rax - movq 240(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 224(%rdi) - movq %rax, 232(%rdi) - movq %r8, 240(%rdi) - movq %r9, 248(%rdi) - movq 184(%rsi), %r9 - movq 192(%rsi), %rdx - movq 200(%rsi), %rax - movq 208(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 192(%rdi) - movq %rax, 200(%rdi) - movq %r8, 208(%rdi) - movq %r11, 216(%rdi) - movq 152(%rsi), %r11 - movq 160(%rsi), %rdx - movq 168(%rsi), %rax - movq 176(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 160(%rdi) - movq %rax, 168(%rdi) - movq %r8, 176(%rdi) - movq %r9, 184(%rdi) - movq 120(%rsi), %r9 - movq 128(%rsi), %rdx - movq 136(%rsi), %rax - movq 144(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 128(%rdi) - movq %rax, 136(%rdi) - movq %r8, 144(%rdi) - movq %r11, 152(%rdi) - movq 88(%rsi), %r11 - movq 96(%rsi), %rdx - movq 104(%rsi), %rax - movq 112(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 96(%rdi) - movq %rax, 104(%rdi) - movq %r8, 112(%rdi) - movq %r9, 120(%rdi) - movq 56(%rsi), %r9 - movq 64(%rsi), %rdx - movq 72(%rsi), %rax - movq 80(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r9, %rdx - movq %rdx, 64(%rdi) - movq %rax, 72(%rdi) - movq %r8, 80(%rdi) - movq %r11, 88(%rdi) - movq 24(%rsi), %r11 - movq 32(%rsi), %rdx - movq 40(%rsi), %rax - movq 48(%rsi), %r8 - shldq %cl, %r8, %r9 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shldq %cl, %r11, %rdx - movq %rdx, 32(%rdi) - movq %rax, 40(%rdi) - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %r8 - shldq %cl, %r8, %r11 - shldq %cl, %rax, %r8 - shldq %cl, %rdx, %rax - shlq %cl, %rdx - movq %rdx, (%rdi) - movq %rax, 8(%rdi) - movq %r8, 16(%rdi) - movq %r11, 24(%rdi) - repz retq -#endif /* WOLFSSL_SP_4096 */ -#endif /* WOLFSSL_SP_4096 */ -#ifndef WOLFSSL_SP_NO_256 -/* Conditionally copy a into r using the mask m. - * m is -1 to copy and 0 when not. - * - * r A single precision number to copy over. - * a A single precision number to copy. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_256_cond_copy_4 -.type sp_256_cond_copy_4,@function -.align 16 -sp_256_cond_copy_4: -#else -.globl _sp_256_cond_copy_4 -.p2align 4 -_sp_256_cond_copy_4: -#endif /* __APPLE__ */ - movq (%rdi), %rax - movq 8(%rdi), %rcx - movq 16(%rdi), %r8 - movq 24(%rdi), %r9 - xorq (%rsi), %rax - xorq 8(%rsi), %rcx - xorq 16(%rsi), %r8 - xorq 24(%rsi), %r9 - andq %rdx, %rax - andq %rdx, %rcx - andq %rdx, %r8 - andq %rdx, %r9 - xorq %rax, (%rdi) - xorq %rcx, 8(%rdi) - xorq %r8, 16(%rdi) - xorq %r9, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_cond_copy_4,.-sp_256_cond_copy_4 -#endif /* __APPLE__ */ -/* Multiply two Montogmery form numbers mod the modulus (prime). - * (r = a * b mod m) - * - * r Result of multiplication. - * a First number to multiply in Montogmery form. - * b Second number to multiply in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -#ifndef __APPLE__ -.globl sp_256_mont_mul_4 -.type sp_256_mont_mul_4,@function -.align 16 -sp_256_mont_mul_4: -#else -.globl _sp_256_mont_mul_4 -.p2align 4 -_sp_256_mont_mul_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - movq %rdx, %r8 - # A[0] * B[0] - movq (%r8), %rax - mulq (%rsi) - movq %rax, %r9 - movq %rdx, %r10 - # A[0] * B[1] - movq 8(%r8), %rax - mulq (%rsi) - xorq %r11, %r11 - addq %rax, %r10 - adcq %rdx, %r11 - # A[1] * B[0] - movq (%r8), %rax - mulq 8(%rsi) - xorq %r12, %r12 - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[0] * B[2] - movq 16(%r8), %rax - mulq (%rsi) - addq %rax, %r11 - adcq %rdx, %r12 - # A[1] * B[1] - movq 8(%r8), %rax - mulq 8(%rsi) - xorq %r13, %r13 - addq %rax, %r11 - adcq %rdx, %r12 - adcq $0, %r13 - # A[2] * B[0] - movq (%r8), %rax - mulq 16(%rsi) - addq %rax, %r11 - adcq %rdx, %r12 - adcq $0, %r13 - # A[0] * B[3] - movq 24(%r8), %rax - mulq (%rsi) - xorq %r14, %r14 - addq %rax, %r12 - adcq %rdx, %r13 - adcq $0, %r14 - # A[1] * B[2] - movq 16(%r8), %rax - mulq 8(%rsi) - addq %rax, %r12 - adcq %rdx, %r13 - adcq $0, %r14 - # A[2] * B[1] - movq 8(%r8), %rax - mulq 16(%rsi) - addq %rax, %r12 - adcq %rdx, %r13 - adcq $0, %r14 - # A[3] * B[0] - movq (%r8), %rax - mulq 24(%rsi) - addq %rax, %r12 - adcq %rdx, %r13 - adcq $0, %r14 - # A[1] * B[3] - movq 24(%r8), %rax - mulq 8(%rsi) - xorq %r15, %r15 - addq %rax, %r13 - adcq %rdx, %r14 - adcq $0, %r15 - # A[2] * B[2] - movq 16(%r8), %rax - mulq 16(%rsi) - addq %rax, %r13 - adcq %rdx, %r14 - adcq $0, %r15 - # A[3] * B[1] - movq 8(%r8), %rax - mulq 24(%rsi) - addq %rax, %r13 - adcq %rdx, %r14 - adcq $0, %r15 - # A[2] * B[3] - movq 24(%r8), %rax - mulq 16(%rsi) - xorq %rbx, %rbx - addq %rax, %r14 - adcq %rdx, %r15 - adcq $0, %rbx - # A[3] * B[2] - movq 16(%r8), %rax - mulq 24(%rsi) - addq %rax, %r14 - adcq %rdx, %r15 - adcq $0, %rbx - # A[3] * B[3] - movq 24(%r8), %rax - mulq 24(%rsi) - addq %rax, %r15 - adcq %rdx, %rbx - # Start Reduction - # mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192 - # - a[0] << 32 << 192 - # + (a[0] * 2) << 192 - movq %r9, %rax - movq %r12, %rdx - addq %r9, %rdx - movq %r10, %rsi - addq %r9, %rdx - movq %r11, %r8 - # a[0]-a[2] << 32 - shlq $32, %r9 - shldq $32, %rsi, %r11 - shldq $32, %rax, %r10 - # - a[0] << 32 << 192 - subq %r9, %rdx - # + a[0]-a[2] << 32 << 64 - addq %r9, %rsi - adcq %r10, %r8 - adcq %r11, %rdx - # a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu - # a += mu << 256 - xorq %r9, %r9 - addq %rax, %r13 - adcq %rsi, %r14 - adcq %r8, %r15 - adcq %rdx, %rbx - sbbq $0, %r9 - # a += mu << 192 - addq %rax, %r12 - adcq %rsi, %r13 - adcq %r8, %r14 - adcq %rdx, %r15 - adcq $0, %rbx - sbbq $0, %r9 - # mu <<= 32 - movq %rdx, %rcx - shldq $32, %r8, %rdx - shldq $32, %rsi, %r8 - shldq $32, %rax, %rsi - shrq $32, %rcx - shlq $32, %rax - # a += (mu << 32) << 64 - addq %r8, %r12 - adcq %rdx, %r13 - adcq %rcx, %r14 - adcq $0, %r15 - adcq $0, %rbx - sbbq $0, %r9 - # a -= (mu << 32) << 192 - subq %rax, %r12 - sbbq %rsi, %r13 - sbbq %r8, %r14 - sbbq %rdx, %r15 - sbbq %rcx, %rbx - adcq $0, %r9 - movq $4294967295, %rax - movq $18446744069414584321, %rsi - # mask m and sub from result if overflow - # m[0] = -1 & mask = mask - andq %r9, %rax - # m[2] = 0 & mask = 0 - andq %r9, %rsi - subq %r9, %r13 - sbbq %rax, %r14 - sbbq $0, %r15 - sbbq %rsi, %rbx - movq %r13, (%rdi) - movq %r14, 8(%rdi) - movq %r15, 16(%rdi) - movq %rbx, 24(%rdi) - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_mont_mul_4,.-sp_256_mont_mul_4 -#endif /* __APPLE__ */ -/* Square the Montgomery form number mod the modulus (prime). (r = a * a mod m) - * - * r Result of squaring. - * a Number to square in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -#ifndef __APPLE__ -.globl sp_256_mont_sqr_4 -.type sp_256_mont_sqr_4,@function -.align 16 -sp_256_mont_sqr_4: -#else -.globl _sp_256_mont_sqr_4 -.p2align 4 -_sp_256_mont_sqr_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - # A[0] * A[1] - movq (%rsi), %rax - mulq 8(%rsi) - movq %rax, %r10 - movq %rdx, %r11 - # A[0] * A[2] - movq (%rsi), %rax - mulq 16(%rsi) - xorq %r12, %r12 - addq %rax, %r11 - adcq %rdx, %r12 - # A[0] * A[3] - movq (%rsi), %rax - mulq 24(%rsi) - xorq %r13, %r13 - addq %rax, %r12 - adcq %rdx, %r13 - # A[1] * A[2] - movq 8(%rsi), %rax - mulq 16(%rsi) - xorq %r14, %r14 - addq %rax, %r12 - adcq %rdx, %r13 - adcq $0, %r14 - # A[1] * A[3] - movq 8(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r13 - adcq %rdx, %r14 - # A[2] * A[3] - movq 16(%rsi), %rax - mulq 24(%rsi) - xorq %r15, %r15 - addq %rax, %r14 - adcq %rdx, %r15 - # Double - xorq %rbx, %rbx - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - adcq %r13, %r13 - adcq %r14, %r14 - adcq %r15, %r15 - adcq $0, %rbx - # A[0] * A[0] - movq (%rsi), %rax - mulq %rax - movq %rax, %rax - movq %rdx, %rdx - movq %rax, %r9 - movq %rdx, %r8 - # A[1] * A[1] - movq 8(%rsi), %rax - mulq %rax - movq %rax, %rax - movq %rdx, %rdx - addq %r8, %r10 - adcq %rax, %r11 - adcq $0, %rdx - movq %rdx, %r8 - # A[2] * A[2] - movq 16(%rsi), %rax - mulq %rax - movq %rax, %rax - movq %rdx, %rdx - addq %r8, %r12 - adcq %rax, %r13 - adcq $0, %rdx - movq %rdx, %r8 - # A[3] * A[3] - movq 24(%rsi), %rax - mulq %rax - addq %rax, %r15 - adcq %rdx, %rbx - addq %r8, %r14 - adcq $0, %r15 - adcq $0, %rbx - # Start Reduction - # mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192 - # - a[0] << 32 << 192 - # + (a[0] * 2) << 192 - movq %r9, %rax - movq %r12, %rdx - addq %r9, %rdx - movq %r10, %rsi - addq %r9, %rdx - movq %r11, %r8 - # a[0]-a[2] << 32 - shlq $32, %r9 - shldq $32, %rsi, %r11 - shldq $32, %rax, %r10 - # - a[0] << 32 << 192 - subq %r9, %rdx - # + a[0]-a[2] << 32 << 64 - addq %r9, %rsi - adcq %r10, %r8 - adcq %r11, %rdx - # a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu - # a += mu << 256 - xorq %r9, %r9 - addq %rax, %r13 - adcq %rsi, %r14 - adcq %r8, %r15 - adcq %rdx, %rbx - sbbq $0, %r9 - # a += mu << 192 - addq %rax, %r12 - adcq %rsi, %r13 - adcq %r8, %r14 - adcq %rdx, %r15 - adcq $0, %rbx - sbbq $0, %r9 - # mu <<= 32 - movq %rdx, %rcx - shldq $32, %r8, %rdx - shldq $32, %rsi, %r8 - shldq $32, %rax, %rsi - shrq $32, %rcx - shlq $32, %rax - # a += (mu << 32) << 64 - addq %r8, %r12 - adcq %rdx, %r13 - adcq %rcx, %r14 - adcq $0, %r15 - adcq $0, %rbx - sbbq $0, %r9 - # a -= (mu << 32) << 192 - subq %rax, %r12 - sbbq %rsi, %r13 - sbbq %r8, %r14 - sbbq %rdx, %r15 - sbbq %rcx, %rbx - adcq $0, %r9 - movq $4294967295, %rax - movq $18446744069414584321, %rsi - # mask m and sub from result if overflow - # m[0] = -1 & mask = mask - andq %r9, %rax - # m[2] = 0 & mask = 0 - andq %r9, %rsi - subq %r9, %r13 - sbbq %rax, %r14 - sbbq $0, %r15 - sbbq %rsi, %rbx - movq %r13, (%rdi) - movq %r14, 8(%rdi) - movq %r15, 16(%rdi) - movq %rbx, 24(%rdi) - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_mont_sqr_4,.-sp_256_mont_sqr_4 -#endif /* __APPLE__ */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_256_cmp_4 -.type sp_256_cmp_4,@function -.align 16 -sp_256_cmp_4: -#else -.globl _sp_256_cmp_4 -.p2align 4 -_sp_256_cmp_4: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_256_cmp_4,.-sp_256_cmp_4 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_256_cond_sub_4 -.type sp_256_cond_sub_4,@function -.align 16 -sp_256_cond_sub_4: -#else -.globl _sp_256_cond_sub_4 -.p2align 4 -_sp_256_cond_sub_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq $0, %rax - movq (%rdx), %r12 - movq 8(%rdx), %r13 - movq 16(%rdx), %r14 - movq 24(%rdx), %r15 - andq %rcx, %r12 - andq %rcx, %r13 - andq %rcx, %r14 - andq %rcx, %r15 - movq (%rsi), %r8 - movq 8(%rsi), %r9 - movq 16(%rsi), %r10 - movq 24(%rsi), %r11 - subq %r12, %r8 - sbbq %r13, %r9 - sbbq %r14, %r10 - sbbq %r15, %r11 - movq %r8, (%rdi) - movq %r9, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - sbbq $0, %rax - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_cond_sub_4,.-sp_256_cond_sub_4 -#endif /* __APPLE__ */ -/* Sub b from a into r. (r = a - b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_sub_4 -.type sp_256_sub_4,@function -.align 16 -sp_256_sub_4: -#else -.globl _sp_256_sub_4 -.p2align 4 -_sp_256_sub_4: -#endif /* __APPLE__ */ - xorq %rax, %rax - movq (%rsi), %rcx - movq 8(%rsi), %r8 - movq 16(%rsi), %r9 - movq 24(%rsi), %r10 - subq (%rdx), %rcx - sbbq 8(%rdx), %r8 - sbbq 16(%rdx), %r9 - sbbq 24(%rdx), %r10 - movq %rcx, (%rdi) - movq %r8, 8(%rdi) - movq %r9, 16(%rdi) - movq %r10, 24(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_256_sub_4,.-sp_256_sub_4 -#endif /* __APPLE__ */ -/* Reduce the number back to 256 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_256_mont_reduce_4 -.type sp_256_mont_reduce_4,@function -.align 16 -sp_256_mont_reduce_4: -#else -.globl _sp_256_mont_reduce_4 -.p2align 4 -_sp_256_mont_reduce_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - # i = 0 - xorq %r14, %r14 - movq $4, %r8 - movq %rdi, %r13 -L_mont_loop_4: - # mu = a[i] * mp - movq (%r13), %r12 - imulq %rcx, %r12 - # a[i+0] += m[0] * mu - movq (%rsi), %rax - movq 8(%rsi), %r10 - mulq %r12 - movq (%r13), %r15 - addq %rax, %r15 - movq %rdx, %r9 - movq %r15, (%r13) - adcq $0, %r9 - # a[i+1] += m[1] * mu - movq %r10, %rax - mulq %r12 - movq 16(%rsi), %r10 - movq 8(%r13), %r15 - addq %r9, %rax - movq %rdx, %r11 - adcq $0, %r11 - addq %rax, %r15 - movq %r15, 8(%r13) - adcq $0, %r11 - # a[i+2] += m[2] * mu - movq %r10, %rax - mulq %r12 - movq 24(%rsi), %r10 - movq 16(%r13), %r15 - addq %r11, %rax - movq %rdx, %r9 - adcq $0, %r9 - addq %rax, %r15 - movq %r15, 16(%r13) - adcq $0, %r9 - # a[i+3] += m[3] * mu - movq %r10, %rax - mulq %r12 - movq 24(%r13), %r15 - addq %r9, %rax - adcq %r14, %rdx - movq $0, %r14 - adcq $0, %r14 - addq %rax, %r15 - movq %r15, 24(%r13) - adcq %rdx, 32(%r13) - adcq $0, %r14 - # i += 1 - addq $8, %r13 - decq %r8 - jnz L_mont_loop_4 - xorq %rax, %rax - movq 32(%rdi), %rdx - movq 40(%rdi), %r8 - movq 48(%rdi), %r15 - movq 56(%rdi), %r9 - subq %r14, %rax - movq (%rsi), %r10 - movq 8(%rsi), %r11 - movq 16(%rsi), %r12 - movq 24(%rsi), %r13 - andq %rax, %r10 - andq %rax, %r11 - andq %rax, %r12 - andq %rax, %r13 - subq %r10, %rdx - sbbq %r11, %r8 - sbbq %r12, %r15 - sbbq %r13, %r9 - movq %rdx, (%rdi) - movq %r8, 8(%rdi) - movq %r15, 16(%rdi) - movq %r9, 24(%rdi) - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_mont_reduce_4,.-sp_256_mont_reduce_4 -#endif /* __APPLE__ */ -/* Add two Montgomery form numbers (r = a + b % m). - * - * r Result of addition. - * a First number to add in Montogmery form. - * b Second number to add in Montogmery form. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_256_mont_add_4 -.type sp_256_mont_add_4,@function -.align 16 -sp_256_mont_add_4: -#else -.globl _sp_256_mont_add_4 -.p2align 4 -_sp_256_mont_add_4: -#endif /* __APPLE__ */ - movq (%rsi), %rax - movq 8(%rsi), %rcx - movq 16(%rsi), %r8 - movq 24(%rsi), %r9 - movq $4294967295, %r10 - movq $18446744069414584321, %r11 - addq (%rdx), %rax - adcq 8(%rdx), %rcx - adcq 16(%rdx), %r8 - movq $0, %rsi - adcq 24(%rdx), %r9 - sbbq $0, %rsi - andq %rsi, %r10 - andq %rsi, %r11 - subq %rsi, %rax - sbbq %r10, %rcx - movq %rax, (%rdi) - sbbq $0, %r8 - movq %rcx, 8(%rdi) - sbbq %r11, %r9 - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mont_add_4,.-sp_256_mont_add_4 -#endif /* __APPLE__ */ -/* Double a Montgomery form number (r = a + a % m). - * - * r Result of doubling. - * a Number to double in Montogmery form. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_256_mont_dbl_4 -.type sp_256_mont_dbl_4,@function -.align 16 -sp_256_mont_dbl_4: -#else -.globl _sp_256_mont_dbl_4 -.p2align 4 -_sp_256_mont_dbl_4: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %rcx - movq 24(%rsi), %r8 - movq $4294967295, %r9 - movq $18446744069414584321, %r10 - addq %rdx, %rdx - adcq %rax, %rax - adcq %rcx, %rcx - movq $0, %r11 - adcq %r8, %r8 - sbbq $0, %r11 - andq %r11, %r9 - andq %r11, %r10 - subq %r11, %rdx - sbbq %r9, %rax - movq %rdx, (%rdi) - sbbq $0, %rcx - movq %rax, 8(%rdi) - sbbq %r10, %r8 - movq %rcx, 16(%rdi) - movq %r8, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mont_dbl_4,.-sp_256_mont_dbl_4 -#endif /* __APPLE__ */ -/* Triple a Montgomery form number (r = a + a + a % m). - * - * r Result of Tripling. - * a Number to triple in Montogmery form. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_256_mont_tpl_4 -.type sp_256_mont_tpl_4,@function -.align 16 -sp_256_mont_tpl_4: -#else -.globl _sp_256_mont_tpl_4 -.p2align 4 -_sp_256_mont_tpl_4: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %rcx - movq 24(%rsi), %r8 - movq $4294967295, %r9 - movq $18446744069414584321, %r10 - addq %rdx, %rdx - adcq %rax, %rax - adcq %rcx, %rcx - movq $0, %r11 - adcq %r8, %r8 - sbbq $0, %r11 - andq %r11, %r9 - andq %r11, %r10 - subq %r11, %rdx - sbbq %r9, %rax - sbbq $0, %rcx - sbbq %r10, %r8 - movq $4294967295, %r9 - movq $18446744069414584321, %r10 - addq (%rsi), %rdx - adcq 8(%rsi), %rax - adcq 16(%rsi), %rcx - movq $0, %r11 - adcq 24(%rsi), %r8 - sbbq $0, %r11 - andq %r11, %r9 - andq %r11, %r10 - subq %r11, %rdx - sbbq %r9, %rax - movq %rdx, (%rdi) - sbbq $0, %rcx - movq %rax, 8(%rdi) - sbbq %r10, %r8 - movq %rcx, 16(%rdi) - movq %r8, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mont_tpl_4,.-sp_256_mont_tpl_4 -#endif /* __APPLE__ */ -/* Subtract two Montgomery form numbers (r = a - b % m). - * - * r Result of subtration. - * a Number to subtract from in Montogmery form. - * b Number to subtract with in Montogmery form. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_256_mont_sub_4 -.type sp_256_mont_sub_4,@function -.align 16 -sp_256_mont_sub_4: -#else -.globl _sp_256_mont_sub_4 -.p2align 4 -_sp_256_mont_sub_4: -#endif /* __APPLE__ */ - movq (%rsi), %rax - movq 8(%rsi), %rcx - movq 16(%rsi), %r8 - movq 24(%rsi), %r9 - movq $4294967295, %r10 - movq $18446744069414584321, %r11 - subq (%rdx), %rax - sbbq 8(%rdx), %rcx - sbbq 16(%rdx), %r8 - movq $0, %rsi - sbbq 24(%rdx), %r9 - sbbq $0, %rsi - andq %rsi, %r10 - andq %rsi, %r11 - addq %rsi, %rax - adcq %r10, %rcx - movq %rax, (%rdi) - adcq $0, %r8 - movq %rcx, 8(%rdi) - adcq %r11, %r9 - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mont_sub_4,.-sp_256_mont_sub_4 -#endif /* __APPLE__ */ -/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m) - * - * r Result of division by 2. - * a Number to divide. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_256_div2_4 -.type sp_256_div2_4,@function -.align 16 -sp_256_div2_4: -#else -.globl _sp_256_div2_4 -.p2align 4 -_sp_256_div2_4: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - movq 8(%rsi), %rax - movq 16(%rsi), %rcx - movq 24(%rsi), %r8 - movq $4294967295, %r9 - movq $18446744069414584321, %r10 - movq %rdx, %r11 - andq $1, %r11 - negq %r11 - andq %r11, %r9 - andq %r11, %r10 - addq %r11, %rdx - adcq %r9, %rax - adcq $0, %rcx - adcq %r10, %r8 - movq $0, %r11 - adcq $0, %r11 - shrdq $1, %rax, %rdx - shrdq $1, %rcx, %rax - shrdq $1, %r8, %rcx - shrdq $1, %r11, %r8 - movq %rdx, (%rdi) - movq %rax, 8(%rdi) - movq %rcx, 16(%rdi) - movq %r8, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_div2_4,.-sp_256_div2_4 -#endif /* __APPLE__ */ -/* Multiply two Montogmery form numbers mod the modulus (prime). - * (r = a * b mod m) - * - * r Result of multiplication. - * a First number to multiply in Montogmery form. - * b Second number to multiply in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -#ifndef __APPLE__ -.globl sp_256_mont_mul_avx2_4 -.type sp_256_mont_mul_avx2_4,@function -.align 16 -sp_256_mont_mul_avx2_4: -#else -.globl _sp_256_mont_mul_avx2_4 -.p2align 4 -_sp_256_mont_mul_avx2_4: -#endif /* __APPLE__ */ - push %rbx - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rbp - # A[0] * B[0] - movq (%rbp), %rdx - mulxq (%rsi), %r8, %r9 - # A[2] * B[0] - mulxq 16(%rsi), %r10, %r11 - # A[1] * B[0] - mulxq 8(%rsi), %rax, %rcx - xorq %r15, %r15 - adcxq %rax, %r9 - # A[1] * B[3] - movq 24(%rbp), %rdx - mulxq 8(%rsi), %r12, %r13 - adcxq %rcx, %r10 - # A[0] * B[1] - movq 8(%rbp), %rdx - mulxq (%rsi), %rax, %rcx - adoxq %rax, %r9 - # A[2] * B[1] - mulxq 16(%rsi), %rax, %r14 - adoxq %rcx, %r10 - adcxq %rax, %r11 - # A[1] * B[2] - movq 16(%rbp), %rdx - mulxq 8(%rsi), %rax, %rcx - adcxq %r14, %r12 - adoxq %rax, %r11 - adcxq %r15, %r13 - adoxq %rcx, %r12 - # A[0] * B[2] - mulxq (%rsi), %rax, %rcx - adoxq %r15, %r13 - xorq %r14, %r14 - adcxq %rax, %r10 - # A[1] * B[1] - movq 8(%rbp), %rdx - mulxq 8(%rsi), %rdx, %rax - adcxq %rcx, %r11 - adoxq %rdx, %r10 - # A[3] * B[1] - movq 8(%rbp), %rdx - adoxq %rax, %r11 - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r12 - # A[2] * B[2] - movq 16(%rbp), %rdx - mulxq 16(%rsi), %rdx, %rax - adcxq %rcx, %r13 - adoxq %rdx, %r12 - # A[3] * B[3] - movq 24(%rbp), %rdx - adoxq %rax, %r13 - mulxq 24(%rsi), %rax, %rcx - adoxq %r15, %r14 - adcxq %rax, %r14 - # A[0] * B[3] - mulxq (%rsi), %rdx, %rax - adcxq %rcx, %r15 - xorq %rcx, %rcx - adcxq %rdx, %r11 - # A[3] * B[0] - movq 24(%rsi), %rdx - adcxq %rax, %r12 - mulxq (%rbp), %rbx, %rax - adoxq %rbx, %r11 - adoxq %rax, %r12 - # A[3] * B[2] - mulxq 16(%rbp), %rdx, %rax - adcxq %rdx, %r13 - # A[2] * B[3] - movq 24(%rbp), %rdx - adcxq %rax, %r14 - mulxq 16(%rsi), %rax, %rdx - adcxq %rcx, %r15 - adoxq %rax, %r13 - adoxq %rdx, %r14 - adoxq %rcx, %r15 - # Start Reduction - # mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192 - # - a[0] << 32 << 192 - # + (a[0] * 2) << 192 - movq %r8, %rax - movq %r11, %rdx - addq %r8, %rdx - movq %r9, %rsi - addq %r8, %rdx - movq %r10, %rbp - # a[0]-a[2] << 32 - shlq $32, %r8 - shldq $32, %rsi, %r10 - shldq $32, %rax, %r9 - # - a[0] << 32 << 192 - subq %r8, %rdx - # + a[0]-a[2] << 32 << 64 - addq %r8, %rsi - adcq %r9, %rbp - adcq %r10, %rdx - # a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu - # a += mu << 256 - xorq %r8, %r8 - addq %rax, %r12 - adcq %rsi, %r13 - adcq %rbp, %r14 - adcq %rdx, %r15 - sbbq $0, %r8 - # a += mu << 192 - addq %rax, %r11 - adcq %rsi, %r12 - adcq %rbp, %r13 - adcq %rdx, %r14 - adcq $0, %r15 - sbbq $0, %r8 - # mu <<= 32 - movq %rdx, %rcx - shldq $32, %rbp, %rdx - shldq $32, %rsi, %rbp - shldq $32, %rax, %rsi - shrq $32, %rcx - shlq $32, %rax - # a += (mu << 32) << 64 - addq %rbp, %r11 - adcq %rdx, %r12 - adcq %rcx, %r13 - adcq $0, %r14 - adcq $0, %r15 - sbbq $0, %r8 - # a -= (mu << 32) << 192 - subq %rax, %r11 - sbbq %rsi, %r12 - sbbq %rbp, %r13 - sbbq %rdx, %r14 - sbbq %rcx, %r15 - adcq $0, %r8 - movq $4294967295, %rax - movq $18446744069414584321, %rsi - # mask m and sub from result if overflow - # m[0] = -1 & mask = mask - andq %r8, %rax - # m[2] = 0 & mask = 0 - andq %r8, %rsi - subq %r8, %r12 - sbbq %rax, %r13 - sbbq $0, %r14 - sbbq %rsi, %r15 - movq %r12, (%rdi) - movq %r13, 8(%rdi) - movq %r14, 16(%rdi) - movq %r15, 24(%rdi) - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %rbp - pop %rbx - repz retq -#ifndef __APPLE__ -.size sp_256_mont_mul_avx2_4,.-sp_256_mont_mul_avx2_4 -#endif /* __APPLE__ */ -/* Square the Montgomery form number mod the modulus (prime). (r = a * a mod m) - * - * r Result of squaring. - * a Number to square in Montogmery form. - * m Modulus (prime). - * mp Montogmery mulitplier. - */ -#ifndef __APPLE__ -.globl sp_256_mont_sqr_avx2_4 -.type sp_256_mont_sqr_avx2_4,@function -.align 16 -sp_256_mont_sqr_avx2_4: -#else -.globl _sp_256_mont_sqr_avx2_4 -.p2align 4 -_sp_256_mont_sqr_avx2_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - # A[0] * A[1] - movq (%rsi), %rdx - movq 16(%rsi), %r15 - mulxq 8(%rsi), %r9, %r10 - # A[0] * A[3] - mulxq 24(%rsi), %r11, %r12 - # A[2] * A[1] - movq %r15, %rdx - mulxq 8(%rsi), %rcx, %rbx - # A[2] * A[3] - mulxq 24(%rsi), %r13, %r14 - xorq %r15, %r15 - adoxq %rcx, %r11 - adoxq %rbx, %r12 - # A[2] * A[0] - mulxq (%rsi), %rcx, %rbx - # A[1] * A[3] - movq 8(%rsi), %rdx - adoxq %r15, %r13 - mulxq 24(%rsi), %rax, %r8 - adcxq %rcx, %r10 - adoxq %r15, %r14 - adcxq %rbx, %r11 - adcxq %rax, %r12 - adcxq %r8, %r13 - adcxq %r15, %r14 - # Double with Carry Flag - xorq %r15, %r15 - # A[0] * A[0] - movq (%rsi), %rdx - mulxq %rdx, %r8, %rax - adcxq %r9, %r9 - adcxq %r10, %r10 - adoxq %rax, %r9 - # A[1] * A[1] - movq 8(%rsi), %rdx - mulxq %rdx, %rcx, %rbx - adcxq %r11, %r11 - adoxq %rcx, %r10 - # A[2] * A[2] - movq 16(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adcxq %r12, %r12 - adoxq %rbx, %r11 - adcxq %r13, %r13 - adoxq %rax, %r12 - adcxq %r14, %r14 - # A[3] * A[3] - movq 24(%rsi), %rdx - mulxq %rdx, %rax, %rbx - adoxq %rcx, %r13 - adcxq %r15, %r15 - adoxq %rax, %r14 - adoxq %rbx, %r15 - # Start Reduction - # mu = a[0]-a[3] + a[0]-a[2] << 32 << 64 + (a[0] * 2) << 192 - # - a[0] << 32 << 192 - # + (a[0] * 2) << 192 - movq %r8, %rax - movq %r11, %rdx - addq %r8, %rdx - movq %r9, %rsi - addq %r8, %rdx - movq %r10, %rcx - # a[0]-a[2] << 32 - shlq $32, %r8 - shldq $32, %rsi, %r10 - shldq $32, %rax, %r9 - # - a[0] << 32 << 192 - subq %r8, %rdx - # + a[0]-a[2] << 32 << 64 - addq %r8, %rsi - adcq %r9, %rcx - adcq %r10, %rdx - # a += (mu << 256) - (mu << 224) + (mu << 192) + (mu << 96) - mu - # a += mu << 256 - xorq %r8, %r8 - addq %rax, %r12 - adcq %rsi, %r13 - adcq %rcx, %r14 - adcq %rdx, %r15 - sbbq $0, %r8 - # a += mu << 192 - addq %rax, %r11 - adcq %rsi, %r12 - adcq %rcx, %r13 - adcq %rdx, %r14 - adcq $0, %r15 - sbbq $0, %r8 - # mu <<= 32 - movq %rdx, %rbx - shldq $32, %rcx, %rdx - shldq $32, %rsi, %rcx - shldq $32, %rax, %rsi - shrq $32, %rbx - shlq $32, %rax - # a += (mu << 32) << 64 - addq %rcx, %r11 - adcq %rdx, %r12 - adcq %rbx, %r13 - adcq $0, %r14 - adcq $0, %r15 - sbbq $0, %r8 - # a -= (mu << 32) << 192 - subq %rax, %r11 - sbbq %rsi, %r12 - sbbq %rcx, %r13 - sbbq %rdx, %r14 - sbbq %rbx, %r15 - adcq $0, %r8 - movq $4294967295, %rax - movq $18446744069414584321, %rsi - # mask m and sub from result if overflow - # m[0] = -1 & mask = mask - andq %r8, %rax - # m[2] = 0 & mask = 0 - andq %r8, %rsi - subq %r8, %r12 - sbbq %rax, %r13 - sbbq $0, %r14 - sbbq %rsi, %r15 - movq %r12, (%rdi) - movq %r13, 8(%rdi) - movq %r14, 16(%rdi) - movq %r15, 24(%rdi) - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_mont_sqr_avx2_4,.-sp_256_mont_sqr_avx2_4 -#endif /* __APPLE__ */ -/* Add 1 to a. (a = a + 1) - * - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_add_one_4 -.type sp_256_add_one_4,@function -.align 16 -sp_256_add_one_4: -#else -.globl _sp_256_add_one_4 -.p2align 4 -_sp_256_add_one_4: -#endif /* __APPLE__ */ - addq $1, (%rdi) - adcq $0, 8(%rdi) - adcq $0, 16(%rdi) - adcq $0, 24(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_add_one_4,.-sp_256_add_one_4 -#endif /* __APPLE__ */ -/* Read big endian unsigned byte array into r. - * - * r A single precision integer. - * size Maximum number of bytes to convert - * a Byte array. - * n Number of bytes in array to read. - */ -#ifndef __APPLE__ -.globl sp_256_from_bin -.type sp_256_from_bin,@function -.align 16 -sp_256_from_bin: -#else -.globl _sp_256_from_bin -.p2align 4 -_sp_256_from_bin: -#endif /* __APPLE__ */ - movq %rdx, %r9 - movq %rdi, %r10 - addq %rcx, %r9 - addq $32, %r10 - xorq %r11, %r11 - jmp L_256_from_bin_64_end -L_256_from_bin_64_start: - subq $64, %r9 - movbeq 56(%r9), %rax - movbeq 48(%r9), %r8 - movq %rax, (%rdi) - movq %r8, 8(%rdi) - movbeq 40(%r9), %rax - movbeq 32(%r9), %r8 - movq %rax, 16(%rdi) - movq %r8, 24(%rdi) - movbeq 24(%r9), %rax - movbeq 16(%r9), %r8 - movq %rax, 32(%rdi) - movq %r8, 40(%rdi) - movbeq 8(%r9), %rax - movbeq (%r9), %r8 - movq %rax, 48(%rdi) - movq %r8, 56(%rdi) - addq $64, %rdi - subq $64, %rcx -L_256_from_bin_64_end: - cmpq $63, %rcx - jg L_256_from_bin_64_start - jmp L_256_from_bin_8_end -L_256_from_bin_8_start: - subq $8, %r9 - movbeq (%r9), %rax - movq %rax, (%rdi) - addq $8, %rdi - subq $8, %rcx -L_256_from_bin_8_end: - cmpq $7, %rcx - jg L_256_from_bin_8_start - cmpq %r11, %rcx - je L_256_from_bin_hi_end - movq %r11, %r8 - movq %r11, %rax -L_256_from_bin_hi_start: - movb (%rdx), %al - shlq $8, %r8 - incq %rdx - addq %rax, %r8 - decq %rcx - jg L_256_from_bin_hi_start - movq %r8, (%rdi) - addq $8, %rdi -L_256_from_bin_hi_end: - cmpq %r10, %rdi - je L_256_from_bin_zero_end -L_256_from_bin_zero_start: - movq %r11, (%rdi) - addq $8, %rdi - cmpq %r10, %rdi - jl L_256_from_bin_zero_start -L_256_from_bin_zero_end: - repz retq -#ifndef __APPLE__ -.size sp_256_from_bin,.-sp_256_from_bin -#endif /* __APPLE__ */ -/* Write r as big endian to byte array. - * Fixed length number of bytes written: 32 - * - * r A single precision integer. - * a Byte array. - */ -#ifndef __APPLE__ -.globl sp_256_to_bin -.type sp_256_to_bin,@function -.align 16 -sp_256_to_bin: -#else -.globl _sp_256_to_bin -.p2align 4 -_sp_256_to_bin: -#endif /* __APPLE__ */ - movbeq 24(%rdi), %rdx - movbeq 16(%rdi), %rax - movq %rdx, (%rsi) - movq %rax, 8(%rsi) - movbeq 8(%rdi), %rdx - movbeq (%rdi), %rax - movq %rdx, 16(%rsi) - movq %rax, 24(%rsi) - repz retq -#ifndef __APPLE__ -.size sp_256_to_bin,.-sp_256_to_bin -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_add_4 -.type sp_256_add_4,@function -.align 16 -sp_256_add_4: -#else -.globl _sp_256_add_4 -.p2align 4 -_sp_256_add_4: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq %r8, 24(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_256_add_4,.-sp_256_add_4 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_mul_4 -.type sp_256_mul_4,@function -.align 16 -sp_256_mul_4: -#else -.globl _sp_256_mul_4 -.p2align 4 -_sp_256_mul_4: -#endif /* __APPLE__ */ - movq %rdx, %rcx - subq $32, %rsp - # A[0] * B[0] - movq (%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - movq %rax, (%rsp) - movq %rdx, %r9 - # A[0] * B[1] - movq 8(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[0] - movq (%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 8(%rsp) - # A[0] * B[2] - movq 16(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[1] - movq 8(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[0] - movq (%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 16(%rsp) - # A[0] * B[3] - movq 24(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[2] - movq 16(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[1] - movq 8(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[0] - movq (%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 24(%rsp) - # A[1] * B[3] - movq 24(%rcx), %rax - mulq 8(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[2] - movq 16(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[1] - movq 8(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 32(%rdi) - # A[2] * B[3] - movq 24(%rcx), %rax - mulq 16(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[2] - movq 16(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 40(%rdi) - # A[3] * B[3] - movq 24(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 48(%rdi) - movq %r9, 56(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r8 - movq 24(%rsp), %r9 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - addq $32, %rsp - repz retq -#ifndef __APPLE__ -.size sp_256_mul_4,.-sp_256_mul_4 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r Result of multiplication. - * a First number to multiply. - * b Second number to multiply. - */ -#ifndef __APPLE__ -.globl sp_256_mul_avx2_4 -.type sp_256_mul_avx2_4,@function -.align 16 -sp_256_mul_avx2_4: -#else -.globl _sp_256_mul_avx2_4 -.p2align 4 -_sp_256_mul_avx2_4: -#endif /* __APPLE__ */ - push %rbx - push %rbp - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rbp - # A[0] * B[0] - movq (%rbp), %rdx - mulxq (%rsi), %r8, %r9 - # A[2] * B[0] - mulxq 16(%rsi), %r10, %r11 - # A[1] * B[0] - mulxq 8(%rsi), %rax, %rcx - xorq %r15, %r15 - adcxq %rax, %r9 - # A[1] * B[3] - movq 24(%rbp), %rdx - mulxq 8(%rsi), %r12, %r13 - adcxq %rcx, %r10 - # A[0] * B[1] - movq 8(%rbp), %rdx - mulxq (%rsi), %rax, %rcx - adoxq %rax, %r9 - # A[2] * B[1] - mulxq 16(%rsi), %rax, %r14 - adoxq %rcx, %r10 - adcxq %rax, %r11 - # A[1] * B[2] - movq 16(%rbp), %rdx - mulxq 8(%rsi), %rax, %rcx - adcxq %r14, %r12 - adoxq %rax, %r11 - adcxq %r15, %r13 - adoxq %rcx, %r12 - # A[0] * B[2] - mulxq (%rsi), %rax, %rcx - adoxq %r15, %r13 - xorq %r14, %r14 - adcxq %rax, %r10 - # A[1] * B[1] - movq 8(%rbp), %rdx - mulxq 8(%rsi), %rdx, %rax - adcxq %rcx, %r11 - adoxq %rdx, %r10 - # A[3] * B[1] - movq 8(%rbp), %rdx - adoxq %rax, %r11 - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r12 - # A[2] * B[2] - movq 16(%rbp), %rdx - mulxq 16(%rsi), %rdx, %rax - adcxq %rcx, %r13 - adoxq %rdx, %r12 - # A[3] * B[3] - movq 24(%rbp), %rdx - adoxq %rax, %r13 - mulxq 24(%rsi), %rax, %rcx - adoxq %r15, %r14 - adcxq %rax, %r14 - # A[0] * B[3] - mulxq (%rsi), %rdx, %rax - adcxq %rcx, %r15 - xorq %rcx, %rcx - adcxq %rdx, %r11 - # A[3] * B[0] - movq 24(%rsi), %rdx - adcxq %rax, %r12 - mulxq (%rbp), %rbx, %rax - adoxq %rbx, %r11 - adoxq %rax, %r12 - # A[3] * B[2] - mulxq 16(%rbp), %rdx, %rax - adcxq %rdx, %r13 - # A[2] * B[3] - movq 24(%rbp), %rdx - adcxq %rax, %r14 - mulxq 16(%rsi), %rax, %rdx - adcxq %rcx, %r15 - adoxq %rax, %r13 - adoxq %rdx, %r14 - adoxq %rcx, %r15 - movq %r8, (%rdi) - movq %r9, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - movq %r12, 32(%rdi) - movq %r13, 40(%rdi) - movq %r14, 48(%rdi) - movq %r15, 56(%rdi) - pop %r15 - pop %r14 - pop %r13 - pop %r12 - pop %rbp - pop %rbx - repz retq -#ifndef __APPLE__ -.size sp_256_mul_avx2_4,.-sp_256_mul_avx2_4 -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_sub_in_place_4 -.type sp_256_sub_in_place_4,@function -.align 16 -sp_256_sub_in_place_4: -#else -.globl _sp_256_sub_in_place_4 -.p2align 4 -_sp_256_sub_in_place_4: -#endif /* __APPLE__ */ - xorq %rax, %rax - movq (%rsi), %rdx - movq 8(%rsi), %rcx - movq 16(%rsi), %r8 - movq 24(%rsi), %r9 - subq %rdx, (%rdi) - sbbq %rcx, 8(%rdi) - sbbq %r8, 16(%rdi) - sbbq %r9, 24(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_256_sub_in_place_4,.-sp_256_sub_in_place_4 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_256_cond_sub_avx2_4 -.type sp_256_cond_sub_avx2_4,@function -.align 16 -sp_256_cond_sub_avx2_4: -#else -.globl _sp_256_cond_sub_avx2_4 -.p2align 4 -_sp_256_cond_sub_avx2_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq $0, %rax - movq (%rdx), %r12 - movq 8(%rdx), %r13 - movq 16(%rdx), %r14 - movq 24(%rdx), %r15 - andq %rcx, %r12 - andq %rcx, %r13 - andq %rcx, %r14 - andq %rcx, %r15 - movq (%rsi), %r8 - movq 8(%rsi), %r9 - movq 16(%rsi), %r10 - movq 24(%rsi), %r11 - subq %r12, %r8 - sbbq %r13, %r9 - sbbq %r14, %r10 - sbbq %r15, %r11 - movq %r8, (%rdi) - movq %r9, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - sbbq $0, %rax - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_cond_sub_avx2_4,.-sp_256_cond_sub_avx2_4 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_256_mul_d_4 -.type sp_256_mul_d_4,@function -.align 16 -sp_256_mul_d_4: -#else -.globl _sp_256_mul_d_4 -.p2align 4 -_sp_256_mul_d_4: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 24(%rdi) - movq %r9, 32(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mul_d_4,.-sp_256_mul_d_4 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_256_mul_d_avx2_4 -.type sp_256_mul_d_avx2_4,@function -.align 16 -sp_256_mul_d_avx2_4: -#else -.globl _sp_256_mul_d_avx2_4 -.p2align 4 -_sp_256_mul_d_avx2_4: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 24(%rdi) - movq %r9, 32(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_256_mul_d_avx2_4,.-sp_256_mul_d_avx2_4 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_256_sqr_4 -.type sp_256_sqr_4,@function -.align 16 -sp_256_sqr_4: -#else -.globl _sp_256_sqr_4 -.p2align 4 -_sp_256_sqr_4: -#endif /* __APPLE__ */ - push %r12 - subq $32, %rsp - # A[0] * A[0] - movq (%rsi), %rax - mulq %rax - xorq %r9, %r9 - movq %rax, (%rsp) - movq %rdx, %r8 - # A[0] * A[1] - movq 8(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 8(%rsp) - # A[0] * A[2] - movq 16(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[1] * A[1] - movq 8(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 16(%rsp) - # A[0] * A[3] - movq 24(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * A[2] - movq 16(%rsi), %rax - mulq 8(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 24(%rsp) - # A[1] * A[3] - movq 24(%rsi), %rax - mulq 8(%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[2] * A[2] - movq 16(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 32(%rdi) - # A[2] * A[3] - movq 24(%rsi), %rax - mulq 16(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 40(%rdi) - # A[3] * A[3] - movq 24(%rsi), %rax - mulq %rax - addq %rax, %rcx - adcq %rdx, %r8 - movq %rcx, 48(%rdi) - movq %r8, 56(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - addq $32, %rsp - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_sqr_4,.-sp_256_sqr_4 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r Result of squaring. - * a Number to square in Montogmery form. - */ -#ifndef __APPLE__ -.globl sp_256_sqr_avx2_4 -.type sp_256_sqr_avx2_4,@function -.align 16 -sp_256_sqr_avx2_4: -#else -.globl _sp_256_sqr_avx2_4 -.p2align 4 -_sp_256_sqr_avx2_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - # A[0] * A[1] - movq (%rsi), %rdx - movq 16(%rsi), %r15 - mulxq 8(%rsi), %r9, %r10 - # A[0] * A[3] - mulxq 24(%rsi), %r11, %r12 - # A[2] * A[1] - movq %r15, %rdx - mulxq 8(%rsi), %rcx, %rbx - # A[2] * A[3] - mulxq 24(%rsi), %r13, %r14 - xorq %r15, %r15 - adoxq %rcx, %r11 - adoxq %rbx, %r12 - # A[2] * A[0] - mulxq (%rsi), %rcx, %rbx - # A[1] * A[3] - movq 8(%rsi), %rdx - adoxq %r15, %r13 - mulxq 24(%rsi), %rax, %r8 - adcxq %rcx, %r10 - adoxq %r15, %r14 - adcxq %rbx, %r11 - adcxq %rax, %r12 - adcxq %r8, %r13 - adcxq %r15, %r14 - # Double with Carry Flag - xorq %r15, %r15 - # A[0] * A[0] - movq (%rsi), %rdx - mulxq %rdx, %r8, %rax - adcxq %r9, %r9 - adcxq %r10, %r10 - adoxq %rax, %r9 - # A[1] * A[1] - movq 8(%rsi), %rdx - mulxq %rdx, %rcx, %rbx - adcxq %r11, %r11 - adoxq %rcx, %r10 - # A[2] * A[2] - movq 16(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adcxq %r12, %r12 - adoxq %rbx, %r11 - adcxq %r13, %r13 - adoxq %rax, %r12 - adcxq %r14, %r14 - # A[3] * A[3] - movq 24(%rsi), %rdx - mulxq %rdx, %rax, %rbx - adoxq %rcx, %r13 - adcxq %r15, %r15 - adoxq %rax, %r14 - adoxq %rbx, %r15 - movq %r8, (%rdi) - movq %r9, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - movq %r12, 32(%rdi) - movq %r13, 40(%rdi) - movq %r14, 48(%rdi) - movq %r15, 56(%rdi) - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_sqr_avx2_4,.-sp_256_sqr_avx2_4 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 256 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_256_mont_reduce_avx2_4 -.type sp_256_mont_reduce_avx2_4,@function -.align 16 -sp_256_mont_reduce_avx2_4: -#else -.globl _sp_256_mont_reduce_avx2_4 -.p2align 4 -_sp_256_mont_reduce_avx2_4: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - movq %rdx, %rax - movq (%rdi), %r12 - movq 8(%rdi), %r13 - movq 16(%rdi), %r14 - movq 24(%rdi), %r15 - xorq %r11, %r11 - xorq %r10, %r10 - # a[0-4] += m[0-3] * mu = m[0-3] * (a[0] * mp) - movq 32(%rdi), %rbx - # mu = a[0] * mp - movq %r12, %rdx - mulxq %rax, %rdx, %rcx - # a[0] += m[0] * mu - mulx (%rsi), %r8, %r9 - adcxq %r8, %r12 - # a[1] += m[1] * mu - mulx 8(%rsi), %r8, %rcx - adoxq %r9, %r13 - adcxq %r8, %r13 - # a[2] += m[2] * mu - mulx 16(%rsi), %r8, %r9 - adoxq %rcx, %r14 - adcxq %r8, %r14 - # a[3] += m[3] * mu - mulx 24(%rsi), %r8, %rcx - adoxq %r9, %r15 - adcxq %r8, %r15 - # a[4] += carry - adoxq %rcx, %rbx - adcxq %r10, %rbx - # carry - adoxq %r10, %r11 - adcxq %r10, %r11 - # a[1-5] += m[0-3] * mu = m[0-3] * (a[1] * mp) - movq 40(%rdi), %r12 - # mu = a[1] * mp - movq %r13, %rdx - mulxq %rax, %rdx, %rcx - # a[1] += m[0] * mu - mulx (%rsi), %r8, %r9 - adcxq %r8, %r13 - # a[2] += m[1] * mu - mulx 8(%rsi), %r8, %rcx - adoxq %r9, %r14 - adcxq %r8, %r14 - # a[3] += m[2] * mu - mulx 16(%rsi), %r8, %r9 - adoxq %rcx, %r15 - adcxq %r8, %r15 - # a[4] += m[3] * mu - mulx 24(%rsi), %r8, %rcx - adoxq %r9, %rbx - adcxq %r8, %rbx - # a[5] += carry - adoxq %rcx, %r12 - adcxq %r11, %r12 - movq %r10, %r11 - # carry - adoxq %r10, %r11 - adcxq %r10, %r11 - # a[2-6] += m[0-3] * mu = m[0-3] * (a[2] * mp) - movq 48(%rdi), %r13 - # mu = a[2] * mp - movq %r14, %rdx - mulxq %rax, %rdx, %rcx - # a[2] += m[0] * mu - mulx (%rsi), %r8, %r9 - adcxq %r8, %r14 - # a[3] += m[1] * mu - mulx 8(%rsi), %r8, %rcx - adoxq %r9, %r15 - adcxq %r8, %r15 - # a[4] += m[2] * mu - mulx 16(%rsi), %r8, %r9 - adoxq %rcx, %rbx - adcxq %r8, %rbx - # a[5] += m[3] * mu - mulx 24(%rsi), %r8, %rcx - adoxq %r9, %r12 - adcxq %r8, %r12 - # a[6] += carry - adoxq %rcx, %r13 - adcxq %r11, %r13 - movq %r10, %r11 - # carry - adoxq %r10, %r11 - adcxq %r10, %r11 - # a[3-7] += m[0-3] * mu = m[0-3] * (a[3] * mp) - movq 56(%rdi), %r14 - # mu = a[3] * mp - movq %r15, %rdx - mulxq %rax, %rdx, %rcx - # a[3] += m[0] * mu - mulx (%rsi), %r8, %r9 - adcxq %r8, %r15 - # a[4] += m[1] * mu - mulx 8(%rsi), %r8, %rcx - adoxq %r9, %rbx - adcxq %r8, %rbx - # a[5] += m[2] * mu - mulx 16(%rsi), %r8, %r9 - adoxq %rcx, %r12 - adcxq %r8, %r12 - # a[6] += m[3] * mu - mulx 24(%rsi), %r8, %rcx - adoxq %r9, %r13 - adcxq %r8, %r13 - # a[7] += carry - adoxq %rcx, %r14 - adcxq %r11, %r14 - movq %r10, %r11 - # carry - adoxq %r10, %r11 - adcxq %r10, %r11 - # Subtract mod if carry - negq %r11 - movq $17562291160714782033, %r8 - movq $13611842547513532036, %r9 - movq $18446744069414584320, %rdx - andq %r11, %r8 - andq %r11, %r9 - andq %r11, %rdx - subq %r8, %rbx - sbbq %r9, %r12 - sbbq %r11, %r13 - sbbq %rdx, %r14 - movq %rbx, (%rdi) - movq %r12, 8(%rdi) - movq %r13, 16(%rdi) - movq %r14, 24(%rdi) - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_256_mont_reduce_avx2_4,.-sp_256_mont_reduce_avx2_4 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -#endif /* !WOLFSSL_SP_NO_256 */ -#ifdef WOLFSSL_SP_384 -/* Conditionally copy a into r using the mask m. - * m is -1 to copy and 0 when not. - * - * r A single precision number to copy over. - * a A single precision number to copy. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_384_cond_copy_6 -.type sp_384_cond_copy_6,@function -.align 16 -sp_384_cond_copy_6: -#else -.globl _sp_384_cond_copy_6 -.p2align 4 -_sp_384_cond_copy_6: -#endif /* __APPLE__ */ - movq (%rdi), %rax - movq 8(%rdi), %rcx - movq 16(%rdi), %r8 - movq 24(%rdi), %r9 - movq 32(%rdi), %r10 - movq 40(%rdi), %r11 - xorq (%rsi), %rax - xorq 8(%rsi), %rcx - xorq 16(%rsi), %r8 - xorq 24(%rsi), %r9 - xorq 32(%rsi), %r10 - xorq 40(%rsi), %r11 - andq %rdx, %rax - andq %rdx, %rcx - andq %rdx, %r8 - andq %rdx, %r9 - andq %rdx, %r10 - andq %rdx, %r11 - xorq %rax, (%rdi) - xorq %rcx, 8(%rdi) - xorq %r8, 16(%rdi) - xorq %r9, 24(%rdi) - xorq %r10, 32(%rdi) - xorq %r11, 40(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_384_cond_copy_6,.-sp_384_cond_copy_6 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_mul_6 -.type sp_384_mul_6,@function -.align 16 -sp_384_mul_6: -#else -.globl _sp_384_mul_6 -.p2align 4 -_sp_384_mul_6: -#endif /* __APPLE__ */ - movq %rdx, %rcx - subq $48, %rsp - # A[0] * B[0] - movq (%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - movq %rax, (%rsp) - movq %rdx, %r9 - # A[0] * B[1] - movq 8(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[0] - movq (%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 8(%rsp) - # A[0] * B[2] - movq 16(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[1] - movq 8(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[0] - movq (%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 16(%rsp) - # A[0] * B[3] - movq 24(%rcx), %rax - mulq (%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[1] * B[2] - movq 16(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[1] - movq 8(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[0] - movq (%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 24(%rsp) - # A[0] * B[4] - movq 32(%rcx), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[1] * B[3] - movq 24(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B[2] - movq 16(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[1] - movq 8(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[0] - movq (%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 32(%rsp) - # A[0] * B[5] - movq 40(%rcx), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * B[4] - movq 32(%rcx), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * B[3] - movq 24(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B[2] - movq 16(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[1] - movq 8(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[0] - movq (%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 40(%rsp) - # A[1] * B[5] - movq 40(%rcx), %rax - mulq 8(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[2] * B[4] - movq 32(%rcx), %rax - mulq 16(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[3] * B[3] - movq 24(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B[2] - movq 16(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[1] - movq 8(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 48(%rdi) - # A[2] * B[5] - movq 40(%rcx), %rax - mulq 16(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[3] * B[4] - movq 32(%rcx), %rax - mulq 24(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[4] * B[3] - movq 24(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B[2] - movq 16(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - adcq $0, %r8 - movq %r9, 56(%rdi) - # A[3] * B[5] - movq 40(%rcx), %rax - mulq 24(%rsi) - xorq %r9, %r9 - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[4] * B[4] - movq 32(%rcx), %rax - mulq 32(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - # A[5] * B[3] - movq 24(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - adcq $0, %r9 - movq %r10, 64(%rdi) - # A[4] * B[5] - movq 40(%rcx), %rax - mulq 32(%rsi) - xorq %r10, %r10 - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - # A[5] * B[4] - movq 32(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %r10 - movq %r8, 72(%rdi) - # A[5] * B[5] - movq 40(%rcx), %rax - mulq 40(%rsi) - addq %rax, %r9 - adcq %rdx, %r10 - movq %r9, 80(%rdi) - movq %r10, 88(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r8 - movq 24(%rsp), %r9 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r8, 16(%rdi) - movq %r9, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - addq $48, %rsp - repz retq -#ifndef __APPLE__ -.size sp_384_mul_6,.-sp_384_mul_6 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_384_cond_sub_6 -.type sp_384_cond_sub_6,@function -.align 16 -sp_384_cond_sub_6: -#else -.globl _sp_384_cond_sub_6 -.p2align 4 -_sp_384_cond_sub_6: -#endif /* __APPLE__ */ - subq $48, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - subq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - sbbq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - sbbq %rdx, %r9 - movq %r8, 32(%rdi) - movq %r9, 40(%rdi) - sbbq $0, %rax - addq $48, %rsp - repz retq -#ifndef __APPLE__ -.size sp_384_cond_sub_6,.-sp_384_cond_sub_6 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 384 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_384_mont_reduce_6 -.type sp_384_mont_reduce_6,@function -.align 16 -sp_384_mont_reduce_6: -#else -.globl _sp_384_mont_reduce_6 -.p2align 4 -_sp_384_mont_reduce_6: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - push %rbp - movq (%rdi), %r11 - movq 8(%rdi), %r12 - movq 16(%rdi), %r13 - movq 24(%rdi), %r14 - movq 32(%rdi), %r15 - movq 40(%rdi), %rsi - xorq %r10, %r10 - # a[0-7] += m[0-5] * mu[0..1] = m[0-5] * (a[0..1] * mp) - movq 48(%rdi), %rbx - movq 56(%rdi), %rbp - movq %r11, %rdx - movq %r12, %rax - shldq $32, %rdx, %rax - shlq $32, %rdx - addq %r11, %rdx - adcq %r12, %rax - addq %r11, %rax - movq %rdx, %rcx - movq %rax, %r8 - movq %rax, %r9 - shldq $32, %rcx, %r8 - shlq $32, %rcx - shrq $32, %r9 - addq %rcx, %r11 - adcq %r8, %r12 - adcq %r9, %r13 - adcq $0, %r14 - adcq $0, %r15 - adcq $0, %rsi - adcq %rdx, %rbx - adcq %rax, %rbp - adcq $0, %r10 - addq %rax, %rcx - adcq %rdx, %r8 - adcq %rax, %r9 - movq $0, %rax - adcq $0, %rax - subq %r8, %r13 - sbbq %r9, %r14 - sbbq %rax, %r15 - sbbq $0, %rsi - sbbq $0, %rbx - sbbq $0, %rbp - sbbq $0, %r10 - # a[2-9] += m[0-5] * mu[0..1] = m[0-5] * (a[2..3] * mp) - movq 64(%rdi), %r11 - movq 72(%rdi), %r12 - movq %r13, %rdx - movq %r14, %rax - shldq $32, %rdx, %rax - shlq $32, %rdx - addq %r13, %rdx - adcq %r14, %rax - addq %r13, %rax - movq %rdx, %rcx - movq %rax, %r8 - movq %rax, %r9 - shldq $32, %rcx, %r8 - shlq $32, %rcx - shrq $32, %r9 - addq %r10, %r11 - adcq $0, %r12 - movq $0, %r10 - adcq $0, %r10 - addq %rcx, %r13 - adcq %r8, %r14 - adcq %r9, %r15 - adcq $0, %rsi - adcq $0, %rbx - adcq $0, %rbp - adcq %rdx, %r11 - adcq %rax, %r12 - adcq $0, %r10 - addq %rax, %rcx - adcq %rdx, %r8 - adcq %rax, %r9 - movq $0, %rax - adcq $0, %rax - subq %r8, %r15 - sbbq %r9, %rsi - sbbq %rax, %rbx - sbbq $0, %rbp - sbbq $0, %r11 - sbbq $0, %r12 - sbbq $0, %r10 - # a[4-11] += m[0-5] * mu[0..1] = m[0-5] * (a[4..5] * mp) - movq 80(%rdi), %r13 - movq 88(%rdi), %r14 - movq %r15, %rdx - movq %rsi, %rax - shldq $32, %rdx, %rax - shlq $32, %rdx - addq %r15, %rdx - adcq %rsi, %rax - addq %r15, %rax - movq %rdx, %rcx - movq %rax, %r8 - movq %rax, %r9 - shldq $32, %rcx, %r8 - shlq $32, %rcx - shrq $32, %r9 - addq %r10, %r13 - adcq $0, %r14 - movq $0, %r10 - adcq $0, %r10 - addq %rcx, %r15 - adcq %r8, %rsi - adcq %r9, %rbx - adcq $0, %rbp - adcq $0, %r11 - adcq $0, %r12 - adcq %rdx, %r13 - adcq %rax, %r14 - adcq $0, %r10 - addq %rax, %rcx - adcq %rdx, %r8 - adcq %rax, %r9 - movq $0, %rax - adcq $0, %rax - subq %r8, %rbx - sbbq %r9, %rbp - sbbq %rax, %r11 - sbbq $0, %r12 - sbbq $0, %r13 - sbbq $0, %r14 - sbbq $0, %r10 - # Subtract mod if carry - negq %r10 - movq $18446744073709551614, %r9 - movq %r10, %rcx - movq %r10, %r8 - shrq $32, %rcx - shlq $32, %r8 - andq %r10, %r9 - subq %rcx, %rbx - sbbq %r8, %rbp - sbbq %r9, %r11 - sbbq %r10, %r12 - sbbq %r10, %r13 - sbbq %r10, %r14 - movq %rbx, (%rdi) - movq %rbp, 8(%rdi) - movq %r11, 16(%rdi) - movq %r12, 24(%rdi) - movq %r13, 32(%rdi) - movq %r14, 40(%rdi) - pop %rbp - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_mont_reduce_6,.-sp_384_mont_reduce_6 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Reduce the number back to 384 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_384_mont_reduce_order_6 -.type sp_384_mont_reduce_order_6,@function -.align 16 -sp_384_mont_reduce_order_6: -#else -.globl _sp_384_mont_reduce_order_6 -.p2align 4 -_sp_384_mont_reduce_order_6: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - movq %rdx, %rcx - xorq %r15, %r15 - # i = 6 - movq $6, %r8 - movq (%rdi), %r13 - movq 8(%rdi), %r14 -L_mont_loop_order_6: - # mu = a[i] * mp - movq %r13, %r11 - imulq %rcx, %r11 - # a[i+0] += m[0] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq (%rsi) - addq %rax, %r13 - adcq %rdx, %r10 - # a[i+1] += m[1] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 8(%rsi) - movq %r14, %r13 - addq %rax, %r13 - adcq %rdx, %r9 - addq %r10, %r13 - adcq $0, %r9 - # a[i+2] += m[2] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 16(%rsi) - movq 16(%rdi), %r14 - addq %rax, %r14 - adcq %rdx, %r10 - addq %r9, %r14 - adcq $0, %r10 - # a[i+3] += m[3] * mu - movq %r11, %rax - xorq %r9, %r9 - mulq 24(%rsi) - movq 24(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r9 - addq %r10, %r12 - movq %r12, 24(%rdi) - adcq $0, %r9 - # a[i+4] += m[4] * mu - movq %r11, %rax - xorq %r10, %r10 - mulq 32(%rsi) - movq 32(%rdi), %r12 - addq %rax, %r12 - adcq %rdx, %r10 - addq %r9, %r12 - movq %r12, 32(%rdi) - adcq $0, %r10 - # a[i+5] += m[5] * mu - movq %r11, %rax - mulq 40(%rsi) - movq 40(%rdi), %r12 - addq %rax, %r10 - adcq %r15, %rdx - movq $0, %r15 - adcq $0, %r15 - addq %r10, %r12 - movq %r12, 40(%rdi) - adcq %rdx, 48(%rdi) - adcq $0, %r15 - # i -= 1 - addq $8, %rdi - decq %r8 - jnz L_mont_loop_order_6 - movq %r13, (%rdi) - movq %r14, 8(%rdi) - negq %r15 - movq %r15, %rcx - movq %rsi, %rdx - movq %rdi, %rsi - subq $48, %rdi -#ifndef __APPLE__ - callq sp_384_cond_sub_6@plt -#else - callq _sp_384_cond_sub_6 -#endif /* __APPLE__ */ - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_mont_reduce_order_6,.-sp_384_mont_reduce_order_6 -#endif /* __APPLE__ */ -/* Square a and put result in r. (r = a * a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_sqr_6 -.type sp_384_sqr_6,@function -.align 16 -sp_384_sqr_6: -#else -.globl _sp_384_sqr_6 -.p2align 4 -_sp_384_sqr_6: -#endif /* __APPLE__ */ - push %r12 - subq $48, %rsp - # A[0] * A[0] - movq (%rsi), %rax - mulq %rax - xorq %r9, %r9 - movq %rax, (%rsp) - movq %rdx, %r8 - # A[0] * A[1] - movq 8(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 8(%rsp) - # A[0] * A[2] - movq 16(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[1] * A[1] - movq 8(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 16(%rsp) - # A[0] * A[3] - movq 24(%rsi), %rax - mulq (%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[1] * A[2] - movq 16(%rsi), %rax - mulq 8(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 24(%rsp) - # A[0] * A[4] - movq 32(%rsi), %rax - mulq (%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[1] * A[3] - movq 24(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[2] * A[2] - movq 16(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 32(%rsp) - # A[0] * A[5] - movq 40(%rsi), %rax - mulq (%rsi) - xorq %r8, %r8 - xorq %r12, %r12 - movq %rax, %r10 - movq %rdx, %r11 - # A[1] * A[4] - movq 32(%rsi), %rax - mulq 8(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - # A[2] * A[3] - movq 24(%rsi), %rax - mulq 16(%rsi) - addq %rax, %r10 - adcq %rdx, %r11 - adcq $0, %r12 - addq %r10, %r10 - adcq %r11, %r11 - adcq %r12, %r12 - addq %r10, %r9 - adcq %r11, %rcx - adcq %r12, %r8 - movq %r9, 40(%rsp) - # A[1] * A[5] - movq 40(%rsi), %rax - mulq 8(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[2] * A[4] - movq 32(%rsi), %rax - mulq 16(%rsi) - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * A[3] - movq 24(%rsi), %rax - mulq %rax - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 48(%rdi) - # A[2] * A[5] - movq 40(%rsi), %rax - mulq 16(%rsi) - xorq %rcx, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - # A[3] * A[4] - movq 32(%rsi), %rax - mulq 24(%rsi) - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - addq %rax, %r8 - adcq %rdx, %r9 - adcq $0, %rcx - movq %r8, 56(%rdi) - # A[3] * A[5] - movq 40(%rsi), %rax - mulq 24(%rsi) - xorq %r8, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - # A[4] * A[4] - movq 32(%rsi), %rax - mulq %rax - addq %rax, %r9 - adcq %rdx, %rcx - adcq $0, %r8 - movq %r9, 64(%rdi) - # A[4] * A[5] - movq 40(%rsi), %rax - mulq 32(%rsi) - xorq %r9, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - addq %rax, %rcx - adcq %rdx, %r8 - adcq $0, %r9 - movq %rcx, 72(%rdi) - # A[5] * A[5] - movq 40(%rsi), %rax - mulq %rax - addq %rax, %r8 - adcq %rdx, %r9 - movq %r8, 80(%rdi) - movq %r9, 88(%rdi) - movq (%rsp), %rax - movq 8(%rsp), %rdx - movq 16(%rsp), %r10 - movq 24(%rsp), %r11 - movq %rax, (%rdi) - movq %rdx, 8(%rdi) - movq %r10, 16(%rdi) - movq %r11, 24(%rdi) - movq 32(%rsp), %rax - movq 40(%rsp), %rdx - movq %rax, 32(%rdi) - movq %rdx, 40(%rdi) - addq $48, %rsp - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_sqr_6,.-sp_384_sqr_6 -#endif /* __APPLE__ */ -/* Compare a with b in constant time. - * - * a A single precision integer. - * b A single precision integer. - * return -ve, 0 or +ve if a is less than, equal to or greater than b - * respectively. - */ -#ifndef __APPLE__ -.globl sp_384_cmp_6 -.type sp_384_cmp_6,@function -.align 16 -sp_384_cmp_6: -#else -.globl _sp_384_cmp_6 -.p2align 4 -_sp_384_cmp_6: -#endif /* __APPLE__ */ - xorq %rcx, %rcx - movq $-1, %rdx - movq $-1, %rax - movq $1, %r8 - movq 40(%rdi), %r9 - movq 40(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 32(%rdi), %r9 - movq 32(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 24(%rdi), %r9 - movq 24(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 16(%rdi), %r9 - movq 16(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq 8(%rdi), %r9 - movq 8(%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - movq (%rdi), %r9 - movq (%rsi), %r10 - andq %rdx, %r9 - andq %rdx, %r10 - subq %r10, %r9 - cmova %r8, %rax - cmovc %rdx, %rax - cmovnz %rcx, %rdx - xorq %rdx, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_cmp_6,.-sp_384_cmp_6 -#endif /* __APPLE__ */ -/* Add b to a into r. (r = a + b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_add_6 -.type sp_384_add_6,@function -.align 16 -sp_384_add_6: -#else -.globl _sp_384_add_6 -.p2align 4 -_sp_384_add_6: -#endif /* __APPLE__ */ - # Add - movq (%rsi), %rcx - xorq %rax, %rax - addq (%rdx), %rcx - movq 8(%rsi), %r8 - movq %rcx, (%rdi) - adcq 8(%rdx), %r8 - movq 16(%rsi), %rcx - movq %r8, 8(%rdi) - adcq 16(%rdx), %rcx - movq 24(%rsi), %r8 - movq %rcx, 16(%rdi) - adcq 24(%rdx), %r8 - movq 32(%rsi), %rcx - movq %r8, 24(%rdi) - adcq 32(%rdx), %rcx - movq 40(%rsi), %r8 - movq %rcx, 32(%rdi) - adcq 40(%rdx), %r8 - movq %r8, 40(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_add_6,.-sp_384_add_6 -#endif /* __APPLE__ */ -/* Add a to a into r. (r = a + a) - * - * r A single precision integer. - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_dbl_6 -.type sp_384_dbl_6,@function -.align 16 -sp_384_dbl_6: -#else -.globl _sp_384_dbl_6 -.p2align 4 -_sp_384_dbl_6: -#endif /* __APPLE__ */ - movq (%rsi), %rdx - xorq %rax, %rax - addq %rdx, %rdx - movq 8(%rsi), %rcx - movq %rdx, (%rdi) - adcq %rcx, %rcx - movq 16(%rsi), %rdx - movq %rcx, 8(%rdi) - adcq %rdx, %rdx - movq 24(%rsi), %rcx - movq %rdx, 16(%rdi) - adcq %rcx, %rcx - movq 32(%rsi), %rdx - movq %rcx, 24(%rdi) - adcq %rdx, %rdx - movq 40(%rsi), %rcx - movq %rdx, 32(%rdi) - adcq %rcx, %rcx - movq %rcx, 40(%rdi) - adcq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_dbl_6,.-sp_384_dbl_6 -#endif /* __APPLE__ */ -/* Sub b from a into r. (r = a - b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_sub_6 -.type sp_384_sub_6,@function -.align 16 -sp_384_sub_6: -#else -.globl _sp_384_sub_6 -.p2align 4 -_sp_384_sub_6: -#endif /* __APPLE__ */ - push %r12 - xorq %rax, %rax - movq (%rsi), %rcx - movq 8(%rsi), %r8 - movq 16(%rsi), %r9 - movq 24(%rsi), %r10 - movq 32(%rsi), %r11 - movq 40(%rsi), %r12 - subq (%rdx), %rcx - sbbq 8(%rdx), %r8 - sbbq 16(%rdx), %r9 - sbbq 24(%rdx), %r10 - sbbq 32(%rdx), %r11 - sbbq 40(%rdx), %r12 - movq %rcx, (%rdi) - movq %r8, 8(%rdi) - movq %r9, 16(%rdi) - movq %r10, 24(%rdi) - movq %r11, 32(%rdi) - movq %r12, 40(%rdi) - sbbq $0, %rax - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_sub_6,.-sp_384_sub_6 -#endif /* __APPLE__ */ -/* Conditionally add a and b using the mask m. - * m is -1 to add and 0 when not. - * - * r A single precision number representing conditional add result. - * a A single precision number to add with. - * b A single precision number to add. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_384_cond_add_6 -.type sp_384_cond_add_6,@function -.align 16 -sp_384_cond_add_6: -#else -.globl _sp_384_cond_add_6 -.p2align 4 -_sp_384_cond_add_6: -#endif /* __APPLE__ */ - subq $48, %rsp - movq $0, %rax - movq (%rdx), %r8 - movq 8(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, (%rsp) - movq %r9, 8(%rsp) - movq 16(%rdx), %r8 - movq 24(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 16(%rsp) - movq %r9, 24(%rsp) - movq 32(%rdx), %r8 - movq 40(%rdx), %r9 - andq %rcx, %r8 - andq %rcx, %r9 - movq %r8, 32(%rsp) - movq %r9, 40(%rsp) - movq (%rsi), %r8 - movq (%rsp), %rdx - addq %rdx, %r8 - movq 8(%rsi), %r9 - movq 8(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, (%rdi) - movq 16(%rsi), %r8 - movq 16(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 8(%rdi) - movq 24(%rsi), %r9 - movq 24(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 16(%rdi) - movq 32(%rsi), %r8 - movq 32(%rsp), %rdx - adcq %rdx, %r8 - movq %r9, 24(%rdi) - movq 40(%rsi), %r9 - movq 40(%rsp), %rdx - adcq %rdx, %r9 - movq %r8, 32(%rdi) - movq %r9, 40(%rdi) - adcq $0, %rax - addq $48, %rsp - repz retq -#ifndef __APPLE__ -.size sp_384_cond_add_6,.-sp_384_cond_add_6 -#endif /* __APPLE__ */ -/* Divide the number by 2 mod the modulus (prime). (r = a / 2 % m) - * - * r Result of division by 2. - * a Number to divide. - * m Modulus (prime). - */ -#ifndef __APPLE__ -.globl sp_384_div2_6 -.type sp_384_div2_6,@function -.align 16 -sp_384_div2_6: -#else -.globl _sp_384_div2_6 -.p2align 4 -_sp_384_div2_6: -#endif /* __APPLE__ */ - subq $48, %rsp - movq (%rsi), %rax - movq %rax, %r11 - andq $1, %r11 - negq %r11 - xorq %r10, %r10 - movq (%rdx), %r8 - andq %r11, %r8 - movq %r8, (%rsp) - movq 8(%rdx), %r8 - andq %r11, %r8 - movq %r8, 8(%rsp) - movq 16(%rdx), %r8 - andq %r11, %r8 - movq %r8, 16(%rsp) - movq 24(%rdx), %r8 - andq %r11, %r8 - movq %r8, 24(%rsp) - movq 32(%rdx), %r8 - andq %r11, %r8 - movq %r8, 32(%rsp) - movq 40(%rdx), %r8 - andq %r11, %r8 - movq %r8, 40(%rsp) - addq %rax, (%rsp) - movq 8(%rsi), %rax - adcq %rax, 8(%rsp) - movq 16(%rsi), %rax - adcq %rax, 16(%rsp) - movq 24(%rsi), %rax - adcq %rax, 24(%rsp) - movq 32(%rsi), %rax - adcq %rax, 32(%rsp) - movq 40(%rsi), %rax - adcq %rax, 40(%rsp) - adcq $0, %r10 - movq (%rsp), %rax - movq 8(%rsp), %rcx - shrdq $1, %rcx, %rax - movq %rax, (%rdi) - movq 16(%rsp), %rax - shrdq $1, %rax, %rcx - movq %rcx, 8(%rdi) - movq 24(%rsp), %rcx - shrdq $1, %rcx, %rax - movq %rax, 16(%rdi) - movq 32(%rsp), %rax - shrdq $1, %rax, %rcx - movq %rcx, 24(%rdi) - movq 40(%rsp), %rcx - shrdq $1, %rcx, %rax - movq %rax, 32(%rdi) - shrdq $1, %r10, %rcx - movq %rcx, 40(%rdi) - addq $48, %rsp - repz retq -#ifndef __APPLE__ -.size sp_384_div2_6,.-sp_384_div2_6 -#endif /* __APPLE__ */ -/* Multiply a and b into r. (r = a * b) - * - * r Result of multiplication. - * a First number to multiply. - * b Second number to multiply. - */ -#ifndef __APPLE__ -.globl sp_384_mul_avx2_6 -.type sp_384_mul_avx2_6,@function -.align 16 -sp_384_mul_avx2_6: -#else -.globl _sp_384_mul_avx2_6 -.p2align 4 -_sp_384_mul_avx2_6: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - movq %rdx, %rax - subq $40, %rsp - xorq %rbx, %rbx - movq (%rsi), %rdx - # A[0] * B[0] - mulxq (%rax), %r9, %r10 - # A[0] * B[1] - mulxq 8(%rax), %rcx, %r11 - adcxq %rcx, %r10 - # A[0] * B[2] - mulxq 16(%rax), %rcx, %r12 - adcxq %rcx, %r11 - # A[0] * B[3] - mulxq 24(%rax), %rcx, %r13 - adcxq %rcx, %r12 - # A[0] * B[4] - mulxq 32(%rax), %rcx, %r14 - adcxq %rcx, %r13 - # A[0] * B[5] - mulxq 40(%rax), %rcx, %r15 - adcxq %rcx, %r14 - adcxq %rbx, %r15 - movq %r9, (%rsp) - movq $0, %r9 - adcxq %rbx, %r9 - xorq %rbx, %rbx - movq 8(%rsi), %rdx - # A[1] * B[0] - mulxq (%rax), %rcx, %r8 - adcxq %rcx, %r10 - adoxq %r8, %r11 - # A[1] * B[1] - mulxq 8(%rax), %rcx, %r8 - adcxq %rcx, %r11 - adoxq %r8, %r12 - # A[1] * B[2] - mulxq 16(%rax), %rcx, %r8 - adcxq %rcx, %r12 - adoxq %r8, %r13 - # A[1] * B[3] - mulxq 24(%rax), %rcx, %r8 - adcxq %rcx, %r13 - adoxq %r8, %r14 - # A[1] * B[4] - mulxq 32(%rax), %rcx, %r8 - adcxq %rcx, %r14 - adoxq %r8, %r15 - # A[1] * B[5] - mulxq 40(%rax), %rcx, %r8 - adcxq %rcx, %r15 - adoxq %r8, %r9 - adcxq %rbx, %r9 - movq %r10, 8(%rsp) - movq $0, %r10 - adcxq %rbx, %r10 - adoxq %rbx, %r10 - xorq %rbx, %rbx - movq 16(%rsi), %rdx - # A[2] * B[0] - mulxq (%rax), %rcx, %r8 - adcxq %rcx, %r11 - adoxq %r8, %r12 - # A[2] * B[1] - mulxq 8(%rax), %rcx, %r8 - adcxq %rcx, %r12 - adoxq %r8, %r13 - # A[2] * B[2] - mulxq 16(%rax), %rcx, %r8 - adcxq %rcx, %r13 - adoxq %r8, %r14 - # A[2] * B[3] - mulxq 24(%rax), %rcx, %r8 - adcxq %rcx, %r14 - adoxq %r8, %r15 - # A[2] * B[4] - mulxq 32(%rax), %rcx, %r8 - adcxq %rcx, %r15 - adoxq %r8, %r9 - # A[2] * B[5] - mulxq 40(%rax), %rcx, %r8 - adcxq %rcx, %r9 - adoxq %r8, %r10 - adcxq %rbx, %r10 - movq %r11, 16(%rsp) - movq $0, %r11 - adcxq %rbx, %r11 - adoxq %rbx, %r11 - xorq %rbx, %rbx - movq 24(%rsi), %rdx - # A[3] * B[0] - mulxq (%rax), %rcx, %r8 - adcxq %rcx, %r12 - adoxq %r8, %r13 - # A[3] * B[1] - mulxq 8(%rax), %rcx, %r8 - adcxq %rcx, %r13 - adoxq %r8, %r14 - # A[3] * B[2] - mulxq 16(%rax), %rcx, %r8 - adcxq %rcx, %r14 - adoxq %r8, %r15 - # A[3] * B[3] - mulxq 24(%rax), %rcx, %r8 - adcxq %rcx, %r15 - adoxq %r8, %r9 - # A[3] * B[4] - mulxq 32(%rax), %rcx, %r8 - adcxq %rcx, %r9 - adoxq %r8, %r10 - # A[3] * B[5] - mulxq 40(%rax), %rcx, %r8 - adcxq %rcx, %r10 - adoxq %r8, %r11 - adcxq %rbx, %r11 - movq %r12, 24(%rsp) - movq $0, %r12 - adcxq %rbx, %r12 - adoxq %rbx, %r12 - xorq %rbx, %rbx - movq 32(%rsi), %rdx - # A[4] * B[0] - mulxq (%rax), %rcx, %r8 - adcxq %rcx, %r13 - adoxq %r8, %r14 - # A[4] * B[1] - mulxq 8(%rax), %rcx, %r8 - adcxq %rcx, %r14 - adoxq %r8, %r15 - # A[4] * B[2] - mulxq 16(%rax), %rcx, %r8 - adcxq %rcx, %r15 - adoxq %r8, %r9 - # A[4] * B[3] - mulxq 24(%rax), %rcx, %r8 - adcxq %rcx, %r9 - adoxq %r8, %r10 - # A[4] * B[4] - mulxq 32(%rax), %rcx, %r8 - adcxq %rcx, %r10 - adoxq %r8, %r11 - # A[4] * B[5] - mulxq 40(%rax), %rcx, %r8 - adcxq %rcx, %r11 - adoxq %r8, %r12 - adcxq %rbx, %r12 - movq %r13, 32(%rsp) - movq 40(%rsi), %rdx - # A[5] * B[0] - mulxq (%rax), %rcx, %r8 - adcxq %rcx, %r14 - adoxq %r8, %r15 - # A[5] * B[1] - mulxq 8(%rax), %rcx, %r8 - adcxq %rcx, %r15 - adoxq %r8, %r9 - # A[5] * B[2] - mulxq 16(%rax), %rcx, %r8 - adcxq %rcx, %r9 - adoxq %r8, %r10 - # A[5] * B[3] - mulxq 24(%rax), %rcx, %r8 - adcxq %rcx, %r10 - adoxq %r8, %r11 - # A[5] * B[4] - mulxq 32(%rax), %rcx, %r8 - adcxq %rcx, %r11 - adoxq %r8, %r12 - # A[5] * B[5] - mulxq 40(%rax), %rcx, %r13 - adcxq %rcx, %r12 - adoxq %rbx, %r13 - adcxq %rbx, %r13 - movq %r14, 40(%rdi) - movq %r15, 48(%rdi) - movq %r9, 56(%rdi) - movq %r10, 64(%rdi) - movq %r11, 72(%rdi) - movq %r12, 80(%rdi) - movq %r13, 88(%rdi) - movq (%rsp), %r9 - movq 8(%rsp), %r10 - movq 16(%rsp), %r11 - movq 24(%rsp), %r12 - movq 32(%rsp), %r13 - movq %r9, (%rdi) - movq %r10, 8(%rdi) - movq %r11, 16(%rdi) - movq %r12, 24(%rdi) - movq %r13, 32(%rdi) - addq $40, %rsp - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_mul_avx2_6,.-sp_384_mul_avx2_6 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Reduce the number back to 384 bits using Montgomery reduction. - * - * a A single precision number to reduce in place. - * m The single precision number representing the modulus. - * mp The digit representing the negative inverse of m mod 2^n. - */ -#ifndef __APPLE__ -.globl sp_384_mont_reduce_order_avx2_6 -.type sp_384_mont_reduce_order_avx2_6,@function -.align 16 -sp_384_mont_reduce_order_avx2_6: -#else -.globl _sp_384_mont_reduce_order_avx2_6 -.p2align 4 -_sp_384_mont_reduce_order_avx2_6: -#endif /* __APPLE__ */ - push %r12 - push %r13 - movq %rdx, %rax - xorq %r13, %r13 - movq (%rdi), %r12 - xorq %r11, %r11 -L_mont_loop_order_avx2_6: - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 8(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 16(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 24(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 16(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 32(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 24(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 40(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 32(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 48(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 40(%rdi) - adcxq %r13, %r9 - movq %r9, 48(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 16(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 24(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 32(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 24(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 40(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 32(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 40(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 56(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 48(%rdi) - adcxq %r13, %r9 - movq %r9, 56(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 24(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 32(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 40(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 32(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 48(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 40(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 56(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 48(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 64(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 56(%rdi) - adcxq %r13, %r9 - movq %r9, 64(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 32(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 40(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 48(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 40(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 56(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 48(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 56(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 72(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 64(%rdi) - adcxq %r13, %r9 - movq %r9, 72(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 40(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 48(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 56(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 48(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 64(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 56(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 72(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 64(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 80(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 72(%rdi) - adcxq %r13, %r9 - movq %r9, 80(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - # mu = a[i] * mp - movq %r12, %rdx - movq %r12, %r9 - imulq %rax, %rdx - xorq %r11, %r11 - # a[i+0] += m[0] * mu - mulxq (%rsi), %rcx, %r8 - movq 48(%rdi), %r12 - adcxq %rcx, %r9 - adoxq %r8, %r12 - # a[i+1] += m[1] * mu - mulxq 8(%rsi), %rcx, %r8 - movq 56(%rdi), %r9 - adcxq %rcx, %r12 - adoxq %r8, %r9 - # a[i+2] += m[2] * mu - mulxq 16(%rsi), %rcx, %r8 - movq 64(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 56(%rdi) - # a[i+3] += m[3] * mu - mulxq 24(%rsi), %rcx, %r8 - movq 72(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 64(%rdi) - # a[i+4] += m[4] * mu - mulxq 32(%rsi), %rcx, %r8 - movq 80(%rdi), %r10 - adcxq %rcx, %r9 - adoxq %r8, %r10 - movq %r9, 72(%rdi) - # a[i+5] += m[5] * mu - mulxq 40(%rsi), %rcx, %r8 - movq 88(%rdi), %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - movq %r10, 80(%rdi) - adcxq %r13, %r9 - movq %r9, 88(%rdi) - movq %r11, %r13 - adoxq %r11, %r13 - adcxq %r11, %r13 - negq %r13 - movq %rdi, %rax - addq $48, %rdi - movq (%rsi), %r8 - movq %r12, %rdx - pextq %r13, %r8, %r8 - subq %r8, %rdx - movq 8(%rsi), %r8 - movq 8(%rdi), %rcx - pextq %r13, %r8, %r8 - movq %rdx, (%rax) - sbbq %r8, %rcx - movq 16(%rsi), %rdx - movq 16(%rdi), %r8 - pextq %r13, %rdx, %rdx - movq %rcx, 8(%rax) - sbbq %rdx, %r8 - movq 24(%rsi), %rcx - movq 24(%rdi), %rdx - pextq %r13, %rcx, %rcx - movq %r8, 16(%rax) - sbbq %rcx, %rdx - movq 32(%rsi), %r8 - movq 32(%rdi), %rcx - pextq %r13, %r8, %r8 - movq %rdx, 24(%rax) - sbbq %r8, %rcx - movq 40(%rsi), %rdx - movq 40(%rdi), %r8 - pextq %r13, %rdx, %rdx - movq %rcx, 32(%rax) - sbbq %rdx, %r8 - movq %r8, 40(%rax) - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_mont_reduce_order_avx2_6,.-sp_384_mont_reduce_order_avx2_6 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -/* Square a and put result in r. (r = a * a) - * - * r Result of squaring. - * a Number to square in Montogmery form. - */ -#ifndef __APPLE__ -.globl sp_384_sqr_avx2_6 -.type sp_384_sqr_avx2_6,@function -.align 16 -sp_384_sqr_avx2_6: -#else -.globl _sp_384_sqr_avx2_6 -.p2align 4 -_sp_384_sqr_avx2_6: -#endif /* __APPLE__ */ - push %r12 - push %r13 - push %r14 - push %r15 - push %rbx - push %rbp - push %rdi - xorq %rdi, %rdi - movq (%rsi), %rdx - movq 8(%rsi), %r15 - movq 16(%rsi), %rbx - movq 24(%rsi), %rbp - # Diagonal 0 - # A[1] * A[0] - mulxq 8(%rsi), %r8, %r9 - # A[2] * A[0] - mulxq 16(%rsi), %rax, %r10 - adcxq %rax, %r9 - # A[3] * A[0] - mulxq 24(%rsi), %rax, %r11 - adcxq %rax, %r10 - # A[4] * A[0] - mulxq 32(%rsi), %rax, %r12 - adcxq %rax, %r11 - # A[5] * A[0] - mulxq 40(%rsi), %rax, %r13 - adcxq %rax, %r12 - adcxq %rdi, %r13 - # Diagonal 1 - movq %r15, %rdx - # A[2] * A[1] - mulxq 16(%rsi), %rax, %rcx - adcxq %rax, %r10 - adoxq %rcx, %r11 - # A[3] * A[1] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r11 - adoxq %rcx, %r12 - # A[4] * A[1] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r13 - # A[5] * A[1] - mulxq 40(%rsi), %rax, %r14 - adcxq %rax, %r13 - adoxq %rdi, %r14 - movq %rbx, %rdx - # A[5] * A[2] - mulxq 40(%rsi), %rax, %r15 - adcxq %rax, %r14 - adoxq %rdi, %r15 - adcxq %rdi, %r15 - adcxq %rdi, %rbx - # Diagonal 2 - # A[3] * A[2] - mulxq 24(%rsi), %rax, %rcx - adcxq %rax, %r12 - adoxq %rcx, %r13 - # A[4] * A[2] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r13 - adoxq %rcx, %r14 - movq %rbp, %rdx - # A[4] * A[3] - mulxq 32(%rsi), %rax, %rcx - adcxq %rax, %r14 - adoxq %rcx, %r15 - # A[5] * A[3] - mulxq 40(%rsi), %rax, %rbx - adcxq %rax, %r15 - adoxq %rdi, %rbx - movq 32(%rsi), %rdx - # A[5] * A[4] - mulxq 40(%rsi), %rax, %rbp - adcxq %rax, %rbx - adoxq %rdi, %rbp - adcxq %rdi, %rbp - adcxq %rdi, %rdi - # Doubling previous result as we add in square words results - # A[0] * A[0] - movq (%rsi), %rdx - mulxq %rdx, %rax, %rcx - pop %rdx - movq %rax, (%rdx) - adoxq %r8, %r8 - push %rdx - adcxq %rcx, %r8 - # A[1] * A[1] - movq 8(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r9, %r9 - adcxq %rax, %r9 - adoxq %r10, %r10 - adcxq %rcx, %r10 - # A[2] * A[2] - movq 16(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r11, %r11 - adcxq %rax, %r11 - adoxq %r12, %r12 - adcxq %rcx, %r12 - # A[3] * A[3] - movq 24(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r13, %r13 - adcxq %rax, %r13 - adoxq %r14, %r14 - adcxq %rcx, %r14 - # A[4] * A[4] - movq 32(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %r15, %r15 - adcxq %rax, %r15 - adoxq %rbx, %rbx - adcxq %rcx, %rbx - # A[5] * A[5] - movq 40(%rsi), %rdx - mulxq %rdx, %rax, %rcx - adoxq %rbp, %rbp - adcxq %rax, %rbp - adcxq %rdi, %rcx - movq $0, %rax - adoxq %rax, %rcx - pop %rdi - movq %r8, 8(%rdi) - movq %r9, 16(%rdi) - movq %r10, 24(%rdi) - movq %r11, 32(%rdi) - movq %r12, 40(%rdi) - movq %r13, 48(%rdi) - movq %r14, 56(%rdi) - movq %r15, 64(%rdi) - movq %rbx, 72(%rdi) - movq %rbp, 80(%rdi) - movq %rcx, 88(%rdi) - pop %rbp - pop %rbx - pop %r15 - pop %r14 - pop %r13 - pop %r12 - repz retq -#ifndef __APPLE__ -.size sp_384_sqr_avx2_6,.-sp_384_sqr_avx2_6 -#endif /* __APPLE__ */ -/* Add 1 to a. (a = a + 1) - * - * a A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_add_one_6 -.type sp_384_add_one_6,@function -.align 16 -sp_384_add_one_6: -#else -.globl _sp_384_add_one_6 -.p2align 4 -_sp_384_add_one_6: -#endif /* __APPLE__ */ - addq $1, (%rdi) - adcq $0, 8(%rdi) - adcq $0, 16(%rdi) - adcq $0, 24(%rdi) - adcq $0, 32(%rdi) - adcq $0, 40(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_384_add_one_6,.-sp_384_add_one_6 -#endif /* __APPLE__ */ -/* Read big endian unsigned byte array into r. - * - * r A single precision integer. - * size Maximum number of bytes to convert - * a Byte array. - * n Number of bytes in array to read. - */ -#ifndef __APPLE__ -.globl sp_384_from_bin -.type sp_384_from_bin,@function -.align 16 -sp_384_from_bin: -#else -.globl _sp_384_from_bin -.p2align 4 -_sp_384_from_bin: -#endif /* __APPLE__ */ - movq %rdx, %r9 - movq %rdi, %r10 - addq %rcx, %r9 - addq $48, %r10 - xorq %r11, %r11 - jmp L_384_from_bin_64_end -L_384_from_bin_64_start: - subq $64, %r9 - movbeq 56(%r9), %rax - movbeq 48(%r9), %r8 - movq %rax, (%rdi) - movq %r8, 8(%rdi) - movbeq 40(%r9), %rax - movbeq 32(%r9), %r8 - movq %rax, 16(%rdi) - movq %r8, 24(%rdi) - movbeq 24(%r9), %rax - movbeq 16(%r9), %r8 - movq %rax, 32(%rdi) - movq %r8, 40(%rdi) - movbeq 8(%r9), %rax - movbeq (%r9), %r8 - movq %rax, 48(%rdi) - movq %r8, 56(%rdi) - addq $64, %rdi - subq $64, %rcx -L_384_from_bin_64_end: - cmpq $63, %rcx - jg L_384_from_bin_64_start - jmp L_384_from_bin_8_end -L_384_from_bin_8_start: - subq $8, %r9 - movbeq (%r9), %rax - movq %rax, (%rdi) - addq $8, %rdi - subq $8, %rcx -L_384_from_bin_8_end: - cmpq $7, %rcx - jg L_384_from_bin_8_start - cmpq %r11, %rcx - je L_384_from_bin_hi_end - movq %r11, %r8 - movq %r11, %rax -L_384_from_bin_hi_start: - movb (%rdx), %al - shlq $8, %r8 - incq %rdx - addq %rax, %r8 - decq %rcx - jg L_384_from_bin_hi_start - movq %r8, (%rdi) - addq $8, %rdi -L_384_from_bin_hi_end: - cmpq %r10, %rdi - je L_384_from_bin_zero_end -L_384_from_bin_zero_start: - movq %r11, (%rdi) - addq $8, %rdi - cmpq %r10, %rdi - jl L_384_from_bin_zero_start -L_384_from_bin_zero_end: - repz retq -#ifndef __APPLE__ -.size sp_384_from_bin,.-sp_384_from_bin -#endif /* __APPLE__ */ -/* Write r as big endian to byte array. - * Fixed length number of bytes written: 48 - * - * r A single precision integer. - * a Byte array. - */ -#ifndef __APPLE__ -.globl sp_384_to_bin -.type sp_384_to_bin,@function -.align 16 -sp_384_to_bin: -#else -.globl _sp_384_to_bin -.p2align 4 -_sp_384_to_bin: -#endif /* __APPLE__ */ - movbeq 40(%rdi), %rdx - movbeq 32(%rdi), %rax - movq %rdx, (%rsi) - movq %rax, 8(%rsi) - movbeq 24(%rdi), %rdx - movbeq 16(%rdi), %rax - movq %rdx, 16(%rsi) - movq %rax, 24(%rsi) - movbeq 8(%rdi), %rdx - movbeq (%rdi), %rax - movq %rdx, 32(%rsi) - movq %rax, 40(%rsi) - repz retq -#ifndef __APPLE__ -.size sp_384_to_bin,.-sp_384_to_bin -#endif /* __APPLE__ */ -/* Sub b from a into a. (a -= b) - * - * a A single precision integer and result. - * b A single precision integer. - */ -#ifndef __APPLE__ -.globl sp_384_sub_in_place_6 -.type sp_384_sub_in_place_6,@function -.align 16 -sp_384_sub_in_place_6: -#else -.globl _sp_384_sub_in_place_6 -.p2align 4 -_sp_384_sub_in_place_6: -#endif /* __APPLE__ */ - xorq %rax, %rax - movq (%rsi), %rdx - movq 8(%rsi), %rcx - movq 16(%rsi), %r8 - movq 24(%rsi), %r9 - movq 32(%rsi), %r10 - movq 40(%rsi), %r11 - subq %rdx, (%rdi) - sbbq %rcx, 8(%rdi) - sbbq %r8, 16(%rdi) - sbbq %r9, 24(%rdi) - sbbq %r10, 32(%rdi) - sbbq %r11, 40(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_sub_in_place_6,.-sp_384_sub_in_place_6 -#endif /* __APPLE__ */ -/* Conditionally subtract b from a using the mask m. - * m is -1 to subtract and 0 when not copying. - * - * r A single precision number representing condition subtract result. - * a A single precision number to subtract from. - * b A single precision number to subtract. - * m Mask value to apply. - */ -#ifndef __APPLE__ -.globl sp_384_cond_sub_avx2_6 -.type sp_384_cond_sub_avx2_6,@function -.align 16 -sp_384_cond_sub_avx2_6: -#else -.globl _sp_384_cond_sub_avx2_6 -.p2align 4 -_sp_384_cond_sub_avx2_6: -#endif /* __APPLE__ */ - movq $0, %rax - movq (%rdx), %r10 - movq (%rsi), %r8 - pextq %rcx, %r10, %r10 - subq %r10, %r8 - movq 8(%rdx), %r10 - movq 8(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, (%rdi) - sbbq %r10, %r9 - movq 16(%rdx), %r8 - movq 16(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 8(%rdi) - sbbq %r8, %r10 - movq 24(%rdx), %r9 - movq 24(%rsi), %r8 - pextq %rcx, %r9, %r9 - movq %r10, 16(%rdi) - sbbq %r9, %r8 - movq 32(%rdx), %r10 - movq 32(%rsi), %r9 - pextq %rcx, %r10, %r10 - movq %r8, 24(%rdi) - sbbq %r10, %r9 - movq 40(%rdx), %r8 - movq 40(%rsi), %r10 - pextq %rcx, %r8, %r8 - movq %r9, 32(%rdi) - sbbq %r8, %r10 - movq %r10, 40(%rdi) - sbbq $0, %rax - repz retq -#ifndef __APPLE__ -.size sp_384_cond_sub_avx2_6,.-sp_384_cond_sub_avx2_6 -#endif /* __APPLE__ */ -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_384_mul_d_6 -.type sp_384_mul_d_6,@function -.align 16 -sp_384_mul_d_6: -#else -.globl _sp_384_mul_d_6 -.p2align 4 -_sp_384_mul_d_6: -#endif /* __APPLE__ */ - movq %rdx, %rcx - # A[0] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq (%rsi) - movq %rax, %r8 - movq %rdx, %r9 - movq %r8, (%rdi) - # A[1] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 8(%rsi) - addq %rax, %r9 - movq %r9, 8(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[2] * B - movq %rcx, %rax - xorq %r9, %r9 - mulq 16(%rsi) - addq %rax, %r10 - movq %r10, 16(%rdi) - adcq %rdx, %r8 - adcq $0, %r9 - # A[3] * B - movq %rcx, %rax - xorq %r10, %r10 - mulq 24(%rsi) - addq %rax, %r8 - movq %r8, 24(%rdi) - adcq %rdx, %r9 - adcq $0, %r10 - # A[4] * B - movq %rcx, %rax - xorq %r8, %r8 - mulq 32(%rsi) - addq %rax, %r9 - movq %r9, 32(%rdi) - adcq %rdx, %r10 - adcq $0, %r8 - # A[5] * B - movq %rcx, %rax - mulq 40(%rsi) - addq %rax, %r10 - adcq %rdx, %r8 - movq %r10, 40(%rdi) - movq %r8, 48(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_384_mul_d_6,.-sp_384_mul_d_6 -#endif /* __APPLE__ */ -#ifdef HAVE_INTEL_AVX2 -/* Mul a by digit b into r. (r = a * b) - * - * r A single precision integer. - * a A single precision integer. - * b A single precision digit. - */ -#ifndef __APPLE__ -.globl sp_384_mul_d_avx2_6 -.type sp_384_mul_d_avx2_6,@function -.align 16 -sp_384_mul_d_avx2_6: -#else -.globl _sp_384_mul_d_avx2_6 -.p2align 4 -_sp_384_mul_d_avx2_6: -#endif /* __APPLE__ */ - movq %rdx, %rax - # A[0] * B - movq %rax, %rdx - xorq %r11, %r11 - mulxq (%rsi), %r9, %r10 - movq %r9, (%rdi) - # A[1] * B - mulxq 8(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 8(%rdi) - adoxq %r8, %r9 - # A[2] * B - mulxq 16(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 16(%rdi) - adoxq %r8, %r10 - # A[3] * B - mulxq 24(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - movq %r10, 24(%rdi) - adoxq %r8, %r9 - # A[4] * B - mulxq 32(%rsi), %rcx, %r8 - movq %r11, %r10 - adcxq %rcx, %r9 - movq %r9, 32(%rdi) - adoxq %r8, %r10 - # A[5] * B - mulxq 40(%rsi), %rcx, %r8 - movq %r11, %r9 - adcxq %rcx, %r10 - adoxq %r8, %r9 - adcxq %r11, %r9 - movq %r10, 40(%rdi) - movq %r9, 48(%rdi) - repz retq -#ifndef __APPLE__ -.size sp_384_mul_d_avx2_6,.-sp_384_mul_d_avx2_6 -#endif /* __APPLE__ */ -#endif /* HAVE_INTEL_AVX2 */ -#endif /* WOLFSSL_SP_384 */ |