#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
double DBL_EPSILON;
double fabs(double);
double fmax(double, double);
double fmin(double, double);
int /*<<< orphan*/ odsq5_(int *, int *, double *, int *, double *, double *,
                          double *, double *, double *, double *, double *,
                          int *);
int /*<<< orphan*/ odsq6_(int *, int *, double *, int *, double *, double *,
                          double *, double *, double *, double *);
double sqrt(double);
int odsq3_(int *i0, int *n0, double *z__, int *pp, double *dmin__,
           double *sigma, double *desig, double *qmax, int *nfail, int *iter,
           int *ndiv, int *ieee, int *ttype, double *dmin1, double *dmin2,
           double *dn, double *dn1, double *dn2, double *g, double *tau) {
  int i__1;
  double d__1, d__2;
  double s, t;
  int j4, nn;
  double eps, tol;
  int n0in, ipn4;
  double tol2, temp;
  extern int odsq4_(int *, int *, double *, int *, int *, double *, double *,
                    double *, double *, double *, double *, double *, int *,
                    double *),
      odsq5_(int *, int *, double *, int *, double *, double *, double *,
             double *, double *, double *, double *, int *),
      odsq6_(int *, int *, double *, int *, double *, double *, double *,
             double *, double *, double *);
  extern int odnan_(double *);
  --z__;
  n0in = *n0;
  eps = DBL_EPSILON;
  tol = eps * 100.;
  d__1 = tol;
  tol2 = d__1 * d__1;
L10:
  if (*n0 < *i0) {
    return 0;
  }
  if (*n0 == *i0) {
    goto L20;
  }
  nn = (*n0 << 2) + *pp;
  if (*n0 == *i0 + 1) {
    goto L40;
  }
  if (z__[nn - 5] > tol2 * (*sigma + z__[nn - 3]) &&
      z__[nn - (*pp << 1) - 4] > tol2 * z__[nn - 7]) {
    goto L30;
  }
L20:
  z__[(*n0 << 2) - 3] = z__[(*n0 << 2) + *pp - 3] + *sigma;
  --(*n0);
  goto L10;
L30:
  if (z__[nn - 9] > tol2 * *sigma &&
      z__[nn - (*pp << 1) - 8] > tol2 * z__[nn - 11]) {
    goto L50;
  }
L40:
  if (z__[nn - 3] > z__[nn - 7]) {
    s = z__[nn - 3];
    z__[nn - 3] = z__[nn - 7];
    z__[nn - 7] = s;
  }
  if (z__[nn - 5] > z__[nn - 3] * tol2) {
    t = (z__[nn - 7] - z__[nn - 3] + z__[nn - 5]) * .5;
    s = z__[nn - 3] * (z__[nn - 5] / t);
    if (s <= t) {
      s = z__[nn - 3] * (z__[nn - 5] / (t * (sqrt(s / t + 1.) + 1.)));
    } else {
      s = z__[nn - 3] * (z__[nn - 5] / (t + sqrt(t) * sqrt(t + s)));
    }
    t = z__[nn - 7] + (s + z__[nn - 5]);
    z__[nn - 3] *= z__[nn - 7] / t;
    z__[nn - 7] = t;
  }
  z__[(*n0 << 2) - 7] = z__[nn - 7] + *sigma;
  z__[(*n0 << 2) - 3] = z__[nn - 3] + *sigma;
  *n0 += -2;
  goto L10;
L50:
  if (*pp == 2) {
    *pp = 0;
  }
  if (*dmin__ <= 0. || *n0 < n0in) {
    if (z__[(*i0 << 2) + *pp - 3] * 1.5 < z__[(*n0 << 2) + *pp - 3]) {
      ipn4 = *i0 + *n0 << 2;
      i__1 = *i0 + *n0 - 1 << 1;
      for (j4 = *i0 << 2; j4 <= i__1; j4 += 4) {
        temp = z__[j4 - 3];
        z__[j4 - 3] = z__[ipn4 - j4 - 3];
        z__[ipn4 - j4 - 3] = temp;
        temp = z__[j4 - 2];
        z__[j4 - 2] = z__[ipn4 - j4 - 2];
        z__[ipn4 - j4 - 2] = temp;
        temp = z__[j4 - 1];
        z__[j4 - 1] = z__[ipn4 - j4 - 5];
        z__[ipn4 - j4 - 5] = temp;
        temp = z__[j4];
        z__[j4] = z__[ipn4 - j4 - 4];
        z__[ipn4 - j4 - 4] = temp;
      }
      if (*n0 - *i0 <= 4) {
        z__[(*n0 << 2) + *pp - 1] = z__[(*i0 << 2) + *pp - 1];
        z__[(*n0 << 2) - *pp] = z__[(*i0 << 2) - *pp];
      }
      d__1 = *dmin2, d__2 = z__[(*n0 << 2) + *pp - 1];
      *dmin2 = fmin(d__1, d__2);
      d__1 = z__[(*n0 << 2) + *pp - 1], d__2 = z__[(*i0 << 2) + *pp - 1],
      d__1 = fmin(d__1, d__2), d__2 = z__[(*i0 << 2) + *pp + 3];
      z__[(*n0 << 2) + *pp - 1] = fmin(d__1, d__2);
      d__1 = z__[(*n0 << 2) - *pp], d__2 = z__[(*i0 << 2) - *pp],
      d__1 = fmin(d__1, d__2), d__2 = z__[(*i0 << 2) - *pp + 4];
      z__[(*n0 << 2) - *pp] = fmin(d__1, d__2);
      d__1 = *qmax, d__2 = z__[(*i0 << 2) + *pp - 3], d__1 = fmax(d__1, d__2),
      d__2 = z__[(*i0 << 2) + *pp + 1];
      *qmax = fmax(d__1, d__2);
      *dmin__ = -0.;
    }
  }
  odsq4_(i0, n0, &z__[1], pp, &n0in, dmin__, dmin1, dmin2, dn, dn1, dn2, tau,
         ttype, g);
L70:
  odsq5_(i0, n0, &z__[1], pp, tau, dmin__, dmin1, dmin2, dn, dn1, dn2, ieee);
  *ndiv += *n0 - *i0 + 2;
  ++(*iter);
  if (*dmin__ >= 0. && *dmin1 > 0.) {
    goto L90;
  } else if (*dmin__ < 0. && *dmin1 > 0. &&
             z__[(*n0 - 1 << 2) - *pp] < tol * (*sigma + *dn1) &&
             fabs(*dn) < tol * *sigma) {
    z__[(*n0 - 1 << 2) - *pp + 2] = 0.;
    *dmin__ = 0.;
    goto L90;
  } else if (*dmin__ < 0.) {
    ++(*nfail);
    if (*ttype < -22) {
      *tau = 0.;
    } else if (*dmin1 > 0.) {
      *tau = (*tau + *dmin__) * (1. - eps * 2.);
      *ttype += -11;
    } else {
      *tau *= .25;
      *ttype += -12;
    }
    goto L70;
  } else if (odnan_(dmin__)) {
    if (*tau == 0.) {
      goto L80;
    } else {
      *tau = 0.;
      goto L70;
    }
  } else {
    goto L80;
  }
L80:
  odsq6_(i0, n0, &z__[1], pp, dmin__, dmin1, dmin2, dn, dn1, dn2);
  *ndiv += *n0 - *i0 + 2;
  ++(*iter);
  *tau = 0.;
L90:
  if (*tau < *sigma) {
    *desig += *tau;
    t = *sigma + *desig;
    *desig -= t - *sigma;
  } else {
    t = *sigma + *tau;
    *desig = *sigma - (t - *tau) + *desig;
  }
  *sigma = t;
  return 0;
}


x86 assembly (clang, -O0):
<odsq3_>:
push   %rbp
mov    %rsp,%rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x108,%rsp
mov    0x78(%rbp),%rax
mov    0x70(%rbp),%rax
mov    0x68(%rbp),%rax
mov    0x60(%rbp),%rax
mov    0x58(%rbp),%rax
mov    0x50(%rbp),%rax
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,-0x38(%rbp)
mov    %rsi,-0x40(%rbp)
mov    %rdx,-0x48(%rbp)
mov    %rcx,-0x50(%rbp)
mov    %r8,-0x58(%rbp)
mov    %r9,-0x60(%rbp)
mov    -0x48(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x48(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0xa4(%rbp)
mov    0x3e15(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x1e19(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rcx
cmp    (%rcx),%eax
jge    1234 <odsq3_+0xe4>
movl   $0x0,-0x2c(%rbp)
jmp    21cb <odsq3_+0x107b>
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rcx
cmp    (%rcx),%eax
jne    124b <odsq3_+0xfb>
jmp    1315 <odsq3_+0x1c5>
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    -0x50(%rbp),%rcx
add    (%rcx),%eax
mov    %eax,-0x90(%rbp)
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jne    127c <odsq3_+0x12c>
jmp    13e3 <odsq3_+0x293>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm2
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1310 <odsq3_+0x1c0>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
mov    -0x50(%rbp),%rdx
mov    (%rdx),%edx
shl    $0x1,%edx
sub    %edx,%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    1310 <odsq3_+0x1c0>
jmp    1363 <odsq3_+0x213>
jmp    1315 <odsq3_+0x1c5>
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x60(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
jmp    1216 <odsq3_+0xc6>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x60(%rbp),%rax
mulsd  (%rax),%xmm1
ucomisd %xmm1,%xmm0
jbe    13de <odsq3_+0x28e>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
mov    -0x50(%rbp),%rdx
mov    (%rdx),%edx
shl    $0x1,%edx
sub    %edx,%ecx
sub    $0x8,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0xb,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    13de <odsq3_+0x28e>
jmp    17a9 <odsq3_+0x659>
jmp    13e3 <odsq3_+0x293>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1471 <odsq3_+0x321>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jbe    172f <odsq3_+0x5df>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  0x1b34(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
divsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     15f7 <odsq3_+0x4a7>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  0x1a6f(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0xc0(%rbp),%xmm0
ff
movsd  0x1a43(%rip),%xmm4
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
jmp    16a0 <odsq3_+0x550>
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1060 <sqrt@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0x80(%rbp),%xmm0
call   1060 <sqrt@plt>
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm3
ff
movsd  -0xe0(%rbp),%xmm1
ff
movaps %xmm0,%xmm4
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x80(%rbp),%xmm1
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x60(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
sub    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x90(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x60(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
add    $0xfffffffe,%ecx
mov    %ecx,(%rax)
jmp    1216 <odsq3_+0xc6>
mov    -0x50(%rbp),%rax
cmpl   $0x2,(%rax)
jne    17c0 <odsq3_+0x670>
mov    -0x50(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x58(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    17e3 <odsq3_+0x693>
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
cmp    -0xa4(%rbp),%eax
jge    1d9e <odsq3_+0xc4e>
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  0x1804(%rip),%xmm1
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1d99 <odsq3_+0xc49>
mov    -0x38(%rbp),%rax
mov    (%rax),%eax
mov    -0x40(%rbp),%rcx
add    (%rcx),%eax
shl    $0x2,%eax
mov    %eax,-0xa8(%rbp)
mov    -0x38(%rbp),%rax
mov    (%rax),%eax
mov    -0x40(%rbp),%rcx
add    (%rcx),%eax
sub    $0x1,%eax
shl    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    -0x38(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x8c(%rbp),%eax
cmp    -0x64(%rbp),%eax
jg     1a43 <odsq3_+0x8f3>
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x8c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
movslq -0x8c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
movslq -0x8c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x48(%rbp),%rax
mov    -0xa8(%rbp),%ecx
sub    -0x8c(%rbp),%ecx
sub    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x8c(%rbp)
jmp    186a <odsq3_+0x71a>
mov    -0x40(%rbp),%rax
mov    (%rax),%eax
mov    -0x38(%rbp),%rcx
sub    (%rcx),%eax
cmp    $0x4,%eax
jg     1aca <odsq3_+0x97a>
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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
mov    0x50(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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,-0x70(%rbp)
mov    -0x48(%rbp),%rax
mov    -0x38(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
add    (%rdx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x70(%rbp),%xmm3
movsd  -0x78(%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
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x58(%rbp),%rax
movsd  0x127b(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1d9e <odsq3_+0xc4e>
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x48(%rbp),%rdx
add    $0x8,%rdx
mov    -0x50(%rbp),%rcx
mov    -0x58(%rbp),%r9
mov    0x48(%rbp),%r13
mov    0x50(%rbp),%r12
mov    0x58(%rbp),%r15
mov    0x60(%rbp),%r14
mov    0x68(%rbp),%rbx
mov    0x78(%rbp),%r11
mov    0x40(%rbp),%r10
mov    0x70(%rbp),%rax
lea    -0xa4(%rbp),%r8
mov    %r13,(%rsp)
mov    %r12,0x8(%rsp)
mov    %r15,0x10(%rsp)
mov    %r14,0x18(%rsp)
mov    %rbx,0x20(%rsp)
mov    %r11,0x28(%rsp)
mov    %r10,0x30(%rsp)
mov    %rax,0x38(%rsp)
call   1070 <odsq4_@plt>
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x48(%rbp),%rdx
add    $0x8,%rdx
mov    -0x50(%rbp),%rcx
mov    0x78(%rbp),%r8
mov    -0x58(%rbp),%r9
mov    0x48(%rbp),%r15
mov    0x50(%rbp),%r14
mov    0x58(%rbp),%rbx
mov    0x60(%rbp),%r11
mov    0x68(%rbp),%r10
mov    0x38(%rbp),%rax
mov    %r15,(%rsp)
mov    %r14,0x8(%rsp)
mov    %rbx,0x10(%rsp)
mov    %r11,0x18(%rsp)
mov    %r10,0x20(%rsp)
mov    %rax,0x28(%rsp)
call   1040 <odsq5_@plt>
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x38(%rbp),%rax
sub    (%rax),%ecx
add    $0x2,%ecx
mov    0x30(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    0x28(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1eb0 <odsq3_+0xd60>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1eb0 <odsq3_+0xd60>
jmp    2105 <odsq3_+0xfb5>
mov    -0x58(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    1f7b <odsq3_+0xe2b>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1f7b <odsq3_+0xe2b>
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm2
mov    0x60(%rbp),%rax
addsd  (%rax),%xmm2
mulsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jbe    1f7b <odsq3_+0xe2b>
mov    0x58(%rbp),%rax
movsd  (%rax),%xmm1
movaps 0x1107(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
mulsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    1f7b <odsq3_+0xe2b>
mov    -0x48(%rbp),%rax
mov    -0x40(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
shl    $0x2,%ecx
mov    -0x50(%rbp),%rdx
sub    (%rdx),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x58(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    2105 <odsq3_+0xfb5>
mov    -0x58(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jbe    204d <odsq3_+0xefd>
mov    0x20(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x40(%rbp),%rax
cmpl   $0xffffffea,(%rax)
jge    1fb4 <odsq3_+0xe64>
mov    0x78(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    2048 <odsq3_+0xef8>
mov    0x48(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    2024 <odsq3_+0xed4>
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x58(%rbp),%rax
addsd  (%rax),%xmm0
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
addsd  %xmm1,%xmm1
movsd  0x101c(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    0x78(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x40(%rbp),%rax
mov    (%rax),%ecx
add    $0xfffffff5,%ecx
mov    %ecx,(%rax)
jmp    2043 <odsq3_+0xef3>
mov    0x78(%rbp),%rax
movsd  0xfe8(%rip),%xmm0
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    0x40(%rbp),%rax
mov    (%rax),%ecx
add    $0xfffffff4,%ecx
mov    %ecx,(%rax)
jmp    2048 <odsq3_+0xef8>
jmp    1e09 <odsq3_+0xcb9>
mov    -0x58(%rbp),%rdi
call   1050 <odnan_@plt>
cmp    $0x0,%eax
je     208f <odsq3_+0xf3f>
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    207f <odsq3_+0xf2f>
jp     207f <odsq3_+0xf2f>
jmp    2094 <odsq3_+0xf44>
mov    0x78(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1e09 <odsq3_+0xcb9>
jmp    2094 <odsq3_+0xf44>
mov    -0x38(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x48(%rbp),%rdx
add    $0x8,%rdx
mov    -0x50(%rbp),%rcx
mov    -0x58(%rbp),%r8
mov    0x48(%rbp),%r9
mov    0x50(%rbp),%rbx
mov    0x58(%rbp),%r11
mov    0x60(%rbp),%r10
mov    0x68(%rbp),%rax
mov    %rbx,(%rsp)
mov    %r11,0x8(%rsp)
mov    %r10,0x10(%rsp)
mov    %rax,0x18(%rsp)
call   1030 <odsq6_@plt>
mov    -0x40(%rbp),%rax
mov    (%rax),%ecx
mov    -0x38(%rbp),%rax
sub    (%rax),%ecx
add    $0x2,%ecx
mov    0x30(%rbp),%rax
add    (%rax),%ecx
mov    %ecx,(%rax)
mov    0x28(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    0x78(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
jbe    2170 <odsq3_+0x1020>
mov    0x78(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
mov    -0x60(%rbp),%rax
subsd  (%rax),%xmm1
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
jmp    21b4 <odsq3_+0x1064>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x78(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  -0x88(%rbp),%xmm1
ff
mov    0x78(%rbp),%rax
subsd  (%rax),%xmm1
subsd  %xmm1,%xmm0
mov    0x10(%rbp),%rax
addsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x60(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x108,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

x86 assembly (clang, -O2):
<odsq3_>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r8,0x48(%rsp)
mov    %rdx,0x18(%rsp)
mov    (%rsi),%eax
mov    %eax,0x64(%rsp)
mov    (%rdi),%ebp
mov    %eax,0x24(%rsp)
cmp    %ebp,%eax
jge    1189 <odsq3_+0x39>
xor    %eax,%eax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r9,%r12
mov    %rcx,%r9
mov    0x2e52(%rip),%rax
movsd  (%rax),%xmm1
mov    0x18(%rsp),%rax
lea    -0x8(%rax),%r13
movsd  0xe55(%rip),%xmm0
movsd  %xmm1,0x68(%rsp)
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x70(%rsp)
movapd %xmm0,%xmm3
mulsd  %xmm0,%xmm3
xorpd  %xmm4,%xmm4
movsd  0xe41(%rip),%xmm0
movsd  %xmm0,0x40(%rsp)
mov    0x24(%rsp),%eax
mov    %eax,%ecx
mov    %rdi,0x10(%rsp)
mov    %rsi,0x8(%rsp)
mov    %r9,(%rsp)
movsd  %xmm3,0x58(%rsp)
jmp    123c <odsq3_+0xec>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%r9),%eax
movsd  (%r12),%xmm0
lea    0x0(,%rcx,4),%edx
mov    %edx,%ebp
add    %edx,%eax
add    $0xfffffffd,%eax
cltq
addsd  0x0(%r13,%rax,8),%xmm0
add    $0xfffffffd,%ebp
movslq %ebp,%rax
movsd  %xmm0,0x0(%r13,%rax,8)
add    $0xffffffff,%ecx
mov    %ecx,(%rsi)
mov    (%rdi),%ebp
cmp    %ebp,%ecx
jl     1178 <odsq3_+0x28>
cmp    %ebp,%ecx
je     1200 <odsq3_+0xb0>
lea    0x0(,%rcx,4),%edx
mov    (%r9),%eax
lea    (%rax,%rcx,4),%ebx
add    $0x1,%ebp
movslq %ebx,%r14
cmp    %ebp,%ecx
jne    12a0 <odsq3_+0x150>
lea    -0x3(%rbx),%eax
movslq %eax,%rbp
add    $0xfffffff9,%ebx
movslq %ebx,%r15
movsd  0x0(%r13,%rbp,8),%xmm0
movsd  0x0(%r13,%r15,8),%xmm1
ucomisd %xmm1,%xmm0
jbe    132a <odsq3_+0x1da>
movsd  %xmm1,0x0(%r13,%rbp,8)
movsd  %xmm0,0x0(%r13,%r15,8)
movapd %xmm0,%xmm2
jmp    1332 <odsq3_+0x1e2>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  -0x28(%r13,%r14,8),%xmm1
movsd  (%r12),%xmm0
movsd  -0x18(%r13,%r14,8),%xmm2
addsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm2,%xmm1
jbe    1210 <odsq3_+0xc0>
mov    %r14d,%ebp
sub    %eax,%ebp
sub    %eax,%ebp
movslq %ebp,%rbx
movsd  -0x20(%r13,%rbx,8),%xmm1
movsd  -0x38(%r13,%r14,8),%xmm2
mulsd  %xmm3,%xmm2
ucomisd %xmm2,%xmm1
jbe    1210 <odsq3_+0xc0>
lea    -0x3(%r14),%rbp
lea    -0x7(%r14),%r15
movsd  -0x48(%r13,%r14,8),%xmm1
mulsd  %xmm3,%xmm0
ucomisd %xmm0,%xmm1
jbe    1263 <odsq3_+0x113>
movsd  -0x40(%r13,%rbx,8),%xmm0
movsd  -0x58(%r13,%r14,8),%xmm1
mulsd  %xmm3,%xmm1
ucomisd %xmm1,%xmm0
jbe    1263 <odsq3_+0x113>
jmp    14d8 <odsq3_+0x388>
movapd %xmm1,%xmm2
movapd %xmm0,%xmm1
movsd  -0x28(%r13,%r14,8),%xmm5
movapd %xmm3,%xmm0
mulsd  %xmm1,%xmm0
ucomisd %xmm0,%xmm5
jbe    14ac <odsq3_+0x35c>
add    $0xfffffffffffffffb,%r14
subsd  %xmm1,%xmm2
addsd  %xmm5,%xmm2
mulsd  0xcc1(%rip),%xmm2
movapd %xmm5,%xmm0
divsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm0
ucomisd %xmm0,%xmm2
jae    138f <odsq3_+0x23f>
ucomisd %xmm4,%xmm2
movsd  %xmm1,0x38(%rsp)
movsd  %xmm2,0x30(%rsp)
movsd  %xmm5,0x28(%rsp)
jb     13a7 <odsq3_+0x257>
sqrtsd %xmm2,%xmm6
jmp    13ca <odsq3_+0x27a>
divsd  %xmm2,%xmm0
addsd  0xc75(%rip),%xmm0
ucomisd %xmm4,%xmm0
jb     13da <odsq3_+0x28a>
sqrtsd %xmm0,%xmm0
jmp    141b <odsq3_+0x2cb>
movsd  %xmm0,0x50(%rsp)
movapd %xmm2,%xmm0
call   1060 <sqrt@plt>
movsd  0x30(%rsp),%xmm2
xorpd  %xmm4,%xmm4
movapd %xmm0,%xmm6
movsd  0x50(%rsp),%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm4,%xmm0
jb     1429 <odsq3_+0x2d9>
sqrtsd %xmm0,%xmm0
jmp    1444 <odsq3_+0x2f4>
movsd  %xmm1,0x38(%rsp)
movsd  %xmm2,0x30(%rsp)
movsd  %xmm5,0x28(%rsp)
call   1060 <sqrt@plt>
movsd  0x28(%rsp),%xmm5
movsd  0x30(%rsp),%xmm2
movsd  0x38(%rsp),%xmm1
xorpd  %xmm4,%xmm4
movsd  0x58(%rsp),%xmm3
mov    (%rsp),%r9
mov    0x8(%rsp),%rsi
mov    0x10(%rsp),%rdi
addsd  0xbed(%rip),%xmm0
mulsd  %xmm0,%xmm2
jmp    146c <odsq3_+0x31c>
movsd  %xmm6,0x50(%rsp)
call   1060 <sqrt@plt>
movsd  0x50(%rsp),%xmm6
movsd  0x30(%rsp),%xmm2
xorpd  %xmm4,%xmm4
mov    0x10(%rsp),%rdi
mov    0x8(%rsp),%rsi
mov    (%rsp),%r9
movsd  0x58(%rsp),%xmm3
movsd  0x38(%rsp),%xmm1
movsd  0x28(%rsp),%xmm5
mulsd  %xmm0,%xmm6
addsd  %xmm6,%xmm2
divsd  %xmm2,%xmm5
mulsd  %xmm5,%xmm1
movsd  0x0(%r13,%r15,8),%xmm0
addsd  0x0(%r13,%r14,8),%xmm1
addsd  %xmm0,%xmm1
divsd  %xmm1,%xmm0
mulsd  0x0(%r13,%rbp,8),%xmm0
movsd  %xmm0,0x0(%r13,%rbp,8)
movsd  %xmm1,0x0(%r13,%r15,8)
mov    (%rsi),%ecx
lea    0x0(,%rcx,4),%edx
movapd %xmm1,%xmm2
addsd  (%r12),%xmm2
movslq %edx,%rax
movsd  %xmm2,-0x38(%r13,%rax,8)
movsd  0x0(%r13,%rbp,8),%xmm0
addsd  (%r12),%xmm0
movsd  %xmm0,-0x18(%r13,%rax,8)
add    $0xfffffffe,%ecx
jmp    1230 <odsq3_+0xe0>
cmp    $0x2,%eax
jne    14e6 <odsq3_+0x396>
movl   $0x0,(%r9)
xor    %eax,%eax
xorpd  %xmm0,%xmm0
mov    0x48(%rsp),%rcx
ucomisd (%rcx),%xmm0
mov    (%rsi),%ebp
jae    1501 <odsq3_+0x3b1>
cmp    0x24(%rsp),%ebp
jge    1789 <odsq3_+0x639>
mov    (%rdi),%edx
lea    (%rax,%rdx,4),%r11d
movslq %r11d,%r10
movsd  -0x18(%r13,%r10,8),%xmm0
mulsd  0xaef(%rip),%xmm0
lea    (%rax,%rbp,4),%r15d
movslq %r15d,%r14
movsd  -0x18(%r13,%r14,8),%xmm1
ucomisd %xmm0,%xmm1
jbe    1789 <odsq3_+0x639>
lea    0x0(,%rdx,4),%r9d
lea    (%rdx,%rbp,1),%ecx
lea    (%rcx,%rcx,1),%esi
add    $0xfffffffe,%esi
cmp    %esi,%r9d
jg     15d2 <odsq3_+0x482>
shl    $0x2,%ecx
movslq %r9d,%rdi
movslq %ecx,%rcx
movslq %esi,%rsi
sub    %rdi,%rcx
mov    0x18(%rsp),%rbx
lea    (%rbx,%rcx,8),%rcx
add    $0xffffffffffffffe8,%rcx
movsd  -0x18(%r13,%rdi,8),%xmm0
movsd  -0x8(%rcx),%xmm1
movsd  %xmm1,-0x18(%r13,%rdi,8)
movsd  %xmm0,-0x8(%rcx)
movsd  -0x10(%r13,%rdi,8),%xmm0
movsd  (%rcx),%xmm1
movsd  %xmm1,-0x10(%r13,%rdi,8)
movsd  %xmm0,(%rcx)
movsd  -0x8(%r13,%rdi,8),%xmm0
movsd  -0x18(%rcx),%xmm1
movsd  %xmm1,-0x8(%r13,%rdi,8)
movsd  %xmm0,-0x18(%rcx)
movsd  0x0(%r13,%rdi,8),%xmm0
movsd  -0x10(%rcx),%xmm1
movsd  %xmm1,0x0(%r13,%rdi,8)
movsd  %xmm0,-0x10(%rcx)
add    $0x4,%rdi
add    $0xffffffffffffffe0,%rcx
cmp    %rsi,%rdi
jle    1567 <odsq3_+0x417>
lea    -0x3(%r10),%r8
lea    0x0(,%rbp,4),%esi
sub    %edx,%ebp
cmp    $0x5,%ebp
jge    1615 <odsq3_+0x4c5>
lea    -0x1(%r10),%rdx
movsd  -0x8(%r13,%r10,8),%xmm0
movsd  %xmm0,-0x8(%r13,%r14,8)
add    $0xffffffffffffffff,%r14
sub    %eax,%r9d
movslq %r9d,%rcx
movsd  0x0(%r13,%rcx,8),%xmm0
sub    %eax,%esi
movslq %esi,%rbp
movsd  %xmm0,0x0(%r13,%rbp,8)
jmp    162e <odsq3_+0x4de>
add    $0xffffffff,%r15d
movslq %r15d,%r14
add    $0xffffffff,%r11d
movslq %r11d,%rdx
sub    %eax,%esi
movslq %esi,%rbp
sub    %eax,%r9d
movslq %r9d,%rcx
mov    0xb8(%rsp),%rsi
mov    0xf0(%rsp),%rax
movsd  (%rax),%xmm0
movsd  0x0(%r13,%r14,8),%xmm1
movapd %xmm0,%xmm2
cmpunordsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm3
minsd  %xmm0,%xmm1
andnpd %xmm1,%xmm2
orpd   %xmm3,%xmm2
movlpd %xmm2,(%rax)
movsd  0x0(%r13,%r14,8),%xmm0
movsd  0x0(%r13,%rdx,8),%xmm1
movapd %xmm0,%xmm2
cmpunordsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm3
minsd  %xmm0,%xmm1
andnpd %xmm1,%xmm2
orpd   %xmm3,%xmm2
movsd  0x18(%r13,%r10,8),%xmm0
movapd %xmm0,%xmm1
minsd  %xmm2,%xmm1
cmpunordsd %xmm2,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm1,%xmm3
andpd  %xmm0,%xmm2
orpd   %xmm3,%xmm2
movlpd %xmm2,0x0(%r13,%r14,8)
movsd  0x0(%r13,%rbp,8),%xmm0
movsd  0x0(%r13,%rcx,8),%xmm1
movapd %xmm0,%xmm2
cmpunordsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm3
minsd  %xmm0,%xmm1
andnpd %xmm1,%xmm2
orpd   %xmm3,%xmm2
movslq %r9d,%rax
movsd  0x20(%r13,%rax,8),%xmm0
movapd %xmm0,%xmm1
minsd  %xmm2,%xmm1
cmpunordsd %xmm2,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm1,%xmm3
andpd  %xmm0,%xmm2
orpd   %xmm3,%xmm2
movlpd %xmm2,0x0(%r13,%rbp,8)
movsd  (%rsi),%xmm0
movsd  0x0(%r13,%r8,8),%xmm1
movapd %xmm0,%xmm2
cmpunordsd %xmm0,%xmm2
movapd %xmm2,%xmm3
andpd  %xmm1,%xmm3
maxsd  %xmm0,%xmm1
andnpd %xmm1,%xmm2
orpd   %xmm3,%xmm2
movsd  0x8(%r13,%r10,8),%xmm0
movapd %xmm0,%xmm1
maxsd  %xmm2,%xmm1
cmpunordsd %xmm2,%xmm2
movapd %xmm2,%xmm3
andnpd %xmm1,%xmm3
andpd  %xmm0,%xmm2
orpd   %xmm3,%xmm2
movlpd %xmm2,(%rsi)
movabs $0x8000000000000000,%rax
mov    0x48(%rsp),%rcx
mov    %rax,(%rcx)
mov    0x10(%rsp),%rdi
mov    0x8(%rsp),%rsi
mov    (%rsp),%r9
lea    0x64(%rsp),%r8
mov    0x18(%rsp),%rdx
mov    %r9,%rcx
mov    0x48(%rsp),%r14
mov    %r14,%r9
push   0x110(%rsp)
push   0xe8(%rsp)
mov    0x128(%rsp),%rbp
push   %rbp
push   0x120(%rsp)
push   0x120(%rsp)
push   0x120(%rsp)
push   0x120(%rsp)
push   0x120(%rsp)
call   1070 <odsq4_@plt>
mov    0x40(%rsp),%rbx
mov    0x48(%rsp),%rsi
mov    0x50(%rsp),%rdi
mov    %rbp,%rax
add    $0x40,%rsp
movsd  0x68(%rsp),%xmm1
addsd  %xmm1,%xmm1
movsd  0x40(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x40(%rsp)
mov    0xc8(%rsp),%rbp
jmp    1826 <odsq3_+0x6d6>
mov    0x118(%rsp),%rax
movq   $0x0,(%rax)
mov    0x18(%rsp),%rdx
mov    %rbx,%rcx
mov    %rax,%r8
mov    %r14,%r9
push   0xd8(%rsp)
push   0x110(%rsp)
push   0x110(%rsp)
push   0x110(%rsp)
push   0x110(%rsp)
mov    0x110(%rsp),%rbx
push   %rbx
call   1040 <odsq5_@plt>
mov    0x38(%rsp),%rsi
mov    0x40(%rsp),%rdi
add    $0x30,%rsp
mov    (%rsi),%eax
mov    0xd0(%rsp),%rdx
mov    (%rdx),%ecx
sub    (%rdi),%eax
add    %ecx,%eax
add    $0x2,%eax
mov    %eax,(%rdx)
addl   $0x1,0x0(%rbp)
movsd  (%r14),%xmm0
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm0
jb     18a9 <odsq3_+0x759>
movsd  (%rbx),%xmm1
ucomisd %xmm5,%xmm1
ja     1a5c <odsq3_+0x90c>
ucomisd %xmm0,%xmm5
jbe    1963 <odsq3_+0x813>
mov    0xe8(%rsp),%rax
movsd  (%rax),%xmm1
ucomisd %xmm5,%xmm1
mov    (%rsp),%rbx
jbe    19a1 <odsq3_+0x851>
mov    (%rsi),%eax
shl    $0x2,%eax
sub    (%rbx),%eax
add    $0xfffffffc,%eax
cltq
movsd  (%r12),%xmm2
mov    0x100(%rsp),%rcx
movsd  (%rcx),%xmm3
addsd  %xmm2,%xmm3
movsd  0x70(%rsp),%xmm4
mulsd  %xmm4,%xmm3
ucomisd 0x0(%r13,%rax,8),%xmm3
jbe    1924 <odsq3_+0x7d4>
mov    0xf8(%rsp),%rcx
movsd  (%rcx),%xmm3
andpd  0x71a(%rip),%xmm3
mulsd  %xmm4,%xmm2
ucomisd %xmm3,%xmm2
ja     1ad3 <odsq3_+0x983>
mov    0xc0(%rsp),%rax
addl   $0x1,(%rax)
mov    0xe0(%rsp),%rax
mov    (%rax),%eax
cmp    $0xffffffea,%eax
jl     1817 <odsq3_+0x6c7>
ucomisd %xmm5,%xmm1
jbe    19bf <odsq3_+0x86f>
mov    0x118(%rsp),%rcx
addsd  (%rcx),%xmm0
mulsd  0x40(%rsp),%xmm0
movsd  %xmm0,(%rcx)
add    $0xfffffff5,%eax
jmp    19da <odsq3_+0x88a>
mov    %r14,%rdi
call   1050 <odnan_@plt>
test   %eax,%eax
mov    0x118(%rsp),%rax
je     19ec <odsq3_+0x89c>
movsd  (%rax),%xmm0
ucomisd 0x6a5(%rip),%xmm0
jne    1987 <odsq3_+0x837>
jnp    19ec <odsq3_+0x89c>
movq   $0x0,(%rax)
mov    0x10(%rsp),%rdi
mov    0x8(%rsp),%rsi
mov    (%rsp),%rbx
jmp    1826 <odsq3_+0x6d6>
mov    0xc0(%rsp),%rax
addl   $0x1,(%rax)
mov    0xe0(%rsp),%rax
mov    (%rax),%eax
cmp    $0xffffffe9,%eax
jle    1817 <odsq3_+0x6c7>
mov    0x118(%rsp),%rcx
movsd  (%rcx),%xmm0
mulsd  0x645(%rip),%xmm0
movsd  %xmm0,(%rcx)
add    $0xfffffff4,%eax
mov    0xe0(%rsp),%rdx
mov    %eax,(%rdx)
mov    %rcx,%rax
jmp    1826 <odsq3_+0x6d6>
mov    %r14,%r8
mov    %rbp,%r15
mov    0x10(%rsp),%rbp
mov    %rbp,%rdi
mov    0x8(%rsp),%rbx
mov    %rbx,%rsi
mov    0x18(%rsp),%rdx
mov    (%rsp),%rcx
mov    0xe8(%rsp),%r9
push   0x108(%rsp)
push   0x108(%rsp)
push   0x108(%rsp)
push   0x108(%rsp)
mov    %rax,%r14
call   1030 <odsq6_@plt>
add    $0x20,%rsp
mov    (%rbx),%eax
mov    0xd0(%rsp),%rdx
mov    (%rdx),%ecx
sub    0x0(%rbp),%eax
add    %ecx,%eax
add    $0x2,%eax
mov    %eax,(%rdx)
addl   $0x1,(%r15)
movq   $0x0,(%r14)
mov    0x118(%rsp),%rax
movsd  (%rax),%xmm0
movsd  (%r12),%xmm2
ucomisd %xmm0,%xmm2
jbe    1aa0 <odsq3_+0x950>
mov    0xb0(%rsp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
movsd  (%r12),%xmm2
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm3
subsd  %xmm2,%xmm3
subsd  %xmm3,%xmm0
jmp    1ac4 <odsq3_+0x974>
movapd %xmm0,%xmm1
addsd  %xmm2,%xmm1
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
subsd  %xmm3,%xmm2
mov    0xb0(%rsp),%rax
addsd  (%rax),%xmm2
movapd %xmm2,%xmm0
movsd  %xmm0,(%rax)
movsd  %xmm1,(%r12)
jmp    1178 <odsq3_+0x28>
movq   $0x0,0x10(%r13,%rax,8)
jmp    1a55 <odsq3_+0x905>

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

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