void mm_double_TT_c(const int M, const int K, const int N,
                    const double *const A, const double *const B,
                    double *const C, const int Astride, const int Bstride,
                    const int Cstride, const double alpha, const double beta) {
  const double *a;
  const double *b;
  double *c;
  const double *ap;
  const double *bp_0, *bp_1, *bp_2;
  double *cp;
  const int B_sbs_stride = Bstride * 3;
  const int C_sbs_stride = Cstride * 1;
  const int k_marg_el = ((K >= 5) ? ((K - 1) & 3) : K);
  const int k_norm = (K - k_marg_el) * 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 += B_sbs_stride, cp += 3) {
      register double _b0, _b1, _b2;
      register double _a0;
      double *_cp;
      ap = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      bp_2 = bp_1 + Bstride;
      c0_0 = 0.0;
      c0_1 = 0.0;
      c0_2 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap[0];
        bp_0 += 1;
        bp_1 += 1;
        bp_2 += 1;
        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[0];
          _b1 = bp_1[0];
          _b2 = bp_2[0];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[1];
          _b1 = bp_1[1];
          _b2 = bp_2[1];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[2];
          _b1 = bp_1[2];
          _b2 = bp_2[2];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          t0_2 = _a0 * _b2;
          c0_0 += t0_0;
          c0_1 += t0_1;
          c0_2 += t0_2;
          _b0 = bp_0[3];
          _b1 = bp_1[3];
          _b2 = bp_2[3];
          _a0 = ap[0];
          ap += Astride;
          bp_0 += 4;
          bp_1 += 4;
          bp_2 += 4;
        } 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[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _b2 = bp_2[2];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _b2 = bp_2[3];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        bp_0 += 4;
        bp_1 += 4;
        bp_2 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _b2 = bp_2[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
        bp_0 += 2;
        bp_1 += 2;
        bp_2 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        c0_2 += _b2 * _a0;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      _cp[2] += alpha * c0_2;
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += 1) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm * Bstride;
    cp = c + n_norm;
    if (n_marg_el & 0x2) {
      register double _b0, _b1;
      register double _a0;
      double *_cp;
      ap = a;
      bp_0 = b;
      bp_1 = bp_0 + Bstride;
      c0_0 = 0.0;
      c0_1 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap[0];
        bp_0 += 1;
        bp_1 += 1;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[0];
          _b1 = bp_1[0];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[1];
          _b1 = bp_1[1];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[2];
          _b1 = bp_1[2];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          t0_1 = _a0 * _b1;
          c0_0 += t0_0;
          c0_1 += t0_1;
          _b0 = bp_0[3];
          _b1 = bp_1[3];
          _a0 = ap[0];
          ap += Astride;
          bp_0 += 4;
          bp_1 += 4;
        } 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[0];
        _b1 = bp_1[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        _b0 = bp_0[2];
        _b1 = bp_1[2];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        _b0 = bp_0[3];
        _b1 = bp_1[3];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        bp_0 += 4;
        bp_1 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _b1 = bp_1[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
        bp_0 += 2;
        bp_1 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        c0_1 += _b1 * _a0;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
      _cp[1] += alpha * c0_1;
      b += Bstride * 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap = a;
      bp_0 = b;
      c0_0 = 0.0;
      if (K >= 5) {
        _b0 = bp_0[0];
        _a0 = ap[0];
        bp_0 += 1;
        ap += Astride;
        do {
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[0];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[1];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[2];
          _a0 = ap[0];
          ap += Astride;
          t0_0 = _a0 * _b0;
          c0_0 += t0_0;
          _b0 = bp_0[3];
          _a0 = ap[0];
          ap += Astride;
          bp_0 += 4;
        } while (ap != ap_endp);
        t0_0 = _a0 * _b0;
        c0_0 += t0_0;
      }
      if (k_marg_el & 0x4) {
        _b0 = bp_0[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        _b0 = bp_0[2];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        _b0 = bp_0[3];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        bp_0 += 4;
      }
      if (k_marg_el & 0x2) {
        _b0 = bp_0[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        _b0 = bp_0[1];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
        bp_0 += 2;
      }
      if (k_marg_el & 0x1) {
        _b0 = bp_0[0];
        _a0 = ap[0];
        c0_0 += _b0 * _a0;
        ap += Astride;
      }
      _cp = cp;
      _cp[0] += alpha * c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_TT_c>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movsd  %xmm0,-0x30(%rbp)
movsd  %xmm1,-0x38(%rbp)
imul   $0x3,0x18(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x80(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     1161 <mm_double_TT_c+0x61>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x18c(%rbp)
jmp    116a <mm_double_TT_c+0x6a>
mov    -0x8(%rbp),%eax
mov    %eax,-0x18c(%rbp)
mov    -0x18c(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x84(%rbp),%eax
imul   0x10(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x8c(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x8c(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x94(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x94(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x90(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xa0(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12c0 <mm_double_TT_c+0x1c0>
jp     12c0 <mm_double_TT_c+0x1c0>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xd8(%rbp)
mov    -0xd8(%rbp),%rax
cmp    -0xe0(%rbp),%rax
je     12bb <mm_double_TT_c+0x1bb>
mov    -0xd8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xd8(%rbp),%rax
mov    %rax,-0xe8(%rbp)
mov    -0xe8(%rbp),%rax
cmp    -0xf0(%rbp),%rax
je     1296 <mm_double_TT_c+0x196>
mov    -0xe8(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xe8(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xe8(%rbp)
jmp    125d <mm_double_TT_c+0x15d>
jmp    129b <mm_double_TT_c+0x19b>
mov    0x20(%rbp),%ecx
mov    -0xd8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
jmp    1222 <mm_double_TT_c+0x122>
jmp    13b2 <mm_double_TT_c+0x2b2>
movsd  -0x38(%rbp),%xmm0
movsd  0x1d33(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12e2 <mm_double_TT_c+0x1e2>
jp     12e2 <mm_double_TT_c+0x1e2>
jmp    13ad <mm_double_TT_c+0x2ad>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
cmp    -0x100(%rbp),%rax
je     13a8 <mm_double_TT_c+0x2a8>
mov    -0xf8(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x110(%rbp)
mov    -0xf8(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
cmp    -0x110(%rbp),%rax
je     1383 <mm_double_TT_c+0x283>
movsd  -0x38(%rbp),%xmm0
mov    -0x108(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x108(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x108(%rbp)
jmp    1344 <mm_double_TT_c+0x244>
jmp    1388 <mm_double_TT_c+0x288>
mov    0x20(%rbp),%ecx
mov    -0xf8(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
jmp    1309 <mm_double_TT_c+0x209>
jmp    13ad <mm_double_TT_c+0x2ad>
jmp    13b2 <mm_double_TT_c+0x2b2>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0xa0(%rbp),%rax
je     2053 <mm_double_TT_c+0xf53>
mov    -0x40(%rbp),%rax
movslq -0x88(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x98(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x120(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
mov    %rax,-0x78(%rbp)
mov    -0x78(%rbp),%rax
cmp    -0x120(%rbp),%rax
je     2028 <mm_double_TT_c+0xf28>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     1962 <mm_double_TT_c+0x862>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x70(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x118(%rbp),%rax
jne    1500 <mm_double_TT_c+0x400>
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x84(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1cd5 <mm_double_TT_c+0xbd5>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x70(%rbp)
mov    -0x84(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1ea8 <mm_double_TT_c+0xda8>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x70(%rbp)
mov    -0x84(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1f87 <mm_double_TT_c+0xe87>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x70(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x148(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
mov    -0x148(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x148(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
mov    -0x148(%rbp),%rax
movsd  0x10(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rax)
mov    -0x7c(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x78(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x78(%rbp)
jmp    1415 <mm_double_TT_c+0x315>
jmp    202d <mm_double_TT_c+0xf2d>
mov    -0x80(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x40(%rbp)
jmp    13c2 <mm_double_TT_c+0x2c2>
mov    -0x28(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0xa0(%rbp),%rax
je     2f21 <mm_double_TT_c+0x1e21>
mov    -0x40(%rbp),%rax
movslq -0x88(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x150(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x98(%rbp),%ecx
imul   0x18(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
movslq -0x98(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x78(%rbp)
mov    -0x94(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     298e <mm_double_TT_c+0x188e>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2494 <mm_double_TT_c+0x1394>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    0x10(%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  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
mov    0x10(%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  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%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  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%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  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x150(%rbp),%rax
jne    2171 <mm_double_TT_c+0x1071>
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x168(%rbp),%xmm0
ff
mulsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x84(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2718 <mm_double_TT_c+0x1618>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x84(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     286e <mm_double_TT_c+0x176e>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x68(%rbp)
mov    -0x84(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2915 <mm_double_TT_c+0x1815>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x68(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x170(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
mov    -0x170(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
mov    -0x170(%rbp),%rax
movsd  0x8(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x78(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x78(%rbp)
mov    -0x94(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2ef6 <mm_double_TT_c+0x1df6>
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2bea <mm_double_TT_c+0x1aea>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x58(%rbp),%rax
cmp    -0x150(%rbp),%rax
jne    2a06 <mm_double_TT_c+0x1906>
movsd  -0x180(%rbp),%xmm0
ff
mulsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x84(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2d7f <mm_double_TT_c+0x1c7f>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x84(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2e58 <mm_double_TT_c+0x1d58>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x84(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2ec7 <mm_double_TT_c+0x1dc7>
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x178(%rbp),%xmm0
ff
movsd  -0x180(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x78(%rbp),%rax
mov    %rax,-0x188(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
mov    -0x188(%rbp),%rax
movsd  (%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,(%rax)
jmp    2efb <mm_double_TT_c+0x1dfb>
mov    -0x80(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x40(%rbp)
jmp    2063 <mm_double_TT_c+0xf63>
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_TT_c>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
movapd %xmm0,%xmm9
mov    %r9,%r12
mov    %r8,0x48(%rsp)
mov    %rcx,0x40(%rsp)
mov    %edx,%r15d
lea    -0x1(%rsi),%eax
and    $0x3,%eax
cmp    $0x5,%esi
mov    %rsi,0x20(%rsp)
cmovl  %esi,%eax
mov    %eax,0x8(%rsp)
mov    0xe0(%rsp),%ecx
movslq %edx,%rax
mov    %rax,0x10(%rsp)
imul   %ecx,%edi
movslq %edi,%rbx
lea    (%r9,%rbx,8),%rax
mov    %rax,0x28(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    11db <mm_double_TT_c+0xcb>
jp     11db <mm_double_TT_c+0xcb>
test   %edi,%edi
je     1b85 <mm_double_TT_c+0xa75>
mov    %edi,0xc(%rsp)
movslq %ecx,%rbp
mov    0x10(%rsp),%rax
lea    0x0(,%rax,8),%r13
shl    $0x3,%rbp
shl    $0x3,%rbx
xor    %r14d,%r14d
movapd %xmm9,0x80(%rsp)
jmp    11bc <mm_double_TT_c+0xac>
nopl   0x0(%rax,%rax,1)
add    %rbp,%r14
cmp    %r14,%rbx
je     1334 <mm_double_TT_c+0x224>
test   %r15d,%r15d
je     11b0 <mm_double_TT_c+0xa0>
lea    (%r12,%r14,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
movapd 0x80(%rsp),%xmm9
jmp    11b0 <mm_double_TT_c+0xa0>
mov    %edi,0xc(%rsp)
ucomisd 0xe19(%rip),%xmm1
jne    11ef <mm_double_TT_c+0xdf>
jnp    1334 <mm_double_TT_c+0x224>
cmpl   $0x0,0xc(%rsp)
je     1334 <mm_double_TT_c+0x224>
movslq 0xe0(%rsp),%rax
mov    0x10(%rsp),%rcx
lea    -0x1(%rcx),%rdx
movabs $0x1fffffffffffffff,%rcx
ff ff 1f
and    %rdx,%rcx
lea    0x1(%rcx),%r9
mov    %r9,%rsi
and    $0xfffffffffffffffc,%rsi
lea    -0x4(%rsi),%r10
mov    %r10,%r11
shr    $0x2,%r11
add    $0x1,%r11
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    %r12,%rdx
jmp    125e <mm_double_TT_c+0x14e>
nopw   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x28(%rsp),%rdx
je     1334 <mm_double_TT_c+0x224>
test   %r15d,%r15d
je     1250 <mm_double_TT_c+0x140>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     12f9 <mm_double_TT_c+0x1e9>
test   %r10,%r10
je     132a <mm_double_TT_c+0x21a>
mov    %r8,%rdi
xor    %ebx,%ebx
xchg   %ax,%ax
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
movupd 0x20(%rdx,%rbx,8),%xmm4
movupd 0x30(%rdx,%rbx,8),%xmm5
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm0,%xmm4
mulpd  %xmm0,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1280 <mm_double_TT_c+0x170>
test   $0x1,%r11b
je     12ec <mm_double_TT_c+0x1dc>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm0,%xmm2
mulpd  %xmm0,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1250 <mm_double_TT_c+0x140>
lea    (%rdx,%rsi,8),%rdi
mov    0x10(%rsp),%rbx
lea    (%rdx,%rbx,8),%rbx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm1,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    1310 <mm_double_TT_c+0x200>
jmp    1250 <mm_double_TT_c+0x140>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12ce <mm_double_TT_c+0x1be>
jmp    12ec <mm_double_TT_c+0x1dc>
mov    0xc(%rsp),%eax
test   %eax,%eax
mov    0x40(%rsp),%rbx
mov    0x8(%rsp),%r13d
mov    0xe0(%rsp),%edx
je     1b85 <mm_double_TT_c+0xa75>
mov    0xd8(%rsp),%r8d
mov    0xd0(%rsp),%r9d
lea    (%r8,%r8,2),%ecx
mov    0x20(%rsp),%rsi
sub    %r13d,%esi
imul   %r9d,%esi
mov    0x10(%rsp),%rax
imul   $0x55555556,%rax,%rdi
mov    %rdi,%rbp
shr    $0x3f,%rbp
shr    $0x20,%rdi
add    %ebp,%edi
lea    (%rdi,%rdi,2),%edi
sub    %edi,%eax
mov    %rax,0x10(%rsp)
movslq %esi,%rax
mov    %rax,0x58(%rsp)
mov    %edi,0x1c(%rsp)
movslq %edi,%rax
mov    %rax,0x50(%rsp)
movslq %r8d,%r11
movslq %r9d,%rsi
movslq %ecx,%rcx
movslq %edx,%rax
mov    %rax,0x60(%rsp)
movapd %xmm9,%xmm8
unpcklpd %xmm9,%xmm8
mov    %r11,%rdx
shl    $0x4,%rdx
or     $0x8,%rdx
shl    $0x3,%rcx
mov    %rcx,0x78(%rsp)
lea    0x8(,%r11,8),%rdi
lea    (%rbx,%rsi,8),%rax
mov    %rax,0x68(%rsp)
lea    0x0(,%rsi,8),%rbp
mov    %r12,%rax
mov    %rbx,%r12
mov    %rax,0x70(%rsp)
mov    %rax,0x30(%rsp)
jmp    1438 <mm_double_TT_c+0x328>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    0x60(%rsp),%rax
mov    0x30(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
add    $0x8,%r12
addq   $0x8,0x68(%rsp)
mov    %rcx,0x30(%rsp)
cmp    0x28(%rsp),%rcx
je     1779 <mm_double_TT_c+0x669>
cmpl   $0x0,0x1c(%rsp)
je     1410 <mm_double_TT_c+0x300>
mov    0x58(%rsp),%rax
lea    (%r12,%rax,8),%r8
mov    0x50(%rsp),%rax
mov    0x30(%rsp),%r14
lea    (%r14,%rax,8),%rax
mov    %rax,0x38(%rsp)
mov    0x48(%rsp),%r15
jmp    14a8 <mm_double_TT_c+0x398>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movupd (%r14),%xmm0
mulpd  %xmm8,%xmm2
addpd  %xmm0,%xmm2
movupd %xmm2,(%r14)
mulsd  %xmm9,%xmm1
addsd  0x10(%r14),%xmm1
movsd  %xmm1,0x10(%r14)
add    0x78(%rsp),%r15
add    $0x18,%r14
cmp    0x38(%rsp),%r14
je     1410 <mm_double_TT_c+0x300>
lea    (%r15,%r11,8),%rax
lea    (%rax,%r11,8),%r10
cmpl   $0x5,0x20(%rsp)
jl     15e0 <mm_double_TT_c+0x4d0>
movsd  (%r10),%xmm4
movsd  (%r12),%xmm5
movsd  (%r15),%xmm3
movhpd (%rax),%xmm3
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
mov    0x68(%rsp),%rax
mov    %r15,%r9
nop
mulsd  %xmm5,%xmm4
unpcklpd %xmm5,%xmm5
mulpd  %xmm3,%xmm5
addpd  %xmm2,%xmm5
addsd  %xmm1,%xmm4
movsd  0x8(%r9),%xmm1
movsd  0x10(%r9),%xmm2
movsd  0x18(%r9),%xmm7
movhpd (%r9,%rdi,1),%xmm1
movsd  0x20(%r9),%xmm3
movsd  (%rax),%xmm6
movapd %xmm6,%xmm0
unpcklpd %xmm6,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm5,%xmm0
movupd (%r9,%rdx,1),%xmm1
movsd  (%rax,%rbp,1),%xmm5
add    %rbp,%rax
unpcklpd %xmm5,%xmm6
mulpd  %xmm1,%xmm6
movhpd 0x8(%r9,%rdi,1),%xmm2
addsd  %xmm6,%xmm4
unpcklpd %xmm5,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm0,%xmm5
unpckhpd %xmm6,%xmm6
addsd  %xmm4,%xmm6
movsd  0x0(%rbp,%rax,1),%xmm1
add    %rbp,%rax
movhpd 0x10(%r9,%rdi,1),%xmm7
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm7,%xmm2
addpd  %xmm5,%xmm2
mulsd  0x10(%r9,%rdx,1),%xmm1
addsd  %xmm6,%xmm1
movsd  0x18(%r9,%rdx,1),%xmm4
movhpd 0x18(%r9,%rdi,1),%xmm3
add    $0x20,%r9
movsd  0x0(%rbp,%rax,1),%xmm5
add    %rbp,%rax
add    %rbp,%rax
cmp    %r8,%rax
jne    14e0 <mm_double_TT_c+0x3d0>
mulsd  %xmm5,%xmm4
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm3
addpd  %xmm3,%xmm2
addsd  %xmm4,%xmm1
lea    (%r9,%rdx,1),%r10
lea    (%r9,%rdi,1),%rax
add    $0x8,%r9
mov    %r8,%rbx
test   $0x4,%r13b
jne    15f8 <mm_double_TT_c+0x4e8>
jmp    16c0 <mm_double_TT_c+0x5b0>
nopl   0x0(%rax,%rax,1)
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
mov    %r15,%r9
mov    %r12,%rbx
test   $0x4,%r13b
je     16c0 <mm_double_TT_c+0x5b0>
movsd  (%rbx),%xmm0
movsd  (%r9),%xmm5
movsd  0x8(%r9),%xmm6
movsd  0x10(%r9),%xmm4
movsd  0x18(%r9),%xmm3
movhpd (%rax),%xmm5
movapd %xmm0,%xmm7
unpcklpd %xmm0,%xmm7
mulpd  %xmm5,%xmm7
mulsd  (%r10),%xmm0
addpd  %xmm2,%xmm7
addsd  %xmm1,%xmm0
lea    (%rbx,%rsi,8),%r13
movsd  (%rbx,%rsi,8),%xmm1
movhpd 0x8(%rax),%xmm6
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm6,%xmm2
addpd  %xmm7,%xmm2
mulsd  0x8(%r10),%xmm1
addsd  %xmm0,%xmm1
lea    0x0(%r13,%rsi,8),%rbx
movsd  0x0(%r13,%rsi,8),%xmm0
mov    0x8(%rsp),%r13d
movhpd 0x10(%rax),%xmm4
movapd %xmm0,%xmm5
unpcklpd %xmm0,%xmm5
mulpd  %xmm4,%xmm5
mulsd  0x10(%r10),%xmm0
addpd  %xmm2,%xmm5
addsd  %xmm1,%xmm0
lea    (%rbx,%rsi,8),%rcx
movsd  (%rbx,%rsi,8),%xmm1
movhpd 0x18(%rax),%xmm3
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm5,%xmm2
mulsd  0x18(%r10),%xmm1
addsd  %xmm0,%xmm1
lea    (%rcx,%rsi,8),%rbx
add    $0x20,%r9
add    $0x20,%rax
add    $0x20,%r10
test   $0x2,%r13b
jne    16e0 <mm_double_TT_c+0x5d0>
test   $0x1,%r13b
je     1470 <mm_double_TT_c+0x360>
jmp    174e <mm_double_TT_c+0x63e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rbx),%xmm0
movsd  (%r9),%xmm3
movsd  0x8(%r9),%xmm4
movhpd (%rax),%xmm3
movapd %xmm0,%xmm5
unpcklpd %xmm0,%xmm5
mulpd  %xmm3,%xmm5
mulsd  (%r10),%xmm0
addpd  %xmm2,%xmm5
addsd  %xmm1,%xmm0
lea    (%rbx,%rsi,8),%rcx
movsd  (%rbx,%rsi,8),%xmm1
movhpd 0x8(%rax),%xmm4
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm4,%xmm2
addpd  %xmm5,%xmm2
mulsd  0x8(%r10),%xmm1
addsd  %xmm0,%xmm1
lea    (%rcx,%rsi,8),%rbx
add    $0x10,%r9
add    $0x10,%rax
add    $0x10,%r10
test   $0x1,%r13b
je     1470 <mm_double_TT_c+0x360>
movsd  (%rbx),%xmm0
movsd  (%r9),%xmm3
movhpd (%rax),%xmm3
movapd %xmm0,%xmm4
unpcklpd %xmm0,%xmm4
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm2
mulsd  (%r10),%xmm0
addsd  %xmm0,%xmm1
jmp    1470 <mm_double_TT_c+0x360>
cmpl   $0x0,0xc(%rsp)
mov    0x70(%rsp),%rcx
mov    0x40(%rsp),%rdx
je     1b85 <mm_double_TT_c+0xa75>
mov    0x1c(%rsp),%eax
imul   %r11d,%eax
cltq
mov    0x48(%rsp),%rdi
lea    (%rdi,%rax,8),%r15
lea    (%r15,%r11,8),%r9
lea    0x8(%rdi,%rax,8),%rax
mov    %rax,0x38(%rsp)
lea    (%r11,%r11,1),%eax
cltq
lea    (%r15,%rax,8),%r8
shl    $0x3,%r11
lea    (%rdx,%rsi,8),%r12
jmp    17fb <mm_double_TT_c+0x6eb>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mulsd  %xmm9,%xmm1
addsd  (%r10),%xmm1
movsd  %xmm1,(%r10)
mov    0x60(%rsp),%rax
lea    (%rcx,%rax,8),%rcx
add    $0x8,%rdx
add    $0x8,%r12
cmp    0x28(%rsp),%rcx
je     1b85 <mm_double_TT_c+0xa75>
mov    0x58(%rsp),%rax
lea    (%rdx,%rax,8),%r14
mov    0x50(%rsp),%rax
lea    (%rcx,%rax,8),%r10
testb  $0x2,0x10(%rsp)
jne    1820 <mm_double_TT_c+0x710>
mov    %r15,%rax
testb  $0x1,0x10(%rsp)
je     17df <mm_double_TT_c+0x6cf>
jmp    189a <mm_double_TT_c+0x78a>
xorpd  %xmm1,%xmm1
mov    %r9,%rdi
mov    %r15,%rax
mov    %rdx,%r13
cmpl   $0x5,0x20(%rsp)
jge    1930 <mm_double_TT_c+0x820>
testb  $0x4,0x8(%rsp)
jne    19fa <mm_double_TT_c+0x8ea>
testb  $0x2,0x8(%rsp)
jne    1a86 <mm_double_TT_c+0x976>
testb  $0x1,0x8(%rsp)
je     186d <mm_double_TT_c+0x75d>
movsd  (%rax),%xmm0
movhpd (%rdi),%xmm0
movsd  (%rdx),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm0,%xmm2
addpd  %xmm2,%xmm1
mov    %r13,%rdx
movupd (%r10),%xmm0
mulpd  %xmm8,%xmm1
addpd  %xmm0,%xmm1
movupd %xmm1,(%r10)
add    $0x10,%r10
mov    %r8,%rax
mov    0x8(%rsp),%r13d
testb  $0x1,0x10(%rsp)
je     17df <mm_double_TT_c+0x6cf>
xorpd  %xmm1,%xmm1
cmpl   $0x5,0x20(%rsp)
jl     1ae0 <mm_double_TT_c+0x9d0>
movsd  (%rax),%xmm2
mov    %rdx,%rbx
movsd  (%rdx),%xmm3
add    $0x8,%rax
xorpd  %xmm1,%xmm1
mov    %r12,%rdx
nop
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
movupd (%rax),%xmm0
movsd  (%rdx),%xmm3
movhpd (%rdx,%rbp,1),%xmm3
lea    (%rdx,%rbp,1),%rdi
mulpd  %xmm0,%xmm3
addsd  %xmm3,%xmm2
unpckhpd %xmm3,%xmm3
addsd  %xmm2,%xmm3
movsd  0x10(%rax),%xmm1
mulsd  0x0(%rbp,%rdi,1),%xmm1
add    %rbp,%rdi
addsd  %xmm3,%xmm1
movsd  0x18(%rax),%xmm2
movsd  0x0(%rbp,%rdi,1),%xmm3
add    %rbp,%rdi
add    $0x20,%rax
add    %rbp,%rdi
mov    %rdi,%rdx
cmp    %r14,%rdi
jne    18c0 <mm_double_TT_c+0x7b0>
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm1
mov    %rbx,%rdx
jmp    1ae3 <mm_double_TT_c+0x9d3>
nopl   0x0(%rax,%rax,1)
movsd  0x0(%r13),%xmm3
movsd  (%r15),%xmm2
movhpd (%r9),%xmm2
xorpd  %xmm1,%xmm1
mov    %r12,%rdx
mov    0x38(%rsp),%rax
nopl   0x0(%rax)
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm1,%xmm3
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm1
movsd  0x10(%rax),%xmm4
movsd  0x18(%rax),%xmm2
movhpd (%rax,%r11,1),%xmm0
movsd  (%rdx),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm0,%xmm5
movhpd 0x8(%rax,%r11,1),%xmm1
addpd  %xmm3,%xmm5
movsd  (%rdx,%rbp,1),%xmm0
add    %rbp,%rdx
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm5,%xmm0
movhpd 0x10(%rax,%r11,1),%xmm4
movsd  0x0(%rbp,%rdx,1),%xmm1
add    %rbp,%rdx
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm0,%xmm1
movsd  0x0(%rbp,%rdx,1),%xmm3
movhpd 0x18(%rax,%r11,1),%xmm2
add    %rbp,%rdx
add    $0x20,%rax
add    %rbp,%rdx
cmp    %r14,%rdx
jne    1950 <mm_double_TT_c+0x840>
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm2
addpd  %xmm2,%xmm1
lea    (%rax,%r11,1),%rdi
mov    %r14,%rdx
testb  $0x4,0x8(%rsp)
je     1843 <mm_double_TT_c+0x733>
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm3
movsd  0x10(%rax),%xmm4
movsd  0x18(%rax),%xmm2
movhpd (%rdi),%xmm0
movsd  (%rdx),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm1,%xmm5
lea    (%rdx,%rsi,8),%rbx
movhpd 0x8(%rdi),%xmm3
movsd  (%rdx,%rsi,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm5,%xmm0
lea    (%rbx,%rsi,8),%rdx
movhpd 0x10(%rdi),%xmm4
movsd  (%rbx,%rsi,8),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm0,%xmm3
movhpd 0x18(%rdi),%xmm2
lea    (%rdx,%rsi,8),%rbx
movsd  (%rdx,%rsi,8),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
lea    (%rbx,%rsi,8),%rdx
add    $0x20,%rax
add    $0x20,%rdi
testb  $0x2,0x8(%rsp)
je     184e <mm_double_TT_c+0x73e>
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm2
movhpd (%rdi),%xmm0
movsd  (%rdx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm0,%xmm3
addpd  %xmm1,%xmm3
movhpd 0x8(%rdi),%xmm2
lea    (%rdx,%rsi,8),%rbx
movsd  (%rdx,%rsi,8),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm3,%xmm1
lea    (%rbx,%rsi,8),%rdx
add    $0x10,%rax
add    $0x10,%rdi
testb  $0x1,0x8(%rsp)
jne    1855 <mm_double_TT_c+0x745>
jmp    186d <mm_double_TT_c+0x75d>
nopl   0x0(%rax)
mov    %rdx,%r14
mov    %rdx,%rbx
test   $0x4,%r13b
je     1b38 <mm_double_TT_c+0xa28>
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm2
mulsd  (%r14),%xmm0
addsd  %xmm1,%xmm0
lea    (%r14,%rsi,8),%rdx
mulsd  (%r14,%rsi,8),%xmm2
addsd  %xmm0,%xmm2
lea    (%rdx,%rsi,8),%rdi
movsd  0x10(%rax),%xmm0
mulsd  (%rdx,%rsi,8),%xmm0
addsd  %xmm2,%xmm0
movsd  0x18(%rax),%xmm1
mulsd  (%rdi,%rsi,8),%xmm1
lea    (%rdi,%rsi,8),%rdx
addsd  %xmm0,%xmm1
lea    (%rdx,%rsi,8),%r14
add    $0x20,%rax
test   $0x2,%r13b
je     1b66 <mm_double_TT_c+0xa56>
movsd  (%rax),%xmm0
mulsd  (%r14),%xmm0
addsd  %xmm1,%xmm0
movsd  0x8(%rax),%xmm1
mulsd  (%r14,%rsi,8),%xmm1
lea    (%r14,%rsi,8),%rdx
addsd  %xmm0,%xmm1
lea    (%rdx,%rsi,8),%r14
add    $0x10,%rax
mov    %rbx,%rdx
test   $0x1,%r13b
je     17d0 <mm_double_TT_c+0x6c0>
movsd  (%rax),%xmm0
mulsd  (%r14),%xmm0
addsd  %xmm0,%xmm1
jmp    17d0 <mm_double_TT_c+0x6c0>
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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