void kernel_dtrsm_nn_ru_4x4_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, a_2, a_3, 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, d_20 = 0, d_21 = 0, d_22 = 0, d_23 = 0, d_30 = 0, d_31 = 0,
      d_32 = 0, d_33 = 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];
    a_2 = A[2 + bs * 0];
    a_3 = A[3 + 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_20 -= a_2 * b_0;
    d_30 -= a_3 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_21 -= a_2 * b_1;
    d_31 -= a_3 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_22 -= a_2 * b_2;
    d_32 -= a_3 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    d_23 -= a_2 * b_3;
    d_33 -= a_3 * b_3;
    a_0 = A[0 + bs * 1];
    a_1 = A[1 + bs * 1];
    a_2 = A[2 + bs * 1];
    a_3 = A[3 + 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_20 -= a_2 * b_0;
    d_30 -= a_3 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_21 -= a_2 * b_1;
    d_31 -= a_3 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_22 -= a_2 * b_2;
    d_32 -= a_3 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    d_23 -= a_2 * b_3;
    d_33 -= a_3 * b_3;
    a_0 = A[0 + bs * 2];
    a_1 = A[1 + bs * 2];
    a_2 = A[2 + bs * 2];
    a_3 = A[3 + 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_20 -= a_2 * b_0;
    d_30 -= a_3 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_21 -= a_2 * b_1;
    d_31 -= a_3 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_22 -= a_2 * b_2;
    d_32 -= a_3 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    d_23 -= a_2 * b_3;
    d_33 -= a_3 * b_3;
    a_0 = A[0 + bs * 3];
    a_1 = A[1 + bs * 3];
    a_2 = A[2 + bs * 3];
    a_3 = A[3 + 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_20 -= a_2 * b_0;
    d_30 -= a_3 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_21 -= a_2 * b_1;
    d_31 -= a_3 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_22 -= a_2 * b_2;
    d_32 -= a_3 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    d_23 -= a_2 * b_3;
    d_33 -= a_3 * b_3;
    A += 16;
    B += 4 * sdb;
  }
  for (; k < kmax; k++) {
    a_0 = A[0 + bs * 0];
    a_1 = A[1 + bs * 0];
    a_2 = A[2 + bs * 0];
    a_3 = A[3 + 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_20 -= a_2 * b_0;
    d_30 -= a_3 * b_0;
    d_01 -= a_0 * b_1;
    d_11 -= a_1 * b_1;
    d_21 -= a_2 * b_1;
    d_31 -= a_3 * b_1;
    d_02 -= a_0 * b_2;
    d_12 -= a_1 * b_2;
    d_22 -= a_2 * b_2;
    d_32 -= a_3 * b_2;
    d_03 -= a_0 * b_3;
    d_13 -= a_1 * b_3;
    d_23 -= a_2 * b_3;
    d_33 -= a_3 * b_3;
    A += 4;
    B += 1;
  }
add:
  if (alg != 0) {
    d_00 += C[0 + bs * 0];
    d_10 += C[1 + bs * 0];
    d_20 += C[2 + bs * 0];
    d_30 += C[3 + bs * 0];
    d_01 += C[0 + bs * 1];
    d_11 += C[1 + bs * 1];
    d_21 += C[2 + bs * 1];
    d_31 += C[3 + bs * 1];
    d_02 += C[0 + bs * 2];
    d_12 += C[1 + bs * 2];
    d_22 += C[2 + bs * 2];
    d_32 += C[3 + bs * 2];
    d_03 += C[0 + bs * 3];
    d_13 += C[1 + bs * 3];
    d_23 += C[2 + bs * 3];
    d_33 += C[3 + bs * 3];
  }
  if (use_inv_diag_E) {
    e_00 = inv_diag_E[0];
    d_00 *= e_00;
    d_10 *= e_00;
    d_20 *= e_00;
    d_30 *= e_00;
    D[0 + bs * 0] = d_00;
    D[1 + bs * 0] = d_10;
    D[2 + bs * 0] = d_20;
    if (km >= 4)
      D[3 + bs * 0] = d_30;
    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_21 -= d_20 * e_01;
    d_31 -= d_30 * e_01;
    d_01 *= e_11;
    d_11 *= e_11;
    d_21 *= e_11;
    d_31 *= e_11;
    D[0 + bs * 1] = d_01;
    D[1 + bs * 1] = d_11;
    D[2 + bs * 1] = d_21;
    if (km >= 4)
      D[3 + bs * 1] = d_31;
    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_22 -= d_20 * e_02;
    d_32 -= d_30 * e_02;
    d_02 -= d_01 * e_12;
    d_12 -= d_11 * e_12;
    d_22 -= d_21 * e_12;
    d_32 -= d_31 * e_12;
    d_02 *= e_22;
    d_12 *= e_22;
    d_22 *= e_22;
    d_32 *= e_22;
    D[0 + bs * 2] = d_02;
    D[1 + bs * 2] = d_12;
    D[2 + bs * 2] = d_22;
    if (km >= 4)
      D[3 + bs * 2] = d_32;
    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_23 -= d_20 * e_03;
    d_33 -= d_30 * e_03;
    d_03 -= d_01 * e_13;
    d_13 -= d_11 * e_13;
    d_23 -= d_21 * e_13;
    d_33 -= d_31 * e_13;
    d_03 -= d_02 * e_23;
    d_13 -= d_12 * e_23;
    d_23 -= d_22 * e_23;
    d_33 -= d_32 * e_23;
    d_03 *= e_33;
    d_13 *= e_33;
    d_23 *= e_33;
    d_33 *= e_33;
    D[0 + bs * 3] = d_03;
    D[1 + bs * 3] = d_13;
    D[2 + bs * 3] = d_23;
    if (km >= 4)
      D[3 + bs * 3] = d_33;
  } else {
    e_00 = 1.0 / E[0 + bs * 0];
    d_00 *= e_00;
    d_10 *= e_00;
    d_20 *= e_00;
    d_30 *= e_00;
    D[0 + bs * 0] = d_00;
    D[1 + bs * 0] = d_10;
    D[2 + bs * 0] = d_20;
    if (km >= 4)
      D[3 + bs * 0] = d_30;
    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_21 -= d_20 * e_01;
    d_31 -= d_30 * e_01;
    d_01 *= e_11;
    d_11 *= e_11;
    d_21 *= e_11;
    d_31 *= e_11;
    D[0 + bs * 1] = d_01;
    D[1 + bs * 1] = d_11;
    D[2 + bs * 1] = d_21;
    if (km >= 4)
      D[3 + bs * 1] = d_31;
    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_22 -= d_20 * e_02;
    d_32 -= d_30 * e_02;
    d_02 -= d_01 * e_12;
    d_12 -= d_11 * e_12;
    d_22 -= d_21 * e_12;
    d_32 -= d_31 * e_12;
    d_02 *= e_22;
    d_12 *= e_22;
    d_22 *= e_22;
    d_32 *= e_22;
    D[0 + bs * 2] = d_02;
    D[1 + bs * 2] = d_12;
    D[2 + bs * 2] = d_22;
    if (km >= 4)
      D[3 + bs * 2] = d_32;
    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_23 -= d_20 * e_03;
    d_33 -= d_30 * e_03;
    d_03 -= d_01 * e_13;
    d_13 -= d_11 * e_13;
    d_23 -= d_21 * e_13;
    d_33 -= d_31 * e_13;
    d_03 -= d_02 * e_23;
    d_13 -= d_12 * e_23;
    d_23 -= d_22 * e_23;
    d_33 -= d_32 * e_23;
    d_03 *= e_33;
    d_13 *= e_33;
    d_23 *= e_33;
    d_33 *= e_33;
    D[0 + bs * 3] = d_03;
    D[1 + bs * 3] = d_13;
    D[2 + bs * 3] = d_23;
    if (km >= 4)
      D[3 + bs * 3] = d_33;
  }
  return;
}


x86 assembly (clang, -O0):
<kernel_dtrsm_nn_ru_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc8,%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,-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
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
jg     11fc <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xfc>
jmp    2680 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1580>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2246 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1146>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
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  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%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  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
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  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%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    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
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  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%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  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
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  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%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    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
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  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%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  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
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  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%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    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
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  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%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  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
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  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%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    1203 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x103>
jmp    224b <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x114b>
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    267b <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x157b>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
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  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%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  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
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  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%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    224b <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x114b>
jmp    2680 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1580>
cmpl   $0x0,0x10(%rbp)
je     2819 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1719>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
addsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
addsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
cmpl   $0x0,0x30(%rbp)
je     3170 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x2070>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     28d1 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x17d1>
movsd  -0x130(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xd0(%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  -0xf0(%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  -0x110(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2a9d <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x199d>
movsd  -0x138(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
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  -0xf0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
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  -0xf8(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2d76 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1c76>
movsd  -0x140(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
cmpl   $0x4,-0x8(%rbp)
jge    2d85 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x1c85>
jmp    3ae2 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29e2>
mov    0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x38(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
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  -0xf0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
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  -0xf8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
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  -0x100(%rbp),%xmm0
movsd  -0xc0(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     316b <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x206b>
movsd  -0x148(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    3add <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29dd>
mov    0x28(%rbp),%rax
movsd  0xe84(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     3226 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x2126>
movsd  -0x130(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0xdbd(%rip),%xmm0
divsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xd0(%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  -0xf0(%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  -0x110(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     33fa <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x22fa>
movsd  -0x138(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0xbd8(%rip),%xmm0
divsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
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  -0xf0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
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  -0xf8(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x140(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     36db <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x25db>
movsd  -0x140(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
cmpl   $0x4,-0x8(%rbp)
jge    36ea <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x25ea>
jmp    3ae2 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29e2>
mov    0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x8d7(%rip),%xmm0
divsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
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  -0xf0(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
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  -0xf8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
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  -0x100(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm2
ff
movsd  -0x148(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     3ad8 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29d8>
movsd  -0x148(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    3add <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29dd>
jmp    3ae2 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x29e2>
add    $0xc8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrsm_nn_ru_4x4_vs_lib4>:
sub    $0x98,%rsp
mov    0xa0(%rsp),%r10d
test   %edx,%edx
jle    16d1 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x5d1>
cmp    $0x4,%edx
jb     171c <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x61c>
lea    -0x3(%rdx),%r11d
shl    $0x2,%r9d
movslq %r9d,%r9
shl    $0x3,%r9
xorpd  %xmm10,%xmm10
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x70(%rsp)
xorpd  %xmm9,%xmm9
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x80(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x10(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x20(%rsp)
xorpd  %xmm3,%xmm3
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x50(%rsp)
xorpd  %xmm13,%xmm13
xorpd  %xmm15,%xmm15
xorpd  %xmm12,%xmm12
nopw   0x0(%rax,%rax,1)
movapd %xmm13,0x10(%rsp)
movapd %xmm10,-0x30(%rsp)
movupd (%rcx),%xmm2
movsd  0x10(%rcx),%xmm4
movsd  0x18(%rcx),%xmm7
movsd  0x20(%r8),%xmm1
movsd  0x40(%r8),%xmm6
movsd  0x60(%r8),%xmm8
movsd  (%r8),%xmm11
movsd  0x8(%r8),%xmm14
movapd %xmm11,%xmm0
unpcklpd %xmm11,%xmm0
movapd %xmm2,%xmm5
movapd %xmm0,0x80(%rsp)
mulpd  %xmm0,%xmm5
subpd  %xmm5,%xmm10
movapd %xmm4,%xmm5
mulsd  %xmm11,%xmm5
movapd -0x50(%rsp),%xmm0
subsd  %xmm5,%xmm0
movapd %xmm0,-0x50(%rsp)
mulsd  %xmm7,%xmm11
movapd -0x80(%rsp),%xmm0
subsd  %xmm11,%xmm0
movapd %xmm0,-0x80(%rsp)
movapd %xmm1,%xmm5
unpcklpd %xmm1,%xmm5
movapd %xmm2,%xmm0
movapd %xmm5,0x30(%rsp)
mulpd  %xmm5,%xmm0
subpd  %xmm0,%xmm13
movapd %xmm4,%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm3
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm6,%xmm0
unpcklpd %xmm6,%xmm0
mulpd  %xmm2,%xmm0
subpd  %xmm0,%xmm15
movapd %xmm4,%xmm0
mulsd  %xmm6,%xmm0
movapd -0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x20(%rsp)
mulsd  %xmm7,%xmm6
movapd -0x70(%rsp),%xmm0
subsd  %xmm6,%xmm0
movapd %xmm0,-0x70(%rsp)
mulsd  %xmm8,%xmm4
mulsd  %xmm8,%xmm7
unpcklpd %xmm8,%xmm8
movapd %xmm2,-0x40(%rsp)
mulpd  %xmm2,%xmm8
subpd  %xmm8,%xmm12
movapd -0x10(%rsp),%xmm11
subsd  %xmm4,%xmm11
movapd -0x60(%rsp),%xmm0
subsd  %xmm7,%xmm0
movapd %xmm0,-0x60(%rsp)
movupd 0x20(%rcx),%xmm8
movsd  0x30(%rcx),%xmm5
movsd  0x38(%rcx),%xmm7
movsd  0x28(%r8),%xmm1
movsd  0x48(%r8),%xmm4
movsd  0x68(%r8),%xmm6
movapd %xmm14,%xmm2
unpcklpd %xmm14,%xmm2
movapd %xmm8,%xmm0
movapd %xmm2,0x60(%rsp)
mulpd  %xmm2,%xmm0
subpd  %xmm0,%xmm10
movapd %xmm5,%xmm0
mulsd  %xmm14,%xmm0
movapd -0x50(%rsp),%xmm2
subsd  %xmm0,%xmm2
movapd %xmm2,-0x50(%rsp)
mulsd  %xmm7,%xmm14
movapd -0x80(%rsp),%xmm0
subsd  %xmm14,%xmm0
movapd %xmm0,-0x80(%rsp)
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
movapd %xmm8,%xmm0
movapd %xmm2,0x50(%rsp)
mulpd  %xmm2,%xmm0
subpd  %xmm0,%xmm13
movapd %xmm5,%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm3
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm4,%xmm0
unpcklpd %xmm4,%xmm0
mulpd  %xmm8,%xmm0
subpd  %xmm0,%xmm15
movapd %xmm5,%xmm0
mulsd  %xmm4,%xmm0
movapd -0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x20(%rsp)
mulsd  %xmm7,%xmm4
movapd -0x70(%rsp),%xmm0
subsd  %xmm4,%xmm0
movapd %xmm0,-0x70(%rsp)
mulsd  %xmm6,%xmm5
mulsd  %xmm6,%xmm7
unpcklpd %xmm6,%xmm6
movapd %xmm8,0x70(%rsp)
mulpd  %xmm8,%xmm6
subpd  %xmm6,%xmm12
subsd  %xmm5,%xmm11
movapd %xmm11,-0x10(%rsp)
movapd -0x60(%rsp),%xmm14
subsd  %xmm7,%xmm14
movupd 0x40(%rcx),%xmm11
movsd  0x50(%rcx),%xmm2
movsd  0x58(%rcx),%xmm7
movsd  0x10(%r8),%xmm0
movsd  0x30(%r8),%xmm1
movsd  0x50(%r8),%xmm4
movapd %xmm0,%xmm6
unpcklpd %xmm0,%xmm6
movapd %xmm11,%xmm5
movapd %xmm6,0x20(%rsp)
mulpd  %xmm6,%xmm5
subpd  %xmm5,%xmm10
movapd %xmm2,%xmm5
mulsd  %xmm0,%xmm5
movapd -0x50(%rsp),%xmm6
subsd  %xmm5,%xmm6
movapd %xmm6,-0x50(%rsp)
mulsd  %xmm7,%xmm0
movapd -0x80(%rsp),%xmm5
subsd  %xmm0,%xmm5
movapd %xmm5,-0x80(%rsp)
movapd %xmm1,%xmm8
unpcklpd %xmm1,%xmm8
movapd %xmm11,%xmm0
mulpd  %xmm8,%xmm0
subpd  %xmm0,%xmm13
movapd %xmm2,%xmm0
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm3
movsd  0x70(%r8),%xmm0
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm4,%xmm1
unpcklpd %xmm4,%xmm1
mulpd  %xmm11,%xmm1
subpd  %xmm1,%xmm15
movapd %xmm2,%xmm1
mulsd  %xmm4,%xmm1
movapd -0x20(%rsp),%xmm6
subsd  %xmm1,%xmm6
mulsd  %xmm7,%xmm4
movapd -0x70(%rsp),%xmm1
subsd  %xmm4,%xmm1
movapd %xmm1,-0x70(%rsp)
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm7
unpcklpd %xmm0,%xmm0
movapd %xmm11,0x40(%rsp)
mulpd  %xmm11,%xmm0
subpd  %xmm0,%xmm12
movapd -0x10(%rsp),%xmm11
subsd  %xmm2,%xmm11
subsd  %xmm7,%xmm14
movapd %xmm14,-0x60(%rsp)
movupd 0x60(%rcx),%xmm7
movsd  0x70(%rcx),%xmm2
movsd  0x18(%r8),%xmm0
movapd %xmm0,%xmm14
unpcklpd %xmm0,%xmm14
movapd %xmm7,%xmm1
mulpd  %xmm14,%xmm1
subpd  %xmm1,%xmm10
movapd %xmm2,%xmm1
mulsd  %xmm0,%xmm1
movapd -0x50(%rsp),%xmm4
subsd  %xmm1,%xmm4
movapd %xmm4,-0x50(%rsp)
movsd  0x78(%rcx),%xmm5
mulsd  %xmm5,%xmm0
movapd -0x80(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x80(%rsp)
movsd  0x38(%r8),%xmm0
movapd %xmm0,%xmm4
unpcklpd %xmm0,%xmm4
movapd %xmm7,%xmm1
mulpd  %xmm4,%xmm1
subpd  %xmm1,%xmm13
movapd %xmm2,%xmm1
mulsd  %xmm0,%xmm1
subsd  %xmm1,%xmm3
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm9
movsd  0x58(%r8),%xmm0
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
mulpd  %xmm7,%xmm1
subpd  %xmm1,%xmm15
movapd %xmm2,%xmm1
mulsd  %xmm0,%xmm1
subsd  %xmm1,%xmm6
movapd %xmm6,-0x20(%rsp)
mulsd  %xmm5,%xmm0
movapd -0x70(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x70(%rsp)
movsd  0x78(%r8),%xmm0
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm5
unpcklpd %xmm0,%xmm0
mulpd  %xmm7,%xmm0
subpd  %xmm0,%xmm12
movapd %xmm11,%xmm0
subsd  %xmm2,%xmm0
movapd %xmm0,-0x10(%rsp)
movapd -0x60(%rsp),%xmm0
subsd  %xmm5,%xmm0
movapd %xmm0,-0x60(%rsp)
sub    $0xffffffffffffff80,%rcx
add    $0x4,%eax
add    %r9,%r8
cmp    %r11d,%eax
jl     1190 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x90>
movapd %xmm9,(%rsp)
movapd 0xa01(%rip),%xmm0
movapd -0x40(%rsp),%xmm1
xorpd  %xmm0,%xmm1
movapd 0x70(%rsp),%xmm2
xorpd  %xmm0,%xmm2
movapd 0x40(%rsp),%xmm5
xorpd  %xmm0,%xmm5
xorpd  %xmm0,%xmm7
movapd 0x30(%rsp),%xmm6
mulpd  %xmm1,%xmm6
addpd  0x10(%rsp),%xmm6
movapd 0x50(%rsp),%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm6,%xmm0
mulpd  %xmm5,%xmm8
addpd  %xmm0,%xmm8
mulpd  %xmm7,%xmm4
addpd  %xmm8,%xmm4
movapd %xmm4,-0x40(%rsp)
mulpd  0x80(%rsp),%xmm1
addpd  -0x30(%rsp),%xmm1
mulpd  0x60(%rsp),%xmm2
addpd  %xmm1,%xmm2
mulpd  0x20(%rsp),%xmm5
addpd  %xmm2,%xmm5
mulpd  %xmm14,%xmm7
addpd  %xmm5,%xmm7
movapd %xmm7,-0x30(%rsp)
mov    %edx,%eax
and    $0xfffffffc,%eax
movapd -0x60(%rsp),%xmm1
movapd %xmm3,%xmm9
movapd -0x10(%rsp),%xmm8
movapd %xmm12,%xmm11
movapd -0x70(%rsp),%xmm12
movapd -0x20(%rsp),%xmm7
movapd %xmm15,%xmm13
movapd -0x50(%rsp),%xmm6
movapd -0x80(%rsp),%xmm3
cmp    %edx,%eax
jl     176c <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x66c>
jmp    1964 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x864>
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
xorpd  %xmm6,%xmm6
xorpd  %xmm9,%xmm9
xorpd  %xmm7,%xmm7
xorpd  %xmm8,%xmm8
xorpd  %xmm3,%xmm3
xorpd  %xmm0,%xmm0
movapd %xmm0,(%rsp)
xorpd  %xmm12,%xmm12
xorpd  %xmm1,%xmm1
xorpd  %xmm13,%xmm13
xorpd  %xmm11,%xmm11
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x30(%rsp)
jmp    1964 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x864>
xorpd  %xmm13,%xmm13
xorpd  %xmm6,%xmm6
xor    %eax,%eax
xorpd  %xmm9,%xmm9
xorpd  %xmm7,%xmm7
xorpd  %xmm8,%xmm8
xorpd  %xmm3,%xmm3
xorpd  %xmm0,%xmm0
movapd %xmm0,(%rsp)
xorpd  %xmm12,%xmm12
xorpd  %xmm1,%xmm1
xorpd  %xmm11,%xmm11
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x30(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
cmp    %edx,%eax
jge    1964 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x864>
sub    %eax,%edx
xor    %eax,%eax
movapd %xmm12,-0x70(%rsp)
movapd %xmm6,-0x50(%rsp)
movapd %xmm3,-0x80(%rsp)
movapd %xmm7,-0x20(%rsp)
movapd %xmm9,-0x60(%rsp)
movapd (%rsp),%xmm9
movapd %xmm8,%xmm10
movapd %xmm11,%xmm12
movapd -0x40(%rsp),%xmm14
movapd -0x30(%rsp),%xmm11
xchg   %ax,%ax
movapd %xmm14,-0x30(%rsp)
movapd %xmm11,-0x10(%rsp)
movapd %xmm12,0x10(%rsp)
movapd %xmm13,-0x40(%rsp)
movupd (%rcx),%xmm3
movsd  0x10(%rcx),%xmm5
movapd %xmm1,%xmm15
movsd  0x18(%rcx),%xmm8
movsd  (%r8,%rax,8),%xmm0
movsd  0x20(%r8,%rax,8),%xmm1
movsd  0x40(%r8,%rax,8),%xmm6
movapd %xmm0,%xmm2
unpcklpd %xmm0,%xmm2
movapd %xmm3,%xmm4
mulpd  %xmm2,%xmm4
subpd  %xmm4,%xmm11
movapd %xmm5,%xmm4
mulsd  %xmm0,%xmm4
movapd -0x50(%rsp),%xmm7
subsd  %xmm4,%xmm7
movapd %xmm7,-0x50(%rsp)
mulsd  %xmm8,%xmm0
movapd -0x80(%rsp),%xmm4
subsd  %xmm0,%xmm4
movapd %xmm4,-0x80(%rsp)
movapd %xmm1,%xmm4
unpcklpd %xmm1,%xmm4
movapd %xmm3,%xmm0
mulpd  %xmm4,%xmm0
subpd  %xmm0,%xmm14
movapd %xmm5,%xmm0
mulsd  %xmm1,%xmm0
movapd -0x60(%rsp),%xmm7
subsd  %xmm0,%xmm7
movapd %xmm7,-0x60(%rsp)
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm6,%xmm7
unpcklpd %xmm6,%xmm7
movapd %xmm3,%xmm0
mulpd  %xmm7,%xmm0
subpd  %xmm0,%xmm13
movapd %xmm5,%xmm0
mulsd  %xmm6,%xmm0
movapd -0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,-0x20(%rsp)
movsd  0x60(%r8,%rax,8),%xmm0
mulsd  %xmm8,%xmm6
movapd -0x70(%rsp),%xmm1
subsd  %xmm6,%xmm1
movapd %xmm1,-0x70(%rsp)
mulsd  %xmm0,%xmm5
mulsd  %xmm0,%xmm8
movapd %xmm0,%xmm6
unpcklpd %xmm0,%xmm6
movapd %xmm3,%xmm0
mulpd  %xmm6,%xmm0
subpd  %xmm0,%xmm12
subsd  %xmm5,%xmm10
subsd  %xmm8,%xmm15
movapd %xmm15,%xmm1
add    $0x1,%rax
add    $0x20,%rcx
cmp    %eax,%edx
jne    17b0 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x6b0>
movapd %xmm9,(%rsp)
xorpd  0x6ff(%rip),%xmm3
mulpd  %xmm3,%xmm6
addpd  0x10(%rsp),%xmm6
mulpd  %xmm3,%xmm7
addpd  -0x40(%rsp),%xmm7
mulpd  %xmm3,%xmm4
addpd  -0x30(%rsp),%xmm4
mulpd  %xmm2,%xmm3
addpd  -0x10(%rsp),%xmm3
movapd %xmm4,-0x40(%rsp)
movapd %xmm7,%xmm13
movapd %xmm6,%xmm11
movapd %xmm3,-0x30(%rsp)
movapd -0x60(%rsp),%xmm9
movapd %xmm10,%xmm8
movapd -0x70(%rsp),%xmm12
movapd -0x20(%rsp),%xmm7
movapd -0x50(%rsp),%xmm6
movapd -0x80(%rsp),%xmm3
mov    0xc0(%rsp),%edx
test   %r10d,%r10d
je     19eb <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x8eb>
mov    0xa8(%rsp),%rax
movupd (%rax),%xmm0
movupd 0x20(%rax),%xmm4
movupd 0x40(%rax),%xmm2
movupd 0x60(%rax),%xmm10
addsd  0x10(%rax),%xmm6
addsd  0x18(%rax),%xmm3
movapd -0x30(%rsp),%xmm5
addpd  %xmm0,%xmm5
movapd %xmm5,-0x30(%rsp)
movapd -0x40(%rsp),%xmm0
addpd  %xmm4,%xmm0
movapd %xmm0,-0x40(%rsp)
addsd  0x30(%rax),%xmm9
movapd (%rsp),%xmm0
addsd  0x38(%rax),%xmm0
movapd %xmm0,(%rsp)
addsd  0x50(%rax),%xmm7
addpd  %xmm2,%xmm13
addsd  0x58(%rax),%xmm12
addpd  %xmm10,%xmm11
addsd  0x70(%rax),%xmm8
addsd  0x78(%rax),%xmm1
mov    0xb8(%rsp),%rcx
mov    0xb0(%rsp),%rax
test   %edx,%edx
movapd %xmm8,-0x10(%rsp)
movapd %xmm1,-0x60(%rsp)
je     1c32 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xb32>
movapd %xmm12,%xmm15
mov    0xc8(%rsp),%rdx
movsd  (%rdx),%xmm0
mulsd  %xmm0,%xmm6
mulsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm0
movapd -0x30(%rsp),%xmm2
mulpd  %xmm0,%xmm2
movupd %xmm2,(%rax)
movsd  %xmm6,0x10(%rax)
cmp    $0x4,%edi
jl     1a4a <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x94a>
movsd  %xmm3,0x18(%rax)
movsd  0x20(%rcx),%xmm0
movsd  0x8(%rdx),%xmm1
movapd 0x5a4(%rip),%xmm5
movapd %xmm6,%xmm12
mulsd  %xmm0,%xmm6
movapd %xmm3,%xmm10
mulsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
xorpd  %xmm5,%xmm2
movapd -0x40(%rsp),%xmm4
subpd  %xmm0,%xmm4
xorpd  %xmm5,%xmm12
subsd  %xmm6,%xmm9
xorpd  %xmm5,%xmm10
movapd (%rsp),%xmm5
subsd  %xmm3,%xmm5
movapd %xmm5,%xmm14
mulsd  %xmm1,%xmm9
mulsd  %xmm1,%xmm14
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
movupd %xmm1,0x20(%rax)
movsd  %xmm9,0x30(%rax)
cmp    $0x4,%edi
jl     1ac9 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0x9c9>
movsd  %xmm14,0x38(%rax)
movapd %xmm11,%xmm8
movsd  0x40(%rcx),%xmm0
movsd  0x48(%rcx),%xmm3
movsd  0x10(%rdx),%xmm6
movapd %xmm0,%xmm5
unpcklpd %xmm0,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm13,%xmm5
movapd %xmm12,%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm7,%xmm4
mulsd  %xmm10,%xmm0
addsd  %xmm15,%xmm0
movapd %xmm3,%xmm7
unpcklpd %xmm3,%xmm7
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm5
movapd %xmm9,%xmm7
mulsd  %xmm3,%xmm7
subsd  %xmm7,%xmm4
mulsd  %xmm14,%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm6,%xmm4
mulsd  %xmm6,%xmm0
unpcklpd %xmm6,%xmm6
mulpd  %xmm5,%xmm6
movupd %xmm6,0x40(%rax)
movsd  %xmm4,0x50(%rax)
cmp    $0x4,%edi
jl     1b4f <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xa4f>
movsd  %xmm0,0x58(%rax)
cmp    $0x4,%esi
jl     1e60 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xd60>
movapd 0x4a0(%rip),%xmm3
xorpd  %xmm3,%xmm9
xorpd  %xmm3,%xmm1
movsd  0x60(%rcx),%xmm5
movsd  0x68(%rcx),%xmm13
movsd  0x70(%rcx),%xmm11
movapd %xmm9,%xmm7
movsd  0x18(%rdx),%xmm9
movapd %xmm5,%xmm3
unpcklpd %xmm5,%xmm3
mulpd  %xmm3,%xmm2
addpd  %xmm8,%xmm2
mulsd  %xmm5,%xmm12
addsd  -0x10(%rsp),%xmm12
movapd %xmm13,%xmm3
unpcklpd %xmm13,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
mulsd  %xmm13,%xmm7
addsd  %xmm12,%xmm7
movapd %xmm11,%xmm1
unpcklpd %xmm11,%xmm1
mulpd  %xmm1,%xmm6
subpd  %xmm6,%xmm3
mulsd  %xmm11,%xmm4
subsd  %xmm4,%xmm7
movapd %xmm9,%xmm1
unpcklpd %xmm9,%xmm1
mulpd  %xmm3,%xmm1
mulsd  %xmm9,%xmm7
movupd %xmm1,0x60(%rax)
movsd  %xmm7,0x70(%rax)
cmp    $0x4,%edi
jl     1e60 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xd60>
xorpd  0x3f8(%rip),%xmm14
mulsd  %xmm5,%xmm10
addsd  -0x60(%rsp),%xmm10
mulsd  %xmm13,%xmm14
addsd  %xmm10,%xmm14
mulsd  %xmm11,%xmm0
subsd  %xmm0,%xmm14
mulsd  %xmm9,%xmm14
jmp    1e5a <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xd5a>
movapd %xmm12,-0x70(%rsp)
movapd %xmm13,%xmm15
movapd %xmm11,-0x80(%rsp)
movsd  0x3c2(%rip),%xmm12
movapd %xmm12,%xmm0
divsd  (%rcx),%xmm0
mulsd  %xmm0,%xmm6
mulsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm0
movapd -0x30(%rsp),%xmm2
mulpd  %xmm0,%xmm2
movupd %xmm2,(%rax)
movsd  %xmm6,0x10(%rax)
cmp    $0x4,%edi
jl     1c80 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xb80>
movsd  %xmm3,0x18(%rax)
movsd  0x20(%rcx),%xmm0
movapd %xmm12,%xmm1
divsd  0x28(%rcx),%xmm1
movapd 0x368(%rip),%xmm8
movapd %xmm6,%xmm13
mulsd  %xmm0,%xmm6
movapd %xmm3,%xmm10
mulsd  %xmm0,%xmm3
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
xorpd  %xmm8,%xmm2
movapd -0x40(%rsp),%xmm4
subpd  %xmm0,%xmm4
xorpd  %xmm8,%xmm13
subsd  %xmm6,%xmm9
xorpd  %xmm8,%xmm10
movapd (%rsp),%xmm5
subsd  %xmm3,%xmm5
movapd %xmm5,%xmm14
mulsd  %xmm1,%xmm9
mulsd  %xmm1,%xmm14
unpcklpd %xmm1,%xmm1
mulpd  %xmm4,%xmm1
movupd %xmm1,0x20(%rax)
movsd  %xmm9,0x30(%rax)
cmp    $0x4,%edi
jl     1d06 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xc06>
movsd  %xmm14,0x38(%rax)
movsd  0x40(%rcx),%xmm0
movsd  0x48(%rcx),%xmm3
movapd %xmm12,%xmm6
divsd  0x50(%rcx),%xmm6
movapd %xmm0,%xmm5
unpcklpd %xmm0,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm15,%xmm5
movapd %xmm13,%xmm4
mulsd  %xmm0,%xmm4
addsd  %xmm7,%xmm4
mulsd  %xmm10,%xmm0
addsd  -0x70(%rsp),%xmm0
movapd %xmm3,%xmm7
unpcklpd %xmm3,%xmm7
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm5
movapd %xmm9,%xmm7
mulsd  %xmm3,%xmm7
subsd  %xmm7,%xmm4
mulsd  %xmm14,%xmm3
subsd  %xmm3,%xmm0
mulsd  %xmm6,%xmm4
mulsd  %xmm6,%xmm0
unpcklpd %xmm6,%xmm6
mulpd  %xmm5,%xmm6
movupd %xmm6,0x40(%rax)
movsd  %xmm4,0x50(%rax)
cmp    $0x4,%edi
jl     1d8d <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xc8d>
movsd  %xmm0,0x58(%rax)
cmp    $0x4,%esi
jl     1e60 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xd60>
xorpd  %xmm8,%xmm9
xorpd  %xmm8,%xmm1
movsd  0x60(%rcx),%xmm11
movapd %xmm9,%xmm7
movsd  0x68(%rcx),%xmm9
movsd  0x70(%rcx),%xmm5
divsd  %xmm5,%xmm12
movapd %xmm11,%xmm3
unpcklpd %xmm11,%xmm3
mulpd  %xmm3,%xmm2
addpd  -0x80(%rsp),%xmm2
mulsd  %xmm11,%xmm13
addsd  -0x10(%rsp),%xmm13
movapd %xmm9,%xmm3
unpcklpd %xmm9,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
mulsd  %xmm9,%xmm7
addsd  %xmm13,%xmm7
movapd %xmm5,%xmm1
unpcklpd %xmm5,%xmm1
mulpd  %xmm1,%xmm6
subpd  %xmm6,%xmm3
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm7
movapd %xmm12,%xmm1
unpcklpd %xmm12,%xmm1
mulpd  %xmm3,%xmm1
mulsd  %xmm12,%xmm7
movupd %xmm1,0x60(%rax)
movsd  %xmm7,0x70(%rax)
cmp    $0x4,%edi
jl     1e60 <kernel_dtrsm_nn_ru_4x4_vs_lib4+0xd60>
xorpd  %xmm8,%xmm14
mulsd  %xmm11,%xmm10
addsd  -0x60(%rsp),%xmm10
mulsd  %xmm9,%xmm14
addsd  %xmm10,%xmm14
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm14
mulsd  %xmm12,%xmm14
movsd  %xmm14,0x78(%rax)
add    $0x98,%rsp
ret

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

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