#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 fabs(double);
int /*<<< orphan*/ free(double *);
scalar_t__ malloc(int);
void neiEK(double **x, int i, int comp1, int comp2, int dim, int K, int bs,
           double epsgrid, double *eps, int **box, int *lis, int *nx) {
  int ix, iy, ix1, iy1, ix2, jj, step, d, ik;
  int el, ib = bs - 1;
  double dd, dy;
  double *xx;
  xx = (double *)malloc(dim * sizeof(double));
  for (d = 0; d < dim; d++)
    xx[d] = x[d][i];
  ix = (int)(xx[comp1] / epsgrid) & ib;
  iy = (int)(xx[comp2] / epsgrid) & ib;
  jj = 0;
  for (ik = 0; ik < K; ik++)
    nx[ik] = 0;
  while (eps[K - 1] > epsgrid * (jj - 1)) {
    step = (jj) ? 2 * jj : 1;
    for (ix1 = ix - jj; ix1 <= ix + jj; ix1++) {
      ix2 = ix1 & ib;
      for (iy1 = iy - jj; iy1 <= iy + jj; iy1 += step) {
        el = box[ix2][iy1 & ib];
        while (el != -1) {
          dd = fabs(xx[0] - x[0][el]);
          for (d = 1; d < dim; d++)
            if ((dy = fabs(xx[d] - x[d][el])) > dd)
              if ((dd = dy) > eps[K - 1])
                break;
          ;
          for (ik = 0; ik < K; ik++) {
            if (dd <= eps[ik])
              nx[ik]++;
          }
          el = lis[el];
        }
      }
    }
    for (ix1 = ix - jj; ix1 <= ix + jj; ix1 += step) {
      ix2 = ix1 & ib;
      for (iy1 = iy - jj + 1; iy1 <= iy + jj - 1; iy1++) {
        el = box[ix2][iy1 & ib];
        while (el != -1) {
          dd = fabs(xx[0] - x[0][el]);
          for (d = 1; d < dim; d++)
            if ((dy = fabs(xx[d] - x[d][el])) > dd)
              if ((dd = dy) > eps[K - 1])
                break;
          for (ik = 0; ik < K; ik++) {
            if (dd <= eps[ik])
              nx[ik]++;
          }
          el = lis[el];
        }
      }
    }
    jj++;
    if (jj == (bs / 2))
      break;
  }
  if (jj == (bs / 2)) {
    for (ix1 = ix - jj; ix1 < ix + jj; ix1++) {
      ix2 = ix1 & ib;
      iy1 = iy - jj;
      el = box[ix2][iy1 & ib];
      while (el != -1) {
        dd = fabs(xx[0] - x[0][el]);
        for (d = 1; d < dim; d++)
          if ((dy = fabs(xx[d] - x[d][el])) > dd)
            if ((dd = dy) > eps[K - 1])
              break;
        for (ik = 0; ik < K; ik++) {
          if (dd <= eps[ik])
            nx[ik]++;
        }
        el = lis[el];
      }
    }
    ix1 = ix - jj;
    ix2 = ix1 & ib;
    for (iy1 = iy - jj + 1; iy1 <= iy + jj - 1; iy1++) {
      el = box[ix2][iy1 & ib];
      while (el != -1) {
        dd = fabs(xx[0] - x[0][el]);
        for (d = 1; d < dim; d++)
          if ((dy = fabs(xx[d] - x[d][el])) > dd)
            if ((dd = dy) > eps[K - 1])
              break;
        for (ik = 0; ik < K; ik++) {
          if (dd <= eps[ik])
            nx[ik]++;
        }
        el = lis[el];
      }
    }
  }
  free(xx);
  for (ik = 0; ik < K; ik++)
    nx[ik] -= 1;
}


x86 assembly (clang, -O0):
<neiEK>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9d,-0x1c(%rbp)
movsd  %xmm0,-0x28(%rbp)
mov    0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x54(%rbp)
movslq -0x18(%rbp),%rax
shl    $0x3,%rax
mov    %eax,%edi
call   1040 <malloc@plt>
mov    %rax,-0x70(%rbp)
movl   $0x0,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    11b7 <neiEK+0x97>
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0xc(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x70(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    117b <neiEK+0x5b>
mov    -0x70(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x70(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x28(%rbp),%xmm0
cvttsd2si %xmm0,%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x30(%rbp)
movl   $0x0,-0x40(%rbp)
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1226 <neiEK+0x106>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    11fd <neiEK+0xdd>
jmp    122b <neiEK+0x10b>
mov    0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x28(%rbp),%xmm1
mov    -0x40(%rbp),%eax
sub    $0x1,%eax
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
jbe    1606 <neiEK+0x4e6>
cmpl   $0x0,-0x40(%rbp)
je     1272 <neiEK+0x152>
mov    -0x40(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    127f <neiEK+0x15f>
mov    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    127f <neiEK+0x15f>
mov    -0x74(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jg     142a <neiEK+0x30a>
mov    -0x34(%rbp),%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jg     1417 <neiEK+0x2f7>
mov    0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%ecx
and    -0x54(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
cmpl   $0xffffffff,-0x50(%rbp)
je     1404 <neiEK+0x2e4>
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xcfa(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    139e <neiEK+0x27e>
mov    -0x70(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xcb5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
ucomisd -0x60(%rbp),%xmm0
jbe    138b <neiEK+0x26b>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1386 <neiEK+0x266>
jmp    139e <neiEK+0x27e>
jmp    138b <neiEK+0x26b>
jmp    1390 <neiEK+0x270>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1316 <neiEK+0x1f6>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    13f1 <neiEK+0x2d1>
movsd  -0x60(%rbp),%xmm1
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jb     13de <neiEK+0x2be>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    13e3 <neiEK+0x2c3>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    13a5 <neiEK+0x285>
mov    0x28(%rbp),%rax
movslq -0x50(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
jmp    12dd <neiEK+0x1bd>
jmp    1409 <neiEK+0x2e9>
mov    -0x44(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
jmp    12b1 <neiEK+0x191>
jmp    141c <neiEK+0x2fc>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    128e <neiEK+0x16e>
mov    -0x2c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jg     15d5 <neiEK+0x4b5>
mov    -0x34(%rbp),%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    -0x40(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     15c2 <neiEK+0x4a2>
mov    0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%ecx
and    -0x54(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
cmpl   $0xffffffff,-0x50(%rbp)
je     15af <neiEK+0x48f>
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xb4f(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    1549 <neiEK+0x429>
mov    -0x70(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0xb0a(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
ucomisd -0x60(%rbp),%xmm0
jbe    1536 <neiEK+0x416>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1531 <neiEK+0x411>
jmp    1549 <neiEK+0x429>
jmp    1536 <neiEK+0x416>
jmp    153b <neiEK+0x41b>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    14c1 <neiEK+0x3a1>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    159c <neiEK+0x47c>
movsd  -0x60(%rbp),%xmm1
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jb     1589 <neiEK+0x469>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    158e <neiEK+0x46e>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1550 <neiEK+0x430>
mov    0x28(%rbp),%rax
movslq -0x50(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
jmp    1488 <neiEK+0x368>
jmp    15b4 <neiEK+0x494>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1459 <neiEK+0x339>
jmp    15c7 <neiEK+0x4a7>
mov    -0x44(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    1433 <neiEK+0x313>
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x78(%rbp),%eax
cmp    %ecx,%eax
jne    1601 <neiEK+0x4e1>
jmp    1606 <neiEK+0x4e6>
jmp    122b <neiEK+0x10b>
mov    -0x40(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    0x10(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,%ecx
mov    -0x7c(%rbp),%eax
cmp    %ecx,%eax
jne    1931 <neiEK+0x811>
mov    -0x2c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x2c(%rbp),%ecx
add    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jge    17a5 <neiEK+0x685>
mov    -0x34(%rbp),%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%ecx
and    -0x54(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
cmpl   $0xffffffff,-0x50(%rbp)
je     1792 <neiEK+0x672>
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0x96c(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    172c <neiEK+0x60c>
mov    -0x70(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0x927(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
ucomisd -0x60(%rbp),%xmm0
jbe    1719 <neiEK+0x5f9>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    1714 <neiEK+0x5f4>
jmp    172c <neiEK+0x60c>
jmp    1719 <neiEK+0x5f9>
jmp    171e <neiEK+0x5fe>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    16a4 <neiEK+0x584>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    177f <neiEK+0x65f>
movsd  -0x60(%rbp),%xmm1
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jb     176c <neiEK+0x64c>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    1771 <neiEK+0x651>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1733 <neiEK+0x613>
mov    0x28(%rbp),%rax
movslq -0x50(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
jmp    166b <neiEK+0x54b>
jmp    1797 <neiEK+0x677>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    162d <neiEK+0x50d>
mov    -0x2c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
and    -0x54(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x30(%rbp),%ecx
add    -0x40(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jg     192c <neiEK+0x80c>
mov    0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x38(%rbp),%ecx
and    -0x54(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
cmpl   $0xffffffff,-0x50(%rbp)
je     1919 <neiEK+0x7f9>
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
mov    (%rax),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0x7e5(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    18b3 <neiEK+0x793>
mov    -0x70(%rbp),%rax
movslq -0x48(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x48(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x50(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movaps 0x7a0(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
ucomisd -0x60(%rbp),%xmm0
jbe    18a0 <neiEK+0x780>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
ucomisd (%rax,%rcx,8),%xmm0
jbe    189b <neiEK+0x77b>
jmp    18b3 <neiEK+0x793>
jmp    18a0 <neiEK+0x780>
jmp    18a5 <neiEK+0x785>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    182b <neiEK+0x70b>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1906 <neiEK+0x7e6>
movsd  -0x60(%rbp),%xmm1
mov    0x18(%rbp),%rax
movslq -0x4c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd %xmm1,%xmm0
jb     18f3 <neiEK+0x7d3>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
add    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
jmp    18f8 <neiEK+0x7d8>
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    18ba <neiEK+0x79a>
mov    0x28(%rbp),%rax
movslq -0x50(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x50(%rbp)
jmp    17f2 <neiEK+0x6d2>
jmp    191e <neiEK+0x7fe>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    17c3 <neiEK+0x6a3>
jmp    1931 <neiEK+0x811>
mov    -0x70(%rbp),%rdi
call   1030 <free@plt>
movl   $0x0,-0x4c(%rbp)
mov    -0x4c(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    196c <neiEK+0x84c>
mov    0x30(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
sub    $0x1,%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
jmp    1941 <neiEK+0x821>
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<neiEK>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
movsd  %xmm0,0x20(%rsp)
mov    %r9d,0x10(%rsp)
mov    %r8d,%r15d
mov    %ecx,%r14d
mov    %edx,0x28(%rsp)
mov    %esi,%r12d
mov    %rdi,%rbp
mov    0xb0(%rsp),%eax
add    $0xffffffff,%eax
mov    %eax,0xc(%rsp)
lea    0x0(,%r15,8),%edi
call   1050 <malloc@plt>
mov    %rax,%rbx
mov    %r15d,%r13d
test   %r15d,%r15d
jle    1227 <neiEK+0xf7>
movslq %r12d,%rax
lea    -0x1(%r13),%rdx
mov    %r13d,%r8d
and    $0x3,%r8d
cmp    $0x3,%rdx
jae    119b <neiEK+0x6b>
xor    %edx,%edx
jmp    11f8 <neiEK+0xc8>
mov    %r13d,%esi
and    $0xfffffffc,%esi
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x0(%rbp,%rdx,8),%rdi
movsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,(%rbx,%rdx,8)
mov    0x8(%rbp,%rdx,8),%rdi
movsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,0x8(%rbx,%rdx,8)
mov    0x10(%rbp,%rdx,8),%rdi
movsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,0x10(%rbx,%rdx,8)
mov    0x18(%rbp,%rdx,8),%rdi
movsd  (%rdi,%rax,8),%xmm0
movsd  %xmm0,0x18(%rbx,%rdx,8)
add    $0x4,%rdx
cmp    %rdx,%rsi
jne    11b0 <neiEK+0x80>
test   %r8,%r8
je     1227 <neiEK+0xf7>
lea    (%rbx,%rdx,8),%rsi
lea    0x0(,%rdx,8),%rdx
add    %rbp,%rdx
xor    %edi,%edi
xchg   %ax,%ax
mov    (%rdx,%rdi,8),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,(%rsi,%rdi,8)
add    $0x1,%rdi
cmp    %rdi,%r8
jne    1210 <neiEK+0xe0>
mov    0xd0(%rsp),%r12
movslq 0x28(%rsp),%rax
movsd  (%rbx,%rax,8),%xmm0
movsd  0x20(%rsp),%xmm5
divsd  %xmm5,%xmm0
cvttsd2si %xmm0,%eax
mov    %rax,0x30(%rsp)
movslq %r14d,%rax
movsd  (%rbx,%rax,8),%xmm0
divsd  %xmm5,%xmm0
cvttsd2si %xmm0,%eax
mov    0xb8(%rsp),%r14
and    0xc(%rsp),%eax
mov    %rax,0x18(%rsp)
mov    0x10(%rsp),%eax
mov    %eax,%ecx
test   %eax,%eax
mov    %rcx,0x28(%rsp)
jle    129d <neiEK+0x16d>
lea    0x0(,%rcx,4),%rdx
mov    %r12,%rdi
xor    %esi,%esi
call   1040 <memset@plt>
movsd  0x20(%rsp),%xmm5
mov    0x28(%rsp),%rcx
mov    0x10(%rsp),%eax
mov    0xc8(%rsp),%r11
mov    0x30(%rsp),%rsi
and    0xc(%rsp),%esi
cltq
movsd  -0x8(%r14,%rax,8),%xmm0
mov    0x18(%rsp),%rax
add    $0xffffffff,%eax
mov    0xb0(%rsp),%edi
mov    %edi,%edx
shr    $0x1f,%edx
add    %edi,%edx
sar    %edx
mov    %rdx,0x58(%rsp)
lea    -0x1(%rcx),%rdx
and    $0xfffffffe,%ecx
xor    %edi,%edi
movapd 0xd1b(%rip),%xmm1
mov    %rax,0x50(%rsp)
mov    %eax,0x48(%rsp)
mov    %rsi,0x30(%rsp)
mov    %esi,%eax
mov    %esi,0x40(%rsp)
jmp    131c <neiEK+0x1ec>
nopl   0x0(%rax,%rax,1)
addl   $0x1,0x40(%rsp)
mov    0x60(%rsp),%rdi
add    $0x1,%edi
addl   $0x1,0x48(%rsp)
cmp    0x58(%rsp),%edi
je     1639 <neiEK+0x509>
lea    -0x1(%rdi),%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
mulsd  %xmm5,%xmm2
ucomisd %xmm2,%xmm0
jbe    162f <neiEK+0x4ff>
lea    (%rdi,%rdi,1),%esi
test   %edi,%edi
mov    $0x1,%eax
cmove  %eax,%esi
mov    %esi,0x4c(%rsp)
mov    0x30(%rsp),%rax
mov    %eax,%esi
sub    %edi,%esi
mov    %rdi,0x60(%rsp)
add    %edi,%eax
mov    %esi,0x14(%rsp)
mov    %eax,0x3c(%rsp)
cmp    %eax,%esi
jg     1300 <neiEK+0x1d0>
mov    0x18(%rsp),%rax
mov    %eax,%edi
mov    0x60(%rsp),%rsi
sub    %esi,%edi
mov    %edi,0x44(%rsp)
add    %esi,%eax
mov    %eax,0x20(%rsp)
mov    0x14(%rsp),%eax
mov    %rax,0x68(%rsp)
jmp    13a7 <neiEK+0x277>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x68(%rsp),%rsi
lea    0x1(%rsi),%eax
cmp    0x40(%rsp),%esi
mov    %rax,0x68(%rsp)
je     14d0 <neiEK+0x3a0>
mov    0x20(%rsp),%eax
cmp    %eax,0x44(%rsp)
jg     1390 <neiEK+0x260>
mov    0x68(%rsp),%rax
and    0xc(%rsp),%eax
cltq
mov    0xc0(%rsp),%rsi
mov    (%rsi,%rax,8),%rax
mov    %rax,0x70(%rsp)
mov    0x44(%rsp),%r9d
jmp    13ec <neiEK+0x2bc>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    0x4c(%rsp),%r9d
cmp    0x20(%rsp),%r9d
jg     1390 <neiEK+0x260>
mov    %r9d,%esi
and    0xc(%rsp),%esi
movslq %esi,%rsi
mov    0x70(%rsp),%rax
mov    (%rax,%rsi,4),%edi
cmp    $0xffffffff,%edi
je     13e0 <neiEK+0x2b0>
movsd  (%rbx),%xmm2
mov    0x0(%rbp),%rsi
jmp    1419 <neiEK+0x2e9>
nopl   (%rax)
mov    (%r11,%r10,4),%edi
cmp    $0xffffffff,%edi
je     13e0 <neiEK+0x2b0>
movslq %edi,%r10
movapd %xmm2,%xmm3
subsd  (%rsi,%r10,8),%xmm3
andpd  %xmm1,%xmm3
cmp    $0x2,%r15d
jl     1470 <neiEK+0x340>
mov    $0x1,%edi
jmp    1449 <neiEK+0x319>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rdi
cmp    %rdi,%r13
je     1470 <neiEK+0x340>
movsd  (%rbx,%rdi,8),%xmm4
mov    0x0(%rbp,%rdi,8),%rax
subsd  (%rax,%r10,8),%xmm4
andpd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jbe    1440 <neiEK+0x310>
ucomisd %xmm0,%xmm4
movapd %xmm4,%xmm3
jbe    1440 <neiEK+0x310>
nopl   (%rax)
cmpl   $0x0,0x10(%rsp)
jle    1410 <neiEK+0x2e0>
xor    %r8d,%r8d
test   %rdx,%rdx
jne    14a9 <neiEK+0x379>
testb  $0x1,0x28(%rsp)
je     1410 <neiEK+0x2e0>
movsd  (%r14,%r8,8),%xmm4
ucomisd %xmm3,%xmm4
jb     1410 <neiEK+0x2e0>
addl   $0x1,(%r12,%r8,4)
jmp    1410 <neiEK+0x2e0>
add    $0x2,%r8
cmp    %r8,%rcx
je     147f <neiEK+0x34f>
movsd  (%r14,%r8,8),%xmm4
ucomisd %xmm3,%xmm4
jb     14ba <neiEK+0x38a>
addl   $0x1,(%r12,%r8,4)
movsd  0x8(%r14,%r8,8),%xmm4
ucomisd %xmm3,%xmm4
jb     14a0 <neiEK+0x370>
addl   $0x1,0x4(%r12,%r8,4)
jmp    14a0 <neiEK+0x370>
nop
mov    0x3c(%rsp),%eax
cmp    %eax,0x14(%rsp)
jg     1300 <neiEK+0x1d0>
mov    0x18(%rsp),%rax
mov    0x60(%rsp),%rsi
sub    %esi,%eax
mov    %eax,0x20(%rsp)
mov    0x50(%rsp),%rax
add    %esi,%eax
mov    %eax,0x70(%rsp)
jmp    1516 <neiEK+0x3e6>
nopl   0x0(%rax,%rax,1)
mov    0x14(%rsp),%eax
add    0x4c(%rsp),%eax
mov    %eax,0x14(%rsp)
cmp    0x3c(%rsp),%eax
jg     1300 <neiEK+0x1d0>
mov    0x70(%rsp),%eax
cmp    %eax,0x20(%rsp)
jge    1500 <neiEK+0x3d0>
mov    0x14(%rsp),%eax
and    0xc(%rsp),%eax
cltq
mov    0xc0(%rsp),%rsi
mov    (%rsi,%rax,8),%r9
mov    0x20(%rsp),%r8d
jmp    1547 <neiEK+0x417>
nopl   (%rax)
cmp    0x48(%rsp),%r8d
je     1500 <neiEK+0x3d0>
add    $0x1,%r8d
mov    %r8d,%eax
and    0xc(%rsp),%eax
cltq
mov    (%r9,%rax,4),%eax
cmp    $0xffffffff,%eax
je     1540 <neiEK+0x410>
movsd  (%rbx),%xmm2
mov    0x0(%rbp),%rsi
jmp    1579 <neiEK+0x449>
nopw   0x0(%rax,%rax,1)
mov    (%r11,%rdi,4),%eax
cmp    $0xffffffff,%eax
je     1540 <neiEK+0x410>
movslq %eax,%rdi
movapd %xmm2,%xmm3
subsd  (%rsi,%rdi,8),%xmm3
andpd  %xmm1,%xmm3
cmp    $0x2,%r15d
jl     15d0 <neiEK+0x4a0>
mov    $0x1,%eax
jmp    15a9 <neiEK+0x479>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %rax,%r13
je     15d0 <neiEK+0x4a0>
movsd  (%rbx,%rax,8),%xmm4
mov    0x0(%rbp,%rax,8),%r10
subsd  (%r10,%rdi,8),%xmm4
andpd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jbe    15a0 <neiEK+0x470>
ucomisd %xmm0,%xmm4
movapd %xmm4,%xmm3
jbe    15a0 <neiEK+0x470>
nopl   (%rax)
cmpl   $0x0,0x10(%rsp)
jle    1570 <neiEK+0x440>
xor    %eax,%eax
test   %rdx,%rdx
jne    1609 <neiEK+0x4d9>
testb  $0x1,0x28(%rsp)
je     1570 <neiEK+0x440>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     1570 <neiEK+0x440>
addl   $0x1,(%r12,%rax,4)
jmp    1570 <neiEK+0x440>
nop
add    $0x2,%rax
cmp    %rax,%rcx
je     15de <neiEK+0x4ae>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     161a <neiEK+0x4ea>
addl   $0x1,(%r12,%rax,4)
movsd  0x8(%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     1600 <neiEK+0x4d0>
addl   $0x1,0x4(%r12,%rax,4)
jmp    1600 <neiEK+0x4d0>
cmp    0x58(%rsp),%edi
jne    18cf <neiEK+0x79f>
mov    0x30(%rsp),%rcx
mov    0x58(%rsp),%rsi
lea    (%rsi,%rcx,1),%r9d
sub    %esi,%ecx
mov    0x18(%rsp),%rax
sub    %esi,%eax
mov    %rax,0x18(%rsp)
mov    %rcx,0x30(%rsp)
cmp    %r9d,%ecx
jge    178f <neiEK+0x65f>
mov    0x18(%rsp),%rax
and    0xc(%rsp),%eax
cltq
mov    %rax,0x20(%rsp)
mov    0x28(%rsp),%rdi
and    $0xfffffffe,%edi
mov    0x30(%rsp),%rax
mov    %eax,%r10d
jmp    169d <neiEK+0x56d>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%r10d
cmp    %r9d,%r10d
je     178f <neiEK+0x65f>
mov    %r10d,%eax
and    0xc(%rsp),%eax
cltq
mov    0xc0(%rsp),%rcx
mov    (%rcx,%rax,8),%rax
mov    0x20(%rsp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    $0xffffffff,%eax
je     1690 <neiEK+0x560>
movsd  (%rbx),%xmm2
mov    0x0(%rbp),%rcx
jmp    16d9 <neiEK+0x5a9>
nopl   0x0(%rax)
mov    (%r11,%rsi,4),%eax
cmp    $0xffffffff,%eax
je     1690 <neiEK+0x560>
movslq %eax,%rsi
movapd %xmm2,%xmm3
subsd  (%rcx,%rsi,8),%xmm3
andpd  %xmm1,%xmm3
cmp    $0x2,%r15d
jl     1730 <neiEK+0x600>
mov    $0x1,%eax
jmp    1709 <neiEK+0x5d9>
cs nopw 0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %rax,%r13
je     1730 <neiEK+0x600>
movsd  (%rbx,%rax,8),%xmm4
mov    0x0(%rbp,%rax,8),%r8
subsd  (%r8,%rsi,8),%xmm4
andpd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jbe    1700 <neiEK+0x5d0>
ucomisd %xmm0,%xmm4
movapd %xmm4,%xmm3
jbe    1700 <neiEK+0x5d0>
nopl   (%rax)
cmpl   $0x0,0x10(%rsp)
jle    16d0 <neiEK+0x5a0>
xor    %eax,%eax
test   %rdx,%rdx
jne    1769 <neiEK+0x639>
testb  $0x1,0x28(%rsp)
je     16d0 <neiEK+0x5a0>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     16d0 <neiEK+0x5a0>
addl   $0x1,(%r12,%rax,4)
jmp    16d0 <neiEK+0x5a0>
nop
add    $0x2,%rax
cmp    %rax,%rdi
je     173e <neiEK+0x60e>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     177a <neiEK+0x64a>
addl   $0x1,(%r12,%rax,4)
movsd  0x8(%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     1760 <neiEK+0x630>
addl   $0x1,0x4(%r12,%rax,4)
jmp    1760 <neiEK+0x630>
mov    0x50(%rsp),%rax
add    0x58(%rsp),%eax
mov    %rax,0x50(%rsp)
cmp    %eax,0x18(%rsp)
mov    0x10(%rsp),%r10d
jge    18cf <neiEK+0x79f>
mov    0x30(%rsp),%rax
and    0xc(%rsp),%eax
cltq
mov    0xc0(%rsp),%rcx
mov    (%rcx,%rax,8),%r8
mov    0x28(%rsp),%rsi
and    $0xfffffffe,%esi
jmp    17df <neiEK+0x6af>
nopl   (%rax)
mov    0x50(%rsp),%rax
cmp    %eax,0x18(%rsp)
je     18cf <neiEK+0x79f>
mov    0x18(%rsp),%rax
add    $0x1,%eax
mov    %rax,0x18(%rsp)
and    0xc(%rsp),%eax
cltq
mov    (%r8,%rax,4),%eax
cmp    $0xffffffff,%eax
je     17d0 <neiEK+0x6a0>
movsd  (%rbx),%xmm2
mov    0x0(%rbp),%r9
jmp    1819 <neiEK+0x6e9>
cs nopw 0x0(%rax,%rax,1)
nop
mov    (%r11,%rcx,4),%eax
cmp    $0xffffffff,%eax
je     17d0 <neiEK+0x6a0>
movslq %eax,%rcx
movapd %xmm2,%xmm3
subsd  (%r9,%rcx,8),%xmm3
andpd  %xmm1,%xmm3
cmp    $0x2,%r15d
jl     1870 <neiEK+0x740>
mov    $0x1,%eax
jmp    1849 <neiEK+0x719>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    %rax,%r13
je     1870 <neiEK+0x740>
movsd  (%rbx,%rax,8),%xmm4
mov    0x0(%rbp,%rax,8),%rdi
subsd  (%rdi,%rcx,8),%xmm4
andpd  %xmm1,%xmm4
ucomisd %xmm3,%xmm4
jbe    1840 <neiEK+0x710>
ucomisd %xmm0,%xmm4
movapd %xmm4,%xmm3
jbe    1840 <neiEK+0x710>
nopl   0x0(%rax)
test   %r10d,%r10d
jle    1810 <neiEK+0x6e0>
xor    %eax,%eax
test   %rdx,%rdx
jne    18a9 <neiEK+0x779>
testb  $0x1,0x28(%rsp)
je     1810 <neiEK+0x6e0>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     1810 <neiEK+0x6e0>
addl   $0x1,(%r12,%rax,4)
jmp    1810 <neiEK+0x6e0>
nopl   0x0(%rax)
add    $0x2,%rax
cmp    %rax,%rsi
je     187c <neiEK+0x74c>
movsd  (%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     18ba <neiEK+0x78a>
addl   $0x1,(%r12,%rax,4)
movsd  0x8(%r14,%rax,8),%xmm4
ucomisd %xmm3,%xmm4
jb     18a0 <neiEK+0x770>
addl   $0x1,0x4(%r12,%rax,4)
jmp    18a0 <neiEK+0x770>
mov    %rbx,%rdi
call   1030 <free@plt>
mov    0x10(%rsp),%eax
test   %eax,%eax
mov    0x28(%rsp),%rdi
jle    19ae <neiEK+0x87e>
cmp    $0x8,%eax
jae    18f4 <neiEK+0x7c4>
xor    %eax,%eax
jmp    19a0 <neiEK+0x870>
mov    %edi,%eax
and    $0xfffffff8,%eax
lea    -0x8(%rax),%rcx
mov    %rcx,%rdx
shr    $0x3,%rdx
add    $0x1,%rdx
test   %rcx,%rcx
je     19bd <neiEK+0x88d>
mov    %rdx,%rsi
and    $0xfffffffffffffffe,%rsi
xor    %ecx,%ecx
pcmpeqd %xmm0,%xmm0
xchg   %ax,%ax
movdqu (%r12,%rcx,4),%xmm1
movdqu 0x10(%r12,%rcx,4),%xmm2
movdqu 0x20(%r12,%rcx,4),%xmm3
movdqu 0x30(%r12,%rcx,4),%xmm4
paddd  %xmm0,%xmm1
paddd  %xmm0,%xmm2
movdqu %xmm1,(%r12,%rcx,4)
movdqu %xmm2,0x10(%r12,%rcx,4)
paddd  %xmm0,%xmm3
paddd  %xmm0,%xmm4
movdqu %xmm3,0x20(%r12,%rcx,4)
movdqu %xmm4,0x30(%r12,%rcx,4)
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rsi
jne    1920 <neiEK+0x7f0>
test   $0x1,%dl
je     199b <neiEK+0x86b>
movdqu (%r12,%rcx,4),%xmm0
movdqu 0x10(%r12,%rcx,4),%xmm1
pcmpeqd %xmm2,%xmm2
paddd  %xmm2,%xmm0
paddd  %xmm2,%xmm1
movdqu %xmm0,(%r12,%rcx,4)
movdqu %xmm1,0x10(%r12,%rcx,4)
cmp    %rdi,%rax
je     19ae <neiEK+0x87e>
addl   $0xffffffff,(%r12,%rax,4)
add    $0x1,%rax
cmp    %rax,%rdi
jne    19a0 <neiEK+0x870>
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %ecx,%ecx
test   $0x1,%dl
jne    1975 <neiEK+0x845>
jmp    199b <neiEK+0x86b>

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

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