void kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new(int km, int kn, int kadd, int tri_A,
                                           double *Ap, double *Bp, int ksub,
                                           double *Am, double *Bm, int alg,
                                           double *C, double *D, double *E,
                                           int use_inv_diag_E,
                                           double *inv_diag_E) {
  const int bs = 4;
  int k;
  double a_0, a_1, b_0, b_1, b_2, b_3, c_00 = 0, c_01 = 0, c_02 = 0, c_03 = 0,
                                       c_10 = 0, c_11 = 0, c_12 = 0, c_13 = 0;
  k = 0;
  if (kadd > 0) {
    if (tri_A == 1) {
      if (kadd >= 2) {
        a_0 = Ap[0 + bs * 0];
        b_0 = Bp[0 + bs * 0];
        b_1 = Bp[1 + bs * 0];
        b_2 = Bp[2 + bs * 0];
        b_3 = Bp[3 + bs * 0];
        c_00 += a_0 * b_0;
        c_01 += a_0 * b_1;
        c_02 += a_0 * b_2;
        c_03 += a_0 * b_3;
        a_0 = Ap[0 + bs * 1];
        a_1 = Ap[1 + bs * 1];
        b_0 = Bp[0 + bs * 1];
        b_1 = Bp[1 + bs * 1];
        b_2 = Bp[2 + bs * 1];
        b_3 = Bp[3 + bs * 1];
        c_00 += a_0 * b_0;
        c_10 += a_1 * b_0;
        c_01 += a_0 * b_1;
        c_11 += a_1 * b_1;
        c_02 += a_0 * b_2;
        c_12 += a_1 * b_2;
        c_03 += a_0 * b_3;
        c_13 += a_1 * b_3;
        Ap += 8;
        Bp += 8;
        k += 2;
      } else {
        a_0 = Ap[0 + bs * 0];
        b_0 = Bp[0 + bs * 0];
        b_1 = Bp[1 + bs * 0];
        b_2 = Bp[2 + bs * 0];
        b_3 = Bp[3 + bs * 0];
        c_00 += a_0 * b_0;
        c_01 += a_0 * b_1;
        c_02 += a_0 * b_2;
        c_03 += a_0 * b_3;
        k += 1;
      }
    }
    for (; k < kadd - 3; k += 4) {
      a_0 = Ap[0 + bs * 0];
      a_1 = Ap[1 + bs * 0];
      b_0 = Bp[0 + bs * 0];
      b_1 = Bp[1 + bs * 0];
      b_2 = Bp[2 + bs * 0];
      b_3 = Bp[3 + bs * 0];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_02 += a_0 * b_2;
      c_12 += a_1 * b_2;
      c_03 += a_0 * b_3;
      c_13 += a_1 * b_3;
      a_0 = Ap[0 + bs * 1];
      a_1 = Ap[1 + bs * 1];
      b_0 = Bp[0 + bs * 1];
      b_1 = Bp[1 + bs * 1];
      b_2 = Bp[2 + bs * 1];
      b_3 = Bp[3 + bs * 1];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_02 += a_0 * b_2;
      c_12 += a_1 * b_2;
      c_03 += a_0 * b_3;
      c_13 += a_1 * b_3;
      a_0 = Ap[0 + bs * 2];
      a_1 = Ap[1 + bs * 2];
      b_0 = Bp[0 + bs * 2];
      b_1 = Bp[1 + bs * 2];
      b_2 = Bp[2 + bs * 2];
      b_3 = Bp[3 + bs * 2];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_02 += a_0 * b_2;
      c_12 += a_1 * b_2;
      c_03 += a_0 * b_3;
      c_13 += a_1 * b_3;
      a_0 = Ap[0 + bs * 3];
      a_1 = Ap[1 + bs * 3];
      b_0 = Bp[0 + bs * 3];
      b_1 = Bp[1 + bs * 3];
      b_2 = Bp[2 + bs * 3];
      b_3 = Bp[3 + bs * 3];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_02 += a_0 * b_2;
      c_12 += a_1 * b_2;
      c_03 += a_0 * b_3;
      c_13 += a_1 * b_3;
      Ap += 16;
      Bp += 16;
    }
    for (; k < kadd; k++) {
      a_0 = Ap[0 + bs * 0];
      a_1 = Ap[1 + bs * 0];
      b_0 = Bp[0 + bs * 0];
      b_1 = Bp[1 + bs * 0];
      b_2 = Bp[2 + bs * 0];
      b_3 = Bp[3 + bs * 0];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_02 += a_0 * b_2;
      c_12 += a_1 * b_2;
      c_03 += a_0 * b_3;
      c_13 += a_1 * b_3;
      Ap += 4;
      Bp += 4;
    }
  }
  for (k = 0; k < ksub - 3; k += 4) {
    a_0 = Am[0 + bs * 0];
    a_1 = Am[1 + bs * 0];
    b_0 = Bm[0 + bs * 0];
    b_1 = Bm[1 + bs * 0];
    b_2 = Bm[2 + bs * 0];
    b_3 = Bm[3 + bs * 0];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    a_0 = Am[0 + bs * 1];
    a_1 = Am[1 + bs * 1];
    b_0 = Bm[0 + bs * 1];
    b_1 = Bm[1 + bs * 1];
    b_2 = Bm[2 + bs * 1];
    b_3 = Bm[3 + bs * 1];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    a_0 = Am[0 + bs * 2];
    a_1 = Am[1 + bs * 2];
    b_0 = Bm[0 + bs * 2];
    b_1 = Bm[1 + bs * 2];
    b_2 = Bm[2 + bs * 2];
    b_3 = Bm[3 + bs * 2];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    a_0 = Am[0 + bs * 3];
    a_1 = Am[1 + bs * 3];
    b_0 = Bm[0 + bs * 3];
    b_1 = Bm[1 + bs * 3];
    b_2 = Bm[2 + bs * 3];
    b_3 = Bm[3 + bs * 3];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    Am += 16;
    Bm += 16;
  }
  if (alg != 0) {
    c_00 += C[0 + bs * 0];
    c_10 += C[1 + bs * 0];
    c_01 += C[0 + bs * 1];
    c_11 += C[1 + bs * 1];
    c_02 += C[0 + bs * 2];
    c_12 += C[1 + bs * 2];
    c_03 += C[0 + bs * 3];
    c_13 += C[1 + bs * 3];
  }
  double a_00, a_10, a_20, a_30, a_11, a_21, a_31, a_22, a_32, a_33;
  if (use_inv_diag_E) {
    a_00 = inv_diag_E[0];
    c_00 *= a_00;
    c_10 *= a_00;
    D[0 + bs * 0] = c_00;
    if (km >= 2)
      D[1 + bs * 0] = c_10;
    a_10 = E[1 + bs * 0];
    a_11 = inv_diag_E[1];
    c_01 -= c_00 * a_10;
    c_11 -= c_10 * a_10;
    c_01 *= a_11;
    c_11 *= a_11;
    D[0 + bs * 1] = c_01;
    if (km >= 2)
      D[1 + bs * 1] = c_11;
    a_20 = E[2 + bs * 0];
    a_21 = E[2 + bs * 1];
    a_22 = inv_diag_E[2];
    c_02 -= c_00 * a_20;
    c_12 -= c_10 * a_20;
    c_02 -= c_01 * a_21;
    c_12 -= c_11 * a_21;
    c_02 *= a_22;
    c_12 *= a_22;
    D[0 + bs * 2] = c_02;
    if (km >= 2)
      D[1 + bs * 2] = c_12;
    if (kn == 3)
      return;
    a_30 = E[3 + bs * 0];
    a_31 = E[3 + bs * 1];
    a_32 = E[3 + bs * 2];
    a_33 = inv_diag_E[3];
    c_03 -= c_00 * a_30;
    c_13 -= c_10 * a_30;
    c_03 -= c_01 * a_31;
    c_13 -= c_11 * a_31;
    c_03 -= c_02 * a_32;
    c_13 -= c_12 * a_32;
    c_03 *= a_33;
    c_13 *= a_33;
    D[0 + bs * 3] = c_03;
    if (km >= 2)
      D[1 + bs * 3] = c_13;
  } else {
    a_00 = 1.0 / E[0 + bs * 0];
    c_00 *= a_00;
    c_10 *= a_00;
    D[0 + bs * 0] = c_00;
    if (km >= 2)
      D[1 + bs * 0] = c_10;
    a_10 = E[1 + bs * 0];
    a_11 = 1.0 / E[1 + bs * 1];
    c_01 -= c_00 * a_10;
    c_11 -= c_10 * a_10;
    c_01 *= a_11;
    c_11 *= a_11;
    D[0 + bs * 1] = c_01;
    if (km >= 2)
      D[1 + bs * 1] = c_11;
    a_20 = E[2 + bs * 0];
    a_21 = E[2 + bs * 1];
    a_22 = 1.0 / E[2 + bs * 2];
    c_02 -= c_00 * a_20;
    c_12 -= c_10 * a_20;
    c_02 -= c_01 * a_21;
    c_12 -= c_11 * a_21;
    c_02 *= a_22;
    c_12 *= a_22;
    D[0 + bs * 2] = c_02;
    if (km >= 2)
      D[1 + bs * 2] = c_12;
    if (kn == 3)
      return;
    a_30 = E[3 + bs * 0];
    a_31 = E[3 + bs * 1];
    a_32 = E[3 + bs * 2];
    a_33 = 1.0 / E[3 + bs * 3];
    c_03 -= c_00 * a_30;
    c_13 -= c_10 * a_30;
    c_03 -= c_01 * a_31;
    c_13 -= c_11 * a_31;
    c_03 -= c_02 * a_32;
    c_13 -= c_12 * a_32;
    c_03 *= a_33;
    c_13 *= a_33;
    D[0 + bs * 3] = c_03;
    if (km >= 2)
      D[1 + bs * 3] = c_13;
  }
}


x86 assembly (clang, -O0):
<kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new>:
push   %rbp
mov    %rsp,%rbp
sub    $0x68,%rsp
mov    0x50(%rbp),%rax
mov    0x48(%rbp),%eax
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%eax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %ecx,-0x10(%rbp)
mov    %r8,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
movl   $0x4,-0x24(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movl   $0x0,-0x28(%rbp)
cmpl   $0x0,-0xc(%rbp)
jle    1b6a <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xa6a>
cmpl   $0x1,-0x10(%rbp)
jne    1494 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x394>
cmpl   $0x2,-0xc(%rbp)
jl     13d2 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x2d2>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
jmp    148f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x38f>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1494 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x394>
jmp    1499 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x399>
mov    -0x28(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    19ea <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x8ea>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x28(%rbp)
jmp    1499 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x399>
jmp    19ef <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x8ef>
mov    -0x28(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1b65 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xa65>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x20(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    19ef <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x8ef>
jmp    1b6a <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xa6a>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    0x10(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    23a2 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x12a2>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,0x18(%rbp)
mov    0x20(%rbp),%rax
add    $0x80,%rax
mov    %rax,0x20(%rbp)
mov    -0x28(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x28(%rbp)
jmp    1b71 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xa71>
cmpl   $0x0,0x28(%rbp)
je     2455 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1355>
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x30(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    0x30(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x30(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x30(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x30(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x30(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x0,0x48(%rbp)
je     2913 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1813>
mov    0x50(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     24b8 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x13b8>
movsd  -0x80(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x20(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     259f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x149f>
movsd  -0x88(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x50(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x40(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     270c <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x160c>
movsd  -0x90(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x48(%rax)
cmpl   $0x3,-0x8(%rbp)
jne    271b <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x161b>
jmp    2de7 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ce7>
mov    0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x50(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x60(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     290e <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x180e>
movsd  -0x98(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x68(%rax)
jmp    2de7 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ce7>
mov    0x40(%rbp),%rax
movsd  0x6e1(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x60(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2974 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1874>
movsd  -0x80(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x66f(%rip),%xmm0
divsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x20(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2a63 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1963>
movsd  -0x88(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    0x40(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x56f(%rip),%xmm0
divsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x70(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xc8(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x40(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2bd8 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ad8>
movsd  -0x90(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x48(%rax)
cmpl   $0x3,-0x8(%rbp)
jne    2be7 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ae7>
jmp    2de7 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ce7>
mov    0x40(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x3da(%rip),%xmm0
divsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x60(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2de2 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ce2>
movsd  -0x98(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x68(%rax)
jmp    2de7 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x1ce7>
add    $0x68,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new>:
sub    $0x38,%rsp
mov    0x40(%rsp),%r10d
test   %edx,%edx
jle    11b0 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xb0>
cmp    $0x1,%ecx
jne    11c9 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xc9>
movupd (%r9),%xmm0
movupd 0x10(%r9),%xmm11
movsd  (%r8),%xmm14
unpcklpd %xmm14,%xmm14
mulpd  %xmm14,%xmm11
xorpd  %xmm13,%xmm13
addpd  %xmm13,%xmm11
mulpd  %xmm0,%xmm14
addpd  %xmm13,%xmm14
cmp    $0x2,%edx
jb     11e1 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xe1>
movupd 0x20(%r9),%xmm0
movupd 0x30(%r9),%xmm9
movsd  0x20(%r8),%xmm1
movsd  0x28(%r8),%xmm13
unpcklpd %xmm1,%xmm1
movapd %xmm1,%xmm2
mulpd  %xmm9,%xmm2
addpd  %xmm2,%xmm11
mulpd  %xmm0,%xmm1
addpd  %xmm1,%xmm14
unpcklpd %xmm13,%xmm13
mulpd  %xmm13,%xmm9
xorpd  %xmm1,%xmm1
addpd  %xmm1,%xmm9
mulpd  %xmm0,%xmm13
addpd  %xmm1,%xmm13
add    $0x40,%r8
add    $0x40,%r9
mov    $0x2,%ecx
jmp    11eb <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xeb>
xorpd  %xmm13,%xmm13
xorpd  %xmm9,%xmm9
xorpd  %xmm14,%xmm14
xorpd  %xmm11,%xmm11
jmp    1420 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x320>
xorpd  %xmm13,%xmm13
xor    %ecx,%ecx
xorpd  %xmm9,%xmm9
xorpd  %xmm14,%xmm14
xorpd  %xmm11,%xmm11
jmp    11eb <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0xeb>
mov    $0x1,%ecx
xorpd  %xmm9,%xmm9
lea    -0x3(%rdx),%eax
cmp    %eax,%ecx
jge    1369 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x269>
cs nopw 0x0(%rax,%rax,1)
movupd (%r9),%xmm1
movupd 0x10(%r9),%xmm4
movupd 0x20(%r9),%xmm10
movupd 0x30(%r9),%xmm8
movsd  (%r8),%xmm6
movsd  0x8(%r8),%xmm2
movsd  0x20(%r8),%xmm0
movsd  0x28(%r8),%xmm5
unpcklpd %xmm6,%xmm6
movapd %xmm6,%xmm7
mulpd  %xmm1,%xmm7
addpd  %xmm14,%xmm7
mulpd  %xmm4,%xmm6
addpd  %xmm11,%xmm6
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
addpd  %xmm13,%xmm1
mulpd  %xmm4,%xmm2
addpd  %xmm9,%xmm2
unpcklpd %xmm0,%xmm0
movapd %xmm0,%xmm3
mulpd  %xmm8,%xmm3
addpd  %xmm6,%xmm3
mulpd  %xmm10,%xmm0
addpd  %xmm7,%xmm0
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm8
addpd  %xmm2,%xmm8
mulpd  %xmm10,%xmm5
addpd  %xmm1,%xmm5
movupd 0x50(%r9),%xmm1
movupd 0x40(%r9),%xmm7
movsd  0x40(%r8),%xmm4
unpcklpd %xmm4,%xmm4
movapd %xmm4,%xmm6
mulpd  %xmm7,%xmm6
addpd  %xmm0,%xmm6
mulpd  %xmm1,%xmm4
addpd  %xmm3,%xmm4
movsd  0x48(%r8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm7
addpd  %xmm5,%xmm7
mulpd  %xmm1,%xmm0
addpd  %xmm8,%xmm0
movupd 0x60(%r9),%xmm8
movupd 0x70(%r9),%xmm1
movsd  0x60(%r8),%xmm5
unpcklpd %xmm5,%xmm5
movapd %xmm5,%xmm3
mulpd  %xmm1,%xmm3
movapd %xmm3,%xmm11
addpd  %xmm4,%xmm11
mulpd  %xmm8,%xmm5
movapd %xmm5,%xmm14
addpd  %xmm6,%xmm14
movsd  0x68(%r8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
movapd %xmm1,%xmm9
addpd  %xmm0,%xmm9
mulpd  %xmm8,%xmm2
movapd %xmm2,%xmm13
addpd  %xmm7,%xmm13
sub    $0xffffffffffffff80,%r8
sub    $0xffffffffffffff80,%r9
add    $0x4,%ecx
cmp    %eax,%ecx
jl     1200 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x100>
addpd  %xmm7,%xmm2
addpd  %xmm0,%xmm1
addpd  %xmm6,%xmm5
addpd  %xmm4,%xmm3
movapd %xmm2,%xmm13
movapd %xmm1,%xmm9
movapd %xmm5,%xmm14
movapd %xmm3,%xmm11
cmp    %edx,%ecx
jge    1420 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x320>
sub    %ecx,%edx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd %xmm11,%xmm8
movapd %xmm14,%xmm1
movapd %xmm9,%xmm5
movapd %xmm13,%xmm0
movupd (%r9,%rax,1),%xmm2
movupd 0x10(%r9,%rax,1),%xmm3
movsd  (%r8,%rax,1),%xmm4
movsd  0x8(%r8,%rax,1),%xmm7
unpcklpd %xmm4,%xmm4
movapd %xmm4,%xmm6
mulpd  %xmm3,%xmm6
movapd %xmm6,%xmm11
addpd  %xmm8,%xmm11
mulpd  %xmm2,%xmm4
movapd %xmm4,%xmm14
addpd  %xmm1,%xmm14
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm3
movapd %xmm3,%xmm9
addpd  %xmm5,%xmm9
mulpd  %xmm2,%xmm7
movapd %xmm7,%xmm13
addpd  %xmm0,%xmm13
add    $0x20,%rax
add    $0xffffffff,%edx
jne    1380 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x280>
addpd  %xmm0,%xmm7
addpd  %xmm5,%xmm3
addpd  %xmm1,%xmm4
addpd  %xmm8,%xmm6
movapd %xmm7,%xmm13
movapd %xmm3,%xmm9
movapd %xmm4,%xmm14
movapd %xmm6,%xmm11
mov    0x58(%rsp),%r8d
cmp    $0x4,%r10d
jl     1745 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x645>
mov    0x50(%rsp),%r9
mov    0x48(%rsp),%rdx
add    $0xfffffffd,%r10d
xor    %ecx,%ecx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movapd %xmm11,-0x10(%rsp)
movapd %xmm14,(%rsp)
movapd %xmm9,-0x30(%rsp)
movapd %xmm13,-0x20(%rsp)
movupd (%r9,%rcx,1),%xmm6
movupd 0x10(%r9,%rcx,1),%xmm4
movupd 0x20(%r9,%rcx,1),%xmm3
movupd 0x30(%r9,%rcx,1),%xmm5
movsd  (%rdx,%rcx,1),%xmm0
movsd  0x8(%rdx,%rcx,1),%xmm1
movsd  0x20(%rdx,%rcx,1),%xmm7
movsd  0x28(%rdx,%rcx,1),%xmm10
movapd %xmm0,-0x70(%rsp)
unpcklpd %xmm0,%xmm0
movapd %xmm0,%xmm2
mulpd  %xmm6,%xmm2
subpd  %xmm2,%xmm14
mulpd  %xmm4,%xmm0
subpd  %xmm0,%xmm11
movapd %xmm1,-0x40(%rsp)
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
movapd %xmm0,%xmm2
movapd %xmm6,-0x60(%rsp)
mulpd  %xmm6,%xmm2
subpd  %xmm2,%xmm13
movapd %xmm4,0x10(%rsp)
mulpd  %xmm4,%xmm0
subpd  %xmm0,%xmm9
movapd %xmm7,-0x80(%rsp)
movapd %xmm7,%xmm0
unpcklpd %xmm7,%xmm0
movapd %xmm0,%xmm2
mulpd  %xmm5,%xmm2
subpd  %xmm2,%xmm11
mulpd  %xmm3,%xmm0
subpd  %xmm0,%xmm14
movapd %xmm10,%xmm8
movapd %xmm10,%xmm0
unpcklpd %xmm10,%xmm0
movapd %xmm0,%xmm2
movapd %xmm5,-0x50(%rsp)
mulpd  %xmm5,%xmm2
subpd  %xmm2,%xmm9
movapd %xmm3,0x20(%rsp)
mulpd  %xmm3,%xmm0
subpd  %xmm0,%xmm13
movupd 0x40(%r9,%rcx,1),%xmm12
movsd  0x40(%rdx,%rcx,1),%xmm0
movapd %xmm0,%xmm2
unpcklpd %xmm0,%xmm2
movapd %xmm2,%xmm3
mulpd  %xmm12,%xmm3
subpd  %xmm3,%xmm14
movupd 0x50(%r9,%rcx,1),%xmm4
mulpd  %xmm4,%xmm2
subpd  %xmm2,%xmm11
movsd  0x48(%rdx,%rcx,1),%xmm15
movapd %xmm15,%xmm2
unpcklpd %xmm15,%xmm2
movapd %xmm2,%xmm3
mulpd  %xmm12,%xmm3
subpd  %xmm3,%xmm13
mulpd  %xmm4,%xmm2
subpd  %xmm2,%xmm9
movsd  0x60(%rdx,%rcx,1),%xmm3
movapd %xmm3,%xmm7
unpcklpd %xmm3,%xmm7
movupd 0x70(%r9,%rcx,1),%xmm10
movapd %xmm7,%xmm2
mulpd  %xmm10,%xmm2
subpd  %xmm2,%xmm11
movupd 0x60(%r9,%rcx,1),%xmm2
mulpd  %xmm2,%xmm7
subpd  %xmm7,%xmm14
movsd  0x68(%rdx,%rcx,1),%xmm6
movapd %xmm6,%xmm5
unpcklpd %xmm6,%xmm5
movapd %xmm5,%xmm7
mulpd  %xmm10,%xmm7
subpd  %xmm7,%xmm9
mulpd  %xmm2,%xmm5
subpd  %xmm5,%xmm13
add    $0x4,%eax
sub    $0xffffffffffffff80,%rcx
cmp    %r10d,%eax
jl     1450 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x350>
movapd 0x9f2(%rip),%xmm5
movapd -0x70(%rsp),%xmm1
xorpd  %xmm5,%xmm1
movapd %xmm1,-0x70(%rsp)
movapd -0x40(%rsp),%xmm1
xorpd  %xmm5,%xmm1
movapd -0x80(%rsp),%xmm7
xorpd  %xmm5,%xmm7
movapd %xmm7,-0x80(%rsp)
xorpd  %xmm5,%xmm8
xorpd  %xmm5,%xmm0
xorpd  %xmm5,%xmm15
xorpd  %xmm5,%xmm3
xorpd  %xmm5,%xmm6
pshufd $0x44,%xmm1,%xmm1
movdqa %xmm1,%xmm5
movapd 0x10(%rsp),%xmm14
mulpd  %xmm14,%xmm5
addpd  -0x30(%rsp),%xmm5
mulpd  -0x60(%rsp),%xmm1
addpd  -0x20(%rsp),%xmm1
pshufd $0x44,%xmm8,%xmm7
movdqa %xmm7,%xmm8
movapd 0x20(%rsp),%xmm11
mulpd  %xmm11,%xmm8
addpd  %xmm1,%xmm8
mulpd  -0x50(%rsp),%xmm7
addpd  %xmm5,%xmm7
pshufd $0x44,%xmm15,%xmm1
movdqa %xmm1,%xmm5
mulpd  %xmm4,%xmm5
addpd  %xmm7,%xmm5
mulpd  %xmm12,%xmm1
addpd  %xmm8,%xmm1
pshufd $0x44,%xmm6,%xmm9
movdqa %xmm9,%xmm13
mulpd  %xmm2,%xmm13
addpd  %xmm1,%xmm13
mulpd  %xmm10,%xmm9
addpd  %xmm5,%xmm9
pshufd $0x44,-0x70(%rsp),%xmm1
mulpd  %xmm1,%xmm14
addpd  -0x10(%rsp),%xmm14
mulpd  -0x60(%rsp),%xmm1
addpd  (%rsp),%xmm1
pshufd $0x44,-0x80(%rsp),%xmm5
mulpd  %xmm5,%xmm11
addpd  %xmm1,%xmm11
mulpd  -0x50(%rsp),%xmm5
addpd  %xmm14,%xmm5
pshufd $0x44,%xmm0,%xmm0
mulpd  %xmm0,%xmm4
addpd  %xmm5,%xmm4
mulpd  %xmm12,%xmm0
addpd  %xmm11,%xmm0
pshufd $0x44,%xmm3,%xmm11
mulpd  %xmm11,%xmm2
addpd  %xmm0,%xmm2
mulpd  %xmm10,%xmm11
addpd  %xmm4,%xmm11
movapd %xmm2,%xmm14
mov    0x78(%rsp),%edx
test   %r8d,%r8d
je     178e <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x68e>
mov    0x60(%rsp),%rax
movsd  (%rax),%xmm0
movsd  0x8(%rax),%xmm1
movsd  0x40(%rax),%xmm2
movsd  0x48(%rax),%xmm3
movhpd 0x20(%rax),%xmm0
movhpd 0x60(%rax),%xmm2
addpd  %xmm2,%xmm11
addpd  %xmm0,%xmm14
movhpd 0x28(%rax),%xmm1
movhpd 0x68(%rax),%xmm3
addpd  %xmm3,%xmm9
addpd  %xmm1,%xmm13
mov    0x70(%rsp),%rcx
mov    0x68(%rsp),%rax
test   %edx,%edx
je     18fd <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x7fd>
mov    0x80(%rsp),%rdx
movsd  (%rdx),%xmm0
movapd %xmm14,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm13,%xmm0
movsd  %xmm1,(%rax)
cmp    $0x2,%edi
jl     17c8 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x6c8>
movsd  %xmm0,0x8(%rax)
movsd  0x8(%rcx),%xmm2
movsd  0x8(%rdx),%xmm3
movapd 0x825(%rip),%xmm8
movapd %xmm1,%xmm6
xorpd  %xmm8,%xmm6
unpckhpd %xmm14,%xmm14
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm14
movapd %xmm0,%xmm4
xorpd  %xmm8,%xmm4
unpckhpd %xmm13,%xmm13
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm13
mulsd  %xmm3,%xmm14
mulsd  %xmm3,%xmm13
movsd  %xmm14,0x20(%rax)
cmp    $0x2,%edi
jl     1824 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x724>
movsd  %xmm13,0x28(%rax)
movsd  0x10(%rcx),%xmm7
movsd  0x30(%rcx),%xmm1
movsd  0x10(%rdx),%xmm2
movapd %xmm6,%xmm0
mulsd  %xmm7,%xmm0
addsd  %xmm11,%xmm0
mulsd  %xmm4,%xmm7
addsd  %xmm9,%xmm7
movapd %xmm14,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm13,%xmm1
subsd  %xmm1,%xmm7
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm7
movsd  %xmm0,0x40(%rax)
cmp    $0x2,%edi
jl     1876 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x776>
movsd  %xmm7,0x48(%rax)
cmp    $0x3,%esi
je     1a5f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x95f>
xorpd  %xmm8,%xmm14
movsd  0x18(%rcx),%xmm5
movsd  0x38(%rcx),%xmm3
movsd  0x58(%rcx),%xmm2
movsd  0x18(%rdx),%xmm1
unpckhpd %xmm11,%xmm11
mulsd  %xmm5,%xmm6
addsd  %xmm11,%xmm6
mulsd  %xmm3,%xmm14
addsd  %xmm6,%xmm14
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm14
mulsd  %xmm1,%xmm14
movsd  %xmm14,0x60(%rax)
cmp    $0x2,%edi
jl     1a5f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x95f>
xorpd  %xmm8,%xmm13
unpckhpd %xmm9,%xmm9
mulsd  %xmm5,%xmm4
addsd  %xmm9,%xmm4
mulsd  %xmm3,%xmm13
addsd  %xmm4,%xmm13
mulsd  %xmm2,%xmm7
subsd  %xmm7,%xmm13
mulsd  %xmm1,%xmm13
jmp    1a59 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x959>
movsd  0x70b(%rip),%xmm4
movapd %xmm4,%xmm0
divsd  (%rcx),%xmm0
movapd %xmm14,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm13,%xmm0
movsd  %xmm1,(%rax)
cmp    $0x2,%edi
jl     1929 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x829>
movsd  %xmm0,0x8(%rax)
movsd  0x8(%rcx),%xmm2
movapd %xmm4,%xmm3
divsd  0x28(%rcx),%xmm3
movapd 0x6c0(%rip),%xmm8
movapd %xmm1,%xmm7
xorpd  %xmm8,%xmm7
unpckhpd %xmm14,%xmm14
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm14
movapd %xmm0,%xmm5
xorpd  %xmm8,%xmm5
unpckhpd %xmm13,%xmm13
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm13
mulsd  %xmm3,%xmm14
mulsd  %xmm3,%xmm13
movsd  %xmm14,0x20(%rax)
cmp    $0x2,%edi
jl     1989 <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x889>
movsd  %xmm13,0x28(%rax)
movsd  0x10(%rcx),%xmm6
movsd  0x30(%rcx),%xmm1
movapd %xmm4,%xmm2
divsd  0x50(%rcx),%xmm2
movapd %xmm7,%xmm0
mulsd  %xmm6,%xmm0
addsd  %xmm11,%xmm0
mulsd  %xmm5,%xmm6
addsd  %xmm9,%xmm6
movapd %xmm14,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm13,%xmm1
subsd  %xmm1,%xmm6
mulsd  %xmm2,%xmm0
mulsd  %xmm2,%xmm6
movsd  %xmm0,0x40(%rax)
cmp    $0x2,%edi
jl     19df <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x8df>
movsd  %xmm6,0x48(%rax)
cmp    $0x3,%esi
je     1a5f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x95f>
xorpd  %xmm8,%xmm14
movsd  0x18(%rcx),%xmm3
movsd  0x38(%rcx),%xmm2
movsd  0x58(%rcx),%xmm1
divsd  0x78(%rcx),%xmm4
unpckhpd %xmm11,%xmm11
mulsd  %xmm3,%xmm7
addsd  %xmm11,%xmm7
mulsd  %xmm2,%xmm14
addsd  %xmm7,%xmm14
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm14
mulsd  %xmm4,%xmm14
movsd  %xmm14,0x60(%rax)
cmp    $0x2,%edi
jl     1a5f <kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new+0x95f>
xorpd  %xmm8,%xmm13
unpckhpd %xmm9,%xmm9
mulsd  %xmm3,%xmm5
addsd  %xmm9,%xmm5
mulsd  %xmm2,%xmm13
addsd  %xmm5,%xmm13
mulsd  %xmm1,%xmm6
subsd  %xmm6,%xmm13
mulsd  %xmm4,%xmm13
movsd  %xmm13,0x68(%rax)
add    $0x38,%rsp
ret

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

LLVM IR (-O2):
define void @kernel_dgemm_dtrsm_nt_2x4_vs_lib4_new(i32 %0, i32 %1, i32 %2, i32 %3, double* nocapture %4, double* nocapture %5, i32 %6, double* nocapture %7, double* nocapture %8, i32 %9, double* nocapture %10, double* nocapture writeonly %11, double* nocapture %12, i32 %13, double* nocapture %14) {
%16 = icmp sgt i32 %2, 0
br i1 %16, label %17, label %151
17: ; preds = %15
%18 = icmp eq i32 %3, 1
br i1 %18, label %19, label %43
19: ; preds = %17
%20 = icmp ugt i32 %2, 1
%21 = load double, double* %4
%22 = bitcast double* %5 to <4 x double>*
%23 = load <4 x double>, <4 x double>* %22
%24 = insertelement <4 x double> poison, double %21, i64 0
%25 = shufflevector <4 x double> %24, <4 x double> poison, <4 x i32> zeroinitializer
%26 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %25, <4 x double> %23, <4 x double> zeroinitializer)
br i1 %20, label %27, label %43
27: ; preds = %19
%28 = getelementptr inbounds double, double* %4, i64 4
%29 = load double, double* %28
%30 = getelementptr inbounds double, double* %4, i64 5
%31 = load double, double* %30
%32 = getelementptr inbounds double, double* %5, i64 4
%33 = bitcast double* %32 to <4 x double>*
%34 = load <4 x double>, <4 x double>* %33
%35 = insertelement <4 x double> poison, double %29, i64 0
%36 = shufflevector <4 x double> %35, <4 x double> poison, <4 x i32> zeroinitializer
%37 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %36, <4 x double> %34, <4 x double> %26)
%38 = insertelement <4 x double> poison, double %31, i64 0
%39 = shufflevector <4 x double> %38, <4 x double> poison, <4 x i32> zeroinitializer
%40 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %39, <4 x double> %34, <4 x double> zeroinitializer)
%41 = getelementptr inbounds double, double* %4, i64 8
%42 = getelementptr inbounds double, double* %5, i64 8
br label %43
43: ; preds = %19, %27, %17
%44 = phi double* [ %42, %27 ], [ %5, %17 ], [ %5, %19 ]
%45 = phi double* [ %41, %27 ], [ %4, %17 ], [ %4, %19 ]
%46 = phi i32 [ 2, %27 ], [ 0, %17 ], [ 1, %19 ]
%47 = phi <4 x double> [ %40, %27 ], [ zeroinitializer, %17 ], [ zeroinitializer, %19 ]
%48 = phi <4 x double> [ %37, %27 ], [ zeroinitializer, %17 ], [ %26, %19 ]
%49 = add nsw i32 %2, -3
%50 = icmp slt i32 %46, %49
br i1 %50, label %67, label %60
51: ; preds = %67
%52 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %82, <4 x double> %77, <4 x double> %71)
%53 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %95, <4 x double> %90, <4 x double> %52)
%54 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %108, <4 x double> %103, <4 x double> %53)
%55 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %121, <4 x double> %116, <4 x double> %54)
%56 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %79, <4 x double> %77, <4 x double> %72)
%57 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %92, <4 x double> %90, <4 x double> %56)
%58 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %105, <4 x double> %103, <4 x double> %57)
%59 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %118, <4 x double> %116, <4 x double> %58)
br label %60
60: ; preds = %51, %43
%61 = phi double* [ %44, %43 ], [ %124, %51 ]
%62 = phi double* [ %45, %43 ], [ %123, %51 ]
%63 = phi i32 [ %46, %43 ], [ %125, %51 ]
%64 = phi <4 x double> [ %47, %43 ], [ %55, %51 ]
%65 = phi <4 x double> [ %48, %43 ], [ %59, %51 ]
%66 = icmp slt i32 %63, %2
br i1 %66, label %127, label %151
67: ; preds = %43, %67
%68 = phi i32 [ %125, %67 ], [ %46, %43 ]
%69 = phi double* [ %123, %67 ], [ %45, %43 ]
%70 = phi double* [ %124, %67 ], [ %44, %43 ]
%71 = phi <4 x double> [ %122, %67 ], [ %47, %43 ]
%72 = phi <4 x double> [ %119, %67 ], [ %48, %43 ]
%73 = load double, double* %69
%74 = getelementptr inbounds double, double* %69, i64 1
%75 = load double, double* %74
%76 = bitcast double* %70 to <4 x double>*
%77 = load <4 x double>, <4 x double>* %76
%78 = insertelement <4 x double> poison, double %73, i64 0
%79 = shufflevector <4 x double> %78, <4 x double> poison, <4 x i32> zeroinitializer
%80 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %79, <4 x double> %77, <4 x double> %72)
%81 = insertelement <4 x double> poison, double %75, i64 0
%82 = shufflevector <4 x double> %81, <4 x double> poison, <4 x i32> zeroinitializer
%83 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %82, <4 x double> %77, <4 x double> %71)
%84 = getelementptr inbounds double, double* %69, i64 4
%85 = load double, double* %84
%86 = getelementptr inbounds double, double* %69, i64 5
%87 = load double, double* %86
%88 = getelementptr inbounds double, double* %70, i64 4
%89 = bitcast double* %88 to <4 x double>*
%90 = load <4 x double>, <4 x double>* %89
%91 = insertelement <4 x double> poison, double %85, i64 0
%92 = shufflevector <4 x double> %91, <4 x double> poison, <4 x i32> zeroinitializer
%93 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %92, <4 x double> %90, <4 x double> %80)
%94 = insertelement <4 x double> poison, double %87, i64 0
%95 = shufflevector <4 x double> %94, <4 x double> poison, <4 x i32> zeroinitializer
%96 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %95, <4 x double> %90, <4 x double> %83)
%97 = getelementptr inbounds double, double* %69, i64 8
%98 = load double, double* %97
%99 = getelementptr inbounds double, double* %69, i64 9
%100 = load double, double* %99
%101 = getelementptr inbounds double, double* %70, i64 8
%102 = bitcast double* %101 to <4 x double>*
%103 = load <4 x double>, <4 x double>* %102
%104 = insertelement <4 x double> poison, double %98, i64 0
%105 = shufflevector <4 x double> %104, <4 x double> poison, <4 x i32> zeroinitializer
%106 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %105, <4 x double> %103, <4 x double> %93)
%107 = insertelement <4 x double> poison, double %100, i64 0
%108 = shufflevector <4 x double> %107, <4 x double> poison, <4 x i32> zeroinitializer
%109 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %108, <4 x double> %103, <4 x double> %96)
%110 = getelementptr inbounds double, double* %69, i64 12
%111 = load double, double* %110
%112 = getelementptr inbounds double, double* %69, i64 13
%113 = load double, double* %112
%114 = getelementptr inbounds double, double* %70, i64 12
%115 = bitcast double* %114 to <4 x double>*
%116 = load <4 x double>, <4 x double>* %115
%117 = insertelement <4 x double> poison, double %111, i64 0
%118 = shufflevector <4 x double> %117, <4 x double> poison, <4 x i32> zeroinitializer
%119 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %118, <4 x double> %116, <4 x double> %106)
%120 = insertelement <4 x double> poison, double %113, i64 0
%121 = shufflevector <4 x double> %120, <4 x double> poison, <4 x i32> zeroinitializer
%122 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %121, <4 x double> %116, <4 x double> %109)
%123 = getelementptr inbounds double, double* %69, i64 16
%124 = getelementptr inbounds double, double* %70, i64 16
%125 = add nuw nsw i32 %68, 4
%126 = icmp slt i32 %125, %49
br i1 %126, label %67, label %51
127: ; preds = %60, %127
%128 = phi i32 [ %146, %127 ], [ %63, %60 ]
%129 = phi double* [ %144, %127 ], [ %62, %60 ]
%130 = phi double* [ %145, %127 ], [ %61, %60 ]
%131 = phi <4 x double> [ %143, %127 ], [ %64, %60 ]
%132 = phi <4 x double> [ %140, %127 ], [ %65, %60 ]
%133 = load double, double* %129
%134 = getelementptr inbounds double, double* %129, i64 1
%135 = load double, double* %134
%136 = bitcast double* %130 to <4 x double>*
%137 = load <4 x double>, <4 x double>* %136
%138 = insertelement <4 x double> poison, double %133, i64 0
%139 = shufflevector <4 x double> %138, <4 x double> poison, <4 x i32> zeroinitializer
%140 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %139, <4 x double> %137, <4 x double> %132)
%141 = insertelement <4 x double> poison, double %135, i64 0
%142 = shufflevector <4 x double> %141, <4 x double> poison, <4 x i32> zeroinitializer
%143 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %142, <4 x double> %137, <4 x double> %131)
%144 = getelementptr inbounds double, double* %129, i64 4
%145 = getelementptr inbounds double, double* %130, i64 4
%146 = add nuw nsw i32 %128, 1
%147 = icmp eq i32 %146, %2
br i1 %147, label %148, label %127
148: ; preds = %127
%149 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %142, <4 x double> %137, <4 x double> %131)
%150 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %139, <4 x double> %137, <4 x double> %132)
br label %151
151: ; preds = %148, %60, %15
%152 = phi <4 x double> [ zeroinitializer, %15 ], [ %64, %60 ], [ %149, %148 ]
%153 = phi <4 x double> [ zeroinitializer, %15 ], [ %65, %60 ], [ %150, %148 ]
%154 = add nsw i32 %6, -3
%155 = icmp sgt i32 %6, 3
br i1 %155, label %156, label %233
156: ; preds = %151, %156
%157 = phi i32 [ %222, %156 ], [ 0, %151 ]
%158 = phi double* [ %220, %156 ], [ %7, %151 ]
%159 = phi double* [ %221, %156 ], [ %8, %151 ]
%160 = phi <4 x double> [ %219, %156 ], [ %152, %151 ]
%161 = phi <4 x double> [ %216, %156 ], [ %153, %151 ]
%162 = load double, double* %158
%163 = getelementptr inbounds double, double* %158, i64 1
%164 = load double, double* %163
%165 = bitcast double* %159 to <4 x double>*
%166 = load <4 x double>, <4 x double>* %165
%167 = fneg double %162
%168 = fneg double %164
%169 = insertelement <4 x double> poison, double %167, i64 0
%170 = shufflevector <4 x double> %169, <4 x double> poison, <4 x i32> zeroinitializer
%171 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %170, <4 x double> %166, <4 x double> %161)
%172 = insertelement <4 x double> poison, double %168, i64 0
%173 = shufflevector <4 x double> %172, <4 x double> poison, <4 x i32> zeroinitializer
%174 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %173, <4 x double> %166, <4 x double> %160)
%175 = getelementptr inbounds double, double* %158, i64 4
%176 = load double, double* %175
%177 = getelementptr inbounds double, double* %158, i64 5
%178 = load double, double* %177
%179 = getelementptr inbounds double, double* %159, i64 4
%180 = bitcast double* %179 to <4 x double>*
%181 = load <4 x double>, <4 x double>* %180
%182 = fneg double %176
%183 = fneg double %178
%184 = insertelement <4 x double> poison, double %182, i64 0
%185 = shufflevector <4 x double> %184, <4 x double> poison, <4 x i32> zeroinitializer
%186 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %185, <4 x double> %181, <4 x double> %171)
%187 = insertelement <4 x double> poison, double %183, i64 0
%188 = shufflevector <4 x double> %187, <4 x double> poison, <4 x i32> zeroinitializer
%189 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %188, <4 x double> %181, <4 x double> %174)
%190 = getelementptr inbounds double, double* %158, i64 8
%191 = load double, double* %190
%192 = getelementptr inbounds double, double* %158, i64 9
%193 = load double, double* %192
%194 = getelementptr inbounds double, double* %159, i64 8
%195 = bitcast double* %194 to <4 x double>*
%196 = load <4 x double>, <4 x double>* %195
%197 = fneg double %191
%198 = fneg double %193
%199 = insertelement <4 x double> poison, double %197, i64 0
%200 = shufflevector <4 x double> %199, <4 x double> poison, <4 x i32> zeroinitializer
%201 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %200, <4 x double> %196, <4 x double> %186)
%202 = insertelement <4 x double> poison, double %198, i64 0
%203 = shufflevector <4 x double> %202, <4 x double> poison, <4 x i32> zeroinitializer
%204 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %203, <4 x double> %196, <4 x double> %189)
%205 = getelementptr inbounds double, double* %158, i64 12
%206 = load double, double* %205
%207 = getelementptr inbounds double, double* %158, i64 13
%208 = load double, double* %207
%209 = getelementptr inbounds double, double* %159, i64 12
%210 = bitcast double* %209 to <4 x double>*
%211 = load <4 x double>, <4 x double>* %210
%212 = fneg double %206
%213 = fneg double %208
%214 = insertelement <4 x double> poison, double %212, i64 0
%215 = shufflevector <4 x double> %214, <4 x double> poison, <4 x i32> zeroinitializer
%216 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %215, <4 x double> %211, <4 x double> %201)
%217 = insertelement <4 x double> poison, double %213, i64 0
%218 = shufflevector <4 x double> %217, <4 x double> poison, <4 x i32> zeroinitializer
%219 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %218, <4 x double> %211, <4 x double> %204)
%220 = getelementptr inbounds double, double* %158, i64 16
%221 = getelementptr inbounds double, double* %159, i64 16
%222 = add nuw nsw i32 %157, 4
%223 = icmp slt i32 %222, %154
br i1 %223, label %156, label %224
224: ; preds = %156
%225 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %173, <4 x double> %166, <4 x double> %160)
%226 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %188, <4 x double> %181, <4 x double> %225)
%227 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %203, <4 x double> %196, <4 x double> %226)
%228 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %218, <4 x double> %211, <4 x double> %227)
%229 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %170, <4 x double> %166, <4 x double> %161)
%230 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %185, <4 x double> %181, <4 x double> %229)
%231 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %200, <4 x double> %196, <4 x double> %230)
%232 = call <4 x double> @llvm.fmuladd.v4f64(<4 x double> %215, <4 x double> %211, <4 x double> %231)
br label %233
233: ; preds = %224, %151
%234 = phi <4 x double> [ %152, %151 ], [ %228, %224 ]
%235 = phi <4 x double> [ %153, %151 ], [ %232, %224 ]
%236 = icmp eq i32 %9, 0
br i1 %236, label %263, label %237
237: ; preds = %233
%238 = load double, double* %10
%239 = getelementptr inbounds double, double* %10, i64 1
%240 = load double, double* %239
%241 = getelementptr inbounds double, double* %10, i64 4
%242 = load double, double* %241
%243 = getelementptr inbounds double, double* %10, i64 5
%244 = load double, double* %243
%245 = getelementptr inbounds double, double* %10, i64 8
%246 = load double, double* %245
%247 = getelementptr inbounds double, double* %10, i64 9
%248 = load double, double* %247
%249 = getelementptr inbounds double, double* %10, i64 12
%250 = load double, double* %249
%251 = insertelement <4 x double> poison, double %238, i64 0
%252 = insertelement <4 x double> %251, double %242, i64 1
%253 = insertelement <4 x double> %252, double %246, i64 2
%254 = insertelement <4 x double> %253, double %250, i64 3
%255 = fadd <4 x double> %235, %254
%256 = getelementptr inbounds double, double* %10, i64 13
%257 = load double, double* %256
%258 = insertelement <4 x double> poison, double %240, i64 0
%259 = insertelement <4 x double> %258, double %244, i64 1
%260 = insertelement <4 x double> %259, double %248, i64 2
%261 = insertelement <4 x double> %260, double %257, i64 3
%262 = fadd <4 x double> %234, %261
br label %263
263: ; preds = %237, %233
%264 = phi <4 x double> [ %262, %237 ], [ %234, %233 ]
%265 = phi <4 x double> [ %255, %237 ], [ %235, %233 ]
%266 = icmp eq i32 %13, 0
br i1 %266, label %337, label %267
267: ; preds = %263
%268 = load double, double* %14
%269 = extractelement <4 x double> %265, i64 0
%270 = fmul double %269, %268
%271 = extractelement <4 x double> %264, i64 0
%272 = fmul double %271, %268
store double %270, double* %11
%273 = icmp sgt i32 %0, 1
br i1 %273, label %274, label %276
274: ; preds = %267
%275 = getelementptr inbounds double, double* %11, i64 1
store double %272, double* %275
br label %276
276: ; preds = %274, %267
%277 = getelementptr inbounds double, double* %12, i64 1
%278 = load double, double* %277
%279 = getelementptr inbounds double, double* %14, i64 1
%280 = load double, double* %279
%281 = fneg double %270
%282 = extractelement <4 x double> %265, i64 1
%283 = tail call double @llvm.fmuladd.f64(double %281, double %278, double %282)
%284 = fneg double %272
%285 = extractelement <4 x double> %264, i64 1
%286 = tail call double @llvm.fmuladd.f64(double %284, double %278, double %285)
%287 = fmul double %283, %280
%288 = fmul double %286, %280
%289 = getelementptr inbounds double, double* %11, i64 4
store double %287, double* %289
br i1 %273, label %290, label %292
290: ; preds = %276
%291 = getelementptr inbounds double, double* %11, i64 5
store double %288, double* %291
br label %292
292: ; preds = %290, %276
%293 = getelementptr inbounds double, double* %12, i64 2
%294 = load double, double* %293
%295 = getelementptr inbounds double, double* %12, i64 6
%296 = load double, double* %295
%297 = getelementptr inbounds double, double* %14, i64 2
%298 = load double, double* %297
%299 = extractelement <4 x double> %265, i64 2
%300 = tail call double @llvm.fmuladd.f64(double %281, double %294, double %299)
%301 = extractelement <4 x double> %264, i64 2
%302 = tail call double @llvm.fmuladd.f64(double %284, double %294, double %301)
%303 = fneg double %287
%304 = tail call double @llvm.fmuladd.f64(double %303, double %296, double %300)
%305 = fneg double %288
%306 = tail call double @llvm.fmuladd.f64(double %305, double %296, double %302)
%307 = fmul double %304, %298
%308 = fmul double %306, %298
%309 = getelementptr inbounds double, double* %11, i64 8
store double %307, double* %309
br i1 %273, label %310, label %312
310: ; preds = %292
%311 = getelementptr inbounds double, double* %11, i64 9
store double %308, double* %311
br label %312
312: ; preds = %310, %292
%313 = icmp eq i32 %1, 3
br i1 %313, label %414, label %314
314: ; preds = %312
%315 = getelementptr inbounds double, double* %12, i64 3
%316 = load double, double* %315
%317 = getelementptr inbounds double, double* %12, i64 7
%318 = load double, double* %317
%319 = getelementptr inbounds double, double* %12, i64 11
%320 = load double, double* %319
%321 = getelementptr inbounds double, double* %14, i64 3
%322 = load double, double* %321
%323 = extractelement <4 x double> %265, i64 3
%324 = tail call double @llvm.fmuladd.f64(double %281, double %316, double %323)
%325 = tail call double @llvm.fmuladd.f64(double %303, double %318, double %324)
%326 = fneg double %307
%327 = tail call double @llvm.fmuladd.f64(double %326, double %320, double %325)
%328 = fmul double %327, %322
%329 = getelementptr inbounds double, double* %11, i64 12
store double %328, double* %329
br i1 %273, label %330, label %414
330: ; preds = %314
%331 = fneg double %308
%332 = extractelement <4 x double> %264, i64 3
%333 = tail call double @llvm.fmuladd.f64(double %284, double %316, double %332)
%334 = tail call double @llvm.fmuladd.f64(double %305, double %318, double %333)
%335 = tail call double @llvm.fmuladd.f64(double %331, double %320, double %334)
%336 = fmul double %335, %322
br label %411
337: ; preds = %263
%338 = load double, double* %12
%339 = fdiv double 1.000000e+00, %338
%340 = extractelement <4 x double> %265, i64 0
%341 = fmul double %340, %339
%342 = extractelement <4 x double> %264, i64 0
%343 = fmul double %342, %339
store double %341, double* %11
%344 = icmp sgt i32 %0, 1
br i1 %344, label %345, label %347
345: ; preds = %337
%346 = getelementptr inbounds double, double* %11, i64 1
store double %343, double* %346
br label %347
347: ; preds = %345, %337
%348 = getelementptr inbounds double, double* %12, i64 1
%349 = load double, double* %348
%350 = getelementptr inbounds double, double* %12, i64 5
%351 = load double, double* %350
%352 = fdiv double 1.000000e+00, %351
%353 = fneg double %341
%354 = extractelement <4 x double> %265, i64 1
%355 = tail call double @llvm.fmuladd.f64(double %353, double %349, double %354)
%356 = fneg double %343
%357 = extractelement <4 x double> %264, i64 1
%358 = tail call double @llvm.fmuladd.f64(double %356, double %349, double %357)
%359 = fmul double %355, %352
%360 = fmul double %358, %352
%361 = getelementptr inbounds double, double* %11, i64 4
store double %359, double* %361
br i1 %344, label %362, label %364
362: ; preds = %347
%363 = getelementptr inbounds double, double* %11, i64 5
store double %360, double* %363
br label %364
364: ; preds = %362, %347
%365 = getelementptr inbounds double, double* %12, i64 2
%366 = load double, double* %365
%367 = getelementptr inbounds double, double* %12, i64 6
%368 = load double, double* %367
%369 = getelementptr inbounds double, double* %12, i64 10
%370 = load double, double* %369
%371 = fdiv double 1.000000e+00, %370
%372 = extractelement <4 x double> %265, i64 2
%373 = tail call double @llvm.fmuladd.f64(double %353, double %366, double %372)
%374 = extractelement <4 x double> %264, i64 2
%375 = tail call double @llvm.fmuladd.f64(double %356, double %366, double %374)
%376 = fneg double %359
%377 = tail call double @llvm.fmuladd.f64(double %376, double %368, double %373)
%378 = fneg double %360
%379 = tail call double @llvm.fmuladd.f64(double %378, double %368, double %375)
%380 = fmul double %377, %371
%381 = fmul double %379, %371
%382 = getelementptr inbounds double, double* %11, i64 8
store double %380, double* %382
br i1 %344, label %383, label %385
383: ; preds = %364
%384 = getelementptr inbounds double, double* %11, i64 9
store double %381, double* %384
br label %385
385: ; preds = %383, %364
%386 = icmp eq i32 %1, 3
br i1 %386, label %414, label %387
387: ; preds = %385
%388 = getelementptr inbounds double, double* %12, i64 3
%389 = load double, double* %388
%390 = getelementptr inbounds double, double* %12, i64 7
%391 = load double, double* %390
%392 = getelementptr inbounds double, double* %12, i64 11
%393 = load double, double* %392
%394 = getelementptr inbounds double, double* %12, i64 15
%395 = load double, double* %394
%396 = fdiv double 1.000000e+00, %395
%397 = extractelement <4 x double> %265, i64 3
%398 = tail call double @llvm.fmuladd.f64(double %353, double %389, double %397)
%399 = tail call double @llvm.fmuladd.f64(double %376, double %391, double %398)
%400 = fneg double %380
%401 = tail call double @llvm.fmuladd.f64(double %400, double %393, double %399)
%402 = fmul double %401, %396
%403 = getelementptr inbounds double, double* %11, i64 12
store double %402, double* %403
br i1 %344, label %404, label %414
404: ; preds = %387
%405 = fneg double %381
%406 = extractelement <4 x double> %264, i64 3
%407 = tail call double @llvm.fmuladd.f64(double %356, double %389, double %406)
%408 = tail call double @llvm.fmuladd.f64(double %378, double %391, double %407)
%409 = tail call double @llvm.fmuladd.f64(double %405, double %393, double %408)
%410 = fmul double %409, %396
br label %411
411: ; preds = %404, %330
%412 = phi double [ %336, %330 ], [ %410, %404 ]
%413 = getelementptr inbounds double, double* %11, i64 13
store double %412, double* %413
br label %414
414: ; preds = %411, %314, %387, %385, %312
ret void
}