void do_idct(int *data, int *dequant) {
  long tmp0, tmp1, tmp2, tmp3, tmp10, tmp11, tmp12, tmp13, z1, z2, z3, z4, z5;
  int *inptr, *wsptr, *dqptr, *outptr;
  int i, workspace[64], temp;
  inptr = data;
  dqptr = dequant;
  wsptr = workspace;
  for (i = 8; i > 0; i--) {
    if (inptr[8] == 0 && inptr[16] == 0 && inptr[24] == 0 && inptr[32] == 0 &&
        inptr[40] == 0 && inptr[48] == 0 && inptr[56] == 0) {
      temp = (inptr[0] * dqptr[0]) << 2;
      wsptr[0] = temp;
      wsptr[8] = temp;
      wsptr[16] = temp;
      wsptr[24] = temp;
      wsptr[32] = temp;
      wsptr[40] = temp;
      wsptr[48] = temp;
      wsptr[56] = temp;
      inptr++;
      wsptr++;
      dqptr++;
      continue;
    }
    z2 = inptr[16] * dqptr[16];
    z3 = inptr[48] * dqptr[48];
    z1 = (z2 + z3) * ((long)4433);
    tmp2 = z1 + (z3 * (-((long)15137)));
    tmp3 = z1 + (z2 * ((long)6270));
    z2 = inptr[0] * dqptr[0];
    z3 = inptr[32] * dqptr[32];
    tmp0 = (z2 + z3) << 13;
    tmp1 = (z2 - z3) << 13;
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    tmp0 = inptr[56] * dqptr[56];
    tmp1 = inptr[40] * dqptr[40];
    tmp2 = inptr[24] * dqptr[24];
    tmp3 = inptr[8] * dqptr[8];
    z1 = tmp0 + tmp3;
    z2 = tmp1 + tmp2;
    z3 = tmp0 + tmp2;
    z4 = tmp1 + tmp3;
    z5 = (z3 + z4) * ((long)9633);
    tmp0 *= ((long)2446);
    tmp1 *= ((long)16819);
    tmp2 *= ((long)25172);
    tmp3 *= ((long)12299);
    z1 *= (-((long)7373));
    z2 *= (-((long)20995));
    z3 *= (-((long)16069));
    z4 *= (-((long)3196));
    z3 += z5;
    z4 += z5;
    tmp0 += z1 + z3;
    tmp1 += z2 + z4;
    tmp2 += z2 + z3;
    tmp3 += z1 + z4;
    wsptr[0] = (int)(((tmp10 + tmp3) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[56] = (int)(((tmp10 - tmp3) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[8] = (int)(((tmp11 + tmp2) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[48] = (int)(((tmp11 - tmp2) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[16] = (int)(((tmp12 + tmp1) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[40] = (int)(((tmp12 - tmp1) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[24] = (int)(((tmp13 + tmp0) + ((long)1 << ((11) - 1))) >> 11);
    wsptr[32] = (int)(((tmp13 - tmp0) + ((long)1 << ((11) - 1))) >> 11);
    inptr++;
    dqptr++;
    wsptr++;
  }
  wsptr = workspace;
  outptr = data;
  for (i = 0; i < 8; i++) {
    z2 = (long)wsptr[2];
    z3 = (long)wsptr[6];
    z1 = (z2 + z3) * ((long)4433);
    tmp2 = z1 + (z3 * (-((long)15137)));
    tmp3 = z1 + (z2 * ((long)6270));
    tmp0 = ((long)wsptr[0] + (long)wsptr[4]) << 13;
    tmp1 = ((long)wsptr[0] - (long)wsptr[4]) << 13;
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    tmp0 = (long)wsptr[7];
    tmp1 = (long)wsptr[5];
    tmp2 = (long)wsptr[3];
    tmp3 = (long)wsptr[1];
    z1 = tmp0 + tmp3;
    z2 = tmp1 + tmp2;
    z3 = tmp0 + tmp2;
    z4 = tmp1 + tmp3;
    z5 = (z3 + z4) * ((long)9633);
    tmp0 *= ((long)2446);
    tmp1 *= ((long)16819);
    tmp2 *= ((long)25172);
    tmp3 *= ((long)12299);
    z1 *= (-((long)7373));
    z2 *= (-((long)20995));
    z3 *= (-((long)16069));
    z4 *= (-((long)3196));
    z3 += z5;
    z4 += z5;
    tmp0 += z1 + z3;
    tmp1 += z2 + z4;
    tmp2 += z2 + z3;
    tmp3 += z1 + z4;
    outptr[0] = (int)(((tmp10 + tmp3) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[7] = (int)(((tmp10 - tmp3) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[1] = (int)(((tmp11 + tmp2) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[6] = (int)(((tmp11 - tmp2) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[2] = (int)(((tmp12 + tmp1) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[5] = (int)(((tmp12 - tmp1) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[3] = (int)(((tmp13 + tmp0) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr[4] = (int)(((tmp13 - tmp0) + ((long)1 << ((18) - 1))) >> 18) + 128;
    outptr += 8;
    wsptr += 8;
  }
}


x86 assembly (clang, -O0):
<do_idct>:
push   %rbp
mov    %rsp,%rbp
sub    $0x130,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x80(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x90(%rbp)
lea    -0x1a0(%rbp),%rax
mov    %rax,-0x88(%rbp)
movl   $0x8,-0x9c(%rbp)
cmpl   $0x0,-0x9c(%rbp)
jle    162b <do_idct+0x52b>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0x20(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0x40(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0x60(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0x80(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0xa0(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0xc0(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
cmpl   $0x0,0xe0(%rax)
jne    1292 <do_idct+0x192>
mov    -0x80(%rbp),%rax
mov    (%rax),%eax
mov    -0x90(%rbp),%rcx
imul   (%rcx),%eax
shl    $0x2,%eax
mov    %eax,-0x1a4(%rbp)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x40(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x60(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x80(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xa0(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xc0(%rax)
mov    -0x1a4(%rbp),%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xe0(%rax)
mov    -0x80(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x80(%rbp)
mov    -0x88(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x88(%rbp)
mov    -0x90(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x90(%rbp)
jmp    1617 <do_idct+0x517>
mov    -0x80(%rbp),%rax
mov    0x40(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0x40(%rcx),%eax
cltq
mov    %rax,-0x60(%rbp)
mov    -0x80(%rbp),%rax
mov    0xc0(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0xc0(%rcx),%eax
cltq
mov    %rax,-0x68(%rbp)
mov    -0x60(%rbp),%rax
add    -0x68(%rbp),%rax
imul   $0x1151,%rax,%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
imul   $0xffffffffffffc4df,-0x68(%rbp),%rcx
ff
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
imul   $0x187e,-0x60(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x80(%rbp),%rax
mov    (%rax),%eax
mov    -0x90(%rbp),%rcx
imul   (%rcx),%eax
cltq
mov    %rax,-0x60(%rbp)
mov    -0x80(%rbp),%rax
mov    0x80(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0x80(%rcx),%eax
cltq
mov    %rax,-0x68(%rbp)
mov    -0x60(%rbp),%rax
add    -0x68(%rbp),%rax
shl    $0xd,%rax
mov    %rax,-0x18(%rbp)
mov    -0x60(%rbp),%rax
sub    -0x68(%rbp),%rax
shl    $0xd,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
sub    -0x30(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x20(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
sub    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x80(%rbp),%rax
mov    0xe0(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0xe0(%rcx),%eax
cltq
mov    %rax,-0x18(%rbp)
mov    -0x80(%rbp),%rax
mov    0xa0(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0xa0(%rcx),%eax
cltq
mov    %rax,-0x20(%rbp)
mov    -0x80(%rbp),%rax
mov    0x60(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0x60(%rcx),%eax
cltq
mov    %rax,-0x28(%rbp)
mov    -0x80(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x90(%rbp),%rcx
imul   0x20(%rcx),%eax
cltq
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x20(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x20(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x68(%rbp),%rax
add    -0x70(%rbp),%rax
imul   $0x25a1,%rax,%rax
mov    %rax,-0x78(%rbp)
imul   $0x98e,-0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
imul   $0x41b3,-0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
imul   $0x6254,-0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
imul   $0x300b,-0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
imul   $0xffffffffffffe333,-0x58(%rbp),%rax
ff
mov    %rax,-0x58(%rbp)
imul   $0xffffffffffffadfd,-0x60(%rbp),%rax
ff
mov    %rax,-0x60(%rbp)
imul   $0xffffffffffffc13b,-0x68(%rbp),%rax
ff
mov    %rax,-0x68(%rbp)
imul   $0xfffffffffffff384,-0x70(%rbp),%rax
ff
mov    %rax,-0x70(%rbp)
mov    -0x78(%rbp),%rax
add    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x78(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x58(%rbp),%rax
add    -0x68(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x60(%rbp),%rax
add    -0x70(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x60(%rbp),%rax
add    -0x68(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
add    -0x70(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    -0x30(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
sub    -0x30(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xe0(%rax)
mov    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x20(%rax)
mov    -0x40(%rbp),%rax
sub    -0x28(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xc0(%rax)
mov    -0x48(%rbp),%rax
add    -0x20(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x40(%rax)
mov    -0x48(%rbp),%rax
sub    -0x20(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0xa0(%rax)
mov    -0x50(%rbp),%rax
add    -0x18(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x60(%rax)
mov    -0x50(%rbp),%rax
sub    -0x18(%rbp),%rax
add    $0x400,%rax
sar    $0xb,%rax
mov    %eax,%ecx
mov    -0x88(%rbp),%rax
mov    %ecx,0x80(%rax)
mov    -0x80(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x80(%rbp)
mov    -0x90(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x90(%rbp)
mov    -0x88(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x88(%rbp)
mov    -0x9c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x9c(%rbp)
jmp    113e <do_idct+0x3e>
lea    -0x1a0(%rbp),%rax
mov    %rax,-0x88(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x98(%rbp)
movl   $0x0,-0x9c(%rbp)
cmpl   $0x8,-0x9c(%rbp)
jge    19b0 <do_idct+0x8b0>
mov    -0x88(%rbp),%rax
movslq 0x8(%rax),%rax
mov    %rax,-0x60(%rbp)
mov    -0x88(%rbp),%rax
movslq 0x18(%rax),%rax
mov    %rax,-0x68(%rbp)
mov    -0x60(%rbp),%rax
add    -0x68(%rbp),%rax
imul   $0x1151,%rax,%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
imul   $0xffffffffffffc4df,-0x68(%rbp),%rcx
ff
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
imul   $0x187e,-0x60(%rbp),%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x88(%rbp),%rax
movslq (%rax),%rax
mov    -0x88(%rbp),%rcx
movslq 0x10(%rcx),%rcx
add    %rcx,%rax
shl    $0xd,%rax
mov    %rax,-0x18(%rbp)
mov    -0x88(%rbp),%rax
movslq (%rax),%rax
mov    -0x88(%rbp),%rcx
movslq 0x10(%rcx),%rcx
sub    %rcx,%rax
shl    $0xd,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x18(%rbp),%rax
sub    -0x30(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x20(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
sub    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x88(%rbp),%rax
movslq 0x1c(%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x88(%rbp),%rax
movslq 0x14(%rax),%rax
mov    %rax,-0x20(%rbp)
mov    -0x88(%rbp),%rax
movslq 0xc(%rax),%rax
mov    %rax,-0x28(%rbp)
mov    -0x88(%rbp),%rax
movslq 0x4(%rax),%rax
mov    %rax,-0x30(%rbp)
mov    -0x18(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x20(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x18(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x20(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x68(%rbp),%rax
add    -0x70(%rbp),%rax
imul   $0x25a1,%rax,%rax
mov    %rax,-0x78(%rbp)
imul   $0x98e,-0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
imul   $0x41b3,-0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
imul   $0x6254,-0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
imul   $0x300b,-0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
imul   $0xffffffffffffe333,-0x58(%rbp),%rax
ff
mov    %rax,-0x58(%rbp)
imul   $0xffffffffffffadfd,-0x60(%rbp),%rax
ff
mov    %rax,-0x60(%rbp)
imul   $0xffffffffffffc13b,-0x68(%rbp),%rax
ff
mov    %rax,-0x68(%rbp)
imul   $0xfffffffffffff384,-0x70(%rbp),%rax
ff
mov    %rax,-0x70(%rbp)
mov    -0x78(%rbp),%rax
add    -0x68(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x78(%rbp),%rax
add    -0x70(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x58(%rbp),%rax
add    -0x68(%rbp),%rax
add    -0x18(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x60(%rbp),%rax
add    -0x70(%rbp),%rax
add    -0x20(%rbp),%rax
mov    %rax,-0x20(%rbp)
mov    -0x60(%rbp),%rax
add    -0x68(%rbp),%rax
add    -0x28(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x58(%rbp),%rax
add    -0x70(%rbp),%rax
add    -0x30(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x38(%rbp),%rax
add    -0x30(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%rax
sub    -0x30(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x40(%rbp),%rax
add    -0x28(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x40(%rbp),%rax
sub    -0x28(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x48(%rbp),%rax
add    -0x20(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x48(%rbp),%rax
sub    -0x20(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x50(%rbp),%rax
add    -0x18(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x50(%rbp),%rax
sub    -0x18(%rbp),%rax
add    $0x20000,%rax
sar    $0x12,%rax
mov    %eax,%ecx
add    $0x80,%ecx
mov    -0x98(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x98(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x98(%rbp)
mov    -0x88(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x88(%rbp)
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    164e <do_idct+0x54e>
add    $0x130,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<do_idct>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    $0x9,%r9d
xor    %r15d,%r15d
nopw   0x0(%rax,%rax,1)
movslq 0x20(%rdi,%r15,1),%r8
mov    0x40(%rdi,%r15,1),%eax
mov    %r8d,%edx
or     %eax,%edx
jne    1170 <do_idct+0x70>
xor    %eax,%eax
cmpl   $0x0,0x60(%rdi,%r15,1)
jne    1170 <do_idct+0x70>
cmpl   $0x0,0x80(%rdi,%r15,1)
jne    1170 <do_idct+0x70>
cmpl   $0x0,0xa0(%rdi,%r15,1)
jne    1170 <do_idct+0x70>
cmpl   $0x0,0xc0(%rdi,%r15,1)
jne    1170 <do_idct+0x70>
cmpl   $0x0,0xe0(%rdi,%r15,1)
je     1347 <do_idct+0x247>
nopl   0x0(%rax,%rax,1)
movslq 0x40(%rsi,%r15,1),%rdx
cltq
imul   %rdx,%rax
movslq 0xc0(%rdi,%r15,1),%rdx
movslq 0xc0(%rsi,%r15,1),%rbx
imul   %rdx,%rbx
lea    (%rbx,%rax,1),%rdx
imul   $0x1151,%rdx,%rdx
imul   $0xffffffffffffc4df,%rbx,%r10
add    %rdx,%r10
imul   $0x187e,%rax,%r11
add    %rdx,%r11
movslq (%rdi,%r15,1),%rdx
movslq (%rsi,%r15,1),%rax
imul   %rdx,%rax
movslq 0x80(%rdi,%r15,1),%rdx
movslq 0x80(%rsi,%r15,1),%rbx
imul   %rdx,%rbx
lea    (%rbx,%rax,1),%rdx
shl    $0xd,%rdx
sub    %rbx,%rax
shl    $0xd,%rax
lea    (%rdx,%r11,1),%r14
add    $0x400,%r14
sub    %r11,%rdx
lea    (%rax,%r10,1),%r11
add    $0x400,%r11
sub    %r10,%rax
movslq 0xe0(%rdi,%r15,1),%r10
movslq 0xe0(%rsi,%r15,1),%r12
imul   %r10,%r12
movslq 0xa0(%rdi,%r15,1),%r10
movslq 0xa0(%rsi,%r15,1),%rbx
imul   %r10,%rbx
movslq 0x60(%rdi,%r15,1),%r10
movslq 0x60(%rsi,%r15,1),%rcx
imul   %r10,%rcx
movslq 0x20(%rsi,%r15,1),%r10
imul   %r8,%r10
lea    (%rcx,%r12,1),%r8
lea    (%r10,%rbx,1),%r13
lea    (%r8,%r13,1),%rbp
imul   $0x25a1,%rbp,%rbp
imul   $0xffffffffffffc13b,%r8,%r8
imul   $0xfffffffffffff384,%r13,%r13
add    %rbp,%r8
add    %rbp,%r13
lea    (%rcx,%rbx,1),%rbp
imul   $0x41b3,%rbx,%rbx
imul   $0x6254,%rcx,%rcx
imul   $0xffffffffffffadfd,%rbp,%rbp
add    %rbp,%rbx
add    %rbp,%rcx
lea    (%r10,%r12,1),%rbp
imul   $0x98e,%r12,%r12
imul   $0xffffffffffffe333,%rbp,%rbp
add    %rbp,%r12
add    %r8,%r12
add    %r8,%rcx
imul   $0x300b,%r10,%r8
add    %rbp,%r8
add    %r13,%rbx
add    %r13,%r8
lea    (%r14,%r8,1),%rbp
shr    $0xb,%rbp
mov    %ebp,-0x80(%rsp,%r15,1)
sub    %r8,%r14
shr    $0xb,%r14
mov    %r14d,0x60(%rsp,%r15,1)
lea    (%r11,%rcx,1),%rbp
shr    $0xb,%rbp
mov    %ebp,-0x60(%rsp,%r15,1)
sub    %rcx,%r11
shr    $0xb,%r11
mov    %r11d,0x40(%rsp,%r15,1)
lea    (%rax,%rbx,1),%rcx
add    $0x400,%rcx
shr    $0xb,%rcx
mov    %ecx,-0x40(%rsp,%r15,1)
add    $0x400,%rax
sub    %rbx,%rax
shr    $0xb,%rax
mov    %eax,0x20(%rsp,%r15,1)
lea    (%rdx,%r12,1),%rax
add    $0x400,%rax
shr    $0xb,%rax
mov    %eax,-0x20(%rsp,%r15,1)
add    $0x400,%rdx
sub    %r12,%rdx
shr    $0xb,%rdx
mov    $0x20,%eax
lea    (%rsp,%rax,4),%rax
add    $0xffffffffffffff80,%rax
mov    %edx,(%r15,%rax,1)
add    $0xffffffff,%r9d
add    $0x4,%r15
cmp    $0x1,%r9d
ja     1120 <do_idct+0x20>
jmp    137c <do_idct+0x27c>
mov    (%rdi,%r15,1),%edx
imul   (%rsi,%r15,1),%edx
shl    $0x2,%edx
mov    %edx,-0x80(%rsp,%r15,1)
mov    %edx,-0x60(%rsp,%r15,1)
mov    %edx,-0x40(%rsp,%r15,1)
mov    %edx,-0x20(%rsp,%r15,1)
mov    %edx,(%rsp,%r15,1)
mov    %edx,0x20(%rsp,%r15,1)
mov    %edx,0x40(%rsp,%r15,1)
mov    $0x38,%eax
jmp    1327 <do_idct+0x227>
xor    %r13d,%r13d
nop
movslq -0x78(%rsp,%r13,1),%rcx
movslq -0x68(%rsp,%r13,1),%rdx
lea    (%rdx,%rcx,1),%rsi
imul   $0x1151,%rsi,%rsi
imul   $0xffffffffffffc4df,%rdx,%r8
add    %rsi,%r8
imul   $0x187e,%rcx,%r9
add    %rsi,%r9
movslq -0x80(%rsp,%r13,1),%rdx
movslq -0x70(%rsp,%r13,1),%rcx
lea    (%rcx,%rdx,1),%rsi
shl    $0xd,%rsi
sub    %rcx,%rdx
shl    $0xd,%rdx
lea    (%rsi,%r9,1),%rcx
add    $0x20000,%rcx
sub    %r9,%rsi
lea    (%rdx,%r8,1),%rbp
add    $0x20000,%rbp
sub    %r8,%rdx
movslq -0x64(%rsp,%r13,1),%r8
movslq -0x6c(%rsp,%r13,1),%r15
movslq -0x74(%rsp,%r13,1),%r9
movslq -0x7c(%rsp,%r13,1),%r10
lea    (%r9,%r8,1),%r11
lea    (%r10,%r15,1),%r14
lea    (%r14,%r11,1),%rbx
imul   $0x25a1,%rbx,%r12
imul   $0xffffffffffffc13b,%r11,%rbx
imul   $0xfffffffffffff384,%r14,%rax
add    %r12,%rbx
add    %r12,%rax
lea    (%r9,%r15,1),%r11
imul   $0x41b3,%r15,%r14
imul   $0x6254,%r9,%r9
imul   $0xffffffffffffadfd,%r11,%r11
add    %r11,%r14
add    %r11,%r9
lea    (%r10,%r8,1),%r11
imul   $0x98e,%r8,%r8
imul   $0xffffffffffffe333,%r11,%r11
add    %r11,%r8
add    %rbx,%r8
add    %rbx,%r9
imul   $0x300b,%r10,%rbx
add    %r11,%rbx
add    %rax,%r14
add    %rax,%rbx
lea    (%rcx,%rbx,1),%rax
shr    $0x12,%rax
sub    $0xffffff80,%eax
mov    %eax,(%rdi,%r13,1)
sub    %rbx,%rcx
shr    $0x12,%rcx
sub    $0xffffff80,%ecx
mov    %ecx,0x1c(%rdi,%r13,1)
lea    (%r9,%rbp,1),%rax
shr    $0x12,%rax
sub    $0xffffff80,%eax
mov    %eax,0x4(%rdi,%r13,1)
sub    %r9,%rbp
shr    $0x12,%rbp
sub    $0xffffff80,%ebp
mov    %ebp,0x18(%rdi,%r13,1)
lea    (%rdx,%r14,1),%rax
add    $0x20000,%rax
shr    $0x12,%rax
sub    $0xffffff80,%eax
mov    %eax,0x8(%rdi,%r13,1)
add    $0x20000,%rdx
sub    %r14,%rdx
shr    $0x12,%rdx
sub    $0xffffff80,%edx
mov    %edx,0x14(%rdi,%r13,1)
lea    (%rsi,%r8,1),%rax
add    $0x20000,%rax
shr    $0x12,%rax
sub    $0xffffff80,%eax
mov    %eax,0xc(%rdi,%r13,1)
add    $0x20000,%rsi
sub    %r8,%rsi
shr    $0x12,%rsi
sub    $0xffffff80,%esi
mov    %esi,0x10(%rdi,%r13,1)
add    $0x20,%r13
cmp    $0x100,%r13d
jne    1380 <do_idct+0x280>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @do_idct(i32* nocapture %0, i32* nocapture %1) {
%3 = alloca [64 x i32]
%4 = bitcast [64 x i32]* %3 to i8*
%5 = getelementptr inbounds [64 x i32], [64 x i32]* %3, i64 0, i64 0
br label %6
6: ; preds = %2, %165
%7 = phi i32 [ 8, %2 ], [ %172, %165 ]
%8 = phi i32* [ %1, %2 ], [ %169, %165 ]
%9 = phi i32* [ %5, %2 ], [ %170, %165 ]
%10 = phi i32* [ %0, %2 ], [ %171, %165 ]
%11 = getelementptr inbounds i32, i32* %10, i64 8
%12 = load i32, i32* %11
%13 = icmp eq i32 %12, 0
%14 = getelementptr inbounds i32, i32* %10, i64 16
%15 = load i32, i32* %14
%16 = icmp eq i32 %15, 0
%17 = select i1 %13, i1 %16, i1 false
br i1 %17, label %18, label %49
18: ; preds = %6
%19 = getelementptr inbounds i32, i32* %10, i64 24
%20 = load i32, i32* %19
%21 = icmp eq i32 %20, 0
br i1 %21, label %22, label %49
22: ; preds = %18
%23 = getelementptr inbounds i32, i32* %10, i64 32
%24 = load i32, i32* %23
%25 = icmp eq i32 %24, 0
br i1 %25, label %26, label %49
26: ; preds = %22
%27 = getelementptr inbounds i32, i32* %10, i64 40
%28 = load i32, i32* %27
%29 = icmp eq i32 %28, 0
br i1 %29, label %30, label %49
30: ; preds = %26
%31 = getelementptr inbounds i32, i32* %10, i64 48
%32 = load i32, i32* %31
%33 = icmp eq i32 %32, 0
br i1 %33, label %34, label %49
34: ; preds = %30
%35 = getelementptr inbounds i32, i32* %10, i64 56
%36 = load i32, i32* %35
%37 = icmp eq i32 %36, 0
br i1 %37, label %38, label %49
38: ; preds = %34
%39 = load i32, i32* %10
%40 = load i32, i32* %8
%41 = shl i32 %39, 2
%42 = mul i32 %41, %40
store i32 %42, i32* %9
%43 = getelementptr inbounds i32, i32* %9, i64 8
store i32 %42, i32* %43
%44 = getelementptr inbounds i32, i32* %9, i64 16
store i32 %42, i32* %44
%45 = getelementptr inbounds i32, i32* %9, i64 24
store i32 %42, i32* %45
%46 = getelementptr inbounds i32, i32* %9, i64 32
store i32 %42, i32* %46
%47 = getelementptr inbounds i32, i32* %9, i64 40
store i32 %42, i32* %47
%48 = getelementptr inbounds i32, i32* %9, i64 48
store i32 %42, i32* %48
br label %165
49: ; preds = %6, %34, %30, %26, %22, %18
%50 = phi i32 [ 0, %34 ], [ 0, %30 ], [ 0, %26 ], [ 0, %22 ], [ 0, %18 ], [ %15, %6 ]
%51 = getelementptr inbounds i32, i32* %8, i64 16
%52 = load i32, i32* %51
%53 = mul nsw i32 %52, %50
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds i32, i32* %10, i64 48
%56 = load i32, i32* %55
%57 = getelementptr inbounds i32, i32* %8, i64 48
%58 = load i32, i32* %57
%59 = mul nsw i32 %58, %56
%60 = sext i32 %59 to i64
%61 = add nsw i64 %60, %54
%62 = mul nsw i64 %61, 4433
%63 = mul nsw i64 %60, -15137
%64 = add nsw i64 %62, %63
%65 = mul nsw i64 %54, 6270
%66 = add nsw i64 %62, %65
%67 = load i32, i32* %10
%68 = load i32, i32* %8
%69 = mul nsw i32 %68, %67
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds i32, i32* %10, i64 32
%72 = load i32, i32* %71
%73 = getelementptr inbounds i32, i32* %8, i64 32
%74 = load i32, i32* %73
%75 = mul nsw i32 %74, %72
%76 = sext i32 %75 to i64
%77 = add nsw i64 %76, %70
%78 = shl nsw i64 %77, 13
%79 = sub nsw i64 %70, %76
%80 = shl nsw i64 %79, 13
%81 = add nsw i64 %78, %66
%82 = sub nsw i64 %78, %66
%83 = add nsw i64 %80, %64
%84 = sub nsw i64 %80, %64
%85 = getelementptr inbounds i32, i32* %10, i64 56
%86 = load i32, i32* %85
%87 = getelementptr inbounds i32, i32* %8, i64 56
%88 = load i32, i32* %87
%89 = mul nsw i32 %88, %86
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds i32, i32* %10, i64 40
%92 = load i32, i32* %91
%93 = getelementptr inbounds i32, i32* %8, i64 40
%94 = load i32, i32* %93
%95 = mul nsw i32 %94, %92
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i32, i32* %10, i64 24
%98 = load i32, i32* %97
%99 = getelementptr inbounds i32, i32* %8, i64 24
%100 = load i32, i32* %99
%101 = mul nsw i32 %100, %98
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i32, i32* %8, i64 8
%104 = load i32, i32* %103
%105 = mul nsw i32 %104, %12
%106 = sext i32 %105 to i64
%107 = add nsw i64 %106, %90
%108 = add nsw i64 %102, %96
%109 = add nsw i64 %102, %90
%110 = add nsw i64 %106, %96
%111 = add nsw i64 %110, %109
%112 = mul nsw i64 %111, 9633
%113 = mul nsw i64 %90, 2446
%114 = mul nsw i64 %96, 16819
%115 = mul nsw i64 %102, 25172
%116 = mul nsw i64 %106, 12299
%117 = mul nsw i64 %107, -7373
%118 = mul nsw i64 %108, -20995
%119 = mul nsw i64 %109, -16069
%120 = mul nsw i64 %110, -3196
%121 = add nsw i64 %112, %119
%122 = add nsw i64 %112, %120
%123 = add nsw i64 %117, %113
%124 = add nsw i64 %123, %121
%125 = add nsw i64 %118, %114
%126 = add nsw i64 %125, %122
%127 = add nsw i64 %118, %115
%128 = add nsw i64 %127, %121
%129 = add nsw i64 %117, %116
%130 = add nsw i64 %129, %122
%131 = add nsw i64 %81, 1024
%132 = add nsw i64 %131, %130
%133 = lshr i64 %132, 11
%134 = trunc i64 %133 to i32
store i32 %134, i32* %9
%135 = sub nsw i64 %131, %130
%136 = lshr i64 %135, 11
%137 = trunc i64 %136 to i32
%138 = getelementptr inbounds i32, i32* %9, i64 56
store i32 %137, i32* %138
%139 = add nsw i64 %83, 1024
%140 = add nsw i64 %139, %128
%141 = lshr i64 %140, 11
%142 = trunc i64 %141 to i32
%143 = getelementptr inbounds i32, i32* %9, i64 8
store i32 %142, i32* %143
%144 = sub nsw i64 %139, %128
%145 = lshr i64 %144, 11
%146 = trunc i64 %145 to i32
%147 = getelementptr inbounds i32, i32* %9, i64 48
store i32 %146, i32* %147
%148 = add nsw i64 %84, 1024
%149 = add nsw i64 %148, %126
%150 = lshr i64 %149, 11
%151 = trunc i64 %150 to i32
%152 = getelementptr inbounds i32, i32* %9, i64 16
store i32 %151, i32* %152
%153 = sub nsw i64 %148, %126
%154 = lshr i64 %153, 11
%155 = trunc i64 %154 to i32
%156 = getelementptr inbounds i32, i32* %9, i64 40
store i32 %155, i32* %156
%157 = add nsw i64 %82, 1024
%158 = add nsw i64 %157, %124
%159 = lshr i64 %158, 11
%160 = trunc i64 %159 to i32
%161 = getelementptr inbounds i32, i32* %9, i64 24
store i32 %160, i32* %161
%162 = sub nsw i64 %157, %124
%163 = lshr i64 %162, 11
%164 = trunc i64 %163 to i32
br label %165
165: ; preds = %49, %38
%166 = phi i64 [ 32, %49 ], [ 56, %38 ]
%167 = phi i32 [ %164, %49 ], [ %42, %38 ]
%168 = getelementptr inbounds i32, i32* %9, i64 %166
store i32 %167, i32* %168
%169 = getelementptr inbounds i32, i32* %8, i64 1
%170 = getelementptr inbounds i32, i32* %9, i64 1
%171 = getelementptr inbounds i32, i32* %10, i64 1
%172 = add nsw i32 %7, -1
%173 = icmp ugt i32 %7, 1
br i1 %173, label %6, label %174
174: ; preds = %165, %174
%175 = phi i32 [ %284, %174 ], [ 0, %165 ]
%176 = phi i32* [ %282, %174 ], [ %0, %165 ]
%177 = phi i32* [ %283, %174 ], [ %5, %165 ]
%178 = getelementptr inbounds i32, i32* %177, i64 2
%179 = load i32, i32* %178
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds i32, i32* %177, i64 6
%182 = load i32, i32* %181
%183 = sext i32 %182 to i64
%184 = add nsw i64 %183, %180
%185 = mul nsw i64 %184, 4433
%186 = mul nsw i64 %183, -15137
%187 = add nsw i64 %185, %186
%188 = mul nsw i64 %180, 6270
%189 = add nsw i64 %185, %188
%190 = load i32, i32* %177
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds i32, i32* %177, i64 4
%193 = load i32, i32* %192
%194 = sext i32 %193 to i64
%195 = add nsw i64 %194, %191
%196 = shl nsw i64 %195, 13
%197 = sub nsw i64 %191, %194
%198 = shl nsw i64 %197, 13
%199 = add nsw i64 %196, %189
%200 = sub nsw i64 %196, %189
%201 = add nsw i64 %198, %187
%202 = sub nsw i64 %198, %187
%203 = getelementptr inbounds i32, i32* %177, i64 7
%204 = load i32, i32* %203
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds i32, i32* %177, i64 5
%207 = load i32, i32* %206
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds i32, i32* %177, i64 3
%210 = load i32, i32* %209
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i32, i32* %177, i64 1
%213 = load i32, i32* %212
%214 = sext i32 %213 to i64
%215 = add nsw i64 %214, %205
%216 = add nsw i64 %211, %208
%217 = add nsw i64 %211, %205
%218 = add nsw i64 %214, %208
%219 = add nsw i64 %218, %217
%220 = mul nsw i64 %219, 9633
%221 = mul nsw i64 %205, 2446
%222 = mul nsw i64 %208, 16819
%223 = mul nsw i64 %211, 25172
%224 = mul nsw i64 %214, 12299
%225 = mul nsw i64 %215, -7373
%226 = mul nsw i64 %216, -20995
%227 = mul nsw i64 %217, -16069
%228 = mul nsw i64 %218, -3196
%229 = add nsw i64 %220, %227
%230 = add nsw i64 %220, %228
%231 = add nsw i64 %225, %221
%232 = add nsw i64 %231, %229
%233 = add nsw i64 %226, %222
%234 = add nsw i64 %233, %230
%235 = add nsw i64 %226, %223
%236 = add nsw i64 %235, %229
%237 = add nsw i64 %225, %224
%238 = add nsw i64 %237, %230
%239 = add nsw i64 %199, 131072
%240 = add nsw i64 %239, %238
%241 = lshr i64 %240, 18
%242 = trunc i64 %241 to i32
%243 = add nsw i32 %242, 128
store i32 %243, i32* %176
%244 = sub nsw i64 %239, %238
%245 = lshr i64 %244, 18
%246 = trunc i64 %245 to i32
%247 = add nsw i32 %246, 128
%248 = getelementptr inbounds i32, i32* %176, i64 7
store i32 %247, i32* %248
%249 = add nsw i64 %201, 131072
%250 = add nsw i64 %249, %236
%251 = lshr i64 %250, 18
%252 = trunc i64 %251 to i32
%253 = add nsw i32 %252, 128
%254 = getelementptr inbounds i32, i32* %176, i64 1
store i32 %253, i32* %254
%255 = sub nsw i64 %249, %236
%256 = lshr i64 %255, 18
%257 = trunc i64 %256 to i32
%258 = add nsw i32 %257, 128
%259 = getelementptr inbounds i32, i32* %176, i64 6
store i32 %258, i32* %259
%260 = add nsw i64 %202, 131072
%261 = add nsw i64 %260, %234
%262 = lshr i64 %261, 18
%263 = trunc i64 %262 to i32
%264 = add nsw i32 %263, 128
%265 = getelementptr inbounds i32, i32* %176, i64 2
store i32 %264, i32* %265
%266 = sub nsw i64 %260, %234
%267 = lshr i64 %266, 18
%268 = trunc i64 %267 to i32
%269 = add nsw i32 %268, 128
%270 = getelementptr inbounds i32, i32* %176, i64 5
store i32 %269, i32* %270
%271 = add nsw i64 %200, 131072
%272 = add nsw i64 %271, %232
%273 = lshr i64 %272, 18
%274 = trunc i64 %273 to i32
%275 = add nsw i32 %274, 128
%276 = getelementptr inbounds i32, i32* %176, i64 3
store i32 %275, i32* %276
%277 = sub nsw i64 %271, %232
%278 = lshr i64 %277, 18
%279 = trunc i64 %278 to i32
%280 = add nsw i32 %279, 128
%281 = getelementptr inbounds i32, i32* %176, i64 4
store i32 %280, i32* %281
%282 = getelementptr inbounds i32, i32* %176, i64 8
%283 = getelementptr inbounds i32, i32* %177, i64 8
%284 = add nuw nsw i32 %175, 1
%285 = icmp eq i32 %284, 8
br i1 %285, label %286, label %174
286: ; preds = %174
ret void
}