void mm_double_TN_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;
  const double *bp;
  double *cp;
  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) * Astride;
  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 += 1) {
    const double *const ap_endp = a + k_norm;
    double *const cp_endp = c + n_norm;
    for (b = B, cp = c; cp != cp_endp; b += 3, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      c0_1 = 0.0;
      c0_2 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp[0];
          _b1 = bp[1];
          _b2 = bp[2];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t0_2 = _a0 * _b2;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c0_2 += t0_2;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        c0_2 += _a0 * _b2;
        ap += Astride;
      }
      _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 += 1) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      c0_1 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp[0];
          _b1 = bp[1];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != ap_endp);
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        _b1 = bp[1];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        c0_1 += _a0 * _b1;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      b += 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      c0_0 = 0.0;
      if (K >= 5) {
        _b0 = bp[0];
        _a0 = ap[0];
        bp += Bstride;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp[0];
          _a0 = ap[0];
          ap += Astride;
          bp += Bstride;
        } while (ap != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp[0];
        bp += Bstride;
        _a0 = ap[0];
        c0_0 += _a0 * _b0;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_TN_c>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%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    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x6c(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     115a <mm_double_TN_c+0x5a>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x17c(%rbp)
jmp    1163 <mm_double_TN_c+0x63>
mov    -0x8(%rbp),%eax
mov    %eax,-0x17c(%rbp)
mov    -0x17c(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x70(%rbp),%eax
imul   0x10(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x78(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x78(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x80(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x80(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x7c(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x90(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    129e <mm_double_TN_c+0x19e>
jp     129e <mm_double_TN_c+0x19e>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd0(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xc8(%rbp)
mov    -0xc8(%rbp),%rax
cmp    -0xd0(%rbp),%rax
je     1299 <mm_double_TN_c+0x199>
mov    -0xc8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0xc8(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
cmp    -0xe0(%rbp),%rax
je     1274 <mm_double_TN_c+0x174>
mov    -0xd8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xd8(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xd8(%rbp)
jmp    123b <mm_double_TN_c+0x13b>
jmp    1279 <mm_double_TN_c+0x179>
mov    0x20(%rbp),%ecx
mov    -0xc8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xc8(%rbp)
jmp    1200 <mm_double_TN_c+0x100>
jmp    1390 <mm_double_TN_c+0x290>
movsd  -0x38(%rbp),%xmm0
movsd  0x2d55(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12c0 <mm_double_TN_c+0x1c0>
jp     12c0 <mm_double_TN_c+0x1c0>
jmp    138b <mm_double_TN_c+0x28b>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
cmp    -0xf0(%rbp),%rax
je     1386 <mm_double_TN_c+0x286>
mov    -0xe8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0xe8(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
cmp    -0x100(%rbp),%rax
je     1361 <mm_double_TN_c+0x261>
movsd  -0x38(%rbp),%xmm0
mov    -0xf8(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0xf8(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xf8(%rbp)
jmp    1322 <mm_double_TN_c+0x222>
jmp    1366 <mm_double_TN_c+0x266>
mov    0x20(%rbp),%ecx
mov    -0xe8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
jmp    12e7 <mm_double_TN_c+0x1e7>
jmp    138b <mm_double_TN_c+0x28b>
jmp    1390 <mm_double_TN_c+0x290>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x90(%rbp),%rax
je     2065 <mm_double_TN_c+0xf65>
mov    -0x40(%rbp),%rax
movslq -0x74(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x84(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x110(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmp    -0x110(%rbp),%rax
je     203a <mm_double_TN_c+0xf3a>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     1939 <mm_double_TN_c+0x839>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x108(%rbp),%rax
jne    14a8 <mm_double_TN_c+0x3a8>
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x70(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1cd8 <mm_double_TN_c+0xbd8>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1eaf <mm_double_TN_c+0xdaf>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1fa2 <mm_double_TN_c+0xea2>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x138(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
mov    -0x138(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
mov    -0x138(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
mov    -0x138(%rbp),%rax
movsd  0x10(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x48(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x48(%rbp)
mov    -0x68(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x68(%rbp)
jmp    13f0 <mm_double_TN_c+0x2f0>
jmp    203f <mm_double_TN_c+0xf3f>
mov    -0x6c(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x40(%rbp)
jmp    13a0 <mm_double_TN_c+0x2a0>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x90(%rbp),%rax
je     3052 <mm_double_TN_c+0x1f52>
mov    -0x40(%rbp),%rax
movslq -0x74(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x140(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x84(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x84(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x80(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2a06 <mm_double_TN_c+0x1906>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     24bf <mm_double_TN_c+0x13bf>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x140(%rbp),%rax
jne    2162 <mm_double_TN_c+0x1062>
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x70(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     277a <mm_double_TN_c+0x167a>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     28df <mm_double_TN_c+0x17df>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2999 <mm_double_TN_c+0x1899>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x160(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
mov    -0x160(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
mov    -0x160(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
mov    -0x48(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x48(%rbp)
mov    -0x68(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x68(%rbp)
mov    -0x80(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     3027 <mm_double_TN_c+0x1f27>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2cad <mm_double_TN_c+0x1bad>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x140(%rbp),%rax
jne    2a84 <mm_double_TN_c+0x1984>
movsd  -0x170(%rbp),%xmm0
ff
mulsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x70(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2e84 <mm_double_TN_c+0x1d84>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2f77 <mm_double_TN_c+0x1e77>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2ff8 <mm_double_TN_c+0x1ef8>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x60(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
mov    %rax,-0x178(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
mov    -0x178(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
jmp    302c <mm_double_TN_c+0x1f2c>
mov    -0x6c(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x40(%rbp)
jmp    2075 <mm_double_TN_c+0xf75>
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_TN_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %r8,0x20(%rsp)
mov    %edx,%r14d
lea    -0x1(%rsi),%eax
and    $0x3,%eax
cmp    $0x5,%esi
mov    %rsi,0x30(%rsp)
cmovl  %esi,%eax
mov    %eax,0x4(%rsp)
mov    0xe0(%rsp),%edx
movslq %r14d,%rax
mov    %rax,0x18(%rsp)
imul   %edx,%edi
movslq %edi,%r12
lea    (%r9,%r12,8),%rax
mov    %rax,0x48(%rsp)
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
jne    11da <mm_double_TN_c+0xca>
jp     11da <mm_double_TN_c+0xca>
test   %edi,%edi
je     1ba4 <mm_double_TN_c+0xa94>
mov    %edi,0x8(%rsp)
mov    %rcx,0x38(%rsp)
mov    %r9,%r15
movslq %edx,%rbp
mov    0x18(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%r12
xor    %ebx,%ebx
movapd %xmm0,0x80(%rsp)
jmp    11bc <mm_double_TN_c+0xac>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    %rbp,%rbx
cmp    %rbx,%r12
je     1344 <mm_double_TN_c+0x234>
test   %r14d,%r14d
je     11b0 <mm_double_TN_c+0xa0>
lea    (%r15,%rbx,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
movapd 0x80(%rsp),%xmm0
jmp    11b0 <mm_double_TN_c+0xa0>
mov    %edi,0x8(%rsp)
mov    %rcx,0x38(%rsp)
mov    %r9,%r15
ucomisd 0xe12(%rip),%xmm1
jne    11f6 <mm_double_TN_c+0xe6>
jnp    1344 <mm_double_TN_c+0x234>
cmpl   $0x0,0x8(%rsp)
je     1344 <mm_double_TN_c+0x234>
movslq 0xe0(%rsp),%rax
mov    0x18(%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,%xmm6
unpcklpd %xmm1,%xmm6
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    %r15,%rdx
jmp    126e <mm_double_TN_c+0x15e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x48(%rsp),%rdx
je     1344 <mm_double_TN_c+0x234>
test   %r14d,%r14d
je     1260 <mm_double_TN_c+0x150>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     1309 <mm_double_TN_c+0x1f9>
test   %r10,%r10
je     133a <mm_double_TN_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  %xmm6,%xmm2
mulpd  %xmm6,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm6,%xmm4
mulpd  %xmm6,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1290 <mm_double_TN_c+0x180>
test   $0x1,%r11b
je     12fc <mm_double_TN_c+0x1ec>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm6,%xmm2
mulpd  %xmm6,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1260 <mm_double_TN_c+0x150>
lea    (%rdx,%rsi,8),%rdi
mov    0x18(%rsp),%rbx
lea    (%rdx,%rbx,8),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    1320 <mm_double_TN_c+0x210>
jmp    1260 <mm_double_TN_c+0x150>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12de <mm_double_TN_c+0x1ce>
jmp    12fc <mm_double_TN_c+0x1ec>
mov    0x8(%rsp),%eax
test   %eax,%eax
mov    0x38(%rsp),%r9
mov    0x4(%rsp),%ebp
mov    0xe0(%rsp),%ebx
je     1ba4 <mm_double_TN_c+0xa94>
mov    0xd0(%rsp),%eax
mov    0x30(%rsp),%rcx
sub    %ebp,%ecx
imul   %eax,%ecx
mov    0x18(%rsp),%rdi
imul   $0x55555556,%rdi,%rdx
mov    %rdx,%rsi
shr    $0x3f,%rsi
shr    $0x20,%rdx
add    %esi,%edx
lea    (%rdx,%rdx,2),%esi
mov    %edi,%edx
sub    %esi,%edx
mov    %edx,0xc(%rsp)
movslq %ecx,%rcx
mov    %rcx,0x60(%rsp)
mov    %esi,0x5c(%rsp)
movslq %esi,%rcx
mov    %rcx,0x40(%rsp)
movslq 0xd8(%rsp),%r12
movslq %eax,%r14
movslq %ebx,%rax
mov    %rax,0x68(%rsp)
movapd %xmm0,%xmm6
unpcklpd %xmm0,%xmm6
mov    0x20(%rsp),%rax
lea    (%rax,%r12,8),%rax
mov    %rax,0x78(%rsp)
mov    %r12,%rax
shl    $0x5,%rax
mov    %rax,0x50(%rsp)
lea    (%r9,%r14,8),%rax
mov    %rax,0x10(%rsp)
lea    0x0(,%r12,8),%rdx
lea    0x0(,%r14,8),%rax
mov    %r15,0x70(%rsp)
mov    %r15,0x28(%rsp)
jmp    1438 <mm_double_TN_c+0x328>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x68(%rsp),%rcx
mov    0x28(%rsp),%rsi
lea    (%rsi,%rcx,8),%rsi
add    $0x8,%r9
addq   $0x8,0x10(%rsp)
mov    %rsi,0x28(%rsp)
cmp    0x48(%rsp),%rsi
je     174c <mm_double_TN_c+0x63c>
cmpl   $0x0,0x5c(%rsp)
je     1410 <mm_double_TN_c+0x300>
mov    0x60(%rsp),%rcx
lea    (%r9,%rcx,8),%rbx
mov    0x40(%rsp),%rcx
mov    0x28(%rsp),%r15
lea    (%r15,%rcx,8),%r13
mov    0x78(%rsp),%r8
mov    0x20(%rsp),%r11
jmp    14a7 <mm_double_TN_c+0x397>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movupd (%r15),%xmm3
mulpd  %xmm6,%xmm2
addpd  %xmm3,%xmm2
movupd %xmm2,(%r15)
mulsd  %xmm0,%xmm1
addsd  0x10(%r15),%xmm1
movsd  %xmm1,0x10(%r15)
add    $0x18,%r11
add    $0x18,%r15
add    $0x18,%r8
cmp    %r13,%r15
je     1410 <mm_double_TN_c+0x300>
cmpl   $0x5,0x30(%rsp)
jl     15d0 <mm_double_TN_c+0x4c0>
mov    %r13,%rsi
movupd (%r11),%xmm5
movsd  0x10(%r11),%xmm3
movsd  (%r9),%xmm4
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
mov    0x10(%rsp),%r13
mov    %r8,%rcx
cs nopw 0x0(%rax,%rax,1)
nop
mov    %rcx,%r10
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm5,%xmm4
addpd  %xmm2,%xmm4
addsd  %xmm1,%xmm3
movupd (%rcx),%xmm1
movsd  0x0(%r13),%xmm2
movapd %xmm2,%xmm5
unpcklpd %xmm2,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm4,%xmm5
mulsd  0x10(%rcx),%xmm2
addsd  %xmm3,%xmm2
add    %rdx,%rcx
movupd (%r10,%rdx,1),%xmm1
movsd  0x0(%r13,%rax,1),%xmm3
add    %rax,%r13
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm1,%xmm4
mulsd  0x10(%r10,%rdx,1),%xmm3
addpd  %xmm5,%xmm4
addsd  %xmm2,%xmm3
lea    (%rcx,%rdx,1),%rdi
movupd (%rdx,%rcx,1),%xmm5
movsd  (%rax,%r13,1),%xmm1
add    %rax,%r13
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm5,%xmm2
addpd  %xmm4,%xmm2
mulsd  0x10(%rdx,%rcx,1),%xmm1
addsd  %xmm3,%xmm1
lea    (%rdi,%rdx,1),%rcx
movupd (%rdx,%rdi,1),%xmm5
movsd  0x10(%rdx,%rdi,1),%xmm3
movsd  (%rax,%r13,1),%xmm4
add    %rax,%r13
add    %rax,%r13
add    %rdx,%rcx
cmp    %rbx,%r13
jne    14e0 <mm_double_TN_c+0x3d0>
add    0x50(%rsp),%r10
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm5
addpd  %xmm5,%xmm2
addsd  %xmm3,%xmm1
mov    %rbx,%rcx
mov    %rsi,%r13
test   $0x4,%bpl
jne    15e8 <mm_double_TN_c+0x4d8>
jmp    16a6 <mm_double_TN_c+0x596>
cs nopw 0x0(%rax,%rax,1)
nop
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
mov    %r11,%r10
mov    %r9,%rcx
test   $0x4,%bpl
je     16a6 <mm_double_TN_c+0x596>
movupd (%r10),%xmm3
lea    (%r10,%r12,8),%rbp
movsd  (%rcx),%xmm4
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm2,%xmm5
mulsd  0x10(%r10),%xmm4
addsd  %xmm1,%xmm4
lea    (%rcx,%r14,8),%rsi
movupd (%r10,%r12,8),%xmm1
lea    0x0(%rbp,%r12,8),%rdi
movsd  (%rcx,%r14,8),%xmm2
movapd %xmm2,%xmm3
unpcklpd %xmm2,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm5,%xmm3
mulsd  0x10(%r10,%r12,8),%xmm2
addsd  %xmm4,%xmm2
lea    (%rsi,%r14,8),%rcx
movupd 0x0(%rbp,%r12,8),%xmm1
lea    (%rdi,%r12,8),%r10
movsd  (%rsi,%r14,8),%xmm4
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm3,%xmm5
mulsd  0x10(%rbp,%r12,8),%xmm4
mov    0x4(%rsp),%ebp
addsd  %xmm2,%xmm4
lea    (%rcx,%r14,8),%rsi
movupd (%rdi,%r12,8),%xmm3
lea    (%r10,%r12,8),%r10
movsd  (%rcx,%r14,8),%xmm1
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm5,%xmm2
mulsd  0x10(%rdi,%r12,8),%xmm1
addsd  %xmm4,%xmm1
lea    (%rsi,%r14,8),%rcx
test   $0x2,%bpl
jne    16c0 <mm_double_TN_c+0x5b0>
test   $0x1,%bpl
je     1470 <mm_double_TN_c+0x360>
jmp    1724 <mm_double_TN_c+0x614>
nopl   0x0(%rax,%rax,1)
movupd (%r10),%xmm3
lea    (%r10,%r12,8),%rsi
movsd  (%rcx),%xmm4
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm2,%xmm5
mulsd  0x10(%r10),%xmm4
addsd  %xmm1,%xmm4
lea    (%rcx,%r14,8),%rdi
movupd (%r10,%r12,8),%xmm3
movsd  (%rcx,%r14,8),%xmm1
movapd %xmm1,%xmm2
mulsd  0x10(%r10,%r12,8),%xmm1
lea    (%rsi,%r12,8),%r10
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm5,%xmm2
addsd  %xmm4,%xmm1
lea    (%rdi,%r14,8),%rcx
test   $0x1,%bpl
je     1470 <mm_double_TN_c+0x360>
movupd (%r10),%xmm3
movsd  (%rcx),%xmm4
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm5,%xmm2
mulsd  0x10(%r10),%xmm4
addsd  %xmm4,%xmm1
jmp    1470 <mm_double_TN_c+0x360>
cmpl   $0x0,0x8(%rsp)
mov    0x70(%rsp),%r11
mov    0x38(%rsp),%rbx
je     1ba4 <mm_double_TN_c+0xa94>
mov    0x20(%rsp),%rsi
mov    0x40(%rsp),%rcx
lea    (%rsi,%rcx,8),%rdi
mov    %rdi,0x10(%rsp)
lea    (%rsi,%rcx,8),%rcx
add    $0x10,%rcx
mov    %rcx,0x28(%rsp)
mov    0x18(%rsp),%rcx
lea    (%rdx,%rcx,8),%r13
movslq 0xc(%rsp),%rcx
shl    $0x3,%rcx
sub    %rcx,%rsi
mov    %rsi,0x20(%rsp)
lea    (%rbx,%r14,8),%r8
jmp    17de <mm_double_TN_c+0x6ce>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mulsd  %xmm0,%xmm1
addsd  (%r9),%xmm1
movsd  %xmm1,(%r9)
mov    0x68(%rsp),%rcx
lea    (%r11,%rcx,8),%r11
add    $0x8,%rbx
add    $0x8,%r8
cmp    0x48(%rsp),%r11
mov    0x4(%rsp),%ebp
je     1ba4 <mm_double_TN_c+0xa94>
mov    0x60(%rsp),%rcx
lea    (%rbx,%rcx,8),%r15
mov    0x40(%rsp),%rcx
lea    (%r11,%rcx,8),%r9
testb  $0x2,0xc(%rsp)
jne    1810 <mm_double_TN_c+0x700>
mov    0x10(%rsp),%rbp
testb  $0x1,0xc(%rsp)
je     17be <mm_double_TN_c+0x6ae>
jmp    187e <mm_double_TN_c+0x76e>
cs nopw 0x0(%rax,%rax,1)
nop
xorpd  %xmm1,%xmm1
mov    0x10(%rsp),%rcx
mov    %rbx,%r10
cmpl   $0x5,0x30(%rsp)
jge    1930 <mm_double_TN_c+0x820>
test   $0x4,%bpl
jne    19e2 <mm_double_TN_c+0x8d2>
test   $0x2,%bpl
jne    1a6e <mm_double_TN_c+0x95e>
test   $0x1,%bpl
je     1855 <mm_double_TN_c+0x745>
movupd (%rcx),%xmm2
movsd  (%rbx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm3,%xmm1
mov    %r10,%rbx
movupd (%r9),%xmm2
mulpd  %xmm6,%xmm1
addpd  %xmm2,%xmm1
movupd %xmm1,(%r9)
add    $0x10,%r9
mov    0x28(%rsp),%rbp
testb  $0x1,0xc(%rsp)
je     17be <mm_double_TN_c+0x6ae>
xorpd  %xmm1,%xmm1
cmpl   $0x5,0x30(%rsp)
jl     1ac0 <mm_double_TN_c+0x9b0>
movsd  0x0(%rbp),%xmm2
mov    %rbx,%rsi
movsd  (%rbx),%xmm3
lea    0x0(,%r12,8),%rcx
add    %rbp,%rcx
xorpd  %xmm1,%xmm1
mov    %r8,%rbx
nopl   0x0(%rax,%rax,1)
mov    %rcx,%rbp
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movsd  (%rcx),%xmm1
mulsd  (%rbx),%xmm1
addsd  %xmm2,%xmm1
movsd  (%rcx,%rdx,1),%xmm2
mulsd  (%rbx,%rax,1),%xmm2
add    %rdx,%rcx
add    %rax,%rbx
addsd  %xmm1,%xmm2
movsd  (%rdx,%rcx,1),%xmm1
add    %rdx,%rcx
mulsd  (%rax,%rbx,1),%xmm1
add    %rax,%rbx
addsd  %xmm2,%xmm1
movsd  (%rdx,%rcx,1),%xmm2
add    %rdx,%rcx
movsd  (%rax,%rbx,1),%xmm3
add    %rax,%rbx
add    %rax,%rbx
add    %rdx,%rcx
cmp    %r15,%rbx
jne    18b0 <mm_double_TN_c+0x7a0>
add    0x50(%rsp),%rbp
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
mov    %rsi,%rbx
testb  $0x4,0x4(%rsp)
jne    1aca <mm_double_TN_c+0x9ba>
jmp    1b37 <mm_double_TN_c+0xa27>
nopw   0x0(%rax,%rax,1)
mov    0x10(%rsp),%rcx
movupd (%rcx),%xmm3
movsd  (%r10),%xmm2
xorpd  %xmm1,%xmm1
mov    %r8,%rbx
mov    0x20(%rsp),%rcx
mov    0x50(%rsp),%rsi
nop
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm1,%xmm2
lea    (%rcx,%r13,1),%rdi
movupd (%rcx,%r13,1),%xmm1
movsd  (%rbx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movupd (%rdx,%rdi,1),%xmm1
add    %rdx,%rdi
movsd  (%rbx,%rax,1),%xmm2
add    %rax,%rbx
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm3,%xmm2
movupd (%rdx,%rdi,1),%xmm3
add    %rdx,%rdi
movsd  (%rax,%rbx,1),%xmm1
add    %rax,%rbx
unpcklpd %xmm1,%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm2,%xmm1
movupd (%rdx,%rdi,1),%xmm3
movsd  (%rax,%rbx,1),%xmm2
add    %rax,%rbx
add    %rsi,%rcx
add    %rax,%rbx
cmp    %r15,%rbx
jne    1950 <mm_double_TN_c+0x840>
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm3
addpd  %xmm3,%xmm1
add    %r13,%rcx
mov    %r15,%rbx
test   $0x4,%bpl
je     1831 <mm_double_TN_c+0x721>
movupd (%rcx),%xmm2
lea    (%rcx,%r12,8),%rsi
movsd  (%rbx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
lea    (%rbx,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm1
lea    (%rsi,%r12,8),%rcx
movsd  (%rbx,%r14,8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm3,%xmm2
lea    (%rdi,%r14,8),%rbp
movupd (%rsi,%r12,8),%xmm1
lea    (%rcx,%r12,8),%rsi
movsd  (%rdi,%r14,8),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
lea    0x0(%rbp,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm2
lea    (%rsi,%r12,8),%rcx
movsd  0x0(%rbp,%r14,8),%xmm1
mov    0x4(%rsp),%ebp
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
lea    (%rdi,%r14,8),%rbx
test   $0x2,%bpl
je     183b <mm_double_TN_c+0x72b>
movupd (%rcx),%xmm2
lea    (%rcx,%r12,8),%rsi
movsd  (%rbx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
lea    (%rbx,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm2
lea    (%rsi,%r12,8),%rcx
movsd  (%rbx,%r14,8),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
lea    (%rdi,%r14,8),%rbx
test   $0x1,%bpl
jne    1841 <mm_double_TN_c+0x731>
jmp    1855 <mm_double_TN_c+0x745>
nopl   0x0(%rax)
mov    %rbx,%r15
testb  $0x4,0x4(%rsp)
je     1b37 <mm_double_TN_c+0xa27>
lea    0x0(,%r12,8),%rcx
add    %rbp,%rcx
movsd  (%r15),%xmm2
mulsd  0x0(%rbp),%xmm2
addsd  %xmm1,%xmm2
lea    (%r15,%r14,8),%rsi
lea    (%rcx,%r12,8),%rdi
movsd  (%r15,%r14,8),%xmm1
mulsd  0x0(%rbp,%r12,8),%xmm1
addsd  %xmm2,%xmm1
mov    %rbx,%r10
lea    (%rsi,%r14,8),%rbx
lea    (%rdi,%r12,8),%rbp
movsd  (%rsi,%r14,8),%xmm2
mulsd  (%rcx,%r12,8),%xmm2
addsd  %xmm1,%xmm2
lea    (%rbx,%r14,8),%rcx
lea    0x0(%rbp,%r12,8),%rbp
movsd  (%rbx,%r14,8),%xmm1
mov    %r10,%rbx
mulsd  (%rdi,%r12,8),%xmm1
addsd  %xmm2,%xmm1
lea    (%rcx,%r14,8),%r15
testb  $0x2,0x4(%rsp)
jne    1b50 <mm_double_TN_c+0xa40>
testb  $0x1,0x4(%rsp)
je     17b0 <mm_double_TN_c+0x6a0>
jmp    1b91 <mm_double_TN_c+0xa81>
nopl   0x0(%rax,%rax,1)
lea    0x0(,%r12,8),%rcx
add    %rbp,%rcx
movsd  (%r15),%xmm2
mulsd  0x0(%rbp),%xmm2
addsd  %xmm1,%xmm2
movsd  (%r15,%r14,8),%xmm1
mulsd  0x0(%rbp,%r12,8),%xmm1
lea    (%r15,%r14,8),%rsi
lea    (%rcx,%r12,8),%rbp
addsd  %xmm2,%xmm1
lea    (%rsi,%r14,8),%r15
testb  $0x1,0x4(%rsp)
je     17b0 <mm_double_TN_c+0x6a0>
movsd  (%r15),%xmm2
mulsd  0x0(%rbp),%xmm2
addsd  %xmm2,%xmm1
jmp    17b0 <mm_double_TN_c+0x6a0>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @mm_double_TN_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 = icmp sgt i32 %1, 4
%13 = add i32 %1, 3
%14 = and i32 %13, 3
%15 = select i1 %12, i32 %14, i32 %1
%16 = sub nsw i32 %1, %15
%17 = mul nsw i32 %16, %6
%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 %590, 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 %590, label %124
124: ; preds = %122
%125 = sext i32 %17 to i64
%126 = sext i32 %19 to i64
%127 = sext i32 %7 to i64
%128 = sext i32 %6 to i64
%129 = and i32 %15, 4
%130 = icmp eq i32 %129, 0
%131 = and i32 %15, 2
%132 = icmp eq i32 %131, 0
%133 = and i32 %15, 1
%134 = icmp eq i32 %133, 0
%135 = sext i32 %8 to i64
%136 = icmp eq i32 %19, 0
%137 = insertelement <2 x double> poison, double %9, i64 0
%138 = shufflevector <2 x double> %137, <2 x double> poison, <2 x i32> zeroinitializer
br label %162
139: ; preds = %353
br i1 %123, label %590, label %140
140: ; preds = %139
%141 = sext i32 %17 to i64
%142 = sext i32 %19 to i64
%143 = getelementptr inbounds double, double* %4, i64 %142
%144 = and i32 %18, 2
%145 = icmp eq i32 %144, 0
%146 = sext i32 %7 to i64
%147 = getelementptr inbounds double, double* %143, i64 %146
%148 = sext i32 %6 to i64
%149 = and i32 %15, 4
%150 = icmp eq i32 %149, 0
%151 = and i32 %15, 2
%152 = icmp eq i32 %151, 0
%153 = and i32 %15, 1
%154 = icmp eq i32 %153, 0
%155 = getelementptr inbounds double, double* %143, i64 2
%156 = and i32 %18, 1
%157 = icmp eq i32 %156, 0
%158 = sext i32 %8 to i64
%159 = insertelement <2 x double> poison, double %9, i64 0
%160 = shufflevector <2 x double> %159, <2 x double> poison, <2 x i32> zeroinitializer
%161 = bitcast double* %143 to <2 x double>*
br label %357
162: ; preds = %124, %353
%163 = phi double* [ %3, %124 ], [ %355, %353 ]
%164 = phi double* [ %5, %124 ], [ %354, %353 ]
%165 = getelementptr inbounds double, double* %163, i64 %125
%166 = getelementptr inbounds double, double* %164, i64 %126
br i1 %136, label %353, label %167
167: ; preds = %162
%168 = getelementptr inbounds double, double* %163, i64 %128
br label %169
169: ; preds = %167, %340
%170 = phi double* [ %4, %167 ], [ %350, %340 ]
%171 = phi double* [ %164, %167 ], [ %351, %340 ]
br i1 %12, label %172, label %247
172: ; preds = %169
%173 = bitcast double* %170 to <2 x double>*
%174 = load <2 x double>, <2 x double>* %173
%175 = getelementptr inbounds double, double* %170, i64 2
%176 = load double, double* %175
%177 = load double, double* %163
%178 = getelementptr inbounds double, double* %170, i64 %127
br label %179
179: ; preds = %179, %172
%180 = phi double [ 0.000000e+00, %172 ], [ %231, %179 ]
%181 = phi double* [ %178, %172 ], [ %238, %179 ]
%182 = phi double [ %176, %172 ], [ %235, %179 ]
%183 = phi double [ %177, %172 ], [ %236, %179 ]
%184 = phi double* [ %168, %172 ], [ %237, %179 ]
%185 = phi <2 x double> [ %174, %172 ], [ %233, %179 ]
%186 = phi <2 x double> [ zeroinitializer, %172 ], [ %230, %179 ]
%187 = insertelement <2 x double> poison, double %183, i64 0
%188 = shufflevector <2 x double> %187, <2 x double> poison, <2 x i32> zeroinitializer
%189 = fmul <2 x double> %185, %188
%190 = fmul double %182, %183
%191 = fadd <2 x double> %186, %189
%192 = fadd double %180, %190
%193 = bitcast double* %181 to <2 x double>*
%194 = load <2 x double>, <2 x double>* %193
%195 = getelementptr inbounds double, double* %181, i64 2
%196 = load double, double* %195
%197 = load double, double* %184
%198 = getelementptr inbounds double, double* %184, i64 %128
%199 = getelementptr inbounds double, double* %181, i64 %127
%200 = insertelement <2 x double> poison, double %197, i64 0
%201 = shufflevector <2 x double> %200, <2 x double> poison, <2 x i32> zeroinitializer
%202 = fmul <2 x double> %194, %201
%203 = fmul double %196, %197
%204 = fadd <2 x double> %191, %202
%205 = fadd double %192, %203
%206 = bitcast double* %199 to <2 x double>*
%207 = load <2 x double>, <2 x double>* %206
%208 = getelementptr inbounds double, double* %199, i64 2
%209 = load double, double* %208
%210 = load double, double* %198
%211 = getelementptr inbounds double, double* %198, i64 %128
%212 = getelementptr inbounds double, double* %199, i64 %127
%213 = insertelement <2 x double> poison, double %210, i64 0
%214 = shufflevector <2 x double> %213, <2 x double> poison, <2 x i32> zeroinitializer
%215 = fmul <2 x double> %207, %214
%216 = fmul double %209, %210
%217 = fadd <2 x double> %204, %215
%218 = fadd double %205, %216
%219 = bitcast double* %212 to <2 x double>*
%220 = load <2 x double>, <2 x double>* %219
%221 = getelementptr inbounds double, double* %212, i64 2
%222 = load double, double* %221
%223 = load double, double* %211
%224 = getelementptr inbounds double, double* %211, i64 %128
%225 = getelementptr inbounds double, double* %212, i64 %127
%226 = insertelement <2 x double> poison, double %223, i64 0
%227 = shufflevector <2 x double> %226, <2 x double> poison, <2 x i32> zeroinitializer
%228 = fmul <2 x double> %220, %227
%229 = fmul double %222, %223
%230 = fadd <2 x double> %217, %228
%231 = fadd double %218, %229
%232 = bitcast double* %225 to <2 x double>*
%233 = load <2 x double>, <2 x double>* %232
%234 = getelementptr inbounds double, double* %225, i64 2
%235 = load double, double* %234
%236 = load double, double* %224
%237 = getelementptr inbounds double, double* %224, i64 %128
%238 = getelementptr inbounds double, double* %225, i64 %127
%239 = icmp eq double* %237, %165
br i1 %239, label %240, label %179
240: ; preds = %179
%241 = insertelement <2 x double> poison, double %236, i64 0
%242 = shufflevector <2 x double> %241, <2 x double> poison, <2 x i32> zeroinitializer
%243 = fmul <2 x double> %233, %242
%244 = fmul double %235, %236
%245 = fadd <2 x double> %230, %243
%246 = fadd double %231, %244
br label %247
247: ; preds = %240, %169
%248 = phi double [ %246, %240 ], [ 0.000000e+00, %169 ]
%249 = phi double* [ %238, %240 ], [ %170, %169 ]
%250 = phi double* [ %165, %240 ], [ %163, %169 ]
%251 = phi <2 x double> [ %245, %240 ], [ zeroinitializer, %169 ]
br i1 %130, label %297, label %252
252: ; preds = %247
%253 = bitcast double* %249 to <2 x double>*
%254 = load <2 x double>, <2 x double>* %253
%255 = getelementptr inbounds double, double* %249, i64 2
%256 = load double, double* %255
%257 = getelementptr inbounds double, double* %249, i64 %127
%258 = load double, double* %250
%259 = insertelement <2 x double> poison, double %258, i64 0
%260 = shufflevector <2 x double> %259, <2 x double> poison, <2 x i32> zeroinitializer
%261 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %260, <2 x double> %254, <2 x double> %251)
%262 = tail call double @llvm.fmuladd.f64(double %258, double %256, double %248)
%263 = getelementptr inbounds double, double* %250, i64 %128
%264 = bitcast double* %257 to <2 x double>*
%265 = load <2 x double>, <2 x double>* %264
%266 = getelementptr inbounds double, double* %257, i64 2
%267 = load double, double* %266
%268 = getelementptr inbounds double, double* %257, i64 %127
%269 = load double, double* %263
%270 = insertelement <2 x double> poison, double %269, i64 0
%271 = shufflevector <2 x double> %270, <2 x double> poison, <2 x i32> zeroinitializer
%272 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %271, <2 x double> %265, <2 x double> %261)
%273 = tail call double @llvm.fmuladd.f64(double %269, double %267, double %262)
%274 = getelementptr inbounds double, double* %263, i64 %128
%275 = bitcast double* %268 to <2 x double>*
%276 = load <2 x double>, <2 x double>* %275
%277 = getelementptr inbounds double, double* %268, i64 2
%278 = load double, double* %277
%279 = getelementptr inbounds double, double* %268, i64 %127
%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 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %282, <2 x double> %276, <2 x double> %272)
%284 = tail call double @llvm.fmuladd.f64(double %280, double %278, double %273)
%285 = getelementptr inbounds double, double* %274, i64 %128
%286 = bitcast double* %279 to <2 x double>*
%287 = load <2 x double>, <2 x double>* %286
%288 = getelementptr inbounds double, double* %279, i64 2
%289 = load double, double* %288
%290 = getelementptr inbounds double, double* %279, i64 %127
%291 = load double, double* %285
%292 = insertelement <2 x double> poison, double %291, i64 0
%293 = shufflevector <2 x double> %292, <2 x double> poison, <2 x i32> zeroinitializer
%294 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %293, <2 x double> %287, <2 x double> %283)
%295 = tail call double @llvm.fmuladd.f64(double %291, double %289, double %284)
%296 = getelementptr inbounds double, double* %285, i64 %128
br label %297
297: ; preds = %252, %247
%298 = phi double [ %295, %252 ], [ %248, %247 ]
%299 = phi double* [ %290, %252 ], [ %249, %247 ]
%300 = phi double* [ %296, %252 ], [ %250, %247 ]
%301 = phi <2 x double> [ %294, %252 ], [ %251, %247 ]
br i1 %132, label %325, label %302
302: ; preds = %297
%303 = bitcast double* %299 to <2 x double>*
%304 = load <2 x double>, <2 x double>* %303
%305 = getelementptr inbounds double, double* %299, i64 2
%306 = load double, double* %305
%307 = getelementptr inbounds double, double* %299, i64 %127
%308 = load double, double* %300
%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 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %310, <2 x double> %304, <2 x double> %301)
%312 = tail call double @llvm.fmuladd.f64(double %308, double %306, double %298)
%313 = getelementptr inbounds double, double* %300, i64 %128
%314 = bitcast double* %307 to <2 x double>*
%315 = load <2 x double>, <2 x double>* %314
%316 = getelementptr inbounds double, double* %307, i64 2
%317 = load double, double* %316
%318 = getelementptr inbounds double, double* %307, i64 %127
%319 = load double, double* %313
%320 = insertelement <2 x double> poison, double %319, i64 0
%321 = shufflevector <2 x double> %320, <2 x double> poison, <2 x i32> zeroinitializer
%322 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %321, <2 x double> %315, <2 x double> %311)
%323 = tail call double @llvm.fmuladd.f64(double %319, double %317, double %312)
%324 = getelementptr inbounds double, double* %313, i64 %128
br label %325
325: ; preds = %302, %297
%326 = phi double [ %323, %302 ], [ %298, %297 ]
%327 = phi double* [ %318, %302 ], [ %299, %297 ]
%328 = phi double* [ %324, %302 ], [ %300, %297 ]
%329 = phi <2 x double> [ %322, %302 ], [ %301, %297 ]
br i1 %134, label %340, label %330
330: ; preds = %325
%331 = bitcast double* %327 to <2 x double>*
%332 = load <2 x double>, <2 x double>* %331
%333 = getelementptr inbounds double, double* %327, i64 2
%334 = load double, double* %333
%335 = load double, double* %328
%336 = insertelement <2 x double> poison, double %335, i64 0
%337 = shufflevector <2 x double> %336, <2 x double> poison, <2 x i32> zeroinitializer
%338 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %337, <2 x double> %332, <2 x double> %329)
%339 = tail call double @llvm.fmuladd.f64(double %335, double %334, double %326)
br label %340
340: ; preds = %330, %325
%341 = phi double [ %339, %330 ], [ %326, %325 ]
%342 = phi <2 x double> [ %338, %330 ], [ %329, %325 ]
%343 = bitcast double* %171 to <2 x double>*
%344 = load <2 x double>, <2 x double>* %343
%345 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %138, <2 x double> %342, <2 x double> %344)
%346 = bitcast double* %171 to <2 x double>*
store <2 x double> %345, <2 x double>* %346
%347 = getelementptr inbounds double, double* %171, i64 2
%348 = load double, double* %347
%349 = tail call double @llvm.fmuladd.f64(double %9, double %341, double %348)
store double %349, double* %347
%350 = getelementptr inbounds double, double* %170, i64 3
%351 = getelementptr inbounds double, double* %171, i64 3
%352 = icmp eq double* %351, %166
br i1 %352, label %353, label %169
353: ; preds = %340, %162
%354 = getelementptr inbounds double, double* %164, i64 %135
%355 = getelementptr inbounds double, double* %163, i64 1
%356 = icmp eq double* %354, %22
br i1 %356, label %139, label %162
357: ; preds = %140, %586
%358 = phi double* [ %3, %140 ], [ %588, %586 ]
%359 = phi double* [ %5, %140 ], [ %587, %586 ]
%360 = getelementptr inbounds double, double* %358, i64 %141
%361 = getelementptr inbounds double, double* %359, i64 %142
br i1 %145, label %491, label %362
362: ; preds = %357
br i1 %12, label %363, label %415
363: ; preds = %362
%364 = load <2 x double>, <2 x double>* %161
%365 = load double, double* %358
%366 = getelementptr inbounds double, double* %358, i64 %148
br label %367
367: ; preds = %367, %363
%368 = phi double* [ %147, %363 ], [ %408, %367 ]
%369 = phi double* [ %366, %363 ], [ %407, %367 ]
%370 = phi double [ %365, %363 ], [ %406, %367 ]
%371 = phi <2 x double> [ %364, %363 ], [ %405, %367 ]
%372 = phi <2 x double> [ zeroinitializer, %363 ], [ %403, %367 ]
%373 = insertelement <2 x double> poison, double %370, i64 0
%374 = shufflevector <2 x double> %373, <2 x double> poison, <2 x i32> zeroinitializer
%375 = fmul <2 x double> %371, %374
%376 = fadd <2 x double> %372, %375
%377 = bitcast double* %368 to <2 x double>*
%378 = load <2 x double>, <2 x double>* %377
%379 = load double, double* %369
%380 = getelementptr inbounds double, double* %369, i64 %148
%381 = getelementptr inbounds double, double* %368, i64 %146
%382 = insertelement <2 x double> poison, double %379, i64 0
%383 = shufflevector <2 x double> %382, <2 x double> poison, <2 x i32> zeroinitializer
%384 = fmul <2 x double> %378, %383
%385 = fadd <2 x double> %376, %384
%386 = bitcast double* %381 to <2 x double>*
%387 = load <2 x double>, <2 x double>* %386
%388 = load double, double* %380
%389 = getelementptr inbounds double, double* %380, i64 %148
%390 = getelementptr inbounds double, double* %381, i64 %146
%391 = insertelement <2 x double> poison, double %388, i64 0
%392 = shufflevector <2 x double> %391, <2 x double> poison, <2 x i32> zeroinitializer
%393 = fmul <2 x double> %387, %392
%394 = fadd <2 x double> %385, %393
%395 = bitcast double* %390 to <2 x double>*
%396 = load <2 x double>, <2 x double>* %395
%397 = load double, double* %389
%398 = getelementptr inbounds double, double* %389, i64 %148
%399 = getelementptr inbounds double, double* %390, i64 %146
%400 = insertelement <2 x double> poison, double %397, i64 0
%401 = shufflevector <2 x double> %400, <2 x double> poison, <2 x i32> zeroinitializer
%402 = fmul <2 x double> %396, %401
%403 = fadd <2 x double> %394, %402
%404 = bitcast double* %399 to <2 x double>*
%405 = load <2 x double>, <2 x double>* %404
%406 = load double, double* %398
%407 = getelementptr inbounds double, double* %398, i64 %148
%408 = getelementptr inbounds double, double* %399, i64 %146
%409 = icmp eq double* %407, %360
br i1 %409, label %410, label %367
410: ; preds = %367
%411 = insertelement <2 x double> poison, double %406, i64 0
%412 = shufflevector <2 x double> %411, <2 x double> poison, <2 x i32> zeroinitializer
%413 = fmul <2 x double> %405, %412
%414 = fadd <2 x double> %403, %413
br label %415
415: ; preds = %410, %362
%416 = phi double* [ %408, %410 ], [ %143, %362 ]
%417 = phi double* [ %360, %410 ], [ %358, %362 ]
%418 = phi <2 x double> [ %414, %410 ], [ zeroinitializer, %362 ]
br i1 %150, label %452, label %419
419: ; preds = %415
%420 = bitcast double* %416 to <2 x double>*
%421 = load <2 x double>, <2 x double>* %420
%422 = getelementptr inbounds double, double* %416, i64 %146
%423 = load double, double* %417
%424 = insertelement <2 x double> poison, double %423, i64 0
%425 = shufflevector <2 x double> %424, <2 x double> poison, <2 x i32> zeroinitializer
%426 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %425, <2 x double> %421, <2 x double> %418)
%427 = getelementptr inbounds double, double* %417, i64 %148
%428 = bitcast double* %422 to <2 x double>*
%429 = load <2 x double>, <2 x double>* %428
%430 = getelementptr inbounds double, double* %422, i64 %146
%431 = load double, double* %427
%432 = insertelement <2 x double> poison, double %431, i64 0
%433 = shufflevector <2 x double> %432, <2 x double> poison, <2 x i32> zeroinitializer
%434 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %433, <2 x double> %429, <2 x double> %426)
%435 = getelementptr inbounds double, double* %427, i64 %148
%436 = bitcast double* %430 to <2 x double>*
%437 = load <2 x double>, <2 x double>* %436
%438 = getelementptr inbounds double, double* %430, i64 %146
%439 = load double, double* %435
%440 = insertelement <2 x double> poison, double %439, i64 0
%441 = shufflevector <2 x double> %440, <2 x double> poison, <2 x i32> zeroinitializer
%442 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %441, <2 x double> %437, <2 x double> %434)
%443 = getelementptr inbounds double, double* %435, i64 %148
%444 = bitcast double* %438 to <2 x double>*
%445 = load <2 x double>, <2 x double>* %444
%446 = getelementptr inbounds double, double* %438, i64 %146
%447 = load double, double* %443
%448 = insertelement <2 x double> poison, double %447, i64 0
%449 = shufflevector <2 x double> %448, <2 x double> poison, <2 x i32> zeroinitializer
%450 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %449, <2 x double> %445, <2 x double> %442)
%451 = getelementptr inbounds double, double* %443, i64 %148
br label %452
452: ; preds = %419, %415
%453 = phi double* [ %446, %419 ], [ %416, %415 ]
%454 = phi double* [ %451, %419 ], [ %417, %415 ]
%455 = phi <2 x double> [ %450, %419 ], [ %418, %415 ]
br i1 %152, label %473, label %456
456: ; preds = %452
%457 = bitcast double* %453 to <2 x double>*
%458 = load <2 x double>, <2 x double>* %457
%459 = getelementptr inbounds double, double* %453, i64 %146
%460 = load double, double* %454
%461 = insertelement <2 x double> poison, double %460, i64 0
%462 = shufflevector <2 x double> %461, <2 x double> poison, <2 x i32> zeroinitializer
%463 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %462, <2 x double> %458, <2 x double> %455)
%464 = getelementptr inbounds double, double* %454, i64 %148
%465 = bitcast double* %459 to <2 x double>*
%466 = load <2 x double>, <2 x double>* %465
%467 = getelementptr inbounds double, double* %459, i64 %146
%468 = load double, double* %464
%469 = insertelement <2 x double> poison, double %468, i64 0
%470 = shufflevector <2 x double> %469, <2 x double> poison, <2 x i32> zeroinitializer
%471 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %470, <2 x double> %466, <2 x double> %463)
%472 = getelementptr inbounds double, double* %464, i64 %148
br label %473
473: ; preds = %456, %452
%474 = phi double* [ %467, %456 ], [ %453, %452 ]
%475 = phi double* [ %472, %456 ], [ %454, %452 ]
%476 = phi <2 x double> [ %471, %456 ], [ %455, %452 ]
br i1 %154, label %484, label %477
477: ; preds = %473
%478 = bitcast double* %474 to <2 x double>*
%479 = load <2 x double>, <2 x double>* %478
%480 = load double, double* %475
%481 = insertelement <2 x double> poison, double %480, i64 0
%482 = shufflevector <2 x double> %481, <2 x double> poison, <2 x i32> zeroinitializer
%483 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %482, <2 x double> %479, <2 x double> %476)
br label %484
484: ; preds = %477, %473
%485 = phi <2 x double> [ %483, %477 ], [ %476, %473 ]
%486 = bitcast double* %361 to <2 x double>*
%487 = load <2 x double>, <2 x double>* %486
%488 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %160, <2 x double> %485, <2 x double> %487)
%489 = bitcast double* %361 to <2 x double>*
store <2 x double> %488, <2 x double>* %489
%490 = getelementptr inbounds double, double* %361, i64 2
br label %491
491: ; preds = %484, %357
%492 = phi double* [ %490, %484 ], [ %361, %357 ]
%493 = phi double* [ %155, %484 ], [ %143, %357 ]
br i1 %157, label %586, label %494
494: ; preds = %491
br i1 %12, label %495, label %534
495: ; preds = %494
%496 = load double, double* %493
%497 = load double, double* %358
%498 = getelementptr inbounds double, double* %493, i64 %146
%499 = getelementptr inbounds double, double* %358, i64 %148
br label %500
500: ; preds = %500, %495
%501 = phi double [ 0.000000e+00, %495 ], [ %525, %500 ]
%502 = phi double* [ %498, %495 ], [ %529, %500 ]
%503 = phi double* [ %499, %495 ], [ %528, %500 ]
%504 = phi double [ %496, %495 ], [ %526, %500 ]
%505 = phi double [ %497, %495 ], [ %527, %500 ]
%506 = fmul double %504, %505
%507 = fadd double %501, %506
%508 = load double, double* %502
%509 = load double, double* %503
%510 = getelementptr inbounds double, double* %503, i64 %148
%511 = getelementptr inbounds double, double* %502, i64 %146
%512 = fmul double %508, %509
%513 = fadd double %507, %512
%514 = load double, double* %511
%515 = load double, double* %510
%516 = getelementptr inbounds double, double* %510, i64 %148
%517 = getelementptr inbounds double, double* %511, i64 %146
%518 = fmul double %514, %515
%519 = fadd double %513, %518
%520 = load double, double* %517
%521 = load double, double* %516
%522 = getelementptr inbounds double, double* %516, i64 %148
%523 = getelementptr inbounds double, double* %517, i64 %146
%524 = fmul double %520, %521
%525 = fadd double %519, %524
%526 = load double, double* %523
%527 = load double, double* %522
%528 = getelementptr inbounds double, double* %522, i64 %148
%529 = getelementptr inbounds double, double* %523, i64 %146
%530 = icmp eq double* %528, %360
br i1 %530, label %531, label %500
531: ; preds = %500
%532 = fmul double %526, %527
%533 = fadd double %525, %532
br label %534
534: ; preds = %531, %494
%535 = phi double [ %533, %531 ], [ 0.000000e+00, %494 ]
%536 = phi double* [ %529, %531 ], [ %493, %494 ]
%537 = phi double* [ %360, %531 ], [ %358, %494 ]
br i1 %150, label %559, label %538
538: ; preds = %534
%539 = load double, double* %536
%540 = getelementptr inbounds double, double* %536, i64 %146
%541 = load double, double* %537
%542 = tail call double @llvm.fmuladd.f64(double %541, double %539, double %535)
%543 = getelementptr inbounds double, double* %537, i64 %148
%544 = load double, double* %540
%545 = getelementptr inbounds double, double* %540, i64 %146
%546 = load double, double* %543
%547 = tail call double @llvm.fmuladd.f64(double %546, double %544, double %542)
%548 = getelementptr inbounds double, double* %543, i64 %148
%549 = load double, double* %545
%550 = getelementptr inbounds double, double* %545, i64 %146
%551 = load double, double* %548
%552 = tail call double @llvm.fmuladd.f64(double %551, double %549, double %547)
%553 = getelementptr inbounds double, double* %548, i64 %148
%554 = load double, double* %550
%555 = getelementptr inbounds double, double* %550, i64 %146
%556 = load double, double* %553
%557 = tail call double @llvm.fmuladd.f64(double %556, double %554, double %552)
%558 = getelementptr inbounds double, double* %553, i64 %148
br label %559
559: ; preds = %538, %534
%560 = phi double [ %557, %538 ], [ %535, %534 ]
%561 = phi double* [ %555, %538 ], [ %536, %534 ]
%562 = phi double* [ %558, %538 ], [ %537, %534 ]
br i1 %152, label %574, label %563
563: ; preds = %559
%564 = load double, double* %561
%565 = getelementptr inbounds double, double* %561, i64 %146
%566 = load double, double* %562
%567 = tail call double @llvm.fmuladd.f64(double %566, double %564, double %560)
%568 = getelementptr inbounds double, double* %562, i64 %148
%569 = load double, double* %565
%570 = getelementptr inbounds double, double* %565, i64 %146
%571 = load double, double* %568
%572 = tail call double @llvm.fmuladd.f64(double %571, double %569, double %567)
%573 = getelementptr inbounds double, double* %568, i64 %148
br label %574
574: ; preds = %563, %559
%575 = phi double [ %572, %563 ], [ %560, %559 ]
%576 = phi double* [ %570, %563 ], [ %561, %559 ]
%577 = phi double* [ %573, %563 ], [ %562, %559 ]
br i1 %154, label %582, label %578
578: ; preds = %574
%579 = load double, double* %576
%580 = load double, double* %577
%581 = tail call double @llvm.fmuladd.f64(double %580, double %579, double %575)
br label %582
582: ; preds = %578, %574
%583 = phi double [ %581, %578 ], [ %575, %574 ]
%584 = load double, double* %492
%585 = tail call double @llvm.fmuladd.f64(double %9, double %583, double %584)
store double %585, double* %492
br label %586
586: ; preds = %582, %491
%587 = getelementptr inbounds double, double* %359, i64 %158
%588 = getelementptr inbounds double, double* %358, i64 1
%589 = icmp eq double* %587, %22
br i1 %589, label %590, label %357
590: ; preds = %586, %122, %24, %139
ret void
}