void mm_double_TT_1(const int M, const int K, const int N,
                    const double *const A, const double *const B,
                    double *const C, const int Astride, const int Bstride,
                    const int Cstride, const double beta) {
  const double *a;
  const double *b;
  double *c;
  const double *ap;
  const double *bp_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;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      c0_2 = _cp[2];
      if (K >= 5) {
        _b0 = bp_0[0];
        _b1 = bp_1[0];
        _b2 = bp_2[0];
        _a0 = ap[0];
        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] = c0_0;
      _cp[1] = c0_1;
      _cp[2] = c0_2;
    }
  }
  for (c = C, a = A; c != c_endp; c += C_sbs_stride, a += 1) {
    const double *const ap_endp = a + k_norm;
    b = B + n_norm * 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;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      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] = c0_0;
      _cp[1] = c0_1;
      b += Bstride * 2;
      cp += 2;
    }
    if (n_marg_el & 0x1) {
      register double _b0;
      register double _a0;
      double *_cp;
      ap = a;
      bp_0 = b;
      _cp = cp;
      c0_0 = _cp[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] = c0_0;
    }
  }
}


x86 assembly (clang, -O0):
<mm_double_TT_1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x108,%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)
imul   $0x3,0x18(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    0x20(%rbp),%eax
shl    $0x0,%eax
mov    %eax,-0x78(%rbp)
cmpl   $0x5,-0x8(%rbp)
jl     115c <mm_double_TT_1+0x5c>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0x3,%eax
mov    %eax,-0x184(%rbp)
jmp    1165 <mm_double_TT_1+0x65>
mov    -0x8(%rbp),%eax
mov    %eax,-0x184(%rbp)
mov    -0x184(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x7c(%rbp),%eax
imul   0x10(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x4(%rbp),%eax
and    $0x0,%eax
mov    %eax,-0x84(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x84(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x3,%ecx
cltd
idiv   %ecx
mov    %edx,-0x8c(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x8c(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x88(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x98(%rbp)
movsd  -0x30(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    12b2 <mm_double_TT_1+0x1b2>
jp     12b2 <mm_double_TT_1+0x1b2>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xd0(%rbp)
mov    -0xd0(%rbp),%rax
cmp    -0xd8(%rbp),%rax
je     12ad <mm_double_TT_1+0x1ad>
mov    -0xd0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe8(%rbp)
mov    -0xd0(%rbp),%rax
mov    %rax,-0xe0(%rbp)
mov    -0xe0(%rbp),%rax
cmp    -0xe8(%rbp),%rax
je     1288 <mm_double_TT_1+0x188>
mov    -0xe0(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0xe0(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0xe0(%rbp)
jmp    124f <mm_double_TT_1+0x14f>
jmp    128d <mm_double_TT_1+0x18d>
mov    0x20(%rbp),%ecx
mov    -0xd0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd0(%rbp)
jmp    1214 <mm_double_TT_1+0x114>
jmp    13a4 <mm_double_TT_1+0x2a4>
movsd  -0x30(%rbp),%xmm0
movsd  0x1d41(%rip),%xmm1
ucomisd %xmm1,%xmm0
jne    12d4 <mm_double_TT_1+0x1d4>
jp     12d4 <mm_double_TT_1+0x1d4>
jmp    139f <mm_double_TT_1+0x29f>
mov    -0x28(%rbp),%rax
mov    -0x4(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
cmp    -0xf8(%rbp),%rax
je     139a <mm_double_TT_1+0x29a>
mov    -0xf0(%rbp),%rax
movslq -0xc(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0xf0(%rbp),%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
cmp    -0x108(%rbp),%rax
je     1375 <mm_double_TT_1+0x275>
movsd  -0x30(%rbp),%xmm0
mov    -0x100(%rbp),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x100(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x100(%rbp)
jmp    1336 <mm_double_TT_1+0x236>
jmp    137a <mm_double_TT_1+0x27a>
mov    0x20(%rbp),%ecx
mov    -0xf0(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
jmp    12fb <mm_double_TT_1+0x1fb>
jmp    139f <mm_double_TT_1+0x29f>
jmp    13a4 <mm_double_TT_1+0x2a4>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x98(%rbp),%rax
je     2029 <mm_double_TT_1+0xf29>
mov    -0x38(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x110(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x90(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x118(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    -0x70(%rbp),%rax
cmp    -0x118(%rbp),%rax
je     1ffe <mm_double_TT_1+0xefe>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x140(%rbp)
mov    -0x140(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x140(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x140(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     1976 <mm_double_TT_1+0x876>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x68(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x138(%rbp),%xmm0
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x110(%rbp),%rax
jne    1514 <mm_double_TT_1+0x414>
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x7c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1ce6 <mm_double_TT_1+0xbe6>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x68(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1eb6 <mm_double_TT_1+0xdb6>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x68(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x68(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1f92 <mm_double_TT_1+0xe92>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x120(%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    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
movsd  -0x138(%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  -0x138(%rbp),%xmm2
ff
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x140(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x140(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x140(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x140(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x74(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x70(%rbp),%rax
add    $0x18,%rax
mov    %rax,-0x70(%rbp)
jmp    1404 <mm_double_TT_1+0x304>
jmp    2003 <mm_double_TT_1+0xf03>
mov    -0x78(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
jmp    13b4 <mm_double_TT_1+0x2b4>
mov    -0x28(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0x98(%rbp),%rax
je     2edd <mm_double_TT_1+0x1ddd>
mov    -0x38(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x148(%rbp)
mov    -0x20(%rbp),%rax
mov    -0x90(%rbp),%ecx
imul   0x18(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x48(%rbp),%rax
movslq -0x90(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x70(%rbp)
mov    -0x8c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2951 <mm_double_TT_1+0x1851>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x58(%rbp),%rax
movslq 0x18(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x60(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x168(%rbp)
mov    -0x168(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x168(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2483 <mm_double_TT_1+0x1383>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x60(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x148(%rbp),%rax
jne    2160 <mm_double_TT_1+0x1060>
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x160(%rbp),%xmm0
ff
mulsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x7c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2704 <mm_double_TT_1+0x1604>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x60(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2857 <mm_double_TT_1+0x1757>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     28fb <mm_double_TT_1+0x17fb>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x60(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x150(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x160(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x168(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x168(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x168(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x18(%rbp),%ecx
shl    $0x1,%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x70(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x70(%rbp)
mov    -0x8c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2eb2 <mm_double_TT_1+0x1db2>
mov    -0x38(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x180(%rbp)
mov    -0x180(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
cmpl   $0x5,-0x8(%rbp)
jl     2bc0 <mm_double_TT_1+0x1ac0>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x58(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x58(%rbp)
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x50(%rbp),%rax
cmp    -0x148(%rbp),%rax
jne    29dc <mm_double_TT_1+0x18dc>
movsd  -0x178(%rbp),%xmm0
ff
mulsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x7c(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2d52 <mm_double_TT_1+0x1c52>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x58(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2e28 <mm_double_TT_1+0x1d28>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x58(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x58(%rbp)
mov    -0x7c(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2e94 <mm_double_TT_1+0x1d94>
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x170(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x10(%rbp),%ecx
mov    -0x50(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x50(%rbp)
mov    -0x70(%rbp),%rax
mov    %rax,-0x180(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x180(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    2eb7 <mm_double_TT_1+0x1db7>
mov    -0x78(%rbp),%ecx
mov    -0x48(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x48(%rbp)
mov    -0x38(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x38(%rbp)
jmp    2039 <mm_double_TT_1+0xf39>
add    $0x108,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mm_double_TT_1>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %r8,0x40(%rsp)
mov    %edx,%r15d
lea    -0x1(%rsi),%eax
and    $0x3,%eax
cmp    $0x5,%esi
mov    %rsi,0x20(%rsp)
cmovl  %esi,%eax
mov    %eax,(%rsp)
mov    0xc0(%rsp),%edx
movslq %r15d,%r12
imul   %edx,%edi
movslq %edi,%rbx
mov    %r9,0x18(%rsp)
lea    (%r9,%rbx,8),%rax
mov    %rax,0x30(%rsp)
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11b6 <mm_double_TT_1+0xa6>
jp     11b6 <mm_double_TT_1+0xa6>
test   %edi,%edi
je     1b14 <mm_double_TT_1+0xa04>
mov    %edi,0x4(%rsp)
mov    %rcx,0x28(%rsp)
movslq %edx,%rbp
lea    0x0(,%r12,8),%r13
shl    $0x3,%rbp
shl    $0x3,%rbx
xor    %r14d,%r14d
jmp    119c <mm_double_TT_1+0x8c>
nopl   (%rax)
add    %rbp,%r14
cmp    %r14,%rbx
je     1304 <mm_double_TT_1+0x1f4>
test   %r15d,%r15d
je     1190 <mm_double_TT_1+0x80>
mov    0x18(%rsp),%rax
lea    (%rax,%r14,1),%rdi
xor    %esi,%esi
mov    %r13,%rdx
call   1030 <memset@plt>
jmp    1190 <mm_double_TT_1+0x80>
mov    %edi,0x4(%rsp)
mov    %rcx,0x28(%rsp)
ucomisd 0xe39(%rip),%xmm0
jne    11cf <mm_double_TT_1+0xbf>
jnp    1304 <mm_double_TT_1+0x1f4>
cmpl   $0x0,0x4(%rsp)
je     1304 <mm_double_TT_1+0x1f4>
movslq 0xc0(%rsp),%rax
lea    -0x1(%r12),%rdx
movabs $0x1fffffffffffffff,%rcx
ff ff 1f
and    %rdx,%rcx
lea    0x1(%rcx),%r9
mov    %r9,%rsi
and    $0xfffffffffffffffc,%rsi
lea    -0x4(%rsi),%r10
mov    %r10,%r11
shr    $0x2,%r11
add    $0x1,%r11
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mov    %r11,%r8
and    $0xfffffffffffffffe,%r8
shl    $0x3,%rax
mov    0x18(%rsp),%rdx
jmp    123e <mm_double_TT_1+0x12e>
nopl   0x0(%rax,%rax,1)
add    %rax,%rdx
cmp    0x30(%rsp),%rdx
je     1304 <mm_double_TT_1+0x1f4>
test   %r15d,%r15d
je     1230 <mm_double_TT_1+0x120>
mov    %rdx,%rdi
cmp    $0x3,%rcx
jb     12d9 <mm_double_TT_1+0x1c9>
test   %r10,%r10
je     12fa <mm_double_TT_1+0x1ea>
mov    %r8,%rdi
xor    %ebx,%ebx
xchg   %ax,%ax
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
movupd 0x20(%rdx,%rbx,8),%xmm4
movupd 0x30(%rdx,%rbx,8),%xmm5
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
mulpd  %xmm1,%xmm4
mulpd  %xmm1,%xmm5
movupd %xmm4,0x20(%rdx,%rbx,8)
movupd %xmm5,0x30(%rdx,%rbx,8)
add    $0x8,%rbx
add    $0xfffffffffffffffe,%rdi
jne    1260 <mm_double_TT_1+0x150>
test   $0x1,%r11b
je     12cc <mm_double_TT_1+0x1bc>
movupd (%rdx,%rbx,8),%xmm2
movupd 0x10(%rdx,%rbx,8),%xmm3
mulpd  %xmm1,%xmm2
mulpd  %xmm1,%xmm3
movupd %xmm2,(%rdx,%rbx,8)
movupd %xmm3,0x10(%rdx,%rbx,8)
cmp    %rsi,%r9
je     1230 <mm_double_TT_1+0x120>
lea    (%rdx,%rsi,8),%rdi
lea    (%rdx,%r12,8),%rbx
nopl   (%rax)
movsd  (%rdi),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,(%rdi)
add    $0x8,%rdi
cmp    %rbx,%rdi
jne    12e0 <mm_double_TT_1+0x1d0>
jmp    1230 <mm_double_TT_1+0x120>
xor    %ebx,%ebx
test   $0x1,%r11b
jne    12ae <mm_double_TT_1+0x19e>
jmp    12cc <mm_double_TT_1+0x1bc>
mov    0x4(%rsp),%eax
test   %eax,%eax
mov    0x28(%rsp),%rbx
mov    0xc0(%rsp),%ecx
je     1b14 <mm_double_TT_1+0xa04>
mov    0xb8(%rsp),%r8d
mov    0xb0(%rsp),%r9d
lea    (%r8,%r8,2),%edx
mov    0x20(%rsp),%rsi
mov    %esi,%eax
mov    (%rsp),%esi
sub    %esi,%eax
imul   %r9d,%eax
imul   $0x55555556,%r12,%rdi
mov    %rdi,%rbp
shr    $0x3f,%rbp
shr    $0x20,%rdi
add    %ebp,%edi
lea    (%rdi,%rdi,2),%edi
sub    %edi,%r12d
mov    %r12,0x58(%rsp)
cltq
mov    %rax,0x50(%rsp)
mov    %edi,0x14(%rsp)
movslq %edi,%rax
mov    %rax,0x48(%rsp)
movslq %r8d,%r11
movslq %r9d,%r12
movslq %edx,%r9
movslq %ecx,%rax
mov    %rax,0x60(%rsp)
mov    %r11,%rdx
shl    $0x4,%rdx
or     $0x8,%rdx
shl    $0x3,%r9
lea    0x8(,%r11,8),%rdi
lea    (%rbx,%r12,8),%rax
mov    %rax,0x68(%rsp)
lea    0x0(,%r12,8),%rbp
mov    %rbx,0x8(%rsp)
mov    0x18(%rsp),%rax
mov    %rax,0x38(%rsp)
jmp    13ea <mm_double_TT_1+0x2da>
nopl   0x0(%rax)
mov    0x60(%rsp),%rax
mov    0x38(%rsp),%rcx
lea    (%rcx,%rax,8),%rcx
addq   $0x8,0x8(%rsp)
addq   $0x8,0x68(%rsp)
mov    %rcx,0x38(%rsp)
cmp    0x30(%rsp),%rcx
je     170a <mm_double_TT_1+0x5fa>
cmpl   $0x0,0x14(%rsp)
je     13c0 <mm_double_TT_1+0x2b0>
mov    0x50(%rsp),%rax
mov    0x8(%rsp),%rcx
lea    (%rcx,%rax,8),%r13
mov    0x48(%rsp),%rax
mov    0x38(%rsp),%r14
lea    (%r14,%rax,8),%rax
mov    %rax,0x70(%rsp)
mov    0x40(%rsp),%r15
jmp    1439 <mm_double_TT_1+0x329>
nopl   0x0(%rax)
movupd %xmm1,(%r14)
movsd  %xmm0,0x10(%r14)
add    %r9,%r15
add    $0x18,%r14
cmp    0x70(%rsp),%r14
je     13c0 <mm_double_TT_1+0x2b0>
lea    (%r15,%r11,8),%rax
lea    (%rax,%r11,8),%r10
movupd (%r14),%xmm1
movsd  0x10(%r14),%xmm0
cmpl   $0x5,0x20(%rsp)
jl     1580 <mm_double_TT_1+0x470>
movsd  (%r10),%xmm3
mov    0x8(%rsp),%rcx
movsd  (%rcx),%xmm4
movsd  (%r15),%xmm2
movhpd (%rax),%xmm2
mov    0x68(%rsp),%rax
mov    %r15,%r8
cs nopw 0x0(%rax,%rax,1)
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm1,%xmm4
addsd  %xmm0,%xmm3
movsd  0x8(%r8),%xmm0
movsd  0x10(%r8),%xmm1
movsd  0x18(%r8),%xmm6
movhpd (%r8,%rdi,1),%xmm0
movsd  0x20(%r8),%xmm2
movsd  (%rax),%xmm5
movapd %xmm5,%xmm7
unpcklpd %xmm5,%xmm7
mulpd  %xmm0,%xmm7
addpd  %xmm4,%xmm7
movupd (%r8,%rdx,1),%xmm0
movsd  (%rax,%rbp,1),%xmm4
add    %rbp,%rax
unpcklpd %xmm4,%xmm5
mulpd  %xmm0,%xmm5
movhpd 0x8(%r8,%rdi,1),%xmm1
addsd  %xmm5,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm1,%xmm4
addpd  %xmm7,%xmm4
unpckhpd %xmm5,%xmm5
addsd  %xmm3,%xmm5
movsd  0x0(%rbp,%rax,1),%xmm0
add    %rbp,%rax
movhpd 0x10(%r8,%rdi,1),%xmm6
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm6,%xmm1
addpd  %xmm4,%xmm1
mulsd  0x10(%r8,%rdx,1),%xmm0
addsd  %xmm5,%xmm0
movsd  0x18(%r8,%rdx,1),%xmm3
movhpd 0x18(%r8,%rdi,1),%xmm2
add    $0x20,%r8
movsd  0x0(%rbp,%rax,1),%xmm4
add    %rbp,%rax
add    %rbp,%rax
cmp    %r13,%rax
jne    1480 <mm_double_TT_1+0x370>
mulsd  %xmm4,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm2
addpd  %xmm2,%xmm1
addsd  %xmm3,%xmm0
lea    (%r8,%rdx,1),%r10
lea    (%r8,%rdi,1),%rax
add    $0x8,%r8
mov    %r13,%rbx
test   $0x4,%sil
jne    1592 <mm_double_TT_1+0x482>
jmp    165e <mm_double_TT_1+0x54e>
nopl   0x0(%rax,%rax,1)
mov    %r15,%r8
mov    0x8(%rsp),%rbx
test   $0x4,%sil
je     165e <mm_double_TT_1+0x54e>
movsd  (%rbx),%xmm4
movsd  (%r8),%xmm5
movsd  0x8(%r8),%xmm6
movsd  0x10(%r8),%xmm3
movsd  0x18(%r8),%xmm2
movhpd (%rax),%xmm5
movapd %xmm4,%xmm7
unpcklpd %xmm4,%xmm7
mulpd  %xmm5,%xmm7
mulsd  (%r10),%xmm4
addpd  %xmm1,%xmm7
addsd  %xmm0,%xmm4
mov    %r9,%rcx
lea    (%rbx,%r12,8),%r9
movsd  (%rbx,%r12,8),%xmm0
movhpd 0x8(%rax),%xmm6
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm6,%xmm1
addpd  %xmm7,%xmm1
mulsd  0x8(%r10),%xmm0
addsd  %xmm4,%xmm0
lea    (%r9,%r12,8),%rbx
movsd  (%r9,%r12,8),%xmm4
mov    %rcx,%r9
mov    (%rsp),%esi
movhpd 0x10(%rax),%xmm3
movapd %xmm4,%xmm5
unpcklpd %xmm4,%xmm5
mulpd  %xmm3,%xmm5
mulsd  0x10(%r10),%xmm4
addpd  %xmm1,%xmm5
addsd  %xmm0,%xmm4
lea    (%rbx,%r12,8),%rcx
movsd  (%rbx,%r12,8),%xmm0
movhpd 0x18(%rax),%xmm2
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm2,%xmm1
addpd  %xmm5,%xmm1
mulsd  0x18(%r10),%xmm0
addsd  %xmm4,%xmm0
lea    (%rcx,%r12,8),%rbx
add    $0x20,%r8
add    $0x20,%rax
add    $0x20,%r10
test   $0x2,%sil
jne    1670 <mm_double_TT_1+0x560>
test   $0x1,%sil
je     1420 <mm_double_TT_1+0x310>
jmp    16df <mm_double_TT_1+0x5cf>
movsd  (%rbx),%xmm2
movsd  (%r8),%xmm3
movsd  0x8(%r8),%xmm4
movhpd (%rax),%xmm3
movapd %xmm2,%xmm5
unpcklpd %xmm2,%xmm5
mulpd  %xmm3,%xmm5
mulsd  (%r10),%xmm2
addpd  %xmm1,%xmm5
addsd  %xmm0,%xmm2
lea    (%rbx,%r12,8),%rcx
movsd  (%rbx,%r12,8),%xmm0
movhpd 0x8(%rax),%xmm4
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm5,%xmm1
mulsd  0x8(%r10),%xmm0
addsd  %xmm2,%xmm0
lea    (%rcx,%r12,8),%rbx
add    $0x10,%r8
add    $0x10,%rax
add    $0x10,%r10
test   $0x1,%sil
je     1420 <mm_double_TT_1+0x310>
movsd  (%rbx),%xmm2
movsd  (%r8),%xmm3
movhpd (%rax),%xmm3
movapd %xmm2,%xmm4
unpcklpd %xmm2,%xmm4
mulpd  %xmm3,%xmm4
addpd  %xmm4,%xmm1
mulsd  (%r10),%xmm2
addsd  %xmm2,%xmm0
jmp    1420 <mm_double_TT_1+0x310>
cmpl   $0x0,0x4(%rsp)
mov    0x18(%rsp),%rsi
mov    0x28(%rsp),%r13
je     1b14 <mm_double_TT_1+0xa04>
mov    0x14(%rsp),%eax
imul   %r11d,%eax
cltq
mov    0x40(%rsp),%rcx
lea    (%rcx,%rax,8),%r15
lea    (%r15,%r11,8),%r8
lea    0x8(%rcx,%rax,8),%rax
mov    %rax,0x8(%rsp)
lea    (%r11,%r11,1),%eax
cltq
lea    (%r15,%rax,8),%r9
shl    $0x3,%r11
lea    0x0(,%r12,8),%rax
add    %r13,%rax
jmp    1781 <mm_double_TT_1+0x671>
nopl   0x0(%rax,%rax,1)
movsd  %xmm0,(%r10)
mov    0x60(%rsp),%rcx
lea    (%rsi,%rcx,8),%rsi
add    $0x8,%r13
add    $0x8,%rax
cmp    0x30(%rsp),%rsi
je     1b14 <mm_double_TT_1+0xa04>
mov    0x50(%rsp),%rcx
lea    0x0(,%rcx,8),%r14
add    %r13,%r14
mov    0x48(%rsp),%rcx
lea    (%rsi,%rcx,8),%r10
testb  $0x2,0x58(%rsp)
jne    17b0 <mm_double_TT_1+0x6a0>
mov    %r15,%rdi
testb  $0x1,0x58(%rsp)
je     1765 <mm_double_TT_1+0x655>
jmp    1966 <mm_double_TT_1+0x856>
movupd (%r10),%xmm0
cmpl   $0x5,0x20(%rsp)
jl     1890 <mm_double_TT_1+0x780>
movsd  0x0(%r13),%xmm2
movsd  (%r15),%xmm1
movhpd (%r8),%xmm1
mov    %rax,%rcx
mov    0x8(%rsp),%rdi
nopl   0x0(%rax,%rax,1)
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movsd  (%rdi),%xmm0
movsd  0x8(%rdi),%xmm3
movsd  0x10(%rdi),%xmm4
movsd  0x18(%rdi),%xmm1
movhpd (%rdi,%r11,1),%xmm0
movsd  (%rcx),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm0,%xmm5
movhpd 0x8(%rdi,%r11,1),%xmm3
addpd  %xmm2,%xmm5
movsd  (%rcx,%rbp,1),%xmm2
add    %rbp,%rcx
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
addpd  %xmm5,%xmm2
movhpd 0x10(%rdi,%r11,1),%xmm4
movsd  0x0(%rbp,%rcx,1),%xmm0
add    %rbp,%rcx
unpcklpd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm2,%xmm0
movsd  0x0(%rbp,%rcx,1),%xmm2
movhpd 0x18(%rdi,%r11,1),%xmm1
add    %rbp,%rcx
add    $0x20,%rdi
add    %rbp,%rcx
cmp    %r14,%rcx
jne    17e0 <mm_double_TT_1+0x6d0>
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
addpd  %xmm1,%xmm0
lea    (%rdi,%r11,1),%rcx
mov    %r14,%rdx
testb  $0x4,(%rsp)
jne    18a3 <mm_double_TT_1+0x793>
jmp    1927 <mm_double_TT_1+0x817>
nopw   0x0(%rax,%rax,1)
mov    %r8,%rcx
mov    %r15,%rdi
mov    %r13,%rdx
testb  $0x4,(%rsp)
je     1927 <mm_double_TT_1+0x817>
movsd  (%rdi),%xmm2
movsd  0x8(%rdi),%xmm3
movsd  0x10(%rdi),%xmm4
movsd  0x18(%rdi),%xmm1
movhpd (%rcx),%xmm2
movsd  (%rdx),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm0,%xmm5
lea    (%rdx,%r12,8),%rbx
movhpd 0x8(%rcx),%xmm3
movsd  (%rdx,%r12,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm5,%xmm0
lea    (%rbx,%r12,8),%rdx
movhpd 0x10(%rcx),%xmm4
movsd  (%rbx,%r12,8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm4,%xmm2
addpd  %xmm0,%xmm2
movhpd 0x18(%rcx),%xmm1
lea    (%rdx,%r12,8),%rbx
movsd  (%rdx,%r12,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm2,%xmm0
lea    (%rbx,%r12,8),%rdx
add    $0x20,%rdi
add    $0x20,%rcx
testb  $0x2,(%rsp)
jne    1a00 <mm_double_TT_1+0x8f0>
testb  $0x1,(%rsp)
je     194f <mm_double_TT_1+0x83f>
movsd  (%rdi),%xmm1
movhpd (%rcx),%xmm1
movsd  (%rdx),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm0
movupd %xmm0,(%r10)
add    $0x10,%r10
mov    %r9,%rdi
testb  $0x1,0x58(%rsp)
je     1765 <mm_double_TT_1+0x655>
movsd  (%r10),%xmm0
cmpl   $0x5,0x20(%rsp)
jl     1a60 <mm_double_TT_1+0x950>
movsd  (%rdi),%xmm1
movsd  0x0(%r13),%xmm2
add    $0x8,%rdi
mov    %rax,%rcx
nopw   0x0(%rax,%rax,1)
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movupd (%rdi),%xmm0
movsd  (%rcx),%xmm2
movhpd (%rcx,%rbp,1),%xmm2
lea    (%rcx,%rbp,1),%rdx
mulpd  %xmm0,%xmm2
addsd  %xmm2,%xmm1
unpckhpd %xmm2,%xmm2
addsd  %xmm1,%xmm2
movsd  0x10(%rdi),%xmm0
mulsd  0x0(%rbp,%rdx,1),%xmm0
add    %rbp,%rdx
addsd  %xmm2,%xmm0
movsd  0x18(%rdi),%xmm1
movsd  0x0(%rbp,%rdx,1),%xmm2
add    %rbp,%rdx
add    $0x20,%rdi
add    %rbp,%rdx
mov    %rdx,%rcx
cmp    %r14,%rdx
jne    1990 <mm_double_TT_1+0x880>
mulsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
testb  $0x4,(%rsp)
jne    1a69 <mm_double_TT_1+0x959>
jmp    1ab7 <mm_double_TT_1+0x9a7>
nopl   0x0(%rax,%rax,1)
movsd  (%rdi),%xmm1
movsd  0x8(%rdi),%xmm2
movhpd (%rcx),%xmm1
movsd  (%rdx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm0,%xmm3
movhpd 0x8(%rcx),%xmm2
lea    (%rdx,%r12,8),%rbx
movsd  (%rdx,%r12,8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm3,%xmm0
lea    (%rbx,%r12,8),%rdx
add    $0x10,%rdi
add    $0x10,%rcx
testb  $0x1,(%rsp)
jne    1937 <mm_double_TT_1+0x827>
jmp    194f <mm_double_TT_1+0x83f>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %r13,%r14
testb  $0x4,(%rsp)
je     1ab7 <mm_double_TT_1+0x9a7>
movsd  (%rdi),%xmm1
movsd  0x8(%rdi),%xmm2
mulsd  (%r14),%xmm1
addsd  %xmm0,%xmm1
lea    (%r14,%r12,8),%rcx
mulsd  (%r14,%r12,8),%xmm2
addsd  %xmm1,%xmm2
lea    (%rcx,%r12,8),%rdx
movsd  0x10(%rdi),%xmm1
mulsd  (%rcx,%r12,8),%xmm1
addsd  %xmm2,%xmm1
movsd  0x18(%rdi),%xmm0
mulsd  (%rdx,%r12,8),%xmm0
lea    (%rdx,%r12,8),%rcx
addsd  %xmm1,%xmm0
lea    (%rcx,%r12,8),%r14
add    $0x20,%rdi
testb  $0x2,(%rsp)
jne    1ad0 <mm_double_TT_1+0x9c0>
testb  $0x1,(%rsp)
je     1760 <mm_double_TT_1+0x650>
jmp    1b02 <mm_double_TT_1+0x9f2>
nopl   0x0(%rax)
movsd  (%rdi),%xmm1
mulsd  (%r14),%xmm1
addsd  %xmm0,%xmm1
movsd  0x8(%rdi),%xmm0
mulsd  (%r14,%r12,8),%xmm0
lea    (%r14,%r12,8),%rcx
addsd  %xmm1,%xmm0
lea    (%rcx,%r12,8),%r14
add    $0x10,%rdi
testb  $0x1,(%rsp)
je     1760 <mm_double_TT_1+0x650>
movsd  (%rdi),%xmm1
mulsd  (%r14),%xmm1
addsd  %xmm1,%xmm0
jmp    1760 <mm_double_TT_1+0x650>
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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