From c8825467d31ade679e6fe0729971aae978529c64 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Wed, 4 Nov 2015 18:42:36 +0100 Subject: [PATCH] Revert in order to keep the original files --- src/libsodium/Makefile.am | 5 + .../curve25519/sandy2x/consts.S | 44 + .../curve25519/sandy2x/fe51_mul.S | 189 ++ .../curve25519/sandy2x/fe51_nsquare.S | 165 ++ .../curve25519/sandy2x/fe51_pack.S | 219 ++ .../curve25519/sandy2x/ladder.S | 1876 +---------------- .../curve25519/sandy2x/ladder_base.S | 1287 +++++++++++ 7 files changed, 1914 insertions(+), 1871 deletions(-) create mode 100644 src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S create mode 100644 src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S create mode 100644 src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S create mode 100644 src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S create mode 100644 src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S diff --git a/src/libsodium/Makefile.am b/src/libsodium/Makefile.am index 4c9e0b0c..4c0146de 100644 --- a/src/libsodium/Makefile.am +++ b/src/libsodium/Makefile.am @@ -200,16 +200,21 @@ if HAVE_AMD64_ASM libsodium_la_SOURCES += \ crypto_stream/salsa20/amd64_xmm6/api.h \ crypto_stream/salsa20/amd64_xmm6/stream_salsa20_amd64_xmm6.S \ + crypto_scalarmult/curve25519/sandy2x/consts.S \ crypto_scalarmult/curve25519/sandy2x/consts_namespace.h \ crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.c \ crypto_scalarmult/curve25519/sandy2x/curve25519_sandy2x.h \ crypto_scalarmult/curve25519/sandy2x/fe.h \ crypto_scalarmult/curve25519/sandy2x/fe51.h \ crypto_scalarmult/curve25519/sandy2x/fe51_invert.c \ + crypto_scalarmult/curve25519/sandy2x/fe51_mul.S \ crypto_scalarmult/curve25519/sandy2x/fe51_namespace.h \ + crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S \ + crypto_scalarmult/curve25519/sandy2x/fe51_pack.S \ crypto_scalarmult/curve25519/sandy2x/fe_frombytes_sandy2x.c \ crypto_scalarmult/curve25519/sandy2x/ladder.S \ crypto_scalarmult/curve25519/sandy2x/ladder.h \ + crypto_scalarmult/curve25519/sandy2x/ladder_base.S \ crypto_scalarmult/curve25519/sandy2x/ladder_base.h \ crypto_scalarmult/curve25519/sandy2x/ladder_base_namespace.h \ crypto_scalarmult/curve25519/sandy2x/ladder_namespace.h diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S new file mode 100644 index 00000000..456d5e53 --- /dev/null +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/consts.S @@ -0,0 +1,44 @@ +/* + REDMASK51 is from amd64-51/consts.s. +*/ + +#ifdef __linux__ +# error This is a work in progress, which is known *NOT* to work on Linux +# error Please do not fill a bug report at this point +#endif + +#include "consts_namespace.h" +.data +.globl v0_0 +.globl v1_0 +.globl v2_1 +.globl v2_2 +.globl v9_0 +.globl v9_9 +.globl v19_19 +.globl v38_1 +.globl v38_19 +.globl v38_38 +.globl v121666_121666 +.globl m25 +.globl m26 +.globl subc0 +.globl subc2 +.globl REDMASK51 +.p2align 4 +v0_0: .quad 0, 0 +v1_0: .quad 1, 0 +v2_1: .quad 2, 1 +v2_2: .quad 2, 2 +v9_0: .quad 9, 0 +v9_9: .quad 9, 9 +v19_19: .quad 19, 19 +v38_1: .quad 38, 1 +v38_19: .quad 38, 19 +v38_38: .quad 38, 38 +v121666_121666: .quad 121666, 121666 +m25: .quad 33554431, 33554431 +m26: .quad 67108863, 67108863 +subc0: .quad 0x07FFFFDA, 0x03FFFFFE +subc2: .quad 0x07FFFFFE, 0x03FFFFFE +REDMASK51: .quad 0x0007FFFFFFFFFFFF diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S new file mode 100644 index 00000000..ff56a856 --- /dev/null +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_mul.S @@ -0,0 +1,189 @@ +/* + This file is basically amd64-51/fe25519_mul.s. +*/ +#include "fe51_namespace.h" +#include "consts_namespace.h" +.text +.p2align 5 +.globl _fe51_mul +.globl fe51_mul +_fe51_mul: +fe51_mul: +mov %rsp,%r11 +and $31,%r11 +add $96,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq %rdi,56(%rsp) +mov %rdx,%rcx +movq 24(%rsi),%rdx +imulq $19,%rdx,%rax +movq %rax,64(%rsp) +mulq 16(%rcx) +mov %rax,%r8 +mov %rdx,%r9 +movq 32(%rsi),%rdx +imulq $19,%rdx,%rax +movq %rax,72(%rsp) +mulq 8(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 0(%rsi),%rax +mulq 0(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 0(%rsi),%rax +mulq 8(%rcx) +mov %rax,%r10 +mov %rdx,%r11 +movq 0(%rsi),%rax +mulq 16(%rcx) +mov %rax,%r12 +mov %rdx,%r13 +movq 0(%rsi),%rax +mulq 24(%rcx) +mov %rax,%r14 +mov %rdx,%r15 +movq 0(%rsi),%rax +mulq 32(%rcx) +mov %rax,%rbx +mov %rdx,%rbp +movq 8(%rsi),%rax +mulq 0(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 8(%rsi),%rax +mulq 8(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 8(%rsi),%rax +mulq 16(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 8(%rsi),%rax +mulq 24(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 8(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 32(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 16(%rsi),%rax +mulq 0(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 16(%rsi),%rax +mulq 8(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 16(%rsi),%rax +mulq 16(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 16(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 24(%rcx) +add %rax,%r8 +adc %rdx,%r9 +movq 16(%rsi),%rdx +imulq $19,%rdx,%rax +mulq 32(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 24(%rsi),%rax +mulq 0(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq 24(%rsi),%rax +mulq 8(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 64(%rsp),%rax +mulq 24(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 64(%rsp),%rax +mulq 32(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 32(%rsi),%rax +mulq 0(%rcx) +add %rax,%rbx +adc %rdx,%rbp +movq 72(%rsp),%rax +mulq 16(%rcx) +add %rax,%r10 +adc %rdx,%r11 +movq 72(%rsp),%rax +mulq 24(%rcx) +add %rax,%r12 +adc %rdx,%r13 +movq 72(%rsp),%rax +mulq 32(%rcx) +add %rax,%r14 +adc %rdx,%r15 +movq REDMASK51(%rip),%rsi +shld $13,%r8,%r9 +and %rsi,%r8 +shld $13,%r10,%r11 +and %rsi,%r10 +add %r9,%r10 +shld $13,%r12,%r13 +and %rsi,%r12 +add %r11,%r12 +shld $13,%r14,%r15 +and %rsi,%r14 +add %r13,%r14 +shld $13,%rbx,%rbp +and %rsi,%rbx +add %r15,%rbx +imulq $19,%rbp,%rdx +add %rdx,%r8 +mov %r8,%rdx +shr $51,%rdx +add %r10,%rdx +mov %rdx,%rcx +shr $51,%rdx +and %rsi,%r8 +add %r12,%rdx +mov %rdx,%r9 +shr $51,%rdx +and %rsi,%rcx +add %r14,%rdx +mov %rdx,%rax +shr $51,%rdx +and %rsi,%r9 +add %rbx,%rdx +mov %rdx,%r10 +shr $51,%rdx +and %rsi,%rax +imulq $19,%rdx,%rdx +add %rdx,%r8 +and %rsi,%r10 +movq %r8,0(%rdi) +movq %rcx,8(%rdi) +movq %r9,16(%rdi) +movq %rax,24(%rdi) +movq %r10,32(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp +add %r11,%rsp +mov %rdi,%rax +mov %rsi,%rdx +ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S new file mode 100644 index 00000000..41f3e99a --- /dev/null +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_nsquare.S @@ -0,0 +1,165 @@ +/* + This file is adapted from amd64-51/fe25519_square.s: + Adding loop to perform n squares. +*/ +#include "fe51_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +.globl fe51_nsquare +.globl _fe51_nsquare +#ifdef __ELF__ +.type fe51_nsquare, @function +.type _fe51_nsquare, @function +#endif +fe51_nsquare: +_fe51_nsquare: + +mov %rsp,%r11 +and $31,%r11 +add $64,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq %r13,16(%rsp) +movq %r14,24(%rsp) +movq %r15,32(%rsp) +movq %rbx,40(%rsp) +movq %rbp,48(%rsp) +movq 0(%rsi),%rcx +movq 8(%rsi),%r8 +movq 16(%rsi),%r9 +movq 24(%rsi),%rax +movq 32(%rsi),%rsi +movq %r9,16(%rdi) +movq %rax,24(%rdi) +movq %rsi,32(%rdi) +mov %rdx,%rsi +._loop: +sub $1,%rsi +mov %rcx,%rax +mul %rcx +add %rcx,%rcx +mov %rax,%r9 +mov %rdx,%r10 +mov %rcx,%rax +mul %r8 +mov %rax,%r11 +mov %rdx,%r12 +mov %rcx,%rax +mulq 16(%rdi) +mov %rax,%r13 +mov %rdx,%r14 +mov %rcx,%rax +mulq 24(%rdi) +mov %rax,%r15 +mov %rdx,%rbx +mov %rcx,%rax +mulq 32(%rdi) +mov %rax,%rcx +mov %rdx,%rbp +mov %r8,%rax +mul %r8 +add %r8,%r8 +add %rax,%r13 +adc %rdx,%r14 +mov %r8,%rax +mulq 16(%rdi) +add %rax,%r15 +adc %rdx,%rbx +mov %r8,%rax +imulq $19, %r8,%r8 +mulq 24(%rdi) +add %rax,%rcx +adc %rdx,%rbp +mov %r8,%rax +mulq 32(%rdi) +add %rax,%r9 +adc %rdx,%r10 +movq 16(%rdi),%rax +mulq 16(%rdi) +add %rax,%rcx +adc %rdx,%rbp +shld $13,%rcx,%rbp +movq 16(%rdi),%rax +imulq $38, %rax,%rax +mulq 24(%rdi) +add %rax,%r9 +adc %rdx,%r10 +shld $13,%r9,%r10 +movq 16(%rdi),%rax +imulq $38, %rax,%rax +mulq 32(%rdi) +add %rax,%r11 +adc %rdx,%r12 +movq 24(%rdi),%rax +imulq $19, %rax,%rax +mulq 24(%rdi) +add %rax,%r11 +adc %rdx,%r12 +shld $13,%r11,%r12 +movq 24(%rdi),%rax +imulq $38, %rax,%rax +mulq 32(%rdi) +add %rax,%r13 +adc %rdx,%r14 +shld $13,%r13,%r14 +movq 32(%rdi),%rax +imulq $19, %rax,%rax +mulq 32(%rdi) +add %rax,%r15 +adc %rdx,%rbx +shld $13,%r15,%rbx +movq REDMASK51(%rip),%rdx +and %rdx,%rcx +add %rbx,%rcx +and %rdx,%r9 +and %rdx,%r11 +add %r10,%r11 +and %rdx,%r13 +add %r12,%r13 +and %rdx,%r15 +add %r14,%r15 +imulq $19, %rbp,%rbp +lea (%r9,%rbp),%r9 +mov %r9,%rax +shr $51,%r9 +add %r11,%r9 +and %rdx,%rax +mov %r9,%r8 +shr $51,%r9 +add %r13,%r9 +and %rdx,%r8 +mov %r9,%r10 +shr $51,%r9 +add %r15,%r9 +and %rdx,%r10 +movq %r10,16(%rdi) +mov %r9,%r10 +shr $51,%r9 +add %rcx,%r9 +and %rdx,%r10 +movq %r10,24(%rdi) +mov %r9,%r10 +shr $51,%r9 +imulq $19, %r9,%r9 +lea (%rax,%r9),%rcx +and %rdx,%r10 +movq %r10,32(%rdi) +cmp $0,%rsi +jne ._loop +movq %rcx,0(%rdi) +movq %r8,8(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +movq 16(%rsp),%r13 +movq 24(%rsp),%r14 +movq 32(%rsp),%r15 +movq 40(%rsp),%rbx +movq 48(%rsp),%rbp +add %r11,%rsp +ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S new file mode 100644 index 00000000..2ef8666e --- /dev/null +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/fe51_pack.S @@ -0,0 +1,219 @@ +/* + This file is the result of merging + amd64-51/fe25519_pack.c and amd64-51/fe25519_freeze.s. +*/ +#include "fe51_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +.globl fe51_pack +.globl _fe51_pack +#ifdef __ELF__ +.type fe51_pack, @function +.type _fe51_pack, @function +#endif +fe51_pack: +_fe51_pack: + +mov %rsp,%r11 +and $31,%r11 +add $32,%r11 +sub %r11,%rsp +movq %r11,0(%rsp) +movq %r12,8(%rsp) +movq 0(%rsi),%rdx +movq 8(%rsi),%rcx +movq 16(%rsi),%r8 +movq 24(%rsi),%r9 +movq 32(%rsi),%rsi +movq REDMASK51(%rip),%rax +lea -18(%rax),%r10 +mov $3,%r11 +._reduceloop: +mov %rdx,%r12 +shr $51,%r12 +and %rax,%rdx +add %r12,%rcx +mov %rcx,%r12 +shr $51,%r12 +and %rax,%rcx +add %r12,%r8 +mov %r8,%r12 +shr $51,%r12 +and %rax,%r8 +add %r12,%r9 +mov %r9,%r12 +shr $51,%r12 +and %rax,%r9 +add %r12,%rsi +mov %rsi,%r12 +shr $51,%r12 +and %rax,%rsi +imulq $19, %r12,%r12 +add %r12,%rdx +sub $1,%r11 +ja ._reduceloop +mov $1,%r12 +cmp %r10,%rdx +cmovl %r11,%r12 +cmp %rax,%rcx +cmovne %r11,%r12 +cmp %rax,%r8 +cmovne %r11,%r12 +cmp %rax,%r9 +cmovne %r11,%r12 +cmp %rax,%rsi +cmovne %r11,%r12 +neg %r12 +and %r12,%rax +and %r12,%r10 +sub %r10,%rdx +sub %rax,%rcx +sub %rax,%r8 +sub %rax,%r9 +sub %rax,%rsi +mov %rdx,%rax +and $0xFF,%eax +movb %al,0(%rdi) +mov %rdx,%rax +shr $8,%rax +and $0xFF,%eax +movb %al,1(%rdi) +mov %rdx,%rax +shr $16,%rax +and $0xFF,%eax +movb %al,2(%rdi) +mov %rdx,%rax +shr $24,%rax +and $0xFF,%eax +movb %al,3(%rdi) +mov %rdx,%rax +shr $32,%rax +and $0xFF,%eax +movb %al,4(%rdi) +mov %rdx,%rax +shr $40,%rax +and $0xFF,%eax +movb %al,5(%rdi) +mov %rdx,%rdx +shr $48,%rdx +mov %rcx,%rax +shl $3,%rax +and $0xF8,%eax +xor %rdx,%rax +movb %al,6(%rdi) +mov %rcx,%rdx +shr $5,%rdx +and $0xFF,%edx +movb %dl,7(%rdi) +mov %rcx,%rdx +shr $13,%rdx +and $0xFF,%edx +movb %dl,8(%rdi) +mov %rcx,%rdx +shr $21,%rdx +and $0xFF,%edx +movb %dl,9(%rdi) +mov %rcx,%rdx +shr $29,%rdx +and $0xFF,%edx +movb %dl,10(%rdi) +mov %rcx,%rdx +shr $37,%rdx +and $0xFF,%edx +movb %dl,11(%rdi) +mov %rcx,%rdx +shr $45,%rdx +mov %r8,%rcx +shl $6,%rcx +and $0xC0,%ecx +xor %rdx,%rcx +movb %cl,12(%rdi) +mov %r8,%rdx +shr $2,%rdx +and $0xFF,%edx +movb %dl,13(%rdi) +mov %r8,%rdx +shr $10,%rdx +and $0xFF,%edx +movb %dl,14(%rdi) +mov %r8,%rdx +shr $18,%rdx +and $0xFF,%edx +movb %dl,15(%rdi) +mov %r8,%rdx +shr $26,%rdx +and $0xFF,%edx +movb %dl,16(%rdi) +mov %r8,%rdx +shr $34,%rdx +and $0xFF,%edx +movb %dl,17(%rdi) +mov %r8,%rdx +shr $42,%rdx +movb %dl,18(%rdi) +mov %r8,%rdx +shr $50,%rdx +mov %r9,%rcx +shl $1,%rcx +and $0xFE,%ecx +xor %rdx,%rcx +movb %cl,19(%rdi) +mov %r9,%rdx +shr $7,%rdx +and $0xFF,%edx +movb %dl,20(%rdi) +mov %r9,%rdx +shr $15,%rdx +and $0xFF,%edx +movb %dl,21(%rdi) +mov %r9,%rdx +shr $23,%rdx +and $0xFF,%edx +movb %dl,22(%rdi) +mov %r9,%rdx +shr $31,%rdx +and $0xFF,%edx +movb %dl,23(%rdi) +mov %r9,%rdx +shr $39,%rdx +and $0xFF,%edx +movb %dl,24(%rdi) +mov %r9,%rdx +shr $47,%rdx +mov %rsi,%rcx +shl $4,%rcx +and $0xF0,%ecx +xor %rdx,%rcx +movb %cl,25(%rdi) +mov %rsi,%rdx +shr $4,%rdx +and $0xFF,%edx +movb %dl,26(%rdi) +mov %rsi,%rdx +shr $12,%rdx +and $0xFF,%edx +movb %dl,27(%rdi) +mov %rsi,%rdx +shr $20,%rdx +and $0xFF,%edx +movb %dl,28(%rdi) +mov %rsi,%rdx +shr $28,%rdx +and $0xFF,%edx +movb %dl,29(%rdi) +mov %rsi,%rdx +shr $36,%rdx +and $0xFF,%edx +movb %dl,30(%rdi) +mov %rsi,%rsi +shr $44,%rsi +movb %sil,31(%rdi) +movq 0(%rsp),%r11 +movq 8(%rsp),%r12 +add %r11,%rsp +ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S index 9c2f4bcf..871e368c 100644 --- a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder.S @@ -1,589 +1,5 @@ -/* - REDMASK51 is from amd64-51/consts.s. -*/ - -#include "fe51_namespace.h" -#include "consts_namespace.h" #include "ladder_namespace.h" -#include "ladder_base_namespace.h" - -.data -.p2align 4 -v0_0: .quad 0, 0 -v1_0: .quad 1, 0 -v2_1: .quad 2, 1 -v2_2: .quad 2, 2 -v9_0: .quad 9, 0 -v9_9: .quad 9, 9 -v19_19: .quad 19, 19 -v38_1: .quad 38, 1 -v38_19: .quad 38, 19 -v38_38: .quad 38, 38 -v121666_121666: .quad 121666, 121666 -m25: .quad 33554431, 33554431 -m26: .quad 67108863, 67108863 -subc0: .quad 0x07FFFFDA, 0x03FFFFFE -subc2: .quad 0x07FFFFFE, 0x03FFFFFE -REDMASK51: .quad 0x0007FFFFFFFFFFFF - -/* - This file is basically amd64-51/fe25519_mul.s. -*/ -.text -.p2align 5 -.globl _fe51_mul -.globl fe51_mul -_fe51_mul: -fe51_mul: -mov %rsp,%r11 -and $31,%r11 -add $96,%r11 -sub %r11,%rsp -movq %r11,0(%rsp) -movq %r12,8(%rsp) -movq %r13,16(%rsp) -movq %r14,24(%rsp) -movq %r15,32(%rsp) -movq %rbx,40(%rsp) -movq %rbp,48(%rsp) -movq %rdi,56(%rsp) -mov %rdx,%rcx -movq 24(%rsi),%rdx -imulq $19,%rdx,%rax -movq %rax,64(%rsp) -mulq 16(%rcx) -mov %rax,%r8 -mov %rdx,%r9 -movq 32(%rsi),%rdx -imulq $19,%rdx,%rax -movq %rax,72(%rsp) -mulq 8(%rcx) -add %rax,%r8 -adc %rdx,%r9 -movq 0(%rsi),%rax -mulq 0(%rcx) -add %rax,%r8 -adc %rdx,%r9 -movq 0(%rsi),%rax -mulq 8(%rcx) -mov %rax,%r10 -mov %rdx,%r11 -movq 0(%rsi),%rax -mulq 16(%rcx) -mov %rax,%r12 -mov %rdx,%r13 -movq 0(%rsi),%rax -mulq 24(%rcx) -mov %rax,%r14 -mov %rdx,%r15 -movq 0(%rsi),%rax -mulq 32(%rcx) -mov %rax,%rbx -mov %rdx,%rbp -movq 8(%rsi),%rax -mulq 0(%rcx) -add %rax,%r10 -adc %rdx,%r11 -movq 8(%rsi),%rax -mulq 8(%rcx) -add %rax,%r12 -adc %rdx,%r13 -movq 8(%rsi),%rax -mulq 16(%rcx) -add %rax,%r14 -adc %rdx,%r15 -movq 8(%rsi),%rax -mulq 24(%rcx) -add %rax,%rbx -adc %rdx,%rbp -movq 8(%rsi),%rdx -imulq $19,%rdx,%rax -mulq 32(%rcx) -add %rax,%r8 -adc %rdx,%r9 -movq 16(%rsi),%rax -mulq 0(%rcx) -add %rax,%r12 -adc %rdx,%r13 -movq 16(%rsi),%rax -mulq 8(%rcx) -add %rax,%r14 -adc %rdx,%r15 -movq 16(%rsi),%rax -mulq 16(%rcx) -add %rax,%rbx -adc %rdx,%rbp -movq 16(%rsi),%rdx -imulq $19,%rdx,%rax -mulq 24(%rcx) -add %rax,%r8 -adc %rdx,%r9 -movq 16(%rsi),%rdx -imulq $19,%rdx,%rax -mulq 32(%rcx) -add %rax,%r10 -adc %rdx,%r11 -movq 24(%rsi),%rax -mulq 0(%rcx) -add %rax,%r14 -adc %rdx,%r15 -movq 24(%rsi),%rax -mulq 8(%rcx) -add %rax,%rbx -adc %rdx,%rbp -movq 64(%rsp),%rax -mulq 24(%rcx) -add %rax,%r10 -adc %rdx,%r11 -movq 64(%rsp),%rax -mulq 32(%rcx) -add %rax,%r12 -adc %rdx,%r13 -movq 32(%rsi),%rax -mulq 0(%rcx) -add %rax,%rbx -adc %rdx,%rbp -movq 72(%rsp),%rax -mulq 16(%rcx) -add %rax,%r10 -adc %rdx,%r11 -movq 72(%rsp),%rax -mulq 24(%rcx) -add %rax,%r12 -adc %rdx,%r13 -movq 72(%rsp),%rax -mulq 32(%rcx) -add %rax,%r14 -adc %rdx,%r15 -movq REDMASK51(%rip),%rsi -shld $13,%r8,%r9 -and %rsi,%r8 -shld $13,%r10,%r11 -and %rsi,%r10 -add %r9,%r10 -shld $13,%r12,%r13 -and %rsi,%r12 -add %r11,%r12 -shld $13,%r14,%r15 -and %rsi,%r14 -add %r13,%r14 -shld $13,%rbx,%rbp -and %rsi,%rbx -add %r15,%rbx -imulq $19,%rbp,%rdx -add %rdx,%r8 -mov %r8,%rdx -shr $51,%rdx -add %r10,%rdx -mov %rdx,%rcx -shr $51,%rdx -and %rsi,%r8 -add %r12,%rdx -mov %rdx,%r9 -shr $51,%rdx -and %rsi,%rcx -add %r14,%rdx -mov %rdx,%rax -shr $51,%rdx -and %rsi,%r9 -add %rbx,%rdx -mov %rdx,%r10 -shr $51,%rdx -and %rsi,%rax -imulq $19,%rdx,%rdx -add %rdx,%r8 -and %rsi,%r10 -movq %r8,0(%rdi) -movq %rcx,8(%rdi) -movq %r9,16(%rdi) -movq %rax,24(%rdi) -movq %r10,32(%rdi) -movq 0(%rsp),%r11 -movq 8(%rsp),%r12 -movq 16(%rsp),%r13 -movq 24(%rsp),%r14 -movq 32(%rsp),%r15 -movq 40(%rsp),%rbx -movq 48(%rsp),%rbp -add %r11,%rsp -mov %rdi,%rax -mov %rsi,%rdx -ret - -/* - This file is adapted from amd64-51/fe25519_square.s: - Adding loop to perform n squares. -*/ -.p2align 5 - -.globl fe51_nsquare -.globl _fe51_nsquare -#ifdef __ELF__ -.type fe51_nsquare, @function -.type _fe51_nsquare, @function -#endif -fe51_nsquare: -_fe51_nsquare: - -mov %rsp,%r11 -and $31,%r11 -add $64,%r11 -sub %r11,%rsp -movq %r11,0(%rsp) -movq %r12,8(%rsp) -movq %r13,16(%rsp) -movq %r14,24(%rsp) -movq %r15,32(%rsp) -movq %rbx,40(%rsp) -movq %rbp,48(%rsp) -movq 0(%rsi),%rcx -movq 8(%rsi),%r8 -movq 16(%rsi),%r9 -movq 24(%rsi),%rax -movq 32(%rsi),%rsi -movq %r9,16(%rdi) -movq %rax,24(%rdi) -movq %rsi,32(%rdi) -mov %rdx,%rsi -._loop1: -sub $1,%rsi -mov %rcx,%rax -mul %rcx -add %rcx,%rcx -mov %rax,%r9 -mov %rdx,%r10 -mov %rcx,%rax -mul %r8 -mov %rax,%r11 -mov %rdx,%r12 -mov %rcx,%rax -mulq 16(%rdi) -mov %rax,%r13 -mov %rdx,%r14 -mov %rcx,%rax -mulq 24(%rdi) -mov %rax,%r15 -mov %rdx,%rbx -mov %rcx,%rax -mulq 32(%rdi) -mov %rax,%rcx -mov %rdx,%rbp -mov %r8,%rax -mul %r8 -add %r8,%r8 -add %rax,%r13 -adc %rdx,%r14 -mov %r8,%rax -mulq 16(%rdi) -add %rax,%r15 -adc %rdx,%rbx -mov %r8,%rax -imulq $19, %r8,%r8 -mulq 24(%rdi) -add %rax,%rcx -adc %rdx,%rbp -mov %r8,%rax -mulq 32(%rdi) -add %rax,%r9 -adc %rdx,%r10 -movq 16(%rdi),%rax -mulq 16(%rdi) -add %rax,%rcx -adc %rdx,%rbp -shld $13,%rcx,%rbp -movq 16(%rdi),%rax -imulq $38, %rax,%rax -mulq 24(%rdi) -add %rax,%r9 -adc %rdx,%r10 -shld $13,%r9,%r10 -movq 16(%rdi),%rax -imulq $38, %rax,%rax -mulq 32(%rdi) -add %rax,%r11 -adc %rdx,%r12 -movq 24(%rdi),%rax -imulq $19, %rax,%rax -mulq 24(%rdi) -add %rax,%r11 -adc %rdx,%r12 -shld $13,%r11,%r12 -movq 24(%rdi),%rax -imulq $38, %rax,%rax -mulq 32(%rdi) -add %rax,%r13 -adc %rdx,%r14 -shld $13,%r13,%r14 -movq 32(%rdi),%rax -imulq $19, %rax,%rax -mulq 32(%rdi) -add %rax,%r15 -adc %rdx,%rbx -shld $13,%r15,%rbx -movq REDMASK51(%rip),%rdx -and %rdx,%rcx -add %rbx,%rcx -and %rdx,%r9 -and %rdx,%r11 -add %r10,%r11 -and %rdx,%r13 -add %r12,%r13 -and %rdx,%r15 -add %r14,%r15 -imulq $19, %rbp,%rbp -lea (%r9,%rbp),%r9 -mov %r9,%rax -shr $51,%r9 -add %r11,%r9 -and %rdx,%rax -mov %r9,%r8 -shr $51,%r9 -add %r13,%r9 -and %rdx,%r8 -mov %r9,%r10 -shr $51,%r9 -add %r15,%r9 -and %rdx,%r10 -movq %r10,16(%rdi) -mov %r9,%r10 -shr $51,%r9 -add %rcx,%r9 -and %rdx,%r10 -movq %r10,24(%rdi) -mov %r9,%r10 -shr $51,%r9 -imulq $19, %r9,%r9 -lea (%rax,%r9),%rcx -and %rdx,%r10 -movq %r10,32(%rdi) -cmp $0,%rsi -jne ._loop1 -movq %rcx,0(%rdi) -movq %r8,8(%rdi) -movq 0(%rsp),%r11 -movq 8(%rsp),%r12 -movq 16(%rsp),%r13 -movq 24(%rsp),%r14 -movq 32(%rsp),%r15 -movq 40(%rsp),%rbx -movq 48(%rsp),%rbp -add %r11,%rsp -ret - -/* - This file is the result of merging - amd64-51/fe25519_pack.c and amd64-51/fe25519_freeze.s. -*/ -.p2align 5 - -.globl fe51_pack -.globl _fe51_pack -#ifdef __ELF__ -.type fe51_pack, @function -.type _fe51_pack, @function -#endif -fe51_pack: -_fe51_pack: - -mov %rsp,%r11 -and $31,%r11 -add $32,%r11 -sub %r11,%rsp -movq %r11,0(%rsp) -movq %r12,8(%rsp) -movq 0(%rsi),%rdx -movq 8(%rsi),%rcx -movq 16(%rsi),%r8 -movq 24(%rsi),%r9 -movq 32(%rsi),%rsi -movq REDMASK51(%rip),%rax -lea -18(%rax),%r10 -mov $3,%r11 -._reduceloop: -mov %rdx,%r12 -shr $51,%r12 -and %rax,%rdx -add %r12,%rcx -mov %rcx,%r12 -shr $51,%r12 -and %rax,%rcx -add %r12,%r8 -mov %r8,%r12 -shr $51,%r12 -and %rax,%r8 -add %r12,%r9 -mov %r9,%r12 -shr $51,%r12 -and %rax,%r9 -add %r12,%rsi -mov %rsi,%r12 -shr $51,%r12 -and %rax,%rsi -imulq $19, %r12,%r12 -add %r12,%rdx -sub $1,%r11 -ja ._reduceloop -mov $1,%r12 -cmp %r10,%rdx -cmovl %r11,%r12 -cmp %rax,%rcx -cmovne %r11,%r12 -cmp %rax,%r8 -cmovne %r11,%r12 -cmp %rax,%r9 -cmovne %r11,%r12 -cmp %rax,%rsi -cmovne %r11,%r12 -neg %r12 -and %r12,%rax -and %r12,%r10 -sub %r10,%rdx -sub %rax,%rcx -sub %rax,%r8 -sub %rax,%r9 -sub %rax,%rsi -mov %rdx,%rax -and $0xFF,%eax -movb %al,0(%rdi) -mov %rdx,%rax -shr $8,%rax -and $0xFF,%eax -movb %al,1(%rdi) -mov %rdx,%rax -shr $16,%rax -and $0xFF,%eax -movb %al,2(%rdi) -mov %rdx,%rax -shr $24,%rax -and $0xFF,%eax -movb %al,3(%rdi) -mov %rdx,%rax -shr $32,%rax -and $0xFF,%eax -movb %al,4(%rdi) -mov %rdx,%rax -shr $40,%rax -and $0xFF,%eax -movb %al,5(%rdi) -mov %rdx,%rdx -shr $48,%rdx -mov %rcx,%rax -shl $3,%rax -and $0xF8,%eax -xor %rdx,%rax -movb %al,6(%rdi) -mov %rcx,%rdx -shr $5,%rdx -and $0xFF,%edx -movb %dl,7(%rdi) -mov %rcx,%rdx -shr $13,%rdx -and $0xFF,%edx -movb %dl,8(%rdi) -mov %rcx,%rdx -shr $21,%rdx -and $0xFF,%edx -movb %dl,9(%rdi) -mov %rcx,%rdx -shr $29,%rdx -and $0xFF,%edx -movb %dl,10(%rdi) -mov %rcx,%rdx -shr $37,%rdx -and $0xFF,%edx -movb %dl,11(%rdi) -mov %rcx,%rdx -shr $45,%rdx -mov %r8,%rcx -shl $6,%rcx -and $0xC0,%ecx -xor %rdx,%rcx -movb %cl,12(%rdi) -mov %r8,%rdx -shr $2,%rdx -and $0xFF,%edx -movb %dl,13(%rdi) -mov %r8,%rdx -shr $10,%rdx -and $0xFF,%edx -movb %dl,14(%rdi) -mov %r8,%rdx -shr $18,%rdx -and $0xFF,%edx -movb %dl,15(%rdi) -mov %r8,%rdx -shr $26,%rdx -and $0xFF,%edx -movb %dl,16(%rdi) -mov %r8,%rdx -shr $34,%rdx -and $0xFF,%edx -movb %dl,17(%rdi) -mov %r8,%rdx -shr $42,%rdx -movb %dl,18(%rdi) -mov %r8,%rdx -shr $50,%rdx -mov %r9,%rcx -shl $1,%rcx -and $0xFE,%ecx -xor %rdx,%rcx -movb %cl,19(%rdi) -mov %r9,%rdx -shr $7,%rdx -and $0xFF,%edx -movb %dl,20(%rdi) -mov %r9,%rdx -shr $15,%rdx -and $0xFF,%edx -movb %dl,21(%rdi) -mov %r9,%rdx -shr $23,%rdx -and $0xFF,%edx -movb %dl,22(%rdi) -mov %r9,%rdx -shr $31,%rdx -and $0xFF,%edx -movb %dl,23(%rdi) -mov %r9,%rdx -shr $39,%rdx -and $0xFF,%edx -movb %dl,24(%rdi) -mov %r9,%rdx -shr $47,%rdx -mov %rsi,%rcx -shl $4,%rcx -and $0xF0,%ecx -xor %rdx,%rcx -movb %cl,25(%rdi) -mov %rsi,%rdx -shr $4,%rdx -and $0xFF,%edx -movb %dl,26(%rdi) -mov %rsi,%rdx -shr $12,%rdx -and $0xFF,%edx -movb %dl,27(%rdi) -mov %rsi,%rdx -shr $20,%rdx -and $0xFF,%edx -movb %dl,28(%rdi) -mov %rsi,%rdx -shr $28,%rdx -and $0xFF,%edx -movb %dl,29(%rdi) -mov %rsi,%rdx -shr $36,%rdx -and $0xFF,%edx -movb %dl,30(%rdi) -mov %rsi,%rsi -shr $44,%rsi -movb %sil,31(%rdi) -movq 0(%rsp),%r11 -movq 8(%rsp),%r12 -add %r11,%rsp -ret - +#include "consts_namespace.h" .p2align 5 .globl ladder @@ -688,7 +104,7 @@ xorq 16(%rsi),%r8 xorq 24(%rsi),%r9 leaq 800(%rsp),%rsi mov $64,%rax -._small_loop1: +._small_loop: mov %rdx,%r10 mov %rcx,%r11 mov %r8,%r12 @@ -711,10 +127,10 @@ movl %r12d,512(%rsi) movl %r13d,768(%rsi) add $4,%rsi sub $1,%rax -jne ._small_loop1 +jne ._small_loop mov $255,%rdx add $760,%rsi -._loop2: +._loop: sub $1,%rdx vbroadcastss 0(%rsi),%xmm10 sub $4,%rsi @@ -1993,7 +1409,7 @@ vpunpcklqdq %xmm12,%xmm11,%xmm6 vpunpckhqdq %xmm14,%xmm13,%xmm9 vpunpcklqdq %xmm14,%xmm13,%xmm8 cmp $0,%rdx -jne ._loop2 +jne ._loop movdqu %xmm1,160(%rdi) movdqu %xmm0,80(%rdi) movdqu %xmm3,176(%rdi) @@ -2011,1288 +1427,6 @@ movq 1848(%rsp),%r14 add %r11,%rsp ret -.p2align 5 - -.globl ladder_base -.globl _ladder_base -#ifdef __ELF__ -.type ladder_base, @function -.type _ladder_base, @function -#endif -ladder_base: -_ladder_base: - -mov %rsp,%r11 -and $31,%r11 -add $1568,%r11 -sub %r11,%rsp -movq %r11,1536(%rsp) -movq %r12,1544(%rsp) -movq %r13,1552(%rsp) -movdqa v0_0(%rip),%xmm0 -movdqa v1_0(%rip),%xmm1 -movdqa v9_0(%rip),%xmm2 -movdqa %xmm2,0(%rsp) -movdqa %xmm0,16(%rsp) -movdqa %xmm0,32(%rsp) -movdqa %xmm0,48(%rsp) -movdqa %xmm0,64(%rsp) -movdqa %xmm1,80(%rsp) -movdqa %xmm0,96(%rsp) -movdqa %xmm0,112(%rsp) -movdqa %xmm0,128(%rsp) -movdqa %xmm0,144(%rsp) -movdqa %xmm1,%xmm0 -pxor %xmm1,%xmm1 -pxor %xmm2,%xmm2 -pxor %xmm3,%xmm3 -pxor %xmm4,%xmm4 -pxor %xmm5,%xmm5 -pxor %xmm6,%xmm6 -pxor %xmm7,%xmm7 -pxor %xmm8,%xmm8 -pxor %xmm9,%xmm9 -movq 0(%rsi),%rdx -movq 8(%rsi),%rcx -movq 16(%rsi),%r8 -movq 24(%rsi),%r9 -shrd $1,%rcx,%rdx -shrd $1,%r8,%rcx -shrd $1,%r9,%r8 -shr $1,%r9 -xorq 0(%rsi),%rdx -xorq 8(%rsi),%rcx -xorq 16(%rsi),%r8 -xorq 24(%rsi),%r9 -leaq 512(%rsp),%rsi -mov $64,%rax -._small_loop2: -mov %rdx,%r10 -mov %rcx,%r11 -mov %r8,%r12 -mov %r9,%r13 -shr $1,%rdx -shr $1,%rcx -shr $1,%r8 -shr $1,%r9 -and $1,%r10d -and $1,%r11d -and $1,%r12d -and $1,%r13d -neg %r10 -neg %r11 -neg %r12 -neg %r13 -movl %r10d,0(%rsi) -movl %r11d,256(%rsi) -movl %r12d,512(%rsi) -movl %r13d,768(%rsi) -add $4,%rsi -sub $1,%rax -jne ._small_loop2 -mov $255,%rdx -add $760,%rsi -._loop3: -sub $1,%rdx -vbroadcastss 0(%rsi),%xmm10 -sub $4,%rsi -movdqa 0(%rsp),%xmm11 -movdqa 80(%rsp),%xmm12 -vpxor %xmm11,%xmm0,%xmm13 -pand %xmm10,%xmm13 -pxor %xmm13,%xmm0 -pxor %xmm13,%xmm11 -vpxor %xmm12,%xmm1,%xmm13 -pand %xmm10,%xmm13 -pxor %xmm13,%xmm1 -pxor %xmm13,%xmm12 -movdqa 16(%rsp),%xmm13 -movdqa 96(%rsp),%xmm14 -vpxor %xmm13,%xmm2,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm2 -pxor %xmm15,%xmm13 -vpxor %xmm14,%xmm3,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm3 -pxor %xmm15,%xmm14 -movdqa %xmm13,0(%rsp) -movdqa %xmm14,16(%rsp) -movdqa 32(%rsp),%xmm13 -movdqa 112(%rsp),%xmm14 -vpxor %xmm13,%xmm4,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm4 -pxor %xmm15,%xmm13 -vpxor %xmm14,%xmm5,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm5 -pxor %xmm15,%xmm14 -movdqa %xmm13,32(%rsp) -movdqa %xmm14,80(%rsp) -movdqa 48(%rsp),%xmm13 -movdqa 128(%rsp),%xmm14 -vpxor %xmm13,%xmm6,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm6 -pxor %xmm15,%xmm13 -vpxor %xmm14,%xmm7,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm7 -pxor %xmm15,%xmm14 -movdqa %xmm13,48(%rsp) -movdqa %xmm14,96(%rsp) -movdqa 64(%rsp),%xmm13 -movdqa 144(%rsp),%xmm14 -vpxor %xmm13,%xmm8,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm8 -pxor %xmm15,%xmm13 -vpxor %xmm14,%xmm9,%xmm15 -pand %xmm10,%xmm15 -pxor %xmm15,%xmm9 -pxor %xmm15,%xmm14 -movdqa %xmm13,64(%rsp) -movdqa %xmm14,112(%rsp) -vpaddq subc0(%rip),%xmm11,%xmm10 -psubq %xmm12,%xmm10 -paddq %xmm12,%xmm11 -vpunpckhqdq %xmm10,%xmm11,%xmm12 -vpunpcklqdq %xmm10,%xmm11,%xmm10 -vpaddq %xmm1,%xmm0,%xmm11 -paddq subc0(%rip),%xmm0 -psubq %xmm1,%xmm0 -vpunpckhqdq %xmm11,%xmm0,%xmm1 -vpunpcklqdq %xmm11,%xmm0,%xmm0 -vpmuludq %xmm0,%xmm10,%xmm11 -vpmuludq %xmm1,%xmm10,%xmm13 -movdqa %xmm1,128(%rsp) -paddq %xmm1,%xmm1 -vpmuludq %xmm0,%xmm12,%xmm14 -movdqa %xmm0,144(%rsp) -paddq %xmm14,%xmm13 -vpmuludq %xmm1,%xmm12,%xmm0 -movdqa %xmm1,160(%rsp) -vpaddq %xmm3,%xmm2,%xmm1 -paddq subc2(%rip),%xmm2 -psubq %xmm3,%xmm2 -vpunpckhqdq %xmm1,%xmm2,%xmm3 -vpunpcklqdq %xmm1,%xmm2,%xmm1 -vpmuludq %xmm1,%xmm10,%xmm2 -paddq %xmm2,%xmm0 -vpmuludq %xmm3,%xmm10,%xmm2 -movdqa %xmm3,176(%rsp) -paddq %xmm3,%xmm3 -vpmuludq %xmm1,%xmm12,%xmm14 -movdqa %xmm1,192(%rsp) -paddq %xmm14,%xmm2 -vpmuludq %xmm3,%xmm12,%xmm1 -movdqa %xmm3,208(%rsp) -vpaddq %xmm5,%xmm4,%xmm3 -paddq subc2(%rip),%xmm4 -psubq %xmm5,%xmm4 -vpunpckhqdq %xmm3,%xmm4,%xmm5 -vpunpcklqdq %xmm3,%xmm4,%xmm3 -vpmuludq %xmm3,%xmm10,%xmm4 -paddq %xmm4,%xmm1 -vpmuludq %xmm5,%xmm10,%xmm4 -movdqa %xmm5,224(%rsp) -paddq %xmm5,%xmm5 -vpmuludq %xmm3,%xmm12,%xmm14 -movdqa %xmm3,240(%rsp) -paddq %xmm14,%xmm4 -vpaddq %xmm7,%xmm6,%xmm3 -paddq subc2(%rip),%xmm6 -psubq %xmm7,%xmm6 -vpunpckhqdq %xmm3,%xmm6,%xmm7 -vpunpcklqdq %xmm3,%xmm6,%xmm3 -vpmuludq %xmm3,%xmm10,%xmm6 -vpmuludq %xmm5,%xmm12,%xmm14 -movdqa %xmm5,256(%rsp) -pmuludq v19_19(%rip),%xmm5 -movdqa %xmm5,272(%rsp) -paddq %xmm14,%xmm6 -vpmuludq %xmm7,%xmm10,%xmm5 -movdqa %xmm7,288(%rsp) -paddq %xmm7,%xmm7 -vpmuludq %xmm3,%xmm12,%xmm14 -movdqa %xmm3,304(%rsp) -paddq %xmm14,%xmm5 -pmuludq v19_19(%rip),%xmm3 -movdqa %xmm3,320(%rsp) -vpaddq %xmm9,%xmm8,%xmm3 -paddq subc2(%rip),%xmm8 -psubq %xmm9,%xmm8 -vpunpckhqdq %xmm3,%xmm8,%xmm9 -vpunpcklqdq %xmm3,%xmm8,%xmm3 -movdqa %xmm3,336(%rsp) -vpmuludq %xmm7,%xmm12,%xmm8 -movdqa %xmm7,352(%rsp) -pmuludq v19_19(%rip),%xmm7 -movdqa %xmm7,368(%rsp) -vpmuludq %xmm3,%xmm10,%xmm7 -paddq %xmm7,%xmm8 -vpmuludq %xmm9,%xmm10,%xmm7 -movdqa %xmm9,384(%rsp) -paddq %xmm9,%xmm9 -vpmuludq %xmm3,%xmm12,%xmm10 -paddq %xmm10,%xmm7 -pmuludq v19_19(%rip),%xmm3 -movdqa %xmm3,400(%rsp) -pmuludq v19_19(%rip),%xmm12 -vpmuludq %xmm9,%xmm12,%xmm3 -movdqa %xmm9,416(%rsp) -paddq %xmm3,%xmm11 -movdqa 0(%rsp),%xmm3 -movdqa 16(%rsp),%xmm9 -vpaddq subc2(%rip),%xmm3,%xmm10 -psubq %xmm9,%xmm10 -paddq %xmm9,%xmm3 -vpunpckhqdq %xmm10,%xmm3,%xmm9 -vpunpcklqdq %xmm10,%xmm3,%xmm3 -vpmuludq 144(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm0 -vpmuludq 128(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm2 -vpmuludq 192(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm1 -vpmuludq 176(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm4 -vpmuludq 240(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm6 -vpmuludq 224(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm5 -vpmuludq 304(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm8 -vpmuludq 288(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm7 -pmuludq v19_19(%rip),%xmm3 -vpmuludq 336(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm11 -pmuludq 384(%rsp),%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 144(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm2 -vpmuludq 160(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm1 -vpmuludq 192(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm4 -vpmuludq 208(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm6 -vpmuludq 240(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 256(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm8 -vpmuludq 304(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm7 -pmuludq v19_19(%rip),%xmm9 -vpmuludq 352(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 336(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm13 -pmuludq 416(%rsp),%xmm9 -paddq %xmm9,%xmm0 -movdqa 32(%rsp),%xmm3 -movdqa 80(%rsp),%xmm9 -vpaddq subc2(%rip),%xmm3,%xmm10 -psubq %xmm9,%xmm10 -paddq %xmm9,%xmm3 -vpunpckhqdq %xmm10,%xmm3,%xmm9 -vpunpcklqdq %xmm10,%xmm3,%xmm3 -vpmuludq 144(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm1 -vpmuludq 128(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm4 -vpmuludq 192(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm6 -vpmuludq 176(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm5 -vpmuludq 240(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm8 -vpmuludq 224(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm7 -pmuludq v19_19(%rip),%xmm3 -vpmuludq 304(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm11 -vpmuludq 288(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm13 -vpmuludq 336(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm0 -pmuludq 384(%rsp),%xmm3 -paddq %xmm3,%xmm2 -vpmuludq 144(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm4 -vpmuludq 160(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm6 -vpmuludq 192(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 208(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm8 -vpmuludq 240(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm7 -pmuludq v19_19(%rip),%xmm9 -vpmuludq 256(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 304(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 352(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm0 -vpmuludq 336(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm2 -pmuludq 416(%rsp),%xmm9 -paddq %xmm9,%xmm1 -movdqa 48(%rsp),%xmm3 -movdqa 96(%rsp),%xmm9 -vpaddq subc2(%rip),%xmm3,%xmm10 -psubq %xmm9,%xmm10 -paddq %xmm9,%xmm3 -vpunpckhqdq %xmm10,%xmm3,%xmm9 -vpunpcklqdq %xmm10,%xmm3,%xmm3 -vpmuludq 144(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm6 -vpmuludq 128(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm5 -vpmuludq 192(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm8 -vpmuludq 176(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm7 -pmuludq v19_19(%rip),%xmm3 -vpmuludq 240(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm11 -vpmuludq 224(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm13 -vpmuludq 304(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm0 -vpmuludq 288(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm2 -vpmuludq 336(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm1 -pmuludq 384(%rsp),%xmm3 -paddq %xmm3,%xmm4 -vpmuludq 144(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 160(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm8 -vpmuludq 192(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm7 -pmuludq v19_19(%rip),%xmm9 -vpmuludq 208(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 240(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 256(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm0 -vpmuludq 304(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm2 -vpmuludq 352(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm1 -vpmuludq 336(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm4 -pmuludq 416(%rsp),%xmm9 -paddq %xmm9,%xmm6 -movdqa 64(%rsp),%xmm3 -movdqa 112(%rsp),%xmm9 -vpaddq subc2(%rip),%xmm3,%xmm10 -psubq %xmm9,%xmm10 -paddq %xmm9,%xmm3 -vpunpckhqdq %xmm10,%xmm3,%xmm9 -vpunpcklqdq %xmm10,%xmm3,%xmm3 -vpmuludq 144(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm8 -vpmuludq 128(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm7 -pmuludq v19_19(%rip),%xmm3 -vpmuludq 192(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm11 -vpmuludq 176(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm13 -vpmuludq 240(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm0 -vpmuludq 224(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm2 -vpmuludq 304(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm1 -vpmuludq 288(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm4 -vpmuludq 336(%rsp),%xmm3,%xmm10 -paddq %xmm10,%xmm6 -pmuludq 384(%rsp),%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 144(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm7 -pmuludq v19_19(%rip),%xmm9 -vpmuludq 160(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 192(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 208(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm0 -vpmuludq 240(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm2 -vpmuludq 256(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm1 -vpmuludq 304(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm4 -vpmuludq 352(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm6 -vpmuludq 336(%rsp),%xmm9,%xmm3 -paddq %xmm3,%xmm5 -pmuludq 416(%rsp),%xmm9 -paddq %xmm9,%xmm8 -vpsrlq $25,%xmm4,%xmm3 -paddq %xmm3,%xmm6 -pand m25(%rip),%xmm4 -vpsrlq $26,%xmm11,%xmm3 -paddq %xmm3,%xmm13 -pand m26(%rip),%xmm11 -vpsrlq $26,%xmm6,%xmm3 -paddq %xmm3,%xmm5 -pand m26(%rip),%xmm6 -vpsrlq $25,%xmm13,%xmm3 -paddq %xmm3,%xmm0 -pand m25(%rip),%xmm13 -vpsrlq $25,%xmm5,%xmm3 -paddq %xmm3,%xmm8 -pand m25(%rip),%xmm5 -vpsrlq $26,%xmm0,%xmm3 -paddq %xmm3,%xmm2 -pand m26(%rip),%xmm0 -vpsrlq $26,%xmm8,%xmm3 -paddq %xmm3,%xmm7 -pand m26(%rip),%xmm8 -vpsrlq $25,%xmm2,%xmm3 -paddq %xmm3,%xmm1 -pand m25(%rip),%xmm2 -vpsrlq $25,%xmm7,%xmm3 -vpsllq $4,%xmm3,%xmm9 -paddq %xmm3,%xmm11 -psllq $1,%xmm3 -paddq %xmm3,%xmm9 -paddq %xmm9,%xmm11 -pand m25(%rip),%xmm7 -vpsrlq $26,%xmm1,%xmm3 -paddq %xmm3,%xmm4 -pand m26(%rip),%xmm1 -vpsrlq $26,%xmm11,%xmm3 -paddq %xmm3,%xmm13 -pand m26(%rip),%xmm11 -vpsrlq $25,%xmm4,%xmm3 -paddq %xmm3,%xmm6 -pand m25(%rip),%xmm4 -vpunpcklqdq %xmm13,%xmm11,%xmm3 -vpunpckhqdq %xmm13,%xmm11,%xmm9 -vpaddq subc0(%rip),%xmm9,%xmm10 -psubq %xmm3,%xmm10 -paddq %xmm9,%xmm3 -vpunpckhqdq %xmm3,%xmm10,%xmm9 -punpcklqdq %xmm3,%xmm10 -vpmuludq %xmm10,%xmm10,%xmm3 -paddq %xmm10,%xmm10 -vpmuludq %xmm9,%xmm10,%xmm11 -vpunpcklqdq %xmm2,%xmm0,%xmm12 -vpunpckhqdq %xmm2,%xmm0,%xmm0 -vpaddq subc2(%rip),%xmm0,%xmm2 -psubq %xmm12,%xmm2 -paddq %xmm0,%xmm12 -vpunpckhqdq %xmm12,%xmm2,%xmm0 -punpcklqdq %xmm12,%xmm2 -vpmuludq %xmm2,%xmm10,%xmm12 -vpaddq %xmm9,%xmm9,%xmm13 -vpmuludq %xmm13,%xmm9,%xmm9 -paddq %xmm9,%xmm12 -vpmuludq %xmm0,%xmm10,%xmm9 -vpmuludq %xmm2,%xmm13,%xmm14 -paddq %xmm14,%xmm9 -vpunpcklqdq %xmm4,%xmm1,%xmm14 -vpunpckhqdq %xmm4,%xmm1,%xmm1 -vpaddq subc2(%rip),%xmm1,%xmm4 -psubq %xmm14,%xmm4 -paddq %xmm1,%xmm14 -vpunpckhqdq %xmm14,%xmm4,%xmm1 -punpcklqdq %xmm14,%xmm4 -movdqa %xmm1,0(%rsp) -paddq %xmm1,%xmm1 -movdqa %xmm1,16(%rsp) -pmuludq v19_19(%rip),%xmm1 -movdqa %xmm1,32(%rsp) -vpmuludq %xmm4,%xmm10,%xmm1 -vpmuludq %xmm2,%xmm2,%xmm14 -paddq %xmm14,%xmm1 -vpmuludq 0(%rsp),%xmm10,%xmm14 -vpmuludq %xmm4,%xmm13,%xmm15 -paddq %xmm15,%xmm14 -vpunpcklqdq %xmm5,%xmm6,%xmm15 -vpunpckhqdq %xmm5,%xmm6,%xmm5 -vpaddq subc2(%rip),%xmm5,%xmm6 -psubq %xmm15,%xmm6 -paddq %xmm5,%xmm15 -vpunpckhqdq %xmm15,%xmm6,%xmm5 -punpcklqdq %xmm15,%xmm6 -movdqa %xmm6,48(%rsp) -pmuludq v19_19(%rip),%xmm6 -movdqa %xmm6,64(%rsp) -movdqa %xmm5,80(%rsp) -pmuludq v38_38(%rip),%xmm5 -movdqa %xmm5,96(%rsp) -vpmuludq 48(%rsp),%xmm10,%xmm5 -vpaddq %xmm0,%xmm0,%xmm6 -vpmuludq %xmm6,%xmm0,%xmm0 -paddq %xmm0,%xmm5 -vpmuludq 80(%rsp),%xmm10,%xmm0 -vpmuludq %xmm4,%xmm6,%xmm15 -paddq %xmm15,%xmm0 -vpmuludq %xmm6,%xmm13,%xmm15 -paddq %xmm15,%xmm1 -vpmuludq %xmm6,%xmm2,%xmm15 -paddq %xmm15,%xmm14 -vpunpcklqdq %xmm7,%xmm8,%xmm15 -vpunpckhqdq %xmm7,%xmm8,%xmm7 -vpaddq subc2(%rip),%xmm7,%xmm8 -psubq %xmm15,%xmm8 -paddq %xmm7,%xmm15 -vpunpckhqdq %xmm15,%xmm8,%xmm7 -punpcklqdq %xmm15,%xmm8 -movdqa %xmm8,112(%rsp) -pmuludq v19_19(%rip),%xmm8 -movdqa %xmm8,160(%rsp) -vpmuludq 112(%rsp),%xmm10,%xmm8 -vpmuludq %xmm7,%xmm10,%xmm10 -vpmuludq v38_38(%rip),%xmm7,%xmm15 -vpmuludq %xmm15,%xmm7,%xmm7 -paddq %xmm7,%xmm8 -vpmuludq %xmm15,%xmm13,%xmm7 -paddq %xmm7,%xmm3 -vpmuludq %xmm15,%xmm2,%xmm7 -paddq %xmm7,%xmm11 -vpmuludq 80(%rsp),%xmm13,%xmm7 -paddq %xmm7,%xmm7 -paddq %xmm7,%xmm8 -vpmuludq 16(%rsp),%xmm13,%xmm7 -paddq %xmm7,%xmm5 -vpmuludq 48(%rsp),%xmm13,%xmm7 -paddq %xmm7,%xmm0 -vpmuludq 112(%rsp),%xmm13,%xmm7 -paddq %xmm7,%xmm10 -vpmuludq %xmm15,%xmm6,%xmm7 -paddq %xmm7,%xmm12 -vpmuludq %xmm15,%xmm4,%xmm7 -paddq %xmm7,%xmm9 -vpaddq %xmm2,%xmm2,%xmm2 -vpmuludq %xmm4,%xmm2,%xmm7 -paddq %xmm7,%xmm5 -vpmuludq 160(%rsp),%xmm2,%xmm7 -paddq %xmm7,%xmm3 -vpmuludq 160(%rsp),%xmm6,%xmm7 -paddq %xmm7,%xmm11 -vpmuludq 0(%rsp),%xmm2,%xmm7 -paddq %xmm7,%xmm0 -vpmuludq 48(%rsp),%xmm2,%xmm7 -paddq %xmm7,%xmm8 -vpmuludq 80(%rsp),%xmm2,%xmm2 -paddq %xmm2,%xmm10 -vpmuludq 96(%rsp),%xmm4,%xmm2 -paddq %xmm2,%xmm11 -vpmuludq %xmm4,%xmm4,%xmm2 -paddq %xmm2,%xmm8 -vpaddq %xmm4,%xmm4,%xmm2 -vpmuludq 160(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm12 -vpmuludq 16(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm1 -vpmuludq 48(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm14 -vpmuludq 96(%rsp),%xmm6,%xmm4 -paddq %xmm4,%xmm3 -movdqa 16(%rsp),%xmm4 -pmuludq 160(%rsp),%xmm4 -paddq %xmm4,%xmm9 -vpmuludq 16(%rsp),%xmm6,%xmm4 -paddq %xmm4,%xmm8 -vpmuludq 48(%rsp),%xmm6,%xmm4 -paddq %xmm4,%xmm10 -vpmuludq 80(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm4 -paddq %xmm4,%xmm5 -vpmuludq 112(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm0 -movdqa 48(%rsp),%xmm4 -paddq %xmm4,%xmm4 -pmuludq 160(%rsp),%xmm4 -paddq %xmm4,%xmm1 -movdqa 80(%rsp),%xmm4 -paddq %xmm4,%xmm4 -pmuludq 160(%rsp),%xmm4 -paddq %xmm4,%xmm14 -vpmuludq 64(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm3 -movdqa 16(%rsp),%xmm4 -pmuludq 64(%rsp),%xmm4 -paddq %xmm4,%xmm11 -movdqa 16(%rsp),%xmm4 -pmuludq 96(%rsp),%xmm4 -paddq %xmm4,%xmm12 -movdqa 48(%rsp),%xmm4 -pmuludq 96(%rsp),%xmm4 -paddq %xmm4,%xmm9 -vpmuludq 0(%rsp),%xmm2,%xmm2 -paddq %xmm2,%xmm10 -movdqa 32(%rsp),%xmm2 -pmuludq 0(%rsp),%xmm2 -paddq %xmm2,%xmm3 -movdqa 64(%rsp),%xmm2 -pmuludq 48(%rsp),%xmm2 -paddq %xmm2,%xmm12 -movdqa 96(%rsp),%xmm2 -pmuludq 80(%rsp),%xmm2 -paddq %xmm2,%xmm1 -movdqa 160(%rsp),%xmm2 -pmuludq 112(%rsp),%xmm2 -paddq %xmm2,%xmm5 -vpsrlq $26,%xmm3,%xmm2 -paddq %xmm2,%xmm11 -pand m26(%rip),%xmm3 -vpsrlq $25,%xmm14,%xmm2 -paddq %xmm2,%xmm5 -pand m25(%rip),%xmm14 -vpsrlq $25,%xmm11,%xmm2 -paddq %xmm2,%xmm12 -pand m25(%rip),%xmm11 -vpsrlq $26,%xmm5,%xmm2 -paddq %xmm2,%xmm0 -pand m26(%rip),%xmm5 -vpsrlq $26,%xmm12,%xmm2 -paddq %xmm2,%xmm9 -pand m26(%rip),%xmm12 -vpsrlq $25,%xmm0,%xmm2 -paddq %xmm2,%xmm8 -pand m25(%rip),%xmm0 -vpsrlq $25,%xmm9,%xmm2 -paddq %xmm2,%xmm1 -pand m25(%rip),%xmm9 -vpsrlq $26,%xmm8,%xmm2 -paddq %xmm2,%xmm10 -pand m26(%rip),%xmm8 -vpsrlq $26,%xmm1,%xmm2 -paddq %xmm2,%xmm14 -pand m26(%rip),%xmm1 -vpsrlq $25,%xmm10,%xmm2 -vpsllq $4,%xmm2,%xmm4 -paddq %xmm2,%xmm3 -psllq $1,%xmm2 -paddq %xmm2,%xmm4 -paddq %xmm4,%xmm3 -pand m25(%rip),%xmm10 -vpsrlq $25,%xmm14,%xmm2 -paddq %xmm2,%xmm5 -pand m25(%rip),%xmm14 -vpsrlq $26,%xmm3,%xmm2 -paddq %xmm2,%xmm11 -pand m26(%rip),%xmm3 -vpunpckhqdq %xmm11,%xmm3,%xmm2 -movdqa %xmm2,0(%rsp) -vpunpcklqdq %xmm11,%xmm3,%xmm2 -pmuludq v9_9(%rip),%xmm2 -movdqa %xmm2,80(%rsp) -vpunpckhqdq %xmm9,%xmm12,%xmm2 -movdqa %xmm2,16(%rsp) -vpunpcklqdq %xmm9,%xmm12,%xmm2 -pmuludq v9_9(%rip),%xmm2 -movdqa %xmm2,96(%rsp) -vpunpckhqdq %xmm14,%xmm1,%xmm2 -movdqa %xmm2,32(%rsp) -vpunpcklqdq %xmm14,%xmm1,%xmm1 -pmuludq v9_9(%rip),%xmm1 -movdqa %xmm1,112(%rsp) -vpunpckhqdq %xmm0,%xmm5,%xmm1 -movdqa %xmm1,48(%rsp) -vpunpcklqdq %xmm0,%xmm5,%xmm0 -pmuludq v9_9(%rip),%xmm0 -movdqa %xmm0,160(%rsp) -vpunpckhqdq %xmm10,%xmm8,%xmm0 -movdqa %xmm0,64(%rsp) -vpunpcklqdq %xmm10,%xmm8,%xmm0 -pmuludq v9_9(%rip),%xmm0 -movdqa %xmm0,208(%rsp) -movdqa 144(%rsp),%xmm0 -vpmuludq %xmm0,%xmm0,%xmm1 -paddq %xmm0,%xmm0 -movdqa 128(%rsp),%xmm2 -vpmuludq %xmm2,%xmm0,%xmm3 -movdqa 192(%rsp),%xmm4 -vpmuludq %xmm4,%xmm0,%xmm5 -movdqa 176(%rsp),%xmm6 -vpmuludq %xmm6,%xmm0,%xmm7 -movdqa 240(%rsp),%xmm8 -vpmuludq %xmm8,%xmm0,%xmm9 -vpmuludq 224(%rsp),%xmm0,%xmm10 -vpmuludq 304(%rsp),%xmm0,%xmm11 -vpmuludq 288(%rsp),%xmm0,%xmm12 -vpmuludq 336(%rsp),%xmm0,%xmm13 -movdqa 384(%rsp),%xmm14 -vpmuludq %xmm14,%xmm0,%xmm0 -vpmuludq v38_38(%rip),%xmm14,%xmm15 -vpmuludq %xmm15,%xmm14,%xmm14 -paddq %xmm14,%xmm13 -vpaddq %xmm6,%xmm6,%xmm14 -vpmuludq %xmm14,%xmm6,%xmm6 -paddq %xmm6,%xmm11 -vpaddq %xmm2,%xmm2,%xmm6 -vpmuludq %xmm6,%xmm2,%xmm2 -paddq %xmm2,%xmm5 -vpmuludq %xmm15,%xmm6,%xmm2 -paddq %xmm2,%xmm1 -vpmuludq %xmm15,%xmm4,%xmm2 -paddq %xmm2,%xmm3 -vpmuludq 256(%rsp),%xmm6,%xmm2 -paddq %xmm2,%xmm11 -vpmuludq 304(%rsp),%xmm6,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 352(%rsp),%xmm6,%xmm2 -paddq %xmm2,%xmm13 -vpmuludq 336(%rsp),%xmm6,%xmm2 -paddq %xmm2,%xmm0 -vpmuludq %xmm4,%xmm6,%xmm2 -paddq %xmm2,%xmm7 -vpmuludq %xmm14,%xmm6,%xmm2 -paddq %xmm2,%xmm9 -vpmuludq %xmm8,%xmm6,%xmm2 -paddq %xmm2,%xmm10 -vpmuludq %xmm15,%xmm14,%xmm2 -paddq %xmm2,%xmm5 -vpmuludq %xmm15,%xmm8,%xmm2 -paddq %xmm2,%xmm7 -vpmuludq %xmm4,%xmm4,%xmm2 -paddq %xmm2,%xmm9 -vpmuludq %xmm14,%xmm4,%xmm2 -paddq %xmm2,%xmm10 -vpaddq %xmm4,%xmm4,%xmm2 -vpmuludq %xmm8,%xmm2,%xmm4 -paddq %xmm4,%xmm11 -vpmuludq 400(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm1 -vpmuludq 400(%rsp),%xmm14,%xmm4 -paddq %xmm4,%xmm3 -vpmuludq 224(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm12 -vpmuludq 304(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm13 -vpmuludq 288(%rsp),%xmm2,%xmm2 -paddq %xmm2,%xmm0 -vpmuludq 368(%rsp),%xmm8,%xmm2 -paddq %xmm2,%xmm3 -vpmuludq %xmm8,%xmm14,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq %xmm8,%xmm8,%xmm2 -paddq %xmm2,%xmm13 -vpaddq %xmm8,%xmm8,%xmm2 -vpmuludq 400(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm5 -vpmuludq 256(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm9 -vpmuludq 304(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm10 -vpmuludq 368(%rsp),%xmm14,%xmm4 -paddq %xmm4,%xmm1 -movdqa 256(%rsp),%xmm4 -pmuludq 400(%rsp),%xmm4 -paddq %xmm4,%xmm7 -vpmuludq 256(%rsp),%xmm14,%xmm4 -paddq %xmm4,%xmm13 -vpmuludq 304(%rsp),%xmm14,%xmm4 -paddq %xmm4,%xmm0 -vpmuludq 352(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm11 -vpmuludq 336(%rsp),%xmm15,%xmm4 -paddq %xmm4,%xmm12 -movdqa 304(%rsp),%xmm4 -paddq %xmm4,%xmm4 -pmuludq 400(%rsp),%xmm4 -paddq %xmm4,%xmm9 -vpmuludq 320(%rsp),%xmm2,%xmm4 -paddq %xmm4,%xmm1 -movdqa 256(%rsp),%xmm4 -pmuludq 320(%rsp),%xmm4 -paddq %xmm4,%xmm3 -movdqa 256(%rsp),%xmm4 -pmuludq 368(%rsp),%xmm4 -paddq %xmm4,%xmm5 -movdqa 304(%rsp),%xmm4 -pmuludq 368(%rsp),%xmm4 -paddq %xmm4,%xmm7 -movdqa 352(%rsp),%xmm4 -pmuludq 400(%rsp),%xmm4 -paddq %xmm4,%xmm10 -vpmuludq 224(%rsp),%xmm2,%xmm2 -paddq %xmm2,%xmm0 -movdqa 272(%rsp),%xmm2 -pmuludq 224(%rsp),%xmm2 -paddq %xmm2,%xmm1 -movdqa 320(%rsp),%xmm2 -pmuludq 304(%rsp),%xmm2 -paddq %xmm2,%xmm5 -movdqa 368(%rsp),%xmm2 -pmuludq 288(%rsp),%xmm2 -paddq %xmm2,%xmm9 -movdqa 400(%rsp),%xmm2 -pmuludq 336(%rsp),%xmm2 -paddq %xmm2,%xmm11 -vpsrlq $26,%xmm1,%xmm2 -paddq %xmm2,%xmm3 -pand m26(%rip),%xmm1 -vpsrlq $25,%xmm10,%xmm2 -paddq %xmm2,%xmm11 -pand m25(%rip),%xmm10 -vpsrlq $25,%xmm3,%xmm2 -paddq %xmm2,%xmm5 -pand m25(%rip),%xmm3 -vpsrlq $26,%xmm11,%xmm2 -paddq %xmm2,%xmm12 -pand m26(%rip),%xmm11 -vpsrlq $26,%xmm5,%xmm2 -paddq %xmm2,%xmm7 -pand m26(%rip),%xmm5 -vpsrlq $25,%xmm12,%xmm2 -paddq %xmm2,%xmm13 -pand m25(%rip),%xmm12 -vpsrlq $25,%xmm7,%xmm2 -paddq %xmm2,%xmm9 -pand m25(%rip),%xmm7 -vpsrlq $26,%xmm13,%xmm2 -paddq %xmm2,%xmm0 -pand m26(%rip),%xmm13 -vpsrlq $26,%xmm9,%xmm2 -paddq %xmm2,%xmm10 -pand m26(%rip),%xmm9 -vpsrlq $25,%xmm0,%xmm2 -vpsllq $4,%xmm2,%xmm4 -paddq %xmm2,%xmm1 -psllq $1,%xmm2 -paddq %xmm2,%xmm4 -paddq %xmm4,%xmm1 -pand m25(%rip),%xmm0 -vpsrlq $25,%xmm10,%xmm2 -paddq %xmm2,%xmm11 -pand m25(%rip),%xmm10 -vpsrlq $26,%xmm1,%xmm2 -paddq %xmm2,%xmm3 -pand m26(%rip),%xmm1 -vpunpckhqdq %xmm3,%xmm1,%xmm2 -vpunpcklqdq %xmm3,%xmm1,%xmm1 -movdqa %xmm1,176(%rsp) -vpaddq subc0(%rip),%xmm2,%xmm3 -psubq %xmm1,%xmm3 -vpunpckhqdq %xmm3,%xmm2,%xmm1 -vpunpcklqdq %xmm3,%xmm2,%xmm2 -movdqa %xmm2,192(%rsp) -movdqa %xmm1,224(%rsp) -psllq $1,%xmm1 -movdqa %xmm1,240(%rsp) -pmuludq v121666_121666(%rip),%xmm3 -movdqa 80(%rsp),%xmm1 -vpunpcklqdq %xmm1,%xmm3,%xmm2 -vpunpckhqdq %xmm1,%xmm3,%xmm1 -vpunpckhqdq %xmm7,%xmm5,%xmm3 -vpunpcklqdq %xmm7,%xmm5,%xmm4 -movdqa %xmm4,256(%rsp) -vpaddq subc2(%rip),%xmm3,%xmm5 -psubq %xmm4,%xmm5 -vpunpckhqdq %xmm5,%xmm3,%xmm4 -vpunpcklqdq %xmm5,%xmm3,%xmm3 -movdqa %xmm3,272(%rsp) -movdqa %xmm4,288(%rsp) -psllq $1,%xmm4 -movdqa %xmm4,304(%rsp) -pmuludq v121666_121666(%rip),%xmm5 -movdqa 96(%rsp),%xmm3 -vpunpcklqdq %xmm3,%xmm5,%xmm4 -vpunpckhqdq %xmm3,%xmm5,%xmm3 -vpunpckhqdq %xmm10,%xmm9,%xmm5 -vpunpcklqdq %xmm10,%xmm9,%xmm6 -movdqa %xmm6,320(%rsp) -vpaddq subc2(%rip),%xmm5,%xmm7 -psubq %xmm6,%xmm7 -vpunpckhqdq %xmm7,%xmm5,%xmm6 -vpunpcklqdq %xmm7,%xmm5,%xmm5 -movdqa %xmm5,336(%rsp) -movdqa %xmm6,352(%rsp) -psllq $1,%xmm6 -movdqa %xmm6,368(%rsp) -pmuludq v121666_121666(%rip),%xmm7 -movdqa 112(%rsp),%xmm5 -vpunpcklqdq %xmm5,%xmm7,%xmm6 -vpunpckhqdq %xmm5,%xmm7,%xmm5 -vpunpckhqdq %xmm12,%xmm11,%xmm7 -vpunpcklqdq %xmm12,%xmm11,%xmm8 -movdqa %xmm8,384(%rsp) -vpaddq subc2(%rip),%xmm7,%xmm9 -psubq %xmm8,%xmm9 -vpunpckhqdq %xmm9,%xmm7,%xmm8 -vpunpcklqdq %xmm9,%xmm7,%xmm7 -movdqa %xmm7,400(%rsp) -movdqa %xmm8,416(%rsp) -psllq $1,%xmm8 -movdqa %xmm8,432(%rsp) -pmuludq v121666_121666(%rip),%xmm9 -movdqa 160(%rsp),%xmm7 -vpunpcklqdq %xmm7,%xmm9,%xmm8 -vpunpckhqdq %xmm7,%xmm9,%xmm7 -vpunpckhqdq %xmm0,%xmm13,%xmm9 -vpunpcklqdq %xmm0,%xmm13,%xmm0 -movdqa %xmm0,160(%rsp) -vpaddq subc2(%rip),%xmm9,%xmm10 -psubq %xmm0,%xmm10 -vpunpckhqdq %xmm10,%xmm9,%xmm0 -vpunpcklqdq %xmm10,%xmm9,%xmm9 -movdqa %xmm9,448(%rsp) -movdqa %xmm0,464(%rsp) -psllq $1,%xmm0 -movdqa %xmm0,480(%rsp) -pmuludq v121666_121666(%rip),%xmm10 -movdqa 208(%rsp),%xmm0 -vpunpcklqdq %xmm0,%xmm10,%xmm9 -vpunpckhqdq %xmm0,%xmm10,%xmm0 -vpsrlq $26,%xmm2,%xmm10 -paddq %xmm10,%xmm1 -pand m26(%rip),%xmm2 -vpsrlq $25,%xmm5,%xmm10 -paddq %xmm10,%xmm8 -pand m25(%rip),%xmm5 -vpsrlq $25,%xmm1,%xmm10 -paddq %xmm10,%xmm4 -pand m25(%rip),%xmm1 -vpsrlq $26,%xmm8,%xmm10 -paddq %xmm10,%xmm7 -pand m26(%rip),%xmm8 -vpsrlq $26,%xmm4,%xmm10 -paddq %xmm10,%xmm3 -pand m26(%rip),%xmm4 -vpsrlq $25,%xmm7,%xmm10 -paddq %xmm10,%xmm9 -pand m25(%rip),%xmm7 -vpsrlq $25,%xmm3,%xmm10 -paddq %xmm10,%xmm6 -pand m25(%rip),%xmm3 -vpsrlq $26,%xmm9,%xmm10 -paddq %xmm10,%xmm0 -pand m26(%rip),%xmm9 -vpsrlq $26,%xmm6,%xmm10 -paddq %xmm10,%xmm5 -pand m26(%rip),%xmm6 -vpsrlq $25,%xmm0,%xmm10 -vpsllq $4,%xmm10,%xmm11 -paddq %xmm10,%xmm2 -psllq $1,%xmm10 -paddq %xmm10,%xmm11 -paddq %xmm11,%xmm2 -pand m25(%rip),%xmm0 -vpsrlq $25,%xmm5,%xmm10 -paddq %xmm10,%xmm8 -pand m25(%rip),%xmm5 -vpsrlq $26,%xmm2,%xmm10 -paddq %xmm10,%xmm1 -pand m26(%rip),%xmm2 -vpunpckhqdq %xmm1,%xmm2,%xmm10 -movdqa %xmm10,80(%rsp) -vpunpcklqdq %xmm1,%xmm2,%xmm1 -vpunpckhqdq %xmm3,%xmm4,%xmm2 -movdqa %xmm2,96(%rsp) -vpunpcklqdq %xmm3,%xmm4,%xmm2 -vpunpckhqdq %xmm5,%xmm6,%xmm3 -movdqa %xmm3,112(%rsp) -vpunpcklqdq %xmm5,%xmm6,%xmm3 -vpunpckhqdq %xmm7,%xmm8,%xmm4 -movdqa %xmm4,128(%rsp) -vpunpcklqdq %xmm7,%xmm8,%xmm4 -vpunpckhqdq %xmm0,%xmm9,%xmm5 -movdqa %xmm5,144(%rsp) -vpunpcklqdq %xmm0,%xmm9,%xmm0 -movdqa 176(%rsp),%xmm5 -paddq %xmm5,%xmm1 -vpunpcklqdq %xmm1,%xmm5,%xmm6 -vpunpckhqdq %xmm1,%xmm5,%xmm1 -vpmuludq 224(%rsp),%xmm6,%xmm5 -vpmuludq 192(%rsp),%xmm1,%xmm7 -paddq %xmm7,%xmm5 -vpmuludq 272(%rsp),%xmm6,%xmm7 -vpmuludq 240(%rsp),%xmm1,%xmm8 -paddq %xmm8,%xmm7 -vpmuludq 288(%rsp),%xmm6,%xmm8 -vpmuludq 272(%rsp),%xmm1,%xmm9 -paddq %xmm9,%xmm8 -vpmuludq 336(%rsp),%xmm6,%xmm9 -vpmuludq 304(%rsp),%xmm1,%xmm10 -paddq %xmm10,%xmm9 -vpmuludq 352(%rsp),%xmm6,%xmm10 -vpmuludq 336(%rsp),%xmm1,%xmm11 -paddq %xmm11,%xmm10 -vpmuludq 400(%rsp),%xmm6,%xmm11 -vpmuludq 368(%rsp),%xmm1,%xmm12 -paddq %xmm12,%xmm11 -vpmuludq 416(%rsp),%xmm6,%xmm12 -vpmuludq 400(%rsp),%xmm1,%xmm13 -paddq %xmm13,%xmm12 -vpmuludq 448(%rsp),%xmm6,%xmm13 -vpmuludq 432(%rsp),%xmm1,%xmm14 -paddq %xmm14,%xmm13 -vpmuludq 464(%rsp),%xmm6,%xmm14 -vpmuludq 448(%rsp),%xmm1,%xmm15 -paddq %xmm15,%xmm14 -vpmuludq 192(%rsp),%xmm6,%xmm6 -pmuludq v19_19(%rip),%xmm1 -vpmuludq 480(%rsp),%xmm1,%xmm1 -paddq %xmm1,%xmm6 -movdqa 256(%rsp),%xmm1 -paddq %xmm1,%xmm2 -vpunpcklqdq %xmm2,%xmm1,%xmm15 -vpunpckhqdq %xmm2,%xmm1,%xmm1 -vpmuludq 192(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm7 -vpmuludq 224(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm8 -vpmuludq 272(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm9 -vpmuludq 288(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm10 -vpmuludq 336(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm11 -vpmuludq 352(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 400(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm13 -vpmuludq 416(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm14 -pmuludq v19_19(%rip),%xmm15 -vpmuludq 448(%rsp),%xmm15,%xmm2 -paddq %xmm2,%xmm6 -pmuludq 464(%rsp),%xmm15 -paddq %xmm15,%xmm5 -vpmuludq 192(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm8 -vpmuludq 240(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm9 -vpmuludq 272(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm10 -vpmuludq 304(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm11 -vpmuludq 336(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 368(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm13 -vpmuludq 400(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm14 -pmuludq v19_19(%rip),%xmm1 -vpmuludq 432(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm6 -vpmuludq 448(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm5 -pmuludq 480(%rsp),%xmm1 -paddq %xmm1,%xmm7 -movdqa 320(%rsp),%xmm1 -paddq %xmm1,%xmm3 -vpunpcklqdq %xmm3,%xmm1,%xmm2 -vpunpckhqdq %xmm3,%xmm1,%xmm1 -vpmuludq 192(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm9 -vpmuludq 224(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm10 -vpmuludq 272(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 288(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm12 -vpmuludq 336(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 352(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm14 -pmuludq v19_19(%rip),%xmm2 -vpmuludq 400(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm6 -vpmuludq 416(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 448(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm7 -pmuludq 464(%rsp),%xmm2 -paddq %xmm2,%xmm8 -vpmuludq 192(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm10 -vpmuludq 240(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm11 -vpmuludq 272(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 304(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm13 -vpmuludq 336(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm14 -pmuludq v19_19(%rip),%xmm1 -vpmuludq 368(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm6 -vpmuludq 400(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm5 -vpmuludq 432(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm7 -vpmuludq 448(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm8 -pmuludq 480(%rsp),%xmm1 -paddq %xmm1,%xmm9 -movdqa 384(%rsp),%xmm1 -paddq %xmm1,%xmm4 -vpunpcklqdq %xmm4,%xmm1,%xmm2 -vpunpckhqdq %xmm4,%xmm1,%xmm1 -vpmuludq 192(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm11 -vpmuludq 224(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm12 -vpmuludq 272(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm13 -vpmuludq 288(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm14 -pmuludq v19_19(%rip),%xmm2 -vpmuludq 336(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm6 -vpmuludq 352(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm5 -vpmuludq 400(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm7 -vpmuludq 416(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm8 -vpmuludq 448(%rsp),%xmm2,%xmm3 -paddq %xmm3,%xmm9 -pmuludq 464(%rsp),%xmm2 -paddq %xmm2,%xmm10 -vpmuludq 192(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 240(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm13 -vpmuludq 272(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm14 -pmuludq v19_19(%rip),%xmm1 -vpmuludq 304(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm6 -vpmuludq 336(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm5 -vpmuludq 368(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm7 -vpmuludq 400(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm8 -vpmuludq 432(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm9 -vpmuludq 448(%rsp),%xmm1,%xmm2 -paddq %xmm2,%xmm10 -pmuludq 480(%rsp),%xmm1 -paddq %xmm1,%xmm11 -movdqa 160(%rsp),%xmm1 -paddq %xmm1,%xmm0 -vpunpcklqdq %xmm0,%xmm1,%xmm2 -vpunpckhqdq %xmm0,%xmm1,%xmm0 -vpmuludq 192(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm13 -vpmuludq 224(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm14 -pmuludq v19_19(%rip),%xmm2 -vpmuludq 272(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm6 -vpmuludq 288(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm5 -vpmuludq 336(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm7 -vpmuludq 352(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm8 -vpmuludq 400(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm9 -vpmuludq 416(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm10 -vpmuludq 448(%rsp),%xmm2,%xmm1 -paddq %xmm1,%xmm11 -pmuludq 464(%rsp),%xmm2 -paddq %xmm2,%xmm12 -vpmuludq 192(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm14 -pmuludq v19_19(%rip),%xmm0 -vpmuludq 240(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm6 -vpmuludq 272(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm5 -vpmuludq 304(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm7 -vpmuludq 336(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm8 -vpmuludq 368(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm9 -vpmuludq 400(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm10 -vpmuludq 432(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm11 -vpmuludq 448(%rsp),%xmm0,%xmm1 -paddq %xmm1,%xmm12 -pmuludq 480(%rsp),%xmm0 -paddq %xmm0,%xmm13 -vpsrlq $26,%xmm6,%xmm0 -paddq %xmm0,%xmm5 -pand m26(%rip),%xmm6 -vpsrlq $25,%xmm10,%xmm0 -paddq %xmm0,%xmm11 -pand m25(%rip),%xmm10 -vpsrlq $25,%xmm5,%xmm0 -paddq %xmm0,%xmm7 -pand m25(%rip),%xmm5 -vpsrlq $26,%xmm11,%xmm0 -paddq %xmm0,%xmm12 -pand m26(%rip),%xmm11 -vpsrlq $26,%xmm7,%xmm0 -paddq %xmm0,%xmm8 -pand m26(%rip),%xmm7 -vpsrlq $25,%xmm12,%xmm0 -paddq %xmm0,%xmm13 -pand m25(%rip),%xmm12 -vpsrlq $25,%xmm8,%xmm0 -paddq %xmm0,%xmm9 -pand m25(%rip),%xmm8 -vpsrlq $26,%xmm13,%xmm0 -paddq %xmm0,%xmm14 -pand m26(%rip),%xmm13 -vpsrlq $26,%xmm9,%xmm0 -paddq %xmm0,%xmm10 -pand m26(%rip),%xmm9 -vpsrlq $25,%xmm14,%xmm0 -vpsllq $4,%xmm0,%xmm1 -paddq %xmm0,%xmm6 -psllq $1,%xmm0 -paddq %xmm0,%xmm1 -paddq %xmm1,%xmm6 -pand m25(%rip),%xmm14 -vpsrlq $25,%xmm10,%xmm0 -paddq %xmm0,%xmm11 -pand m25(%rip),%xmm10 -vpsrlq $26,%xmm6,%xmm0 -paddq %xmm0,%xmm5 -pand m26(%rip),%xmm6 -vpunpckhqdq %xmm5,%xmm6,%xmm1 -vpunpcklqdq %xmm5,%xmm6,%xmm0 -vpunpckhqdq %xmm8,%xmm7,%xmm3 -vpunpcklqdq %xmm8,%xmm7,%xmm2 -vpunpckhqdq %xmm10,%xmm9,%xmm5 -vpunpcklqdq %xmm10,%xmm9,%xmm4 -vpunpckhqdq %xmm12,%xmm11,%xmm7 -vpunpcklqdq %xmm12,%xmm11,%xmm6 -vpunpckhqdq %xmm14,%xmm13,%xmm9 -vpunpcklqdq %xmm14,%xmm13,%xmm8 -cmp $0,%rdx -jne ._loop3 -movdqu %xmm1,80(%rdi) -movdqu %xmm0,0(%rdi) -movdqu %xmm3,96(%rdi) -movdqu %xmm2,16(%rdi) -movdqu %xmm5,112(%rdi) -movdqu %xmm4,32(%rdi) -movdqu %xmm7,128(%rdi) -movdqu %xmm6,48(%rdi) -movdqu %xmm9,144(%rdi) -movdqu %xmm8,64(%rdi) -movq 1536(%rsp),%r11 -movq 1544(%rsp),%r12 -movq 1552(%rsp),%r13 -add %r11,%rsp -ret - #if defined(__linux__) && defined(__ELF__) .section .note.GNU-stack,"",%progbits #endif diff --git a/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S new file mode 100644 index 00000000..3df33925 --- /dev/null +++ b/src/libsodium/crypto_scalarmult/curve25519/sandy2x/ladder_base.S @@ -0,0 +1,1287 @@ +#include "ladder_base_namespace.h" +#include "consts_namespace.h" +.p2align 5 + +.globl ladder_base +.globl _ladder_base +#ifdef __ELF__ +.type ladder_base, @function +.type _ladder_base, @function +#endif +ladder_base: +_ladder_base: + +mov %rsp,%r11 +and $31,%r11 +add $1568,%r11 +sub %r11,%rsp +movq %r11,1536(%rsp) +movq %r12,1544(%rsp) +movq %r13,1552(%rsp) +movdqa v0_0(%rip),%xmm0 +movdqa v1_0(%rip),%xmm1 +movdqa v9_0(%rip),%xmm2 +movdqa %xmm2,0(%rsp) +movdqa %xmm0,16(%rsp) +movdqa %xmm0,32(%rsp) +movdqa %xmm0,48(%rsp) +movdqa %xmm0,64(%rsp) +movdqa %xmm1,80(%rsp) +movdqa %xmm0,96(%rsp) +movdqa %xmm0,112(%rsp) +movdqa %xmm0,128(%rsp) +movdqa %xmm0,144(%rsp) +movdqa %xmm1,%xmm0 +pxor %xmm1,%xmm1 +pxor %xmm2,%xmm2 +pxor %xmm3,%xmm3 +pxor %xmm4,%xmm4 +pxor %xmm5,%xmm5 +pxor %xmm6,%xmm6 +pxor %xmm7,%xmm7 +pxor %xmm8,%xmm8 +pxor %xmm9,%xmm9 +movq 0(%rsi),%rdx +movq 8(%rsi),%rcx +movq 16(%rsi),%r8 +movq 24(%rsi),%r9 +shrd $1,%rcx,%rdx +shrd $1,%r8,%rcx +shrd $1,%r9,%r8 +shr $1,%r9 +xorq 0(%rsi),%rdx +xorq 8(%rsi),%rcx +xorq 16(%rsi),%r8 +xorq 24(%rsi),%r9 +leaq 512(%rsp),%rsi +mov $64,%rax +._small_loop: +mov %rdx,%r10 +mov %rcx,%r11 +mov %r8,%r12 +mov %r9,%r13 +shr $1,%rdx +shr $1,%rcx +shr $1,%r8 +shr $1,%r9 +and $1,%r10d +and $1,%r11d +and $1,%r12d +and $1,%r13d +neg %r10 +neg %r11 +neg %r12 +neg %r13 +movl %r10d,0(%rsi) +movl %r11d,256(%rsi) +movl %r12d,512(%rsi) +movl %r13d,768(%rsi) +add $4,%rsi +sub $1,%rax +jne ._small_loop +mov $255,%rdx +add $760,%rsi +._loop: +sub $1,%rdx +vbroadcastss 0(%rsi),%xmm10 +sub $4,%rsi +movdqa 0(%rsp),%xmm11 +movdqa 80(%rsp),%xmm12 +vpxor %xmm11,%xmm0,%xmm13 +pand %xmm10,%xmm13 +pxor %xmm13,%xmm0 +pxor %xmm13,%xmm11 +vpxor %xmm12,%xmm1,%xmm13 +pand %xmm10,%xmm13 +pxor %xmm13,%xmm1 +pxor %xmm13,%xmm12 +movdqa 16(%rsp),%xmm13 +movdqa 96(%rsp),%xmm14 +vpxor %xmm13,%xmm2,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm2 +pxor %xmm15,%xmm13 +vpxor %xmm14,%xmm3,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm3 +pxor %xmm15,%xmm14 +movdqa %xmm13,0(%rsp) +movdqa %xmm14,16(%rsp) +movdqa 32(%rsp),%xmm13 +movdqa 112(%rsp),%xmm14 +vpxor %xmm13,%xmm4,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm4 +pxor %xmm15,%xmm13 +vpxor %xmm14,%xmm5,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm5 +pxor %xmm15,%xmm14 +movdqa %xmm13,32(%rsp) +movdqa %xmm14,80(%rsp) +movdqa 48(%rsp),%xmm13 +movdqa 128(%rsp),%xmm14 +vpxor %xmm13,%xmm6,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm6 +pxor %xmm15,%xmm13 +vpxor %xmm14,%xmm7,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm7 +pxor %xmm15,%xmm14 +movdqa %xmm13,48(%rsp) +movdqa %xmm14,96(%rsp) +movdqa 64(%rsp),%xmm13 +movdqa 144(%rsp),%xmm14 +vpxor %xmm13,%xmm8,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm8 +pxor %xmm15,%xmm13 +vpxor %xmm14,%xmm9,%xmm15 +pand %xmm10,%xmm15 +pxor %xmm15,%xmm9 +pxor %xmm15,%xmm14 +movdqa %xmm13,64(%rsp) +movdqa %xmm14,112(%rsp) +vpaddq subc0(%rip),%xmm11,%xmm10 +psubq %xmm12,%xmm10 +paddq %xmm12,%xmm11 +vpunpckhqdq %xmm10,%xmm11,%xmm12 +vpunpcklqdq %xmm10,%xmm11,%xmm10 +vpaddq %xmm1,%xmm0,%xmm11 +paddq subc0(%rip),%xmm0 +psubq %xmm1,%xmm0 +vpunpckhqdq %xmm11,%xmm0,%xmm1 +vpunpcklqdq %xmm11,%xmm0,%xmm0 +vpmuludq %xmm0,%xmm10,%xmm11 +vpmuludq %xmm1,%xmm10,%xmm13 +movdqa %xmm1,128(%rsp) +paddq %xmm1,%xmm1 +vpmuludq %xmm0,%xmm12,%xmm14 +movdqa %xmm0,144(%rsp) +paddq %xmm14,%xmm13 +vpmuludq %xmm1,%xmm12,%xmm0 +movdqa %xmm1,160(%rsp) +vpaddq %xmm3,%xmm2,%xmm1 +paddq subc2(%rip),%xmm2 +psubq %xmm3,%xmm2 +vpunpckhqdq %xmm1,%xmm2,%xmm3 +vpunpcklqdq %xmm1,%xmm2,%xmm1 +vpmuludq %xmm1,%xmm10,%xmm2 +paddq %xmm2,%xmm0 +vpmuludq %xmm3,%xmm10,%xmm2 +movdqa %xmm3,176(%rsp) +paddq %xmm3,%xmm3 +vpmuludq %xmm1,%xmm12,%xmm14 +movdqa %xmm1,192(%rsp) +paddq %xmm14,%xmm2 +vpmuludq %xmm3,%xmm12,%xmm1 +movdqa %xmm3,208(%rsp) +vpaddq %xmm5,%xmm4,%xmm3 +paddq subc2(%rip),%xmm4 +psubq %xmm5,%xmm4 +vpunpckhqdq %xmm3,%xmm4,%xmm5 +vpunpcklqdq %xmm3,%xmm4,%xmm3 +vpmuludq %xmm3,%xmm10,%xmm4 +paddq %xmm4,%xmm1 +vpmuludq %xmm5,%xmm10,%xmm4 +movdqa %xmm5,224(%rsp) +paddq %xmm5,%xmm5 +vpmuludq %xmm3,%xmm12,%xmm14 +movdqa %xmm3,240(%rsp) +paddq %xmm14,%xmm4 +vpaddq %xmm7,%xmm6,%xmm3 +paddq subc2(%rip),%xmm6 +psubq %xmm7,%xmm6 +vpunpckhqdq %xmm3,%xmm6,%xmm7 +vpunpcklqdq %xmm3,%xmm6,%xmm3 +vpmuludq %xmm3,%xmm10,%xmm6 +vpmuludq %xmm5,%xmm12,%xmm14 +movdqa %xmm5,256(%rsp) +pmuludq v19_19(%rip),%xmm5 +movdqa %xmm5,272(%rsp) +paddq %xmm14,%xmm6 +vpmuludq %xmm7,%xmm10,%xmm5 +movdqa %xmm7,288(%rsp) +paddq %xmm7,%xmm7 +vpmuludq %xmm3,%xmm12,%xmm14 +movdqa %xmm3,304(%rsp) +paddq %xmm14,%xmm5 +pmuludq v19_19(%rip),%xmm3 +movdqa %xmm3,320(%rsp) +vpaddq %xmm9,%xmm8,%xmm3 +paddq subc2(%rip),%xmm8 +psubq %xmm9,%xmm8 +vpunpckhqdq %xmm3,%xmm8,%xmm9 +vpunpcklqdq %xmm3,%xmm8,%xmm3 +movdqa %xmm3,336(%rsp) +vpmuludq %xmm7,%xmm12,%xmm8 +movdqa %xmm7,352(%rsp) +pmuludq v19_19(%rip),%xmm7 +movdqa %xmm7,368(%rsp) +vpmuludq %xmm3,%xmm10,%xmm7 +paddq %xmm7,%xmm8 +vpmuludq %xmm9,%xmm10,%xmm7 +movdqa %xmm9,384(%rsp) +paddq %xmm9,%xmm9 +vpmuludq %xmm3,%xmm12,%xmm10 +paddq %xmm10,%xmm7 +pmuludq v19_19(%rip),%xmm3 +movdqa %xmm3,400(%rsp) +pmuludq v19_19(%rip),%xmm12 +vpmuludq %xmm9,%xmm12,%xmm3 +movdqa %xmm9,416(%rsp) +paddq %xmm3,%xmm11 +movdqa 0(%rsp),%xmm3 +movdqa 16(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +psubq %xmm9,%xmm10 +paddq %xmm9,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm0 +vpmuludq 128(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm2 +vpmuludq 192(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm1 +vpmuludq 176(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm4 +vpmuludq 240(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm6 +vpmuludq 224(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm5 +vpmuludq 304(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm8 +vpmuludq 288(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm7 +pmuludq v19_19(%rip),%xmm3 +vpmuludq 336(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm11 +pmuludq 384(%rsp),%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 144(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm2 +vpmuludq 160(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm1 +vpmuludq 192(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm4 +vpmuludq 208(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm6 +vpmuludq 240(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 256(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm8 +vpmuludq 304(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm7 +pmuludq v19_19(%rip),%xmm9 +vpmuludq 352(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 336(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm13 +pmuludq 416(%rsp),%xmm9 +paddq %xmm9,%xmm0 +movdqa 32(%rsp),%xmm3 +movdqa 80(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +psubq %xmm9,%xmm10 +paddq %xmm9,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm1 +vpmuludq 128(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm4 +vpmuludq 192(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm6 +vpmuludq 176(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm5 +vpmuludq 240(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm8 +vpmuludq 224(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm7 +pmuludq v19_19(%rip),%xmm3 +vpmuludq 304(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm11 +vpmuludq 288(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm13 +vpmuludq 336(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm0 +pmuludq 384(%rsp),%xmm3 +paddq %xmm3,%xmm2 +vpmuludq 144(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm4 +vpmuludq 160(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm6 +vpmuludq 192(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 208(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm8 +vpmuludq 240(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm7 +pmuludq v19_19(%rip),%xmm9 +vpmuludq 256(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 304(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 352(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm0 +vpmuludq 336(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm2 +pmuludq 416(%rsp),%xmm9 +paddq %xmm9,%xmm1 +movdqa 48(%rsp),%xmm3 +movdqa 96(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +psubq %xmm9,%xmm10 +paddq %xmm9,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm6 +vpmuludq 128(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm5 +vpmuludq 192(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm8 +vpmuludq 176(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm7 +pmuludq v19_19(%rip),%xmm3 +vpmuludq 240(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm11 +vpmuludq 224(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm13 +vpmuludq 304(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm0 +vpmuludq 288(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm2 +vpmuludq 336(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm1 +pmuludq 384(%rsp),%xmm3 +paddq %xmm3,%xmm4 +vpmuludq 144(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 160(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm8 +vpmuludq 192(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm7 +pmuludq v19_19(%rip),%xmm9 +vpmuludq 208(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 240(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 256(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm0 +vpmuludq 304(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm2 +vpmuludq 352(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm1 +vpmuludq 336(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm4 +pmuludq 416(%rsp),%xmm9 +paddq %xmm9,%xmm6 +movdqa 64(%rsp),%xmm3 +movdqa 112(%rsp),%xmm9 +vpaddq subc2(%rip),%xmm3,%xmm10 +psubq %xmm9,%xmm10 +paddq %xmm9,%xmm3 +vpunpckhqdq %xmm10,%xmm3,%xmm9 +vpunpcklqdq %xmm10,%xmm3,%xmm3 +vpmuludq 144(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm8 +vpmuludq 128(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm7 +pmuludq v19_19(%rip),%xmm3 +vpmuludq 192(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm11 +vpmuludq 176(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm13 +vpmuludq 240(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm0 +vpmuludq 224(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm2 +vpmuludq 304(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm1 +vpmuludq 288(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm4 +vpmuludq 336(%rsp),%xmm3,%xmm10 +paddq %xmm10,%xmm6 +pmuludq 384(%rsp),%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 144(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm7 +pmuludq v19_19(%rip),%xmm9 +vpmuludq 160(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 192(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 208(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm0 +vpmuludq 240(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm2 +vpmuludq 256(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm1 +vpmuludq 304(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm4 +vpmuludq 352(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm6 +vpmuludq 336(%rsp),%xmm9,%xmm3 +paddq %xmm3,%xmm5 +pmuludq 416(%rsp),%xmm9 +paddq %xmm9,%xmm8 +vpsrlq $25,%xmm4,%xmm3 +paddq %xmm3,%xmm6 +pand m25(%rip),%xmm4 +vpsrlq $26,%xmm11,%xmm3 +paddq %xmm3,%xmm13 +pand m26(%rip),%xmm11 +vpsrlq $26,%xmm6,%xmm3 +paddq %xmm3,%xmm5 +pand m26(%rip),%xmm6 +vpsrlq $25,%xmm13,%xmm3 +paddq %xmm3,%xmm0 +pand m25(%rip),%xmm13 +vpsrlq $25,%xmm5,%xmm3 +paddq %xmm3,%xmm8 +pand m25(%rip),%xmm5 +vpsrlq $26,%xmm0,%xmm3 +paddq %xmm3,%xmm2 +pand m26(%rip),%xmm0 +vpsrlq $26,%xmm8,%xmm3 +paddq %xmm3,%xmm7 +pand m26(%rip),%xmm8 +vpsrlq $25,%xmm2,%xmm3 +paddq %xmm3,%xmm1 +pand m25(%rip),%xmm2 +vpsrlq $25,%xmm7,%xmm3 +vpsllq $4,%xmm3,%xmm9 +paddq %xmm3,%xmm11 +psllq $1,%xmm3 +paddq %xmm3,%xmm9 +paddq %xmm9,%xmm11 +pand m25(%rip),%xmm7 +vpsrlq $26,%xmm1,%xmm3 +paddq %xmm3,%xmm4 +pand m26(%rip),%xmm1 +vpsrlq $26,%xmm11,%xmm3 +paddq %xmm3,%xmm13 +pand m26(%rip),%xmm11 +vpsrlq $25,%xmm4,%xmm3 +paddq %xmm3,%xmm6 +pand m25(%rip),%xmm4 +vpunpcklqdq %xmm13,%xmm11,%xmm3 +vpunpckhqdq %xmm13,%xmm11,%xmm9 +vpaddq subc0(%rip),%xmm9,%xmm10 +psubq %xmm3,%xmm10 +paddq %xmm9,%xmm3 +vpunpckhqdq %xmm3,%xmm10,%xmm9 +punpcklqdq %xmm3,%xmm10 +vpmuludq %xmm10,%xmm10,%xmm3 +paddq %xmm10,%xmm10 +vpmuludq %xmm9,%xmm10,%xmm11 +vpunpcklqdq %xmm2,%xmm0,%xmm12 +vpunpckhqdq %xmm2,%xmm0,%xmm0 +vpaddq subc2(%rip),%xmm0,%xmm2 +psubq %xmm12,%xmm2 +paddq %xmm0,%xmm12 +vpunpckhqdq %xmm12,%xmm2,%xmm0 +punpcklqdq %xmm12,%xmm2 +vpmuludq %xmm2,%xmm10,%xmm12 +vpaddq %xmm9,%xmm9,%xmm13 +vpmuludq %xmm13,%xmm9,%xmm9 +paddq %xmm9,%xmm12 +vpmuludq %xmm0,%xmm10,%xmm9 +vpmuludq %xmm2,%xmm13,%xmm14 +paddq %xmm14,%xmm9 +vpunpcklqdq %xmm4,%xmm1,%xmm14 +vpunpckhqdq %xmm4,%xmm1,%xmm1 +vpaddq subc2(%rip),%xmm1,%xmm4 +psubq %xmm14,%xmm4 +paddq %xmm1,%xmm14 +vpunpckhqdq %xmm14,%xmm4,%xmm1 +punpcklqdq %xmm14,%xmm4 +movdqa %xmm1,0(%rsp) +paddq %xmm1,%xmm1 +movdqa %xmm1,16(%rsp) +pmuludq v19_19(%rip),%xmm1 +movdqa %xmm1,32(%rsp) +vpmuludq %xmm4,%xmm10,%xmm1 +vpmuludq %xmm2,%xmm2,%xmm14 +paddq %xmm14,%xmm1 +vpmuludq 0(%rsp),%xmm10,%xmm14 +vpmuludq %xmm4,%xmm13,%xmm15 +paddq %xmm15,%xmm14 +vpunpcklqdq %xmm5,%xmm6,%xmm15 +vpunpckhqdq %xmm5,%xmm6,%xmm5 +vpaddq subc2(%rip),%xmm5,%xmm6 +psubq %xmm15,%xmm6 +paddq %xmm5,%xmm15 +vpunpckhqdq %xmm15,%xmm6,%xmm5 +punpcklqdq %xmm15,%xmm6 +movdqa %xmm6,48(%rsp) +pmuludq v19_19(%rip),%xmm6 +movdqa %xmm6,64(%rsp) +movdqa %xmm5,80(%rsp) +pmuludq v38_38(%rip),%xmm5 +movdqa %xmm5,96(%rsp) +vpmuludq 48(%rsp),%xmm10,%xmm5 +vpaddq %xmm0,%xmm0,%xmm6 +vpmuludq %xmm6,%xmm0,%xmm0 +paddq %xmm0,%xmm5 +vpmuludq 80(%rsp),%xmm10,%xmm0 +vpmuludq %xmm4,%xmm6,%xmm15 +paddq %xmm15,%xmm0 +vpmuludq %xmm6,%xmm13,%xmm15 +paddq %xmm15,%xmm1 +vpmuludq %xmm6,%xmm2,%xmm15 +paddq %xmm15,%xmm14 +vpunpcklqdq %xmm7,%xmm8,%xmm15 +vpunpckhqdq %xmm7,%xmm8,%xmm7 +vpaddq subc2(%rip),%xmm7,%xmm8 +psubq %xmm15,%xmm8 +paddq %xmm7,%xmm15 +vpunpckhqdq %xmm15,%xmm8,%xmm7 +punpcklqdq %xmm15,%xmm8 +movdqa %xmm8,112(%rsp) +pmuludq v19_19(%rip),%xmm8 +movdqa %xmm8,160(%rsp) +vpmuludq 112(%rsp),%xmm10,%xmm8 +vpmuludq %xmm7,%xmm10,%xmm10 +vpmuludq v38_38(%rip),%xmm7,%xmm15 +vpmuludq %xmm15,%xmm7,%xmm7 +paddq %xmm7,%xmm8 +vpmuludq %xmm15,%xmm13,%xmm7 +paddq %xmm7,%xmm3 +vpmuludq %xmm15,%xmm2,%xmm7 +paddq %xmm7,%xmm11 +vpmuludq 80(%rsp),%xmm13,%xmm7 +paddq %xmm7,%xmm7 +paddq %xmm7,%xmm8 +vpmuludq 16(%rsp),%xmm13,%xmm7 +paddq %xmm7,%xmm5 +vpmuludq 48(%rsp),%xmm13,%xmm7 +paddq %xmm7,%xmm0 +vpmuludq 112(%rsp),%xmm13,%xmm7 +paddq %xmm7,%xmm10 +vpmuludq %xmm15,%xmm6,%xmm7 +paddq %xmm7,%xmm12 +vpmuludq %xmm15,%xmm4,%xmm7 +paddq %xmm7,%xmm9 +vpaddq %xmm2,%xmm2,%xmm2 +vpmuludq %xmm4,%xmm2,%xmm7 +paddq %xmm7,%xmm5 +vpmuludq 160(%rsp),%xmm2,%xmm7 +paddq %xmm7,%xmm3 +vpmuludq 160(%rsp),%xmm6,%xmm7 +paddq %xmm7,%xmm11 +vpmuludq 0(%rsp),%xmm2,%xmm7 +paddq %xmm7,%xmm0 +vpmuludq 48(%rsp),%xmm2,%xmm7 +paddq %xmm7,%xmm8 +vpmuludq 80(%rsp),%xmm2,%xmm2 +paddq %xmm2,%xmm10 +vpmuludq 96(%rsp),%xmm4,%xmm2 +paddq %xmm2,%xmm11 +vpmuludq %xmm4,%xmm4,%xmm2 +paddq %xmm2,%xmm8 +vpaddq %xmm4,%xmm4,%xmm2 +vpmuludq 160(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm12 +vpmuludq 16(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm1 +vpmuludq 48(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm14 +vpmuludq 96(%rsp),%xmm6,%xmm4 +paddq %xmm4,%xmm3 +movdqa 16(%rsp),%xmm4 +pmuludq 160(%rsp),%xmm4 +paddq %xmm4,%xmm9 +vpmuludq 16(%rsp),%xmm6,%xmm4 +paddq %xmm4,%xmm8 +vpmuludq 48(%rsp),%xmm6,%xmm4 +paddq %xmm4,%xmm10 +vpmuludq 80(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm4 +paddq %xmm4,%xmm5 +vpmuludq 112(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm0 +movdqa 48(%rsp),%xmm4 +paddq %xmm4,%xmm4 +pmuludq 160(%rsp),%xmm4 +paddq %xmm4,%xmm1 +movdqa 80(%rsp),%xmm4 +paddq %xmm4,%xmm4 +pmuludq 160(%rsp),%xmm4 +paddq %xmm4,%xmm14 +vpmuludq 64(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm3 +movdqa 16(%rsp),%xmm4 +pmuludq 64(%rsp),%xmm4 +paddq %xmm4,%xmm11 +movdqa 16(%rsp),%xmm4 +pmuludq 96(%rsp),%xmm4 +paddq %xmm4,%xmm12 +movdqa 48(%rsp),%xmm4 +pmuludq 96(%rsp),%xmm4 +paddq %xmm4,%xmm9 +vpmuludq 0(%rsp),%xmm2,%xmm2 +paddq %xmm2,%xmm10 +movdqa 32(%rsp),%xmm2 +pmuludq 0(%rsp),%xmm2 +paddq %xmm2,%xmm3 +movdqa 64(%rsp),%xmm2 +pmuludq 48(%rsp),%xmm2 +paddq %xmm2,%xmm12 +movdqa 96(%rsp),%xmm2 +pmuludq 80(%rsp),%xmm2 +paddq %xmm2,%xmm1 +movdqa 160(%rsp),%xmm2 +pmuludq 112(%rsp),%xmm2 +paddq %xmm2,%xmm5 +vpsrlq $26,%xmm3,%xmm2 +paddq %xmm2,%xmm11 +pand m26(%rip),%xmm3 +vpsrlq $25,%xmm14,%xmm2 +paddq %xmm2,%xmm5 +pand m25(%rip),%xmm14 +vpsrlq $25,%xmm11,%xmm2 +paddq %xmm2,%xmm12 +pand m25(%rip),%xmm11 +vpsrlq $26,%xmm5,%xmm2 +paddq %xmm2,%xmm0 +pand m26(%rip),%xmm5 +vpsrlq $26,%xmm12,%xmm2 +paddq %xmm2,%xmm9 +pand m26(%rip),%xmm12 +vpsrlq $25,%xmm0,%xmm2 +paddq %xmm2,%xmm8 +pand m25(%rip),%xmm0 +vpsrlq $25,%xmm9,%xmm2 +paddq %xmm2,%xmm1 +pand m25(%rip),%xmm9 +vpsrlq $26,%xmm8,%xmm2 +paddq %xmm2,%xmm10 +pand m26(%rip),%xmm8 +vpsrlq $26,%xmm1,%xmm2 +paddq %xmm2,%xmm14 +pand m26(%rip),%xmm1 +vpsrlq $25,%xmm10,%xmm2 +vpsllq $4,%xmm2,%xmm4 +paddq %xmm2,%xmm3 +psllq $1,%xmm2 +paddq %xmm2,%xmm4 +paddq %xmm4,%xmm3 +pand m25(%rip),%xmm10 +vpsrlq $25,%xmm14,%xmm2 +paddq %xmm2,%xmm5 +pand m25(%rip),%xmm14 +vpsrlq $26,%xmm3,%xmm2 +paddq %xmm2,%xmm11 +pand m26(%rip),%xmm3 +vpunpckhqdq %xmm11,%xmm3,%xmm2 +movdqa %xmm2,0(%rsp) +vpunpcklqdq %xmm11,%xmm3,%xmm2 +pmuludq v9_9(%rip),%xmm2 +movdqa %xmm2,80(%rsp) +vpunpckhqdq %xmm9,%xmm12,%xmm2 +movdqa %xmm2,16(%rsp) +vpunpcklqdq %xmm9,%xmm12,%xmm2 +pmuludq v9_9(%rip),%xmm2 +movdqa %xmm2,96(%rsp) +vpunpckhqdq %xmm14,%xmm1,%xmm2 +movdqa %xmm2,32(%rsp) +vpunpcklqdq %xmm14,%xmm1,%xmm1 +pmuludq v9_9(%rip),%xmm1 +movdqa %xmm1,112(%rsp) +vpunpckhqdq %xmm0,%xmm5,%xmm1 +movdqa %xmm1,48(%rsp) +vpunpcklqdq %xmm0,%xmm5,%xmm0 +pmuludq v9_9(%rip),%xmm0 +movdqa %xmm0,160(%rsp) +vpunpckhqdq %xmm10,%xmm8,%xmm0 +movdqa %xmm0,64(%rsp) +vpunpcklqdq %xmm10,%xmm8,%xmm0 +pmuludq v9_9(%rip),%xmm0 +movdqa %xmm0,208(%rsp) +movdqa 144(%rsp),%xmm0 +vpmuludq %xmm0,%xmm0,%xmm1 +paddq %xmm0,%xmm0 +movdqa 128(%rsp),%xmm2 +vpmuludq %xmm2,%xmm0,%xmm3 +movdqa 192(%rsp),%xmm4 +vpmuludq %xmm4,%xmm0,%xmm5 +movdqa 176(%rsp),%xmm6 +vpmuludq %xmm6,%xmm0,%xmm7 +movdqa 240(%rsp),%xmm8 +vpmuludq %xmm8,%xmm0,%xmm9 +vpmuludq 224(%rsp),%xmm0,%xmm10 +vpmuludq 304(%rsp),%xmm0,%xmm11 +vpmuludq 288(%rsp),%xmm0,%xmm12 +vpmuludq 336(%rsp),%xmm0,%xmm13 +movdqa 384(%rsp),%xmm14 +vpmuludq %xmm14,%xmm0,%xmm0 +vpmuludq v38_38(%rip),%xmm14,%xmm15 +vpmuludq %xmm15,%xmm14,%xmm14 +paddq %xmm14,%xmm13 +vpaddq %xmm6,%xmm6,%xmm14 +vpmuludq %xmm14,%xmm6,%xmm6 +paddq %xmm6,%xmm11 +vpaddq %xmm2,%xmm2,%xmm6 +vpmuludq %xmm6,%xmm2,%xmm2 +paddq %xmm2,%xmm5 +vpmuludq %xmm15,%xmm6,%xmm2 +paddq %xmm2,%xmm1 +vpmuludq %xmm15,%xmm4,%xmm2 +paddq %xmm2,%xmm3 +vpmuludq 256(%rsp),%xmm6,%xmm2 +paddq %xmm2,%xmm11 +vpmuludq 304(%rsp),%xmm6,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 352(%rsp),%xmm6,%xmm2 +paddq %xmm2,%xmm13 +vpmuludq 336(%rsp),%xmm6,%xmm2 +paddq %xmm2,%xmm0 +vpmuludq %xmm4,%xmm6,%xmm2 +paddq %xmm2,%xmm7 +vpmuludq %xmm14,%xmm6,%xmm2 +paddq %xmm2,%xmm9 +vpmuludq %xmm8,%xmm6,%xmm2 +paddq %xmm2,%xmm10 +vpmuludq %xmm15,%xmm14,%xmm2 +paddq %xmm2,%xmm5 +vpmuludq %xmm15,%xmm8,%xmm2 +paddq %xmm2,%xmm7 +vpmuludq %xmm4,%xmm4,%xmm2 +paddq %xmm2,%xmm9 +vpmuludq %xmm14,%xmm4,%xmm2 +paddq %xmm2,%xmm10 +vpaddq %xmm4,%xmm4,%xmm2 +vpmuludq %xmm8,%xmm2,%xmm4 +paddq %xmm4,%xmm11 +vpmuludq 400(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm1 +vpmuludq 400(%rsp),%xmm14,%xmm4 +paddq %xmm4,%xmm3 +vpmuludq 224(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm12 +vpmuludq 304(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm13 +vpmuludq 288(%rsp),%xmm2,%xmm2 +paddq %xmm2,%xmm0 +vpmuludq 368(%rsp),%xmm8,%xmm2 +paddq %xmm2,%xmm3 +vpmuludq %xmm8,%xmm14,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq %xmm8,%xmm8,%xmm2 +paddq %xmm2,%xmm13 +vpaddq %xmm8,%xmm8,%xmm2 +vpmuludq 400(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm5 +vpmuludq 256(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm9 +vpmuludq 304(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm10 +vpmuludq 368(%rsp),%xmm14,%xmm4 +paddq %xmm4,%xmm1 +movdqa 256(%rsp),%xmm4 +pmuludq 400(%rsp),%xmm4 +paddq %xmm4,%xmm7 +vpmuludq 256(%rsp),%xmm14,%xmm4 +paddq %xmm4,%xmm13 +vpmuludq 304(%rsp),%xmm14,%xmm4 +paddq %xmm4,%xmm0 +vpmuludq 352(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm11 +vpmuludq 336(%rsp),%xmm15,%xmm4 +paddq %xmm4,%xmm12 +movdqa 304(%rsp),%xmm4 +paddq %xmm4,%xmm4 +pmuludq 400(%rsp),%xmm4 +paddq %xmm4,%xmm9 +vpmuludq 320(%rsp),%xmm2,%xmm4 +paddq %xmm4,%xmm1 +movdqa 256(%rsp),%xmm4 +pmuludq 320(%rsp),%xmm4 +paddq %xmm4,%xmm3 +movdqa 256(%rsp),%xmm4 +pmuludq 368(%rsp),%xmm4 +paddq %xmm4,%xmm5 +movdqa 304(%rsp),%xmm4 +pmuludq 368(%rsp),%xmm4 +paddq %xmm4,%xmm7 +movdqa 352(%rsp),%xmm4 +pmuludq 400(%rsp),%xmm4 +paddq %xmm4,%xmm10 +vpmuludq 224(%rsp),%xmm2,%xmm2 +paddq %xmm2,%xmm0 +movdqa 272(%rsp),%xmm2 +pmuludq 224(%rsp),%xmm2 +paddq %xmm2,%xmm1 +movdqa 320(%rsp),%xmm2 +pmuludq 304(%rsp),%xmm2 +paddq %xmm2,%xmm5 +movdqa 368(%rsp),%xmm2 +pmuludq 288(%rsp),%xmm2 +paddq %xmm2,%xmm9 +movdqa 400(%rsp),%xmm2 +pmuludq 336(%rsp),%xmm2 +paddq %xmm2,%xmm11 +vpsrlq $26,%xmm1,%xmm2 +paddq %xmm2,%xmm3 +pand m26(%rip),%xmm1 +vpsrlq $25,%xmm10,%xmm2 +paddq %xmm2,%xmm11 +pand m25(%rip),%xmm10 +vpsrlq $25,%xmm3,%xmm2 +paddq %xmm2,%xmm5 +pand m25(%rip),%xmm3 +vpsrlq $26,%xmm11,%xmm2 +paddq %xmm2,%xmm12 +pand m26(%rip),%xmm11 +vpsrlq $26,%xmm5,%xmm2 +paddq %xmm2,%xmm7 +pand m26(%rip),%xmm5 +vpsrlq $25,%xmm12,%xmm2 +paddq %xmm2,%xmm13 +pand m25(%rip),%xmm12 +vpsrlq $25,%xmm7,%xmm2 +paddq %xmm2,%xmm9 +pand m25(%rip),%xmm7 +vpsrlq $26,%xmm13,%xmm2 +paddq %xmm2,%xmm0 +pand m26(%rip),%xmm13 +vpsrlq $26,%xmm9,%xmm2 +paddq %xmm2,%xmm10 +pand m26(%rip),%xmm9 +vpsrlq $25,%xmm0,%xmm2 +vpsllq $4,%xmm2,%xmm4 +paddq %xmm2,%xmm1 +psllq $1,%xmm2 +paddq %xmm2,%xmm4 +paddq %xmm4,%xmm1 +pand m25(%rip),%xmm0 +vpsrlq $25,%xmm10,%xmm2 +paddq %xmm2,%xmm11 +pand m25(%rip),%xmm10 +vpsrlq $26,%xmm1,%xmm2 +paddq %xmm2,%xmm3 +pand m26(%rip),%xmm1 +vpunpckhqdq %xmm3,%xmm1,%xmm2 +vpunpcklqdq %xmm3,%xmm1,%xmm1 +movdqa %xmm1,176(%rsp) +vpaddq subc0(%rip),%xmm2,%xmm3 +psubq %xmm1,%xmm3 +vpunpckhqdq %xmm3,%xmm2,%xmm1 +vpunpcklqdq %xmm3,%xmm2,%xmm2 +movdqa %xmm2,192(%rsp) +movdqa %xmm1,224(%rsp) +psllq $1,%xmm1 +movdqa %xmm1,240(%rsp) +pmuludq v121666_121666(%rip),%xmm3 +movdqa 80(%rsp),%xmm1 +vpunpcklqdq %xmm1,%xmm3,%xmm2 +vpunpckhqdq %xmm1,%xmm3,%xmm1 +vpunpckhqdq %xmm7,%xmm5,%xmm3 +vpunpcklqdq %xmm7,%xmm5,%xmm4 +movdqa %xmm4,256(%rsp) +vpaddq subc2(%rip),%xmm3,%xmm5 +psubq %xmm4,%xmm5 +vpunpckhqdq %xmm5,%xmm3,%xmm4 +vpunpcklqdq %xmm5,%xmm3,%xmm3 +movdqa %xmm3,272(%rsp) +movdqa %xmm4,288(%rsp) +psllq $1,%xmm4 +movdqa %xmm4,304(%rsp) +pmuludq v121666_121666(%rip),%xmm5 +movdqa 96(%rsp),%xmm3 +vpunpcklqdq %xmm3,%xmm5,%xmm4 +vpunpckhqdq %xmm3,%xmm5,%xmm3 +vpunpckhqdq %xmm10,%xmm9,%xmm5 +vpunpcklqdq %xmm10,%xmm9,%xmm6 +movdqa %xmm6,320(%rsp) +vpaddq subc2(%rip),%xmm5,%xmm7 +psubq %xmm6,%xmm7 +vpunpckhqdq %xmm7,%xmm5,%xmm6 +vpunpcklqdq %xmm7,%xmm5,%xmm5 +movdqa %xmm5,336(%rsp) +movdqa %xmm6,352(%rsp) +psllq $1,%xmm6 +movdqa %xmm6,368(%rsp) +pmuludq v121666_121666(%rip),%xmm7 +movdqa 112(%rsp),%xmm5 +vpunpcklqdq %xmm5,%xmm7,%xmm6 +vpunpckhqdq %xmm5,%xmm7,%xmm5 +vpunpckhqdq %xmm12,%xmm11,%xmm7 +vpunpcklqdq %xmm12,%xmm11,%xmm8 +movdqa %xmm8,384(%rsp) +vpaddq subc2(%rip),%xmm7,%xmm9 +psubq %xmm8,%xmm9 +vpunpckhqdq %xmm9,%xmm7,%xmm8 +vpunpcklqdq %xmm9,%xmm7,%xmm7 +movdqa %xmm7,400(%rsp) +movdqa %xmm8,416(%rsp) +psllq $1,%xmm8 +movdqa %xmm8,432(%rsp) +pmuludq v121666_121666(%rip),%xmm9 +movdqa 160(%rsp),%xmm7 +vpunpcklqdq %xmm7,%xmm9,%xmm8 +vpunpckhqdq %xmm7,%xmm9,%xmm7 +vpunpckhqdq %xmm0,%xmm13,%xmm9 +vpunpcklqdq %xmm0,%xmm13,%xmm0 +movdqa %xmm0,160(%rsp) +vpaddq subc2(%rip),%xmm9,%xmm10 +psubq %xmm0,%xmm10 +vpunpckhqdq %xmm10,%xmm9,%xmm0 +vpunpcklqdq %xmm10,%xmm9,%xmm9 +movdqa %xmm9,448(%rsp) +movdqa %xmm0,464(%rsp) +psllq $1,%xmm0 +movdqa %xmm0,480(%rsp) +pmuludq v121666_121666(%rip),%xmm10 +movdqa 208(%rsp),%xmm0 +vpunpcklqdq %xmm0,%xmm10,%xmm9 +vpunpckhqdq %xmm0,%xmm10,%xmm0 +vpsrlq $26,%xmm2,%xmm10 +paddq %xmm10,%xmm1 +pand m26(%rip),%xmm2 +vpsrlq $25,%xmm5,%xmm10 +paddq %xmm10,%xmm8 +pand m25(%rip),%xmm5 +vpsrlq $25,%xmm1,%xmm10 +paddq %xmm10,%xmm4 +pand m25(%rip),%xmm1 +vpsrlq $26,%xmm8,%xmm10 +paddq %xmm10,%xmm7 +pand m26(%rip),%xmm8 +vpsrlq $26,%xmm4,%xmm10 +paddq %xmm10,%xmm3 +pand m26(%rip),%xmm4 +vpsrlq $25,%xmm7,%xmm10 +paddq %xmm10,%xmm9 +pand m25(%rip),%xmm7 +vpsrlq $25,%xmm3,%xmm10 +paddq %xmm10,%xmm6 +pand m25(%rip),%xmm3 +vpsrlq $26,%xmm9,%xmm10 +paddq %xmm10,%xmm0 +pand m26(%rip),%xmm9 +vpsrlq $26,%xmm6,%xmm10 +paddq %xmm10,%xmm5 +pand m26(%rip),%xmm6 +vpsrlq $25,%xmm0,%xmm10 +vpsllq $4,%xmm10,%xmm11 +paddq %xmm10,%xmm2 +psllq $1,%xmm10 +paddq %xmm10,%xmm11 +paddq %xmm11,%xmm2 +pand m25(%rip),%xmm0 +vpsrlq $25,%xmm5,%xmm10 +paddq %xmm10,%xmm8 +pand m25(%rip),%xmm5 +vpsrlq $26,%xmm2,%xmm10 +paddq %xmm10,%xmm1 +pand m26(%rip),%xmm2 +vpunpckhqdq %xmm1,%xmm2,%xmm10 +movdqa %xmm10,80(%rsp) +vpunpcklqdq %xmm1,%xmm2,%xmm1 +vpunpckhqdq %xmm3,%xmm4,%xmm2 +movdqa %xmm2,96(%rsp) +vpunpcklqdq %xmm3,%xmm4,%xmm2 +vpunpckhqdq %xmm5,%xmm6,%xmm3 +movdqa %xmm3,112(%rsp) +vpunpcklqdq %xmm5,%xmm6,%xmm3 +vpunpckhqdq %xmm7,%xmm8,%xmm4 +movdqa %xmm4,128(%rsp) +vpunpcklqdq %xmm7,%xmm8,%xmm4 +vpunpckhqdq %xmm0,%xmm9,%xmm5 +movdqa %xmm5,144(%rsp) +vpunpcklqdq %xmm0,%xmm9,%xmm0 +movdqa 176(%rsp),%xmm5 +paddq %xmm5,%xmm1 +vpunpcklqdq %xmm1,%xmm5,%xmm6 +vpunpckhqdq %xmm1,%xmm5,%xmm1 +vpmuludq 224(%rsp),%xmm6,%xmm5 +vpmuludq 192(%rsp),%xmm1,%xmm7 +paddq %xmm7,%xmm5 +vpmuludq 272(%rsp),%xmm6,%xmm7 +vpmuludq 240(%rsp),%xmm1,%xmm8 +paddq %xmm8,%xmm7 +vpmuludq 288(%rsp),%xmm6,%xmm8 +vpmuludq 272(%rsp),%xmm1,%xmm9 +paddq %xmm9,%xmm8 +vpmuludq 336(%rsp),%xmm6,%xmm9 +vpmuludq 304(%rsp),%xmm1,%xmm10 +paddq %xmm10,%xmm9 +vpmuludq 352(%rsp),%xmm6,%xmm10 +vpmuludq 336(%rsp),%xmm1,%xmm11 +paddq %xmm11,%xmm10 +vpmuludq 400(%rsp),%xmm6,%xmm11 +vpmuludq 368(%rsp),%xmm1,%xmm12 +paddq %xmm12,%xmm11 +vpmuludq 416(%rsp),%xmm6,%xmm12 +vpmuludq 400(%rsp),%xmm1,%xmm13 +paddq %xmm13,%xmm12 +vpmuludq 448(%rsp),%xmm6,%xmm13 +vpmuludq 432(%rsp),%xmm1,%xmm14 +paddq %xmm14,%xmm13 +vpmuludq 464(%rsp),%xmm6,%xmm14 +vpmuludq 448(%rsp),%xmm1,%xmm15 +paddq %xmm15,%xmm14 +vpmuludq 192(%rsp),%xmm6,%xmm6 +pmuludq v19_19(%rip),%xmm1 +vpmuludq 480(%rsp),%xmm1,%xmm1 +paddq %xmm1,%xmm6 +movdqa 256(%rsp),%xmm1 +paddq %xmm1,%xmm2 +vpunpcklqdq %xmm2,%xmm1,%xmm15 +vpunpckhqdq %xmm2,%xmm1,%xmm1 +vpmuludq 192(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm7 +vpmuludq 224(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm8 +vpmuludq 272(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm9 +vpmuludq 288(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm10 +vpmuludq 336(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm11 +vpmuludq 352(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 400(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm13 +vpmuludq 416(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm14 +pmuludq v19_19(%rip),%xmm15 +vpmuludq 448(%rsp),%xmm15,%xmm2 +paddq %xmm2,%xmm6 +pmuludq 464(%rsp),%xmm15 +paddq %xmm15,%xmm5 +vpmuludq 192(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm8 +vpmuludq 240(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm9 +vpmuludq 272(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm10 +vpmuludq 304(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm11 +vpmuludq 336(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 368(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm13 +vpmuludq 400(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm14 +pmuludq v19_19(%rip),%xmm1 +vpmuludq 432(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm6 +vpmuludq 448(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm5 +pmuludq 480(%rsp),%xmm1 +paddq %xmm1,%xmm7 +movdqa 320(%rsp),%xmm1 +paddq %xmm1,%xmm3 +vpunpcklqdq %xmm3,%xmm1,%xmm2 +vpunpckhqdq %xmm3,%xmm1,%xmm1 +vpmuludq 192(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm9 +vpmuludq 224(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm10 +vpmuludq 272(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 288(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm12 +vpmuludq 336(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 352(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm14 +pmuludq v19_19(%rip),%xmm2 +vpmuludq 400(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm6 +vpmuludq 416(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 448(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm7 +pmuludq 464(%rsp),%xmm2 +paddq %xmm2,%xmm8 +vpmuludq 192(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm10 +vpmuludq 240(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm11 +vpmuludq 272(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 304(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm13 +vpmuludq 336(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm14 +pmuludq v19_19(%rip),%xmm1 +vpmuludq 368(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm6 +vpmuludq 400(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm5 +vpmuludq 432(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm7 +vpmuludq 448(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm8 +pmuludq 480(%rsp),%xmm1 +paddq %xmm1,%xmm9 +movdqa 384(%rsp),%xmm1 +paddq %xmm1,%xmm4 +vpunpcklqdq %xmm4,%xmm1,%xmm2 +vpunpckhqdq %xmm4,%xmm1,%xmm1 +vpmuludq 192(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm11 +vpmuludq 224(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm12 +vpmuludq 272(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm13 +vpmuludq 288(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm14 +pmuludq v19_19(%rip),%xmm2 +vpmuludq 336(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm6 +vpmuludq 352(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm5 +vpmuludq 400(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm7 +vpmuludq 416(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm8 +vpmuludq 448(%rsp),%xmm2,%xmm3 +paddq %xmm3,%xmm9 +pmuludq 464(%rsp),%xmm2 +paddq %xmm2,%xmm10 +vpmuludq 192(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 240(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm13 +vpmuludq 272(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm14 +pmuludq v19_19(%rip),%xmm1 +vpmuludq 304(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm6 +vpmuludq 336(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm5 +vpmuludq 368(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm7 +vpmuludq 400(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm8 +vpmuludq 432(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm9 +vpmuludq 448(%rsp),%xmm1,%xmm2 +paddq %xmm2,%xmm10 +pmuludq 480(%rsp),%xmm1 +paddq %xmm1,%xmm11 +movdqa 160(%rsp),%xmm1 +paddq %xmm1,%xmm0 +vpunpcklqdq %xmm0,%xmm1,%xmm2 +vpunpckhqdq %xmm0,%xmm1,%xmm0 +vpmuludq 192(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm13 +vpmuludq 224(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm14 +pmuludq v19_19(%rip),%xmm2 +vpmuludq 272(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm6 +vpmuludq 288(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm5 +vpmuludq 336(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm7 +vpmuludq 352(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm8 +vpmuludq 400(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm9 +vpmuludq 416(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm10 +vpmuludq 448(%rsp),%xmm2,%xmm1 +paddq %xmm1,%xmm11 +pmuludq 464(%rsp),%xmm2 +paddq %xmm2,%xmm12 +vpmuludq 192(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm14 +pmuludq v19_19(%rip),%xmm0 +vpmuludq 240(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm6 +vpmuludq 272(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm5 +vpmuludq 304(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm7 +vpmuludq 336(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm8 +vpmuludq 368(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm9 +vpmuludq 400(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm10 +vpmuludq 432(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm11 +vpmuludq 448(%rsp),%xmm0,%xmm1 +paddq %xmm1,%xmm12 +pmuludq 480(%rsp),%xmm0 +paddq %xmm0,%xmm13 +vpsrlq $26,%xmm6,%xmm0 +paddq %xmm0,%xmm5 +pand m26(%rip),%xmm6 +vpsrlq $25,%xmm10,%xmm0 +paddq %xmm0,%xmm11 +pand m25(%rip),%xmm10 +vpsrlq $25,%xmm5,%xmm0 +paddq %xmm0,%xmm7 +pand m25(%rip),%xmm5 +vpsrlq $26,%xmm11,%xmm0 +paddq %xmm0,%xmm12 +pand m26(%rip),%xmm11 +vpsrlq $26,%xmm7,%xmm0 +paddq %xmm0,%xmm8 +pand m26(%rip),%xmm7 +vpsrlq $25,%xmm12,%xmm0 +paddq %xmm0,%xmm13 +pand m25(%rip),%xmm12 +vpsrlq $25,%xmm8,%xmm0 +paddq %xmm0,%xmm9 +pand m25(%rip),%xmm8 +vpsrlq $26,%xmm13,%xmm0 +paddq %xmm0,%xmm14 +pand m26(%rip),%xmm13 +vpsrlq $26,%xmm9,%xmm0 +paddq %xmm0,%xmm10 +pand m26(%rip),%xmm9 +vpsrlq $25,%xmm14,%xmm0 +vpsllq $4,%xmm0,%xmm1 +paddq %xmm0,%xmm6 +psllq $1,%xmm0 +paddq %xmm0,%xmm1 +paddq %xmm1,%xmm6 +pand m25(%rip),%xmm14 +vpsrlq $25,%xmm10,%xmm0 +paddq %xmm0,%xmm11 +pand m25(%rip),%xmm10 +vpsrlq $26,%xmm6,%xmm0 +paddq %xmm0,%xmm5 +pand m26(%rip),%xmm6 +vpunpckhqdq %xmm5,%xmm6,%xmm1 +vpunpcklqdq %xmm5,%xmm6,%xmm0 +vpunpckhqdq %xmm8,%xmm7,%xmm3 +vpunpcklqdq %xmm8,%xmm7,%xmm2 +vpunpckhqdq %xmm10,%xmm9,%xmm5 +vpunpcklqdq %xmm10,%xmm9,%xmm4 +vpunpckhqdq %xmm12,%xmm11,%xmm7 +vpunpcklqdq %xmm12,%xmm11,%xmm6 +vpunpckhqdq %xmm14,%xmm13,%xmm9 +vpunpcklqdq %xmm14,%xmm13,%xmm8 +cmp $0,%rdx +jne ._loop +movdqu %xmm1,80(%rdi) +movdqu %xmm0,0(%rdi) +movdqu %xmm3,96(%rdi) +movdqu %xmm2,16(%rdi) +movdqu %xmm5,112(%rdi) +movdqu %xmm4,32(%rdi) +movdqu %xmm7,128(%rdi) +movdqu %xmm6,48(%rdi) +movdqu %xmm9,144(%rdi) +movdqu %xmm8,64(%rdi) +movq 1536(%rsp),%r11 +movq 1544(%rsp),%r12 +movq 1552(%rsp),%r13 +add %r11,%rsp +ret + +#if defined(__linux__) && defined(__ELF__) +.section .note.GNU-stack,"",%progbits +#endif