void mm_double_TN_1(const int M, const int K, const int N,
                    const double *const A, const double *const B,
                    double *const C, const int Astride, const int Bstride,
                    const int Cstride, const double beta) {
  const double *a;
  const double *b;
  double *c;
  const double *ap;
  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;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      c0_2 = _cp[2];
      if (K >= 5) {
        _b0 = bp[0];
        _b1 = bp[1];
        _b2 = bp[2];
        _a0 = ap[0];
        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] = c0_0;
      _cp[1] = c0_1;
      _cp[2] = 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;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      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] = c0_0;
      _cp[1] = c0_1;
      b += 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap = a;
      bp = b;
      _cp = cp;
      c0_0 = _cp[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] = c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_TN_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf8,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movsd  %xmm0,-0x30(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x64(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     1155 <mm_double_TN_1+0x55>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x174(%rbp)
jmp    115e <mm_double_TN_1+0x5e>
mov    -0x8(%rbp),%eax
mov    %eax,-0x174(%rbp)
mov    -0x174(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x68(%rbp),%eax
imul   0x10(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x70(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x70(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x78(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x78(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x74(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1296 <mm_double_TN_1+0x196>
jp     1296 <mm_double_TN_1+0x196>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xc8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
cmp    -0xc8(%rbp),%rax
je     1291 <mm_double_TN_1+0x191>
mov    -0xc0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0xc0(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
cmp    -0xd8(%rbp),%rax
je     126c <mm_double_TN_1+0x16c>
mov    -0xd0(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xd0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xd0(%rbp)
jmp    1233 <mm_double_TN_1+0x133>
jmp    1271 <mm_double_TN_1+0x171>
mov    0x20(%rbp),%ecx
mov    -0xc0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xc0(%rbp)
jmp    11f8 <mm_double_TN_1+0xf8>
jmp    1388 <mm_double_TN_1+0x288>
movsd  -0x30(%rbp),%xmm0
movsd  0x2d5d(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12b8 <mm_double_TN_1+0x1b8>
jp     12b8 <mm_double_TN_1+0x1b8>
jmp    1383 <mm_double_TN_1+0x283>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
je     137e <mm_double_TN_1+0x27e>
mov    -0xe0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xe0(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
cmp    -0xf8(%rbp),%rax
je     1359 <mm_double_TN_1+0x259>
movsd  -0x30(%rbp),%xmm0
mov    -0xf0(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0xf0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xf0(%rbp)
jmp    131a <mm_double_TN_1+0x21a>
jmp    135e <mm_double_TN_1+0x25e>
mov    0x20(%rbp),%ecx
mov    -0xe0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
jmp    12df <mm_double_TN_1+0x1df>
jmp    1383 <mm_double_TN_1+0x283>
jmp    1388 <mm_double_TN_1+0x288>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x88(%rbp),%rax
je     204a <mm_double_TN_1+0xf4a>
mov    -0x38(%rbp),%rax
movslq -0x6c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x7c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0x108(%rbp),%rax
je     201f <mm_double_TN_1+0xf1f>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x130(%rbp)
mov    -0x130(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x130(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x130(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     1953 <mm_double_TN_1+0x853>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x100(%rbp),%rax
jne    14c2 <mm_double_TN_1+0x3c2>
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x68(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1cf2 <mm_double_TN_1+0xbf2>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1ec9 <mm_double_TN_1+0xdc9>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1fbc <mm_double_TN_1+0xebc>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x118(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x130(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x130(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x40(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x40(%rbp)
mov    -0x60(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x60(%rbp)
jmp    13e5 <mm_double_TN_1+0x2e5>
jmp    2024 <mm_double_TN_1+0xf24>
mov    -0x64(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
jmp    1398 <mm_double_TN_1+0x298>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x88(%rbp),%rax
je     302c <mm_double_TN_1+0x1f2c>
mov    -0x38(%rbp),%rax
movslq -0x6c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x138(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x7c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x7c(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x78(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     29de <mm_double_TN_1+0x18de>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x158(%rbp)
mov    -0x158(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x158(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     24ba <mm_double_TN_1+0x13ba>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x138(%rbp),%rax
jne    215d <mm_double_TN_1+0x105d>
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x68(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2775 <mm_double_TN_1+0x1675>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     28da <mm_double_TN_1+0x17da>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2994 <mm_double_TN_1+0x1894>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x158(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x158(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x158(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x40(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x40(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x78(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     3001 <mm_double_TN_1+0x1f01>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x170(%rbp)
mov    -0x170(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2c98 <mm_double_TN_1+0x1b98>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x138(%rbp),%rax
jne    2a6f <mm_double_TN_1+0x196f>
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x68(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2e6f <mm_double_TN_1+0x1d6f>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2f62 <mm_double_TN_1+0x1e62>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x68(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2fe3 <mm_double_TN_1+0x1ee3>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x170(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x170(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    3006 <mm_double_TN_1+0x1f06>
mov    -0x64(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
jmp    205a <mm_double_TN_1+0xf5a>
add    $0xf8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_TN_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r8,0x28(%rsp)
mov    %edx,%r14d
lea    -0x1(%rsi),%eax
and    $0x3,%eax
cmp    $0x5,%esi
mov    %rsi,0x38(%rsp)
cmovl  %esi,%eax
mov    %eax,0xc(%rsp)
mov    0xd0(%rsp),%edx
movslq %r14d,%rax
mov    %rax,0x20(%rsp)
imul   %edx,%edi
movslq %edi,%r12
lea    (%r9,%r12,8),%rax
mov    %rax,0x50(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11c1 <mm_double_TN_1+0xb1>
jp     11c1 <mm_double_TN_1+0xb1>
test   %edi,%edi
je     1b09 <mm_double_TN_1+0x9f9>
mov    %edi,0x10(%rsp)
mov    %rcx,0x40(%rsp)
mov    %r9,%r15
movslq %edx,%rbp
mov    0x20(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%r12
xor    %ebx,%ebx
jmp    11ac <mm_double_TN_1+0x9c>
nopl   0x0(%rax,%rax,1)
add    %rbp,%rbx
cmp    %rbx,%r12
je     1324 <mm_double_TN_1+0x214>
test   %r14d,%r14d
je     11a0 <mm_double_TN_1+0x90>
lea    (%r15,%rbx,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
jmp    11a0 <mm_double_TN_1+0x90>
mov    %edi,0x10(%rsp)
mov    %rcx,0x40(%rsp)
mov    %r9,%r15
ucomisd 0xe2b(%rip),%xmm0
jne    11dd <mm_double_TN_1+0xcd>
jnp    1324 <mm_double_TN_1+0x214>
cmpl   $0x0,0x10(%rsp)
je     1324 <mm_double_TN_1+0x214>
movslq 0xd0(%rsp),%rax
mov    0x20(%rsp),%rcx
lea    -0x1(%rcx),%rdx
movabs $0x1fffffffffffffff,%rcx
and    %rdx,%rcx
lea    0x1(%rcx),%r9
mov    %r9,%rsi
and    $0xfffffffffffffffc,%rsi
lea    -0x4(%rsi),%r10
mov    %r10,%r11
shr    $0x2,%r11
add    $0x1,%r11
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    %r15,%rdx
jmp    124e <mm_double_TN_1+0x13e>
nopl   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x50(%rsp),%rdx
je     1324 <mm_double_TN_1+0x214>
test   %r14d,%r14d
je     1240 <mm_double_TN_1+0x130>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     12e9 <mm_double_TN_1+0x1d9>
test   %r10,%r10
je     131a <mm_double_TN_1+0x20a>
mov    %r8,%rdi
xor    %ebx,%ebx
xchg   %ax,%ax
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
movupd 0x20(%rdx,%rbx,8),%xmm4
movupd 0x30(%rdx,%rbx,8),%xmm5
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm1,%xmm4
mulpd  %xmm1,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1270 <mm_double_TN_1+0x160>
test   $0x1,%r11b
je     12dc <mm_double_TN_1+0x1cc>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1240 <mm_double_TN_1+0x130>
lea    (%rdx,%rsi,8),%rdi
mov    0x20(%rsp),%rbx
lea    (%rdx,%rbx,8),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    1300 <mm_double_TN_1+0x1f0>
jmp    1240 <mm_double_TN_1+0x130>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12be <mm_double_TN_1+0x1ae>
jmp    12dc <mm_double_TN_1+0x1cc>
mov    0x10(%rsp),%eax
test   %eax,%eax
mov    0x40(%rsp),%r11
mov    0xc(%rsp),%ebp
mov    0xd0(%rsp),%ebx
je     1b09 <mm_double_TN_1+0x9f9>
mov    0xc0(%rsp),%eax
mov    0x38(%rsp),%rcx
sub    %ebp,%ecx
imul   %eax,%ecx
mov    0x20(%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,0x14(%rsp)
movslq %ecx,%rcx
mov    %rcx,0x68(%rsp)
mov    %esi,0x64(%rsp)
movslq %esi,%rcx
mov    %rcx,0x48(%rsp)
movslq 0xc8(%rsp),%r12
movslq %eax,%r14
movslq %ebx,%rax
mov    %rax,0x70(%rsp)
mov    0x28(%rsp),%rax
lea    (%rax,%r12,8),%rax
mov    %rax,0x80(%rsp)
mov    %r12,%rax
shl    $0x5,%rax
mov    %rax,0x58(%rsp)
lea    (%r11,%r14,8),%rax
mov    %rax,0x18(%rsp)
lea    0x0(,%r12,8),%rdx
lea    0x0(,%r14,8),%rax
mov    %r15,0x78(%rsp)
mov    %r15,0x30(%rsp)
jmp    1408 <mm_double_TN_1+0x2f8>
xchg   %ax,%ax
mov    0x70(%rsp),%rcx
mov    0x30(%rsp),%rsi
lea    (%rsi,%rcx,8),%rsi
add    $0x8,%r11
addq   $0x8,0x18(%rsp)
mov    %rsi,0x30(%rsp)
cmp    0x50(%rsp),%rsi
je     16ec <mm_double_TN_1+0x5dc>
cmpl   $0x0,0x64(%rsp)
je     13e0 <mm_double_TN_1+0x2d0>
mov    0x68(%rsp),%rcx
lea    (%r11,%rcx,8),%rbx
mov    0x48(%rsp),%rcx
mov    0x30(%rsp),%r15
lea    (%r15,%rcx,8),%r13
mov    0x80(%rsp),%r8
mov    0x28(%rsp),%r10
jmp    145c <mm_double_TN_1+0x34c>
cs nopw 0x0(%rax,%rax,1)
nop
movupd %xmm1,(%r15)
movsd  %xmm0,0x10(%r15)
add    $0x18,%r10
add    $0x18,%r15
add    $0x18,%r8
cmp    %r13,%r15
je     13e0 <mm_double_TN_1+0x2d0>
movupd (%r15),%xmm1
movsd  0x10(%r15),%xmm0
cmpl   $0x5,0x38(%rsp)
jl     1580 <mm_double_TN_1+0x470>
mov    %r13,%rsi
movupd (%r10),%xmm4
movsd  0x10(%r10),%xmm2
movsd  (%r11),%xmm3
mov    0x18(%rsp),%r13
mov    %r8,%rcx
nopl   (%rax)
mov    %rcx,%r9
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm1,%xmm3
addsd  %xmm0,%xmm2
movupd (%rcx),%xmm0
movsd  0x0(%r13),%xmm1
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
mulpd  %xmm0,%xmm4
addpd  %xmm3,%xmm4
mulsd  0x10(%rcx),%xmm1
addsd  %xmm2,%xmm1
add    %rdx,%rcx
movupd (%r9,%rdx,1),%xmm0
movsd  0x0(%r13,%rax,1),%xmm2
add    %rax,%r13
movapd %xmm2,%xmm3
unpcklpd %xmm2,%xmm3
mulpd  %xmm0,%xmm3
mulsd  0x10(%r9,%rdx,1),%xmm2
addpd  %xmm4,%xmm3
addsd  %xmm1,%xmm2
lea    (%rcx,%rdx,1),%rdi
movupd (%rdx,%rcx,1),%xmm4
movsd  (%rax,%r13,1),%xmm0
add    %rax,%r13
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm3,%xmm1
mulsd  0x10(%rdx,%rcx,1),%xmm0
addsd  %xmm2,%xmm0
lea    (%rdi,%rdx,1),%rcx
movupd (%rdx,%rdi,1),%xmm4
movsd  0x10(%rdx,%rdi,1),%xmm2
movsd  (%rax,%r13,1),%xmm3
add    %rax,%r13
add    %rax,%r13
add    %rdx,%rcx
cmp    %rbx,%r13
jne    1490 <mm_double_TN_1+0x380>
add    0x58(%rsp),%r9
mulsd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm1
addsd  %xmm2,%xmm0
mov    %rbx,%rcx
mov    %rsi,%r13
test   $0x4,%bpl
jne    1590 <mm_double_TN_1+0x480>
jmp    164e <mm_double_TN_1+0x53e>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %r10,%r9
mov    %r11,%rcx
test   $0x4,%bpl
je     164e <mm_double_TN_1+0x53e>
movupd (%r9),%xmm2
lea    (%r9,%r12,8),%rbp
movsd  (%rcx),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm1,%xmm4
mulsd  0x10(%r9),%xmm3
addsd  %xmm0,%xmm3
lea    (%rcx,%r14,8),%rsi
movupd (%r9,%r12,8),%xmm0
lea    0x0(%rbp,%r12,8),%rdi
movsd  (%rcx,%r14,8),%xmm1
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm4,%xmm2
mulsd  0x10(%r9,%r12,8),%xmm1
addsd  %xmm3,%xmm1
lea    (%rsi,%r14,8),%rcx
movupd 0x0(%rbp,%r12,8),%xmm0
lea    (%rdi,%r12,8),%r9
movsd  (%rsi,%r14,8),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm0,%xmm4
addpd  %xmm2,%xmm4
mulsd  0x10(%rbp,%r12,8),%xmm3
mov    0xc(%rsp),%ebp
addsd  %xmm1,%xmm3
lea    (%rcx,%r14,8),%rsi
movupd (%rdi,%r12,8),%xmm2
lea    (%r9,%r12,8),%r9
movsd  (%rcx,%r14,8),%xmm0
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm4,%xmm1
mulsd  0x10(%rdi,%r12,8),%xmm0
addsd  %xmm3,%xmm0
lea    (%rsi,%r14,8),%rcx
test   $0x2,%bpl
jne    1660 <mm_double_TN_1+0x550>
test   $0x1,%bpl
je     1440 <mm_double_TN_1+0x330>
jmp    16c4 <mm_double_TN_1+0x5b4>
movupd (%r9),%xmm2
lea    (%r9,%r12,8),%rsi
movsd  (%rcx),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm1,%xmm4
mulsd  0x10(%r9),%xmm3
addsd  %xmm0,%xmm3
lea    (%rcx,%r14,8),%rdi
movupd (%r9,%r12,8),%xmm2
movsd  (%rcx,%r14,8),%xmm0
movapd %xmm0,%xmm1
mulsd  0x10(%r9,%r12,8),%xmm0
lea    (%rsi,%r12,8),%r9
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm4,%xmm1
addsd  %xmm3,%xmm0
lea    (%rdi,%r14,8),%rcx
test   $0x1,%bpl
je     1440 <mm_double_TN_1+0x330>
movupd (%r9),%xmm2
movsd  (%rcx),%xmm3
movapd %xmm3,%xmm4
unpcklpd %xmm3,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm4,%xmm1
mulsd  0x10(%r9),%xmm3
addsd  %xmm3,%xmm0
jmp    1440 <mm_double_TN_1+0x330>
cmpl   $0x0,0x10(%rsp)
mov    0x78(%rsp),%r9
mov    0x40(%rsp),%r10
je     1b09 <mm_double_TN_1+0x9f9>
mov    0x28(%rsp),%rsi
mov    0x48(%rsp),%rcx
lea    (%rsi,%rcx,8),%rdi
mov    %rdi,0x18(%rsp)
lea    (%rsi,%rcx,8),%rcx
add    $0x10,%rcx
mov    %rcx,0x30(%rsp)
mov    0x20(%rsp),%rcx
lea    (%rdx,%rcx,8),%r13
movslq 0x14(%rsp),%rcx
shl    $0x3,%rcx
sub    %rcx,%rsi
mov    %rsi,0x28(%rsp)
lea    (%r10,%r14,8),%r11
jmp    1771 <mm_double_TN_1+0x661>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  %xmm0,(%r8)
mov    0x70(%rsp),%rcx
lea    (%r9,%rcx,8),%r9
add    $0x8,%r10
add    $0x8,%r11
cmp    0x50(%rsp),%r9
je     1b09 <mm_double_TN_1+0x9f9>
mov    0x68(%rsp),%rcx
lea    (%r10,%rcx,8),%r15
mov    0x48(%rsp),%rcx
lea    (%r9,%rcx,8),%r8
testb  $0x2,0x14(%rsp)
jne    17a0 <mm_double_TN_1+0x690>
mov    0x18(%rsp),%rbx
testb  $0x1,0x14(%rsp)
je     1755 <mm_double_TN_1+0x645>
jmp    1948 <mm_double_TN_1+0x838>
nopl   0x0(%rax,%rax,1)
movupd (%r8),%xmm0
cmpl   $0x5,0x38(%rsp)
jl     1870 <mm_double_TN_1+0x760>
mov    0x18(%rsp),%rcx
movupd (%rcx),%xmm2
movsd  (%r10),%xmm1
mov    %r11,%rbp
mov    0x28(%rsp),%rcx
mov    0x58(%rsp),%rsi
nopl   0x0(%rax,%rax,1)
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm0,%xmm1
lea    (%rcx,%r13,1),%rdi
movupd (%rcx,%r13,1),%xmm0
movsd  0x0(%rbp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm1,%xmm2
movupd (%rdx,%rdi,1),%xmm0
add    %rdx,%rdi
movsd  0x0(%rbp,%rax,1),%xmm1
add    %rax,%rbp
unpcklpd %xmm1,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm2,%xmm1
movupd (%rdx,%rdi,1),%xmm2
add    %rdx,%rdi
movsd  (%rax,%rbp,1),%xmm0
add    %rax,%rbp
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm1,%xmm0
movupd (%rdx,%rdi,1),%xmm2
movsd  (%rax,%rbp,1),%xmm1
add    %rax,%rbp
add    %rsi,%rcx
add    %rax,%rbp
cmp    %r15,%rbp
jne    17d0 <mm_double_TN_1+0x6c0>
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
add    %r13,%rcx
mov    %r15,%rbp
testb  $0x4,0xc(%rsp)
jne    1883 <mm_double_TN_1+0x773>
jmp    1904 <mm_double_TN_1+0x7f4>
cs nopw 0x0(%rax,%rax,1)
mov    0x18(%rsp),%rcx
mov    %r10,%rbp
testb  $0x4,0xc(%rsp)
je     1904 <mm_double_TN_1+0x7f4>
movupd (%rcx),%xmm1
lea    (%rcx,%r12,8),%rsi
movsd  0x0(%rbp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
lea    0x0(%rbp,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm0
lea    (%rsi,%r12,8),%rcx
movsd  0x0(%rbp,%r14,8),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm2,%xmm1
lea    (%rdi,%r14,8),%rbp
movupd (%rsi,%r12,8),%xmm0
lea    (%rcx,%r12,8),%rsi
movsd  (%rdi,%r14,8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm1,%xmm2
lea    0x0(%rbp,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm1
lea    (%rsi,%r12,8),%rcx
movsd  0x0(%rbp,%r14,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm2,%xmm0
lea    (%rdi,%r14,8),%rbp
testb  $0x2,0xc(%rsp)
jne    19f0 <mm_double_TN_1+0x8e0>
testb  $0x1,0xc(%rsp)
je     192b <mm_double_TN_1+0x81b>
movupd (%rcx),%xmm1
movsd  0x0(%rbp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
movupd %xmm0,(%r8)
add    $0x10,%r8
mov    0x30(%rsp),%rbx
mov    0xc(%rsp),%ebp
testb  $0x1,0x14(%rsp)
je     1755 <mm_double_TN_1+0x645>
movsd  (%r8),%xmm0
cmpl   $0x5,0x38(%rsp)
jl     1a40 <mm_double_TN_1+0x930>
movsd  (%rbx),%xmm1
movsd  (%r10),%xmm2
lea    (%rbx,%r12,8),%rcx
mov    %r11,%rbp
nopl   0x0(%rax,%rax,1)
mov    %rcx,%rbx
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  (%rcx),%xmm0
mulsd  0x0(%rbp),%xmm0
addsd  %xmm1,%xmm0
movsd  (%rcx,%rdx,1),%xmm1
mulsd  0x0(%rbp,%rax,1),%xmm1
add    %rdx,%rcx
add    %rax,%rbp
addsd  %xmm0,%xmm1
movsd  (%rdx,%rcx,1),%xmm0
add    %rdx,%rcx
mulsd  (%rax,%rbp,1),%xmm0
add    %rax,%rbp
addsd  %xmm1,%xmm0
movsd  (%rdx,%rcx,1),%xmm1
add    %rdx,%rcx
movsd  (%rax,%rbp,1),%xmm2
add    %rax,%rbp
add    %rax,%rbp
add    %rdx,%rcx
cmp    %r15,%rbp
jne    1970 <mm_double_TN_1+0x860>
add    0x58(%rsp),%rbx
mulsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
mov    0xc(%rsp),%ebp
test   $0x4,%bpl
jne    1a49 <mm_double_TN_1+0x939>
jmp    1aac <mm_double_TN_1+0x99c>
nopl   0x0(%rax,%rax,1)
movupd (%rcx),%xmm1
lea    (%rcx,%r12,8),%rsi
movsd  0x0(%rbp),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
lea    0x0(%rbp,%r14,8),%rdi
movupd (%rcx,%r12,8),%xmm1
lea    (%rsi,%r12,8),%rcx
movsd  0x0(%rbp,%r14,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm2,%xmm0
lea    (%rdi,%r14,8),%rbp
testb  $0x1,0xc(%rsp)
jne    1916 <mm_double_TN_1+0x806>
jmp    192b <mm_double_TN_1+0x81b>
nop
mov    %r10,%r15
test   $0x4,%bpl
je     1aac <mm_double_TN_1+0x99c>
lea    (%rbx,%r12,8),%rcx
movsd  (%r15),%xmm1
mulsd  (%rbx),%xmm1
addsd  %xmm0,%xmm1
lea    (%r15,%r14,8),%rsi
lea    (%rcx,%r12,8),%rdi
movsd  (%r15,%r14,8),%xmm0
mulsd  (%rbx,%r12,8),%xmm0
addsd  %xmm1,%xmm0
lea    (%rsi,%r14,8),%rbp
lea    (%rdi,%r12,8),%rbx
movsd  (%rsi,%r14,8),%xmm1
mulsd  (%rcx,%r12,8),%xmm1
addsd  %xmm0,%xmm1
lea    0x0(%rbp,%r14,8),%rcx
lea    (%rbx,%r12,8),%rbx
movsd  0x0(%rbp,%r14,8),%xmm0
mov    0xc(%rsp),%ebp
mulsd  (%rdi,%r12,8),%xmm0
addsd  %xmm1,%xmm0
lea    (%rcx,%r14,8),%r15
test   $0x2,%bpl
jne    1ac0 <mm_double_TN_1+0x9b0>
test   $0x1,%bpl
je     1750 <mm_double_TN_1+0x640>
jmp    1af7 <mm_double_TN_1+0x9e7>
xchg   %ax,%ax
lea    (%rbx,%r12,8),%rcx
movsd  (%r15),%xmm1
mulsd  (%rbx),%xmm1
addsd  %xmm0,%xmm1
movsd  (%r15,%r14,8),%xmm0
mulsd  (%rbx,%r12,8),%xmm0
lea    (%r15,%r14,8),%rsi
lea    (%rcx,%r12,8),%rbx
addsd  %xmm1,%xmm0
lea    (%rsi,%r14,8),%r15
test   $0x1,%bpl
je     1750 <mm_double_TN_1+0x640>
movsd  (%r15),%xmm1
mulsd  (%rbx),%xmm1
addsd  %xmm1,%xmm0
jmp    1750 <mm_double_TN_1+0x640>
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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