// File: /workspace/github_cpp_makefile_star2_O1/tomfunkhouser[P]gaps/pkgs/jpeg/jfdctint.c
// Function: jpeg_fdct_islow
GLOBAL(void)
jpeg_fdct_islow (DCTELEM * data)
{
  INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  INT32 tmp10, tmp11, tmp12, tmp13;
  INT32 z1, z2, z3, z4, z5;
  DCTELEM *dataptr;
  int ctr;
  SHIFT_TEMPS

  /* Pass 1: process rows. */
  /* Note results are scaled up by sqrt(8) compared to a true DCT; */
  /* furthermore, we scale the results by 2**PASS1_BITS. */

  dataptr = data;
  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
    tmp0 = dataptr[0] + dataptr[7];
    tmp7 = dataptr[0] - dataptr[7];
    tmp1 = dataptr[1] + dataptr[6];
    tmp6 = dataptr[1] - dataptr[6];
    tmp2 = dataptr[2] + dataptr[5];
    tmp5 = dataptr[2] - dataptr[5];
    tmp3 = dataptr[3] + dataptr[4];
    tmp4 = dataptr[3] - dataptr[4];
    
    /* Even part per LL&M figure 1 --- note that published figure is faulty;
     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
     */
    
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    
    dataptr[0] = (DCTELEM) ((tmp10 + tmp11) << PASS1_BITS);
    dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
    
    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
    dataptr[2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
				   CONST_BITS-PASS1_BITS);
    dataptr[6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
				   CONST_BITS-PASS1_BITS);
    
    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
     * cK represents cos(K*pi/16).
     * i0..i3 in the paper are tmp4..tmp7 here.
     */
    
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
    
    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
    
    z3 += z5;
    z4 += z5;
    
    dataptr[7] = (DCTELEM) DESCALE(tmp4 + z1 + z3, CONST_BITS-PASS1_BITS);
    dataptr[5] = (DCTELEM) DESCALE(tmp5 + z2 + z4, CONST_BITS-PASS1_BITS);
    dataptr[3] = (DCTELEM) DESCALE(tmp6 + z2 + z3, CONST_BITS-PASS1_BITS);
    dataptr[1] = (DCTELEM) DESCALE(tmp7 + z1 + z4, CONST_BITS-PASS1_BITS);
    
    dataptr += DCTSIZE;		/* advance pointer to next row */
  }

  /* Pass 2: process columns.
   * We remove the PASS1_BITS scaling, but leave the results scaled up
   * by an overall factor of 8.
   */

  dataptr = data;
  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
    
    /* Even part per LL&M figure 1 --- note that published figure is faulty;
     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
     */
    
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    
    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS);
    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS);
    
    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
					   CONST_BITS+PASS1_BITS);
    
    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
     * cK represents cos(K*pi/16).
     * i0..i3 in the paper are tmp4..tmp7 here.
     */
    
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
    
    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
    
    z3 += z5;
    z4 += z5;
    
    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
					   CONST_BITS+PASS1_BITS);
    
    dataptr++;			/* advance pointer to next column */
  }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x48, %rsp
xorl %eax, %eax
movabsq $0x7ffffffc4df, %rcx    # imm = 0x7FFFFFFC4DF
movl 0x1c(%rdi,%rax), %edx
movl (%rdi,%rax), %esi
movl 0x4(%rdi,%rax), %r8d
leal (%rdx,%rsi), %r9d
movslq %r9d, %r9
subl %edx, %esi
movslq %esi, %rdx
movl 0x18(%rdi,%rax), %esi
leal (%rsi,%r8), %r10d
movslq %r10d, %r10
subl %esi, %r8d
movslq %r8d, %rsi
movl 0x8(%rdi,%rax), %r8d
movl 0x14(%rdi,%rax), %r11d
leal (%r11,%r8), %ebx
movslq %ebx, %rbx
subl %r11d, %r8d
movslq %r8d, %r8
movl 0xc(%rdi,%rax), %r11d
movl 0x10(%rdi,%rax), %r14d
leal (%r14,%r11), %ebp
movslq %ebp, %r15
subl %r14d, %r11d
movslq %r11d, %r11
leal (%r15,%r9), %r14d
subq %r15, %r9
leal (%rbx,%r10), %r15d
subq %rbx, %r10
leal (%r14,%r15), %ebx
shll $0x2, %ebx
movl %ebx, (%rdi,%rax)
subl %r15d, %r14d
shll $0x2, %r14d
movl %r14d, 0x10(%rdi,%rax)
leaq (%r9,%r10), %rbx
imulq $0x1151, %rbx, %rbx     # imm = 0x1151
imulq $0x187e, %r9, %r9       # imm = 0x187E
addq %rbx, %r9
addq $0x400, %r9             # imm = 0x400
shrq $0xb, %r9
movl %r9d, 0x8(%rdi,%rax)
imulq %rcx, %r10
leaq (%rbx,%r10), %r9
addq $0x400, %r9             # imm = 0x400
shrq $0xb, %r9
movl %r9d, 0x18(%rdi,%rax)
leaq (%r11,%rdx), %r9
leaq (%r8,%rsi), %r10
leaq (%r11,%rsi), %rbx
leaq (%r8,%rdx), %r14
leaq (%rbx,%r14), %r15
imulq $0x25a1, %r15, %r15     # imm = 0x25A1
imulq $0x98e, %r11, %r11      # imm = 0x98E
imulq $0x41b3, %r8, %r8       # imm = 0x41B3
imulq $0x6254, %rsi, %rsi     # imm = 0x6254
imulq $0x300b, %rdx, %rdx     # imm = 0x300B
imulq $-0x1ccd, %r9, %r9      # imm = 0xE333
imulq $-0x5203, %r10, %r10    # imm = 0xADFD
imulq $-0x3ec5, %rbx, %rbx    # imm = 0xC13B
imulq $-0xc7c, %r14, %r14     # imm = 0xF384
addq %r15, %rbx
addq %r15, %r14
addq %r9, %r11
addq $0x400, %r11            # imm = 0x400
addq %rbx, %r11
shrq $0xb, %r11
movl %r11d, 0x1c(%rdi,%rax)
addq %r10, %r8
addq $0x400, %r8             # imm = 0x400
addq %r14, %r8
shrq $0xb, %r8
movl %r8d, 0x14(%rdi,%rax)
addq %r10, %rsi
addq $0x400, %rsi            # imm = 0x400
addq %rbx, %rsi
shrq $0xb, %rsi
movl %esi, 0xc(%rdi,%rax)
addq %r9, %rdx
addq $0x400, %rdx            # imm = 0x400
addq %r14, %rdx
shrq $0xb, %rdx
movl %edx, 0x4(%rdi,%rax)
addq $0x20, %rax
cmpl $0x100, %eax            # imm = 0x100
jne 0x7ac9e
movq $-0x8, %rax
movdqu 0x100(%rdi,%rax,4), %xmm3
movdqu 0x20(%rdi,%rax,4), %xmm11
movdqu 0x40(%rdi,%rax,4), %xmm14
movdqu 0x60(%rdi,%rax,4), %xmm8
movdqu 0x80(%rdi,%rax,4), %xmm12
movdqa %xmm3, %xmm0
paddd %xmm11, %xmm0
pxor %xmm4, %xmm4
pcmpgtd %xmm0, %xmm4
pshufd $0xee, %xmm0, %xmm1     # xmm1 = xmm0[2,3,2,3]
punpckldq %xmm4, %xmm0    # xmm0 = xmm0[0],xmm4[0],xmm0[1],xmm4[1]
pxor %xmm4, %xmm4
pcmpgtd %xmm1, %xmm4
punpckldq %xmm4, %xmm1    # xmm1 = xmm1[0],xmm4[0],xmm1[1],xmm4[1]
psubd %xmm3, %xmm11
pshufd $0xee, %xmm11, %xmm3    # xmm3 = xmm11[2,3,2,3]
pxor %xmm2, %xmm2
pcmpgtd %xmm3, %xmm2
movdqa %xmm2, -0x30(%rsp)
punpckldq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
movdqa %xmm3, -0x70(%rsp)
movdqu 0xe0(%rdi,%rax,4), %xmm4
movdqa %xmm4, %xmm5
paddd %xmm14, %xmm5
pxor %xmm6, %xmm6
pcmpgtd %xmm5, %xmm6
pshufd $0xee, %xmm5, %xmm3     # xmm3 = xmm5[2,3,2,3]
punpckldq %xmm6, %xmm5    # xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1]
pxor %xmm6, %xmm6
pcmpgtd %xmm3, %xmm6
punpckldq %xmm6, %xmm3    # xmm3 = xmm3[0],xmm6[0],xmm3[1],xmm6[1]
psubd %xmm4, %xmm14
movdqu 0xc0(%rdi,%rax,4), %xmm7
movdqa %xmm7, %xmm4
movdqa %xmm8, %xmm2
paddd %xmm8, %xmm4
pxor %xmm8, %xmm8
pcmpgtd %xmm4, %xmm8
pshufd $0xee, %xmm4, %xmm6     # xmm6 = xmm4[2,3,2,3]
punpckldq %xmm8, %xmm4    # xmm4 = xmm4[0],xmm8[0],xmm4[1],xmm8[1]
pxor %xmm8, %xmm8
pcmpgtd %xmm6, %xmm8
punpckldq %xmm8, %xmm6    # xmm6 = xmm6[0],xmm8[0],xmm6[1],xmm8[1]
psubd %xmm7, %xmm2
movdqa %xmm2, %xmm15
movdqa %xmm2, -0x80(%rsp)
movdqu 0xa0(%rdi,%rax,4), %xmm7
movdqa %xmm7, %xmm9
paddd %xmm12, %xmm9
pxor %xmm8, %xmm8
pcmpgtd %xmm9, %xmm8
pshufd $0xee, %xmm9, %xmm10    # xmm10 = xmm9[2,3,2,3]
punpckldq %xmm8, %xmm9    # xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1]
pxor %xmm8, %xmm8
pcmpgtd %xmm10, %xmm8
punpckldq %xmm8, %xmm10   # xmm10 = xmm10[0],xmm8[0],xmm10[1],xmm8[1]
psubd %xmm7, %xmm12
movdqa %xmm10, %xmm7
paddq %xmm1, %xmm7
movdqa %xmm9, %xmm8
paddq %xmm0, %xmm8
psubq %xmm10, %xmm1
psubq %xmm9, %xmm0
movdqa %xmm6, %xmm10
paddq %xmm3, %xmm10
movdqa %xmm4, %xmm9
paddq %xmm5, %xmm9
psubq %xmm6, %xmm3
psubq %xmm4, %xmm5
movdqa %xmm9, %xmm4
paddq %xmm8, %xmm4
movdqa %xmm10, %xmm6
paddq %xmm7, %xmm6
movdqa 0x27307(%rip), %xmm2    # 0xa22a0
paddq %xmm2, %xmm6
paddq %xmm2, %xmm4
psrlq $0x2, %xmm4
psrlq $0x2, %xmm6
shufps $0x88, %xmm6, %xmm4     # xmm4 = xmm4[0,2],xmm6[0,2]
pshufd $0xee, %xmm14, %xmm13   # xmm13 = xmm14[2,3,2,3]
movups %xmm4, 0x20(%rdi,%rax,4)
xorps %xmm4, %xmm4
pcmpgtd %xmm13, %xmm4
movdqa %xmm4, -0x40(%rsp)
punpckldq %xmm4, %xmm13   # xmm13 = xmm13[0],xmm4[0],xmm13[1],xmm4[1]
movdqa %xmm13, -0x60(%rsp)
psubq %xmm9, %xmm8
pshufd $0xee, %xmm15, %xmm9    # xmm9 = xmm15[2,3,2,3]
psubq %xmm10, %xmm7
paddq %xmm2, %xmm7
paddq %xmm2, %xmm8
psrlq $0x2, %xmm8
psrlq $0x2, %xmm7
shufps $0x88, %xmm7, %xmm8     # xmm8 = xmm8[0,2],xmm7[0,2]
movups %xmm8, 0xa0(%rdi,%rax,4)
movdqa %xmm0, %xmm6
paddq %xmm5, %xmm6
movdqa %xmm1, %xmm7
paddq %xmm3, %xmm7
movdqa %xmm0, %xmm4
movdqa 0x2f6be(%rip), %xmm2    # 0xaa6e0
pmuludq %xmm2, %xmm4
psrlq $0x20, %xmm0
pmuludq %xmm2, %xmm0
psllq $0x20, %xmm0
paddq %xmm4, %xmm0
movdqa %xmm1, %xmm4
pmuludq %xmm2, %xmm4
psrlq $0x20, %xmm1
pmuludq %xmm2, %xmm1
psllq $0x20, %xmm1
paddq %xmm4, %xmm1
movdqa %xmm6, %xmm4
movdqa 0x2f672(%rip), %xmm2    # 0xaa6d0
pmuludq %xmm2, %xmm4
psrlq $0x20, %xmm6
pmuludq %xmm2, %xmm6
psllq $0x20, %xmm6
movdqa 0x2f677(%rip), %xmm8    # 0xaa6f0
paddq %xmm8, %xmm4
paddq %xmm6, %xmm4
movdqa %xmm7, %xmm6
pmuludq %xmm2, %xmm6
psrlq $0x20, %xmm7
pmuludq %xmm2, %xmm7
psllq $0x20, %xmm7
paddq %xmm8, %xmm6
paddq %xmm7, %xmm6
pxor %xmm2, %xmm2
pcmpgtd %xmm9, %xmm2
movdqa %xmm2, -0x50(%rsp)
punpckldq %xmm2, %xmm9    # xmm9 = xmm9[0],xmm2[0],xmm9[1],xmm2[1]
movdqa %xmm9, %xmm8
movdqa %xmm9, -0x10(%rsp)
paddq %xmm6, %xmm1
paddq %xmm4, %xmm0
psrlq $0xf, %xmm0
psrlq $0xf, %xmm1
shufps $0x88, %xmm1, %xmm0     # xmm0 = xmm0[0,2],xmm1[0,2]
movups %xmm0, 0x60(%rdi,%rax,4)
movdqa %xmm5, %xmm0
movdqa 0x2f618(%rip), %xmm2    # 0xaa700
pmuludq %xmm2, %xmm0
movdqa %xmm5, %xmm1
psrlq $0x20, %xmm1
movdqa 0x2f613(%rip), %xmm7    # 0xaa710
pmuludq %xmm7, %xmm1
paddq %xmm0, %xmm1
psllq $0x20, %xmm1
pmuludq %xmm7, %xmm5
paddq %xmm1, %xmm5
movdqa %xmm3, %xmm0
pmuludq %xmm2, %xmm0
movdqa %xmm3, %xmm1
psrlq $0x20, %xmm1
pmuludq %xmm7, %xmm1
paddq %xmm0, %xmm1
pshufd $0xee, %xmm12, %xmm0    # xmm0 = xmm12[2,3,2,3]
psllq $0x20, %xmm1
pmuludq %xmm7, %xmm3
paddq %xmm1, %xmm3
pxor %xmm9, %xmm9
pcmpgtd %xmm0, %xmm9
punpckldq %xmm9, %xmm0    # xmm0 = xmm0[0],xmm9[0],xmm0[1],xmm9[1]
paddq %xmm6, %xmm3
paddq %xmm4, %xmm5
psrlq $0xf, %xmm5
psrlq $0xf, %xmm3
shufps $0x88, %xmm3, %xmm5     # xmm5 = xmm5[0,2],xmm3[0,2]
movups %xmm5, 0xe0(%rdi,%rax,4)
movdqa %xmm0, %xmm1
paddq %xmm13, %xmm1
movdqa %xmm1, -0x20(%rsp)
movdqa %xmm8, %xmm2
paddq -0x70(%rsp), %xmm2
movdqa %xmm2, 0x10(%rsp)
paddq %xmm2, %xmm1
movdqa %xmm1, %xmm3
movdqa 0x2f585(%rip), %xmm2    # 0xaa720
pmuludq %xmm2, %xmm3
psrlq $0x20, %xmm1
pmuludq %xmm2, %xmm1
psllq $0x20, %xmm1
paddq %xmm3, %xmm1
movdqa %xmm1, 0x30(%rsp)
pxor %xmm15, %xmm15
movdqa %xmm11, %xmm13
pcmpgtd %xmm11, %xmm15
punpckldq %xmm15, %xmm13  # xmm13 = xmm13[0],xmm15[0],xmm13[1],xmm15[1]
pxor %xmm10, %xmm10
pcmpgtd %xmm14, %xmm10
punpckldq %xmm10, %xmm14  # xmm14 = xmm14[0],xmm10[0],xmm14[1],xmm10[1]
movdqa %xmm14, %xmm3
pxor %xmm7, %xmm7
movdqa -0x80(%rsp), %xmm1
pcmpgtd %xmm1, %xmm7
punpckldq %xmm7, %xmm1    # xmm1 = xmm1[0],xmm7[0],xmm1[1],xmm7[1]
pxor %xmm8, %xmm8
pcmpgtd %xmm12, %xmm8
punpckldq %xmm8, %xmm12   # xmm12 = xmm12[0],xmm8[0],xmm12[1],xmm8[1]
movdqa %xmm12, %xmm5
paddq %xmm14, %xmm5
movdqa %xmm5, -0x80(%rsp)
movdqa %xmm1, %xmm4
paddq %xmm13, %xmm4
movdqa %xmm4, (%rsp)
movdqa %xmm5, %xmm14
paddq %xmm4, %xmm14
movdqa %xmm14, %xmm5
pmuludq %xmm2, %xmm5
psrlq $0x20, %xmm14
pmuludq %xmm2, %xmm14
psllq $0x20, %xmm14
paddq %xmm5, %xmm14
movdqa %xmm0, %xmm11
movdqa 0x2f4dc(%rip), %xmm2    # 0xaa730
pmuludq %xmm2, %xmm0
pshufd $0xd4, %xmm9, %xmm4     # xmm4 = xmm9[0,1,1,3]
pmuludq %xmm2, %xmm4
psllq $0x20, %xmm4
paddq %xmm0, %xmm4
movdqa %xmm4, 0x20(%rsp)
movdqa %xmm12, %xmm5
pmuludq %xmm2, %xmm12
pshufd $0xd4, %xmm8, %xmm6     # xmm6 = xmm8[0,1,1,3]
pmuludq %xmm2, %xmm6
psllq $0x20, %xmm6
paddq %xmm12, %xmm6
movdqa -0x10(%rsp), %xmm2
movdqa %xmm2, %xmm4
movdqa 0x2f49f(%rip), %xmm0    # 0xaa740
pmuludq %xmm0, %xmm2
movdqa %xmm2, %xmm8
pshufd $0xd4, -0x50(%rsp), %xmm2 # xmm2 = mem[0,1,1,3]
pmuludq %xmm0, %xmm2
psllq $0x20, %xmm2
paddq %xmm8, %xmm2
movdqa %xmm2, -0x50(%rsp)
movdqa %xmm1, %xmm9
pmuludq %xmm0, %xmm1
pshufd $0xd4, %xmm7, %xmm8     # xmm8 = xmm7[0,1,1,3]
pmuludq %xmm0, %xmm8
psllq $0x20, %xmm8
paddq %xmm1, %xmm8
movdqa -0x60(%rsp), %xmm1
paddq %xmm1, %xmm4
movdqa 0x2f45a(%rip), %xmm0    # 0xaa750
pmuludq %xmm0, %xmm1
pshufd $0xd4, -0x40(%rsp), %xmm2 # xmm2 = mem[0,1,1,3]
pmuludq %xmm0, %xmm2
psllq $0x20, %xmm2
paddq %xmm1, %xmm2
movdqa %xmm2, -0x40(%rsp)
paddq %xmm3, %xmm9
pmuludq %xmm0, %xmm3
pshufd $0xd4, %xmm10, %xmm1    # xmm1 = xmm10[0,1,1,3]
pmuludq %xmm0, %xmm1
psllq $0x20, %xmm1
paddq %xmm3, %xmm1
movdqa %xmm1, -0x60(%rsp)
movdqa -0x70(%rsp), %xmm1
paddq %xmm1, %xmm11
movdqa 0x2f417(%rip), %xmm0    # 0xaa760
pmuludq %xmm0, %xmm1
pshufd $0xd4, -0x30(%rsp), %xmm2 # xmm2 = mem[0,1,1,3]
pmuludq %xmm0, %xmm2
psllq $0x20, %xmm2
paddq %xmm1, %xmm2
movdqa %xmm2, -0x70(%rsp)
paddq %xmm13, %xmm5
pmuludq %xmm0, %xmm13
pshufd $0xd4, %xmm15, %xmm1    # xmm1 = xmm15[0,1,1,3]
pmuludq %xmm0, %xmm1
psllq $0x20, %xmm1
paddq %xmm13, %xmm1
movdqa %xmm1, -0x30(%rsp)
movdqa %xmm5, %xmm3
movdqa 0x2f3d9(%rip), %xmm0    # 0xaa770
pmuludq %xmm0, %xmm3
movdqa %xmm0, %xmm1
movdqa %xmm5, %xmm12
psrlq $0x20, %xmm12
movdqa 0x2f3ce(%rip), %xmm0    # 0xaa780
pmuludq %xmm0, %xmm12
paddq %xmm3, %xmm12
movdqa %xmm11, %xmm3
pmuludq %xmm1, %xmm3
movdqa %xmm11, %xmm10
psrlq $0x20, %xmm10
pmuludq %xmm0, %xmm10
paddq %xmm3, %xmm10
movdqa %xmm9, %xmm13
movdqa %xmm1, %xmm2
pmuludq %xmm1, %xmm13
movdqa %xmm9, %xmm7
psrlq $0x20, %xmm7
movdqa 0x2f396(%rip), %xmm0    # 0xaa790
pmuludq %xmm0, %xmm7
movdqa %xmm0, %xmm1
paddq %xmm13, %xmm7
movdqa %xmm4, %xmm0
pmuludq %xmm2, %xmm0
movdqa %xmm2, %xmm3
movdqa %xmm4, %xmm13
psrlq $0x20, %xmm13
pmuludq %xmm1, %xmm13
paddq %xmm0, %xmm13
movdqa -0x20(%rsp), %xmm2
movdqa %xmm2, %xmm1
pmuludq %xmm3, %xmm1
movdqa %xmm2, %xmm0
psrlq $0x20, %xmm0
movdqa 0x2f358(%rip), %xmm15   # 0xaa7a0
pmuludq %xmm15, %xmm0
paddq %xmm1, %xmm0
psllq $0x20, %xmm0
pmuludq %xmm15, %xmm2
paddq %xmm0, %xmm2
movdqa %xmm2, -0x20(%rsp)
movdqa -0x80(%rsp), %xmm2
movdqa %xmm2, %xmm0
pmuludq %xmm3, %xmm0
movdqa %xmm2, %xmm1
psrlq $0x20, %xmm1
pmuludq %xmm15, %xmm1
paddq %xmm0, %xmm1
psllq $0x20, %xmm1
pmuludq %xmm15, %xmm2
paddq %xmm1, %xmm2
movdqa %xmm2, -0x80(%rsp)
movdqa 0x10(%rsp), %xmm15
movdqa %xmm15, %xmm0
pmuludq %xmm3, %xmm0
movdqa %xmm15, %xmm1
movdqa %xmm15, %xmm3
psrlq $0x20, %xmm1
movdqa 0x2f2ef(%rip), %xmm15   # 0xaa7b0
pmuludq %xmm15, %xmm1
paddq %xmm0, %xmm1
psllq $0x20, %xmm1
pmuludq %xmm15, %xmm3
paddq %xmm1, %xmm3
movdqa (%rsp), %xmm0
movdqa %xmm0, %xmm2
pmuludq 0x2f287(%rip), %xmm2    # 0xaa770
movdqa %xmm0, %xmm1
psrlq $0x20, %xmm1
pmuludq %xmm15, %xmm1
paddq %xmm2, %xmm1
psllq $0x20, %xmm1
pmuludq %xmm15, %xmm0
paddq %xmm1, %xmm0
movdqa -0x80(%rsp), %xmm15
paddq %xmm14, %xmm15
paddq %xmm14, %xmm0
movdqa %xmm0, %xmm1
movdqa 0x30(%rsp), %xmm0
movdqa -0x20(%rsp), %xmm14
paddq %xmm0, %xmm14
paddq %xmm0, %xmm3
psllq $0x20, %xmm10
movdqa 0x2f23e(%rip), %xmm2    # 0xaa780
pmuludq %xmm2, %xmm11
movdqa 0x2f1a1(%rip), %xmm0    # 0xaa6f0
paddq %xmm0, %xmm11
paddq %xmm10, %xmm11
psllq $0x20, %xmm12
pmuludq %xmm2, %xmm5
paddq %xmm0, %xmm5
paddq %xmm12, %xmm5
paddq %xmm5, %xmm6
movdqa 0x20(%rsp), %xmm2
paddq %xmm11, %xmm2
paddq %xmm14, %xmm2
paddq %xmm15, %xmm6
psrlq $0xf, %xmm6
psrlq $0xf, %xmm2
shufps $0x88, %xmm2, %xmm6     # xmm6 = xmm6[0,2],xmm2[0,2]
movups %xmm6, 0x100(%rdi,%rax,4)
psllq $0x20, %xmm13
movdqa 0x2f1e7(%rip), %xmm2    # 0xaa790
pmuludq %xmm2, %xmm4
paddq %xmm0, %xmm4
paddq %xmm13, %xmm4
psllq $0x20, %xmm7
pmuludq %xmm2, %xmm9
paddq %xmm0, %xmm9
paddq %xmm7, %xmm9
paddq %xmm9, %xmm8
movdqa -0x50(%rsp), %xmm0
paddq %xmm4, %xmm0
paddq %xmm3, %xmm0
paddq %xmm1, %xmm8
psrlq $0xf, %xmm8
psrlq $0xf, %xmm0
shufps $0x88, %xmm0, %xmm8     # xmm8 = xmm8[0,2],xmm0[0,2]
movups %xmm8, 0xc0(%rdi,%rax,4)
paddq -0x60(%rsp), %xmm9
paddq -0x40(%rsp), %xmm4
paddq %xmm14, %xmm4
paddq %xmm15, %xmm9
psrlq $0xf, %xmm9
psrlq $0xf, %xmm4
shufps $0x88, %xmm4, %xmm9     # xmm9 = xmm9[0,2],xmm4[0,2]
movups %xmm9, 0x80(%rdi,%rax,4)
paddq -0x30(%rsp), %xmm5
paddq -0x70(%rsp), %xmm11
paddq %xmm3, %xmm11
paddq %xmm1, %xmm5
psrlq $0xf, %xmm5
psrlq $0xf, %xmm11
shufps $0x88, %xmm11, %xmm5    # xmm5 = xmm5[0,2],xmm11[0,2]
movups %xmm5, 0x40(%rdi,%rax,4)
addq $0x4, %rax
jne 0x7ae1b
addq $0x48, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop