void mm_double_NT_c(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 alpha, 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;
      c0_0 = 0.0;
      c0_1 = 0.0;
      c0_2 = 0.0;
      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] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      _cp[2] += alpha * 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;
      c0_0 = 0.0;
      c0_1 = 0.0;
      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] += alpha * c0_0;
      _cp[1] += alpha * 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;
      c0_0 = 0.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] += alpha * c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_NT_c>:
push   %rbp
mov    %rsp,%rbp
sub    $0x118,%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)
movsd  %xmm1,-0x38(%rbp)
mov    0x10(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x7c(%rbp)
imul   $0x3,0x18(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x84(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     116d <mm_double_NT_c+0x6d>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x194(%rbp)
jmp    1176 <mm_double_NT_c+0x76>
mov    -0x8(%rbp),%eax
mov    %eax,-0x194(%rbp)
mov    -0x194(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x88(%rbp),%eax
mov    %eax,-0x8c(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x90(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x90(%rbp),%eax
mov    %eax,-0x94(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x98(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x98(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x94(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xa8(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12c8 <mm_double_NT_c+0x1c8>
jp     12c8 <mm_double_NT_c+0x1c8>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
je     12c3 <mm_double_NT_c+0x1c3>
mov    -0xe0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xe0(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
cmp    -0xf8(%rbp),%rax
je     129e <mm_double_NT_c+0x19e>
mov    -0xf0(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xf0(%rbp)
jmp    1265 <mm_double_NT_c+0x165>
jmp    12a3 <mm_double_NT_c+0x1a3>
mov    0x20(%rbp),%ecx
mov    -0xe0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
jmp    122a <mm_double_NT_c+0x12a>
jmp    13ba <mm_double_NT_c+0x2ba>
movsd  -0x38(%rbp),%xmm0
movsd  0x1d2b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12ea <mm_double_NT_c+0x1ea>
jp     12ea <mm_double_NT_c+0x1ea>
jmp    13b5 <mm_double_NT_c+0x2b5>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
cmp    -0x108(%rbp),%rax
je     13b0 <mm_double_NT_c+0x2b0>
mov    -0x100(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x100(%rbp),%rax
mov    %rax,-0x110(%rbp)
mov    -0x110(%rbp),%rax
cmp    -0x118(%rbp),%rax
je     138b <mm_double_NT_c+0x28b>
movsd  -0x38(%rbp),%xmm0
mov    -0x110(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x110(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x110(%rbp)
jmp    134c <mm_double_NT_c+0x24c>
jmp    1390 <mm_double_NT_c+0x290>
mov    0x20(%rbp),%ecx
mov    -0x100(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
jmp    1311 <mm_double_NT_c+0x211>
jmp    13b5 <mm_double_NT_c+0x2b5>
jmp    13ba <mm_double_NT_c+0x2ba>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0xa8(%rbp),%rax
je     1fa2 <mm_double_NT_c+0xea2>
mov    -0x40(%rbp),%rax
movslq -0x8c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x120(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x9c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x128(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x128(%rbp),%rax
je     1f6b <mm_double_NT_c+0xe6b>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     191c <mm_double_NT_c+0x81c>
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    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x70(%rbp)
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%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
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%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
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%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
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%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
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
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    -0x70(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x120(%rbp),%rax
jne    14ff <mm_double_NT_c+0x3ff>
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%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
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x88(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1c4a <mm_double_NT_c+0xb4a>
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    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
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    -0x70(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x88(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1e00 <mm_double_NT_c+0xd00>
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    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%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    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
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    -0x70(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x70(%rbp)
mov    -0x88(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1eca <mm_double_NT_c+0xdca>
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    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x148(%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  -0x148(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    %rax,-0x150(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x150(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
mov    -0x150(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
ff
mov    -0x150(%rbp),%rax
movsd  0x10(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x80(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x78(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x78(%rbp)
jmp    141d <mm_double_NT_c+0x31d>
jmp    1f70 <mm_double_NT_c+0xe70>
mov    -0x84(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x7c(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
jmp    13ca <mm_double_NT_c+0x2ca>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0xa8(%rbp),%rax
je     2cf2 <mm_double_NT_c+0x1bf2>
mov    -0x40(%rbp),%rax
movslq -0x8c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x158(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x9c(%rbp),%ecx
imul   0x18(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x9c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x78(%rbp)
mov    -0x98(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2818 <mm_double_NT_c+0x1718>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2395 <mm_double_NT_c+0x1295>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%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    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%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    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%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    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%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    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
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    -0x58(%rbp),%rax
cmp    -0x158(%rbp),%rax
jne    20b7 <mm_double_NT_c+0xfb7>
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%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    -0x88(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     25d4 <mm_double_NT_c+0x14d4>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
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    -0x88(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     270d <mm_double_NT_c+0x160d>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
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    -0x88(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     279f <mm_double_NT_c+0x169f>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    %rax,-0x178(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x178(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
mov    -0x178(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x78(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x78(%rbp)
mov    -0x98(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2cbb <mm_double_NT_c+0x1bbb>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2a26 <mm_double_NT_c+0x1926>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x158(%rbp),%rax
jne    2887 <mm_double_NT_c+0x1787>
movsd  -0x188(%rbp),%xmm0
ff
mulsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x88(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2b76 <mm_double_NT_c+0x1a76>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x88(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2c32 <mm_double_NT_c+0x1b32>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x88(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2c8c <mm_double_NT_c+0x1b8c>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x188(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x78(%rbp),%rax
mov    %rax,-0x190(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x190(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
jmp    2cc0 <mm_double_NT_c+0x1bc0>
mov    -0x84(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x7c(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
jmp    1fb2 <mm_double_NT_c+0xeb2>
add    $0x118,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_NT_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
movapd %xmm0,%xmm9
mov    %r8,0x28(%rsp)
mov    %rcx,0x40(%rsp)
mov    %edx,%r14d
lea    -0x1(%rsi),%r12d
and    $0x3,%r12d
cmp    $0x5,%esi
mov    %rsi,0x20(%rsp)
cmovl  %esi,%r12d
mov    0xe0(%rsp),%ecx
movslq %edx,%rax
mov    %rax,0x8(%rsp)
imul   %ecx,%edi
movslq %edi,%rbx
mov    %r9,0x18(%rsp)
lea    (%r9,%rbx,8),%rax
mov    %rax,0x30(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    11e0 <mm_double_NT_c+0xd0>
jp     11e0 <mm_double_NT_c+0xd0>
test   %edi,%edi
je     1b71 <mm_double_NT_c+0xa61>
mov    %edi,0x4(%rsp)
movslq %ecx,%rbp
mov    0x8(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%rbx
xor    %r15d,%r15d
movapd %xmm9,0x80(%rsp)
jmp    11bc <mm_double_NT_c+0xac>
nopl   0x0(%rax)
add    %rbp,%r15
cmp    %r15,%rbx
je     1344 <mm_double_NT_c+0x234>
test   %r14d,%r14d
je     11b0 <mm_double_NT_c+0xa0>
mov    0x18(%rsp),%rax
lea    (%rax,%r15,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
movapd 0x80(%rsp),%xmm9
jmp    11b0 <mm_double_NT_c+0xa0>
mov    %edi,0x4(%rsp)
ucomisd 0xe14(%rip),%xmm1
jne    11f4 <mm_double_NT_c+0xe4>
jnp    1344 <mm_double_NT_c+0x234>
cmpl   $0x0,0x4(%rsp)
je     1344 <mm_double_NT_c+0x234>
movslq 0xe0(%rsp),%rax
mov    0x8(%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 %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    0x18(%rsp),%rdx
jmp    126e <mm_double_NT_c+0x15e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x30(%rsp),%rdx
je     1344 <mm_double_NT_c+0x234>
test   %r14d,%r14d
je     1260 <mm_double_NT_c+0x150>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     1309 <mm_double_NT_c+0x1f9>
test   %r10,%r10
je     133a <mm_double_NT_c+0x22a>
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  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm0,%xmm4
mulpd  %xmm0,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1290 <mm_double_NT_c+0x180>
test   $0x1,%r11b
je     12fc <mm_double_NT_c+0x1ec>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1260 <mm_double_NT_c+0x150>
lea    (%rdx,%rsi,8),%rdi
mov    0x8(%rsp),%rbx
lea    (%rdx,%rbx,8),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    1320 <mm_double_NT_c+0x210>
jmp    1260 <mm_double_NT_c+0x150>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12de <mm_double_NT_c+0x1ce>
jmp    12fc <mm_double_NT_c+0x1ec>
mov    0x4(%rsp),%eax
test   %eax,%eax
mov    0x18(%rsp),%r9
mov    0x40(%rsp),%rbx
mov    0xe0(%rsp),%ebp
je     1b71 <mm_double_NT_c+0xa61>
mov    0xd8(%rsp),%r8d
lea    (%r8,%r8,2),%edx
mov    0x20(%rsp),%rcx
sub    %r12d,%ecx
mov    0x8(%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,0x8(%rsp)
movslq %ecx,%rax
mov    %rax,0x50(%rsp)
mov    %esi,0x14(%rsp)
movslq %esi,%rax
mov    %rax,0x48(%rsp)
movslq %r8d,%rsi
movslq %edx,%rdi
movslq %ebp,%rax
mov    %rax,0x60(%rsp)
movslq 0xd0(%rsp),%rcx
movapd %xmm9,%xmm8
unpcklpd %xmm9,%xmm8
mov    %rsi,%rax
shl    $0x4,%rax
mov    0x28(%rsp),%rdx
add    %rdx,%rax
add    $0x8,%rax
mov    %rax,0x70(%rsp)
shl    $0x3,%rdi
lea    (%rdx,%rsi,8),%rax
add    $0x8,%rax
mov    %rax,0x68(%rsp)
shl    $0x3,%rcx
mov    %rcx,0x58(%rsp)
mov    %r9,0x38(%rsp)
mov    %rdi,0x78(%rsp)
jmp    1433 <mm_double_NT_c+0x323>
nopw   0x0(%rax,%rax,1)
mov    0x60(%rsp),%rax
mov    0x38(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
add    0x58(%rsp),%rbx
mov    %rcx,0x38(%rsp)
cmp    0x30(%rsp),%rcx
je     177d <mm_double_NT_c+0x66d>
cmpl   $0x0,0x14(%rsp)
je     1410 <mm_double_NT_c+0x300>
mov    0x50(%rsp),%rax
lea    (%rbx,%rax,8),%rdx
mov    0x48(%rsp),%rax
mov    0x38(%rsp),%rbp
lea    0x0(,%rax,8),%rcx
add    %rbp,%rcx
mov    0x28(%rsp),%rax
mov    0x68(%rsp),%r10
mov    0x70(%rsp),%r8
jmp    14a8 <mm_double_NT_c+0x398>
nopl   0x0(%rax)
movupd 0x0(%rbp),%xmm0
mulpd  %xmm8,%xmm2
addpd  %xmm0,%xmm2
movupd %xmm2,0x0(%rbp)
mulsd  %xmm9,%xmm1
addsd  0x10(%rbp),%xmm1
movsd  %xmm1,0x10(%rbp)
add    %rdi,%rax
add    $0x18,%rbp
add    %rdi,%r8
add    %rdi,%r10
cmp    %rcx,%rbp
je     1410 <mm_double_NT_c+0x300>
lea    (%rax,%rsi,8),%r13
lea    0x0(,%rsi,8),%r11
add    %r13,%r11
cmpl   $0x5,0x20(%rsp)
jl     15f0 <mm_double_NT_c+0x4e0>
mov    %rsi,%rdi
mov    %r12d,%r14d
mov    %rcx,%r12
movsd  (%r11),%xmm4
movsd  (%rax),%xmm3
movhpd 0x0(%r13),%xmm3
movsd  (%rbx),%xmm5
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
xor    %esi,%esi
nopl   0x0(%rax,%rax,1)
mulsd  %xmm5,%xmm4
unpcklpd %xmm5,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm2,%xmm5
addsd  %xmm1,%xmm4
movupd 0x8(%rbx,%rsi,1),%xmm0
movsd  0x8(%rax,%rsi,1),%xmm1
movsd  0x10(%rax,%rsi,1),%xmm2
movsd  0x18(%rax,%rsi,1),%xmm7
movsd  0x20(%rax,%rsi,1),%xmm3
movhpd (%r10,%rsi,1),%xmm1
movapd %xmm0,%xmm6
unpcklpd %xmm0,%xmm6
mulpd  %xmm1,%xmm6
addpd  %xmm5,%xmm6
movupd (%r8,%rsi,1),%xmm5
mulpd  %xmm0,%xmm5
addsd  %xmm5,%xmm4
movhpd 0x8(%r10,%rsi,1),%xmm2
unpckhpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm6,%xmm0
unpckhpd %xmm5,%xmm5
addsd  %xmm4,%xmm5
movsd  0x18(%rbx,%rsi,1),%xmm1
movhpd 0x10(%r10,%rsi,1),%xmm7
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm7,%xmm2
addpd  %xmm0,%xmm2
mulsd  0x10(%r8,%rsi,1),%xmm1
addsd  %xmm5,%xmm1
movsd  0x18(%r8,%rsi,1),%xmm4
movhpd 0x18(%r10,%rsi,1),%xmm3
movsd  0x20(%rbx,%rsi,1),%xmm5
lea    (%rbx,%rsi,1),%rcx
add    $0x28,%rcx
add    $0x20,%rsi
cmp    %rdx,%rcx
jne    14f0 <mm_double_NT_c+0x3e0>
mulsd  %xmm5,%xmm4
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm3
addpd  %xmm3,%xmm2
addsd  %xmm4,%xmm1
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    %rdi,%rsi
mov    0x78(%rsp),%rdi
test   $0x4,%r12b
jne    1608 <mm_double_NT_c+0x4f8>
jmp    16c5 <mm_double_NT_c+0x5b5>
nop
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
mov    %rax,%r15
mov    %rbx,%r9
test   $0x4,%r12b
je     16c5 <mm_double_NT_c+0x5b5>
movsd  (%r9),%xmm0
movsd  0x8(%r9),%xmm4
movapd %xmm0,%xmm6
unpcklpd %xmm0,%xmm6
movsd  (%r15),%xmm7
movsd  0x8(%r15),%xmm5
movsd  0x10(%r15),%xmm3
movhpd 0x0(%r13),%xmm7
mulpd  %xmm6,%xmm7
addpd  %xmm2,%xmm7
mulsd  (%r11),%xmm0
movsd  0x18(%r15),%xmm2
addsd  %xmm1,%xmm0
movapd %xmm4,%xmm1
movhpd 0x8(%r13),%xmm5
unpcklpd %xmm4,%xmm1
mulpd  %xmm1,%xmm5
mulsd  0x8(%r11),%xmm4
addpd  %xmm7,%xmm5
addsd  %xmm0,%xmm4
movsd  0x10(%r9),%xmm0
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
movhpd 0x10(%r13),%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm5,%xmm3
mulsd  0x10(%r11),%xmm0
addsd  %xmm4,%xmm0
movsd  0x18(%r9),%xmm1
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
movhpd 0x18(%r13),%xmm2
mulpd  %xmm4,%xmm2
addpd  %xmm3,%xmm2
mulsd  0x18(%r11),%xmm1
addsd  %xmm0,%xmm1
add    $0x20,%r9
add    $0x20,%r15
add    $0x20,%r13
add    $0x20,%r11
test   $0x2,%r12b
jne    16e0 <mm_double_NT_c+0x5d0>
test   $0x1,%r12b
je     1470 <mm_double_NT_c+0x360>
jmp    174f <mm_double_NT_c+0x63f>
nopw   0x0(%rax,%rax,1)
movsd  (%r9),%xmm0
movapd %xmm0,%xmm3
mulsd  (%r11),%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%r9),%xmm1
movsd  (%r15),%xmm4
movhpd 0x0(%r13),%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm4
addpd  %xmm2,%xmm4
movsd  0x8(%r15),%xmm2
movapd %xmm1,%xmm3
unpcklpd %xmm1,%xmm3
movhpd 0x8(%r13),%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm4,%xmm2
mulsd  0x8(%r11),%xmm1
addsd  %xmm0,%xmm1
add    $0x10,%r9
add    $0x10,%r15
add    $0x10,%r13
add    $0x10,%r11
test   $0x1,%r12b
je     1470 <mm_double_NT_c+0x360>
movsd  (%r9),%xmm0
movapd %xmm0,%xmm3
unpcklpd %xmm0,%xmm3
movsd  (%r15),%xmm4
movhpd 0x0(%r13),%xmm4
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm2
mulsd  (%r11),%xmm0
addsd  %xmm0,%xmm1
jmp    1470 <mm_double_NT_c+0x360>
cmpl   $0x0,0x4(%rsp)
mov    0x18(%rsp),%rdx
mov    0x40(%rsp),%rdi
je     1b71 <mm_double_NT_c+0xa61>
mov    0x14(%rsp),%eax
imul   %esi,%eax
cltq
mov    0x28(%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    17fb <mm_double_NT_c+0x6eb>
nopl   0x0(%rax)
mulsd  %xmm9,%xmm1
addsd  (%r9),%xmm1
movsd  %xmm1,(%r9)
mov    0x60(%rsp),%rcx
lea    (%r11,%rcx,8),%r11
add    0x58(%rsp),%rdi
cmp    0x30(%rsp),%r11
mov    %r11,%rdx
je     1b71 <mm_double_NT_c+0xa61>
mov    0x50(%rsp),%rcx
lea    (%rdi,%rcx,8),%rcx
mov    0x48(%rsp),%rsi
lea    (%rdx,%rsi,8),%r9
testb  $0x2,0x8(%rsp)
mov    %rdx,%r11
jne    1830 <mm_double_NT_c+0x720>
mov    %r13,%rdx
testb  $0x1,0x8(%rsp)
je     17df <mm_double_NT_c+0x6cf>
jmp    189f <mm_double_NT_c+0x78f>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xorpd  %xmm1,%xmm1
mov    %r8,%rsi
mov    %r13,%rdx
mov    %rdi,%rbx
cmpl   $0x5,0x20(%rsp)
jge    1930 <mm_double_NT_c+0x820>
test   $0x4,%r12b
jne    19fc <mm_double_NT_c+0x8ec>
test   $0x2,%r12b
jne    1a7b <mm_double_NT_c+0x96b>
test   $0x1,%r12b
je     187a <mm_double_NT_c+0x76a>
movsd  (%rbx),%xmm0
unpcklpd %xmm0,%xmm0
movsd  (%rdx),%xmm2
movhpd (%rsi),%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm2,%xmm1
movupd (%r9),%xmm0
mulpd  %xmm8,%xmm1
addpd  %xmm0,%xmm1
movupd %xmm1,(%r9)
add    $0x10,%r9
mov    %r10,%rdx
testb  $0x1,0x8(%rsp)
je     17df <mm_double_NT_c+0x6cf>
xorpd  %xmm1,%xmm1
cmpl   $0x5,0x20(%rsp)
jl     1ad0 <mm_double_NT_c+0x9c0>
movsd  (%rdx),%xmm2
movsd  (%rdi),%xmm3
xorpd  %xmm1,%xmm1
mov    $0x8,%esi
nop
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movupd (%rdx,%rsi,1),%xmm0
movupd (%rdi,%rsi,1),%xmm3
mulpd  %xmm0,%xmm3
addsd  %xmm3,%xmm2
unpckhpd %xmm3,%xmm3
addsd  %xmm2,%xmm3
movsd  0x10(%rdx,%rsi,1),%xmm1
mulsd  0x10(%rdi,%rsi,1),%xmm1
addsd  %xmm3,%xmm1
movsd  0x18(%rdx,%rsi,1),%xmm2
movsd  0x18(%rdi,%rsi,1),%xmm3
lea    (%rdi,%rsi,1),%rbx
add    $0x20,%rbx
add    $0x20,%rsi
cmp    %rcx,%rbx
jne    18c0 <mm_double_NT_c+0x7b0>
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
add    %rsi,%rdx
test   $0x4,%r12b
jne    1ad9 <mm_double_NT_c+0x9c9>
jmp    1b17 <mm_double_NT_c+0xa07>
nopl   0x0(%rax)
movsd  (%rdi),%xmm3
movsd  0x0(%r13),%xmm2
movhpd (%r8),%xmm2
xorpd  %xmm1,%xmm1
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
nop
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
movsd  0x0(%rbp,%rdx,1),%xmm0
movsd  0x8(%rbp,%rdx,1),%xmm4
movsd  0x10(%rbp,%rdx,1),%xmm5
movsd  0x18(%rbp,%rdx,1),%xmm2
movhpd (%rax,%rdx,1),%xmm0
movsd  0x8(%rdi,%rdx,1),%xmm6
movsd  0x10(%rdi,%rdx,1),%xmm7
movsd  0x18(%rdi,%rdx,1),%xmm1
unpcklpd %xmm6,%xmm6
mulpd  %xmm0,%xmm6
addpd  %xmm3,%xmm6
movhpd 0x8(%rax,%rdx,1),%xmm4
unpcklpd %xmm7,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm6,%xmm7
movhpd 0x10(%rax,%rdx,1),%xmm5
unpcklpd %xmm1,%xmm1
mulpd  %xmm5,%xmm1
addpd  %xmm7,%xmm1
movhpd 0x18(%rax,%rdx,1),%xmm2
movsd  0x20(%rdi,%rdx,1),%xmm3
lea    (%rdi,%rdx,1),%rsi
add    $0x28,%rsi
add    $0x20,%rdx
cmp    %rcx,%rsi
jne    1950 <mm_double_NT_c+0x840>
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm2
addpd  %xmm2,%xmm1
lea    (%rax,%rdx,1),%rsi
add    %rbp,%rdx
mov    %rcx,%rbx
test   $0x4,%r12b
je     1852 <mm_double_NT_c+0x742>
movsd  (%rbx),%xmm0
movsd  0x8(%rbx),%xmm3
movsd  0x10(%rbx),%xmm4
movsd  0x18(%rbx),%xmm2
unpcklpd %xmm0,%xmm0
movsd  (%rdx),%xmm5
movsd  0x8(%rdx),%xmm6
movsd  0x10(%rdx),%xmm7
movhpd (%rsi),%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm1,%xmm5
movsd  0x18(%rdx),%xmm1
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 %xmm2,%xmm2
movhpd 0x18(%rsi),%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm7,%xmm1
add    $0x20,%rbx
add    $0x20,%rdx
add    $0x20,%rsi
test   $0x2,%r12b
je     185c <mm_double_NT_c+0x74c>
movsd  (%rbx),%xmm0
movsd  0x8(%rbx),%xmm2
movsd  (%rdx),%xmm3
movhpd (%rsi),%xmm3
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm3
addpd  %xmm1,%xmm3
movsd  0x8(%rdx),%xmm1
unpcklpd %xmm2,%xmm2
movhpd 0x8(%rsi),%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
add    $0x10,%rbx
add    $0x10,%rdx
add    $0x10,%rsi
test   $0x1,%r12b
jne    1862 <mm_double_NT_c+0x752>
jmp    187a <mm_double_NT_c+0x76a>
nopl   0x0(%rax)
mov    %rdi,%rcx
test   $0x4,%r12b
je     1b17 <mm_double_NT_c+0xa07>
movsd  (%rcx),%xmm0
movsd  0x8(%rcx),%xmm2
mulsd  (%rdx),%xmm0
mulsd  0x8(%rdx),%xmm2
addsd  %xmm1,%xmm0
movsd  0x10(%rcx),%xmm3
mulsd  0x10(%rdx),%xmm3
addsd  %xmm0,%xmm2
movsd  0x18(%rcx),%xmm1
mulsd  0x18(%rdx),%xmm1
addsd  %xmm2,%xmm3
addsd  %xmm3,%xmm1
add    $0x20,%rcx
add    $0x20,%rdx
test   $0x2,%r12b
jne    1b30 <mm_double_NT_c+0xa20>
test   $0x1,%r12b
je     17d0 <mm_double_NT_c+0x6c0>
jmp    1b60 <mm_double_NT_c+0xa50>
nopl   0x0(%rax)
movsd  (%rcx),%xmm0
movsd  0x8(%rcx),%xmm2
mulsd  (%rdx),%xmm0
mulsd  0x8(%rdx),%xmm2
addsd  %xmm1,%xmm0
addsd  %xmm0,%xmm2
add    $0x10,%rcx
add    $0x10,%rdx
movapd %xmm2,%xmm1
test   $0x1,%r12b
je     17d0 <mm_double_NT_c+0x6c0>
movsd  (%rcx),%xmm0
mulsd  (%rdx),%xmm0
addsd  %xmm0,%xmm1
jmp    17d0 <mm_double_NT_c+0x6c0>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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