void kernel_dgemm_dtrsm_nt_4x2_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, a_2, a_3, b_0, b_1, c_00 = 0, c_01 = 0, c_10 = 0, c_11 = 0,
                                       c_20 = 0, c_21 = 0, c_30 = 0, c_31 = 0;
  k = 0;
  if (kadd > 0) {
    if (tri_A == 1) {
      if (kadd >= 4) {
        a_0 = Ap[0 + bs * 0];
        b_0 = Bp[0 + bs * 0];
        b_1 = Bp[1 + bs * 0];
        c_00 += a_0 * b_0;
        c_01 += a_0 * b_1;
        a_0 = Ap[0 + bs * 1];
        a_1 = Ap[1 + bs * 1];
        b_0 = Bp[0 + bs * 1];
        b_1 = Bp[1 + 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;
        a_0 = Ap[0 + bs * 2];
        a_1 = Ap[1 + bs * 2];
        a_2 = Ap[2 + bs * 2];
        b_0 = Bp[0 + bs * 2];
        b_1 = Bp[1 + bs * 2];
        c_00 += a_0 * b_0;
        c_10 += a_1 * b_0;
        c_20 += a_2 * b_0;
        c_01 += a_0 * b_1;
        c_11 += a_1 * b_1;
        c_21 += a_2 * b_1;
        a_0 = Ap[0 + bs * 3];
        a_1 = Ap[1 + bs * 3];
        a_2 = Ap[2 + bs * 3];
        a_3 = Ap[3 + bs * 3];
        b_0 = Bp[0 + bs * 3];
        b_1 = Bp[1 + bs * 3];
        c_00 += a_0 * b_0;
        c_10 += a_1 * b_0;
        c_20 += a_2 * b_0;
        c_30 += a_3 * b_0;
        c_01 += a_0 * b_1;
        c_11 += a_1 * b_1;
        c_21 += a_2 * b_1;
        c_31 += a_3 * b_1;
        Ap += 16;
        Bp += 16;
        k += 4;
      } else {
        a_0 = Ap[0 + bs * 0];
        b_0 = Bp[0 + bs * 0];
        b_1 = Bp[1 + bs * 0];
        c_00 += a_0 * b_0;
        c_01 += a_0 * b_1;
        k += 1;
        if (kadd > 1) {
          a_0 = Ap[0 + bs * 1];
          a_1 = Ap[1 + bs * 1];
          b_0 = Bp[0 + bs * 1];
          b_1 = Bp[1 + 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;
          k += 1;
          if (kadd > 2) {
            a_0 = Ap[0 + bs * 2];
            a_1 = Ap[1 + bs * 2];
            a_2 = Ap[2 + bs * 2];
            b_0 = Bp[0 + bs * 2];
            b_1 = Bp[1 + bs * 2];
            c_00 += a_0 * b_0;
            c_10 += a_1 * b_0;
            c_20 += a_2 * b_0;
            c_01 += a_0 * b_1;
            c_11 += a_1 * b_1;
            c_21 += a_2 * b_1;
            k += 1;
          }
        }
      }
    }
    for (; k < kadd - 3; k += 4) {
      a_0 = Ap[0 + bs * 0];
      a_1 = Ap[1 + bs * 0];
      a_2 = Ap[2 + bs * 0];
      a_3 = Ap[3 + bs * 0];
      b_0 = Bp[0 + bs * 0];
      b_1 = Bp[1 + bs * 0];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_20 += a_2 * b_0;
      c_30 += a_3 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_21 += a_2 * b_1;
      c_31 += a_3 * b_1;
      a_0 = Ap[0 + bs * 1];
      a_1 = Ap[1 + bs * 1];
      a_2 = Ap[2 + bs * 1];
      a_3 = Ap[3 + bs * 1];
      b_0 = Bp[0 + bs * 1];
      b_1 = Bp[1 + bs * 1];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_20 += a_2 * b_0;
      c_30 += a_3 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_21 += a_2 * b_1;
      c_31 += a_3 * b_1;
      a_0 = Ap[0 + bs * 2];
      a_1 = Ap[1 + bs * 2];
      a_2 = Ap[2 + bs * 2];
      a_3 = Ap[3 + bs * 2];
      b_0 = Bp[0 + bs * 2];
      b_1 = Bp[1 + bs * 2];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_20 += a_2 * b_0;
      c_30 += a_3 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_21 += a_2 * b_1;
      c_31 += a_3 * b_1;
      a_0 = Ap[0 + bs * 3];
      a_1 = Ap[1 + bs * 3];
      a_2 = Ap[2 + bs * 3];
      a_3 = Ap[3 + bs * 3];
      b_0 = Bp[0 + bs * 3];
      b_1 = Bp[1 + bs * 3];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_20 += a_2 * b_0;
      c_30 += a_3 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_21 += a_2 * b_1;
      c_31 += a_3 * b_1;
      Ap += 16;
      Bp += 16;
    }
    for (; k < kadd; k++) {
      a_0 = Ap[0 + bs * 0];
      a_1 = Ap[1 + bs * 0];
      a_2 = Ap[2 + bs * 0];
      a_3 = Ap[3 + bs * 0];
      b_0 = Bp[0 + bs * 0];
      b_1 = Bp[1 + bs * 0];
      c_00 += a_0 * b_0;
      c_10 += a_1 * b_0;
      c_20 += a_2 * b_0;
      c_30 += a_3 * b_0;
      c_01 += a_0 * b_1;
      c_11 += a_1 * b_1;
      c_21 += a_2 * b_1;
      c_31 += a_3 * b_1;
      Ap += 4;
      Bp += 4;
    }
  }
  for (k = 0; k < ksub - 3; k += 4) {
    a_0 = Am[0 + bs * 0];
    a_1 = Am[1 + bs * 0];
    a_2 = Am[2 + bs * 0];
    a_3 = Am[3 + bs * 0];
    b_0 = Bm[0 + bs * 0];
    b_1 = Bm[1 + bs * 0];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    a_0 = Am[0 + bs * 1];
    a_1 = Am[1 + bs * 1];
    a_2 = Am[2 + bs * 1];
    a_3 = Am[3 + bs * 1];
    b_0 = Bm[0 + bs * 1];
    b_1 = Bm[1 + bs * 1];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    a_0 = Am[0 + bs * 2];
    a_1 = Am[1 + bs * 2];
    a_2 = Am[2 + bs * 2];
    a_3 = Am[3 + bs * 2];
    b_0 = Bm[0 + bs * 2];
    b_1 = Bm[1 + bs * 2];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    a_0 = Am[0 + bs * 3];
    a_1 = Am[1 + bs * 3];
    a_2 = Am[2 + bs * 3];
    a_3 = Am[3 + bs * 3];
    b_0 = Bm[0 + bs * 3];
    b_1 = Bm[1 + bs * 3];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    Am += 16;
    Bm += 16;
  }
  if (alg != 0) {
    c_00 += C[0 + bs * 0];
    c_10 += C[1 + bs * 0];
    c_20 += C[2 + bs * 0];
    c_30 += C[3 + bs * 0];
    c_01 += C[0 + bs * 1];
    c_11 += C[1 + bs * 1];
    c_21 += C[2 + bs * 1];
    c_31 += C[3 + bs * 1];
  }
  double a_00, a_10, a_11;
  if (use_inv_diag_E) {
    a_00 = inv_diag_E[0];
    c_00 *= a_00;
    c_10 *= a_00;
    c_20 *= a_00;
    c_30 *= a_00;
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    D[2 + bs * 0] = c_20;
    if (km >= 4)
      D[3 + bs * 0] = c_30;
    if (kn == 1)
      return;
    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_21 -= c_20 * a_10;
    c_31 -= c_30 * a_10;
    c_01 *= a_11;
    c_11 *= a_11;
    c_21 *= a_11;
    c_31 *= a_11;
    D[0 + bs * 1] = c_01;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    if (km >= 4)
      D[3 + bs * 1] = c_31;
  } else {
    a_00 = 1.0 / E[0 + bs * 0];
    c_00 *= a_00;
    c_10 *= a_00;
    c_20 *= a_00;
    c_30 *= a_00;
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    D[2 + bs * 0] = c_20;
    if (km >= 4)
      D[3 + bs * 0] = c_30;
    if (kn == 1)
      return;
    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_21 -= c_20 * a_10;
    c_31 -= c_30 * a_10;
    c_01 *= a_11;
    c_11 *= a_11;
    c_21 *= a_11;
    c_31 *= a_11;
    D[0 + bs * 1] = c_01;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    if (km >= 4)
      D[3 + bs * 1] = c_31;
  }
}


x86 assembly (clang, -O0):
<kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%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    1e2e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xd2e>
cmpl   $0x1,-0x10(%rbp)
jne    1758 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x658>
cmpl   $0x4,-0xc(%rbp)
jl     151e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x41e>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%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,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%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  0x40(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%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    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    1753 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x653>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
cmpl   $0x1,-0xc(%rbp)
jle    174e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x64e>
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,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%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)
cmpl   $0x2,-0xc(%rbp)
jle    1749 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x649>
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    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    174e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x64e>
jmp    1753 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x653>
jmp    1758 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x658>
jmp    175d <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x65d>
mov    -0x28(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1cae <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xbae>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    175d <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x65d>
jmp    1cb3 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xbb3>
mov    -0x28(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1e29 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xd29>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x60(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%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  -0x68(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%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    1cb3 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xbb3>
jmp    1e2e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xd2e>
movl   $0x0,-0x28(%rbp)
mov    -0x28(%rbp),%eax
mov    0x10(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2666 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1566>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%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  -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  -0x40(%rbp),%xmm0
movsd  -0x50(%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  -0x48(%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  -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  -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  -0x40(%rbp),%xmm0
movsd  -0x58(%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)
movsd  -0x48(%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    0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%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  -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  -0x40(%rbp),%xmm0
movsd  -0x50(%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  -0x48(%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  -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  -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  -0x40(%rbp),%xmm0
movsd  -0x58(%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  -0x48(%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    0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%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  -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  -0x40(%rbp),%xmm0
movsd  -0x50(%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  -0x48(%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  -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  -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  -0x40(%rbp),%xmm0
movsd  -0x58(%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  -0x48(%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    0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%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  -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  -0x40(%rbp),%xmm0
movsd  -0x50(%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  -0x48(%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  -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  -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  -0x40(%rbp),%xmm0
movsd  -0x58(%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  -0x48(%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    1e35 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0xd35>
cmpl   $0x0,0x28(%rbp)
je     2719 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1619>
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x30(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x30(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x30(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
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  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x30(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x30(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
cmpl   $0x0,0x48(%rbp)
je     297e <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x187e>
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  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x80(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x10(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     27c5 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x16c5>
movsd  -0x90(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x18(%rax)
cmpl   $0x1,-0x8(%rbp)
jne    27d4 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x16d4>
jmp    2be9 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1ae9>
mov    0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x50(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xb0(%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  -0x70(%rbp),%xmm0
movsd  -0xa8(%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  -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  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%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  -0xb0(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x78(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x30(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2979 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1879>
movsd  -0x98(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x38(%rax)
jmp    2be9 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1ae9>
mov    0x40(%rbp),%rax
movsd  0x676(%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  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x80(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x10(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2a28 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1928>
movsd  -0x90(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x18(%rax)
cmpl   $0x1,-0x8(%rbp)
jne    2a37 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1937>
jmp    2be9 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1ae9>
mov    0x40(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x40(%rbp),%rax
movsd  0x5ac(%rip),%xmm0
divsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xb0(%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  -0x70(%rbp),%xmm0
movsd  -0xa8(%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  -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  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%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  -0xb0(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x78(%rbp),%xmm0
mov    0x38(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x30(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2be4 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1ae4>
movsd  -0x98(%rbp),%xmm0
ff
mov    0x38(%rbp),%rax
movsd  %xmm0,0x38(%rax)
jmp    2be9 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x1ae9>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new>:
sub    $0x58,%rsp
mov    0x60(%rsp),%r10d
test   %edx,%edx
jle    121f <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x11f>
xorpd  %xmm14,%xmm14
xor    %eax,%eax
cmp    $0x1,%ecx
jne    1237 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x137>
movsd  (%r8),%xmm2
movsd  (%r9),%xmm3
mulsd  %xmm2,%xmm3
xorpd  %xmm0,%xmm0
addsd  %xmm0,%xmm3
mulsd  0x8(%r9),%xmm2
addsd  %xmm0,%xmm2
cmp    $0x4,%edx
jb     1986 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x886>
movsd  0x20(%r9),%xmm1
movsd  0x28(%r9),%xmm0
unpcklpd %xmm1,%xmm1
movq   %xmm3,%xmm3
movupd 0x20(%r8),%xmm4
movupd 0x40(%r8),%xmm5
mulpd  %xmm4,%xmm1
addpd  %xmm3,%xmm1
unpcklpd %xmm0,%xmm0
movq   %xmm2,%xmm2
mulpd  %xmm4,%xmm0
addpd  %xmm2,%xmm0
movupd 0x40(%r9),%xmm3
movapd %xmm3,%xmm4
movsd  0x50(%r8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm3,%xmm2
unpcklpd %xmm3,%xmm3
mulpd  %xmm5,%xmm3
addpd  %xmm1,%xmm3
unpckhpd %xmm4,%xmm4
mulpd  %xmm5,%xmm4
addpd  %xmm0,%xmm4
movupd 0x60(%r8),%xmm1
movupd 0x60(%r9),%xmm13
movapd %xmm13,%xmm0
movsd  0x70(%r8),%xmm10
unpcklpd %xmm10,%xmm10
mulpd  %xmm13,%xmm10
movsd  0x78(%r8),%xmm14
unpcklpd %xmm14,%xmm14
mulpd  %xmm13,%xmm14
unpcklpd %xmm13,%xmm13
mulpd  %xmm1,%xmm13
addpd  %xmm3,%xmm13
unpckhpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
xorpd  %xmm1,%xmm1
addpd  %xmm1,%xmm2
addpd  %xmm4,%xmm0
addpd  %xmm2,%xmm10
addpd  %xmm1,%xmm14
sub    $0xffffffffffffff80,%r8
sub    $0xffffffffffffff80,%r9
mov    $0x4,%eax
jmp    1245 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x145>
xorpd  %xmm13,%xmm13
xorpd  %xmm0,%xmm0
xorpd  %xmm14,%xmm14
xorpd  %xmm10,%xmm10
jmp    1484 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x384>
xorpd  %xmm13,%xmm13
xorpd  %xmm0,%xmm0
xorpd  %xmm10,%xmm10
lea    -0x3(%rdx),%ecx
cmp    %ecx,%eax
jge    13c8 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x2c8>
movupd (%r8),%xmm1
movupd (%r9),%xmm2
movupd 0x20(%r9),%xmm4
movapd %xmm2,%xmm5
movsd  0x10(%r8),%xmm7
unpcklpd %xmm7,%xmm7
mulpd  %xmm2,%xmm7
movsd  0x18(%r8),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm13,%xmm2
movupd 0x40(%r9),%xmm8
unpckhpd %xmm5,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm0,%xmm5
addpd  %xmm10,%xmm7
addpd  %xmm14,%xmm3
movupd 0x20(%r8),%xmm9
movapd %xmm4,%xmm10
movsd  0x30(%r8),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
movsd  0x38(%r8),%xmm6
unpcklpd %xmm6,%xmm6
mulpd  %xmm4,%xmm6
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm9,%xmm1
addpd  %xmm2,%xmm1
movupd 0x60(%r9),%xmm13
unpckhpd %xmm4,%xmm10
mulpd  %xmm9,%xmm10
addpd  %xmm5,%xmm10
addpd  %xmm7,%xmm0
addpd  %xmm3,%xmm6
movupd 0x40(%r8),%xmm2
movapd %xmm8,%xmm3
movsd  0x50(%r8),%xmm4
unpcklpd %xmm4,%xmm4
mulpd  %xmm8,%xmm4
movsd  0x58(%r8),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm8,%xmm5
unpcklpd %xmm8,%xmm8
mulpd  %xmm2,%xmm8
addpd  %xmm1,%xmm8
unpckhpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
addpd  %xmm10,%xmm3
addpd  %xmm0,%xmm4
addpd  %xmm6,%xmm5
movupd 0x60(%r8),%xmm1
movapd %xmm13,%xmm0
movsd  0x70(%r8),%xmm6
unpcklpd %xmm6,%xmm6
mulpd  %xmm13,%xmm6
movsd  0x78(%r8),%xmm2
unpcklpd %xmm2,%xmm2
mulpd  %xmm13,%xmm2
unpcklpd %xmm13,%xmm13
mulpd  %xmm1,%xmm13
addpd  %xmm8,%xmm13
unpckhpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm3,%xmm0
movapd %xmm6,%xmm10
addpd  %xmm4,%xmm10
movapd %xmm2,%xmm14
addpd  %xmm5,%xmm14
sub    $0xffffffffffffff80,%r8
sub    $0xffffffffffffff80,%r9
add    $0x4,%eax
cmp    %ecx,%eax
jl     1250 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x150>
addpd  %xmm5,%xmm2
addpd  %xmm4,%xmm6
movapd %xmm2,%xmm14
movapd %xmm6,%xmm10
cmp    %edx,%eax
jge    1484 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x384>
sub    %eax,%edx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm10,%xmm6
movapd %xmm14,%xmm7
movapd %xmm0,%xmm5
movapd %xmm13,%xmm8
movupd (%r8,%rax,1),%xmm0
movupd (%r9,%rax,1),%xmm4
movapd %xmm4,%xmm2
movsd  0x10(%r8,%rax,1),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm4,%xmm3
movsd  0x18(%r8,%rax,1),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
unpcklpd %xmm4,%xmm4
mulpd  %xmm0,%xmm4
movapd %xmm4,%xmm13
addpd  %xmm8,%xmm13
unpckhpd %xmm2,%xmm2
mulpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
addpd  %xmm5,%xmm0
movapd %xmm3,%xmm10
addpd  %xmm6,%xmm10
movapd %xmm1,%xmm14
addpd  %xmm7,%xmm14
add    $0x20,%rax
add    $0xffffffff,%edx
jne    13e0 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x2e0>
addpd  %xmm7,%xmm1
addpd  %xmm6,%xmm3
addpd  %xmm5,%xmm2
addpd  %xmm8,%xmm4
movapd %xmm4,%xmm13
movapd %xmm2,%xmm0
movapd %xmm1,%xmm14
movapd %xmm3,%xmm10
mov    0x78(%rsp),%r8d
cmp    $0x4,%r10d
jl     17e0 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x6e0>
mov    0x70(%rsp),%r9
mov    0x68(%rsp),%rdx
add    $0xfffffffd,%r10d
xor    %ecx,%ecx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movapd %xmm10,0x30(%rsp)
movapd %xmm14,0x10(%rsp)
movapd %xmm0,0x40(%rsp)
movupd (%rdx,%rcx,1),%xmm2
movupd (%r9,%rcx,1),%xmm5
movupd 0x20(%r9,%rcx,1),%xmm3
movupd 0x40(%r9,%rcx,1),%xmm7
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm2,%xmm1
subpd  %xmm1,%xmm13
movsd  0x10(%rdx,%rcx,1),%xmm6
movsd  0x18(%rdx,%rcx,1),%xmm4
movapd %xmm5,%xmm12
unpckhpd %xmm5,%xmm12
movapd %xmm2,-0x40(%rsp)
movapd %xmm2,%xmm1
mulpd  %xmm12,%xmm1
subpd  %xmm1,%xmm0
movapd %xmm6,-0x60(%rsp)
movapd %xmm6,%xmm1
unpcklpd %xmm6,%xmm1
mulpd  %xmm5,%xmm1
subpd  %xmm1,%xmm10
movapd %xmm4,(%rsp)
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
movapd %xmm5,-0x10(%rsp)
mulpd  %xmm5,%xmm1
subpd  %xmm1,%xmm14
movupd 0x20(%rdx,%rcx,1),%xmm2
movapd %xmm3,%xmm1
unpcklpd %xmm3,%xmm1
mulpd  %xmm2,%xmm1
subpd  %xmm1,%xmm13
movsd  0x30(%rdx,%rcx,1),%xmm4
movsd  0x38(%rdx,%rcx,1),%xmm5
movapd %xmm3,%xmm6
unpckhpd %xmm3,%xmm6
movapd %xmm2,-0x50(%rsp)
movapd %xmm2,%xmm1
mulpd  %xmm6,%xmm1
subpd  %xmm1,%xmm0
movapd %xmm4,-0x70(%rsp)
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm3,%xmm1
subpd  %xmm1,%xmm10
movapd %xmm5,-0x20(%rsp)
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
movapd %xmm3,0x20(%rsp)
mulpd  %xmm3,%xmm1
subpd  %xmm1,%xmm14
movupd 0x40(%rdx,%rcx,1),%xmm2
movapd %xmm7,%xmm1
unpcklpd %xmm7,%xmm1
mulpd  %xmm2,%xmm1
subpd  %xmm1,%xmm13
movapd %xmm7,%xmm15
unpckhpd %xmm7,%xmm15
movapd %xmm2,-0x80(%rsp)
movapd %xmm2,%xmm1
mulpd  %xmm15,%xmm1
subpd  %xmm1,%xmm0
movsd  0x50(%rdx,%rcx,1),%xmm5
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm7,%xmm1
subpd  %xmm1,%xmm10
movsd  0x58(%rdx,%rcx,1),%xmm1
movapd %xmm1,%xmm3
unpcklpd %xmm1,%xmm3
movapd %xmm7,-0x30(%rsp)
mulpd  %xmm7,%xmm3
subpd  %xmm3,%xmm14
movupd 0x60(%r9,%rcx,1),%xmm11
movapd %xmm11,%xmm2
unpcklpd %xmm11,%xmm2
movupd 0x60(%rdx,%rcx,1),%xmm3
mulpd  %xmm3,%xmm2
subpd  %xmm2,%xmm13
movapd %xmm11,%xmm8
unpckhpd %xmm11,%xmm8
movapd %xmm3,%xmm2
mulpd  %xmm8,%xmm2
subpd  %xmm2,%xmm0
movsd  0x70(%rdx,%rcx,1),%xmm4
movapd %xmm4,%xmm2
unpcklpd %xmm4,%xmm2
mulpd  %xmm11,%xmm2
subpd  %xmm2,%xmm10
movsd  0x78(%rdx,%rcx,1),%xmm9
movapd %xmm9,%xmm2
unpcklpd %xmm9,%xmm2
mulpd  %xmm11,%xmm2
subpd  %xmm2,%xmm14
add    $0x4,%eax
sub    $0xffffffffffffff80,%rcx
cmp    %r10d,%eax
jl     14b0 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x3b0>
movapd 0x95b(%rip),%xmm0
movapd -0x40(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd %xmm2,-0x40(%rsp)
movapd -0x60(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd %xmm2,-0x60(%rsp)
movapd (%rsp),%xmm10
xorpd  %xmm0,%xmm10
movapd -0x50(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd %xmm2,-0x50(%rsp)
movapd -0x70(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd %xmm2,-0x70(%rsp)
movapd -0x20(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd -0x80(%rsp),%xmm7
xorpd  %xmm0,%xmm7
xorpd  %xmm0,%xmm5
movapd %xmm5,-0x80(%rsp)
xorpd  %xmm0,%xmm1
xorpd  %xmm0,%xmm3
xorpd  %xmm0,%xmm4
xorpd  %xmm0,%xmm9
pshufd $0x44,%xmm10,%xmm0
movapd -0x10(%rsp),%xmm5
mulpd  %xmm5,%xmm0
addpd  0x10(%rsp),%xmm0
pshufd $0x44,%xmm2,%xmm2
movapd 0x20(%rsp),%xmm10
mulpd  %xmm10,%xmm2
addpd  %xmm0,%xmm2
pshufd $0x44,%xmm1,%xmm0
mulpd  -0x30(%rsp),%xmm0
addpd  %xmm2,%xmm0
pshufd $0x44,%xmm9,%xmm14
mulpd  %xmm11,%xmm14
addpd  %xmm0,%xmm14
pshufd $0x44,-0x60(%rsp),%xmm0
mulpd  %xmm5,%xmm0
addpd  0x30(%rsp),%xmm0
pshufd $0x44,-0x70(%rsp),%xmm1
mulpd  %xmm10,%xmm1
addpd  %xmm0,%xmm1
pshufd $0x44,-0x80(%rsp),%xmm0
mulpd  -0x30(%rsp),%xmm0
addpd  %xmm1,%xmm0
pshufd $0x44,%xmm4,%xmm10
mulpd  %xmm11,%xmm10
addpd  %xmm0,%xmm10
movapd -0x40(%rsp),%xmm0
mulpd  %xmm12,%xmm0
addpd  0x40(%rsp),%xmm0
movapd -0x50(%rsp),%xmm1
mulpd  %xmm6,%xmm1
addpd  %xmm0,%xmm1
mulpd  %xmm15,%xmm7
addpd  %xmm1,%xmm7
mulpd  %xmm8,%xmm3
addpd  %xmm7,%xmm3
movapd %xmm3,%xmm0
mov    0x98(%rsp),%edx
test   %r8d,%r8d
je     1824 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x724>
mov    0x80(%rsp),%rax
movupd (%rax),%xmm1
addpd  %xmm1,%xmm13
movupd 0x20(%rax),%xmm1
addpd  %xmm1,%xmm0
movsd  0x10(%rax),%xmm1
movhpd 0x30(%rax),%xmm1
addpd  %xmm1,%xmm10
movsd  0x18(%rax),%xmm1
movhpd 0x38(%rax),%xmm1
addpd  %xmm1,%xmm14
mov    0x90(%rsp),%rcx
mov    0x88(%rsp),%rax
test   %edx,%edx
je     18d4 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x7d4>
mov    0xa0(%rsp),%rdx
movsd  (%rdx),%xmm4
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm1,%xmm13
movapd %xmm10,%xmm1
mulsd  %xmm4,%xmm1
mulsd  %xmm14,%xmm4
movupd %xmm13,(%rax)
movsd  %xmm1,0x10(%rax)
cmp    $0x4,%edi
jl     1877 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x777>
movsd  %xmm4,0x18(%rax)
cmp    $0x1,%esi
je     1981 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x881>
movsd  0x8(%rcx),%xmm6
movsd  0x8(%rdx),%xmm5
movapd %xmm6,%xmm2
unpcklpd %xmm6,%xmm2
mulpd  %xmm2,%xmm13
subpd  %xmm13,%xmm0
unpckhpd %xmm10,%xmm10
mulsd  %xmm6,%xmm1
subsd  %xmm1,%xmm10
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm0,%xmm1
mulsd  %xmm5,%xmm10
movupd %xmm1,0x20(%rax)
movsd  %xmm10,0x30(%rax)
cmp    $0x3,%edi
jg     1963 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x863>
jmp    1981 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x881>
movsd  0x734(%rip),%xmm5
movapd %xmm5,%xmm4
divsd  (%rcx),%xmm4
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm1,%xmm13
movapd %xmm10,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm14,%xmm4
movupd %xmm13,(%rax)
movsd  %xmm2,0x10(%rax)
cmp    $0x4,%edi
jl     1913 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x813>
movsd  %xmm4,0x18(%rax)
cmp    $0x1,%esi
je     1981 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x881>
movsd  0x8(%rcx),%xmm6
divsd  0x28(%rcx),%xmm5
movapd %xmm6,%xmm1
unpcklpd %xmm6,%xmm1
mulpd  %xmm1,%xmm13
subpd  %xmm13,%xmm0
unpckhpd %xmm10,%xmm10
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm0,%xmm1
mulsd  %xmm5,%xmm10
movupd %xmm1,0x20(%rax)
movsd  %xmm10,0x30(%rax)
cmp    $0x4,%edi
jl     1981 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x881>
mulsd  %xmm6,%xmm4
unpckhpd %xmm14,%xmm14
subsd  %xmm4,%xmm14
mulsd  %xmm5,%xmm14
movsd  %xmm14,0x38(%rax)
add    $0x58,%rsp
ret
add    $0x58,%rsp
ret
movq   %xmm3,%xmm13
movq   %xmm2,%xmm0
mov    $0x1,%eax
cmp    $0x2,%edx
jb     1240 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x140>
movupd 0x20(%r8),%xmm1
movsd  0x20(%r9),%xmm2
movsd  0x28(%r9),%xmm3
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm13
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm3,%xmm0
mov    $0x2,%eax
je     1240 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x140>
movupd 0x40(%r8),%xmm1
movupd 0x40(%r9),%xmm2
movapd %xmm2,%xmm3
movsd  0x50(%r8),%xmm10
unpcklpd %xmm10,%xmm10
mulpd  %xmm2,%xmm10
unpcklpd %xmm2,%xmm2
mulpd  %xmm1,%xmm2
addpd  %xmm2,%xmm13
unpckhpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm3,%xmm0
xorpd  %xmm14,%xmm14
addpd  %xmm14,%xmm10
mov    $0x3,%eax
jmp    1245 <kernel_dgemm_dtrsm_nt_4x2_vs_lib4_new+0x145>

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

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