void lob_bnd_ext(double *restrict b_, const double *restrict z,
                 const double *restrict Q, const double *restrict h,
                 const double *restrict lbnp, unsigned n, unsigned m,
                 const double *restrict br_, unsigned mr, double *restrict a) {
  const double *restrict br = br_;
  double *restrict b = b_;
  unsigned i, j, k;
  for (i = 0; i < mr; ++i)
    a[2 * i + 1] = a[2 * i + 0] = 0;
  for (j = 0; j < n; ++j) {
    double t, q0 = Q[2 * j], q1 = Q[2 * j + 1];
    for (i = 0; i < mr; ++i)
      t = (br[0] + br[1]) / 2, br += 2, a[2 * i] += q0 * t,
      a[2 * i + 1] += q1 * t;
  }
  for (i = 0; i < mr; ++i) {
    double a0 = a[2 * i], a1 = a[2 * i + 1];
    for (k = 0; k < m; ++k)
      b[1] = b[0] = a0 + a1 * h[k], b += 2;
  }
  br = br_;
  for (j = 0; j < n; ++j, lbnp += 4 * m) {
    double zj = z[j];
    b = b_;
    for (i = 0; i < mr; ++i) {
      double t = a[2 * i] + a[2 * i + 1] * zj;
      double w0 = *br++ - t;
      double w1 = *br++ - t;
      if (w0 >= 0)
        for (k = 0; k < m; ++k)
          *b++ += w0 * lbnp[4 * k + 1] + w1 * lbnp[4 * k + 0],
              *b++ += w1 * lbnp[4 * k + 3] + w0 * lbnp[4 * k + 2];
      else if (w1 <= 0)
        for (k = 0; k < m; ++k)
          *b++ += w0 * lbnp[4 * k + 3] + w1 * lbnp[4 * k + 2],
              *b++ += w1 * lbnp[4 * k + 1] + w0 * lbnp[4 * k + 0];
      else
        for (k = 0; k < m; ++k)
          *b++ += w0 * lbnp[4 * k + 3] + w1 * lbnp[4 * k + 0],
              *b++ += w1 * lbnp[4 * k + 3] + w0 * lbnp[4 * k + 0];
    }
  }
}


x86 assembly (clang, -O0):
<lob_bnd_ext>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
mov    0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x20(%rbp),%eax
jae    118d <lob_bnd_ext+0x8d>
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x0,%ecx
mov    %ecx,%ecx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1145 <lob_bnd_ext+0x45>
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jae    1284 <lob_bnd_ext+0x184>
mov    -0x18(%rbp),%rax
mov    -0x48(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
mov    -0x48(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x20(%rbp),%eax
jae    1271 <lob_bnd_ext+0x171>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
addsd  0x8(%rax),%xmm0
movsd  0xe05(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x38(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x38(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    11d6 <lob_bnd_ext+0xd6>
jmp    1276 <lob_bnd_ext+0x176>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1194 <lob_bnd_ext+0x94>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x20(%rbp),%eax
jae    1335 <lob_bnd_ext+0x235>
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jae    1322 <lob_bnd_ext+0x222>
movsd  -0x70(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x4c(%rbp),%ecx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x40(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x40(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x40(%rbp)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    12cd <lob_bnd_ext+0x1cd>
jmp    1327 <lob_bnd_ext+0x227>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    128b <lob_bnd_ext+0x18b>
mov    0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jae    16e0 <lob_bnd_ext+0x5e0>
mov    -0x10(%rbp),%rax
mov    -0x48(%rbp),%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x40(%rbp)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x20(%rbp),%eax
jae    16b6 <lob_bnd_ext+0x5b6>
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm1
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
shl    $0x1,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x38(%rbp)
movsd  (%rax),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x38(%rbp)
movsd  (%rax),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     14e5 <lob_bnd_ext+0x3e5>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jae    14e0 <lob_bnd_ext+0x3e0>
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1418 <lob_bnd_ext+0x318>
jmp    16a3 <lob_bnd_ext+0x5a3>
xorps  %xmm0,%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jb     15ca <lob_bnd_ext+0x4ca>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jae    15c5 <lob_bnd_ext+0x4c5>
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x2,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    14fd <lob_bnd_ext+0x3fd>
jmp    169e <lob_bnd_ext+0x59e>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    0x10(%rbp),%eax
jae    1699 <lob_bnd_ext+0x599>
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x98(%rbp),%xmm1
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x3,%ecx
mov    %ecx,%ecx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
mov    -0x4c(%rbp),%ecx
shl    $0x2,%ecx
add    $0x0,%ecx
mov    %ecx,%ecx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x40(%rbp)
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    15d1 <lob_bnd_ext+0x4d1>
jmp    169e <lob_bnd_ext+0x59e>
jmp    16a3 <lob_bnd_ext+0x5a3>
jmp    16a8 <lob_bnd_ext+0x5a8>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1370 <lob_bnd_ext+0x270>
jmp    16bb <lob_bnd_ext+0x5bb>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
mov    0x10(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x28(%rbp),%rax
mov    %ecx,%ecx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x28(%rbp)
jmp    1344 <lob_bnd_ext+0x244>
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<lob_bnd_ext>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %r8,-0x18(%rsp)
mov    %rdx,%r12
mov    %rsi,-0x8(%rsp)
mov    %rdi,-0x20(%rsp)
mov    0x50(%rsp),%r11
mov    0x48(%rsp),%r15d
mov    %r15d,%r13d
test   %r15d,%r15d
je     12ef <lob_bnd_ext+0x1ef>
cmp    $0x4,%r15d
jae    11de <lob_bnd_ext+0xde>
xor    %edx,%edx
mov    %rdx,%rax
not    %rax
add    %r13,%rax
mov    %r13,%rsi
and    $0x3,%rsi
je     1184 <lob_bnd_ext+0x84>
mov    %edx,%edi
and    $0x7fffffff,%edi
shl    $0x4,%rdi
add    %r11,%rdi
neg    %rsi
xor    %ebp,%ebp
xorpd  %xmm0,%xmm0
nopl   0x0(%rax,%rax,1)
movupd %xmm0,(%rdi)
add    $0xffffffffffffffff,%rbp
add    $0x10,%rdi
cmp    %rbp,%rsi
jne    1170 <lob_bnd_ext+0x70>
sub    %rbp,%rdx
cmp    $0x3,%rax
jb     12ef <lob_bnd_ext+0x1ef>
mov    %r13,%rax
sub    %rdx,%rax
add    %rdx,%rdx
xorpd  %xmm0,%xmm0
nopl   0x0(%rax,%rax,1)
mov    %edx,%esi
and    $0xfffffffe,%esi
movupd %xmm0,(%r11,%rsi,8)
lea    0x2(%rdx),%esi
and    $0xfffffffe,%esi
movupd %xmm0,(%r11,%rsi,8)
lea    0x4(%rdx),%esi
and    $0xfffffffe,%esi
movupd %xmm0,(%r11,%rsi,8)
lea    0x6(%rdx),%esi
and    $0xfffffffe,%esi
movupd %xmm0,(%r11,%rsi,8)
add    $0x8,%rdx
add    $0xfffffffffffffffc,%rax
jne    11a0 <lob_bnd_ext+0xa0>
jmp    12ef <lob_bnd_ext+0x1ef>
lea    -0x1(%r13),%rax
mov    %rax,%rsi
shr    $0x20,%rsi
mov    $0x10,%edx
mul    %rdx
seto   %bl
xor    %edx,%edx
test   %rsi,%rsi
jne    113e <lob_bnd_ext+0x3e>
lea    (%r11,%rax,1),%rsi
cmp    %r11,%rsi
jb     113e <lob_bnd_ext+0x3e>
test   %bl,%bl
jne    113e <lob_bnd_ext+0x3e>
lea    0x8(%r11),%rsi
add    %r11,%rax
add    $0x8,%rax
cmp    %rsi,%rax
jb     113e <lob_bnd_ext+0x3e>
test   %bl,%bl
jne    113e <lob_bnd_ext+0x3e>
mov    %r13d,%edx
and    $0xfffffffc,%edx
lea    -0x4(%rdx),%rax
mov    %rax,%rsi
shr    $0x2,%rsi
add    $0x1,%rsi
test   %rax,%rax
je     1c1d <lob_bnd_ext+0xb1d>
mov    %rsi,%rdi
and    $0xfffffffffffffffe,%rdi
mov    $0x8,%ebx
xorpd  %xmm0,%xmm0
xchg   %ax,%ax
lea    -0x8(%rbx),%ebp
and    $0xfffffff0,%ebp
movupd %xmm0,0x10(%r11,%rbp,8)
movupd %xmm0,(%r11,%rbp,8)
movupd %xmm0,0x20(%r11,%rbp,8)
movupd %xmm0,0x30(%r11,%rbp,8)
mov    %ebx,%eax
and    $0xfffffff8,%eax
movupd %xmm0,0x10(%r11,%rax,8)
movupd %xmm0,(%r11,%rax,8)
movupd %xmm0,0x20(%r11,%rax,8)
movupd %xmm0,0x30(%r11,%rax,8)
add    $0x10,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1260 <lob_bnd_ext+0x160>
add    $0xfffffff8,%ebx
and    $0xfffffff0,%ebx
test   $0x1,%sil
je     12e6 <lob_bnd_ext+0x1e6>
shl    $0x3,%rbx
mov    %rbx,%rax
or     $0x8,%rax
or     $0x28,%rbx
xorpd  %xmm0,%xmm0
movupd %xmm0,0x8(%r11,%rax,1)
movupd %xmm0,-0x8(%r11,%rax,1)
movupd %xmm0,0x8(%r11,%rbx,1)
movupd %xmm0,-0x8(%r11,%rbx,1)
cmp    %r13,%rdx
jne    113e <lob_bnd_ext+0x3e>
mov    0x40(%rsp),%rbp
mov    0x38(%rsp),%r10d
mov    %r9d,%eax
mov    %rax,-0x10(%rsp)
mov    %r9d,-0x30(%rsp)
test   %r9d,%r9d
je     1595 <lob_bnd_ext+0x495>
lea    -0x1(%r13),%rax
lea    0x8(%r11),%rsi
mov    %r13,%rdx
add    %r13,%rdx
mov    %rdx,-0x48(%rsp)
mov    %r13,%r9
shl    $0x4,%r9
add    %r11,%r9
mov    %rax,%rdx
shr    $0x20,%rdx
setne  %r8b
mov    $0x10,%edx
mul    %rdx
seto   %dl
lea    (%r11,%rax,1),%rdi
add    $0x8,%rdi
cmp    %rsi,%rdi
setb   %bl
add    %r11,%rax
cmp    %r11,%rax
setb   %al
or     %dl,%al
or     %dl,%r8b
or     %bl,%r8b
or     %al,%r8b
mov    %r13d,%eax
and    $0xfffffffe,%eax
mov    %rax,-0x40(%rsp)
add    %rax,%rax
mov    %rax,-0x38(%rsp)
mov    %r13,%r14
neg    %r14
xor    %esi,%esi
movsd  0xc89(%rip),%xmm0
movapd 0xc70(%rip),%xmm8
mov    %rbp,%rax
mov    %r8b,-0x28(%rsp)
jmp    13b5 <lob_bnd_ext+0x2b5>
nopw   0x0(%rax,%rax,1)
mov    %rax,%rdi
add    $0x1,%rsi
mov    %rdi,%rax
cmp    -0x10(%rsp),%rsi
je     1595 <lob_bnd_ext+0x495>
test   %r15d,%r15d
je     13a0 <lob_bnd_ext+0x2a0>
lea    (%rsi,%rsi,1),%edi
movupd (%r12,%rdi,8),%xmm2
cmp    $0x1,%r15d
sete   %bl
or     %r8b,%bl
jne    13ea <lob_bnd_ext+0x2ea>
cmp    %r9,%rax
jae    14b9 <lob_bnd_ext+0x3b9>
mov    -0x48(%rsp),%rdx
lea    (%rax,%rdx,8),%rdi
cmp    %r11,%rdi
jbe    14b9 <lob_bnd_ext+0x3b9>
xor    %ebx,%ebx
mov    %rax,%rdi
test   $0x1,%r13b
jne    1400 <lob_bnd_ext+0x300>
mov    %rbx,%rax
jmp    143a <lob_bnd_ext+0x33a>
nopw   0x0(%rax,%rax,1)
movsd  (%rdi),%xmm1
addsd  0x8(%rdi),%xmm1
mulsd  %xmm0,%xmm1
add    $0x10,%rdi
mov    %ebx,%eax
and    $0x7ffffffe,%eax
add    %rax,%rax
movupd (%r11,%rax,8),%xmm3
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
movupd %xmm1,(%r11,%rax,8)
mov    %rbx,%rax
or     $0x1,%rax
not    %rbx
cmp    %r14,%rbx
je     13a3 <lob_bnd_ext+0x2a3>
mov    %r13,%rbx
sub    %rax,%rbx
add    %rax,%rax
nop
movsd  (%rdi),%xmm1
addsd  0x8(%rdi),%xmm1
mulsd  %xmm0,%xmm1
mov    %eax,%edx
and    $0xfffffffe,%edx
movupd (%r11,%rdx,8),%xmm3
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
movupd %xmm1,(%r11,%rdx,8)
movsd  0x10(%rdi),%xmm1
addsd  0x18(%rdi),%xmm1
mulsd  %xmm0,%xmm1
add    $0x20,%rdi
lea    0x2(%rax),%edx
and    $0xfffffffe,%edx
movupd (%r11,%rdx,8),%xmm3
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
movupd %xmm1,(%r11,%rdx,8)
add    $0x4,%rax
add    $0xfffffffffffffffe,%rbx
jne    1450 <lob_bnd_ext+0x350>
jmp    13a3 <lob_bnd_ext+0x2a3>
mov    %r14,%r8
mov    %r9,%r14
mov    %r15d,%r9d
mov    %r12,%r15
mov    -0x38(%rsp),%rdx
lea    (%rax,%rdx,8),%rdi
movapd %xmm2,%xmm3
unpcklpd %xmm2,%xmm3
movapd %xmm2,%xmm4
unpckhpd %xmm2,%xmm4
mov    -0x40(%rsp),%rbx
xor    %r12d,%r12d
cs nopw 0x0(%rax,%rax,1)
movupd (%rax,%r12,8),%xmm5
movupd 0x10(%rax,%r12,8),%xmm6
movapd %xmm5,%xmm7
unpcklpd %xmm6,%xmm7
unpckhpd %xmm6,%xmm5
addpd  %xmm7,%xmm5
mulpd  %xmm8,%xmm5
mov    %r12d,%r10d
movupd (%r11,%r10,8),%xmm1
movupd 0x10(%r11,%r10,8),%xmm7
movapd %xmm1,%xmm6
unpcklpd %xmm7,%xmm6
unpckhpd %xmm7,%xmm1
movapd %xmm3,%xmm7
mulpd  %xmm5,%xmm7
addpd  %xmm6,%xmm7
lea    0x1(%r12),%edx
mulpd  %xmm4,%xmm5
addpd  %xmm1,%xmm5
movapd %xmm7,%xmm1
unpcklpd %xmm5,%xmm1
movhlps %xmm7,%xmm5
movups %xmm5,0x8(%r11,%rdx,8)
movupd %xmm1,-0x8(%r11,%rdx,8)
add    $0x4,%r12
add    $0xfffffffffffffffe,%rbx
jne    14f0 <lob_bnd_ext+0x3f0>
mov    -0x40(%rsp),%rax
mov    %rax,%rbx
cmp    %r13,%rax
mov    0x38(%rsp),%r10d
mov    %r15,%r12
mov    %r9d,%r15d
mov    %r14,%r9
mov    %r8,%r14
mov    -0x28(%rsp),%r8b
je     13a3 <lob_bnd_ext+0x2a3>
jmp    13ef <lob_bnd_ext+0x2ef>
mov    %r15d,%eax
mov    %r10d,%r15d
test   %eax,%eax
je     1788 <lob_bnd_ext+0x688>
lea    (%r15,%r15,1),%rax
mov    %rax,-0x48(%rsp)
lea    (%rcx,%r15,8),%rax
mov    %rax,-0x40(%rsp)
mov    %r15d,%r8d
and    $0xfffffffc,%r8d
lea    (%r8,%r8,1),%rax
mov    %rax,-0x38(%rsp)
mov    %r15d,%r10d
and    $0x3,%r10d
lea    0x0(,%r15,8),%r14
and    $0xffffffffffffffe0,%r14
xor    %edi,%edi
mov    -0x20(%rsp),%r9
jmp    1603 <lob_bnd_ext+0x503>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %r9,%rdx
add    $0x1,%rdi
mov    %rdx,%r9
cmp    %r13,%rdi
je     1788 <lob_bnd_ext+0x688>
mov    0x38(%rsp),%eax
test   %eax,%eax
je     15f0 <lob_bnd_ext+0x4f0>
lea    (%rdi,%rdi,1),%edx
movsd  (%r11,%rdx,8),%xmm0
lea    (%rdi,%rdi,1),%edx
add    $0x1,%edx
movsd  (%r11,%rdx,8),%xmm1
cmp    $0x4,%eax
jb     1642 <lob_bnd_ext+0x542>
cmp    -0x40(%rsp),%r9
jae    1704 <lob_bnd_ext+0x604>
mov    -0x48(%rsp),%rax
lea    (%r9,%rax,8),%rdx
cmp    %rcx,%rdx
jbe    1704 <lob_bnd_ext+0x604>
xor    %r12d,%r12d
mov    %r9,%rdx
mov    %r12,%rbx
not    %rbx
add    %r15,%rbx
test   %r10,%r10
je     1685 <lob_bnd_ext+0x585>
mov    %r10,%rsi
nopl   0x0(%rax)
movsd  (%rcx,%r12,8),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,(%rdx)
movsd  %xmm2,0x8(%rdx)
add    $0x10,%rdx
add    $0x1,%r12
add    $0xffffffffffffffff,%rsi
jne    1660 <lob_bnd_ext+0x560>
cmp    $0x3,%rbx
jb     15f3 <lob_bnd_ext+0x4f3>
nop
movsd  (%rcx,%r12,8),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,(%rdx)
movsd  %xmm2,0x8(%rdx)
movsd  0x8(%rcx,%r12,8),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rdx)
movsd  %xmm2,0x18(%rdx)
movsd  0x10(%rcx,%r12,8),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x20(%rdx)
movsd  %xmm2,0x28(%rdx)
movsd  0x18(%rcx,%r12,8),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movsd  %xmm2,0x30(%rdx)
movsd  %xmm2,0x38(%rdx)
add    $0x40,%rdx
add    $0x4,%r12
cmp    %r12,%r15
jne    1690 <lob_bnd_ext+0x590>
jmp    15f3 <lob_bnd_ext+0x4f3>
mov    -0x38(%rsp),%rax
lea    (%r9,%rax,8),%rdx
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
movapd %xmm0,%xmm3
unpcklpd %xmm0,%xmm3
xor    %ebx,%ebx
nop
movupd (%rcx,%rbx,1),%xmm4
movupd 0x10(%rcx,%rbx,1),%xmm5
mulpd  %xmm2,%xmm4
addpd  %xmm3,%xmm4
mulpd  %xmm2,%xmm5
addpd  %xmm3,%xmm5
movapd %xmm4,%xmm6
unpcklpd %xmm4,%xmm6
unpckhpd %xmm4,%xmm4
movupd %xmm4,0x10(%r9,%rbx,2)
movupd %xmm6,(%r9,%rbx,2)
movapd %xmm5,%xmm4
unpcklpd %xmm5,%xmm4
unpckhpd %xmm5,%xmm5
movupd %xmm5,0x30(%r9,%rbx,2)
movupd %xmm4,0x20(%r9,%rbx,2)
add    $0x20,%rbx
cmp    %rbx,%r14
jne    1720 <lob_bnd_ext+0x620>
mov    %r8,%r12
cmp    %r15,%r8
je     15f3 <lob_bnd_ext+0x4f3>
jmp    1648 <lob_bnd_ext+0x548>
cmpl   $0x0,-0x30(%rsp)
mov    0x38(%rsp),%r10d
je     1c12 <lob_bnd_ext+0xb12>
lea    0x0(,%r10,4),%eax
mov    %rax,-0x30(%rsp)
lea    (%r15,%r15,1),%rax
mov    %rax,-0x38(%rsp)
lea    0x0(,%r15,4),%rcx
mov    %r15d,%eax
and    $0xfffffffe,%eax
mov    %rax,-0x48(%rsp)
add    %rax,%rax
mov    %rax,-0x28(%rsp)
xor    %r14d,%r14d
xorpd  %xmm8,%xmm8
mov    -0x18(%rsp),%r8
jmp    17f8 <lob_bnd_ext+0x6f8>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r14
mov    -0x30(%rsp),%rax
lea    (%r8,%rax,8),%r8
cmp    -0x10(%rsp),%r14
je     1c12 <lob_bnd_ext+0xb12>
cmpl   $0x0,0x48(%rsp)
je     17e0 <lob_bnd_ext+0x6e0>
mov    %r14,%rdx
imul   -0x30(%rsp),%rdx
add    %rcx,%rdx
mov    -0x18(%rsp),%rax
lea    (%rax,%rdx,8),%rax
mov    %rax,-0x40(%rsp)
mov    -0x8(%rsp),%rax
movsd  (%rax,%r14,8),%xmm9
xor    %edi,%edi
mov    -0x20(%rsp),%r9
jmp    1843 <lob_bnd_ext+0x743>
nopl   (%rax)
mov    %r9,%r12
add    $0x10,%rbp
add    $0x1,%rdi
mov    %r12,%r9
cmp    %r13,%rdi
je     17e0 <lob_bnd_ext+0x6e0>
lea    (%rdi,%rdi,1),%edx
lea    (%rdi,%rdi,1),%esi
add    $0x1,%esi
movsd  (%r11,%rsi,8),%xmm4
mulsd  %xmm9,%xmm4
addsd  (%r11,%rdx,8),%xmm4
movsd  0x0(%rbp),%xmm2
movsd  0x8(%rbp),%xmm3
subsd  %xmm4,%xmm2
subsd  %xmm4,%xmm3
ucomisd %xmm8,%xmm2
jae    1900 <lob_bnd_ext+0x800>
ucomisd %xmm3,%xmm8
jae    19b0 <lob_bnd_ext+0x8b0>
test   %r10d,%r10d
je     1830 <lob_bnd_ext+0x730>
xor    %edx,%edx
xor    %esi,%esi
xchg   %ax,%ax
lea    0x3(%rsi),%eax
mov    %esi,%ebx
movsd  (%r8,%rbx,8),%xmm0
mulsd  %xmm3,%xmm0
movsd  (%r8,%rax,8),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
addsd  (%r9,%rsi,4),%xmm1
movsd  %xmm1,(%r9,%rsi,4)
movsd  (%r8,%rbx,8),%xmm0
mulsd  %xmm2,%xmm0
movsd  (%r8,%rax,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
addsd  0x8(%r9,%rsi,4),%xmm1
movsd  %xmm1,0x8(%r9,%rsi,4)
add    $0x4,%rsi
add    $0xfffffffffffffff0,%rdx
cmp    %rsi,%rcx
jne    1890 <lob_bnd_ext+0x790>
sub    %rdx,%r9
jmp    1830 <lob_bnd_ext+0x730>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
test   %r10d,%r10d
je     1830 <lob_bnd_ext+0x730>
cmp    $0x1,%r10d
je     192c <lob_bnd_ext+0x82c>
cmp    -0x40(%rsp),%r9
jae    1a57 <lob_bnd_ext+0x957>
mov    -0x38(%rsp),%rax
lea    (%r9,%rax,8),%rdx
cmp    %rdx,%r8
jae    1a57 <lob_bnd_ext+0x957>
xor    %ebx,%ebx
mov    %r9,%r12
lea    0x0(,%rbx,4),%edx
mov    %r15,%rsi
sub    %rbx,%rsi
xchg   %ax,%ax
lea    0x1(%rdx),%ebx
mov    %edx,%eax
movsd  (%r8,%rax,8),%xmm0
mulsd  %xmm3,%xmm0
movsd  (%r8,%rbx,8),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
addsd  (%r12),%xmm1
movsd  %xmm1,(%r12)
lea    0x3(%rdx),%eax
lea    0x2(%rdx),%ebx
movsd  (%r8,%rbx,8),%xmm0
mulsd  %xmm2,%xmm0
movsd  (%r8,%rax,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
addsd  0x8(%r12),%xmm1
movsd  %xmm1,0x8(%r12)
add    $0x10,%r12
add    $0x4,%edx
add    $0xffffffffffffffff,%rsi
jne    1940 <lob_bnd_ext+0x840>
jmp    1833 <lob_bnd_ext+0x733>
nopw   0x0(%rax,%rax,1)
test   %r10d,%r10d
je     1830 <lob_bnd_ext+0x730>
cmp    $0x1,%r10d
je     19dc <lob_bnd_ext+0x8dc>
cmp    -0x40(%rsp),%r9
jae    1b38 <lob_bnd_ext+0xa38>
mov    -0x38(%rsp),%rax
lea    (%r9,%rax,8),%rax
cmp    %rax,%r8
jae    1b38 <lob_bnd_ext+0xa38>
xor    %ebx,%ebx
mov    %r9,%r12
lea    0x0(,%rbx,4),%edx
mov    %r15,%rsi
sub    %rbx,%rsi
xchg   %ax,%ax
lea    0x3(%rdx),%eax
lea    0x2(%rdx),%ebx
movsd  (%r8,%rbx,8),%xmm0
mulsd  %xmm3,%xmm0
movsd  (%r8,%rax,8),%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
addsd  (%r12),%xmm1
movsd  %xmm1,(%r12)
lea    0x1(%rdx),%eax
mov    %edx,%ebx
movsd  (%r8,%rbx,8),%xmm0
mulsd  %xmm2,%xmm0
movsd  (%r8,%rax,8),%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm0,%xmm1
addsd  0x8(%r12),%xmm1
movsd  %xmm1,0x8(%r12)
add    $0x10,%r12
add    $0x4,%edx
add    $0xffffffffffffffff,%rsi
jne    19f0 <lob_bnd_ext+0x8f0>
jmp    1833 <lob_bnd_ext+0x733>
mov    -0x28(%rsp),%rax
lea    (%r9,%rax,8),%r12
movapd %xmm3,%xmm10
unpcklpd %xmm3,%xmm10
movapd %xmm2,%xmm11
unpcklpd %xmm2,%xmm11
mov    -0x48(%rsp),%rdx
xor    %r10d,%r10d
nopl   0x0(%rax)
mov    %r10d,%esi
and    $0xfffffff8,%esi
movupd (%r8,%rsi,8),%xmm7
movupd 0x10(%r8,%rsi,8),%xmm6
movupd 0x20(%r8,%rsi,8),%xmm0
movupd 0x30(%r8,%rsi,8),%xmm1
movapd %xmm7,%xmm4
unpcklpd %xmm0,%xmm4
unpckhpd %xmm0,%xmm7
movapd %xmm6,%xmm0
unpcklpd %xmm1,%xmm0
unpckhpd %xmm1,%xmm6
mulpd  %xmm10,%xmm4
mulpd  %xmm11,%xmm7
addpd  %xmm4,%xmm7
movupd (%r9,%r10,4),%xmm5
movupd 0x10(%r9,%r10,4),%xmm4
movapd %xmm5,%xmm1
unpcklpd %xmm4,%xmm1
addpd  %xmm7,%xmm1
unpckhpd %xmm4,%xmm5
mulpd  %xmm11,%xmm0
mulpd  %xmm10,%xmm6
addpd  %xmm0,%xmm6
addpd  %xmm5,%xmm6
movapd %xmm1,%xmm0
unpckhpd %xmm6,%xmm0
unpcklpd %xmm6,%xmm1
movupd %xmm1,(%r9,%r10,4)
movupd %xmm0,0x10(%r9,%r10,4)
add    $0x8,%r10
add    $0xfffffffffffffffe,%rdx
jne    1a80 <lob_bnd_ext+0x980>
mov    -0x48(%rsp),%rax
mov    %rax,%rbx
cmp    %r15,%rax
mov    0x38(%rsp),%r10d
je     1833 <lob_bnd_ext+0x733>
jmp    1931 <lob_bnd_ext+0x831>
mov    -0x28(%rsp),%rax
lea    (%r9,%rax,8),%r12
movapd %xmm3,%xmm10
unpcklpd %xmm3,%xmm10
movapd %xmm2,%xmm11
unpcklpd %xmm2,%xmm11
mov    -0x48(%rsp),%rdx
xor    %esi,%esi
nopl   0x0(%rax)
mov    %esi,%eax
and    $0xfffffff8,%eax
movupd (%r8,%rax,8),%xmm6
movupd 0x10(%r8,%rax,8),%xmm0
movupd 0x20(%r8,%rax,8),%xmm1
movupd 0x30(%r8,%rax,8),%xmm7
movapd %xmm6,%xmm4
unpcklpd %xmm1,%xmm4
unpckhpd %xmm1,%xmm6
movapd %xmm0,%xmm1
unpcklpd %xmm7,%xmm1
unpckhpd %xmm7,%xmm0
mulpd  %xmm10,%xmm1
mulpd  %xmm11,%xmm0
addpd  %xmm1,%xmm0
movupd (%r9,%rsi,4),%xmm5
movupd 0x10(%r9,%rsi,4),%xmm7
movapd %xmm5,%xmm1
unpcklpd %xmm7,%xmm1
addpd  %xmm0,%xmm1
unpckhpd %xmm7,%xmm5
mulpd  %xmm11,%xmm4
mulpd  %xmm10,%xmm6
addpd  %xmm4,%xmm6
addpd  %xmm5,%xmm6
movapd %xmm1,%xmm0
unpckhpd %xmm6,%xmm0
unpcklpd %xmm6,%xmm1
movupd %xmm1,(%r9,%rsi,4)
movupd %xmm0,0x10(%r9,%rsi,4)
add    $0x8,%rsi
add    $0xfffffffffffffffe,%rdx
jne    1b60 <lob_bnd_ext+0xa60>
mov    -0x48(%rsp),%rax
mov    %rax,%rbx
cmp    %r15,%rax
je     1833 <lob_bnd_ext+0x733>
jmp    19e1 <lob_bnd_ext+0x8e1>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ebx,%ebx
test   $0x1,%sil
jne    12b7 <lob_bnd_ext+0x1b7>
jmp    12e6 <lob_bnd_ext+0x1e6>

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

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