void mm_double_NT_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_0, *bp_1, *bp_2;
  double *cp;
  const int A_sbs_stride = Astride * 1;
  const int B_sbs_stride = Bstride * 3;
  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 += B_sbs_stride, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      bp_2 = bp_1 + Bstride;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      c0_2 = _cp[2];
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        bp_1 += 1;
        bp_2 += 1;
        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[0];
          _b1 = bp_1[0];
          _b2 = bp_2[0];
          _a0 = ap_0[0];
          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[1];
          _b1 = bp_1[1];
          _b2 = bp_2[1];
          _a0 = ap_0[1];
          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[2];
          _b1 = bp_1[2];
          _b2 = bp_2[2];
          _a0 = ap_0[2];
          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[3];
          _b1 = bp_1[3];
          _b2 = bp_2[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
          bp_1 += 4;
          bp_2 += 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[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _b2 = bp_2[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _b2 = bp_2[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 4;
        bp_0 += 4;
        bp_1 += 4;
        bp_2 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap_0 += 2;
        bp_0 += 2;
        bp_1 += 2;
        bp_2 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _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 * Bstride;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        bp_1 += 1;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[0];
          _b1 = bp_1[0];
          _a0 = ap_0[0];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[1];
          _b1 = bp_1[1];
          _a0 = ap_0[1];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[2];
          _b1 = bp_1[2];
          _a0 = ap_0[2];
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[3];
          _b1 = bp_1[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
          bp_1 += 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[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 4;
        bp_0 += 4;
        bp_1 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap_0 += 2;
        bp_0 += 2;
        bp_1 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
      }
      _cp = cp;
      _cp[0] = c0_0;
      _cp[1] = c0_1;
      b += Bstride * 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap_0 = a;
      bp_0 = b;
      _cp = cp;
      c0_0 = _cp[0];
      if (K >= 5) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        bp_0 += 1;
        ap_0 += 1;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[0];
          _a0 = ap_0[0];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[1];
          _a0 = ap_0[1];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[2];
          _a0 = ap_0[2];
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[3];
          _a0 = ap_0[3];
          ap_0 += 4;
          bp_0 += 4;
        } while (ap_0 != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[2];
        _a0 = ap_0[2];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[3];
        _a0 = ap_0[3];
        c0_0 += _a0 * _b0;
        ap_0 += 4;
        bp_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
        _b0 = bp_0[1];
        _a0 = ap_0[1];
        c0_0 += _a0 * _b0;
        ap_0 += 2;
        bp_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _a0 = ap_0[0];
        c0_0 += _a0 * _b0;
      }
      _cp = cp;
      _cp[0] = c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_NT_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%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,-0x74(%rbp)
imul   $0x3,0x18(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x7c(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     1165 <mm_double_NT_1+0x65>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x18c(%rbp)
jmp    116e <mm_double_NT_1+0x6e>
mov    -0x8(%rbp),%eax
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x80(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x88(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x88(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x90(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x90(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x8c(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xa0(%rbp)
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12ba <mm_double_NT_1+0x1ba>
jp     12ba <mm_double_NT_1+0x1ba>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
cmp    -0xe0(%rbp),%rax
je     12b5 <mm_double_NT_1+0x1b5>
mov    -0xd8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xd8(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
cmp    -0xf0(%rbp),%rax
je     1290 <mm_double_NT_1+0x190>
mov    -0xe8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xe8(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xe8(%rbp)
jmp    1257 <mm_double_NT_1+0x157>
jmp    1295 <mm_double_NT_1+0x195>
mov    0x20(%rbp),%ecx
mov    -0xd8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
jmp    121c <mm_double_NT_1+0x11c>
jmp    13ac <mm_double_NT_1+0x2ac>
movsd  -0x30(%rbp),%xmm0
movsd  0x1d39(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12dc <mm_double_NT_1+0x1dc>
jp     12dc <mm_double_NT_1+0x1dc>
jmp    13a7 <mm_double_NT_1+0x2a7>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
cmp    -0x100(%rbp),%rax
je     13a2 <mm_double_NT_1+0x2a2>
mov    -0xf8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x110(%rbp)
mov    -0xf8(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
cmp    -0x110(%rbp),%rax
je     137d <mm_double_NT_1+0x27d>
movsd  -0x30(%rbp),%xmm0
mov    -0x108(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x108(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x108(%rbp)
jmp    133e <mm_double_NT_1+0x23e>
jmp    1382 <mm_double_NT_1+0x282>
mov    0x20(%rbp),%ecx
mov    -0xf8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
jmp    1303 <mm_double_NT_1+0x203>
jmp    13a7 <mm_double_NT_1+0x2a7>
jmp    13ac <mm_double_NT_1+0x2ac>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0xa0(%rbp),%rax
je     1f78 <mm_double_NT_1+0xe78>
mov    -0x38(%rbp),%rax
movslq -0x84(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x94(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x120(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
cmp    -0x120(%rbp),%rax
je     1f44 <mm_double_NT_1+0xe44>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x148(%rbp)
mov    -0x148(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x148(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x148(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     1933 <mm_double_NT_1+0x833>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x118(%rbp),%rax
jne    1516 <mm_double_NT_1+0x416>
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x80(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1c5e <mm_double_NT_1+0xb5e>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x80(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1e11 <mm_double_NT_1+0xd11>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x68(%rbp)
mov    -0x80(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1ed8 <mm_double_NT_1+0xdd8>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    %rax,-0x148(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x148(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x148(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x148(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x78(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x70(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x70(%rbp)
jmp    140f <mm_double_NT_1+0x30f>
jmp    1f49 <mm_double_NT_1+0xe49>
mov    -0x7c(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    13bc <mm_double_NT_1+0x2bc>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0xa0(%rbp),%rax
je     2cae <mm_double_NT_1+0x1bae>
mov    -0x38(%rbp),%rax
movslq -0x84(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x150(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x94(%rbp),%ecx
imul   0x18(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x94(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
mov    -0x90(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     27de <mm_double_NT_1+0x16de>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x170(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x170(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2387 <mm_double_NT_1+0x1287>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x150(%rbp),%rax
jne    20a9 <mm_double_NT_1+0xfa9>
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x80(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     25c3 <mm_double_NT_1+0x14c3>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x80(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     26f9 <mm_double_NT_1+0x15f9>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x80(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2788 <mm_double_NT_1+0x1688>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x158(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    %rax,-0x170(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x170(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x170(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x70(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x70(%rbp)
mov    -0x90(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2c7a <mm_double_NT_1+0x1b7a>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x188(%rbp)
mov    -0x188(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     29ff <mm_double_NT_1+0x18ff>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x150(%rbp),%rax
jne    2860 <mm_double_NT_1+0x1760>
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x80(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2b4c <mm_double_NT_1+0x1a4c>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x80(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2c05 <mm_double_NT_1+0x1b05>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x50(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x80(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2c5c <mm_double_NT_1+0x1b5c>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x70(%rbp),%rax
mov    %rax,-0x188(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x188(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    2c7f <mm_double_NT_1+0x1b7f>
mov    -0x7c(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x74(%rbp),%ecx
mov    -0x38(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x38(%rbp)
jmp    1f88 <mm_double_NT_1+0xe88>
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_NT_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r8,0x30(%rsp)
mov    %rcx,0x48(%rsp)
mov    %edx,%r14d
lea    -0x1(%rsi),%r12d
and    $0x3,%r12d
cmp    $0x5,%esi
mov    %rsi,0x28(%rsp)
cmovl  %esi,%r12d
mov    0xd0(%rsp),%ecx
movslq %edx,%rax
mov    %rax,0x10(%rsp)
imul   %ecx,%edi
movslq %edi,%rbx
mov    %r9,0x20(%rsp)
lea    (%r9,%rbx,8),%rax
mov    %rax,0x38(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11c6 <mm_double_NT_1+0xb6>
jp     11c6 <mm_double_NT_1+0xb6>
test   %edi,%edi
je     1af1 <mm_double_NT_1+0x9e1>
mov    %edi,0xc(%rsp)
movslq %ecx,%rbp
mov    0x10(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%rbx
xor    %r15d,%r15d
jmp    11ac <mm_double_NT_1+0x9c>
nopw   0x0(%rax,%rax,1)
add    %rbp,%r15
cmp    %r15,%rbx
je     1324 <mm_double_NT_1+0x214>
test   %r14d,%r14d
je     11a0 <mm_double_NT_1+0x90>
mov    0x20(%rsp),%rax
lea    (%rax,%r15,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
jmp    11a0 <mm_double_NT_1+0x90>
mov    %edi,0xc(%rsp)
ucomisd 0xe2e(%rip),%xmm0
jne    11da <mm_double_NT_1+0xca>
jnp    1324 <mm_double_NT_1+0x214>
cmpl   $0x0,0xc(%rsp)
je     1324 <mm_double_NT_1+0x214>
movslq 0xd0(%rsp),%rax
mov    0x10(%rsp),%rcx
lea    -0x1(%rcx),%rdx
movabs $0x1fffffffffffffff,%rcx
ff ff 1f
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    0x20(%rsp),%rdx
jmp    124e <mm_double_NT_1+0x13e>
nopw   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x38(%rsp),%rdx
je     1324 <mm_double_NT_1+0x214>
test   %r14d,%r14d
je     1240 <mm_double_NT_1+0x130>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     12e9 <mm_double_NT_1+0x1d9>
test   %r10,%r10
je     131a <mm_double_NT_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_NT_1+0x160>
test   $0x1,%r11b
je     12dc <mm_double_NT_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_NT_1+0x130>
lea    (%rdx,%rsi,8),%rdi
mov    0x10(%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_NT_1+0x1f0>
jmp    1240 <mm_double_NT_1+0x130>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12be <mm_double_NT_1+0x1ae>
jmp    12dc <mm_double_NT_1+0x1cc>
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x20(%rsp),%r9
mov    0x48(%rsp),%rbx
mov    0xd0(%rsp),%ebp
je     1af1 <mm_double_NT_1+0x9e1>
mov    0xc8(%rsp),%r8d
lea    (%r8,%r8,2),%edx
mov    0x28(%rsp),%rcx
sub    %r12d,%ecx
mov    0x10(%rsp),%rax
imul   $0x55555556,%rax,%rsi
mov    %rsi,%rdi
shr    $0x3f,%rdi
shr    $0x20,%rsi
add    %edi,%esi
lea    (%rsi,%rsi,2),%esi
sub    %esi,%eax
mov    %rax,0x10(%rsp)
movslq %ecx,%rax
mov    %rax,0x58(%rsp)
mov    %esi,0x1c(%rsp)
movslq %esi,%rax
mov    %rax,0x50(%rsp)
movslq %r8d,%rsi
movslq %edx,%rdi
movslq %ebp,%rax
mov    %rax,0x68(%rsp)
movslq 0xc0(%rsp),%rcx
mov    %rsi,%rax
shl    $0x4,%rax
mov    0x30(%rsp),%rdx
add    %rdx,%rax
add    $0x8,%rax
mov    %rax,0x78(%rsp)
shl    $0x3,%rdi
lea    (%rdx,%rsi,8),%rax
add    $0x8,%rax
mov    %rax,0x70(%rsp)
shl    $0x3,%rcx
mov    %rcx,0x60(%rsp)
mov    %r9,0x40(%rsp)
mov    %rsi,0x80(%rsp)
jmp    1413 <mm_double_NT_1+0x303>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x68(%rsp),%rax
mov    0x40(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
add    0x60(%rsp),%rbx
mov    %rcx,0x40(%rsp)
cmp    0x38(%rsp),%rcx
je     172d <mm_double_NT_1+0x61d>
cmpl   $0x0,0x1c(%rsp)
je     13f0 <mm_double_NT_1+0x2e0>
mov    0x58(%rsp),%rax
lea    (%rbx,%rax,8),%rdx
mov    0x50(%rsp),%rax
mov    0x40(%rsp),%rbp
lea    0x0(,%rax,8),%rcx
add    %rbp,%rcx
mov    0x30(%rsp),%rax
mov    0x70(%rsp),%r10
mov    0x78(%rsp),%r8
jmp    146c <mm_double_NT_1+0x35c>
nopl   0x0(%rax)
movupd %xmm1,0x0(%rbp)
movsd  %xmm0,0x10(%rbp)
add    %rdi,%rax
add    $0x18,%rbp
add    %rdi,%r8
add    %rdi,%r10
cmp    %rcx,%rbp
je     13f0 <mm_double_NT_1+0x2e0>
lea    (%rax,%rsi,8),%r13
lea    0x0(,%rsi,8),%r11
add    %r13,%r11
movupd 0x0(%rbp),%xmm1
movsd  0x10(%rbp),%xmm0
cmpl   $0x5,0x28(%rsp)
jl     15b0 <mm_double_NT_1+0x4a0>
mov    %r12d,%r14d
mov    %rcx,%r12
movsd  (%r11),%xmm3
movsd  (%rbx),%xmm4
movsd  (%rax),%xmm2
movhpd 0x0(%r13),%xmm2
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movupd 0x8(%rbx,%rsi,1),%xmm5
movsd  0x8(%rax,%rsi,1),%xmm0
movsd  0x10(%rax,%rsi,1),%xmm1
movsd  0x18(%rax,%rsi,1),%xmm6
movsd  0x20(%rax,%rsi,1),%xmm2
movhpd (%r10,%rsi,1),%xmm0
movapd %xmm5,%xmm7
unpcklpd %xmm5,%xmm7
mulpd  %xmm0,%xmm7
addpd  %xmm4,%xmm7
movupd (%r8,%rsi,1),%xmm4
mulpd  %xmm5,%xmm4
addsd  %xmm4,%xmm3
movhpd 0x8(%r10,%rsi,1),%xmm1
unpckhpd %xmm5,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm7,%xmm5
unpckhpd %xmm4,%xmm4
addsd  %xmm3,%xmm4
movsd  0x18(%rbx,%rsi,1),%xmm0
movhpd 0x10(%r10,%rsi,1),%xmm6
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm6,%xmm1
addpd  %xmm5,%xmm1
mulsd  0x10(%r8,%rsi,1),%xmm0
addsd  %xmm4,%xmm0
movsd  0x18(%r8,%rsi,1),%xmm3
movhpd 0x18(%r10,%rsi,1),%xmm2
movsd  0x20(%rbx,%rsi,1),%xmm4
lea    (%rbx,%rsi,1),%rcx
add    $0x28,%rcx
add    $0x20,%rsi
cmp    %rdx,%rcx
jne    14b0 <mm_double_NT_1+0x3a0>
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm2
addpd  %xmm2,%xmm1
addsd  %xmm3,%xmm0
lea    (%r8,%rsi,1),%r11
lea    (%r10,%rsi,1),%r13
lea    0x8(%rax,%rsi,1),%r15
mov    %rdx,%r9
mov    %r12,%rcx
mov    %r14d,%r12d
mov    0x80(%rsp),%rsi
test   $0x4,%r12b
jne    15c0 <mm_double_NT_1+0x4b0>
jmp    167d <mm_double_NT_1+0x56d>
nop
mov    %rax,%r15
mov    %rbx,%r9
test   $0x4,%r12b
je     167d <mm_double_NT_1+0x56d>
movsd  (%r9),%xmm5
movsd  0x8(%r9),%xmm3
movapd %xmm5,%xmm6
unpcklpd %xmm5,%xmm6
movsd  (%r15),%xmm7
movsd  0x8(%r15),%xmm4
movsd  0x10(%r15),%xmm2
movhpd 0x0(%r13),%xmm7
mulpd  %xmm6,%xmm7
addpd  %xmm1,%xmm7
mulsd  (%r11),%xmm5
movsd  0x18(%r15),%xmm1
addsd  %xmm0,%xmm5
movapd %xmm3,%xmm0
movhpd 0x8(%r13),%xmm4
unpcklpd %xmm3,%xmm0
mulpd  %xmm0,%xmm4
mulsd  0x8(%r11),%xmm3
addpd  %xmm7,%xmm4
addsd  %xmm5,%xmm3
movsd  0x10(%r9),%xmm5
movapd %xmm5,%xmm0
unpcklpd %xmm5,%xmm0
movhpd 0x10(%r13),%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm4,%xmm2
mulsd  0x10(%r11),%xmm5
addsd  %xmm3,%xmm5
movsd  0x18(%r9),%xmm0
movapd %xmm0,%xmm3
unpcklpd %xmm0,%xmm3
movhpd 0x18(%r13),%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm2,%xmm1
mulsd  0x18(%r11),%xmm0
addsd  %xmm5,%xmm0
add    $0x20,%r9
add    $0x20,%r15
add    $0x20,%r13
add    $0x20,%r11
test   $0x2,%r12b
jne    1690 <mm_double_NT_1+0x580>
test   $0x1,%r12b
je     1450 <mm_double_NT_1+0x340>
jmp    16ff <mm_double_NT_1+0x5ef>
nop
movsd  (%r9),%xmm2
movapd %xmm2,%xmm3
mulsd  (%r11),%xmm2
addsd  %xmm0,%xmm2
movsd  0x8(%r9),%xmm0
movsd  (%r15),%xmm4
movhpd 0x0(%r13),%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm4
addpd  %xmm1,%xmm4
movsd  0x8(%r15),%xmm1
movapd %xmm0,%xmm3
unpcklpd %xmm0,%xmm3
movhpd 0x8(%r13),%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm4,%xmm1
mulsd  0x8(%r11),%xmm0
addsd  %xmm2,%xmm0
add    $0x10,%r9
add    $0x10,%r15
add    $0x10,%r13
add    $0x10,%r11
test   $0x1,%r12b
je     1450 <mm_double_NT_1+0x340>
movsd  (%r9),%xmm2
movapd %xmm2,%xmm3
unpcklpd %xmm2,%xmm3
movsd  (%r15),%xmm4
movhpd 0x0(%r13),%xmm4
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm1
mulsd  (%r11),%xmm2
addsd  %xmm2,%xmm0
jmp    1450 <mm_double_NT_1+0x340>
cmpl   $0x0,0xc(%rsp)
mov    0x20(%rsp),%rdx
mov    0x48(%rsp),%rdi
je     1af1 <mm_double_NT_1+0x9e1>
mov    0x1c(%rsp),%eax
imul   %esi,%eax
cltq
mov    0x30(%rsp),%rcx
lea    (%rcx,%rax,8),%r13
lea    0x0(,%rsi,8),%r8
add    %r13,%r8
lea    0x8(%rcx,%rax,8),%rbp
lea    0x8(%r13,%rsi,8),%rax
lea    (%rsi,%rsi,1),%ecx
movslq %ecx,%rcx
lea    0x0(,%rcx,8),%r10
add    %r13,%r10
jmp    17a1 <mm_double_NT_1+0x691>
nopl   0x0(%rax)
movsd  %xmm0,(%r9)
mov    0x68(%rsp),%rcx
lea    (%r11,%rcx,8),%r11
add    0x60(%rsp),%rdi
cmp    0x38(%rsp),%r11
mov    %r11,%rdx
je     1af1 <mm_double_NT_1+0x9e1>
mov    0x58(%rsp),%rcx
lea    (%rdi,%rcx,8),%rcx
mov    0x50(%rsp),%rsi
lea    (%rdx,%rsi,8),%r9
testb  $0x2,0x10(%rsp)
mov    %rdx,%r11
jne    17d0 <mm_double_NT_1+0x6c0>
mov    %r13,%rdx
testb  $0x1,0x10(%rsp)
je     1785 <mm_double_NT_1+0x675>
jmp    1973 <mm_double_NT_1+0x863>
nopl   0x0(%rax)
movupd (%r9),%xmm0
cmpl   $0x5,0x28(%rsp)
jl     18b0 <mm_double_NT_1+0x7a0>
movsd  (%rdi),%xmm2
movsd  0x0(%r13),%xmm1
movhpd (%r8),%xmm1
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movsd  0x0(%rbp,%rdx,1),%xmm3
movsd  0x8(%rbp,%rdx,1),%xmm4
movsd  0x10(%rbp,%rdx,1),%xmm5
movsd  0x18(%rbp,%rdx,1),%xmm1
movhpd (%rax,%rdx,1),%xmm3
movsd  0x8(%rdi,%rdx,1),%xmm6
movsd  0x10(%rdi,%rdx,1),%xmm7
movsd  0x18(%rdi,%rdx,1),%xmm0
unpcklpd %xmm6,%xmm6
mulpd  %xmm3,%xmm6
addpd  %xmm2,%xmm6
movhpd 0x8(%rax,%rdx,1),%xmm4
unpcklpd %xmm7,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm6,%xmm7
movhpd 0x10(%rax,%rdx,1),%xmm5
unpcklpd %xmm0,%xmm0
mulpd  %xmm5,%xmm0
addpd  %xmm7,%xmm0
movhpd 0x18(%rax,%rdx,1),%xmm1
movsd  0x20(%rdi,%rdx,1),%xmm2
lea    (%rdi,%rdx,1),%rsi
add    $0x28,%rsi
add    $0x20,%rdx
cmp    %rcx,%rsi
jne    1800 <mm_double_NT_1+0x6f0>
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
addpd  %xmm1,%xmm0
lea    (%rax,%rdx,1),%rsi
add    %rbp,%rdx
mov    %rcx,%rbx
test   $0x4,%r12b
jne    18bf <mm_double_NT_1+0x7af>
jmp    1934 <mm_double_NT_1+0x824>
nopl   (%rax)
mov    %r8,%rsi
mov    %r13,%rdx
mov    %rdi,%rbx
test   $0x4,%r12b
je     1934 <mm_double_NT_1+0x824>
movsd  (%rbx),%xmm2
movsd  0x8(%rbx),%xmm3
movsd  0x10(%rbx),%xmm4
movsd  0x18(%rbx),%xmm1
unpcklpd %xmm2,%xmm2
movsd  (%rdx),%xmm5
movsd  0x8(%rdx),%xmm6
movsd  0x10(%rdx),%xmm7
movhpd (%rsi),%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm0,%xmm5
movsd  0x18(%rdx),%xmm0
movhpd 0x8(%rsi),%xmm6
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm6
addpd  %xmm5,%xmm6
unpcklpd %xmm4,%xmm4
movhpd 0x10(%rsi),%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm6,%xmm7
unpcklpd %xmm1,%xmm1
movhpd 0x18(%rsi),%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm7,%xmm0
add    $0x20,%rbx
add    $0x20,%rdx
add    $0x20,%rsi
test   $0x2,%r12b
jne    1a00 <mm_double_NT_1+0x8f0>
test   $0x1,%r12b
je     195c <mm_double_NT_1+0x84c>
movsd  (%rbx),%xmm1
unpcklpd %xmm1,%xmm1
movsd  (%rdx),%xmm2
movhpd (%rsi),%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
movupd %xmm0,(%r9)
add    $0x10,%r9
mov    %r10,%rdx
testb  $0x1,0x10(%rsp)
je     1785 <mm_double_NT_1+0x675>
movsd  (%r9),%xmm0
cmpl   $0x5,0x28(%rsp)
jl     1a50 <mm_double_NT_1+0x940>
movsd  (%rdx),%xmm1
movsd  (%rdi),%xmm2
mov    $0x8,%esi
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movupd (%rdx,%rsi,1),%xmm0
movupd (%rdi,%rsi,1),%xmm2
mulpd  %xmm0,%xmm2
addsd  %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%rdx,%rsi,1),%xmm0
mulsd  0x10(%rdi,%rsi,1),%xmm0
addsd  %xmm2,%xmm0
movsd  0x18(%rdx,%rsi,1),%xmm1
movsd  0x18(%rdi,%rsi,1),%xmm2
lea    (%rdi,%rsi,1),%rbx
add    $0x20,%rbx
add    $0x20,%rsi
cmp    %rcx,%rbx
jne    1990 <mm_double_NT_1+0x880>
mulsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
add    %rsi,%rdx
test   $0x4,%r12b
jne    1a59 <mm_double_NT_1+0x949>
jmp    1a97 <mm_double_NT_1+0x987>
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%rbx),%xmm1
movsd  0x8(%rbx),%xmm2
movsd  (%rdx),%xmm3
movhpd (%rsi),%xmm3
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm3
addpd  %xmm0,%xmm3
movsd  0x8(%rdx),%xmm0
unpcklpd %xmm2,%xmm2
movhpd 0x8(%rsi),%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm3,%xmm0
add    $0x10,%rbx
add    $0x10,%rdx
add    $0x10,%rsi
test   $0x1,%r12b
jne    1944 <mm_double_NT_1+0x834>
jmp    195c <mm_double_NT_1+0x84c>
xchg   %ax,%ax
mov    %rdi,%rcx
test   $0x4,%r12b
je     1a97 <mm_double_NT_1+0x987>
movsd  (%rcx),%xmm1
movsd  0x8(%rcx),%xmm2
mulsd  (%rdx),%xmm1
mulsd  0x8(%rdx),%xmm2
addsd  %xmm0,%xmm1
movsd  0x10(%rcx),%xmm3
mulsd  0x10(%rdx),%xmm3
addsd  %xmm1,%xmm2
movsd  0x18(%rcx),%xmm0
mulsd  0x18(%rdx),%xmm0
addsd  %xmm2,%xmm3
addsd  %xmm3,%xmm0
add    $0x20,%rcx
add    $0x20,%rdx
test   $0x2,%r12b
jne    1ab0 <mm_double_NT_1+0x9a0>
test   $0x1,%r12b
je     1780 <mm_double_NT_1+0x670>
jmp    1ae0 <mm_double_NT_1+0x9d0>
nopl   0x0(%rax)
movsd  (%rcx),%xmm1
movsd  0x8(%rcx),%xmm2
mulsd  (%rdx),%xmm1
mulsd  0x8(%rdx),%xmm2
addsd  %xmm0,%xmm1
addsd  %xmm1,%xmm2
add    $0x10,%rcx
add    $0x10,%rdx
movapd %xmm2,%xmm0
test   $0x1,%r12b
je     1780 <mm_double_NT_1+0x670>
movsd  (%rcx),%xmm1
mulsd  (%rdx),%xmm1
addsd  %xmm1,%xmm0
jmp    1780 <mm_double_NT_1+0x670>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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