aboutsummaryrefslogtreecommitdiff
path: root/client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S
diff options
context:
space:
mode:
authorauth12 <[email protected]>2020-07-22 08:40:38 -0700
committerauth12 <[email protected]>2020-07-22 08:40:38 -0700
commit4ff89e85e74884e8f04edb5c31a94b4323e895e9 (patch)
tree65f98ebf9af0d0947e44bf397b1fac0f107d7a2f /client/wolfssl/wolfcrypt/src/sp_x86_64_asm.S
parentClient injection. (diff)
downloadloader-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.S41830
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 */