void mm_double_NN_1(const int M, const int K, const int N,
                    const double *const A, const double *const B,
                    double *const C, const int Astride, const int Bstride,
                    const int Cstride, const double beta) {
  const double *a;
  const double *b;
  double *c;
  const double *ap_0;
  const double *bp;
  double *cp;
  const int A_sbs_stride = Astride * 1;
  const int C_sbs_stride = Cstride * 1;
  const int k_marg_el = ((K >= 5) ? ((K - 1) & 3) : K);
  const int k_norm = K - k_marg_el;
  const int m_marg_el = M & 0;
  const int m_norm = M - m_marg_el;
  const int n_marg_el = N % 3;
  const int n_norm = N - n_marg_el;
  double *const c_endp = C + m_norm * Cstride;
  register double c0_0, c0_1, c0_2;
  register double t0_0, t0_1, t0_2;
  if (beta == 0.0) {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp = 0.0;
      }
    }
  } else if (beta != 1.0) {
    double *cprb, *cpre, *cp, *cpe;
    cpre = C + M * Cstride;
    for (cprb = C; cprb != cpre; cprb += Cstride) {
      cpe = cprb + N;
      for (cp = cprb; cp != cpe; cp++) {
        *cp *= (beta);
      }
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += A_sbs_stride) {
    const double *const ap_endp = a + k_norm;
    double *const cp_endp = c + n_norm;
    for (b = B, cp = c; cp != cp_endp; b += 3, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp = b;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      c0_2 = _cp[2];
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        _a0 = ap_0[0];
        bp += Bstride;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap_0[0];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap_0[1];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap_0[2];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap_0[3];
          bp += Bstride;
          ap_0 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t0_2 = _a0 * _b2;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c0_2 += t0_2;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
      }
      _cp = cp;
      _cp[0] = c0_0;
      _cp[1] = c0_1;
      _cp[2] = c0_2;
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += A_sbs_stride) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp = b;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[0];
        bp += Bstride;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap_0[0];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap_0[1];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap_0[2];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap_0[3];
          bp += Bstride;
          ap_0 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
      }
      _cp = cp;
      _cp[0] = c0_0;
      _cp[1] = c0_1;
      b += 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp = b;
      _cp = cp;
      c0_0 = _cp[0];
      if (K >= 5) {
        _b0 = bp[0];
        _a0 = ap_0[0];
        bp += Bstride;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap_0[0];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap_0[1];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap_0[2];
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap_0[3];
          bp += Bstride;
          ap_0 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        ap_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        ap_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
      }
      _cp = cp;
      _cp[0] = c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_NN_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf8,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movsd  %xmm0,-0x30(%rbp)
mov    0x10(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x64(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     115e <mm_double_NN_1+0x5e>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x174(%rbp)
jmp    1167 <mm_double_NN_1+0x67>
mov    -0x8(%rbp),%eax
mov    %eax,-0x174(%rbp)
mov    -0x174(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x6c(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x74(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x74(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x7c(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x7c(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x78(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    129b <mm_double_NN_1+0x19b>
jp     129b <mm_double_NN_1+0x19b>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xc8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
cmp    -0xc8(%rbp),%rax
je     1296 <mm_double_NN_1+0x196>
mov    -0xc0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
cmp    -0xd8(%rbp),%rax
je     1271 <mm_double_NN_1+0x171>
mov    -0xd0(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xd0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xd0(%rbp)
jmp    1238 <mm_double_NN_1+0x138>
jmp    1276 <mm_double_NN_1+0x176>
mov    0x20(%rbp),%ecx
mov    -0xc0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
jmp    11fd <mm_double_NN_1+0xfd>
jmp    138d <mm_double_NN_1+0x28d>
movsd  -0x30(%rbp),%xmm0
movsd  0x1d58(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12bd <mm_double_NN_1+0x1bd>
jp     12bd <mm_double_NN_1+0x1bd>
jmp    1388 <mm_double_NN_1+0x288>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
je     1383 <mm_double_NN_1+0x283>
mov    -0xe0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xe0(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
cmp    -0xf8(%rbp),%rax
je     135e <mm_double_NN_1+0x25e>
movsd  -0x30(%rbp),%xmm0
mov    -0xf0(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xf0(%rbp)
jmp    131f <mm_double_NN_1+0x21f>
jmp    1363 <mm_double_NN_1+0x263>
mov    0x20(%rbp),%ecx
mov    -0xe0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
jmp    12e4 <mm_double_NN_1+0x1e4>
jmp    1388 <mm_double_NN_1+0x288>
jmp    138d <mm_double_NN_1+0x28d>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x88(%rbp),%rax
je     1f93 <mm_double_NN_1+0xe93>
mov    -0x38(%rbp),%rax
movslq -0x70(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0x108(%rbp),%rax
je     1f5f <mm_double_NN_1+0xe5f>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x130(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x130(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     190a <mm_double_NN_1+0x80a>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x100(%rbp),%rax
jne    14be <mm_double_NN_1+0x3be>
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x6c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1c64 <mm_double_NN_1+0xb64>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1e1e <mm_double_NN_1+0xd1e>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1efc <mm_double_NN_1+0xdfc>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    %rax,-0x130(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x40(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x40(%rbp)
mov    -0x60(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x60(%rbp)
jmp    13ea <mm_double_NN_1+0x2ea>
jmp    1f64 <mm_double_NN_1+0xe64>
mov    -0x68(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x64(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    139d <mm_double_NN_1+0x29d>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x88(%rbp),%rax
je     2df4 <mm_double_NN_1+0x1cf4>
mov    -0x38(%rbp),%rax
movslq -0x70(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x138(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2862 <mm_double_NN_1+0x1762>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x158(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x158(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     23b5 <mm_double_NN_1+0x12b5>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x138(%rbp),%rax
jne    209d <mm_double_NN_1+0xf9d>
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x6c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     262b <mm_double_NN_1+0x152b>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2773 <mm_double_NN_1+0x1673>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2818 <mm_double_NN_1+0x1718>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    %rax,-0x158(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x158(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x158(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x40(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x40(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2dc0 <mm_double_NN_1+0x1cc0>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x170(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2ace <mm_double_NN_1+0x19ce>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x138(%rbp),%rax
jne    28ea <mm_double_NN_1+0x17ea>
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x6c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2c60 <mm_double_NN_1+0x1b60>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2d36 <mm_double_NN_1+0x1c36>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x6c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2da2 <mm_double_NN_1+0x1ca2>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    %rax,-0x170(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x170(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    2dc5 <mm_double_NN_1+0x1cc5>
mov    -0x68(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x64(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    1fa3 <mm_double_NN_1+0xea3>
add    $0xf8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_NN_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %r8,0x38(%rsp)
mov    %edx,%r14d
lea    -0x1(%rsi),%eax
and    $0x3,%eax
cmp    $0x5,%esi
mov    %rsi,0x28(%rsp)
cmovl  %esi,%eax
mov    %eax,0x8(%rsp)
mov    0xe0(%rsp),%edx
movslq %r14d,%rax
mov    %rax,0x18(%rsp)
imul   %edx,%edi
movslq %edi,%r12
lea    (%r9,%r12,8),%rax
mov    %rax,0x48(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11c1 <mm_double_NN_1+0xb1>
jp     11c1 <mm_double_NN_1+0xb1>
test   %edi,%edi
je     1af3 <mm_double_NN_1+0x9e3>
mov    %edi,0xc(%rsp)
mov    %rcx,0x30(%rsp)
mov    %r9,%r15
movslq %edx,%rbp
mov    0x18(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%r12
xor    %ebx,%ebx
jmp    11ac <mm_double_NN_1+0x9c>
nopl   0x0(%rax,%rax,1)
add    %rbp,%rbx
cmp    %rbx,%r12
je     1324 <mm_double_NN_1+0x214>
test   %r14d,%r14d
je     11a0 <mm_double_NN_1+0x90>
lea    (%r15,%rbx,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
jmp    11a0 <mm_double_NN_1+0x90>
mov    %edi,0xc(%rsp)
mov    %rcx,0x30(%rsp)
mov    %r9,%r15
ucomisd 0xe2b(%rip),%xmm0
jne    11dd <mm_double_NN_1+0xcd>
jnp    1324 <mm_double_NN_1+0x214>
cmpl   $0x0,0xc(%rsp)
je     1324 <mm_double_NN_1+0x214>
movslq 0xe0(%rsp),%rax
mov    0x18(%rsp),%rcx
lea    -0x1(%rcx),%rdx
movabs $0x1fffffffffffffff,%rcx
and    %rdx,%rcx
lea    0x1(%rcx),%r9
mov    %r9,%rsi
and    $0xfffffffffffffffc,%rsi
lea    -0x4(%rsi),%r10
mov    %r10,%r11
shr    $0x2,%r11
add    $0x1,%r11
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    %r15,%rdx
jmp    124e <mm_double_NN_1+0x13e>
nopl   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x48(%rsp),%rdx
je     1324 <mm_double_NN_1+0x214>
test   %r14d,%r14d
je     1240 <mm_double_NN_1+0x130>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     12e9 <mm_double_NN_1+0x1d9>
test   %r10,%r10
je     131a <mm_double_NN_1+0x20a>
mov    %r8,%rdi
xor    %ebx,%ebx
xchg   %ax,%ax
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
movupd 0x20(%rdx,%rbx,8),%xmm4
movupd 0x30(%rdx,%rbx,8),%xmm5
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm1,%xmm4
mulpd  %xmm1,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1270 <mm_double_NN_1+0x160>
test   $0x1,%r11b
je     12dc <mm_double_NN_1+0x1cc>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1240 <mm_double_NN_1+0x130>
lea    (%rdx,%rsi,8),%rdi
mov    0x18(%rsp),%rbx
lea    (%rdx,%rbx,8),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    1300 <mm_double_NN_1+0x1f0>
jmp    1240 <mm_double_NN_1+0x130>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12be <mm_double_NN_1+0x1ae>
jmp    12dc <mm_double_NN_1+0x1cc>
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x30(%rsp),%r12
mov    0x8(%rsp),%r11d
mov    0xe0(%rsp),%esi
je     1af3 <mm_double_NN_1+0x9e3>
mov    0x28(%rsp),%rax
sub    %r11d,%eax
mov    0x18(%rsp),%rdi
imul   $0x55555556,%rdi,%rcx
mov    %rcx,%rdx
shr    $0x3f,%rdx
shr    $0x20,%rcx
add    %edx,%ecx
lea    (%rcx,%rcx,2),%edx
mov    %edi,%ecx
sub    %edx,%ecx
mov    %ecx,0x60(%rsp)
cltq
mov    %rax,0x68(%rsp)
mov    %edx,0x64(%rsp)
movslq %edx,%rax
mov    %rax,0x40(%rsp)
movslq 0xd8(%rsp),%rcx
movslq %esi,%rax
mov    %rax,0x78(%rsp)
movslq 0xd0(%rsp),%rax
mov    %rax,0x70(%rsp)
mov    0x38(%rsp),%rax
lea    (%rax,%rcx,8),%rax
mov    %rax,0x88(%rsp)
mov    %rcx,%rax
shl    $0x5,%rax
mov    %rax,0x58(%rsp)
lea    0x0(,%rcx,8),%rdx
lea    0x10(,%rcx,8),%rdi
mov    %rcx,0x10(%rsp)
lea    -0x10(,%rcx,8),%rbp
ff
mov    %r12,0x20(%rsp)
mov    %r15,0x80(%rsp)
mov    %r15,0x50(%rsp)
mov    0x10(%rsp),%r8
jmp    1421 <mm_double_NN_1+0x311>
mov    0x78(%rsp),%rax
mov    0x50(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
mov    0x70(%rsp),%rax
mov    0x20(%rsp),%rsi
lea    (%rsi,%rax,8),%rsi
mov    %rsi,0x20(%rsp)
mov    %rcx,0x50(%rsp)
cmp    0x48(%rsp),%rcx
je     170c <mm_double_NN_1+0x5fc>
cmpl   $0x0,0x64(%rsp)
je     13f0 <mm_double_NN_1+0x2e0>
mov    0x68(%rsp),%rax
mov    0x20(%rsp),%rcx
lea    (%rcx,%rax,8),%rbx
mov    0x40(%rsp),%rax
mov    0x50(%rsp),%r15
lea    (%r15,%rax,8),%r12
lea    0x8(%rcx),%rax
mov    %rax,0x90(%rsp)
mov    0x88(%rsp),%r14
mov    0x38(%rsp),%r13
jmp    1480 <mm_double_NN_1+0x370>
nop
movupd %xmm0,(%r15)
movsd  %xmm1,0x10(%r15)
add    $0x18,%r13
add    $0x18,%r15
add    $0x18,%r14
cmp    %r12,%r15
je     13f0 <mm_double_NN_1+0x2e0>
movupd (%r15),%xmm0
movsd  0x10(%r15),%xmm1
cmpl   $0x5,0x28(%rsp)
jl     15a0 <mm_double_NN_1+0x490>
movupd 0x0(%r13),%xmm4
movsd  0x10(%r13),%xmm2
mov    0x20(%rsp),%rax
movsd  (%rax),%xmm3
mov    %r14,%rcx
mov    0x90(%rsp),%rax
cs nopw 0x0(%rax,%rax,1)
mov    %rcx,%r9
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm0,%xmm3
addsd  %xmm1,%xmm2
movupd (%rcx),%xmm0
movupd (%rax),%xmm4
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm3,%xmm1
lea    (%rcx,%rdi,1),%rcx
movsd  0x10(%r9),%xmm3
movhpd 0x10(%r9,%rdx,1),%xmm3
mulpd  %xmm4,%xmm3
addsd  %xmm3,%xmm2
movupd (%r9,%rdx,1),%xmm0
unpckhpd %xmm4,%xmm4
mulpd  %xmm0,%xmm4
addpd  %xmm1,%xmm4
unpckhpd %xmm3,%xmm3
addsd  %xmm2,%xmm3
lea    (%rcx,%rbp,1),%rsi
movupd -0x10(%rdx,%rcx,1),%xmm2
movsd  0x10(%rax),%xmm1
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm4,%xmm0
mulsd  (%rdx,%rcx,1),%xmm1
addsd  %xmm3,%xmm1
lea    (%rsi,%rdx,1),%rcx
movupd (%rdx,%rsi,1),%xmm4
movsd  0x10(%rdx,%rsi,1),%xmm2
movsd  0x18(%rax),%xmm3
add    $0x20,%rax
add    %rdx,%rcx
cmp    %rbx,%rax
jne    14c0 <mm_double_NN_1+0x3b0>
add    0x58(%rsp),%r9
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm0
addsd  %xmm2,%xmm1
mov    %rbx,%rax
mov    0x8(%rsp),%r11d
test   $0x4,%r11b
jne    15b2 <mm_double_NN_1+0x4a2>
jmp    1660 <mm_double_NN_1+0x550>
nopw   0x0(%rax,%rax,1)
mov    %r13,%r9
mov    0x20(%rsp),%rax
test   $0x4,%r11b
je     1660 <mm_double_NN_1+0x550>
movupd (%r9),%xmm3
lea    (%r9,%r8,8),%r11
movsd  (%rax),%xmm4
movsd  0x8(%rax),%xmm2
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm0,%xmm5
mulsd  0x10(%r9),%xmm4
addsd  %xmm1,%xmm4
movupd (%r9,%r8,8),%xmm0
lea    (%r11,%r8,8),%r10
movapd %xmm2,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm5,%xmm1
mulsd  0x10(%r9,%r8,8),%xmm2
addsd  %xmm4,%xmm2
movupd (%r11,%r8,8),%xmm0
lea    (%r10,%r8,8),%rcx
movsd  0x10(%rax),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm0,%xmm4
mulsd  0x10(%r11,%r8,8),%xmm3
mov    0x8(%rsp),%r11d
addpd  %xmm1,%xmm4
addsd  %xmm2,%xmm3
movupd (%r10,%r8,8),%xmm2
lea    (%rcx,%r8,8),%r9
movsd  0x18(%rax),%xmm1
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm4,%xmm0
mulsd  0x10(%r10,%r8,8),%xmm1
addsd  %xmm3,%xmm1
add    $0x20,%rax
test   $0x2,%r11b
jne    1680 <mm_double_NN_1+0x570>
test   $0x1,%r11b
je     1460 <mm_double_NN_1+0x350>
jmp    16e4 <mm_double_NN_1+0x5d4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movupd (%r9),%xmm2
mov    0x10(%rsp),%rsi
lea    (%r9,%rsi,8),%rcx
movsd  (%rax),%xmm3
movapd %xmm3,%xmm4
mulsd  0x10(%r9),%xmm3
addsd  %xmm1,%xmm3
movsd  0x8(%rax),%xmm1
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm0,%xmm4
movupd (%r9,%rsi,8),%xmm2
movapd %xmm1,%xmm0
mulsd  0x10(%r9,%rsi,8),%xmm1
lea    (%rcx,%rsi,8),%r9
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm4,%xmm0
addsd  %xmm3,%xmm1
add    $0x10,%rax
test   $0x1,%r11b
je     1460 <mm_double_NN_1+0x350>
movupd (%r9),%xmm2
movsd  (%rax),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm4,%xmm0
mulsd  0x10(%r9),%xmm3
addsd  %xmm3,%xmm1
jmp    1460 <mm_double_NN_1+0x350>
cmpl   $0x0,0xc(%rsp)
mov    0x80(%rsp),%r9
mov    0x30(%rsp),%rbx
mov    0x60(%rsp),%r12d
je     1af3 <mm_double_NN_1+0x9e3>
mov    0x38(%rsp),%r8
mov    0x40(%rsp),%rax
lea    (%r8,%rax,8),%r10
lea    (%r8,%rax,8),%r13
add    $0x10,%r13
mov    0x18(%rsp),%rax
lea    (%rdx,%rax,8),%rax
movslq %r12d,%rcx
shl    $0x3,%rcx
sub    %rcx,%r8
jmp    1782 <mm_double_NN_1+0x672>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movsd  %xmm0,(%r14)
mov    0x78(%rsp),%rcx
lea    (%r9,%rcx,8),%r9
mov    0x70(%rsp),%rcx
lea    (%rbx,%rcx,8),%rbx
cmp    0x48(%rsp),%r9
je     1af3 <mm_double_NN_1+0x9e3>
mov    0x68(%rsp),%rcx
lea    (%rbx,%rcx,8),%r15
mov    0x40(%rsp),%rcx
lea    (%r9,%rcx,8),%r14
test   $0x2,%r12b
jne    17b0 <mm_double_NN_1+0x6a0>
mov    %r10,%rbp
test   $0x1,%r12b
je     1765 <mm_double_NN_1+0x655>
jmp    192a <mm_double_NN_1+0x81a>
nopl   0x0(%rax,%rax,1)
movupd (%r14),%xmm0
cmpl   $0x5,0x28(%rsp)
jl     1870 <mm_double_NN_1+0x760>
movupd (%r10),%xmm2
movsd  (%rbx),%xmm1
lea    0x8(%rbx),%rdi
mov    %r8,%rcx
mov    0x58(%rsp),%rbp
cs nopw 0x0(%rax,%rax,1)
nop
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm0,%xmm1
lea    (%rcx,%rax,1),%rsi
movupd (%rcx,%rax,1),%xmm2
movsd  (%rdi),%xmm3
movsd  0x8(%rdi),%xmm4
movsd  0x10(%rdi),%xmm0
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
movupd (%rdx,%rsi,1),%xmm1
add    %rdx,%rsi
unpcklpd %xmm4,%xmm4
mulpd  %xmm1,%xmm4
addpd  %xmm3,%xmm4
movupd (%rdx,%rsi,1),%xmm1
add    %rdx,%rsi
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm4,%xmm0
movupd (%rdx,%rsi,1),%xmm2
movsd  0x18(%rdi),%xmm1
add    %rbp,%rcx
add    $0x20,%rdi
cmp    %r15,%rdi
jne    17e0 <mm_double_NN_1+0x6d0>
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
add    %rax,%rcx
mov    %r15,%rdi
mov    0x8(%rsp),%r11d
test   $0x4,%r11b
jne    187c <mm_double_NN_1+0x76c>
jmp    18f0 <mm_double_NN_1+0x7e0>
nop
mov    %r10,%rcx
mov    %rbx,%rdi
test   $0x4,%r11b
je     18f0 <mm_double_NN_1+0x7e0>
movupd (%rcx),%xmm1
mov    0x10(%rsp),%rbp
lea    (%rcx,%rbp,8),%rsi
movsd  (%rdi),%xmm2
movsd  0x8(%rdi),%xmm3
movsd  0x10(%rdi),%xmm4
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movsd  0x18(%rdi),%xmm0
movupd (%rcx,%rbp,8),%xmm1
lea    (%rsi,%rbp,8),%rcx
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movupd (%rsi,%rbp,8),%xmm1
lea    (%rcx,%rbp,8),%rsi
unpcklpd %xmm4,%xmm4
mulpd  %xmm1,%xmm4
addpd  %xmm3,%xmm4
movupd (%rcx,%rbp,8),%xmm1
lea    (%rsi,%rbp,8),%rcx
mov    0x8(%rsp),%r11d
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm4,%xmm0
add    $0x20,%rdi
test   $0x2,%r11b
jne    19d0 <mm_double_NN_1+0x8c0>
test   $0x1,%r11b
je     1914 <mm_double_NN_1+0x804>
movupd (%rcx),%xmm1
movsd  (%rdi),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
movupd %xmm0,(%r14)
add    $0x10,%r14
mov    %r13,%rbp
test   $0x1,%r12b
je     1765 <mm_double_NN_1+0x655>
movsd  (%r14),%xmm0
cmpl   $0x5,0x28(%rsp)
jl     1a20 <mm_double_NN_1+0x910>
movsd  0x0(%rbp),%xmm1
movsd  (%rbx),%xmm2
mov    0x10(%rsp),%rcx
lea    0x0(,%rcx,8),%rcx
add    %rbp,%rcx
lea    0x8(%rbx),%rdi
nopw   0x0(%rax,%rax,1)
mov    %rcx,%rbp
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
add    %rdx,%rcx
movsd  0x0(%rbp),%xmm2
movhpd 0x0(%rbp,%rdx,1),%xmm2
movupd (%rdi),%xmm0
mulpd  %xmm0,%xmm2
addsd  %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  (%rdx,%rcx,1),%xmm0
mulsd  0x10(%rdi),%xmm0
add    %rdx,%rcx
addsd  %xmm2,%xmm0
movsd  (%rdx,%rcx,1),%xmm1
add    %rdx,%rcx
movsd  0x18(%rdi),%xmm2
add    $0x20,%rdi
add    %rdx,%rcx
cmp    %r15,%rdi
jne    1960 <mm_double_NN_1+0x850>
add    0x58(%rsp),%rbp
mulsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
test   $0x4,%r11b
jne    1a29 <mm_double_NN_1+0x919>
jmp    1a8a <mm_double_NN_1+0x97a>
nop
movupd (%rcx),%xmm1
mov    0x10(%rsp),%rbp
lea    (%rcx,%rbp,8),%rsi
movsd  (%rdi),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movsd  0x8(%rdi),%xmm0
movupd (%rcx,%rbp,8),%xmm1
lea    (%rsi,%rbp,8),%rcx
mov    0x8(%rsp),%r11d
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm2,%xmm0
add    $0x10,%rdi
test   $0x1,%r11b
jne    1900 <mm_double_NN_1+0x7f0>
jmp    1914 <mm_double_NN_1+0x804>
nop
mov    %rbx,%r15
test   $0x4,%r11b
je     1a8a <mm_double_NN_1+0x97a>
mov    0x10(%rsp),%rdi
lea    0x0(,%rdi,8),%rcx
add    %rbp,%rcx
movsd  (%r15),%xmm1
movsd  0x8(%r15),%xmm2
mulsd  0x0(%rbp),%xmm1
addsd  %xmm0,%xmm1
lea    (%rcx,%rdi,8),%rsi
mulsd  0x0(%rbp,%rdi,8),%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%r15),%xmm1
mulsd  (%rcx,%rdi,8),%xmm1
lea    (%rsi,%rdi,8),%rcx
addsd  %xmm2,%xmm1
lea    (%rcx,%rdi,8),%rbp
movsd  0x18(%r15),%xmm0
mulsd  (%rsi,%rdi,8),%xmm0
mov    0x8(%rsp),%r11d
addsd  %xmm1,%xmm0
add    $0x20,%r15
test   $0x2,%r11b
jne    1aa0 <mm_double_NN_1+0x990>
test   $0x1,%r11b
je     1760 <mm_double_NN_1+0x650>
jmp    1ae0 <mm_double_NN_1+0x9d0>
nopl   0x0(%rax)
movsd  (%r15),%xmm1
mulsd  0x0(%rbp),%xmm1
addsd  %xmm0,%xmm1
movsd  0x8(%r15),%xmm0
mov    0x10(%rsp),%rsi
mulsd  0x0(%rbp,%rsi,8),%xmm0
lea    0x0(,%rsi,8),%rcx
add    %rbp,%rcx
lea    (%rcx,%rsi,8),%rbp
addsd  %xmm1,%xmm0
add    $0x10,%r15
test   $0x1,%r11b
je     1760 <mm_double_NN_1+0x650>
movsd  (%r15),%xmm1
mulsd  0x0(%rbp),%xmm1
addsd  %xmm1,%xmm0
jmp    1760 <mm_double_NN_1+0x650>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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