#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int int32_t;

/* Variables and functions */
void idct_1D_u32(int32_t *in, int instride, int32_t *out, int outstride) {
  for (int x = 0; x < 8; x++)
    out[x * outstride] = 0;
  int32_t c;
  c = in[0 * instride];
  if (c) {
    int32_t c181 = c * 181;
    out[0 * outstride] += c181;
    out[1 * outstride] += c181;
    out[2 * outstride] += c181;
    out[3 * outstride] += c181;
    out[4 * outstride] += c181;
    out[5 * outstride] += c181;
    out[6 * outstride] += c181;
    out[7 * outstride] += c181;
  }
  c = in[1 * instride];
  if (c) {
    int32_t c251 = c * 251;
    int32_t c212 = c * 212;
    int32_t c142 = c * 142;
    int32_t c49 = c * 49;
    out[0 * outstride] += c251;
    out[1 * outstride] += c212;
    out[2 * outstride] += c142;
    out[3 * outstride] += c49;
    out[4 * outstride] -= c49;
    out[5 * outstride] -= c142;
    out[6 * outstride] -= c212;
    out[7 * outstride] -= c251;
  }
  c = in[2 * instride];
  if (c) {
    int32_t c236 = c * 236;
    int32_t c97 = c * 97;
    out[0 * outstride] += c236;
    out[1 * outstride] += c97;
    out[2 * outstride] -= c97;
    out[3 * outstride] -= c236;
    out[4 * outstride] -= c236;
    out[5 * outstride] -= c97;
    out[6 * outstride] += c97;
    out[7 * outstride] += c236;
  }
  c = in[3 * instride];
  if (c) {
    int32_t c212 = c * 212;
    int32_t c49 = c * 49;
    int32_t c251 = c * 251;
    int32_t c142 = c * 142;
    out[0 * outstride] += c212;
    out[1 * outstride] -= c49;
    out[2 * outstride] -= c251;
    out[3 * outstride] -= c142;
    out[4 * outstride] += c142;
    out[5 * outstride] += c251;
    out[6 * outstride] += c49;
    out[7 * outstride] -= c212;
  }
  c = in[4 * instride];
  if (c) {
    int32_t c181 = c * 181;
    out[0 * outstride] += c181;
    out[1 * outstride] -= c181;
    out[2 * outstride] -= c181;
    out[3 * outstride] += c181;
    out[4 * outstride] += c181;
    out[5 * outstride] -= c181;
    out[6 * outstride] -= c181;
    out[7 * outstride] += c181;
  }
  c = in[5 * instride];
  if (c) {
    int32_t c142 = c * 142;
    int32_t c251 = c * 251;
    int32_t c49 = c * 49;
    int32_t c212 = c * 212;
    out[0 * outstride] += c142;
    out[1 * outstride] -= c251;
    out[2 * outstride] += c49;
    out[3 * outstride] += c212;
    out[4 * outstride] -= c212;
    out[5 * outstride] -= c49;
    out[6 * outstride] += c251;
    out[7 * outstride] -= c142;
  }
  c = in[6 * instride];
  if (c) {
    int32_t c97 = c * 97;
    int32_t c236 = c * 236;
    out[0 * outstride] += c97;
    out[1 * outstride] -= c236;
    out[2 * outstride] += c236;
    out[3 * outstride] -= c97;
    out[4 * outstride] -= c97;
    out[5 * outstride] += c236;
    out[6 * outstride] -= c236;
    out[7 * outstride] += c97;
  }
  c = in[7 * instride];
  if (c) {
    int32_t c49 = c * 49;
    int32_t c142 = c * 142;
    int32_t c212 = c * 212;
    int32_t c251 = c * 251;
    out[0 * outstride] += c49;
    out[1 * outstride] -= c142;
    out[2 * outstride] += c212;
    out[3 * outstride] -= c251;
    out[4 * outstride] += c251;
    out[5 * outstride] -= c212;
    out[6 * outstride] += c142;
    out[7 * outstride] -= c49;
  }
}


x86 assembly (clang, -O0):
<idct_1D_u32>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
movl   $0x0,-0x20(%rbp)
cmpl   $0x8,-0x20(%rbp)
jge    1146 <idct_1D_u32+0x46>
mov    -0x18(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   -0x1c(%rbp),%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1119 <idct_1D_u32+0x19>
mov    -0x8(%rbp),%rax
imul   $0x0,-0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     1211 <idct_1D_u32+0x111>
imul   $0xb5,-0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x28(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     1301 <idct_1D_u32+0x201>
imul   $0xfb,-0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
imul   $0xd4,-0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
imul   $0x8e,-0x24(%rbp),%eax
mov    %eax,-0x34(%rbp)
imul   $0x31,-0x24(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x2c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x38(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x34(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x30(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x2c(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     13dd <idct_1D_u32+0x2dd>
imul   $0xec,-0x24(%rbp),%eax
mov    %eax,-0x3c(%rbp)
imul   $0x61,-0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x40(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
imul   $0x3,-0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     14cb <idct_1D_u32+0x3cb>
imul   $0xd4,-0x24(%rbp),%eax
mov    %eax,-0x44(%rbp)
imul   $0x31,-0x24(%rbp),%eax
mov    %eax,-0x48(%rbp)
imul   $0xfb,-0x24(%rbp),%eax
mov    %eax,-0x4c(%rbp)
imul   $0x8e,-0x24(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x44(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x4c(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x50(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x4c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x48(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x44(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     15a0 <idct_1D_u32+0x4a0>
imul   $0xb5,-0x24(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x54(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
imul   $0x5,-0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     168e <idct_1D_u32+0x58e>
imul   $0x8e,-0x24(%rbp),%eax
mov    %eax,-0x58(%rbp)
imul   $0xfb,-0x24(%rbp),%eax
mov    %eax,-0x5c(%rbp)
imul   $0x31,-0x24(%rbp),%eax
mov    %eax,-0x60(%rbp)
imul   $0xd4,-0x24(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x58(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x5c(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x60(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x64(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x60(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x5c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x58(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
imul   $0x6,-0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     1768 <idct_1D_u32+0x668>
imul   $0x61,-0x24(%rbp),%eax
mov    %eax,-0x68(%rbp)
imul   $0xec,-0x24(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x68(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x6c(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x6c(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x68(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x68(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x6c(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x6c(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x68(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
imul   $0x7,-0xc(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     1856 <idct_1D_u32+0x756>
imul   $0x31,-0x24(%rbp),%eax
mov    %eax,-0x70(%rbp)
imul   $0x8e,-0x24(%rbp),%eax
mov    %eax,-0x74(%rbp)
imul   $0xd4,-0x24(%rbp),%eax
mov    %eax,-0x78(%rbp)
imul   $0xfb,-0x24(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x70(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x0,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x74(%rbp),%esi
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x0,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x78(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x1,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x7c(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x3,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x7c(%rbp),%edx
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x78(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x5,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x74(%rbp),%edx
mov    -0x18(%rbp),%rax
imul   $0x6,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
add    (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x70(%rbp),%esi
mov    -0x18(%rbp),%rax
imul   $0x7,-0x1c(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%edx
sub    %esi,%edx
mov    %edx,(%rax,%rcx,4)
pop    %rbp
ret

x86 assembly (clang, -O2):
<idct_1D_u32>:
push   %rbp
push   %r14
push   %rbx
movslq %ecx,%rcx
movl   $0x0,(%rdx)
movl   $0x0,(%rdx,%rcx,4)
movl   $0x0,(%rdx,%rcx,8)
lea    (%rcx,%rcx,2),%r8
movl   $0x0,(%rdx,%r8,4)
mov    %rcx,%rax
shl    $0x4,%rax
movl   $0x0,(%rdx,%rax,1)
lea    (%rcx,%rcx,4),%rax
movl   $0x0,(%rdx,%rax,4)
movl   $0x0,(%rdx,%r8,8)
lea    (%rcx,%rcx,8),%rax
lea    (%rax,%rax,2),%rax
add    %rcx,%rax
movl   $0x0,(%rdx,%rax,1)
mov    (%rdi),%eax
test   %eax,%eax
je     11b0 <idct_1D_u32+0xb0>
imul   $0xb5,%eax,%r8d
add    %r8d,(%rdx)
add    %r8d,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%eax
movslq %eax,%r9
add    %r8d,(%rdx,%r9,4)
lea    (%rcx,%rcx,2),%eax
cltq
add    %r8d,(%rdx,%rax,4)
lea    0x0(,%rcx,4),%eax
cltq
add    %r8d,(%rdx,%rax,4)
lea    (%rcx,%rcx,4),%eax
cltq
add    %r8d,(%rdx,%rax,4)
lea    (%r9,%r9,2),%eax
cltq
add    %r8d,(%rdx,%rax,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
add    %r8d,(%rdx,%rax,4)
movslq %esi,%rax
mov    (%rdi,%rax,4),%r11d
test   %r11d,%r11d
je     121e <idct_1D_u32+0x11e>
imul   $0xfb,%r11d,%r8d
imul   $0xd4,%r11d,%r9d
imul   $0x8e,%r11d,%r10d
add    %r8d,(%rdx)
add    %r9d,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%eax
movslq %eax,%r14
add    %r10d,(%rdx,%r14,4)
imul   $0x31,%r11d,%eax
lea    (%rcx,%rcx,2),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    0x0(,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %eax,(%rdx,%rbx,4)
lea    (%rcx,%rcx,4),%eax
cltq
sub    %r10d,(%rdx,%rax,4)
lea    (%r14,%r14,2),%eax
cltq
sub    %r9d,(%rdx,%rax,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
sub    %r8d,(%rdx,%rax,4)
lea    (%rsi,%rsi,1),%r8d
movslq %r8d,%rax
mov    (%rdi,%rax,4),%eax
test   %eax,%eax
je     1280 <idct_1D_u32+0x180>
imul   $0xec,%eax,%r9d
imul   $0x61,%eax,%eax
add    %r9d,(%rdx)
add    %eax,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebx
movslq %ebx,%r10
sub    %eax,(%rdx,%r10,4)
lea    (%rcx,%rcx,2),%ebx
movslq %ebx,%rbx
sub    %r9d,(%rdx,%rbx,4)
lea    0x0(,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %r9d,(%rdx,%rbx,4)
lea    (%rcx,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %eax,(%rdx,%rbx,4)
lea    (%r10,%r10,2),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
add    %r9d,(%rdx,%rax,4)
lea    (%rsi,%rsi,2),%eax
cltq
mov    (%rdi,%rax,4),%eax
test   %eax,%eax
je     12ec <idct_1D_u32+0x1ec>
imul   $0xd4,%eax,%r9d
imul   $0x31,%eax,%r10d
imul   $0xfb,%eax,%r11d
add    %r9d,(%rdx)
sub    %r10d,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebx
movslq %ebx,%rbx
sub    %r11d,(%rdx,%rbx,4)
imul   $0x8e,%eax,%eax
lea    (%rcx,%rcx,2),%ebp
movslq %ebp,%rbp
sub    %eax,(%rdx,%rbp,4)
lea    0x0(,%rcx,4),%ebp
movslq %ebp,%rbp
add    %eax,(%rdx,%rbp,4)
lea    (%rcx,%rcx,4),%eax
cltq
add    %r11d,(%rdx,%rax,4)
lea    (%rbx,%rbx,2),%eax
cltq
add    %r10d,(%rdx,%rax,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
sub    %r9d,(%rdx,%rax,4)
lea    0x0(,%rsi,4),%eax
cltq
mov    (%rdi,%rax,4),%eax
test   %eax,%eax
je     1348 <idct_1D_u32+0x248>
imul   $0xb5,%eax,%eax
add    %eax,(%rdx)
sub    %eax,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebp
movslq %ebp,%rbp
sub    %eax,(%rdx,%rbp,4)
lea    (%rcx,%rcx,2),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    0x0(,%rcx,4),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    (%rcx,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %eax,(%rdx,%rbx,4)
lea    0x0(%rbp,%rbp,2),%ebp
movslq %ebp,%rbp
sub    %eax,(%rdx,%rbp,4)
lea    0x0(,%rcx,8),%ebp
sub    %ecx,%ebp
movslq %ebp,%rbp
add    %eax,(%rdx,%rbp,4)
lea    (%rsi,%rsi,4),%eax
cltq
mov    (%rdi,%rax,4),%eax
test   %eax,%eax
je     13b5 <idct_1D_u32+0x2b5>
imul   $0x8e,%eax,%r9d
imul   $0xfb,%eax,%r10d
imul   $0x31,%eax,%r11d
add    %r9d,(%rdx)
sub    %r10d,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebp
movslq %ebp,%rbp
add    %r11d,(%rdx,%rbp,4)
imul   $0xd4,%eax,%eax
lea    (%rcx,%rcx,2),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    0x0(,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %eax,(%rdx,%rbx,4)
lea    (%rcx,%rcx,4),%eax
cltq
sub    %r11d,(%rdx,%rax,4)
lea    0x0(%rbp,%rbp,2),%eax
cltq
add    %r10d,(%rdx,%rax,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
sub    %r9d,(%rdx,%rax,4)
lea    (%r8,%r8,2),%eax
cltq
mov    (%rdi,%rax,4),%eax
test   %eax,%eax
je     1411 <idct_1D_u32+0x311>
imul   $0x61,%eax,%ebp
imul   $0xec,%eax,%eax
add    %ebp,(%rdx)
sub    %eax,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebx
movslq %ebx,%r8
add    %eax,(%rdx,%r8,4)
lea    (%rcx,%rcx,2),%ebx
movslq %ebx,%rbx
sub    %ebp,(%rdx,%rbx,4)
lea    0x0(,%rcx,4),%ebx
movslq %ebx,%rbx
sub    %ebp,(%rdx,%rbx,4)
lea    (%rcx,%rcx,4),%ebx
movslq %ebx,%rbx
add    %eax,(%rdx,%rbx,4)
lea    (%r8,%r8,2),%ebx
movslq %ebx,%rbx
sub    %eax,(%rdx,%rbx,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
add    %ebp,(%rdx,%rax,4)
lea    0x0(,%rsi,8),%eax
sub    %esi,%eax
cltq
mov    (%rdi,%rax,4),%esi
test   %esi,%esi
je     147b <idct_1D_u32+0x37b>
imul   $0x31,%esi,%r8d
imul   $0x8e,%esi,%edi
imul   $0xd4,%esi,%ebp
add    %r8d,(%rdx)
sub    %edi,(%rdx,%rcx,4)
lea    (%rcx,%rcx,1),%ebx
movslq %ebx,%rbx
add    %ebp,(%rdx,%rbx,4)
imul   $0xfb,%esi,%esi
lea    (%rcx,%rcx,2),%eax
cltq
sub    %esi,(%rdx,%rax,4)
lea    0x0(,%rcx,4),%eax
cltq
add    %esi,(%rdx,%rax,4)
lea    (%rcx,%rcx,4),%eax
cltq
sub    %ebp,(%rdx,%rax,4)
lea    (%rbx,%rbx,2),%eax
cltq
add    %edi,(%rdx,%rax,4)
lea    0x0(,%rcx,8),%eax
sub    %ecx,%eax
cltq
sub    %r8d,(%rdx,%rax,4)
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
define void @idct_1D_u32(i32* %0, i32 %1, i32* %2, i32 %3) {
%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 i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
store i32* %0, i32** %5
store i32 %1, i32* %6
store i32* %2, i32** %7
store i32 %3, i32* %8
store i32 0, i32* %9
br label %33
33: ; preds = %43, %4
%34 = load i32, i32* %9
%35 = icmp slt i32 %34, 8
br i1 %35, label %36, label %46
36: ; preds = %33
%37 = load i32*, i32** %7
%38 = load i32, i32* %9
%39 = load i32, i32* %8
%40 = mul nsw i32 %38, %39
%41 = sext i32 %40 to i64
%42 = getelementptr inbounds i32, i32* %37, i64 %41
store i32 0, i32* %42
br label %43
43: ; preds = %36
%44 = load i32, i32* %9
%45 = add nsw i32 %44, 1
store i32 %45, i32* %9
br label %33
46: ; preds = %33
%47 = load i32*, i32** %5
%48 = load i32, i32* %6
%49 = mul nsw i32 0, %48
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds i32, i32* %47, i64 %50
%52 = load i32, i32* %51
store i32 %52, i32* %10
%53 = load i32, i32* %10
%54 = icmp ne i32 %53, 0
br i1 %54, label %55, label %122
55: ; preds = %46
%56 = load i32, i32* %10
%57 = mul nsw i32 %56, 181
store i32 %57, i32* %11
%58 = load i32, i32* %11
%59 = load i32*, i32** %7
%60 = load i32, i32* %8
%61 = mul nsw i32 0, %60
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds i32, i32* %59, i64 %62
%64 = load i32, i32* %63
%65 = add nsw i32 %64, %58
store i32 %65, i32* %63
%66 = load i32, i32* %11
%67 = load i32*, i32** %7
%68 = load i32, i32* %8
%69 = mul nsw i32 1, %68
%70 = sext i32 %69 to i64
%71 = getelementptr inbounds i32, i32* %67, i64 %70
%72 = load i32, i32* %71
%73 = add nsw i32 %72, %66
store i32 %73, i32* %71
%74 = load i32, i32* %11
%75 = load i32*, i32** %7
%76 = load i32, i32* %8
%77 = mul nsw i32 2, %76
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds i32, i32* %75, i64 %78
%80 = load i32, i32* %79
%81 = add nsw i32 %80, %74
store i32 %81, i32* %79
%82 = load i32, i32* %11
%83 = load i32*, i32** %7
%84 = load i32, i32* %8
%85 = mul nsw i32 3, %84
%86 = sext i32 %85 to i64
%87 = getelementptr inbounds i32, i32* %83, i64 %86
%88 = load i32, i32* %87
%89 = add nsw i32 %88, %82
store i32 %89, i32* %87
%90 = load i32, i32* %11
%91 = load i32*, i32** %7
%92 = load i32, i32* %8
%93 = mul nsw i32 4, %92
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds i32, i32* %91, i64 %94
%96 = load i32, i32* %95
%97 = add nsw i32 %96, %90
store i32 %97, i32* %95
%98 = load i32, i32* %11
%99 = load i32*, i32** %7
%100 = load i32, i32* %8
%101 = mul nsw i32 5, %100
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i32, i32* %99, i64 %102
%104 = load i32, i32* %103
%105 = add nsw i32 %104, %98
store i32 %105, i32* %103
%106 = load i32, i32* %11
%107 = load i32*, i32** %7
%108 = load i32, i32* %8
%109 = mul nsw i32 6, %108
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds i32, i32* %107, i64 %110
%112 = load i32, i32* %111
%113 = add nsw i32 %112, %106
store i32 %113, i32* %111
%114 = load i32, i32* %11
%115 = load i32*, i32** %7
%116 = load i32, i32* %8
%117 = mul nsw i32 7, %116
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds i32, i32* %115, i64 %118
%120 = load i32, i32* %119
%121 = add nsw i32 %120, %114
store i32 %121, i32* %119
br label %122
122: ; preds = %55, %46
%123 = load i32*, i32** %5
%124 = load i32, i32* %6
%125 = mul nsw i32 1, %124
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds i32, i32* %123, i64 %126
%128 = load i32, i32* %127
store i32 %128, i32* %10
%129 = load i32, i32* %10
%130 = icmp ne i32 %129, 0
br i1 %130, label %131, label %204
131: ; preds = %122
%132 = load i32, i32* %10
%133 = mul nsw i32 %132, 251
store i32 %133, i32* %12
%134 = load i32, i32* %10
%135 = mul nsw i32 %134, 212
store i32 %135, i32* %13
%136 = load i32, i32* %10
%137 = mul nsw i32 %136, 142
store i32 %137, i32* %14
%138 = load i32, i32* %10
%139 = mul nsw i32 %138, 49
store i32 %139, i32* %15
%140 = load i32, i32* %12
%141 = load i32*, i32** %7
%142 = load i32, i32* %8
%143 = mul nsw i32 0, %142
%144 = sext i32 %143 to i64
%145 = getelementptr inbounds i32, i32* %141, i64 %144
%146 = load i32, i32* %145
%147 = add nsw i32 %146, %140
store i32 %147, i32* %145
%148 = load i32, i32* %13
%149 = load i32*, i32** %7
%150 = load i32, i32* %8
%151 = mul nsw i32 1, %150
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds i32, i32* %149, i64 %152
%154 = load i32, i32* %153
%155 = add nsw i32 %154, %148
store i32 %155, i32* %153
%156 = load i32, i32* %14
%157 = load i32*, i32** %7
%158 = load i32, i32* %8
%159 = mul nsw i32 2, %158
%160 = sext i32 %159 to i64
%161 = getelementptr inbounds i32, i32* %157, i64 %160
%162 = load i32, i32* %161
%163 = add nsw i32 %162, %156
store i32 %163, i32* %161
%164 = load i32, i32* %15
%165 = load i32*, i32** %7
%166 = load i32, i32* %8
%167 = mul nsw i32 3, %166
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds i32, i32* %165, i64 %168
%170 = load i32, i32* %169
%171 = add nsw i32 %170, %164
store i32 %171, i32* %169
%172 = load i32, i32* %15
%173 = load i32*, i32** %7
%174 = load i32, i32* %8
%175 = mul nsw i32 4, %174
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds i32, i32* %173, i64 %176
%178 = load i32, i32* %177
%179 = sub nsw i32 %178, %172
store i32 %179, i32* %177
%180 = load i32, i32* %14
%181 = load i32*, i32** %7
%182 = load i32, i32* %8
%183 = mul nsw i32 5, %182
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds i32, i32* %181, i64 %184
%186 = load i32, i32* %185
%187 = sub nsw i32 %186, %180
store i32 %187, i32* %185
%188 = load i32, i32* %13
%189 = load i32*, i32** %7
%190 = load i32, i32* %8
%191 = mul nsw i32 6, %190
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds i32, i32* %189, i64 %192
%194 = load i32, i32* %193
%195 = sub nsw i32 %194, %188
store i32 %195, i32* %193
%196 = load i32, i32* %12
%197 = load i32*, i32** %7
%198 = load i32, i32* %8
%199 = mul nsw i32 7, %198
%200 = sext i32 %199 to i64
%201 = getelementptr inbounds i32, i32* %197, i64 %200
%202 = load i32, i32* %201
%203 = sub nsw i32 %202, %196
store i32 %203, i32* %201
br label %204
204: ; preds = %131, %122
%205 = load i32*, i32** %5
%206 = load i32, i32* %6
%207 = mul nsw i32 2, %206
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds i32, i32* %205, i64 %208
%210 = load i32, i32* %209
store i32 %210, i32* %10
%211 = load i32, i32* %10
%212 = icmp ne i32 %211, 0
br i1 %212, label %213, label %282
213: ; preds = %204
%214 = load i32, i32* %10
%215 = mul nsw i32 %214, 236
store i32 %215, i32* %16
%216 = load i32, i32* %10
%217 = mul nsw i32 %216, 97
store i32 %217, i32* %17
%218 = load i32, i32* %16
%219 = load i32*, i32** %7
%220 = load i32, i32* %8
%221 = mul nsw i32 0, %220
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds i32, i32* %219, i64 %222
%224 = load i32, i32* %223
%225 = add nsw i32 %224, %218
store i32 %225, i32* %223
%226 = load i32, i32* %17
%227 = load i32*, i32** %7
%228 = load i32, i32* %8
%229 = mul nsw i32 1, %228
%230 = sext i32 %229 to i64
%231 = getelementptr inbounds i32, i32* %227, i64 %230
%232 = load i32, i32* %231
%233 = add nsw i32 %232, %226
store i32 %233, i32* %231
%234 = load i32, i32* %17
%235 = load i32*, i32** %7
%236 = load i32, i32* %8
%237 = mul nsw i32 2, %236
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds i32, i32* %235, i64 %238
%240 = load i32, i32* %239
%241 = sub nsw i32 %240, %234
store i32 %241, i32* %239
%242 = load i32, i32* %16
%243 = load i32*, i32** %7
%244 = load i32, i32* %8
%245 = mul nsw i32 3, %244
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds i32, i32* %243, i64 %246
%248 = load i32, i32* %247
%249 = sub nsw i32 %248, %242
store i32 %249, i32* %247
%250 = load i32, i32* %16
%251 = load i32*, i32** %7
%252 = load i32, i32* %8
%253 = mul nsw i32 4, %252
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds i32, i32* %251, i64 %254
%256 = load i32, i32* %255
%257 = sub nsw i32 %256, %250
store i32 %257, i32* %255
%258 = load i32, i32* %17
%259 = load i32*, i32** %7
%260 = load i32, i32* %8
%261 = mul nsw i32 5, %260
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds i32, i32* %259, i64 %262
%264 = load i32, i32* %263
%265 = sub nsw i32 %264, %258
store i32 %265, i32* %263
%266 = load i32, i32* %17
%267 = load i32*, i32** %7
%268 = load i32, i32* %8
%269 = mul nsw i32 6, %268
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds i32, i32* %267, i64 %270
%272 = load i32, i32* %271
%273 = add nsw i32 %272, %266
store i32 %273, i32* %271
%274 = load i32, i32* %16
%275 = load i32*, i32** %7
%276 = load i32, i32* %8
%277 = mul nsw i32 7, %276
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds i32, i32* %275, i64 %278
%280 = load i32, i32* %279
%281 = add nsw i32 %280, %274
store i32 %281, i32* %279
br label %282
282: ; preds = %213, %204
%283 = load i32*, i32** %5
%284 = load i32, i32* %6
%285 = mul nsw i32 3, %284
%286 = sext i32 %285 to i64
%287 = getelementptr inbounds i32, i32* %283, i64 %286
%288 = load i32, i32* %287
store i32 %288, i32* %10
%289 = load i32, i32* %10
%290 = icmp ne i32 %289, 0
br i1 %290, label %291, label %364
291: ; preds = %282
%292 = load i32, i32* %10
%293 = mul nsw i32 %292, 212
store i32 %293, i32* %18
%294 = load i32, i32* %10
%295 = mul nsw i32 %294, 49
store i32 %295, i32* %19
%296 = load i32, i32* %10
%297 = mul nsw i32 %296, 251
store i32 %297, i32* %20
%298 = load i32, i32* %10
%299 = mul nsw i32 %298, 142
store i32 %299, i32* %21
%300 = load i32, i32* %18
%301 = load i32*, i32** %7
%302 = load i32, i32* %8
%303 = mul nsw i32 0, %302
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds i32, i32* %301, i64 %304
%306 = load i32, i32* %305
%307 = add nsw i32 %306, %300
store i32 %307, i32* %305
%308 = load i32, i32* %19
%309 = load i32*, i32** %7
%310 = load i32, i32* %8
%311 = mul nsw i32 1, %310
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds i32, i32* %309, i64 %312
%314 = load i32, i32* %313
%315 = sub nsw i32 %314, %308
store i32 %315, i32* %313
%316 = load i32, i32* %20
%317 = load i32*, i32** %7
%318 = load i32, i32* %8
%319 = mul nsw i32 2, %318
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds i32, i32* %317, i64 %320
%322 = load i32, i32* %321
%323 = sub nsw i32 %322, %316
store i32 %323, i32* %321
%324 = load i32, i32* %21
%325 = load i32*, i32** %7
%326 = load i32, i32* %8
%327 = mul nsw i32 3, %326
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds i32, i32* %325, i64 %328
%330 = load i32, i32* %329
%331 = sub nsw i32 %330, %324
store i32 %331, i32* %329
%332 = load i32, i32* %21
%333 = load i32*, i32** %7
%334 = load i32, i32* %8
%335 = mul nsw i32 4, %334
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds i32, i32* %333, i64 %336
%338 = load i32, i32* %337
%339 = add nsw i32 %338, %332
store i32 %339, i32* %337
%340 = load i32, i32* %20
%341 = load i32*, i32** %7
%342 = load i32, i32* %8
%343 = mul nsw i32 5, %342
%344 = sext i32 %343 to i64
%345 = getelementptr inbounds i32, i32* %341, i64 %344
%346 = load i32, i32* %345
%347 = add nsw i32 %346, %340
store i32 %347, i32* %345
%348 = load i32, i32* %19
%349 = load i32*, i32** %7
%350 = load i32, i32* %8
%351 = mul nsw i32 6, %350
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds i32, i32* %349, i64 %352
%354 = load i32, i32* %353
%355 = add nsw i32 %354, %348
store i32 %355, i32* %353
%356 = load i32, i32* %18
%357 = load i32*, i32** %7
%358 = load i32, i32* %8
%359 = mul nsw i32 7, %358
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds i32, i32* %357, i64 %360
%362 = load i32, i32* %361
%363 = sub nsw i32 %362, %356
store i32 %363, i32* %361
br label %364
364: ; preds = %291, %282
%365 = load i32*, i32** %5
%366 = load i32, i32* %6
%367 = mul nsw i32 4, %366
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds i32, i32* %365, i64 %368
%370 = load i32, i32* %369
store i32 %370, i32* %10
%371 = load i32, i32* %10
%372 = icmp ne i32 %371, 0
br i1 %372, label %373, label %440
373: ; preds = %364
%374 = load i32, i32* %10
%375 = mul nsw i32 %374, 181
store i32 %375, i32* %22
%376 = load i32, i32* %22
%377 = load i32*, i32** %7
%378 = load i32, i32* %8
%379 = mul nsw i32 0, %378
%380 = sext i32 %379 to i64
%381 = getelementptr inbounds i32, i32* %377, i64 %380
%382 = load i32, i32* %381
%383 = add nsw i32 %382, %376
store i32 %383, i32* %381
%384 = load i32, i32* %22
%385 = load i32*, i32** %7
%386 = load i32, i32* %8
%387 = mul nsw i32 1, %386
%388 = sext i32 %387 to i64
%389 = getelementptr inbounds i32, i32* %385, i64 %388
%390 = load i32, i32* %389
%391 = sub nsw i32 %390, %384
store i32 %391, i32* %389
%392 = load i32, i32* %22
%393 = load i32*, i32** %7
%394 = load i32, i32* %8
%395 = mul nsw i32 2, %394
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds i32, i32* %393, i64 %396
%398 = load i32, i32* %397
%399 = sub nsw i32 %398, %392
store i32 %399, i32* %397
%400 = load i32, i32* %22
%401 = load i32*, i32** %7
%402 = load i32, i32* %8
%403 = mul nsw i32 3, %402
%404 = sext i32 %403 to i64
%405 = getelementptr inbounds i32, i32* %401, i64 %404
%406 = load i32, i32* %405
%407 = add nsw i32 %406, %400
store i32 %407, i32* %405
%408 = load i32, i32* %22
%409 = load i32*, i32** %7
%410 = load i32, i32* %8
%411 = mul nsw i32 4, %410
%412 = sext i32 %411 to i64
%413 = getelementptr inbounds i32, i32* %409, i64 %412
%414 = load i32, i32* %413
%415 = add nsw i32 %414, %408
store i32 %415, i32* %413
%416 = load i32, i32* %22
%417 = load i32*, i32** %7
%418 = load i32, i32* %8
%419 = mul nsw i32 5, %418
%420 = sext i32 %419 to i64
%421 = getelementptr inbounds i32, i32* %417, i64 %420
%422 = load i32, i32* %421
%423 = sub nsw i32 %422, %416
store i32 %423, i32* %421
%424 = load i32, i32* %22
%425 = load i32*, i32** %7
%426 = load i32, i32* %8
%427 = mul nsw i32 6, %426
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds i32, i32* %425, i64 %428
%430 = load i32, i32* %429
%431 = sub nsw i32 %430, %424
store i32 %431, i32* %429
%432 = load i32, i32* %22
%433 = load i32*, i32** %7
%434 = load i32, i32* %8
%435 = mul nsw i32 7, %434
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds i32, i32* %433, i64 %436
%438 = load i32, i32* %437
%439 = add nsw i32 %438, %432
store i32 %439, i32* %437
br label %440
440: ; preds = %373, %364
%441 = load i32*, i32** %5
%442 = load i32, i32* %6
%443 = mul nsw i32 5, %442
%444 = sext i32 %443 to i64
%445 = getelementptr inbounds i32, i32* %441, i64 %444
%446 = load i32, i32* %445
store i32 %446, i32* %10
%447 = load i32, i32* %10
%448 = icmp ne i32 %447, 0
br i1 %448, label %449, label %522
449: ; preds = %440
%450 = load i32, i32* %10
%451 = mul nsw i32 %450, 142
store i32 %451, i32* %23
%452 = load i32, i32* %10
%453 = mul nsw i32 %452, 251
store i32 %453, i32* %24
%454 = load i32, i32* %10
%455 = mul nsw i32 %454, 49
store i32 %455, i32* %25
%456 = load i32, i32* %10
%457 = mul nsw i32 %456, 212
store i32 %457, i32* %26
%458 = load i32, i32* %23
%459 = load i32*, i32** %7
%460 = load i32, i32* %8
%461 = mul nsw i32 0, %460
%462 = sext i32 %461 to i64
%463 = getelementptr inbounds i32, i32* %459, i64 %462
%464 = load i32, i32* %463
%465 = add nsw i32 %464, %458
store i32 %465, i32* %463
%466 = load i32, i32* %24
%467 = load i32*, i32** %7
%468 = load i32, i32* %8
%469 = mul nsw i32 1, %468
%470 = sext i32 %469 to i64
%471 = getelementptr inbounds i32, i32* %467, i64 %470
%472 = load i32, i32* %471
%473 = sub nsw i32 %472, %466
store i32 %473, i32* %471
%474 = load i32, i32* %25
%475 = load i32*, i32** %7
%476 = load i32, i32* %8
%477 = mul nsw i32 2, %476
%478 = sext i32 %477 to i64
%479 = getelementptr inbounds i32, i32* %475, i64 %478
%480 = load i32, i32* %479
%481 = add nsw i32 %480, %474
store i32 %481, i32* %479
%482 = load i32, i32* %26
%483 = load i32*, i32** %7
%484 = load i32, i32* %8
%485 = mul nsw i32 3, %484
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds i32, i32* %483, i64 %486
%488 = load i32, i32* %487
%489 = add nsw i32 %488, %482
store i32 %489, i32* %487
%490 = load i32, i32* %26
%491 = load i32*, i32** %7
%492 = load i32, i32* %8
%493 = mul nsw i32 4, %492
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds i32, i32* %491, i64 %494
%496 = load i32, i32* %495
%497 = sub nsw i32 %496, %490
store i32 %497, i32* %495
%498 = load i32, i32* %25
%499 = load i32*, i32** %7
%500 = load i32, i32* %8
%501 = mul nsw i32 5, %500
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds i32, i32* %499, i64 %502
%504 = load i32, i32* %503
%505 = sub nsw i32 %504, %498
store i32 %505, i32* %503
%506 = load i32, i32* %24
%507 = load i32*, i32** %7
%508 = load i32, i32* %8
%509 = mul nsw i32 6, %508
%510 = sext i32 %509 to i64
%511 = getelementptr inbounds i32, i32* %507, i64 %510
%512 = load i32, i32* %511
%513 = add nsw i32 %512, %506
store i32 %513, i32* %511
%514 = load i32, i32* %23
%515 = load i32*, i32** %7
%516 = load i32, i32* %8
%517 = mul nsw i32 7, %516
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds i32, i32* %515, i64 %518
%520 = load i32, i32* %519
%521 = sub nsw i32 %520, %514
store i32 %521, i32* %519
br label %522
522: ; preds = %449, %440
%523 = load i32*, i32** %5
%524 = load i32, i32* %6
%525 = mul nsw i32 6, %524
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds i32, i32* %523, i64 %526
%528 = load i32, i32* %527
store i32 %528, i32* %10
%529 = load i32, i32* %10
%530 = icmp ne i32 %529, 0
br i1 %530, label %531, label %600
531: ; preds = %522
%532 = load i32, i32* %10
%533 = mul nsw i32 %532, 97
store i32 %533, i32* %27
%534 = load i32, i32* %10
%535 = mul nsw i32 %534, 236
store i32 %535, i32* %28
%536 = load i32, i32* %27
%537 = load i32*, i32** %7
%538 = load i32, i32* %8
%539 = mul nsw i32 0, %538
%540 = sext i32 %539 to i64
%541 = getelementptr inbounds i32, i32* %537, i64 %540
%542 = load i32, i32* %541
%543 = add nsw i32 %542, %536
store i32 %543, i32* %541
%544 = load i32, i32* %28
%545 = load i32*, i32** %7
%546 = load i32, i32* %8
%547 = mul nsw i32 1, %546
%548 = sext i32 %547 to i64
%549 = getelementptr inbounds i32, i32* %545, i64 %548
%550 = load i32, i32* %549
%551 = sub nsw i32 %550, %544
store i32 %551, i32* %549
%552 = load i32, i32* %28
%553 = load i32*, i32** %7
%554 = load i32, i32* %8
%555 = mul nsw i32 2, %554
%556 = sext i32 %555 to i64
%557 = getelementptr inbounds i32, i32* %553, i64 %556
%558 = load i32, i32* %557
%559 = add nsw i32 %558, %552
store i32 %559, i32* %557
%560 = load i32, i32* %27
%561 = load i32*, i32** %7
%562 = load i32, i32* %8
%563 = mul nsw i32 3, %562
%564 = sext i32 %563 to i64
%565 = getelementptr inbounds i32, i32* %561, i64 %564
%566 = load i32, i32* %565
%567 = sub nsw i32 %566, %560
store i32 %567, i32* %565
%568 = load i32, i32* %27
%569 = load i32*, i32** %7
%570 = load i32, i32* %8
%571 = mul nsw i32 4, %570
%572 = sext i32 %571 to i64
%573 = getelementptr inbounds i32, i32* %569, i64 %572
%574 = load i32, i32* %573
%575 = sub nsw i32 %574, %568
store i32 %575, i32* %573
%576 = load i32, i32* %28
%577 = load i32*, i32** %7
%578 = load i32, i32* %8
%579 = mul nsw i32 5, %578
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds i32, i32* %577, i64 %580
%582 = load i32, i32* %581
%583 = add nsw i32 %582, %576
store i32 %583, i32* %581
%584 = load i32, i32* %28
%585 = load i32*, i32** %7
%586 = load i32, i32* %8
%587 = mul nsw i32 6, %586
%588 = sext i32 %587 to i64
%589 = getelementptr inbounds i32, i32* %585, i64 %588
%590 = load i32, i32* %589
%591 = sub nsw i32 %590, %584
store i32 %591, i32* %589
%592 = load i32, i32* %27
%593 = load i32*, i32** %7
%594 = load i32, i32* %8
%595 = mul nsw i32 7, %594
%596 = sext i32 %595 to i64
%597 = getelementptr inbounds i32, i32* %593, i64 %596
%598 = load i32, i32* %597
%599 = add nsw i32 %598, %592
store i32 %599, i32* %597
br label %600
600: ; preds = %531, %522
%601 = load i32*, i32** %5
%602 = load i32, i32* %6
%603 = mul nsw i32 7, %602
%604 = sext i32 %603 to i64
%605 = getelementptr inbounds i32, i32* %601, i64 %604
%606 = load i32, i32* %605
store i32 %606, i32* %10
%607 = load i32, i32* %10
%608 = icmp ne i32 %607, 0
br i1 %608, label %609, label %682
609: ; preds = %600
%610 = load i32, i32* %10
%611 = mul nsw i32 %610, 49
store i32 %611, i32* %29
%612 = load i32, i32* %10
%613 = mul nsw i32 %612, 142
store i32 %613, i32* %30
%614 = load i32, i32* %10
%615 = mul nsw i32 %614, 212
store i32 %615, i32* %31
%616 = load i32, i32* %10
%617 = mul nsw i32 %616, 251
store i32 %617, i32* %32
%618 = load i32, i32* %29
%619 = load i32*, i32** %7
%620 = load i32, i32* %8
%621 = mul nsw i32 0, %620
%622 = sext i32 %621 to i64
%623 = getelementptr inbounds i32, i32* %619, i64 %622
%624 = load i32, i32* %623
%625 = add nsw i32 %624, %618
store i32 %625, i32* %623
%626 = load i32, i32* %30
%627 = load i32*, i32** %7
%628 = load i32, i32* %8
%629 = mul nsw i32 1, %628
%630 = sext i32 %629 to i64
%631 = getelementptr inbounds i32, i32* %627, i64 %630
%632 = load i32, i32* %631
%633 = sub nsw i32 %632, %626
store i32 %633, i32* %631
%634 = load i32, i32* %31
%635 = load i32*, i32** %7
%636 = load i32, i32* %8
%637 = mul nsw i32 2, %636
%638 = sext i32 %637 to i64
%639 = getelementptr inbounds i32, i32* %635, i64 %638
%640 = load i32, i32* %639
%641 = add nsw i32 %640, %634
store i32 %641, i32* %639
%642 = load i32, i32* %32
%643 = load i32*, i32** %7
%644 = load i32, i32* %8
%645 = mul nsw i32 3, %644
%646 = sext i32 %645 to i64
%647 = getelementptr inbounds i32, i32* %643, i64 %646
%648 = load i32, i32* %647
%649 = sub nsw i32 %648, %642
store i32 %649, i32* %647
%650 = load i32, i32* %32
%651 = load i32*, i32** %7
%652 = load i32, i32* %8
%653 = mul nsw i32 4, %652
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds i32, i32* %651, i64 %654
%656 = load i32, i32* %655
%657 = add nsw i32 %656, %650
store i32 %657, i32* %655
%658 = load i32, i32* %31
%659 = load i32*, i32** %7
%660 = load i32, i32* %8
%661 = mul nsw i32 5, %660
%662 = sext i32 %661 to i64
%663 = getelementptr inbounds i32, i32* %659, i64 %662
%664 = load i32, i32* %663
%665 = sub nsw i32 %664, %658
store i32 %665, i32* %663
%666 = load i32, i32* %30
%667 = load i32*, i32** %7
%668 = load i32, i32* %8
%669 = mul nsw i32 6, %668
%670 = sext i32 %669 to i64
%671 = getelementptr inbounds i32, i32* %667, i64 %670
%672 = load i32, i32* %671
%673 = add nsw i32 %672, %666
store i32 %673, i32* %671
%674 = load i32, i32* %29
%675 = load i32*, i32** %7
%676 = load i32, i32* %8
%677 = mul nsw i32 7, %676
%678 = sext i32 %677 to i64
%679 = getelementptr inbounds i32, i32* %675, i64 %678
%680 = load i32, i32* %679
%681 = sub nsw i32 %680, %674
store i32 %681, i32* %679
br label %682
682: ; preds = %609, %600
ret void
}

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