void LeeDct(x, y) int *x;
int *y;
{
  register int rx0, rx1, rx2, rx3, rx4, rx5, rx6, rx7;
  register int sx0, sx1, sx2, sx3;
  register int hold, c2;
  register int *iptr, *jptr;
  for (jptr = y, iptr = x; iptr < x + 64; jptr += 8, iptr += 8) {
    rx0 = iptr[0] + iptr[7];
    sx0 = (((1004L * (iptr[0] - iptr[7]))) >> (9));
    rx1 = iptr[1] + iptr[6];
    sx1 = (((851L * (iptr[1] - iptr[6]))) >> (9));
    rx3 = iptr[2] + iptr[5];
    sx3 = (((569L * (iptr[2] - iptr[5]))) >> (9));
    rx2 = iptr[3] + iptr[4];
    sx2 = (((200L * (iptr[3] - iptr[4]))) >> (9));
    rx4 = rx0 + rx2;
    rx5 = rx1 + rx3;
    rx6 = (((946L * (rx0 - rx2))) >> (9));
    rx7 = (((392L * (rx1 - rx3))) >> (9));
    jptr[0] = (((724L * (rx4 + rx5))) >> (9));
    jptr[4] = (((724L * (rx4 - rx5))) >> (9));
    jptr[2] = hold = rx6 + rx7;
    jptr[6] = (((724L * (rx6 - rx7))) >> (9)) - hold;
    rx4 = sx0 + sx2;
    rx5 = sx1 + sx3;
    rx6 = (((946L * (sx0 - sx2))) >> (9));
    rx7 = (((392L * (sx1 - sx3))) >> (9));
    jptr[1] = hold = rx4 + rx5;
    c2 = rx6 + rx7;
    jptr[3] = hold = c2 - hold;
    jptr[5] = hold = (((724L * (rx4 - rx5))) >> (9)) - hold;
    jptr[7] = (((724L * (rx6 - rx7))) >> (9)) - c2 - hold;
  }
  for (jptr = y, iptr = y; iptr < y + 8; jptr++, iptr++) {
    rx0 = iptr[0] + iptr[56];
    sx0 = (((1004L * (iptr[0] - iptr[56]))) >> (9));
    rx1 = iptr[8] + iptr[48];
    sx1 = (((851L * (iptr[8] - iptr[48]))) >> (9));
    rx3 = iptr[16] + iptr[40];
    sx3 = (((569L * (iptr[16] - iptr[40]))) >> (9));
    rx2 = iptr[24] + iptr[32];
    sx2 = (((200L * (iptr[24] - iptr[32]))) >> (9));
    rx4 = rx0 + rx2;
    rx5 = rx1 + rx3;
    rx6 = (((946L * (rx0 - rx2))) >> (9));
    rx7 = (((392L * (rx1 - rx3))) >> (9));
    rx0 = (((724L * (rx4 + rx5))) >> (9));
    rx2 = (((724L * (rx4 - rx5))) >> (9));
    rx1 = rx6 + rx7;
    rx3 = (((724L * (rx6 - rx7))) >> (9)) - rx1;
    jptr[0] = (((rx0 < 0) ? (rx0 - 8) : (rx0 + 8)) / 16);
    ;
    jptr[16] = (((rx1 < 0) ? (rx1 - 8) : (rx1 + 8)) / 16);
    ;
    jptr[32] = (((rx2 < 0) ? (rx2 - 8) : (rx2 + 8)) / 16);
    ;
    jptr[48] = (((rx3 < 0) ? (rx3 - 8) : (rx3 + 8)) / 16);
    ;
    rx4 = sx0 + sx2;
    rx5 = sx1 + sx3;
    rx6 = (((946L * (sx0 - sx2))) >> (9));
    rx7 = (((392L * (sx1 - sx3))) >> (9));
    rx0 = rx4 + rx5;
    c2 = rx6 + rx7;
    rx1 = c2 - rx0;
    rx2 = (((724L * (rx4 - rx5))) >> (9)) - rx1;
    rx3 = (((724L * (rx6 - rx7))) >> (9)) - c2 - rx2;
    jptr[8] = (((rx0 < 0) ? (rx0 - 8) : (rx0 + 8)) / 16);
    ;
    jptr[24] = (((rx1 < 0) ? (rx1 - 8) : (rx1 + 8)) / 16);
    ;
    jptr[40] = (((rx2 < 0) ? (rx2 - 8) : (rx2 + 8)) / 16);
    ;
    jptr[56] = (((rx3 < 0) ? (rx3 - 8) : (rx3 + 8)) / 16);
    ;
  }
}


x86 assembly (clang, -O0):
<LeeDct>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x8(%rbp),%rcx
add    $0x100,%rcx
cmp    %rcx,%rax
jae    136a <LeeDct+0x26a>
mov    -0x50(%rbp),%rax
mov    (%rax),%eax
mov    -0x50(%rbp),%rcx
add    0x1c(%rcx),%eax
mov    %eax,-0x14(%rbp)
mov    -0x50(%rbp),%rax
mov    (%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0x1c(%rcx),%eax
cltq
imul   $0x3ec,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x34(%rbp)
mov    -0x50(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0x18(%rcx),%eax
mov    %eax,-0x18(%rbp)
mov    -0x50(%rbp),%rax
mov    0x4(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0x18(%rcx),%eax
cltq
imul   $0x353,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x38(%rbp)
mov    -0x50(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0x14(%rcx),%eax
mov    %eax,-0x20(%rbp)
mov    -0x50(%rbp),%rax
mov    0x8(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0x14(%rcx),%eax
cltq
imul   $0x239,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0x10(%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x50(%rbp),%rax
mov    0xc(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0x10(%rcx),%eax
cltq
imul   $0xc8,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x3c(%rbp)
mov    -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x14(%rbp),%eax
sub    -0x1c(%rbp),%eax
cltq
imul   $0x3b2,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
sub    -0x20(%rbp),%eax
cltq
imul   $0x188,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x2c(%rbp),%ecx
add    -0x30(%rbp),%ecx
mov    %ecx,-0x44(%rbp)
mov    -0x58(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x44(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x3c(%rbp),%eax
cltq
imul   $0x3b2,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x40(%rbp),%eax
cltq
imul   $0x188,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%ecx
add    -0x28(%rbp),%ecx
mov    %ecx,-0x44(%rbp)
mov    -0x58(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%ecx
sub    -0x44(%rbp),%ecx
mov    %ecx,-0x44(%rbp)
mov    -0x58(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x44(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%ecx
mov    %ecx,-0x44(%rbp)
mov    -0x58(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x48(%rbp),%rcx
sub    %rcx,%rax
movslq -0x44(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
jmp    111c <LeeDct+0x1c>
mov    -0x10(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
mov    -0x10(%rbp),%rcx
add    $0x20,%rcx
cmp    %rcx,%rax
jae    175b <LeeDct+0x65b>
mov    -0x50(%rbp),%rax
mov    (%rax),%eax
mov    -0x50(%rbp),%rcx
add    0xe0(%rcx),%eax
mov    %eax,-0x14(%rbp)
mov    -0x50(%rbp),%rax
mov    (%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0xe0(%rcx),%eax
cltq
imul   $0x3ec,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x34(%rbp)
mov    -0x50(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0xc0(%rcx),%eax
mov    %eax,-0x18(%rbp)
mov    -0x50(%rbp),%rax
mov    0x20(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0xc0(%rcx),%eax
cltq
imul   $0x353,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x38(%rbp)
mov    -0x50(%rbp),%rax
mov    0x40(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0xa0(%rcx),%eax
mov    %eax,-0x20(%rbp)
mov    -0x50(%rbp),%rax
mov    0x40(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0xa0(%rcx),%eax
cltq
imul   $0x239,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
mov    0x60(%rax),%eax
mov    -0x50(%rbp),%rcx
add    0x80(%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x50(%rbp),%rax
mov    0x60(%rax),%eax
mov    -0x50(%rbp),%rcx
sub    0x80(%rcx),%eax
cltq
imul   $0xc8,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x3c(%rbp)
mov    -0x14(%rbp),%eax
add    -0x1c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x14(%rbp),%eax
sub    -0x1c(%rbp),%eax
cltq
imul   $0x3b2,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
sub    -0x20(%rbp),%eax
cltq
imul   $0x188,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x14(%rbp)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x18(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x14(%rbp)
jge    1509 <LeeDct+0x409>
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x5c(%rbp)
jmp    1512 <LeeDct+0x412>
mov    -0x14(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,(%rax)
cmpl   $0x0,-0x18(%rbp)
jge    153d <LeeDct+0x43d>
mov    -0x18(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x60(%rbp)
jmp    1546 <LeeDct+0x446>
mov    -0x18(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x40(%rax)
cmpl   $0x0,-0x1c(%rbp)
jge    1572 <LeeDct+0x472>
mov    -0x1c(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x64(%rbp)
jmp    157b <LeeDct+0x47b>
mov    -0x1c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x80(%rax)
cmpl   $0x0,-0x20(%rbp)
jge    15aa <LeeDct+0x4aa>
mov    -0x20(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x68(%rbp)
jmp    15b3 <LeeDct+0x4b3>
mov    -0x20(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0xc0(%rax)
mov    -0x34(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x38(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x3c(%rbp),%eax
cltq
imul   $0x3b2,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x2c(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x40(%rbp),%eax
cltq
imul   $0x188,%rax,%rax
sar    $0x9,%rax
mov    %eax,-0x30(%rbp)
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x18(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x1c(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
cltq
imul   $0x2d4,%rax,%rax
sar    $0x9,%rax
movslq -0x48(%rbp),%rcx
sub    %rcx,%rax
movslq -0x1c(%rbp),%rcx
sub    %rcx,%rax
mov    %eax,-0x20(%rbp)
cmpl   $0x0,-0x14(%rbp)
jge    167c <LeeDct+0x57c>
mov    -0x14(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x6c(%rbp)
jmp    1685 <LeeDct+0x585>
mov    -0x14(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x20(%rax)
cmpl   $0x0,-0x18(%rbp)
jge    16b1 <LeeDct+0x5b1>
mov    -0x18(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x70(%rbp)
jmp    16ba <LeeDct+0x5ba>
mov    -0x18(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0x60(%rax)
cmpl   $0x0,-0x1c(%rbp)
jge    16e6 <LeeDct+0x5e6>
mov    -0x1c(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x74(%rbp)
jmp    16ef <LeeDct+0x5ef>
mov    -0x1c(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0xa0(%rax)
cmpl   $0x0,-0x20(%rbp)
jge    171e <LeeDct+0x61e>
mov    -0x20(%rbp),%eax
sub    $0x8,%eax
mov    %eax,-0x78(%rbp)
jmp    1727 <LeeDct+0x627>
mov    -0x20(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x58(%rbp),%rax
mov    %ecx,0xe0(%rax)
mov    -0x58(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x50(%rbp)
jmp    137a <LeeDct+0x27a>
pop    %rbp
ret

x86 assembly (clang, -O2):
<LeeDct>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    $0xfffffffffffffff8,%rax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x3c(%rdi,%rax,4),%edx
mov    0x20(%rdi,%rax,4),%ebx
mov    0x24(%rdi,%rax,4),%ecx
lea    (%rdx,%rbx,1),%r14d
sub    %edx,%ebx
movslq %ebx,%rdx
imul   $0x3ec,%rdx,%r9
shr    $0x9,%r9
mov    0x38(%rdi,%rax,4),%ebx
lea    (%rbx,%rcx,1),%r12d
sub    %ebx,%ecx
movslq %ecx,%rcx
imul   $0x353,%rcx,%r11
shr    $0x9,%r11
mov    0x28(%rdi,%rax,4),%ecx
mov    0x34(%rdi,%rax,4),%ebx
lea    (%rbx,%rcx,1),%r15d
sub    %ebx,%ecx
movslq %ecx,%rcx
imul   $0x239,%rcx,%r8
shr    $0x9,%r8
mov    0x2c(%rdi,%rax,4),%ecx
mov    0x30(%rdi,%rax,4),%ebx
lea    (%rbx,%rcx,1),%edx
sub    %ebx,%ecx
movslq %ecx,%rcx
imul   $0xc8,%rcx,%r10
shr    $0x9,%r10
lea    (%rdx,%r14,1),%ebx
lea    (%r15,%r12,1),%r13d
sub    %edx,%r14d
movslq %r14d,%rcx
imul   $0x3b2,%rcx,%rcx
shr    $0x9,%rcx
sub    %r15d,%r12d
movslq %r12d,%rdx
imul   $0x188,%rdx,%rdx
shr    $0x9,%rdx
lea    (%rbx,%r13,1),%ebp
movslq %ebp,%rbp
imul   $0x2d4,%rbp,%rbp
shr    $0x9,%rbp
mov    %ebp,0x20(%rsi,%rax,4)
sub    %r13d,%ebx
movslq %ebx,%rbx
imul   $0x2d4,%rbx,%rbx
shr    $0x9,%rbx
mov    %ebx,0x30(%rsi,%rax,4)
lea    (%rcx,%rdx,1),%ebx
mov    %ebx,0x28(%rsi,%rax,4)
sub    %edx,%ecx
movslq %ecx,%rcx
imul   $0x2d4,%rcx,%rcx
shr    $0x9,%rcx
sub    %ebx,%ecx
mov    %ecx,0x38(%rsi,%rax,4)
lea    (%r10,%r9,1),%r15d
lea    (%r8,%r11,1),%r14d
sub    %r10d,%r9d
movslq %r9d,%rcx
imul   $0x3b2,%rcx,%rcx
shr    $0x9,%rcx
sub    %r8d,%r11d
movslq %r11d,%rbp
imul   $0x188,%rbp,%rbp
shr    $0x9,%rbp
lea    (%r15,%r14,1),%ebx
mov    %ebx,0x24(%rsi,%rax,4)
lea    (%rcx,%rbp,1),%r8d
mov    %r8d,%edx
sub    %ebx,%edx
mov    %edx,0x2c(%rsi,%rax,4)
sub    %r14d,%r15d
movslq %r15d,%rbx
imul   $0x2d4,%rbx,%rbx
shr    $0x9,%rbx
sub    %edx,%ebx
mov    %ebx,0x34(%rsi,%rax,4)
sub    %ebp,%ecx
movslq %ecx,%rcx
imul   $0x2d4,%rcx,%rcx
shr    $0x9,%rcx
add    %r8d,%ebx
sub    %ebx,%ecx
mov    %ecx,0x3c(%rsi,%rax,4)
add    $0x8,%rax
cmp    $0x38,%rax
jb     1120 <LeeDct+0x20>
mov    $0xfffffffffffffff8,%rax
cs nopw 0x0(%rax,%rax,1)
nop
movdqu 0x100(%rsi,%rax,4),%xmm1
movdqu 0x20(%rsi,%rax,4),%xmm2
movdqu 0x40(%rsi,%rax,4),%xmm3
movdqu 0x60(%rsi,%rax,4),%xmm5
movdqu 0x80(%rsi,%rax,4),%xmm14
movdqa %xmm1,%xmm7
paddd  %xmm2,%xmm7
psubd  %xmm1,%xmm2
pshufd $0xfe,%xmm2,%xmm4
pshufd $0xd4,%xmm2,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm2,%xmm1
movdqa 0xd25(%rip),%xmm0
pmuludq %xmm0,%xmm2
pmuludq %xmm0,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm2,%xmm1
movdqa %xmm1,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm4,%xmm1
pmuludq %xmm0,%xmm4
pmuludq %xmm0,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm4,%xmm1
psrlq  $0x9,%xmm1
movdqa %xmm1,-0x18(%rsp)
psrlq  $0x9,%xmm2
movdqa %xmm2,%xmm9
shufps $0x88,%xmm1,%xmm9
movdqu 0xe0(%rsi,%rax,4),%xmm4
movdqa %xmm4,%xmm8
paddd  %xmm3,%xmm8
psubd  %xmm4,%xmm3
pshufd $0xfe,%xmm3,%xmm6
pshufd $0xd4,%xmm3,%xmm4
pxor   %xmm1,%xmm1
pcmpgtd %xmm4,%xmm1
movdqa 0xcbc(%rip),%xmm0
pmuludq %xmm0,%xmm4
pmuludq %xmm0,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm4,%xmm1
pxor   %xmm4,%xmm4
pcmpgtd %xmm6,%xmm4
pmuludq %xmm0,%xmm6
pmuludq %xmm0,%xmm4
psllq  $0x20,%xmm4
paddq  %xmm6,%xmm4
psrlq  $0x9,%xmm4
psrlq  $0x9,%xmm1
movdqa %xmm1,%xmm11
shufps $0x88,%xmm4,%xmm11
movdqu 0xc0(%rsi,%rax,4),%xmm6
movdqa %xmm6,%xmm10
paddd  %xmm5,%xmm10
psubd  %xmm6,%xmm5
pshufd $0xfe,%xmm5,%xmm6
pshufd $0xd4,%xmm5,%xmm5
pxor   %xmm12,%xmm12
pcmpgtd %xmm5,%xmm12
movdqa 0xc5b(%rip),%xmm0
pmuludq %xmm0,%xmm5
pmuludq %xmm0,%xmm12
psllq  $0x20,%xmm12
paddq  %xmm5,%xmm12
pxor   %xmm3,%xmm3
pcmpgtd %xmm6,%xmm3
pmuludq %xmm0,%xmm6
pmuludq %xmm0,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm6,%xmm3
psrlq  $0x9,%xmm3
movdqa %xmm3,-0x38(%rsp)
psrlq  $0x9,%xmm12
psubq  %xmm12,%xmm1
movdqa %xmm1,-0x28(%rsp)
movdqa %xmm12,%xmm5
shufps $0x88,%xmm3,%xmm5
paddd  %xmm11,%xmm5
movdqu 0xa0(%rsi,%rax,4),%xmm11
movdqa %xmm11,%xmm6
paddd  %xmm14,%xmm6
psubd  %xmm11,%xmm14
pshufd $0xfe,%xmm14,%xmm15
pshufd $0xd4,%xmm14,%xmm0
pxor   %xmm11,%xmm11
pcmpgtd %xmm0,%xmm11
movdqa 0xbdd(%rip),%xmm1
pmuludq %xmm1,%xmm0
pmuludq %xmm1,%xmm11
psllq  $0x20,%xmm11
paddq  %xmm0,%xmm11
pxor   %xmm14,%xmm14
pcmpgtd %xmm15,%xmm14
pmuludq %xmm1,%xmm15
pmuludq %xmm1,%xmm14
psllq  $0x20,%xmm14
paddq  %xmm15,%xmm14
psrlq  $0x9,%xmm14
psrlq  $0x9,%xmm11
psubq  %xmm11,%xmm2
movdqa %xmm2,-0x48(%rsp)
shufps $0x88,%xmm14,%xmm11
paddd  %xmm9,%xmm11
movdqa %xmm6,%xmm9
paddd  %xmm7,%xmm9
movdqa %xmm10,%xmm15
paddd  %xmm8,%xmm15
psubd  %xmm6,%xmm7
pshufd $0xfe,%xmm7,%xmm6
pshufd $0xd4,%xmm7,%xmm7
pxor   %xmm0,%xmm0
pcmpgtd %xmm7,%xmm0
movdqa 0xb67(%rip),%xmm2
pmuludq %xmm2,%xmm7
pmuludq %xmm2,%xmm0
psllq  $0x20,%xmm0
paddq  %xmm7,%xmm0
pxor   %xmm7,%xmm7
pcmpgtd %xmm6,%xmm7
pmuludq %xmm2,%xmm6
pmuludq %xmm2,%xmm7
psllq  $0x20,%xmm7
paddq  %xmm6,%xmm7
psrlq  $0x9,%xmm7
psrlq  $0x9,%xmm0
movdqa %xmm0,%xmm6
shufps $0x88,%xmm7,%xmm6
psubd  %xmm10,%xmm8
pshufd $0xfe,%xmm8,%xmm10
pshufd $0xd4,%xmm8,%xmm13
pxor   %xmm8,%xmm8
pcmpgtd %xmm13,%xmm8
movdqa 0xb18(%rip),%xmm3
pmuludq %xmm3,%xmm13
pmuludq %xmm3,%xmm8
psllq  $0x20,%xmm8
paddq  %xmm13,%xmm8
pxor   %xmm13,%xmm13
pcmpgtd %xmm10,%xmm13
pmuludq %xmm3,%xmm10
pmuludq %xmm3,%xmm13
psllq  $0x20,%xmm13
paddq  %xmm10,%xmm13
psrlq  $0x9,%xmm13
psrlq  $0x9,%xmm8
psubq  %xmm8,%xmm0
shufps $0x88,%xmm13,%xmm8
paddd  %xmm6,%xmm8
movdqa %xmm9,%xmm10
paddd  %xmm15,%xmm10
pshufd $0xd4,%xmm10,%xmm6
pxor   %xmm1,%xmm1
pcmpgtd %xmm6,%xmm1
movdqa 0xab8(%rip),%xmm12
pmuludq %xmm12,%xmm6
pmuludq %xmm12,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm6,%xmm1
pshufd $0xfe,%xmm10,%xmm10
pxor   %xmm6,%xmm6
pcmpgtd %xmm10,%xmm6
pmuludq %xmm12,%xmm10
pmuludq %xmm12,%xmm6
psllq  $0x20,%xmm6
paddq  %xmm10,%xmm6
psrlq  $0x9,%xmm6
psrlq  $0x9,%xmm1
shufps $0x88,%xmm6,%xmm1
psubd  %xmm15,%xmm9
pshufd $0xfe,%xmm9,%xmm10
pshufd $0xd4,%xmm9,%xmm6
pxor   %xmm9,%xmm9
pcmpgtd %xmm6,%xmm9
pmuludq %xmm12,%xmm6
pmuludq %xmm12,%xmm9
psllq  $0x20,%xmm9
paddq  %xmm6,%xmm9
pxor   %xmm6,%xmm6
pcmpgtd %xmm10,%xmm6
pmuludq %xmm12,%xmm10
pmuludq %xmm12,%xmm6
psllq  $0x20,%xmm6
paddq  %xmm10,%xmm6
psrlq  $0x9,%xmm6
psrlq  $0x9,%xmm9
shufps $0x88,%xmm6,%xmm9
psubq  %xmm13,%xmm7
movdqa %xmm0,%xmm6
psllq  $0x20,%xmm6
psrad  $0x1f,%xmm6
pmuludq %xmm12,%xmm0
psrlq  $0x20,%xmm6
pmuludq %xmm12,%xmm6
psllq  $0x20,%xmm6
paddq  %xmm0,%xmm6
movdqa %xmm7,%xmm0
psllq  $0x20,%xmm0
psrad  $0x1f,%xmm0
pmuludq %xmm12,%xmm7
psrlq  $0x20,%xmm0
pmuludq %xmm12,%xmm0
psllq  $0x20,%xmm0
paddq  %xmm7,%xmm0
psrlq  $0x9,%xmm0
psrlq  $0x9,%xmm6
shufps $0x88,%xmm0,%xmm6
pxor   %xmm0,%xmm0
pcmpgtd %xmm1,%xmm0
movdqa %xmm0,%xmm7
movdqa 0x9b3(%rip),%xmm10
pandn  %xmm10,%xmm7
movdqa 0x9b5(%rip),%xmm13
pand   %xmm13,%xmm0
por    %xmm7,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm0,%xmm1
psrad  $0x1f,%xmm1
psrld  $0x1c,%xmm1
paddd  %xmm0,%xmm1
psrad  $0x4,%xmm1
movdqu %xmm1,0x20(%rsi,%rax,4)
pxor   %xmm0,%xmm0
pcmpgtd %xmm8,%xmm0
movdqa %xmm0,%xmm1
pandn  %xmm10,%xmm1
pand   %xmm13,%xmm0
por    %xmm1,%xmm0
psubd  %xmm8,%xmm6
paddd  %xmm8,%xmm0
movdqa %xmm0,%xmm1
psrad  $0x1f,%xmm1
psrld  $0x1c,%xmm1
paddd  %xmm0,%xmm1
psrad  $0x4,%xmm1
movdqu %xmm1,0x60(%rsi,%rax,4)
pxor   %xmm0,%xmm0
pcmpgtd %xmm9,%xmm0
movdqa %xmm0,%xmm1
pandn  %xmm10,%xmm1
pand   %xmm13,%xmm0
por    %xmm1,%xmm0
paddd  %xmm9,%xmm0
movdqa %xmm0,%xmm1
psrad  $0x1f,%xmm1
psrld  $0x1c,%xmm1
paddd  %xmm0,%xmm1
psrad  $0x4,%xmm1
movdqu %xmm1,0xa0(%rsi,%rax,4)
pxor   %xmm0,%xmm0
pcmpgtd %xmm6,%xmm0
movdqa %xmm0,%xmm1
pandn  %xmm10,%xmm1
pand   %xmm13,%xmm0
por    %xmm1,%xmm0
paddd  %xmm6,%xmm0
movdqa %xmm0,%xmm1
psrad  $0x1f,%xmm1
psrld  $0x1c,%xmm1
paddd  %xmm0,%xmm1
psrad  $0x4,%xmm1
movdqu %xmm1,0xe0(%rsi,%rax,4)
movdqa -0x18(%rsp),%xmm6
psubq  %xmm14,%xmm6
movdqa -0x48(%rsp),%xmm0
movdqa %xmm0,%xmm7
psllq  $0x20,%xmm7
psrad  $0x1f,%xmm7
pmuludq %xmm2,%xmm0
psrlq  $0x20,%xmm7
pmuludq %xmm2,%xmm7
psllq  $0x20,%xmm7
paddq  %xmm0,%xmm7
movdqa %xmm6,%xmm1
psllq  $0x20,%xmm1
psrad  $0x1f,%xmm1
pmuludq %xmm2,%xmm6
psrlq  $0x20,%xmm1
pmuludq %xmm2,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm6,%xmm1
psrlq  $0x9,%xmm1
psrlq  $0x9,%xmm7
movdqa %xmm7,%xmm6
shufps $0x88,%xmm1,%xmm6
psubq  -0x38(%rsp),%xmm4
movdqa -0x28(%rsp),%xmm2
movdqa %xmm2,%xmm0
psllq  $0x20,%xmm0
psrad  $0x1f,%xmm0
pmuludq %xmm3,%xmm2
psrlq  $0x20,%xmm0
pmuludq %xmm3,%xmm0
psllq  $0x20,%xmm0
paddq  %xmm2,%xmm0
movdqa %xmm4,%xmm2
psllq  $0x20,%xmm2
psrad  $0x1f,%xmm2
pmuludq %xmm3,%xmm4
psrlq  $0x20,%xmm2
pmuludq %xmm3,%xmm2
psllq  $0x20,%xmm2
paddq  %xmm4,%xmm2
psrlq  $0x9,%xmm2
psrlq  $0x9,%xmm0
psubq  %xmm0,%xmm7
movdqa %xmm0,%xmm4
shufps $0x88,%xmm2,%xmm4
paddd  %xmm6,%xmm4
movdqa %xmm11,%xmm3
paddd  %xmm5,%xmm3
psubd  %xmm5,%xmm11
pshufd $0xfe,%xmm11,%xmm5
pshufd $0xd4,%xmm11,%xmm6
pxor   %xmm0,%xmm0
pcmpgtd %xmm6,%xmm0
pmuludq %xmm12,%xmm6
pmuludq %xmm12,%xmm0
psllq  $0x20,%xmm0
paddq  %xmm6,%xmm0
pxor   %xmm6,%xmm6
pcmpgtd %xmm5,%xmm6
pmuludq %xmm12,%xmm5
pmuludq %xmm12,%xmm6
psllq  $0x20,%xmm6
paddq  %xmm5,%xmm6
psrlq  $0x9,%xmm6
psrlq  $0x9,%xmm0
shufps $0x88,%xmm6,%xmm0
pshufd $0xfe,%xmm4,%xmm5
movdqa %xmm4,%xmm6
psubd  %xmm3,%xmm6
psubd  %xmm6,%xmm0
psubq  %xmm2,%xmm1
movdqa %xmm1,%xmm2
psllq  $0x20,%xmm2
psrad  $0x1f,%xmm2
pmuludq %xmm12,%xmm1
psrlq  $0x20,%xmm2
pmuludq %xmm12,%xmm2
psllq  $0x20,%xmm2
paddq  %xmm1,%xmm2
movdqa %xmm7,%xmm1
psllq  $0x20,%xmm1
psrad  $0x1f,%xmm1
pmuludq %xmm12,%xmm7
psrlq  $0x20,%xmm1
pmuludq %xmm12,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm7,%xmm1
pshufd $0xfe,%xmm0,%xmm7
paddq  %xmm5,%xmm7
pshufd $0xd4,%xmm4,%xmm4
psrlq  $0x9,%xmm2
psubq  %xmm7,%xmm2
pshufd $0xd4,%xmm0,%xmm5
paddq  %xmm4,%xmm5
psrlq  $0x9,%xmm1
psubq  %xmm5,%xmm1
shufps $0x88,%xmm2,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm3,%xmm2
movdqa %xmm2,%xmm4
pandn  %xmm10,%xmm4
pand   %xmm13,%xmm2
por    %xmm4,%xmm2
paddd  %xmm3,%xmm2
movdqa %xmm2,%xmm3
psrad  $0x1f,%xmm3
psrld  $0x1c,%xmm3
paddd  %xmm2,%xmm3
psrad  $0x4,%xmm3
movdqu %xmm3,0x40(%rsi,%rax,4)
pxor   %xmm2,%xmm2
pcmpgtd %xmm6,%xmm2
movdqa %xmm2,%xmm3
pandn  %xmm10,%xmm3
pand   %xmm13,%xmm2
por    %xmm3,%xmm2
paddd  %xmm6,%xmm2
movdqa %xmm2,%xmm3
psrad  $0x1f,%xmm3
psrld  $0x1c,%xmm3
paddd  %xmm2,%xmm3
psrad  $0x4,%xmm3
movdqu %xmm3,0x80(%rsi,%rax,4)
pxor   %xmm2,%xmm2
pcmpgtd %xmm0,%xmm2
movdqa %xmm2,%xmm3
pandn  %xmm10,%xmm3
pand   %xmm13,%xmm2
por    %xmm3,%xmm2
paddd  %xmm0,%xmm2
movdqa %xmm2,%xmm0
psrad  $0x1f,%xmm0
psrld  $0x1c,%xmm0
paddd  %xmm2,%xmm0
psrad  $0x4,%xmm0
movdqu %xmm0,0xc0(%rsi,%rax,4)
pxor   %xmm0,%xmm0
pcmpgtd %xmm1,%xmm0
movdqa %xmm0,%xmm2
pandn  %xmm10,%xmm2
pand   %xmm13,%xmm0
por    %xmm2,%xmm0
paddd  %xmm1,%xmm0
movdqa %xmm0,%xmm1
psrad  $0x1f,%xmm1
psrld  $0x1c,%xmm1
paddd  %xmm0,%xmm1
psrad  $0x4,%xmm1
movdqu %xmm1,0x100(%rsi,%rax,4)
add    $0x4,%rax
jne    1290 <LeeDct+0x190>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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