void corcol(data, n, m, symmat) float **data, **symmat;
int n, m;
{
  float eps = 0.005;
  float x, *mean, *stddev, *vector();
  int i, j, j1, j2;
  mean = vector(m);
  stddev = vector(m);
  double t_start, t_end;
  ;
  float float_n = (float)n;
#pragma scop
  for (j = 1; j <= m; j++) {
    mean[j] = 0.0;
    for (i = 1; i <= n; i++) {
      mean[j] += data[i][j];
    }
    mean[j] /= float_n;
  }
  for (j = 1; j <= m; j++) {
    stddev[j] = 0.0;
    for (i = 1; i <= n; i++) {
      stddev[j] += ((data[i][j] - mean[j]) * (data[i][j] - mean[j]));
    }
    stddev[j] /= float_n;
    stddev[j] = sqrt(stddev[j]);
    stddev[j] = (stddev[j] <= eps) ? 1.0 : stddev[j];
  }
  for (i = 1; i <= n; i++) {
    for (j = 1; j <= m; j++) {
      data[i][j] -= mean[j];
      x = sqrt(float_n);
      x *= stddev[j];
      data[i][j] /= x;
    }
  }
  for (j1 = 1; j1 <= m - 1; j1++) {
    symmat[j1][j1] = 1.0;
    for (j2 = j1 + 1; j2 <= m; j2++) {
      symmat[j1][j2] = 0.0;
      for (i = 1; i <= n; i++) {
        symmat[j1][j2] += (data[i][j1] * data[i][j2]);
      }
      symmat[j2][j1] = symmat[j1][j2];
    }
  }
#pragma endscop
  symmat[m][m] = 1.0;
  ;
  ;
  return;
}


x86 assembly (clang, -O0):
<corcol>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
movss  0xec2(%rip),%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <vector@plt>
mov    %rax,-0x28(%rbp)
mov    -0x10(%rbp),%edi
mov    $0x0,%al
call   1030 <vector@plt>
mov    %rax,-0x30(%rbp)
cvtsi2ssl -0xc(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     11fd <corcol+0xdd>
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     11d4 <corcol+0xb4>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1193 <corcol+0x73>
movss  -0x54(%rbp),%xmm1
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1170 <corcol+0x50>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1348 <corcol+0x228>
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     129f <corcol+0x17f>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm2
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm2
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1227 <corcol+0x107>
movss  -0x54(%rbp),%xmm1
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
call   1040 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
movss  -0x1c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     130e <corcol+0x1ee>
movsd  0xd04(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1324 <corcol+0x204>
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1204 <corcol+0xe4>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     140b <corcol+0x2eb>
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     13f8 <corcol+0x2d8>
mov    -0x28(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1040 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mulss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x20(%rbp),%xmm1
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x38(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
divss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1362 <corcol+0x242>
jmp    13fd <corcol+0x2dd>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    134f <corcol+0x22f>
movl   $0x1,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     1525 <corcol+0x405>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movss  0xbc9(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
cmp    -0x10(%rbp),%eax
jg     1512 <corcol+0x3f2>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
xorps  %xmm0,%xmm0
movss  %xmm0,(%rax,%rcx,4)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0xc(%rbp),%eax
jg     14da <corcol+0x3ba>
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm2
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rax,%rcx,4)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1474 <corcol+0x354>
mov    -0x18(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x40(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x18(%rbp),%rax
movslq -0x40(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x3c(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
jmp    1449 <corcol+0x329>
jmp    1517 <corcol+0x3f7>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    1412 <corcol+0x2f2>
mov    -0x18(%rbp),%rax
movslq -0x10(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
movss  0xac7(%rip),%xmm0
movss  %xmm0,(%rax,%rcx,4)
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<corcol>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %rcx,0x30(%rsp)
mov    %edx,%ebp
mov    %esi,%r14d
mov    %rdi,%rbx
mov    %edx,%edi
xor    %eax,%eax
call   1030 <vector@plt>
mov    %rax,%r13
mov    %ebp,%edi
xor    %eax,%eax
call   1030 <vector@plt>
mov    %rax,%r15
mov    %r14,0x10(%rsp)
cvtsi2ss %r14d,%xmm2
mov    %rbp,0x8(%rsp)
test   %ebp,%ebp
movss  %xmm2,0x1c(%rsp)
jle    13bd <corcol+0x29d>
mov    0x10(%rsp),%rax
lea    0x1(%rax),%r8d
mov    0x8(%rsp),%rax
lea    0x1(%rax),%r9d
lea    -0x1(%r8),%rcx
add    $0xfffffffffffffffe,%r8
mov    %ecx,%eax
and    $0x3,%eax
mov    %rcx,%rdx
mov    %rcx,0x20(%rsp)
and    $0xfffffffffffffffc,%rcx
mov    $0x1,%edx
jmp    11cb <corcol+0xab>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xorps  %xmm0,%xmm0
divss  %xmm2,%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
add    $0x1,%rdx
cmp    %r9,%rdx
je     127f <corcol+0x15f>
movl   $0x0,0x0(%r13,%rdx,4)
cmpl   $0x0,0x10(%rsp)
jle    11b0 <corcol+0x90>
cmp    $0x3,%r8
jae    11f0 <corcol+0xd0>
mov    $0x1,%esi
xorps  %xmm0,%xmm0
test   %rax,%rax
jne    125a <corcol+0x13a>
jmp    11b3 <corcol+0x93>
xorps  %xmm0,%xmm0
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x8(%rbx,%rsi,8),%rdi
addss  (%rdi,%rdx,4),%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
mov    0x10(%rbx,%rsi,8),%rdi
addss  (%rdi,%rdx,4),%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
mov    0x18(%rbx,%rsi,8),%rdi
addss  (%rdi,%rdx,4),%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
mov    0x20(%rbx,%rsi,8),%rdi
addss  (%rdi,%rdx,4),%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
add    $0x4,%rsi
cmp    %rsi,%rcx
jne    1200 <corcol+0xe0>
add    $0x1,%rsi
test   %rax,%rax
je     11b3 <corcol+0x93>
lea    (%rbx,%rsi,8),%rsi
xor    %edi,%edi
mov    (%rsi,%rdi,8),%rbp
addss  0x0(%rbp,%rdx,4),%xmm0
movss  %xmm0,0x0(%r13,%rdx,4)
add    $0x1,%rdi
cmp    %rdi,%rax
jne    1260 <corcol+0x140>
jmp    11b3 <corcol+0x93>
cmpl   $0x0,0x8(%rsp)
jle    13bd <corcol+0x29d>
mov    0x20(%rsp),%r12
and    $0xfffffffffffffffe,%r12
neg    %r12
mov    $0x1,%r14d
xorps  %xmm3,%xmm3
movss  0xd59(%rip),%xmm4
movss  0xd55(%rip),%xmm5
mov    %r9,0x28(%rsp)
jmp    130d <corcol+0x1ed>
cs nopw 0x0(%rax,%rax,1)
mov    %r8,%rbp
call   1040 <sqrtf@plt>
movss  0xd34(%rip),%xmm5
movss  0xd28(%rip),%xmm4
xorps  %xmm3,%xmm3
mov    0x28(%rsp),%r9
mov    %rbp,%r8
movss  0x1c(%rsp),%xmm2
movaps %xmm0,%xmm1
cmpnless %xmm4,%xmm1
andps  %xmm1,%xmm0
andnps %xmm5,%xmm1
orps   %xmm0,%xmm1
movss  %xmm1,(%r15,%r14,4)
add    $0x1,%r14
cmp    %r9,%r14
je     13bd <corcol+0x29d>
movl   $0x0,(%r15,%r14,4)
xorps  %xmm0,%xmm0
cmpl   $0x0,0x10(%rsp)
jle    13a7 <corcol+0x287>
mov    $0x1,%eax
xorps  %xmm0,%xmm0
test   %r8,%r8
je     1381 <corcol+0x261>
mov    (%rbx,%rax,8),%rcx
movss  (%rcx,%r14,4),%xmm1
subss  0x0(%r13,%r14,4),%xmm1
mulss  %xmm1,%xmm1
addss  %xmm0,%xmm1
movss  %xmm1,(%r15,%r14,4)
mov    0x8(%rbx,%rax,8),%rcx
movss  (%rcx,%r14,4),%xmm0
subss  0x0(%r13,%r14,4),%xmm0
mulss  %xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%r15,%r14,4)
lea    (%r12,%rax,1),%rcx
add    $0x2,%rcx
add    $0x2,%rax
cmp    $0x1,%rcx
jne    1330 <corcol+0x210>
testb  $0x1,0x20(%rsp)
je     13a7 <corcol+0x287>
mov    (%rbx,%rax,8),%rax
movss  (%rax,%r14,4),%xmm1
subss  0x0(%r13,%r14,4),%xmm1
mulss  %xmm1,%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,(%r15,%r14,4)
divss  %xmm2,%xmm0
ucomiss %xmm3,%xmm0
jb     12c0 <corcol+0x1a0>
sqrtss %xmm0,%xmm0
jmp    12e9 <corcol+0x1c9>
cmpl   $0x0,0x10(%rsp)
jle    1477 <corcol+0x357>
mov    0x8(%rsp),%rax
lea    0x1(%rax),%ebp
mov    0x10(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x28(%rsp)
mov    $0x1,%r14d
xorps  %xmm3,%xmm3
sqrtss %xmm2,%xmm3
xorps  %xmm4,%xmm4
movss  %xmm3,0x20(%rsp)
jmp    140b <corcol+0x2eb>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%r14
cmp    0x28(%rsp),%r14
je     1477 <corcol+0x357>
cmpl   $0x0,0x8(%rsp)
jle    1400 <corcol+0x2e0>
mov    (%rbx,%r14,8),%rax
mov    $0x1,%r12d
jmp    1443 <corcol+0x323>
xchg   %ax,%ax
mulss  (%r15,%r12,4),%xmm0
mov    (%rbx,%r14,8),%rax
movss  (%rax,%r12,4),%xmm1
divss  %xmm0,%xmm1
movss  %xmm1,(%rax,%r12,4)
add    $0x1,%r12
cmp    %r12,%rbp
je     1400 <corcol+0x2e0>
movss  (%rax,%r12,4),%xmm0
subss  0x0(%r13,%r12,4),%xmm0
movss  %xmm0,(%rax,%r12,4)
ucomiss %xmm4,%xmm2
movaps %xmm3,%xmm0
jae    1420 <corcol+0x300>
movaps %xmm2,%xmm0
call   1040 <sqrtf@plt>
xorps  %xmm4,%xmm4
movss  0x20(%rsp),%xmm3
movss  0x1c(%rsp),%xmm2
jmp    1420 <corcol+0x300>
cmpl   $0x2,0x8(%rsp)
mov    0x30(%rsp),%r12
mov    0x10(%rsp),%r13
jl     1586 <corcol+0x466>
lea    0x1(%r13),%r11d
mov    0x8(%rsp),%rax
lea    0x1(%rax),%r15d
mov    %eax,%r8d
lea    -0x1(%r11),%r14
mov    %r14,%rdi
and    $0xfffffffffffffffe,%rdi
neg    %rdi
mov    $0x2,%r10d
mov    $0x1,%r9d
jmp    14cd <corcol+0x3ad>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r10
cmp    %r8,%r9
je     1586 <corcol+0x466>
mov    %r9,%rdx
mov    (%r12,%r9,8),%rbp
movl   $0x3f800000,0x0(%rbp,%r9,4)
80 3f
add    $0x1,%r9
mov    %r10,%rax
jmp    1505 <corcol+0x3e5>
cs nopw 0x0(%rax,%rax,1)
xorps  %xmm0,%xmm0
mov    (%r12,%rax,8),%rcx
movss  %xmm0,(%rcx,%rdx,4)
add    $0x1,%rax
cmp    %r15,%rax
je     14c0 <corcol+0x3a0>
movl   $0x0,0x0(%rbp,%rax,4)
test   %r13d,%r13d
jle    14f0 <corcol+0x3d0>
mov    $0x1,%esi
xorps  %xmm0,%xmm0
cmp    $0x2,%r11d
je     1563 <corcol+0x443>
mov    (%rbx,%rsi,8),%rcx
movss  (%rcx,%rdx,4),%xmm1
mulss  (%rcx,%rax,4),%xmm1
addss  %xmm0,%xmm1
movss  %xmm1,0x0(%rbp,%rax,4)
mov    0x8(%rbx,%rsi,8),%rcx
movss  (%rcx,%rdx,4),%xmm0
mulss  (%rcx,%rax,4),%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x0(%rbp,%rax,4)
lea    (%rdi,%rsi,1),%rcx
add    $0x2,%rcx
add    $0x2,%rsi
cmp    $0x1,%rcx
jne    1520 <corcol+0x400>
test   $0x1,%r14b
je     14f3 <corcol+0x3d3>
mov    (%rbx,%rsi,8),%rcx
movss  (%rcx,%rdx,4),%xmm1
mulss  (%rcx,%rax,4),%xmm1
addss  %xmm1,%xmm0
movss  %xmm0,0x0(%rbp,%rax,4)
jmp    14f3 <corcol+0x3d3>
movslq 0x8(%rsp),%rax
mov    (%r12,%rax,8),%rcx
movl   $0x3f800000,(%rcx,%rax,4)
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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