void mul_mdmd_md_l0nf(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 *a, *b;
  double *c;
  const double *ap_0, *ap_1;
  const double *bp;
  double *cp;
  const int A_sbs_stride = Astride * 2;
  const int C_sbs_stride = Cstride * 2;
  const int k_marg_el = ((K >= 17) ? ((K - 1) & 15) : K);
  const int k_norm = K - k_marg_el;
  const int m_marg_el = M & 1;
  const int m_norm = M - m_marg_el;
  const int n_marg_el = N & 1;
  const int n_norm = N - n_marg_el;
  double *const c_endp = C + m_norm * Cstride;
  register double c0_0, c0_1, c1_0, c1_1;
  register double t0_0, t0_1, t1_0, t1_1;
  c = C;
  a = A;
  do {
    const double *const ap_endp = a + k_norm;
    double *const cp_endp = c + n_norm;
    const double *const apc_1 = a + Astride;
    b = B;
    cp = c;
    do {
      register double _b0, _b1;
      register double _a0, _a1;
      double *_cp;
      ap_0 = a;
      ap_1 = apc_1;
      bp = b;
      _cp = cp;
      c0_0 = _cp[0];
      c0_1 = _cp[1];
      _cp += Cstride;
      c1_0 = _cp[0];
      c1_1 = _cp[1];
      _b0 = bp[0];
      _b1 = bp[1];
      _a0 = ap_0[0];
      _a1 = ap_1[0];
      bp += Bstride;
      ap_0 += 1;
      ap_1 += 1;
      do {
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[0];
        _a1 = ap_1[0];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[1];
        _a1 = ap_1[1];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[2];
        _a1 = ap_1[2];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[3];
        _a1 = ap_1[3];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[4];
        _a1 = ap_1[4];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[5];
        _a1 = ap_1[5];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[6];
        _a1 = ap_1[6];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[7];
        _a1 = ap_1[7];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[8];
        _a1 = ap_1[8];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[9];
        _a1 = ap_1[9];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[10];
        _a1 = ap_1[10];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[11];
        _a1 = ap_1[11];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[12];
        _a1 = ap_1[12];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[13];
        _a1 = ap_1[13];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[14];
        _a1 = ap_1[14];
        bp += Bstride;
        t0_0 = _a0 * _b0;
        t0_1 = _a0 * _b1;
        t1_0 = _a1 * _b0;
        t1_1 = _a1 * _b1;
        c0_0 += t0_0;
        c0_1 += t0_1;
        c1_0 += t1_0;
        c1_1 += t1_1;
        _b0 = bp[0];
        _b1 = bp[1];
        _a0 = ap_0[15];
        _a1 = ap_1[15];
        bp += Bstride;
        ap_0 += 16;
        ap_1 += 16;
      } while (ap_0 != ap_endp);
      t0_0 = _a0 * _b0;
      t0_1 = _a0 * _b1;
      t1_0 = _a1 * _b0;
      t1_1 = _a1 * _b1;
      c0_0 += t0_0;
      c0_1 += t0_1;
      c1_0 += t1_0;
      c1_1 += t1_1;
      _cp = cp;
      _cp[0] = c0_0;
      _cp[1] = c0_1;
      _cp += Cstride;
      _cp[0] = c1_0;
      _cp[1] = c1_1;
      b += 2;
      cp += 2;
    } while (cp != cp_endp);
    c += C_sbs_stride;
    a += A_sbs_stride;
  } while (c != c_endp);
}


x86 assembly (clang, -O0):
<mul_mdmd_md_l0nf>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%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)
mov    0x10(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    0x20(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x11,-0x8(%rbp)
jl     1159 <mul_mdmd_md_l0nf+0x59>
mov    -0x8(%rbp),%eax
sub    $0x1,%eax
and    $0xf,%eax
mov    %eax,-0x10c(%rbp)
jmp    1162 <mul_mdmd_md_l0nf+0x62>
mov    -0x8(%rbp),%eax
mov    %eax,-0x10c(%rbp)
mov    -0x10c(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x8(%rbp),%eax
sub    -0x6c(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x4(%rbp),%eax
and    $0x1,%eax
mov    %eax,-0x74(%rbp)
mov    -0x4(%rbp),%eax
sub    -0x74(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0xc(%rbp),%eax
and    $0x1,%eax
mov    %eax,-0x7c(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x7c(%rbp),%eax
mov    %eax,-0x80(%rbp)
mov    -0x28(%rbp),%rax
mov    -0x78(%rbp),%ecx
imul   0x20(%rbp),%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x88(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x18(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x30(%rbp),%rax
movslq -0x70(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd0(%rbp)
mov    -0x40(%rbp),%rax
movslq -0x80(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xd8(%rbp)
mov    -0x30(%rbp),%rax
movslq 0x10(%rbp),%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0xe0(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x40(%rbp),%rax
mov    %rax,-0x60(%rbp)
mov    -0x30(%rbp),%rax
mov    %rax,-0x48(%rbp)
mov    -0xe0(%rbp),%rax
mov    %rax,-0x50(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,-0x58(%rbp)
mov    -0x60(%rbp),%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x108(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x20(%rbp),%ecx
mov    -0x108(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
mov    -0x108(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x108(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x50(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
mov    -0x50(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x58(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x48(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x50(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%ecx
mov    -0x58(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x58(%rbp)
mov    -0x48(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x48(%rbp)
mov    -0x50(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x50(%rbp)
mov    -0x48(%rbp),%rax
cmp    -0xd0(%rbp),%rax
jne    1313 <mul_mdmd_md_l0nf+0x213>
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x60(%rbp),%rax
mov    %rax,-0x108(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x108(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x108(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x20(%rbp),%ecx
mov    -0x108(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x108(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x108(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x108(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x38(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x38(%rbp)
mov    -0x60(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x60(%rbp)
mov    -0x60(%rbp),%rax
cmp    -0xd8(%rbp),%rax
jne    1216 <mul_mdmd_md_l0nf+0x116>
mov    -0x68(%rbp),%ecx
mov    -0x40(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x40(%rbp)
mov    -0x64(%rbp),%ecx
mov    -0x30(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x30(%rbp)
mov    -0x40(%rbp),%rax
cmp    -0x88(%rbp),%rax
jne    11c4 <mul_mdmd_md_l0nf+0xc4>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<mul_mdmd_md_l0nf>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
movslq 0x48(%rsp),%r11
movslq 0x38(%rsp),%r10
movslq 0x40(%rsp),%rax
lea    (%r10,%r10,1),%r14d
lea    -0x1(%rsi),%ebx
and    $0xf,%ebx
mov    %esi,%ebp
sub    %ebx,%ebp
xor    %ebx,%ebx
cmp    $0x11,%esi
cmovge %ebp,%ebx
lea    (%r11,%r11,1),%esi
and    $0xfffffffe,%edi
and    $0xfffffffe,%edx
imul   %r11d,%edi
movslq %edi,%rdi
lea    (%r9,%rdi,8),%rdi
mov    %rdi,-0x18(%rsp)
movslq %esi,%rsi
mov    %rsi,-0x20(%rsp)
movslq %ebx,%rbx
movslq %edx,%rdx
mov    %rdx,-0x28(%rsp)
movslq %r14d,%rsi
mov    %r8,-0x10(%rsp)
lea    (%r8,%rax,8),%rdx
mov    %rdx,-0x38(%rsp)
mov    %rax,%rdx
shl    $0x7,%rdx
lea    (%rcx,%r10,8),%rdi
shl    $0x3,%rsi
mov    %rsi,-0x30(%rsp)
shl    $0x3,%rbx
lea    0x0(,%rax,8),%rbp
nopl   (%rax)
mov    -0x28(%rsp),%rsi
lea    (%r9,%rsi,8),%r14
mov    -0x38(%rsp),%rsi
mov    %r9,-0x8(%rsp)
mov    -0x10(%rsp),%r12
nopl   0x0(%rax,%rax,1)
movupd (%r9),%xmm2
movupd (%r9,%r11,8),%xmm3
movupd (%r12),%xmm4
movsd  (%rcx),%xmm1
movsd  (%rcx,%r10,8),%xmm0
mov    $0x8,%r8d
mov    %rsi,%r13
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
unpcklpd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm2,%xmm1
movupd 0x0(%r13),%xmm11
movsd  (%rcx,%r8,1),%xmm2
movsd  0x8(%rcx,%r8,1),%xmm6
addpd  %xmm3,%xmm0
movsd  0x10(%rcx,%r8,1),%xmm10
movsd  0x18(%rcx,%r8,1),%xmm8
movsd  (%rdi,%r8,1),%xmm3
unpcklpd %xmm2,%xmm2
movsd  0x8(%rdi,%r8,1),%xmm7
movsd  0x10(%rdi,%r8,1),%xmm12
movsd  0x18(%rdi,%r8,1),%xmm9
mulpd  %xmm11,%xmm2
unpcklpd %xmm3,%xmm3
lea    0x0(%r13,%rbp,1),%r15
movupd 0x0(%r13,%rax,8),%xmm4
mulpd  %xmm11,%xmm3
unpcklpd %xmm6,%xmm6
mulpd  %xmm4,%xmm6
unpcklpd %xmm7,%xmm7
mulpd  %xmm4,%xmm7
movupd (%r15,%rax,8),%xmm4
add    %rbp,%r15
unpcklpd %xmm10,%xmm10
mulpd  %xmm4,%xmm10
unpcklpd %xmm12,%xmm12
movupd (%r15,%rax,8),%xmm5
add    %rbp,%r15
mulpd  %xmm4,%xmm12
unpcklpd %xmm8,%xmm8
mulpd  %xmm5,%xmm8
unpcklpd %xmm9,%xmm9
addpd  %xmm1,%xmm2
mulpd  %xmm5,%xmm9
movupd (%r15,%rax,8),%xmm4
add    %rbp,%r15
addpd  %xmm0,%xmm3
movsd  0x20(%rcx,%r8,1),%xmm0
unpcklpd %xmm0,%xmm0
movsd  0x20(%rdi,%r8,1),%xmm1
mulpd  %xmm4,%xmm0
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
movupd (%r15,%rax,8),%xmm4
addpd  %xmm2,%xmm6
add    %rbp,%r15
movsd  0x28(%rcx,%r8,1),%xmm2
unpcklpd %xmm2,%xmm2
addpd  %xmm3,%xmm7
mulpd  %xmm4,%xmm2
movsd  0x28(%rdi,%r8,1),%xmm3
unpcklpd %xmm3,%xmm3
addpd  %xmm6,%xmm10
mulpd  %xmm4,%xmm3
movupd (%r15,%rax,8),%xmm5
add    %rbp,%r15
addpd  %xmm7,%xmm12
movsd  0x30(%rcx,%r8,1),%xmm6
unpcklpd %xmm6,%xmm6
mulpd  %xmm5,%xmm6
addpd  %xmm10,%xmm8
movsd  0x30(%rdi,%r8,1),%xmm4
unpcklpd %xmm4,%xmm4
mulpd  %xmm5,%xmm4
addpd  %xmm12,%xmm9
movupd (%r15,%rax,8),%xmm10
add    %rbp,%r15
movsd  0x38(%rcx,%r8,1),%xmm5
addpd  %xmm8,%xmm0
unpcklpd %xmm5,%xmm5
mulpd  %xmm10,%xmm5
movsd  0x38(%rdi,%r8,1),%xmm7
addpd  %xmm9,%xmm1
unpcklpd %xmm7,%xmm7
mulpd  %xmm10,%xmm7
movupd (%r15,%rax,8),%xmm8
addpd  %xmm0,%xmm2
add    %rbp,%r15
movsd  0x40(%rcx,%r8,1),%xmm0
unpcklpd %xmm0,%xmm0
addpd  %xmm1,%xmm3
mulpd  %xmm8,%xmm0
movsd  0x40(%rdi,%r8,1),%xmm1
unpcklpd %xmm1,%xmm1
addpd  %xmm2,%xmm6
mulpd  %xmm8,%xmm1
movupd (%r15,%rax,8),%xmm8
add    %rbp,%r15
addpd  %xmm3,%xmm4
movsd  0x48(%rcx,%r8,1),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm8,%xmm2
addpd  %xmm6,%xmm5
movsd  0x48(%rdi,%r8,1),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm8,%xmm3
addpd  %xmm4,%xmm7
movupd (%r15,%rax,8),%xmm6
add    %rbp,%r15
movsd  0x50(%rcx,%r8,1),%xmm4
addpd  %xmm5,%xmm0
unpcklpd %xmm4,%xmm4
mulpd  %xmm6,%xmm4
movsd  0x50(%rdi,%r8,1),%xmm5
addpd  %xmm7,%xmm1
unpcklpd %xmm5,%xmm5
mulpd  %xmm6,%xmm5
movupd (%r15,%rax,8),%xmm6
addpd  %xmm0,%xmm2
add    %rbp,%r15
movsd  0x58(%rcx,%r8,1),%xmm0
unpcklpd %xmm0,%xmm0
addpd  %xmm1,%xmm3
mulpd  %xmm6,%xmm0
movsd  0x58(%rdi,%r8,1),%xmm1
unpcklpd %xmm1,%xmm1
addpd  %xmm2,%xmm4
mulpd  %xmm6,%xmm1
movupd (%r15,%rax,8),%xmm2
add    %rbp,%r15
addpd  %xmm3,%xmm5
movsd  0x60(%rcx,%r8,1),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm4,%xmm0
movsd  0x60(%rdi,%r8,1),%xmm4
unpcklpd %xmm4,%xmm4
mulpd  %xmm2,%xmm4
addpd  %xmm5,%xmm1
movupd (%r15,%rax,8),%xmm2
add    %rbp,%r15
movsd  0x68(%rcx,%r8,1),%xmm5
addpd  %xmm0,%xmm3
unpcklpd %xmm5,%xmm5
mulpd  %xmm2,%xmm5
movsd  0x68(%rdi,%r8,1),%xmm0
addpd  %xmm1,%xmm4
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
movupd (%r15,%rax,8),%xmm1
addpd  %xmm3,%xmm5
add    %rbp,%r15
movsd  0x70(%rcx,%r8,1),%xmm2
unpcklpd %xmm2,%xmm2
addpd  %xmm4,%xmm0
mulpd  %xmm1,%xmm2
movsd  0x70(%rdi,%r8,1),%xmm3
unpcklpd %xmm3,%xmm3
addpd  %xmm5,%xmm2
mulpd  %xmm1,%xmm3
movupd (%r15,%rax,8),%xmm4
movsd  0x78(%rcx,%r8,1),%xmm1
addpd  %xmm0,%xmm3
movsd  0x78(%rdi,%r8,1),%xmm0
add    %rdx,%r13
sub    $0xffffffffffffff80,%r8
cmp    %r8,%rbx
jne    11e0 <mul_mdmd_md_l0nf+0xe0>
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
unpcklpd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm1,%xmm2
addpd  %xmm0,%xmm3
movupd %xmm2,(%r9)
movupd %xmm3,(%r9,%r11,8)
add    $0x10,%r12
add    $0x10,%r9
add    $0x10,%rsi
cmp    %r14,%r9
jne    11b0 <mul_mdmd_md_l0nf+0xb0>
mov    -0x8(%rsp),%r9
mov    -0x20(%rsp),%rsi
lea    (%r9,%rsi,8),%r9
mov    -0x30(%rsp),%rsi
add    %rsi,%rcx
add    %rsi,%rdi
cmp    -0x18(%rsp),%r9
jne    1190 <mul_mdmd_md_l0nf+0x90>
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @mul_mdmd_md_l0nf(i32 %0, i32 %1, i32 %2, double* %3, double* %4, double* %5, i32 %6, i32 %7, i32 %8) {
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca double*
%20 = alloca double*
%21 = alloca double*
%22 = alloca double*
%23 = alloca double*
%24 = alloca double*
%25 = alloca double*
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca double*
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double*
%44 = alloca double*
%45 = alloca double*
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double*
store i32 %0, i32* %10
store i32 %1, i32* %11
store i32 %2, i32* %12
store double* %3, double** %13
store double* %4, double** %14
store double* %5, double** %15
store i32 %6, i32* %16
store i32 %7, i32* %17
store i32 %8, i32* %18
%51 = load i32, i32* %16
%52 = mul nsw i32 %51, 2
store i32 %52, i32* %26
%53 = load i32, i32* %18
%54 = mul nsw i32 %53, 2
store i32 %54, i32* %27
%55 = load i32, i32* %11
%56 = icmp sge i32 %55, 17
br i1 %56, label %57, label %61
57: ; preds = %9
%58 = load i32, i32* %11
%59 = sub nsw i32 %58, 1
%60 = and i32 %59, 15
br label %63
61: ; preds = %9
%62 = load i32, i32* %11
br label %63
63: ; preds = %61, %57
%64 = phi i32 [ %60, %57 ], [ %62, %61 ]
store i32 %64, i32* %28
%65 = load i32, i32* %11
%66 = load i32, i32* %28
%67 = sub nsw i32 %65, %66
store i32 %67, i32* %29
%68 = load i32, i32* %10
%69 = and i32 %68, 1
store i32 %69, i32* %30
%70 = load i32, i32* %10
%71 = load i32, i32* %30
%72 = sub nsw i32 %70, %71
store i32 %72, i32* %31
%73 = load i32, i32* %12
%74 = and i32 %73, 1
store i32 %74, i32* %32
%75 = load i32, i32* %12
%76 = load i32, i32* %32
%77 = sub nsw i32 %75, %76
store i32 %77, i32* %33
%78 = load double*, double** %15
%79 = load i32, i32* %31
%80 = load i32, i32* %18
%81 = mul nsw i32 %79, %80
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds double, double* %78, i64 %82
store double* %83, double** %34
%84 = load double*, double** %15
store double* %84, double** %21
%85 = load double*, double** %13
store double* %85, double** %19
br label %86
86: ; preds = %850, %63
%87 = load double*, double** %19
%88 = load i32, i32* %29
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds double, double* %87, i64 %89
store double* %90, double** %43
%91 = load double*, double** %21
%92 = load i32, i32* %33
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds double, double* %91, i64 %93
store double* %94, double** %44
%95 = load double*, double** %19
%96 = load i32, i32* %16
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds double, double* %95, i64 %97
store double* %98, double** %45
%99 = load double*, double** %14
store double* %99, double** %20
%100 = load double*, double** %21
store double* %100, double** %25
br label %101
101: ; preds = %837, %86
%102 = load double*, double** %19
store double* %102, double** %22
%103 = load double*, double** %45
store double* %103, double** %23
%104 = load double*, double** %20
store double* %104, double** %24
%105 = load double*, double** %25
store double* %105, double** %50
%106 = load double*, double** %50
%107 = getelementptr inbounds double, double* %106, i64 0
%108 = load double, double* %107
store double %108, double* %35
%109 = load double*, double** %50
%110 = getelementptr inbounds double, double* %109, i64 1
%111 = load double, double* %110
store double %111, double* %36
%112 = load i32, i32* %18
%113 = load double*, double** %50
%114 = sext i32 %112 to i64
%115 = getelementptr inbounds double, double* %113, i64 %114
store double* %115, double** %50
%116 = load double*, double** %50
%117 = getelementptr inbounds double, double* %116, i64 0
%118 = load double, double* %117
store double %118, double* %37
%119 = load double*, double** %50
%120 = getelementptr inbounds double, double* %119, i64 1
%121 = load double, double* %120
store double %121, double* %38
%122 = load double*, double** %24
%123 = getelementptr inbounds double, double* %122, i64 0
%124 = load double, double* %123
store double %124, double* %46
%125 = load double*, double** %24
%126 = getelementptr inbounds double, double* %125, i64 1
%127 = load double, double* %126
store double %127, double* %47
%128 = load double*, double** %22
%129 = getelementptr inbounds double, double* %128, i64 0
%130 = load double, double* %129
store double %130, double* %48
%131 = load double*, double** %23
%132 = getelementptr inbounds double, double* %131, i64 0
%133 = load double, double* %132
store double %133, double* %49
%134 = load i32, i32* %17
%135 = load double*, double** %24
%136 = sext i32 %134 to i64
%137 = getelementptr inbounds double, double* %135, i64 %136
store double* %137, double** %24
%138 = load double*, double** %22
%139 = getelementptr inbounds double, double* %138, i64 1
store double* %139, double** %22
%140 = load double*, double** %23
%141 = getelementptr inbounds double, double* %140, i64 1
store double* %141, double** %23
br label %142
142: ; preds = %787, %101
%143 = load double, double* %48
%144 = load double, double* %46
%145 = fmul double %143, %144
store double %145, double* %39
%146 = load double, double* %48
%147 = load double, double* %47
%148 = fmul double %146, %147
store double %148, double* %40
%149 = load double, double* %49
%150 = load double, double* %46
%151 = fmul double %149, %150
store double %151, double* %41
%152 = load double, double* %49
%153 = load double, double* %47
%154 = fmul double %152, %153
store double %154, double* %42
%155 = load double, double* %39
%156 = load double, double* %35
%157 = fadd double %156, %155
store double %157, double* %35
%158 = load double, double* %40
%159 = load double, double* %36
%160 = fadd double %159, %158
store double %160, double* %36
%161 = load double, double* %41
%162 = load double, double* %37
%163 = fadd double %162, %161
store double %163, double* %37
%164 = load double, double* %42
%165 = load double, double* %38
%166 = fadd double %165, %164
store double %166, double* %38
%167 = load double*, double** %24
%168 = getelementptr inbounds double, double* %167, i64 0
%169 = load double, double* %168
store double %169, double* %46
%170 = load double*, double** %24
%171 = getelementptr inbounds double, double* %170, i64 1
%172 = load double, double* %171
store double %172, double* %47
%173 = load double*, double** %22
%174 = getelementptr inbounds double, double* %173, i64 0
%175 = load double, double* %174
store double %175, double* %48
%176 = load double*, double** %23
%177 = getelementptr inbounds double, double* %176, i64 0
%178 = load double, double* %177
store double %178, double* %49
%179 = load i32, i32* %17
%180 = load double*, double** %24
%181 = sext i32 %179 to i64
%182 = getelementptr inbounds double, double* %180, i64 %181
store double* %182, double** %24
%183 = load double, double* %48
%184 = load double, double* %46
%185 = fmul double %183, %184
store double %185, double* %39
%186 = load double, double* %48
%187 = load double, double* %47
%188 = fmul double %186, %187
store double %188, double* %40
%189 = load double, double* %49
%190 = load double, double* %46
%191 = fmul double %189, %190
store double %191, double* %41
%192 = load double, double* %49
%193 = load double, double* %47
%194 = fmul double %192, %193
store double %194, double* %42
%195 = load double, double* %39
%196 = load double, double* %35
%197 = fadd double %196, %195
store double %197, double* %35
%198 = load double, double* %40
%199 = load double, double* %36
%200 = fadd double %199, %198
store double %200, double* %36
%201 = load double, double* %41
%202 = load double, double* %37
%203 = fadd double %202, %201
store double %203, double* %37
%204 = load double, double* %42
%205 = load double, double* %38
%206 = fadd double %205, %204
store double %206, double* %38
%207 = load double*, double** %24
%208 = getelementptr inbounds double, double* %207, i64 0
%209 = load double, double* %208
store double %209, double* %46
%210 = load double*, double** %24
%211 = getelementptr inbounds double, double* %210, i64 1
%212 = load double, double* %211
store double %212, double* %47
%213 = load double*, double** %22
%214 = getelementptr inbounds double, double* %213, i64 1
%215 = load double, double* %214
store double %215, double* %48
%216 = load double*, double** %23
%217 = getelementptr inbounds double, double* %216, i64 1
%218 = load double, double* %217
store double %218, double* %49
%219 = load i32, i32* %17
%220 = load double*, double** %24
%221 = sext i32 %219 to i64
%222 = getelementptr inbounds double, double* %220, i64 %221
store double* %222, double** %24
%223 = load double, double* %48
%224 = load double, double* %46
%225 = fmul double %223, %224
store double %225, double* %39
%226 = load double, double* %48
%227 = load double, double* %47
%228 = fmul double %226, %227
store double %228, double* %40
%229 = load double, double* %49
%230 = load double, double* %46
%231 = fmul double %229, %230
store double %231, double* %41
%232 = load double, double* %49
%233 = load double, double* %47
%234 = fmul double %232, %233
store double %234, double* %42
%235 = load double, double* %39
%236 = load double, double* %35
%237 = fadd double %236, %235
store double %237, double* %35
%238 = load double, double* %40
%239 = load double, double* %36
%240 = fadd double %239, %238
store double %240, double* %36
%241 = load double, double* %41
%242 = load double, double* %37
%243 = fadd double %242, %241
store double %243, double* %37
%244 = load double, double* %42
%245 = load double, double* %38
%246 = fadd double %245, %244
store double %246, double* %38
%247 = load double*, double** %24
%248 = getelementptr inbounds double, double* %247, i64 0
%249 = load double, double* %248
store double %249, double* %46
%250 = load double*, double** %24
%251 = getelementptr inbounds double, double* %250, i64 1
%252 = load double, double* %251
store double %252, double* %47
%253 = load double*, double** %22
%254 = getelementptr inbounds double, double* %253, i64 2
%255 = load double, double* %254
store double %255, double* %48
%256 = load double*, double** %23
%257 = getelementptr inbounds double, double* %256, i64 2
%258 = load double, double* %257
store double %258, double* %49
%259 = load i32, i32* %17
%260 = load double*, double** %24
%261 = sext i32 %259 to i64
%262 = getelementptr inbounds double, double* %260, i64 %261
store double* %262, double** %24
%263 = load double, double* %48
%264 = load double, double* %46
%265 = fmul double %263, %264
store double %265, double* %39
%266 = load double, double* %48
%267 = load double, double* %47
%268 = fmul double %266, %267
store double %268, double* %40
%269 = load double, double* %49
%270 = load double, double* %46
%271 = fmul double %269, %270
store double %271, double* %41
%272 = load double, double* %49
%273 = load double, double* %47
%274 = fmul double %272, %273
store double %274, double* %42
%275 = load double, double* %39
%276 = load double, double* %35
%277 = fadd double %276, %275
store double %277, double* %35
%278 = load double, double* %40
%279 = load double, double* %36
%280 = fadd double %279, %278
store double %280, double* %36
%281 = load double, double* %41
%282 = load double, double* %37
%283 = fadd double %282, %281
store double %283, double* %37
%284 = load double, double* %42
%285 = load double, double* %38
%286 = fadd double %285, %284
store double %286, double* %38
%287 = load double*, double** %24
%288 = getelementptr inbounds double, double* %287, i64 0
%289 = load double, double* %288
store double %289, double* %46
%290 = load double*, double** %24
%291 = getelementptr inbounds double, double* %290, i64 1
%292 = load double, double* %291
store double %292, double* %47
%293 = load double*, double** %22
%294 = getelementptr inbounds double, double* %293, i64 3
%295 = load double, double* %294
store double %295, double* %48
%296 = load double*, double** %23
%297 = getelementptr inbounds double, double* %296, i64 3
%298 = load double, double* %297
store double %298, double* %49
%299 = load i32, i32* %17
%300 = load double*, double** %24
%301 = sext i32 %299 to i64
%302 = getelementptr inbounds double, double* %300, i64 %301
store double* %302, double** %24
%303 = load double, double* %48
%304 = load double, double* %46
%305 = fmul double %303, %304
store double %305, double* %39
%306 = load double, double* %48
%307 = load double, double* %47
%308 = fmul double %306, %307
store double %308, double* %40
%309 = load double, double* %49
%310 = load double, double* %46
%311 = fmul double %309, %310
store double %311, double* %41
%312 = load double, double* %49
%313 = load double, double* %47
%314 = fmul double %312, %313
store double %314, double* %42
%315 = load double, double* %39
%316 = load double, double* %35
%317 = fadd double %316, %315
store double %317, double* %35
%318 = load double, double* %40
%319 = load double, double* %36
%320 = fadd double %319, %318
store double %320, double* %36
%321 = load double, double* %41
%322 = load double, double* %37
%323 = fadd double %322, %321
store double %323, double* %37
%324 = load double, double* %42
%325 = load double, double* %38
%326 = fadd double %325, %324
store double %326, double* %38
%327 = load double*, double** %24
%328 = getelementptr inbounds double, double* %327, i64 0
%329 = load double, double* %328
store double %329, double* %46
%330 = load double*, double** %24
%331 = getelementptr inbounds double, double* %330, i64 1
%332 = load double, double* %331
store double %332, double* %47
%333 = load double*, double** %22
%334 = getelementptr inbounds double, double* %333, i64 4
%335 = load double, double* %334
store double %335, double* %48
%336 = load double*, double** %23
%337 = getelementptr inbounds double, double* %336, i64 4
%338 = load double, double* %337
store double %338, double* %49
%339 = load i32, i32* %17
%340 = load double*, double** %24
%341 = sext i32 %339 to i64
%342 = getelementptr inbounds double, double* %340, i64 %341
store double* %342, double** %24
%343 = load double, double* %48
%344 = load double, double* %46
%345 = fmul double %343, %344
store double %345, double* %39
%346 = load double, double* %48
%347 = load double, double* %47
%348 = fmul double %346, %347
store double %348, double* %40
%349 = load double, double* %49
%350 = load double, double* %46
%351 = fmul double %349, %350
store double %351, double* %41
%352 = load double, double* %49
%353 = load double, double* %47
%354 = fmul double %352, %353
store double %354, double* %42
%355 = load double, double* %39
%356 = load double, double* %35
%357 = fadd double %356, %355
store double %357, double* %35
%358 = load double, double* %40
%359 = load double, double* %36
%360 = fadd double %359, %358
store double %360, double* %36
%361 = load double, double* %41
%362 = load double, double* %37
%363 = fadd double %362, %361
store double %363, double* %37
%364 = load double, double* %42
%365 = load double, double* %38
%366 = fadd double %365, %364
store double %366, double* %38
%367 = load double*, double** %24
%368 = getelementptr inbounds double, double* %367, i64 0
%369 = load double, double* %368
store double %369, double* %46
%370 = load double*, double** %24
%371 = getelementptr inbounds double, double* %370, i64 1
%372 = load double, double* %371
store double %372, double* %47
%373 = load double*, double** %22
%374 = getelementptr inbounds double, double* %373, i64 5
%375 = load double, double* %374
store double %375, double* %48
%376 = load double*, double** %23
%377 = getelementptr inbounds double, double* %376, i64 5
%378 = load double, double* %377
store double %378, double* %49
%379 = load i32, i32* %17
%380 = load double*, double** %24
%381 = sext i32 %379 to i64
%382 = getelementptr inbounds double, double* %380, i64 %381
store double* %382, double** %24
%383 = load double, double* %48
%384 = load double, double* %46
%385 = fmul double %383, %384
store double %385, double* %39
%386 = load double, double* %48
%387 = load double, double* %47
%388 = fmul double %386, %387
store double %388, double* %40
%389 = load double, double* %49
%390 = load double, double* %46
%391 = fmul double %389, %390
store double %391, double* %41
%392 = load double, double* %49
%393 = load double, double* %47
%394 = fmul double %392, %393
store double %394, double* %42
%395 = load double, double* %39
%396 = load double, double* %35
%397 = fadd double %396, %395
store double %397, double* %35
%398 = load double, double* %40
%399 = load double, double* %36
%400 = fadd double %399, %398
store double %400, double* %36
%401 = load double, double* %41
%402 = load double, double* %37
%403 = fadd double %402, %401
store double %403, double* %37
%404 = load double, double* %42
%405 = load double, double* %38
%406 = fadd double %405, %404
store double %406, double* %38
%407 = load double*, double** %24
%408 = getelementptr inbounds double, double* %407, i64 0
%409 = load double, double* %408
store double %409, double* %46
%410 = load double*, double** %24
%411 = getelementptr inbounds double, double* %410, i64 1
%412 = load double, double* %411
store double %412, double* %47
%413 = load double*, double** %22
%414 = getelementptr inbounds double, double* %413, i64 6
%415 = load double, double* %414
store double %415, double* %48
%416 = load double*, double** %23
%417 = getelementptr inbounds double, double* %416, i64 6
%418 = load double, double* %417
store double %418, double* %49
%419 = load i32, i32* %17
%420 = load double*, double** %24
%421 = sext i32 %419 to i64
%422 = getelementptr inbounds double, double* %420, i64 %421
store double* %422, double** %24
%423 = load double, double* %48
%424 = load double, double* %46
%425 = fmul double %423, %424
store double %425, double* %39
%426 = load double, double* %48
%427 = load double, double* %47
%428 = fmul double %426, %427
store double %428, double* %40
%429 = load double, double* %49
%430 = load double, double* %46
%431 = fmul double %429, %430
store double %431, double* %41
%432 = load double, double* %49
%433 = load double, double* %47
%434 = fmul double %432, %433
store double %434, double* %42
%435 = load double, double* %39
%436 = load double, double* %35
%437 = fadd double %436, %435
store double %437, double* %35
%438 = load double, double* %40
%439 = load double, double* %36
%440 = fadd double %439, %438
store double %440, double* %36
%441 = load double, double* %41
%442 = load double, double* %37
%443 = fadd double %442, %441
store double %443, double* %37
%444 = load double, double* %42
%445 = load double, double* %38
%446 = fadd double %445, %444
store double %446, double* %38
%447 = load double*, double** %24
%448 = getelementptr inbounds double, double* %447, i64 0
%449 = load double, double* %448
store double %449, double* %46
%450 = load double*, double** %24
%451 = getelementptr inbounds double, double* %450, i64 1
%452 = load double, double* %451
store double %452, double* %47
%453 = load double*, double** %22
%454 = getelementptr inbounds double, double* %453, i64 7
%455 = load double, double* %454
store double %455, double* %48
%456 = load double*, double** %23
%457 = getelementptr inbounds double, double* %456, i64 7
%458 = load double, double* %457
store double %458, double* %49
%459 = load i32, i32* %17
%460 = load double*, double** %24
%461 = sext i32 %459 to i64
%462 = getelementptr inbounds double, double* %460, i64 %461
store double* %462, double** %24
%463 = load double, double* %48
%464 = load double, double* %46
%465 = fmul double %463, %464
store double %465, double* %39
%466 = load double, double* %48
%467 = load double, double* %47
%468 = fmul double %466, %467
store double %468, double* %40
%469 = load double, double* %49
%470 = load double, double* %46
%471 = fmul double %469, %470
store double %471, double* %41
%472 = load double, double* %49
%473 = load double, double* %47
%474 = fmul double %472, %473
store double %474, double* %42
%475 = load double, double* %39
%476 = load double, double* %35
%477 = fadd double %476, %475
store double %477, double* %35
%478 = load double, double* %40
%479 = load double, double* %36
%480 = fadd double %479, %478
store double %480, double* %36
%481 = load double, double* %41
%482 = load double, double* %37
%483 = fadd double %482, %481
store double %483, double* %37
%484 = load double, double* %42
%485 = load double, double* %38
%486 = fadd double %485, %484
store double %486, double* %38
%487 = load double*, double** %24
%488 = getelementptr inbounds double, double* %487, i64 0
%489 = load double, double* %488
store double %489, double* %46
%490 = load double*, double** %24
%491 = getelementptr inbounds double, double* %490, i64 1
%492 = load double, double* %491
store double %492, double* %47
%493 = load double*, double** %22
%494 = getelementptr inbounds double, double* %493, i64 8
%495 = load double, double* %494
store double %495, double* %48
%496 = load double*, double** %23
%497 = getelementptr inbounds double, double* %496, i64 8
%498 = load double, double* %497
store double %498, double* %49
%499 = load i32, i32* %17
%500 = load double*, double** %24
%501 = sext i32 %499 to i64
%502 = getelementptr inbounds double, double* %500, i64 %501
store double* %502, double** %24
%503 = load double, double* %48
%504 = load double, double* %46
%505 = fmul double %503, %504
store double %505, double* %39
%506 = load double, double* %48
%507 = load double, double* %47
%508 = fmul double %506, %507
store double %508, double* %40
%509 = load double, double* %49
%510 = load double, double* %46
%511 = fmul double %509, %510
store double %511, double* %41
%512 = load double, double* %49
%513 = load double, double* %47
%514 = fmul double %512, %513
store double %514, double* %42
%515 = load double, double* %39
%516 = load double, double* %35
%517 = fadd double %516, %515
store double %517, double* %35
%518 = load double, double* %40
%519 = load double, double* %36
%520 = fadd double %519, %518
store double %520, double* %36
%521 = load double, double* %41
%522 = load double, double* %37
%523 = fadd double %522, %521
store double %523, double* %37
%524 = load double, double* %42
%525 = load double, double* %38
%526 = fadd double %525, %524
store double %526, double* %38
%527 = load double*, double** %24
%528 = getelementptr inbounds double, double* %527, i64 0
%529 = load double, double* %528
store double %529, double* %46
%530 = load double*, double** %24
%531 = getelementptr inbounds double, double* %530, i64 1
%532 = load double, double* %531
store double %532, double* %47
%533 = load double*, double** %22
%534 = getelementptr inbounds double, double* %533, i64 9
%535 = load double, double* %534
store double %535, double* %48
%536 = load double*, double** %23
%537 = getelementptr inbounds double, double* %536, i64 9
%538 = load double, double* %537
store double %538, double* %49
%539 = load i32, i32* %17
%540 = load double*, double** %24
%541 = sext i32 %539 to i64
%542 = getelementptr inbounds double, double* %540, i64 %541
store double* %542, double** %24
%543 = load double, double* %48
%544 = load double, double* %46
%545 = fmul double %543, %544
store double %545, double* %39
%546 = load double, double* %48
%547 = load double, double* %47
%548 = fmul double %546, %547
store double %548, double* %40
%549 = load double, double* %49
%550 = load double, double* %46
%551 = fmul double %549, %550
store double %551, double* %41
%552 = load double, double* %49
%553 = load double, double* %47
%554 = fmul double %552, %553
store double %554, double* %42
%555 = load double, double* %39
%556 = load double, double* %35
%557 = fadd double %556, %555
store double %557, double* %35
%558 = load double, double* %40
%559 = load double, double* %36
%560 = fadd double %559, %558
store double %560, double* %36
%561 = load double, double* %41
%562 = load double, double* %37
%563 = fadd double %562, %561
store double %563, double* %37
%564 = load double, double* %42
%565 = load double, double* %38
%566 = fadd double %565, %564
store double %566, double* %38
%567 = load double*, double** %24
%568 = getelementptr inbounds double, double* %567, i64 0
%569 = load double, double* %568
store double %569, double* %46
%570 = load double*, double** %24
%571 = getelementptr inbounds double, double* %570, i64 1
%572 = load double, double* %571
store double %572, double* %47
%573 = load double*, double** %22
%574 = getelementptr inbounds double, double* %573, i64 10
%575 = load double, double* %574
store double %575, double* %48
%576 = load double*, double** %23
%577 = getelementptr inbounds double, double* %576, i64 10
%578 = load double, double* %577
store double %578, double* %49
%579 = load i32, i32* %17
%580 = load double*, double** %24
%581 = sext i32 %579 to i64
%582 = getelementptr inbounds double, double* %580, i64 %581
store double* %582, double** %24
%583 = load double, double* %48
%584 = load double, double* %46
%585 = fmul double %583, %584
store double %585, double* %39
%586 = load double, double* %48
%587 = load double, double* %47
%588 = fmul double %586, %587
store double %588, double* %40
%589 = load double, double* %49
%590 = load double, double* %46
%591 = fmul double %589, %590
store double %591, double* %41
%592 = load double, double* %49
%593 = load double, double* %47
%594 = fmul double %592, %593
store double %594, double* %42
%595 = load double, double* %39
%596 = load double, double* %35
%597 = fadd double %596, %595
store double %597, double* %35
%598 = load double, double* %40
%599 = load double, double* %36
%600 = fadd double %599, %598
store double %600, double* %36
%601 = load double, double* %41
%602 = load double, double* %37
%603 = fadd double %602, %601
store double %603, double* %37
%604 = load double, double* %42
%605 = load double, double* %38
%606 = fadd double %605, %604
store double %606, double* %38
%607 = load double*, double** %24
%608 = getelementptr inbounds double, double* %607, i64 0
%609 = load double, double* %608
store double %609, double* %46
%610 = load double*, double** %24
%611 = getelementptr inbounds double, double* %610, i64 1
%612 = load double, double* %611
store double %612, double* %47
%613 = load double*, double** %22
%614 = getelementptr inbounds double, double* %613, i64 11
%615 = load double, double* %614
store double %615, double* %48
%616 = load double*, double** %23
%617 = getelementptr inbounds double, double* %616, i64 11
%618 = load double, double* %617
store double %618, double* %49
%619 = load i32, i32* %17
%620 = load double*, double** %24
%621 = sext i32 %619 to i64
%622 = getelementptr inbounds double, double* %620, i64 %621
store double* %622, double** %24
%623 = load double, double* %48
%624 = load double, double* %46
%625 = fmul double %623, %624
store double %625, double* %39
%626 = load double, double* %48
%627 = load double, double* %47
%628 = fmul double %626, %627
store double %628, double* %40
%629 = load double, double* %49
%630 = load double, double* %46
%631 = fmul double %629, %630
store double %631, double* %41
%632 = load double, double* %49
%633 = load double, double* %47
%634 = fmul double %632, %633
store double %634, double* %42
%635 = load double, double* %39
%636 = load double, double* %35
%637 = fadd double %636, %635
store double %637, double* %35
%638 = load double, double* %40
%639 = load double, double* %36
%640 = fadd double %639, %638
store double %640, double* %36
%641 = load double, double* %41
%642 = load double, double* %37
%643 = fadd double %642, %641
store double %643, double* %37
%644 = load double, double* %42
%645 = load double, double* %38
%646 = fadd double %645, %644
store double %646, double* %38
%647 = load double*, double** %24
%648 = getelementptr inbounds double, double* %647, i64 0
%649 = load double, double* %648
store double %649, double* %46
%650 = load double*, double** %24
%651 = getelementptr inbounds double, double* %650, i64 1
%652 = load double, double* %651
store double %652, double* %47
%653 = load double*, double** %22
%654 = getelementptr inbounds double, double* %653, i64 12
%655 = load double, double* %654
store double %655, double* %48
%656 = load double*, double** %23
%657 = getelementptr inbounds double, double* %656, i64 12
%658 = load double, double* %657
store double %658, double* %49
%659 = load i32, i32* %17
%660 = load double*, double** %24
%661 = sext i32 %659 to i64
%662 = getelementptr inbounds double, double* %660, i64 %661
store double* %662, double** %24
%663 = load double, double* %48
%664 = load double, double* %46
%665 = fmul double %663, %664
store double %665, double* %39
%666 = load double, double* %48
%667 = load double, double* %47
%668 = fmul double %666, %667
store double %668, double* %40
%669 = load double, double* %49
%670 = load double, double* %46
%671 = fmul double %669, %670
store double %671, double* %41
%672 = load double, double* %49
%673 = load double, double* %47
%674 = fmul double %672, %673
store double %674, double* %42
%675 = load double, double* %39
%676 = load double, double* %35
%677 = fadd double %676, %675
store double %677, double* %35
%678 = load double, double* %40
%679 = load double, double* %36
%680 = fadd double %679, %678
store double %680, double* %36
%681 = load double, double* %41
%682 = load double, double* %37
%683 = fadd double %682, %681
store double %683, double* %37
%684 = load double, double* %42
%685 = load double, double* %38
%686 = fadd double %685, %684
store double %686, double* %38
%687 = load double*, double** %24
%688 = getelementptr inbounds double, double* %687, i64 0
%689 = load double, double* %688
store double %689, double* %46
%690 = load double*, double** %24
%691 = getelementptr inbounds double, double* %690, i64 1
%692 = load double, double* %691
store double %692, double* %47
%693 = load double*, double** %22
%694 = getelementptr inbounds double, double* %693, i64 13
%695 = load double, double* %694
store double %695, double* %48
%696 = load double*, double** %23
%697 = getelementptr inbounds double, double* %696, i64 13
%698 = load double, double* %697
store double %698, double* %49
%699 = load i32, i32* %17
%700 = load double*, double** %24
%701 = sext i32 %699 to i64
%702 = getelementptr inbounds double, double* %700, i64 %701
store double* %702, double** %24
%703 = load double, double* %48
%704 = load double, double* %46
%705 = fmul double %703, %704
store double %705, double* %39
%706 = load double, double* %48
%707 = load double, double* %47
%708 = fmul double %706, %707
store double %708, double* %40
%709 = load double, double* %49
%710 = load double, double* %46
%711 = fmul double %709, %710
store double %711, double* %41
%712 = load double, double* %49
%713 = load double, double* %47
%714 = fmul double %712, %713
store double %714, double* %42
%715 = load double, double* %39
%716 = load double, double* %35
%717 = fadd double %716, %715
store double %717, double* %35
%718 = load double, double* %40
%719 = load double, double* %36
%720 = fadd double %719, %718
store double %720, double* %36
%721 = load double, double* %41
%722 = load double, double* %37
%723 = fadd double %722, %721
store double %723, double* %37
%724 = load double, double* %42
%725 = load double, double* %38
%726 = fadd double %725, %724
store double %726, double* %38
%727 = load double*, double** %24
%728 = getelementptr inbounds double, double* %727, i64 0
%729 = load double, double* %728
store double %729, double* %46
%730 = load double*, double** %24
%731 = getelementptr inbounds double, double* %730, i64 1
%732 = load double, double* %731
store double %732, double* %47
%733 = load double*, double** %22
%734 = getelementptr inbounds double, double* %733, i64 14
%735 = load double, double* %734
store double %735, double* %48
%736 = load double*, double** %23
%737 = getelementptr inbounds double, double* %736, i64 14
%738 = load double, double* %737
store double %738, double* %49
%739 = load i32, i32* %17
%740 = load double*, double** %24
%741 = sext i32 %739 to i64
%742 = getelementptr inbounds double, double* %740, i64 %741
store double* %742, double** %24
%743 = load double, double* %48
%744 = load double, double* %46
%745 = fmul double %743, %744
store double %745, double* %39
%746 = load double, double* %48
%747 = load double, double* %47
%748 = fmul double %746, %747
store double %748, double* %40
%749 = load double, double* %49
%750 = load double, double* %46
%751 = fmul double %749, %750
store double %751, double* %41
%752 = load double, double* %49
%753 = load double, double* %47
%754 = fmul double %752, %753
store double %754, double* %42
%755 = load double, double* %39
%756 = load double, double* %35
%757 = fadd double %756, %755
store double %757, double* %35
%758 = load double, double* %40
%759 = load double, double* %36
%760 = fadd double %759, %758
store double %760, double* %36
%761 = load double, double* %41
%762 = load double, double* %37
%763 = fadd double %762, %761
store double %763, double* %37
%764 = load double, double* %42
%765 = load double, double* %38
%766 = fadd double %765, %764
store double %766, double* %38
%767 = load double*, double** %24
%768 = getelementptr inbounds double, double* %767, i64 0
%769 = load double, double* %768
store double %769, double* %46
%770 = load double*, double** %24
%771 = getelementptr inbounds double, double* %770, i64 1
%772 = load double, double* %771
store double %772, double* %47
%773 = load double*, double** %22
%774 = getelementptr inbounds double, double* %773, i64 15
%775 = load double, double* %774
store double %775, double* %48
%776 = load double*, double** %23
%777 = getelementptr inbounds double, double* %776, i64 15
%778 = load double, double* %777
store double %778, double* %49
%779 = load i32, i32* %17
%780 = load double*, double** %24
%781 = sext i32 %779 to i64
%782 = getelementptr inbounds double, double* %780, i64 %781
store double* %782, double** %24
%783 = load double*, double** %22
%784 = getelementptr inbounds double, double* %783, i64 16
store double* %784, double** %22
%785 = load double*, double** %23
%786 = getelementptr inbounds double, double* %785, i64 16
store double* %786, double** %23
br label %787
787: ; preds = %142
%788 = load double*, double** %22
%789 = load double*, double** %43
%790 = icmp ne double* %788, %789
br i1 %790, label %142, label %791
791: ; preds = %787
%792 = load double, double* %48
%793 = load double, double* %46
%794 = fmul double %792, %793
store double %794, double* %39
%795 = load double, double* %48
%796 = load double, double* %47
%797 = fmul double %795, %796
store double %797, double* %40
%798 = load double, double* %49
%799 = load double, double* %46
%800 = fmul double %798, %799
store double %800, double* %41
%801 = load double, double* %49
%802 = load double, double* %47
%803 = fmul double %801, %802
store double %803, double* %42
%804 = load double, double* %39
%805 = load double, double* %35
%806 = fadd double %805, %804
store double %806, double* %35
%807 = load double, double* %40
%808 = load double, double* %36
%809 = fadd double %808, %807
store double %809, double* %36
%810 = load double, double* %41
%811 = load double, double* %37
%812 = fadd double %811, %810
store double %812, double* %37
%813 = load double, double* %42
%814 = load double, double* %38
%815 = fadd double %814, %813
store double %815, double* %38
%816 = load double*, double** %25
store double* %816, double** %50
%817 = load double, double* %35
%818 = load double*, double** %50
%819 = getelementptr inbounds double, double* %818, i64 0
store double %817, double* %819
%820 = load double, double* %36
%821 = load double*, double** %50
%822 = getelementptr inbounds double, double* %821, i64 1
store double %820, double* %822
%823 = load i32, i32* %18
%824 = load double*, double** %50
%825 = sext i32 %823 to i64
%826 = getelementptr inbounds double, double* %824, i64 %825
store double* %826, double** %50
%827 = load double, double* %37
%828 = load double*, double** %50
%829 = getelementptr inbounds double, double* %828, i64 0
store double %827, double* %829
%830 = load double, double* %38
%831 = load double*, double** %50
%832 = getelementptr inbounds double, double* %831, i64 1
store double %830, double* %832
%833 = load double*, double** %20
%834 = getelementptr inbounds double, double* %833, i64 2
store double* %834, double** %20
%835 = load double*, double** %25
%836 = getelementptr inbounds double, double* %835, i64 2
store double* %836, double** %25
br label %837
837: ; preds = %791
%838 = load double*, double** %25
%839 = load double*, double** %44
%840 = icmp ne double* %838, %839
br i1 %840, label %101, label %841
841: ; preds = %837
%842 = load i32, i32* %27
%843 = load double*, double** %21
%844 = sext i32 %842 to i64
%845 = getelementptr inbounds double, double* %843, i64 %844
store double* %845, double** %21
%846 = load i32, i32* %26
%847 = load double*, double** %19
%848 = sext i32 %846 to i64
%849 = getelementptr inbounds double, double* %847, i64 %848
store double* %849, double** %19
br label %850
850: ; preds = %841
%851 = load double*, double** %21
%852 = load double*, double** %34
%853 = icmp ne double* %851, %852
br i1 %853, label %86, label %854
854: ; preds = %850
ret void
}

LLVM IR (-O2):
define void @mul_mdmd_md_l0nf(i32 %0, i32 %1, i32 %2, double* %3, double* nocapture %4, double* %5, i32 %6, i32 %7, i32 %8) {
%10 = shl nsw i32 %6, 1
%11 = shl nsw i32 %8, 1
%12 = icmp sgt i32 %1, 16
%13 = add i32 %1, 15
%14 = and i32 %13, 15
%15 = sub i32 %1, %14
%16 = select i1 %12, i32 %15, i32 0
%17 = and i32 %0, -2
%18 = and i32 %2, -2
%19 = mul nsw i32 %17, %8
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds double, double* %5, i64 %20
%22 = sext i32 %11 to i64
%23 = sext i32 %16 to i64
%24 = sext i32 %18 to i64
%25 = sext i32 %6 to i64
%26 = sext i32 %8 to i64
%27 = sext i32 %7 to i64
%28 = sext i32 %10 to i64
br label %29
29: ; preds = %313, %9
%30 = phi double* [ %5, %9 ], [ %314, %313 ]
%31 = phi double* [ %3, %9 ], [ %315, %313 ]
%32 = getelementptr inbounds double, double* %31, i64 %23
%33 = getelementptr inbounds double, double* %30, i64 %24
%34 = getelementptr inbounds double, double* %31, i64 %25
%35 = getelementptr inbounds double, double* %31, i64 1
%36 = getelementptr inbounds double, double* %34, i64 1
br label %37
37: ; preds = %299, %29
%38 = phi double* [ %30, %29 ], [ %311, %299 ]
%39 = phi double* [ %4, %29 ], [ %310, %299 ]
%40 = bitcast double* %38 to <2 x double>*
%41 = load <2 x double>, <2 x double>* %40
%42 = getelementptr inbounds double, double* %38, i64 %26
%43 = bitcast double* %42 to <2 x double>*
%44 = load <2 x double>, <2 x double>* %43
%45 = bitcast double* %39 to <2 x double>*
%46 = load <2 x double>, <2 x double>* %45
%47 = load double, double* %31
%48 = load double, double* %34
br label %49
49: ; preds = %49, %37
%50 = phi double* [ %39, %37 ], [ %281, %49 ]
%51 = phi double* [ %36, %37 ], [ %297, %49 ]
%52 = phi double* [ %35, %37 ], [ %296, %49 ]
%53 = phi double [ %47, %37 ], [ %293, %49 ]
%54 = phi double [ %48, %37 ], [ %295, %49 ]
%55 = phi <2 x double> [ %44, %37 ], [ %289, %49 ]
%56 = phi <2 x double> [ %46, %37 ], [ %291, %49 ]
%57 = phi <2 x double> [ %41, %37 ], [ %288, %49 ]
%58 = getelementptr inbounds double, double* %50, i64 %27
%59 = insertelement <2 x double> poison, double %53, i64 0
%60 = shufflevector <2 x double> %59, <2 x double> poison, <2 x i32> zeroinitializer
%61 = fmul <2 x double> %56, %60
%62 = insertelement <2 x double> poison, double %54, i64 0
%63 = shufflevector <2 x double> %62, <2 x double> poison, <2 x i32> zeroinitializer
%64 = fmul <2 x double> %56, %63
%65 = fadd <2 x double> %57, %61
%66 = fadd <2 x double> %55, %64
%67 = bitcast double* %58 to <2 x double>*
%68 = load <2 x double>, <2 x double>* %67
%69 = load double, double* %52
%70 = load double, double* %51
%71 = getelementptr inbounds double, double* %58, i64 %27
%72 = insertelement <2 x double> poison, double %69, i64 0
%73 = shufflevector <2 x double> %72, <2 x double> poison, <2 x i32> zeroinitializer
%74 = fmul <2 x double> %68, %73
%75 = insertelement <2 x double> poison, double %70, i64 0
%76 = shufflevector <2 x double> %75, <2 x double> poison, <2 x i32> zeroinitializer
%77 = fmul <2 x double> %68, %76
%78 = fadd <2 x double> %65, %74
%79 = fadd <2 x double> %66, %77
%80 = bitcast double* %71 to <2 x double>*
%81 = load <2 x double>, <2 x double>* %80
%82 = getelementptr inbounds double, double* %52, i64 1
%83 = load double, double* %82
%84 = getelementptr inbounds double, double* %51, i64 1
%85 = load double, double* %84
%86 = getelementptr inbounds double, double* %71, i64 %27
%87 = insertelement <2 x double> poison, double %83, i64 0
%88 = shufflevector <2 x double> %87, <2 x double> poison, <2 x i32> zeroinitializer
%89 = fmul <2 x double> %81, %88
%90 = insertelement <2 x double> poison, double %85, i64 0
%91 = shufflevector <2 x double> %90, <2 x double> poison, <2 x i32> zeroinitializer
%92 = fmul <2 x double> %81, %91
%93 = fadd <2 x double> %78, %89
%94 = fadd <2 x double> %79, %92
%95 = bitcast double* %86 to <2 x double>*
%96 = load <2 x double>, <2 x double>* %95
%97 = getelementptr inbounds double, double* %52, i64 2
%98 = load double, double* %97
%99 = getelementptr inbounds double, double* %51, i64 2
%100 = load double, double* %99
%101 = getelementptr inbounds double, double* %86, i64 %27
%102 = insertelement <2 x double> poison, double %98, i64 0
%103 = shufflevector <2 x double> %102, <2 x double> poison, <2 x i32> zeroinitializer
%104 = fmul <2 x double> %96, %103
%105 = insertelement <2 x double> poison, double %100, i64 0
%106 = shufflevector <2 x double> %105, <2 x double> poison, <2 x i32> zeroinitializer
%107 = fmul <2 x double> %96, %106
%108 = fadd <2 x double> %93, %104
%109 = fadd <2 x double> %94, %107
%110 = bitcast double* %101 to <2 x double>*
%111 = load <2 x double>, <2 x double>* %110
%112 = getelementptr inbounds double, double* %52, i64 3
%113 = load double, double* %112
%114 = getelementptr inbounds double, double* %51, i64 3
%115 = load double, double* %114
%116 = getelementptr inbounds double, double* %101, i64 %27
%117 = insertelement <2 x double> poison, double %113, i64 0
%118 = shufflevector <2 x double> %117, <2 x double> poison, <2 x i32> zeroinitializer
%119 = fmul <2 x double> %111, %118
%120 = insertelement <2 x double> poison, double %115, i64 0
%121 = shufflevector <2 x double> %120, <2 x double> poison, <2 x i32> zeroinitializer
%122 = fmul <2 x double> %111, %121
%123 = fadd <2 x double> %108, %119
%124 = fadd <2 x double> %109, %122
%125 = bitcast double* %116 to <2 x double>*
%126 = load <2 x double>, <2 x double>* %125
%127 = getelementptr inbounds double, double* %52, i64 4
%128 = load double, double* %127
%129 = getelementptr inbounds double, double* %51, i64 4
%130 = load double, double* %129
%131 = getelementptr inbounds double, double* %116, i64 %27
%132 = insertelement <2 x double> poison, double %128, i64 0
%133 = shufflevector <2 x double> %132, <2 x double> poison, <2 x i32> zeroinitializer
%134 = fmul <2 x double> %126, %133
%135 = insertelement <2 x double> poison, double %130, i64 0
%136 = shufflevector <2 x double> %135, <2 x double> poison, <2 x i32> zeroinitializer
%137 = fmul <2 x double> %126, %136
%138 = fadd <2 x double> %123, %134
%139 = fadd <2 x double> %124, %137
%140 = bitcast double* %131 to <2 x double>*
%141 = load <2 x double>, <2 x double>* %140
%142 = getelementptr inbounds double, double* %52, i64 5
%143 = load double, double* %142
%144 = getelementptr inbounds double, double* %51, i64 5
%145 = load double, double* %144
%146 = getelementptr inbounds double, double* %131, i64 %27
%147 = insertelement <2 x double> poison, double %143, i64 0
%148 = shufflevector <2 x double> %147, <2 x double> poison, <2 x i32> zeroinitializer
%149 = fmul <2 x double> %141, %148
%150 = insertelement <2 x double> poison, double %145, i64 0
%151 = shufflevector <2 x double> %150, <2 x double> poison, <2 x i32> zeroinitializer
%152 = fmul <2 x double> %141, %151
%153 = fadd <2 x double> %138, %149
%154 = fadd <2 x double> %139, %152
%155 = bitcast double* %146 to <2 x double>*
%156 = load <2 x double>, <2 x double>* %155
%157 = getelementptr inbounds double, double* %52, i64 6
%158 = load double, double* %157
%159 = getelementptr inbounds double, double* %51, i64 6
%160 = load double, double* %159
%161 = getelementptr inbounds double, double* %146, i64 %27
%162 = insertelement <2 x double> poison, double %158, i64 0
%163 = shufflevector <2 x double> %162, <2 x double> poison, <2 x i32> zeroinitializer
%164 = fmul <2 x double> %156, %163
%165 = insertelement <2 x double> poison, double %160, i64 0
%166 = shufflevector <2 x double> %165, <2 x double> poison, <2 x i32> zeroinitializer
%167 = fmul <2 x double> %156, %166
%168 = fadd <2 x double> %153, %164
%169 = fadd <2 x double> %154, %167
%170 = bitcast double* %161 to <2 x double>*
%171 = load <2 x double>, <2 x double>* %170
%172 = getelementptr inbounds double, double* %52, i64 7
%173 = load double, double* %172
%174 = getelementptr inbounds double, double* %51, i64 7
%175 = load double, double* %174
%176 = getelementptr inbounds double, double* %161, i64 %27
%177 = insertelement <2 x double> poison, double %173, i64 0
%178 = shufflevector <2 x double> %177, <2 x double> poison, <2 x i32> zeroinitializer
%179 = fmul <2 x double> %171, %178
%180 = insertelement <2 x double> poison, double %175, i64 0
%181 = shufflevector <2 x double> %180, <2 x double> poison, <2 x i32> zeroinitializer
%182 = fmul <2 x double> %171, %181
%183 = fadd <2 x double> %168, %179
%184 = fadd <2 x double> %169, %182
%185 = bitcast double* %176 to <2 x double>*
%186 = load <2 x double>, <2 x double>* %185
%187 = getelementptr inbounds double, double* %52, i64 8
%188 = load double, double* %187
%189 = getelementptr inbounds double, double* %51, i64 8
%190 = load double, double* %189
%191 = getelementptr inbounds double, double* %176, i64 %27
%192 = insertelement <2 x double> poison, double %188, i64 0
%193 = shufflevector <2 x double> %192, <2 x double> poison, <2 x i32> zeroinitializer
%194 = fmul <2 x double> %186, %193
%195 = insertelement <2 x double> poison, double %190, i64 0
%196 = shufflevector <2 x double> %195, <2 x double> poison, <2 x i32> zeroinitializer
%197 = fmul <2 x double> %186, %196
%198 = fadd <2 x double> %183, %194
%199 = fadd <2 x double> %184, %197
%200 = bitcast double* %191 to <2 x double>*
%201 = load <2 x double>, <2 x double>* %200
%202 = getelementptr inbounds double, double* %52, i64 9
%203 = load double, double* %202
%204 = getelementptr inbounds double, double* %51, i64 9
%205 = load double, double* %204
%206 = getelementptr inbounds double, double* %191, i64 %27
%207 = insertelement <2 x double> poison, double %203, i64 0
%208 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> zeroinitializer
%209 = fmul <2 x double> %201, %208
%210 = insertelement <2 x double> poison, double %205, i64 0
%211 = shufflevector <2 x double> %210, <2 x double> poison, <2 x i32> zeroinitializer
%212 = fmul <2 x double> %201, %211
%213 = fadd <2 x double> %198, %209
%214 = fadd <2 x double> %199, %212
%215 = bitcast double* %206 to <2 x double>*
%216 = load <2 x double>, <2 x double>* %215
%217 = getelementptr inbounds double, double* %52, i64 10
%218 = load double, double* %217
%219 = getelementptr inbounds double, double* %51, i64 10
%220 = load double, double* %219
%221 = getelementptr inbounds double, double* %206, i64 %27
%222 = insertelement <2 x double> poison, double %218, i64 0
%223 = shufflevector <2 x double> %222, <2 x double> poison, <2 x i32> zeroinitializer
%224 = fmul <2 x double> %216, %223
%225 = insertelement <2 x double> poison, double %220, i64 0
%226 = shufflevector <2 x double> %225, <2 x double> poison, <2 x i32> zeroinitializer
%227 = fmul <2 x double> %216, %226
%228 = fadd <2 x double> %213, %224
%229 = fadd <2 x double> %214, %227
%230 = bitcast double* %221 to <2 x double>*
%231 = load <2 x double>, <2 x double>* %230
%232 = getelementptr inbounds double, double* %52, i64 11
%233 = load double, double* %232
%234 = getelementptr inbounds double, double* %51, i64 11
%235 = load double, double* %234
%236 = getelementptr inbounds double, double* %221, i64 %27
%237 = insertelement <2 x double> poison, double %233, i64 0
%238 = shufflevector <2 x double> %237, <2 x double> poison, <2 x i32> zeroinitializer
%239 = fmul <2 x double> %231, %238
%240 = insertelement <2 x double> poison, double %235, i64 0
%241 = shufflevector <2 x double> %240, <2 x double> poison, <2 x i32> zeroinitializer
%242 = fmul <2 x double> %231, %241
%243 = fadd <2 x double> %228, %239
%244 = fadd <2 x double> %229, %242
%245 = bitcast double* %236 to <2 x double>*
%246 = load <2 x double>, <2 x double>* %245
%247 = getelementptr inbounds double, double* %52, i64 12
%248 = load double, double* %247
%249 = getelementptr inbounds double, double* %51, i64 12
%250 = load double, double* %249
%251 = getelementptr inbounds double, double* %236, i64 %27
%252 = insertelement <2 x double> poison, double %248, i64 0
%253 = shufflevector <2 x double> %252, <2 x double> poison, <2 x i32> zeroinitializer
%254 = fmul <2 x double> %246, %253
%255 = insertelement <2 x double> poison, double %250, i64 0
%256 = shufflevector <2 x double> %255, <2 x double> poison, <2 x i32> zeroinitializer
%257 = fmul <2 x double> %246, %256
%258 = fadd <2 x double> %243, %254
%259 = fadd <2 x double> %244, %257
%260 = bitcast double* %251 to <2 x double>*
%261 = load <2 x double>, <2 x double>* %260
%262 = getelementptr inbounds double, double* %52, i64 13
%263 = load double, double* %262
%264 = getelementptr inbounds double, double* %51, i64 13
%265 = load double, double* %264
%266 = getelementptr inbounds double, double* %251, i64 %27
%267 = insertelement <2 x double> poison, double %263, i64 0
%268 = shufflevector <2 x double> %267, <2 x double> poison, <2 x i32> zeroinitializer
%269 = fmul <2 x double> %261, %268
%270 = insertelement <2 x double> poison, double %265, i64 0
%271 = shufflevector <2 x double> %270, <2 x double> poison, <2 x i32> zeroinitializer
%272 = fmul <2 x double> %261, %271
%273 = fadd <2 x double> %258, %269
%274 = fadd <2 x double> %259, %272
%275 = bitcast double* %266 to <2 x double>*
%276 = load <2 x double>, <2 x double>* %275
%277 = getelementptr inbounds double, double* %52, i64 14
%278 = load double, double* %277
%279 = getelementptr inbounds double, double* %51, i64 14
%280 = load double, double* %279
%281 = getelementptr inbounds double, double* %266, i64 %27
%282 = insertelement <2 x double> poison, double %278, i64 0
%283 = shufflevector <2 x double> %282, <2 x double> poison, <2 x i32> zeroinitializer
%284 = fmul <2 x double> %276, %283
%285 = insertelement <2 x double> poison, double %280, i64 0
%286 = shufflevector <2 x double> %285, <2 x double> poison, <2 x i32> zeroinitializer
%287 = fmul <2 x double> %276, %286
%288 = fadd <2 x double> %273, %284
%289 = fadd <2 x double> %274, %287
%290 = bitcast double* %281 to <2 x double>*
%291 = load <2 x double>, <2 x double>* %290
%292 = getelementptr inbounds double, double* %52, i64 15
%293 = load double, double* %292
%294 = getelementptr inbounds double, double* %51, i64 15
%295 = load double, double* %294
%296 = getelementptr inbounds double, double* %52, i64 16
%297 = getelementptr inbounds double, double* %51, i64 16
%298 = icmp eq double* %296, %32
br i1 %298, label %299, label %49
299: ; preds = %49
%300 = insertelement <2 x double> poison, double %293, i64 0
%301 = shufflevector <2 x double> %300, <2 x double> poison, <2 x i32> zeroinitializer
%302 = fmul <2 x double> %291, %301
%303 = insertelement <2 x double> poison, double %295, i64 0
%304 = shufflevector <2 x double> %303, <2 x double> poison, <2 x i32> zeroinitializer
%305 = fmul <2 x double> %291, %304
%306 = fadd <2 x double> %288, %302
%307 = fadd <2 x double> %289, %305
%308 = bitcast double* %38 to <2 x double>*
store <2 x double> %306, <2 x double>* %308
%309 = bitcast double* %42 to <2 x double>*
store <2 x double> %307, <2 x double>* %309
%310 = getelementptr inbounds double, double* %39, i64 2
%311 = getelementptr inbounds double, double* %38, i64 2
%312 = icmp eq double* %311, %33
br i1 %312, label %313, label %37
313: ; preds = %299
%314 = getelementptr inbounds double, double* %30, i64 %22
%315 = getelementptr inbounds double, double* %31, i64 %28
%316 = icmp eq double* %314, %21
br i1 %316, label %317, label %29
317: ; preds = %313
ret void
}