/*
 * Copyright (C) 2023 - 2025, Stephan Mueller <smueller@chronox.de>
 *
 * License: see LICENSE file in root directory
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ALL OF
 * WHICH ARE HEREBY DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
 * USE OF THIS SOFTWARE, EVEN IF NOT ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */
/*
 * This code is derived in parts from the code distribution provided with
 * https://github.com/jedisct1/libsodium.git
 *
 * That code is released under ISC License
 *
 * Copyright (c) 2013-2023 - 2025
 * Frank Denis <j at pureftpd dot org>
 */

.p2align 5

STACK_FRAME_NON_STANDARD(curve25519_ladder_avx2);
SYM_FUNC_START(curve25519_ladder_avx2)
SYM_FUNC_ENTER(curve25519_ladder_avx2)

mov %rsp,%r11
and $31,%r11
add $1856,%r11
sub %r11,%rsp
movq %r11,1824(%rsp)
movq %r12,1832(%rsp)
movq %r13,1840(%rsp)
movq %r14,1848(%rsp)
vmovdqa v0_0(%rip),%xmm0
vmovdqa v1_0(%rip),%xmm1
vmovdqu 0(%rdi),%xmm2
vmovdqa %xmm2,0(%rsp)
vmovdqu 16(%rdi),%xmm2
vmovdqa %xmm2,16(%rsp)
vmovdqu 32(%rdi),%xmm2
vmovdqa %xmm2,32(%rsp)
vmovdqu 48(%rdi),%xmm2
vmovdqa %xmm2,48(%rsp)
vmovdqu 64(%rdi),%xmm2
vmovdqa %xmm2,64(%rsp)
vmovdqa %xmm1,80(%rsp)
vmovdqa %xmm0,96(%rsp)
vmovdqa %xmm0,112(%rsp)
vmovdqa %xmm0,128(%rsp)
vmovdqa %xmm0,144(%rsp)
vmovdqa %xmm1,%xmm0
vpxor %xmm1,%xmm1,%xmm1
vpxor %xmm2,%xmm2,%xmm2
vpxor %xmm3,%xmm3,%xmm3
vpxor %xmm4,%xmm4,%xmm4
vpxor %xmm5,%xmm5,%xmm5
vpxor %xmm6,%xmm6,%xmm6
vpxor %xmm7,%xmm7,%xmm7
vpxor %xmm8,%xmm8,%xmm8
vpxor %xmm9,%xmm9,%xmm9
vmovdqu 0(%rdi),%xmm10
vmovdqa %xmm10,160(%rsp)
vmovdqu 16(%rdi),%xmm10
vmovdqa %xmm10,176(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,192(%rsp)
vmovdqu 32(%rdi),%xmm10
vmovdqa %xmm10,208(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,224(%rsp)
vmovdqu 48(%rdi),%xmm10
vmovdqa %xmm10,240(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,256(%rsp)
vmovdqu 64(%rdi),%xmm10
vmovdqa %xmm10,272(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,288(%rsp)
vmovdqu 8(%rdi),%xmm10
vpmuludq v2_1(%rip),%xmm10,%xmm10
vmovdqa %xmm10,304(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,320(%rsp)
vmovdqu 24(%rdi),%xmm10
vpmuludq v2_1(%rip),%xmm10,%xmm10
vmovdqa %xmm10,336(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,352(%rsp)
vmovdqu 40(%rdi),%xmm10
vpmuludq v2_1(%rip),%xmm10,%xmm10
vmovdqa %xmm10,368(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,384(%rsp)
vmovdqu 56(%rdi),%xmm10
vpmuludq v2_1(%rip),%xmm10,%xmm10
vmovdqa %xmm10,400(%rsp)
vpmuludq v19_19(%rip),%xmm10,%xmm10
vmovdqa %xmm10,416(%rsp)
vmovdqu 0(%rdi),%xmm10
vmovdqu 64(%rdi),%xmm11
vblendps $12, %xmm11, %xmm10, %xmm10
vpshufd $2,%xmm10,%xmm10
vpmuludq v38_1(%rip),%xmm10,%xmm10
vmovdqa %xmm10,432(%rsp)
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 800(%rsp),%rsi
mov  $64,%rax

.p2align 4
._ladder_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 ._ladder_small_loop
mov  $255,%rdx
add  $760,%rsi

.p2align 4
._ladder_loop:
sub  $1,%rdx
vbroadcastss 0(%rsi),%xmm10
sub  $4,%rsi
vmovdqa 0(%rsp),%xmm11
vmovdqa 80(%rsp),%xmm12
vpxor %xmm11,%xmm0,%xmm13
vpand %xmm10,%xmm13,%xmm13
vpxor %xmm13,%xmm0,%xmm0
vpxor %xmm13,%xmm11,%xmm11
vpxor %xmm12,%xmm1,%xmm13
vpand %xmm10,%xmm13,%xmm13
vpxor %xmm13,%xmm1,%xmm1
vpxor %xmm13,%xmm12,%xmm12
vmovdqa 16(%rsp),%xmm13
vmovdqa 96(%rsp),%xmm14
vpxor %xmm13,%xmm2,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm2,%xmm2
vpxor %xmm15,%xmm13,%xmm13
vpxor %xmm14,%xmm3,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm3,%xmm3
vpxor %xmm15,%xmm14,%xmm14
vmovdqa %xmm13,0(%rsp)
vmovdqa %xmm14,16(%rsp)
vmovdqa 32(%rsp),%xmm13
vmovdqa 112(%rsp),%xmm14
vpxor %xmm13,%xmm4,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm4,%xmm4
vpxor %xmm15,%xmm13,%xmm13
vpxor %xmm14,%xmm5,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm5,%xmm5
vpxor %xmm15,%xmm14,%xmm14
vmovdqa %xmm13,32(%rsp)
vmovdqa %xmm14,80(%rsp)
vmovdqa 48(%rsp),%xmm13
vmovdqa 128(%rsp),%xmm14
vpxor %xmm13,%xmm6,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm6,%xmm6
vpxor %xmm15,%xmm13,%xmm13
vpxor %xmm14,%xmm7,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm7,%xmm7
vpxor %xmm15,%xmm14,%xmm14
vmovdqa %xmm13,48(%rsp)
vmovdqa %xmm14,96(%rsp)
vmovdqa 64(%rsp),%xmm13
vmovdqa 144(%rsp),%xmm14
vpxor %xmm13,%xmm8,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm8,%xmm8
vpxor %xmm15,%xmm13,%xmm13
vpxor %xmm14,%xmm9,%xmm15
vpand %xmm10,%xmm15,%xmm15
vpxor %xmm15,%xmm9,%xmm9
vpxor %xmm15,%xmm14,%xmm14
vmovdqa %xmm13,64(%rsp)
vmovdqa %xmm14,112(%rsp)
vpaddq subc0(%rip),%xmm11,%xmm10
vpsubq %xmm12,%xmm10,%xmm10
vpaddq %xmm12,%xmm11,%xmm11
vpunpckhqdq %xmm10,%xmm11,%xmm12
vpunpcklqdq %xmm10,%xmm11,%xmm10
vpaddq %xmm1,%xmm0,%xmm11
vpaddq subc0(%rip),%xmm0,%xmm0
vpsubq %xmm1,%xmm0,%xmm0
vpunpckhqdq %xmm11,%xmm0,%xmm1
vpunpcklqdq %xmm11,%xmm0,%xmm0
vpmuludq %xmm0,%xmm10,%xmm11
vpmuludq %xmm1,%xmm10,%xmm13
vmovdqa %xmm1,128(%rsp)
vpaddq %xmm1,%xmm1,%xmm1
vpmuludq %xmm0,%xmm12,%xmm14
vmovdqa %xmm0,144(%rsp)
vpaddq %xmm14,%xmm13,%xmm13
vpmuludq %xmm1,%xmm12,%xmm0
vmovdqa %xmm1,448(%rsp)
vpaddq %xmm3,%xmm2,%xmm1
vpaddq subc2(%rip),%xmm2,%xmm2
vpsubq %xmm3,%xmm2,%xmm2
vpunpckhqdq %xmm1,%xmm2,%xmm3
vpunpcklqdq %xmm1,%xmm2,%xmm1
vpmuludq %xmm1,%xmm10,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vpmuludq %xmm3,%xmm10,%xmm2
vmovdqa %xmm3,464(%rsp)
vpaddq %xmm3,%xmm3,%xmm3
vpmuludq %xmm1,%xmm12,%xmm14
vmovdqa %xmm1,480(%rsp)
vpaddq %xmm14,%xmm2,%xmm2
vpmuludq %xmm3,%xmm12,%xmm1
vmovdqa %xmm3,496(%rsp)
vpaddq %xmm5,%xmm4,%xmm3
vpaddq subc2(%rip),%xmm4,%xmm4
vpsubq %xmm5,%xmm4,%xmm4
vpunpckhqdq %xmm3,%xmm4,%xmm5
vpunpcklqdq %xmm3,%xmm4,%xmm3
vpmuludq %xmm3,%xmm10,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vpmuludq %xmm5,%xmm10,%xmm4
vmovdqa %xmm5,512(%rsp)
vpaddq %xmm5,%xmm5,%xmm5
vpmuludq %xmm3,%xmm12,%xmm14
vmovdqa %xmm3,528(%rsp)
vpaddq %xmm14,%xmm4,%xmm4
vpaddq %xmm7,%xmm6,%xmm3
vpaddq subc2(%rip),%xmm6,%xmm6
vpsubq %xmm7,%xmm6,%xmm6
vpunpckhqdq %xmm3,%xmm6,%xmm7
vpunpcklqdq %xmm3,%xmm6,%xmm3
vpmuludq %xmm3,%xmm10,%xmm6
vpmuludq %xmm5,%xmm12,%xmm14
vmovdqa %xmm5,544(%rsp)
vpmuludq v19_19(%rip),%xmm5,%xmm5
vmovdqa %xmm5,560(%rsp)
vpaddq %xmm14,%xmm6,%xmm6
vpmuludq %xmm7,%xmm10,%xmm5
vmovdqa %xmm7,576(%rsp)
vpaddq %xmm7,%xmm7,%xmm7
vpmuludq %xmm3,%xmm12,%xmm14
vmovdqa %xmm3,592(%rsp)
vpaddq %xmm14,%xmm5,%xmm5
vpmuludq v19_19(%rip),%xmm3,%xmm3
vmovdqa %xmm3,608(%rsp)
vpaddq %xmm9,%xmm8,%xmm3
vpaddq subc2(%rip),%xmm8,%xmm8
vpsubq %xmm9,%xmm8,%xmm8
vpunpckhqdq %xmm3,%xmm8,%xmm9
vpunpcklqdq %xmm3,%xmm8,%xmm3
vmovdqa %xmm3,624(%rsp)
vpmuludq %xmm7,%xmm12,%xmm8
vmovdqa %xmm7,640(%rsp)
vpmuludq v19_19(%rip),%xmm7,%xmm7
vmovdqa %xmm7,656(%rsp)
vpmuludq %xmm3,%xmm10,%xmm7
vpaddq %xmm7,%xmm8,%xmm8
vpmuludq %xmm9,%xmm10,%xmm7
vmovdqa %xmm9,672(%rsp)
vpaddq %xmm9,%xmm9,%xmm9
vpmuludq %xmm3,%xmm12,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm3,%xmm3
vmovdqa %xmm3,688(%rsp)
vpmuludq v19_19(%rip),%xmm12,%xmm12
vpmuludq %xmm9,%xmm12,%xmm3
vmovdqa %xmm9,704(%rsp)
vpaddq %xmm3,%xmm11,%xmm11
vmovdqa 0(%rsp),%xmm3
vmovdqa 16(%rsp),%xmm9
vpaddq subc2(%rip),%xmm3,%xmm10
vpsubq %xmm9,%xmm10,%xmm10
vpaddq %xmm9,%xmm3,%xmm3
vpunpckhqdq %xmm10,%xmm3,%xmm9
vpunpcklqdq %xmm10,%xmm3,%xmm3
vpmuludq 144(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm0,%xmm0
vpmuludq 128(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm2,%xmm2
vpmuludq 480(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpmuludq 464(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm4,%xmm4
vpmuludq 528(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm6,%xmm6
vpmuludq 512(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm5,%xmm5
vpmuludq 592(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpmuludq 576(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm3,%xmm3
vpmuludq 624(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm11,%xmm11
vpmuludq 672(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 144(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 448(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm1,%xmm1
vpmuludq 480(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 496(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 528(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 544(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm8,%xmm8
vpmuludq 592(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm9,%xmm9
vpmuludq 640(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 624(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 704(%rsp),%xmm9,%xmm9
vpaddq %xmm9,%xmm0,%xmm0
vmovdqa 32(%rsp),%xmm3
vmovdqa 80(%rsp),%xmm9
vpaddq subc2(%rip),%xmm3,%xmm10
vpsubq %xmm9,%xmm10,%xmm10
vpaddq %xmm9,%xmm3,%xmm3
vpunpckhqdq %xmm10,%xmm3,%xmm9
vpunpcklqdq %xmm10,%xmm3,%xmm3
vpmuludq 144(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpmuludq 128(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm4,%xmm4
vpmuludq 480(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm6,%xmm6
vpmuludq 464(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm5,%xmm5
vpmuludq 528(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpmuludq 512(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm3,%xmm3
vpmuludq 592(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm11,%xmm11
vpmuludq 576(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm13,%xmm13
vpmuludq 624(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm0,%xmm0
vpmuludq 672(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 144(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 448(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 480(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 496(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm8,%xmm8
vpmuludq 528(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm9,%xmm9
vpmuludq 544(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 592(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 640(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm0,%xmm0
vpmuludq 624(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 704(%rsp),%xmm9,%xmm9
vpaddq %xmm9,%xmm1,%xmm1
vmovdqa 48(%rsp),%xmm3
vmovdqa 96(%rsp),%xmm9
vpaddq subc2(%rip),%xmm3,%xmm10
vpsubq %xmm9,%xmm10,%xmm10
vpaddq %xmm9,%xmm3,%xmm3
vpunpckhqdq %xmm10,%xmm3,%xmm9
vpunpcklqdq %xmm10,%xmm3,%xmm3
vpmuludq 144(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm6,%xmm6
vpmuludq 128(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm5,%xmm5
vpmuludq 480(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpmuludq 464(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm3,%xmm3
vpmuludq 528(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm11,%xmm11
vpmuludq 512(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm13,%xmm13
vpmuludq 592(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm0,%xmm0
vpmuludq 576(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm2,%xmm2
vpmuludq 624(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpmuludq 672(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 144(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 448(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm8,%xmm8
vpmuludq 480(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm9,%xmm9
vpmuludq 496(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 528(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 544(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm0,%xmm0
vpmuludq 592(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 640(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm1,%xmm1
vpmuludq 624(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 704(%rsp),%xmm9,%xmm9
vpaddq %xmm9,%xmm6,%xmm6
vmovdqa 64(%rsp),%xmm3
vmovdqa 112(%rsp),%xmm9
vpaddq subc2(%rip),%xmm3,%xmm10
vpsubq %xmm9,%xmm10,%xmm10
vpaddq %xmm9,%xmm3,%xmm3
vpunpckhqdq %xmm10,%xmm3,%xmm9
vpunpcklqdq %xmm10,%xmm3,%xmm3
vpmuludq 144(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpmuludq 128(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm3,%xmm3
vpmuludq 480(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm11,%xmm11
vpmuludq 464(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm13,%xmm13
vpmuludq 528(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm0,%xmm0
vpmuludq 512(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm2,%xmm2
vpmuludq 592(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpmuludq 576(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm4,%xmm4
vpmuludq 624(%rsp),%xmm3,%xmm10
vpaddq %xmm10,%xmm6,%xmm6
vpmuludq 672(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 144(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq v19_19(%rip),%xmm9,%xmm9
vpmuludq 448(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 480(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 496(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm0,%xmm0
vpmuludq 528(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 544(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm1,%xmm1
vpmuludq 592(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 640(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 624(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 704(%rsp),%xmm9,%xmm9
vpaddq %xmm9,%xmm8,%xmm8
vpsrlq $25,%xmm4,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpand m25(%rip),%xmm4,%xmm4
vpsrlq $26,%xmm11,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpand m26(%rip),%xmm11,%xmm11
vpsrlq $26,%xmm6,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpand m26(%rip),%xmm6,%xmm6
vpsrlq $25,%xmm13,%xmm3
vpaddq %xmm3,%xmm0,%xmm0
vpand m25(%rip),%xmm13,%xmm13
vpsrlq $25,%xmm5,%xmm3
vpaddq %xmm3,%xmm8,%xmm8
vpand m25(%rip),%xmm5,%xmm5
vpsrlq $26,%xmm0,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpand m26(%rip),%xmm0,%xmm0
vpsrlq $26,%xmm8,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpand m26(%rip),%xmm8,%xmm8
vpsrlq $25,%xmm2,%xmm3
vpaddq %xmm3,%xmm1,%xmm1
vpand m25(%rip),%xmm2,%xmm2
vpsrlq $25,%xmm7,%xmm3
vpsllq $4,%xmm3,%xmm9
vpaddq %xmm3,%xmm11,%xmm11
vpsllq $1,%xmm3,%xmm3
vpaddq %xmm3,%xmm9,%xmm9
vpaddq %xmm9,%xmm11,%xmm11
vpand m25(%rip),%xmm7,%xmm7
vpsrlq $26,%xmm1,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpand m26(%rip),%xmm1,%xmm1
vpsrlq $26,%xmm11,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpand m26(%rip),%xmm11,%xmm11
vpsrlq $25,%xmm4,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpand m25(%rip),%xmm4,%xmm4
vpunpcklqdq %xmm13,%xmm11,%xmm3
vpunpckhqdq %xmm13,%xmm11,%xmm9
vpaddq subc0(%rip),%xmm9,%xmm10
vpsubq %xmm3,%xmm10,%xmm10
vpaddq %xmm9,%xmm3,%xmm3
vpunpckhqdq %xmm3,%xmm10,%xmm9
vpunpcklqdq %xmm3,%xmm10,%xmm10
vpmuludq %xmm10,%xmm10,%xmm3
vpaddq %xmm10,%xmm10,%xmm10
vpmuludq %xmm9,%xmm10,%xmm11
vpunpcklqdq %xmm2,%xmm0,%xmm12
vpunpckhqdq %xmm2,%xmm0,%xmm0
vpaddq subc2(%rip),%xmm0,%xmm2
vpsubq %xmm12,%xmm2,%xmm2
vpaddq %xmm0,%xmm12,%xmm12
vpunpckhqdq %xmm12,%xmm2,%xmm0
vpunpcklqdq %xmm12,%xmm2,%xmm2
vpmuludq %xmm2,%xmm10,%xmm12
vpaddq %xmm9,%xmm9,%xmm13
vpmuludq %xmm13,%xmm9,%xmm9
vpaddq %xmm9,%xmm12,%xmm12
vpmuludq %xmm0,%xmm10,%xmm9
vpmuludq %xmm2,%xmm13,%xmm14
vpaddq %xmm14,%xmm9,%xmm9
vpunpcklqdq %xmm4,%xmm1,%xmm14
vpunpckhqdq %xmm4,%xmm1,%xmm1
vpaddq subc2(%rip),%xmm1,%xmm4
vpsubq %xmm14,%xmm4,%xmm4
vpaddq %xmm1,%xmm14,%xmm14
vpunpckhqdq %xmm14,%xmm4,%xmm1
vpunpcklqdq %xmm14,%xmm4,%xmm4
vmovdqa %xmm1,0(%rsp)
vpaddq %xmm1,%xmm1,%xmm1
vmovdqa %xmm1,16(%rsp)
vpmuludq v19_19(%rip),%xmm1,%xmm1
vmovdqa %xmm1,32(%rsp)
vpmuludq %xmm4,%xmm10,%xmm1
vpmuludq %xmm2,%xmm2,%xmm14
vpaddq %xmm14,%xmm1,%xmm1
vpmuludq 0(%rsp),%xmm10,%xmm14
vpmuludq %xmm4,%xmm13,%xmm15
vpaddq %xmm15,%xmm14,%xmm14
vpunpcklqdq %xmm5,%xmm6,%xmm15
vpunpckhqdq %xmm5,%xmm6,%xmm5
vpaddq subc2(%rip),%xmm5,%xmm6
vpsubq %xmm15,%xmm6,%xmm6
vpaddq %xmm5,%xmm15,%xmm15
vpunpckhqdq %xmm15,%xmm6,%xmm5
vpunpcklqdq %xmm15,%xmm6,%xmm6
vmovdqa %xmm6,48(%rsp)
vpmuludq v19_19(%rip),%xmm6,%xmm6
vmovdqa %xmm6,64(%rsp)
vmovdqa %xmm5,80(%rsp)
vpmuludq v38_38(%rip),%xmm5,%xmm5
vmovdqa %xmm5,96(%rsp)
vpmuludq 48(%rsp),%xmm10,%xmm5
vpaddq %xmm0,%xmm0,%xmm6
vpmuludq %xmm6,%xmm0,%xmm0
vpaddq %xmm0,%xmm5,%xmm5
vpmuludq 80(%rsp),%xmm10,%xmm0
vpmuludq %xmm4,%xmm6,%xmm15
vpaddq %xmm15,%xmm0,%xmm0
vpmuludq %xmm6,%xmm13,%xmm15
vpaddq %xmm15,%xmm1,%xmm1
vpmuludq %xmm6,%xmm2,%xmm15
vpaddq %xmm15,%xmm14,%xmm14
vpunpcklqdq %xmm7,%xmm8,%xmm15
vpunpckhqdq %xmm7,%xmm8,%xmm7
vpaddq subc2(%rip),%xmm7,%xmm8
vpsubq %xmm15,%xmm8,%xmm8
vpaddq %xmm7,%xmm15,%xmm15
vpunpckhqdq %xmm15,%xmm8,%xmm7
vpunpcklqdq %xmm15,%xmm8,%xmm8
vmovdqa %xmm8,112(%rsp)
vpmuludq v19_19(%rip),%xmm8,%xmm8
vmovdqa %xmm8,448(%rsp)
vpmuludq 112(%rsp),%xmm10,%xmm8
vpmuludq %xmm7,%xmm10,%xmm10
vpmuludq v38_38(%rip),%xmm7,%xmm15
vpmuludq %xmm15,%xmm7,%xmm7
vpaddq %xmm7,%xmm8,%xmm8
vpmuludq %xmm15,%xmm13,%xmm7
vpaddq %xmm7,%xmm3,%xmm3
vpmuludq %xmm15,%xmm2,%xmm7
vpaddq %xmm7,%xmm11,%xmm11
vpmuludq 80(%rsp),%xmm13,%xmm7
vpaddq %xmm7,%xmm7,%xmm7
vpaddq %xmm7,%xmm8,%xmm8
vpmuludq 16(%rsp),%xmm13,%xmm7
vpaddq %xmm7,%xmm5,%xmm5
vpmuludq 48(%rsp),%xmm13,%xmm7
vpaddq %xmm7,%xmm0,%xmm0
vpmuludq 112(%rsp),%xmm13,%xmm7
vpaddq %xmm7,%xmm10,%xmm10
vpmuludq %xmm15,%xmm6,%xmm7
vpaddq %xmm7,%xmm12,%xmm12
vpmuludq %xmm15,%xmm4,%xmm7
vpaddq %xmm7,%xmm9,%xmm9
vpaddq %xmm2,%xmm2,%xmm2
vpmuludq %xmm4,%xmm2,%xmm7
vpaddq %xmm7,%xmm5,%xmm5
vpmuludq 448(%rsp),%xmm2,%xmm7
vpaddq %xmm7,%xmm3,%xmm3
vpmuludq 448(%rsp),%xmm6,%xmm7
vpaddq %xmm7,%xmm11,%xmm11
vpmuludq 0(%rsp),%xmm2,%xmm7
vpaddq %xmm7,%xmm0,%xmm0
vpmuludq 48(%rsp),%xmm2,%xmm7
vpaddq %xmm7,%xmm8,%xmm8
vpmuludq 80(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 96(%rsp),%xmm4,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpmuludq %xmm4,%xmm4,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpaddq %xmm4,%xmm4,%xmm2
vpmuludq 448(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm12,%xmm12
vpmuludq 16(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vpmuludq 48(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm14,%xmm14
vpmuludq 96(%rsp),%xmm6,%xmm4
vpaddq %xmm4,%xmm3,%xmm3
vmovdqa 16(%rsp),%xmm4
vpmuludq 448(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm9,%xmm9
vpmuludq 16(%rsp),%xmm6,%xmm4
vpaddq %xmm4,%xmm8,%xmm8
vpmuludq 48(%rsp),%xmm6,%xmm4
vpaddq %xmm4,%xmm10,%xmm10
vpmuludq 80(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm4,%xmm4
vpaddq %xmm4,%xmm5,%xmm5
vpmuludq 112(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm0,%xmm0
vmovdqa 48(%rsp),%xmm4
vpaddq %xmm4,%xmm4,%xmm4
vpmuludq 448(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vmovdqa 80(%rsp),%xmm4
vpaddq %xmm4,%xmm4,%xmm4
vpmuludq 448(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm14,%xmm14
vpmuludq 64(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm3,%xmm3
vmovdqa 16(%rsp),%xmm4
vpmuludq 64(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm11,%xmm11
vmovdqa 16(%rsp),%xmm4
vpmuludq 96(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm12,%xmm12
vmovdqa 48(%rsp),%xmm4
vpmuludq 96(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm9,%xmm9
vpmuludq 0(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vmovdqa 32(%rsp),%xmm2
vpmuludq 0(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm3,%xmm3
vmovdqa 64(%rsp),%xmm2
vpmuludq 48(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vmovdqa 96(%rsp),%xmm2
vpmuludq 80(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm1,%xmm1
vmovdqa 448(%rsp),%xmm2
vpmuludq 112(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpsrlq $26,%xmm3,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpand m26(%rip),%xmm3,%xmm3
vpsrlq $25,%xmm14,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpand m25(%rip),%xmm14,%xmm14
vpsrlq $25,%xmm11,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpand m25(%rip),%xmm11,%xmm11
vpsrlq $26,%xmm5,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vpand m26(%rip),%xmm5,%xmm5
vpsrlq $26,%xmm12,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpand m26(%rip),%xmm12,%xmm12
vpsrlq $25,%xmm0,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpand m25(%rip),%xmm0,%xmm0
vpsrlq $25,%xmm9,%xmm2
vpaddq %xmm2,%xmm1,%xmm1
vpand m25(%rip),%xmm9,%xmm9
vpsrlq $26,%xmm8,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpand m26(%rip),%xmm8,%xmm8
vpsrlq $26,%xmm1,%xmm2
vpaddq %xmm2,%xmm14,%xmm14
vpand m26(%rip),%xmm1,%xmm1
vpsrlq $25,%xmm10,%xmm2
vpsllq $4,%xmm2,%xmm4
vpaddq %xmm2,%xmm3,%xmm3
vpsllq $1,%xmm2,%xmm2
vpaddq %xmm2,%xmm4,%xmm4
vpaddq %xmm4,%xmm3,%xmm3
vpand m25(%rip),%xmm10,%xmm10
vpsrlq $25,%xmm14,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpand m25(%rip),%xmm14,%xmm14
vpsrlq $26,%xmm3,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpand m26(%rip),%xmm3,%xmm3
vpunpckhqdq %xmm11,%xmm3,%xmm2
vmovdqa %xmm2,0(%rsp)
vpshufd $0,%xmm3,%xmm2
vpshufd $0,%xmm11,%xmm3
vpmuludq 160(%rsp),%xmm2,%xmm4
vpmuludq 432(%rsp),%xmm3,%xmm6
vpaddq %xmm6,%xmm4,%xmm4
vpmuludq 176(%rsp),%xmm2,%xmm6
vpmuludq 304(%rsp),%xmm3,%xmm7
vpaddq %xmm7,%xmm6,%xmm6
vpmuludq 208(%rsp),%xmm2,%xmm7
vpmuludq 336(%rsp),%xmm3,%xmm11
vpaddq %xmm11,%xmm7,%xmm7
vpmuludq 240(%rsp),%xmm2,%xmm11
vpmuludq 368(%rsp),%xmm3,%xmm13
vpaddq %xmm13,%xmm11,%xmm11
vpmuludq 272(%rsp),%xmm2,%xmm2
vpmuludq 400(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpunpckhqdq %xmm9,%xmm12,%xmm3
vmovdqa %xmm3,16(%rsp)
vpshufd $0,%xmm12,%xmm3
vpshufd $0,%xmm9,%xmm9
vpmuludq 288(%rsp),%xmm3,%xmm12
vpaddq %xmm12,%xmm4,%xmm4
vpmuludq 416(%rsp),%xmm9,%xmm12
vpaddq %xmm12,%xmm4,%xmm4
vpmuludq 160(%rsp),%xmm3,%xmm12
vpaddq %xmm12,%xmm6,%xmm6
vpmuludq 432(%rsp),%xmm9,%xmm12
vpaddq %xmm12,%xmm6,%xmm6
vpmuludq 176(%rsp),%xmm3,%xmm12
vpaddq %xmm12,%xmm7,%xmm7
vpmuludq 304(%rsp),%xmm9,%xmm12
vpaddq %xmm12,%xmm7,%xmm7
vpmuludq 208(%rsp),%xmm3,%xmm12
vpaddq %xmm12,%xmm11,%xmm11
vpmuludq 336(%rsp),%xmm9,%xmm12
vpaddq %xmm12,%xmm11,%xmm11
vpmuludq 240(%rsp),%xmm3,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpmuludq 368(%rsp),%xmm9,%xmm3
vpaddq %xmm3,%xmm2,%xmm2
vpunpckhqdq %xmm14,%xmm1,%xmm3
vmovdqa %xmm3,32(%rsp)
vpshufd $0,%xmm1,%xmm1
vpshufd $0,%xmm14,%xmm3
vpmuludq 256(%rsp),%xmm1,%xmm9
vpaddq %xmm9,%xmm4,%xmm4
vpmuludq 384(%rsp),%xmm3,%xmm9
vpaddq %xmm9,%xmm4,%xmm4
vpmuludq 288(%rsp),%xmm1,%xmm9
vpaddq %xmm9,%xmm6,%xmm6
vpmuludq 416(%rsp),%xmm3,%xmm9
vpaddq %xmm9,%xmm6,%xmm6
vpmuludq 160(%rsp),%xmm1,%xmm9
vpaddq %xmm9,%xmm7,%xmm7
vpmuludq 432(%rsp),%xmm3,%xmm9
vpaddq %xmm9,%xmm7,%xmm7
vpmuludq 176(%rsp),%xmm1,%xmm9
vpaddq %xmm9,%xmm11,%xmm11
vpmuludq 304(%rsp),%xmm3,%xmm9
vpaddq %xmm9,%xmm11,%xmm11
vpmuludq 208(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm2,%xmm2
vpmuludq 336(%rsp),%xmm3,%xmm1
vpaddq %xmm1,%xmm2,%xmm2
vpunpckhqdq %xmm0,%xmm5,%xmm1
vmovdqa %xmm1,48(%rsp)
vpshufd $0,%xmm5,%xmm1
vpshufd $0,%xmm0,%xmm0
vpmuludq 224(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 352(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 256(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 384(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 288(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 416(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 160(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 432(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 176(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm2,%xmm2
vpmuludq 304(%rsp),%xmm0,%xmm0
vpaddq %xmm0,%xmm2,%xmm2
vpunpckhqdq %xmm10,%xmm8,%xmm0
vmovdqa %xmm0,64(%rsp)
vpshufd $0,%xmm8,%xmm0
vpshufd $0,%xmm10,%xmm1
vpmuludq 192(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 320(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm4,%xmm4
vpmuludq 224(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 352(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 256(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 384(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 288(%rsp),%xmm0,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 416(%rsp),%xmm1,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 160(%rsp),%xmm0,%xmm0
vpaddq %xmm0,%xmm2,%xmm2
vpmuludq 432(%rsp),%xmm1,%xmm0
vpaddq %xmm0,%xmm2,%xmm2
vmovdqa %xmm4,80(%rsp)
vmovdqa %xmm6,96(%rsp)
vmovdqa %xmm7,112(%rsp)
vmovdqa %xmm11,448(%rsp)
vmovdqa %xmm2,496(%rsp)
vmovdqa 144(%rsp),%xmm0
vpmuludq %xmm0,%xmm0,%xmm1
vpaddq %xmm0,%xmm0,%xmm0
vmovdqa 128(%rsp),%xmm2
vpmuludq %xmm2,%xmm0,%xmm3
vmovdqa 480(%rsp),%xmm4
vpmuludq %xmm4,%xmm0,%xmm5
vmovdqa 464(%rsp),%xmm6
vpmuludq %xmm6,%xmm0,%xmm7
vmovdqa 528(%rsp),%xmm8
vpmuludq %xmm8,%xmm0,%xmm9
vpmuludq 512(%rsp),%xmm0,%xmm10
vpmuludq 592(%rsp),%xmm0,%xmm11
vpmuludq 576(%rsp),%xmm0,%xmm12
vpmuludq 624(%rsp),%xmm0,%xmm13
vmovdqa 672(%rsp),%xmm14
vpmuludq %xmm14,%xmm0,%xmm0
vpmuludq v38_38(%rip),%xmm14,%xmm15
vpmuludq %xmm15,%xmm14,%xmm14
vpaddq %xmm14,%xmm13,%xmm13
vpaddq %xmm6,%xmm6,%xmm14
vpmuludq %xmm14,%xmm6,%xmm6
vpaddq %xmm6,%xmm11,%xmm11
vpaddq %xmm2,%xmm2,%xmm6
vpmuludq %xmm6,%xmm2,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpmuludq %xmm15,%xmm6,%xmm2
vpaddq %xmm2,%xmm1,%xmm1
vpmuludq %xmm15,%xmm4,%xmm2
vpaddq %xmm2,%xmm3,%xmm3
vpmuludq 544(%rsp),%xmm6,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpmuludq 592(%rsp),%xmm6,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 640(%rsp),%xmm6,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpmuludq 624(%rsp),%xmm6,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vpmuludq %xmm4,%xmm6,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpmuludq %xmm14,%xmm6,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpmuludq %xmm8,%xmm6,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq %xmm15,%xmm14,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpmuludq %xmm15,%xmm8,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpmuludq %xmm4,%xmm4,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpmuludq %xmm14,%xmm4,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpaddq %xmm4,%xmm4,%xmm2
vpmuludq %xmm8,%xmm2,%xmm4
vpaddq %xmm4,%xmm11,%xmm11
vpmuludq 688(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vpmuludq 688(%rsp),%xmm14,%xmm4
vpaddq %xmm4,%xmm3,%xmm3
vpmuludq 512(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm12,%xmm12
vpmuludq 592(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm13,%xmm13
vpmuludq 576(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vpmuludq 656(%rsp),%xmm8,%xmm2
vpaddq %xmm2,%xmm3,%xmm3
vpmuludq %xmm8,%xmm14,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq %xmm8,%xmm8,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpaddq %xmm8,%xmm8,%xmm2
vpmuludq 688(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm5,%xmm5
vpmuludq 544(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm9,%xmm9
vpmuludq 592(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm10,%xmm10
vpmuludq 656(%rsp),%xmm14,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vmovdqa 544(%rsp),%xmm4
vpmuludq 688(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm7,%xmm7
vpmuludq 544(%rsp),%xmm14,%xmm4
vpaddq %xmm4,%xmm13,%xmm13
vpmuludq 592(%rsp),%xmm14,%xmm4
vpaddq %xmm4,%xmm0,%xmm0
vpmuludq 640(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm11,%xmm11
vpmuludq 624(%rsp),%xmm15,%xmm4
vpaddq %xmm4,%xmm12,%xmm12
vmovdqa 592(%rsp),%xmm4
vpaddq %xmm4,%xmm4,%xmm4
vpmuludq 688(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm9,%xmm9
vpmuludq 608(%rsp),%xmm2,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vmovdqa 544(%rsp),%xmm4
vpmuludq 608(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm3,%xmm3
vmovdqa 544(%rsp),%xmm4
vpmuludq 656(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm5,%xmm5
vmovdqa 592(%rsp),%xmm4
vpmuludq 656(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm7,%xmm7
vmovdqa 640(%rsp),%xmm4
vpmuludq 688(%rsp),%xmm4,%xmm4
vpaddq %xmm4,%xmm10,%xmm10
vpmuludq 512(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vmovdqa 560(%rsp),%xmm2
vpmuludq 512(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm1,%xmm1
vmovdqa 608(%rsp),%xmm2
vpmuludq 592(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vmovdqa 656(%rsp),%xmm2
vpmuludq 576(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vmovdqa 688(%rsp),%xmm2
vpmuludq 624(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpsrlq $26,%xmm1,%xmm2
vpaddq %xmm2,%xmm3,%xmm3
vpand m26(%rip),%xmm1,%xmm1
vpsrlq $25,%xmm10,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpand m25(%rip),%xmm10,%xmm10
vpsrlq $25,%xmm3,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpand m25(%rip),%xmm3,%xmm3
vpsrlq $26,%xmm11,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpand m26(%rip),%xmm11,%xmm11
vpsrlq $26,%xmm5,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpand m26(%rip),%xmm5,%xmm5
vpsrlq $25,%xmm12,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpand m25(%rip),%xmm12,%xmm12
vpsrlq $25,%xmm7,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpand m25(%rip),%xmm7,%xmm7
vpsrlq $26,%xmm13,%xmm2
vpaddq %xmm2,%xmm0,%xmm0
vpand m26(%rip),%xmm13,%xmm13
vpsrlq $26,%xmm9,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpand m26(%rip),%xmm9,%xmm9
vpsrlq $25,%xmm0,%xmm2
vpsllq $4,%xmm2,%xmm4
vpaddq %xmm2,%xmm1,%xmm1
vpsllq $1,%xmm2,%xmm2
vpaddq %xmm2,%xmm4,%xmm4
vpaddq %xmm4,%xmm1,%xmm1
vpand m25(%rip),%xmm0,%xmm0
vpsrlq $25,%xmm10,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpand m25(%rip),%xmm10,%xmm10
vpsrlq $26,%xmm1,%xmm2
vpaddq %xmm2,%xmm3,%xmm3
vpand m26(%rip),%xmm1,%xmm1
vpunpckhqdq %xmm3,%xmm1,%xmm2
vpunpcklqdq %xmm3,%xmm1,%xmm1
vmovdqa %xmm1,464(%rsp)
vpaddq subc0(%rip),%xmm2,%xmm3
vpsubq %xmm1,%xmm3,%xmm3
vpunpckhqdq %xmm3,%xmm2,%xmm1
vpunpcklqdq %xmm3,%xmm2,%xmm2
vmovdqa %xmm2,480(%rsp)
vmovdqa %xmm1,512(%rsp)
vpsllq $1,%xmm1,%xmm1
vmovdqa %xmm1,528(%rsp)
vpmuludq v121666_121666(%rip),%xmm3,%xmm3
vmovdqa 80(%rsp),%xmm1
vpunpcklqdq %xmm1,%xmm3,%xmm2
vpunpckhqdq %xmm1,%xmm3,%xmm1
vpunpckhqdq %xmm7,%xmm5,%xmm3
vpunpcklqdq %xmm7,%xmm5,%xmm4
vmovdqa %xmm4,544(%rsp)
vpaddq subc2(%rip),%xmm3,%xmm5
vpsubq %xmm4,%xmm5,%xmm5
vpunpckhqdq %xmm5,%xmm3,%xmm4
vpunpcklqdq %xmm5,%xmm3,%xmm3
vmovdqa %xmm3,560(%rsp)
vmovdqa %xmm4,576(%rsp)
vpsllq $1,%xmm4,%xmm4
vmovdqa %xmm4,592(%rsp)
vpmuludq v121666_121666(%rip),%xmm5,%xmm5
vmovdqa 96(%rsp),%xmm3
vpunpcklqdq %xmm3,%xmm5,%xmm4
vpunpckhqdq %xmm3,%xmm5,%xmm3
vpunpckhqdq %xmm10,%xmm9,%xmm5
vpunpcklqdq %xmm10,%xmm9,%xmm6
vmovdqa %xmm6,608(%rsp)
vpaddq subc2(%rip),%xmm5,%xmm7
vpsubq %xmm6,%xmm7,%xmm7
vpunpckhqdq %xmm7,%xmm5,%xmm6
vpunpcklqdq %xmm7,%xmm5,%xmm5
vmovdqa %xmm5,624(%rsp)
vmovdqa %xmm6,640(%rsp)
vpsllq $1,%xmm6,%xmm6
vmovdqa %xmm6,656(%rsp)
vpmuludq v121666_121666(%rip),%xmm7,%xmm7
vmovdqa 112(%rsp),%xmm5
vpunpcklqdq %xmm5,%xmm7,%xmm6
vpunpckhqdq %xmm5,%xmm7,%xmm5
vpunpckhqdq %xmm12,%xmm11,%xmm7
vpunpcklqdq %xmm12,%xmm11,%xmm8
vmovdqa %xmm8,672(%rsp)
vpaddq subc2(%rip),%xmm7,%xmm9
vpsubq %xmm8,%xmm9,%xmm9
vpunpckhqdq %xmm9,%xmm7,%xmm8
vpunpcklqdq %xmm9,%xmm7,%xmm7
vmovdqa %xmm7,688(%rsp)
vmovdqa %xmm8,704(%rsp)
vpsllq $1,%xmm8,%xmm8
vmovdqa %xmm8,720(%rsp)
vpmuludq v121666_121666(%rip),%xmm9,%xmm9
vmovdqa 448(%rsp),%xmm7
vpunpcklqdq %xmm7,%xmm9,%xmm8
vpunpckhqdq %xmm7,%xmm9,%xmm7
vpunpckhqdq %xmm0,%xmm13,%xmm9
vpunpcklqdq %xmm0,%xmm13,%xmm0
vmovdqa %xmm0,448(%rsp)
vpaddq subc2(%rip),%xmm9,%xmm10
vpsubq %xmm0,%xmm10,%xmm10
vpunpckhqdq %xmm10,%xmm9,%xmm0
vpunpcklqdq %xmm10,%xmm9,%xmm9
vmovdqa %xmm9,736(%rsp)
vmovdqa %xmm0,752(%rsp)
vpsllq $1,%xmm0,%xmm0
vmovdqa %xmm0,768(%rsp)
vpmuludq v121666_121666(%rip),%xmm10,%xmm10
vmovdqa 496(%rsp),%xmm0
vpunpcklqdq %xmm0,%xmm10,%xmm9
vpunpckhqdq %xmm0,%xmm10,%xmm0
vpsrlq $26,%xmm2,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpand m26(%rip),%xmm2,%xmm2
vpsrlq $25,%xmm5,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpand m25(%rip),%xmm5,%xmm5
vpsrlq $25,%xmm1,%xmm10
vpaddq %xmm10,%xmm4,%xmm4
vpand m25(%rip),%xmm1,%xmm1
vpsrlq $26,%xmm8,%xmm10
vpaddq %xmm10,%xmm7,%xmm7
vpand m26(%rip),%xmm8,%xmm8
vpsrlq $26,%xmm4,%xmm10
vpaddq %xmm10,%xmm3,%xmm3
vpand m26(%rip),%xmm4,%xmm4
vpsrlq $25,%xmm7,%xmm10
vpaddq %xmm10,%xmm9,%xmm9
vpand m25(%rip),%xmm7,%xmm7
vpsrlq $25,%xmm3,%xmm10
vpaddq %xmm10,%xmm6,%xmm6
vpand m25(%rip),%xmm3,%xmm3
vpsrlq $26,%xmm9,%xmm10
vpaddq %xmm10,%xmm0,%xmm0
vpand m26(%rip),%xmm9,%xmm9
vpsrlq $26,%xmm6,%xmm10
vpaddq %xmm10,%xmm5,%xmm5
vpand m26(%rip),%xmm6,%xmm6
vpsrlq $25,%xmm0,%xmm10
vpsllq $4,%xmm10,%xmm11
vpaddq %xmm10,%xmm2,%xmm2
vpsllq $1,%xmm10,%xmm10
vpaddq %xmm10,%xmm11,%xmm11
vpaddq %xmm11,%xmm2,%xmm2
vpand m25(%rip),%xmm0,%xmm0
vpsrlq $25,%xmm5,%xmm10
vpaddq %xmm10,%xmm8,%xmm8
vpand m25(%rip),%xmm5,%xmm5
vpsrlq $26,%xmm2,%xmm10
vpaddq %xmm10,%xmm1,%xmm1
vpand m26(%rip),%xmm2,%xmm2
vpunpckhqdq %xmm1,%xmm2,%xmm10
vmovdqa %xmm10,80(%rsp)
vpunpcklqdq %xmm1,%xmm2,%xmm1
vpunpckhqdq %xmm3,%xmm4,%xmm2
vmovdqa %xmm2,96(%rsp)
vpunpcklqdq %xmm3,%xmm4,%xmm2
vpunpckhqdq %xmm5,%xmm6,%xmm3
vmovdqa %xmm3,112(%rsp)
vpunpcklqdq %xmm5,%xmm6,%xmm3
vpunpckhqdq %xmm7,%xmm8,%xmm4
vmovdqa %xmm4,128(%rsp)
vpunpcklqdq %xmm7,%xmm8,%xmm4
vpunpckhqdq %xmm0,%xmm9,%xmm5
vmovdqa %xmm5,144(%rsp)
vpunpcklqdq %xmm0,%xmm9,%xmm0
vmovdqa 464(%rsp),%xmm5
vpaddq %xmm5,%xmm1,%xmm1
vpunpcklqdq %xmm1,%xmm5,%xmm6
vpunpckhqdq %xmm1,%xmm5,%xmm1
vpmuludq 512(%rsp),%xmm6,%xmm5
vpmuludq 480(%rsp),%xmm1,%xmm7
vpaddq %xmm7,%xmm5,%xmm5
vpmuludq 560(%rsp),%xmm6,%xmm7
vpmuludq 528(%rsp),%xmm1,%xmm8
vpaddq %xmm8,%xmm7,%xmm7
vpmuludq 576(%rsp),%xmm6,%xmm8
vpmuludq 560(%rsp),%xmm1,%xmm9
vpaddq %xmm9,%xmm8,%xmm8
vpmuludq 624(%rsp),%xmm6,%xmm9
vpmuludq 592(%rsp),%xmm1,%xmm10
vpaddq %xmm10,%xmm9,%xmm9
vpmuludq 640(%rsp),%xmm6,%xmm10
vpmuludq 624(%rsp),%xmm1,%xmm11
vpaddq %xmm11,%xmm10,%xmm10
vpmuludq 688(%rsp),%xmm6,%xmm11
vpmuludq 656(%rsp),%xmm1,%xmm12
vpaddq %xmm12,%xmm11,%xmm11
vpmuludq 704(%rsp),%xmm6,%xmm12
vpmuludq 688(%rsp),%xmm1,%xmm13
vpaddq %xmm13,%xmm12,%xmm12
vpmuludq 736(%rsp),%xmm6,%xmm13
vpmuludq 720(%rsp),%xmm1,%xmm14
vpaddq %xmm14,%xmm13,%xmm13
vpmuludq 752(%rsp),%xmm6,%xmm14
vpmuludq 736(%rsp),%xmm1,%xmm15
vpaddq %xmm15,%xmm14,%xmm14
vpmuludq 480(%rsp),%xmm6,%xmm6
vpmuludq v19_19(%rip),%xmm1,%xmm1
vpmuludq 768(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm6,%xmm6
vmovdqa 544(%rsp),%xmm1
vpaddq %xmm1,%xmm2,%xmm2
vpunpcklqdq %xmm2,%xmm1,%xmm15
vpunpckhqdq %xmm2,%xmm1,%xmm1
vpmuludq 480(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpmuludq 512(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpmuludq 560(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpmuludq 576(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 624(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpmuludq 640(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 688(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpmuludq 704(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm15,%xmm15
vpmuludq 736(%rsp),%xmm15,%xmm2
vpaddq %xmm2,%xmm6,%xmm6
vpmuludq 752(%rsp),%xmm15,%xmm15
vpaddq %xmm15,%xmm5,%xmm5
vpmuludq 480(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpmuludq 528(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpmuludq 560(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 592(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpmuludq 624(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 656(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpmuludq 688(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm1,%xmm1
vpmuludq 720(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm6,%xmm6
vpmuludq 736(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpmuludq 768(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm7,%xmm7
vmovdqa 608(%rsp),%xmm1
vpaddq %xmm1,%xmm3,%xmm3
vpunpcklqdq %xmm3,%xmm1,%xmm2
vpunpckhqdq %xmm3,%xmm1,%xmm1
vpmuludq 480(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm9,%xmm9
vpmuludq 512(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm10,%xmm10
vpmuludq 560(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 576(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm12,%xmm12
vpmuludq 624(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 640(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm2,%xmm2
vpmuludq 688(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 704(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 736(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 752(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpmuludq 480(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 528(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm11,%xmm11
vpmuludq 560(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 592(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpmuludq 624(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm1,%xmm1
vpmuludq 656(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm6,%xmm6
vpmuludq 688(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpmuludq 720(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpmuludq 736(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpmuludq 768(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm9,%xmm9
vmovdqa 672(%rsp),%xmm1
vpaddq %xmm1,%xmm4,%xmm4
vpunpcklqdq %xmm4,%xmm1,%xmm2
vpunpckhqdq %xmm4,%xmm1,%xmm1
vpmuludq 480(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm11,%xmm11
vpmuludq 512(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm12,%xmm12
vpmuludq 560(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm13,%xmm13
vpmuludq 576(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm2,%xmm2
vpmuludq 624(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm6,%xmm6
vpmuludq 640(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm5,%xmm5
vpmuludq 688(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm7,%xmm7
vpmuludq 704(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm8,%xmm8
vpmuludq 736(%rsp),%xmm2,%xmm3
vpaddq %xmm3,%xmm9,%xmm9
vpmuludq 752(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 480(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 528(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm13,%xmm13
vpmuludq 560(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm1,%xmm1
vpmuludq 592(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm6,%xmm6
vpmuludq 624(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm5,%xmm5
vpmuludq 656(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm7,%xmm7
vpmuludq 688(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm8,%xmm8
vpmuludq 720(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm9,%xmm9
vpmuludq 736(%rsp),%xmm1,%xmm2
vpaddq %xmm2,%xmm10,%xmm10
vpmuludq 768(%rsp),%xmm1,%xmm1
vpaddq %xmm1,%xmm11,%xmm11
vmovdqa 448(%rsp),%xmm1
vpaddq %xmm1,%xmm0,%xmm0
vpunpcklqdq %xmm0,%xmm1,%xmm2
vpunpckhqdq %xmm0,%xmm1,%xmm0
vpmuludq 480(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm13,%xmm13
vpmuludq 512(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm2,%xmm2
vpmuludq 560(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm6,%xmm6
vpmuludq 576(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm5,%xmm5
vpmuludq 624(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm7,%xmm7
vpmuludq 640(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm8,%xmm8
vpmuludq 688(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm9,%xmm9
vpmuludq 704(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm10,%xmm10
vpmuludq 736(%rsp),%xmm2,%xmm1
vpaddq %xmm1,%xmm11,%xmm11
vpmuludq 752(%rsp),%xmm2,%xmm2
vpaddq %xmm2,%xmm12,%xmm12
vpmuludq 480(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm14,%xmm14
vpmuludq v19_19(%rip),%xmm0,%xmm0
vpmuludq 528(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm6,%xmm6
vpmuludq 560(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm5,%xmm5
vpmuludq 592(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm7,%xmm7
vpmuludq 624(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm8,%xmm8
vpmuludq 656(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm9,%xmm9
vpmuludq 688(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm10,%xmm10
vpmuludq 720(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm11,%xmm11
vpmuludq 736(%rsp),%xmm0,%xmm1
vpaddq %xmm1,%xmm12,%xmm12
vpmuludq 768(%rsp),%xmm0,%xmm0
vpaddq %xmm0,%xmm13,%xmm13
vpsrlq $26,%xmm6,%xmm0
vpaddq %xmm0,%xmm5,%xmm5
vpand m26(%rip),%xmm6,%xmm6
vpsrlq $25,%xmm10,%xmm0
vpaddq %xmm0,%xmm11,%xmm11
vpand m25(%rip),%xmm10,%xmm10
vpsrlq $25,%xmm5,%xmm0
vpaddq %xmm0,%xmm7,%xmm7
vpand m25(%rip),%xmm5,%xmm5
vpsrlq $26,%xmm11,%xmm0
vpaddq %xmm0,%xmm12,%xmm12
vpand m26(%rip),%xmm11,%xmm11
vpsrlq $26,%xmm7,%xmm0
vpaddq %xmm0,%xmm8,%xmm8
vpand m26(%rip),%xmm7,%xmm7
vpsrlq $25,%xmm12,%xmm0
vpaddq %xmm0,%xmm13,%xmm13
vpand m25(%rip),%xmm12,%xmm12
vpsrlq $25,%xmm8,%xmm0
vpaddq %xmm0,%xmm9,%xmm9
vpand m25(%rip),%xmm8,%xmm8
vpsrlq $26,%xmm13,%xmm0
vpaddq %xmm0,%xmm14,%xmm14
vpand m26(%rip),%xmm13,%xmm13
vpsrlq $26,%xmm9,%xmm0
vpaddq %xmm0,%xmm10,%xmm10
vpand m26(%rip),%xmm9,%xmm9
vpsrlq $25,%xmm14,%xmm0
vpsllq $4,%xmm0,%xmm1
vpaddq %xmm0,%xmm6,%xmm6
vpsllq $1,%xmm0,%xmm0
vpaddq %xmm0,%xmm1,%xmm1
vpaddq %xmm1,%xmm6,%xmm6
vpand m25(%rip),%xmm14,%xmm14
vpsrlq $25,%xmm10,%xmm0
vpaddq %xmm0,%xmm11,%xmm11
vpand m25(%rip),%xmm10,%xmm10
vpsrlq $26,%xmm6,%xmm0
vpaddq %xmm0,%xmm5,%xmm5
vpand m26(%rip),%xmm6,%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 ._ladder_loop
vmovdqu %xmm1,160(%rdi)
vmovdqu %xmm0,80(%rdi)
vmovdqu %xmm3,176(%rdi)
vmovdqu %xmm2,96(%rdi)
vmovdqu %xmm5,192(%rdi)
vmovdqu %xmm4,112(%rdi)
vmovdqu %xmm7,208(%rdi)
vmovdqu %xmm6,128(%rdi)
vmovdqu %xmm9,224(%rdi)
vmovdqu %xmm8,144(%rdi)
movq 1824(%rsp),%r11
movq 1832(%rsp),%r12
movq 1840(%rsp),%r13
movq 1848(%rsp),%r14
add %r11,%rsp

RET
SYM_FUNC_END(curve25519_ladder_avx2)
