void fastBlur4(unsigned char *img, int w, int h, int size) {
  int x, y;
  int m = size;
  int divZ = 0;
  int canFastDiv = 0;
  if (size == 1)
    divZ = 1, canFastDiv = 1;
  if (size == 3)
    divZ = 2, canFastDiv = 1;
  if (size == 7)
    divZ = 3, canFastDiv = 1;
  if (size == 15)
    divZ = 4, canFastDiv = 1;
  if (size == 31)
    divZ = 5, canFastDiv = 1;
  if (size == 63)
    divZ = 6, canFastDiv = 1;
  if (size == 127)
    divZ = 7, canFastDiv = 1;
  if (canFastDiv) {
    for (int N = 0; N < 3; ++N) {
      for (x = 1; x < w; x++)
        for (y = 0; y < h; y++)
          img[((x + w * y) << 2) + N] = (m * img[((x - 1 + w * y) << 2) + N] +
                                         img[((x + w * y) << 2) + N]) >>
                                        divZ;
      for (x = w - 2; x >= 0; x--)
        for (y = 0; y < h; y++)
          img[((x + w * y) << 2) + N] = (m * img[((x + 1 + w * y) << 2) + N] +
                                         img[((x + w * y) << 2) + N]) >>
                                        divZ;
      for (x = 0; x < w; x++)
        for (y = 1; y < h; y++)
          img[((x + w * y) << 2) + N] = (m * img[((x - w + w * y) << 2) + N] +
                                         img[((x + w * y) << 2) + N]) >>
                                        divZ;
      for (y = h - 2; y >= 0; y--)
        for (x = 0; x < w; x++)
          img[((x + w * y) << 2) + N] = (m * img[((x + w + w * y) << 2) + N] +
                                         img[((x + w * y) << 2) + N]) >>
                                        divZ;
    }
    return;
  }
  for (int N = 0; N < 3; ++N) {
    for (x = 1; x < w; x++)
      for (y = 0; y < h; y++)
        img[((x + w * y) << 2) + N] = (m * img[((x - 1 + w * y) << 2) + N] +
                                       img[((x + w * y) << 2) + N]) /
                                      (m + 1);
    for (x = w - 2; x >= 0; x--)
      for (y = 0; y < h; y++)
        img[((x + w * y) << 2) + N] = (m * img[((x + 1 + w * y) << 2) + N] +
                                       img[((x + w * y) << 2) + N]) /
                                      (m + 1);
    for (x = 0; x < w; x++)
      for (y = 1; y < h; y++)
        img[((x + w * y) << 2) + N] = (m * img[((x - w + w * y) << 2) + N] +
                                       img[((x + w * y) << 2) + N]) /
                                      (m + 1);
    for (y = h - 2; y >= 0; y--)
      for (x = 0; x < w; x++)
        img[((x + w * y) << 2) + N] = (m * img[((x + w + w * y) << 2) + N] +
                                       img[((x + w * y) << 2) + N]) /
                                      (m + 1);
  }
}


x86 assembly (clang, -O0):
<fastBlur4>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    113d <fastBlur4+0x3d>
movl   $0x1,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x3,-0x14(%rbp)
jne    1155 <fastBlur4+0x55>
movl   $0x2,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x7,-0x14(%rbp)
jne    116d <fastBlur4+0x6d>
movl   $0x3,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0xf,-0x14(%rbp)
jne    1185 <fastBlur4+0x85>
movl   $0x4,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x1f,-0x14(%rbp)
jne    119d <fastBlur4+0x9d>
movl   $0x5,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x3f,-0x14(%rbp)
jne    11b5 <fastBlur4+0xb5>
movl   $0x6,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x7f,-0x14(%rbp)
jne    11cd <fastBlur4+0xcd>
movl   $0x7,-0x24(%rbp)
movl   $0x1,-0x28(%rbp)
cmpl   $0x0,-0x28(%rbp)
je     14bc <fastBlur4+0x3bc>
movl   $0x0,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jge    14b7 <fastBlur4+0x3b7>
movl   $0x1,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1297 <fastBlur4+0x197>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1284 <fastBlur4+0x184>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x24(%rbp),%ecx
sar    %cl,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1202 <fastBlur4+0x102>
jmp    1289 <fastBlur4+0x189>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11ef <fastBlur4+0xef>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jl     1346 <fastBlur4+0x246>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1333 <fastBlur4+0x233>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
add    $0x1,%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x24(%rbp),%ecx
sar    %cl,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12b1 <fastBlur4+0x1b1>
jmp    1338 <fastBlur4+0x238>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    12a0 <fastBlur4+0x1a0>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    13f5 <fastBlur4+0x2f5>
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    13e2 <fastBlur4+0x2e2>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
sub    -0xc(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x24(%rbp),%ecx
sar    %cl,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1360 <fastBlur4+0x260>
jmp    13e7 <fastBlur4+0x2e7>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    134d <fastBlur4+0x24d>
mov    -0x10(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jl     14a4 <fastBlur4+0x3a4>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1491 <fastBlur4+0x391>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
add    -0xc(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x2c(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x24(%rbp),%ecx
sar    %cl,%eax
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x2c(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    140f <fastBlur4+0x30f>
jmp    1496 <fastBlur4+0x396>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    13fe <fastBlur4+0x2fe>
jmp    14a9 <fastBlur4+0x3a9>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11de <fastBlur4+0xde>
jmp    17ac <fastBlur4+0x6ac>
movl   $0x0,-0x30(%rbp)
cmpl   $0x3,-0x30(%rbp)
jge    17ac <fastBlur4+0x6ac>
movl   $0x1,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1580 <fastBlur4+0x480>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    156d <fastBlur4+0x46d>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
cltd
idiv   %ecx
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    14e7 <fastBlur4+0x3e7>
jmp    1572 <fastBlur4+0x472>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    14d4 <fastBlur4+0x3d4>
mov    -0xc(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x18(%rbp)
cmpl   $0x0,-0x18(%rbp)
jl     1633 <fastBlur4+0x533>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1620 <fastBlur4+0x520>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
add    $0x1,%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
cltd
idiv   %ecx
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    159a <fastBlur4+0x49a>
jmp    1625 <fastBlur4+0x525>
mov    -0x18(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x18(%rbp)
jmp    1589 <fastBlur4+0x489>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    16e6 <fastBlur4+0x5e6>
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    16d3 <fastBlur4+0x5d3>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
sub    -0xc(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
cltd
idiv   %ecx
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    164d <fastBlur4+0x54d>
jmp    16d8 <fastBlur4+0x5d8>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    163a <fastBlur4+0x53a>
mov    -0x10(%rbp),%eax
sub    $0x2,%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jl     1799 <fastBlur4+0x699>
movl   $0x0,-0x18(%rbp)
mov    -0x18(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1786 <fastBlur4+0x686>
mov    -0x20(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
add    -0xc(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
imul   %ecx,%eax
mov    -0x8(%rbp),%rcx
mov    -0x18(%rbp),%edx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%edx
shl    $0x2,%edx
add    -0x30(%rbp),%edx
movslq %edx,%rdx
movzbl (%rcx,%rdx,1),%ecx
add    %ecx,%eax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
cltd
idiv   %ecx
mov    %al,%dl
mov    -0x8(%rbp),%rax
mov    -0x18(%rbp),%ecx
mov    -0xc(%rbp),%esi
imul   -0x1c(%rbp),%esi
add    %esi,%ecx
shl    $0x2,%ecx
add    -0x30(%rbp),%ecx
movslq %ecx,%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1700 <fastBlur4+0x600>
jmp    178b <fastBlur4+0x68b>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
jmp    16ef <fastBlur4+0x5ef>
jmp    179e <fastBlur4+0x69e>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    14c3 <fastBlur4+0x3c3>
pop    %rbp
ret

x86 assembly (clang, -O2):
<fastBlur4>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %ecx,%r8d
mov    %edx,%r9d
xor    %eax,%eax
cmp    $0x1,%ecx
sete   %al
cmp    $0x3,%ecx
mov    $0x2,%ecx
cmovne %eax,%ecx
cmp    $0x7,%r8d
mov    $0x3,%eax
cmovne %ecx,%eax
cmp    $0xf,%r8d
mov    $0x4,%ecx
cmovne %eax,%ecx
cmp    $0x1f,%r8d
mov    $0x5,%eax
cmovne %ecx,%eax
cmp    $0x3f,%r8d
mov    $0x6,%edx
cmovne %eax,%edx
cmp    $0x7f,%r8d
mov    $0x7,%ecx
cmovne %edx,%ecx
cmp    $0x3f,%r8d
mov    %rsi,-0x28(%rsp)
ja     13da <fastBlur4+0x2da>
mov    %r8d,%eax
movabs $0x800000008000808a,%rdx
bt     %rax,%rdx
jae    13da <fastBlur4+0x2da>
lea    -0x2(%rsi),%eax
lea    -0x2(%r9),%edx
mov    %esi,%r11d
cltq
mov    %rax,-0x18(%rsp)
movslq %edx,%rax
mov    %r9d,%edx
lea    0x0(,%rsi,4),%r10d
lea    -0x8(,%rsi,4),%r12d
ff
lea    -0x1(%rdx),%r13
mov    %rax,-0x20(%rsp)
imul   %esi,%eax
shl    $0x2,%eax
mov    %eax,-0x3c(%rsp)
lea    -0x1(%r9),%eax
imul   %esi,%eax
shl    $0x2,%eax
mov    %eax,-0x40(%rsp)
xor    %eax,%eax
mov    %rax,-0x38(%rsp)
movl   $0x4,-0x44(%rsp)
mov    %rdx,-0x8(%rsp)
mov    %r13,-0x10(%rsp)
jmp    1228 <fastBlur4+0x128>
nopl   0x0(%rax,%rax,1)
mov    -0x38(%rsp),%rax
add    $0x1,%eax
addl   $0x1,-0x44(%rsp)
mov    -0x2c(%rsp),%r12d
add    $0x1,%r12d
addl   $0x1,-0x3c(%rsp)
addl   $0x1,-0x40(%rsp)
mov    %rax,-0x38(%rsp)
cmp    $0x3,%eax
mov    -0x8(%rsp),%rdx
mov    -0x10(%rsp),%r13
je     165d <fastBlur4+0x55d>
cmp    $0x2,%esi
jl     12a3 <fastBlur4+0x1a3>
mov    $0x1,%r15d
mov    -0x44(%rsp),%r14d
jmp    124d <fastBlur4+0x14d>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r15
add    $0x4,%r14d
cmp    %r11,%r15
je     1290 <fastBlur4+0x190>
test   %r9d,%r9d
jle    1240 <fastBlur4+0x140>
mov    %rdx,%rax
mov    %r14d,%esi
nopl   0x0(%rax,%rax,1)
lea    -0x4(%rsi),%ebx
movslq %ebx,%rbx
movzbl (%rdi,%rbx,1),%ebx
imul   %r8d,%ebx
movslq %esi,%rsi
movzbl (%rdi,%rsi,1),%ebp
add    %ebx,%ebp
sar    %cl,%ebp
mov    %bpl,(%rdi,%rsi,1)
add    %r10d,%esi
add    $0xffffffffffffffff,%rax
jne    1260 <fastBlur4+0x160>
jmp    1240 <fastBlur4+0x140>
nopl   0x0(%rax,%rax,1)
mov    %r12d,%r15d
mov    -0x18(%rsp),%r14
cmpl   $0x2,-0x28(%rsp)
jge    1324 <fastBlur4+0x224>
mov    %r12d,-0x2c(%rsp)
cmpl   $0x0,-0x28(%rsp)
jle    1360 <fastBlur4+0x260>
mov    -0x38(%rsp),%rax
mov    %eax,%r14d
xor    %r15d,%r15d
jmp    12d1 <fastBlur4+0x1d1>
add    $0x1,%r15
add    $0x4,%r14d
cmp    %r11,%r15
je     1360 <fastBlur4+0x260>
cmp    $0x2,%r9d
jl     12c0 <fastBlur4+0x1c0>
mov    %r13,%rax
mov    %r14d,%esi
nopl   (%rax)
movslq %esi,%rsi
movzbl (%rdi,%rsi,1),%ebx
imul   %r8d,%ebx
add    %r10d,%esi
movslq %esi,%rbp
movzbl (%rdi,%rbp,1),%edx
add    %ebx,%edx
sar    %cl,%edx
mov    %dl,(%rdi,%rbp,1)
add    $0xffffffffffffffff,%rax
jne    12e0 <fastBlur4+0x1e0>
jmp    12c0 <fastBlur4+0x1c0>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
lea    -0x1(%r14),%rax
add    $0xfffffffc,%r15d
test   %r14,%r14
mov    %rax,%r14
jle    12a3 <fastBlur4+0x1a3>
test   %r9d,%r9d
jle    1310 <fastBlur4+0x210>
mov    %rdx,%rax
mov    %r15d,%esi
nop
lea    0x4(%rsi),%ebx
movslq %ebx,%rbx
movzbl (%rdi,%rbx,1),%ebx
imul   %r8d,%ebx
movslq %esi,%rsi
movzbl (%rdi,%rsi,1),%ebp
add    %ebx,%ebp
sar    %cl,%ebp
mov    %bpl,(%rdi,%rsi,1)
add    %r10d,%esi
add    $0xffffffffffffffff,%rax
jne    1330 <fastBlur4+0x230>
jmp    1310 <fastBlur4+0x210>
nopl   0x0(%rax,%rax,1)
cmp    $0x2,%r9d
mov    -0x28(%rsp),%rsi
jl     11f0 <fastBlur4+0xf0>
mov    -0x40(%rsp),%r12d
mov    -0x3c(%rsp),%r15d
mov    -0x20(%rsp),%r14
jmp    1396 <fastBlur4+0x296>
lea    -0x1(%r14),%rax
sub    %r10d,%r15d
sub    %r10d,%r12d
test   %r14,%r14
mov    %rax,%r14
jle    11f0 <fastBlur4+0xf0>
test   %esi,%esi
jle    1380 <fastBlur4+0x280>
mov    %r11,%rbx
mov    %r12d,%ebp
mov    %r15d,%r13d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %ebp,%rbp
movzbl (%rdi,%rbp,1),%eax
imul   %r8d,%eax
movslq %r13d,%r13
movzbl (%rdi,%r13,1),%edx
add    %eax,%edx
sar    %cl,%edx
mov    %dl,(%rdi,%r13,1)
add    $0x4,%r13d
add    $0x4,%ebp
add    $0xffffffffffffffff,%rbx
jne    13b0 <fastBlur4+0x2b0>
jmp    1380 <fastBlur4+0x280>
cmp    $0x7f,%r8d
je     1185 <fastBlur4+0x85>
lea    -0x2(%rsi),%eax
lea    -0x2(%r9),%edx
lea    0x1(%r8),%ecx
mov    %esi,%r15d
cltq
mov    %rax,-0x18(%rsp)
movslq %edx,%rax
mov    %r9d,%r12d
lea    0x0(,%rsi,4),%r10d
lea    -0x8(,%rsi,4),%r13d
ff
lea    -0x1(%r12),%rdx
mov    %rdx,-0x10(%rsp)
mov    %rax,-0x20(%rsp)
imul   %esi,%eax
shl    $0x2,%eax
mov    %eax,-0x3c(%rsp)
lea    -0x1(%r9),%eax
imul   %esi,%eax
shl    $0x2,%eax
mov    %eax,-0x40(%rsp)
xor    %eax,%eax
mov    %rax,-0x38(%rsp)
movl   $0x4,-0x44(%rsp)
mov    %r12,-0x8(%rsp)
jmp    1486 <fastBlur4+0x386>
nopl   0x0(%rax)
mov    -0x38(%rsp),%rax
add    $0x1,%eax
addl   $0x1,-0x44(%rsp)
mov    -0x2c(%rsp),%r13d
add    $0x1,%r13d
addl   $0x1,-0x3c(%rsp)
addl   $0x1,-0x40(%rsp)
mov    %rax,-0x38(%rsp)
cmp    $0x3,%eax
mov    %rbp,%r15
mov    -0x8(%rsp),%r12
je     165d <fastBlur4+0x55d>
cmp    $0x2,%esi
jl     1503 <fastBlur4+0x403>
mov    $0x1,%r14d
mov    -0x44(%rsp),%r11d
jmp    14ad <fastBlur4+0x3ad>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
add    $0x4,%r11d
cmp    %r15,%r14
je     14f0 <fastBlur4+0x3f0>
test   %r9d,%r9d
jle    14a0 <fastBlur4+0x3a0>
mov    %r12,%rsi
mov    %r11d,%ebx
nopl   0x0(%rax,%rax,1)
lea    -0x4(%rbx),%eax
cltq
movzbl (%rdi,%rax,1),%edx
imul   %r8d,%edx
movslq %ebx,%rbx
movzbl (%rdi,%rbx,1),%eax
add    %edx,%eax
cltd
idiv   %ecx
mov    %al,(%rdi,%rbx,1)
add    %r10d,%ebx
add    $0xffffffffffffffff,%rsi
jne    14c0 <fastBlur4+0x3c0>
jmp    14a0 <fastBlur4+0x3a0>
nopw   0x0(%rax,%rax,1)
mov    %r13d,%r14d
mov    -0x18(%rsp),%r11
cmpl   $0x2,-0x28(%rsp)
jge    1594 <fastBlur4+0x494>
mov    %r13d,-0x2c(%rsp)
cmpl   $0x0,-0x28(%rsp)
mov    -0x10(%rsp),%r13
jle    15d0 <fastBlur4+0x4d0>
mov    -0x38(%rsp),%rax
mov    %eax,%r11d
xor    %r14d,%r14d
jmp    1541 <fastBlur4+0x441>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%r14
add    $0x4,%r11d
cmp    %r15,%r14
je     15d0 <fastBlur4+0x4d0>
cmp    $0x2,%r9d
jl     1530 <fastBlur4+0x430>
mov    %r13,%rsi
mov    %r11d,%ebx
nopl   (%rax)
movslq %ebx,%rbx
movzbl (%rdi,%rbx,1),%edx
imul   %r8d,%edx
add    %r10d,%ebx
movslq %ebx,%rbp
movzbl (%rdi,%rbp,1),%eax
add    %edx,%eax
cltd
idiv   %ecx
mov    %al,(%rdi,%rbp,1)
add    $0xffffffffffffffff,%rsi
jne    1550 <fastBlur4+0x450>
jmp    1530 <fastBlur4+0x430>
cs nopw 0x0(%rax,%rax,1)
nop
lea    -0x1(%r11),%rax
add    $0xfffffffc,%r14d
test   %r11,%r11
mov    %rax,%r11
jle    1503 <fastBlur4+0x403>
test   %r9d,%r9d
jle    1580 <fastBlur4+0x480>
mov    %r12,%rsi
mov    %r14d,%ebx
nop
lea    0x4(%rbx),%eax
cltq
movzbl (%rdi,%rax,1),%edx
imul   %r8d,%edx
movslq %ebx,%rbx
movzbl (%rdi,%rbx,1),%eax
add    %edx,%eax
cltd
idiv   %ecx
mov    %al,(%rdi,%rbx,1)
add    %r10d,%ebx
add    $0xffffffffffffffff,%rsi
jne    15a0 <fastBlur4+0x4a0>
jmp    1580 <fastBlur4+0x480>
nopw   0x0(%rax,%rax,1)
mov    %r15,%rbp
cmp    $0x2,%r9d
mov    -0x28(%rsp),%rsi
jl     1450 <fastBlur4+0x350>
mov    -0x40(%rsp),%r11d
mov    -0x3c(%rsp),%r13d
mov    -0x20(%rsp),%r15
jmp    1616 <fastBlur4+0x516>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x1(%r15),%rax
sub    %r10d,%r13d
sub    %r10d,%r11d
test   %r15,%r15
mov    %rax,%r15
jle    1450 <fastBlur4+0x350>
test   %esi,%esi
jle    1600 <fastBlur4+0x500>
mov    %rbp,%rbx
mov    %r11d,%r12d
mov    %r13d,%r14d
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %r12d,%r12
movzbl (%rdi,%r12,1),%edx
imul   %r8d,%edx
movslq %r14d,%r14
movzbl (%rdi,%r14,1),%eax
add    %edx,%eax
cltd
idiv   %ecx
mov    %al,(%rdi,%r14,1)
add    $0x4,%r14d
add    $0x4,%r12d
add    $0xffffffffffffffff,%rbx
jne    1630 <fastBlur4+0x530>
jmp    1600 <fastBlur4+0x500>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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