void boxfilter1CC(float *output, float *input, float *temp1, float *temp2,
                  int hw, int m, int n, int o) {
  const int RANGE = hw;
  const int sz = m * n * o;
  for (int k = 0; k < o; k++) {
    for (int j = 0; j < n; j++) {
      float sumA = 0;
      const float *inRow = input + j * m + k * m * n;
      float *outRow = temp2 + j * m + k * m * n;
      int x = -RANGE;
      for (; x <= RANGE; x++) {
        sumA += inRow[x + RANGE];
        ;
        if (x >= 0)
          outRow[x] = sumA;
      }
      for (; x + RANGE < m; x++) {
        sumA -= inRow[x - RANGE - 1];
        sumA += inRow[x + RANGE];
        outRow[x] = sumA;
      }
      for (; x < m; x++) {
        sumA -= inRow[x - RANGE - 1];
        outRow[x] = sumA;
      }
    }
  }
  for (int k = 0; k < o; k++) {
    for (int i = 0; i < m; i++) {
      float sumA = 0;
      int x = -RANGE;
      for (; x <= RANGE; x++) {
        sumA += temp2[i + (x + RANGE) * m + k * m * n];
        if (x >= 0)
          temp1[i + x * m + k * m * n] = sumA;
      }
      for (; x + RANGE < n; x++) {
        sumA -= temp2[i + (x - RANGE - 1) * m + k * m * n];
        sumA += temp2[i + (x + RANGE) * m + k * m * n];
        temp1[i + x * m + k * m * n] = sumA;
      }
      for (; x < n; x++) {
        sumA -= temp2[i + (x - RANGE - 1) * m + k * m * n];
        temp1[i + x * m + k * m * n] = sumA;
      }
    }
  }
  const int ORANGE = o > 1 ? RANGE : 0;
  for (int j = 0; j < n; j++) {
    for (int i = 0; i < m; i++) {
      float sumA = 0;
      int x = -ORANGE;
      for (; x <= ORANGE; x++) {
        sumA += temp1[i + j * m + (x + ORANGE) * m * n];
        if (x >= 0)
          output[i + j * m + x * m * n] = sumA;
      }
      for (; x + ORANGE < o; x++) {
        sumA -= temp1[i + j * m + (x - ORANGE - 1) * m * n];
        sumA += temp1[i + j * m + (x + ORANGE) * m * n];
        output[i + j * m + x * m * n] = sumA;
      }
      for (; x < o; x++) {
        sumA -= temp1[i + j * m + (x - ORANGE - 1) * m * n];
        output[i + j * m + x * m * n] = sumA;
      }
    }
  }
}


x86 assembly (clang, -O0):
<boxfilter1CC>:
push   %rbp
mov    %rsp,%rbp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x28(%rbp),%eax
imul   0x10(%rbp),%eax
imul   0x18(%rbp),%eax
mov    %eax,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    130c <boxfilter1CC+0x20c>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    12f9 <boxfilter1CC+0x1f9>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   -0x28(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    -0x34(%rbp),%ecx
imul   -0x28(%rbp),%ecx
imul   0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x38(%rbp),%ecx
imul   -0x28(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    -0x34(%rbp),%ecx
imul   -0x28(%rbp),%ecx
imul   0x10(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jg     121f <boxfilter1CC+0x11f>
mov    -0x48(%rbp),%rax
mov    -0x54(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
cmpl   $0x0,-0x54(%rbp)
jl     120c <boxfilter1CC+0x10c>
movss  -0x3c(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movslq -0x54(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    1211 <boxfilter1CC+0x111>
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    11c8 <boxfilter1CC+0xc8>
jmp    1224 <boxfilter1CC+0x124>
mov    -0x54(%rbp),%eax
add    -0x2c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1292 <boxfilter1CC+0x192>
mov    -0x48(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x3c(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x54(%rbp),%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x3c(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movslq -0x54(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1224 <boxfilter1CC+0x124>
jmp    1297 <boxfilter1CC+0x197>
mov    -0x54(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    12e6 <boxfilter1CC+0x1e6>
mov    -0x48(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    -0x2c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x3c(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x3c(%rbp),%xmm0
mov    -0x50(%rbp),%rax
movslq -0x54(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    1297 <boxfilter1CC+0x197>
jmp    12eb <boxfilter1CC+0x1eb>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1150 <boxfilter1CC+0x50>
jmp    12fe <boxfilter1CC+0x1fe>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    113d <boxfilter1CC+0x3d>
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1526 <boxfilter1CC+0x426>
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1513 <boxfilter1CC+0x413>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jg     13c7 <boxfilter1CC+0x2c7>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
add    -0x2c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
cmpl   $0x0,-0x64(%rbp)
jl     13b4 <boxfilter1CC+0x2b4>
movss  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    13b9 <boxfilter1CC+0x2b9>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1342 <boxfilter1CC+0x242>
jmp    13cc <boxfilter1CC+0x2cc>
mov    -0x64(%rbp),%eax
add    -0x2c(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    147e <boxfilter1CC+0x37e>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
sub    -0x2c(%rbp),%edx
sub    $0x1,%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x60(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
add    -0x2c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    13cc <boxfilter1CC+0x2cc>
jmp    1483 <boxfilter1CC+0x383>
mov    -0x64(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    1500 <boxfilter1CC+0x400>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
sub    -0x2c(%rbp),%edx
sub    $0x1,%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x60(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
mov    -0x5c(%rbp),%ecx
mov    -0x64(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x58(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1483 <boxfilter1CC+0x383>
jmp    1505 <boxfilter1CC+0x405>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1326 <boxfilter1CC+0x226>
jmp    1518 <boxfilter1CC+0x418>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1313 <boxfilter1CC+0x213>
cmpl   $0x1,0x18(%rbp)
jle    153b <boxfilter1CC+0x43b>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x7c(%rbp)
jmp    1545 <boxfilter1CC+0x445>
xor    %eax,%eax
mov    %eax,-0x7c(%rbp)
jmp    1545 <boxfilter1CC+0x445>
mov    -0x7c(%rbp),%eax
mov    %eax,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    0x10(%rbp),%eax
jge    1765 <boxfilter1CC+0x665>
movl   $0x0,-0x70(%rbp)
mov    -0x70(%rbp),%eax
cmp    -0x28(%rbp),%eax
jge    1752 <boxfilter1CC+0x652>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
xor    %eax,%eax
sub    -0x68(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x78(%rbp),%eax
cmp    -0x68(%rbp),%eax
jg     1606 <boxfilter1CC+0x506>
mov    -0x18(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
add    -0x68(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
cmpl   $0x0,-0x78(%rbp)
jl     15f3 <boxfilter1CC+0x4f3>
movss  -0x74(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
jmp    15f8 <boxfilter1CC+0x4f8>
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    1581 <boxfilter1CC+0x481>
jmp    160b <boxfilter1CC+0x50b>
mov    -0x78(%rbp),%eax
add    -0x68(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    16bd <boxfilter1CC+0x5bd>
mov    -0x18(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
sub    -0x68(%rbp),%edx
sub    $0x1,%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x74(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
add    -0x68(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm0
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x74(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    160b <boxfilter1CC+0x50b>
jmp    16c2 <boxfilter1CC+0x5c2>
mov    -0x78(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    173f <boxfilter1CC+0x63f>
mov    -0x18(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
sub    -0x68(%rbp),%edx
sub    $0x1,%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x74(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x74(%rbp),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x70(%rbp),%ecx
mov    -0x6c(%rbp),%edx
imul   -0x28(%rbp),%edx
add    %edx,%ecx
mov    -0x78(%rbp),%edx
imul   -0x28(%rbp),%edx
imul   0x10(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    16c2 <boxfilter1CC+0x5c2>
jmp    1744 <boxfilter1CC+0x644>
mov    -0x70(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x70(%rbp)
jmp    1565 <boxfilter1CC+0x465>
jmp    1757 <boxfilter1CC+0x657>
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    1552 <boxfilter1CC+0x452>
pop    %rbp
ret

x86 assembly (clang, -O2):
<boxfilter1CC>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r8,-0x80(%rsp)
cmpl   $0x0,0x88(%rsp)
jle    1726 <boxfilter1CC+0x626>
mov    0x80(%rsp),%r8d
mov    %r8d,%eax
imul   %r9d,%eax
mov    %eax,-0x74(%rsp)
mov    -0x80(%rsp),%r14
mov    %r14d,%ebx
neg    %ebx
mov    %r14d,%ebp
not    %ebp
mov    %rbp,-0x50(%rsp)
movslq %ebx,%r12
movslq %r14d,%r10
mov    %r14d,%eax
mov    %rbx,-0x70(%rsp)
cmovns %ebx,%eax
lea    0x1(%rax),%r15d
movslq %r9d,%r11
mov    %r8d,%ebp
mov    %rbp,-0x28(%rsp)
add    %r14d,%eax
lea    (%r12,%r10,1),%rbp
mov    %rbp,0x20(%rsp)
mov    %r12,0x38(%rsp)
lea    0x1(%r12),%rbp
mov    %rbp,-0x8(%rsp)
mov    %r15,%rbp
mov    %rax,%r14
mov    %r11,%rax
neg    %rax
mov    %rax,0x28(%rsp)
mov    %r10,(%rsp)
mov    %rsi,0x18(%rsp)
lea    (%rsi,%r10,4),%rax
add    $0x4,%rax
mov    %rax,0x10(%rsp)
lea    0x0(,%r11,4),%rax
mov    %rax,0x40(%rsp)
xorps  %xmm0,%xmm0
lea    0x4(%rcx),%rax
mov    %rax,0x8(%rsp)
xor    %eax,%eax
mov    %rax,-0x18(%rsp)
xor    %eax,%eax
mov    %rax,-0x20(%rsp)
mov    %r14,-0x10(%rsp)
mov    %rbp,-0x30(%rsp)
mov    %r9,0x30(%rsp)
jmp    121f <boxfilter1CC+0x11f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    -0x20(%rsp),%r8
add    $0x1,%r8
mov    -0x18(%rsp),%rax
add    -0x74(%rsp),%eax
mov    %rax,-0x18(%rsp)
mov    0x88(%rsp),%eax
mov    %r8,%rsi
mov    %r8,-0x20(%rsp)
cmp    %rax,%r8
je     148f <boxfilter1CC+0x38f>
cmpl   $0x0,0x80(%rsp)
jle    11f0 <boxfilter1CC+0xf0>
movslq -0x18(%rsp),%rax
mov    0x8(%rsp),%rsi
lea    (%rsi,%rax,4),%r10
lea    (%rcx,%rax,4),%rsi
mov    %rsi,-0x48(%rsp)
mov    0x18(%rsp),%r8
lea    (%r8,%rax,4),%rsi
mov    %rsi,-0x38(%rsp)
mov    0x10(%rsp),%rsi
lea    (%rsi,%rax,4),%r13
mov    -0x74(%rsp),%eax
imul   -0x20(%rsp),%eax
cltq
lea    (%r8,%rax,4),%rsi
mov    %rsi,-0x58(%rsp)
mov    %r10,%r8
lea    (%rcx,%rax,4),%rax
mov    %rax,-0x60(%rsp)
xor    %ebx,%ebx
jmp    12b3 <boxfilter1CC+0x1b3>
nopl   0x0(%rax,%rax,1)
mov    -0x40(%rsp),%rbx
add    $0x1,%rbx
mov    0x40(%rsp),%rax
add    %rax,%r13
add    %rax,-0x48(%rsp)
add    %rax,-0x38(%rsp)
add    %rax,%r8
cmp    -0x28(%rsp),%rbx
mov    -0x10(%rsp),%r14
mov    -0x30(%rsp),%rbp
je     11f0 <boxfilter1CC+0xf0>
mov    %rbx,%rax
imul   %r11,%rax
mov    -0x58(%rsp),%rsi
lea    (%rsi,%rax,4),%r10
mov    -0x60(%rsp),%rsi
lea    (%rsi,%rax,4),%r12
cmpl   $0x0,-0x80(%rsp)
mov    %r8,-0x68(%rsp)
mov    %rbx,-0x40(%rsp)
xorps  %xmm1,%xmm1
js     1370 <boxfilter1CC+0x270>
mov    0x38(%rsp),%r8
test   $0x1,%r14b
mov    -0x70(%rsp),%rsi
jne    1312 <boxfilter1CC+0x212>
mov    0x20(%rsp),%rax
movss  (%r10,%rax,4),%xmm1
addss  %xmm0,%xmm1
test   %esi,%esi
js     130d <boxfilter1CC+0x20d>
movss  %xmm1,(%r12,%rsi,4)
mov    -0x8(%rsp),%r8
mov    %ebp,%r15d
test   %r14d,%r14d
jne    1329 <boxfilter1CC+0x229>
jmp    1378 <boxfilter1CC+0x278>
nopl   0x0(%rax)
add    $0x2,%r8
cmp    %r8d,%ebp
je     1360 <boxfilter1CC+0x260>
addss  -0x4(%r13,%r8,4),%xmm1
test   %r8,%r8
js     133e <boxfilter1CC+0x23e>
mov    %r8d,%eax
movss  %xmm1,(%r12,%rax,4)
addss  0x0(%r13,%r8,4),%xmm1
cmp    $0xffffffffffffffff,%r8
jl     1320 <boxfilter1CC+0x220>
lea    0x1(%r8),%rax
mov    %eax,%eax
movss  %xmm1,(%r12,%rax,4)
jmp    1320 <boxfilter1CC+0x220>
nopl   0x0(%rax)
mov    %ebp,%r15d
jmp    1378 <boxfilter1CC+0x278>
cs nopw 0x0(%rax,%rax,1)
nop
mov    -0x70(%rsp),%rsi
mov    %esi,%r15d
mov    -0x80(%rsp),%rax
add    %r15d,%eax
cmp    %r9d,%eax
jge    13f1 <boxfilter1CC+0x2f1>
cltq
movslq %r15d,%rsi
mov    -0x48(%rsp),%rbp
lea    0x0(,%rsi,4),%r8
add    %rbp,%r8
mov    -0x50(%rsp),%rbp
lea    (%r15,%rbp,1),%r14d
add    (%rsp),%rsi
mov    -0x38(%rsp),%rbp
lea    0x0(,%rax,4),%rbx
add    %rbp,%rbx
xor    %eax,%eax
nopl   0x0(%rax)
lea    (%r14,%rax,1),%r9d
movslq %r9d,%rbp
subss  (%r10,%rbp,4),%xmm1
addss  (%rbx,%rax,4),%xmm1
movss  %xmm1,(%r8,%rax,4)
lea    (%rsi,%rax,1),%rbp
add    $0x1,%rbp
add    $0x1,%rax
cmp    %r11,%rbp
jl     13c0 <boxfilter1CC+0x2c0>
add    %eax,%r15d
mov    0x30(%rsp),%r9
mov    -0x68(%rsp),%r8
cmp    %r9d,%r15d
jge    1280 <boxfilter1CC+0x180>
movslq %r15d,%rax
mov    %r9d,%esi
sub    %r15d,%esi
test   $0x1,%sil
jne    1420 <boxfilter1CC+0x320>
mov    %rax,%rbx
jmp    1438 <boxfilter1CC+0x338>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
add    -0x50(%rsp),%r15d
movslq %r15d,%rsi
subss  (%r10,%rsi,4),%xmm1
movss  %xmm1,(%r12,%rax,4)
lea    0x1(%rax),%rbx
not    %rax
cmp    0x28(%rsp),%rax
je     1280 <boxfilter1CC+0x180>
mov    %r11,%rbp
sub    %rbx,%rbp
mov    -0x70(%rsp),%rax
lea    (%rax,%rbx,1),%esi
lea    (%r8,%rbx,4),%rbx
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rsi),%eax
cltq
subss  (%r10,%rax,4),%xmm1
movss  %xmm1,-0x4(%rbx)
movslq %esi,%rsi
subss  (%r10,%rsi,4),%xmm1
movss  %xmm1,(%rbx)
add    $0x2,%esi
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rbp
jne    1460 <boxfilter1CC+0x360>
jmp    1280 <boxfilter1CC+0x180>
cmpl   $0x0,0x88(%rsp)
jle    1726 <boxfilter1CC+0x626>
mov    -0x80(%rsp),%rsi
mov    %esi,%eax
neg    %eax
mov    %eax,-0x48(%rsp)
cltq
mov    %rax,-0x40(%rsp)
cmovs  %esi,%eax
movslq 0x80(%rsp),%r12
mov    %r12,%rbp
neg    %rbp
mov    %rbp,-0x38(%rsp)
mov    %r9d,%r13d
imul   %esi,%r13d
neg    %r13d
add    %eax,%esi
add    $0x1,%esi
mov    %esi,-0x68(%rsp)
mov    %eax,%r8d
add    $0x1,%r8d
lea    (%r9,%r9,1),%r11d
movl   $0x0,-0x58(%rsp)
movl   $0x0,-0x60(%rsp)
jmp    1524 <boxfilter1CC+0x424>
nopw   0x0(%rax,%rax,1)
mov    -0x60(%rsp),%esi
add    $0x1,%esi
mov    -0x58(%rsp),%eax
add    -0x74(%rsp),%eax
mov    %eax,-0x58(%rsp)
mov    %esi,-0x60(%rsp)
cmp    0x88(%rsp),%esi
je     1726 <boxfilter1CC+0x626>
test   %r9d,%r9d
jle    1500 <boxfilter1CC+0x400>
mov    -0x74(%rsp),%eax
imul   -0x60(%rsp),%eax
mov    %rax,-0x70(%rsp)
xor    %r15d,%r15d
mov    -0x58(%rsp),%r10d
jmp    155d <boxfilter1CC+0x45d>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%r15d
add    $0x1,%r10d
cmp    %r9d,%r15d
je     1500 <boxfilter1CC+0x400>
cmpl   $0x0,-0x80(%rsp)
js     15c0 <boxfilter1CC+0x4c0>
xorps  %xmm0,%xmm0
mov    -0x68(%rsp),%eax
mov    %r10d,%esi
mov    -0x40(%rsp),%rbp
jmp    158c <boxfilter1CC+0x48c>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%rbp
add    %r9d,%esi
add    $0xffffffff,%eax
je     15b0 <boxfilter1CC+0x4b0>
movslq %esi,%rbx
addss  (%rcx,%rbx,4),%xmm0
test   %rbp,%rbp
js     1580 <boxfilter1CC+0x480>
lea    (%rsi,%r13,1),%ebx
movslq %ebx,%rbx
movss  %xmm0,(%rdx,%rbx,4)
jmp    1580 <boxfilter1CC+0x480>
nopw   0x0(%rax,%rax,1)
mov    %r8d,%r14d
jmp    15ca <boxfilter1CC+0x4ca>
cs nopw 0x0(%rax,%rax,1)
nop
xorps  %xmm0,%xmm0
mov    -0x48(%rsp),%eax
mov    %eax,%r14d
mov    -0x80(%rsp),%rax
lea    (%r14,%rax,1),%ebx
cmp    0x80(%rsp),%ebx
jge    163d <boxfilter1CC+0x53d>
movslq %r14d,%rbp
mov    %r9d,%esi
imul   %r14d,%esi
add    %r10d,%esi
mov    -0x50(%rsp),%rax
add    %r14d,%eax
imul   %r9d,%eax
add    %r10d,%eax
add    (%rsp),%rbp
imul   %r9d,%ebx
add    %r10d,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cltq
subss  (%rcx,%rax,4),%xmm0
movslq %ebx,%rbx
addss  (%rcx,%rbx,4),%xmm0
movslq %esi,%rsi
movss  %xmm0,(%rdx,%rsi,4)
add    %r9d,%esi
add    %r9d,%eax
add    $0x1,%r14d
add    $0x1,%rbp
add    %r9d,%ebx
cmp    %r12,%rbp
jl     1610 <boxfilter1CC+0x510>
cmp    0x80(%rsp),%r14d
jge    1550 <boxfilter1CC+0x450>
movslq %r14d,%rax
mov    0x80(%rsp),%esi
mov    %esi,%ebp
sub    %r14d,%ebp
test   $0x1,%bpl
jne    1670 <boxfilter1CC+0x570>
mov    %rax,%rsi
jmp    16a3 <boxfilter1CC+0x5a3>
cs nopw 0x0(%rax,%rax,1)
nop
mov    -0x70(%rsp),%rsi
lea    (%r15,%rsi,1),%ebp
mov    -0x50(%rsp),%rsi
lea    (%r14,%rsi,1),%ebx
imul   %r9d,%ebx
add    %ebp,%ebx
movslq %ebx,%rbx
subss  (%rcx,%rbx,4),%xmm0
imul   %r9d,%r14d
add    %ebp,%r14d
movslq %r14d,%rsi
movss  %xmm0,(%rdx,%rsi,4)
lea    0x1(%rax),%rsi
not    %rax
cmp    -0x38(%rsp),%rax
je     1550 <boxfilter1CC+0x450>
mov    %r12,%r14
sub    %rsi,%r14
mov    %r9d,%ebx
imul   %esi,%ebx
add    %r10d,%ebx
mov    -0x50(%rsp),%rax
add    %esi,%eax
imul   %r9d,%eax
add    %r10d,%eax
lea    0x1(%rsi),%ebp
imul   %r9d,%ebp
add    %r10d,%ebp
add    -0x48(%rsp),%esi
imul   %r9d,%esi
add    %r10d,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
cltq
subss  (%rcx,%rax,4),%xmm0
movslq %ebx,%rbx
movss  %xmm0,(%rdx,%rbx,4)
movslq %esi,%rsi
subss  (%rcx,%rsi,4),%xmm0
movslq %ebp,%rbp
movss  %xmm0,(%rdx,%rbp,4)
add    %r11d,%ebx
add    %r11d,%eax
add    %r11d,%ebp
add    %r11d,%esi
add    $0xfffffffffffffffe,%r14
jne    16f0 <boxfilter1CC+0x5f0>
jmp    1550 <boxfilter1CC+0x450>
xor    %ecx,%ecx
cmpl   $0x2,0x88(%rsp)
02
mov    -0x80(%rsp),%rax
movl   $0x0,-0x28(%rsp)
cmovl  %ecx,%eax
mov    %rax,-0x80(%rsp)
cmpl   $0x0,0x80(%rsp)
jle    19e6 <boxfilter1CC+0x8e6>
mov    0x80(%rsp),%ecx
mov    %ecx,%r11d
imul   %r9d,%r11d
mov    -0x80(%rsp),%r10
mov    %r10d,%eax
neg    %eax
mov    %r10d,%esi
not    %esi
mov    %rsi,-0x68(%rsp)
mov    %rax,-0x70(%rsp)
cltq
movslq %r10d,%rsi
mov    %rax,-0x48(%rsp)
cmovs  %r10d,%eax
movslq 0x88(%rsp),%r14
mov    %r14,%rbp
neg    %rbp
mov    %rbp,-0x60(%rsp)
imul   %ecx,%r10d
imul   %r9d,%r10d
neg    %r10d
mov    %rsi,-0x58(%rsp)
lea    (%rsi,%rax,1),%ecx
add    $0x1,%ecx
mov    %ecx,-0x38(%rsp)
add    $0x1,%eax
mov    %eax,-0x50(%rsp)
lea    (%r11,%r11,1),%r15d
movl   $0x0,-0x30(%rsp)
jmp    17ed <boxfilter1CC+0x6ed>
nopw   0x0(%rax,%rax,1)
mov    -0x30(%rsp),%eax
add    $0x1,%eax
add    %r9d,-0x28(%rsp)
mov    %eax,-0x30(%rsp)
cmp    0x80(%rsp),%eax
je     19e6 <boxfilter1CC+0x8e6>
test   %r9d,%r9d
jle    17d0 <boxfilter1CC+0x6d0>
mov    -0x30(%rsp),%eax
imul   %r9d,%eax
mov    %rax,-0x10(%rsp)
xor    %eax,%eax
mov    %rax,-0x40(%rsp)
mov    -0x28(%rsp),%r12d
jmp    1826 <boxfilter1CC+0x726>
nopl   (%rax)
mov    -0x40(%rsp),%rax
add    $0x1,%eax
add    $0x1,%r12d
mov    %rax,-0x40(%rsp)
cmp    %r9d,%eax
je     17d0 <boxfilter1CC+0x6d0>
cmpl   $0x0,-0x80(%rsp)
js     1880 <boxfilter1CC+0x780>
xorps  %xmm0,%xmm0
mov    -0x38(%rsp),%eax
mov    %r12d,%ecx
mov    -0x48(%rsp),%rsi
jmp    184c <boxfilter1CC+0x74c>
xchg   %ax,%ax
add    $0x1,%rsi
add    %r11d,%ecx
add    $0xffffffff,%eax
je     1870 <boxfilter1CC+0x770>
movslq %ecx,%rbp
addss  (%rdx,%rbp,4),%xmm0
test   %rsi,%rsi
js     1840 <boxfilter1CC+0x740>
lea    (%r10,%rcx,1),%ebp
movslq %ebp,%rbp
movss  %xmm0,(%rdi,%rbp,4)
jmp    1840 <boxfilter1CC+0x740>
nopw   0x0(%rax,%rax,1)
mov    -0x50(%rsp),%eax
mov    %eax,%r13d
jmp    1888 <boxfilter1CC+0x788>
nopl   0x0(%rax)
xorps  %xmm0,%xmm0
mov    -0x70(%rsp),%r13
mov    -0x80(%rsp),%rax
add    %r13d,%eax
cmp    0x88(%rsp),%eax
jge    18fe <boxfilter1CC+0x7fe>
movslq %r13d,%rcx
mov    %r11d,%esi
imul   %r13d,%esi
add    %r12d,%esi
mov    -0x68(%rsp),%rbp
lea    0x0(%rbp,%r13,1),%r8d
imul   %r11d,%r8d
add    %r12d,%r8d
add    -0x58(%rsp),%rcx
imul   %r11d,%eax
add    %r12d,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %r8d,%r8
subss  (%rdx,%r8,4),%xmm0
cltq
addss  (%rdx,%rax,4),%xmm0
movslq %esi,%rsi
movss  %xmm0,(%rdi,%rsi,4)
add    %r11d,%esi
add    %r11d,%r8d
add    $0x1,%r13d
add    $0x1,%rcx
add    %r11d,%eax
cmp    %r14,%rcx
jl     18d0 <boxfilter1CC+0x7d0>
cmp    0x88(%rsp),%r13d
jge    1810 <boxfilter1CC+0x710>
movslq %r13d,%rax
mov    0x88(%rsp),%ecx
sub    %r13d,%ecx
test   $0x1,%cl
jne    1930 <boxfilter1CC+0x830>
mov    %rax,%r8
jmp    1965 <boxfilter1CC+0x865>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    -0x10(%rsp),%rcx
mov    -0x40(%rsp),%rsi
add    %esi,%ecx
mov    -0x68(%rsp),%rsi
add    %r13d,%esi
imul   %r11d,%esi
add    %ecx,%esi
movslq %esi,%rsi
subss  (%rdx,%rsi,4),%xmm0
imul   %r11d,%r13d
add    %ecx,%r13d
movslq %r13d,%rcx
movss  %xmm0,(%rdi,%rcx,4)
lea    0x1(%rax),%r8
not    %rax
cmp    -0x60(%rsp),%rax
je     1810 <boxfilter1CC+0x710>
mov    -0x70(%rsp),%rax
add    %r8d,%eax
imul   %r11d,%eax
add    %r12d,%eax
lea    0x1(%r8),%ecx
imul   %r11d,%ecx
add    %r12d,%ecx
mov    %r14,%rsi
sub    %r8,%rsi
mov    %r11d,%ebx
imul   %r8d,%ebx
add    %r12d,%ebx
mov    -0x68(%rsp),%rbp
add    %r8d,%ebp
imul   %r11d,%ebp
add    %r12d,%ebp
nopl   0x0(%rax)
movslq %ebp,%rbp
subss  (%rdx,%rbp,4),%xmm0
movslq %ebx,%rbx
movss  %xmm0,(%rdi,%rbx,4)
cltq
subss  (%rdx,%rax,4),%xmm0
movslq %ecx,%rcx
movss  %xmm0,(%rdi,%rcx,4)
add    %r15d,%eax
add    %r15d,%ecx
add    %r15d,%ebx
add    %r15d,%ebp
add    $0xfffffffffffffffe,%rsi
jne    19b0 <boxfilter1CC+0x8b0>
jmp    1810 <boxfilter1CC+0x710>
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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