void kernel_dtrsm_nn_ru_2x4_vs_lib4(int km, int kn, int kmax, double *A,
                                    double *B, int sdb, int alg, double *C,
                                    double *D, double *E, int use_inv_diag_E,
                                    double *inv_diag_E) {
  const int bs = 4;
  int k;
  double tmp, a_0, a_1, b_0, b_1, b_2, b_3, e_00, e_01, e_02, e_03, e_11, e_12,
      e_13, e_22, e_23, e_33, d_00 = 0, d_01 = 0, d_02 = 0, d_03 = 0, d_10 = 0,
                              d_11 = 0, d_12 = 0, d_13 = 0;
  if (kmax <= 0)
    goto add;
  for (k = 0; k < kmax - 3; k += 4) {
    a_0 = A[0 + bs * 0];
    a_1 = A[1 + bs * 0];
    b_0 = B[0 + bs * 0];
    b_1 = B[0 + bs * 1];
    b_2 = B[0 + bs * 2];
    b_3 = B[0 + bs * 3];
    d_00 -= a_0 * b_0;
    d_10 -= a_1 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    a_0 = A[0 + bs * 1];
    a_1 = A[1 + bs * 1];
    b_0 = B[1 + bs * 0];
    b_1 = B[1 + bs * 1];
    b_2 = B[1 + bs * 2];
    b_3 = B[1 + bs * 3];
    d_00 -= a_0 * b_0;
    d_10 -= a_1 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    a_0 = A[0 + bs * 2];
    a_1 = A[1 + bs * 2];
    b_0 = B[2 + bs * 0];
    b_1 = B[2 + bs * 1];
    b_2 = B[2 + bs * 2];
    b_3 = B[2 + bs * 3];
    d_00 -= a_0 * b_0;
    d_10 -= a_1 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    a_0 = A[0 + bs * 3];
    a_1 = A[1 + bs * 3];
    b_0 = B[3 + bs * 0];
    b_1 = B[3 + bs * 1];
    b_2 = B[3 + bs * 2];
    b_3 = B[3 + bs * 3];
    d_00 -= a_0 * b_0;
    d_10 -= a_1 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    A += 16;
    B += 4 * sdb;
  }
  for (; k < kmax; k++) {
    a_0 = A[0 + bs * 0];
    a_1 = A[1 + bs * 0];
    b_0 = B[0 + bs * 0];
    b_1 = B[0 + bs * 1];
    b_2 = B[0 + bs * 2];
    b_3 = B[0 + bs * 3];
    d_00 -= a_0 * b_0;
    d_10 -= a_1 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    A += 4;
    B += 1;
  }
add:
  if (alg != 0) {
    d_00 += C[0 + bs * 0];
    d_10 += C[1 + bs * 0];
    d_01 += C[0 + bs * 1];
    d_11 += C[1 + bs * 1];
    d_02 += C[0 + bs * 2];
    d_12 += C[1 + bs * 2];
    d_03 += C[0 + bs * 3];
    d_13 += C[1 + bs * 3];
  }
  if (use_inv_diag_E) {
    e_00 = inv_diag_E[0];
    d_00 *= e_00;
    d_10 *= e_00;
    D[0 + bs * 0] = d_00;
    if (km >= 2)
      D[1 + bs * 0] = d_10;
    e_01 = E[0 + bs * 1];
    e_11 = inv_diag_E[1];
    d_01 -= d_00 * e_01;
    d_11 -= d_10 * e_01;
    d_01 *= e_11;
    d_11 *= e_11;
    D[0 + bs * 1] = d_01;
    if (km >= 2)
      D[1 + bs * 1] = d_11;
    e_02 = E[0 + bs * 2];
    e_12 = E[1 + bs * 2];
    e_22 = inv_diag_E[2];
    d_02 -= d_00 * e_02;
    d_12 -= d_10 * e_02;
    d_02 -= d_01 * e_12;
    d_12 -= d_11 * e_12;
    d_02 *= e_22;
    d_12 *= e_22;
    D[0 + bs * 2] = d_02;
    if (km >= 2)
      D[1 + bs * 2] = d_12;
    if (kn < 4)
      return;
    e_03 = E[0 + bs * 3];
    e_13 = E[1 + bs * 3];
    e_23 = E[2 + bs * 3];
    e_33 = inv_diag_E[3];
    d_03 -= d_00 * e_03;
    d_13 -= d_10 * e_03;
    d_03 -= d_01 * e_13;
    d_13 -= d_11 * e_13;
    d_03 -= d_02 * e_23;
    d_13 -= d_12 * e_23;
    d_03 *= e_33;
    d_13 *= e_33;
    D[0 + bs * 3] = d_03;
    if (km >= 2)
      D[1 + bs * 3] = d_13;
  } else {
    e_00 = 1.0 / E[0 + bs * 0];
    d_00 *= e_00;
    d_10 *= e_00;
    D[0 + bs * 0] = d_00;
    if (km >= 2)
      D[1 + bs * 0] = d_10;
    e_01 = E[0 + bs * 1];
    e_11 = 1.0 / E[1 + bs * 1];
    d_01 -= d_00 * e_01;
    d_11 -= d_10 * e_01;
    d_01 *= e_11;
    d_11 *= e_11;
    D[0 + bs * 1] = d_01;
    if (km >= 2)
      D[1 + bs * 1] = d_11;
    e_02 = E[0 + bs * 2];
    e_12 = E[1 + bs * 2];
    e_22 = 1.0 / E[2 + bs * 2];
    d_02 -= d_00 * e_02;
    d_12 -= d_10 * e_02;
    d_02 -= d_01 * e_12;
    d_12 -= d_11 * e_12;
    d_02 *= e_22;
    d_12 *= e_22;
    D[0 + bs * 2] = d_02;
    if (km >= 2)
      D[1 + bs * 2] = d_12;
    if (kn < 4)
      return;
    e_03 = E[0 + bs * 3];
    e_13 = E[1 + bs * 3];
    e_23 = E[2 + bs * 3];
    e_33 = 1.0 / E[2 + bs * 3];
    d_03 -= d_00 * e_03;
    d_13 -= d_10 * e_03;
    d_03 -= d_01 * e_13;
    d_13 -= d_11 * e_13;
    d_03 -= d_02 * e_23;
    d_13 -= d_12 * e_23;
    d_03 *= e_33;
    d_13 *= e_33;
    D[0 + bs * 3] = d_03;
    if (km >= 2)
      D[1 + bs * 3] = d_13;
  }
  return;
}


x86 assembly (clang, -O0):
<kernel_dtrsm_nn_ru_2x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%eax
mov    0x28(%rbp),%rax
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    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x4,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
jg     11a1 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xa1>
jmp    1cb1 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xbb1>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1a5b <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x95b>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    11a8 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xa8>
jmp    1a60 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x960>
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1cac <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xbac>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1a60 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x960>
jmp    1cb1 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xbb1>
cmpl   $0x0,0x10(%rbp)
je     1d82 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xc82>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
cmpl   $0x0,0x30(%rbp)
je     2291 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x1191>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     1dee <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xcee>
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     1ee1 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xde1>
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
movsd  -0xa8(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2063 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xf63>
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
cmpl   $0x4,-0x8(%rbp)
jge    2072 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0xf72>
jmp    27bb <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16bb>
mov    0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     228c <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x118c>
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
jmp    27b6 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16b6>
mov    0x28(%rbp),%rax
movsd  0xd63(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     22fb <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x11fb>
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    0x28(%rbp),%rax
movsd  0xceb(%rip),%xmm0
divsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     23f6 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x12f6>
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0xbdf(%rip),%xmm0
divsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     2580 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x1480>
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
cmpl   $0x4,-0x8(%rbp)
jge    258f <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x148f>
jmp    27bb <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16bb>
mov    0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0xa32(%rip),%xmm0
divsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
cmpl   $0x2,-0x4(%rbp)
jl     27b1 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16b1>
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
jmp    27b6 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16b6>
jmp    27bb <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x16bb>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrsm_nn_ru_2x4_vs_lib4>:
mov    0x8(%rsp),%r10d
test   %edx,%edx
jle    1345 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x245>
cmp    $0x4,%edx
jb     1371 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x271>
lea    -0x3(%rdx),%r11d
shl    $0x2,%r9d
movslq %r9d,%r9
shl    $0x3,%r9
xor    %eax,%eax
xorpd  %xmm13,%xmm13
xorpd  %xmm8,%xmm8
xorpd  %xmm12,%xmm12
xorpd  %xmm10,%xmm10
xorpd  %xmm14,%xmm14
xorpd  %xmm11,%xmm11
xorpd  %xmm15,%xmm15
xorpd  %xmm7,%xmm7
xchg   %ax,%ax
movsd  (%rcx),%xmm6
movsd  0x8(%rcx),%xmm1
movsd  0x20(%r8),%xmm2
movsd  0x40(%r8),%xmm4
movsd  0x60(%r8),%xmm9
movsd  (%r8),%xmm5
movsd  0x8(%r8),%xmm0
movapd %xmm6,%xmm3
mulsd  %xmm5,%xmm3
subsd  %xmm3,%xmm7
mulsd  %xmm1,%xmm5
subsd  %xmm5,%xmm10
movapd %xmm6,%xmm3
mulsd  %xmm2,%xmm3
subsd  %xmm3,%xmm15
mulsd  %xmm1,%xmm2
subsd  %xmm2,%xmm12
movapd %xmm6,%xmm2
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm11
mulsd  %xmm1,%xmm4
subsd  %xmm4,%xmm8
mulsd  %xmm9,%xmm6
subsd  %xmm6,%xmm14
mulsd  %xmm9,%xmm1
subsd  %xmm1,%xmm13
movsd  0x20(%rcx),%xmm2
movsd  0x28(%rcx),%xmm1
movsd  0x28(%r8),%xmm3
movsd  0x48(%r8),%xmm4
movsd  0x68(%r8),%xmm5
movapd %xmm2,%xmm6
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm7
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm10
movapd %xmm2,%xmm0
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm15
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm12
movapd %xmm2,%xmm0
mulsd  %xmm4,%xmm0
subsd  %xmm0,%xmm11
mulsd  %xmm1,%xmm4
subsd  %xmm4,%xmm8
mulsd  %xmm5,%xmm2
subsd  %xmm2,%xmm14
mulsd  %xmm5,%xmm1
subsd  %xmm1,%xmm13
movsd  0x40(%rcx),%xmm1
movsd  0x48(%rcx),%xmm0
movsd  0x10(%r8),%xmm2
movsd  0x30(%r8),%xmm3
movsd  0x50(%r8),%xmm4
movsd  0x70(%r8),%xmm5
movapd %xmm1,%xmm6
mulsd  %xmm2,%xmm6
subsd  %xmm6,%xmm7
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm15
mulsd  %xmm0,%xmm3
subsd  %xmm3,%xmm12
movapd %xmm1,%xmm2
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm11
mulsd  %xmm0,%xmm4
subsd  %xmm4,%xmm8
mulsd  %xmm5,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm13
movsd  0x60(%rcx),%xmm1
movsd  0x68(%rcx),%xmm0
movsd  0x18(%r8),%xmm2
movsd  0x38(%r8),%xmm3
movsd  0x58(%r8),%xmm4
movsd  0x78(%r8),%xmm5
movapd %xmm1,%xmm6
mulsd  %xmm2,%xmm6
subsd  %xmm6,%xmm7
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm15
mulsd  %xmm0,%xmm3
subsd  %xmm3,%xmm12
movapd %xmm1,%xmm2
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm11
mulsd  %xmm0,%xmm4
subsd  %xmm4,%xmm8
mulsd  %xmm5,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm13
sub    $0xffffffffffffff80,%rcx
add    $0x4,%eax
add    %r9,%r8
cmp    %r11d,%eax
jl     1150 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x50>
mov    %edx,%eax
and    $0xfffffffc,%eax
cmp    %edx,%eax
jl     13a2 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x2a2>
jmp    1437 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x337>
xorpd  %xmm7,%xmm7
xorpd  %xmm15,%xmm15
xorpd  %xmm11,%xmm11
xorpd  %xmm14,%xmm14
xorpd  %xmm10,%xmm10
xorpd  %xmm12,%xmm12
xorpd  %xmm8,%xmm8
xorpd  %xmm13,%xmm13
jmp    1437 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x337>
xorpd  %xmm7,%xmm7
xor    %eax,%eax
xorpd  %xmm15,%xmm15
xorpd  %xmm11,%xmm11
xorpd  %xmm14,%xmm14
xorpd  %xmm10,%xmm10
xorpd  %xmm12,%xmm12
xorpd  %xmm8,%xmm8
xorpd  %xmm13,%xmm13
cmp    %edx,%eax
jge    1437 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x337>
sub    %eax,%edx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
movsd  (%rcx),%xmm1
movsd  0x8(%rcx),%xmm0
movsd  (%r8,%rax,8),%xmm2
movsd  0x20(%r8,%rax,8),%xmm3
movsd  0x40(%r8,%rax,8),%xmm4
movsd  0x60(%r8,%rax,8),%xmm5
movapd %xmm1,%xmm6
mulsd  %xmm2,%xmm6
subsd  %xmm6,%xmm7
mulsd  %xmm0,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm15
mulsd  %xmm0,%xmm3
subsd  %xmm3,%xmm12
movapd %xmm1,%xmm2
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm11
mulsd  %xmm0,%xmm4
subsd  %xmm4,%xmm8
mulsd  %xmm5,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm13
add    $0x1,%rax
add    $0x20,%rcx
cmp    %eax,%edx
jne    13b0 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x2b0>
mov    0x28(%rsp),%edx
test   %r10d,%r10d
je     1473 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x373>
mov    0x10(%rsp),%rax
addsd  (%rax),%xmm7
addsd  0x8(%rax),%xmm10
addsd  0x20(%rax),%xmm15
addsd  0x28(%rax),%xmm12
addsd  0x40(%rax),%xmm11
addsd  0x48(%rax),%xmm8
addsd  0x60(%rax),%xmm14
addsd  0x68(%rax),%xmm13
mov    0x20(%rsp),%rcx
mov    0x18(%rsp),%rax
test   %edx,%edx
je     15ca <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x4ca>
mov    0x30(%rsp),%rdx
movsd  (%rdx),%xmm0
mulsd  %xmm0,%xmm7
mulsd  %xmm0,%xmm10
movsd  %xmm7,(%rax)
cmp    $0x2,%edi
jl     14a6 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x3a6>
movsd  %xmm10,0x8(%rax)
movsd  0x20(%rcx),%xmm0
movsd  0x8(%rdx),%xmm1
movapd 0xb48(%rip),%xmm2
movapd %xmm7,%xmm9
xorpd  %xmm2,%xmm9
mulsd  %xmm0,%xmm7
subsd  %xmm7,%xmm15
movapd %xmm10,%xmm5
xorpd  %xmm2,%xmm5
mulsd  %xmm0,%xmm10
subsd  %xmm10,%xmm12
mulsd  %xmm1,%xmm15
mulsd  %xmm1,%xmm12
movsd  %xmm15,0x20(%rax)
cmp    $0x2,%edi
jl     14f9 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x3f9>
movsd  %xmm12,0x28(%rax)
movsd  0x40(%rcx),%xmm6
movsd  0x48(%rcx),%xmm0
movsd  0x10(%rdx),%xmm1
movapd %xmm9,%xmm7
mulsd  %xmm6,%xmm7
addsd  %xmm11,%xmm7
mulsd  %xmm5,%xmm6
addsd  %xmm8,%xmm6
movapd %xmm15,%xmm3
mulsd  %xmm0,%xmm3
subsd  %xmm3,%xmm7
mulsd  %xmm12,%xmm0
subsd  %xmm0,%xmm6
mulsd  %xmm1,%xmm7
mulsd  %xmm1,%xmm6
movsd  %xmm7,0x40(%rax)
cmp    $0x2,%edi
jl     154c <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x44c>
movsd  %xmm6,0x48(%rax)
cmp    $0x4,%esi
jl     1715 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x615>
xorpd  %xmm2,%xmm15
movsd  0x60(%rcx),%xmm4
movsd  0x68(%rcx),%xmm3
movsd  0x70(%rcx),%xmm1
movsd  0x18(%rdx),%xmm0
mulsd  %xmm4,%xmm9
addsd  %xmm14,%xmm9
mulsd  %xmm3,%xmm15
addsd  %xmm9,%xmm15
mulsd  %xmm1,%xmm7
subsd  %xmm7,%xmm15
mulsd  %xmm0,%xmm15
movsd  %xmm15,0x60(%rax)
cmp    $0x2,%edi
jl     1715 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x615>
xorpd  %xmm2,%xmm12
mulsd  %xmm4,%xmm5
addsd  %xmm13,%xmm5
mulsd  %xmm3,%xmm12
addsd  %xmm5,%xmm12
mulsd  %xmm1,%xmm6
subsd  %xmm6,%xmm12
mulsd  %xmm0,%xmm12
jmp    170f <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x60f>
movsd  0xa3e(%rip),%xmm2
movapd %xmm2,%xmm0
divsd  (%rcx),%xmm0
mulsd  %xmm0,%xmm7
mulsd  %xmm0,%xmm10
movsd  %xmm7,(%rax)
cmp    $0x2,%edi
jl     15f2 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x4f2>
movsd  %xmm10,0x8(%rax)
movapd %xmm2,%xmm0
divsd  0x28(%rcx),%xmm0
movsd  0x20(%rcx),%xmm1
movapd 0x9f7(%rip),%xmm9
movapd %xmm7,%xmm5
xorpd  %xmm9,%xmm5
mulsd  %xmm1,%xmm7
subsd  %xmm7,%xmm15
movapd %xmm10,%xmm4
xorpd  %xmm9,%xmm4
mulsd  %xmm1,%xmm10
subsd  %xmm10,%xmm12
mulsd  %xmm0,%xmm15
mulsd  %xmm0,%xmm12
movsd  %xmm15,0x20(%rax)
cmp    $0x2,%edi
jl     164a <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x54a>
movsd  %xmm12,0x28(%rax)
movsd  0x40(%rcx),%xmm6
movsd  0x48(%rcx),%xmm0
movapd %xmm2,%xmm1
divsd  0x50(%rcx),%xmm1
movapd %xmm5,%xmm7
mulsd  %xmm6,%xmm7
addsd  %xmm11,%xmm7
mulsd  %xmm4,%xmm6
addsd  %xmm8,%xmm6
movapd %xmm15,%xmm3
mulsd  %xmm0,%xmm3
subsd  %xmm3,%xmm7
mulsd  %xmm12,%xmm0
subsd  %xmm0,%xmm6
mulsd  %xmm1,%xmm7
mulsd  %xmm1,%xmm6
movsd  %xmm7,0x40(%rax)
cmp    $0x2,%edi
jl     16a0 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x5a0>
movsd  %xmm6,0x48(%rax)
cmp    $0x4,%esi
jl     1715 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x615>
xorpd  %xmm9,%xmm15
movsd  0x60(%rcx),%xmm3
movsd  0x68(%rcx),%xmm1
movsd  0x70(%rcx),%xmm0
divsd  %xmm0,%xmm2
mulsd  %xmm3,%xmm5
addsd  %xmm14,%xmm5
mulsd  %xmm1,%xmm15
addsd  %xmm5,%xmm15
mulsd  %xmm0,%xmm7
subsd  %xmm7,%xmm15
mulsd  %xmm2,%xmm15
movsd  %xmm15,0x60(%rax)
cmp    $0x2,%edi
jl     1715 <kernel_dtrsm_nn_ru_2x4_vs_lib4+0x615>
xorpd  %xmm9,%xmm12
mulsd  %xmm3,%xmm4
addsd  %xmm13,%xmm4
mulsd  %xmm1,%xmm12
addsd  %xmm4,%xmm12
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm12
mulsd  %xmm2,%xmm12
movsd  %xmm12,0x68(%rax)
ret

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

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