void enc_fdct_int32(short *const block) {
  int tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  int tmp10, tmp11, tmp12, tmp13;
  int z1, z2, z3, z4, z5;
  short *blkptr;
  int *dataptr;
  int data[64];
  int i;
  dataptr = data;
  blkptr = block;
  for (i = 0; i < 8; i++) {
    tmp0 = blkptr[0] + blkptr[7];
    tmp7 = blkptr[0] - blkptr[7];
    tmp1 = blkptr[1] + blkptr[6];
    tmp6 = blkptr[1] - blkptr[6];
    tmp2 = blkptr[2] + blkptr[5];
    tmp5 = blkptr[2] - blkptr[5];
    tmp3 = blkptr[3] + blkptr[4];
    tmp4 = blkptr[3] - blkptr[4];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[0] = (tmp10 + tmp11) << 2;
    dataptr[4] = (tmp10 - tmp11) << 2;
    z1 = (tmp12 + tmp13) * ((int)4433);
    dataptr[2] = (((z1 + tmp13 * ((int)6270)) + (((int)1) << ((13 - 2) - 1))) >>
                  (13 - 2));
    dataptr[6] =
        (((z1 + tmp12 * (-((int)15137))) + (((int)1) << ((13 - 2) - 1))) >>
         (13 - 2));
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = (z3 + z4) * ((int)9633);
    tmp4 *= ((int)2446);
    tmp5 *= ((int)16819);
    tmp6 *= ((int)25172);
    tmp7 *= ((int)12299);
    z1 *= -((int)7373);
    z2 *= -((int)20995);
    z3 *= -((int)16069);
    z4 *= -((int)3196);
    z3 += z5;
    z4 += z5;
    dataptr[7] =
        (((tmp4 + z1 + z3) + (((int)1) << ((13 - 2) - 1))) >> (13 - 2));
    dataptr[5] =
        (((tmp5 + z2 + z4) + (((int)1) << ((13 - 2) - 1))) >> (13 - 2));
    dataptr[3] =
        (((tmp6 + z2 + z3) + (((int)1) << ((13 - 2) - 1))) >> (13 - 2));
    dataptr[1] =
        (((tmp7 + z1 + z4) + (((int)1) << ((13 - 2) - 1))) >> (13 - 2));
    dataptr += 8;
    blkptr += 8;
  }
  dataptr = data;
  for (i = 0; i < 8; i++) {
    tmp0 = dataptr[0] + dataptr[56];
    tmp7 = dataptr[0] - dataptr[56];
    tmp1 = dataptr[8] + dataptr[48];
    tmp6 = dataptr[8] - dataptr[48];
    tmp2 = dataptr[16] + dataptr[40];
    tmp5 = dataptr[16] - dataptr[40];
    tmp3 = dataptr[24] + dataptr[32];
    tmp4 = dataptr[24] - dataptr[32];
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    dataptr[0] = (((tmp10 + tmp11) + (((int)1) << ((2) - 1))) >> (2));
    dataptr[32] = (((tmp10 - tmp11) + (((int)1) << ((2) - 1))) >> (2));
    z1 = (tmp12 + tmp13) * ((int)4433);
    dataptr[16] =
        (((z1 + tmp13 * ((int)6270)) + (((int)1) << ((13 + 2) - 1))) >>
         (13 + 2));
    dataptr[48] =
        (((z1 + tmp12 * (-((int)15137))) + (((int)1) << ((13 + 2) - 1))) >>
         (13 + 2));
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = (z3 + z4) * ((int)9633);
    tmp4 *= ((int)2446);
    tmp5 *= ((int)16819);
    tmp6 *= ((int)25172);
    tmp7 *= ((int)12299);
    z1 *= -((int)7373);
    z2 *= -((int)20995);
    z3 *= -((int)16069);
    z4 *= -((int)3196);
    z3 += z5;
    z4 += z5;
    dataptr[56] =
        (((tmp4 + z1 + z3) + (((int)1) << ((13 + 2) - 1))) >> (13 + 2));
    dataptr[40] =
        (((tmp5 + z2 + z4) + (((int)1) << ((13 + 2) - 1))) >> (13 + 2));
    dataptr[24] =
        (((tmp6 + z2 + z3) + (((int)1) << ((13 + 2) - 1))) >> (13 + 2));
    dataptr[8] =
        (((tmp7 + z1 + z4) + (((int)1) << ((13 + 2) - 1))) >> (13 + 2));
    dataptr++;
  }
  for (i = 0; i < 64; i++)
    block[i] = (short int)(((data[i]) + (((int)1) << ((3) - 1))) >> (3));
}


x86 assembly (clang, -O0):
<enc_fdct_int32>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x8(%rbp)
lea    -0x160(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x58(%rbp)
movl   $0x0,-0x164(%rbp)
cmpl   $0x8,-0x164(%rbp)
jge    138e <enc_fdct_int32+0x28e>
mov    -0x58(%rbp),%rax
movswl (%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xe(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0xc(%rbp)
mov    -0x58(%rbp),%rax
movswl (%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xe(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x2(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xc(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x10(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x2(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xc(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x4(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xa(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x14(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x4(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0xa(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x20(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x6(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0x8(%rcx),%ecx
add    %ecx,%eax
mov    %eax,-0x18(%rbp)
mov    -0x58(%rbp),%rax
movswl 0x6(%rax),%eax
mov    -0x58(%rbp),%rcx
movswl 0x8(%rcx),%ecx
sub    %ecx,%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x2c(%rbp),%ecx
sub    -0x30(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
imul   $0x1151,%eax,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%ecx
imul   $0x187e,-0x38(%rbp),%eax
add    %eax,%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x3c(%rbp),%ecx
imul   $0xffffc4df,-0x34(%rbp),%eax
add    %eax,%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x1c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x20(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x20(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
add    -0x48(%rbp),%eax
imul   $0x25a1,%eax,%eax
mov    %eax,-0x4c(%rbp)
imul   $0x98e,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0x41b3,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0x6254,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0x300b,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
imul   $0xffffe333,-0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
imul   $0xffffadfd,-0x40(%rbp),%eax
mov    %eax,-0x40(%rbp)
imul   $0xffffc13b,-0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
imul   $0xfffff384,-0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x1c(%rbp),%ecx
add    -0x3c(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x20(%rbp),%ecx
add    -0x40(%rbp),%ecx
add    -0x48(%rbp),%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x24(%rbp),%ecx
add    -0x40(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x28(%rbp),%ecx
add    -0x3c(%rbp),%ecx
add    -0x48(%rbp),%ecx
add    $0x400,%ecx
sar    $0xb,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x164(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x164(%rbp)
jmp    112c <enc_fdct_int32+0x2c>
lea    -0x160(%rbp),%rax
mov    %rax,-0x60(%rbp)
movl   $0x0,-0x164(%rbp)
cmpl   $0x8,-0x164(%rbp)
jge    1603 <enc_fdct_int32+0x503>
mov    -0x60(%rbp),%rax
mov    (%rax),%eax
mov    -0x60(%rbp),%rcx
add    0xe0(%rcx),%eax
mov    %eax,-0xc(%rbp)
mov    -0x60(%rbp),%rax
mov    (%rax),%eax
mov    -0x60(%rbp),%rcx
sub    0xe0(%rcx),%eax
mov    %eax,-0x28(%rbp)
mov    -0x60(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x60(%rbp),%rcx
add    0xc0(%rcx),%eax
mov    %eax,-0x10(%rbp)
mov    -0x60(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x60(%rbp),%rcx
sub    0xc0(%rcx),%eax
mov    %eax,-0x24(%rbp)
mov    -0x60(%rbp),%rax
mov    0x40(%rax),%eax
mov    -0x60(%rbp),%rcx
add    0xa0(%rcx),%eax
mov    %eax,-0x14(%rbp)
mov    -0x60(%rbp),%rax
mov    0x40(%rax),%eax
mov    -0x60(%rbp),%rcx
sub    0xa0(%rcx),%eax
mov    %eax,-0x20(%rbp)
mov    -0x60(%rbp),%rax
mov    0x60(%rax),%eax
mov    -0x60(%rbp),%rcx
add    0x80(%rcx),%eax
mov    %eax,-0x18(%rbp)
mov    -0x60(%rbp),%rax
mov    0x60(%rax),%eax
mov    -0x60(%rbp),%rcx
sub    0x80(%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x18(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x10(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
add    $0x2,%ecx
sar    $0x2,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x2c(%rbp),%ecx
sub    -0x30(%rbp),%ecx
add    $0x2,%ecx
sar    $0x2,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x80(%rax)
mov    -0x34(%rbp),%eax
add    -0x38(%rbp),%eax
imul   $0x1151,%eax,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x3c(%rbp),%ecx
imul   $0x187e,-0x38(%rbp),%eax
add    %eax,%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x40(%rax)
mov    -0x3c(%rbp),%ecx
imul   $0xffffc4df,-0x34(%rbp),%eax
add    %eax,%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0xc0(%rax)
mov    -0x1c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x20(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x20(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
add    -0x48(%rbp),%eax
imul   $0x25a1,%eax,%eax
mov    %eax,-0x4c(%rbp)
imul   $0x98e,-0x1c(%rbp),%eax
mov    %eax,-0x1c(%rbp)
imul   $0x41b3,-0x20(%rbp),%eax
mov    %eax,-0x20(%rbp)
imul   $0x6254,-0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
imul   $0x300b,-0x28(%rbp),%eax
mov    %eax,-0x28(%rbp)
imul   $0xffffe333,-0x3c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
imul   $0xffffadfd,-0x40(%rbp),%eax
mov    %eax,-0x40(%rbp)
imul   $0xffffc13b,-0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
imul   $0xfffff384,-0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x1c(%rbp),%ecx
add    -0x3c(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0xe0(%rax)
mov    -0x20(%rbp),%ecx
add    -0x40(%rbp),%ecx
add    -0x48(%rbp),%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0xa0(%rax)
mov    -0x24(%rbp),%ecx
add    -0x40(%rbp),%ecx
add    -0x44(%rbp),%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x60(%rax)
mov    -0x28(%rbp),%ecx
add    -0x3c(%rbp),%ecx
add    -0x48(%rbp),%ecx
add    $0x4000,%ecx
sar    $0xf,%ecx
mov    -0x60(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x60(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x60(%rbp)
mov    -0x164(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x164(%rbp)
jmp    13a3 <enc_fdct_int32+0x2a3>
movl   $0x0,-0x164(%rbp)
cmpl   $0x40,-0x164(%rbp)
jge    1654 <enc_fdct_int32+0x554>
movslq -0x164(%rbp),%rax
mov    -0x160(%rbp,%rax,4),%eax
add    $0x4,%eax
sar    $0x3,%eax
mov    %ax,%dx
mov    -0x8(%rbp),%rax
movslq -0x164(%rbp),%rcx
mov    %dx,(%rax,%rcx,2)
mov    -0x164(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x164(%rbp)
jmp    160d <enc_fdct_int32+0x50d>
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<enc_fdct_int32>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x88,%rsp
xor    %eax,%eax
nop
movswl (%rdi,%rax,1),%r8d
movswl 0xe(%rdi,%rax,1),%ecx
lea    (%rcx,%r8,1),%r15d
sub    %ecx,%r8d
movswl 0x2(%rdi,%rax,1),%r9d
movswl 0xc(%rdi,%rax,1),%ecx
lea    (%rcx,%r9,1),%r14d
sub    %ecx,%r9d
movswl 0x4(%rdi,%rax,1),%r10d
movswl 0xa(%rdi,%rax,1),%ecx
lea    (%rcx,%r10,1),%r11d
sub    %ecx,%r10d
movswl 0x6(%rdi,%rax,1),%ecx
movswl 0x8(%rdi,%rax,1),%ebx
lea    (%rbx,%rcx,1),%edx
sub    %ebx,%ecx
lea    (%rdx,%r15,1),%ebx
sub    %edx,%r15d
lea    (%r11,%r14,1),%edx
sub    %r11d,%r14d
lea    (%rbx,%rdx,1),%esi
shl    $0x2,%esi
mov    %esi,-0x80(%rsp,%rax,2)
sub    %edx,%ebx
shl    $0x2,%ebx
mov    %ebx,-0x70(%rsp,%rax,2)
lea    (%r15,%r14,1),%edx
imul   $0x1151,%edx,%edx
imul   $0x187e,%r15d,%esi
add    %edx,%esi
add    $0x400,%esi
sar    $0xb,%esi
mov    %esi,-0x78(%rsp,%rax,2)
imul   $0xffffc4df,%r14d,%esi
add    %esi,%edx
add    $0x400,%edx
sar    $0xb,%edx
mov    %edx,-0x68(%rsp,%rax,2)
lea    (%rcx,%r8,1),%edx
lea    (%r10,%r9,1),%r11d
lea    (%rcx,%r9,1),%ebx
lea    (%r10,%r8,1),%esi
lea    (%rbx,%rsi,1),%ebp
imul   $0x25a1,%ebp,%ebp
imul   $0x98e,%ecx,%r14d
imul   $0x41b3,%r10d,%r10d
imul   $0x6254,%r9d,%r9d
imul   $0x300b,%r8d,%r8d
imul   $0xffffe333,%edx,%edx
imul   $0xffffadfd,%r11d,%ecx
imul   $0xffffc13b,%ebx,%ebx
imul   $0xfffff384,%esi,%esi
add    %ebp,%ebx
add    %ebp,%esi
lea    (%rdx,%r14,1),%ebp
add    $0x400,%ebp
add    %ebx,%ebp
sar    $0xb,%ebp
mov    %ebp,-0x64(%rsp,%rax,2)
lea    (%rcx,%r10,1),%ebp
add    $0x400,%ebp
add    %esi,%ebp
sar    $0xb,%ebp
mov    %ebp,-0x6c(%rsp,%rax,2)
add    %r9d,%ecx
add    $0x400,%ecx
add    %ebx,%ecx
sar    $0xb,%ecx
mov    %ecx,-0x74(%rsp,%rax,2)
lea    (%rdx,%r8,1),%ecx
add    $0x400,%ecx
add    %esi,%ecx
sar    $0xb,%ecx
mov    %ecx,-0x7c(%rsp,%rax,2)
add    $0x10,%rax
cmp    $0x80,%eax
jne    1110 <enc_fdct_int32+0x10>
movdqa 0x60(%rsp),%xmm0
movdqa -0x80(%rsp),%xmm12
movdqa -0x70(%rsp),%xmm13
movdqa -0x60(%rsp),%xmm9
movdqa -0x50(%rsp),%xmm11
movdqa %xmm0,%xmm2
paddd  %xmm12,%xmm2
psubd  %xmm0,%xmm12
movdqa 0x40(%rsp),%xmm0
movdqa %xmm0,%xmm1
paddd  %xmm9,%xmm1
psubd  %xmm0,%xmm9
movdqa -0x40(%rsp),%xmm3
movdqa 0x20(%rsp),%xmm0
movdqa %xmm0,%xmm4
paddd  %xmm3,%xmm4
psubd  %xmm0,%xmm3
movdqa -0x20(%rsp),%xmm0
movdqa (%rsp),%xmm5
movdqa %xmm5,%xmm6
paddd  %xmm0,%xmm6
psubd  %xmm5,%xmm0
movdqa %xmm6,%xmm5
paddd  %xmm2,%xmm5
psubd  %xmm6,%xmm2
movdqa %xmm4,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm4,%xmm1
movdqa %xmm6,%xmm4
paddd  %xmm5,%xmm4
movdqa 0xd0e(%rip),%xmm7
paddd  %xmm7,%xmm4
psrad  $0x2,%xmm4
movdqa %xmm4,-0x80(%rsp)
psubd  %xmm6,%xmm5
paddd  %xmm7,%xmm5
psrad  $0x2,%xmm5
movdqa %xmm5,(%rsp)
movdqa %xmm2,%xmm4
paddd  %xmm1,%xmm4
movdqa 0xced(%rip),%xmm6
pshufd $0xf5,%xmm4,%xmm5
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm6,%xmm5
pshufd $0xe8,%xmm5,%xmm5
punpckldq %xmm5,%xmm4
movdqa 0xcda(%rip),%xmm6
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm6,%xmm2
pshufd $0xe8,%xmm2,%xmm2
pmuludq %xmm6,%xmm5
pshufd $0xe8,%xmm5,%xmm5
punpckldq %xmm5,%xmm2
paddd  0xcc7(%rip),%xmm4
paddd  %xmm4,%xmm2
psrad  $0xf,%xmm2
movdqa %xmm2,-0x40(%rsp)
movdqa 0xcc0(%rip),%xmm5
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm5,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm5,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
paddd  %xmm4,%xmm1
psrad  $0xf,%xmm1
movdqa %xmm1,0x40(%rsp)
movdqa %xmm0,%xmm8
paddd  %xmm9,%xmm8
movdqa %xmm3,%xmm5
paddd  %xmm12,%xmm5
movdqa %xmm8,%xmm1
paddd  %xmm5,%xmm1
movdqa 0xc82(%rip),%xmm4
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm4,%xmm1
pshufd $0xe8,%xmm1,%xmm7
pmuludq %xmm4,%xmm2
pshufd $0xe8,%xmm2,%xmm1
punpckldq %xmm1,%xmm7
movdqa %xmm0,%xmm1
movdqa 0xc6b(%rip),%xmm4
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm4,%xmm0
pshufd $0xe8,%xmm0,%xmm6
pmuludq %xmm4,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm6
movdqa %xmm3,%xmm0
movdqa 0xc53(%rip),%xmm10
pshufd $0xf5,%xmm3,%xmm2
pmuludq %xmm10,%xmm3
pshufd $0xe8,%xmm3,%xmm4
pmuludq %xmm10,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm4
paddd  %xmm9,%xmm0
movdqa 0xc39(%rip),%xmm3
pshufd $0xf5,%xmm9,%xmm2
pmuludq %xmm3,%xmm9
pshufd $0xe8,%xmm9,%xmm10
pmuludq %xmm3,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm10
paddd  %xmm12,%xmm1
movdqa 0xc1d(%rip),%xmm3
pshufd $0xf5,%xmm12,%xmm2
pmuludq %xmm3,%xmm12
pshufd $0xe8,%xmm12,%xmm9
pmuludq %xmm3,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm9
movdqa 0xc06(%rip),%xmm3
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm3,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm1
movdqa 0xbf2(%rip),%xmm15
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm15,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm15,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm0
movdqa 0xbdc(%rip),%xmm14
pshufd $0xf5,%xmm8,%xmm2
pmuludq %xmm14,%xmm8
pshufd $0xe8,%xmm8,%xmm3
pmuludq %xmm14,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm3
movdqa 0xbc4(%rip),%xmm12
pshufd $0xf5,%xmm5,%xmm2
pmuludq %xmm12,%xmm5
pshufd $0xe8,%xmm5,%xmm5
pmuludq %xmm12,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm5
paddd  %xmm7,%xmm3
paddd  %xmm7,%xmm5
movdqa 0xaf6(%rip),%xmm8
paddd  %xmm8,%xmm1
paddd  %xmm1,%xmm6
paddd  %xmm3,%xmm6
psrad  $0xf,%xmm6
movdqa %xmm6,0x60(%rsp)
paddd  %xmm8,%xmm0
paddd  %xmm0,%xmm4
paddd  %xmm5,%xmm4
psrad  $0xf,%xmm4
movdqa %xmm4,0x20(%rsp)
paddd  %xmm10,%xmm0
paddd  %xmm3,%xmm0
psrad  $0xf,%xmm0
movdqa %xmm0,-0x20(%rsp)
paddd  %xmm9,%xmm1
paddd  %xmm5,%xmm1
psrad  $0xf,%xmm1
movdqa %xmm1,-0x60(%rsp)
movdqa 0x70(%rsp),%xmm0
movdqa %xmm0,%xmm4
paddd  %xmm13,%xmm4
psubd  %xmm0,%xmm13
movdqa 0x50(%rsp),%xmm0
movdqa %xmm0,%xmm2
paddd  %xmm11,%xmm2
psubd  %xmm0,%xmm11
movdqa -0x30(%rsp),%xmm6
movdqa 0x30(%rsp),%xmm0
movdqa %xmm0,%xmm1
paddd  %xmm6,%xmm1
psubd  %xmm0,%xmm6
movdqa -0x10(%rsp),%xmm0
movdqa 0x10(%rsp),%xmm3
movdqa %xmm3,%xmm5
paddd  %xmm0,%xmm5
psubd  %xmm3,%xmm0
movdqa %xmm5,%xmm3
paddd  %xmm4,%xmm3
psubd  %xmm5,%xmm4
movdqa %xmm1,%xmm5
paddd  %xmm2,%xmm5
psubd  %xmm1,%xmm2
movdqa %xmm5,%xmm1
paddd  %xmm3,%xmm1
movdqa 0x9ee(%rip),%xmm7
paddd  %xmm7,%xmm1
psrad  $0x2,%xmm1
movdqa %xmm1,-0x70(%rsp)
psubd  %xmm5,%xmm3
paddd  %xmm7,%xmm3
psrad  $0x2,%xmm3
movdqa %xmm3,0x10(%rsp)
movdqa %xmm4,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm3
movdqa 0x9c7(%rip),%xmm5
pmuludq %xmm5,%xmm1
pmuludq %xmm5,%xmm3
pshufd $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm1
pshufd $0xf5,%xmm4,%xmm3
movdqa 0x9b4(%rip),%xmm5
pmuludq %xmm5,%xmm4
pmuludq %xmm5,%xmm3
pshufd $0xe8,%xmm4,%xmm4
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm4
paddd  %xmm8,%xmm1
paddd  %xmm1,%xmm4
psrad  $0xf,%xmm4
movdqa %xmm4,-0x30(%rsp)
pshufd $0xf5,%xmm2,%xmm3
movdqa 0x99d(%rip),%xmm4
pmuludq %xmm4,%xmm2
pmuludq %xmm4,%xmm3
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm3,%xmm3
punpckldq %xmm3,%xmm2
paddd  %xmm1,%xmm2
psrad  $0xf,%xmm2
movdqa %xmm2,0x50(%rsp)
movdqa %xmm0,%xmm5
paddd  %xmm11,%xmm5
movdqa %xmm6,%xmm2
paddd  %xmm13,%xmm2
movdqa %xmm5,%xmm1
paddd  %xmm2,%xmm1
pshufd $0xf5,%xmm1,%xmm3
movdqa 0x961(%rip),%xmm4
pmuludq %xmm4,%xmm1
pmuludq %xmm4,%xmm3
pshufd $0xe8,%xmm1,%xmm9
pshufd $0xe8,%xmm3,%xmm1
punpckldq %xmm1,%xmm9
movdqa %xmm0,%xmm3
pshufd $0xf5,%xmm0,%xmm1
movdqa 0x948(%rip),%xmm4
pmuludq %xmm4,%xmm0
pmuludq %xmm4,%xmm1
pshufd $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
movdqa %xmm6,%xmm1
pshufd $0xf5,%xmm6,%xmm4
movdqa 0x931(%rip),%xmm7
pmuludq %xmm7,%xmm6
pmuludq %xmm7,%xmm4
pshufd $0xe8,%xmm6,%xmm7
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm7
paddd  %xmm11,%xmm1
pshufd $0xf5,%xmm11,%xmm4
movdqa 0x918(%rip),%xmm6
pmuludq %xmm6,%xmm11
pmuludq %xmm6,%xmm4
paddd  %xmm13,%xmm3
pshufd $0xe8,%xmm11,%xmm10
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm10
pshufd $0xf5,%xmm13,%xmm4
movdqa 0x8fc(%rip),%xmm6
pmuludq %xmm6,%xmm13
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm13,%xmm11
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm11
pshufd $0xf5,%xmm3,%xmm4
movdqa 0x8e6(%rip),%xmm6
pmuludq %xmm6,%xmm3
pmuludq %xmm6,%xmm4
pshufd $0xe8,%xmm3,%xmm6
pshufd $0xe8,%xmm4,%xmm3
punpckldq %xmm3,%xmm6
pshufd $0xf5,%xmm1,%xmm4
pmuludq %xmm15,%xmm1
pmuludq %xmm15,%xmm4
pshufd $0xe8,%xmm1,%xmm3
pshufd $0xe8,%xmm4,%xmm1
punpckldq %xmm1,%xmm3
pshufd $0xf5,%xmm5,%xmm4
pmuludq %xmm14,%xmm5
pmuludq %xmm14,%xmm4
pshufd $0xe8,%xmm5,%xmm1
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm1
pshufd $0xf5,%xmm2,%xmm4
pmuludq %xmm12,%xmm2
pmuludq %xmm12,%xmm4
pshufd $0xe8,%xmm2,%xmm2
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm2
paddd  %xmm9,%xmm1
paddd  %xmm9,%xmm2
paddd  %xmm8,%xmm6
paddd  %xmm6,%xmm0
paddd  %xmm1,%xmm0
psrad  $0xf,%xmm0
movdqa %xmm0,0x70(%rsp)
paddd  %xmm8,%xmm3
paddd  %xmm3,%xmm7
paddd  %xmm2,%xmm7
psrad  $0xf,%xmm7
movdqa %xmm7,0x30(%rsp)
paddd  %xmm10,%xmm3
paddd  %xmm1,%xmm3
psrad  $0xf,%xmm3
movdqa %xmm3,-0x10(%rsp)
paddd  %xmm11,%xmm6
paddd  %xmm2,%xmm6
psrad  $0xf,%xmm6
movdqa %xmm6,-0x50(%rsp)
movdqa 0x84f(%rip),%xmm0
movdqa -0x80(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,(%rdi)
movdqa -0x70(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x8(%rdi)
movdqa -0x60(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x10(%rdi)
movdqa -0x50(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x18(%rdi)
movdqa -0x40(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x20(%rdi)
movdqa -0x30(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x28(%rdi)
movdqa -0x20(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x30(%rdi)
movdqa -0x10(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x38(%rdi)
movdqa (%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x40(%rdi)
movdqa 0x10(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x48(%rdi)
movdqa 0x20(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x50(%rdi)
movdqa 0x30(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x58(%rdi)
movdqa 0x40(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x60(%rdi)
movdqa 0x50(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x68(%rdi)
movdqa 0x60(%rsp),%xmm1
paddd  %xmm0,%xmm1
psrld  $0x3,%xmm1
pshuflw $0xe8,%xmm1,%xmm1
pshufhw $0xe8,%xmm1,%xmm1
pshufd $0xe8,%xmm1,%xmm1
movq   %xmm1,0x70(%rdi)
paddd  0x70(%rsp),%xmm0
psrld  $0x3,%xmm0
pshuflw $0xe8,%xmm0,%xmm0
pshufhw $0xe8,%xmm0,%xmm0
pshufd $0xe8,%xmm0,%xmm0
movq   %xmm0,0x78(%rdi)
add    $0x88,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @enc_fdct_int32(i16* %0) {
%2 = alloca i16*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i16*
%21 = alloca i32*
%22 = alloca [64 x i32]
%23 = alloca i32
store i16* %0, i16** %2
%24 = getelementptr inbounds [64 x i32], [64 x i32]* %22, i64 0, i64 0
store i32* %24, i32** %21
%25 = load i16*, i16** %2
store i16* %25, i16** %20
store i32 0, i32* %23
br label %26
26: ; preds = %224, %1
%27 = load i32, i32* %23
%28 = icmp slt i32 %27, 8
br i1 %28, label %29, label %227
29: ; preds = %26
%30 = load i16*, i16** %20
%31 = getelementptr inbounds i16, i16* %30, i64 0
%32 = load i16, i16* %31
%33 = sext i16 %32 to i32
%34 = load i16*, i16** %20
%35 = getelementptr inbounds i16, i16* %34, i64 7
%36 = load i16, i16* %35
%37 = sext i16 %36 to i32
%38 = add nsw i32 %33, %37
store i32 %38, i32* %3
%39 = load i16*, i16** %20
%40 = getelementptr inbounds i16, i16* %39, i64 0
%41 = load i16, i16* %40
%42 = sext i16 %41 to i32
%43 = load i16*, i16** %20
%44 = getelementptr inbounds i16, i16* %43, i64 7
%45 = load i16, i16* %44
%46 = sext i16 %45 to i32
%47 = sub nsw i32 %42, %46
store i32 %47, i32* %10
%48 = load i16*, i16** %20
%49 = getelementptr inbounds i16, i16* %48, i64 1
%50 = load i16, i16* %49
%51 = sext i16 %50 to i32
%52 = load i16*, i16** %20
%53 = getelementptr inbounds i16, i16* %52, i64 6
%54 = load i16, i16* %53
%55 = sext i16 %54 to i32
%56 = add nsw i32 %51, %55
store i32 %56, i32* %4
%57 = load i16*, i16** %20
%58 = getelementptr inbounds i16, i16* %57, i64 1
%59 = load i16, i16* %58
%60 = sext i16 %59 to i32
%61 = load i16*, i16** %20
%62 = getelementptr inbounds i16, i16* %61, i64 6
%63 = load i16, i16* %62
%64 = sext i16 %63 to i32
%65 = sub nsw i32 %60, %64
store i32 %65, i32* %9
%66 = load i16*, i16** %20
%67 = getelementptr inbounds i16, i16* %66, i64 2
%68 = load i16, i16* %67
%69 = sext i16 %68 to i32
%70 = load i16*, i16** %20
%71 = getelementptr inbounds i16, i16* %70, i64 5
%72 = load i16, i16* %71
%73 = sext i16 %72 to i32
%74 = add nsw i32 %69, %73
store i32 %74, i32* %5
%75 = load i16*, i16** %20
%76 = getelementptr inbounds i16, i16* %75, i64 2
%77 = load i16, i16* %76
%78 = sext i16 %77 to i32
%79 = load i16*, i16** %20
%80 = getelementptr inbounds i16, i16* %79, i64 5
%81 = load i16, i16* %80
%82 = sext i16 %81 to i32
%83 = sub nsw i32 %78, %82
store i32 %83, i32* %8
%84 = load i16*, i16** %20
%85 = getelementptr inbounds i16, i16* %84, i64 3
%86 = load i16, i16* %85
%87 = sext i16 %86 to i32
%88 = load i16*, i16** %20
%89 = getelementptr inbounds i16, i16* %88, i64 4
%90 = load i16, i16* %89
%91 = sext i16 %90 to i32
%92 = add nsw i32 %87, %91
store i32 %92, i32* %6
%93 = load i16*, i16** %20
%94 = getelementptr inbounds i16, i16* %93, i64 3
%95 = load i16, i16* %94
%96 = sext i16 %95 to i32
%97 = load i16*, i16** %20
%98 = getelementptr inbounds i16, i16* %97, i64 4
%99 = load i16, i16* %98
%100 = sext i16 %99 to i32
%101 = sub nsw i32 %96, %100
store i32 %101, i32* %7
%102 = load i32, i32* %3
%103 = load i32, i32* %6
%104 = add nsw i32 %102, %103
store i32 %104, i32* %11
%105 = load i32, i32* %3
%106 = load i32, i32* %6
%107 = sub nsw i32 %105, %106
store i32 %107, i32* %14
%108 = load i32, i32* %4
%109 = load i32, i32* %5
%110 = add nsw i32 %108, %109
store i32 %110, i32* %12
%111 = load i32, i32* %4
%112 = load i32, i32* %5
%113 = sub nsw i32 %111, %112
store i32 %113, i32* %13
%114 = load i32, i32* %11
%115 = load i32, i32* %12
%116 = add nsw i32 %114, %115
%117 = shl i32 %116, 2
%118 = load i32*, i32** %21
%119 = getelementptr inbounds i32, i32* %118, i64 0
store i32 %117, i32* %119
%120 = load i32, i32* %11
%121 = load i32, i32* %12
%122 = sub nsw i32 %120, %121
%123 = shl i32 %122, 2
%124 = load i32*, i32** %21
%125 = getelementptr inbounds i32, i32* %124, i64 4
store i32 %123, i32* %125
%126 = load i32, i32* %13
%127 = load i32, i32* %14
%128 = add nsw i32 %126, %127
%129 = mul nsw i32 %128, 4433
store i32 %129, i32* %15
%130 = load i32, i32* %15
%131 = load i32, i32* %14
%132 = mul nsw i32 %131, 6270
%133 = add nsw i32 %130, %132
%134 = add nsw i32 %133, 1024
%135 = ashr i32 %134, 11
%136 = load i32*, i32** %21
%137 = getelementptr inbounds i32, i32* %136, i64 2
store i32 %135, i32* %137
%138 = load i32, i32* %15
%139 = load i32, i32* %13
%140 = mul nsw i32 %139, -15137
%141 = add nsw i32 %138, %140
%142 = add nsw i32 %141, 1024
%143 = ashr i32 %142, 11
%144 = load i32*, i32** %21
%145 = getelementptr inbounds i32, i32* %144, i64 6
store i32 %143, i32* %145
%146 = load i32, i32* %7
%147 = load i32, i32* %10
%148 = add nsw i32 %146, %147
store i32 %148, i32* %15
%149 = load i32, i32* %8
%150 = load i32, i32* %9
%151 = add nsw i32 %149, %150
store i32 %151, i32* %16
%152 = load i32, i32* %7
%153 = load i32, i32* %9
%154 = add nsw i32 %152, %153
store i32 %154, i32* %17
%155 = load i32, i32* %8
%156 = load i32, i32* %10
%157 = add nsw i32 %155, %156
store i32 %157, i32* %18
%158 = load i32, i32* %17
%159 = load i32, i32* %18
%160 = add nsw i32 %158, %159
%161 = mul nsw i32 %160, 9633
store i32 %161, i32* %19
%162 = load i32, i32* %7
%163 = mul nsw i32 %162, 2446
store i32 %163, i32* %7
%164 = load i32, i32* %8
%165 = mul nsw i32 %164, 16819
store i32 %165, i32* %8
%166 = load i32, i32* %9
%167 = mul nsw i32 %166, 25172
store i32 %167, i32* %9
%168 = load i32, i32* %10
%169 = mul nsw i32 %168, 12299
store i32 %169, i32* %10
%170 = load i32, i32* %15
%171 = mul nsw i32 %170, -7373
store i32 %171, i32* %15
%172 = load i32, i32* %16
%173 = mul nsw i32 %172, -20995
store i32 %173, i32* %16
%174 = load i32, i32* %17
%175 = mul nsw i32 %174, -16069
store i32 %175, i32* %17
%176 = load i32, i32* %18
%177 = mul nsw i32 %176, -3196
store i32 %177, i32* %18
%178 = load i32, i32* %19
%179 = load i32, i32* %17
%180 = add nsw i32 %179, %178
store i32 %180, i32* %17
%181 = load i32, i32* %19
%182 = load i32, i32* %18
%183 = add nsw i32 %182, %181
store i32 %183, i32* %18
%184 = load i32, i32* %7
%185 = load i32, i32* %15
%186 = add nsw i32 %184, %185
%187 = load i32, i32* %17
%188 = add nsw i32 %186, %187
%189 = add nsw i32 %188, 1024
%190 = ashr i32 %189, 11
%191 = load i32*, i32** %21
%192 = getelementptr inbounds i32, i32* %191, i64 7
store i32 %190, i32* %192
%193 = load i32, i32* %8
%194 = load i32, i32* %16
%195 = add nsw i32 %193, %194
%196 = load i32, i32* %18
%197 = add nsw i32 %195, %196
%198 = add nsw i32 %197, 1024
%199 = ashr i32 %198, 11
%200 = load i32*, i32** %21
%201 = getelementptr inbounds i32, i32* %200, i64 5
store i32 %199, i32* %201
%202 = load i32, i32* %9
%203 = load i32, i32* %16
%204 = add nsw i32 %202, %203
%205 = load i32, i32* %17
%206 = add nsw i32 %204, %205
%207 = add nsw i32 %206, 1024
%208 = ashr i32 %207, 11
%209 = load i32*, i32** %21
%210 = getelementptr inbounds i32, i32* %209, i64 3
store i32 %208, i32* %210
%211 = load i32, i32* %10
%212 = load i32, i32* %15
%213 = add nsw i32 %211, %212
%214 = load i32, i32* %18
%215 = add nsw i32 %213, %214
%216 = add nsw i32 %215, 1024
%217 = ashr i32 %216, 11
%218 = load i32*, i32** %21
%219 = getelementptr inbounds i32, i32* %218, i64 1
store i32 %217, i32* %219
%220 = load i32*, i32** %21
%221 = getelementptr inbounds i32, i32* %220, i64 8
store i32* %221, i32** %21
%222 = load i16*, i16** %20
%223 = getelementptr inbounds i16, i16* %222, i64 8
store i16* %223, i16** %20
br label %224
224: ; preds = %29
%225 = load i32, i32* %23
%226 = add nsw i32 %225, 1
store i32 %226, i32* %23
br label %26
227: ; preds = %26
%228 = getelementptr inbounds [64 x i32], [64 x i32]* %22, i64 0, i64 0
store i32* %228, i32** %21
store i32 0, i32* %23
br label %229
229: ; preds = %411, %227
%230 = load i32, i32* %23
%231 = icmp slt i32 %230, 8
br i1 %231, label %232, label %414
232: ; preds = %229
%233 = load i32*, i32** %21
%234 = getelementptr inbounds i32, i32* %233, i64 0
%235 = load i32, i32* %234
%236 = load i32*, i32** %21
%237 = getelementptr inbounds i32, i32* %236, i64 56
%238 = load i32, i32* %237
%239 = add nsw i32 %235, %238
store i32 %239, i32* %3
%240 = load i32*, i32** %21
%241 = getelementptr inbounds i32, i32* %240, i64 0
%242 = load i32, i32* %241
%243 = load i32*, i32** %21
%244 = getelementptr inbounds i32, i32* %243, i64 56
%245 = load i32, i32* %244
%246 = sub nsw i32 %242, %245
store i32 %246, i32* %10
%247 = load i32*, i32** %21
%248 = getelementptr inbounds i32, i32* %247, i64 8
%249 = load i32, i32* %248
%250 = load i32*, i32** %21
%251 = getelementptr inbounds i32, i32* %250, i64 48
%252 = load i32, i32* %251
%253 = add nsw i32 %249, %252
store i32 %253, i32* %4
%254 = load i32*, i32** %21
%255 = getelementptr inbounds i32, i32* %254, i64 8
%256 = load i32, i32* %255
%257 = load i32*, i32** %21
%258 = getelementptr inbounds i32, i32* %257, i64 48
%259 = load i32, i32* %258
%260 = sub nsw i32 %256, %259
store i32 %260, i32* %9
%261 = load i32*, i32** %21
%262 = getelementptr inbounds i32, i32* %261, i64 16
%263 = load i32, i32* %262
%264 = load i32*, i32** %21
%265 = getelementptr inbounds i32, i32* %264, i64 40
%266 = load i32, i32* %265
%267 = add nsw i32 %263, %266
store i32 %267, i32* %5
%268 = load i32*, i32** %21
%269 = getelementptr inbounds i32, i32* %268, i64 16
%270 = load i32, i32* %269
%271 = load i32*, i32** %21
%272 = getelementptr inbounds i32, i32* %271, i64 40
%273 = load i32, i32* %272
%274 = sub nsw i32 %270, %273
store i32 %274, i32* %8
%275 = load i32*, i32** %21
%276 = getelementptr inbounds i32, i32* %275, i64 24
%277 = load i32, i32* %276
%278 = load i32*, i32** %21
%279 = getelementptr inbounds i32, i32* %278, i64 32
%280 = load i32, i32* %279
%281 = add nsw i32 %277, %280
store i32 %281, i32* %6
%282 = load i32*, i32** %21
%283 = getelementptr inbounds i32, i32* %282, i64 24
%284 = load i32, i32* %283
%285 = load i32*, i32** %21
%286 = getelementptr inbounds i32, i32* %285, i64 32
%287 = load i32, i32* %286
%288 = sub nsw i32 %284, %287
store i32 %288, i32* %7
%289 = load i32, i32* %3
%290 = load i32, i32* %6
%291 = add nsw i32 %289, %290
store i32 %291, i32* %11
%292 = load i32, i32* %3
%293 = load i32, i32* %6
%294 = sub nsw i32 %292, %293
store i32 %294, i32* %14
%295 = load i32, i32* %4
%296 = load i32, i32* %5
%297 = add nsw i32 %295, %296
store i32 %297, i32* %12
%298 = load i32, i32* %4
%299 = load i32, i32* %5
%300 = sub nsw i32 %298, %299
store i32 %300, i32* %13
%301 = load i32, i32* %11
%302 = load i32, i32* %12
%303 = add nsw i32 %301, %302
%304 = add nsw i32 %303, 2
%305 = ashr i32 %304, 2
%306 = load i32*, i32** %21
%307 = getelementptr inbounds i32, i32* %306, i64 0
store i32 %305, i32* %307
%308 = load i32, i32* %11
%309 = load i32, i32* %12
%310 = sub nsw i32 %308, %309
%311 = add nsw i32 %310, 2
%312 = ashr i32 %311, 2
%313 = load i32*, i32** %21
%314 = getelementptr inbounds i32, i32* %313, i64 32
store i32 %312, i32* %314
%315 = load i32, i32* %13
%316 = load i32, i32* %14
%317 = add nsw i32 %315, %316
%318 = mul nsw i32 %317, 4433
store i32 %318, i32* %15
%319 = load i32, i32* %15
%320 = load i32, i32* %14
%321 = mul nsw i32 %320, 6270
%322 = add nsw i32 %319, %321
%323 = add nsw i32 %322, 16384
%324 = ashr i32 %323, 15
%325 = load i32*, i32** %21
%326 = getelementptr inbounds i32, i32* %325, i64 16
store i32 %324, i32* %326
%327 = load i32, i32* %15
%328 = load i32, i32* %13
%329 = mul nsw i32 %328, -15137
%330 = add nsw i32 %327, %329
%331 = add nsw i32 %330, 16384
%332 = ashr i32 %331, 15
%333 = load i32*, i32** %21
%334 = getelementptr inbounds i32, i32* %333, i64 48
store i32 %332, i32* %334
%335 = load i32, i32* %7
%336 = load i32, i32* %10
%337 = add nsw i32 %335, %336
store i32 %337, i32* %15
%338 = load i32, i32* %8
%339 = load i32, i32* %9
%340 = add nsw i32 %338, %339
store i32 %340, i32* %16
%341 = load i32, i32* %7
%342 = load i32, i32* %9
%343 = add nsw i32 %341, %342
store i32 %343, i32* %17
%344 = load i32, i32* %8
%345 = load i32, i32* %10
%346 = add nsw i32 %344, %345
store i32 %346, i32* %18
%347 = load i32, i32* %17
%348 = load i32, i32* %18
%349 = add nsw i32 %347, %348
%350 = mul nsw i32 %349, 9633
store i32 %350, i32* %19
%351 = load i32, i32* %7
%352 = mul nsw i32 %351, 2446
store i32 %352, i32* %7
%353 = load i32, i32* %8
%354 = mul nsw i32 %353, 16819
store i32 %354, i32* %8
%355 = load i32, i32* %9
%356 = mul nsw i32 %355, 25172
store i32 %356, i32* %9
%357 = load i32, i32* %10
%358 = mul nsw i32 %357, 12299
store i32 %358, i32* %10
%359 = load i32, i32* %15
%360 = mul nsw i32 %359, -7373
store i32 %360, i32* %15
%361 = load i32, i32* %16
%362 = mul nsw i32 %361, -20995
store i32 %362, i32* %16
%363 = load i32, i32* %17
%364 = mul nsw i32 %363, -16069
store i32 %364, i32* %17
%365 = load i32, i32* %18
%366 = mul nsw i32 %365, -3196
store i32 %366, i32* %18
%367 = load i32, i32* %19
%368 = load i32, i32* %17
%369 = add nsw i32 %368, %367
store i32 %369, i32* %17
%370 = load i32, i32* %19
%371 = load i32, i32* %18
%372 = add nsw i32 %371, %370
store i32 %372, i32* %18
%373 = load i32, i32* %7
%374 = load i32, i32* %15
%375 = add nsw i32 %373, %374
%376 = load i32, i32* %17
%377 = add nsw i32 %375, %376
%378 = add nsw i32 %377, 16384
%379 = ashr i32 %378, 15
%380 = load i32*, i32** %21
%381 = getelementptr inbounds i32, i32* %380, i64 56
store i32 %379, i32* %381
%382 = load i32, i32* %8
%383 = load i32, i32* %16
%384 = add nsw i32 %382, %383
%385 = load i32, i32* %18
%386 = add nsw i32 %384, %385
%387 = add nsw i32 %386, 16384
%388 = ashr i32 %387, 15
%389 = load i32*, i32** %21
%390 = getelementptr inbounds i32, i32* %389, i64 40
store i32 %388, i32* %390
%391 = load i32, i32* %9
%392 = load i32, i32* %16
%393 = add nsw i32 %391, %392
%394 = load i32, i32* %17
%395 = add nsw i32 %393, %394
%396 = add nsw i32 %395, 16384
%397 = ashr i32 %396, 15
%398 = load i32*, i32** %21
%399 = getelementptr inbounds i32, i32* %398, i64 24
store i32 %397, i32* %399
%400 = load i32, i32* %10
%401 = load i32, i32* %15
%402 = add nsw i32 %400, %401
%403 = load i32, i32* %18
%404 = add nsw i32 %402, %403
%405 = add nsw i32 %404, 16384
%406 = ashr i32 %405, 15
%407 = load i32*, i32** %21
%408 = getelementptr inbounds i32, i32* %407, i64 8
store i32 %406, i32* %408
%409 = load i32*, i32** %21
%410 = getelementptr inbounds i32, i32* %409, i32 1
store i32* %410, i32** %21
br label %411
411: ; preds = %232
%412 = load i32, i32* %23
%413 = add nsw i32 %412, 1
store i32 %413, i32* %23
br label %229
414: ; preds = %229
store i32 0, i32* %23
br label %415
415: ; preds = %430, %414
%416 = load i32, i32* %23
%417 = icmp slt i32 %416, 64
br i1 %417, label %418, label %433
418: ; preds = %415
%419 = load i32, i32* %23
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds [64 x i32], [64 x i32]* %22, i64 0, i64 %420
%422 = load i32, i32* %421
%423 = add nsw i32 %422, 4
%424 = ashr i32 %423, 3
%425 = trunc i32 %424 to i16
%426 = load i16*, i16** %2
%427 = load i32, i32* %23
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds i16, i16* %426, i64 %428
store i16 %425, i16* %429
br label %430
430: ; preds = %418
%431 = load i32, i32* %23
%432 = add nsw i32 %431, 1
store i32 %432, i32* %23
br label %415
433: ; preds = %415
ret void
}

LLVM IR (-O2):
define void @enc_fdct_int32(i16* nocapture %0) {
%2 = alloca [64 x i32]
%3 = bitcast [64 x i32]* %2 to i8*
%4 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 0
br label %5
5: ; preds = %1, %5
%6 = phi i32 [ 0, %1 ], [ %96, %5 ]
%7 = phi i32* [ %4, %1 ], [ %94, %5 ]
%8 = phi i16* [ %0, %1 ], [ %95, %5 ]
%9 = load i16, i16* %8
%10 = sext i16 %9 to i32
%11 = getelementptr inbounds i16, i16* %8, i64 7
%12 = load i16, i16* %11
%13 = sext i16 %12 to i32
%14 = add nsw i32 %13, %10
%15 = sub nsw i32 %10, %13
%16 = getelementptr inbounds i16, i16* %8, i64 1
%17 = load i16, i16* %16
%18 = sext i16 %17 to i32
%19 = getelementptr inbounds i16, i16* %8, i64 6
%20 = load i16, i16* %19
%21 = sext i16 %20 to i32
%22 = add nsw i32 %21, %18
%23 = sub nsw i32 %18, %21
%24 = getelementptr inbounds i16, i16* %8, i64 2
%25 = load i16, i16* %24
%26 = sext i16 %25 to i32
%27 = getelementptr inbounds i16, i16* %8, i64 5
%28 = load i16, i16* %27
%29 = sext i16 %28 to i32
%30 = add nsw i32 %29, %26
%31 = sub nsw i32 %26, %29
%32 = getelementptr inbounds i16, i16* %8, i64 3
%33 = load i16, i16* %32
%34 = sext i16 %33 to i32
%35 = getelementptr inbounds i16, i16* %8, i64 4
%36 = load i16, i16* %35
%37 = sext i16 %36 to i32
%38 = add nsw i32 %37, %34
%39 = sub nsw i32 %34, %37
%40 = add nsw i32 %38, %14
%41 = sub nsw i32 %14, %38
%42 = add nsw i32 %30, %22
%43 = sub nsw i32 %22, %30
%44 = add nsw i32 %40, %42
%45 = shl nsw i32 %44, 2
store i32 %45, i32* %7
%46 = sub nsw i32 %40, %42
%47 = shl nsw i32 %46, 2
%48 = getelementptr inbounds i32, i32* %7, i64 4
store i32 %47, i32* %48
%49 = add nsw i32 %41, %43
%50 = mul nsw i32 %49, 4433
%51 = mul nsw i32 %41, 6270
%52 = add nsw i32 %50, 1024
%53 = add nsw i32 %52, %51
%54 = ashr i32 %53, 11
%55 = getelementptr inbounds i32, i32* %7, i64 2
store i32 %54, i32* %55
%56 = mul nsw i32 %43, -15137
%57 = add i32 %52, %56
%58 = ashr i32 %57, 11
%59 = getelementptr inbounds i32, i32* %7, i64 6
store i32 %58, i32* %59
%60 = add nsw i32 %39, %15
%61 = add nsw i32 %31, %23
%62 = add nsw i32 %39, %23
%63 = add nsw i32 %31, %15
%64 = add nsw i32 %62, %63
%65 = mul nsw i32 %64, 9633
%66 = mul nsw i32 %39, 2446
%67 = mul nsw i32 %31, 16819
%68 = mul nsw i32 %23, 25172
%69 = mul nsw i32 %15, 12299
%70 = mul nsw i32 %60, -7373
%71 = mul nsw i32 %61, -20995
%72 = mul nsw i32 %62, -16069
%73 = mul nsw i32 %63, -3196
%74 = add nsw i32 %65, %72
%75 = add nsw i32 %65, %73
%76 = add nsw i32 %70, 1024
%77 = add nsw i32 %76, %66
%78 = add i32 %77, %74
%79 = ashr i32 %78, 11
%80 = getelementptr inbounds i32, i32* %7, i64 7
store i32 %79, i32* %80
%81 = add i32 %71, 1024
%82 = add i32 %81, %67
%83 = add i32 %82, %75
%84 = ashr i32 %83, 11
%85 = getelementptr inbounds i32, i32* %7, i64 5
store i32 %84, i32* %85
%86 = add i32 %81, %68
%87 = add i32 %86, %74
%88 = ashr i32 %87, 11
%89 = getelementptr inbounds i32, i32* %7, i64 3
store i32 %88, i32* %89
%90 = add nsw i32 %76, %69
%91 = add i32 %90, %75
%92 = ashr i32 %91, 11
%93 = getelementptr inbounds i32, i32* %7, i64 1
store i32 %92, i32* %93
%94 = getelementptr inbounds i32, i32* %7, i64 8
%95 = getelementptr inbounds i16, i16* %8, i64 8
%96 = add nuw nsw i32 %6, 1
%97 = icmp eq i32 %96, 8
br i1 %97, label %98, label %5
98: ; preds = %5
%99 = bitcast [64 x i32]* %2 to <4 x i32>*
%100 = load <4 x i32>, <4 x i32>* %99
%101 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 56
%102 = bitcast i32* %101 to <4 x i32>*
%103 = load <4 x i32>, <4 x i32>* %102
%104 = add nsw <4 x i32> %103, %100
%105 = sub nsw <4 x i32> %100, %103
%106 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 8
%107 = bitcast i32* %106 to <4 x i32>*
%108 = load <4 x i32>, <4 x i32>* %107
%109 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 48
%110 = bitcast i32* %109 to <4 x i32>*
%111 = load <4 x i32>, <4 x i32>* %110
%112 = add nsw <4 x i32> %111, %108
%113 = sub nsw <4 x i32> %108, %111
%114 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 16
%115 = bitcast i32* %114 to <4 x i32>*
%116 = load <4 x i32>, <4 x i32>* %115
%117 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 40
%118 = bitcast i32* %117 to <4 x i32>*
%119 = load <4 x i32>, <4 x i32>* %118
%120 = add nsw <4 x i32> %119, %116
%121 = sub nsw <4 x i32> %116, %119
%122 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 24
%123 = bitcast i32* %122 to <4 x i32>*
%124 = load <4 x i32>, <4 x i32>* %123
%125 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 32
%126 = bitcast i32* %125 to <4 x i32>*
%127 = load <4 x i32>, <4 x i32>* %126
%128 = add nsw <4 x i32> %127, %124
%129 = sub nsw <4 x i32> %124, %127
%130 = add nsw <4 x i32> %128, %104
%131 = sub nsw <4 x i32> %104, %128
%132 = add nsw <4 x i32> %120, %112
%133 = sub nsw <4 x i32> %112, %120
%134 = add <4 x i32> %132, <i32 2, i32 2, i32 2, i32 2>
%135 = add <4 x i32> %134, %130
%136 = ashr <4 x i32> %135, <i32 2, i32 2, i32 2, i32 2>
%137 = bitcast [64 x i32]* %2 to <4 x i32>*
store <4 x i32> %136, <4 x i32>* %137
%138 = sub <4 x i32> <i32 2, i32 2, i32 2, i32 2>, %132
%139 = add <4 x i32> %138, %130
%140 = ashr <4 x i32> %139, <i32 2, i32 2, i32 2, i32 2>
%141 = bitcast i32* %125 to <4 x i32>*
store <4 x i32> %140, <4 x i32>* %141
%142 = add nsw <4 x i32> %131, %133
%143 = mul nsw <4 x i32> %142, <i32 4433, i32 4433, i32 4433, i32 4433>
%144 = mul nsw <4 x i32> %131, <i32 6270, i32 6270, i32 6270, i32 6270>
%145 = add <4 x i32> %143, <i32 16384, i32 16384, i32 16384, i32 16384>
%146 = add <4 x i32> %145, %144
%147 = ashr <4 x i32> %146, <i32 15, i32 15, i32 15, i32 15>
%148 = bitcast i32* %114 to <4 x i32>*
store <4 x i32> %147, <4 x i32>* %148
%149 = mul nsw <4 x i32> %133, <i32 -15137, i32 -15137, i32 -15137, i32 -15137>
%150 = add <4 x i32> %145, %149
%151 = ashr <4 x i32> %150, <i32 15, i32 15, i32 15, i32 15>
%152 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> %151, <4 x i32>* %152
%153 = add nsw <4 x i32> %129, %105
%154 = add nsw <4 x i32> %121, %113
%155 = add nsw <4 x i32> %129, %113
%156 = add nsw <4 x i32> %121, %105
%157 = add nsw <4 x i32> %155, %156
%158 = mul nsw <4 x i32> %157, <i32 9633, i32 9633, i32 9633, i32 9633>
%159 = mul nsw <4 x i32> %129, <i32 2446, i32 2446, i32 2446, i32 2446>
%160 = mul nsw <4 x i32> %121, <i32 16819, i32 16819, i32 16819, i32 16819>
%161 = mul nsw <4 x i32> %113, <i32 25172, i32 25172, i32 25172, i32 25172>
%162 = mul nsw <4 x i32> %105, <i32 12299, i32 12299, i32 12299, i32 12299>
%163 = mul nsw <4 x i32> %153, <i32 -7373, i32 -7373, i32 -7373, i32 -7373>
%164 = mul nsw <4 x i32> %154, <i32 -20995, i32 -20995, i32 -20995, i32 -20995>
%165 = mul nsw <4 x i32> %155, <i32 -16069, i32 -16069, i32 -16069, i32 -16069>
%166 = mul nsw <4 x i32> %156, <i32 -3196, i32 -3196, i32 -3196, i32 -3196>
%167 = add nsw <4 x i32> %158, %165
%168 = add nsw <4 x i32> %158, %166
%169 = add <4 x i32> %163, <i32 16384, i32 16384, i32 16384, i32 16384>
%170 = add <4 x i32> %169, %159
%171 = add <4 x i32> %170, %167
%172 = ashr <4 x i32> %171, <i32 15, i32 15, i32 15, i32 15>
%173 = bitcast i32* %101 to <4 x i32>*
store <4 x i32> %172, <4 x i32>* %173
%174 = add <4 x i32> %164, <i32 16384, i32 16384, i32 16384, i32 16384>
%175 = add <4 x i32> %174, %160
%176 = add <4 x i32> %175, %168
%177 = ashr <4 x i32> %176, <i32 15, i32 15, i32 15, i32 15>
%178 = bitcast i32* %117 to <4 x i32>*
store <4 x i32> %177, <4 x i32>* %178
%179 = add <4 x i32> %174, %161
%180 = add <4 x i32> %179, %167
%181 = ashr <4 x i32> %180, <i32 15, i32 15, i32 15, i32 15>
%182 = bitcast i32* %122 to <4 x i32>*
store <4 x i32> %181, <4 x i32>* %182
%183 = add <4 x i32> %169, %162
%184 = add <4 x i32> %183, %168
%185 = ashr <4 x i32> %184, <i32 15, i32 15, i32 15, i32 15>
%186 = bitcast i32* %106 to <4 x i32>*
store <4 x i32> %185, <4 x i32>* %186
%187 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 4
%188 = bitcast i32* %187 to <4 x i32>*
%189 = load <4 x i32>, <4 x i32>* %188
%190 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 60
%191 = bitcast i32* %190 to <4 x i32>*
%192 = load <4 x i32>, <4 x i32>* %191
%193 = add nsw <4 x i32> %192, %189
%194 = sub nsw <4 x i32> %189, %192
%195 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 12
%196 = bitcast i32* %195 to <4 x i32>*
%197 = load <4 x i32>, <4 x i32>* %196
%198 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 52
%199 = bitcast i32* %198 to <4 x i32>*
%200 = load <4 x i32>, <4 x i32>* %199
%201 = add nsw <4 x i32> %200, %197
%202 = sub nsw <4 x i32> %197, %200
%203 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 20
%204 = bitcast i32* %203 to <4 x i32>*
%205 = load <4 x i32>, <4 x i32>* %204
%206 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 44
%207 = bitcast i32* %206 to <4 x i32>*
%208 = load <4 x i32>, <4 x i32>* %207
%209 = add nsw <4 x i32> %208, %205
%210 = sub nsw <4 x i32> %205, %208
%211 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 28
%212 = bitcast i32* %211 to <4 x i32>*
%213 = load <4 x i32>, <4 x i32>* %212
%214 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 36
%215 = bitcast i32* %214 to <4 x i32>*
%216 = load <4 x i32>, <4 x i32>* %215
%217 = add nsw <4 x i32> %216, %213
%218 = sub nsw <4 x i32> %213, %216
%219 = add nsw <4 x i32> %217, %193
%220 = sub nsw <4 x i32> %193, %217
%221 = add nsw <4 x i32> %209, %201
%222 = sub nsw <4 x i32> %201, %209
%223 = add <4 x i32> %221, <i32 2, i32 2, i32 2, i32 2>
%224 = add <4 x i32> %223, %219
%225 = ashr <4 x i32> %224, <i32 2, i32 2, i32 2, i32 2>
%226 = bitcast i32* %187 to <4 x i32>*
store <4 x i32> %225, <4 x i32>* %226
%227 = sub <4 x i32> <i32 2, i32 2, i32 2, i32 2>, %221
%228 = add <4 x i32> %227, %219
%229 = ashr <4 x i32> %228, <i32 2, i32 2, i32 2, i32 2>
%230 = bitcast i32* %214 to <4 x i32>*
store <4 x i32> %229, <4 x i32>* %230
%231 = add nsw <4 x i32> %220, %222
%232 = mul nsw <4 x i32> %231, <i32 4433, i32 4433, i32 4433, i32 4433>
%233 = mul nsw <4 x i32> %220, <i32 6270, i32 6270, i32 6270, i32 6270>
%234 = add <4 x i32> %232, <i32 16384, i32 16384, i32 16384, i32 16384>
%235 = add <4 x i32> %234, %233
%236 = ashr <4 x i32> %235, <i32 15, i32 15, i32 15, i32 15>
%237 = bitcast i32* %203 to <4 x i32>*
store <4 x i32> %236, <4 x i32>* %237
%238 = mul nsw <4 x i32> %222, <i32 -15137, i32 -15137, i32 -15137, i32 -15137>
%239 = add <4 x i32> %234, %238
%240 = ashr <4 x i32> %239, <i32 15, i32 15, i32 15, i32 15>
%241 = bitcast i32* %198 to <4 x i32>*
store <4 x i32> %240, <4 x i32>* %241
%242 = add nsw <4 x i32> %218, %194
%243 = add nsw <4 x i32> %210, %202
%244 = add nsw <4 x i32> %218, %202
%245 = add nsw <4 x i32> %210, %194
%246 = add nsw <4 x i32> %244, %245
%247 = mul nsw <4 x i32> %246, <i32 9633, i32 9633, i32 9633, i32 9633>
%248 = mul nsw <4 x i32> %218, <i32 2446, i32 2446, i32 2446, i32 2446>
%249 = mul nsw <4 x i32> %210, <i32 16819, i32 16819, i32 16819, i32 16819>
%250 = mul nsw <4 x i32> %202, <i32 25172, i32 25172, i32 25172, i32 25172>
%251 = mul nsw <4 x i32> %194, <i32 12299, i32 12299, i32 12299, i32 12299>
%252 = mul nsw <4 x i32> %242, <i32 -7373, i32 -7373, i32 -7373, i32 -7373>
%253 = mul nsw <4 x i32> %243, <i32 -20995, i32 -20995, i32 -20995, i32 -20995>
%254 = mul nsw <4 x i32> %244, <i32 -16069, i32 -16069, i32 -16069, i32 -16069>
%255 = mul nsw <4 x i32> %245, <i32 -3196, i32 -3196, i32 -3196, i32 -3196>
%256 = add nsw <4 x i32> %247, %254
%257 = add nsw <4 x i32> %247, %255
%258 = add <4 x i32> %252, <i32 16384, i32 16384, i32 16384, i32 16384>
%259 = add <4 x i32> %258, %248
%260 = add <4 x i32> %259, %256
%261 = ashr <4 x i32> %260, <i32 15, i32 15, i32 15, i32 15>
%262 = bitcast i32* %190 to <4 x i32>*
store <4 x i32> %261, <4 x i32>* %262
%263 = add <4 x i32> %253, <i32 16384, i32 16384, i32 16384, i32 16384>
%264 = add <4 x i32> %263, %249
%265 = add <4 x i32> %264, %257
%266 = ashr <4 x i32> %265, <i32 15, i32 15, i32 15, i32 15>
%267 = bitcast i32* %206 to <4 x i32>*
store <4 x i32> %266, <4 x i32>* %267
%268 = add <4 x i32> %263, %250
%269 = add <4 x i32> %268, %256
%270 = ashr <4 x i32> %269, <i32 15, i32 15, i32 15, i32 15>
%271 = bitcast i32* %211 to <4 x i32>*
store <4 x i32> %270, <4 x i32>* %271
%272 = add <4 x i32> %258, %251
%273 = add <4 x i32> %272, %257
%274 = ashr <4 x i32> %273, <i32 15, i32 15, i32 15, i32 15>
%275 = bitcast i32* %195 to <4 x i32>*
store <4 x i32> %274, <4 x i32>* %275
%276 = bitcast [64 x i32]* %2 to <4 x i32>*
%277 = load <4 x i32>, <4 x i32>* %276
%278 = add nsw <4 x i32> %277, <i32 4, i32 4, i32 4, i32 4>
%279 = lshr <4 x i32> %278, <i32 3, i32 3, i32 3, i32 3>
%280 = trunc <4 x i32> %279 to <4 x i16>
%281 = bitcast i16* %0 to <4 x i16>*
store <4 x i16> %280, <4 x i16>* %281
%282 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 4
%283 = bitcast i32* %282 to <4 x i32>*
%284 = load <4 x i32>, <4 x i32>* %283
%285 = add nsw <4 x i32> %284, <i32 4, i32 4, i32 4, i32 4>
%286 = lshr <4 x i32> %285, <i32 3, i32 3, i32 3, i32 3>
%287 = trunc <4 x i32> %286 to <4 x i16>
%288 = getelementptr inbounds i16, i16* %0, i64 4
%289 = bitcast i16* %288 to <4 x i16>*
store <4 x i16> %287, <4 x i16>* %289
%290 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 8
%291 = bitcast i32* %290 to <4 x i32>*
%292 = load <4 x i32>, <4 x i32>* %291
%293 = add nsw <4 x i32> %292, <i32 4, i32 4, i32 4, i32 4>
%294 = lshr <4 x i32> %293, <i32 3, i32 3, i32 3, i32 3>
%295 = trunc <4 x i32> %294 to <4 x i16>
%296 = getelementptr inbounds i16, i16* %0, i64 8
%297 = bitcast i16* %296 to <4 x i16>*
store <4 x i16> %295, <4 x i16>* %297
%298 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 12
%299 = bitcast i32* %298 to <4 x i32>*
%300 = load <4 x i32>, <4 x i32>* %299
%301 = add nsw <4 x i32> %300, <i32 4, i32 4, i32 4, i32 4>
%302 = lshr <4 x i32> %301, <i32 3, i32 3, i32 3, i32 3>
%303 = trunc <4 x i32> %302 to <4 x i16>
%304 = getelementptr inbounds i16, i16* %0, i64 12
%305 = bitcast i16* %304 to <4 x i16>*
store <4 x i16> %303, <4 x i16>* %305
%306 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 16
%307 = bitcast i32* %306 to <4 x i32>*
%308 = load <4 x i32>, <4 x i32>* %307
%309 = add nsw <4 x i32> %308, <i32 4, i32 4, i32 4, i32 4>
%310 = lshr <4 x i32> %309, <i32 3, i32 3, i32 3, i32 3>
%311 = trunc <4 x i32> %310 to <4 x i16>
%312 = getelementptr inbounds i16, i16* %0, i64 16
%313 = bitcast i16* %312 to <4 x i16>*
store <4 x i16> %311, <4 x i16>* %313
%314 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 20
%315 = bitcast i32* %314 to <4 x i32>*
%316 = load <4 x i32>, <4 x i32>* %315
%317 = add nsw <4 x i32> %316, <i32 4, i32 4, i32 4, i32 4>
%318 = lshr <4 x i32> %317, <i32 3, i32 3, i32 3, i32 3>
%319 = trunc <4 x i32> %318 to <4 x i16>
%320 = getelementptr inbounds i16, i16* %0, i64 20
%321 = bitcast i16* %320 to <4 x i16>*
store <4 x i16> %319, <4 x i16>* %321
%322 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 24
%323 = bitcast i32* %322 to <4 x i32>*
%324 = load <4 x i32>, <4 x i32>* %323
%325 = add nsw <4 x i32> %324, <i32 4, i32 4, i32 4, i32 4>
%326 = lshr <4 x i32> %325, <i32 3, i32 3, i32 3, i32 3>
%327 = trunc <4 x i32> %326 to <4 x i16>
%328 = getelementptr inbounds i16, i16* %0, i64 24
%329 = bitcast i16* %328 to <4 x i16>*
store <4 x i16> %327, <4 x i16>* %329
%330 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 28
%331 = bitcast i32* %330 to <4 x i32>*
%332 = load <4 x i32>, <4 x i32>* %331
%333 = add nsw <4 x i32> %332, <i32 4, i32 4, i32 4, i32 4>
%334 = lshr <4 x i32> %333, <i32 3, i32 3, i32 3, i32 3>
%335 = trunc <4 x i32> %334 to <4 x i16>
%336 = getelementptr inbounds i16, i16* %0, i64 28
%337 = bitcast i16* %336 to <4 x i16>*
store <4 x i16> %335, <4 x i16>* %337
%338 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 32
%339 = bitcast i32* %338 to <4 x i32>*
%340 = load <4 x i32>, <4 x i32>* %339
%341 = add nsw <4 x i32> %340, <i32 4, i32 4, i32 4, i32 4>
%342 = lshr <4 x i32> %341, <i32 3, i32 3, i32 3, i32 3>
%343 = trunc <4 x i32> %342 to <4 x i16>
%344 = getelementptr inbounds i16, i16* %0, i64 32
%345 = bitcast i16* %344 to <4 x i16>*
store <4 x i16> %343, <4 x i16>* %345
%346 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 36
%347 = bitcast i32* %346 to <4 x i32>*
%348 = load <4 x i32>, <4 x i32>* %347
%349 = add nsw <4 x i32> %348, <i32 4, i32 4, i32 4, i32 4>
%350 = lshr <4 x i32> %349, <i32 3, i32 3, i32 3, i32 3>
%351 = trunc <4 x i32> %350 to <4 x i16>
%352 = getelementptr inbounds i16, i16* %0, i64 36
%353 = bitcast i16* %352 to <4 x i16>*
store <4 x i16> %351, <4 x i16>* %353
%354 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 40
%355 = bitcast i32* %354 to <4 x i32>*
%356 = load <4 x i32>, <4 x i32>* %355
%357 = add nsw <4 x i32> %356, <i32 4, i32 4, i32 4, i32 4>
%358 = lshr <4 x i32> %357, <i32 3, i32 3, i32 3, i32 3>
%359 = trunc <4 x i32> %358 to <4 x i16>
%360 = getelementptr inbounds i16, i16* %0, i64 40
%361 = bitcast i16* %360 to <4 x i16>*
store <4 x i16> %359, <4 x i16>* %361
%362 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 44
%363 = bitcast i32* %362 to <4 x i32>*
%364 = load <4 x i32>, <4 x i32>* %363
%365 = add nsw <4 x i32> %364, <i32 4, i32 4, i32 4, i32 4>
%366 = lshr <4 x i32> %365, <i32 3, i32 3, i32 3, i32 3>
%367 = trunc <4 x i32> %366 to <4 x i16>
%368 = getelementptr inbounds i16, i16* %0, i64 44
%369 = bitcast i16* %368 to <4 x i16>*
store <4 x i16> %367, <4 x i16>* %369
%370 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 48
%371 = bitcast i32* %370 to <4 x i32>*
%372 = load <4 x i32>, <4 x i32>* %371
%373 = add nsw <4 x i32> %372, <i32 4, i32 4, i32 4, i32 4>
%374 = lshr <4 x i32> %373, <i32 3, i32 3, i32 3, i32 3>
%375 = trunc <4 x i32> %374 to <4 x i16>
%376 = getelementptr inbounds i16, i16* %0, i64 48
%377 = bitcast i16* %376 to <4 x i16>*
store <4 x i16> %375, <4 x i16>* %377
%378 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 52
%379 = bitcast i32* %378 to <4 x i32>*
%380 = load <4 x i32>, <4 x i32>* %379
%381 = add nsw <4 x i32> %380, <i32 4, i32 4, i32 4, i32 4>
%382 = lshr <4 x i32> %381, <i32 3, i32 3, i32 3, i32 3>
%383 = trunc <4 x i32> %382 to <4 x i16>
%384 = getelementptr inbounds i16, i16* %0, i64 52
%385 = bitcast i16* %384 to <4 x i16>*
store <4 x i16> %383, <4 x i16>* %385
%386 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 56
%387 = bitcast i32* %386 to <4 x i32>*
%388 = load <4 x i32>, <4 x i32>* %387
%389 = add nsw <4 x i32> %388, <i32 4, i32 4, i32 4, i32 4>
%390 = lshr <4 x i32> %389, <i32 3, i32 3, i32 3, i32 3>
%391 = trunc <4 x i32> %390 to <4 x i16>
%392 = getelementptr inbounds i16, i16* %0, i64 56
%393 = bitcast i16* %392 to <4 x i16>*
store <4 x i16> %391, <4 x i16>* %393
%394 = getelementptr inbounds [64 x i32], [64 x i32]* %2, i64 0, i64 60
%395 = bitcast i32* %394 to <4 x i32>*
%396 = load <4 x i32>, <4 x i32>* %395
%397 = add nsw <4 x i32> %396, <i32 4, i32 4, i32 4, i32 4>
%398 = lshr <4 x i32> %397, <i32 3, i32 3, i32 3, i32 3>
%399 = trunc <4 x i32> %398 to <4 x i16>
%400 = getelementptr inbounds i16, i16* %0, i64 60
%401 = bitcast i16* %400 to <4 x i16>*
store <4 x i16> %399, <4 x i16>* %401
ret void
}