int repeat(filt, x_dim, y_dim, x_pos, y_pos, result, r_or_e)
register double *filt, *result;
register int x_dim;
int y_dim, x_pos, y_pos, r_or_e;
{
  register int y_filt, x_filt, y_res, x_res, y_tmp, x_tmp;
  register int x_base = (x_pos > 0) ? (x_dim - 1) : 0;
  register int y_base = x_dim * ((y_pos > 0) ? (y_dim - 1) : 0);
  int x_overhang =
      ((x_pos > 0) ? (x_pos - 1) : ((x_pos < 0) ? (x_pos + 1) : 0));
  int y_overhang =
      x_dim * ((y_pos > 0) ? (y_pos - 1) : ((y_pos < 0) ? (y_pos + 1) : 0));
  int filt_sz = x_dim * y_dim;
  int mx_pos = (x_dim / 2);
  int my_pos = x_dim * (y_dim / 2);
  int i;
  for (i = 0; i < filt_sz; i++)
    result[i] = 0.0;
  if (r_or_e == 0)
    for (y_filt = 0, y_res = y_overhang; y_filt < filt_sz;
         y_filt += x_dim, y_res += x_dim)
      for (x_filt = y_filt, x_res = x_overhang; x_filt < y_filt + x_dim;
           x_filt++, x_res++)
        result[((y_res >= 0) ? ((y_res < filt_sz) ? y_res : (filt_sz - x_dim))
                             : 0) +
               ((x_res >= 0) ? ((x_res < x_dim) ? x_res : (x_dim - 1)) : 0)] +=
            filt[x_filt];
  else {
    if ((y_base - y_overhang) != my_pos)
      for (y_res = y_base,
          y_filt =
               y_base - (((y_overhang) >= 0) ? (y_overhang) : (-(y_overhang)));
           y_filt > y_base - filt_sz; y_filt -= x_dim, y_res -= x_dim)
        if ((x_base - x_overhang) != mx_pos)
          for (x_res = x_base,
              x_filt = x_base -
                       (((x_overhang) >= 0) ? (x_overhang) : (-(x_overhang)));
               x_filt > x_base - x_dim; x_res--, x_filt--)
            result[(((y_res) >= 0) ? (y_res) : (-(y_res))) +
                   (((x_res) >= 0) ? (x_res) : (-(x_res)))] +=
                filt[(((y_filt) >= 0) ? (y_filt) : (-(y_filt))) +
                     (((x_filt) >= 0) ? (x_filt) : (-(x_filt)))];
        else
          for (x_res = x_base,
              x_filt = x_base -
                       (((x_overhang) >= 0) ? (x_overhang) : (-(x_overhang)));
               x_filt > x_base - x_dim; x_filt--, x_res--)
            for (x_tmp = x_filt; x_tmp > x_base - x_dim; x_tmp--)
              result[(((y_res) >= 0) ? (y_res) : (-(y_res))) +
                     (((x_res) >= 0) ? (x_res) : (-(x_res)))] +=
                  filt[(((y_filt) >= 0) ? (y_filt) : (-(y_filt))) +
                       (((x_tmp) >= 0) ? (x_tmp) : (-(x_tmp)))];
    else
      for (y_res = y_base,
          y_filt =
               y_base - (((y_overhang) >= 0) ? (y_overhang) : (-(y_overhang)));
           y_filt > y_base - filt_sz; y_filt -= x_dim, y_res -= x_dim)
        for (y_tmp = y_filt; y_tmp > y_base - filt_sz; y_tmp -= x_dim)
          if ((x_base - x_overhang) != mx_pos)
            for (x_res = x_base,
                x_filt = x_base -
                         (((x_overhang) >= 0) ? (x_overhang) : (-(x_overhang)));
                 x_filt > x_base - x_dim; x_filt--, x_res--)
              result[(((y_res) >= 0) ? (y_res) : (-(y_res))) +
                     (((x_res) >= 0) ? (x_res) : (-(x_res)))] +=
                  filt[(((y_tmp) >= 0) ? (y_tmp) : (-(y_tmp))) +
                       (((x_filt) >= 0) ? (x_filt) : (-(x_filt)))];
          else
            for (x_res = x_base,
                x_filt = x_base -
                         (((x_overhang) >= 0) ? (x_overhang) : (-(x_overhang)));
                 x_filt > x_base - x_dim; x_filt--, x_res--)
              for (x_tmp = x_filt; x_tmp > x_base - x_dim; x_tmp--)
                result[(((y_res) >= 0) ? (y_res) : (-(y_res))) +
                       (((x_res) >= 0) ? (x_res) : (-(x_res)))] +=
                    filt[(((y_tmp) >= 0) ? (y_tmp) : (-(y_tmp))) +
                         (((x_tmp) >= 0) ? (x_tmp) : (-(x_tmp)))];
  }
  return (0);
}


x86 assembly (clang, -O0):
<repeat>:
push   %rbp
mov    %rsp,%rbp
sub    $0x138,%rsp
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
cmpl   $0x0,-0x14(%rbp)
jle    113b <repeat+0x3b>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1145 <repeat+0x45>
xor    %eax,%eax
mov    %eax,-0x5c(%rbp)
jmp    1145 <repeat+0x45>
mov    -0x5c(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x60(%rbp)
cmpl   $0x0,-0x18(%rbp)
jle    1169 <repeat+0x69>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1173 <repeat+0x73>
xor    %eax,%eax
mov    %eax,-0x64(%rbp)
jmp    1173 <repeat+0x73>
mov    -0x60(%rbp),%eax
mov    -0x64(%rbp),%ecx
imul   %ecx,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0x0,-0x14(%rbp)
jle    1197 <repeat+0x97>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x68(%rbp)
jmp    11bf <repeat+0xbf>
cmpl   $0x0,-0x14(%rbp)
jge    11af <repeat+0xaf>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    11b9 <repeat+0xb9>
xor    %eax,%eax
mov    %eax,-0x6c(%rbp)
jmp    11b9 <repeat+0xb9>
mov    -0x6c(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x70(%rbp)
cmpl   $0x0,-0x18(%rbp)
jle    11e3 <repeat+0xe3>
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    120b <repeat+0x10b>
cmpl   $0x0,-0x18(%rbp)
jge    11fb <repeat+0xfb>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    1205 <repeat+0x105>
xor    %eax,%eax
mov    %eax,-0x78(%rbp)
jmp    1205 <repeat+0x105>
mov    -0x78(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x70(%rbp),%eax
mov    -0x74(%rbp),%ecx
imul   %ecx,%eax
mov    %eax,-0x48(%rbp)
mov    -0xc(%rbp),%eax
imul   -0x10(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x50(%rbp)
mov    -0xc(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x7c(%rbp),%eax
imul   %ecx,%eax
mov    %eax,-0x54(%rbp)
movl   $0x0,-0x58(%rbp)
mov    -0x58(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    127c <repeat+0x17c>
mov    -0x20(%rbp),%rax
movslq -0x58(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
jmp    1252 <repeat+0x152>
cmpl   $0x0,0x10(%rbp)
jne    13e6 <repeat+0x2e6>
movl   $0x0,-0x24(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    13e1 <repeat+0x2e1>
mov    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x44(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x24(%rbp),%ecx
add    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jge    13c5 <repeat+0x2c5>
mov    -0x8(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rax,-0x88(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     131d <repeat+0x21d>
mov    -0x2c(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    1300 <repeat+0x200>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x94(%rbp)
jmp    130c <repeat+0x20c>
mov    -0x4c(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
jmp    132a <repeat+0x22a>
xor    %eax,%eax
mov    %eax,-0x98(%rbp)
jmp    132a <repeat+0x22a>
mov    -0x98(%rbp),%eax
mov    %eax,-0x9c(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     1377 <repeat+0x277>
mov    -0x30(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    135a <repeat+0x25a>
mov    -0x30(%rbp),%eax
mov    %eax,-0xa0(%rbp)
jmp    1366 <repeat+0x266>
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    %eax,-0xa4(%rbp)
jmp    1384 <repeat+0x284>
xor    %eax,%eax
mov    %eax,-0xa4(%rbp)
jmp    1384 <repeat+0x284>
mov    -0x88(%rbp),%rax
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x9c(%rbp),%ecx
mov    -0xa4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    12ab <repeat+0x1ab>
jmp    13ca <repeat+0x2ca>
mov    -0xc(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0xc(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x2c(%rbp)
jmp    1293 <repeat+0x193>
jmp    1b6e <repeat+0xa6e>
mov    -0x40(%rbp),%eax
sub    -0x48(%rbp),%eax
cmp    -0x54(%rbp),%eax
je     1799 <repeat+0x699>
mov    -0x40(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xa8(%rbp)
cmpl   $0x0,-0x48(%rbp)
jl     141c <repeat+0x31c>
mov    -0x48(%rbp),%eax
mov    %eax,-0xac(%rbp)
jmp    1427 <repeat+0x327>
xor    %eax,%eax
sub    -0x48(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xa8(%rbp),%eax
mov    -0xac(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    -0x4c(%rbp),%ecx
cmp    %ecx,%eax
jle    1794 <repeat+0x694>
mov    -0x3c(%rbp),%eax
sub    -0x44(%rbp),%eax
cmp    -0x50(%rbp),%eax
je     15d1 <repeat+0x4d1>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0xb0(%rbp)
cmpl   $0x0,-0x44(%rbp)
jl     147f <repeat+0x37f>
mov    -0x44(%rbp),%eax
mov    %eax,-0xb4(%rbp)
jmp    148a <repeat+0x38a>
xor    %eax,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb0(%rbp),%eax
mov    -0xb4(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    15cc <repeat+0x4cc>
mov    -0x8(%rbp),%rax
mov    %rax,-0xc0(%rbp)
cmpl   $0x0,-0x24(%rbp)
jl     14cf <repeat+0x3cf>
mov    -0x24(%rbp),%eax
mov    %eax,-0xc4(%rbp)
jmp    14da <repeat+0x3da>
xor    %eax,%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
mov    %eax,-0xc8(%rbp)
cmpl   $0x0,-0x28(%rbp)
jl     14fe <repeat+0x3fe>
mov    -0x28(%rbp),%eax
mov    %eax,-0xcc(%rbp)
jmp    1509 <repeat+0x409>
xor    %eax,%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xc0(%rbp),%rax
mov    -0xc8(%rbp),%ecx
mov    -0xcc(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rax,-0xd8(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     1551 <repeat+0x451>
mov    -0x2c(%rbp),%eax
mov    %eax,-0xe4(%rbp)
jmp    155c <repeat+0x45c>
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
mov    %eax,-0xe8(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     1580 <repeat+0x480>
mov    -0x30(%rbp),%eax
mov    %eax,-0xec(%rbp)
jmp    158b <repeat+0x48b>
xor    %eax,%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    -0xd8(%rbp),%rax
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0xe8(%rbp),%ecx
mov    -0xec(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
jmp    149b <repeat+0x39b>
jmp    1774 <repeat+0x674>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0xf0(%rbp)
cmpl   $0x0,-0x44(%rbp)
jl     15f8 <repeat+0x4f8>
mov    -0x44(%rbp),%eax
mov    %eax,-0xf4(%rbp)
jmp    1603 <repeat+0x503>
xor    %eax,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf0(%rbp),%eax
mov    -0xf4(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    176f <repeat+0x66f>
mov    -0x28(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    1753 <repeat+0x653>
mov    -0x8(%rbp),%rax
mov    %rax,-0x100(%rbp)
cmpl   $0x0,-0x24(%rbp)
jl     165f <repeat+0x55f>
mov    -0x24(%rbp),%eax
mov    %eax,-0x104(%rbp)
jmp    166a <repeat+0x56a>
xor    %eax,%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
mov    %eax,-0x108(%rbp)
cmpl   $0x0,-0x38(%rbp)
jl     168e <repeat+0x58e>
mov    -0x38(%rbp),%eax
mov    %eax,-0x10c(%rbp)
jmp    1699 <repeat+0x599>
xor    %eax,%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x100(%rbp),%rax
mov    -0x108(%rbp),%ecx
mov    -0x10c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rax,-0x118(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     16e1 <repeat+0x5e1>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x124(%rbp)
jmp    16ec <repeat+0x5ec>
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x124(%rbp)
mov    -0x124(%rbp),%eax
mov    %eax,-0x128(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     1710 <repeat+0x610>
mov    -0x30(%rbp),%eax
mov    %eax,-0x12c(%rbp)
jmp    171b <repeat+0x61b>
xor    %eax,%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x12c(%rbp)
mov    -0x118(%rbp),%rax
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x128(%rbp),%ecx
mov    -0x12c(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
jmp    162b <repeat+0x52b>
jmp    1758 <repeat+0x658>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
jmp    1614 <repeat+0x514>
jmp    1774 <repeat+0x674>
jmp    1779 <repeat+0x679>
mov    -0xc(%rbp),%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0xc(%rbp),%ecx
mov    -0x2c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x2c(%rbp)
jmp    1438 <repeat+0x338>
jmp    1b69 <repeat+0xa69>
mov    -0x40(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x130(%rbp)
cmpl   $0x0,-0x48(%rbp)
jl     17c0 <repeat+0x6c0>
mov    -0x48(%rbp),%eax
mov    %eax,-0x134(%rbp)
jmp    17cb <repeat+0x6cb>
xor    %eax,%eax
sub    -0x48(%rbp),%eax
mov    %eax,-0x134(%rbp)
mov    -0x130(%rbp),%eax
mov    -0x134(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    -0x4c(%rbp),%ecx
cmp    %ecx,%eax
jle    1b64 <repeat+0xa64>
mov    -0x24(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x40(%rbp),%ecx
sub    -0x4c(%rbp),%ecx
cmp    %ecx,%eax
jle    1b44 <repeat+0xa44>
mov    -0x3c(%rbp),%eax
sub    -0x44(%rbp),%eax
cmp    -0x50(%rbp),%eax
je     198c <repeat+0x88c>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x138(%rbp)
cmpl   $0x0,-0x44(%rbp)
jl     183a <repeat+0x73a>
mov    -0x44(%rbp),%eax
mov    %eax,-0x13c(%rbp)
jmp    1845 <repeat+0x745>
xor    %eax,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x13c(%rbp)
mov    -0x138(%rbp),%eax
mov    -0x13c(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    1987 <repeat+0x887>
mov    -0x8(%rbp),%rax
mov    %rax,-0x148(%rbp)
cmpl   $0x0,-0x34(%rbp)
jl     188a <repeat+0x78a>
mov    -0x34(%rbp),%eax
mov    %eax,-0x14c(%rbp)
jmp    1895 <repeat+0x795>
xor    %eax,%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x14c(%rbp)
mov    -0x14c(%rbp),%eax
mov    %eax,-0x150(%rbp)
cmpl   $0x0,-0x28(%rbp)
jl     18b9 <repeat+0x7b9>
mov    -0x28(%rbp),%eax
mov    %eax,-0x154(%rbp)
jmp    18c4 <repeat+0x7c4>
xor    %eax,%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x154(%rbp)
mov    -0x148(%rbp),%rax
mov    -0x150(%rbp),%ecx
mov    -0x154(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rax,-0x160(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     190c <repeat+0x80c>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x16c(%rbp)
jmp    1917 <repeat+0x817>
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x16c(%rbp)
mov    -0x16c(%rbp),%eax
mov    %eax,-0x170(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     193b <repeat+0x83b>
mov    -0x30(%rbp),%eax
mov    %eax,-0x174(%rbp)
jmp    1946 <repeat+0x846>
xor    %eax,%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x174(%rbp)
mov    -0x160(%rbp),%rax
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x170(%rbp),%ecx
mov    -0x174(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
jmp    1856 <repeat+0x756>
jmp    1b2f <repeat+0xa2f>
mov    -0x3c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x3c(%rbp),%eax
mov    %eax,-0x178(%rbp)
cmpl   $0x0,-0x44(%rbp)
jl     19b3 <repeat+0x8b3>
mov    -0x44(%rbp),%eax
mov    %eax,-0x17c(%rbp)
jmp    19be <repeat+0x8be>
xor    %eax,%eax
sub    -0x44(%rbp),%eax
mov    %eax,-0x17c(%rbp)
mov    -0x178(%rbp),%eax
mov    -0x17c(%rbp),%ecx
sub    %ecx,%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    1b2a <repeat+0xa2a>
mov    -0x28(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x3c(%rbp),%ecx
sub    -0xc(%rbp),%ecx
cmp    %ecx,%eax
jle    1b0e <repeat+0xa0e>
mov    -0x8(%rbp),%rax
mov    %rax,-0x188(%rbp)
cmpl   $0x0,-0x34(%rbp)
jl     1a1a <repeat+0x91a>
mov    -0x34(%rbp),%eax
mov    %eax,-0x18c(%rbp)
jmp    1a25 <repeat+0x925>
xor    %eax,%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%eax
mov    %eax,-0x190(%rbp)
cmpl   $0x0,-0x38(%rbp)
jl     1a49 <repeat+0x949>
mov    -0x38(%rbp),%eax
mov    %eax,-0x194(%rbp)
jmp    1a54 <repeat+0x954>
xor    %eax,%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x194(%rbp)
mov    -0x188(%rbp),%rax
mov    -0x190(%rbp),%ecx
mov    -0x194(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    %rax,-0x1a0(%rbp)
cmpl   $0x0,-0x2c(%rbp)
jl     1a9c <repeat+0x99c>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
jmp    1aa7 <repeat+0x9a7>
xor    %eax,%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x1ac(%rbp)
mov    -0x1ac(%rbp),%eax
mov    %eax,-0x1b0(%rbp)
cmpl   $0x0,-0x30(%rbp)
jl     1acb <repeat+0x9cb>
mov    -0x30(%rbp),%eax
mov    %eax,-0x1b4(%rbp)
jmp    1ad6 <repeat+0x9d6>
xor    %eax,%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x1b4(%rbp)
mov    -0x1a0(%rbp),%rax
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x1b0(%rbp),%ecx
mov    -0x1b4(%rbp),%edx
add    %edx,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x38(%rbp)
jmp    19e6 <repeat+0x8e6>
jmp    1b13 <repeat+0xa13>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x30(%rbp)
jmp    19cf <repeat+0x8cf>
jmp    1b2f <repeat+0xa2f>
jmp    1b34 <repeat+0xa34>
mov    -0xc(%rbp),%ecx
mov    -0x34(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x34(%rbp)
jmp    17f3 <repeat+0x6f3>
jmp    1b49 <repeat+0xa49>
mov    -0xc(%rbp),%ecx
mov    -0x24(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x24(%rbp)
mov    -0xc(%rbp),%ecx
mov    -0x2c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x2c(%rbp)
jmp    17dc <repeat+0x6dc>
jmp    1b69 <repeat+0xa69>
jmp    1b6e <repeat+0xa6e>
xor    %eax,%eax
add    $0x138,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<repeat>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r9,%rbx
mov    %edx,%r9d
mov    %esi,%r14d
mov    %rdi,%r15
lea    -0x1(%r14),%r13d
lea    -0x1(%r9),%r11d
lea    0x1(%r8),%ebp
xor    %eax,%eax
sub    $0x1,%r8d
cmovb  %eax,%ebp
cmovl  %eax,%r11d
cmovge %r8d,%ebp
lea    0x1(%rcx),%edx
sub    $0x1,%ecx
cmovb  %eax,%edx
cmovge %r13d,%eax
mov    %eax,0x10(%rsp)
cmovge %ecx,%edx
mov    %edx,0x8(%rsp)
imul   %esi,%ebp
mov    %r9d,%eax
imul   %esi,%eax
test   %eax,%eax
mov    %eax,0xc(%rsp)
jle    1222 <repeat+0x112>
mov    %eax,%edx
shl    $0x3,%rdx
xor    %r12d,%r12d
mov    %rbx,%rdi
xor    %esi,%esi
mov    %r11d,0x14(%rsp)
mov    %r9,0x20(%rsp)
call   1030 <memset@plt>
mov    0x20(%rsp),%r9
mov    0x14(%rsp),%r11d
cmpl   $0x0,0x60(%rsp)
jne    122d <repeat+0x11d>
mov    0xc(%rsp),%eax
mov    %eax,%r8d
sub    %r14d,%r8d
movslq %r14d,%r9
movslq %eax,%r10
xor    %esi,%esi
jmp    11cf <repeat+0xbf>
nopw   0x0(%rax,%rax,1)
add    %r14d,%ebp
mov    %rdi,%rsi
cmp    %r10,%rdi
jge    14f9 <repeat+0x3e9>
lea    (%rsi,%r9,1),%rdi
test   %r14d,%r14d
jle    11c0 <repeat+0xb0>
cmp    0xc(%rsp),%ebp
mov    %r8d,%eax
cmovl  %ebp,%eax
test   %ebp,%ebp
cmovs  %r12d,%eax
mov    0x8(%rsp),%ecx
nopl   0x0(%rax)
cmp    %r14d,%ecx
mov    %r13d,%edx
cmovl  %ecx,%edx
movsd  (%r15,%rsi,8),%xmm0
test   %ecx,%ecx
cmovs  %r12d,%edx
add    %eax,%edx
movslq %edx,%rdx
addsd  (%rbx,%rdx,8),%xmm0
movsd  %xmm0,(%rbx,%rdx,8)
add    $0x1,%rsi
add    $0x1,%ecx
cmp    %rdi,%rsi
jl     11f0 <repeat+0xe0>
jmp    11c0 <repeat+0xb0>
cmpl   $0x0,0x60(%rsp)
je     14f9 <repeat+0x3e9>
imul   %r14d,%r11d
mov    %r14d,%eax
shr    $0x1f,%eax
add    %r14d,%eax
sar    %eax
mov    %eax,0x20(%rsp)
mov    %r9d,%ecx
shr    $0x1f,%ecx
add    %r9d,%ecx
sar    %ecx
imul   %r14d,%ecx
mov    %r11d,%edx
sub    %ebp,%edx
mov    %ebp,%eax
neg    %eax
cmovs  %ebp,%eax
mov    %r11d,%esi
mov    0xc(%rsp),%edi
sub    %edi,%esi
cmp    %ecx,%edx
mov    %esi,0x1c(%rsp)
jne    13cc <repeat+0x2bc>
cmp    %eax,%edi
jle    14f9 <repeat+0x3e9>
mov    %r11d,%ecx
sub    %eax,%ecx
mov    0x10(%rsp),%ebp
mov    %ebp,%eax
mov    0x8(%rsp),%edx
sub    %edx,%eax
mov    %eax,0xc(%rsp)
mov    %edx,%r13d
neg    %r13d
cmovs  %edx,%r13d
mov    %ebp,%eax
sub    %r13d,%eax
mov    %eax,0x8(%rsp)
sub    %r14d,%ebp
mov    %r13d,%edx
neg    %edx
jmp    12c7 <repeat+0x1b7>
nopw   0x0(%rax,%rax,1)
mov    0x18(%rsp),%ecx
sub    %r14d,%ecx
mov    0x14(%rsp),%r11d
sub    %r14d,%r11d
cmp    %esi,%ecx
jle    14f9 <repeat+0x3e9>
mov    %r11d,0x14(%rsp)
mov    %ecx,0x18(%rsp)
cmp    %esi,%ecx
jle    12b0 <repeat+0x1a0>
mov    0x14(%rsp),%eax
mov    %eax,%r12d
neg    %r12d
cmovs  %eax,%r12d
mov    0x18(%rsp),%r11d
jmp    12fc <repeat+0x1ec>
nopl   0x0(%rax)
sub    %r14d,%r11d
mov    0x1c(%rsp),%esi
cmp    %esi,%r11d
jle    12b0 <repeat+0x1a0>
mov    0xc(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    1370 <repeat+0x260>
cmp    %r14d,%r13d
jge    12f0 <repeat+0x1e0>
mov    %r11d,%ecx
neg    %ecx
cmovs  %r11d,%ecx
mov    0x8(%rsp),%r10d
mov    0x10(%rsp),%r8d
jmp    132d <repeat+0x21d>
add    $0xffffffff,%r10d
add    $0xffffffff,%r8d
cmp    %ebp,%r10d
jle    12f0 <repeat+0x1e0>
cmp    %ebp,%r10d
jle    1320 <repeat+0x210>
mov    %r8d,%r9d
neg    %r9d
cmovs  %r8d,%r9d
add    %r12d,%r9d
movsd  (%rbx,%r9,8),%xmm0
mov    %r10d,%edi
nopl   0x0(%rax,%rax,1)
mov    %edi,%eax
neg    %eax
cmovs  %edi,%eax
add    %ecx,%eax
addsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%r9,8)
add    $0xffffffff,%edi
cmp    %ebp,%edi
jg     1350 <repeat+0x240>
jmp    1320 <repeat+0x210>
xchg   %ax,%ax
cmp    %r14d,%r13d
jge    12f0 <repeat+0x1e0>
mov    %r11d,%ecx
neg    %ecx
cmovs  %r11d,%ecx
mov    0x10(%rsp),%eax
mov    %eax,%edi
nopl   0x0(%rax,%rax,1)
lea    (%rdx,%rdi,1),%esi
mov    %esi,%eax
neg    %eax
cmovs  %esi,%eax
add    %ecx,%eax
mov    %edi,%esi
neg    %esi
cmovs  %edi,%esi
movsd  (%r15,%rax,8),%xmm0
add    %r12d,%esi
addsd  (%rbx,%rsi,8),%xmm0
movsd  %xmm0,(%rbx,%rsi,8)
lea    (%rdx,%rdi,1),%eax
add    $0xffffffff,%eax
mov    %edi,%esi
add    $0xffffffff,%esi
mov    %esi,%edi
cmp    %ebp,%eax
jg     1390 <repeat+0x280>
jmp    12f0 <repeat+0x1e0>
cmp    %eax,%edi
jle    14f9 <repeat+0x3e9>
mov    %r11d,%r13d
sub    %eax,%r13d
mov    0x10(%rsp),%ebp
mov    %ebp,%ecx
mov    0x8(%rsp),%eax
sub    %eax,%ecx
mov    %ecx,0xc(%rsp)
mov    %eax,%r12d
neg    %r12d
cmovs  %eax,%r12d
mov    %ebp,%eax
sub    %r12d,%eax
mov    %eax,0x8(%rsp)
sub    %r14d,%ebp
mov    %r12d,%r10d
neg    %r10d
jmp    1421 <repeat+0x311>
nopl   0x0(%rax,%rax,1)
sub    %r14d,%r13d
sub    %r14d,%r11d
cmp    0x1c(%rsp),%r13d
jle    14f9 <repeat+0x3e9>
mov    0xc(%rsp),%eax
cmp    0x20(%rsp),%eax
jne    14a0 <repeat+0x390>
cmp    %r14d,%r12d
jge    1410 <repeat+0x300>
mov    %r13d,%eax
neg    %eax
cmovs  %r13d,%eax
mov    %r11d,%ecx
neg    %ecx
cmovs  %r11d,%ecx
mov    0x8(%rsp),%r9d
mov    0x10(%rsp),%edx
jmp    145c <repeat+0x34c>
nopl   (%rax)
add    $0xffffffff,%r9d
add    $0xffffffff,%edx
cmp    %ebp,%r9d
jle    1410 <repeat+0x300>
cmp    %ebp,%r9d
jle    1450 <repeat+0x340>
mov    %edx,%r8d
neg    %r8d
cmovs  %edx,%r8d
add    %ecx,%r8d
movsd  (%rbx,%r8,8),%xmm0
mov    %r9d,%edi
nopw   0x0(%rax,%rax,1)
mov    %edi,%esi
neg    %esi
cmovs  %edi,%esi
add    %eax,%esi
addsd  (%r15,%rsi,8),%xmm0
movsd  %xmm0,(%rbx,%r8,8)
add    $0xffffffff,%edi
cmp    %ebp,%edi
jg     1480 <repeat+0x370>
jmp    1450 <repeat+0x340>
xchg   %ax,%ax
cmp    %r14d,%r12d
jge    1410 <repeat+0x300>
mov    %r13d,%eax
neg    %eax
cmovs  %r13d,%eax
mov    %r11d,%ecx
neg    %ecx
cmovs  %r11d,%ecx
mov    0x10(%rsp),%edx
nop
lea    (%r10,%rdx,1),%edi
mov    %edi,%esi
neg    %esi
cmovs  %edi,%esi
add    %eax,%esi
mov    %edx,%edi
neg    %edi
cmovs  %edx,%edi
movsd  (%r15,%rsi,8),%xmm0
add    %ecx,%edi
addsd  (%rbx,%rdi,8),%xmm0
movsd  %xmm0,(%rbx,%rdi,8)
lea    (%r10,%rdx,1),%esi
add    $0xffffffff,%esi
add    $0xffffffff,%edx
cmp    %ebp,%esi
jg     14c0 <repeat+0x3b0>
jmp    1410 <repeat+0x300>
xor    %eax,%eax
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @repeat(double* nocapture %0, i32 %1, i32 %2, i32 %3, i32 %4, double* nocapture %5, i32 %6) {
%8 = icmp sgt i32 %3, 0
%9 = add nsw i32 %1, -1
%10 = select i1 %8, i32 %9, i32 0
%11 = icmp sgt i32 %4, 0
%12 = add nsw i32 %2, -1
%13 = select i1 %11, i32 %12, i32 0
%14 = mul nsw i32 %13, %1
%15 = add nsw i32 %3, -1
%16 = icmp eq i32 %3, 0
%17 = add nsw i32 %3, 1
%18 = select i1 %16, i32 0, i32 %17
%19 = select i1 %8, i32 %15, i32 %18
%20 = add nsw i32 %4, -1
%21 = icmp eq i32 %4, 0
%22 = add nsw i32 %4, 1
%23 = select i1 %21, i32 0, i32 %22
%24 = select i1 %11, i32 %20, i32 %23
%25 = mul nsw i32 %24, %1
%26 = mul i32 %2, %1
%27 = sdiv i32 %1, 2
%28 = sdiv i32 %2, 2
%29 = mul nsw i32 %28, %1
%30 = icmp sgt i32 %26, 0
br i1 %30, label %31, label %36
31: ; preds = %7
%32 = bitcast double* %5 to i8*
%33 = zext i32 %26 to i64
%34 = shl nuw nsw i64 %33, 3
%35 = icmp eq i32 %6, 0
br i1 %35, label %38, label %72
36: ; preds = %7
%37 = icmp eq i32 %6, 0
br i1 %37, label %216, label %72
38: ; preds = %31
%39 = sub nsw i32 %26, %1
%40 = sext i32 %1 to i64
%41 = sext i32 %26 to i64
%42 = icmp sgt i32 %1, 0
br label %43
43: ; preds = %38, %69
%44 = phi i64 [ 0, %38 ], [ %46, %69 ]
%45 = phi i32 [ %25, %38 ], [ %70, %69 ]
%46 = add i64 %44, %40
br i1 %42, label %47, label %69
47: ; preds = %43
%48 = icmp slt i32 %45, %26
%49 = select i1 %48, i32 %45, i32 %39
%50 = icmp slt i32 %45, 0
%51 = select i1 %50, i32 0, i32 %49
br label %52
52: ; preds = %47, %52
%53 = phi i64 [ %44, %47 ], [ %66, %52 ]
%54 = phi i32 [ %19, %47 ], [ %67, %52 ]
%55 = getelementptr inbounds double, double* %0, i64 %53
%56 = load double, double* %55
%57 = icmp slt i32 %54, %1
%58 = select i1 %57, i32 %54, i32 %9
%59 = icmp slt i32 %54, 0
%60 = select i1 %59, i32 0, i32 %58
%61 = add nsw i32 %60, %51
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds double, double* %5, i64 %62
%64 = load double, double* %63
%65 = fadd double %56, %64
store double %65, double* %63
%66 = add nsw i64 %53, 1
%67 = add nsw i32 %54, 1
%68 = icmp slt i64 %66, %46
br i1 %68, label %52, label %69
69: ; preds = %52, %43
%70 = add nsw i32 %45, %1
%71 = icmp slt i64 %46, %41
br i1 %71, label %43, label %216
72: ; preds = %36, %31
%73 = sub nsw i32 %14, %25
%74 = icmp eq i32 %73, %29
%75 = tail call i32 @llvm.abs.i32(i32 %25, i1 true)
%76 = sub nsw i32 %14, %26
%77 = icmp sgt i32 %26, %75
br i1 %74, label %144, label %78
78: ; preds = %72
br i1 %77, label %79, label %216
79: ; preds = %78
%80 = sub nsw i32 %14, %75
%81 = sub nsw i32 %10, %19
%82 = icmp eq i32 %81, %27
%83 = tail call i32 @llvm.abs.i32(i32 %19, i1 true)
%84 = sub nsw i32 %10, %83
%85 = sub nsw i32 %10, %1
%86 = icmp slt i32 %83, %1
br label %87
87: ; preds = %79, %140
%88 = phi i32 [ %80, %79 ], [ %141, %140 ]
%89 = phi i32 [ %14, %79 ], [ %142, %140 ]
br i1 %82, label %111, label %90
90: ; preds = %87
br i1 %86, label %91, label %140
91: ; preds = %90
%92 = tail call i32 @llvm.abs.i32(i32 %88, i1 true)
%93 = tail call i32 @llvm.abs.i32(i32 %89, i1 true)
br label %94
94: ; preds = %91, %94
%95 = phi i32 [ %84, %91 ], [ %109, %94 ]
%96 = phi i32 [ %10, %91 ], [ %108, %94 ]
%97 = tail call i32 @llvm.abs.i32(i32 %95, i1 true)
%98 = add nuw nsw i32 %97, %92
%99 = zext i32 %98 to i64
%100 = getelementptr inbounds double, double* %0, i64 %99
%101 = load double, double* %100
%102 = tail call i32 @llvm.abs.i32(i32 %96, i1 true)
%103 = add nuw nsw i32 %102, %93
%104 = zext i32 %103 to i64
%105 = getelementptr inbounds double, double* %5, i64 %104
%106 = load double, double* %105
%107 = fadd double %101, %106
store double %107, double* %105
%108 = add nsw i32 %96, -1
%109 = add nsw i32 %95, -1
%110 = icmp sgt i32 %109, %85
br i1 %110, label %94, label %140
111: ; preds = %87
br i1 %86, label %112, label %140
112: ; preds = %111
%113 = tail call i32 @llvm.abs.i32(i32 %88, i1 true)
%114 = tail call i32 @llvm.abs.i32(i32 %89, i1 true)
br label %115
115: ; preds = %112, %136
%116 = phi i32 [ %84, %112 ], [ %137, %136 ]
%117 = phi i32 [ %10, %112 ], [ %138, %136 ]
%118 = icmp sgt i32 %116, %85
br i1 %118, label %119, label %136
119: ; preds = %115
%120 = tail call i32 @llvm.abs.i32(i32 %117, i1 true)
%121 = add nuw nsw i32 %120, %114
%122 = zext i32 %121 to i64
%123 = getelementptr inbounds double, double* %5, i64 %122
%124 = load double, double* %123
br label %125
125: ; preds = %119, %125
%126 = phi double [ %124, %119 ], [ %133, %125 ]
%127 = phi i32 [ %116, %119 ], [ %134, %125 ]
%128 = tail call i32 @llvm.abs.i32(i32 %127, i1 true)
%129 = add nuw nsw i32 %128, %113
%130 = zext i32 %129 to i64
%131 = getelementptr inbounds double, double* %0, i64 %130
%132 = load double, double* %131
%133 = fadd double %132, %126
store double %133, double* %123
%134 = add nsw i32 %127, -1
%135 = icmp sgt i32 %134, %85
br i1 %135, label %125, label %136
136: ; preds = %125, %115
%137 = add nsw i32 %116, -1
%138 = add nsw i32 %117, -1
%139 = icmp sgt i32 %137, %85
br i1 %139, label %115, label %140
140: ; preds = %94, %136, %90, %111
%141 = sub nsw i32 %88, %1
%142 = sub nsw i32 %89, %1
%143 = icmp sgt i32 %141, %76
br i1 %143, label %87, label %216
144: ; preds = %72
br i1 %77, label %145, label %216
145: ; preds = %144
%146 = sub nsw i32 %14, %75
%147 = sub nsw i32 %10, %19
%148 = icmp eq i32 %147, %27
%149 = tail call i32 @llvm.abs.i32(i32 %19, i1 true)
%150 = sub nsw i32 %10, %149
%151 = sub nsw i32 %10, %1
%152 = icmp slt i32 %149, %1
br label %153
153: ; preds = %145, %212
%154 = phi i32 [ %146, %145 ], [ %213, %212 ]
%155 = phi i32 [ %14, %145 ], [ %214, %212 ]
%156 = icmp sgt i32 %154, %76
br i1 %156, label %157, label %212
157: ; preds = %153
%158 = tail call i32 @llvm.abs.i32(i32 %155, i1 true)
br label %159
159: ; preds = %157, %209
%160 = phi i32 [ %154, %157 ], [ %210, %209 ]
br i1 %148, label %181, label %161
161: ; preds = %159
br i1 %152, label %162, label %209
162: ; preds = %161
%163 = tail call i32 @llvm.abs.i32(i32 %160, i1 true)
br label %164
164: ; preds = %162, %164
%165 = phi i32 [ %150, %162 ], [ %178, %164 ]
%166 = phi i32 [ %10, %162 ], [ %179, %164 ]
%167 = tail call i32 @llvm.abs.i32(i32 %165, i1 true)
%168 = add nuw nsw i32 %167, %163
%169 = zext i32 %168 to i64
%170 = getelementptr inbounds double, double* %0, i64 %169
%171 = load double, double* %170
%172 = tail call i32 @llvm.abs.i32(i32 %166, i1 true)
%173 = add nuw nsw i32 %172, %158
%174 = zext i32 %173 to i64
%175 = getelementptr inbounds double, double* %5, i64 %174
%176 = load double, double* %175
%177 = fadd double %171, %176
store double %177, double* %175
%178 = add nsw i32 %165, -1
%179 = add nsw i32 %166, -1
%180 = icmp sgt i32 %178, %151
br i1 %180, label %164, label %209
181: ; preds = %159
br i1 %152, label %182, label %209
182: ; preds = %181
%183 = tail call i32 @llvm.abs.i32(i32 %160, i1 true)
br label %184
184: ; preds = %182, %205
%185 = phi i32 [ %150, %182 ], [ %206, %205 ]
%186 = phi i32 [ %10, %182 ], [ %207, %205 ]
%187 = icmp sgt i32 %185, %151
br i1 %187, label %188, label %205
188: ; preds = %184
%189 = tail call i32 @llvm.abs.i32(i32 %186, i1 true)
%190 = add nuw nsw i32 %189, %158
%191 = zext i32 %190 to i64
%192 = getelementptr inbounds double, double* %5, i64 %191
%193 = load double, double* %192
br label %194
194: ; preds = %188, %194
%195 = phi double [ %193, %188 ], [ %202, %194 ]
%196 = phi i32 [ %185, %188 ], [ %203, %194 ]
%197 = tail call i32 @llvm.abs.i32(i32 %196, i1 true)
%198 = add nuw nsw i32 %197, %183
%199 = zext i32 %198 to i64
%200 = getelementptr inbounds double, double* %0, i64 %199
%201 = load double, double* %200
%202 = fadd double %201, %195
store double %202, double* %192
%203 = add nsw i32 %196, -1
%204 = icmp sgt i32 %203, %151
br i1 %204, label %194, label %205
205: ; preds = %194, %184
%206 = add nsw i32 %185, -1
%207 = add nsw i32 %186, -1
%208 = icmp sgt i32 %206, %151
br i1 %208, label %184, label %209
209: ; preds = %164, %205, %161, %181
%210 = sub nsw i32 %160, %1
%211 = icmp sgt i32 %210, %76
br i1 %211, label %159, label %212
212: ; preds = %209, %153
%213 = sub nsw i32 %154, %1
%214 = sub nsw i32 %155, %1
%215 = icmp sgt i32 %213, %76
br i1 %215, label %153, label %216
216: ; preds = %140, %212, %69, %36, %78, %144
ret i32 0
}