int odsq4_(int *i0, int *n0, double *z__, int *pp, int *n0in, double *dmin__,
           double *dmin1, double *dmin2, double *dn, double *dn1, double *dn2,
           double *tau, int *ttype, double *g) {
  int i__1;
  double d__1, d__2;
  double s, a2, b1, b2;
  int i4, nn, np;
  double gam, gap1, gap2;
  --z__;
  if (*dmin__ <= 0.) {
    *tau = -(*dmin__);
    *ttype = -1;
    return 0;
  }
  nn = (*n0 << 2) + *pp;
  if (*n0in == *n0) {
    if (*dmin__ == *dn || *dmin__ == *dn1) {
      b1 = sqrt(z__[nn - 3]) * sqrt(z__[nn - 5]);
      b2 = sqrt(z__[nn - 7]) * sqrt(z__[nn - 9]);
      a2 = z__[nn - 7] + z__[nn - 5];
      if (*dmin__ == *dn && *dmin1 == *dn1) {
        gap2 = *dmin2 - a2 - *dmin2 * .25;
        if (gap2 > 0. && gap2 > b2) {
          gap1 = a2 - *dn - b2 / gap2 * b2;
        } else {
          gap1 = a2 - *dn - (b1 + b2);
        }
        if (gap1 > 0. && gap1 > b1) {
          d__1 = *dn - b1 / gap1 * b1, d__2 = *dmin__ * .5;
          s = fmax(d__1, d__2);
          *ttype = -2;
        } else {
          s = 0.;
          if (*dn > b1) {
            s = *dn - b1;
          }
          if (a2 > b1 + b2) {
            d__1 = s, d__2 = a2 - (b1 + b2);
            s = fmin(d__1, d__2);
          }
          d__1 = s, d__2 = *dmin__ * .333;
          s = fmax(d__1, d__2);
          *ttype = -3;
        }
      } else {
        *ttype = -4;
        s = *dmin__ * .25;
        if (*dmin__ == *dn) {
          gam = *dn;
          a2 = 0.;
          if (z__[nn - 5] > z__[nn - 7]) {
            return 0;
          }
          b2 = z__[nn - 5] / z__[nn - 7];
          np = nn - 9;
        } else {
          np = nn - (*pp << 1);
          b2 = z__[np - 2];
          gam = *dn1;
          if (z__[np - 4] > z__[np - 2]) {
            return 0;
          }
          a2 = z__[np - 4] / z__[np - 2];
          if (z__[nn - 9] > z__[nn - 11]) {
            return 0;
          }
          b2 = z__[nn - 9] / z__[nn - 11];
          np = nn - 13;
        }
        a2 += b2;
        i__1 = (*i0 << 2) - 1 + *pp;
        for (i4 = np; i4 >= i__1; i4 += -4) {
          if (b2 == 0.) {
            goto L20;
          }
          b1 = b2;
          if (z__[i4] > z__[i4 - 2]) {
            return 0;
          }
          b2 *= z__[i4] / z__[i4 - 2];
          a2 += b2;
          if (fmax(b2, b1) * 100. < a2 || .563 < a2) {
            goto L20;
          }
        }
      L20:
        a2 *= 1.05;
        if (a2 < .563) {
          s = gam * (1. - sqrt(a2)) / (a2 + 1.);
        }
      }
    } else if (*dmin__ == *dn2) {
      *ttype = -5;
      s = *dmin__ * .25;
      np = nn - (*pp << 1);
      b1 = z__[np - 2];
      b2 = z__[np - 6];
      gam = *dn2;
      if (z__[np - 8] > b2 || z__[np - 4] > b1) {
        return 0;
      }
      a2 = z__[np - 8] / b2 * (z__[np - 4] / b1 + 1.);
      if (*n0 - *i0 > 2) {
        b2 = z__[nn - 13] / z__[nn - 15];
        a2 += b2;
        i__1 = (*i0 << 2) - 1 + *pp;
        for (i4 = nn - 17; i4 >= i__1; i4 += -4) {
          if (b2 == 0.) {
            goto L40;
          }
          b1 = b2;
          if (z__[i4] > z__[i4 - 2]) {
            return 0;
          }
          b2 *= z__[i4] / z__[i4 - 2];
          a2 += b2;
          if (fmax(b2, b1) * 100. < a2 || .563 < a2) {
            goto L40;
          }
        }
      L40:
        a2 *= 1.05;
      }
      if (a2 < .563) {
        s = gam * (1. - sqrt(a2)) / (a2 + 1.);
      }
    } else {
      if (*ttype == -6) {
        *g += (1. - *g) * .333;
      } else if (*ttype == -18) {
        *g = .083250000000000005;
      } else {
        *g = .25;
      }
      s = *g * *dmin__;
      *ttype = -6;
    }
  } else if (*n0in == *n0 + 1) {
    if (*dmin1 == *dn1 && *dmin2 == *dn2) {
      *ttype = -7;
      s = *dmin1 * .333;
      if (z__[nn - 5] > z__[nn - 7]) {
        return 0;
      }
      b1 = z__[nn - 5] / z__[nn - 7];
      b2 = b1;
      if (b2 == 0.) {
        goto L60;
      }
      i__1 = (*i0 << 2) - 1 + *pp;
      for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
        a2 = b1;
        if (z__[i4] > z__[i4 - 2]) {
          return 0;
        }
        b1 *= z__[i4] / z__[i4 - 2];
        b2 += b1;
        if (fmax(b1, a2) * 100. < b2) {
          goto L60;
        }
      }
    L60:
      b2 = sqrt(b2 * 1.05);
      d__1 = b2;
      a2 = *dmin1 / (d__1 * d__1 + 1.);
      gap2 = *dmin2 * .5 - a2;
      if (gap2 > 0. && gap2 > b2 * a2) {
        d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
        s = fmax(d__1, d__2);
      } else {
        d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
        s = fmax(d__1, d__2);
        *ttype = -8;
      }
    } else {
      s = *dmin1 * .25;
      if (*dmin1 == *dn1) {
        s = *dmin1 * .5;
      }
      *ttype = -9;
    }
  } else if (*n0in == *n0 + 2) {
    if (*dmin2 == *dn2 && z__[nn - 5] * 2. < z__[nn - 7]) {
      *ttype = -10;
      s = *dmin2 * .333;
      if (z__[nn - 5] > z__[nn - 7]) {
        return 0;
      }
      b1 = z__[nn - 5] / z__[nn - 7];
      b2 = b1;
      if (b2 == 0.) {
        goto L80;
      }
      i__1 = (*i0 << 2) - 1 + *pp;
      for (i4 = (*n0 << 2) - 9 + *pp; i4 >= i__1; i4 += -4) {
        if (z__[i4] > z__[i4 - 2]) {
          return 0;
        }
        b1 *= z__[i4] / z__[i4 - 2];
        b2 += b1;
        if (b1 * 100. < b2) {
          goto L80;
        }
      }
    L80:
      b2 = sqrt(b2 * 1.05);
      d__1 = b2;
      a2 = *dmin2 / (d__1 * d__1 + 1.);
      gap2 = z__[nn - 7] + z__[nn - 9] -
             sqrt(z__[nn - 11]) * sqrt(z__[nn - 9]) - a2;
      if (gap2 > 0. && gap2 > b2 * a2) {
        d__1 = s, d__2 = a2 * (1. - a2 * 1.01 * (b2 / gap2) * b2);
        s = fmax(d__1, d__2);
      } else {
        d__1 = s, d__2 = a2 * (1. - b2 * 1.01);
        s = fmax(d__1, d__2);
      }
    } else {
      s = *dmin2 * .25;
      *ttype = -11;
    }
  } else if (*n0in > *n0 + 2) {
    s = 0.;
    *ttype = -12;
  }
  *tau = s;
  return 0;
}


x86 assembly (clang, -O0):
<odsq4_>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x48(%rbp),%rax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x38(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jb     11ad <odsq4_+0x9d>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x40(%rbp),%rax
movl   $0xffffffff,(%rax)
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x78(%rbp)
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
cmp    (%rcx),%eax
jne    1c9e <odsq4_+0xb8e>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
ucomisd (%rax),%xmm0
jne    11f2 <odsq4_+0xe2>
jp     11f2 <odsq4_+0xe2>
jmp    120e <odsq4_+0xfe>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jne    18fa <odsq4_+0x7ea>
jp     18fa <odsq4_+0x7ea>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1584 <odsq4_+0x474>
jp     1584 <odsq4_+0x474>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1584 <odsq4_+0x474>
jp     1584 <odsq4_+0x474>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm1
subsd  -0x60(%rbp),%xmm1
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x1cd1(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    13ba <odsq4_+0x2aa>
movsd  -0x98(%rbp),%xmm0
ff
ucomisd -0x70(%rbp),%xmm0
jbe    13ba <odsq4_+0x2aa>
movsd  -0x60(%rbp),%xmm1
mov    0x20(%rbp),%rax
subsd  (%rax),%xmm1
movsd  -0x70(%rbp),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    13dd <odsq4_+0x2cd>
movsd  -0x60(%rbp),%xmm0
mov    0x20(%rbp),%rax
subsd  (%rax),%xmm0
movsd  -0x68(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1494 <odsq4_+0x384>
movsd  -0x90(%rbp),%xmm0
ff
ucomisd -0x68(%rbp),%xmm0
jbe    1494 <odsq4_+0x384>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x68(%rbp),%xmm0
divsd  -0x90(%rbp),%xmm0
ff
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x1be9(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    157f <odsq4_+0x46f>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    14c1 <odsq4_+0x3b1>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    1529 <odsq4_+0x419>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
addsd  -0x70(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
minsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x38(%rbp),%rax
movsd  0x1ad1(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffffd,(%rax)
jmp    18f5 <odsq4_+0x7e5>
mov    0x40(%rbp),%rax
movl   $0xfffffffc,(%rax)
mov    -0x38(%rbp),%rax
movsd  0x1a6e(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1644 <odsq4_+0x534>
jp     1644 <odsq4_+0x534>
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    160d <odsq4_+0x4fd>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x78(%rbp),%eax
sub    $0x9,%eax
mov    %eax,-0x7c(%rbp)
jmp    1743 <odsq4_+0x633>
mov    -0x78(%rbp),%eax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    16b2 <odsq4_+0x5a2>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0xb,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1711 <odsq4_+0x601>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0xb,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x78(%rbp),%eax
sub    $0xd,%eax
mov    %eax,-0x7c(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x1,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x7c(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jl     187b <odsq4_+0x76b>
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1796 <odsq4_+0x686>
jp     1796 <odsq4_+0x686>
jmp    1880 <odsq4_+0x770>
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    17d1 <odsq4_+0x6c1>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x68(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm1
cmpunordsd %xmm1,%xmm1
movaps %xmm1,%xmm0
pand   %xmm4,%xmm0
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm1
por    %xmm0,%xmm1
movsd  0x17df(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
ja     1863 <odsq4_+0x753>
movsd  -0x60(%rbp),%xmm0
movsd  0x17ef(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1868 <odsq4_+0x758>
jmp    1880 <odsq4_+0x770>
jmp    186d <odsq4_+0x75d>
mov    -0x74(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,-0x74(%rbp)
jmp    176d <odsq4_+0x65d>
jmp    1880 <odsq4_+0x770>
movsd  0x17a0(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x17ae(%rip),%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    18f0 <odsq4_+0x7e0>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm2
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x174e(%rip),%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x173e(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    18f5 <odsq4_+0x7e5>
jmp    1c99 <odsq4_+0xb89>
mov    -0x38(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
ucomisd (%rax),%xmm0
jne    1c00 <odsq4_+0xaf0>
jp     1c00 <odsq4_+0xaf0>
mov    0x40(%rbp),%rax
movl   $0xfffffffb,(%rax)
mov    -0x38(%rbp),%rax
movsd  0x16dc(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x78(%rbp),%eax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x1,%ecx
sub    %ecx,%eax
mov    %eax,-0x7c(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x6,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x8,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x70(%rbp),%xmm0
ja     19be <odsq4_+0x8ae>
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    19ca <odsq4_+0x8ba>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x8,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x7c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
divsd  -0x68(%rbp),%xmm1
movsd  0x1620(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0x2,%eax
jle    1b9d <odsq4_+0xa8d>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0xd,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0xf,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x1,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x78(%rbp),%eax
sub    $0x11,%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jl     1b86 <odsq4_+0xa76>
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1aa1 <odsq4_+0x991>
jp     1aa1 <odsq4_+0x991>
jmp    1b8b <odsq4_+0xa7b>
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1adc <odsq4_+0x9cc>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x68(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm1
cmpunordsd %xmm1,%xmm1
movaps %xmm1,%xmm0
pand   %xmm4,%xmm0
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm1
por    %xmm0,%xmm1
movsd  0x14d4(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  -0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
ja     1b6e <odsq4_+0xa5e>
movsd  -0x60(%rbp),%xmm0
movsd  0x14e4(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1b73 <odsq4_+0xa63>
jmp    1b8b <odsq4_+0xa7b>
jmp    1b78 <odsq4_+0xa68>
mov    -0x74(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,-0x74(%rbp)
jmp    1a78 <odsq4_+0x968>
jmp    1b8b <odsq4_+0xa7b>
movsd  0x1495(%rip),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x14a3(%rip),%xmm0
ucomisd -0x60(%rbp),%xmm0
jbe    1bfb <odsq4_+0xaeb>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <sqrt@plt>
movaps %xmm0,%xmm2
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x1443(%rip),%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x1433(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1c94 <odsq4_+0xb84>
mov    0x40(%rbp),%rax
cmpl   $0xfffffffa,(%rax)
jne    1c3e <odsq4_+0xb2e>
mov    0x48(%rbp),%rax
movsd  0x1407(%rip),%xmm0
subsd  (%rax),%xmm0
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x13e3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
jmp    1c75 <odsq4_+0xb65>
mov    0x40(%rbp),%rax
cmpl   $0xffffffee,(%rax)
jne    1c60 <odsq4_+0xb50>
mov    0x48(%rbp),%rax
movsd  0x13e9(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1c70 <odsq4_+0xb60>
mov    0x48(%rbp),%rax
movsd  0x139c(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1c75 <odsq4_+0xb65>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffffa,(%rax)
jmp    1c99 <odsq4_+0xb89>
jmp    2537 <odsq4_+0x1427>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jne    20c5 <odsq4_+0xfb5>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jne    2070 <odsq4_+0xf60>
jp     2070 <odsq4_+0xf60>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
ucomisd (%rax),%xmm0
jne    2070 <odsq4_+0xf60>
jp     2070 <odsq4_+0xf60>
mov    0x40(%rbp),%rax
movl   $0xfffffff9,(%rax)
mov    0x10(%rbp),%rax
movsd  0x130d(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1d42 <odsq4_+0xc32>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1d92 <odsq4_+0xc82>
jp     1d92 <odsq4_+0xc82>
jmp    1e9b <odsq4_+0xd8b>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x1,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x9,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jl     1e96 <odsq4_+0xd86>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1e03 <odsq4_+0xcf3>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm3
movsd  -0x60(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm1
cmpunordsd %xmm1,%xmm1
movaps %xmm1,%xmm0
pand   %xmm4,%xmm0
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm1
por    %xmm0,%xmm1
movsd  0x11ad(%rip),%xmm0
mulsd  %xmm0,%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1e83 <odsq4_+0xd73>
jmp    1e9b <odsq4_+0xd8b>
jmp    1e88 <odsq4_+0xd78>
mov    -0x74(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,-0x74(%rbp)
jmp    1dbc <odsq4_+0xcac>
jmp    1e9b <odsq4_+0xd8b>
movsd  0x1185(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x1146(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x60(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1125(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1fe8 <odsq4_+0xed8>
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    1fe8 <odsq4_+0xed8>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0x10c5(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
divsd  -0x98(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  -0x70(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1077(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    206b <odsq4_+0xf5b>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1015(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xff9(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffff8,(%rax)
jmp    20c0 <odsq4_+0xfb0>
mov    0x10(%rbp),%rax
movsd  0xf8c(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
ucomisd (%rax),%xmm0
jne    20b6 <odsq4_+0xfa6>
jp     20b6 <odsq4_+0xfa6>
mov    0x10(%rbp),%rax
movsd  0xf8b(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffff7,(%rax)
jmp    2532 <odsq4_+0x1422>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x2,%ecx
cmp    %ecx,%eax
jne    24ff <odsq4_+0x13ef>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
ucomisd (%rax),%xmm0
jne    24db <odsq4_+0x13cb>
jp     24db <odsq4_+0x13cb>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  0xef3(%rip),%xmm1
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    24db <odsq4_+0x13cb>
mov    0x40(%rbp),%rax
movl   $0xfffffff6,(%rax)
mov    0x18(%rbp),%rax
movsd  0xecc(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    2183 <odsq4_+0x1073>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    21d3 <odsq4_+0x10c3>
jp     21d3 <odsq4_+0x10c3>
jmp    22ab <odsq4_+0x119b>
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x1,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
sub    $0x9,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jl     22a6 <odsq4_+0x1196>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    223a <odsq4_+0x112a>
movl   $0x0,-0x4(%rbp)
jmp    254b <odsq4_+0x143b>
mov    -0x20(%rbp),%rax
movslq -0x74(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x74(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xd9e(%rip),%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    2293 <odsq4_+0x1183>
jmp    22ab <odsq4_+0x119b>
jmp    2298 <odsq4_+0x1188>
mov    -0x74(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,-0x74(%rbp)
jmp    21fd <odsq4_+0x10ed>
jmp    22ab <odsq4_+0x119b>
movsd  0xd75(%rip),%xmm0
mulsd  -0x70(%rbp),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x48(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xd36(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0xb,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x20(%rbp),%rax
mov    -0x78(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
call   1030 <sqrt@plt>
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xc0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    245d <odsq4_+0x134d>
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm1
mulsd  -0x60(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    245d <odsq4_+0x134d>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xc50(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
divsd  -0x98(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm1
movsd  -0x70(%rbp),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xc02(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    24d6 <odsq4_+0x13c6>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xba0(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xb84(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    24fa <odsq4_+0x13ea>
mov    0x18(%rbp),%rax
movsd  0xb21(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffff5,(%rax)
jmp    252d <odsq4_+0x141d>
mov    -0x30(%rbp),%rax
mov    (%rax),%eax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x2,%ecx
cmp    %ecx,%eax
jle    2528 <odsq4_+0x1418>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x40(%rbp),%rax
movl   $0xfffffff4,(%rax)
jmp    252d <odsq4_+0x141d>
jmp    2532 <odsq4_+0x1422>
jmp    2537 <odsq4_+0x1427>
movsd  -0x58(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<odsq4_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9,%rbx
mov    0xb0(%rsp),%r14
mov    0xa8(%rsp),%r9
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    11cc <odsq4_+0xbc>
mov    %rcx,%r12
mov    %rdx,%r15
mov    0xa0(%rsp),%rax
mov    0x88(%rsp),%r10
mov    0x80(%rsp),%r11
mov    (%rsi),%ecx
lea    0x0(,%rcx,4),%edx
movslq (%r12),%rbp
movslq %edx,%r13
add    %rbp,%r13
mov    (%r8),%edx
cmp    %ecx,%edx
jne    11e5 <odsq4_+0xd5>
mov    0x90(%rsp),%rcx
ucomisd (%rcx),%xmm0
jne    118b <odsq4_+0x7b>
jnp    11a3 <odsq4_+0x93>
mov    0x98(%rsp),%rcx
ucomisd (%rcx),%xmm0
jne    17b6 <odsq4_+0x6a6>
jp     17b6 <odsq4_+0x6a6>
movsd  -0x20(%r15,%r13,8),%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
mov    %rdi,0x10(%rsp)
mov    %r9,%r14
jb     13ae <odsq4_+0x29e>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
jmp    13bb <odsq4_+0x2ab>
xorpd  0xe2c(%rip),%xmm0
movlpd %xmm0,(%r9)
movl   $0xffffffff,(%r14)
jmp    1959 <odsq4_+0x849>
lea    0x1(%rcx),%ebp
cmp    %ebp,%edx
jne    1300 <odsq4_+0x1f0>
movsd  (%r11),%xmm8
mov    0x98(%rsp),%rcx
ucomisd (%rcx),%xmm8
jne    16b0 <odsq4_+0x5a0>
jp     16b0 <odsq4_+0x5a0>
movsd  (%r10),%xmm0
ucomisd (%rax),%xmm0
jne    193b <odsq4_+0x82b>
jp     193b <odsq4_+0x82b>
movl   $0xfffffff9,(%r14)
movslq %r13d,%rax
movsd  -0x40(%r15,%rax,8),%xmm1
movsd  -0x30(%r15,%rax,8),%xmm0
ucomisd %xmm1,%xmm0
ja     1959 <odsq4_+0x849>
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1259 <odsq4_+0x149>
jnp    12e5 <odsq4_+0x1d5>
mov    (%rdi),%eax
mov    (%r12),%edx
lea    (%rdx,%rax,4),%ecx
add    $0xffffffff,%ecx
mov    (%rsi),%eax
lea    (%rdx,%rax,4),%eax
add    $0xfffffff7,%eax
cmp    %ecx,%eax
jl     12e5 <odsq4_+0x1d5>
cltq
movslq %ecx,%rcx
add    $0xfffffffffffffffc,%rax
movsd  0xd9e(%rip),%xmm2
movapd %xmm0,%xmm4
movsd  0x8(%r15,%rax,8),%xmm5
movsd  0x18(%r15,%rax,8),%xmm3
ucomisd %xmm5,%xmm3
ja     1959 <odsq4_+0x849>
divsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm3,%xmm0
movapd %xmm4,%xmm5
maxsd  %xmm3,%xmm5
movapd %xmm3,%xmm6
cmpunordsd %xmm3,%xmm6
movapd %xmm6,%xmm7
andnpd %xmm5,%xmm7
andpd  %xmm4,%xmm6
orpd   %xmm7,%xmm6
mulsd  %xmm2,%xmm6
ucomisd %xmm6,%xmm0
ja     12e5 <odsq4_+0x1d5>
lea    -0x4(%rax),%rdx
movapd %xmm3,%xmm4
cmp    %rcx,%rax
mov    %rdx,%rax
jge    1286 <odsq4_+0x176>
mulsd  0xd3b(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     19b6 <odsq4_+0x8a6>
sqrtsd %xmm0,%xmm0
jmp    19db <odsq4_+0x8cb>
add    $0x2,%ecx
cmp    %ecx,%edx
jne    1577 <odsq4_+0x467>
movsd  (%r10),%xmm6
ucomisd (%rax),%xmm6
jne    16bd <odsq4_+0x5ad>
jp     16bd <odsq4_+0x5ad>
movslq %r13d,%rbx
movsd  -0x40(%r15,%rbx,8),%xmm1
movsd  -0x30(%r15,%rbx,8),%xmm0
movapd %xmm0,%xmm2
addsd  %xmm0,%xmm2
ucomisd %xmm2,%xmm1
jbe    16bd <odsq4_+0x5ad>
movl   $0xfffffff6,(%r14)
ucomisd %xmm1,%xmm0
ja     1959 <odsq4_+0x849>
divsd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1364 <odsq4_+0x254>
jnp    1380 <odsq4_+0x270>
mov    (%rdi),%eax
mov    (%r12),%ecx
lea    (%rcx,%rax,4),%eax
add    $0xffffffff,%eax
mov    (%rsi),%edx
lea    (%rcx,%rdx,4),%ecx
add    $0xfffffff7,%ecx
cmp    %eax,%ecx
jge    1ca8 <odsq4_+0xb98>
mov    %r10,%r12
lea    -0x7(%rbx),%rbp
mulsd  0xc99(%rip),%xmm0
ucomisd %xmm1,%xmm0
movsd  %xmm6,0x30(%rsp)
mov    %r9,%r14
jb     1b00 <odsq4_+0x9f0>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
jmp    1b09 <odsq4_+0x9f9>
call   1030 <sqrt@plt>
xorpd  %xmm2,%xmm2
movapd %xmm0,%xmm1
movslq %r13d,%rbp
movsd  -0x30(%r15,%rbp,8),%xmm0
ucomisd %xmm2,%xmm0
movsd  %xmm1,0x30(%rsp)
jb     13d7 <odsq4_+0x2c7>
sqrtsd %xmm0,%xmm0
jmp    13dc <odsq4_+0x2cc>
call   1030 <sqrt@plt>
movsd  %xmm0,0x8(%rsp)
movsd  -0x40(%r15,%rbp,8),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13f9 <odsq4_+0x2e9>
sqrtsd %xmm0,%xmm6
jmp    1406 <odsq4_+0x2f6>
call   1030 <sqrt@plt>
xorpd  %xmm1,%xmm1
movapd %xmm0,%xmm6
movsd  -0x50(%r15,%rbp,8),%xmm0
ucomisd %xmm1,%xmm0
jb     1419 <odsq4_+0x309>
sqrtsd %xmm0,%xmm0
jmp    142a <odsq4_+0x31a>
movsd  %xmm6,0x28(%rsp)
call   1030 <sqrt@plt>
movsd  0x28(%rsp),%xmm6
mov    %r14,%r9
mov    0x10(%rsp),%rsi
mov    0x80(%rsp),%rdx
movsd  (%rbx),%xmm1
mov    0x90(%rsp),%rax
movsd  (%rax),%xmm9
ucomisd %xmm9,%xmm1
mov    0x88(%rsp),%rcx
jne    1508 <odsq4_+0x3f8>
jp     1508 <odsq4_+0x3f8>
lea    -0x5(%rbp),%rax
add    $0xfffffffffffffff9,%rbp
movsd  -0x8(%r15,%rbp,8),%xmm2
movsd  -0x8(%r15,%rax,8),%xmm3
movsd  (%rdx),%xmm4
mov    0x98(%rsp),%rax
ucomisd (%rax),%xmm4
jne    158d <odsq4_+0x47d>
jp     158d <odsq4_+0x47d>
movsd  0x30(%rsp),%xmm4
mulsd  0x8(%rsp),%xmm4
mulsd  %xmm0,%xmm6
addsd  %xmm3,%xmm2
movsd  (%rcx),%xmm3
movapd %xmm3,%xmm0
subsd  %xmm2,%xmm0
mulsd  0xb9a(%rip),%xmm3
addsd  %xmm0,%xmm3
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
movapd %xmm2,%xmm0
subsd  %xmm9,%xmm0
mov    0xb0(%rsp),%rax
jbe    16d5 <odsq4_+0x5c5>
ucomisd %xmm6,%xmm3
jbe    16d5 <odsq4_+0x5c5>
movapd %xmm4,%xmm5
movapd %xmm6,%xmm4
divsd  %xmm3,%xmm4
mulsd  %xmm6,%xmm4
subsd  %xmm4,%xmm0
movapd %xmm5,%xmm4
jmp    16e1 <odsq4_+0x5d1>
mov    0xb0(%rsp),%rax
movl   $0xfffffffc,(%rax)
mov    (%r12),%eax
mov    %r13d,%edx
sub    %eax,%edx
sub    %eax,%edx
movslq %edx,%rcx
movsd  -0x28(%r15,%rcx,8),%xmm4
movsd  -0x18(%r15,%rcx,8),%xmm0
ucomisd %xmm0,%xmm4
ja     1959 <odsq4_+0x849>
lea    -0x9(%rbp),%rcx
movsd  -0x8(%r15,%rcx,8),%xmm3
movsd  -0x60(%r15,%rbp,8),%xmm2
ucomisd %xmm2,%xmm3
ja     1959 <odsq4_+0x849>
mov    0x98(%rsp),%rcx
movsd  (%rcx),%xmm9
unpcklpd %xmm3,%xmm4
unpcklpd %xmm2,%xmm0
divpd  %xmm0,%xmm4
lea    -0xd(%r13),%ecx
jmp    15b9 <odsq4_+0x4a9>
jle    1954 <odsq4_+0x844>
movl   $0xfffffff4,(%r14)
xorpd  %xmm4,%xmm4
jmp    1954 <odsq4_+0x844>
mov    0xb0(%rsp),%rax
movl   $0xfffffffc,(%rax)
ucomisd %xmm2,%xmm3
ja     1959 <odsq4_+0x849>
lea    -0x9(%r13),%ecx
divsd  %xmm2,%xmm3
mov    (%r12),%eax
xorpd  %xmm4,%xmm4
unpcklpd %xmm3,%xmm4
movapd %xmm4,%xmm2
unpckhpd %xmm4,%xmm2
addsd  %xmm2,%xmm4
mov    (%rsi),%edx
lea    (%rax,%rdx,4),%edx
add    $0xffffffff,%edx
cmp    %edx,%ecx
jl     167c <odsq4_+0x56c>
xorpd  %xmm10,%xmm10
ucomisd %xmm10,%xmm2
jne    15e7 <odsq4_+0x4d7>
jnp    167c <odsq4_+0x56c>
movslq %ecx,%rax
movslq %edx,%rcx
add    $0xfffffffffffffffc,%rax
movsd  0xa26(%rip),%xmm8
movsd  0xa4e(%rip),%xmm0
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x8(%r15,%rax,8),%xmm6
movsd  0x18(%r15,%rax,8),%xmm5
ucomisd %xmm6,%xmm5
ja     1959 <odsq4_+0x849>
divsd  %xmm6,%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm5,%xmm4
movapd %xmm2,%xmm7
maxsd  %xmm5,%xmm7
movapd %xmm5,%xmm6
cmpunordsd %xmm5,%xmm6
movapd %xmm6,%xmm3
andnpd %xmm7,%xmm3
andpd  %xmm2,%xmm6
orpd   %xmm3,%xmm6
mulsd  %xmm8,%xmm6
ucomisd %xmm0,%xmm4
ja     167c <odsq4_+0x56c>
ucomisd %xmm6,%xmm4
ja     167c <odsq4_+0x56c>
cmp    %rcx,%rax
jl     167c <odsq4_+0x56c>
add    $0xfffffffffffffffc,%rax
ucomisd %xmm10,%xmm5
movapd %xmm5,%xmm2
jne    1610 <odsq4_+0x500>
jp     1610 <odsq4_+0x500>
mulsd  0x9a4(%rip),%xmm4
movsd  0x9c4(%rip),%xmm0
ucomisd %xmm4,%xmm0
jbe    196a <odsq4_+0x85a>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
jb     1ab3 <odsq4_+0x9a3>
xorps  %xmm0,%xmm0
sqrtsd %xmm4,%xmm0
jmp    1adc <odsq4_+0x9cc>
movsd  0x958(%rip),%xmm0
jmp    1943 <odsq4_+0x833>
mulsd  0x94b(%rip),%xmm6
movl   $0xfffffff5,(%r14)
movapd %xmm6,%xmm4
jmp    1954 <odsq4_+0x844>
movapd %xmm4,%xmm3
addsd  %xmm6,%xmm3
subsd  %xmm3,%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
jbe    173c <odsq4_+0x62c>
ucomisd %xmm4,%xmm0
jbe    173c <odsq4_+0x62c>
movapd %xmm4,%xmm2
divsd  %xmm0,%xmm2
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm9
mulsd  0x936(%rip),%xmm1
movapd %xmm1,%xmm0
maxsd  %xmm9,%xmm0
cmpunordsd %xmm9,%xmm9
movapd %xmm9,%xmm2
andnpd %xmm0,%xmm2
andpd  %xmm1,%xmm9
orpd   %xmm2,%xmm9
movl   $0xfffffffe,(%rax)
movapd %xmm9,%xmm4
jmp    1954 <odsq4_+0x844>
movapd %xmm4,%xmm0
cmpltsd %xmm9,%xmm0
subsd  %xmm4,%xmm9
andpd  %xmm0,%xmm9
addsd  %xmm4,%xmm6
ucomisd %xmm6,%xmm2
jbe    1783 <odsq4_+0x673>
subsd  %xmm6,%xmm2
movapd %xmm9,%xmm0
cmpunordsd %xmm9,%xmm0
movapd %xmm0,%xmm3
andpd  %xmm2,%xmm3
minsd  %xmm9,%xmm2
andnpd %xmm2,%xmm0
orpd   %xmm3,%xmm0
movapd %xmm0,%xmm9
mulsd  0x88d(%rip),%xmm1
movapd %xmm9,%xmm4
cmpunordsd %xmm9,%xmm4
movapd %xmm4,%xmm0
andpd  %xmm1,%xmm0
maxsd  %xmm9,%xmm1
andnpd %xmm1,%xmm4
orpd   %xmm0,%xmm4
movl   $0xfffffffd,(%rax)
jmp    1954 <odsq4_+0x844>
movsd  (%rax),%xmm4
ucomisd %xmm4,%xmm0
jne    1978 <odsq4_+0x868>
jp     1978 <odsq4_+0x868>
movl   $0xfffffffb,(%r14)
mov    (%r12),%eax
mov    %r13d,%edx
sub    %eax,%edx
sub    %eax,%edx
movslq %edx,%rcx
movsd  -0x48(%r15,%rcx,8),%xmm1
movsd  -0x38(%r15,%rcx,8),%xmm2
ucomisd %xmm2,%xmm1
ja     1959 <odsq4_+0x849>
movsd  -0x18(%r15,%rcx,8),%xmm3
movsd  -0x28(%r15,%rcx,8),%xmm5
ucomisd %xmm3,%xmm5
ja     1959 <odsq4_+0x849>
unpcklpd %xmm5,%xmm1
unpcklpd %xmm3,%xmm2
divpd  %xmm2,%xmm1
movapd %xmm1,%xmm10
unpckhpd %xmm1,%xmm10
addsd  0x802(%rip),%xmm10
mulsd  %xmm1,%xmm10
mov    (%rsi),%edx
mov    (%rdi),%ecx
sub    %ecx,%edx
cmp    $0x3,%edx
jl     190c <odsq4_+0x7fc>
movslq %r13d,%rdx
movsd  -0x70(%r15,%rdx,8),%xmm2
divsd  -0x80(%r15,%rdx,8),%xmm2
addsd  %xmm2,%xmm10
lea    (%rax,%rcx,4),%ecx
add    $0xffffffff,%ecx
lea    -0x11(%r13),%eax
cmp    %ecx,%eax
jl     1903 <odsq4_+0x7f3>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm2
jne    187a <odsq4_+0x76a>
jnp    1903 <odsq4_+0x7f3>
cltq
movslq %ecx,%rcx
add    $0xfffffffffffffffc,%rax
movsd  0x794(%rip),%xmm8
movsd  0x7bb(%rip),%xmm9
movsd  0x8(%r15,%rax,8),%xmm6
movsd  0x18(%r15,%rax,8),%xmm5
ucomisd %xmm6,%xmm5
ja     1959 <odsq4_+0x849>
divsd  %xmm6,%xmm5
mulsd  %xmm2,%xmm5
addsd  %xmm5,%xmm10
movapd %xmm2,%xmm7
maxsd  %xmm5,%xmm7
movapd %xmm5,%xmm6
cmpunordsd %xmm5,%xmm6
movapd %xmm6,%xmm3
andnpd %xmm7,%xmm3
andpd  %xmm2,%xmm6
orpd   %xmm3,%xmm6
mulsd  %xmm8,%xmm6
ucomisd %xmm9,%xmm10
ja     1903 <odsq4_+0x7f3>
ucomisd %xmm6,%xmm10
ja     1903 <odsq4_+0x7f3>
cmp    %rcx,%rax
jl     1903 <odsq4_+0x7f3>
add    $0xfffffffffffffffc,%rax
ucomisd %xmm1,%xmm5
movapd %xmm5,%xmm2
jne    1895 <odsq4_+0x785>
jp     1895 <odsq4_+0x785>
mulsd  0x71c(%rip),%xmm10
movsd  0x73c(%rip),%xmm1
ucomisd %xmm10,%xmm1
jbe    1c97 <odsq4_+0xb87>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm10
jb     1d04 <odsq4_+0xbf4>
xorps  %xmm0,%xmm0
sqrtsd %xmm10,%xmm0
jmp    1d2e <odsq4_+0xc1e>
movsd  0x6fd(%rip),%xmm0
mulsd  %xmm0,%xmm8
movl   $0xfffffff7,(%r14)
movapd %xmm8,%xmm4
movsd  %xmm4,(%r9)
xor    %eax,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mulsd  0x69e(%rip),%xmm1
movapd %xmm1,%xmm4
jmp    1954 <odsq4_+0x844>
mov    0xb8(%rsp),%rax
mov    (%r14),%ecx
cmp    $0xffffffee,%ecx
je     1b57 <odsq4_+0xa47>
cmp    $0xfffffffa,%ecx
jne    1b61 <odsq4_+0xa51>
movsd  (%rax),%xmm0
movsd  0x68f(%rip),%xmm4
subsd  %xmm0,%xmm4
mulsd  0x66b(%rip),%xmm4
addsd  %xmm0,%xmm4
jmp    1b69 <odsq4_+0xa59>
mov    %r9,%rbx
mov    %r10,%rbp
mov    %r11,%r15
movsd  %xmm8,0x10(%rsp)
call   1030 <sqrt@plt>
movsd  0x10(%rsp),%xmm8
mov    %r15,%r11
mov    %rbp,%r10
mov    %rbx,%r9
mulsd  0x634(%rip),%xmm8
movsd  (%r11),%xmm1
movapd %xmm0,%xmm2
mulsd  %xmm0,%xmm2
addsd  0x637(%rip),%xmm2
divsd  %xmm2,%xmm1
movsd  (%r10),%xmm2
mulsd  0x636(%rip),%xmm2
subsd  %xmm1,%xmm2
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm2
jbe    1a73 <odsq4_+0x963>
movapd %xmm0,%xmm3
mulsd  %xmm1,%xmm3
ucomisd %xmm3,%xmm2
jbe    1a73 <odsq4_+0x963>
movapd %xmm0,%xmm3
divsd  %xmm2,%xmm3
movsd  0x602(%rip),%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm2
mulsd  %xmm0,%xmm2
addsd  0x5e6(%rip),%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm8,%xmm4
cmpunordsd %xmm8,%xmm4
movapd %xmm4,%xmm0
andpd  %xmm2,%xmm0
maxsd  %xmm8,%xmm2
andnpd %xmm2,%xmm4
orpd   %xmm0,%xmm4
jmp    1954 <odsq4_+0x844>
mulsd  0x5bd(%rip),%xmm0
addsd  0x5ad(%rip),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm8,%xmm4
cmpunordsd %xmm8,%xmm4
movapd %xmm4,%xmm1
andpd  %xmm0,%xmm1
maxsd  %xmm8,%xmm0
andnpd %xmm0,%xmm4
orpd   %xmm1,%xmm4
movl   $0xfffffff8,(%r14)
jmp    1954 <odsq4_+0x844>
movapd %xmm4,%xmm0
mov    %r9,%rbx
movapd %xmm9,0x10(%rsp)
movapd %xmm4,0x30(%rsp)
call   1030 <sqrt@plt>
movapd 0x30(%rsp),%xmm4
movapd 0x10(%rsp),%xmm9
mov    %rbx,%r9
movsd  0x54c(%rip),%xmm1
addsd  %xmm1,%xmm4
subsd  %xmm0,%xmm1
mulsd  %xmm1,%xmm9
divsd  %xmm4,%xmm9
movapd %xmm9,%xmm4
jmp    1954 <odsq4_+0x844>
call   1030 <sqrt@plt>
movapd %xmm0,%xmm1
movsd  (%r12),%xmm4
movapd %xmm1,%xmm2
mulsd  %xmm1,%xmm2
addsd  0x511(%rip),%xmm2
movsd  -0x8(%r15,%rbp,8),%xmm0
lea    -0x9(%rbx),%rbp
addsd  -0x50(%r15,%rbx,8),%xmm0
movsd  %xmm0,0x28(%rsp)
movsd  -0x60(%r15,%rbx,8),%xmm0
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm0
movapd %xmm1,0x10(%rsp)
jb     1b7d <odsq4_+0xa6d>
xorps  %xmm5,%xmm5
sqrtsd %xmm0,%xmm5
jmp    1ba2 <odsq4_+0xa92>
movsd  0x4e9(%rip),%xmm4
jmp    1b69 <odsq4_+0xa59>
movsd  0x4a7(%rip),%xmm4
movsd  %xmm4,(%rax)
mulsd  (%rbx),%xmm4
movl   $0xfffffffa,(%r14)
jmp    1954 <odsq4_+0x844>
movsd  %xmm4,0x8(%rsp)
movsd  %xmm2,0x40(%rsp)
call   1030 <sqrt@plt>
xorpd  %xmm3,%xmm3
movsd  0x40(%rsp),%xmm2
movsd  0x8(%rsp),%xmm4
movapd %xmm0,%xmm5
divsd  %xmm2,%xmm4
movsd  -0x8(%r15,%rbp,8),%xmm0
ucomisd %xmm3,%xmm0
jb     1bb9 <odsq4_+0xaa9>
sqrtsd %xmm0,%xmm0
jmp    1bd6 <odsq4_+0xac6>
movsd  %xmm4,0x8(%rsp)
movsd  %xmm5,0x40(%rsp)
call   1030 <sqrt@plt>
movsd  0x40(%rsp),%xmm5
movsd  0x8(%rsp),%xmm4
mov    %r14,%r9
movsd  0x30(%rsp),%xmm2
movapd 0x10(%rsp),%xmm3
movsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm5
subsd  %xmm5,%xmm1
mulsd  0x41d(%rip),%xmm2
subsd  %xmm4,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jbe    1c61 <odsq4_+0xb51>
movapd %xmm3,%xmm0
mulsd  %xmm4,%xmm0
ucomisd %xmm0,%xmm1
jbe    1c61 <odsq4_+0xb51>
movapd %xmm3,%xmm0
divsd  %xmm1,%xmm0
movsd  0x411(%rip),%xmm1
mulsd  %xmm4,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm3,%xmm1
addsd  0x3f5(%rip),%xmm1
mulsd  %xmm4,%xmm1
movapd %xmm2,%xmm4
cmpunordsd %xmm2,%xmm4
movapd %xmm4,%xmm0
andpd  %xmm1,%xmm0
maxsd  %xmm2,%xmm1
andnpd %xmm1,%xmm4
orpd   %xmm0,%xmm4
jmp    1954 <odsq4_+0x844>
mulsd  0x3cf(%rip),%xmm3
addsd  0x3bf(%rip),%xmm3
mulsd  %xmm4,%xmm3
movapd %xmm2,%xmm4
cmpunordsd %xmm2,%xmm4
movapd %xmm4,%xmm0
andpd  %xmm3,%xmm0
maxsd  %xmm2,%xmm3
andnpd %xmm3,%xmm4
orpd   %xmm0,%xmm4
jmp    1954 <odsq4_+0x844>
mulsd  0x371(%rip),%xmm0
movapd %xmm0,%xmm4
jmp    1954 <odsq4_+0x844>
movslq %ecx,%rcx
cltq
add    $0xfffffffffffffffc,%rcx
movsd  0x367(%rip),%xmm2
movapd %xmm0,%xmm3
movsd  0x8(%r15,%rcx,8),%xmm5
movsd  0x18(%r15,%rcx,8),%xmm4
ucomisd %xmm5,%xmm4
ja     1959 <odsq4_+0x849>
divsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm3,%xmm0
movapd %xmm3,%xmm4
mulsd  %xmm2,%xmm4
ucomisd %xmm4,%xmm0
ja     1380 <odsq4_+0x270>
lea    -0x4(%rcx),%rdx
cmp    %rax,%rcx
mov    %rdx,%rcx
jge    1cbd <odsq4_+0xbad>
jmp    1380 <odsq4_+0x270>
movapd %xmm10,%xmm0
mov    %r9,%rbx
movapd %xmm4,0x10(%rsp)
movapd %xmm10,0x30(%rsp)
call   1030 <sqrt@plt>
movapd 0x30(%rsp),%xmm10
movapd 0x10(%rsp),%xmm4
mov    %rbx,%r9
movsd  0x2fa(%rip),%xmm1
addsd  %xmm1,%xmm10
subsd  %xmm0,%xmm1
mulsd  %xmm1,%xmm4
divsd  %xmm10,%xmm4
jmp    1954 <odsq4_+0x844>

LLVM IR (-O0):
define i32 @odsq4_(i32* %0, i32* %1, double* %2, i32* %3, i32* %4, double* %5, double* %6, double* %7, double* %8, double* %9, double* %10, double* %11, i32* %12, double* %13) {
%15 = alloca i32
%16 = alloca i32*
%17 = alloca i32*
%18 = alloca double*
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double*
%26 = alloca double*
%27 = alloca double*
%28 = alloca i32*
%29 = alloca double*
%30 = alloca i32
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca double
%41 = alloca double
%42 = alloca double
store i32* %0, i32** %16
store i32* %1, i32** %17
store double* %2, double** %18
store i32* %3, i32** %19
store i32* %4, i32** %20
store double* %5, double** %21
store double* %6, double** %22
store double* %7, double** %23
store double* %8, double** %24
store double* %9, double** %25
store double* %10, double** %26
store double* %11, double** %27
store i32* %12, i32** %28
store double* %13, double** %29
%43 = load double*, double** %18
%44 = getelementptr inbounds double, double* %43, i32 -1
store double* %44, double** %18
%45 = load double*, double** %21
%46 = load double, double* %45
%47 = fcmp ole double %46, 0.000000e+00
br i1 %47, label %48, label %54
48: ; preds = %14
%49 = load double*, double** %21
%50 = load double, double* %49
%51 = fneg double %50
%52 = load double*, double** %27
store double %51, double* %52
%53 = load i32*, i32** %28
store i32 -1, i32* %53
store i32 0, i32* %15
br label %1038
54: ; preds = %14
%55 = load i32*, i32** %17
%56 = load i32, i32* %55
%57 = shl i32 %56, 2
%58 = load i32*, i32** %19
%59 = load i32, i32* %58
%60 = add nsw i32 %57, %59
store i32 %60, i32* %38
%61 = load i32*, i32** %20
%62 = load i32, i32* %61
%63 = load i32*, i32** %17
%64 = load i32, i32* %63
%65 = icmp eq i32 %62, %64
br i1 %65, label %66, label %626
66: ; preds = %54
%67 = load double*, double** %21
%68 = load double, double* %67
%69 = load double*, double** %24
%70 = load double, double* %69
%71 = fcmp oeq double %68, %70
br i1 %71, label %78, label %72
72: ; preds = %66
%73 = load double*, double** %21
%74 = load double, double* %73
%75 = load double*, double** %25
%76 = load double, double* %75
%77 = fcmp oeq double %74, %76
br i1 %77, label %78, label %426
78: ; preds = %72, %66
%79 = load double*, double** %18
%80 = load i32, i32* %38
%81 = sub nsw i32 %80, 3
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds double, double* %79, i64 %82
%84 = load double, double* %83
%85 = call double @sqrt(double %84)
%86 = load double*, double** %18
%87 = load i32, i32* %38
%88 = sub nsw i32 %87, 5
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds double, double* %86, i64 %89
%91 = load double, double* %90
%92 = call double @sqrt(double %91)
%93 = fmul double %85, %92
store double %93, double* %35
%94 = load double*, double** %18
%95 = load i32, i32* %38
%96 = sub nsw i32 %95, 7
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %94, i64 %97
%99 = load double, double* %98
%100 = call double @sqrt(double %99)
%101 = load double*, double** %18
%102 = load i32, i32* %38
%103 = sub nsw i32 %102, 9
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds double, double* %101, i64 %104
%106 = load double, double* %105
%107 = call double @sqrt(double %106)
%108 = fmul double %100, %107
store double %108, double* %36
%109 = load double*, double** %18
%110 = load i32, i32* %38
%111 = sub nsw i32 %110, 7
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds double, double* %109, i64 %112
%114 = load double, double* %113
%115 = load double*, double** %18
%116 = load i32, i32* %38
%117 = sub nsw i32 %116, 5
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds double, double* %115, i64 %118
%120 = load double, double* %119
%121 = fadd double %114, %120
store double %121, double* %34
%122 = load double*, double** %21
%123 = load double, double* %122
%124 = load double*, double** %24
%125 = load double, double* %124
%126 = fcmp oeq double %123, %125
br i1 %126, label %127, label %227
127: ; preds = %78
%128 = load double*, double** %22
%129 = load double, double* %128
%130 = load double*, double** %25
%131 = load double, double* %130
%132 = fcmp oeq double %129, %131
br i1 %132, label %133, label %227
133: ; preds = %127
%134 = load double*, double** %23
%135 = load double, double* %134
%136 = load double, double* %34
%137 = fsub double %135, %136
%138 = load double*, double** %23
%139 = load double, double* %138
%140 = fneg double %139
%141 = call double @llvm.fmuladd.f64(double %140, double 2.500000e-01, double %137)
store double %141, double* %42
%142 = load double, double* %42
%143 = fcmp ogt double %142, 0.000000e+00
br i1 %143, label %144, label %159
144: ; preds = %133
%145 = load double, double* %42
%146 = load double, double* %36
%147 = fcmp ogt double %145, %146
br i1 %147, label %148, label %159
148: ; preds = %144
%149 = load double, double* %34
%150 = load double*, double** %24
%151 = load double, double* %150
%152 = fsub double %149, %151
%153 = load double, double* %36
%154 = load double, double* %42
%155 = fdiv double %153, %154
%156 = load double, double* %36
%157 = fneg double %155
%158 = call double @llvm.fmuladd.f64(double %157, double %156, double %152)
store double %158, double* %41
br label %168
159: ; preds = %144, %133
%160 = load double, double* %34
%161 = load double*, double** %24
%162 = load double, double* %161
%163 = fsub double %160, %162
%164 = load double, double* %35
%165 = load double, double* %36
%166 = fadd double %164, %165
%167 = fsub double %163, %166
store double %167, double* %41
br label %168
168: ; preds = %159, %148
%169 = load double, double* %41
%170 = fcmp ogt double %169, 0.000000e+00
br i1 %170, label %171, label %191
171: ; preds = %168
%172 = load double, double* %41
%173 = load double, double* %35
%174 = fcmp ogt double %172, %173
br i1 %174, label %175, label %191
175: ; preds = %171
%176 = load double*, double** %24
%177 = load double, double* %176
%178 = load double, double* %35
%179 = load double, double* %41
%180 = fdiv double %178, %179
%181 = load double, double* %35
%182 = fneg double %180
%183 = call double @llvm.fmuladd.f64(double %182, double %181, double %177)
store double %183, double* %31
%184 = load double*, double** %21
%185 = load double, double* %184
%186 = fmul double %185, 5.000000e-01
store double %186, double* %32
%187 = load double, double* %31
%188 = load double, double* %32
%189 = call double @llvm.maxnum.f64(double %187, double %188)
store double %189, double* %33
%190 = load i32*, i32** %28
store i32 -2, i32* %190
br label %226
191: ; preds = %171, %168
store double 0.000000e+00, double* %33
%192 = load double*, double** %24
%193 = load double, double* %192
%194 = load double, double* %35
%195 = fcmp ogt double %193, %194
br i1 %195, label %196, label %201
196: ; preds = %191
%197 = load double*, double** %24
%198 = load double, double* %197
%199 = load double, double* %35
%200 = fsub double %198, %199
store double %200, double* %33
br label %201
201: ; preds = %196, %191
%202 = load double, double* %34
%203 = load double, double* %35
%204 = load double, double* %36
%205 = fadd double %203, %204
%206 = fcmp ogt double %202, %205
br i1 %206, label %207, label %217
207: ; preds = %201
%208 = load double, double* %33
store double %208, double* %31
%209 = load double, double* %34
%210 = load double, double* %35
%211 = load double, double* %36
%212 = fadd double %210, %211
%213 = fsub double %209, %212
store double %213, double* %32
%214 = load double, double* %31
%215 = load double, double* %32
%216 = call double @llvm.minnum.f64(double %214, double %215)
store double %216, double* %33
br label %217
217: ; preds = %207, %201
%218 = load double, double* %33
store double %218, double* %31
%219 = load double*, double** %21
%220 = load double, double* %219
%221 = fmul double %220, 3.330000e-01
store double %221, double* %32
%222 = load double, double* %31
%223 = load double, double* %32
%224 = call double @llvm.maxnum.f64(double %222, double %223)
store double %224, double* %33
%225 = load i32*, i32** %28
store i32 -3, i32* %225
br label %226
226: ; preds = %217, %175
br label %425
227: ; preds = %127, %78
%228 = load i32*, i32** %28
store i32 -4, i32* %228
%229 = load double*, double** %21
%230 = load double, double* %229
%231 = fmul double %230, 2.500000e-01
store double %231, double* %33
%232 = load double*, double** %21
%233 = load double, double* %232
%234 = load double*, double** %24
%235 = load double, double* %234
%236 = fcmp oeq double %233, %235
br i1 %236, label %237, label %270
237: ; preds = %227
%238 = load double*, double** %24
%239 = load double, double* %238
store double %239, double* %40
store double 0.000000e+00, double* %34
%240 = load double*, double** %18
%241 = load i32, i32* %38
%242 = sub nsw i32 %241, 5
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds double, double* %240, i64 %243
%245 = load double, double* %244
%246 = load double*, double** %18
%247 = load i32, i32* %38
%248 = sub nsw i32 %247, 7
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds double, double* %246, i64 %249
%251 = load double, double* %250
%252 = fcmp ogt double %245, %251
br i1 %252, label %253, label %254
253: ; preds = %237
store i32 0, i32* %15
br label %1038
254: ; preds = %237
%255 = load double*, double** %18
%256 = load i32, i32* %38
%257 = sub nsw i32 %256, 5
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds double, double* %255, i64 %258
%260 = load double, double* %259
%261 = load double*, double** %18
%262 = load i32, i32* %38
%263 = sub nsw i32 %262, 7
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds double, double* %261, i64 %264
%266 = load double, double* %265
%267 = fdiv double %260, %266
store double %267, double* %36
%268 = load i32, i32* %38
%269 = sub nsw i32 %268, 9
store i32 %269, i32* %39
br label %342
270: ; preds = %227
%271 = load i32, i32* %38
%272 = load i32*, i32** %19
%273 = load i32, i32* %272
%274 = shl i32 %273, 1
%275 = sub nsw i32 %271, %274
store i32 %275, i32* %39
%276 = load double*, double** %18
%277 = load i32, i32* %39
%278 = sub nsw i32 %277, 2
%279 = sext i32 %278 to i64
%280 = getelementptr inbounds double, double* %276, i64 %279
%281 = load double, double* %280
store double %281, double* %36
%282 = load double*, double** %25
%283 = load double, double* %282
store double %283, double* %40
%284 = load double*, double** %18
%285 = load i32, i32* %39
%286 = sub nsw i32 %285, 4
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds double, double* %284, i64 %287
%289 = load double, double* %288
%290 = load double*, double** %18
%291 = load i32, i32* %39
%292 = sub nsw i32 %291, 2
%293 = sext i32 %292 to i64
%294 = getelementptr inbounds double, double* %290, i64 %293
%295 = load double, double* %294
%296 = fcmp ogt double %289, %295
br i1 %296, label %297, label %298
297: ; preds = %270
store i32 0, i32* %15
br label %1038
298: ; preds = %270
%299 = load double*, double** %18
%300 = load i32, i32* %39
%301 = sub nsw i32 %300, 4
%302 = sext i32 %301 to i64
%303 = getelementptr inbounds double, double* %299, i64 %302
%304 = load double, double* %303
%305 = load double*, double** %18
%306 = load i32, i32* %39
%307 = sub nsw i32 %306, 2
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds double, double* %305, i64 %308
%310 = load double, double* %309
%311 = fdiv double %304, %310
store double %311, double* %34
%312 = load double*, double** %18
%313 = load i32, i32* %38
%314 = sub nsw i32 %313, 9
%315 = sext i32 %314 to i64
%316 = getelementptr inbounds double, double* %312, i64 %315
%317 = load double, double* %316
%318 = load double*, double** %18
%319 = load i32, i32* %38
%320 = sub nsw i32 %319, 11
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds double, double* %318, i64 %321
%323 = load double, double* %322
%324 = fcmp ogt double %317, %323
br i1 %324, label %325, label %326
325: ; preds = %298
store i32 0, i32* %15
br label %1038
326: ; preds = %298
%327 = load double*, double** %18
%328 = load i32, i32* %38
%329 = sub nsw i32 %328, 9
%330 = sext i32 %329 to i64
%331 = getelementptr inbounds double, double* %327, i64 %330
%332 = load double, double* %331
%333 = load double*, double** %18
%334 = load i32, i32* %38
%335 = sub nsw i32 %334, 11
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds double, double* %333, i64 %336
%338 = load double, double* %337
%339 = fdiv double %332, %338
store double %339, double* %36
%340 = load i32, i32* %38
%341 = sub nsw i32 %340, 13
store i32 %341, i32* %39
br label %342
342: ; preds = %326, %254
%343 = load double, double* %36
%344 = load double, double* %34
%345 = fadd double %344, %343
store double %345, double* %34
%346 = load i32*, i32** %16
%347 = load i32, i32* %346
%348 = shl i32 %347, 2
%349 = sub nsw i32 %348, 1
%350 = load i32*, i32** %19
%351 = load i32, i32* %350
%352 = add nsw i32 %349, %351
store i32 %352, i32* %30
%353 = load i32, i32* %39
store i32 %353, i32* %37
br label %354
354: ; preds = %406, %342
%355 = load i32, i32* %37
%356 = load i32, i32* %30
%357 = icmp sge i32 %355, %356
br i1 %357, label %358, label %409
358: ; preds = %354
%359 = load double, double* %36
%360 = fcmp oeq double %359, 0.000000e+00
br i1 %360, label %361, label %362
361: ; preds = %358
br label %410
362: ; preds = %358
%363 = load double, double* %36
store double %363, double* %35
%364 = load double*, double** %18
%365 = load i32, i32* %37
%366 = sext i32 %365 to i64
%367 = getelementptr inbounds double, double* %364, i64 %366
%368 = load double, double* %367
%369 = load double*, double** %18
%370 = load i32, i32* %37
%371 = sub nsw i32 %370, 2
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds double, double* %369, i64 %372
%374 = load double, double* %373
%375 = fcmp ogt double %368, %374
br i1 %375, label %376, label %377
376: ; preds = %362
store i32 0, i32* %15
br label %1038
377: ; preds = %362
%378 = load double*, double** %18
%379 = load i32, i32* %37
%380 = sext i32 %379 to i64
%381 = getelementptr inbounds double, double* %378, i64 %380
%382 = load double, double* %381
%383 = load double*, double** %18
%384 = load i32, i32* %37
%385 = sub nsw i32 %384, 2
%386 = sext i32 %385 to i64
%387 = getelementptr inbounds double, double* %383, i64 %386
%388 = load double, double* %387
%389 = fdiv double %382, %388
%390 = load double, double* %36
%391 = fmul double %390, %389
store double %391, double* %36
%392 = load double, double* %36
%393 = load double, double* %34
%394 = fadd double %393, %392
store double %394, double* %34
%395 = load double, double* %36
%396 = load double, double* %35
%397 = call double @llvm.maxnum.f64(double %395, double %396)
%398 = fmul double %397, 1.000000e+02
%399 = load double, double* %34
%400 = fcmp olt double %398, %399
br i1 %400, label %404, label %401
401: ; preds = %377
%402 = load double, double* %34
%403 = fcmp olt double 5.630000e-01, %402
br i1 %403, label %404, label %405
404: ; preds = %401, %377
br label %410
405: ; preds = %401
br label %406
406: ; preds = %405
%407 = load i32, i32* %37
%408 = add nsw i32 %407, -4
store i32 %408, i32* %37
br label %354
409: ; preds = %354
br label %410
410: ; preds = %409, %404, %361
%411 = load double, double* %34
%412 = fmul double %411, 1.050000e+00
store double %412, double* %34
%413 = load double, double* %34
%414 = fcmp olt double %413, 5.630000e-01
br i1 %414, label %415, label %424
415: ; preds = %410
%416 = load double, double* %40
%417 = load double, double* %34
%418 = call double @sqrt(double %417)
%419 = fsub double 1.000000e+00, %418
%420 = fmul double %416, %419
%421 = load double, double* %34
%422 = fadd double %421, 1.000000e+00
%423 = fdiv double %420, %422
store double %423, double* %33
br label %424
424: ; preds = %415, %410
br label %425
425: ; preds = %424, %226
br label %625
426: ; preds = %72
%427 = load double*, double** %21
%428 = load double, double* %427
%429 = load double*, double** %26
%430 = load double, double* %429
%431 = fcmp oeq double %428, %430
br i1 %431, label %432, label %597
432: ; preds = %426
%433 = load i32*, i32** %28
store i32 -5, i32* %433
%434 = load double*, double** %21
%435 = load double, double* %434
%436 = fmul double %435, 2.500000e-01
store double %436, double* %33
%437 = load i32, i32* %38
%438 = load i32*, i32** %19
%439 = load i32, i32* %438
%440 = shl i32 %439, 1
%441 = sub nsw i32 %437, %440
store i32 %441, i32* %39
%442 = load double*, double** %18
%443 = load i32, i32* %39
%444 = sub nsw i32 %443, 2
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds double, double* %442, i64 %445
%447 = load double, double* %446
store double %447, double* %35
%448 = load double*, double** %18
%449 = load i32, i32* %39
%450 = sub nsw i32 %449, 6
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds double, double* %448, i64 %451
%453 = load double, double* %452
store double %453, double* %36
%454 = load double*, double** %26
%455 = load double, double* %454
store double %455, double* %40
%456 = load double*, double** %18
%457 = load i32, i32* %39
%458 = sub nsw i32 %457, 8
%459 = sext i32 %458 to i64
%460 = getelementptr inbounds double, double* %456, i64 %459
%461 = load double, double* %460
%462 = load double, double* %36
%463 = fcmp ogt double %461, %462
br i1 %463, label %473, label %464
464: ; preds = %432
%465 = load double*, double** %18
%466 = load i32, i32* %39
%467 = sub nsw i32 %466, 4
%468 = sext i32 %467 to i64
%469 = getelementptr inbounds double, double* %465, i64 %468
%470 = load double, double* %469
%471 = load double, double* %35
%472 = fcmp ogt double %470, %471
br i1 %472, label %473, label %474
473: ; preds = %464, %432
store i32 0, i32* %15
br label %1038
474: ; preds = %464
%475 = load double*, double** %18
%476 = load i32, i32* %39
%477 = sub nsw i32 %476, 8
%478 = sext i32 %477 to i64
%479 = getelementptr inbounds double, double* %475, i64 %478
%480 = load double, double* %479
%481 = load double, double* %36
%482 = fdiv double %480, %481
%483 = load double*, double** %18
%484 = load i32, i32* %39
%485 = sub nsw i32 %484, 4
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds double, double* %483, i64 %486
%488 = load double, double* %487
%489 = load double, double* %35
%490 = fdiv double %488, %489
%491 = fadd double %490, 1.000000e+00
%492 = fmul double %482, %491
store double %492, double* %34
%493 = load i32*, i32** %17
%494 = load i32, i32* %493
%495 = load i32*, i32** %16
%496 = load i32, i32* %495
%497 = sub nsw i32 %494, %496
%498 = icmp sgt i32 %497, 2
br i1 %498, label %499, label %584
499: ; preds = %474
%500 = load double*, double** %18
%501 = load i32, i32* %38
%502 = sub nsw i32 %501, 13
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds double, double* %500, i64 %503
%505 = load double, double* %504
%506 = load double*, double** %18
%507 = load i32, i32* %38
%508 = sub nsw i32 %507, 15
%509 = sext i32 %508 to i64
%510 = getelementptr inbounds double, double* %506, i64 %509
%511 = load double, double* %510
%512 = fdiv double %505, %511
store double %512, double* %36
%513 = load double, double* %36
%514 = load double, double* %34
%515 = fadd double %514, %513
store double %515, double* %34
%516 = load i32*, i32** %16
%517 = load i32, i32* %516
%518 = shl i32 %517, 2
%519 = sub nsw i32 %518, 1
%520 = load i32*, i32** %19
%521 = load i32, i32* %520
%522 = add nsw i32 %519, %521
store i32 %522, i32* %30
%523 = load i32, i32* %38
%524 = sub nsw i32 %523, 17
store i32 %524, i32* %37
br label %525
525: ; preds = %577, %499
%526 = load i32, i32* %37
%527 = load i32, i32* %30
%528 = icmp sge i32 %526, %527
br i1 %528, label %529, label %580
529: ; preds = %525
%530 = load double, double* %36
%531 = fcmp oeq double %530, 0.000000e+00
br i1 %531, label %532, label %533
532: ; preds = %529
br label %581
533: ; preds = %529
%534 = load double, double* %36
store double %534, double* %35
%535 = load double*, double** %18
%536 = load i32, i32* %37
%537 = sext i32 %536 to i64
%538 = getelementptr inbounds double, double* %535, i64 %537
%539 = load double, double* %538
%540 = load double*, double** %18
%541 = load i32, i32* %37
%542 = sub nsw i32 %541, 2
%543 = sext i32 %542 to i64
%544 = getelementptr inbounds double, double* %540, i64 %543
%545 = load double, double* %544
%546 = fcmp ogt double %539, %545
br i1 %546, label %547, label %548
547: ; preds = %533
store i32 0, i32* %15
br label %1038
548: ; preds = %533
%549 = load double*, double** %18
%550 = load i32, i32* %37
%551 = sext i32 %550 to i64
%552 = getelementptr inbounds double, double* %549, i64 %551
%553 = load double, double* %552
%554 = load double*, double** %18
%555 = load i32, i32* %37
%556 = sub nsw i32 %555, 2
%557 = sext i32 %556 to i64
%558 = getelementptr inbounds double, double* %554, i64 %557
%559 = load double, double* %558
%560 = fdiv double %553, %559
%561 = load double, double* %36
%562 = fmul double %561, %560
store double %562, double* %36
%563 = load double, double* %36
%564 = load double, double* %34
%565 = fadd double %564, %563
store double %565, double* %34
%566 = load double, double* %36
%567 = load double, double* %35
%568 = call double @llvm.maxnum.f64(double %566, double %567)
%569 = fmul double %568, 1.000000e+02
%570 = load double, double* %34
%571 = fcmp olt double %569, %570
br i1 %571, label %575, label %572
572: ; preds = %548
%573 = load double, double* %34
%574 = fcmp olt double 5.630000e-01, %573
br i1 %574, label %575, label %576
575: ; preds = %572, %548
br label %581
576: ; preds = %572
br label %577
577: ; preds = %576
%578 = load i32, i32* %37
%579 = add nsw i32 %578, -4
store i32 %579, i32* %37
br label %525
580: ; preds = %525
br label %581
581: ; preds = %580, %575, %532
%582 = load double, double* %34
%583 = fmul double %582, 1.050000e+00
store double %583, double* %34
br label %584
584: ; preds = %581, %474
%585 = load double, double* %34
%586 = fcmp olt double %585, 5.630000e-01
br i1 %586, label %587, label %596
587: ; preds = %584
%588 = load double, double* %40
%589 = load double, double* %34
%590 = call double @sqrt(double %589)
%591 = fsub double 1.000000e+00, %590
%592 = fmul double %588, %591
%593 = load double, double* %34
%594 = fadd double %593, 1.000000e+00
%595 = fdiv double %592, %594
store double %595, double* %33
br label %596
596: ; preds = %587, %584
br label %624
597: ; preds = %426
%598 = load i32*, i32** %28
%599 = load i32, i32* %598
%600 = icmp eq i32 %599, -6
br i1 %600, label %601, label %608
601: ; preds = %597
%602 = load double*, double** %29
%603 = load double, double* %602
%604 = fsub double 1.000000e+00, %603
%605 = load double*, double** %29
%606 = load double, double* %605
%607 = call double @llvm.fmuladd.f64(double %604, double 3.330000e-01, double %606)
store double %607, double* %605
br label %617
608: ; preds = %597
%609 = load i32*, i32** %28
%610 = load i32, i32* %609
%611 = icmp eq i32 %610, -18
br i1 %611, label %612, label %614
612: ; preds = %608
%613 = load double*, double** %29
store double 8.325000e-02, double* %613
br label %616
614: ; preds = %608
%615 = load double*, double** %29
store double 2.500000e-01, double* %615
br label %616
616: ; preds = %614, %612
br label %617
617: ; preds = %616, %601
%618 = load double*, double** %29
%619 = load double, double* %618
%620 = load double*, double** %21
%621 = load double, double* %620
%622 = fmul double %619, %621
store double %622, double* %33
%623 = load i32*, i32** %28
store i32 -6, i32* %623
br label %624
624: ; preds = %617, %596
br label %625
625: ; preds = %624, %425
br label %1035
626: ; preds = %54
%627 = load i32*, i32** %20
%628 = load i32, i32* %627
%629 = load i32*, i32** %17
%630 = load i32, i32* %629
%631 = add nsw i32 %630, 1
%632 = icmp eq i32 %628, %631
br i1 %632, label %633, label %814
633: ; preds = %626
%634 = load double*, double** %22
%635 = load double, double* %634
%636 = load double*, double** %25
%637 = load double, double* %636
%638 = fcmp oeq double %635, %637
br i1 %638, label %639, label %798
639: ; preds = %633
%640 = load double*, double** %23
%641 = load double, double* %640
%642 = load double*, double** %26
%643 = load double, double* %642
%644 = fcmp oeq double %641, %643
br i1 %644, label %645, label %798
645: ; preds = %639
%646 = load i32*, i32** %28
store i32 -7, i32* %646
%647 = load double*, double** %22
%648 = load double, double* %647
%649 = fmul double %648, 3.330000e-01
store double %649, double* %33
%650 = load double*, double** %18
%651 = load i32, i32* %38
%652 = sub nsw i32 %651, 5
%653 = sext i32 %652 to i64
%654 = getelementptr inbounds double, double* %650, i64 %653
%655 = load double, double* %654
%656 = load double*, double** %18
%657 = load i32, i32* %38
%658 = sub nsw i32 %657, 7
%659 = sext i32 %658 to i64
%660 = getelementptr inbounds double, double* %656, i64 %659
%661 = load double, double* %660
%662 = fcmp ogt double %655, %661
br i1 %662, label %663, label %664
663: ; preds = %645
store i32 0, i32* %15
br label %1038
664: ; preds = %645
%665 = load double*, double** %18
%666 = load i32, i32* %38
%667 = sub nsw i32 %666, 5
%668 = sext i32 %667 to i64
%669 = getelementptr inbounds double, double* %665, i64 %668
%670 = load double, double* %669
%671 = load double*, double** %18
%672 = load i32, i32* %38
%673 = sub nsw i32 %672, 7
%674 = sext i32 %673 to i64
%675 = getelementptr inbounds double, double* %671, i64 %674
%676 = load double, double* %675
%677 = fdiv double %670, %676
store double %677, double* %35
%678 = load double, double* %35
store double %678, double* %36
%679 = load double, double* %36
%680 = fcmp oeq double %679, 0.000000e+00
br i1 %680, label %681, label %682
681: ; preds = %664
br label %746
682: ; preds = %664
%683 = load i32*, i32** %16
%684 = load i32, i32* %683
%685 = shl i32 %684, 2
%686 = sub nsw i32 %685, 1
%687 = load i32*, i32** %19
%688 = load i32, i32* %687
%689 = add nsw i32 %686, %688
store i32 %689, i32* %30
%690 = load i32*, i32** %17
%691 = load i32, i32* %690
%692 = shl i32 %691, 2
%693 = sub nsw i32 %692, 9
%694 = load i32*, i32** %19
%695 = load i32, i32* %694
%696 = add nsw i32 %693, %695
store i32 %696, i32* %37
br label %697
697: ; preds = %742, %682
%698 = load i32, i32* %37
%699 = load i32, i32* %30
%700 = icmp sge i32 %698, %699
br i1 %700, label %701, label %745
701: ; preds = %697
%702 = load double, double* %35
store double %702, double* %34
%703 = load double*, double** %18
%704 = load i32, i32* %37
%705 = sext i32 %704 to i64
%706 = getelementptr inbounds double, double* %703, i64 %705
%707 = load double, double* %706
%708 = load double*, double** %18
%709 = load i32, i32* %37
%710 = sub nsw i32 %709, 2
%711 = sext i32 %710 to i64
%712 = getelementptr inbounds double, double* %708, i64 %711
%713 = load double, double* %712
%714 = fcmp ogt double %707, %713
br i1 %714, label %715, label %716
715: ; preds = %701
store i32 0, i32* %15
br label %1038
716: ; preds = %701
%717 = load double*, double** %18
%718 = load i32, i32* %37
%719 = sext i32 %718 to i64
%720 = getelementptr inbounds double, double* %717, i64 %719
%721 = load double, double* %720
%722 = load double*, double** %18
%723 = load i32, i32* %37
%724 = sub nsw i32 %723, 2
%725 = sext i32 %724 to i64
%726 = getelementptr inbounds double, double* %722, i64 %725
%727 = load double, double* %726
%728 = fdiv double %721, %727
%729 = load double, double* %35
%730 = fmul double %729, %728
store double %730, double* %35
%731 = load double, double* %35
%732 = load double, double* %36
%733 = fadd double %732, %731
store double %733, double* %36
%734 = load double, double* %35
%735 = load double, double* %34
%736 = call double @llvm.maxnum.f64(double %734, double %735)
%737 = fmul double %736, 1.000000e+02
%738 = load double, double* %36
%739 = fcmp olt double %737, %738
br i1 %739, label %740, label %741
740: ; preds = %716
br label %746
741: ; preds = %716
br label %742
742: ; preds = %741
%743 = load i32, i32* %37
%744 = add nsw i32 %743, -4
store i32 %744, i32* %37
br label %697
745: ; preds = %697
br label %746
746: ; preds = %745, %740, %681
%747 = load double, double* %36
%748 = fmul double %747, 1.050000e+00
%749 = call double @sqrt(double %748)
store double %749, double* %36
%750 = load double, double* %36
store double %750, double* %31
%751 = load double*, double** %22
%752 = load double, double* %751
%753 = load double, double* %31
%754 = load double, double* %31
%755 = call double @llvm.fmuladd.f64(double %753, double %754, double 1.000000e+00)
%756 = fdiv double %752, %755
store double %756, double* %34
%757 = load double*, double** %23
%758 = load double, double* %757
%759 = load double, double* %34
%760 = fneg double %759
%761 = call double @llvm.fmuladd.f64(double %758, double 5.000000e-01, double %760)
store double %761, double* %42
%762 = load double, double* %42
%763 = fcmp ogt double %762, 0.000000e+00
br i1 %763, label %764, label %786
764: ; preds = %746
%765 = load double, double* %42
%766 = load double, double* %36
%767 = load double, double* %34
%768 = fmul double %766, %767
%769 = fcmp ogt double %765, %768
br i1 %769, label %770, label %786
770: ; preds = %764
%771 = load double, double* %33
store double %771, double* %31
%772 = load double, double* %34
%773 = load double, double* %34
%774 = fmul double %773, 1.010000e+00
%775 = load double, double* %36
%776 = load double, double* %42
%777 = fdiv double %775, %776
%778 = fmul double %774, %777
%779 = load double, double* %36
%780 = fneg double %778
%781 = call double @llvm.fmuladd.f64(double %780, double %779, double 1.000000e+00)
%782 = fmul double %772, %781
store double %782, double* %32
%783 = load double, double* %31
%784 = load double, double* %32
%785 = call double @llvm.maxnum.f64(double %783, double %784)
store double %785, double* %33
br label %797
786: ; preds = %764, %746
%787 = load double, double* %33
store double %787, double* %31
%788 = load double, double* %34
%789 = load double, double* %36
%790 = fneg double %789
%791 = call double @llvm.fmuladd.f64(double %790, double 1.010000e+00, double 1.000000e+00)
%792 = fmul double %788, %791
store double %792, double* %32
%793 = load double, double* %31
%794 = load double, double* %32
%795 = call double @llvm.maxnum.f64(double %793, double %794)
store double %795, double* %33
%796 = load i32*, i32** %28
store i32 -8, i32* %796
br label %797
797: ; preds = %786, %770
br label %813
798: ; preds = %639, %633
%799 = load double*, double** %22
%800 = load double, double* %799
%801 = fmul double %800, 2.500000e-01
store double %801, double* %33
%802 = load double*, double** %22
%803 = load double, double* %802
%804 = load double*, double** %25
%805 = load double, double* %804
%806 = fcmp oeq double %803, %805
br i1 %806, label %807, label %811
807: ; preds = %798
%808 = load double*, double** %22
%809 = load double, double* %808
%810 = fmul double %809, 5.000000e-01
store double %810, double* %33
br label %811
811: ; preds = %807, %798
%812 = load i32*, i32** %28
store i32 -9, i32* %812
br label %813
813: ; preds = %811, %797
br label %1034
814: ; preds = %626
%815 = load i32*, i32** %20
%816 = load i32, i32* %815
%817 = load i32*, i32** %17
%818 = load i32, i32* %817
%819 = add nsw i32 %818, 2
%820 = icmp eq i32 %816, %819
br i1 %820, label %821, label %1023
821: ; preds = %814
%822 = load double*, double** %23
%823 = load double, double* %822
%824 = load double*, double** %26
%825 = load double, double* %824
%826 = fcmp oeq double %823, %825
br i1 %826, label %827, label %1017
827: ; preds = %821
%828 = load double*, double** %18
%829 = load i32, i32* %38
%830 = sub nsw i32 %829, 5
%831 = sext i32 %830 to i64
%832 = getelementptr inbounds double, double* %828, i64 %831
%833 = load double, double* %832
%834 = fmul double %833, 2.000000e+00
%835 = load double*, double** %18
%836 = load i32, i32* %38
%837 = sub nsw i32 %836, 7
%838 = sext i32 %837 to i64
%839 = getelementptr inbounds double, double* %835, i64 %838
%840 = load double, double* %839
%841 = fcmp olt double %834, %840
br i1 %841, label %842, label %1017
842: ; preds = %827
%843 = load i32*, i32** %28
store i32 -10, i32* %843
%844 = load double*, double** %23
%845 = load double, double* %844
%846 = fmul double %845, 3.330000e-01
store double %846, double* %33
%847 = load double*, double** %18
%848 = load i32, i32* %38
%849 = sub nsw i32 %848, 5
%850 = sext i32 %849 to i64
%851 = getelementptr inbounds double, double* %847, i64 %850
%852 = load double, double* %851
%853 = load double*, double** %18
%854 = load i32, i32* %38
%855 = sub nsw i32 %854, 7
%856 = sext i32 %855 to i64
%857 = getelementptr inbounds double, double* %853, i64 %856
%858 = load double, double* %857
%859 = fcmp ogt double %852, %858
br i1 %859, label %860, label %861
860: ; preds = %842
store i32 0, i32* %15
br label %1038
861: ; preds = %842
%862 = load double*, double** %18
%863 = load i32, i32* %38
%864 = sub nsw i32 %863, 5
%865 = sext i32 %864 to i64
%866 = getelementptr inbounds double, double* %862, i64 %865
%867 = load double, double* %866
%868 = load double*, double** %18
%869 = load i32, i32* %38
%870 = sub nsw i32 %869, 7
%871 = sext i32 %870 to i64
%872 = getelementptr inbounds double, double* %868, i64 %871
%873 = load double, double* %872
%874 = fdiv double %867, %873
store double %874, double* %35
%875 = load double, double* %35
store double %875, double* %36
%876 = load double, double* %36
%877 = fcmp oeq double %876, 0.000000e+00
br i1 %877, label %878, label %879
878: ; preds = %861
br label %940
879: ; preds = %861
%880 = load i32*, i32** %16
%881 = load i32, i32* %880
%882 = shl i32 %881, 2
%883 = sub nsw i32 %882, 1
%884 = load i32*, i32** %19
%885 = load i32, i32* %884
%886 = add nsw i32 %883, %885
store i32 %886, i32* %30
%887 = load i32*, i32** %17
%888 = load i32, i32* %887
%889 = shl i32 %888, 2
%890 = sub nsw i32 %889, 9
%891 = load i32*, i32** %19
%892 = load i32, i32* %891
%893 = add nsw i32 %890, %892
store i32 %893, i32* %37
br label %894
894: ; preds = %936, %879
%895 = load i32, i32* %37
%896 = load i32, i32* %30
%897 = icmp sge i32 %895, %896
br i1 %897, label %898, label %939
898: ; preds = %894
%899 = load double*, double** %18
%900 = load i32, i32* %37
%901 = sext i32 %900 to i64
%902 = getelementptr inbounds double, double* %899, i64 %901
%903 = load double, double* %902
%904 = load double*, double** %18
%905 = load i32, i32* %37
%906 = sub nsw i32 %905, 2
%907 = sext i32 %906 to i64
%908 = getelementptr inbounds double, double* %904, i64 %907
%909 = load double, double* %908
%910 = fcmp ogt double %903, %909
br i1 %910, label %911, label %912
911: ; preds = %898
store i32 0, i32* %15
br label %1038
912: ; preds = %898
%913 = load double*, double** %18
%914 = load i32, i32* %37
%915 = sext i32 %914 to i64
%916 = getelementptr inbounds double, double* %913, i64 %915
%917 = load double, double* %916
%918 = load double*, double** %18
%919 = load i32, i32* %37
%920 = sub nsw i32 %919, 2
%921 = sext i32 %920 to i64
%922 = getelementptr inbounds double, double* %918, i64 %921
%923 = load double, double* %922
%924 = fdiv double %917, %923
%925 = load double, double* %35
%926 = fmul double %925, %924
store double %926, double* %35
%927 = load double, double* %35
%928 = load double, double* %36
%929 = fadd double %928, %927
store double %929, double* %36
%930 = load double, double* %35
%931 = fmul double %930, 1.000000e+02
%932 = load double, double* %36
%933 = fcmp olt double %931, %932
br i1 %933, label %934, label %935
934: ; preds = %912
br label %940
935: ; preds = %912
br label %936
936: ; preds = %935
%937 = load i32, i32* %37
%938 = add nsw i32 %937, -4
store i32 %938, i32* %37
br label %894
939: ; preds = %894
br label %940
940: ; preds = %939, %934, %878
%941 = load double, double* %36
%942 = fmul double %941, 1.050000e+00
%943 = call double @sqrt(double %942)
store double %943, double* %36
%944 = load double, double* %36
store double %944, double* %31
%945 = load double*, double** %23
%946 = load double, double* %945
%947 = load double, double* %31
%948 = load double, double* %31
%949 = call double @llvm.fmuladd.f64(double %947, double %948, double 1.000000e+00)
%950 = fdiv double %946, %949
store double %950, double* %34
%951 = load double*, double** %18
%952 = load i32, i32* %38
%953 = sub nsw i32 %952, 7
%954 = sext i32 %953 to i64
%955 = getelementptr inbounds double, double* %951, i64 %954
%956 = load double, double* %955
%957 = load double*, double** %18
%958 = load i32, i32* %38
%959 = sub nsw i32 %958, 9
%960 = sext i32 %959 to i64
%961 = getelementptr inbounds double, double* %957, i64 %960
%962 = load double, double* %961
%963 = fadd double %956, %962
%964 = load double*, double** %18
%965 = load i32, i32* %38
%966 = sub nsw i32 %965, 11
%967 = sext i32 %966 to i64
%968 = getelementptr inbounds double, double* %964, i64 %967
%969 = load double, double* %968
%970 = call double @sqrt(double %969)
%971 = load double*, double** %18
%972 = load i32, i32* %38
%973 = sub nsw i32 %972, 9
%974 = sext i32 %973 to i64
%975 = getelementptr inbounds double, double* %971, i64 %974
%976 = load double, double* %975
%977 = call double @sqrt(double %976)
%978 = fneg double %970
%979 = call double @llvm.fmuladd.f64(double %978, double %977, double %963)
%980 = load double, double* %34
%981 = fsub double %979, %980
store double %981, double* %42
%982 = load double, double* %42
%983 = fcmp ogt double %982, 0.000000e+00
br i1 %983, label %984, label %1006
984: ; preds = %940
%985 = load double, double* %42
%986 = load double, double* %36
%987 = load double, double* %34
%988 = fmul double %986, %987
%989 = fcmp ogt double %985, %988
br i1 %989, label %990, label %1006
990: ; preds = %984
%991 = load double, double* %33
store double %991, double* %31
%992 = load double, double* %34
%993 = load double, double* %34
%994 = fmul double %993, 1.010000e+00
%995 = load double, double* %36
%996 = load double, double* %42
%997 = fdiv double %995, %996
%998 = fmul double %994, %997
%999 = load double, double* %36
%1000 = fneg double %998
%1001 = call double @llvm.fmuladd.f64(double %1000, double %999, double 1.000000e+00)
%1002 = fmul double %992, %1001
store double %1002, double* %32
%1003 = load double, double* %31
%1004 = load double, double* %32
%1005 = call double @llvm.maxnum.f64(double %1003, double %1004)
store double %1005, double* %33
br label %1016
1006: ; preds = %984, %940
%1007 = load double, double* %33
store double %1007, double* %31
%1008 = load double, double* %34
%1009 = load double, double* %36
%1010 = fneg double %1009
%1011 = call double @llvm.fmuladd.f64(double %1010, double 1.010000e+00, double 1.000000e+00)
%1012 = fmul double %1008, %1011
store double %1012, double* %32
%1013 = load double, double* %31
%1014 = load double, double* %32
%1015 = call double @llvm.maxnum.f64(double %1013, double %1014)
store double %1015, double* %33
br label %1016
1016: ; preds = %1006, %990
br label %1022
1017: ; preds = %827, %821
%1018 = load double*, double** %23
%1019 = load double, double* %1018
%1020 = fmul double %1019, 2.500000e-01
store double %1020, double* %33
%1021 = load i32*, i32** %28
store i32 -11, i32* %1021
br label %1022
1022: ; preds = %1017, %1016
br label %1033
1023: ; preds = %814
%1024 = load i32*, i32** %20
%1025 = load i32, i32* %1024
%1026 = load i32*, i32** %17
%1027 = load i32, i32* %1026
%1028 = add nsw i32 %1027, 2
%1029 = icmp sgt i32 %1025, %1028
br i1 %1029, label %1030, label %1032
1030: ; preds = %1023
store double 0.000000e+00, double* %33
%1031 = load i32*, i32** %28
store i32 -12, i32* %1031
br label %1032
1032: ; preds = %1030, %1023
br label %1033
1033: ; preds = %1032, %1022
br label %1034
1034: ; preds = %1033, %813
br label %1035
1035: ; preds = %1034, %625
%1036 = load double, double* %33
%1037 = load double*, double** %27
store double %1036, double* %1037
store i32 0, i32* %15
br label %1038
1038: ; preds = %1035, %911, %860, %715, %663, %547, %473, %376, %325, %297, %253, %48
%1039 = load i32, i32* %15
ret i32 %1039
}

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