#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_MIN;
double fmin(double, double);
int odsq6_(int *i0, int *n0, double *z__, int *pp, double *dmin__,
           double *dmin1, double *dmin2, double *dn, double *dnm1,
           double *dnm2) {
  int i__1;
  double d__1, d__2;
  double d__;
  int j4, j4p2;
  double emin, temp;
  double safmin;
  --z__;
  if (*n0 - *i0 - 1 <= 0) {
    return 0;
  }
  safmin = DBL_MIN;
  j4 = (*i0 << 2) + *pp - 3;
  emin = z__[j4 + 4];
  d__ = z__[j4];
  *dmin__ = d__;
  if (*pp == 0) {
    i__1 = *n0 - 3 << 2;
    for (j4 = *i0 << 2; j4 <= i__1; j4 += 4) {
      z__[j4 - 2] = d__ + z__[j4 - 1];
      if (z__[j4 - 2] == 0.) {
        z__[j4] = 0.;
        d__ = z__[j4 + 1];
        *dmin__ = d__;
        emin = 0.;
      } else if (safmin * z__[j4 + 1] < z__[j4 - 2] &&
                 safmin * z__[j4 - 2] < z__[j4 + 1]) {
        temp = z__[j4 + 1] / z__[j4 - 2];
        z__[j4] = z__[j4 - 1] * temp;
        d__ *= temp;
      } else {
        z__[j4] = z__[j4 + 1] * (z__[j4 - 1] / z__[j4 - 2]);
        d__ = z__[j4 + 1] * (d__ / z__[j4 - 2]);
      }
      *dmin__ = fmin(*dmin__, d__);
      d__1 = emin, d__2 = z__[j4];
      emin = fmin(d__1, d__2);
    }
  } else {
    i__1 = *n0 - 3 << 2;
    for (j4 = *i0 << 2; j4 <= i__1; j4 += 4) {
      z__[j4 - 3] = d__ + z__[j4];
      if (z__[j4 - 3] == 0.) {
        z__[j4 - 1] = 0.;
        d__ = z__[j4 + 2];
        *dmin__ = d__;
        emin = 0.;
      } else if (safmin * z__[j4 + 2] < z__[j4 - 3] &&
                 safmin * z__[j4 - 3] < z__[j4 + 2]) {
        temp = z__[j4 + 2] / z__[j4 - 3];
        z__[j4 - 1] = z__[j4] * temp;
        d__ *= temp;
      } else {
        z__[j4 - 1] = z__[j4 + 2] * (z__[j4] / z__[j4 - 3]);
        d__ = z__[j4 + 2] * (d__ / z__[j4 - 3]);
      }
      *dmin__ = fmin(*dmin__, d__);
      d__1 = emin, d__2 = z__[j4 - 1];
      emin = fmin(d__1, d__2);
    }
  }
  *dnm2 = d__;
  *dmin2 = *dmin__;
  j4 = (*n0 - 2 << 2) - *pp;
  j4p2 = j4 + (*pp << 1) - 1;
  z__[j4 - 2] = *dnm2 + z__[j4p2];
  if (z__[j4 - 2] == 0.) {
    z__[j4] = 0.;
    *dnm1 = z__[j4p2 + 2];
    *dmin__ = *dnm1;
    emin = 0.;
  } else if (safmin * z__[j4p2 + 2] < z__[j4 - 2] &&
             safmin * z__[j4 - 2] < z__[j4p2 + 2]) {
    temp = z__[j4p2 + 2] / z__[j4 - 2];
    z__[j4] = z__[j4p2] * temp;
    *dnm1 = *dnm2 * temp;
  } else {
    z__[j4] = z__[j4p2 + 2] * (z__[j4p2] / z__[j4 - 2]);
    *dnm1 = z__[j4p2 + 2] * (*dnm2 / z__[j4 - 2]);
  }
  *dmin__ = fmin(*dmin__, *dnm1);
  *dmin1 = *dmin__;
  j4 += 4;
  j4p2 = j4 + (*pp << 1) - 1;
  z__[j4 - 2] = *dnm1 + z__[j4p2];
  if (z__[j4 - 2] == 0.) {
    z__[j4] = 0.;
    *dn = z__[j4p2 + 2];
    *dmin__ = *dn;
    emin = 0.;
  } else if (safmin * z__[j4p2 + 2] < z__[j4 - 2] &&
             safmin * z__[j4 - 2] < z__[j4p2 + 2]) {
    temp = z__[j4p2 + 2] / z__[j4 - 2];
    z__[j4] = z__[j4p2] * temp;
    *dn = *dnm1 * temp;
  } else {
    z__[j4] = z__[j4p2 + 2] * (z__[j4p2] / z__[j4 - 2]);
    *dn = z__[j4p2 + 2] * (*dnm1 / z__[j4 - 2]);
  }
  *dmin__ = fmin(*dmin__, *dn);
  z__[j4 + 2] = *dn;
  z__[(*n0 << 2) - *pp] = emin;
  return 0;
}


x86 assembly (clang, -O0):
<odsq6_>:
push   %rbp
mov    %rsp,%rbp
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9,-0x38(%rbp)
mov    -0x20(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
sub    (%rcx),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jg     115c <odsq6_+0x5c>
movl   $0x0,-0x4(%rbp)
jmp    1bb1 <odsq6_+0xab1>
mov    0x2e7d(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    -0x28(%rbp),%rcx
add    (%rcx),%eax
sub    $0x3,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
cmpl   $0x0,(%rax)
jne    144e <odsq6_+0x34e>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
sub    $0x3,%eax
shl    $0x2,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jg     1449 <odsq6_+0x349>
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    127a <odsq6_+0x17a>
jp     127a <odsq6_+0x17a>
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    13bf <odsq6_+0x2bf>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1341 <odsq6_+0x241>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1341 <odsq6_+0x241>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    13ba <odsq6_+0x2ba>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x58(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    13bf <odsq6_+0x2bf>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm3
movsd  -0x58(%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    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
minsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x5c(%rbp)
jmp    11df <odsq6_+0xdf>
jmp    16dd <odsq6_+0x5dd>
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
sub    $0x3,%eax
shl    $0x2,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%eax
shl    $0x2,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x3c(%rbp),%eax
jg     16d8 <odsq6_+0x5d8>
movsd  -0x58(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1504 <odsq6_+0x404>
jp     1504 <odsq6_+0x404>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1649 <odsq6_+0x549>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    15cb <odsq6_+0x4cb>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    15cb <odsq6_+0x4cb>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1644 <odsq6_+0x544>
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x58(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1649 <odsq6_+0x549>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm3
movsd  -0x58(%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    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm3
movsd  -0x50(%rbp),%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
minsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x5c(%rbp)
jmp    1469 <odsq6_+0x369>
jmp    16dd <odsq6_+0x5dd>
movsd  -0x58(%rbp),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x18(%rbp),%rax
mov    (%rax),%eax
sub    $0x2,%eax
shl    $0x2,%eax
mov    -0x28(%rbp),%rcx
sub    (%rcx),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x60(%rbp)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    17b6 <odsq6_+0x6b6>
jp     17b6 <odsq6_+0x6b6>
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    18fd <odsq6_+0x7fd>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    187e <odsq6_+0x77e>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    187e <odsq6_+0x77e>
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    18f8 <odsq6_+0x7f8>
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    18fd <odsq6_+0x7fd>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm3
mov    0x20(%rbp),%rax
movsd  (%rax),%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    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x38(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x5c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
mov    -0x28(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x1,%ecx
add    %ecx,%eax
sub    $0x1,%eax
mov    %eax,-0x60(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    19f3 <odsq6_+0x8f3>
jp     19f3 <odsq6_+0x8f3>
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1b3a <odsq6_+0xa3a>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1abb <odsq6_+0x9bb>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mulsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jbe    1abb <odsq6_+0x9bb>
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x70(%rbp),%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b35 <odsq6_+0xa35>
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x5c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
divsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm1,%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b3a <odsq6_+0xa3a>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm3
mov    0x18(%rbp),%rax
movsd  (%rax),%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    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x5c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x18(%rbp),%rcx
mov    (%rcx),%ecx
shl    $0x2,%ecx
mov    -0x28(%rbp),%rdx
sub    (%rdx),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<odsq6_>:
push   %r15
push   %r14
push   %rbx
mov    (%rsi),%eax
mov    (%rdi),%esi
mov    %esi,%edi
not    %edi
add    %eax,%edi
test   %edi,%edi
jle    157d <odsq6_+0x47d>
mov    0x38(%rsp),%r10
mov    0x20(%rsp),%r11
mov    0x2eb8(%rip),%rdi
movsd  (%rdi),%xmm0
mov    (%rcx),%ecx
mov    %esi,%edi
shl    $0x2,%esi
lea    (%rcx,%rdi,4),%edi
movslq %edi,%rdi
movsd  -0x20(%rdx,%rdi,8),%xmm1
movsd  (%rdx,%rdi,8),%xmm3
movsd  %xmm1,(%r8)
lea    0x0(,%rax,4),%r15d
lea    -0xc(,%rax,4),%eax
test   %ecx,%ecx
je     127c <odsq6_+0x17c>
cmp    %eax,%esi
jg     1284 <odsq6_+0x184>
movslq %esi,%rsi
movslq %eax,%rdi
lea    -0x1(%rsi),%rbx
xorpd  %xmm4,%xmm4
jmp    1202 <odsq6_+0x102>
nopl   0x0(%rax,%rax,1)
lea    -0x1(%rsi),%rax
movq   $0x0,-0x8(%rdx,%rbx,8)
movsd  0x10(%rdx,%rbx,8),%xmm1
movsd  %xmm1,(%r8)
xorpd  %xmm3,%xmm3
movsd  (%r8),%xmm2
movapd %xmm1,%xmm5
minsd  %xmm2,%xmm5
cmpunordsd %xmm2,%xmm2
movapd %xmm2,%xmm6
andpd  %xmm1,%xmm6
andnpd %xmm5,%xmm2
orpd   %xmm6,%xmm2
movlpd %xmm2,(%r8)
movsd  -0x8(%rdx,%rax,8),%xmm5
movapd %xmm3,%xmm2
cmpunordsd %xmm3,%xmm2
movapd %xmm2,%xmm6
andpd  %xmm5,%xmm6
minsd  %xmm3,%xmm5
andnpd %xmm5,%xmm2
orpd   %xmm6,%xmm2
add    $0x4,%rsi
lea    0x4(%rbx),%rax
add    $0x5,%rbx
movapd %xmm2,%xmm3
cmp    %rdi,%rbx
mov    %rax,%rbx
jg     1288 <odsq6_+0x188>
movsd  (%rdx,%rbx,8),%xmm2
movapd %xmm1,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,-0x18(%rdx,%rbx,8)
ucomisd %xmm4,%xmm5
jne    1221 <odsq6_+0x121>
jnp    1180 <odsq6_+0x80>
movsd  0x10(%rdx,%rbx,8),%xmm6
movapd %xmm0,%xmm7
mulsd  %xmm5,%xmm7
ucomisd %xmm7,%xmm6
jbe    125e <odsq6_+0x15e>
movapd %xmm0,%xmm7
mulsd  %xmm6,%xmm7
ucomisd %xmm7,%xmm5
jbe    125e <odsq6_+0x15e>
divsd  %xmm5,%xmm6
mulsd  %xmm6,%xmm2
lea    -0x1(%rsi),%rax
movsd  %xmm2,-0x8(%rdx,%rbx,8)
mulsd  %xmm6,%xmm1
jmp    119c <odsq6_+0x9c>
divsd  %xmm5,%xmm2
mulsd  %xmm6,%xmm2
movsd  %xmm2,-0x8(%rdx,%rbx,8)
divsd  %xmm5,%xmm1
mulsd  %xmm6,%xmm1
mov    %rbx,%rax
jmp    119c <odsq6_+0x9c>
cmp    %eax,%esi
jle    1342 <odsq6_+0x242>
movapd %xmm3,%xmm2
mov    0x30(%rsp),%r14
movsd  %xmm1,(%r10)
movsd  (%r8),%xmm1
movsd  %xmm1,(%r11)
sub    %ecx,%r15d
lea    -0x8(%r15),%eax
mov    %ecx,%esi
add    %ecx,%ecx
lea    (%r15,%rsi,2),%esi
add    $0xfffffff8,%esi
movslq %esi,%rsi
movsd  (%r10),%xmm3
addsd  -0x10(%rdx,%rsi,8),%xmm3
movslq %eax,%rdi
movsd  %xmm3,-0x18(%rdx,%rdi,8)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm3
jne    12f7 <odsq6_+0x1f7>
jp     12f7 <odsq6_+0x1f7>
movq   $0x0,-0x8(%rdx,%rdi,8)
movsd  (%rdx,%rsi,8),%xmm1
movsd  %xmm1,(%r14)
movsd  %xmm1,(%r8)
movsd  (%r14),%xmm1
xorpd  %xmm2,%xmm2
jmp    145a <odsq6_+0x35a>
lea    -0x1(%rsi),%rax
movsd  (%rdx,%rsi,8),%xmm1
movapd %xmm0,%xmm4
mulsd  %xmm3,%xmm4
ucomisd %xmm4,%xmm1
jbe    142e <odsq6_+0x32e>
movapd %xmm0,%xmm4
mulsd  %xmm1,%xmm4
ucomisd %xmm4,%xmm3
jbe    142e <odsq6_+0x32e>
divsd  %xmm3,%xmm1
movsd  -0x8(%rdx,%rax,8),%xmm3
mulsd  %xmm1,%xmm3
movsd  %xmm3,-0x8(%rdx,%rdi,8)
mulsd  (%r10),%xmm1
jmp    1455 <odsq6_+0x355>
movslq %esi,%rsi
movslq %eax,%rdi
xorpd  %xmm4,%xmm4
jmp    13c2 <odsq6_+0x2c2>
xchg   %ax,%ax
movq   $0x0,-0x8(%rdx,%rsi,8)
movsd  (%rdx,%rsi,8),%xmm1
movsd  %xmm1,(%r8)
xorpd  %xmm3,%xmm3
movsd  (%r8),%xmm2
movapd %xmm1,%xmm5
minsd  %xmm2,%xmm5
cmpunordsd %xmm2,%xmm2
movapd %xmm2,%xmm6
andpd  %xmm1,%xmm6
andnpd %xmm5,%xmm2
orpd   %xmm6,%xmm2
movlpd %xmm2,(%r8)
movsd  -0x8(%rdx,%rsi,8),%xmm5
movapd %xmm3,%xmm2
cmpunordsd %xmm3,%xmm2
movapd %xmm2,%xmm6
andpd  %xmm5,%xmm6
minsd  %xmm3,%xmm5
andnpd %xmm5,%xmm2
orpd   %xmm6,%xmm2
add    $0x4,%rsi
movapd %xmm2,%xmm3
cmp    %rdi,%rsi
jg     1288 <odsq6_+0x188>
movsd  -0x10(%rdx,%rsi,8),%xmm2
movapd %xmm1,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,-0x18(%rdx,%rsi,8)
ucomisd %xmm4,%xmm5
jne    13e2 <odsq6_+0x2e2>
jnp    1350 <odsq6_+0x250>
movsd  (%rdx,%rsi,8),%xmm6
movapd %xmm0,%xmm7
mulsd  %xmm5,%xmm7
ucomisd %xmm7,%xmm6
jbe    1413 <odsq6_+0x313>
movapd %xmm0,%xmm7
mulsd  %xmm6,%xmm7
ucomisd %xmm7,%xmm5
jbe    1413 <odsq6_+0x313>
divsd  %xmm5,%xmm6
mulsd  %xmm6,%xmm2
movsd  %xmm2,-0x8(%rdx,%rsi,8)
jmp    1425 <odsq6_+0x325>
divsd  %xmm5,%xmm2
mulsd  %xmm6,%xmm2
movsd  %xmm2,-0x8(%rdx,%rsi,8)
divsd  %xmm5,%xmm1
mulsd  %xmm6,%xmm1
jmp    1367 <odsq6_+0x267>
add    $0x1,%rsi
movsd  -0x8(%rdx,%rax,8),%xmm4
divsd  %xmm3,%xmm4
mulsd  %xmm4,%xmm1
movsd  %xmm1,-0x8(%rdx,%rdi,8)
movsd  (%r10),%xmm1
divsd  %xmm3,%xmm1
mulsd  -0x8(%rdx,%rsi,8),%xmm1
movsd  %xmm1,(%r14)
mov    0x28(%rsp),%rbx
movsd  (%r8),%xmm3
movapd %xmm3,%xmm4
cmpunordsd %xmm3,%xmm4
movapd %xmm4,%xmm5
andpd  %xmm1,%xmm5
minsd  %xmm3,%xmm1
andnpd %xmm1,%xmm4
orpd   %xmm5,%xmm4
movlpd %xmm4,(%r8)
movlpd %xmm4,(%r9)
lea    0x4(%rdi),%esi
lea    0x4(%rdi,%rcx,1),%eax
movslq %eax,%rcx
movsd  (%r14),%xmm3
addsd  -0x10(%rdx,%rcx,8),%xmm3
movsd  %xmm3,0x8(%rdx,%rdi,8)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm3
jne    14d6 <odsq6_+0x3d6>
jp     14d6 <odsq6_+0x3d6>
movslq %esi,%rax
movq   $0x0,-0x8(%rdx,%rax,8)
movsd  (%rdx,%rcx,8),%xmm0
movsd  %xmm0,(%rbx)
movsd  %xmm0,(%r8)
movsd  (%rbx),%xmm1
xorpd  %xmm2,%xmm2
jmp    1543 <odsq6_+0x443>
lea    -0x1(%rcx),%rax
movsd  (%rdx,%rcx,8),%xmm1
movapd %xmm0,%xmm4
mulsd  %xmm3,%xmm4
ucomisd %xmm4,%xmm1
jbe    1515 <odsq6_+0x415>
mulsd  %xmm1,%xmm0
ucomisd %xmm0,%xmm3
jbe    1515 <odsq6_+0x415>
divsd  %xmm3,%xmm1
movsd  -0x8(%rdx,%rax,8),%xmm0
mulsd  %xmm1,%xmm0
movslq %esi,%rax
movsd  %xmm0,-0x8(%rdx,%rax,8)
mulsd  (%r14),%xmm1
jmp    153f <odsq6_+0x43f>
add    $0x1,%rcx
movsd  -0x8(%rdx,%rax,8),%xmm0
divsd  %xmm3,%xmm0
mulsd  %xmm0,%xmm1
movslq %esi,%rax
movsd  %xmm1,-0x8(%rdx,%rax,8)
movsd  (%r14),%xmm1
divsd  %xmm3,%xmm1
mulsd  -0x8(%rdx,%rcx,8),%xmm1
movsd  %xmm1,(%rbx)
movsd  (%r8),%xmm0
movapd %xmm0,%xmm3
cmpunordsd %xmm0,%xmm3
movapd %xmm3,%xmm4
andpd  %xmm1,%xmm4
minsd  %xmm0,%xmm1
andnpd %xmm1,%xmm3
orpd   %xmm4,%xmm3
movlpd %xmm3,(%r8)
movsd  (%rbx),%xmm0
movsd  %xmm0,0x28(%rdx,%rdi,8)
movslq %r15d,%rax
movsd  %xmm2,-0x8(%rdx,%rax,8)
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
ret

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

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