int sfa(double *x, double *gap, int *activeS, double *z, double *z0, double *v,
        double *Av, double lambda, int nn, int maxStep, double *s, double *g,
        double tol, int tau, int flag) {
  int i, iterStep, m, tFlag = 0, n = nn + 1;
  double alphap = 0, alpha = 1, beta = 0, temp;
  int *S = (int *)malloc(sizeof(int) * nn);
  double gapp = -1, gappp = -1;
  int numS = -1, numSp = -2, numSpp = -3;
  ;
  *gap = -1;
  for (iterStep = 1; iterStep <= maxStep; iterStep++) {
    beta = (alphap - 1) / alpha;
    m = nn % 5;
    if (m != 0) {
      for (i = 0; i < m; i++)
        s[i] = z[i] + beta * z0[i];
    }
    for (i = m; i < nn; i += 5) {
      s[i] = z[i] + beta * z0[i];
      s[i + 1] = z[i + 1] + beta * z0[i + 1];
      s[i + 2] = z[i + 2] + beta * z0[i + 2];
      s[i + 3] = z[i + 3] + beta * z0[i + 3];
      s[i + 4] = z[i + 4] + beta * z0[i + 4];
    }
    g[0] = s[0] + s[0] - s[1] - Av[0];
    for (i = 1; i < nn - 1; i++) {
      g[i] = -s[i - 1] + s[i] + s[i] - s[i + 1] - Av[i];
    }
    g[nn - 1] = -s[nn - 2] + s[nn - 1] + s[nn - 1] - Av[nn - 1];
    m = nn % 7;
    if (m != 0) {
      for (i = 0; i < m; i++)
        z0[i] = -z[i];
    }
    for (i = m; i < nn; i += 7) {
      z0[i] = -z[i];
      z0[i + 1] = -z[i + 1];
      z0[i + 2] = -z[i + 2];
      z0[i + 3] = -z[i + 3];
      z0[i + 4] = -z[i + 4];
      z0[i + 5] = -z[i + 5];
      z0[i + 6] = -z[i + 6];
    }
    m = nn % 5;
    if (m != 0) {
      for (i = 0; i < m; i++)
        z[i] = s[i] - g[i] / 4;
    }
    for (i = m; i < nn; i += 5) {
      z[i] = s[i] - g[i] / 4;
      z[i + 1] = s[i + 1] - g[i + 1] / 4;
      z[i + 2] = s[i + 2] - g[i + 2] / 4;
      z[i + 3] = s[i + 3] - g[i + 3] / 4;
      z[i + 4] = s[i + 4] - g[i + 4] / 4;
    }
    for (i = 0; i < nn; i++) {
      if (z[i] > lambda)
        z[i] = lambda;
      else if (z[i] < -lambda)
        z[i] = -lambda;
    }
    m = nn % 5;
    if (m != 0) {
      for (i = 0; i < m; i++)
        z0[i] += z[i];
    }
    for (i = m; i < nn; i += 5) {
      z0[i] += z[i];
      z0[i + 1] += z[i + 1];
      z0[i + 2] += z[i + 2];
      z0[i + 3] += z[i + 3];
      z0[i + 4] += z[i + 4];
    }
    alphap = alpha;
    alpha = (1 + sqrt(4 * alpha * alpha + 1)) / 2;
    if (iterStep % tau == 0) {
      switch (flag) {
      case 1:
        gappp = gapp;
        gapp = *gap;
        numSpp = numSp;
        numSp = numS;
        dualityGap(gap, z, g, s, Av, lambda, nn);
        if (*gap <= tol) {
          tFlag = 1;
          break;
        } else {
          numS = supportSet(x, v, z, g, S, lambda, nn);
          m = 1;
          if (nn > 1000000)
            m = 10;
          else if (nn > 100000)
            m = 5;
          if (abs(numS - numSp) < m) {
            numS = generateSolution(x, z, gap, v, Av, g, s, S, lambda, nn);
            if (*gap < tol) {
              tFlag = 2;
              break;
            }
            if ((*gap == gappp) && (numS == numSpp)) {
              tFlag = 2;
              break;
            }
          }
          for (i = 0; i < nn; i++)
            s[i] = Av[i] - x[i + 1] + x[i];
          Thomas(&temp, z, s, nn);
          for (i = 0; i < nn; i++) {
            if (z[i] > lambda)
              z[i] = lambda;
            else if (z[i] < -lambda)
              z[i] = -lambda;
          }
          m = nn % 7;
          if (m != 0) {
            for (i = 0; i < m; i++)
              z0[i] = 0;
          }
          for (i = m; i < nn; i += 7) {
            z0[i] = z0[i + 1] = z0[i + 2] = z0[i + 3] = z0[i + 4] = z0[i + 5] =
                z0[i + 6] = 0;
          }
          alphap = 0;
          alpha = 1;
        }
        break;
      case 2:
        temp = 0;
        m = nn % 5;
        if (m != 0) {
          for (i = 0; i < m; i++)
            temp += fabs(z0[i]);
        }
        for (i = m; i < nn; i += 5)
          temp = temp + fabs(z0[i]) + fabs(z0[i + 1]) + fabs(z0[i + 2]) +
                 fabs(z0[i + 3]) + fabs(z0[i + 4]);
        *gap = temp / nn;
        if (*gap <= tol) {
          tFlag = 1;
        }
        break;
      case 3:
        g[0] = z[0] + z[0] - z[1] - Av[0];
        for (i = 1; i < nn - 1; i++) {
          g[i] = -z[i - 1] + z[i] + z[i] - z[i + 1] - Av[i];
        }
        g[nn - 1] = -z[nn - 2] + z[nn - 1] + z[nn - 1] - Av[nn - 1];
        for (i = 0; i < nn; i++)
          if (g[i] > 0)
            s[i] = lambda + z[i];
          else
            s[i] = -lambda + z[i];
        temp = 0;
        m = nn % 5;
        if (m != 0) {
          for (i = 0; i < m; i++)
            temp += s[i] * g[i];
        }
        for (i = m; i < nn; i += 5)
          temp = temp + s[i] * g[i] + s[i + 1] * g[i + 1] +
                 s[i + 2] * g[i + 2] + s[i + 3] * g[i + 3] +
                 s[i + 4] * g[i + 4];
        *gap = temp;
        if (*gap <= tol)
          tFlag = 1;
        break;
      case 4:
        g[0] = z[0] + z[0] - z[1] - Av[0];
        for (i = 1; i < nn - 1; i++) {
          g[i] = -z[i - 1] + z[i] + z[i] - z[i + 1] - Av[i];
        }
        g[nn - 1] = -z[nn - 2] + z[nn - 1] + z[nn - 1] - Av[nn - 1];
        for (i = 0; i < nn; i++)
          if (g[i] > 0)
            s[i] = lambda + z[i];
          else
            s[i] = -lambda + z[i];
        temp = 0;
        m = nn % 5;
        if (m != 0) {
          for (i = 0; i < m; i++)
            temp += s[i] * g[i];
        }
        for (i = m; i < nn; i += 5)
          temp = temp + s[i] * g[i] + s[i + 1] * g[i + 1] +
                 s[i + 2] * g[i + 2] + s[i + 3] * g[i + 3] +
                 s[i + 4] * g[i + 4];
        *gap = temp;
        temp = 0;
        m = nn % 5;
        if (m != 0) {
          for (i = 0; i < m; i++)
            temp += z[i] * (g[i] - Av[i]);
        }
        for (i = m; i < nn; i += 5)
          temp = temp + z[i] * (g[i] - Av[i]) +
                 z[i + 1] * (g[i + 1] - Av[i + 1]) +
                 z[i + 2] * (g[i + 2] - Av[i + 2]) +
                 z[i + 3] * (g[i + 3] - Av[i + 3]) +
                 z[i + 4] * (g[i + 4] - Av[i + 4]);
        temp = fabs(temp) / 2;
        if (temp < 1)
          temp = 1;
        *gap /= temp;
        if (*gap <= tol) {
          tFlag = 1;
        }
        break;
      default:
        temp = 0;
        m = nn % 5;
        if (m != 0) {
          for (i = 0; i < m; i++)
            temp += fabs(z0[i]);
        }
        for (i = m; i < nn; i += 5)
          temp = temp + fabs(z0[i]) + fabs(z0[i + 1]) + fabs(z0[i + 2]) +
                 fabs(z0[i + 3]) + fabs(z0[i + 4]);
        *gap = temp / nn;
        if (*gap <= tol) {
          tFlag = 1;
        }
        break;
      }
      if (tFlag)
        break;
    }
  }
  if ((flag != 1) || (tFlag == 0)) {
    x[0] = v[0] + z[0];
    for (i = 1; i < n - 1; i++)
      x[i] = v[i] - z[i - 1] + z[i];
    x[n - 1] = v[n - 1] - z[n - 2];
  }
  if ((flag == 1) && (tFlag == 1)) {
    g[0] = z[0] + z[0] - z[1] - Av[0];
    for (i = 1; i < nn - 1; i++) {
      g[i] = -z[i - 1] + z[i] + z[i] - z[i + 1] - Av[i];
    }
    g[nn - 1] = -z[nn - 2] + z[nn - 1] + z[nn - 1] - Av[nn - 1];
    m = nn % 5;
    if (m != 0) {
      for (i = 0; i < m; i++)
        z[i] = z[i] - g[i] / 4;
    }
    for (i = m; i < nn; i += 5) {
      z[i] = z[i] - g[i] / 4;
      z[i + 1] = z[i + 1] - g[i + 1] / 4;
      z[i + 2] = z[i + 2] - g[i + 2] / 4;
      z[i + 3] = z[i + 3] - g[i + 3] / 4;
      z[i + 4] = z[i + 4] - g[i + 4] / 4;
    }
    for (i = 0; i < nn; i++) {
      if (z[i] > lambda)
        z[i] = lambda;
      else if (z[i] < -lambda)
        z[i] = -lambda;
    }
    g[0] = z[0] + z[0] - z[1] - Av[0];
    for (i = 1; i < nn - 1; i++) {
      g[i] = -z[i - 1] + z[i] + z[i] - z[i + 1] - Av[i];
    }
    g[nn - 1] = -z[nn - 2] + z[nn - 1] + z[nn - 1] - Av[nn - 1];
    numS = generateSolution(x, z, gap, v, Av, g, s, S, lambda, nn);
  }
  free(S);
  *activeS = numS;
  return (iterStep);
}


x86 assembly (clang, -O0):
<sfa>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%rsp
mov    0x40(%rbp),%eax
mov    0x38(%rbp),%eax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movsd  %xmm0,-0x38(%rbp)
movsd  %xmm1,-0x40(%rbp)
movl   $0x0,-0x50(%rbp)
mov    0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x2e23(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
movslq 0x18(%rbp),%rdi
shl    $0x2,%rdi
call   1060 <malloc@plt>
mov    %rax,-0x80(%rbp)
movsd  0x2df5(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x2de5(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movl   $0xffffffff,-0x94(%rbp)
ff ff ff
movl   $0xfffffffe,-0x98(%rbp)
ff ff ff
movl   $0xfffffffd,-0x9c(%rbp)
ff ff ff
mov    -0x10(%rbp),%rax
movsd  0x2db3(%rip),%xmm0
movsd  %xmm0,(%rax)
movl   $0x1,-0x48(%rbp)
mov    -0x48(%rbp),%eax
cmp    0x20(%rbp),%eax
jg     2bd9 <sfa+0x1a59>
movsd  -0x60(%rbp),%xmm0
movsd  0x2d97(%rip),%xmm1
subsd  %xmm1,%xmm0
divsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     12f1 <sfa+0x171>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    12ec <sfa+0x16c>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    129e <sfa+0x11e>
jmp    12f1 <sfa+0x171>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1451 <sfa+0x2d1>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    12f7 <sfa+0x177>
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
addsd  (%rax),%xmm0
mov    0x28(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    150f <sfa+0x38f>
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1481 <sfa+0x301>
mov    0x28(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    0x28(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     15ef <sfa+0x46f>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    15ea <sfa+0x46a>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    159f <sfa+0x41f>
jmp    15ef <sfa+0x46f>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    17a2 <sfa+0x622>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0x44(%rbp)
jmp    15f5 <sfa+0x475>
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     1817 <sfa+0x697>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    1812 <sfa+0x692>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x2829(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    17c1 <sfa+0x641>
jmp    1817 <sfa+0x697>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1986 <sfa+0x806>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x27cd(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x278c(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x2746(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x2700(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x26ba(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    181d <sfa+0x69d>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1a3c <sfa+0x8bc>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    19c8 <sfa+0x848>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1a29 <sfa+0x8a9>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    1a24 <sfa+0x8a4>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1a29 <sfa+0x8a9>
jmp    1a2e <sfa+0x8ae>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    198d <sfa+0x80d>
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     1a99 <sfa+0x919>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    1a94 <sfa+0x914>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1a5b <sfa+0x8db>
jmp    1a99 <sfa+0x919>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1b7c <sfa+0x9fc>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    1a9f <sfa+0x91f>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x248a(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x2464(%rip),%xmm1
addsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0x2450(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  0x244c(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x48(%rbp),%eax
cltd
idivl  0x38(%rbp)
cmp    $0x0,%edx
jne    2bc6 <sfa+0x1a46>
mov    0x40(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xa8(%rbp)
sub    $0x3,%eax
ja     2a47 <sfa+0x18c7>
mov    -0xa8(%rbp),%rax
lea    0x242d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x98(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    0x30(%rbp),%rdx
mov    0x28(%rbp),%rcx
mov    0x10(%rbp),%r8
movsd  -0x38(%rbp),%xmm0
mov    0x18(%rbp),%r9d
mov    $0x1,%al
call   1040 <dualityGap@plt>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1c8b <sfa+0xb0b>
movl   $0x1,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
mov    -0x8(%rbp),%rdi
mov    -0x30(%rbp),%rsi
mov    -0x20(%rbp),%rdx
mov    0x30(%rbp),%rcx
mov    -0x80(%rbp),%r8
movsd  -0x38(%rbp),%xmm0
mov    0x18(%rbp),%r9d
mov    $0x1,%al
call   1070 <supportSet@plt>
mov    %eax,-0x94(%rbp)
movl   $0x1,-0x4c(%rbp)
cmpl   $0xf4240,0x18(%rbp)
jle    1cd5 <sfa+0xb55>
movl   $0xa,-0x4c(%rbp)
jmp    1cee <sfa+0xb6e>
cmpl   $0x186a0,0x18(%rbp)
jle    1ce9 <sfa+0xb69>
movl   $0x5,-0x4c(%rbp)
jmp    1cee <sfa+0xb6e>
mov    -0x94(%rbp),%edi
sub    -0x98(%rbp),%edi
call   1050 <abs@plt>
cmp    -0x4c(%rbp),%eax
jge    1dac <sfa+0xc2c>
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x30(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x30(%rbp),%r9
mov    0x28(%rbp),%r11
mov    -0x80(%rbp),%r10
movsd  -0x38(%rbp),%xmm0
mov    0x18(%rbp),%eax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   1090 <generateSolution@plt>
mov    %eax,-0x94(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1d6d <sfa+0xbed>
movl   $0x2,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jne    1da7 <sfa+0xc27>
jp     1da7 <sfa+0xc27>
mov    -0x94(%rbp),%eax
cmp    -0x9c(%rbp),%eax
jne    1da7 <sfa+0xc27>
movl   $0x2,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
jmp    1dac <sfa+0xc2c>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1e06 <sfa+0xc86>
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1db3 <sfa+0xc33>
mov    -0x20(%rbp),%rsi
mov    0x28(%rbp),%rdx
mov    0x18(%rbp),%ecx
lea    -0x78(%rbp),%rdi
mov    $0x0,%al
call   10a0 <Thomas@plt>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1ed2 <sfa+0xd52>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    1e5e <sfa+0xcde>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1ebf <sfa+0xd3f>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    1eba <sfa+0xd3a>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1ebf <sfa+0xd3f>
jmp    1ec4 <sfa+0xd44>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1e23 <sfa+0xca3>
mov    0x18(%rbp),%eax
mov    $0x7,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     1f20 <sfa+0xda0>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    1f1b <sfa+0xd9b>
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    1ef1 <sfa+0xd71>
jmp    1f20 <sfa+0xda0>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    1fce <sfa+0xe4e>
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x7,%eax
mov    %eax,-0x44(%rbp)
jmp    1f26 <sfa+0xda6>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x202a(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    2bb2 <sfa+0x1a32>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     2050 <sfa+0xed0>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    204b <sfa+0xecb>
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0x1ff1(%rip),%xmm1
pand   %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    200f <sfa+0xe8f>
jmp    2050 <sfa+0xed0>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    211a <sfa+0xf9a>
movsd  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1fa5(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1f84(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1f63(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1f42(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1f21(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    2056 <sfa+0xed6>
movsd  -0x78(%rbp),%xmm0
cvtsi2sdl 0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     214e <sfa+0xfce>
movl   $0x1,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    2211 <sfa+0x1091>
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2183 <sfa+0x1003>
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    231c <sfa+0x119c>
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    22d3 <sfa+0x1153>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    2309 <sfa+0x1189>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    230e <sfa+0x118e>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2289 <sfa+0x1109>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     238e <sfa+0x120e>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    2389 <sfa+0x1209>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2343 <sfa+0x11c3>
jmp    238e <sfa+0x120e>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    248a <sfa+0x130a>
movsd  -0x78(%rbp),%xmm1
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    2394 <sfa+0x1214>
movsd  -0x78(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     24b5 <sfa+0x1335>
movl   $0x1,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    2578 <sfa+0x13f8>
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    24ea <sfa+0x136a>
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    2683 <sfa+0x1503>
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    263a <sfa+0x14ba>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    2670 <sfa+0x14f0>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    2675 <sfa+0x14f5>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    25f0 <sfa+0x1470>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     26f5 <sfa+0x1575>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    26f0 <sfa+0x1570>
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    26aa <sfa+0x152a>
jmp    26f5 <sfa+0x1575>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    27f1 <sfa+0x1671>
movsd  -0x78(%rbp),%xmm1
mov    0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    26fb <sfa+0x157b>
movsd  -0x78(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     287d <sfa+0x16fd>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    2878 <sfa+0x16f8>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2825 <sfa+0x16a5>
jmp    287d <sfa+0x16fd>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    29ce <sfa+0x184e>
movsd  -0x78(%rbp),%xmm1
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm2
mov    0x10(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    2883 <sfa+0x1703>
movsd  -0x78(%rbp),%xmm0
movaps 0x1646(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x162a(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x1611(%rip),%xmm0
ucomisd -0x78(%rbp),%xmm0
jbe    2a0f <sfa+0x188f>
movsd  0x15fe(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     2a42 <sfa+0x18c2>
movl   $0x1,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     2aaf <sfa+0x192f>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    2aaa <sfa+0x192a>
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movaps 0x1592(%rip),%xmm1
pand   %xmm1,%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2a6e <sfa+0x18ee>
jmp    2aaf <sfa+0x192f>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    2b79 <sfa+0x19f9>
movsd  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1546(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1525(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x1504(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x14e3(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movaps 0x14c2(%rip),%xmm2
pand   %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    2ab5 <sfa+0x1935>
movsd  -0x78(%rbp),%xmm0
cvtsi2sdl 0x18(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x40(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     2bad <sfa+0x1a2d>
movl   $0x1,-0x50(%rbp)
jmp    2bb2 <sfa+0x1a32>
cmpl   $0x0,-0x50(%rbp)
je     2bc1 <sfa+0x1a41>
jmp    2bd9 <sfa+0x1a59>
jmp    2bc6 <sfa+0x1a46>
jmp    2bcb <sfa+0x1a4b>
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
jmp    1258 <sfa+0xd8>
cmpl   $0x1,0x40(%rbp)
jne    2bed <sfa+0x1a6d>
cmpl   $0x0,-0x50(%rbp)
jne    2c9a <sfa+0x1b1a>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    2c64 <sfa+0x1ae4>
mov    -0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2c0c <sfa+0x1a8c>
mov    -0x30(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x8(%rbp),%rax
mov    -0x54(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x1,0x40(%rbp)
jne    31e8 <sfa+0x2068>
cmpl   $0x1,-0x50(%rbp)
jne    31e8 <sfa+0x2068>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    2d6c <sfa+0x1bec>
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2cde <sfa+0x1b5e>
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    0x18(%rbp),%eax
mov    $0x5,%ecx
cltd
idiv   %ecx
mov    %edx,-0x4c(%rbp)
cmpl   $0x0,-0x4c(%rbp)
je     2e52 <sfa+0x1cd2>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    -0x4c(%rbp),%eax
jge    2e4d <sfa+0x1ccd>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x11ee(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2dfc <sfa+0x1c7c>
jmp    2e52 <sfa+0x1cd2>
mov    -0x4c(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    2fc1 <sfa+0x1e41>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x1192(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x1151(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x110b(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x10c5(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  0x107f(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0x44(%rbp)
jmp    2e58 <sfa+0x1cd8>
movl   $0x0,-0x44(%rbp)
mov    -0x44(%rbp),%eax
cmp    0x18(%rbp),%eax
jge    3077 <sfa+0x1ef7>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
ucomisd -0x38(%rbp),%xmm0
jbe    3003 <sfa+0x1e83>
movsd  -0x38(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    3064 <sfa+0x1ee4>
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
ucomisd %xmm1,%xmm0
jbe    305f <sfa+0x1edf>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    3064 <sfa+0x1ee4>
jmp    3069 <sfa+0x1ee9>
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    2fc8 <sfa+0x1e48>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
mov    -0x20(%rbp),%rax
subsd  0x8(%rax),%xmm0
mov    0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0x44(%rbp)
mov    -0x44(%rbp),%eax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    3135 <sfa+0x1fb5>
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x44(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    -0x44(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
movslq -0x44(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
movslq -0x44(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
jmp    30a7 <sfa+0x1f27>
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x20(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    0x10(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    0x30(%rbp),%rax
mov    0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x8(%rbp),%rdi
mov    -0x20(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x30(%rbp),%rcx
mov    0x10(%rbp),%r8
mov    0x30(%rbp),%r9
mov    0x28(%rbp),%r11
mov    -0x80(%rbp),%r10
movsd  -0x38(%rbp),%xmm0
mov    0x18(%rbp),%eax
mov    %r11,(%rsp)
mov    %r10,0x8(%rsp)
mov    %eax,0x10(%rsp)
mov    $0x1,%al
call   1090 <generateSolution@plt>
mov    %eax,-0x94(%rbp)
mov    -0x80(%rbp),%rdi
call   1030 <free@plt>
mov    -0x94(%rbp),%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x48(%rbp),%eax
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<sfa>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x1c8,%rsp
movsd  %xmm1,0x78(%rsp)
movapd %xmm0,0xa0(%rsp)
mov    %r9,0x38(%rsp)
mov    %r8,%rbp
mov    %rcx,%r12
mov    %rdx,0x88(%rsp)
mov    %rsi,%r14
mov    %rdi,0x30(%rsp)
mov    0x220(%rsp),%r15
mov    0x218(%rsp),%r13
mov    0x208(%rsp),%eax
movslq %eax,%rbx
lea    0x0(,%rbx,4),%rdi
call   1060 <malloc@plt>
mov    0x208(%rsp),%r11d
mov    %rax,0x70(%rsp)
movabs $0xbff0000000000000,%rax
mov    %r14,0x68(%rsp)
mov    %rax,(%r14)
mov    %r11d,%r10d
mov    0x210(%rsp),%eax
test   %eax,%eax
mov    %r10,0x40(%rsp)
jle    3588 <sfa+0x2408>
imul   $0x66666667,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
shr    $0x20,%rax
sar    %eax
add    %ecx,%eax
lea    (%rax,%rax,4),%eax
mov    %ebx,%ecx
sub    %eax,%ecx
mov    %rcx,%rdi
mov    %rcx,0xc0(%rsp)
lea    -0x1(%rbx),%r9d
movslq %r9d,%rcx
imul   $0xffffffff92492493,%rbx,%rdx
shr    $0x20,%rdx
add    %r11d,%edx
mov    %edx,%eax
shr    $0x1f,%eax
sar    $0x2,%edx
add    %eax,%edx
lea    0x0(,%rdx,8),%eax
sub    %eax,%edx
add    %r11d,%edx
mov    %rdx,%rsi
mov    %rdx,0xd0(%rsp)
test   %edi,%edi
setle  0xf(%rsp)
xor    %eax,%eax
cmp    $0x186a1,%ebx
setge  %al
cmp    $0xf4241,%ebx
lea    0x1(,%rax,4),%eax
mov    $0xa,%edx
cmovl  %eax,%edx
mov    %edx,0x11c(%rsp)
movslq %edi,%r8
movslq %esi,%rdx
mov    %rdx,0x168(%rsp)
mov    %rcx,0x110(%rsp)
mov    %ecx,%eax
sub    %edx,%eax
imul   $0x24924925,%rax,%rcx
shr    $0x20,%rcx
sub    %ecx,%eax
shr    %eax
add    %ecx,%eax
shr    $0x2,%eax
imul   $0x38,%rax,%rax
add    $0x38,%rax
mov    %rax,0x1b8(%rsp)
mov    %r8,%rax
not    %rax
add    %rbx,%rax
movabs $0xcccccccccccccccd,%rcx
cc cc cc
mov    %rax,0x178(%rsp)
mul    %rcx
mov    %rdx,%rdi
lea    (%r12,%r8,8),%rax
mov    %rax,0x28(%rsp)
shr    $0x2,%rdi
lea    (%rdi,%rdi,4),%rdx
add    %r8,%rdx
lea    (%r12,%rdx,8),%rcx
add    $0x28,%rcx
mov    %rcx,0x10(%rsp)
lea    0x0(,%r8,8),%rsi
add    %r13,%rsi
mov    %r8,0x60(%rsp)
add    $0x1,%rdi
cmp    %rcx,%rsi
setb   %cl
lea    0x28(,%rdx,8),%r10
add    %r13,%r10
cmp    %r10,%rax
setb   %al
and    %cl,%al
lea    0x28(,%rdx,8),%rcx
add    %rbp,%rcx
cmp    %rcx,%rsi
setb   %r11b
lea    0x0(,%r8,8),%rsi
add    %rbp,%rsi
cmp    %r10,%rsi
setb   %cl
and    %r11b,%cl
or     %al,%cl
mov    %cl,0x4f(%rsp)
mov    %rdi,0x160(%rsp)
and    $0xfffffffffffffffe,%rdi
mov    %rdi,0xc8(%rsp)
lea    (%rdi,%rdi,4),%rcx
add    %r8,%rcx
mov    %rcx,0x158(%rsp)
lea    0x8(%r15),%rdi
mov    %rdi,0x58(%rsp)
mov    %r9,%r8
lea    0x8(,%r9,8),%rcx
add    %r13,%rcx
cmp    %rcx,%rdi
setb   %cl
lea    (%r15,%r9,8),%rsi
cmp    %r13,%rsi
seta   %r11b
and    %cl,%r11b
mov    0x200(%rsp),%r9
lea    (%r9,%r8,8),%rcx
cmp    %rcx,%rdi
setb   %r14b
lea    0x8(%r9),%rdi
cmp    %rsi,%rdi
setb   %cl
and    %r14b,%cl
mov    0x208(%rsp),%r9d
lea    (%r15,%rdx,8),%rdx
add    $0x28,%rdx
or     %cl,%r11b
mov    %r11b,0x4e(%rsp)
lea    -0x1(%r8),%rdi
mov    %rdi,0x80(%rsp)
mov    %rdi,%r14
and    $0xfffffffffffffffc,%r14
mov    %r8,%rdi
neg    %rdi
mov    %rdi,0x100(%rsp)
cmp    %rdx,0x28(%rsp)
setb   %r10b
mov    0x60(%rsp),%rdx
lea    (%r15,%rdx,8),%rdi
cmp    0x10(%rsp),%rdi
mov    0xc0(%rsp),%r11
setb   %dl
and    %r10b,%dl
or     %al,%dl
mov    %dl,0x4d(%rsp)
mov    0x40(%rsp),%rax
and    $0xfffffffe,%eax
mov    %rax,0x180(%rsp)
mov    %r8,0x188(%rsp)
lea    (%r12,%r8,8),%rax
add    $0x8,%rax
cmp    %rax,0x58(%rsp)
mov    0x40(%rsp),%r10
setb   %al
cmp    %r12,%rsi
mov    0x210(%rsp),%esi
seta   %dl
and    %al,%dl
or     %cl,%dl
mov    %dl,0x1e(%rsp)
lea    (%r15,%r10,8),%rax
cmp    %r13,%rax
seta   %cl
lea    0x0(,%r10,8),%rax
add    %r13,%rax
cmp    %r15,%rax
seta   %dl
and    %cl,%dl
lea    (%r12,%r10,8),%rcx
cmp    %r13,%rcx
seta   %dil
cmp    %r12,%rax
seta   %cl
and    %dil,%cl
or     %dl,%cl
mov    %cl,0x1f(%rsp)
mov    %r10d,%ecx
and    $0xfffffffc,%ecx
mov    %rcx,0xe0(%rsp)
mov    %r10,%rcx
neg    %rcx
mov    %rcx,0xe8(%rsp)
mov    %r11d,%ecx
and    $0x3,%ecx
mov    %rcx,0x98(%rsp)
mov    %r11d,%ecx
and    $0xfffffffc,%ecx
mov    %rcx,0xb8(%rsp)
mov    %r11d,%ecx
and    $0xfffffffe,%ecx
mov    %rcx,0x138(%rsp)
mov    0x200(%rsp),%r8
lea    (%r8,%r10,8),%rcx
cmp    %r13,%rcx
seta   %cl
cmp    %r8,%rax
seta   %dl
and    %cl,%dl
mov    0x30(%rsp),%rdi
lea    (%rdi,%r10,8),%rcx
add    $0x8,%rcx
cmp    %r13,%rcx
seta   %cl
cmp    %rdi,%rax
seta   %al
and    %cl,%al
or     %dl,%al
mov    %al,0x4c(%rsp)
lea    -0x2(%rbx),%eax
cltq
mov    %rax,0x108(%rsp)
movapd 0x3aa1(%rip),%xmm13
movapd 0xa0(%rsp),%xmm10
movapd %xmm10,%xmm12
xorpd  %xmm13,%xmm12
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x148(%rsp)
movapd %xmm10,%xmm7
unpcklpd %xmm10,%xmm7
movapd %xmm7,%xmm6
xorpd  %xmm13,%xmm6
lea    0x0(,%r10,8),%rax
and    $0xffffffffffffffe0,%rax
mov    %rax,0xd8(%rsp)
movsd  0x3a80(%rip),%xmm15
movsd  0x3a80(%rip),%xmm5
movapd 0x3a3f(%rip),%xmm9
mov    0xd0(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0x1c0(%rsp)
mov    0x168(%rsp),%rax
lea    0x0(%rbp,%rax,8),%rax
mov    %rax,0x1b0(%rsp)
lea    0x1(%rsi),%eax
mov    %eax,0x118(%rsp)
lea    -0x1(%r10),%rax
mov    %rax,0x170(%rsp)
lea    -0x1(%r11),%rax
mov    %rax,0x90(%rsp)
mov    %r14,0xf8(%rsp)
lea    0x1(%r14),%rax
mov    %rax,0xf0(%rsp)
mov    0x60(%rsp),%rax
lea    0x0(,%rax,8),%rax
mov    %rax,0x150(%rsp)
mov    $0x1,%r14d
mov    $0xffffffff,%edx
mov    $0xfffffffe,%ecx
movapd %xmm15,%xmm14
xorpd  %xmm8,%xmm8
movapd %xmm12,0x120(%rsp)
movapd %xmm7,0x1a0(%rsp)
movapd %xmm6,0x190(%rsp)
jmp    16a7 <sfa+0x527>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x10(%rsp),%edx
mov    0x28(%rsp),%ecx
movapd %xmm8,%xmm7
movapd %xmm14,%xmm8
lea    0x1(%r14),%eax
movapd %xmm0,%xmm14
cmp    %esi,%r14d
mov    %eax,%r14d
je     3572 <sfa+0x23f2>
mov    %ecx,0x28(%rsp)
mov    %edx,0x10(%rsp)
addsd  0x3980(%rip),%xmm8
divsd  %xmm14,%xmm8
test   %r11d,%r11d
jle    1790 <sfa+0x610>
movsd  0x0(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  (%r12),%xmm0
movsd  %xmm0,0x0(%r13)
cmp    $0x1,%r11d
je     1790 <sfa+0x610>
movsd  0x8(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x8(%r12),%xmm0
movsd  %xmm0,0x8(%r13)
cmp    $0x2,%r11d
je     1790 <sfa+0x610>
movsd  0x10(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x10(%r12),%xmm0
movsd  %xmm0,0x10(%r13)
cmp    $0x3,%r11d
je     1790 <sfa+0x610>
movsd  0x18(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x18(%r12),%xmm0
movsd  %xmm0,0x18(%r13)
cmp    $0x4,%r11d
je     1790 <sfa+0x610>
movsd  0x20(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x20(%r12),%xmm0
movsd  %xmm0,0x20(%r13)
movsd  0x28(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x28(%r12),%xmm0
movsd  %xmm0,0x28(%r13)
movsd  0x30(%rbp),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x30(%r12),%xmm0
movsd  %xmm0,0x30(%r13)
cs nopw 0x0(%rax,%rax,1)
cmp    %r9d,%r11d
mov    0x188(%rsp),%rdx
jge    19c9 <sfa+0x849>
cmpq   $0x5,0x178(%rsp)
setb   %al
or     0x4f(%rsp),%al
mov    0x60(%rsp),%rax
jne    1940 <sfa+0x7c0>
movsd  %xmm5,0x58(%rsp)
movsd  %xmm14,0x20(%rsp)
movapd %xmm7,%xmm14
movapd %xmm15,%xmm11
movapd %xmm6,%xmm15
movapd %xmm8,%xmm9
unpcklpd %xmm8,%xmm9
mov    0x150(%rsp),%rax
mov    0xc8(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%r12,%rax,1),%xmm7
movsd  0x8(%r12,%rax,1),%xmm1
movsd  0x10(%r12,%rax,1),%xmm0
movsd  0x18(%r12,%rax,1),%xmm6
movhpd 0x28(%r12,%rax,1),%xmm7
movsd  0x0(%rbp,%rax,1),%xmm2
movsd  0x8(%rbp,%rax,1),%xmm4
movsd  0x10(%rbp,%rax,1),%xmm3
movsd  0x18(%rbp,%rax,1),%xmm5
movhpd 0x28(%rbp,%rax,1),%xmm2
mulpd  %xmm9,%xmm2
addpd  %xmm7,%xmm2
movhpd 0x30(%r12,%rax,1),%xmm1
movhpd 0x30(%rbp,%rax,1),%xmm4
mulpd  %xmm9,%xmm4
addpd  %xmm1,%xmm4
movhpd 0x38(%r12,%rax,1),%xmm0
movhpd 0x38(%rbp,%rax,1),%xmm3
mulpd  %xmm9,%xmm3
addpd  %xmm0,%xmm3
movhpd 0x40(%r12,%rax,1),%xmm6
movhpd 0x40(%rbp,%rax,1),%xmm5
mulpd  %xmm9,%xmm5
addpd  %xmm6,%xmm5
movsd  0x20(%r12,%rax,1),%xmm0
movhpd 0x48(%r12,%rax,1),%xmm0
movsd  0x20(%rbp,%rax,1),%xmm1
movhpd 0x48(%rbp,%rax,1),%xmm1
mulpd  %xmm9,%xmm1
addpd  %xmm0,%xmm1
movapd %xmm2,%xmm0
unpcklpd %xmm4,%xmm0
movsd  %xmm1,%xmm2
unpckhpd %xmm3,%xmm4
unpcklpd %xmm5,%xmm3
movhlps %xmm5,%xmm1
movups %xmm1,0x40(%r13,%rax,1)
movupd %xmm4,0x30(%r13,%rax,1)
movupd %xmm2,0x20(%r13,%rax,1)
movupd %xmm3,0x10(%r13,%rax,1)
movupd %xmm0,0x0(%r13,%rax,1)
add    $0x50,%rax
add    $0xfffffffffffffffe,%rcx
jne    1800 <sfa+0x680>
mov    0x158(%rsp),%rax
mov    0xc8(%rsp),%rcx
cmp    %rcx,0x160(%rsp)
movapd 0x36ea(%rip),%xmm9
movapd %xmm15,%xmm6
movapd %xmm11,%xmm15
movapd %xmm14,%xmm7
movsd  0x20(%rsp),%xmm14
movsd  0x58(%rsp),%xmm5
je     19c9 <sfa+0x849>
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm0
mulsd  %xmm8,%xmm0
addsd  (%r12,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
movsd  0x8(%rbp,%rax,8),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x8(%r12,%rax,8),%xmm0
movsd  %xmm0,0x8(%r13,%rax,8)
movsd  0x10(%rbp,%rax,8),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x10(%r12,%rax,8),%xmm0
movsd  %xmm0,0x10(%r13,%rax,8)
movsd  0x18(%rbp,%rax,8),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x18(%r12,%rax,8),%xmm0
movsd  %xmm0,0x18(%r13,%rax,8)
movsd  0x20(%rbp,%rax,8),%xmm0
mulsd  %xmm8,%xmm0
addsd  0x20(%r12,%rax,8),%xmm0
movsd  %xmm0,0x20(%r13,%rax,8)
add    $0x5,%rax
cmp    %rbx,%rax
jl     1940 <sfa+0x7c0>
movsd  0x0(%r13),%xmm0
addsd  %xmm0,%xmm0
subsd  0x8(%r13),%xmm0
subsd  (%r8),%xmm0
movsd  %xmm0,(%r15)
cmp    $0x3,%r9d
movsd  0x3658(%rip),%xmm8
jl     1b50 <sfa+0x9d0>
cmpq   $0x4,0x80(%rsp)
setb   %al
or     0x4e(%rsp),%al
mov    $0x1,%ecx
jne    1aa9 <sfa+0x929>
xor    %eax,%eax
mov    0xf8(%rsp),%rcx
nopl   0x0(%rax,%rax,1)
movupd 0x0(%r13,%rax,8),%xmm0
movupd 0x8(%r13,%rax,8),%xmm1
movupd 0x10(%r13,%rax,8),%xmm2
movupd 0x18(%r13,%rax,8),%xmm3
movapd %xmm1,%xmm4
subpd  %xmm0,%xmm4
movapd %xmm3,%xmm0
subpd  %xmm2,%xmm0
addpd  %xmm1,%xmm4
addpd  %xmm3,%xmm0
movupd 0x20(%r13,%rax,8),%xmm1
subpd  %xmm1,%xmm0
subpd  %xmm2,%xmm4
movupd 0x8(%r8,%rax,8),%xmm1
subpd  %xmm1,%xmm4
movupd 0x18(%r8,%rax,8),%xmm1
subpd  %xmm1,%xmm0
movupd %xmm4,0x8(%r15,%rax,8)
movupd %xmm0,0x18(%r15,%rax,8)
add    $0x4,%rax
cmp    %rax,%rcx
jne    1a20 <sfa+0x8a0>
mov    %rcx,%rax
mov    0xf0(%rsp),%rcx
cmp    %rax,0x80(%rsp)
je     1b50 <sfa+0x9d0>
mov    %rcx,%rax
test   $0x1,%dl
jne    1ade <sfa+0x95e>
movsd  0x0(%r13,%rcx,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r13,%rcx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r13,%rcx,8),%xmm1
lea    0x1(%rcx),%rax
subsd  (%r8,%rcx,8),%xmm1
movsd  %xmm1,(%r15,%rcx,8)
not    %rcx
cmp    0x100(%rsp),%rcx
je     1b50 <sfa+0x9d0>
nopl   0x0(%rax,%rax,1)
movsd  0x0(%r13,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r13,%rax,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r13,%rax,8),%xmm1
subsd  (%r8,%rax,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
movsd  0x8(%r13,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  0x0(%r13,%rax,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x10(%r13,%rax,8),%xmm1
subsd  0x8(%r8,%rax,8),%xmm1
movsd  %xmm1,0x8(%r15,%rax,8)
lea    0x2(%rax),%rcx
mov    %rcx,%rax
cmp    %rcx,%rdx
jne    1af0 <sfa+0x970>
mov    0x110(%rsp),%rax
movsd  0x0(%r13,%rax,8),%xmm0
movapd %xmm0,%xmm1
mov    0x108(%rsp),%rcx
subsd  0x0(%r13,%rcx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  (%r8,%rax,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
mov    0xd0(%rsp),%rax
test   %eax,%eax
jle    1c30 <sfa+0xab0>
movsd  (%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x0(%rbp)
cmp    $0x1,%eax
je     1c30 <sfa+0xab0>
movsd  0x8(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x8(%rbp)
cmp    $0x2,%eax
je     1c30 <sfa+0xab0>
movsd  0x10(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x10(%rbp)
cmp    $0x3,%eax
je     1c30 <sfa+0xab0>
movsd  0x18(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x18(%rbp)
cmp    $0x4,%eax
je     1c30 <sfa+0xab0>
movsd  0x20(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x20(%rbp)
cmp    $0x5,%eax
je     1c30 <sfa+0xab0>
movsd  0x28(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x28(%rbp)
cmp    $0x6,%eax
je     1c30 <sfa+0xab0>
movsd  0x30(%r12),%xmm0
xorpd  %xmm13,%xmm0
movlpd %xmm0,0x30(%rbp)
nopw   0x0(%rax,%rax,1)
cmp    %r9d,%eax
mov    0x180(%rsp),%rdx
jge    1cda <sfa+0xb5a>
mov    0x168(%rsp),%rax
nopl   0x0(%rax)
movsd  (%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x0(%rbp,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x8(%rbp,%rax,8)
movsd  0x10(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x10(%rbp,%rax,8)
movsd  0x18(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x18(%rbp,%rax,8)
movsd  0x20(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x20(%rbp,%rax,8)
movsd  0x28(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x28(%rbp,%rax,8)
movsd  0x30(%r12,%rax,8),%xmm0
xorpd  %xmm9,%xmm0
movlpd %xmm0,0x30(%rbp,%rax,8)
add    $0x7,%rax
cmp    %rbx,%rax
jl     1c50 <sfa+0xad0>
test   %r11d,%r11d
jle    1dd0 <sfa+0xc50>
movsd  (%r15),%xmm0
mulsd  0x3350(%rip),%xmm0
addsd  0x0(%r13),%xmm0
movsd  %xmm0,(%r12)
cmp    $0x1,%r11d
je     1dd0 <sfa+0xc50>
movsd  0x8(%r15),%xmm0
mulsd  0x332c(%rip),%xmm0
addsd  0x8(%r13),%xmm0
movsd  %xmm0,0x8(%r12)
cmp    $0x2,%r11d
je     1dd0 <sfa+0xc50>
movsd  0x10(%r15),%xmm0
mulsd  0x3307(%rip),%xmm0
addsd  0x10(%r13),%xmm0
movsd  %xmm0,0x10(%r12)
cmp    $0x3,%r11d
je     1dd0 <sfa+0xc50>
movsd  0x18(%r15),%xmm0
mulsd  0x32e2(%rip),%xmm0
addsd  0x18(%r13),%xmm0
movsd  %xmm0,0x18(%r12)
cmp    $0x4,%r11d
je     1dd0 <sfa+0xc50>
movsd  0x20(%r13),%xmm0
movsd  0x20(%r15),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%r12)
movsd  0x28(%r13),%xmm0
movsd  0x28(%r15),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x28(%r12)
movsd  0x30(%r13),%xmm0
movsd  0x30(%r15),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%r12)
cs nopw 0x0(%rax,%rax,1)
nop
cmp    %r9d,%r11d
jge    2011 <sfa+0xe91>
cmpq   $0x5,0x178(%rsp)
setb   %al
or     0x4d(%rsp),%al
mov    0x60(%rsp),%rax
jne    1f70 <sfa+0xdf0>
movapd %xmm14,%xmm13
movapd %xmm15,%xmm14
movapd %xmm5,%xmm15
mov    0x150(%rsp),%rax
mov    0xc8(%rsp),%rcx
movapd 0x31f4(%rip),%xmm11
nopl   0x0(%rax)
movsd  0x0(%r13,%rax,1),%xmm0
movsd  0x8(%r13,%rax,1),%xmm2
movsd  0x10(%r13,%rax,1),%xmm1
movsd  0x18(%r13,%rax,1),%xmm3
movhpd 0x28(%r13,%rax,1),%xmm0
movsd  (%r15,%rax,1),%xmm4
movsd  0x8(%r15,%rax,1),%xmm5
movsd  0x10(%r15,%rax,1),%xmm6
movsd  0x18(%r15,%rax,1),%xmm7
movhpd 0x28(%r15,%rax,1),%xmm4
mulpd  %xmm11,%xmm4
subpd  %xmm4,%xmm0
movhpd 0x30(%r13,%rax,1),%xmm2
movhpd 0x30(%r15,%rax,1),%xmm5
mulpd  %xmm11,%xmm5
subpd  %xmm5,%xmm2
movhpd 0x38(%r13,%rax,1),%xmm1
movhpd 0x38(%r15,%rax,1),%xmm6
mulpd  %xmm11,%xmm6
subpd  %xmm6,%xmm1
movhpd 0x40(%r13,%rax,1),%xmm3
movhpd 0x40(%r15,%rax,1),%xmm7
mulpd  %xmm11,%xmm7
subpd  %xmm7,%xmm3
movsd  0x20(%r13,%rax,1),%xmm4
movhpd 0x48(%r13,%rax,1),%xmm4
movsd  0x20(%r15,%rax,1),%xmm5
movhpd 0x48(%r15,%rax,1),%xmm5
mulpd  %xmm11,%xmm5
subpd  %xmm5,%xmm4
movapd %xmm0,%xmm5
unpcklpd %xmm2,%xmm5
movsd  %xmm4,%xmm0
unpckhpd %xmm1,%xmm2
unpcklpd %xmm3,%xmm1
movhlps %xmm3,%xmm4
movups %xmm4,0x40(%r12,%rax,1)
movupd %xmm2,0x30(%r12,%rax,1)
movupd %xmm0,0x20(%r12,%rax,1)
movupd %xmm1,0x10(%r12,%rax,1)
movupd %xmm5,(%r12,%rax,1)
add    $0x50,%rax
add    $0xfffffffffffffffe,%rcx
jne    1e20 <sfa+0xca0>
mov    0x158(%rsp),%rax
mov    0xc8(%rsp),%rcx
cmp    %rcx,0x160(%rsp)
movapd %xmm15,%xmm5
movapd %xmm14,%xmm15
movapd %xmm13,%xmm14
movapd 0x1a0(%rsp),%xmm7
movapd 0x30a9(%rip),%xmm13
movapd 0x190(%rsp),%xmm6
je     2011 <sfa+0xe91>
cs nopw 0x0(%rax,%rax,1)
movsd  0x0(%r13,%rax,8),%xmm0
movsd  (%r15,%rax,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,(%r12,%rax,8)
movsd  0x8(%r13,%rax,8),%xmm0
movsd  0x8(%r15,%rax,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%r12,%rax,8)
movsd  0x10(%r13,%rax,8),%xmm0
movsd  0x10(%r15,%rax,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%r12,%rax,8)
movsd  0x18(%r13,%rax,8),%xmm0
movsd  0x18(%r15,%rax,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%r12,%rax,8)
movsd  0x20(%r13,%rax,8),%xmm0
movsd  0x20(%r15,%rax,8),%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%r12,%rax,8)
add    $0x5,%rax
cmp    %rbx,%rax
jl     1f70 <sfa+0xdf0>
test   %r9d,%r9d
jle    20bc <sfa+0xf3c>
cmpq   $0x0,0x170(%rsp)
je     2090 <sfa+0xf10>
xor    %eax,%eax
jmp    2040 <sfa+0xec0>
nopl   0x0(%rax)
movsd  %xmm0,0x8(%r12,%rax,8)
add    $0x2,%rax
cmp    %rax,%rdx
je     2092 <sfa+0xf12>
movsd  (%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     205e <sfa+0xede>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
jbe    2064 <sfa+0xee4>
movsd  %xmm0,(%r12,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     2030 <sfa+0xeb0>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
ja     2030 <sfa+0xeb0>
jmp    2037 <sfa+0xeb7>
cs nopw 0x0(%rax,%rax,1)
nop
xor    %eax,%eax
test   $0x1,%r10b
je     20bc <sfa+0xf3c>
movsd  (%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     20b6 <sfa+0xf36>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
jbe    20bc <sfa+0xf3c>
movsd  %xmm0,(%r12,%rax,8)
test   %r11d,%r11d
jle    2160 <sfa+0xfe0>
movsd  (%r12),%xmm0
addsd  0x0(%rbp),%xmm0
movsd  %xmm0,0x0(%rbp)
cmp    $0x1,%r11d
je     2160 <sfa+0xfe0>
movsd  0x8(%r12),%xmm0
addsd  0x8(%rbp),%xmm0
movsd  %xmm0,0x8(%rbp)
cmp    $0x2,%r11d
je     2160 <sfa+0xfe0>
movsd  0x10(%r12),%xmm0
addsd  0x10(%rbp),%xmm0
movsd  %xmm0,0x10(%rbp)
cmp    $0x3,%r11d
je     2160 <sfa+0xfe0>
movsd  0x18(%r12),%xmm0
addsd  0x18(%rbp),%xmm0
movsd  %xmm0,0x18(%rbp)
cmp    $0x4,%r11d
je     2160 <sfa+0xfe0>
movsd  0x20(%r12),%xmm0
addsd  0x20(%rbp),%xmm0
movsd  %xmm0,0x20(%rbp)
movsd  0x28(%r12),%xmm0
addsd  0x28(%rbp),%xmm0
movsd  %xmm0,0x28(%rbp)
movsd  0x30(%r12),%xmm0
addsd  0x30(%rbp),%xmm0
movsd  %xmm0,0x30(%rbp)
nopw   0x0(%rax,%rax,1)
cmp    %r9d,%r11d
jge    21d7 <sfa+0x1057>
mov    0x60(%rsp),%rax
nopw   0x0(%rax,%rax,1)
movsd  (%r12,%rax,8),%xmm0
addsd  0x0(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x0(%rbp,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm0
addsd  0x8(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x8(%rbp,%rax,8)
movsd  0x10(%r12,%rax,8),%xmm0
addsd  0x10(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x10(%rbp,%rax,8)
movsd  0x18(%r12,%rax,8),%xmm0
addsd  0x18(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x18(%rbp,%rax,8)
movsd  0x20(%r12,%rax,8),%xmm0
addsd  0x20(%rbp,%rax,8),%xmm0
movsd  %xmm0,0x20(%rbp,%rax,8)
add    $0x5,%rax
cmp    %rbx,%rax
jl     2170 <sfa+0xff0>
movapd %xmm14,%xmm0
mulsd  0x2e6c(%rip),%xmm0
mulsd  %xmm14,%xmm0
addsd  %xmm15,%xmm0
ucomisd 0x2e6a(%rip),%xmm0
jb     2210 <sfa+0x1090>
movapd %xmm7,%xmm8
sqrtsd %xmm0,%xmm0
jmp    229d <sfa+0x111d>
cs nopw 0x0(%rax,%rax,1)
movsd  %xmm5,0x58(%rsp)
movsd  %xmm14,0x20(%rsp)
call   1080 <sqrt@plt>
movsd  0x20(%rsp),%xmm14
movapd 0x2dce(%rip),%xmm9
movsd  0x2df5(%rip),%xmm15
movapd 0x190(%rsp),%xmm6
movapd 0x1a0(%rsp),%xmm8
movapd 0x120(%rsp),%xmm12
movapd 0x2d9f(%rip),%xmm13
movsd  0x58(%rsp),%xmm5
mov    0xc0(%rsp),%r11
mov    0x210(%rsp),%esi
mov    0x40(%rsp),%r10
mov    0x200(%rsp),%r8
mov    %r14,%rax
mov    0x208(%rsp),%r9d
mov    0x30(%rsp),%rdi
movapd 0xa0(%rsp),%xmm10
addsd  %xmm15,%xmm0
mulsd  0x2dae(%rip),%xmm0
mov    %r14d,%eax
cltd
idivl  0x228(%rsp)
test   %edx,%edx
jne    1680 <sfa+0x500>
movapd %xmm6,%xmm11
mov    0x230(%rsp),%eax
add    $0xffffffff,%eax
cmp    $0x3,%eax
movapd 0x2d49(%rip),%xmm6
ja     241f <sfa+0x129f>
lea    0x2d84(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
mov    0x188(%rsp),%rdx
movapd 0x2d25(%rip),%xmm3
jmp    *%rax
movsd  %xmm5,0x58(%rsp)
mov    %r14,0x20(%rsp)
mov    0x68(%rsp),%r14
movsd  (%r14),%xmm0
movsd  %xmm0,0x140(%rsp)
mov    %r14,%rdi
mov    %r12,%rsi
mov    %r15,%rdx
mov    %r13,%rcx
movapd %xmm10,%xmm0
mov    $0x1,%al
call   1040 <dualityGap@plt>
movsd  0x78(%rsp),%xmm0
ucomisd (%r14),%xmm0
jae    4067 <sfa+0x2ee7>
mov    0x30(%rsp),%r14
mov    %r14,%rdi
mov    0x38(%rsp),%rsi
mov    %r12,%rdx
mov    %r15,%rcx
mov    0x70(%rsp),%r8
movapd 0xa0(%rsp),%xmm0
mov    0x208(%rsp),%r9d
mov    $0x1,%al
call   1070 <supportSet@plt>
mov    %eax,%edx
sub    0x10(%rsp),%edx
mov    %edx,%ecx
neg    %ecx
cmovs  %edx,%ecx
cmp    0x11c(%rsp),%ecx
jae    321b <sfa+0x209b>
mov    %rbx,0x130(%rsp)
sub    $0x8,%rsp
mov    %r14,%rdi
mov    %r12,%rsi
mov    0x70(%rsp),%r14
mov    %r14,%rdx
mov    0x40(%rsp),%rcx
mov    0x208(%rsp),%r8
mov    %r15,%r9
movaps 0xa8(%rsp),%xmm0
mov    $0x1,%al
mov    0x210(%rsp),%ebx
push   %rbx
push   0x80(%rsp)
push   %r13
call   1090 <generateSolution@plt>
add    $0x20,%rsp
movsd  (%r14),%xmm0
movsd  0x78(%rsp),%xmm1
ucomisd %xmm0,%xmm1
ja     40fb <sfa+0x2f7b>
ucomisd 0x58(%rsp),%xmm0
jne    320e <sfa+0x208e>
jp     320e <sfa+0x208e>
cmp    0x28(%rsp),%eax
mov    0x30(%rsp),%r14
mov    0x130(%rsp),%rbx
jne    321b <sfa+0x209b>
jmp    4115 <sfa+0x2f95>
movq   $0x0,0x50(%rsp)
xorpd  %xmm1,%xmm1
cmpb   $0x0,0xf(%rsp)
mov    0x98(%rsp),%rdx
movapd 0x2bdf(%rip),%xmm7
movsd  %xmm5,0x58(%rsp)
jne    2c22 <sfa+0x1aa2>
cmpq   $0x3,0x90(%rsp)
mov    0xb8(%rsp),%rcx
jae    2b98 <sfa+0x1a18>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
jmp    2be5 <sfa+0x1a65>
movq   $0x0,0x50(%rsp)
xorpd  %xmm1,%xmm1
cmpb   $0x0,0xf(%rsp)
mov    0x10(%rsp),%edx
movapd %xmm8,%xmm7
jne    2d69 <sfa+0x1be9>
movapd %xmm5,%xmm8
cmpq   $0x3,0x90(%rsp)
mov    0xb8(%rsp),%rcx
mov    %rsi,%rdi
jae    2cc3 <sfa+0x1b43>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
jmp    2d15 <sfa+0x1b95>
movsd  (%r12),%xmm1
addsd  %xmm1,%xmm1
subsd  0x8(%r12),%xmm1
subsd  (%r8),%xmm1
movsd  %xmm1,(%r15)
cmp    $0x3,%r9d
movapd %xmm11,%xmm6
movapd %xmm8,%xmm7
jl     264e <sfa+0x14ce>
cmpq   $0x4,0x80(%rsp)
setb   %al
or     0x1e(%rsp),%al
mov    $0x1,%ecx
jne    25ad <sfa+0x142d>
movapd %xmm5,%xmm8
xor    %eax,%eax
mov    0xf8(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movupd (%r12,%rax,8),%xmm1
movupd 0x8(%r12,%rax,8),%xmm2
movupd 0x10(%r12,%rax,8),%xmm3
movupd 0x18(%r12,%rax,8),%xmm4
movapd %xmm2,%xmm5
subpd  %xmm1,%xmm5
movapd %xmm4,%xmm1
subpd  %xmm3,%xmm1
addpd  %xmm2,%xmm5
addpd  %xmm4,%xmm1
movupd 0x20(%r12,%rax,8),%xmm2
subpd  %xmm2,%xmm1
subpd  %xmm3,%xmm5
movupd 0x8(%r8,%rax,8),%xmm2
subpd  %xmm2,%xmm5
movupd 0x18(%r8,%rax,8),%xmm2
subpd  %xmm2,%xmm1
movupd %xmm5,0x8(%r15,%rax,8)
movupd %xmm1,0x18(%r15,%rax,8)
add    $0x4,%rax
cmp    %rax,%rcx
jne    2520 <sfa+0x13a0>
mov    %rcx,%rax
mov    0xf0(%rsp),%rcx
cmp    %rax,0x80(%rsp)
movapd %xmm8,%xmm5
je     264e <sfa+0x14ce>
mov    %rcx,%rax
test   $0x1,%dl
jne    25e1 <sfa+0x1461>
movsd  (%r12,%rcx,8),%xmm1
movapd %xmm1,%xmm2
subsd  -0x8(%r12,%rcx,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x8(%r12,%rcx,8),%xmm2
lea    0x1(%rcx),%rax
subsd  (%r8,%rcx,8),%xmm2
movsd  %xmm2,(%r15,%rcx,8)
not    %rcx
cmp    0x100(%rsp),%rcx
je     264e <sfa+0x14ce>
xchg   %ax,%ax
movsd  (%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  -0x8(%r12,%rax,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x8(%r12,%rax,8),%xmm2
subsd  (%r8,%rax,8),%xmm2
movsd  %xmm2,(%r15,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  (%r12,%rax,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x10(%r12,%rax,8),%xmm2
subsd  0x8(%r8,%rax,8),%xmm2
movsd  %xmm2,0x8(%r15,%rax,8)
lea    0x2(%rax),%rcx
mov    %rcx,%rax
cmp    %rcx,%rdx
jne    25f0 <sfa+0x1470>
mov    0x110(%rsp),%rax
movsd  (%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
mov    0x108(%rsp),%rcx
subsd  (%r12,%rcx,8),%xmm2
addsd  %xmm1,%xmm2
subsd  (%r8,%rax,8),%xmm2
movsd  %xmm2,(%r15,%rax,8)
test   %r9d,%r9d
mov    0x10(%rsp),%edx
jle    29df <sfa+0x185f>
cmp    $0x4,%r9d
setb   %al
or     0x1f(%rsp),%al
je     289f <sfa+0x171f>
xor    %ecx,%ecx
jmp    2934 <sfa+0x17b4>
movsd  (%r12),%xmm1
addsd  %xmm1,%xmm1
subsd  0x8(%r12),%xmm1
subsd  (%r8),%xmm1
movsd  %xmm1,(%r15)
cmp    $0x3,%r9d
movapd %xmm11,%xmm6
movapd %xmm8,%xmm7
jl     284e <sfa+0x16ce>
cmpq   $0x4,0x80(%rsp)
setb   %al
or     0x1e(%rsp),%al
mov    $0x1,%ecx
jne    27a2 <sfa+0x1622>
movapd %xmm3,%xmm11
movapd %xmm5,%xmm8
xor    %eax,%eax
mov    0xf8(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movupd (%r12,%rax,8),%xmm1
movupd 0x8(%r12,%rax,8),%xmm2
movupd 0x10(%r12,%rax,8),%xmm3
movupd 0x18(%r12,%rax,8),%xmm4
movapd %xmm2,%xmm5
subpd  %xmm1,%xmm5
movapd %xmm4,%xmm1
subpd  %xmm3,%xmm1
addpd  %xmm2,%xmm5
addpd  %xmm4,%xmm1
movupd 0x20(%r12,%rax,8),%xmm2
subpd  %xmm2,%xmm1
subpd  %xmm3,%xmm5
movupd 0x8(%r8,%rax,8),%xmm2
subpd  %xmm2,%xmm5
movupd 0x18(%r8,%rax,8),%xmm2
subpd  %xmm2,%xmm1
movupd %xmm5,0x8(%r15,%rax,8)
movupd %xmm1,0x18(%r15,%rax,8)
add    $0x4,%rax
cmp    %rax,%rcx
jne    2710 <sfa+0x1590>
mov    %rcx,%rax
mov    0xf0(%rsp),%rcx
cmp    %rax,0x80(%rsp)
movapd %xmm8,%xmm5
movapd %xmm11,%xmm3
je     284e <sfa+0x16ce>
mov    %rcx,%rax
test   $0x1,%dl
jne    27d6 <sfa+0x1656>
movsd  (%r12,%rcx,8),%xmm1
movapd %xmm1,%xmm2
subsd  -0x8(%r12,%rcx,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x8(%r12,%rcx,8),%xmm2
lea    0x1(%rcx),%rax
subsd  (%r8,%rcx,8),%xmm2
movsd  %xmm2,(%r15,%rcx,8)
not    %rcx
cmp    0x100(%rsp),%rcx
je     284e <sfa+0x16ce>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  (%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  -0x8(%r12,%rax,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x8(%r12,%rax,8),%xmm2
subsd  (%r8,%rax,8),%xmm2
movsd  %xmm2,(%r15,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
subsd  (%r12,%rax,8),%xmm2
addsd  %xmm1,%xmm2
subsd  0x10(%r12,%rax,8),%xmm2
subsd  0x8(%r8,%rax,8),%xmm2
movsd  %xmm2,0x8(%r15,%rax,8)
lea    0x2(%rax),%rcx
mov    %rcx,%rax
cmp    %rcx,%rdx
jne    27f0 <sfa+0x1670>
mov    0x110(%rsp),%rax
movsd  (%r12,%rax,8),%xmm1
movapd %xmm1,%xmm2
mov    0x108(%rsp),%rcx
subsd  (%r12,%rcx,8),%xmm2
addsd  %xmm1,%xmm2
subsd  (%r8,%rax,8),%xmm2
movsd  %xmm2,(%r15,%rax,8)
test   %r9d,%r9d
jle    2b5f <sfa+0x19df>
cmp    $0x4,%r9d
setb   %al
or     0x1f(%rsp),%al
je     2a1c <sfa+0x189c>
xor    %ecx,%ecx
jmp    2ab9 <sfa+0x1939>
movapd %xmm5,%xmm8
xor    %eax,%eax
mov    0xd8(%rsp),%rcx
xchg   %ax,%ax
movupd (%r15,%rax,1),%xmm1
movupd 0x10(%r15,%rax,1),%xmm2
xorpd  %xmm3,%xmm3
cmpltpd %xmm1,%xmm3
xorpd  %xmm1,%xmm1
cmpltpd %xmm2,%xmm1
movupd (%r12,%rax,1),%xmm2
movupd 0x10(%r12,%rax,1),%xmm4
movapd %xmm7,%xmm5
andpd  %xmm3,%xmm5
andnpd %xmm6,%xmm3
orpd   %xmm5,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm7,%xmm2
andpd  %xmm1,%xmm2
andnpd %xmm6,%xmm1
orpd   %xmm2,%xmm1
addpd  %xmm4,%xmm1
movupd %xmm3,0x0(%r13,%rax,1)
movupd %xmm1,0x10(%r13,%rax,1)
add    $0x20,%rax
cmp    %rax,%rcx
jne    28b0 <sfa+0x1730>
mov    0xe0(%rsp),%rax
mov    %rax,%rcx
cmp    %r10,%rax
movapd %xmm8,%xmm5
je     29df <sfa+0x185f>
mov    %rcx,%rax
test   $0x1,%r10b
je     296e <sfa+0x17ee>
xorpd  %xmm1,%xmm1
cmpltsd (%r15,%rcx,8),%xmm1
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  (%r12,%rcx,8),%xmm1
movsd  %xmm1,0x0(%r13,%rcx,8)
mov    %rcx,%rax
or     $0x1,%rax
not    %rcx
cmp    0xe8(%rsp),%rcx
je     29df <sfa+0x185f>
nopl   0x0(%rax,%rax,1)
xorpd  %xmm1,%xmm1
cmpltsd (%r15,%rax,8),%xmm1
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  (%r12,%rax,8),%xmm1
movsd  %xmm1,0x0(%r13,%rax,8)
xorpd  %xmm1,%xmm1
cmpltsd 0x8(%r15,%rax,8),%xmm1
01
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  0x8(%r12,%rax,8),%xmm1
movsd  %xmm1,0x8(%r13,%rax,8)
add    $0x2,%rax
cmp    %rax,%r10
jne    2980 <sfa+0x1800>
movq   $0x0,0x50(%rsp)
xorpd  %xmm1,%xmm1
cmpb   $0x0,0xf(%rsp)
jne    2ea9 <sfa+0x1d29>
cmpq   $0x3,0x90(%rsp)
mov    0xb8(%rsp),%rcx
mov    %rsi,%rdi
xorpd  %xmm1,%xmm1
jae    2e00 <sfa+0x1c80>
xor    %eax,%eax
jmp    2e60 <sfa+0x1ce0>
movapd %xmm3,%xmm11
movapd %xmm5,%xmm8
xor    %eax,%eax
mov    0xd8(%rsp),%rcx
movupd (%r15,%rax,1),%xmm1
movupd 0x10(%r15,%rax,1),%xmm2
xorpd  %xmm3,%xmm3
cmpltpd %xmm1,%xmm3
xorpd  %xmm1,%xmm1
cmpltpd %xmm2,%xmm1
movupd (%r12,%rax,1),%xmm2
movupd 0x10(%r12,%rax,1),%xmm4
movapd %xmm7,%xmm5
andpd  %xmm3,%xmm5
andnpd %xmm6,%xmm3
orpd   %xmm5,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm7,%xmm2
andpd  %xmm1,%xmm2
andnpd %xmm6,%xmm1
orpd   %xmm2,%xmm1
addpd  %xmm4,%xmm1
movupd %xmm3,0x0(%r13,%rax,1)
movupd %xmm1,0x10(%r13,%rax,1)
add    $0x20,%rax
cmp    %rax,%rcx
jne    2a30 <sfa+0x18b0>
mov    0xe0(%rsp),%rax
mov    %rax,%rcx
cmp    %r10,%rax
movapd %xmm8,%xmm5
movapd %xmm11,%xmm3
je     2b5f <sfa+0x19df>
mov    %rcx,%rax
test   $0x1,%r10b
je     2af3 <sfa+0x1973>
xorpd  %xmm1,%xmm1
cmpltsd (%r15,%rcx,8),%xmm1
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  (%r12,%rcx,8),%xmm1
movsd  %xmm1,0x0(%r13,%rcx,8)
mov    %rcx,%rax
or     $0x1,%rax
not    %rcx
cmp    0xe8(%rsp),%rcx
je     2b5f <sfa+0x19df>
xorpd  %xmm1,%xmm1
cmpltsd (%r15,%rax,8),%xmm1
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  (%r12,%rax,8),%xmm1
movsd  %xmm1,0x0(%r13,%rax,8)
xorpd  %xmm1,%xmm1
cmpltsd 0x8(%r15,%rax,8),%xmm1
01
movapd %xmm1,%xmm2
andpd  %xmm10,%xmm2
andnpd %xmm12,%xmm1
orpd   %xmm2,%xmm1
addsd  0x8(%r12,%rax,8),%xmm1
movsd  %xmm1,0x8(%r13,%rax,8)
add    $0x2,%rax
cmp    %rax,%r10
jne    2b00 <sfa+0x1980>
mov    %rsi,%rdi
xorpd  %xmm1,%xmm1
cmpb   $0x0,0xf(%rsp)
jne    2ff7 <sfa+0x1e77>
movapd %xmm3,%xmm8
cmpq   $0x3,0x90(%rsp)
jae    2f4e <sfa+0x1dce>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
mov    0x98(%rsp),%rcx
jmp    2fc0 <sfa+0x1e40>
xorpd  %xmm2,%xmm2
xor    %eax,%eax
xchg   %ax,%ax
movsd  0x0(%rbp,%rax,8),%xmm3
movsd  0x8(%rbp,%rax,8),%xmm4
movsd  0x10(%rbp,%rax,8),%xmm5
movsd  0x18(%rbp,%rax,8),%xmm1
andpd  %xmm6,%xmm3
addsd  %xmm2,%xmm3
andpd  %xmm6,%xmm4
addsd  %xmm3,%xmm4
andpd  %xmm6,%xmm5
addsd  %xmm4,%xmm5
andpd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
add    $0x4,%rax
movapd %xmm1,%xmm2
cmp    %rax,%rcx
jne    2ba0 <sfa+0x1a20>
test   $0x3,%r11b
je     2c16 <sfa+0x1a96>
lea    0x0(,%rax,8),%rax
add    %rbp,%rax
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rcx,8),%xmm2
andpd  %xmm7,%xmm2
addsd  %xmm2,%xmm1
add    $0x1,%rcx
cmp    %rcx,%rdx
jne    2c00 <sfa+0x1a80>
movsd  %xmm1,0x50(%rsp)
movsd  0x58(%rsp),%xmm5
cmp    %r9d,%r11d
jge    2ca7 <sfa+0x1b27>
mov    0x60(%rsp),%rax
movsd  0x0(%rbp,%rax,8),%xmm2
movsd  0x8(%rbp,%rax,8),%xmm3
movsd  0x10(%rbp,%rax,8),%xmm4
movsd  0x18(%rbp,%rax,8),%xmm5
andpd  %xmm6,%xmm2
addsd  %xmm1,%xmm2
andpd  %xmm6,%xmm3
addsd  %xmm2,%xmm3
andpd  %xmm6,%xmm4
addsd  %xmm3,%xmm4
andpd  %xmm6,%xmm5
addsd  %xmm4,%xmm5
movsd  0x20(%rbp,%rax,8),%xmm1
andpd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
add    $0x5,%rax
cmp    %rbx,%rax
jl     2c30 <sfa+0x1ab0>
movsd  %xmm1,0x50(%rsp)
mov    0x10(%rsp),%edx
movapd %xmm11,%xmm6
movapd %xmm8,%xmm7
movsd  0x58(%rsp),%xmm5
divsd  0x148(%rsp),%xmm1
jmp    2f30 <sfa+0x1db0>
mov    0x10(%rsp),%edx
movapd %xmm11,%xmm6
movapd %xmm8,%xmm7
divsd  0x148(%rsp),%xmm1
jmp    2f30 <sfa+0x1db0>
xorpd  %xmm2,%xmm2
xor    %eax,%eax
nopl   0x0(%rax)
movsd  0x0(%rbp,%rax,8),%xmm3
movsd  0x8(%rbp,%rax,8),%xmm4
movsd  0x10(%rbp,%rax,8),%xmm5
movsd  0x18(%rbp,%rax,8),%xmm1
andpd  %xmm6,%xmm3
addsd  %xmm2,%xmm3
andpd  %xmm6,%xmm4
addsd  %xmm3,%xmm4
andpd  %xmm6,%xmm5
addsd  %xmm4,%xmm5
andpd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
add    $0x4,%rax
movapd %xmm1,%xmm2
cmp    %rax,%rcx
jne    2cd0 <sfa+0x1b50>
test   $0x3,%r11b
mov    0x98(%rsp),%rsi
movapd 0x22f7(%rip),%xmm3
je     2d56 <sfa+0x1bd6>
lea    0x0(,%rax,8),%rax
add    %rbp,%rax
xor    %ecx,%ecx
nopl   0x0(%rax,%rax,1)
movsd  (%rax,%rcx,8),%xmm2
andpd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
add    $0x1,%rcx
cmp    %rcx,%rsi
jne    2d40 <sfa+0x1bc0>
movsd  %xmm1,0x50(%rsp)
mov    %rdi,%rsi
mov    0x30(%rsp),%rdi
movapd %xmm8,%xmm5
cmp    %r9d,%r11d
jge    2ded <sfa+0x1c6d>
movapd %xmm5,%xmm8
mov    0x60(%rsp),%rax
nopl   0x0(%rax,%rax,1)
movsd  0x0(%rbp,%rax,8),%xmm2
movsd  0x8(%rbp,%rax,8),%xmm3
movsd  0x10(%rbp,%rax,8),%xmm4
movsd  0x18(%rbp,%rax,8),%xmm5
andpd  %xmm6,%xmm2
addsd  %xmm1,%xmm2
andpd  %xmm6,%xmm3
addsd  %xmm2,%xmm3
andpd  %xmm6,%xmm4
addsd  %xmm3,%xmm4
andpd  %xmm6,%xmm5
addsd  %xmm4,%xmm5
movsd  0x20(%rbp,%rax,8),%xmm1
andpd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
add    $0x5,%rax
cmp    %rbx,%rax
jl     2d80 <sfa+0x1c00>
movsd  %xmm1,0x50(%rsp)
movapd %xmm11,%xmm6
movapd %xmm8,%xmm5
divsd  0x148(%rsp),%xmm1
jmp    2f30 <sfa+0x1db0>
movapd %xmm11,%xmm6
divsd  0x148(%rsp),%xmm1
jmp    2f30 <sfa+0x1db0>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  0x0(%r13,%rax,8),%xmm2
movsd  0x8(%r13,%rax,8),%xmm3
mulsd  (%r15,%rax,8),%xmm2
mulsd  0x8(%r15,%rax,8),%xmm3
addsd  %xmm1,%xmm2
movsd  0x10(%r13,%rax,8),%xmm4
mulsd  0x10(%r15,%rax,8),%xmm4
addsd  %xmm2,%xmm3
movsd  0x18(%r13,%rax,8),%xmm1
mulsd  0x18(%r15,%rax,8),%xmm1
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm1
add    $0x4,%rax
cmp    %rax,%rcx
jne    2e10 <sfa+0x1c90>
test   $0x3,%r11b
mov    0x98(%rsp),%rsi
je     2e97 <sfa+0x1d17>
lea    (%r15,%rax,8),%rcx
lea    0x0(,%rax,8),%rax
add    %r13,%rax
xor    %edx,%edx
nop
movsd  (%rax,%rdx,8),%xmm2
mulsd  (%rcx,%rdx,8),%xmm2
addsd  %xmm2,%xmm1
add    $0x1,%rdx
cmp    %rdx,%rsi
jne    2e80 <sfa+0x1d00>
movsd  %xmm1,0x50(%rsp)
mov    0x10(%rsp),%edx
mov    %rdi,%rsi
mov    0x30(%rsp),%rdi
cmp    %r9d,%r11d
jge    2f30 <sfa+0x1db0>
mov    0x60(%rsp),%rax
nopw   0x0(%rax,%rax,1)
movsd  0x0(%r13,%rax,8),%xmm2
movsd  0x8(%r13,%rax,8),%xmm3
mulsd  (%r15,%rax,8),%xmm2
mulsd  0x8(%r15,%rax,8),%xmm3
addsd  %xmm1,%xmm2
movsd  0x10(%r13,%rax,8),%xmm4
mulsd  0x10(%r15,%rax,8),%xmm4
addsd  %xmm2,%xmm3
movsd  0x18(%r13,%rax,8),%xmm2
mulsd  0x18(%r15,%rax,8),%xmm2
addsd  %xmm3,%xmm4
movsd  0x20(%r13,%rax,8),%xmm1
mulsd  0x20(%r15,%rax,8),%xmm1
addsd  %xmm4,%xmm2
addsd  %xmm2,%xmm1
add    $0x5,%rax
cmp    %rbx,%rax
jl     2ec0 <sfa+0x1d40>
movsd  %xmm1,0x50(%rsp)
nopl   0x0(%rax,%rax,1)
mov    0x68(%rsp),%rax
movsd  %xmm1,(%rax)
movsd  0x78(%rsp),%xmm2
ucomisd %xmm1,%xmm2
jb     3205 <sfa+0x2085>
jmp    36ba <sfa+0x253a>
xorpd  %xmm1,%xmm1
xor    %eax,%eax
mov    0x98(%rsp),%rcx
mov    0xb8(%rsp),%rdx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  0x0(%r13,%rax,8),%xmm2
movsd  0x8(%r13,%rax,8),%xmm3
mulsd  (%r15,%rax,8),%xmm2
mulsd  0x8(%r15,%rax,8),%xmm3
addsd  %xmm1,%xmm2
movsd  0x10(%r13,%rax,8),%xmm4
mulsd  0x10(%r15,%rax,8),%xmm4
addsd  %xmm2,%xmm3
movsd  0x18(%r13,%rax,8),%xmm1
mulsd  0x18(%r15,%rax,8),%xmm1
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm1
add    $0x4,%rax
cmp    %rax,%rdx
jne    2f70 <sfa+0x1df0>
test   %rcx,%rcx
movapd %xmm8,%xmm3
je     2ff7 <sfa+0x1e77>
mov    %rcx,%rsi
lea    (%r15,%rax,8),%rcx
lea    0x0(,%rax,8),%rax
add    %r13,%rax
xor    %edx,%edx
xchg   %ax,%ax
movsd  (%rax,%rdx,8),%xmm2
mulsd  (%rcx,%rdx,8),%xmm2
addsd  %xmm2,%xmm1
add    $0x1,%rdx
cmp    %rdx,%rsi
jne    2fe0 <sfa+0x1e60>
movapd %xmm3,%xmm11
cmp    %r9d,%r11d
jge    3084 <sfa+0x1f04>
mov    0x60(%rsp),%rax
mov    0x10(%rsp),%edx
mov    0x138(%rsp),%rcx
mov    %rdi,%rsi
mov    0x30(%rsp),%rdi
xchg   %ax,%ax
movsd  0x0(%r13,%rax,8),%xmm2
movsd  0x8(%r13,%rax,8),%xmm3
mulsd  (%r15,%rax,8),%xmm2
mulsd  0x8(%r15,%rax,8),%xmm3
addsd  %xmm1,%xmm2
movsd  0x10(%r13,%rax,8),%xmm4
mulsd  0x10(%r15,%rax,8),%xmm4
addsd  %xmm2,%xmm3
movsd  0x18(%r13,%rax,8),%xmm2
mulsd  0x18(%r15,%rax,8),%xmm2
addsd  %xmm3,%xmm4
movsd  0x20(%r13,%rax,8),%xmm1
mulsd  0x20(%r15,%rax,8),%xmm1
addsd  %xmm4,%xmm2
addsd  %xmm2,%xmm1
add    $0x5,%rax
cmp    %rbx,%rax
jl     3020 <sfa+0x1ea0>
jmp    3098 <sfa+0x1f18>
mov    0x10(%rsp),%edx
mov    0x138(%rsp),%rcx
mov    %rdi,%rsi
mov    0x30(%rsp),%rdi
mov    0x68(%rsp),%rax
movsd  %xmm1,(%rax)
xorpd  %xmm2,%xmm2
cmpb   $0x0,0xf(%rsp)
jne    3128 <sfa+0x1fa8>
cmpq   $0x0,0x90(%rsp)
je     3435 <sfa+0x22b5>
xorpd  %xmm3,%xmm3
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%r15,%rax,8),%xmm4
movsd  0x8(%r15,%rax,8),%xmm2
subsd  (%r8,%rax,8),%xmm4
mulsd  (%r12,%rax,8),%xmm4
subsd  0x8(%r8,%rax,8),%xmm2
mulsd  0x8(%r12,%rax,8),%xmm2
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm2
add    $0x2,%rax
movapd %xmm2,%xmm3
cmp    %rax,%rcx
jne    30d0 <sfa+0x1f50>
test   $0x1,%r11b
je     3128 <sfa+0x1fa8>
movsd  (%r15,%rax,8),%xmm3
subsd  (%r8,%rax,8),%xmm3
mulsd  (%r12,%rax,8),%xmm3
addsd  %xmm3,%xmm2
movapd %xmm5,%xmm8
cmp    %r9d,%r11d
jge    31c7 <sfa+0x2047>
mov    0x60(%rsp),%rax
nopl   0x0(%rax,%rax,1)
movsd  (%r15,%rax,8),%xmm3
movsd  0x8(%r15,%rax,8),%xmm4
subsd  (%r8,%rax,8),%xmm3
mulsd  (%r12,%rax,8),%xmm3
subsd  0x8(%r8,%rax,8),%xmm4
addsd  %xmm2,%xmm3
mulsd  0x8(%r12,%rax,8),%xmm4
movsd  0x10(%r15,%rax,8),%xmm5
subsd  0x10(%r8,%rax,8),%xmm5
mulsd  0x10(%r12,%rax,8),%xmm5
addsd  %xmm3,%xmm4
movsd  0x18(%r15,%rax,8),%xmm3
subsd  0x18(%r8,%rax,8),%xmm3
addsd  %xmm4,%xmm5
mulsd  0x18(%r12,%rax,8),%xmm3
movsd  0x20(%r15,%rax,8),%xmm2
subsd  0x20(%r8,%rax,8),%xmm2
mulsd  0x20(%r12,%rax,8),%xmm2
addsd  %xmm5,%xmm3
addsd  %xmm3,%xmm2
add    $0x5,%rax
cmp    %rbx,%rax
jl     3140 <sfa+0x1fc0>
andpd  %xmm11,%xmm2
mulsd  0x1e84(%rip),%xmm2
movapd %xmm15,%xmm3
maxsd  %xmm2,%xmm3
movsd  %xmm3,0x50(%rsp)
divsd  %xmm3,%xmm1
mov    0x68(%rsp),%rax
movsd  %xmm1,(%rax)
movsd  0x78(%rsp),%xmm2
ucomisd %xmm1,%xmm2
jae    36ba <sfa+0x253a>
movapd %xmm8,%xmm5
mov    0x28(%rsp),%ecx
jmp    168d <sfa+0x50d>
mov    0x30(%rsp),%r14
mov    0x130(%rsp),%rbx
mov    0x208(%rsp),%ecx
test   %ecx,%ecx
mov    %eax,0x28(%rsp)
jle    324a <sfa+0x20ca>
cmp    $0x4,%ecx
setb   %al
or     0x4c(%rsp),%al
je     3282 <sfa+0x2102>
xor    %edx,%edx
mov    0x200(%rsp),%rsi
mov    0x40(%rsp),%rdi
jmp    3301 <sfa+0x2181>
lea    0x50(%rsp),%rdi
mov    %r12,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   10a0 <Thomas@plt>
mov    0x208(%rsp),%r14d
movapd 0xa0(%rsp),%xmm10
mov    0x40(%rsp),%r10
movapd 0x120(%rsp),%xmm12
jmp    3476 <sfa+0x22f6>
xor    %eax,%eax
mov    0x200(%rsp),%rsi
mov    0x40(%rsp),%rdi
mov    0xd8(%rsp),%rdx
nopl   0x0(%rax)
movupd (%rsi,%rax,1),%xmm0
movupd 0x10(%rsi,%rax,1),%xmm1
movupd (%r14,%rax,1),%xmm2
movupd 0x8(%r14,%rax,1),%xmm3
subpd  %xmm3,%xmm0
addpd  %xmm2,%xmm0
movupd 0x10(%r14,%rax,1),%xmm2
movupd 0x18(%r14,%rax,1),%xmm3
subpd  %xmm3,%xmm1
addpd  %xmm2,%xmm1
movupd %xmm0,0x0(%r13,%rax,1)
movupd %xmm1,0x10(%r13,%rax,1)
add    $0x20,%rax
cmp    %rax,%rdx
jne    32a0 <sfa+0x2120>
mov    0xe0(%rsp),%rax
mov    %rax,%rdx
cmp    %rdi,%rax
je     3380 <sfa+0x2200>
mov    %rdx,%rax
test   $0x1,%dil
je     3329 <sfa+0x21a9>
movsd  (%rsi,%rdx,8),%xmm0
mov    %rdx,%rax
or     $0x1,%rax
subsd  (%r14,%rax,8),%xmm0
addsd  (%r14,%rdx,8),%xmm0
movsd  %xmm0,0x0(%r13,%rdx,8)
not    %rdx
cmp    0xe8(%rsp),%rdx
je     3380 <sfa+0x2200>
cs nopw 0x0(%rax,%rax,1)
movsd  (%rsi,%rax,8),%xmm0
subsd  0x8(%r14,%rax,8),%xmm0
addsd  (%r14,%rax,8),%xmm0
movsd  %xmm0,0x0(%r13,%rax,8)
movsd  0x8(%rsi,%rax,8),%xmm0
subsd  0x10(%r14,%rax,8),%xmm0
addsd  0x8(%r14,%rax,8),%xmm0
movsd  %xmm0,0x8(%r13,%rax,8)
lea    0x2(%rax),%rdx
mov    %rdx,%rax
cmp    %rdx,%rdi
jne    3340 <sfa+0x21c0>
lea    0x50(%rsp),%rdi
mov    %r12,%rsi
mov    %r13,%rdx
xor    %eax,%eax
call   10a0 <Thomas@plt>
mov    0x40(%rsp),%r10
mov    0x208(%rsp),%r14d
test   %r14d,%r14d
movapd 0xa0(%rsp),%xmm10
mov    0x180(%rsp),%rcx
movapd 0x120(%rsp),%xmm12
jle    3476 <sfa+0x22f6>
cmpq   $0x0,0x170(%rsp)
je     344a <sfa+0x22ca>
xor    %eax,%eax
jmp    33f0 <sfa+0x2270>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm0,0x8(%r12,%rax,8)
add    $0x2,%rax
cmp    %rax,%rcx
je     344c <sfa+0x22cc>
movsd  (%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     340e <sfa+0x228e>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
jbe    3414 <sfa+0x2294>
movsd  %xmm0,(%r12,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     33e0 <sfa+0x2260>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
ja     33e0 <sfa+0x2260>
jmp    33e7 <sfa+0x2267>
xorpd  %xmm2,%xmm2
xor    %eax,%eax
test   $0x1,%r11b
jne    3112 <sfa+0x1f92>
jmp    3128 <sfa+0x1fa8>
xor    %eax,%eax
test   $0x1,%r10b
je     3476 <sfa+0x22f6>
movsd  (%r12,%rax,8),%xmm1
ucomisd %xmm10,%xmm1
movapd %xmm10,%xmm0
ja     3470 <sfa+0x22f0>
ucomisd %xmm1,%xmm12
movapd %xmm12,%xmm0
jbe    3476 <sfa+0x22f6>
movsd  %xmm0,(%r12,%rax,8)
mov    0xd0(%rsp),%rax
test   %eax,%eax
jle    34bd <sfa+0x233d>
mov    %rbp,%rdi
xor    %esi,%esi
mov    0x1c0(%rsp),%rdx
call   1050 <memset@plt>
movapd 0x120(%rsp),%xmm12
mov    0xd0(%rsp),%rax
mov    0x40(%rsp),%r10
mov    0x208(%rsp),%r14d
movapd 0xa0(%rsp),%xmm10
xorpd  %xmm14,%xmm14
cmp    %r14d,%eax
jge    3506 <sfa+0x2386>
mov    0x1b0(%rsp),%rdi
xor    %esi,%esi
mov    0x1b8(%rsp),%rdx
call   1050 <memset@plt>
xorpd  %xmm14,%xmm14
movapd 0x120(%rsp),%xmm12
mov    0x40(%rsp),%r10
mov    0x208(%rsp),%r9d
movapd 0xa0(%rsp),%xmm10
jmp    3509 <sfa+0x2389>
mov    %r14,%r9
movsd  0x1b1e(%rip),%xmm15
movapd %xmm15,%xmm0
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x20(%rsp),%r14
mov    0x210(%rsp),%esi
mov    0xc0(%rsp),%r11
mov    0x10(%rsp),%ecx
movapd 0x1abb(%rip),%xmm13
movapd 0x1a0(%rsp),%xmm7
movapd 0x190(%rsp),%xmm6
movapd 0x1aa0(%rip),%xmm9
movsd  0x140(%rsp),%xmm5
mov    0x28(%rsp),%edx
jmp    168d <sfa+0x50d>
xor    %esi,%esi
mov    0x118(%rsp),%eax
mov    %eax,%r14d
mov    0x38(%rsp),%rbp
mov    %r9,%r11
jmp    35b1 <sfa+0x2431>
xor    %esi,%esi
mov    $0xffffffff,%edx
mov    $0x1,%r14d
movapd 0xa0(%rsp),%xmm10
mov    0x38(%rsp),%rbp
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
movsd  0x0(%rbp),%xmm0
addsd  (%r12),%xmm0
movsd  %xmm0,(%rdi)
cmp    $0x2,%r11d
jl     376a <sfa+0x25ea>
lea    -0x1(%r10),%r9
mov    $0x1,%ecx
cmp    $0x4,%r9
jb     36fb <sfa+0x257b>
mov    %esi,0x28(%rsp)
mov    %edx,0x10(%rsp)
mov    %r14,0x20(%rsp)
lea    0x8(%rdi),%rax
lea    (%rdi,%r10,8),%rsi
lea    0x8(%rbp),%r14
lea    0x0(%rbp,%r10,8),%rbp
lea    (%r12,%r10,8),%rdx
cmp    %rbp,%rax
setb   %r10b
cmp    %rsi,%r14
setb   %bpl
cmp    %rdx,%rax
setb   %al
cmp    %r12,%rsi
seta   %sil
test   %bpl,%r10b
jne    36dc <sfa+0x255c>
and    %sil,%al
mov    0x38(%rsp),%rbp
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%edx
mov    0x28(%rsp),%esi
jne    36fb <sfa+0x257b>
mov    %r9,%rsi
and    $0xfffffffffffffffc,%rsi
lea    0x1(%rsi),%rcx
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
movupd 0x8(%rbp,%rax,8),%xmm0
movupd 0x18(%rbp,%rax,8),%xmm1
movupd (%r12,%rax,8),%xmm2
subpd  %xmm2,%xmm0
movupd 0x8(%r12,%rax,8),%xmm2
addpd  %xmm0,%xmm2
movupd 0x10(%r12,%rax,8),%xmm0
subpd  %xmm0,%xmm1
movupd 0x18(%r12,%rax,8),%xmm0
addpd  %xmm1,%xmm0
movupd %xmm2,0x8(%rdi,%rax,8)
movupd %xmm0,0x18(%rdi,%rax,8)
add    $0x4,%rax
cmp    %rax,%rsi
jne    3660 <sfa+0x24e0>
cmp    %rsi,%r9
mov    0x28(%rsp),%esi
jne    36fb <sfa+0x257b>
jmp    376a <sfa+0x25ea>
mov    $0x1,%esi
mov    0x230(%rsp),%eax
cmp    $0x1,%eax
mov    0x38(%rsp),%rbp
mov    %r9,%r11
jne    35b1 <sfa+0x2431>
jmp    377c <sfa+0x25fc>
mov    0x38(%rsp),%rbp
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%edx
mov    0x28(%rsp),%esi
mov    %edx,%eax
mov    %rcx,%rdx
not    %rdx
test   $0x1,%r10b
jne    3725 <sfa+0x25a5>
movsd  0x0(%rbp,%rcx,8),%xmm0
subsd  -0x8(%r12,%rcx,8),%xmm0
addsd  (%r12,%rcx,8),%xmm0
movsd  %xmm0,(%rdi,%rcx,8)
add    $0x1,%rcx
add    %r10,%rdx
mov    %eax,%edx
je     376a <sfa+0x25ea>
nopl   0x0(%rax)
movsd  0x0(%rbp,%rcx,8),%xmm0
subsd  -0x8(%r12,%rcx,8),%xmm0
addsd  (%r12,%rcx,8),%xmm0
movsd  %xmm0,(%rdi,%rcx,8)
movsd  0x8(%rbp,%rcx,8),%xmm0
subsd  (%r12,%rcx,8),%xmm0
addsd  0x8(%r12,%rcx,8),%xmm0
movsd  %xmm0,0x8(%rdi,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%r10
jne    3730 <sfa+0x25b0>
movsd  0x0(%rbp,%rbx,8),%xmm0
subsd  -0x8(%r12,%rbx,8),%xmm0
movsd  %xmm0,(%rdi,%rbx,8)
mov    0x230(%rsp),%eax
cmp    $0x1,%eax
jne    3883 <sfa+0x2703>
test   %esi,%esi
je     3883 <sfa+0x2703>
movsd  (%r12),%xmm0
addsd  %xmm0,%xmm0
subsd  0x8(%r12),%xmm0
subsd  (%r8),%xmm0
movsd  %xmm0,(%r15)
lea    -0x1(%r11),%eax
mov    %eax,%r9d
cmp    $0x3,%r11d
jl     399d <sfa+0x281d>
lea    -0x1(%r9),%rdx
mov    $0x1,%ecx
cmp    $0x4,%rdx
jae    3898 <sfa+0x2718>
mov    %rcx,%rdx
not    %rdx
test   $0x1,%r9b
jne    380b <sfa+0x268b>
movsd  (%r12,%rcx,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r12,%rcx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r12,%rcx,8),%xmm1
subsd  (%r8,%rcx,8),%xmm1
movsd  %xmm1,(%r15,%rcx,8)
add    $0x1,%rcx
add    %r9,%rdx
je     399d <sfa+0x281d>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  (%r12,%rcx,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r12,%rcx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r12,%rcx,8),%xmm1
subsd  (%r8,%rcx,8),%xmm1
movsd  %xmm1,(%r15,%rcx,8)
movsd  0x8(%r12,%rcx,8),%xmm0
movapd %xmm0,%xmm1
subsd  (%r12,%rcx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x10(%r12,%rcx,8),%xmm1
subsd  0x8(%r8,%rcx,8),%xmm1
movsd  %xmm1,0x8(%r15,%rcx,8)
lea    0x2(%rcx),%rdx
mov    %rdx,%rcx
cmp    %rdx,%r9
jne    3820 <sfa+0x26a0>
jmp    399d <sfa+0x281d>
mov    %edx,%r15d
mov    0x88(%rsp),%rbx
mov    0x70(%rsp),%rbp
jmp    3ef7 <sfa+0x2d77>
mov    %rdx,0x10(%rsp)
lea    0x8(%r15),%rdx
lea    (%r15,%r9,8),%rsi
lea    (%r12,%r9,8),%rbp
add    $0x8,%rbp
lea    0x8(%r8),%rdi
lea    (%r8,%r9,8),%r10
cmp    %rbp,%rdx
setb   %r11b
cmp    %r12,%rsi
seta   %bpl
cmp    %r10,%rdx
setb   %dl
cmp    %rsi,%rdi
setb   %sil
test   %bpl,%r11b
jne    40a2 <sfa+0x2f22>
and    %sil,%dl
mov    0x38(%rsp),%rbp
mov    %r14,%rdx
mov    0x208(%rsp),%r14d
mov    %r14,%r11
mov    %rdx,%r14
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
jne    37d3 <sfa+0x2653>
mov    0x10(%rsp),%rdx
mov    %rdx,%rsi
and    $0xfffffffffffffffc,%rsi
lea    0x1(%rsi),%rcx
xor    %ebp,%ebp
nopl   0x0(%rax)
movupd (%r12,%rbp,8),%xmm0
movupd 0x8(%r12,%rbp,8),%xmm1
movupd 0x10(%r12,%rbp,8),%xmm2
movupd 0x18(%r12,%rbp,8),%xmm3
movapd %xmm1,%xmm4
subpd  %xmm0,%xmm4
movapd %xmm3,%xmm0
subpd  %xmm2,%xmm0
addpd  %xmm1,%xmm4
addpd  %xmm3,%xmm0
movupd 0x20(%r12,%rbp,8),%xmm1
subpd  %xmm1,%xmm0
subpd  %xmm2,%xmm4
movupd 0x8(%r8,%rbp,8),%xmm1
subpd  %xmm1,%xmm4
movupd 0x18(%r8,%rbp,8),%xmm1
subpd  %xmm1,%xmm0
movupd %xmm4,0x8(%r15,%rbp,8)
movupd %xmm0,0x18(%r15,%rbp,8)
add    $0x4,%rbp
cmp    %rbp,%rsi
jne    3920 <sfa+0x27a0>
cmp    %rsi,%rdx
mov    0x38(%rsp),%rbp
jne    37d3 <sfa+0x2653>
movslq %eax,%rdx
movsd  (%r12,%rdx,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x10(%r12,%rbx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  (%r8,%rdx,8),%xmm1
movsd  %xmm1,(%r15,%rdx,8)
imul   $0x66666667,%rbx,%rax
mov    %rax,%rcx
shr    $0x3f,%rcx
sar    $0x21,%rax
add    %ecx,%eax
lea    (%rax,%rax,4),%ecx
mov    %r11d,%eax
sub    %ecx,%eax
test   %eax,%eax
jle    3ac6 <sfa+0x2946>
movsd  (%r15),%xmm0
mulsd  0x164e(%rip),%xmm0
addsd  (%r12),%xmm0
movsd  %xmm0,(%r12)
cmp    $0x1,%eax
je     3ac6 <sfa+0x2946>
movsd  0x8(%r15),%xmm0
mulsd  0x162b(%rip),%xmm0
addsd  0x8(%r12),%xmm0
movsd  %xmm0,0x8(%r12)
cmp    $0x2,%eax
je     3ac6 <sfa+0x2946>
movsd  0x10(%r15),%xmm0
mulsd  0x1606(%rip),%xmm0
addsd  0x10(%r12),%xmm0
movsd  %xmm0,0x10(%r12)
cmp    $0x3,%eax
je     3ac6 <sfa+0x2946>
movsd  0x18(%r15),%xmm0
mulsd  0x15e5(%rip),%xmm0
addsd  0x18(%r12),%xmm0
movsd  %xmm0,0x18(%r12)
cmp    $0x4,%eax
je     3ac6 <sfa+0x2946>
movsd  0x15d2(%rip),%xmm0
movsd  0x20(%r15),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x20(%r12),%xmm2
subsd  %xmm1,%xmm2
movsd  0x28(%r12),%xmm1
movsd  %xmm2,0x20(%r12)
movsd  0x28(%r15),%xmm2
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0x28(%r12)
movsd  0x30(%r12),%xmm1
mulsd  0x30(%r15),%xmm0
subsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%r12)
cmp    %r11d,%eax
jge    3c0b <sfa+0x2a8b>
mov    %rdx,0x10(%rsp)
mov    %r14,0x20(%rsp)
movslq %eax,%rsi
mov    %rsi,%rcx
not    %rcx
add    %rbx,%rcx
movabs $0xcccccccccccccccd,%rbp
cc cc cc
mov    %rcx,%rax
mul    %rbp
cmp    $0x5,%rcx
jae    3b05 <sfa+0x2985>
mov    %rsi,%rax
mov    0x38(%rsp),%rbp
jmp    3b58 <sfa+0x29d8>
mov    %rdx,%r14
lea    (%r12,%rsi,8),%r10
mov    %rcx,%rax
mul    %rbp
shr    $0x2,%rdx
lea    (%rdx,%rdx,4),%rax
add    %rsi,%rax
lea    (%r15,%rax,8),%rcx
add    $0x28,%rcx
cmp    %rcx,%r10
jae    3f17 <sfa+0x2d97>
lea    (%r12,%rax,8),%rax
add    $0x28,%rax
lea    (%r15,%rsi,8),%rcx
cmp    %rax,%rcx
jae    3f17 <sfa+0x2d97>
mov    %rsi,%rax
mov    0x38(%rsp),%rbp
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%rdx
movsd  0x14de(%rip),%xmm0
nopw   0x0(%rax,%rax,1)
movsd  (%r15,%rax,8),%xmm1
mulsd  %xmm0,%xmm1
movsd  (%r12,%rax,8),%xmm2
subsd  %xmm1,%xmm2
movsd  0x8(%r12,%rax,8),%xmm1
movsd  %xmm2,(%r12,%rax,8)
movsd  0x8(%r15,%rax,8),%xmm2
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%r12,%rax,8)
movsd  0x10(%r12,%rax,8),%xmm1
movsd  0x10(%r15,%rax,8),%xmm2
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0x10(%r12,%rax,8)
movsd  0x18(%r12,%rax,8),%xmm1
movsd  0x18(%r15,%rax,8),%xmm2
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0x18(%r12,%rax,8)
movsd  0x20(%r12,%rax,8),%xmm1
movsd  0x20(%r15,%rax,8),%xmm2
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm1
movsd  %xmm1,0x20(%r12,%rax,8)
add    $0x5,%rax
cmp    %rbx,%rax
jl     3b70 <sfa+0x29f0>
test   %r11d,%r11d
jle    3c51 <sfa+0x2ad1>
movapd 0x13e8(%rip),%xmm0
xorpd  %xmm10,%xmm0
cmp    $0x1,%r11d
jne    3d33 <sfa+0x2bb3>
xor    %eax,%eax
test   $0x1,%r10b
je     3c51 <sfa+0x2ad1>
movsd  (%r12,%rax,8),%xmm2
ucomisd %xmm10,%xmm2
movapd %xmm10,%xmm1
ja     3c4b <sfa+0x2acb>
ucomisd %xmm2,%xmm0
movapd %xmm0,%xmm1
jbe    3c51 <sfa+0x2ad1>
movsd  %xmm1,(%r12,%rax,8)
add    $0xfffffffffffffffe,%rbx
movsd  (%r12),%xmm0
addsd  %xmm0,%xmm0
subsd  0x8(%r12),%xmm0
subsd  (%r8),%xmm0
movsd  %xmm0,(%r15)
cmp    $0x3,%r11d
jl     3e9d <sfa+0x2d1d>
lea    -0x1(%r9),%rcx
mov    $0x1,%eax
cmp    $0x4,%rcx
jae    3d95 <sfa+0x2c15>
mov    %rax,%rcx
not    %rcx
test   $0x1,%r9b
jne    3cc5 <sfa+0x2b45>
movsd  (%r12,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r12,%rax,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r12,%rax,8),%xmm1
subsd  (%r8,%rax,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
add    $0x1,%rax
add    %r9,%rcx
je     3e9d <sfa+0x2d1d>
xchg   %ax,%ax
movsd  (%r12,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  -0x8(%r12,%rax,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x8(%r12,%rax,8),%xmm1
subsd  (%r8,%rax,8),%xmm1
movsd  %xmm1,(%r15,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm0
movapd %xmm0,%xmm1
subsd  (%r12,%rax,8),%xmm1
addsd  %xmm0,%xmm1
subsd  0x10(%r12,%rax,8),%xmm1
subsd  0x8(%r8,%rax,8),%xmm1
movsd  %xmm1,0x8(%r15,%rax,8)
lea    0x2(%rax),%rcx
mov    %rcx,%rax
cmp    %rcx,%r9
jne    3cd0 <sfa+0x2b50>
jmp    3e9d <sfa+0x2d1d>
mov    %r10d,%ecx
and    $0xfffffffe,%ecx
xor    %eax,%eax
jmp    3d54 <sfa+0x2bd4>
nopl   (%rax)
movsd  %xmm1,0x8(%r12,%rax,8)
add    $0x2,%rax
cmp    %rax,%rcx
je     3c29 <sfa+0x2aa9>
movsd  (%r12,%rax,8),%xmm2
ucomisd %xmm10,%xmm2
movapd %xmm10,%xmm1
ja     3d70 <sfa+0x2bf0>
ucomisd %xmm2,%xmm0
movapd %xmm0,%xmm1
jbe    3d76 <sfa+0x2bf6>
movsd  %xmm1,(%r12,%rax,8)
movsd  0x8(%r12,%rax,8),%xmm2
ucomisd %xmm10,%xmm2
movapd %xmm10,%xmm1
ja     3d40 <sfa+0x2bc0>
ucomisd %xmm2,%xmm0
movapd %xmm0,%xmm1
ja     3d40 <sfa+0x2bc0>
jmp    3d47 <sfa+0x2bc7>
mov    %rcx,0x28(%rsp)
mov    %rdx,0x10(%rsp)
mov    %r14,0x20(%rsp)
lea    0x8(%r15),%rcx
lea    (%r15,%r9,8),%rsi
lea    (%r12,%r9,8),%rdx
add    $0x8,%rdx
lea    0x8(%r8),%r10
lea    (%r8,%r9,8),%rbp
cmp    %rdx,%rcx
setb   %r11b
cmp    %r12,%rsi
seta   %r14b
cmp    %rbp,%rcx
setb   %dl
cmp    %rsi,%r10
setb   %cl
test   %r14b,%r11b
jne    40cf <sfa+0x2f4f>
and    %cl,%dl
mov    0x38(%rsp),%rbp
mov    0x208(%rsp),%r14d
mov    %r14,%r11
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%rdx
jne    3c8d <sfa+0x2b0d>
mov    0x28(%rsp),%rcx
mov    %rcx,%rdx
and    $0xfffffffffffffffc,%rdx
lea    0x1(%rdx),%rax
xor    %esi,%esi
movupd (%r12,%rsi,8),%xmm0
movupd 0x8(%r12,%rsi,8),%xmm1
movupd 0x10(%r12,%rsi,8),%xmm2
movupd 0x18(%r12,%rsi,8),%xmm3
movapd %xmm1,%xmm4
subpd  %xmm0,%xmm4
movapd %xmm3,%xmm0
subpd  %xmm2,%xmm0
addpd  %xmm1,%xmm4
addpd  %xmm3,%xmm0
movupd 0x20(%r12,%rsi,8),%xmm1
subpd  %xmm1,%xmm0
subpd  %xmm2,%xmm4
movupd 0x8(%r8,%rsi,8),%xmm1
subpd  %xmm1,%xmm4
movupd 0x18(%r8,%rsi,8),%xmm1
subpd  %xmm1,%xmm0
movupd %xmm4,0x8(%r15,%rsi,8)
movupd %xmm0,0x18(%r15,%rsi,8)
add    $0x4,%rsi
cmp    %rsi,%rdx
jne    3e20 <sfa+0x2ca0>
cmp    %rdx,%rcx
mov    0x10(%rsp),%rdx
jne    3c8d <sfa+0x2b0d>
movsd  (%r12,%rdx,8),%xmm0
movapd %xmm0,%xmm1
subsd  (%r12,%rbx,8),%xmm1
addsd  %xmm0,%xmm1
subsd  (%r8,%rdx,8),%xmm1
movsd  %xmm1,(%r15,%rdx,8)
sub    $0x8,%rsp
mov    %r12,%rsi
mov    0x70(%rsp),%rdx
mov    %rbp,%rcx
mov    %r15,%r9
movapd %xmm10,%xmm0
mov    $0x1,%al
push   %r11
mov    0x80(%rsp),%rbp
push   %rbp
push   %r13
call   1090 <generateSolution@plt>
add    $0x20,%rsp
mov    %eax,%r15d
mov    0x88(%rsp),%rbx
mov    %rbp,%rdi
call   1030 <free@plt>
mov    %r15d,(%rbx)
mov    %r14d,%eax
add    $0x1c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
shr    $0x2,%r14
add    $0x1,%r14
mov    %r14,%rcx
and    $0xfffffffffffffffe,%rcx
lea    (%rcx,%rcx,4),%rax
add    %rsi,%rax
shl    $0x3,%rsi
movapd 0x10d6(%rip),%xmm8
mov    %rcx,%rdx
nopl   (%rax)
movsd  (%r12,%rsi,1),%xmm1
movsd  0x8(%r12,%rsi,1),%xmm3
movsd  0x10(%r12,%rsi,1),%xmm2
movsd  0x18(%r12,%rsi,1),%xmm4
movhpd 0x28(%r12,%rsi,1),%xmm1
movsd  (%r15,%rsi,1),%xmm5
movsd  0x8(%r15,%rsi,1),%xmm6
movsd  0x10(%r15,%rsi,1),%xmm7
movsd  0x18(%r15,%rsi,1),%xmm0
movhpd 0x28(%r15,%rsi,1),%xmm5
mulpd  %xmm8,%xmm5
subpd  %xmm5,%xmm1
movhpd 0x30(%r12,%rsi,1),%xmm3
movhpd 0x30(%r15,%rsi,1),%xmm6
mulpd  %xmm8,%xmm6
subpd  %xmm6,%xmm3
movhpd 0x38(%r12,%rsi,1),%xmm2
movhpd 0x38(%r15,%rsi,1),%xmm7
mulpd  %xmm8,%xmm7
subpd  %xmm7,%xmm2
movhpd 0x40(%r12,%rsi,1),%xmm4
movhpd 0x40(%r15,%rsi,1),%xmm0
mulpd  %xmm8,%xmm0
subpd  %xmm0,%xmm4
movsd  0x20(%r12,%rsi,1),%xmm0
movhpd 0x48(%r12,%rsi,1),%xmm0
movsd  0x20(%r15,%rsi,1),%xmm5
movhpd 0x48(%r15,%rsi,1),%xmm5
mulpd  %xmm8,%xmm5
subpd  %xmm5,%xmm0
movapd %xmm1,%xmm5
unpcklpd %xmm3,%xmm5
movsd  %xmm0,%xmm1
unpckhpd %xmm2,%xmm3
unpcklpd %xmm4,%xmm2
movhlps %xmm4,%xmm0
movups %xmm0,0x40(%r12,%rsi,1)
movupd %xmm3,0x30(%r12,%rsi,1)
movupd %xmm1,0x20(%r12,%rsi,1)
movupd %xmm2,0x10(%r12,%rsi,1)
movupd %xmm5,(%r12,%rsi,1)
add    $0x50,%rsi
add    $0xfffffffffffffffe,%rdx
jne    3f40 <sfa+0x2dc0>
cmp    %rcx,%r14
mov    0x38(%rsp),%rbp
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%rdx
jne    3b62 <sfa+0x29e2>
jmp    3c0b <sfa+0x2a8b>
mov    $0x1,%esi
movaps 0xa0(%rsp),%xmm10
mov    0x38(%rsp),%rbp
mov    0x208(%rsp),%r11d
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%edx
jmp    377c <sfa+0x25fc>
mov    0x38(%rsp),%rbp
mov    %r14,%rdx
mov    0x208(%rsp),%r14d
mov    %r14,%r11
mov    %rdx,%r14
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x40(%rsp),%r10
jmp    37d3 <sfa+0x2653>
mov    0x38(%rsp),%rbp
mov    0x208(%rsp),%r14d
mov    %r14,%r11
mov    0x30(%rsp),%rdi
mov    0x200(%rsp),%r8
mov    0x20(%rsp),%r14
mov    0x10(%rsp),%rdx
jmp    3c8d <sfa+0x2b0d>
mov    0x88(%rsp),%rbx
mov    0x70(%rsp),%rbp
mov    0x20(%rsp),%r14
mov    %eax,%r15d
jmp    3ef7 <sfa+0x2d77>
mov    0x28(%rsp),%r15d
mov    0x88(%rsp),%rbx
mov    0x70(%rsp),%rbp
mov    0x20(%rsp),%r14
jmp    3ef7 <sfa+0x2d77>

LLVM IR (-O0):
define i32 @sfa(double* %0, double* %1, i32* %2, double* %3, double* %4, double* %5, double* %6, double %7, i32 %8, i32 %9, double* %10, double* %11, double %12, i32 %13, i32 %14) {
%16 = alloca double*
%17 = alloca double*
%18 = alloca i32*
%19 = alloca double*
%20 = alloca double*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double
%24 = alloca i32
%25 = alloca i32
%26 = alloca double*
%27 = alloca double*
%28 = alloca double
%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
%39 = alloca double
%40 = alloca i32*
%41 = alloca double
%42 = alloca double
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
store double* %0, double** %16
store double* %1, double** %17
store i32* %2, i32** %18
store double* %3, double** %19
store double* %4, double** %20
store double* %5, double** %21
store double* %6, double** %22
store double %7, double* %23
store i32 %8, i32* %24
store i32 %9, i32* %25
store double* %10, double** %26
store double* %11, double** %27
store double %12, double* %28
store i32 %13, i32* %29
store i32 %14, i32* %30
store i32 0, i32* %34
%46 = load i32, i32* %24
%47 = add nsw i32 %46, 1
store i32 %47, i32* %35
store double 0.000000e+00, double* %36
store double 1.000000e+00, double* %37
store double 0.000000e+00, double* %38
%48 = load i32, i32* %24
%49 = sext i32 %48 to i64
%50 = mul i64 4, %49
%51 = call i8* @malloc(i64 %50)
%52 = bitcast i8* %51 to i32*
store i32* %52, i32** %40
store double -1.000000e+00, double* %41
store double -1.000000e+00, double* %42
store i32 -1, i32* %43
store i32 -2, i32* %44
store i32 -3, i32* %45
%53 = load double*, double** %17
store double -1.000000e+00, double* %53
store i32 1, i32* %32
br label %54
54: ; preds = %1728, %15
%55 = load i32, i32* %32
%56 = load i32, i32* %25
%57 = icmp sle i32 %55, %56
br i1 %57, label %58, label %1731
58: ; preds = %54
%59 = load double, double* %36
%60 = fsub double %59, 1.000000e+00
%61 = load double, double* %37
%62 = fdiv double %60, %61
store double %62, double* %38
%63 = load i32, i32* %24
%64 = srem i32 %63, 5
store i32 %64, i32* %33
%65 = load i32, i32* %33
%66 = icmp ne i32 %65, 0
br i1 %66, label %67, label %93
67: ; preds = %58
store i32 0, i32* %31
br label %68
68: ; preds = %89, %67
%69 = load i32, i32* %31
%70 = load i32, i32* %33
%71 = icmp slt i32 %69, %70
br i1 %71, label %72, label %92
72: ; preds = %68
%73 = load double*, double** %19
%74 = load i32, i32* %31
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds double, double* %73, i64 %75
%77 = load double, double* %76
%78 = load double, double* %38
%79 = load double*, double** %20
%80 = load i32, i32* %31
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds double, double* %79, i64 %81
%83 = load double, double* %82
%84 = call double @llvm.fmuladd.f64(double %78, double %83, double %77)
%85 = load double*, double** %26
%86 = load i32, i32* %31
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds double, double* %85, i64 %87
store double %84, double* %88
br label %89
89: ; preds = %72
%90 = load i32, i32* %31
%91 = add nsw i32 %90, 1
store i32 %91, i32* %31
br label %68
92: ; preds = %68
br label %93
93: ; preds = %92, %58
%94 = load i32, i32* %33
store i32 %94, i32* %31
br label %95
95: ; preds = %192, %93
%96 = load i32, i32* %31
%97 = load i32, i32* %24
%98 = icmp slt i32 %96, %97
br i1 %98, label %99, label %195
99: ; preds = %95
%100 = load double*, double** %19
%101 = load i32, i32* %31
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %100, i64 %102
%104 = load double, double* %103
%105 = load double, double* %38
%106 = load double*, double** %20
%107 = load i32, i32* %31
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %106, i64 %108
%110 = load double, double* %109
%111 = call double @llvm.fmuladd.f64(double %105, double %110, double %104)
%112 = load double*, double** %26
%113 = load i32, i32* %31
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %112, i64 %114
store double %111, double* %115
%116 = load double*, double** %19
%117 = load i32, i32* %31
%118 = add nsw i32 %117, 1
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds double, double* %116, i64 %119
%121 = load double, double* %120
%122 = load double, double* %38
%123 = load double*, double** %20
%124 = load i32, i32* %31
%125 = add nsw i32 %124, 1
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds double, double* %123, i64 %126
%128 = load double, double* %127
%129 = call double @llvm.fmuladd.f64(double %122, double %128, double %121)
%130 = load double*, double** %26
%131 = load i32, i32* %31
%132 = add nsw i32 %131, 1
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds double, double* %130, i64 %133
store double %129, double* %134
%135 = load double*, double** %19
%136 = load i32, i32* %31
%137 = add nsw i32 %136, 2
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds double, double* %135, i64 %138
%140 = load double, double* %139
%141 = load double, double* %38
%142 = load double*, double** %20
%143 = load i32, i32* %31
%144 = add nsw i32 %143, 2
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds double, double* %142, i64 %145
%147 = load double, double* %146
%148 = call double @llvm.fmuladd.f64(double %141, double %147, double %140)
%149 = load double*, double** %26
%150 = load i32, i32* %31
%151 = add nsw i32 %150, 2
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds double, double* %149, i64 %152
store double %148, double* %153
%154 = load double*, double** %19
%155 = load i32, i32* %31
%156 = add nsw i32 %155, 3
%157 = sext i32 %156 to i64
%158 = getelementptr inbounds double, double* %154, i64 %157
%159 = load double, double* %158
%160 = load double, double* %38
%161 = load double*, double** %20
%162 = load i32, i32* %31
%163 = add nsw i32 %162, 3
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds double, double* %161, i64 %164
%166 = load double, double* %165
%167 = call double @llvm.fmuladd.f64(double %160, double %166, double %159)
%168 = load double*, double** %26
%169 = load i32, i32* %31
%170 = add nsw i32 %169, 3
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds double, double* %168, i64 %171
store double %167, double* %172
%173 = load double*, double** %19
%174 = load i32, i32* %31
%175 = add nsw i32 %174, 4
%176 = sext i32 %175 to i64
%177 = getelementptr inbounds double, double* %173, i64 %176
%178 = load double, double* %177
%179 = load double, double* %38
%180 = load double*, double** %20
%181 = load i32, i32* %31
%182 = add nsw i32 %181, 4
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds double, double* %180, i64 %183
%185 = load double, double* %184
%186 = call double @llvm.fmuladd.f64(double %179, double %185, double %178)
%187 = load double*, double** %26
%188 = load i32, i32* %31
%189 = add nsw i32 %188, 4
%190 = sext i32 %189 to i64
%191 = getelementptr inbounds double, double* %187, i64 %190
store double %186, double* %191
br label %192
192: ; preds = %99
%193 = load i32, i32* %31
%194 = add nsw i32 %193, 5
store i32 %194, i32* %31
br label %95
195: ; preds = %95
%196 = load double*, double** %26
%197 = getelementptr inbounds double, double* %196, i64 0
%198 = load double, double* %197
%199 = load double*, double** %26
%200 = getelementptr inbounds double, double* %199, i64 0
%201 = load double, double* %200
%202 = fadd double %198, %201
%203 = load double*, double** %26
%204 = getelementptr inbounds double, double* %203, i64 1
%205 = load double, double* %204
%206 = fsub double %202, %205
%207 = load double*, double** %22
%208 = getelementptr inbounds double, double* %207, i64 0
%209 = load double, double* %208
%210 = fsub double %206, %209
%211 = load double*, double** %27
%212 = getelementptr inbounds double, double* %211, i64 0
store double %210, double* %212
store i32 1, i32* %31
br label %213
213: ; preds = %255, %195
%214 = load i32, i32* %31
%215 = load i32, i32* %24
%216 = sub nsw i32 %215, 1
%217 = icmp slt i32 %214, %216
br i1 %217, label %218, label %258
218: ; preds = %213
%219 = load double*, double** %26
%220 = load i32, i32* %31
%221 = sub nsw i32 %220, 1
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %219, i64 %222
%224 = load double, double* %223
%225 = fneg double %224
%226 = load double*, double** %26
%227 = load i32, i32* %31
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds double, double* %226, i64 %228
%230 = load double, double* %229
%231 = fadd double %225, %230
%232 = load double*, double** %26
%233 = load i32, i32* %31
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds double, double* %232, i64 %234
%236 = load double, double* %235
%237 = fadd double %231, %236
%238 = load double*, double** %26
%239 = load i32, i32* %31
%240 = add nsw i32 %239, 1
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds double, double* %238, i64 %241
%243 = load double, double* %242
%244 = fsub double %237, %243
%245 = load double*, double** %22
%246 = load i32, i32* %31
%247 = sext i32 %246 to i64
%248 = getelementptr inbounds double, double* %245, i64 %247
%249 = load double, double* %248
%250 = fsub double %244, %249
%251 = load double*, double** %27
%252 = load i32, i32* %31
%253 = sext i32 %252 to i64
%254 = getelementptr inbounds double, double* %251, i64 %253
store double %250, double* %254
br label %255
255: ; preds = %218
%256 = load i32, i32* %31
%257 = add nsw i32 %256, 1
store i32 %257, i32* %31
br label %213
258: ; preds = %213
%259 = load double*, double** %26
%260 = load i32, i32* %24
%261 = sub nsw i32 %260, 2
%262 = sext i32 %261 to i64
%263 = getelementptr inbounds double, double* %259, i64 %262
%264 = load double, double* %263
%265 = fneg double %264
%266 = load double*, double** %26
%267 = load i32, i32* %24
%268 = sub nsw i32 %267, 1
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds double, double* %266, i64 %269
%271 = load double, double* %270
%272 = fadd double %265, %271
%273 = load double*, double** %26
%274 = load i32, i32* %24
%275 = sub nsw i32 %274, 1
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds double, double* %273, i64 %276
%278 = load double, double* %277
%279 = fadd double %272, %278
%280 = load double*, double** %22
%281 = load i32, i32* %24
%282 = sub nsw i32 %281, 1
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds double, double* %280, i64 %283
%285 = load double, double* %284
%286 = fsub double %279, %285
%287 = load double*, double** %27
%288 = load i32, i32* %24
%289 = sub nsw i32 %288, 1
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds double, double* %287, i64 %290
store double %286, double* %291
%292 = load i32, i32* %24
%293 = srem i32 %292, 7
store i32 %293, i32* %33
%294 = load i32, i32* %33
%295 = icmp ne i32 %294, 0
br i1 %295, label %296, label %316
296: ; preds = %258
store i32 0, i32* %31
br label %297
297: ; preds = %312, %296
%298 = load i32, i32* %31
%299 = load i32, i32* %33
%300 = icmp slt i32 %298, %299
br i1 %300, label %301, label %315
301: ; preds = %297
%302 = load double*, double** %19
%303 = load i32, i32* %31
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds double, double* %302, i64 %304
%306 = load double, double* %305
%307 = fneg double %306
%308 = load double*, double** %20
%309 = load i32, i32* %31
%310 = sext i32 %309 to i64
%311 = getelementptr inbounds double, double* %308, i64 %310
store double %307, double* %311
br label %312
312: ; preds = %301
%313 = load i32, i32* %31
%314 = add nsw i32 %313, 1
store i32 %314, i32* %31
br label %297
315: ; preds = %297
br label %316
316: ; preds = %315, %258
%317 = load i32, i32* %33
store i32 %317, i32* %31
br label %318
318: ; preds = %405, %316
%319 = load i32, i32* %31
%320 = load i32, i32* %24
%321 = icmp slt i32 %319, %320
br i1 %321, label %322, label %408
322: ; preds = %318
%323 = load double*, double** %19
%324 = load i32, i32* %31
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds double, double* %323, i64 %325
%327 = load double, double* %326
%328 = fneg double %327
%329 = load double*, double** %20
%330 = load i32, i32* %31
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds double, double* %329, i64 %331
store double %328, double* %332
%333 = load double*, double** %19
%334 = load i32, i32* %31
%335 = add nsw i32 %334, 1
%336 = sext i32 %335 to i64
%337 = getelementptr inbounds double, double* %333, i64 %336
%338 = load double, double* %337
%339 = fneg double %338
%340 = load double*, double** %20
%341 = load i32, i32* %31
%342 = add nsw i32 %341, 1
%343 = sext i32 %342 to i64
%344 = getelementptr inbounds double, double* %340, i64 %343
store double %339, double* %344
%345 = load double*, double** %19
%346 = load i32, i32* %31
%347 = add nsw i32 %346, 2
%348 = sext i32 %347 to i64
%349 = getelementptr inbounds double, double* %345, i64 %348
%350 = load double, double* %349
%351 = fneg double %350
%352 = load double*, double** %20
%353 = load i32, i32* %31
%354 = add nsw i32 %353, 2
%355 = sext i32 %354 to i64
%356 = getelementptr inbounds double, double* %352, i64 %355
store double %351, double* %356
%357 = load double*, double** %19
%358 = load i32, i32* %31
%359 = add nsw i32 %358, 3
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds double, double* %357, i64 %360
%362 = load double, double* %361
%363 = fneg double %362
%364 = load double*, double** %20
%365 = load i32, i32* %31
%366 = add nsw i32 %365, 3
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds double, double* %364, i64 %367
store double %363, double* %368
%369 = load double*, double** %19
%370 = load i32, i32* %31
%371 = add nsw i32 %370, 4
%372 = sext i32 %371 to i64
%373 = getelementptr inbounds double, double* %369, i64 %372
%374 = load double, double* %373
%375 = fneg double %374
%376 = load double*, double** %20
%377 = load i32, i32* %31
%378 = add nsw i32 %377, 4
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds double, double* %376, i64 %379
store double %375, double* %380
%381 = load double*, double** %19
%382 = load i32, i32* %31
%383 = add nsw i32 %382, 5
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds double, double* %381, i64 %384
%386 = load double, double* %385
%387 = fneg double %386
%388 = load double*, double** %20
%389 = load i32, i32* %31
%390 = add nsw i32 %389, 5
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds double, double* %388, i64 %391
store double %387, double* %392
%393 = load double*, double** %19
%394 = load i32, i32* %31
%395 = add nsw i32 %394, 6
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds double, double* %393, i64 %396
%398 = load double, double* %397
%399 = fneg double %398
%400 = load double*, double** %20
%401 = load i32, i32* %31
%402 = add nsw i32 %401, 6
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds double, double* %400, i64 %403
store double %399, double* %404
br label %405
405: ; preds = %322
%406 = load i32, i32* %31
%407 = add nsw i32 %406, 7
store i32 %407, i32* %31
br label %318
408: ; preds = %318
%409 = load i32, i32* %24
%410 = srem i32 %409, 5
store i32 %410, i32* %33
%411 = load i32, i32* %33
%412 = icmp ne i32 %411, 0
br i1 %412, label %413, label %439
413: ; preds = %408
store i32 0, i32* %31
br label %414
414: ; preds = %435, %413
%415 = load i32, i32* %31
%416 = load i32, i32* %33
%417 = icmp slt i32 %415, %416
br i1 %417, label %418, label %438
418: ; preds = %414
%419 = load double*, double** %26
%420 = load i32, i32* %31
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds double, double* %419, i64 %421
%423 = load double, double* %422
%424 = load double*, double** %27
%425 = load i32, i32* %31
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds double, double* %424, i64 %426
%428 = load double, double* %427
%429 = fdiv double %428, 4.000000e+00
%430 = fsub double %423, %429
%431 = load double*, double** %19
%432 = load i32, i32* %31
%433 = sext i32 %432 to i64
%434 = getelementptr inbounds double, double* %431, i64 %433
store double %430, double* %434
br label %435
435: ; preds = %418
%436 = load i32, i32* %31
%437 = add nsw i32 %436, 1
store i32 %437, i32* %31
br label %414
438: ; preds = %414
br label %439
439: ; preds = %438, %408
%440 = load i32, i32* %33
store i32 %440, i32* %31
br label %441
441: ; preds = %538, %439
%442 = load i32, i32* %31
%443 = load i32, i32* %24
%444 = icmp slt i32 %442, %443
br i1 %444, label %445, label %541
445: ; preds = %441
%446 = load double*, double** %26
%447 = load i32, i32* %31
%448 = sext i32 %447 to i64
%449 = getelementptr inbounds double, double* %446, i64 %448
%450 = load double, double* %449
%451 = load double*, double** %27
%452 = load i32, i32* %31
%453 = sext i32 %452 to i64
%454 = getelementptr inbounds double, double* %451, i64 %453
%455 = load double, double* %454
%456 = fdiv double %455, 4.000000e+00
%457 = fsub double %450, %456
%458 = load double*, double** %19
%459 = load i32, i32* %31
%460 = sext i32 %459 to i64
%461 = getelementptr inbounds double, double* %458, i64 %460
store double %457, double* %461
%462 = load double*, double** %26
%463 = load i32, i32* %31
%464 = add nsw i32 %463, 1
%465 = sext i32 %464 to i64
%466 = getelementptr inbounds double, double* %462, i64 %465
%467 = load double, double* %466
%468 = load double*, double** %27
%469 = load i32, i32* %31
%470 = add nsw i32 %469, 1
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds double, double* %468, i64 %471
%473 = load double, double* %472
%474 = fdiv double %473, 4.000000e+00
%475 = fsub double %467, %474
%476 = load double*, double** %19
%477 = load i32, i32* %31
%478 = add nsw i32 %477, 1
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds double, double* %476, i64 %479
store double %475, double* %480
%481 = load double*, double** %26
%482 = load i32, i32* %31
%483 = add nsw i32 %482, 2
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds double, double* %481, i64 %484
%486 = load double, double* %485
%487 = load double*, double** %27
%488 = load i32, i32* %31
%489 = add nsw i32 %488, 2
%490 = sext i32 %489 to i64
%491 = getelementptr inbounds double, double* %487, i64 %490
%492 = load double, double* %491
%493 = fdiv double %492, 4.000000e+00
%494 = fsub double %486, %493
%495 = load double*, double** %19
%496 = load i32, i32* %31
%497 = add nsw i32 %496, 2
%498 = sext i32 %497 to i64
%499 = getelementptr inbounds double, double* %495, i64 %498
store double %494, double* %499
%500 = load double*, double** %26
%501 = load i32, i32* %31
%502 = add nsw i32 %501, 3
%503 = sext i32 %502 to i64
%504 = getelementptr inbounds double, double* %500, i64 %503
%505 = load double, double* %504
%506 = load double*, double** %27
%507 = load i32, i32* %31
%508 = add nsw i32 %507, 3
%509 = sext i32 %508 to i64
%510 = getelementptr inbounds double, double* %506, i64 %509
%511 = load double, double* %510
%512 = fdiv double %511, 4.000000e+00
%513 = fsub double %505, %512
%514 = load double*, double** %19
%515 = load i32, i32* %31
%516 = add nsw i32 %515, 3
%517 = sext i32 %516 to i64
%518 = getelementptr inbounds double, double* %514, i64 %517
store double %513, double* %518
%519 = load double*, double** %26
%520 = load i32, i32* %31
%521 = add nsw i32 %520, 4
%522 = sext i32 %521 to i64
%523 = getelementptr inbounds double, double* %519, i64 %522
%524 = load double, double* %523
%525 = load double*, double** %27
%526 = load i32, i32* %31
%527 = add nsw i32 %526, 4
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds double, double* %525, i64 %528
%530 = load double, double* %529
%531 = fdiv double %530, 4.000000e+00
%532 = fsub double %524, %531
%533 = load double*, double** %19
%534 = load i32, i32* %31
%535 = add nsw i32 %534, 4
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds double, double* %533, i64 %536
store double %532, double* %537
br label %538
538: ; preds = %445
%539 = load i32, i32* %31
%540 = add nsw i32 %539, 5
store i32 %540, i32* %31
br label %441
541: ; preds = %441
store i32 0, i32* %31
br label %542
542: ; preds = %578, %541
%543 = load i32, i32* %31
%544 = load i32, i32* %24
%545 = icmp slt i32 %543, %544
br i1 %545, label %546, label %581
546: ; preds = %542
%547 = load double*, double** %19
%548 = load i32, i32* %31
%549 = sext i32 %548 to i64
%550 = getelementptr inbounds double, double* %547, i64 %549
%551 = load double, double* %550
%552 = load double, double* %23
%553 = fcmp ogt double %551, %552
br i1 %553, label %554, label %560
554: ; preds = %546
%555 = load double, double* %23
%556 = load double*, double** %19
%557 = load i32, i32* %31
%558 = sext i32 %557 to i64
%559 = getelementptr inbounds double, double* %556, i64 %558
store double %555, double* %559
br label %577
560: ; preds = %546
%561 = load double*, double** %19
%562 = load i32, i32* %31
%563 = sext i32 %562 to i64
%564 = getelementptr inbounds double, double* %561, i64 %563
%565 = load double, double* %564
%566 = load double, double* %23
%567 = fneg double %566
%568 = fcmp olt double %565, %567
br i1 %568, label %569, label %576
569: ; preds = %560
%570 = load double, double* %23
%571 = fneg double %570
%572 = load double*, double** %19
%573 = load i32, i32* %31
%574 = sext i32 %573 to i64
%575 = getelementptr inbounds double, double* %572, i64 %574
store double %571, double* %575
br label %576
576: ; preds = %569, %560
br label %577
577: ; preds = %576, %554
br label %578
578: ; preds = %577
%579 = load i32, i32* %31
%580 = add nsw i32 %579, 1
store i32 %580, i32* %31
br label %542
581: ; preds = %542
%582 = load i32, i32* %24
%583 = srem i32 %582, 5
store i32 %583, i32* %33
%584 = load i32, i32* %33
%585 = icmp ne i32 %584, 0
br i1 %585, label %586, label %607
586: ; preds = %581
store i32 0, i32* %31
br label %587
587: ; preds = %603, %586
%588 = load i32, i32* %31
%589 = load i32, i32* %33
%590 = icmp slt i32 %588, %589
br i1 %590, label %591, label %606
591: ; preds = %587
%592 = load double*, double** %19
%593 = load i32, i32* %31
%594 = sext i32 %593 to i64
%595 = getelementptr inbounds double, double* %592, i64 %594
%596 = load double, double* %595
%597 = load double*, double** %20
%598 = load i32, i32* %31
%599 = sext i32 %598 to i64
%600 = getelementptr inbounds double, double* %597, i64 %599
%601 = load double, double* %600
%602 = fadd double %601, %596
store double %602, double* %600
br label %603
603: ; preds = %591
%604 = load i32, i32* %31
%605 = add nsw i32 %604, 1
store i32 %605, i32* %31
br label %587
606: ; preds = %587
br label %607
607: ; preds = %606, %581
%608 = load i32, i32* %33
store i32 %608, i32* %31
br label %609
609: ; preds = %677, %607
%610 = load i32, i32* %31
%611 = load i32, i32* %24
%612 = icmp slt i32 %610, %611
br i1 %612, label %613, label %680
613: ; preds = %609
%614 = load double*, double** %19
%615 = load i32, i32* %31
%616 = sext i32 %615 to i64
%617 = getelementptr inbounds double, double* %614, i64 %616
%618 = load double, double* %617
%619 = load double*, double** %20
%620 = load i32, i32* %31
%621 = sext i32 %620 to i64
%622 = getelementptr inbounds double, double* %619, i64 %621
%623 = load double, double* %622
%624 = fadd double %623, %618
store double %624, double* %622
%625 = load double*, double** %19
%626 = load i32, i32* %31
%627 = add nsw i32 %626, 1
%628 = sext i32 %627 to i64
%629 = getelementptr inbounds double, double* %625, i64 %628
%630 = load double, double* %629
%631 = load double*, double** %20
%632 = load i32, i32* %31
%633 = add nsw i32 %632, 1
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds double, double* %631, i64 %634
%636 = load double, double* %635
%637 = fadd double %636, %630
store double %637, double* %635
%638 = load double*, double** %19
%639 = load i32, i32* %31
%640 = add nsw i32 %639, 2
%641 = sext i32 %640 to i64
%642 = getelementptr inbounds double, double* %638, i64 %641
%643 = load double, double* %642
%644 = load double*, double** %20
%645 = load i32, i32* %31
%646 = add nsw i32 %645, 2
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds double, double* %644, i64 %647
%649 = load double, double* %648
%650 = fadd double %649, %643
store double %650, double* %648
%651 = load double*, double** %19
%652 = load i32, i32* %31
%653 = add nsw i32 %652, 3
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds double, double* %651, i64 %654
%656 = load double, double* %655
%657 = load double*, double** %20
%658 = load i32, i32* %31
%659 = add nsw i32 %658, 3
%660 = sext i32 %659 to i64
%661 = getelementptr inbounds double, double* %657, i64 %660
%662 = load double, double* %661
%663 = fadd double %662, %656
store double %663, double* %661
%664 = load double*, double** %19
%665 = load i32, i32* %31
%666 = add nsw i32 %665, 4
%667 = sext i32 %666 to i64
%668 = getelementptr inbounds double, double* %664, i64 %667
%669 = load double, double* %668
%670 = load double*, double** %20
%671 = load i32, i32* %31
%672 = add nsw i32 %671, 4
%673 = sext i32 %672 to i64
%674 = getelementptr inbounds double, double* %670, i64 %673
%675 = load double, double* %674
%676 = fadd double %675, %669
store double %676, double* %674
br label %677
677: ; preds = %613
%678 = load i32, i32* %31
%679 = add nsw i32 %678, 5
store i32 %679, i32* %31
br label %609
680: ; preds = %609
%681 = load double, double* %37
store double %681, double* %36
%682 = load double, double* %37
%683 = fmul double 4.000000e+00, %682
%684 = load double, double* %37
%685 = call double @llvm.fmuladd.f64(double %683, double %684, double 1.000000e+00)
%686 = call double @sqrt(double %685)
%687 = fadd double 1.000000e+00, %686
%688 = fdiv double %687, 2.000000e+00
store double %688, double* %37
%689 = load i32, i32* %32
%690 = load i32, i32* %29
%691 = srem i32 %689, %690
%692 = icmp eq i32 %691, 0
br i1 %692, label %693, label %1727
693: ; preds = %680
%694 = load i32, i32* %30
switch i32 %694, label %1637 [
i32 1, label %695
i32 2, label %906
i32 3, label %991
i32 4, label %1238
]
695: ; preds = %693
%696 = load double, double* %41
store double %696, double* %42
%697 = load double*, double** %17
%698 = load double, double* %697
store double %698, double* %41
%699 = load i32, i32* %44
store i32 %699, i32* %45
%700 = load i32, i32* %43
store i32 %700, i32* %44
%701 = load double*, double** %17
%702 = load double*, double** %19
%703 = load double*, double** %27
%704 = load double*, double** %26
%705 = load double*, double** %22
%706 = load double, double* %23
%707 = load i32, i32* %24
%708 = call i32 (double*, double*, double*, double*, double*, double, i32, ...) bitcast (i32 (...)* @dualityGap to i32 (double*, double*, double*, double*, double*, double, i32, ...)*)(double* %701, double* %702, double* %703, double* %704, double* %705, double %706, i32 %707)
%709 = load double*, double** %17
%710 = load double, double* %709
%711 = load double, double* %28
%712 = fcmp ole double %710, %711
br i1 %712, label %713, label %714
713: ; preds = %695
store i32 1, i32* %34
br label %1722
714: ; preds = %695
%715 = load double*, double** %16
%716 = load double*, double** %21
%717 = load double*, double** %19
%718 = load double*, double** %27
%719 = load i32*, i32** %40
%720 = load double, double* %23
%721 = load i32, i32* %24
%722 = call i32 (double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @supportSet to i32 (double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %715, double* %716, double* %717, double* %718, i32* %719, double %720, i32 %721)
store i32 %722, i32* %43
store i32 1, i32* %33
%723 = load i32, i32* %24
%724 = icmp sgt i32 %723, 1000000
br i1 %724, label %725, label %726
725: ; preds = %714
store i32 10, i32* %33
br label %731
726: ; preds = %714
%727 = load i32, i32* %24
%728 = icmp sgt i32 %727, 100000
br i1 %728, label %729, label %730
729: ; preds = %726
store i32 5, i32* %33
br label %730
730: ; preds = %729, %726
br label %731
731: ; preds = %730, %725
%732 = load i32, i32* %43
%733 = load i32, i32* %44
%734 = sub nsw i32 %732, %733
%735 = call i32 @abs(i32 %734)
%736 = load i32, i32* %33
%737 = icmp slt i32 %735, %736
br i1 %737, label %738, label %766
738: ; preds = %731
%739 = load double*, double** %16
%740 = load double*, double** %19
%741 = load double*, double** %17
%742 = load double*, double** %21
%743 = load double*, double** %22
%744 = load double*, double** %27
%745 = load double*, double** %26
%746 = load i32*, i32** %40
%747 = load double, double* %23
%748 = load i32, i32* %24
%749 = call i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @generateSolution to i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %739, double* %740, double* %741, double* %742, double* %743, double* %744, double* %745, i32* %746, double %747, i32 %748)
store i32 %749, i32* %43
%750 = load double*, double** %17
%751 = load double, double* %750
%752 = load double, double* %28
%753 = fcmp olt double %751, %752
br i1 %753, label %754, label %755
754: ; preds = %738
store i32 2, i32* %34
br label %1722
755: ; preds = %738
%756 = load double*, double** %17
%757 = load double, double* %756
%758 = load double, double* %42
%759 = fcmp oeq double %757, %758
br i1 %759, label %760, label %765
760: ; preds = %755
%761 = load i32, i32* %43
%762 = load i32, i32* %45
%763 = icmp eq i32 %761, %762
br i1 %763, label %764, label %765
764: ; preds = %760
store i32 2, i32* %34
br label %1722
765: ; preds = %760, %755
br label %766
766: ; preds = %765, %731
store i32 0, i32* %31
br label %767
767: ; preds = %794, %766
%768 = load i32, i32* %31
%769 = load i32, i32* %24
%770 = icmp slt i32 %768, %769
br i1 %770, label %771, label %797
771: ; preds = %767
%772 = load double*, double** %22
%773 = load i32, i32* %31
%774 = sext i32 %773 to i64
%775 = getelementptr inbounds double, double* %772, i64 %774
%776 = load double, double* %775
%777 = load double*, double** %16
%778 = load i32, i32* %31
%779 = add nsw i32 %778, 1
%780 = sext i32 %779 to i64
%781 = getelementptr inbounds double, double* %777, i64 %780
%782 = load double, double* %781
%783 = fsub double %776, %782
%784 = load double*, double** %16
%785 = load i32, i32* %31
%786 = sext i32 %785 to i64
%787 = getelementptr inbounds double, double* %784, i64 %786
%788 = load double, double* %787
%789 = fadd double %783, %788
%790 = load double*, double** %26
%791 = load i32, i32* %31
%792 = sext i32 %791 to i64
%793 = getelementptr inbounds double, double* %790, i64 %792
store double %789, double* %793
br label %794
794: ; preds = %771
%795 = load i32, i32* %31
%796 = add nsw i32 %795, 1
store i32 %796, i32* %31
br label %767
797: ; preds = %767
%798 = load double*, double** %19
%799 = load double*, double** %26
%800 = load i32, i32* %24
%801 = call i32 (double*, double*, double*, i32, ...) bitcast (i32 (...)* @Thomas to i32 (double*, double*, double*, i32, ...)*)(double* %39, double* %798, double* %799, i32 %800)
store i32 0, i32* %31
br label %802
802: ; preds = %838, %797
%803 = load i32, i32* %31
%804 = load i32, i32* %24
%805 = icmp slt i32 %803, %804
br i1 %805, label %806, label %841
806: ; preds = %802
%807 = load double*, double** %19
%808 = load i32, i32* %31
%809 = sext i32 %808 to i64
%810 = getelementptr inbounds double, double* %807, i64 %809
%811 = load double, double* %810
%812 = load double, double* %23
%813 = fcmp ogt double %811, %812
br i1 %813, label %814, label %820
814: ; preds = %806
%815 = load double, double* %23
%816 = load double*, double** %19
%817 = load i32, i32* %31
%818 = sext i32 %817 to i64
%819 = getelementptr inbounds double, double* %816, i64 %818
store double %815, double* %819
br label %837
820: ; preds = %806
%821 = load double*, double** %19
%822 = load i32, i32* %31
%823 = sext i32 %822 to i64
%824 = getelementptr inbounds double, double* %821, i64 %823
%825 = load double, double* %824
%826 = load double, double* %23
%827 = fneg double %826
%828 = fcmp olt double %825, %827
br i1 %828, label %829, label %836
829: ; preds = %820
%830 = load double, double* %23
%831 = fneg double %830
%832 = load double*, double** %19
%833 = load i32, i32* %31
%834 = sext i32 %833 to i64
%835 = getelementptr inbounds double, double* %832, i64 %834
store double %831, double* %835
br label %836
836: ; preds = %829, %820
br label %837
837: ; preds = %836, %814
br label %838
838: ; preds = %837
%839 = load i32, i32* %31
%840 = add nsw i32 %839, 1
store i32 %840, i32* %31
br label %802
841: ; preds = %802
%842 = load i32, i32* %24
%843 = srem i32 %842, 7
store i32 %843, i32* %33
%844 = load i32, i32* %33
%845 = icmp ne i32 %844, 0
br i1 %845, label %846, label %860
846: ; preds = %841
store i32 0, i32* %31
br label %847
847: ; preds = %856, %846
%848 = load i32, i32* %31
%849 = load i32, i32* %33
%850 = icmp slt i32 %848, %849
br i1 %850, label %851, label %859
851: ; preds = %847
%852 = load double*, double** %20
%853 = load i32, i32* %31
%854 = sext i32 %853 to i64
%855 = getelementptr inbounds double, double* %852, i64 %854
store double 0.000000e+00, double* %855
br label %856
856: ; preds = %851
%857 = load i32, i32* %31
%858 = add nsw i32 %857, 1
store i32 %858, i32* %31
br label %847
859: ; preds = %847
br label %860
860: ; preds = %859, %841
%861 = load i32, i32* %33
store i32 %861, i32* %31
br label %862
862: ; preds = %901, %860
%863 = load i32, i32* %31
%864 = load i32, i32* %24
%865 = icmp slt i32 %863, %864
br i1 %865, label %866, label %904
866: ; preds = %862
%867 = load double*, double** %20
%868 = load i32, i32* %31
%869 = add nsw i32 %868, 6
%870 = sext i32 %869 to i64
%871 = getelementptr inbounds double, double* %867, i64 %870
store double 0.000000e+00, double* %871
%872 = load double*, double** %20
%873 = load i32, i32* %31
%874 = add nsw i32 %873, 5
%875 = sext i32 %874 to i64
%876 = getelementptr inbounds double, double* %872, i64 %875
store double 0.000000e+00, double* %876
%877 = load double*, double** %20
%878 = load i32, i32* %31
%879 = add nsw i32 %878, 4
%880 = sext i32 %879 to i64
%881 = getelementptr inbounds double, double* %877, i64 %880
store double 0.000000e+00, double* %881
%882 = load double*, double** %20
%883 = load i32, i32* %31
%884 = add nsw i32 %883, 3
%885 = sext i32 %884 to i64
%886 = getelementptr inbounds double, double* %882, i64 %885
store double 0.000000e+00, double* %886
%887 = load double*, double** %20
%888 = load i32, i32* %31
%889 = add nsw i32 %888, 2
%890 = sext i32 %889 to i64
%891 = getelementptr inbounds double, double* %887, i64 %890
store double 0.000000e+00, double* %891
%892 = load double*, double** %20
%893 = load i32, i32* %31
%894 = add nsw i32 %893, 1
%895 = sext i32 %894 to i64
%896 = getelementptr inbounds double, double* %892, i64 %895
store double 0.000000e+00, double* %896
%897 = load double*, double** %20
%898 = load i32, i32* %31
%899 = sext i32 %898 to i64
%900 = getelementptr inbounds double, double* %897, i64 %899
store double 0.000000e+00, double* %900
br label %901
901: ; preds = %866
%902 = load i32, i32* %31
%903 = add nsw i32 %902, 7
store i32 %903, i32* %31
br label %862
904: ; preds = %862
store double 0.000000e+00, double* %36
store double 1.000000e+00, double* %37
br label %905
905: ; preds = %904
br label %1722
906: ; preds = %693
store double 0.000000e+00, double* %39
%907 = load i32, i32* %24
%908 = srem i32 %907, 5
store i32 %908, i32* %33
%909 = load i32, i32* %33
%910 = icmp ne i32 %909, 0
br i1 %910, label %911, label %929
911: ; preds = %906
store i32 0, i32* %31
br label %912
912: ; preds = %925, %911
%913 = load i32, i32* %31
%914 = load i32, i32* %33
%915 = icmp slt i32 %913, %914
br i1 %915, label %916, label %928
916: ; preds = %912
%917 = load double*, double** %20
%918 = load i32, i32* %31
%919 = sext i32 %918 to i64
%920 = getelementptr inbounds double, double* %917, i64 %919
%921 = load double, double* %920
%922 = call double @llvm.fabs.f64(double %921)
%923 = load double, double* %39
%924 = fadd double %923, %922
store double %924, double* %39
br label %925
925: ; preds = %916
%926 = load i32, i32* %31
%927 = add nsw i32 %926, 1
store i32 %927, i32* %31
br label %912
928: ; preds = %912
br label %929
929: ; preds = %928, %906
%930 = load i32, i32* %33
store i32 %930, i32* %31
br label %931
931: ; preds = %976, %929
%932 = load i32, i32* %31
%933 = load i32, i32* %24
%934 = icmp slt i32 %932, %933
br i1 %934, label %935, label %979
935: ; preds = %931
%936 = load double, double* %39
%937 = load double*, double** %20
%938 = load i32, i32* %31
%939 = sext i32 %938 to i64
%940 = getelementptr inbounds double, double* %937, i64 %939
%941 = load double, double* %940
%942 = call double @llvm.fabs.f64(double %941)
%943 = fadd double %936, %942
%944 = load double*, double** %20
%945 = load i32, i32* %31
%946 = add nsw i32 %945, 1
%947 = sext i32 %946 to i64
%948 = getelementptr inbounds double, double* %944, i64 %947
%949 = load double, double* %948
%950 = call double @llvm.fabs.f64(double %949)
%951 = fadd double %943, %950
%952 = load double*, double** %20
%953 = load i32, i32* %31
%954 = add nsw i32 %953, 2
%955 = sext i32 %954 to i64
%956 = getelementptr inbounds double, double* %952, i64 %955
%957 = load double, double* %956
%958 = call double @llvm.fabs.f64(double %957)
%959 = fadd double %951, %958
%960 = load double*, double** %20
%961 = load i32, i32* %31
%962 = add nsw i32 %961, 3
%963 = sext i32 %962 to i64
%964 = getelementptr inbounds double, double* %960, i64 %963
%965 = load double, double* %964
%966 = call double @llvm.fabs.f64(double %965)
%967 = fadd double %959, %966
%968 = load double*, double** %20
%969 = load i32, i32* %31
%970 = add nsw i32 %969, 4
%971 = sext i32 %970 to i64
%972 = getelementptr inbounds double, double* %968, i64 %971
%973 = load double, double* %972
%974 = call double @llvm.fabs.f64(double %973)
%975 = fadd double %967, %974
store double %975, double* %39
br label %976
976: ; preds = %935
%977 = load i32, i32* %31
%978 = add nsw i32 %977, 5
store i32 %978, i32* %31
br label %931
979: ; preds = %931
%980 = load double, double* %39
%981 = load i32, i32* %24
%982 = sitofp i32 %981 to double
%983 = fdiv double %980, %982
%984 = load double*, double** %17
store double %983, double* %984
%985 = load double*, double** %17
%986 = load double, double* %985
%987 = load double, double* %28
%988 = fcmp ole double %986, %987
br i1 %988, label %989, label %990
989: ; preds = %979
store i32 1, i32* %34
br label %990
990: ; preds = %989, %979
br label %1722
991: ; preds = %693
%992 = load double*, double** %19
%993 = getelementptr inbounds double, double* %992, i64 0
%994 = load double, double* %993
%995 = load double*, double** %19
%996 = getelementptr inbounds double, double* %995, i64 0
%997 = load double, double* %996
%998 = fadd double %994, %997
%999 = load double*, double** %19
%1000 = getelementptr inbounds double, double* %999, i64 1
%1001 = load double, double* %1000
%1002 = fsub double %998, %1001
%1003 = load double*, double** %22
%1004 = getelementptr inbounds double, double* %1003, i64 0
%1005 = load double, double* %1004
%1006 = fsub double %1002, %1005
%1007 = load double*, double** %27
%1008 = getelementptr inbounds double, double* %1007, i64 0
store double %1006, double* %1008
store i32 1, i32* %31
br label %1009
1009: ; preds = %1051, %991
%1010 = load i32, i32* %31
%1011 = load i32, i32* %24
%1012 = sub nsw i32 %1011, 1
%1013 = icmp slt i32 %1010, %1012
br i1 %1013, label %1014, label %1054
1014: ; preds = %1009
%1015 = load double*, double** %19
%1016 = load i32, i32* %31
%1017 = sub nsw i32 %1016, 1
%1018 = sext i32 %1017 to i64
%1019 = getelementptr inbounds double, double* %1015, i64 %1018
%1020 = load double, double* %1019
%1021 = fneg double %1020
%1022 = load double*, double** %19
%1023 = load i32, i32* %31
%1024 = sext i32 %1023 to i64
%1025 = getelementptr inbounds double, double* %1022, i64 %1024
%1026 = load double, double* %1025
%1027 = fadd double %1021, %1026
%1028 = load double*, double** %19
%1029 = load i32, i32* %31
%1030 = sext i32 %1029 to i64
%1031 = getelementptr inbounds double, double* %1028, i64 %1030
%1032 = load double, double* %1031
%1033 = fadd double %1027, %1032
%1034 = load double*, double** %19
%1035 = load i32, i32* %31
%1036 = add nsw i32 %1035, 1
%1037 = sext i32 %1036 to i64
%1038 = getelementptr inbounds double, double* %1034, i64 %1037
%1039 = load double, double* %1038
%1040 = fsub double %1033, %1039
%1041 = load double*, double** %22
%1042 = load i32, i32* %31
%1043 = sext i32 %1042 to i64
%1044 = getelementptr inbounds double, double* %1041, i64 %1043
%1045 = load double, double* %1044
%1046 = fsub double %1040, %1045
%1047 = load double*, double** %27
%1048 = load i32, i32* %31
%1049 = sext i32 %1048 to i64
%1050 = getelementptr inbounds double, double* %1047, i64 %1049
store double %1046, double* %1050
br label %1051
1051: ; preds = %1014
%1052 = load i32, i32* %31
%1053 = add nsw i32 %1052, 1
store i32 %1053, i32* %31
br label %1009
1054: ; preds = %1009
%1055 = load double*, double** %19
%1056 = load i32, i32* %24
%1057 = sub nsw i32 %1056, 2
%1058 = sext i32 %1057 to i64
%1059 = getelementptr inbounds double, double* %1055, i64 %1058
%1060 = load double, double* %1059
%1061 = fneg double %1060
%1062 = load double*, double** %19
%1063 = load i32, i32* %24
%1064 = sub nsw i32 %1063, 1
%1065 = sext i32 %1064 to i64
%1066 = getelementptr inbounds double, double* %1062, i64 %1065
%1067 = load double, double* %1066
%1068 = fadd double %1061, %1067
%1069 = load double*, double** %19
%1070 = load i32, i32* %24
%1071 = sub nsw i32 %1070, 1
%1072 = sext i32 %1071 to i64
%1073 = getelementptr inbounds double, double* %1069, i64 %1072
%1074 = load double, double* %1073
%1075 = fadd double %1068, %1074
%1076 = load double*, double** %22
%1077 = load i32, i32* %24
%1078 = sub nsw i32 %1077, 1
%1079 = sext i32 %1078 to i64
%1080 = getelementptr inbounds double, double* %1076, i64 %1079
%1081 = load double, double* %1080
%1082 = fsub double %1075, %1081
%1083 = load double*, double** %27
%1084 = load i32, i32* %24
%1085 = sub nsw i32 %1084, 1
%1086 = sext i32 %1085 to i64
%1087 = getelementptr inbounds double, double* %1083, i64 %1086
store double %1082, double* %1087
store i32 0, i32* %31
br label %1088
1088: ; preds = %1125, %1054
%1089 = load i32, i32* %31
%1090 = load i32, i32* %24
%1091 = icmp slt i32 %1089, %1090
br i1 %1091, label %1092, label %1128
1092: ; preds = %1088
%1093 = load double*, double** %27
%1094 = load i32, i32* %31
%1095 = sext i32 %1094 to i64
%1096 = getelementptr inbounds double, double* %1093, i64 %1095
%1097 = load double, double* %1096
%1098 = fcmp ogt double %1097, 0.000000e+00
br i1 %1098, label %1099, label %1111
1099: ; preds = %1092
%1100 = load double, double* %23
%1101 = load double*, double** %19
%1102 = load i32, i32* %31
%1103 = sext i32 %1102 to i64
%1104 = getelementptr inbounds double, double* %1101, i64 %1103
%1105 = load double, double* %1104
%1106 = fadd double %1100, %1105
%1107 = load double*, double** %26
%1108 = load i32, i32* %31
%1109 = sext i32 %1108 to i64
%1110 = getelementptr inbounds double, double* %1107, i64 %1109
store double %1106, double* %1110
br label %1124
1111: ; preds = %1092
%1112 = load double, double* %23
%1113 = fneg double %1112
%1114 = load double*, double** %19
%1115 = load i32, i32* %31
%1116 = sext i32 %1115 to i64
%1117 = getelementptr inbounds double, double* %1114, i64 %1116
%1118 = load double, double* %1117
%1119 = fadd double %1113, %1118
%1120 = load double*, double** %26
%1121 = load i32, i32* %31
%1122 = sext i32 %1121 to i64
%1123 = getelementptr inbounds double, double* %1120, i64 %1122
store double %1119, double* %1123
br label %1124
1124: ; preds = %1111, %1099
br label %1125
1125: ; preds = %1124
%1126 = load i32, i32* %31
%1127 = add nsw i32 %1126, 1
store i32 %1127, i32* %31
br label %1088
1128: ; preds = %1088
store double 0.000000e+00, double* %39
%1129 = load i32, i32* %24
%1130 = srem i32 %1129, 5
store i32 %1130, i32* %33
%1131 = load i32, i32* %33
%1132 = icmp ne i32 %1131, 0
br i1 %1132, label %1133, label %1155
1133: ; preds = %1128
store i32 0, i32* %31
br label %1134
1134: ; preds = %1151, %1133
%1135 = load i32, i32* %31
%1136 = load i32, i32* %33
%1137 = icmp slt i32 %1135, %1136
br i1 %1137, label %1138, label %1154
1138: ; preds = %1134
%1139 = load double*, double** %26
%1140 = load i32, i32* %31
%1141 = sext i32 %1140 to i64
%1142 = getelementptr inbounds double, double* %1139, i64 %1141
%1143 = load double, double* %1142
%1144 = load double*, double** %27
%1145 = load i32, i32* %31
%1146 = sext i32 %1145 to i64
%1147 = getelementptr inbounds double, double* %1144, i64 %1146
%1148 = load double, double* %1147
%1149 = load double, double* %39
%1150 = call double @llvm.fmuladd.f64(double %1143, double %1148, double %1149)
store double %1150, double* %39
br label %1151
1151: ; preds = %1138
%1152 = load i32, i32* %31
%1153 = add nsw i32 %1152, 1
store i32 %1153, i32* %31
br label %1134
1154: ; preds = %1134
br label %1155
1155: ; preds = %1154, %1128
%1156 = load i32, i32* %33
store i32 %1156, i32* %31
br label %1157
1157: ; preds = %1226, %1155
%1158 = load i32, i32* %31
%1159 = load i32, i32* %24
%1160 = icmp slt i32 %1158, %1159
br i1 %1160, label %1161, label %1229
1161: ; preds = %1157
%1162 = load double, double* %39
%1163 = load double*, double** %26
%1164 = load i32, i32* %31
%1165 = sext i32 %1164 to i64
%1166 = getelementptr inbounds double, double* %1163, i64 %1165
%1167 = load double, double* %1166
%1168 = load double*, double** %27
%1169 = load i32, i32* %31
%1170 = sext i32 %1169 to i64
%1171 = getelementptr inbounds double, double* %1168, i64 %1170
%1172 = load double, double* %1171
%1173 = call double @llvm.fmuladd.f64(double %1167, double %1172, double %1162)
%1174 = load double*, double** %26
%1175 = load i32, i32* %31
%1176 = add nsw i32 %1175, 1
%1177 = sext i32 %1176 to i64
%1178 = getelementptr inbounds double, double* %1174, i64 %1177
%1179 = load double, double* %1178
%1180 = load double*, double** %27
%1181 = load i32, i32* %31
%1182 = add nsw i32 %1181, 1
%1183 = sext i32 %1182 to i64
%1184 = getelementptr inbounds double, double* %1180, i64 %1183
%1185 = load double, double* %1184
%1186 = call double @llvm.fmuladd.f64(double %1179, double %1185, double %1173)
%1187 = load double*, double** %26
%1188 = load i32, i32* %31
%1189 = add nsw i32 %1188, 2
%1190 = sext i32 %1189 to i64
%1191 = getelementptr inbounds double, double* %1187, i64 %1190
%1192 = load double, double* %1191
%1193 = load double*, double** %27
%1194 = load i32, i32* %31
%1195 = add nsw i32 %1194, 2
%1196 = sext i32 %1195 to i64
%1197 = getelementptr inbounds double, double* %1193, i64 %1196
%1198 = load double, double* %1197
%1199 = call double @llvm.fmuladd.f64(double %1192, double %1198, double %1186)
%1200 = load double*, double** %26
%1201 = load i32, i32* %31
%1202 = add nsw i32 %1201, 3
%1203 = sext i32 %1202 to i64
%1204 = getelementptr inbounds double, double* %1200, i64 %1203
%1205 = load double, double* %1204
%1206 = load double*, double** %27
%1207 = load i32, i32* %31
%1208 = add nsw i32 %1207, 3
%1209 = sext i32 %1208 to i64
%1210 = getelementptr inbounds double, double* %1206, i64 %1209
%1211 = load double, double* %1210
%1212 = call double @llvm.fmuladd.f64(double %1205, double %1211, double %1199)
%1213 = load double*, double** %26
%1214 = load i32, i32* %31
%1215 = add nsw i32 %1214, 4
%1216 = sext i32 %1215 to i64
%1217 = getelementptr inbounds double, double* %1213, i64 %1216
%1218 = load double, double* %1217
%1219 = load double*, double** %27
%1220 = load i32, i32* %31
%1221 = add nsw i32 %1220, 4
%1222 = sext i32 %1221 to i64
%1223 = getelementptr inbounds double, double* %1219, i64 %1222
%1224 = load double, double* %1223
%1225 = call double @llvm.fmuladd.f64(double %1218, double %1224, double %1212)
store double %1225, double* %39
br label %1226
1226: ; preds = %1161
%1227 = load i32, i32* %31
%1228 = add nsw i32 %1227, 5
store i32 %1228, i32* %31
br label %1157
1229: ; preds = %1157
%1230 = load double, double* %39
%1231 = load double*, double** %17
store double %1230, double* %1231
%1232 = load double*, double** %17
%1233 = load double, double* %1232
%1234 = load double, double* %28
%1235 = fcmp ole double %1233, %1234
br i1 %1235, label %1236, label %1237
1236: ; preds = %1229
store i32 1, i32* %34
br label %1237
1237: ; preds = %1236, %1229
br label %1722
1238: ; preds = %693
%1239 = load double*, double** %19
%1240 = getelementptr inbounds double, double* %1239, i64 0
%1241 = load double, double* %1240
%1242 = load double*, double** %19
%1243 = getelementptr inbounds double, double* %1242, i64 0
%1244 = load double, double* %1243
%1245 = fadd double %1241, %1244
%1246 = load double*, double** %19
%1247 = getelementptr inbounds double, double* %1246, i64 1
%1248 = load double, double* %1247
%1249 = fsub double %1245, %1248
%1250 = load double*, double** %22
%1251 = getelementptr inbounds double, double* %1250, i64 0
%1252 = load double, double* %1251
%1253 = fsub double %1249, %1252
%1254 = load double*, double** %27
%1255 = getelementptr inbounds double, double* %1254, i64 0
store double %1253, double* %1255
store i32 1, i32* %31
br label %1256
1256: ; preds = %1298, %1238
%1257 = load i32, i32* %31
%1258 = load i32, i32* %24
%1259 = sub nsw i32 %1258, 1
%1260 = icmp slt i32 %1257, %1259
br i1 %1260, label %1261, label %1301
1261: ; preds = %1256
%1262 = load double*, double** %19
%1263 = load i32, i32* %31
%1264 = sub nsw i32 %1263, 1
%1265 = sext i32 %1264 to i64
%1266 = getelementptr inbounds double, double* %1262, i64 %1265
%1267 = load double, double* %1266
%1268 = fneg double %1267
%1269 = load double*, double** %19
%1270 = load i32, i32* %31
%1271 = sext i32 %1270 to i64
%1272 = getelementptr inbounds double, double* %1269, i64 %1271
%1273 = load double, double* %1272
%1274 = fadd double %1268, %1273
%1275 = load double*, double** %19
%1276 = load i32, i32* %31
%1277 = sext i32 %1276 to i64
%1278 = getelementptr inbounds double, double* %1275, i64 %1277
%1279 = load double, double* %1278
%1280 = fadd double %1274, %1279
%1281 = load double*, double** %19
%1282 = load i32, i32* %31
%1283 = add nsw i32 %1282, 1
%1284 = sext i32 %1283 to i64
%1285 = getelementptr inbounds double, double* %1281, i64 %1284
%1286 = load double, double* %1285
%1287 = fsub double %1280, %1286
%1288 = load double*, double** %22
%1289 = load i32, i32* %31
%1290 = sext i32 %1289 to i64
%1291 = getelementptr inbounds double, double* %1288, i64 %1290
%1292 = load double, double* %1291
%1293 = fsub double %1287, %1292
%1294 = load double*, double** %27
%1295 = load i32, i32* %31
%1296 = sext i32 %1295 to i64
%1297 = getelementptr inbounds double, double* %1294, i64 %1296
store double %1293, double* %1297
br label %1298
1298: ; preds = %1261
%1299 = load i32, i32* %31
%1300 = add nsw i32 %1299, 1
store i32 %1300, i32* %31
br label %1256
1301: ; preds = %1256
%1302 = load double*, double** %19
%1303 = load i32, i32* %24
%1304 = sub nsw i32 %1303, 2
%1305 = sext i32 %1304 to i64
%1306 = getelementptr inbounds double, double* %1302, i64 %1305
%1307 = load double, double* %1306
%1308 = fneg double %1307
%1309 = load double*, double** %19
%1310 = load i32, i32* %24
%1311 = sub nsw i32 %1310, 1
%1312 = sext i32 %1311 to i64
%1313 = getelementptr inbounds double, double* %1309, i64 %1312
%1314 = load double, double* %1313
%1315 = fadd double %1308, %1314
%1316 = load double*, double** %19
%1317 = load i32, i32* %24
%1318 = sub nsw i32 %1317, 1
%1319 = sext i32 %1318 to i64
%1320 = getelementptr inbounds double, double* %1316, i64 %1319
%1321 = load double, double* %1320
%1322 = fadd double %1315, %1321
%1323 = load double*, double** %22
%1324 = load i32, i32* %24
%1325 = sub nsw i32 %1324, 1
%1326 = sext i32 %1325 to i64
%1327 = getelementptr inbounds double, double* %1323, i64 %1326
%1328 = load double, double* %1327
%1329 = fsub double %1322, %1328
%1330 = load double*, double** %27
%1331 = load i32, i32* %24
%1332 = sub nsw i32 %1331, 1
%1333 = sext i32 %1332 to i64
%1334 = getelementptr inbounds double, double* %1330, i64 %1333
store double %1329, double* %1334
store i32 0, i32* %31
br label %1335
1335: ; preds = %1372, %1301
%1336 = load i32, i32* %31
%1337 = load i32, i32* %24
%1338 = icmp slt i32 %1336, %1337
br i1 %1338, label %1339, label %1375
1339: ; preds = %1335
%1340 = load double*, double** %27
%1341 = load i32, i32* %31
%1342 = sext i32 %1341 to i64
%1343 = getelementptr inbounds double, double* %1340, i64 %1342
%1344 = load double, double* %1343
%1345 = fcmp ogt double %1344, 0.000000e+00
br i1 %1345, label %1346, label %1358
1346: ; preds = %1339
%1347 = load double, double* %23
%1348 = load double*, double** %19
%1349 = load i32, i32* %31
%1350 = sext i32 %1349 to i64
%1351 = getelementptr inbounds double, double* %1348, i64 %1350
%1352 = load double, double* %1351
%1353 = fadd double %1347, %1352
%1354 = load double*, double** %26
%1355 = load i32, i32* %31
%1356 = sext i32 %1355 to i64
%1357 = getelementptr inbounds double, double* %1354, i64 %1356
store double %1353, double* %1357
br label %1371
1358: ; preds = %1339
%1359 = load double, double* %23
%1360 = fneg double %1359
%1361 = load double*, double** %19
%1362 = load i32, i32* %31
%1363 = sext i32 %1362 to i64
%1364 = getelementptr inbounds double, double* %1361, i64 %1363
%1365 = load double, double* %1364
%1366 = fadd double %1360, %1365
%1367 = load double*, double** %26
%1368 = load i32, i32* %31
%1369 = sext i32 %1368 to i64
%1370 = getelementptr inbounds double, double* %1367, i64 %1369
store double %1366, double* %1370
br label %1371
1371: ; preds = %1358, %1346
br label %1372
1372: ; preds = %1371
%1373 = load i32, i32* %31
%1374 = add nsw i32 %1373, 1
store i32 %1374, i32* %31
br label %1335
1375: ; preds = %1335
store double 0.000000e+00, double* %39
%1376 = load i32, i32* %24
%1377 = srem i32 %1376, 5
store i32 %1377, i32* %33
%1378 = load i32, i32* %33
%1379 = icmp ne i32 %1378, 0
br i1 %1379, label %1380, label %1402
1380: ; preds = %1375
store i32 0, i32* %31
br label %1381
1381: ; preds = %1398, %1380
%1382 = load i32, i32* %31
%1383 = load i32, i32* %33
%1384 = icmp slt i32 %1382, %1383
br i1 %1384, label %1385, label %1401
1385: ; preds = %1381
%1386 = load double*, double** %26
%1387 = load i32, i32* %31
%1388 = sext i32 %1387 to i64
%1389 = getelementptr inbounds double, double* %1386, i64 %1388
%1390 = load double, double* %1389
%1391 = load double*, double** %27
%1392 = load i32, i32* %31
%1393 = sext i32 %1392 to i64
%1394 = getelementptr inbounds double, double* %1391, i64 %1393
%1395 = load double, double* %1394
%1396 = load double, double* %39
%1397 = call double @llvm.fmuladd.f64(double %1390, double %1395, double %1396)
store double %1397, double* %39
br label %1398
1398: ; preds = %1385
%1399 = load i32, i32* %31
%1400 = add nsw i32 %1399, 1
store i32 %1400, i32* %31
br label %1381
1401: ; preds = %1381
br label %1402
1402: ; preds = %1401, %1375
%1403 = load i32, i32* %33
store i32 %1403, i32* %31
br label %1404
1404: ; preds = %1473, %1402
%1405 = load i32, i32* %31
%1406 = load i32, i32* %24
%1407 = icmp slt i32 %1405, %1406
br i1 %1407, label %1408, label %1476
1408: ; preds = %1404
%1409 = load double, double* %39
%1410 = load double*, double** %26
%1411 = load i32, i32* %31
%1412 = sext i32 %1411 to i64
%1413 = getelementptr inbounds double, double* %1410, i64 %1412
%1414 = load double, double* %1413
%1415 = load double*, double** %27
%1416 = load i32, i32* %31
%1417 = sext i32 %1416 to i64
%1418 = getelementptr inbounds double, double* %1415, i64 %1417
%1419 = load double, double* %1418
%1420 = call double @llvm.fmuladd.f64(double %1414, double %1419, double %1409)
%1421 = load double*, double** %26
%1422 = load i32, i32* %31
%1423 = add nsw i32 %1422, 1
%1424 = sext i32 %1423 to i64
%1425 = getelementptr inbounds double, double* %1421, i64 %1424
%1426 = load double, double* %1425
%1427 = load double*, double** %27
%1428 = load i32, i32* %31
%1429 = add nsw i32 %1428, 1
%1430 = sext i32 %1429 to i64
%1431 = getelementptr inbounds double, double* %1427, i64 %1430
%1432 = load double, double* %1431
%1433 = call double @llvm.fmuladd.f64(double %1426, double %1432, double %1420)
%1434 = load double*, double** %26
%1435 = load i32, i32* %31
%1436 = add nsw i32 %1435, 2
%1437 = sext i32 %1436 to i64
%1438 = getelementptr inbounds double, double* %1434, i64 %1437
%1439 = load double, double* %1438
%1440 = load double*, double** %27
%1441 = load i32, i32* %31
%1442 = add nsw i32 %1441, 2
%1443 = sext i32 %1442 to i64
%1444 = getelementptr inbounds double, double* %1440, i64 %1443
%1445 = load double, double* %1444
%1446 = call double @llvm.fmuladd.f64(double %1439, double %1445, double %1433)
%1447 = load double*, double** %26
%1448 = load i32, i32* %31
%1449 = add nsw i32 %1448, 3
%1450 = sext i32 %1449 to i64
%1451 = getelementptr inbounds double, double* %1447, i64 %1450
%1452 = load double, double* %1451
%1453 = load double*, double** %27
%1454 = load i32, i32* %31
%1455 = add nsw i32 %1454, 3
%1456 = sext i32 %1455 to i64
%1457 = getelementptr inbounds double, double* %1453, i64 %1456
%1458 = load double, double* %1457
%1459 = call double @llvm.fmuladd.f64(double %1452, double %1458, double %1446)
%1460 = load double*, double** %26
%1461 = load i32, i32* %31
%1462 = add nsw i32 %1461, 4
%1463 = sext i32 %1462 to i64
%1464 = getelementptr inbounds double, double* %1460, i64 %1463
%1465 = load double, double* %1464
%1466 = load double*, double** %27
%1467 = load i32, i32* %31
%1468 = add nsw i32 %1467, 4
%1469 = sext i32 %1468 to i64
%1470 = getelementptr inbounds double, double* %1466, i64 %1469
%1471 = load double, double* %1470
%1472 = call double @llvm.fmuladd.f64(double %1465, double %1471, double %1459)
store double %1472, double* %39
br label %1473
1473: ; preds = %1408
%1474 = load i32, i32* %31
%1475 = add nsw i32 %1474, 5
store i32 %1475, i32* %31
br label %1404
1476: ; preds = %1404
%1477 = load double, double* %39
%1478 = load double*, double** %17
store double %1477, double* %1478
store double 0.000000e+00, double* %39
%1479 = load i32, i32* %24
%1480 = srem i32 %1479, 5
store i32 %1480, i32* %33
%1481 = load i32, i32* %33
%1482 = icmp ne i32 %1481, 0
br i1 %1482, label %1483, label %1511
1483: ; preds = %1476
store i32 0, i32* %31
br label %1484
1484: ; preds = %1507, %1483
%1485 = load i32, i32* %31
%1486 = load i32, i32* %33
%1487 = icmp slt i32 %1485, %1486
br i1 %1487, label %1488, label %1510
1488: ; preds = %1484
%1489 = load double*, double** %19
%1490 = load i32, i32* %31
%1491 = sext i32 %1490 to i64
%1492 = getelementptr inbounds double, double* %1489, i64 %1491
%1493 = load double, double* %1492
%1494 = load double*, double** %27
%1495 = load i32, i32* %31
%1496 = sext i32 %1495 to i64
%1497 = getelementptr inbounds double, double* %1494, i64 %1496
%1498 = load double, double* %1497
%1499 = load double*, double** %22
%1500 = load i32, i32* %31
%1501 = sext i32 %1500 to i64
%1502 = getelementptr inbounds double, double* %1499, i64 %1501
%1503 = load double, double* %1502
%1504 = fsub double %1498, %1503
%1505 = load double, double* %39
%1506 = call double @llvm.fmuladd.f64(double %1493, double %1504, double %1505)
store double %1506, double* %39
br label %1507
1507: ; preds = %1488
%1508 = load i32, i32* %31
%1509 = add nsw i32 %1508, 1
store i32 %1509, i32* %31
br label %1484
1510: ; preds = %1484
br label %1511
1511: ; preds = %1510, %1476
%1512 = load i32, i32* %33
store i32 %1512, i32* %31
br label %1513
1513: ; preds = %1616, %1511
%1514 = load i32, i32* %31
%1515 = load i32, i32* %24
%1516 = icmp slt i32 %1514, %1515
br i1 %1516, label %1517, label %1619
1517: ; preds = %1513
%1518 = load double, double* %39
%1519 = load double*, double** %19
%1520 = load i32, i32* %31
%1521 = sext i32 %1520 to i64
%1522 = getelementptr inbounds double, double* %1519, i64 %1521
%1523 = load double, double* %1522
%1524 = load double*, double** %27
%1525 = load i32, i32* %31
%1526 = sext i32 %1525 to i64
%1527 = getelementptr inbounds double, double* %1524, i64 %1526
%1528 = load double, double* %1527
%1529 = load double*, double** %22
%1530 = load i32, i32* %31
%1531 = sext i32 %1530 to i64
%1532 = getelementptr inbounds double, double* %1529, i64 %1531
%1533 = load double, double* %1532
%1534 = fsub double %1528, %1533
%1535 = call double @llvm.fmuladd.f64(double %1523, double %1534, double %1518)
%1536 = load double*, double** %19
%1537 = load i32, i32* %31
%1538 = add nsw i32 %1537, 1
%1539 = sext i32 %1538 to i64
%1540 = getelementptr inbounds double, double* %1536, i64 %1539
%1541 = load double, double* %1540
%1542 = load double*, double** %27
%1543 = load i32, i32* %31
%1544 = add nsw i32 %1543, 1
%1545 = sext i32 %1544 to i64
%1546 = getelementptr inbounds double, double* %1542, i64 %1545
%1547 = load double, double* %1546
%1548 = load double*, double** %22
%1549 = load i32, i32* %31
%1550 = add nsw i32 %1549, 1
%1551 = sext i32 %1550 to i64
%1552 = getelementptr inbounds double, double* %1548, i64 %1551
%1553 = load double, double* %1552
%1554 = fsub double %1547, %1553
%1555 = call double @llvm.fmuladd.f64(double %1541, double %1554, double %1535)
%1556 = load double*, double** %19
%1557 = load i32, i32* %31
%1558 = add nsw i32 %1557, 2
%1559 = sext i32 %1558 to i64
%1560 = getelementptr inbounds double, double* %1556, i64 %1559
%1561 = load double, double* %1560
%1562 = load double*, double** %27
%1563 = load i32, i32* %31
%1564 = add nsw i32 %1563, 2
%1565 = sext i32 %1564 to i64
%1566 = getelementptr inbounds double, double* %1562, i64 %1565
%1567 = load double, double* %1566
%1568 = load double*, double** %22
%1569 = load i32, i32* %31
%1570 = add nsw i32 %1569, 2
%1571 = sext i32 %1570 to i64
%1572 = getelementptr inbounds double, double* %1568, i64 %1571
%1573 = load double, double* %1572
%1574 = fsub double %1567, %1573
%1575 = call double @llvm.fmuladd.f64(double %1561, double %1574, double %1555)
%1576 = load double*, double** %19
%1577 = load i32, i32* %31
%1578 = add nsw i32 %1577, 3
%1579 = sext i32 %1578 to i64
%1580 = getelementptr inbounds double, double* %1576, i64 %1579
%1581 = load double, double* %1580
%1582 = load double*, double** %27
%1583 = load i32, i32* %31
%1584 = add nsw i32 %1583, 3
%1585 = sext i32 %1584 to i64
%1586 = getelementptr inbounds double, double* %1582, i64 %1585
%1587 = load double, double* %1586
%1588 = load double*, double** %22
%1589 = load i32, i32* %31
%1590 = add nsw i32 %1589, 3
%1591 = sext i32 %1590 to i64
%1592 = getelementptr inbounds double, double* %1588, i64 %1591
%1593 = load double, double* %1592
%1594 = fsub double %1587, %1593
%1595 = call double @llvm.fmuladd.f64(double %1581, double %1594, double %1575)
%1596 = load double*, double** %19
%1597 = load i32, i32* %31
%1598 = add nsw i32 %1597, 4
%1599 = sext i32 %1598 to i64
%1600 = getelementptr inbounds double, double* %1596, i64 %1599
%1601 = load double, double* %1600
%1602 = load double*, double** %27
%1603 = load i32, i32* %31
%1604 = add nsw i32 %1603, 4
%1605 = sext i32 %1604 to i64
%1606 = getelementptr inbounds double, double* %1602, i64 %1605
%1607 = load double, double* %1606
%1608 = load double*, double** %22
%1609 = load i32, i32* %31
%1610 = add nsw i32 %1609, 4
%1611 = sext i32 %1610 to i64
%1612 = getelementptr inbounds double, double* %1608, i64 %1611
%1613 = load double, double* %1612
%1614 = fsub double %1607, %1613
%1615 = call double @llvm.fmuladd.f64(double %1601, double %1614, double %1595)
store double %1615, double* %39
br label %1616
1616: ; preds = %1517
%1617 = load i32, i32* %31
%1618 = add nsw i32 %1617, 5
store i32 %1618, i32* %31
br label %1513
1619: ; preds = %1513
%1620 = load double, double* %39
%1621 = call double @llvm.fabs.f64(double %1620)
%1622 = fdiv double %1621, 2.000000e+00
store double %1622, double* %39
%1623 = load double, double* %39
%1624 = fcmp olt double %1623, 1.000000e+00
br i1 %1624, label %1625, label %1626
1625: ; preds = %1619
store double 1.000000e+00, double* %39
br label %1626
1626: ; preds = %1625, %1619
%1627 = load double, double* %39
%1628 = load double*, double** %17
%1629 = load double, double* %1628
%1630 = fdiv double %1629, %1627
store double %1630, double* %1628
%1631 = load double*, double** %17
%1632 = load double, double* %1631
%1633 = load double, double* %28
%1634 = fcmp ole double %1632, %1633
br i1 %1634, label %1635, label %1636
1635: ; preds = %1626
store i32 1, i32* %34
br label %1636
1636: ; preds = %1635, %1626
br label %1722
1637: ; preds = %693
store double 0.000000e+00, double* %39
%1638 = load i32, i32* %24
%1639 = srem i32 %1638, 5
store i32 %1639, i32* %33
%1640 = load i32, i32* %33
%1641 = icmp ne i32 %1640, 0
br i1 %1641, label %1642, label %1660
1642: ; preds = %1637
store i32 0, i32* %31
br label %1643
1643: ; preds = %1656, %1642
%1644 = load i32, i32* %31
%1645 = load i32, i32* %33
%1646 = icmp slt i32 %1644, %1645
br i1 %1646, label %1647, label %1659
1647: ; preds = %1643
%1648 = load double*, double** %20
%1649 = load i32, i32* %31
%1650 = sext i32 %1649 to i64
%1651 = getelementptr inbounds double, double* %1648, i64 %1650
%1652 = load double, double* %1651
%1653 = call double @llvm.fabs.f64(double %1652)
%1654 = load double, double* %39
%1655 = fadd double %1654, %1653
store double %1655, double* %39
br label %1656
1656: ; preds = %1647
%1657 = load i32, i32* %31
%1658 = add nsw i32 %1657, 1
store i32 %1658, i32* %31
br label %1643
1659: ; preds = %1643
br label %1660
1660: ; preds = %1659, %1637
%1661 = load i32, i32* %33
store i32 %1661, i32* %31
br label %1662
1662: ; preds = %1707, %1660
%1663 = load i32, i32* %31
%1664 = load i32, i32* %24
%1665 = icmp slt i32 %1663, %1664
br i1 %1665, label %1666, label %1710
1666: ; preds = %1662
%1667 = load double, double* %39
%1668 = load double*, double** %20
%1669 = load i32, i32* %31
%1670 = sext i32 %1669 to i64
%1671 = getelementptr inbounds double, double* %1668, i64 %1670
%1672 = load double, double* %1671
%1673 = call double @llvm.fabs.f64(double %1672)
%1674 = fadd double %1667, %1673
%1675 = load double*, double** %20
%1676 = load i32, i32* %31
%1677 = add nsw i32 %1676, 1
%1678 = sext i32 %1677 to i64
%1679 = getelementptr inbounds double, double* %1675, i64 %1678
%1680 = load double, double* %1679
%1681 = call double @llvm.fabs.f64(double %1680)
%1682 = fadd double %1674, %1681
%1683 = load double*, double** %20
%1684 = load i32, i32* %31
%1685 = add nsw i32 %1684, 2
%1686 = sext i32 %1685 to i64
%1687 = getelementptr inbounds double, double* %1683, i64 %1686
%1688 = load double, double* %1687
%1689 = call double @llvm.fabs.f64(double %1688)
%1690 = fadd double %1682, %1689
%1691 = load double*, double** %20
%1692 = load i32, i32* %31
%1693 = add nsw i32 %1692, 3
%1694 = sext i32 %1693 to i64
%1695 = getelementptr inbounds double, double* %1691, i64 %1694
%1696 = load double, double* %1695
%1697 = call double @llvm.fabs.f64(double %1696)
%1698 = fadd double %1690, %1697
%1699 = load double*, double** %20
%1700 = load i32, i32* %31
%1701 = add nsw i32 %1700, 4
%1702 = sext i32 %1701 to i64
%1703 = getelementptr inbounds double, double* %1699, i64 %1702
%1704 = load double, double* %1703
%1705 = call double @llvm.fabs.f64(double %1704)
%1706 = fadd double %1698, %1705
store double %1706, double* %39
br label %1707
1707: ; preds = %1666
%1708 = load i32, i32* %31
%1709 = add nsw i32 %1708, 5
store i32 %1709, i32* %31
br label %1662
1710: ; preds = %1662
%1711 = load double, double* %39
%1712 = load i32, i32* %24
%1713 = sitofp i32 %1712 to double
%1714 = fdiv double %1711, %1713
%1715 = load double*, double** %17
store double %1714, double* %1715
%1716 = load double*, double** %17
%1717 = load double, double* %1716
%1718 = load double, double* %28
%1719 = fcmp ole double %1717, %1718
br i1 %1719, label %1720, label %1721
1720: ; preds = %1710
store i32 1, i32* %34
br label %1721
1721: ; preds = %1720, %1710
br label %1722
1722: ; preds = %1721, %1636, %1237, %990, %905, %764, %754, %713
%1723 = load i32, i32* %34
%1724 = icmp ne i32 %1723, 0
br i1 %1724, label %1725, label %1726
1725: ; preds = %1722
br label %1731
1726: ; preds = %1722
br label %1727
1727: ; preds = %1726, %680
br label %1728
1728: ; preds = %1727
%1729 = load i32, i32* %32
%1730 = add nsw i32 %1729, 1
store i32 %1730, i32* %32
br label %54
1731: ; preds = %1725, %54
%1732 = load i32, i32* %30
%1733 = icmp ne i32 %1732, 1
br i1 %1733, label %1737, label %1734
1734: ; preds = %1731
%1735 = load i32, i32* %34
%1736 = icmp eq i32 %1735, 0
br i1 %1736, label %1737, label %1797
1737: ; preds = %1734, %1731
%1738 = load double*, double** %21
%1739 = getelementptr inbounds double, double* %1738, i64 0
%1740 = load double, double* %1739
%1741 = load double*, double** %19
%1742 = getelementptr inbounds double, double* %1741, i64 0
%1743 = load double, double* %1742
%1744 = fadd double %1740, %1743
%1745 = load double*, double** %16
%1746 = getelementptr inbounds double, double* %1745, i64 0
store double %1744, double* %1746
store i32 1, i32* %31
br label %1747
1747: ; preds = %1775, %1737
%1748 = load i32, i32* %31
%1749 = load i32, i32* %35
%1750 = sub nsw i32 %1749, 1
%1751 = icmp slt i32 %1748, %1750
br i1 %1751, label %1752, label %1778
1752: ; preds = %1747
%1753 = load double*, double** %21
%1754 = load i32, i32* %31
%1755 = sext i32 %1754 to i64
%1756 = getelementptr inbounds double, double* %1753, i64 %1755
%1757 = load double, double* %1756
%1758 = load double*, double** %19
%1759 = load i32, i32* %31
%1760 = sub nsw i32 %1759, 1
%1761 = sext i32 %1760 to i64
%1762 = getelementptr inbounds double, double* %1758, i64 %1761
%1763 = load double, double* %1762
%1764 = fsub double %1757, %1763
%1765 = load double*, double** %19
%1766 = load i32, i32* %31
%1767 = sext i32 %1766 to i64
%1768 = getelementptr inbounds double, double* %1765, i64 %1767
%1769 = load double, double* %1768
%1770 = fadd double %1764, %1769
%1771 = load double*, double** %16
%1772 = load i32, i32* %31
%1773 = sext i32 %1772 to i64
%1774 = getelementptr inbounds double, double* %1771, i64 %1773
store double %1770, double* %1774
br label %1775
1775: ; preds = %1752
%1776 = load i32, i32* %31
%1777 = add nsw i32 %1776, 1
store i32 %1777, i32* %31
br label %1747
1778: ; preds = %1747
%1779 = load double*, double** %21
%1780 = load i32, i32* %35
%1781 = sub nsw i32 %1780, 1
%1782 = sext i32 %1781 to i64
%1783 = getelementptr inbounds double, double* %1779, i64 %1782
%1784 = load double, double* %1783
%1785 = load double*, double** %19
%1786 = load i32, i32* %35
%1787 = sub nsw i32 %1786, 2
%1788 = sext i32 %1787 to i64
%1789 = getelementptr inbounds double, double* %1785, i64 %1788
%1790 = load double, double* %1789
%1791 = fsub double %1784, %1790
%1792 = load double*, double** %16
%1793 = load i32, i32* %35
%1794 = sub nsw i32 %1793, 1
%1795 = sext i32 %1794 to i64
%1796 = getelementptr inbounds double, double* %1792, i64 %1795
store double %1791, double* %1796
br label %1797
1797: ; preds = %1778, %1734
%1798 = load i32, i32* %30
%1799 = icmp eq i32 %1798, 1
br i1 %1799, label %1800, label %2180
1800: ; preds = %1797
%1801 = load i32, i32* %34
%1802 = icmp eq i32 %1801, 1
br i1 %1802, label %1803, label %2180
1803: ; preds = %1800
%1804 = load double*, double** %19
%1805 = getelementptr inbounds double, double* %1804, i64 0
%1806 = load double, double* %1805
%1807 = load double*, double** %19
%1808 = getelementptr inbounds double, double* %1807, i64 0
%1809 = load double, double* %1808
%1810 = fadd double %1806, %1809
%1811 = load double*, double** %19
%1812 = getelementptr inbounds double, double* %1811, i64 1
%1813 = load double, double* %1812
%1814 = fsub double %1810, %1813
%1815 = load double*, double** %22
%1816 = getelementptr inbounds double, double* %1815, i64 0
%1817 = load double, double* %1816
%1818 = fsub double %1814, %1817
%1819 = load double*, double** %27
%1820 = getelementptr inbounds double, double* %1819, i64 0
store double %1818, double* %1820
store i32 1, i32* %31
br label %1821
1821: ; preds = %1863, %1803
%1822 = load i32, i32* %31
%1823 = load i32, i32* %24
%1824 = sub nsw i32 %1823, 1
%1825 = icmp slt i32 %1822, %1824
br i1 %1825, label %1826, label %1866
1826: ; preds = %1821
%1827 = load double*, double** %19
%1828 = load i32, i32* %31
%1829 = sub nsw i32 %1828, 1
%1830 = sext i32 %1829 to i64
%1831 = getelementptr inbounds double, double* %1827, i64 %1830
%1832 = load double, double* %1831
%1833 = fneg double %1832
%1834 = load double*, double** %19
%1835 = load i32, i32* %31
%1836 = sext i32 %1835 to i64
%1837 = getelementptr inbounds double, double* %1834, i64 %1836
%1838 = load double, double* %1837
%1839 = fadd double %1833, %1838
%1840 = load double*, double** %19
%1841 = load i32, i32* %31
%1842 = sext i32 %1841 to i64
%1843 = getelementptr inbounds double, double* %1840, i64 %1842
%1844 = load double, double* %1843
%1845 = fadd double %1839, %1844
%1846 = load double*, double** %19
%1847 = load i32, i32* %31
%1848 = add nsw i32 %1847, 1
%1849 = sext i32 %1848 to i64
%1850 = getelementptr inbounds double, double* %1846, i64 %1849
%1851 = load double, double* %1850
%1852 = fsub double %1845, %1851
%1853 = load double*, double** %22
%1854 = load i32, i32* %31
%1855 = sext i32 %1854 to i64
%1856 = getelementptr inbounds double, double* %1853, i64 %1855
%1857 = load double, double* %1856
%1858 = fsub double %1852, %1857
%1859 = load double*, double** %27
%1860 = load i32, i32* %31
%1861 = sext i32 %1860 to i64
%1862 = getelementptr inbounds double, double* %1859, i64 %1861
store double %1858, double* %1862
br label %1863
1863: ; preds = %1826
%1864 = load i32, i32* %31
%1865 = add nsw i32 %1864, 1
store i32 %1865, i32* %31
br label %1821
1866: ; preds = %1821
%1867 = load double*, double** %19
%1868 = load i32, i32* %24
%1869 = sub nsw i32 %1868, 2
%1870 = sext i32 %1869 to i64
%1871 = getelementptr inbounds double, double* %1867, i64 %1870
%1872 = load double, double* %1871
%1873 = fneg double %1872
%1874 = load double*, double** %19
%1875 = load i32, i32* %24
%1876 = sub nsw i32 %1875, 1
%1877 = sext i32 %1876 to i64
%1878 = getelementptr inbounds double, double* %1874, i64 %1877
%1879 = load double, double* %1878
%1880 = fadd double %1873, %1879
%1881 = load double*, double** %19
%1882 = load i32, i32* %24
%1883 = sub nsw i32 %1882, 1
%1884 = sext i32 %1883 to i64
%1885 = getelementptr inbounds double, double* %1881, i64 %1884
%1886 = load double, double* %1885
%1887 = fadd double %1880, %1886
%1888 = load double*, double** %22
%1889 = load i32, i32* %24
%1890 = sub nsw i32 %1889, 1
%1891 = sext i32 %1890 to i64
%1892 = getelementptr inbounds double, double* %1888, i64 %1891
%1893 = load double, double* %1892
%1894 = fsub double %1887, %1893
%1895 = load double*, double** %27
%1896 = load i32, i32* %24
%1897 = sub nsw i32 %1896, 1
%1898 = sext i32 %1897 to i64
%1899 = getelementptr inbounds double, double* %1895, i64 %1898
store double %1894, double* %1899
%1900 = load i32, i32* %24
%1901 = srem i32 %1900, 5
store i32 %1901, i32* %33
%1902 = load i32, i32* %33
%1903 = icmp ne i32 %1902, 0
br i1 %1903, label %1904, label %1930
1904: ; preds = %1866
store i32 0, i32* %31
br label %1905
1905: ; preds = %1926, %1904
%1906 = load i32, i32* %31
%1907 = load i32, i32* %33
%1908 = icmp slt i32 %1906, %1907
br i1 %1908, label %1909, label %1929
1909: ; preds = %1905
%1910 = load double*, double** %19
%1911 = load i32, i32* %31
%1912 = sext i32 %1911 to i64
%1913 = getelementptr inbounds double, double* %1910, i64 %1912
%1914 = load double, double* %1913
%1915 = load double*, double** %27
%1916 = load i32, i32* %31
%1917 = sext i32 %1916 to i64
%1918 = getelementptr inbounds double, double* %1915, i64 %1917
%1919 = load double, double* %1918
%1920 = fdiv double %1919, 4.000000e+00
%1921 = fsub double %1914, %1920
%1922 = load double*, double** %19
%1923 = load i32, i32* %31
%1924 = sext i32 %1923 to i64
%1925 = getelementptr inbounds double, double* %1922, i64 %1924
store double %1921, double* %1925
br label %1926
1926: ; preds = %1909
%1927 = load i32, i32* %31
%1928 = add nsw i32 %1927, 1
store i32 %1928, i32* %31
br label %1905
1929: ; preds = %1905
br label %1930
1930: ; preds = %1929, %1866
%1931 = load i32, i32* %33
store i32 %1931, i32* %31
br label %1932
1932: ; preds = %2029, %1930
%1933 = load i32, i32* %31
%1934 = load i32, i32* %24
%1935 = icmp slt i32 %1933, %1934
br i1 %1935, label %1936, label %2032
1936: ; preds = %1932
%1937 = load double*, double** %19
%1938 = load i32, i32* %31
%1939 = sext i32 %1938 to i64
%1940 = getelementptr inbounds double, double* %1937, i64 %1939
%1941 = load double, double* %1940
%1942 = load double*, double** %27
%1943 = load i32, i32* %31
%1944 = sext i32 %1943 to i64
%1945 = getelementptr inbounds double, double* %1942, i64 %1944
%1946 = load double, double* %1945
%1947 = fdiv double %1946, 4.000000e+00
%1948 = fsub double %1941, %1947
%1949 = load double*, double** %19
%1950 = load i32, i32* %31
%1951 = sext i32 %1950 to i64
%1952 = getelementptr inbounds double, double* %1949, i64 %1951
store double %1948, double* %1952
%1953 = load double*, double** %19
%1954 = load i32, i32* %31
%1955 = add nsw i32 %1954, 1
%1956 = sext i32 %1955 to i64
%1957 = getelementptr inbounds double, double* %1953, i64 %1956
%1958 = load double, double* %1957
%1959 = load double*, double** %27
%1960 = load i32, i32* %31
%1961 = add nsw i32 %1960, 1
%1962 = sext i32 %1961 to i64
%1963 = getelementptr inbounds double, double* %1959, i64 %1962
%1964 = load double, double* %1963
%1965 = fdiv double %1964, 4.000000e+00
%1966 = fsub double %1958, %1965
%1967 = load double*, double** %19
%1968 = load i32, i32* %31
%1969 = add nsw i32 %1968, 1
%1970 = sext i32 %1969 to i64
%1971 = getelementptr inbounds double, double* %1967, i64 %1970
store double %1966, double* %1971
%1972 = load double*, double** %19
%1973 = load i32, i32* %31
%1974 = add nsw i32 %1973, 2
%1975 = sext i32 %1974 to i64
%1976 = getelementptr inbounds double, double* %1972, i64 %1975
%1977 = load double, double* %1976
%1978 = load double*, double** %27
%1979 = load i32, i32* %31
%1980 = add nsw i32 %1979, 2
%1981 = sext i32 %1980 to i64
%1982 = getelementptr inbounds double, double* %1978, i64 %1981
%1983 = load double, double* %1982
%1984 = fdiv double %1983, 4.000000e+00
%1985 = fsub double %1977, %1984
%1986 = load double*, double** %19
%1987 = load i32, i32* %31
%1988 = add nsw i32 %1987, 2
%1989 = sext i32 %1988 to i64
%1990 = getelementptr inbounds double, double* %1986, i64 %1989
store double %1985, double* %1990
%1991 = load double*, double** %19
%1992 = load i32, i32* %31
%1993 = add nsw i32 %1992, 3
%1994 = sext i32 %1993 to i64
%1995 = getelementptr inbounds double, double* %1991, i64 %1994
%1996 = load double, double* %1995
%1997 = load double*, double** %27
%1998 = load i32, i32* %31
%1999 = add nsw i32 %1998, 3
%2000 = sext i32 %1999 to i64
%2001 = getelementptr inbounds double, double* %1997, i64 %2000
%2002 = load double, double* %2001
%2003 = fdiv double %2002, 4.000000e+00
%2004 = fsub double %1996, %2003
%2005 = load double*, double** %19
%2006 = load i32, i32* %31
%2007 = add nsw i32 %2006, 3
%2008 = sext i32 %2007 to i64
%2009 = getelementptr inbounds double, double* %2005, i64 %2008
store double %2004, double* %2009
%2010 = load double*, double** %19
%2011 = load i32, i32* %31
%2012 = add nsw i32 %2011, 4
%2013 = sext i32 %2012 to i64
%2014 = getelementptr inbounds double, double* %2010, i64 %2013
%2015 = load double, double* %2014
%2016 = load double*, double** %27
%2017 = load i32, i32* %31
%2018 = add nsw i32 %2017, 4
%2019 = sext i32 %2018 to i64
%2020 = getelementptr inbounds double, double* %2016, i64 %2019
%2021 = load double, double* %2020
%2022 = fdiv double %2021, 4.000000e+00
%2023 = fsub double %2015, %2022
%2024 = load double*, double** %19
%2025 = load i32, i32* %31
%2026 = add nsw i32 %2025, 4
%2027 = sext i32 %2026 to i64
%2028 = getelementptr inbounds double, double* %2024, i64 %2027
store double %2023, double* %2028
br label %2029
2029: ; preds = %1936
%2030 = load i32, i32* %31
%2031 = add nsw i32 %2030, 5
store i32 %2031, i32* %31
br label %1932
2032: ; preds = %1932
store i32 0, i32* %31
br label %2033
2033: ; preds = %2069, %2032
%2034 = load i32, i32* %31
%2035 = load i32, i32* %24
%2036 = icmp slt i32 %2034, %2035
br i1 %2036, label %2037, label %2072
2037: ; preds = %2033
%2038 = load double*, double** %19
%2039 = load i32, i32* %31
%2040 = sext i32 %2039 to i64
%2041 = getelementptr inbounds double, double* %2038, i64 %2040
%2042 = load double, double* %2041
%2043 = load double, double* %23
%2044 = fcmp ogt double %2042, %2043
br i1 %2044, label %2045, label %2051
2045: ; preds = %2037
%2046 = load double, double* %23
%2047 = load double*, double** %19
%2048 = load i32, i32* %31
%2049 = sext i32 %2048 to i64
%2050 = getelementptr inbounds double, double* %2047, i64 %2049
store double %2046, double* %2050
br label %2068
2051: ; preds = %2037
%2052 = load double*, double** %19
%2053 = load i32, i32* %31
%2054 = sext i32 %2053 to i64
%2055 = getelementptr inbounds double, double* %2052, i64 %2054
%2056 = load double, double* %2055
%2057 = load double, double* %23
%2058 = fneg double %2057
%2059 = fcmp olt double %2056, %2058
br i1 %2059, label %2060, label %2067
2060: ; preds = %2051
%2061 = load double, double* %23
%2062 = fneg double %2061
%2063 = load double*, double** %19
%2064 = load i32, i32* %31
%2065 = sext i32 %2064 to i64
%2066 = getelementptr inbounds double, double* %2063, i64 %2065
store double %2062, double* %2066
br label %2067
2067: ; preds = %2060, %2051
br label %2068
2068: ; preds = %2067, %2045
br label %2069
2069: ; preds = %2068
%2070 = load i32, i32* %31
%2071 = add nsw i32 %2070, 1
store i32 %2071, i32* %31
br label %2033
2072: ; preds = %2033
%2073 = load double*, double** %19
%2074 = getelementptr inbounds double, double* %2073, i64 0
%2075 = load double, double* %2074
%2076 = load double*, double** %19
%2077 = getelementptr inbounds double, double* %2076, i64 0
%2078 = load double, double* %2077
%2079 = fadd double %2075, %2078
%2080 = load double*, double** %19
%2081 = getelementptr inbounds double, double* %2080, i64 1
%2082 = load double, double* %2081
%2083 = fsub double %2079, %2082
%2084 = load double*, double** %22
%2085 = getelementptr inbounds double, double* %2084, i64 0
%2086 = load double, double* %2085
%2087 = fsub double %2083, %2086
%2088 = load double*, double** %27
%2089 = getelementptr inbounds double, double* %2088, i64 0
store double %2087, double* %2089
store i32 1, i32* %31
br label %2090
2090: ; preds = %2132, %2072
%2091 = load i32, i32* %31
%2092 = load i32, i32* %24
%2093 = sub nsw i32 %2092, 1
%2094 = icmp slt i32 %2091, %2093
br i1 %2094, label %2095, label %2135
2095: ; preds = %2090
%2096 = load double*, double** %19
%2097 = load i32, i32* %31
%2098 = sub nsw i32 %2097, 1
%2099 = sext i32 %2098 to i64
%2100 = getelementptr inbounds double, double* %2096, i64 %2099
%2101 = load double, double* %2100
%2102 = fneg double %2101
%2103 = load double*, double** %19
%2104 = load i32, i32* %31
%2105 = sext i32 %2104 to i64
%2106 = getelementptr inbounds double, double* %2103, i64 %2105
%2107 = load double, double* %2106
%2108 = fadd double %2102, %2107
%2109 = load double*, double** %19
%2110 = load i32, i32* %31
%2111 = sext i32 %2110 to i64
%2112 = getelementptr inbounds double, double* %2109, i64 %2111
%2113 = load double, double* %2112
%2114 = fadd double %2108, %2113
%2115 = load double*, double** %19
%2116 = load i32, i32* %31
%2117 = add nsw i32 %2116, 1
%2118 = sext i32 %2117 to i64
%2119 = getelementptr inbounds double, double* %2115, i64 %2118
%2120 = load double, double* %2119
%2121 = fsub double %2114, %2120
%2122 = load double*, double** %22
%2123 = load i32, i32* %31
%2124 = sext i32 %2123 to i64
%2125 = getelementptr inbounds double, double* %2122, i64 %2124
%2126 = load double, double* %2125
%2127 = fsub double %2121, %2126
%2128 = load double*, double** %27
%2129 = load i32, i32* %31
%2130 = sext i32 %2129 to i64
%2131 = getelementptr inbounds double, double* %2128, i64 %2130
store double %2127, double* %2131
br label %2132
2132: ; preds = %2095
%2133 = load i32, i32* %31
%2134 = add nsw i32 %2133, 1
store i32 %2134, i32* %31
br label %2090
2135: ; preds = %2090
%2136 = load double*, double** %19
%2137 = load i32, i32* %24
%2138 = sub nsw i32 %2137, 2
%2139 = sext i32 %2138 to i64
%2140 = getelementptr inbounds double, double* %2136, i64 %2139
%2141 = load double, double* %2140
%2142 = fneg double %2141
%2143 = load double*, double** %19
%2144 = load i32, i32* %24
%2145 = sub nsw i32 %2144, 1
%2146 = sext i32 %2145 to i64
%2147 = getelementptr inbounds double, double* %2143, i64 %2146
%2148 = load double, double* %2147
%2149 = fadd double %2142, %2148
%2150 = load double*, double** %19
%2151 = load i32, i32* %24
%2152 = sub nsw i32 %2151, 1
%2153 = sext i32 %2152 to i64
%2154 = getelementptr inbounds double, double* %2150, i64 %2153
%2155 = load double, double* %2154
%2156 = fadd double %2149, %2155
%2157 = load double*, double** %22
%2158 = load i32, i32* %24
%2159 = sub nsw i32 %2158, 1
%2160 = sext i32 %2159 to i64
%2161 = getelementptr inbounds double, double* %2157, i64 %2160
%2162 = load double, double* %2161
%2163 = fsub double %2156, %2162
%2164 = load double*, double** %27
%2165 = load i32, i32* %24
%2166 = sub nsw i32 %2165, 1
%2167 = sext i32 %2166 to i64
%2168 = getelementptr inbounds double, double* %2164, i64 %2167
store double %2163, double* %2168
%2169 = load double*, double** %16
%2170 = load double*, double** %19
%2171 = load double*, double** %17
%2172 = load double*, double** %21
%2173 = load double*, double** %22
%2174 = load double*, double** %27
%2175 = load double*, double** %26
%2176 = load i32*, i32** %40
%2177 = load double, double* %23
%2178 = load i32, i32* %24
%2179 = call i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @generateSolution to i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %2169, double* %2170, double* %2171, double* %2172, double* %2173, double* %2174, double* %2175, i32* %2176, double %2177, i32 %2178)
store i32 %2179, i32* %43
br label %2180
2180: ; preds = %2135, %1800, %1797
%2181 = load i32*, i32** %40
%2182 = bitcast i32* %2181 to i8*
%2183 = load i32, i32* %43
%2184 = load i32*, i32** %18
store i32 %2183, i32* %2184
%2185 = load i32, i32* %32
ret i32 %2185
}

LLVM IR (-O2):
define i32 @sfa(double* %0, double* %1, i32* nocapture writeonly %2, double* %3, double* %4, double* %5, double* %6, double %7, i32 %8, i32 %9, double* %10, double* %11, double %12, i32 %13, i32 %14) {
%16 = bitcast double* %4 to i8*
%17 = alloca double
%18 = bitcast double* %17 to i8*
%19 = sext i32 %8 to i64
%20 = shl nsw i64 %19, 2
%21 = tail call i8* @malloc(i64 %20)
%22 = bitcast i8* %21 to i32*
store double -1.000000e+00, double* %1
%23 = icmp slt i32 %9, 1
br i1 %23, label %1938, label %24
24: ; preds = %15
%25 = srem i32 %8, 5
%26 = icmp eq i32 %25, 0
%27 = icmp slt i32 %25, 1
%28 = icmp slt i32 %25, %8
%29 = getelementptr inbounds double, double* %10, i64 1
%30 = add i32 %8, -1
%31 = icmp sgt i32 %8, 2
%32 = add nsw i32 %8, -2
%33 = sext i32 %32 to i64
%34 = getelementptr inbounds double, double* %10, i64 %33
%35 = sext i32 %30 to i64
%36 = getelementptr inbounds double, double* %10, i64 %35
%37 = getelementptr inbounds double, double* %6, i64 %35
%38 = getelementptr inbounds double, double* %11, i64 %35
%39 = srem i32 %8, 7
%40 = icmp slt i32 %39, 1
%41 = icmp slt i32 %39, %8
%42 = icmp sgt i32 %8, 0
%43 = fneg double %7
%44 = getelementptr inbounds double, double* %3, i64 1
%45 = getelementptr inbounds double, double* %3, i64 %33
%46 = getelementptr inbounds double, double* %3, i64 %35
%47 = icmp sgt i32 %25, 0
%48 = sitofp i32 %8 to double
%49 = icmp sgt i32 %8, 1000000
%50 = icmp sgt i32 %8, 100000
%51 = select i1 %50, i32 5, i32 1
%52 = select i1 %49, i32 10, i32 %51
%53 = sext i32 %25 to i64
%54 = sext i32 %39 to i64
%55 = zext i32 %39 to i64
%56 = shl nuw nsw i64 %55, 3
%57 = getelementptr double, double* %4, i64 %54
%58 = bitcast double* %57 to i8*
%59 = sub i32 %30, %39
%60 = udiv i32 %59, 7
%61 = zext i32 %60 to i64
%62 = mul nuw nsw i64 %61, 56
%63 = add nuw nsw i64 %62, 56
%64 = add nuw i32 %9, 1
%65 = zext i32 %30 to i64
%66 = zext i32 %8 to i64
%67 = zext i32 %30 to i64
%68 = zext i32 %8 to i64
%69 = zext i32 %25 to i64
%70 = zext i32 %30 to i64
%71 = zext i32 %8 to i64
%72 = zext i32 %8 to i64
%73 = getelementptr double, double* %10, i64 %66
%74 = getelementptr double, double* %6, i64 %66
%75 = add nuw nsw i64 %66, 1
%76 = getelementptr double, double* %0, i64 %75
%77 = getelementptr double, double* %10, i64 %66
%78 = getelementptr double, double* %11, i64 %66
%79 = getelementptr double, double* %3, i64 %66
%80 = getelementptr double, double* %11, i64 1
%81 = getelementptr double, double* %11, i64 %65
%82 = add nuw nsw i64 %65, 1
%83 = getelementptr double, double* %3, i64 %82
%84 = getelementptr double, double* %6, i64 1
%85 = getelementptr double, double* %6, i64 %65
%86 = add nsw i64 %65, -1
%87 = getelementptr double, double* %10, i64 %66
%88 = getelementptr double, double* %11, i64 %66
%89 = getelementptr double, double* %3, i64 %66
%90 = getelementptr double, double* %11, i64 1
%91 = getelementptr double, double* %11, i64 %65
%92 = add nuw nsw i64 %65, 1
%93 = getelementptr double, double* %3, i64 %92
%94 = getelementptr double, double* %6, i64 1
%95 = getelementptr double, double* %6, i64 %65
%96 = add nsw i64 %65, -1
%97 = getelementptr double, double* %3, i64 %53
%98 = xor i64 %53, -1
%99 = add nsw i64 %98, %19
%100 = urem i64 %99, 5
%101 = sub nsw i64 %99, %100
%102 = add nsw i64 %101, %53
%103 = add nsw i64 %102, 5
%104 = getelementptr double, double* %3, i64 %103
%105 = getelementptr double, double* %10, i64 %53
%106 = getelementptr double, double* %10, i64 %103
%107 = getelementptr double, double* %11, i64 %53
%108 = getelementptr double, double* %11, i64 %103
%109 = xor i64 %53, -1
%110 = add nsw i64 %109, %19
%111 = udiv i64 %110, 5
%112 = add nuw nsw i64 %111, 1
%113 = getelementptr double, double* %11, i64 1
%114 = getelementptr double, double* %11, i64 %65
%115 = add nuw nsw i64 %65, 1
%116 = getelementptr double, double* %10, i64 %115
%117 = getelementptr double, double* %6, i64 1
%118 = getelementptr double, double* %6, i64 %65
%119 = add nsw i64 %65, -1
%120 = getelementptr double, double* %10, i64 %53
%121 = xor i64 %53, -1
%122 = add nsw i64 %121, %19
%123 = urem i64 %122, 5
%124 = sub nsw i64 %122, %123
%125 = add nsw i64 %124, %53
%126 = add nsw i64 %125, 5
%127 = getelementptr double, double* %10, i64 %126
%128 = getelementptr double, double* %3, i64 %53
%129 = getelementptr double, double* %3, i64 %126
%130 = getelementptr double, double* %4, i64 %53
%131 = getelementptr double, double* %4, i64 %126
%132 = xor i64 %53, -1
%133 = add nsw i64 %132, %19
%134 = udiv i64 %133, 5
%135 = add nuw nsw i64 %134, 1
%136 = add nsw i64 %66, -1
%137 = add nsw i64 %69, -1
%138 = icmp eq i32 %25, 1
%139 = getelementptr inbounds double, double* %3, i64 1
%140 = getelementptr inbounds double, double* %4, i64 1
%141 = getelementptr inbounds double, double* %10, i64 1
%142 = icmp eq i32 %25, 2
%143 = getelementptr inbounds double, double* %3, i64 2
%144 = getelementptr inbounds double, double* %4, i64 2
%145 = getelementptr inbounds double, double* %10, i64 2
%146 = icmp eq i32 %25, 3
%147 = getelementptr inbounds double, double* %3, i64 3
%148 = getelementptr inbounds double, double* %4, i64 3
%149 = getelementptr inbounds double, double* %10, i64 3
%150 = icmp eq i32 %25, 4
%151 = getelementptr inbounds double, double* %3, i64 4
%152 = getelementptr inbounds double, double* %4, i64 4
%153 = getelementptr inbounds double, double* %10, i64 4
%154 = getelementptr inbounds double, double* %3, i64 5
%155 = getelementptr inbounds double, double* %4, i64 5
%156 = getelementptr inbounds double, double* %10, i64 5
%157 = getelementptr inbounds double, double* %3, i64 6
%158 = getelementptr inbounds double, double* %4, i64 6
%159 = getelementptr inbounds double, double* %10, i64 6
%160 = icmp ult i64 %133, 5
%161 = icmp ult double* %120, %129
%162 = icmp ult double* %128, %127
%163 = and i1 %161, %162
%164 = icmp ult double* %120, %131
%165 = icmp ult double* %130, %127
%166 = and i1 %164, %165
%167 = or i1 %163, %166
%168 = and i64 %135, 9223372036854775806
%169 = mul i64 %168, 5
%170 = add i64 %169, %53
%171 = icmp eq i64 %135, %168
%172 = icmp ult i64 %119, 4
%173 = icmp ult double* %113, %116
%174 = icmp ugt double* %114, %10
%175 = and i1 %173, %174
%176 = icmp ult double* %113, %118
%177 = icmp ult double* %117, %114
%178 = and i1 %176, %177
%179 = or i1 %175, %178
%180 = and i64 %119, -4
%181 = or i64 %180, 1
%182 = icmp eq i64 %119, %180
%183 = and i64 %65, 1
%184 = icmp eq i64 %183, 0
%185 = sub nsw i64 0, %65
%186 = icmp eq i32 %39, 1
%187 = getelementptr inbounds double, double* %3, i64 1
%188 = getelementptr inbounds double, double* %4, i64 1
%189 = icmp eq i32 %39, 2
%190 = getelementptr inbounds double, double* %3, i64 2
%191 = getelementptr inbounds double, double* %4, i64 2
%192 = icmp eq i32 %39, 3
%193 = getelementptr inbounds double, double* %3, i64 3
%194 = getelementptr inbounds double, double* %4, i64 3
%195 = icmp eq i32 %39, 4
%196 = getelementptr inbounds double, double* %3, i64 4
%197 = getelementptr inbounds double, double* %4, i64 4
%198 = icmp eq i32 %39, 5
%199 = getelementptr inbounds double, double* %3, i64 5
%200 = getelementptr inbounds double, double* %4, i64 5
%201 = icmp eq i32 %39, 6
%202 = getelementptr inbounds double, double* %3, i64 6
%203 = getelementptr inbounds double, double* %4, i64 6
%204 = icmp eq i32 %25, 1
%205 = getelementptr inbounds double, double* %10, i64 1
%206 = getelementptr inbounds double, double* %11, i64 1
%207 = getelementptr inbounds double, double* %3, i64 1
%208 = icmp eq i32 %25, 2
%209 = getelementptr inbounds double, double* %10, i64 2
%210 = getelementptr inbounds double, double* %11, i64 2
%211 = getelementptr inbounds double, double* %3, i64 2
%212 = icmp eq i32 %25, 3
%213 = getelementptr inbounds double, double* %10, i64 3
%214 = getelementptr inbounds double, double* %11, i64 3
%215 = getelementptr inbounds double, double* %3, i64 3
%216 = icmp eq i32 %25, 4
%217 = getelementptr inbounds double, double* %10, i64 4
%218 = getelementptr inbounds double, double* %11, i64 4
%219 = getelementptr inbounds double, double* %3, i64 4
%220 = getelementptr inbounds double, double* %10, i64 5
%221 = getelementptr inbounds double, double* %11, i64 5
%222 = getelementptr inbounds double, double* %3, i64 5
%223 = getelementptr inbounds double, double* %10, i64 6
%224 = getelementptr inbounds double, double* %11, i64 6
%225 = getelementptr inbounds double, double* %3, i64 6
%226 = icmp ult i64 %110, 5
%227 = icmp ult double* %97, %106
%228 = icmp ult double* %105, %104
%229 = and i1 %227, %228
%230 = icmp ult double* %97, %108
%231 = icmp ult double* %107, %104
%232 = and i1 %230, %231
%233 = or i1 %229, %232
%234 = and i64 %112, 9223372036854775806
%235 = mul i64 %234, 5
%236 = add i64 %235, %53
%237 = icmp eq i64 %112, %234
%238 = and i64 %66, 1
%239 = icmp eq i64 %136, 0
%240 = and i64 %66, 4294967294
%241 = icmp eq i64 %238, 0
%242 = icmp eq i32 %25, 1
%243 = getelementptr inbounds double, double* %3, i64 1
%244 = getelementptr inbounds double, double* %4, i64 1
%245 = icmp eq i32 %25, 2
%246 = getelementptr inbounds double, double* %3, i64 2
%247 = getelementptr inbounds double, double* %4, i64 2
%248 = icmp eq i32 %25, 3
%249 = getelementptr inbounds double, double* %3, i64 3
%250 = getelementptr inbounds double, double* %4, i64 3
%251 = icmp eq i32 %25, 4
%252 = getelementptr inbounds double, double* %3, i64 4
%253 = getelementptr inbounds double, double* %4, i64 4
%254 = getelementptr inbounds double, double* %3, i64 5
%255 = getelementptr inbounds double, double* %4, i64 5
%256 = getelementptr inbounds double, double* %3, i64 6
%257 = getelementptr inbounds double, double* %4, i64 6
%258 = icmp ult i64 %96, 4
%259 = icmp ult double* %90, %93
%260 = icmp ugt double* %91, %3
%261 = and i1 %259, %260
%262 = icmp ult double* %90, %95
%263 = icmp ult double* %94, %91
%264 = and i1 %262, %263
%265 = or i1 %261, %264
%266 = and i64 %96, -4
%267 = or i64 %266, 1
%268 = icmp eq i64 %96, %266
%269 = and i64 %65, 1
%270 = icmp eq i64 %269, 0
%271 = sub nsw i64 0, %65
%272 = icmp ult i32 %8, 4
%273 = icmp ugt double* %88, %10
%274 = icmp ugt double* %87, %11
%275 = and i1 %273, %274
%276 = icmp ugt double* %89, %10
%277 = icmp ugt double* %87, %3
%278 = and i1 %276, %277
%279 = or i1 %275, %278
%280 = and i64 %66, 4294967292
%281 = insertelement <2 x double> poison, double %7, i64 0
%282 = shufflevector <2 x double> %281, <2 x double> poison, <2 x i32> zeroinitializer
%283 = insertelement <2 x double> poison, double %7, i64 0
%284 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer
%285 = fneg <2 x double> %282
%286 = fneg <2 x double> %284
%287 = icmp eq i64 %280, %66
%288 = and i64 %66, 1
%289 = icmp eq i64 %288, 0
%290 = fneg double %7
%291 = sub nsw i64 0, %66
%292 = fneg double %7
%293 = fneg double %7
%294 = xor i1 %47, true
%295 = or i1 %26, %294
%296 = and i64 %69, 3
%297 = icmp ult i64 %137, 3
%298 = and i64 %69, 4294967292
%299 = icmp eq i64 %296, 0
%300 = xor i1 %47, true
%301 = or i1 %26, %300
%302 = and i64 %69, 1
%303 = icmp eq i64 %137, 0
%304 = and i64 %69, 4294967294
%305 = icmp eq i64 %302, 0
%306 = icmp ult i64 %86, 4
%307 = icmp ult double* %80, %83
%308 = icmp ugt double* %81, %3
%309 = and i1 %307, %308
%310 = icmp ult double* %80, %85
%311 = icmp ult double* %84, %81
%312 = and i1 %310, %311
%313 = or i1 %309, %312
%314 = and i64 %86, -4
%315 = or i64 %314, 1
%316 = icmp eq i64 %86, %314
%317 = and i64 %65, 1
%318 = icmp eq i64 %317, 0
%319 = sub nsw i64 0, %65
%320 = icmp ult i32 %8, 4
%321 = icmp ugt double* %78, %10
%322 = icmp ugt double* %77, %11
%323 = and i1 %321, %322
%324 = icmp ugt double* %79, %10
%325 = icmp ugt double* %77, %3
%326 = and i1 %324, %325
%327 = or i1 %323, %326
%328 = and i64 %66, 4294967292
%329 = insertelement <2 x double> poison, double %7, i64 0
%330 = shufflevector <2 x double> %329, <2 x double> poison, <2 x i32> zeroinitializer
%331 = insertelement <2 x double> poison, double %7, i64 0
%332 = shufflevector <2 x double> %331, <2 x double> poison, <2 x i32> zeroinitializer
%333 = fneg <2 x double> %330
%334 = fneg <2 x double> %332
%335 = icmp eq i64 %328, %66
%336 = and i64 %66, 1
%337 = icmp eq i64 %336, 0
%338 = fneg double %7
%339 = sub nsw i64 0, %66
%340 = fneg double %7
%341 = fneg double %7
%342 = xor i1 %47, true
%343 = or i1 %26, %342
%344 = and i64 %69, 3
%345 = icmp ult i64 %137, 3
%346 = and i64 %69, 4294967292
%347 = icmp eq i64 %344, 0
%348 = xor i1 %47, true
%349 = or i1 %26, %348
%350 = and i64 %69, 3
%351 = icmp ult i64 %137, 3
%352 = and i64 %69, 4294967292
%353 = icmp eq i64 %350, 0
%354 = icmp ult i32 %8, 4
%355 = icmp ugt double* %74, %10
%356 = icmp ugt double* %73, %6
%357 = and i1 %355, %356
%358 = icmp ugt double* %76, %10
%359 = icmp ugt double* %73, %0
%360 = and i1 %358, %359
%361 = or i1 %357, %360
%362 = and i64 %66, 4294967292
%363 = icmp eq i64 %362, %66
%364 = and i64 %66, 1
%365 = icmp eq i64 %364, 0
%366 = sub nsw i64 0, %66
%367 = and i64 %66, 1
%368 = icmp eq i64 %136, 0
%369 = and i64 %66, 4294967294
%370 = icmp eq i64 %367, 0
%371 = xor i1 %47, true
%372 = or i1 %26, %371
%373 = and i64 %69, 3
%374 = icmp ult i64 %137, 3
%375 = and i64 %69, 4294967292
%376 = icmp eq i64 %373, 0
br label %377
377: ; preds = %24, %1928
%378 = phi i32 [ -2, %24 ], [ %1933, %1928 ]
%379 = phi i32 [ -1, %24 ], [ %1932, %1928 ]
%380 = phi double [ -1.000000e+00, %24 ], [ %1931, %1928 ]
%381 = phi double [ 1.000000e+00, %24 ], [ %1930, %1928 ]
%382 = phi double [ 0.000000e+00, %24 ], [ %1929, %1928 ]
%383 = phi i32 [ 1, %24 ], [ %1934, %1928 ]
%384 = fadd double %382, -1.000000e+00
%385 = fdiv double %384, %381
br i1 %27, label %412, label %386
386: ; preds = %377
%387 = load double, double* %3
%388 = load double, double* %4
%389 = call double @llvm.fmuladd.f64(double %385, double %388, double %387)
store double %389, double* %10
br i1 %138, label %412, label %390
390: ; preds = %386
%391 = load double, double* %139
%392 = load double, double* %140
%393 = call double @llvm.fmuladd.f64(double %385, double %392, double %391)
store double %393, double* %141
br i1 %142, label %412, label %394
394: ; preds = %390
%395 = load double, double* %143
%396 = load double, double* %144
%397 = call double @llvm.fmuladd.f64(double %385, double %396, double %395)
store double %397, double* %145
br i1 %146, label %412, label %398
398: ; preds = %394
%399 = load double, double* %147
%400 = load double, double* %148
%401 = call double @llvm.fmuladd.f64(double %385, double %400, double %399)
store double %401, double* %149
br i1 %150, label %412, label %402
402: ; preds = %398
%403 = load double, double* %151
%404 = load double, double* %152
%405 = call double @llvm.fmuladd.f64(double %385, double %404, double %403)
store double %405, double* %153
%406 = load double, double* %154
%407 = load double, double* %155
%408 = call double @llvm.fmuladd.f64(double %385, double %407, double %406)
store double %408, double* %156
%409 = load double, double* %157
%410 = load double, double* %158
%411 = call double @llvm.fmuladd.f64(double %385, double %410, double %409)
store double %411, double* %159
br label %412
412: ; preds = %386, %390, %394, %398, %402, %377
br i1 %28, label %413, label %546
413: ; preds = %412
%414 = select i1 %160, i1 true, i1 %167
br i1 %414, label %506, label %415
415: ; preds = %413
%416 = insertelement <2 x double> poison, double %385, i64 0
%417 = shufflevector <2 x double> %416, <2 x double> poison, <2 x i32> zeroinitializer
br label %418
418: ; preds = %418, %415
%419 = phi i64 [ 0, %415 ], [ %503, %418 ]
%420 = mul i64 %419, 5
%421 = add i64 %420, %53
%422 = add i64 %421, 5
%423 = getelementptr inbounds double, double* %3, i64 %421
%424 = getelementptr inbounds double, double* %3, i64 %422
%425 = load double, double* %423
%426 = load double, double* %424
%427 = insertelement <2 x double> poison, double %425, i64 0
%428 = insertelement <2 x double> %427, double %426, i64 1
%429 = getelementptr inbounds double, double* %4, i64 %421
%430 = getelementptr inbounds double, double* %4, i64 %422
%431 = load double, double* %429
%432 = load double, double* %430
%433 = insertelement <2 x double> poison, double %431, i64 0
%434 = insertelement <2 x double> %433, double %432, i64 1
%435 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %417, <2 x double> %434, <2 x double> %428)
%436 = add nsw i64 %421, 1
%437 = add i64 %421, 6
%438 = getelementptr inbounds double, double* %3, i64 %436
%439 = getelementptr inbounds double, double* %3, i64 %437
%440 = load double, double* %438
%441 = load double, double* %439
%442 = insertelement <2 x double> poison, double %440, i64 0
%443 = insertelement <2 x double> %442, double %441, i64 1
%444 = getelementptr inbounds double, double* %4, i64 %436
%445 = getelementptr inbounds double, double* %4, i64 %437
%446 = load double, double* %444
%447 = load double, double* %445
%448 = insertelement <2 x double> poison, double %446, i64 0
%449 = insertelement <2 x double> %448, double %447, i64 1
%450 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %417, <2 x double> %449, <2 x double> %443)
%451 = add nsw i64 %421, 2
%452 = add i64 %421, 7
%453 = getelementptr inbounds double, double* %3, i64 %451
%454 = getelementptr inbounds double, double* %3, i64 %452
%455 = load double, double* %453
%456 = load double, double* %454
%457 = insertelement <2 x double> poison, double %455, i64 0
%458 = insertelement <2 x double> %457, double %456, i64 1
%459 = getelementptr inbounds double, double* %4, i64 %451
%460 = getelementptr inbounds double, double* %4, i64 %452
%461 = load double, double* %459
%462 = load double, double* %460
%463 = insertelement <2 x double> poison, double %461, i64 0
%464 = insertelement <2 x double> %463, double %462, i64 1
%465 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %417, <2 x double> %464, <2 x double> %458)
%466 = add nsw i64 %421, 3
%467 = add i64 %421, 8
%468 = getelementptr inbounds double, double* %3, i64 %466
%469 = getelementptr inbounds double, double* %3, i64 %467
%470 = load double, double* %468
%471 = load double, double* %469
%472 = insertelement <2 x double> poison, double %470, i64 0
%473 = insertelement <2 x double> %472, double %471, i64 1
%474 = getelementptr inbounds double, double* %4, i64 %466
%475 = getelementptr inbounds double, double* %4, i64 %467
%476 = load double, double* %474
%477 = load double, double* %475
%478 = insertelement <2 x double> poison, double %476, i64 0
%479 = insertelement <2 x double> %478, double %477, i64 1
%480 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %417, <2 x double> %479, <2 x double> %473)
%481 = add nsw i64 %421, 4
%482 = add i64 %421, 9
%483 = getelementptr inbounds double, double* %3, i64 %481
%484 = getelementptr inbounds double, double* %3, i64 %482
%485 = load double, double* %483
%486 = load double, double* %484
%487 = insertelement <2 x double> poison, double %485, i64 0
%488 = insertelement <2 x double> %487, double %486, i64 1
%489 = getelementptr inbounds double, double* %4, i64 %481
%490 = getelementptr inbounds double, double* %4, i64 %482
%491 = load double, double* %489
%492 = load double, double* %490
%493 = insertelement <2 x double> poison, double %491, i64 0
%494 = insertelement <2 x double> %493, double %492, i64 1
%495 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %417, <2 x double> %494, <2 x double> %488)
%496 = getelementptr inbounds double, double* %10, i64 %421
%497 = bitcast double* %496 to <10 x double>*
%498 = shufflevector <2 x double> %435, <2 x double> %450, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%499 = shufflevector <2 x double> %465, <2 x double> %480, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%500 = shufflevector <4 x double> %498, <4 x double> %499, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%501 = shufflevector <2 x double> %495, <2 x double> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%502 = shufflevector <8 x double> %500, <8 x double> %501, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>
store <10 x double> %502, <10 x double>* %497
%503 = add nuw i64 %419, 2
%504 = icmp eq i64 %503, %168
br i1 %504, label %505, label %418
505: ; preds = %418
br i1 %171, label %546, label %506
506: ; preds = %413, %505
%507 = phi i64 [ %53, %413 ], [ %170, %505 ]
br label %508
508: ; preds = %506, %508
%509 = phi i64 [ %544, %508 ], [ %507, %506 ]
%510 = getelementptr inbounds double, double* %3, i64 %509
%511 = load double, double* %510
%512 = getelementptr inbounds double, double* %4, i64 %509
%513 = load double, double* %512
%514 = call double @llvm.fmuladd.f64(double %385, double %513, double %511)
%515 = getelementptr inbounds double, double* %10, i64 %509
store double %514, double* %515
%516 = add nsw i64 %509, 1
%517 = getelementptr inbounds double, double* %3, i64 %516
%518 = load double, double* %517
%519 = getelementptr inbounds double, double* %4, i64 %516
%520 = load double, double* %519
%521 = call double @llvm.fmuladd.f64(double %385, double %520, double %518)
%522 = getelementptr inbounds double, double* %10, i64 %516
store double %521, double* %522
%523 = add nsw i64 %509, 2
%524 = getelementptr inbounds double, double* %3, i64 %523
%525 = load double, double* %524
%526 = getelementptr inbounds double, double* %4, i64 %523
%527 = load double, double* %526
%528 = call double @llvm.fmuladd.f64(double %385, double %527, double %525)
%529 = getelementptr inbounds double, double* %10, i64 %523
store double %528, double* %529
%530 = add nsw i64 %509, 3
%531 = getelementptr inbounds double, double* %3, i64 %530
%532 = load double, double* %531
%533 = getelementptr inbounds double, double* %4, i64 %530
%534 = load double, double* %533
%535 = call double @llvm.fmuladd.f64(double %385, double %534, double %532)
%536 = getelementptr inbounds double, double* %10, i64 %530
store double %535, double* %536
%537 = add nsw i64 %509, 4
%538 = getelementptr inbounds double, double* %3, i64 %537
%539 = load double, double* %538
%540 = getelementptr inbounds double, double* %4, i64 %537
%541 = load double, double* %540
%542 = call double @llvm.fmuladd.f64(double %385, double %541, double %539)
%543 = getelementptr inbounds double, double* %10, i64 %537
store double %542, double* %543
%544 = add nsw i64 %509, 5
%545 = icmp slt i64 %544, %19
br i1 %545, label %508, label %546
546: ; preds = %508, %505, %412
%547 = load double, double* %10
%548 = fadd double %547, %547
%549 = load double, double* %29
%550 = fsub double %548, %549
%551 = load double, double* %6
%552 = fsub double %550, %551
store double %552, double* %11
br i1 %31, label %553, label %652
553: ; preds = %546
%554 = select i1 %172, i1 true, i1 %179
br i1 %554, label %598, label %555
555: ; preds = %553, %555
%556 = phi i64 [ %595, %555 ], [ 0, %553 ]
%557 = or i64 %556, 1
%558 = getelementptr inbounds double, double* %10, i64 %556
%559 = bitcast double* %558 to <2 x double>*
%560 = load <2 x double>, <2 x double>* %559
%561 = getelementptr inbounds double, double* %558, i64 2
%562 = bitcast double* %561 to <2 x double>*
%563 = load <2 x double>, <2 x double>* %562
%564 = getelementptr inbounds double, double* %10, i64 %557
%565 = bitcast double* %564 to <2 x double>*
%566 = load <2 x double>, <2 x double>* %565
%567 = getelementptr inbounds double, double* %564, i64 2
%568 = bitcast double* %567 to <2 x double>*
%569 = load <2 x double>, <2 x double>* %568
%570 = fsub <2 x double> %566, %560
%571 = fsub <2 x double> %569, %563
%572 = fadd <2 x double> %566, %570
%573 = fadd <2 x double> %569, %571
%574 = or i64 %556, 2
%575 = getelementptr inbounds double, double* %10, i64 %574
%576 = bitcast double* %575 to <2 x double>*
%577 = load <2 x double>, <2 x double>* %576
%578 = getelementptr inbounds double, double* %575, i64 2
%579 = bitcast double* %578 to <2 x double>*
%580 = load <2 x double>, <2 x double>* %579
%581 = fsub <2 x double> %572, %577
%582 = fsub <2 x double> %573, %580
%583 = getelementptr inbounds double, double* %6, i64 %557
%584 = bitcast double* %583 to <2 x double>*
%585 = load <2 x double>, <2 x double>* %584
%586 = getelementptr inbounds double, double* %583, i64 2
%587 = bitcast double* %586 to <2 x double>*
%588 = load <2 x double>, <2 x double>* %587
%589 = fsub <2 x double> %581, %585
%590 = fsub <2 x double> %582, %588
%591 = getelementptr inbounds double, double* %11, i64 %557
%592 = bitcast double* %591 to <2 x double>*
store <2 x double> %589, <2 x double>* %592
%593 = getelementptr inbounds double, double* %591, i64 2
%594 = bitcast double* %593 to <2 x double>*
store <2 x double> %590, <2 x double>* %594
%595 = add nuw i64 %556, 4
%596 = icmp eq i64 %595, %180
br i1 %596, label %597, label %555
597: ; preds = %555
br i1 %182, label %652, label %598
598: ; preds = %553, %597
%599 = phi i64 [ 1, %553 ], [ %181, %597 ]
%600 = xor i64 %599, -1
br i1 %184, label %601, label %617
601: ; preds = %598
%602 = add nsw i64 %599, -1
%603 = getelementptr inbounds double, double* %10, i64 %602
%604 = load double, double* %603
%605 = getelementptr inbounds double, double* %10, i64 %599
%606 = load double, double* %605
%607 = fsub double %606, %604
%608 = fadd double %606, %607
%609 = add nuw nsw i64 %599, 1
%610 = getelementptr inbounds double, double* %10, i64 %609
%611 = load double, double* %610
%612 = fsub double %608, %611
%613 = getelementptr inbounds double, double* %6, i64 %599
%614 = load double, double* %613
%615 = fsub double %612, %614
%616 = getelementptr inbounds double, double* %11, i64 %599
store double %615, double* %616
br label %617
617: ; preds = %601, %598
%618 = phi i64 [ %599, %598 ], [ %609, %601 ]
%619 = icmp eq i64 %600, %185
br i1 %619, label %652, label %620
620: ; preds = %617, %620
%621 = phi i64 [ %643, %620 ], [ %618, %617 ]
%622 = add nsw i64 %621, -1
%623 = getelementptr inbounds double, double* %10, i64 %622
%624 = load double, double* %623
%625 = getelementptr inbounds double, double* %10, i64 %621
%626 = load double, double* %625
%627 = fsub double %626, %624
%628 = fadd double %626, %627
%629 = add nuw nsw i64 %621, 1
%630 = getelementptr inbounds double, double* %10, i64 %629
%631 = load double, double* %630
%632 = fsub double %628, %631
%633 = getelementptr inbounds double, double* %6, i64 %621
%634 = load double, double* %633
%635 = fsub double %632, %634
%636 = getelementptr inbounds double, double* %11, i64 %621
store double %635, double* %636
%637 = getelementptr inbounds double, double* %10, i64 %621
%638 = load double, double* %637
%639 = getelementptr inbounds double, double* %10, i64 %629
%640 = load double, double* %639
%641 = fsub double %640, %638
%642 = fadd double %640, %641
%643 = add nuw nsw i64 %621, 2
%644 = getelementptr inbounds double, double* %10, i64 %643
%645 = load double, double* %644
%646 = fsub double %642, %645
%647 = getelementptr inbounds double, double* %6, i64 %629
%648 = load double, double* %647
%649 = fsub double %646, %648
%650 = getelementptr inbounds double, double* %11, i64 %629
store double %649, double* %650
%651 = icmp eq i64 %643, %65
br i1 %651, label %652, label %620
652: ; preds = %617, %620, %597, %546
%653 = load double, double* %34
%654 = load double, double* %36
%655 = fsub double %654, %653
%656 = fadd double %654, %655
%657 = load double, double* %37
%658 = fsub double %656, %657
store double %658, double* %38
br i1 %40, label %680, label %659
659: ; preds = %652
%660 = load double, double* %3
%661 = fneg double %660
store double %661, double* %4
br i1 %186, label %680, label %662
662: ; preds = %659
%663 = load double, double* %187
%664 = fneg double %663
store double %664, double* %188
br i1 %189, label %680, label %665
665: ; preds = %662
%666 = load double, double* %190
%667 = fneg double %666
store double %667, double* %191
br i1 %192, label %680, label %668
668: ; preds = %665
%669 = load double, double* %193
%670 = fneg double %669
store double %670, double* %194
br i1 %195, label %680, label %671
671: ; preds = %668
%672 = load double, double* %196
%673 = fneg double %672
store double %673, double* %197
br i1 %198, label %680, label %674
674: ; preds = %671
%675 = load double, double* %199
%676 = fneg double %675
store double %676, double* %200
br i1 %201, label %680, label %677
677: ; preds = %674
%678 = load double, double* %202
%679 = fneg double %678
store double %679, double* %203
br label %680
680: ; preds = %659, %662, %665, %668, %671, %674, %677, %652
br i1 %41, label %681, label %719
681: ; preds = %680, %681
%682 = phi i64 [ %717, %681 ], [ %54, %680 ]
%683 = getelementptr inbounds double, double* %3, i64 %682
%684 = load double, double* %683
%685 = fneg double %684
%686 = getelementptr inbounds double, double* %4, i64 %682
store double %685, double* %686
%687 = add nsw i64 %682, 1
%688 = getelementptr inbounds double, double* %3, i64 %687
%689 = load double, double* %688
%690 = fneg double %689
%691 = getelementptr inbounds double, double* %4, i64 %687
store double %690, double* %691
%692 = add nsw i64 %682, 2
%693 = getelementptr inbounds double, double* %3, i64 %692
%694 = load double, double* %693
%695 = fneg double %694
%696 = getelementptr inbounds double, double* %4, i64 %692
store double %695, double* %696
%697 = add nsw i64 %682, 3
%698 = getelementptr inbounds double, double* %3, i64 %697
%699 = load double, double* %698
%700 = fneg double %699
%701 = getelementptr inbounds double, double* %4, i64 %697
store double %700, double* %701
%702 = add nsw i64 %682, 4
%703 = getelementptr inbounds double, double* %3, i64 %702
%704 = load double, double* %703
%705 = fneg double %704
%706 = getelementptr inbounds double, double* %4, i64 %702
store double %705, double* %706
%707 = add nsw i64 %682, 5
%708 = getelementptr inbounds double, double* %3, i64 %707
%709 = load double, double* %708
%710 = fneg double %709
%711 = getelementptr inbounds double, double* %4, i64 %707
store double %710, double* %711
%712 = add nsw i64 %682, 6
%713 = getelementptr inbounds double, double* %3, i64 %712
%714 = load double, double* %713
%715 = fneg double %714
%716 = getelementptr inbounds double, double* %4, i64 %712
store double %715, double* %716
%717 = add nsw i64 %682, 7
%718 = icmp slt i64 %717, %19
br i1 %718, label %681, label %719
719: ; preds = %681, %680
br i1 %27, label %753, label %720
720: ; preds = %719
%721 = load double, double* %10
%722 = load double, double* %11
%723 = fmul double %722, 2.500000e-01
%724 = fsub double %721, %723
store double %724, double* %3
br i1 %204, label %753, label %725
725: ; preds = %720
%726 = load double, double* %205
%727 = load double, double* %206
%728 = fmul double %727, 2.500000e-01
%729 = fsub double %726, %728
store double %729, double* %207
br i1 %208, label %753, label %730
730: ; preds = %725
%731 = load double, double* %209
%732 = load double, double* %210
%733 = fmul double %732, 2.500000e-01
%734 = fsub double %731, %733
store double %734, double* %211
br i1 %212, label %753, label %735
735: ; preds = %730
%736 = load double, double* %213
%737 = load double, double* %214
%738 = fmul double %737, 2.500000e-01
%739 = fsub double %736, %738
store double %739, double* %215
br i1 %216, label %753, label %740
740: ; preds = %735
%741 = load double, double* %217
%742 = load double, double* %218
%743 = fmul double %742, 2.500000e-01
%744 = fsub double %741, %743
store double %744, double* %219
%745 = load double, double* %220
%746 = load double, double* %221
%747 = fmul double %746, 2.500000e-01
%748 = fsub double %745, %747
store double %748, double* %222
%749 = load double, double* %223
%750 = load double, double* %224
%751 = fmul double %750, 2.500000e-01
%752 = fsub double %749, %751
store double %752, double* %225
br label %753
753: ; preds = %720, %725, %730, %735, %740, %719
br i1 %28, label %754, label %851
754: ; preds = %753
%755 = select i1 %226, i1 true, i1 %233
br i1 %755, label %849, label %756
756: ; preds = %754, %756
%757 = phi i64 [ %846, %756 ], [ 0, %754 ]
%758 = mul i64 %757, 5
%759 = add i64 %758, %53
%760 = add i64 %759, 5
%761 = getelementptr inbounds double, double* %10, i64 %759
%762 = getelementptr inbounds double, double* %10, i64 %760
%763 = load double, double* %761
%764 = load double, double* %762
%765 = insertelement <2 x double> poison, double %763, i64 0
%766 = insertelement <2 x double> %765, double %764, i64 1
%767 = getelementptr inbounds double, double* %11, i64 %759
%768 = getelementptr inbounds double, double* %11, i64 %760
%769 = load double, double* %767
%770 = load double, double* %768
%771 = insertelement <2 x double> poison, double %769, i64 0
%772 = insertelement <2 x double> %771, double %770, i64 1
%773 = fmul <2 x double> %772, <double 2.500000e-01, double 2.500000e-01>
%774 = fsub <2 x double> %766, %773
%775 = add nsw i64 %759, 1
%776 = add i64 %759, 6
%777 = getelementptr inbounds double, double* %10, i64 %775
%778 = getelementptr inbounds double, double* %10, i64 %776
%779 = load double, double* %777
%780 = load double, double* %778
%781 = insertelement <2 x double> poison, double %779, i64 0
%782 = insertelement <2 x double> %781, double %780, i64 1
%783 = getelementptr inbounds double, double* %11, i64 %775
%784 = getelementptr inbounds double, double* %11, i64 %776
%785 = load double, double* %783
%786 = load double, double* %784
%787 = insertelement <2 x double> poison, double %785, i64 0
%788 = insertelement <2 x double> %787, double %786, i64 1
%789 = fmul <2 x double> %788, <double 2.500000e-01, double 2.500000e-01>
%790 = fsub <2 x double> %782, %789
%791 = add nsw i64 %759, 2
%792 = add i64 %759, 7
%793 = getelementptr inbounds double, double* %10, i64 %791
%794 = getelementptr inbounds double, double* %10, i64 %792
%795 = load double, double* %793
%796 = load double, double* %794
%797 = insertelement <2 x double> poison, double %795, i64 0
%798 = insertelement <2 x double> %797, double %796, i64 1
%799 = getelementptr inbounds double, double* %11, i64 %791
%800 = getelementptr inbounds double, double* %11, i64 %792
%801 = load double, double* %799
%802 = load double, double* %800
%803 = insertelement <2 x double> poison, double %801, i64 0
%804 = insertelement <2 x double> %803, double %802, i64 1
%805 = fmul <2 x double> %804, <double 2.500000e-01, double 2.500000e-01>
%806 = fsub <2 x double> %798, %805
%807 = add nsw i64 %759, 3
%808 = add i64 %759, 8
%809 = getelementptr inbounds double, double* %10, i64 %807
%810 = getelementptr inbounds double, double* %10, i64 %808
%811 = load double, double* %809
%812 = load double, double* %810
%813 = insertelement <2 x double> poison, double %811, i64 0
%814 = insertelement <2 x double> %813, double %812, i64 1
%815 = getelementptr inbounds double, double* %11, i64 %807
%816 = getelementptr inbounds double, double* %11, i64 %808
%817 = load double, double* %815
%818 = load double, double* %816
%819 = insertelement <2 x double> poison, double %817, i64 0
%820 = insertelement <2 x double> %819, double %818, i64 1
%821 = fmul <2 x double> %820, <double 2.500000e-01, double 2.500000e-01>
%822 = fsub <2 x double> %814, %821
%823 = add nsw i64 %759, 4
%824 = add i64 %759, 9
%825 = getelementptr inbounds double, double* %10, i64 %823
%826 = getelementptr inbounds double, double* %10, i64 %824
%827 = load double, double* %825
%828 = load double, double* %826
%829 = insertelement <2 x double> poison, double %827, i64 0
%830 = insertelement <2 x double> %829, double %828, i64 1
%831 = getelementptr inbounds double, double* %11, i64 %823
%832 = getelementptr inbounds double, double* %11, i64 %824
%833 = load double, double* %831
%834 = load double, double* %832
%835 = insertelement <2 x double> poison, double %833, i64 0
%836 = insertelement <2 x double> %835, double %834, i64 1
%837 = fmul <2 x double> %836, <double 2.500000e-01, double 2.500000e-01>
%838 = fsub <2 x double> %830, %837
%839 = getelementptr inbounds double, double* %3, i64 %759
%840 = bitcast double* %839 to <10 x double>*
%841 = shufflevector <2 x double> %774, <2 x double> %790, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%842 = shufflevector <2 x double> %806, <2 x double> %822, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%843 = shufflevector <4 x double> %841, <4 x double> %842, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%844 = shufflevector <2 x double> %838, <2 x double> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%845 = shufflevector <8 x double> %843, <8 x double> %844, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>
store <10 x double> %845, <10 x double>* %840
%846 = add nuw i64 %757, 2
%847 = icmp eq i64 %846, %234
br i1 %847, label %848, label %756
848: ; preds = %756
br i1 %237, label %851, label %849
849: ; preds = %754, %848
%850 = phi i64 [ %53, %754 ], [ %236, %848 ]
br label %853
851: ; preds = %853, %848, %753
br i1 %42, label %852, label %929
852: ; preds = %851
br i1 %239, label %919, label %896
853: ; preds = %849, %853
%854 = phi i64 [ %894, %853 ], [ %850, %849 ]
%855 = getelementptr inbounds double, double* %10, i64 %854
%856 = load double, double* %855
%857 = getelementptr inbounds double, double* %11, i64 %854
%858 = load double, double* %857
%859 = fmul double %858, 2.500000e-01
%860 = fsub double %856, %859
%861 = getelementptr inbounds double, double* %3, i64 %854
store double %860, double* %861
%862 = add nsw i64 %854, 1
%863 = getelementptr inbounds double, double* %10, i64 %862
%864 = load double, double* %863
%865 = getelementptr inbounds double, double* %11, i64 %862
%866 = load double, double* %865
%867 = fmul double %866, 2.500000e-01
%868 = fsub double %864, %867
%869 = getelementptr inbounds double, double* %3, i64 %862
store double %868, double* %869
%870 = add nsw i64 %854, 2
%871 = getelementptr inbounds double, double* %10, i64 %870
%872 = load double, double* %871
%873 = getelementptr inbounds double, double* %11, i64 %870
%874 = load double, double* %873
%875 = fmul double %874, 2.500000e-01
%876 = fsub double %872, %875
%877 = getelementptr inbounds double, double* %3, i64 %870
store double %876, double* %877
%878 = add nsw i64 %854, 3
%879 = getelementptr inbounds double, double* %10, i64 %878
%880 = load double, double* %879
%881 = getelementptr inbounds double, double* %11, i64 %878
%882 = load double, double* %881
%883 = fmul double %882, 2.500000e-01
%884 = fsub double %880, %883
%885 = getelementptr inbounds double, double* %3, i64 %878
store double %884, double* %885
%886 = add nsw i64 %854, 4
%887 = getelementptr inbounds double, double* %10, i64 %886
%888 = load double, double* %887
%889 = getelementptr inbounds double, double* %11, i64 %886
%890 = load double, double* %889
%891 = fmul double %890, 2.500000e-01
%892 = fsub double %888, %891
%893 = getelementptr inbounds double, double* %3, i64 %886
store double %892, double* %893
%894 = add nsw i64 %854, 5
%895 = icmp slt i64 %894, %19
br i1 %895, label %853, label %851
896: ; preds = %852, %915
%897 = phi i64 [ %916, %915 ], [ 0, %852 ]
%898 = phi i64 [ %917, %915 ], [ 0, %852 ]
%899 = getelementptr inbounds double, double* %3, i64 %897
%900 = load double, double* %899
%901 = fcmp ogt double %900, %7
br i1 %901, label %904, label %902
902: ; preds = %896
%903 = fcmp olt double %900, %43
br i1 %903, label %904, label %906
904: ; preds = %902, %896
%905 = phi double [ %7, %896 ], [ %43, %902 ]
store double %905, double* %899
br label %906
906: ; preds = %904, %902
%907 = or i64 %897, 1
%908 = getelementptr inbounds double, double* %3, i64 %907
%909 = load double, double* %908
%910 = fcmp ogt double %909, %7
br i1 %910, label %913, label %911
911: ; preds = %906
%912 = fcmp olt double %909, %43
br i1 %912, label %913, label %915
913: ; preds = %911, %906
%914 = phi double [ %7, %906 ], [ %43, %911 ]
store double %914, double* %908
br label %915
915: ; preds = %913, %911
%916 = add nuw nsw i64 %897, 2
%917 = add i64 %898, 2
%918 = icmp eq i64 %917, %240
br i1 %918, label %919, label %896
919: ; preds = %915, %852
%920 = phi i64 [ 0, %852 ], [ %916, %915 ]
br i1 %241, label %929, label %921
921: ; preds = %919
%922 = getelementptr inbounds double, double* %3, i64 %920
%923 = load double, double* %922
%924 = fcmp ogt double %923, %7
br i1 %924, label %927, label %925
925: ; preds = %921
%926 = fcmp olt double %923, %43
br i1 %926, label %927, label %929
927: ; preds = %925, %921
%928 = phi double [ %7, %921 ], [ %43, %925 ]
store double %928, double* %922
br label %929
929: ; preds = %919, %927, %925, %851
br i1 %27, label %956, label %930
930: ; preds = %929
%931 = load double, double* %3
%932 = load double, double* %4
%933 = fadd double %931, %932
store double %933, double* %4
br i1 %242, label %956, label %934
934: ; preds = %930
%935 = load double, double* %243
%936 = load double, double* %244
%937 = fadd double %935, %936
store double %937, double* %244
br i1 %245, label %956, label %938
938: ; preds = %934
%939 = load double, double* %246
%940 = load double, double* %247
%941 = fadd double %939, %940
store double %941, double* %247
br i1 %248, label %956, label %942
942: ; preds = %938
%943 = load double, double* %249
%944 = load double, double* %250
%945 = fadd double %943, %944
store double %945, double* %250
br i1 %251, label %956, label %946
946: ; preds = %942
%947 = load double, double* %252
%948 = load double, double* %253
%949 = fadd double %947, %948
store double %949, double* %253
%950 = load double, double* %254
%951 = load double, double* %255
%952 = fadd double %950, %951
store double %952, double* %255
%953 = load double, double* %256
%954 = load double, double* %257
%955 = fadd double %953, %954
store double %955, double* %257
br label %956
956: ; preds = %930, %934, %938, %942, %946, %929
br i1 %28, label %957, label %990
957: ; preds = %956, %957
%958 = phi i64 [ %988, %957 ], [ %53, %956 ]
%959 = getelementptr inbounds double, double* %3, i64 %958
%960 = load double, double* %959
%961 = getelementptr inbounds double, double* %4, i64 %958
%962 = load double, double* %961
%963 = fadd double %960, %962
store double %963, double* %961
%964 = add nsw i64 %958, 1
%965 = getelementptr inbounds double, double* %3, i64 %964
%966 = load double, double* %965
%967 = getelementptr inbounds double, double* %4, i64 %964
%968 = load double, double* %967
%969 = fadd double %966, %968
store double %969, double* %967
%970 = add nsw i64 %958, 2
%971 = getelementptr inbounds double, double* %3, i64 %970
%972 = load double, double* %971
%973 = getelementptr inbounds double, double* %4, i64 %970
%974 = load double, double* %973
%975 = fadd double %972, %974
store double %975, double* %973
%976 = add nsw i64 %958, 3
%977 = getelementptr inbounds double, double* %3, i64 %976
%978 = load double, double* %977
%979 = getelementptr inbounds double, double* %4, i64 %976
%980 = load double, double* %979
%981 = fadd double %978, %980
store double %981, double* %979
%982 = add nsw i64 %958, 4
%983 = getelementptr inbounds double, double* %3, i64 %982
%984 = load double, double* %983
%985 = getelementptr inbounds double, double* %4, i64 %982
%986 = load double, double* %985
%987 = fadd double %984, %986
store double %987, double* %985
%988 = add nsw i64 %958, 5
%989 = icmp slt i64 %988, %19
br i1 %989, label %957, label %990
990: ; preds = %957, %956
%991 = fmul double %381, 4.000000e+00
%992 = call double @llvm.fmuladd.f64(double %991, double %381, double 1.000000e+00)
%993 = call double @sqrt(double %992)
%994 = fadd double %993, 1.000000e+00
%995 = fmul double %994, 5.000000e-01
%996 = srem i32 %383, %13
%997 = icmp eq i32 %996, 0
br i1 %997, label %998, label %1928
998: ; preds = %990
switch i32 %14, label %1847 [
i32 1, label %999
i32 2, label %1135
i32 3, label %1216
i32 4, label %1485
]
999: ; preds = %998
%1000 = load double, double* %1
%1001 = call i32 (double*, double*, double*, double*, double*, double, i32, ...) bitcast (i32 (...)* @dualityGap to i32 (double*, double*, double*, double*, double*, double, i32, ...)*)(double* %1, double* %3, double* %11, double* %10, double* %6, double %7, i32 %8)
%1002 = load double, double* %1
%1003 = fcmp ugt double %1002, %12
br i1 %1003, label %1004, label %2053
1004: ; preds = %999
%1005 = call i32 (double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @supportSet to i32 (double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %0, double* %5, double* %3, double* %11, i32* %22, double %7, i32 %8)
%1006 = sub nsw i32 %1005, %379
%1007 = call i32 @llvm.abs.i32(i32 %1006, i1 true)
%1008 = icmp ult i32 %1007, %52
br i1 %1008, label %1009, label %1017
1009: ; preds = %1004
%1010 = call i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @generateSolution to i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %0, double* %3, double* %1, double* %5, double* %6, double* %11, double* %10, i32* %22, double %7, i32 %8)
%1011 = load double, double* %1
%1012 = fcmp olt double %1011, %12
br i1 %1012, label %2598, label %1013
1013: ; preds = %1009
%1014 = fcmp oeq double %1011, %380
%1015 = icmp eq i32 %1010, %378
%1016 = select i1 %1014, i1 %1015, i1 false
br i1 %1016, label %2598, label %1017
1017: ; preds = %1013, %1004
%1018 = phi i32 [ %1010, %1013 ], [ %1005, %1004 ]
br i1 %42, label %1019, label %1070
1019: ; preds = %1017
%1020 = select i1 %354, i1 true, i1 %361
br i1 %1020, label %1053, label %1021
1021: ; preds = %1019, %1021
%1022 = phi i64 [ %1050, %1021 ], [ 0, %1019 ]
%1023 = getelementptr inbounds double, double* %6, i64 %1022
%1024 = bitcast double* %1023 to <2 x double>*
%1025 = load <2 x double>, <2 x double>* %1024
%1026 = getelementptr inbounds double, double* %1023, i64 2
%1027 = bitcast double* %1026 to <2 x double>*
%1028 = load <2 x double>, <2 x double>* %1027
%1029 = or i64 %1022, 1
%1030 = getelementptr inbounds double, double* %0, i64 %1029
%1031 = bitcast double* %1030 to <2 x double>*
%1032 = load <2 x double>, <2 x double>* %1031
%1033 = getelementptr inbounds double, double* %1030, i64 2
%1034 = bitcast double* %1033 to <2 x double>*
%1035 = load <2 x double>, <2 x double>* %1034
%1036 = fsub <2 x double> %1025, %1032
%1037 = fsub <2 x double> %1028, %1035
%1038 = getelementptr inbounds double, double* %0, i64 %1022
%1039 = bitcast double* %1038 to <2 x double>*
%1040 = load <2 x double>, <2 x double>* %1039
%1041 = getelementptr inbounds double, double* %1038, i64 2
%1042 = bitcast double* %1041 to <2 x double>*
%1043 = load <2 x double>, <2 x double>* %1042
%1044 = fadd <2 x double> %1036, %1040
%1045 = fadd <2 x double> %1037, %1043
%1046 = getelementptr inbounds double, double* %10, i64 %1022
%1047 = bitcast double* %1046 to <2 x double>*
store <2 x double> %1044, <2 x double>* %1047
%1048 = getelementptr inbounds double, double* %1046, i64 2
%1049 = bitcast double* %1048 to <2 x double>*
store <2 x double> %1045, <2 x double>* %1049
%1050 = add nuw i64 %1022, 4
%1051 = icmp eq i64 %1050, %362
br i1 %1051, label %1052, label %1021
1052: ; preds = %1021
br i1 %363, label %1095, label %1053
1053: ; preds = %1019, %1052
%1054 = phi i64 [ 0, %1019 ], [ %362, %1052 ]
%1055 = xor i64 %1054, -1
br i1 %365, label %1067, label %1056
1056: ; preds = %1053
%1057 = getelementptr inbounds double, double* %6, i64 %1054
%1058 = load double, double* %1057
%1059 = or i64 %1054, 1
%1060 = getelementptr inbounds double, double* %0, i64 %1059
%1061 = load double, double* %1060
%1062 = fsub double %1058, %1061
%1063 = getelementptr inbounds double, double* %0, i64 %1054
%1064 = load double, double* %1063
%1065 = fadd double %1062, %1064
%1066 = getelementptr inbounds double, double* %10, i64 %1054
store double %1065, double* %1066
br label %1067
1067: ; preds = %1056, %1053
%1068 = phi i64 [ %1054, %1053 ], [ %1059, %1056 ]
%1069 = icmp eq i64 %1055, %366
br i1 %1069, label %1095, label %1072
1070: ; preds = %1017
%1071 = call i32 (double*, double*, double*, i32, ...) bitcast (i32 (...)* @Thomas to i32 (double*, double*, double*, i32, ...)*)(double* %17, double* %3, double* %10, i32 %8)
br label %1131
1072: ; preds = %1067, %1072
%1073 = phi i64 [ %1086, %1072 ], [ %1068, %1067 ]
%1074 = getelementptr inbounds double, double* %6, i64 %1073
%1075 = load double, double* %1074
%1076 = add nuw nsw i64 %1073, 1
%1077 = getelementptr inbounds double, double* %0, i64 %1076
%1078 = load double, double* %1077
%1079 = fsub double %1075, %1078
%1080 = getelementptr inbounds double, double* %0, i64 %1073
%1081 = load double, double* %1080
%1082 = fadd double %1079, %1081
%1083 = getelementptr inbounds double, double* %10, i64 %1073
store double %1082, double* %1083
%1084 = getelementptr inbounds double, double* %6, i64 %1076
%1085 = load double, double* %1084
%1086 = add nuw nsw i64 %1073, 2
%1087 = getelementptr inbounds double, double* %0, i64 %1086
%1088 = load double, double* %1087
%1089 = fsub double %1085, %1088
%1090 = getelementptr inbounds double, double* %0, i64 %1076
%1091 = load double, double* %1090
%1092 = fadd double %1089, %1091
%1093 = getelementptr inbounds double, double* %10, i64 %1076
store double %1092, double* %1093
%1094 = icmp eq i64 %1086, %72
br i1 %1094, label %1095, label %1072
1095: ; preds = %1067, %1072, %1052
%1096 = call i32 (double*, double*, double*, i32, ...) bitcast (i32 (...)* @Thomas to i32 (double*, double*, double*, i32, ...)*)(double* %17, double* %3, double* %10, i32 %8)
br i1 %42, label %1097, label %1131
1097: ; preds = %1095
br i1 %368, label %1121, label %1098
1098: ; preds = %1097, %1117
%1099 = phi i64 [ %1118, %1117 ], [ 0, %1097 ]
%1100 = phi i64 [ %1119, %1117 ], [ 0, %1097 ]
%1101 = getelementptr inbounds double, double* %3, i64 %1099
%1102 = load double, double* %1101
%1103 = fcmp ogt double %1102, %7
br i1 %1103, label %1106, label %1104
1104: ; preds = %1098
%1105 = fcmp olt double %1102, %43
br i1 %1105, label %1106, label %1108
1106: ; preds = %1104, %1098
%1107 = phi double [ %7, %1098 ], [ %43, %1104 ]
store double %1107, double* %1101
br label %1108
1108: ; preds = %1106, %1104
%1109 = or i64 %1099, 1
%1110 = getelementptr inbounds double, double* %3, i64 %1109
%1111 = load double, double* %1110
%1112 = fcmp ogt double %1111, %7
br i1 %1112, label %1115, label %1113
1113: ; preds = %1108
%1114 = fcmp olt double %1111, %43
br i1 %1114, label %1115, label %1117
1115: ; preds = %1113, %1108
%1116 = phi double [ %7, %1108 ], [ %43, %1113 ]
store double %1116, double* %1110
br label %1117
1117: ; preds = %1115, %1113
%1118 = add nuw nsw i64 %1099, 2
%1119 = add i64 %1100, 2
%1120 = icmp eq i64 %1119, %369
br i1 %1120, label %1121, label %1098
1121: ; preds = %1117, %1097
%1122 = phi i64 [ 0, %1097 ], [ %1118, %1117 ]
br i1 %370, label %1131, label %1123
1123: ; preds = %1121
%1124 = getelementptr inbounds double, double* %3, i64 %1122
%1125 = load double, double* %1124
%1126 = fcmp ogt double %1125, %7
br i1 %1126, label %1129, label %1127
1127: ; preds = %1123
%1128 = fcmp olt double %1125, %43
br i1 %1128, label %1129, label %1131
1129: ; preds = %1127, %1123
%1130 = phi double [ %7, %1123 ], [ %43, %1127 ]
store double %1130, double* %1124
br label %1131
1131: ; preds = %1121, %1129, %1127, %1070, %1095
br i1 %40, label %1133, label %1132
1132: ; preds = %1131
br label %1133
1133: ; preds = %1132, %1131
br i1 %41, label %1134, label %1928
1134: ; preds = %1133
br label %1928
1135: ; preds = %998
store double 0.000000e+00, double* %17
br i1 %349, label %1180, label %1136
1136: ; preds = %1135
br i1 %351, label %1163, label %1137
1137: ; preds = %1136, %1137
%1138 = phi i64 [ %1160, %1137 ], [ 0, %1136 ]
%1139 = phi double [ %1159, %1137 ], [ 0.000000e+00, %1136 ]
%1140 = phi i64 [ %1161, %1137 ], [ 0, %1136 ]
%1141 = getelementptr inbounds double, double* %4, i64 %1138
%1142 = load double, double* %1141
%1143 = call double @llvm.fabs.f64(double %1142)
%1144 = fadd double %1139, %1143
%1145 = or i64 %1138, 1
%1146 = getelementptr inbounds double, double* %4, i64 %1145
%1147 = load double, double* %1146
%1148 = call double @llvm.fabs.f64(double %1147)
%1149 = fadd double %1144, %1148
%1150 = or i64 %1138, 2
%1151 = getelementptr inbounds double, double* %4, i64 %1150
%1152 = load double, double* %1151
%1153 = call double @llvm.fabs.f64(double %1152)
%1154 = fadd double %1149, %1153
%1155 = or i64 %1138, 3
%1156 = getelementptr inbounds double, double* %4, i64 %1155
%1157 = load double, double* %1156
%1158 = call double @llvm.fabs.f64(double %1157)
%1159 = fadd double %1154, %1158
%1160 = add nuw nsw i64 %1138, 4
%1161 = add i64 %1140, 4
%1162 = icmp eq i64 %1161, %352
br i1 %1162, label %1163, label %1137
1163: ; preds = %1137, %1136
%1164 = phi double [ undef, %1136 ], [ %1159, %1137 ]
%1165 = phi i64 [ 0, %1136 ], [ %1160, %1137 ]
%1166 = phi double [ 0.000000e+00, %1136 ], [ %1159, %1137 ]
br i1 %353, label %1178, label %1167
1167: ; preds = %1163, %1167
%1168 = phi i64 [ %1175, %1167 ], [ %1165, %1163 ]
%1169 = phi double [ %1174, %1167 ], [ %1166, %1163 ]
%1170 = phi i64 [ %1176, %1167 ], [ 0, %1163 ]
%1171 = getelementptr inbounds double, double* %4, i64 %1168
%1172 = load double, double* %1171
%1173 = call double @llvm.fabs.f64(double %1172)
%1174 = fadd double %1169, %1173
%1175 = add nuw nsw i64 %1168, 1
%1176 = add i64 %1170, 1
%1177 = icmp eq i64 %1176, %350
br i1 %1177, label %1178, label %1167
1178: ; preds = %1167, %1163
%1179 = phi double [ %1164, %1163 ], [ %1174, %1167 ]
store double %1179, double* %17
br label %1180
1180: ; preds = %1135, %1178
%1181 = phi double [ %1179, %1178 ], [ 0.000000e+00, %1135 ]
br i1 %28, label %1182, label %1212
1182: ; preds = %1180, %1182
%1183 = phi i64 [ %1209, %1182 ], [ %53, %1180 ]
%1184 = phi double [ %1208, %1182 ], [ %1181, %1180 ]
%1185 = getelementptr inbounds double, double* %4, i64 %1183
%1186 = load double, double* %1185
%1187 = call double @llvm.fabs.f64(double %1186)
%1188 = fadd double %1184, %1187
%1189 = add nsw i64 %1183, 1
%1190 = getelementptr inbounds double, double* %4, i64 %1189
%1191 = load double, double* %1190
%1192 = call double @llvm.fabs.f64(double %1191)
%1193 = fadd double %1188, %1192
%1194 = add nsw i64 %1183, 2
%1195 = getelementptr inbounds double, double* %4, i64 %1194
%1196 = load double, double* %1195
%1197 = call double @llvm.fabs.f64(double %1196)
%1198 = fadd double %1193, %1197
%1199 = add nsw i64 %1183, 3
%1200 = getelementptr inbounds double, double* %4, i64 %1199
%1201 = load double, double* %1200
%1202 = call double @llvm.fabs.f64(double %1201)
%1203 = fadd double %1198, %1202
%1204 = add nsw i64 %1183, 4
%1205 = getelementptr inbounds double, double* %4, i64 %1204
%1206 = load double, double* %1205
%1207 = call double @llvm.fabs.f64(double %1206)
%1208 = fadd double %1203, %1207
%1209 = add nsw i64 %1183, 5
%1210 = icmp slt i64 %1209, %19
br i1 %1210, label %1182, label %1211
1211: ; preds = %1182
store double %1208, double* %17
br label %1212
1212: ; preds = %1211, %1180
%1213 = phi double [ %1208, %1211 ], [ %1181, %1180 ]
%1214 = fdiv double %1213, %48
store double %1214, double* %1
%1215 = fcmp ugt double %1214, %12
br i1 %1215, label %1928, label %1936
1216: ; preds = %998
%1217 = load double, double* %3
%1218 = fadd double %1217, %1217
%1219 = load double, double* %44
%1220 = fsub double %1218, %1219
%1221 = load double, double* %6
%1222 = fsub double %1220, %1221
store double %1222, double* %11
br i1 %31, label %1223, label %1322
1223: ; preds = %1216
%1224 = select i1 %306, i1 true, i1 %313
br i1 %1224, label %1268, label %1225
1225: ; preds = %1223, %1225
%1226 = phi i64 [ %1265, %1225 ], [ 0, %1223 ]
%1227 = or i64 %1226, 1
%1228 = getelementptr inbounds double, double* %3, i64 %1226
%1229 = bitcast double* %1228 to <2 x double>*
%1230 = load <2 x double>, <2 x double>* %1229
%1231 = getelementptr inbounds double, double* %1228, i64 2
%1232 = bitcast double* %1231 to <2 x double>*
%1233 = load <2 x double>, <2 x double>* %1232
%1234 = getelementptr inbounds double, double* %3, i64 %1227
%1235 = bitcast double* %1234 to <2 x double>*
%1236 = load <2 x double>, <2 x double>* %1235
%1237 = getelementptr inbounds double, double* %1234, i64 2
%1238 = bitcast double* %1237 to <2 x double>*
%1239 = load <2 x double>, <2 x double>* %1238
%1240 = fsub <2 x double> %1236, %1230
%1241 = fsub <2 x double> %1239, %1233
%1242 = fadd <2 x double> %1236, %1240
%1243 = fadd <2 x double> %1239, %1241
%1244 = or i64 %1226, 2
%1245 = getelementptr inbounds double, double* %3, i64 %1244
%1246 = bitcast double* %1245 to <2 x double>*
%1247 = load <2 x double>, <2 x double>* %1246
%1248 = getelementptr inbounds double, double* %1245, i64 2
%1249 = bitcast double* %1248 to <2 x double>*
%1250 = load <2 x double>, <2 x double>* %1249
%1251 = fsub <2 x double> %1242, %1247
%1252 = fsub <2 x double> %1243, %1250
%1253 = getelementptr inbounds double, double* %6, i64 %1227
%1254 = bitcast double* %1253 to <2 x double>*
%1255 = load <2 x double>, <2 x double>* %1254
%1256 = getelementptr inbounds double, double* %1253, i64 2
%1257 = bitcast double* %1256 to <2 x double>*
%1258 = load <2 x double>, <2 x double>* %1257
%1259 = fsub <2 x double> %1251, %1255
%1260 = fsub <2 x double> %1252, %1258
%1261 = getelementptr inbounds double, double* %11, i64 %1227
%1262 = bitcast double* %1261 to <2 x double>*
store <2 x double> %1259, <2 x double>* %1262
%1263 = getelementptr inbounds double, double* %1261, i64 2
%1264 = bitcast double* %1263 to <2 x double>*
store <2 x double> %1260, <2 x double>* %1264
%1265 = add nuw i64 %1226, 4
%1266 = icmp eq i64 %1265, %314
br i1 %1266, label %1267, label %1225
1267: ; preds = %1225
br i1 %316, label %1322, label %1268
1268: ; preds = %1223, %1267
%1269 = phi i64 [ 1, %1223 ], [ %315, %1267 ]
%1270 = xor i64 %1269, -1
br i1 %318, label %1271, label %1287
1271: ; preds = %1268
%1272 = add nsw i64 %1269, -1
%1273 = getelementptr inbounds double, double* %3, i64 %1272
%1274 = load double, double* %1273
%1275 = getelementptr inbounds double, double* %3, i64 %1269
%1276 = load double, double* %1275
%1277 = fsub double %1276, %1274
%1278 = fadd double %1276, %1277
%1279 = add nuw nsw i64 %1269, 1
%1280 = getelementptr inbounds double, double* %3, i64 %1279
%1281 = load double, double* %1280
%1282 = fsub double %1278, %1281
%1283 = getelementptr inbounds double, double* %6, i64 %1269
%1284 = load double, double* %1283
%1285 = fsub double %1282, %1284
%1286 = getelementptr inbounds double, double* %11, i64 %1269
store double %1285, double* %1286
br label %1287
1287: ; preds = %1271, %1268
%1288 = phi i64 [ %1269, %1268 ], [ %1279, %1271 ]
%1289 = icmp eq i64 %1270, %319
br i1 %1289, label %1322, label %1290
1290: ; preds = %1287, %1290
%1291 = phi i64 [ %1313, %1290 ], [ %1288, %1287 ]
%1292 = add nsw i64 %1291, -1
%1293 = getelementptr inbounds double, double* %3, i64 %1292
%1294 = load double, double* %1293
%1295 = getelementptr inbounds double, double* %3, i64 %1291
%1296 = load double, double* %1295
%1297 = fsub double %1296, %1294
%1298 = fadd double %1296, %1297
%1299 = add nuw nsw i64 %1291, 1
%1300 = getelementptr inbounds double, double* %3, i64 %1299
%1301 = load double, double* %1300
%1302 = fsub double %1298, %1301
%1303 = getelementptr inbounds double, double* %6, i64 %1291
%1304 = load double, double* %1303
%1305 = fsub double %1302, %1304
%1306 = getelementptr inbounds double, double* %11, i64 %1291
store double %1305, double* %1306
%1307 = getelementptr inbounds double, double* %3, i64 %1291
%1308 = load double, double* %1307
%1309 = getelementptr inbounds double, double* %3, i64 %1299
%1310 = load double, double* %1309
%1311 = fsub double %1310, %1308
%1312 = fadd double %1310, %1311
%1313 = add nuw nsw i64 %1291, 2
%1314 = getelementptr inbounds double, double* %3, i64 %1313
%1315 = load double, double* %1314
%1316 = fsub double %1312, %1315
%1317 = getelementptr inbounds double, double* %6, i64 %1299
%1318 = load double, double* %1317
%1319 = fsub double %1316, %1318
%1320 = getelementptr inbounds double, double* %11, i64 %1299
store double %1319, double* %1320
%1321 = icmp eq i64 %1313, %70
br i1 %1321, label %1322, label %1290
1322: ; preds = %1287, %1290, %1267, %1216
%1323 = load double, double* %45
%1324 = load double, double* %46
%1325 = fsub double %1324, %1323
%1326 = fadd double %1324, %1325
%1327 = load double, double* %37
%1328 = fsub double %1326, %1327
store double %1328, double* %38
br i1 %42, label %1329, label %1395
1329: ; preds = %1322
%1330 = or i1 %320, %327
br i1 %1330, label %1358, label %1331
1331: ; preds = %1329, %1331
%1332 = phi i64 [ %1355, %1331 ], [ 0, %1329 ]
%1333 = getelementptr inbounds double, double* %11, i64 %1332
%1334 = bitcast double* %1333 to <2 x double>*
%1335 = load <2 x double>, <2 x double>* %1334
%1336 = getelementptr inbounds double, double* %1333, i64 2
%1337 = bitcast double* %1336 to <2 x double>*
%1338 = load <2 x double>, <2 x double>* %1337
%1339 = fcmp ogt <2 x double> %1335, zeroinitializer
%1340 = fcmp ogt <2 x double> %1338, zeroinitializer
%1341 = getelementptr inbounds double, double* %3, i64 %1332
%1342 = bitcast double* %1341 to <2 x double>*
%1343 = load <2 x double>, <2 x double>* %1342
%1344 = getelementptr inbounds double, double* %1341, i64 2
%1345 = bitcast double* %1344 to <2 x double>*
%1346 = load <2 x double>, <2 x double>* %1345
%1347 = select <2 x i1> %1339, <2 x double> %330, <2 x double> %333
%1348 = select <2 x i1> %1340, <2 x double> %332, <2 x double> %334
%1349 = fadd <2 x double> %1343, %1347
%1350 = fadd <2 x double> %1346, %1348
%1351 = getelementptr inbounds double, double* %10, i64 %1332
%1352 = bitcast double* %1351 to <2 x double>*
store <2 x double> %1349, <2 x double>* %1352
%1353 = getelementptr inbounds double, double* %1351, i64 2
%1354 = bitcast double* %1353 to <2 x double>*
store <2 x double> %1350, <2 x double>* %1354
%1355 = add nuw i64 %1332, 4
%1356 = icmp eq i64 %1355, %328
br i1 %1356, label %1357, label %1331
1357: ; preds = %1331
br i1 %335, label %1395, label %1358
1358: ; preds = %1329, %1357
%1359 = phi i64 [ 0, %1329 ], [ %328, %1357 ]
%1360 = xor i64 %1359, -1
br i1 %337, label %1371, label %1361
1361: ; preds = %1358
%1362 = getelementptr inbounds double, double* %11, i64 %1359
%1363 = load double, double* %1362
%1364 = fcmp ogt double %1363, 0.000000e+00
%1365 = getelementptr inbounds double, double* %3, i64 %1359
%1366 = load double, double* %1365
%1367 = select i1 %1364, double %7, double %338
%1368 = fadd double %1366, %1367
%1369 = getelementptr inbounds double, double* %10, i64 %1359
store double %1368, double* %1369
%1370 = or i64 %1359, 1
br label %1371
1371: ; preds = %1361, %1358
%1372 = phi i64 [ %1359, %1358 ], [ %1370, %1361 ]
%1373 = icmp eq i64 %1360, %339
br i1 %1373, label %1395, label %1374
1374: ; preds = %1371, %1374
%1375 = phi i64 [ %1393, %1374 ], [ %1372, %1371 ]
%1376 = getelementptr inbounds double, double* %11, i64 %1375
%1377 = load double, double* %1376
%1378 = fcmp ogt double %1377, 0.000000e+00
%1379 = getelementptr inbounds double, double* %3, i64 %1375
%1380 = load double, double* %1379
%1381 = select i1 %1378, double %7, double %340
%1382 = fadd double %1380, %1381
%1383 = getelementptr inbounds double, double* %10, i64 %1375
store double %1382, double* %1383
%1384 = add nuw nsw i64 %1375, 1
%1385 = getelementptr inbounds double, double* %11, i64 %1384
%1386 = load double, double* %1385
%1387 = fcmp ogt double %1386, 0.000000e+00
%1388 = getelementptr inbounds double, double* %3, i64 %1384
%1389 = load double, double* %1388
%1390 = select i1 %1387, double %7, double %341
%1391 = fadd double %1389, %1390
%1392 = getelementptr inbounds double, double* %10, i64 %1384
store double %1391, double* %1392
%1393 = add nuw nsw i64 %1375, 2
%1394 = icmp eq i64 %1393, %71
br i1 %1394, label %1395, label %1374
1395: ; preds = %1371, %1374, %1357, %1322
store double 0.000000e+00, double* %17
br i1 %343, label %1445, label %1396
1396: ; preds = %1395
br i1 %345, label %1427, label %1397
1397: ; preds = %1396, %1397
%1398 = phi i64 [ %1424, %1397 ], [ 0, %1396 ]
%1399 = phi double [ %1423, %1397 ], [ 0.000000e+00, %1396 ]
%1400 = phi i64 [ %1425, %1397 ], [ 0, %1396 ]
%1401 = getelementptr inbounds double, double* %10, i64 %1398
%1402 = load double, double* %1401
%1403 = getelementptr inbounds double, double* %11, i64 %1398
%1404 = load double, double* %1403
%1405 = call double @llvm.fmuladd.f64(double %1402, double %1404, double %1399)
%1406 = or i64 %1398, 1
%1407 = getelementptr inbounds double, double* %10, i64 %1406
%1408 = load double, double* %1407
%1409 = getelementptr inbounds double, double* %11, i64 %1406
%1410 = load double, double* %1409
%1411 = call double @llvm.fmuladd.f64(double %1408, double %1410, double %1405)
%1412 = or i64 %1398, 2
%1413 = getelementptr inbounds double, double* %10, i64 %1412
%1414 = load double, double* %1413
%1415 = getelementptr inbounds double, double* %11, i64 %1412
%1416 = load double, double* %1415
%1417 = call double @llvm.fmuladd.f64(double %1414, double %1416, double %1411)
%1418 = or i64 %1398, 3
%1419 = getelementptr inbounds double, double* %10, i64 %1418
%1420 = load double, double* %1419
%1421 = getelementptr inbounds double, double* %11, i64 %1418
%1422 = load double, double* %1421
%1423 = call double @llvm.fmuladd.f64(double %1420, double %1422, double %1417)
%1424 = add nuw nsw i64 %1398, 4
%1425 = add i64 %1400, 4
%1426 = icmp eq i64 %1425, %346
br i1 %1426, label %1427, label %1397
1427: ; preds = %1397, %1396
%1428 = phi double [ undef, %1396 ], [ %1423, %1397 ]
%1429 = phi i64 [ 0, %1396 ], [ %1424, %1397 ]
%1430 = phi double [ 0.000000e+00, %1396 ], [ %1423, %1397 ]
br i1 %347, label %1443, label %1431
1431: ; preds = %1427, %1431
%1432 = phi i64 [ %1440, %1431 ], [ %1429, %1427 ]
%1433 = phi double [ %1439, %1431 ], [ %1430, %1427 ]
%1434 = phi i64 [ %1441, %1431 ], [ 0, %1427 ]
%1435 = getelementptr inbounds double, double* %10, i64 %1432
%1436 = load double, double* %1435
%1437 = getelementptr inbounds double, double* %11, i64 %1432
%1438 = load double, double* %1437
%1439 = call double @llvm.fmuladd.f64(double %1436, double %1438, double %1433)
%1440 = add nuw nsw i64 %1432, 1
%1441 = add i64 %1434, 1
%1442 = icmp eq i64 %1441, %344
br i1 %1442, label %1443, label %1431
1443: ; preds = %1431, %1427
%1444 = phi double [ %1428, %1427 ], [ %1439, %1431 ]
store double %1444, double* %17
br label %1445
1445: ; preds = %1395, %1443
%1446 = phi double [ %1444, %1443 ], [ 0.000000e+00, %1395 ]
br i1 %28, label %1447, label %1482
1447: ; preds = %1445, %1447
%1448 = phi i64 [ %1479, %1447 ], [ %53, %1445 ]
%1449 = phi double [ %1478, %1447 ], [ %1446, %1445 ]
%1450 = getelementptr inbounds double, double* %10, i64 %1448
%1451 = load double, double* %1450
%1452 = getelementptr inbounds double, double* %11, i64 %1448
%1453 = load double, double* %1452
%1454 = call double @llvm.fmuladd.f64(double %1451, double %1453, double %1449)
%1455 = add nsw i64 %1448, 1
%1456 = getelementptr inbounds double, double* %10, i64 %1455
%1457 = load double, double* %1456
%1458 = getelementptr inbounds double, double* %11, i64 %1455
%1459 = load double, double* %1458
%1460 = call double @llvm.fmuladd.f64(double %1457, double %1459, double %1454)
%1461 = add nsw i64 %1448, 2
%1462 = getelementptr inbounds double, double* %10, i64 %1461
%1463 = load double, double* %1462
%1464 = getelementptr inbounds double, double* %11, i64 %1461
%1465 = load double, double* %1464
%1466 = call double @llvm.fmuladd.f64(double %1463, double %1465, double %1460)
%1467 = add nsw i64 %1448, 3
%1468 = getelementptr inbounds double, double* %10, i64 %1467
%1469 = load double, double* %1468
%1470 = getelementptr inbounds double, double* %11, i64 %1467
%1471 = load double, double* %1470
%1472 = call double @llvm.fmuladd.f64(double %1469, double %1471, double %1466)
%1473 = add nsw i64 %1448, 4
%1474 = getelementptr inbounds double, double* %10, i64 %1473
%1475 = load double, double* %1474
%1476 = getelementptr inbounds double, double* %11, i64 %1473
%1477 = load double, double* %1476
%1478 = call double @llvm.fmuladd.f64(double %1475, double %1477, double %1472)
%1479 = add nsw i64 %1448, 5
%1480 = icmp slt i64 %1479, %19
br i1 %1480, label %1447, label %1481
1481: ; preds = %1447
store double %1478, double* %17
br label %1482
1482: ; preds = %1481, %1445
%1483 = phi double [ %1478, %1481 ], [ %1446, %1445 ]
store double %1483, double* %1
%1484 = fcmp ugt double %1483, %12
br i1 %1484, label %1928, label %1936
1485: ; preds = %998
%1486 = load double, double* %3
%1487 = fadd double %1486, %1486
%1488 = load double, double* %44
%1489 = fsub double %1487, %1488
%1490 = load double, double* %6
%1491 = fsub double %1489, %1490
store double %1491, double* %11
br i1 %31, label %1492, label %1591
1492: ; preds = %1485
%1493 = select i1 %258, i1 true, i1 %265
br i1 %1493, label %1537, label %1494
1494: ; preds = %1492, %1494
%1495 = phi i64 [ %1534, %1494 ], [ 0, %1492 ]
%1496 = or i64 %1495, 1
%1497 = getelementptr inbounds double, double* %3, i64 %1495
%1498 = bitcast double* %1497 to <2 x double>*
%1499 = load <2 x double>, <2 x double>* %1498
%1500 = getelementptr inbounds double, double* %1497, i64 2
%1501 = bitcast double* %1500 to <2 x double>*
%1502 = load <2 x double>, <2 x double>* %1501
%1503 = getelementptr inbounds double, double* %3, i64 %1496
%1504 = bitcast double* %1503 to <2 x double>*
%1505 = load <2 x double>, <2 x double>* %1504
%1506 = getelementptr inbounds double, double* %1503, i64 2
%1507 = bitcast double* %1506 to <2 x double>*
%1508 = load <2 x double>, <2 x double>* %1507
%1509 = fsub <2 x double> %1505, %1499
%1510 = fsub <2 x double> %1508, %1502
%1511 = fadd <2 x double> %1505, %1509
%1512 = fadd <2 x double> %1508, %1510
%1513 = or i64 %1495, 2
%1514 = getelementptr inbounds double, double* %3, i64 %1513
%1515 = bitcast double* %1514 to <2 x double>*
%1516 = load <2 x double>, <2 x double>* %1515
%1517 = getelementptr inbounds double, double* %1514, i64 2
%1518 = bitcast double* %1517 to <2 x double>*
%1519 = load <2 x double>, <2 x double>* %1518
%1520 = fsub <2 x double> %1511, %1516
%1521 = fsub <2 x double> %1512, %1519
%1522 = getelementptr inbounds double, double* %6, i64 %1496
%1523 = bitcast double* %1522 to <2 x double>*
%1524 = load <2 x double>, <2 x double>* %1523
%1525 = getelementptr inbounds double, double* %1522, i64 2
%1526 = bitcast double* %1525 to <2 x double>*
%1527 = load <2 x double>, <2 x double>* %1526
%1528 = fsub <2 x double> %1520, %1524
%1529 = fsub <2 x double> %1521, %1527
%1530 = getelementptr inbounds double, double* %11, i64 %1496
%1531 = bitcast double* %1530 to <2 x double>*
store <2 x double> %1528, <2 x double>* %1531
%1532 = getelementptr inbounds double, double* %1530, i64 2
%1533 = bitcast double* %1532 to <2 x double>*
store <2 x double> %1529, <2 x double>* %1533
%1534 = add nuw i64 %1495, 4
%1535 = icmp eq i64 %1534, %266
br i1 %1535, label %1536, label %1494
1536: ; preds = %1494
br i1 %268, label %1591, label %1537
1537: ; preds = %1492, %1536
%1538 = phi i64 [ 1, %1492 ], [ %267, %1536 ]
%1539 = xor i64 %1538, -1
br i1 %270, label %1540, label %1556
1540: ; preds = %1537
%1541 = add nsw i64 %1538, -1
%1542 = getelementptr inbounds double, double* %3, i64 %1541
%1543 = load double, double* %1542
%1544 = getelementptr inbounds double, double* %3, i64 %1538
%1545 = load double, double* %1544
%1546 = fsub double %1545, %1543
%1547 = fadd double %1545, %1546
%1548 = add nuw nsw i64 %1538, 1
%1549 = getelementptr inbounds double, double* %3, i64 %1548
%1550 = load double, double* %1549
%1551 = fsub double %1547, %1550
%1552 = getelementptr inbounds double, double* %6, i64 %1538
%1553 = load double, double* %1552
%1554 = fsub double %1551, %1553
%1555 = getelementptr inbounds double, double* %11, i64 %1538
store double %1554, double* %1555
br label %1556
1556: ; preds = %1540, %1537
%1557 = phi i64 [ %1538, %1537 ], [ %1548, %1540 ]
%1558 = icmp eq i64 %1539, %271
br i1 %1558, label %1591, label %1559
1559: ; preds = %1556, %1559
%1560 = phi i64 [ %1582, %1559 ], [ %1557, %1556 ]
%1561 = add nsw i64 %1560, -1
%1562 = getelementptr inbounds double, double* %3, i64 %1561
%1563 = load double, double* %1562
%1564 = getelementptr inbounds double, double* %3, i64 %1560
%1565 = load double, double* %1564
%1566 = fsub double %1565, %1563
%1567 = fadd double %1565, %1566
%1568 = add nuw nsw i64 %1560, 1
%1569 = getelementptr inbounds double, double* %3, i64 %1568
%1570 = load double, double* %1569
%1571 = fsub double %1567, %1570
%1572 = getelementptr inbounds double, double* %6, i64 %1560
%1573 = load double, double* %1572
%1574 = fsub double %1571, %1573
%1575 = getelementptr inbounds double, double* %11, i64 %1560
store double %1574, double* %1575
%1576 = getelementptr inbounds double, double* %3, i64 %1560
%1577 = load double, double* %1576
%1578 = getelementptr inbounds double, double* %3, i64 %1568
%1579 = load double, double* %1578
%1580 = fsub double %1579, %1577
%1581 = fadd double %1579, %1580
%1582 = add nuw nsw i64 %1560, 2
%1583 = getelementptr inbounds double, double* %3, i64 %1582
%1584 = load double, double* %1583
%1585 = fsub double %1581, %1584
%1586 = getelementptr inbounds double, double* %6, i64 %1568
%1587 = load double, double* %1586
%1588 = fsub double %1585, %1587
%1589 = getelementptr inbounds double, double* %11, i64 %1568
store double %1588, double* %1589
%1590 = icmp eq i64 %1582, %67
br i1 %1590, label %1591, label %1559
1591: ; preds = %1556, %1559, %1536, %1485
%1592 = load double, double* %45
%1593 = load double, double* %46
%1594 = fsub double %1593, %1592
%1595 = fadd double %1593, %1594
%1596 = load double, double* %37
%1597 = fsub double %1595, %1596
store double %1597, double* %38
br i1 %42, label %1598, label %1664
1598: ; preds = %1591
%1599 = or i1 %272, %279
br i1 %1599, label %1627, label %1600
1600: ; preds = %1598, %1600
%1601 = phi i64 [ %1624, %1600 ], [ 0, %1598 ]
%1602 = getelementptr inbounds double, double* %11, i64 %1601
%1603 = bitcast double* %1602 to <2 x double>*
%1604 = load <2 x double>, <2 x double>* %1603
%1605 = getelementptr inbounds double, double* %1602, i64 2
%1606 = bitcast double* %1605 to <2 x double>*
%1607 = load <2 x double>, <2 x double>* %1606
%1608 = fcmp ogt <2 x double> %1604, zeroinitializer
%1609 = fcmp ogt <2 x double> %1607, zeroinitializer
%1610 = getelementptr inbounds double, double* %3, i64 %1601
%1611 = bitcast double* %1610 to <2 x double>*
%1612 = load <2 x double>, <2 x double>* %1611
%1613 = getelementptr inbounds double, double* %1610, i64 2
%1614 = bitcast double* %1613 to <2 x double>*
%1615 = load <2 x double>, <2 x double>* %1614
%1616 = select <2 x i1> %1608, <2 x double> %282, <2 x double> %285
%1617 = select <2 x i1> %1609, <2 x double> %284, <2 x double> %286
%1618 = fadd <2 x double> %1612, %1616
%1619 = fadd <2 x double> %1615, %1617
%1620 = getelementptr inbounds double, double* %10, i64 %1601
%1621 = bitcast double* %1620 to <2 x double>*
store <2 x double> %1618, <2 x double>* %1621
%1622 = getelementptr inbounds double, double* %1620, i64 2
%1623 = bitcast double* %1622 to <2 x double>*
store <2 x double> %1619, <2 x double>* %1623
%1624 = add nuw i64 %1601, 4
%1625 = icmp eq i64 %1624, %280
br i1 %1625, label %1626, label %1600
1626: ; preds = %1600
br i1 %287, label %1664, label %1627
1627: ; preds = %1598, %1626
%1628 = phi i64 [ 0, %1598 ], [ %280, %1626 ]
%1629 = xor i64 %1628, -1
br i1 %289, label %1640, label %1630
1630: ; preds = %1627
%1631 = getelementptr inbounds double, double* %11, i64 %1628
%1632 = load double, double* %1631
%1633 = fcmp ogt double %1632, 0.000000e+00
%1634 = getelementptr inbounds double, double* %3, i64 %1628
%1635 = load double, double* %1634
%1636 = select i1 %1633, double %7, double %290
%1637 = fadd double %1635, %1636
%1638 = getelementptr inbounds double, double* %10, i64 %1628
store double %1637, double* %1638
%1639 = or i64 %1628, 1
br label %1640
1640: ; preds = %1630, %1627
%1641 = phi i64 [ %1628, %1627 ], [ %1639, %1630 ]
%1642 = icmp eq i64 %1629, %291
br i1 %1642, label %1664, label %1643
1643: ; preds = %1640, %1643
%1644 = phi i64 [ %1662, %1643 ], [ %1641, %1640 ]
%1645 = getelementptr inbounds double, double* %11, i64 %1644
%1646 = load double, double* %1645
%1647 = fcmp ogt double %1646, 0.000000e+00
%1648 = getelementptr inbounds double, double* %3, i64 %1644
%1649 = load double, double* %1648
%1650 = select i1 %1647, double %7, double %292
%1651 = fadd double %1649, %1650
%1652 = getelementptr inbounds double, double* %10, i64 %1644
store double %1651, double* %1652
%1653 = add nuw nsw i64 %1644, 1
%1654 = getelementptr inbounds double, double* %11, i64 %1653
%1655 = load double, double* %1654
%1656 = fcmp ogt double %1655, 0.000000e+00
%1657 = getelementptr inbounds double, double* %3, i64 %1653
%1658 = load double, double* %1657
%1659 = select i1 %1656, double %7, double %293
%1660 = fadd double %1658, %1659
%1661 = getelementptr inbounds double, double* %10, i64 %1653
store double %1660, double* %1661
%1662 = add nuw nsw i64 %1644, 2
%1663 = icmp eq i64 %1662, %68
br i1 %1663, label %1664, label %1643
1664: ; preds = %1640, %1643, %1626, %1591
br i1 %295, label %1712, label %1665
1665: ; preds = %1664
br i1 %297, label %1696, label %1666
1666: ; preds = %1665, %1666
%1667 = phi i64 [ %1693, %1666 ], [ 0, %1665 ]
%1668 = phi double [ %1692, %1666 ], [ 0.000000e+00, %1665 ]
%1669 = phi i64 [ %1694, %1666 ], [ 0, %1665 ]
%1670 = getelementptr inbounds double, double* %10, i64 %1667
%1671 = load double, double* %1670
%1672 = getelementptr inbounds double, double* %11, i64 %1667
%1673 = load double, double* %1672
%1674 = call double @llvm.fmuladd.f64(double %1671, double %1673, double %1668)
%1675 = or i64 %1667, 1
%1676 = getelementptr inbounds double, double* %10, i64 %1675
%1677 = load double, double* %1676
%1678 = getelementptr inbounds double, double* %11, i64 %1675
%1679 = load double, double* %1678
%1680 = call double @llvm.fmuladd.f64(double %1677, double %1679, double %1674)
%1681 = or i64 %1667, 2
%1682 = getelementptr inbounds double, double* %10, i64 %1681
%1683 = load double, double* %1682
%1684 = getelementptr inbounds double, double* %11, i64 %1681
%1685 = load double, double* %1684
%1686 = call double @llvm.fmuladd.f64(double %1683, double %1685, double %1680)
%1687 = or i64 %1667, 3
%1688 = getelementptr inbounds double, double* %10, i64 %1687
%1689 = load double, double* %1688
%1690 = getelementptr inbounds double, double* %11, i64 %1687
%1691 = load double, double* %1690
%1692 = call double @llvm.fmuladd.f64(double %1689, double %1691, double %1686)
%1693 = add nuw nsw i64 %1667, 4
%1694 = add i64 %1669, 4
%1695 = icmp eq i64 %1694, %298
br i1 %1695, label %1696, label %1666
1696: ; preds = %1666, %1665
%1697 = phi double [ undef, %1665 ], [ %1692, %1666 ]
%1698 = phi i64 [ 0, %1665 ], [ %1693, %1666 ]
%1699 = phi double [ 0.000000e+00, %1665 ], [ %1692, %1666 ]
br i1 %299, label %1712, label %1700
1700: ; preds = %1696, %1700
%1701 = phi i64 [ %1709, %1700 ], [ %1698, %1696 ]
%1702 = phi double [ %1708, %1700 ], [ %1699, %1696 ]
%1703 = phi i64 [ %1710, %1700 ], [ 0, %1696 ]
%1704 = getelementptr inbounds double, double* %10, i64 %1701
%1705 = load double, double* %1704
%1706 = getelementptr inbounds double, double* %11, i64 %1701
%1707 = load double, double* %1706
%1708 = call double @llvm.fmuladd.f64(double %1705, double %1707, double %1702)
%1709 = add nuw nsw i64 %1701, 1
%1710 = add i64 %1703, 1
%1711 = icmp eq i64 %1710, %296
br i1 %1711, label %1712, label %1700
1712: ; preds = %1696, %1700, %1664
%1713 = phi double [ 0.000000e+00, %1664 ], [ %1697, %1696 ], [ %1708, %1700 ]
br i1 %28, label %1714, label %1748
1714: ; preds = %1712, %1714
%1715 = phi i64 [ %1746, %1714 ], [ %53, %1712 ]
%1716 = phi double [ %1745, %1714 ], [ %1713, %1712 ]
%1717 = getelementptr inbounds double, double* %10, i64 %1715
%1718 = load double, double* %1717
%1719 = getelementptr inbounds double, double* %11, i64 %1715
%1720 = load double, double* %1719
%1721 = call double @llvm.fmuladd.f64(double %1718, double %1720, double %1716)
%1722 = add nsw i64 %1715, 1
%1723 = getelementptr inbounds double, double* %10, i64 %1722
%1724 = load double, double* %1723
%1725 = getelementptr inbounds double, double* %11, i64 %1722
%1726 = load double, double* %1725
%1727 = call double @llvm.fmuladd.f64(double %1724, double %1726, double %1721)
%1728 = add nsw i64 %1715, 2
%1729 = getelementptr inbounds double, double* %10, i64 %1728
%1730 = load double, double* %1729
%1731 = getelementptr inbounds double, double* %11, i64 %1728
%1732 = load double, double* %1731
%1733 = call double @llvm.fmuladd.f64(double %1730, double %1732, double %1727)
%1734 = add nsw i64 %1715, 3
%1735 = getelementptr inbounds double, double* %10, i64 %1734
%1736 = load double, double* %1735
%1737 = getelementptr inbounds double, double* %11, i64 %1734
%1738 = load double, double* %1737
%1739 = call double @llvm.fmuladd.f64(double %1736, double %1738, double %1733)
%1740 = add nsw i64 %1715, 4
%1741 = getelementptr inbounds double, double* %10, i64 %1740
%1742 = load double, double* %1741
%1743 = getelementptr inbounds double, double* %11, i64 %1740
%1744 = load double, double* %1743
%1745 = call double @llvm.fmuladd.f64(double %1742, double %1744, double %1739)
%1746 = add nsw i64 %1715, 5
%1747 = icmp slt i64 %1746, %19
br i1 %1747, label %1714, label %1748
1748: ; preds = %1714, %1712
%1749 = phi double [ %1713, %1712 ], [ %1745, %1714 ]
store double %1749, double* %1
br i1 %301, label %1788, label %1750
1750: ; preds = %1748
br i1 %303, label %1775, label %1751
1751: ; preds = %1750, %1751
%1752 = phi i64 [ %1772, %1751 ], [ 0, %1750 ]
%1753 = phi double [ %1771, %1751 ], [ 0.000000e+00, %1750 ]
%1754 = phi i64 [ %1773, %1751 ], [ 0, %1750 ]
%1755 = getelementptr inbounds double, double* %3, i64 %1752
%1756 = load double, double* %1755
%1757 = getelementptr inbounds double, double* %11, i64 %1752
%1758 = load double, double* %1757
%1759 = getelementptr inbounds double, double* %6, i64 %1752
%1760 = load double, double* %1759
%1761 = fsub double %1758, %1760
%1762 = call double @llvm.fmuladd.f64(double %1756, double %1761, double %1753)
%1763 = or i64 %1752, 1
%1764 = getelementptr inbounds double, double* %3, i64 %1763
%1765 = load double, double* %1764
%1766 = getelementptr inbounds double, double* %11, i64 %1763
%1767 = load double, double* %1766
%1768 = getelementptr inbounds double, double* %6, i64 %1763
%1769 = load double, double* %1768
%1770 = fsub double %1767, %1769
%1771 = call double @llvm.fmuladd.f64(double %1765, double %1770, double %1762)
%1772 = add nuw nsw i64 %1752, 2
%1773 = add i64 %1754, 2
%1774 = icmp eq i64 %1773, %304
br i1 %1774, label %1775, label %1751
1775: ; preds = %1751, %1750
%1776 = phi double [ undef, %1750 ], [ %1771, %1751 ]
%1777 = phi i64 [ 0, %1750 ], [ %1772, %1751 ]
%1778 = phi double [ 0.000000e+00, %1750 ], [ %1771, %1751 ]
br i1 %305, label %1788, label %1779
1779: ; preds = %1775
%1780 = getelementptr inbounds double, double* %3, i64 %1777
%1781 = load double, double* %1780
%1782 = getelementptr inbounds double, double* %11, i64 %1777
%1783 = load double, double* %1782
%1784 = getelementptr inbounds double, double* %6, i64 %1777
%1785 = load double, double* %1784
%1786 = fsub double %1783, %1785
%1787 = call double @llvm.fmuladd.f64(double %1781, double %1786, double %1778)
br label %1788
1788: ; preds = %1779, %1775, %1748
%1789 = phi double [ 0.000000e+00, %1748 ], [ %1776, %1775 ], [ %1787, %1779 ]
br i1 %28, label %1790, label %1839
1790: ; preds = %1788, %1790
%1791 = phi i64 [ %1837, %1790 ], [ %53, %1788 ]
%1792 = phi double [ %1836, %1790 ], [ %1789, %1788 ]
%1793 = getelementptr inbounds double, double* %3, i64 %1791
%1794 = load double, double* %1793
%1795 = getelementptr inbounds double, double* %11, i64 %1791
%1796 = load double, double* %1795
%1797 = getelementptr inbounds double, double* %6, i64 %1791
%1798 = load double, double* %1797
%1799 = fsub double %1796, %1798
%1800 = call double @llvm.fmuladd.f64(double %1794, double %1799, double %1792)
%1801 = add nsw i64 %1791, 1
%1802 = getelementptr inbounds double, double* %3, i64 %1801
%1803 = load double, double* %1802
%1804 = getelementptr inbounds double, double* %11, i64 %1801
%1805 = load double, double* %1804
%1806 = getelementptr inbounds double, double* %6, i64 %1801
%1807 = load double, double* %1806
%1808 = fsub double %1805, %1807
%1809 = call double @llvm.fmuladd.f64(double %1803, double %1808, double %1800)
%1810 = add nsw i64 %1791, 2
%1811 = getelementptr inbounds double, double* %3, i64 %1810
%1812 = load double, double* %1811
%1813 = getelementptr inbounds double, double* %11, i64 %1810
%1814 = load double, double* %1813
%1815 = getelementptr inbounds double, double* %6, i64 %1810
%1816 = load double, double* %1815
%1817 = fsub double %1814, %1816
%1818 = call double @llvm.fmuladd.f64(double %1812, double %1817, double %1809)
%1819 = add nsw i64 %1791, 3
%1820 = getelementptr inbounds double, double* %3, i64 %1819
%1821 = load double, double* %1820
%1822 = getelementptr inbounds double, double* %11, i64 %1819
%1823 = load double, double* %1822
%1824 = getelementptr inbounds double, double* %6, i64 %1819
%1825 = load double, double* %1824
%1826 = fsub double %1823, %1825
%1827 = call double @llvm.fmuladd.f64(double %1821, double %1826, double %1818)
%1828 = add nsw i64 %1791, 4
%1829 = getelementptr inbounds double, double* %3, i64 %1828
%1830 = load double, double* %1829
%1831 = getelementptr inbounds double, double* %11, i64 %1828
%1832 = load double, double* %1831
%1833 = getelementptr inbounds double, double* %6, i64 %1828
%1834 = load double, double* %1833
%1835 = fsub double %1832, %1834
%1836 = call double @llvm.fmuladd.f64(double %1830, double %1835, double %1827)
%1837 = add nsw i64 %1791, 5
%1838 = icmp slt i64 %1837, %19
br i1 %1838, label %1790, label %1839
1839: ; preds = %1790, %1788
%1840 = phi double [ %1789, %1788 ], [ %1836, %1790 ]
%1841 = call double @llvm.fabs.f64(double %1840)
%1842 = fmul double %1841, 5.000000e-01
%1843 = fcmp olt double %1842, 1.000000e+00
%1844 = select i1 %1843, double 1.000000e+00, double %1842
store double %1844, double* %17
%1845 = fdiv double %1749, %1844
store double %1845, double* %1
%1846 = fcmp ugt double %1845, %12
br i1 %1846, label %1928, label %1936
1847: ; preds = %998
store double 0.000000e+00, double* %17
br i1 %372, label %1892, label %1848
1848: ; preds = %1847
br i1 %374, label %1875, label %1849
1849: ; preds = %1848, %1849
%1850 = phi i64 [ %1872, %1849 ], [ 0, %1848 ]
%1851 = phi double [ %1871, %1849 ], [ 0.000000e+00, %1848 ]
%1852 = phi i64 [ %1873, %1849 ], [ 0, %1848 ]
%1853 = getelementptr inbounds double, double* %4, i64 %1850
%1854 = load double, double* %1853
%1855 = call double @llvm.fabs.f64(double %1854)
%1856 = fadd double %1851, %1855
%1857 = or i64 %1850, 1
%1858 = getelementptr inbounds double, double* %4, i64 %1857
%1859 = load double, double* %1858
%1860 = call double @llvm.fabs.f64(double %1859)
%1861 = fadd double %1856, %1860
%1862 = or i64 %1850, 2
%1863 = getelementptr inbounds double, double* %4, i64 %1862
%1864 = load double, double* %1863
%1865 = call double @llvm.fabs.f64(double %1864)
%1866 = fadd double %1861, %1865
%1867 = or i64 %1850, 3
%1868 = getelementptr inbounds double, double* %4, i64 %1867
%1869 = load double, double* %1868
%1870 = call double @llvm.fabs.f64(double %1869)
%1871 = fadd double %1866, %1870
%1872 = add nuw nsw i64 %1850, 4
%1873 = add i64 %1852, 4
%1874 = icmp eq i64 %1873, %375
br i1 %1874, label %1875, label %1849
1875: ; preds = %1849, %1848
%1876 = phi double [ undef, %1848 ], [ %1871, %1849 ]
%1877 = phi i64 [ 0, %1848 ], [ %1872, %1849 ]
%1878 = phi double [ 0.000000e+00, %1848 ], [ %1871, %1849 ]
br i1 %376, label %1890, label %1879
1879: ; preds = %1875, %1879
%1880 = phi i64 [ %1887, %1879 ], [ %1877, %1875 ]
%1881 = phi double [ %1886, %1879 ], [ %1878, %1875 ]
%1882 = phi i64 [ %1888, %1879 ], [ 0, %1875 ]
%1883 = getelementptr inbounds double, double* %4, i64 %1880
%1884 = load double, double* %1883
%1885 = call double @llvm.fabs.f64(double %1884)
%1886 = fadd double %1881, %1885
%1887 = add nuw nsw i64 %1880, 1
%1888 = add i64 %1882, 1
%1889 = icmp eq i64 %1888, %373
br i1 %1889, label %1890, label %1879
1890: ; preds = %1879, %1875
%1891 = phi double [ %1876, %1875 ], [ %1886, %1879 ]
store double %1891, double* %17
br label %1892
1892: ; preds = %1847, %1890
%1893 = phi double [ %1891, %1890 ], [ 0.000000e+00, %1847 ]
br i1 %28, label %1894, label %1924
1894: ; preds = %1892, %1894
%1895 = phi i64 [ %1921, %1894 ], [ %53, %1892 ]
%1896 = phi double [ %1920, %1894 ], [ %1893, %1892 ]
%1897 = getelementptr inbounds double, double* %4, i64 %1895
%1898 = load double, double* %1897
%1899 = call double @llvm.fabs.f64(double %1898)
%1900 = fadd double %1896, %1899
%1901 = add nsw i64 %1895, 1
%1902 = getelementptr inbounds double, double* %4, i64 %1901
%1903 = load double, double* %1902
%1904 = call double @llvm.fabs.f64(double %1903)
%1905 = fadd double %1900, %1904
%1906 = add nsw i64 %1895, 2
%1907 = getelementptr inbounds double, double* %4, i64 %1906
%1908 = load double, double* %1907
%1909 = call double @llvm.fabs.f64(double %1908)
%1910 = fadd double %1905, %1909
%1911 = add nsw i64 %1895, 3
%1912 = getelementptr inbounds double, double* %4, i64 %1911
%1913 = load double, double* %1912
%1914 = call double @llvm.fabs.f64(double %1913)
%1915 = fadd double %1910, %1914
%1916 = add nsw i64 %1895, 4
%1917 = getelementptr inbounds double, double* %4, i64 %1916
%1918 = load double, double* %1917
%1919 = call double @llvm.fabs.f64(double %1918)
%1920 = fadd double %1915, %1919
%1921 = add nsw i64 %1895, 5
%1922 = icmp slt i64 %1921, %19
br i1 %1922, label %1894, label %1923
1923: ; preds = %1894
store double %1920, double* %17
br label %1924
1924: ; preds = %1923, %1892
%1925 = phi double [ %1920, %1923 ], [ %1893, %1892 ]
%1926 = fdiv double %1925, %48
store double %1926, double* %1
%1927 = fcmp ugt double %1926, %12
br i1 %1927, label %1928, label %1936
1928: ; preds = %1134, %1133, %1212, %1482, %1839, %1924, %990
%1929 = phi double [ %381, %990 ], [ %381, %1924 ], [ %381, %1839 ], [ %381, %1482 ], [ %381, %1212 ], [ 0.000000e+00, %1133 ], [ 0.000000e+00, %1134 ]
%1930 = phi double [ %995, %990 ], [ %995, %1924 ], [ %995, %1839 ], [ %995, %1482 ], [ %995, %1212 ], [ 1.000000e+00, %1133 ], [ 1.000000e+00, %1134 ]
%1931 = phi double [ %380, %990 ], [ %380, %1924 ], [ %380, %1839 ], [ %380, %1482 ], [ %380, %1212 ], [ %1000, %1133 ], [ %1000, %1134 ]
%1932 = phi i32 [ %379, %990 ], [ %379, %1924 ], [ %379, %1839 ], [ %379, %1482 ], [ %379, %1212 ], [ %1018, %1133 ], [ %1018, %1134 ]
%1933 = phi i32 [ %378, %990 ], [ %378, %1924 ], [ %378, %1839 ], [ %378, %1482 ], [ %378, %1212 ], [ %379, %1133 ], [ %379, %1134 ]
%1934 = add nuw i32 %383, 1
%1935 = icmp eq i32 %383, %9
br i1 %1935, label %1938, label %377
1936: ; preds = %1924, %1839, %1482, %1212
%1937 = icmp eq i32 %14, 1
br i1 %1937, label %2053, label %1938
1938: ; preds = %1928, %15, %1936
%1939 = phi i32 [ %383, %1936 ], [ 1, %15 ], [ %64, %1928 ]
%1940 = phi i32 [ %379, %1936 ], [ -1, %15 ], [ %1932, %1928 ]
%1941 = phi i32 [ 1, %1936 ], [ 0, %15 ], [ 0, %1928 ]
%1942 = load double, double* %5
%1943 = load double, double* %3
%1944 = fadd double %1942, %1943
store double %1944, double* %0
%1945 = icmp sgt i32 %8, 1
br i1 %1945, label %1946, label %2044
1946: ; preds = %1938
%1947 = zext i32 %8 to i64
%1948 = add nsw i64 %1947, -1
%1949 = icmp ult i64 %1948, 4
br i1 %1949, label %1999, label %1950
1950: ; preds = %1946
%1951 = getelementptr double, double* %0, i64 1
%1952 = getelementptr double, double* %0, i64 %1947
%1953 = getelementptr double, double* %5, i64 1
%1954 = getelementptr double, double* %5, i64 %1947
%1955 = getelementptr double, double* %3, i64 %1947
%1956 = icmp ult double* %1951, %1954
%1957 = icmp ult double* %1953, %1952
%1958 = and i1 %1956, %1957
%1959 = icmp ult double* %1951, %1955
%1960 = icmp ugt double* %1952, %3
%1961 = and i1 %1959, %1960
%1962 = or i1 %1958, %1961
br i1 %1962, label %1999, label %1963
1963: ; preds = %1950
%1964 = and i64 %1948, -4
%1965 = or i64 %1964, 1
br label %1966
1966: ; preds = %1966, %1963
%1967 = phi i64 [ 0, %1963 ], [ %1995, %1966 ]
%1968 = or i64 %1967, 1
%1969 = getelementptr inbounds double, double* %5, i64 %1968
%1970 = bitcast double* %1969 to <2 x double>*
%1971 = load <2 x double>, <2 x double>* %1970
%1972 = getelementptr inbounds double, double* %1969, i64 2
%1973 = bitcast double* %1972 to <2 x double>*
%1974 = load <2 x double>, <2 x double>* %1973
%1975 = getelementptr inbounds double, double* %3, i64 %1967
%1976 = bitcast double* %1975 to <2 x double>*
%1977 = load <2 x double>, <2 x double>* %1976
%1978 = getelementptr inbounds double, double* %1975, i64 2
%1979 = bitcast double* %1978 to <2 x double>*
%1980 = load <2 x double>, <2 x double>* %1979
%1981 = fsub <2 x double> %1971, %1977
%1982 = fsub <2 x double> %1974, %1980
%1983 = getelementptr inbounds double, double* %3, i64 %1968
%1984 = bitcast double* %1983 to <2 x double>*
%1985 = load <2 x double>, <2 x double>* %1984
%1986 = getelementptr inbounds double, double* %1983, i64 2
%1987 = bitcast double* %1986 to <2 x double>*
%1988 = load <2 x double>, <2 x double>* %1987
%1989 = fadd <2 x double> %1981, %1985
%1990 = fadd <2 x double> %1982, %1988
%1991 = getelementptr inbounds double, double* %0, i64 %1968
%1992 = bitcast double* %1991 to <2 x double>*
store <2 x double> %1989, <2 x double>* %1992
%1993 = getelementptr inbounds double, double* %1991, i64 2
%1994 = bitcast double* %1993 to <2 x double>*
store <2 x double> %1990, <2 x double>* %1994
%1995 = add nuw i64 %1967, 4
%1996 = icmp eq i64 %1995, %1964
br i1 %1996, label %1997, label %1966
1997: ; preds = %1966
%1998 = icmp eq i64 %1948, %1964
br i1 %1998, label %2044, label %1999
1999: ; preds = %1950, %1946, %1997
%2000 = phi i64 [ 1, %1950 ], [ 1, %1946 ], [ %1965, %1997 ]
%2001 = xor i64 %2000, -1
%2002 = and i64 %1947, 1
%2003 = icmp eq i64 %2002, 0
br i1 %2003, label %2004, label %2016
2004: ; preds = %1999
%2005 = getelementptr inbounds double, double* %5, i64 %2000
%2006 = load double, double* %2005
%2007 = add nsw i64 %2000, -1
%2008 = getelementptr inbounds double, double* %3, i64 %2007
%2009 = load double, double* %2008
%2010 = fsub double %2006, %2009
%2011 = getelementptr inbounds double, double* %3, i64 %2000
%2012 = load double, double* %2011
%2013 = fadd double %2010, %2012
%2014 = getelementptr inbounds double, double* %0, i64 %2000
store double %2013, double* %2014
%2015 = add nuw nsw i64 %2000, 1
br label %2016
2016: ; preds = %2004, %1999
%2017 = phi i64 [ %2000, %1999 ], [ %2015, %2004 ]
%2018 = sub nsw i64 0, %1947
%2019 = icmp eq i64 %2001, %2018
br i1 %2019, label %2044, label %2020
2020: ; preds = %2016, %2020
%2021 = phi i64 [ %2042, %2020 ], [ %2017, %2016 ]
%2022 = getelementptr inbounds double, double* %5, i64 %2021
%2023 = load double, double* %2022
%2024 = add nsw i64 %2021, -1
%2025 = getelementptr inbounds double, double* %3, i64 %2024
%2026 = load double, double* %2025
%2027 = fsub double %2023, %2026
%2028 = getelementptr inbounds double, double* %3, i64 %2021
%2029 = load double, double* %2028
%2030 = fadd double %2027, %2029
%2031 = getelementptr inbounds double, double* %0, i64 %2021
store double %2030, double* %2031
%2032 = add nuw nsw i64 %2021, 1
%2033 = getelementptr inbounds double, double* %5, i64 %2032
%2034 = load double, double* %2033
%2035 = getelementptr inbounds double, double* %3, i64 %2021
%2036 = load double, double* %2035
%2037 = fsub double %2034, %2036
%2038 = getelementptr inbounds double, double* %3, i64 %2032
%2039 = load double, double* %2038
%2040 = fadd double %2037, %2039
%2041 = getelementptr inbounds double, double* %0, i64 %2032
store double %2040, double* %2041
%2042 = add nuw nsw i64 %2021, 2
%2043 = icmp eq i64 %2042, %1947
br i1 %2043, label %2044, label %2020
2044: ; preds = %2016, %2020, %1997, %1938
%2045 = getelementptr inbounds double, double* %5, i64 %19
%2046 = load double, double* %2045
%2047 = add nsw i32 %8, -1
%2048 = sext i32 %2047 to i64
%2049 = getelementptr inbounds double, double* %3, i64 %2048
%2050 = load double, double* %2049
%2051 = fsub double %2046, %2050
%2052 = getelementptr inbounds double, double* %0, i64 %19
store double %2051, double* %2052
br label %2053
2053: ; preds = %999, %1936, %2044
%2054 = phi i32 [ %383, %1936 ], [ %1939, %2044 ], [ %383, %999 ]
%2055 = phi i32 [ %379, %1936 ], [ %1940, %2044 ], [ %379, %999 ]
%2056 = phi i32 [ 1, %1936 ], [ %1941, %2044 ], [ 1, %999 ]
%2057 = icmp eq i32 %14, 1
%2058 = icmp eq i32 %2056, 1
%2059 = and i1 %2057, %2058
br i1 %2059, label %2060, label %2598
2060: ; preds = %2053
%2061 = load double, double* %3
%2062 = fadd double %2061, %2061
%2063 = getelementptr inbounds double, double* %3, i64 1
%2064 = load double, double* %2063
%2065 = fsub double %2062, %2064
%2066 = load double, double* %6
%2067 = fsub double %2065, %2066
store double %2067, double* %11
%2068 = add i32 %8, -1
%2069 = icmp sgt i32 %8, 2
br i1 %2069, label %2070, label %2192
2070: ; preds = %2060
%2071 = zext i32 %2068 to i64
%2072 = add nsw i64 %2071, -1
%2073 = icmp ult i64 %2072, 4
br i1 %2073, label %2135, label %2074
2074: ; preds = %2070
%2075 = getelementptr double, double* %11, i64 1
%2076 = getelementptr double, double* %11, i64 %2071
%2077 = add nuw nsw i64 %2071, 1
%2078 = getelementptr double, double* %3, i64 %2077
%2079 = getelementptr double, double* %6, i64 1
%2080 = getelementptr double, double* %6, i64 %2071
%2081 = icmp ult double* %2075, %2078
%2082 = icmp ugt double* %2076, %3
%2083 = and i1 %2081, %2082
%2084 = icmp ult double* %2075, %2080
%2085 = icmp ult double* %2079, %2076
%2086 = and i1 %2084, %2085
%2087 = or i1 %2083, %2086
br i1 %2087, label %2135, label %2088
2088: ; preds = %2074
%2089 = and i64 %2072, -4
%2090 = or i64 %2089, 1
br label %2091
2091: ; preds = %2091, %2088
%2092 = phi i64 [ 0, %2088 ], [ %2131, %2091 ]
%2093 = or i64 %2092, 1
%2094 = getelementptr inbounds double, double* %3, i64 %2092
%2095 = bitcast double* %2094 to <2 x double>*
%2096 = load <2 x double>, <2 x double>* %2095
%2097 = getelementptr inbounds double, double* %2094, i64 2
%2098 = bitcast double* %2097 to <2 x double>*
%2099 = load <2 x double>, <2 x double>* %2098
%2100 = getelementptr inbounds double, double* %3, i64 %2093
%2101 = bitcast double* %2100 to <2 x double>*
%2102 = load <2 x double>, <2 x double>* %2101
%2103 = getelementptr inbounds double, double* %2100, i64 2
%2104 = bitcast double* %2103 to <2 x double>*
%2105 = load <2 x double>, <2 x double>* %2104
%2106 = fsub <2 x double> %2102, %2096
%2107 = fsub <2 x double> %2105, %2099
%2108 = fadd <2 x double> %2102, %2106
%2109 = fadd <2 x double> %2105, %2107
%2110 = or i64 %2092, 2
%2111 = getelementptr inbounds double, double* %3, i64 %2110
%2112 = bitcast double* %2111 to <2 x double>*
%2113 = load <2 x double>, <2 x double>* %2112
%2114 = getelementptr inbounds double, double* %2111, i64 2
%2115 = bitcast double* %2114 to <2 x double>*
%2116 = load <2 x double>, <2 x double>* %2115
%2117 = fsub <2 x double> %2108, %2113
%2118 = fsub <2 x double> %2109, %2116
%2119 = getelementptr inbounds double, double* %6, i64 %2093
%2120 = bitcast double* %2119 to <2 x double>*
%2121 = load <2 x double>, <2 x double>* %2120
%2122 = getelementptr inbounds double, double* %2119, i64 2
%2123 = bitcast double* %2122 to <2 x double>*
%2124 = load <2 x double>, <2 x double>* %2123
%2125 = fsub <2 x double> %2117, %2121
%2126 = fsub <2 x double> %2118, %2124
%2127 = getelementptr inbounds double, double* %11, i64 %2093
%2128 = bitcast double* %2127 to <2 x double>*
store <2 x double> %2125, <2 x double>* %2128
%2129 = getelementptr inbounds double, double* %2127, i64 2
%2130 = bitcast double* %2129 to <2 x double>*
store <2 x double> %2126, <2 x double>* %2130
%2131 = add nuw i64 %2092, 4
%2132 = icmp eq i64 %2131, %2089
br i1 %2132, label %2133, label %2091
2133: ; preds = %2091
%2134 = icmp eq i64 %2072, %2089
br i1 %2134, label %2192, label %2135
2135: ; preds = %2074, %2070, %2133
%2136 = phi i64 [ 1, %2074 ], [ 1, %2070 ], [ %2090, %2133 ]
%2137 = xor i64 %2136, -1
%2138 = and i64 %2071, 1
%2139 = icmp eq i64 %2138, 0
br i1 %2139, label %2140, label %2156
2140: ; preds = %2135
%2141 = add nsw i64 %2136, -1
%2142 = getelementptr inbounds double, double* %3, i64 %2141
%2143 = load double, double* %2142
%2144 = getelementptr inbounds double, double* %3, i64 %2136
%2145 = load double, double* %2144
%2146 = fsub double %2145, %2143
%2147 = fadd double %2145, %2146
%2148 = add nuw nsw i64 %2136, 1
%2149 = getelementptr inbounds double, double* %3, i64 %2148
%2150 = load double, double* %2149
%2151 = fsub double %2147, %2150
%2152 = getelementptr inbounds double, double* %6, i64 %2136
%2153 = load double, double* %2152
%2154 = fsub double %2151, %2153
%2155 = getelementptr inbounds double, double* %11, i64 %2136
store double %2154, double* %2155
br label %2156
2156: ; preds = %2140, %2135
%2157 = phi i64 [ %2136, %2135 ], [ %2148, %2140 ]
%2158 = sub nsw i64 0, %2071
%2159 = icmp eq i64 %2137, %2158
br i1 %2159, label %2192, label %2160
2160: ; preds = %2156, %2160
%2161 = phi i64 [ %2183, %2160 ], [ %2157, %2156 ]
%2162 = add nsw i64 %2161, -1
%2163 = getelementptr inbounds double, double* %3, i64 %2162
%2164 = load double, double* %2163
%2165 = getelementptr inbounds double, double* %3, i64 %2161
%2166 = load double, double* %2165
%2167 = fsub double %2166, %2164
%2168 = fadd double %2166, %2167
%2169 = add nuw nsw i64 %2161, 1
%2170 = getelementptr inbounds double, double* %3, i64 %2169
%2171 = load double, double* %2170
%2172 = fsub double %2168, %2171
%2173 = getelementptr inbounds double, double* %6, i64 %2161
%2174 = load double, double* %2173
%2175 = fsub double %2172, %2174
%2176 = getelementptr inbounds double, double* %11, i64 %2161
store double %2175, double* %2176
%2177 = getelementptr inbounds double, double* %3, i64 %2161
%2178 = load double, double* %2177
%2179 = getelementptr inbounds double, double* %3, i64 %2169
%2180 = load double, double* %2179
%2181 = fsub double %2180, %2178
%2182 = fadd double %2180, %2181
%2183 = add nuw nsw i64 %2161, 2
%2184 = getelementptr inbounds double, double* %3, i64 %2183
%2185 = load double, double* %2184
%2186 = fsub double %2182, %2185
%2187 = getelementptr inbounds double, double* %6, i64 %2169
%2188 = load double, double* %2187
%2189 = fsub double %2186, %2188
%2190 = getelementptr inbounds double, double* %11, i64 %2169
store double %2189, double* %2190
%2191 = icmp eq i64 %2183, %2071
br i1 %2191, label %2192, label %2160
2192: ; preds = %2156, %2160, %2133, %2060
%2193 = add nsw i32 %8, -2
%2194 = sext i32 %2193 to i64
%2195 = getelementptr inbounds double, double* %3, i64 %2194
%2196 = load double, double* %2195
%2197 = sext i32 %2068 to i64
%2198 = getelementptr inbounds double, double* %3, i64 %2197
%2199 = load double, double* %2198
%2200 = fsub double %2199, %2196
%2201 = fadd double %2199, %2200
%2202 = getelementptr inbounds double, double* %6, i64 %2197
%2203 = load double, double* %2202
%2204 = fsub double %2201, %2203
%2205 = getelementptr inbounds double, double* %11, i64 %2197
store double %2204, double* %2205
%2206 = srem i32 %8, 5
%2207 = icmp sgt i32 %2206, 0
br i1 %2207, label %2208, label %2257
2208: ; preds = %2192
%2209 = load double, double* %3
%2210 = load double, double* %11
%2211 = fmul double %2210, 2.500000e-01
%2212 = fsub double %2209, %2211
store double %2212, double* %3
%2213 = icmp eq i32 %2206, 1
br i1 %2213, label %2257, label %2214
2214: ; preds = %2208
%2215 = getelementptr inbounds double, double* %3, i64 1
%2216 = load double, double* %2215
%2217 = getelementptr inbounds double, double* %11, i64 1
%2218 = load double, double* %2217
%2219 = fmul double %2218, 2.500000e-01
%2220 = fsub double %2216, %2219
store double %2220, double* %2215
%2221 = icmp eq i32 %2206, 2
br i1 %2221, label %2257, label %2222
2222: ; preds = %2214
%2223 = getelementptr inbounds double, double* %3, i64 2
%2224 = load double, double* %2223
%2225 = getelementptr inbounds double, double* %11, i64 2
%2226 = load double, double* %2225
%2227 = fmul double %2226, 2.500000e-01
%2228 = fsub double %2224, %2227
store double %2228, double* %2223
%2229 = icmp eq i32 %2206, 3
br i1 %2229, label %2257, label %2230
2230: ; preds = %2222
%2231 = getelementptr inbounds double, double* %3, i64 3
%2232 = load double, double* %2231
%2233 = getelementptr inbounds double, double* %11, i64 3
%2234 = load double, double* %2233
%2235 = fmul double %2234, 2.500000e-01
%2236 = fsub double %2232, %2235
store double %2236, double* %2231
%2237 = icmp eq i32 %2206, 4
br i1 %2237, label %2257, label %2238
2238: ; preds = %2230
%2239 = getelementptr inbounds double, double* %3, i64 4
%2240 = load double, double* %2239
%2241 = getelementptr inbounds double, double* %11, i64 4
%2242 = load double, double* %2241
%2243 = fmul double %2242, 2.500000e-01
%2244 = fsub double %2240, %2243
store double %2244, double* %2239
%2245 = getelementptr inbounds double, double* %3, i64 5
%2246 = load double, double* %2245
%2247 = getelementptr inbounds double, double* %11, i64 5
%2248 = load double, double* %2247
%2249 = fmul double %2248, 2.500000e-01
%2250 = fsub double %2246, %2249
store double %2250, double* %2245
%2251 = getelementptr inbounds double, double* %3, i64 6
%2252 = load double, double* %2251
%2253 = getelementptr inbounds double, double* %11, i64 6
%2254 = load double, double* %2253
%2255 = fmul double %2254, 2.500000e-01
%2256 = fsub double %2252, %2255
store double %2256, double* %2251
br label %2257
2257: ; preds = %2208, %2214, %2222, %2230, %2238, %2192
%2258 = icmp slt i32 %2206, %8
br i1 %2258, label %2259, label %2380
2259: ; preds = %2257
%2260 = sext i32 %2206 to i64
%2261 = xor i64 %2260, -1
%2262 = add nsw i64 %2261, %19
%2263 = udiv i64 %2262, 5
%2264 = add nuw nsw i64 %2263, 1
%2265 = icmp ult i64 %2262, 5
br i1 %2265, label %2378, label %2266
2266: ; preds = %2259
%2267 = getelementptr double, double* %3, i64 %2260
%2268 = xor i64 %2260, -1
%2269 = add nsw i64 %2268, %19
%2270 = urem i64 %2269, 5
%2271 = sub nsw i64 %2269, %2270
%2272 = add nsw i64 %2271, %2260
%2273 = add nsw i64 %2272, 5
%2274 = getelementptr double, double* %3, i64 %2273
%2275 = getelementptr double, double* %11, i64 %2260
%2276 = getelementptr double, double* %11, i64 %2273
%2277 = icmp ult double* %2267, %2276
%2278 = icmp ult double* %2275, %2274
%2279 = and i1 %2277, %2278
br i1 %2279, label %2378, label %2280
2280: ; preds = %2266
%2281 = and i64 %2264, 9223372036854775806
%2282 = mul i64 %2281, 5
%2283 = add i64 %2282, %2260
br label %2284
2284: ; preds = %2284, %2280
%2285 = phi i64 [ 0, %2280 ], [ %2374, %2284 ]
%2286 = mul i64 %2285, 5
%2287 = add i64 %2286, %2260
%2288 = add i64 %2287, 5
%2289 = getelementptr inbounds double, double* %3, i64 %2287
%2290 = getelementptr inbounds double, double* %3, i64 %2288
%2291 = load double, double* %2289
%2292 = load double, double* %2290
%2293 = insertelement <2 x double> poison, double %2291, i64 0
%2294 = insertelement <2 x double> %2293, double %2292, i64 1
%2295 = getelementptr inbounds double, double* %11, i64 %2287
%2296 = getelementptr inbounds double, double* %11, i64 %2288
%2297 = load double, double* %2295
%2298 = load double, double* %2296
%2299 = insertelement <2 x double> poison, double %2297, i64 0
%2300 = insertelement <2 x double> %2299, double %2298, i64 1
%2301 = fmul <2 x double> %2300, <double 2.500000e-01, double 2.500000e-01>
%2302 = fsub <2 x double> %2294, %2301
%2303 = add nsw i64 %2287, 1
%2304 = add i64 %2287, 6
%2305 = getelementptr inbounds double, double* %3, i64 %2303
%2306 = getelementptr inbounds double, double* %3, i64 %2304
%2307 = load double, double* %2305
%2308 = load double, double* %2306
%2309 = insertelement <2 x double> poison, double %2307, i64 0
%2310 = insertelement <2 x double> %2309, double %2308, i64 1
%2311 = getelementptr inbounds double, double* %11, i64 %2303
%2312 = getelementptr inbounds double, double* %11, i64 %2304
%2313 = load double, double* %2311
%2314 = load double, double* %2312
%2315 = insertelement <2 x double> poison, double %2313, i64 0
%2316 = insertelement <2 x double> %2315, double %2314, i64 1
%2317 = fmul <2 x double> %2316, <double 2.500000e-01, double 2.500000e-01>
%2318 = fsub <2 x double> %2310, %2317
%2319 = add nsw i64 %2287, 2
%2320 = add i64 %2287, 7
%2321 = getelementptr inbounds double, double* %3, i64 %2319
%2322 = getelementptr inbounds double, double* %3, i64 %2320
%2323 = load double, double* %2321
%2324 = load double, double* %2322
%2325 = insertelement <2 x double> poison, double %2323, i64 0
%2326 = insertelement <2 x double> %2325, double %2324, i64 1
%2327 = getelementptr inbounds double, double* %11, i64 %2319
%2328 = getelementptr inbounds double, double* %11, i64 %2320
%2329 = load double, double* %2327
%2330 = load double, double* %2328
%2331 = insertelement <2 x double> poison, double %2329, i64 0
%2332 = insertelement <2 x double> %2331, double %2330, i64 1
%2333 = fmul <2 x double> %2332, <double 2.500000e-01, double 2.500000e-01>
%2334 = fsub <2 x double> %2326, %2333
%2335 = add nsw i64 %2287, 3
%2336 = add i64 %2287, 8
%2337 = getelementptr inbounds double, double* %3, i64 %2335
%2338 = getelementptr inbounds double, double* %3, i64 %2336
%2339 = load double, double* %2337
%2340 = load double, double* %2338
%2341 = insertelement <2 x double> poison, double %2339, i64 0
%2342 = insertelement <2 x double> %2341, double %2340, i64 1
%2343 = getelementptr inbounds double, double* %11, i64 %2335
%2344 = getelementptr inbounds double, double* %11, i64 %2336
%2345 = load double, double* %2343
%2346 = load double, double* %2344
%2347 = insertelement <2 x double> poison, double %2345, i64 0
%2348 = insertelement <2 x double> %2347, double %2346, i64 1
%2349 = fmul <2 x double> %2348, <double 2.500000e-01, double 2.500000e-01>
%2350 = fsub <2 x double> %2342, %2349
%2351 = add nsw i64 %2287, 4
%2352 = add i64 %2287, 9
%2353 = getelementptr inbounds double, double* %3, i64 %2351
%2354 = getelementptr inbounds double, double* %3, i64 %2352
%2355 = load double, double* %2353
%2356 = load double, double* %2354
%2357 = insertelement <2 x double> poison, double %2355, i64 0
%2358 = insertelement <2 x double> %2357, double %2356, i64 1
%2359 = getelementptr inbounds double, double* %11, i64 %2351
%2360 = getelementptr inbounds double, double* %11, i64 %2352
%2361 = load double, double* %2359
%2362 = load double, double* %2360
%2363 = insertelement <2 x double> poison, double %2361, i64 0
%2364 = insertelement <2 x double> %2363, double %2362, i64 1
%2365 = fmul <2 x double> %2364, <double 2.500000e-01, double 2.500000e-01>
%2366 = fsub <2 x double> %2358, %2365
%2367 = getelementptr inbounds double, double* %3, i64 %2287
%2368 = bitcast double* %2367 to <10 x double>*
%2369 = shufflevector <2 x double> %2302, <2 x double> %2318, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%2370 = shufflevector <2 x double> %2334, <2 x double> %2350, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
%2371 = shufflevector <4 x double> %2369, <4 x double> %2370, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
%2372 = shufflevector <2 x double> %2366, <2 x double> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%2373 = shufflevector <8 x double> %2371, <8 x double> %2372, <10 x i32> <i32 0, i32 2, i32 4, i32 6, i32 8, i32 1, i32 3, i32 5, i32 7, i32 9>
store <10 x double> %2373, <10 x double>* %2368
%2374 = add nuw i64 %2285, 2
%2375 = icmp eq i64 %2374, %2281
br i1 %2375, label %2376, label %2284
2376: ; preds = %2284
%2377 = icmp eq i64 %2264, %2281
br i1 %2377, label %2380, label %2378
2378: ; preds = %2266, %2259, %2376
%2379 = phi i64 [ %2260, %2266 ], [ %2260, %2259 ], [ %2283, %2376 ]
br label %2389
2380: ; preds = %2389, %2376, %2257
%2381 = icmp sgt i32 %8, 0
br i1 %2381, label %2382, label %2461
2382: ; preds = %2380
%2383 = fneg double %7
%2384 = zext i32 %8 to i64
%2385 = and i64 %2384, 1
%2386 = icmp eq i32 %8, 1
br i1 %2386, label %2450, label %2387
2387: ; preds = %2382
%2388 = and i64 %2384, 4294967294
br label %2427
2389: ; preds = %2378, %2389
%2390 = phi i64 [ %2425, %2389 ], [ %2379, %2378 ]
%2391 = getelementptr inbounds double, double* %3, i64 %2390
%2392 = load double, double* %2391
%2393 = getelementptr inbounds double, double* %11, i64 %2390
%2394 = load double, double* %2393
%2395 = fmul double %2394, 2.500000e-01
%2396 = fsub double %2392, %2395
store double %2396, double* %2391
%2397 = add nsw i64 %2390, 1
%2398 = getelementptr inbounds double, double* %3, i64 %2397
%2399 = load double, double* %2398
%2400 = getelementptr inbounds double, double* %11, i64 %2397
%2401 = load double, double* %2400
%2402 = fmul double %2401, 2.500000e-01
%2403 = fsub double %2399, %2402
store double %2403, double* %2398
%2404 = add nsw i64 %2390, 2
%2405 = getelementptr inbounds double, double* %3, i64 %2404
%2406 = load double, double* %2405
%2407 = getelementptr inbounds double, double* %11, i64 %2404
%2408 = load double, double* %2407
%2409 = fmul double %2408, 2.500000e-01
%2410 = fsub double %2406, %2409
store double %2410, double* %2405
%2411 = add nsw i64 %2390, 3
%2412 = getelementptr inbounds double, double* %3, i64 %2411
%2413 = load double, double* %2412
%2414 = getelementptr inbounds double, double* %11, i64 %2411
%2415 = load double, double* %2414
%2416 = fmul double %2415, 2.500000e-01
%2417 = fsub double %2413, %2416
store double %2417, double* %2412
%2418 = add nsw i64 %2390, 4
%2419 = getelementptr inbounds double, double* %3, i64 %2418
%2420 = load double, double* %2419
%2421 = getelementptr inbounds double, double* %11, i64 %2418
%2422 = load double, double* %2421
%2423 = fmul double %2422, 2.500000e-01
%2424 = fsub double %2420, %2423
store double %2424, double* %2419
%2425 = add nsw i64 %2390, 5
%2426 = icmp slt i64 %2425, %19
br i1 %2426, label %2389, label %2380
2427: ; preds = %2446, %2387
%2428 = phi i64 [ 0, %2387 ], [ %2447, %2446 ]
%2429 = phi i64 [ 0, %2387 ], [ %2448, %2446 ]
%2430 = getelementptr inbounds double, double* %3, i64 %2428
%2431 = load double, double* %2430
%2432 = fcmp ogt double %2431, %7
br i1 %2432, label %2435, label %2433
2433: ; preds = %2427
%2434 = fcmp olt double %2431, %2383
br i1 %2434, label %2435, label %2437
2435: ; preds = %2433, %2427
%2436 = phi double [ %7, %2427 ], [ %2383, %2433 ]
store double %2436, double* %2430
br label %2437
2437: ; preds = %2435, %2433
%2438 = or i64 %2428, 1
%2439 = getelementptr inbounds double, double* %3, i64 %2438
%2440 = load double, double* %2439
%2441 = fcmp ogt double %2440, %7
br i1 %2441, label %2444, label %2442
2442: ; preds = %2437
%2443 = fcmp olt double %2440, %2383
br i1 %2443, label %2444, label %2446
2444: ; preds = %2442, %2437
%2445 = phi double [ %7, %2437 ], [ %2383, %2442 ]
store double %2445, double* %2439
br label %2446
2446: ; preds = %2444, %2442
%2447 = add nuw nsw i64 %2428, 2
%2448 = add i64 %2429, 2
%2449 = icmp eq i64 %2448, %2388
br i1 %2449, label %2450, label %2427
2450: ; preds = %2446, %2382
%2451 = phi i64 [ 0, %2382 ], [ %2447, %2446 ]
%2452 = icmp eq i64 %2385, 0
br i1 %2452, label %2461, label %2453
2453: ; preds = %2450
%2454 = getelementptr inbounds double, double* %3, i64 %2451
%2455 = load double, double* %2454
%2456 = fcmp ogt double %2455, %7
br i1 %2456, label %2459, label %2457
2457: ; preds = %2453
%2458 = fcmp olt double %2455, %2383
br i1 %2458, label %2459, label %2461
2459: ; preds = %2457, %2453
%2460 = phi double [ %7, %2453 ], [ %2383, %2457 ]
store double %2460, double* %2454
br label %2461
2461: ; preds = %2450, %2459, %2457, %2380
%2462 = load double, double* %3
%2463 = fadd double %2462, %2462
%2464 = load double, double* %2063
%2465 = fsub double %2463, %2464
%2466 = load double, double* %6
%2467 = fsub double %2465, %2466
store double %2467, double* %11
br i1 %2069, label %2468, label %2590
2468: ; preds = %2461
%2469 = zext i32 %2068 to i64
%2470 = add nsw i64 %2469, -1
%2471 = icmp ult i64 %2470, 4
br i1 %2471, label %2533, label %2472
2472: ; preds = %2468
%2473 = getelementptr double, double* %11, i64 1
%2474 = getelementptr double, double* %11, i64 %2469
%2475 = add nuw nsw i64 %2469, 1
%2476 = getelementptr double, double* %3, i64 %2475
%2477 = getelementptr double, double* %6, i64 1
%2478 = getelementptr double, double* %6, i64 %2469
%2479 = icmp ult double* %2473, %2476
%2480 = icmp ugt double* %2474, %3
%2481 = and i1 %2479, %2480
%2482 = icmp ult double* %2473, %2478
%2483 = icmp ult double* %2477, %2474
%2484 = and i1 %2482, %2483
%2485 = or i1 %2481, %2484
br i1 %2485, label %2533, label %2486
2486: ; preds = %2472
%2487 = and i64 %2470, -4
%2488 = or i64 %2487, 1
br label %2489
2489: ; preds = %2489, %2486
%2490 = phi i64 [ 0, %2486 ], [ %2529, %2489 ]
%2491 = or i64 %2490, 1
%2492 = getelementptr inbounds double, double* %3, i64 %2490
%2493 = bitcast double* %2492 to <2 x double>*
%2494 = load <2 x double>, <2 x double>* %2493
%2495 = getelementptr inbounds double, double* %2492, i64 2
%2496 = bitcast double* %2495 to <2 x double>*
%2497 = load <2 x double>, <2 x double>* %2496
%2498 = getelementptr inbounds double, double* %3, i64 %2491
%2499 = bitcast double* %2498 to <2 x double>*
%2500 = load <2 x double>, <2 x double>* %2499
%2501 = getelementptr inbounds double, double* %2498, i64 2
%2502 = bitcast double* %2501 to <2 x double>*
%2503 = load <2 x double>, <2 x double>* %2502
%2504 = fsub <2 x double> %2500, %2494
%2505 = fsub <2 x double> %2503, %2497
%2506 = fadd <2 x double> %2500, %2504
%2507 = fadd <2 x double> %2503, %2505
%2508 = or i64 %2490, 2
%2509 = getelementptr inbounds double, double* %3, i64 %2508
%2510 = bitcast double* %2509 to <2 x double>*
%2511 = load <2 x double>, <2 x double>* %2510
%2512 = getelementptr inbounds double, double* %2509, i64 2
%2513 = bitcast double* %2512 to <2 x double>*
%2514 = load <2 x double>, <2 x double>* %2513
%2515 = fsub <2 x double> %2506, %2511
%2516 = fsub <2 x double> %2507, %2514
%2517 = getelementptr inbounds double, double* %6, i64 %2491
%2518 = bitcast double* %2517 to <2 x double>*
%2519 = load <2 x double>, <2 x double>* %2518
%2520 = getelementptr inbounds double, double* %2517, i64 2
%2521 = bitcast double* %2520 to <2 x double>*
%2522 = load <2 x double>, <2 x double>* %2521
%2523 = fsub <2 x double> %2515, %2519
%2524 = fsub <2 x double> %2516, %2522
%2525 = getelementptr inbounds double, double* %11, i64 %2491
%2526 = bitcast double* %2525 to <2 x double>*
store <2 x double> %2523, <2 x double>* %2526
%2527 = getelementptr inbounds double, double* %2525, i64 2
%2528 = bitcast double* %2527 to <2 x double>*
store <2 x double> %2524, <2 x double>* %2528
%2529 = add nuw i64 %2490, 4
%2530 = icmp eq i64 %2529, %2487
br i1 %2530, label %2531, label %2489
2531: ; preds = %2489
%2532 = icmp eq i64 %2470, %2487
br i1 %2532, label %2590, label %2533
2533: ; preds = %2472, %2468, %2531
%2534 = phi i64 [ 1, %2472 ], [ 1, %2468 ], [ %2488, %2531 ]
%2535 = xor i64 %2534, -1
%2536 = and i64 %2469, 1
%2537 = icmp eq i64 %2536, 0
br i1 %2537, label %2538, label %2554
2538: ; preds = %2533
%2539 = add nsw i64 %2534, -1
%2540 = getelementptr inbounds double, double* %3, i64 %2539
%2541 = load double, double* %2540
%2542 = getelementptr inbounds double, double* %3, i64 %2534
%2543 = load double, double* %2542
%2544 = fsub double %2543, %2541
%2545 = fadd double %2543, %2544
%2546 = add nuw nsw i64 %2534, 1
%2547 = getelementptr inbounds double, double* %3, i64 %2546
%2548 = load double, double* %2547
%2549 = fsub double %2545, %2548
%2550 = getelementptr inbounds double, double* %6, i64 %2534
%2551 = load double, double* %2550
%2552 = fsub double %2549, %2551
%2553 = getelementptr inbounds double, double* %11, i64 %2534
store double %2552, double* %2553
br label %2554
2554: ; preds = %2538, %2533
%2555 = phi i64 [ %2534, %2533 ], [ %2546, %2538 ]
%2556 = sub nsw i64 0, %2469
%2557 = icmp eq i64 %2535, %2556
br i1 %2557, label %2590, label %2558
2558: ; preds = %2554, %2558
%2559 = phi i64 [ %2581, %2558 ], [ %2555, %2554 ]
%2560 = add nsw i64 %2559, -1
%2561 = getelementptr inbounds double, double* %3, i64 %2560
%2562 = load double, double* %2561
%2563 = getelementptr inbounds double, double* %3, i64 %2559
%2564 = load double, double* %2563
%2565 = fsub double %2564, %2562
%2566 = fadd double %2564, %2565
%2567 = add nuw nsw i64 %2559, 1
%2568 = getelementptr inbounds double, double* %3, i64 %2567
%2569 = load double, double* %2568
%2570 = fsub double %2566, %2569
%2571 = getelementptr inbounds double, double* %6, i64 %2559
%2572 = load double, double* %2571
%2573 = fsub double %2570, %2572
%2574 = getelementptr inbounds double, double* %11, i64 %2559
store double %2573, double* %2574
%2575 = getelementptr inbounds double, double* %3, i64 %2559
%2576 = load double, double* %2575
%2577 = getelementptr inbounds double, double* %3, i64 %2567
%2578 = load double, double* %2577
%2579 = fsub double %2578, %2576
%2580 = fadd double %2578, %2579
%2581 = add nuw nsw i64 %2559, 2
%2582 = getelementptr inbounds double, double* %3, i64 %2581
%2583 = load double, double* %2582
%2584 = fsub double %2580, %2583
%2585 = getelementptr inbounds double, double* %6, i64 %2567
%2586 = load double, double* %2585
%2587 = fsub double %2584, %2586
%2588 = getelementptr inbounds double, double* %11, i64 %2567
store double %2587, double* %2588
%2589 = icmp eq i64 %2581, %2469
br i1 %2589, label %2590, label %2558
2590: ; preds = %2554, %2558, %2531, %2461
%2591 = load double, double* %2195
%2592 = load double, double* %2198
%2593 = fsub double %2592, %2591
%2594 = fadd double %2592, %2593
%2595 = load double, double* %2202
%2596 = fsub double %2594, %2595
store double %2596, double* %2205
%2597 = call i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...) bitcast (i32 (...)* @generateSolution to i32 (double*, double*, double*, double*, double*, double*, double*, i32*, double, i32, ...)*)(double* %0, double* %3, double* %1, double* %5, double* %6, double* %11, double* %10, i32* %22, double %7, i32 %8)
br label %2598
2598: ; preds = %1013, %1009, %2590, %2053
%2599 = phi i32 [ %2054, %2590 ], [ %2054, %2053 ], [ %383, %1009 ], [ %383, %1013 ]
%2600 = phi i32 [ %2597, %2590 ], [ %2055, %2053 ], [ %378, %1013 ], [ %1010, %1009 ]
store i32 %2600, i32* %2
ret i32 %2599
}