void kernel_dtrsm_nn_ll_diag_4x4_vs_lib4(int km, int kn, int kmax, double *A,
                                         double *B, int sdb, int alg, double *C,
                                         double *D, double *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_1, e_2, e_3,
      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];
  }
  D[0 + bs * 0] = d_00;
  D[0 + bs * 1] = d_01;
  D[0 + bs * 2] = d_02;
  if (kn >= 4)
    D[0 + bs * 3] = d_03;
  e_1 = E[1 + bs * 0];
  e_2 = E[2 + bs * 0];
  e_3 = E[3 + bs * 0];
  d_10 -= e_1 * d_00;
  d_20 -= e_2 * d_00;
  d_30 -= e_3 * d_00;
  d_11 -= e_1 * d_01;
  d_21 -= e_2 * d_01;
  d_31 -= e_3 * d_01;
  d_12 -= e_1 * d_02;
  d_22 -= e_2 * d_02;
  d_32 -= e_3 * d_02;
  d_13 -= e_1 * d_03;
  d_23 -= e_2 * d_03;
  d_33 -= e_3 * d_03;
  D[1 + bs * 0] = d_10;
  D[1 + bs * 1] = d_11;
  D[1 + bs * 2] = d_12;
  if (kn >= 4)
    D[1 + bs * 3] = d_13;
  e_2 = E[2 + bs * 1];
  e_3 = E[3 + bs * 1];
  d_20 -= e_2 * d_10;
  d_30 -= e_3 * d_10;
  d_21 -= e_2 * d_11;
  d_31 -= e_3 * d_11;
  d_22 -= e_2 * d_12;
  d_32 -= e_3 * d_12;
  d_23 -= e_2 * d_13;
  d_33 -= e_3 * d_13;
  D[2 + bs * 0] = d_20;
  D[2 + bs * 1] = d_21;
  D[2 + bs * 2] = d_22;
  if (kn >= 4)
    D[2 + bs * 3] = d_23;
  if (km < 4)
    return;
  e_3 = E[3 + bs * 2];
  d_30 -= e_3 * d_20;
  d_31 -= e_3 * d_21;
  d_32 -= e_3 * d_22;
  d_33 -= e_3 * d_23;
  D[3 + bs * 0] = d_30;
  D[3 + bs * 1] = d_31;
  D[3 + bs * 2] = d_32;
  if (kn >= 4)
    D[3 + bs * 3] = d_33;
  return;
}


x86 assembly (clang, -O0):
<kernel_dtrsm_nn_ll_diag_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
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,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
jg     11f5 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xf5>
jmp    2679 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1579>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    223f <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x113f>
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  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%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  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%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  -0x50(%rbp),%xmm0
movsd  -0x78(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%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
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  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%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  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%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  -0x50(%rbp),%xmm0
movsd  -0x78(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%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
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  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%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  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%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  -0x50(%rbp),%xmm0
movsd  -0x78(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%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
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  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%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)
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%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  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%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  -0x50(%rbp),%xmm0
movsd  -0x78(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%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
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    11fc <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xfc>
jmp    2244 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1144>
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    2674 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1574>
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  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%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  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%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  -0x50(%rbp),%xmm0
movsd  -0x78(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%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
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    2244 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1144>
jmp    2679 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1579>
cmpl   $0x0,0x10(%rbp)
je     2812 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1712>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
cmpl   $0x4,-0x8(%rbp)
jl     285f <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x175f>
movsd  -0xb0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x98(%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  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%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  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%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  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa8(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%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  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
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  -0xb8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
cmpl   $0x4,-0x8(%rbp)
jl     2bc5 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1ac5>
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    0x28(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x28(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb8(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xb8(%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  -0x88(%rbp),%xmm0
ff
movsd  -0xc0(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xc0(%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  -0x88(%rbp),%xmm0
ff
movsd  -0xc8(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xc8(%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  -0x88(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
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  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
cmpl   $0x4,-0x8(%rbp)
jl     2e2d <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1d2d>
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
cmpl   $0x4,-0x4(%rbp)
jge    2e3c <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1d3c>
jmp    2f9c <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1e9c>
mov    0x28(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xd8(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xe0(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xe8(%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  -0x90(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm2
ff
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  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
cmpl   $0x4,-0x8(%rbp)
jl     2f97 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1e97>
movsd  -0x110(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2f9c <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x1e9c>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrsm_nn_ll_diag_4x4_vs_lib4>:
mov    0x8(%rsp),%r10d
test   %edx,%edx
jle    1725 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x625>
cmp    $0x4,%edx
jb     179b <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x69b>
lea    -0x3(%rdx),%r11d
shl    $0x2,%r9d
movslq %r9d,%r9
shl    $0x3,%r9
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x18(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rsp)
xorpd  %xmm11,%xmm11
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm4,%xmm4
xorpd  %xmm5,%xmm5
xorpd  %xmm10,%xmm10
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm12,%xmm12
xorpd  %xmm15,%xmm15
xorpd  %xmm9,%xmm9
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movsd  (%rcx),%xmm14
movsd  0x8(%rcx),%xmm3
movsd  0x10(%rcx),%xmm0
movsd  0x18(%rcx),%xmm8
movsd  (%r8),%xmm2
movapd %xmm14,%xmm1
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm3,%xmm1
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm10
movapd %xmm0,%xmm1
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm11
movsd  0x20(%r8),%xmm1
mulsd  %xmm8,%xmm2
movsd  -0x20(%rsp),%xmm7
subsd  %xmm2,%xmm7
movsd  %xmm7,-0x20(%rsp)
movapd %xmm14,%xmm2
mulsd  %xmm1,%xmm2
subsd  %xmm2,%xmm15
movapd %xmm3,%xmm2
mulsd  %xmm1,%xmm2
subsd  %xmm2,%xmm5
movapd %xmm0,%xmm2
mulsd  %xmm1,%xmm2
movsd  -0x10(%rsp),%xmm6
subsd  %xmm2,%xmm6
movsd  %xmm6,-0x10(%rsp)
movsd  0x40(%r8),%xmm2
mulsd  %xmm8,%xmm1
movsd  -0x40(%rsp),%xmm7
subsd  %xmm1,%xmm7
movsd  %xmm7,-0x40(%rsp)
movapd %xmm14,%xmm1
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm12
movapd %xmm3,%xmm1
mulsd  %xmm2,%xmm1
subsd  %xmm1,%xmm4
movapd %xmm0,%xmm1
mulsd  %xmm2,%xmm1
movsd  -0x30(%rsp),%xmm7
subsd  %xmm1,%xmm7
movsd  %xmm7,-0x30(%rsp)
movsd  0x60(%r8),%xmm1
mulsd  %xmm8,%xmm2
movsd  -0x18(%rsp),%xmm7
subsd  %xmm2,%xmm7
movsd  %xmm7,-0x18(%rsp)
movsd  0x8(%r8),%xmm13
mulsd  %xmm1,%xmm14
movsd  -0x38(%rsp),%xmm2
subsd  %xmm14,%xmm2
movsd  %xmm2,-0x38(%rsp)
mulsd  %xmm1,%xmm3
movsd  -0x50(%rsp),%xmm7
subsd  %xmm3,%xmm7
movsd  %xmm7,-0x50(%rsp)
mulsd  %xmm1,%xmm0
movsd  -0x48(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,-0x48(%rsp)
mulsd  %xmm1,%xmm8
movsd  -0x28(%rsp),%xmm0
subsd  %xmm8,%xmm0
movsd  %xmm0,-0x28(%rsp)
movsd  0x20(%rcx),%xmm7
movsd  0x28(%rcx),%xmm1
movsd  0x30(%rcx),%xmm3
movsd  0x38(%rcx),%xmm14
movapd %xmm7,%xmm2
mulsd  %xmm13,%xmm2
subsd  %xmm2,%xmm9
movapd %xmm1,%xmm2
mulsd  %xmm13,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm3,%xmm2
mulsd  %xmm13,%xmm2
subsd  %xmm2,%xmm11
movsd  0x28(%r8),%xmm2
mulsd  %xmm14,%xmm13
movsd  -0x20(%rsp),%xmm0
subsd  %xmm13,%xmm0
movsd  %xmm0,-0x20(%rsp)
movapd %xmm5,%xmm13
movapd %xmm7,%xmm6
mulsd  %xmm2,%xmm6
subsd  %xmm6,%xmm15
movapd %xmm1,%xmm6
mulsd  %xmm2,%xmm6
subsd  %xmm6,%xmm13
movapd %xmm3,%xmm6
mulsd  %xmm2,%xmm6
movsd  -0x10(%rsp),%xmm8
subsd  %xmm6,%xmm8
movsd  0x48(%r8),%xmm6
mulsd  %xmm14,%xmm2
movsd  -0x40(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm7,%xmm2
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm12
movapd %xmm1,%xmm2
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm4
movapd %xmm3,%xmm2
mulsd  %xmm6,%xmm2
movsd  -0x30(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x30(%rsp)
movapd %xmm13,%xmm5
movsd  0x68(%r8),%xmm2
mulsd  %xmm14,%xmm6
movsd  -0x18(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x18(%rsp)
mulsd  %xmm2,%xmm7
movsd  -0x38(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x38(%rsp)
mulsd  %xmm2,%xmm1
movsd  -0x50(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rsp)
mulsd  %xmm2,%xmm3
movsd  -0x48(%rsp),%xmm13
subsd  %xmm3,%xmm13
mulsd  %xmm2,%xmm14
movsd  -0x28(%rsp),%xmm0
subsd  %xmm14,%xmm0
movsd  %xmm0,-0x28(%rsp)
movsd  0x40(%rcx),%xmm2
movsd  0x48(%rcx),%xmm1
movsd  0x50(%rcx),%xmm3
movsd  0x58(%rcx),%xmm14
movsd  0x10(%r8),%xmm6
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm9
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm10
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm11
movsd  0x30(%r8),%xmm7
mulsd  %xmm14,%xmm6
movsd  -0x20(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x20(%rsp)
movapd %xmm2,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm15
movapd %xmm1,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm5
movapd %xmm3,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm8
movsd  0x50(%r8),%xmm6
mulsd  %xmm14,%xmm7
movsd  -0x40(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm12
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm4
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
movsd  -0x30(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x30(%rsp)
movsd  0x70(%r8),%xmm7
mulsd  %xmm14,%xmm6
movsd  -0x18(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x18(%rsp)
mulsd  %xmm7,%xmm2
movsd  -0x38(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x38(%rsp)
mulsd  %xmm7,%xmm1
movsd  -0x50(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rsp)
mulsd  %xmm7,%xmm3
subsd  %xmm3,%xmm13
movsd  %xmm13,-0x48(%rsp)
mulsd  %xmm7,%xmm14
movsd  -0x28(%rsp),%xmm0
subsd  %xmm14,%xmm0
movsd  %xmm0,-0x28(%rsp)
movsd  0x60(%rcx),%xmm2
movsd  0x68(%rcx),%xmm1
movsd  0x70(%rcx),%xmm3
movsd  0x78(%rcx),%xmm13
movsd  0x18(%r8),%xmm6
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm9
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm10
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm11
movsd  0x38(%r8),%xmm7
mulsd  %xmm13,%xmm6
movsd  -0x20(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x20(%rsp)
movapd %xmm2,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm15
movapd %xmm1,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm5
movapd %xmm3,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm8
movsd  %xmm8,-0x10(%rsp)
movsd  0x58(%r8),%xmm6
mulsd  %xmm13,%xmm7
movapd %xmm4,%xmm8
movsd  -0x40(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm12
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm4
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
movsd  -0x30(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x30(%rsp)
mulsd  %xmm13,%xmm6
movsd  -0x18(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x18(%rsp)
movsd  0x78(%r8),%xmm6
mulsd  %xmm6,%xmm2
movsd  -0x38(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x38(%rsp)
mulsd  %xmm6,%xmm1
movsd  -0x50(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rsp)
mulsd  %xmm6,%xmm3
movsd  -0x48(%rsp),%xmm0
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x48(%rsp)
mulsd  %xmm6,%xmm13
movsd  -0x28(%rsp),%xmm0
subsd  %xmm13,%xmm0
movsd  %xmm0,-0x28(%rsp)
sub    $0xffffffffffffff80,%rcx
add    $0x4,%eax
add    %r9,%r8
cmp    %r11d,%eax
jl     11b0 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xb0>
movapd %xmm15,%xmm7
movsd  %xmm9,-0x8(%rsp)
movapd %xmm12,%xmm6
movapd %xmm10,%xmm3
movapd %xmm5,%xmm1
movapd %xmm4,%xmm0
movapd %xmm11,%xmm4
movsd  -0x10(%rsp),%xmm11
movsd  -0x20(%rsp),%xmm15
movsd  -0x40(%rsp),%xmm9
movsd  -0x18(%rsp),%xmm12
mov    %edx,%eax
and    $0xfffffffc,%eax
jmp    1805 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x705>
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rsp)
xorpd  %xmm4,%xmm4
xorpd  %xmm5,%xmm5
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm15,%xmm15
xorpd  %xmm11,%xmm11
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rsp)
xorpd  %xmm8,%xmm8
xorpd  %xmm10,%xmm10
xorpd  %xmm9,%xmm9
xorpd  %xmm12,%xmm12
xorpd  %xmm1,%xmm1
movsd  %xmm1,-0x28(%rsp)
jmp    19de <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x8de>
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x8(%rsp)
xor    %eax,%eax
xorpd  %xmm7,%xmm7
xorpd  %xmm6,%xmm6
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm3,%xmm3
xorpd  %xmm1,%xmm1
xorpd  %xmm0,%xmm0
xorpd  %xmm2,%xmm2
movsd  %xmm2,-0x50(%rsp)
xorpd  %xmm4,%xmm4
xorpd  %xmm11,%xmm11
xorpd  %xmm2,%xmm2
movsd  %xmm2,-0x30(%rsp)
xorpd  %xmm2,%xmm2
movsd  %xmm2,-0x48(%rsp)
xorpd  %xmm15,%xmm15
xorpd  %xmm9,%xmm9
xorpd  %xmm12,%xmm12
xorpd  %xmm2,%xmm2
movsd  %xmm2,-0x28(%rsp)
cmp    %edx,%eax
movsd  %xmm3,-0x20(%rsp)
movsd  %xmm7,-0x40(%rsp)
jge    19c0 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x8c0>
sub    %eax,%edx
xor    %eax,%eax
movapd %xmm15,%xmm10
movapd %xmm4,%xmm15
movapd %xmm0,%xmm5
movapd %xmm1,%xmm4
movapd %xmm6,%xmm14
movsd  -0x8(%rsp),%xmm8
nopl   0x0(%rax,%rax,1)
movsd  %xmm12,-0x18(%rsp)
movsd  (%rcx),%xmm2
movsd  0x8(%rcx),%xmm1
movsd  0x10(%rcx),%xmm3
movsd  0x18(%rcx),%xmm13
movsd  (%r8,%rax,8),%xmm6
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm8
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
movsd  -0x20(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x20(%rsp)
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm15
movsd  0x20(%r8,%rax,8),%xmm7
mulsd  %xmm13,%xmm6
subsd  %xmm6,%xmm10
movapd %xmm2,%xmm6
mulsd  %xmm7,%xmm6
movsd  -0x40(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm1,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm4
movapd %xmm3,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm11
movsd  0x40(%r8,%rax,8),%xmm6
mulsd  %xmm13,%xmm7
subsd  %xmm7,%xmm9
movapd %xmm2,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm14
movapd %xmm1,%xmm7
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm5
movapd %xmm3,%xmm7
mulsd  %xmm6,%xmm7
movapd %xmm9,%xmm12
movapd %xmm10,%xmm9
movapd %xmm11,%xmm10
movapd %xmm15,%xmm11
movapd %xmm14,%xmm15
movsd  -0x30(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x30(%rsp)
movapd %xmm11,%xmm15
movapd %xmm10,%xmm11
movapd %xmm9,%xmm10
movapd %xmm12,%xmm9
movsd  -0x18(%rsp),%xmm12
mulsd  %xmm13,%xmm6
subsd  %xmm6,%xmm12
movsd  0x60(%r8,%rax,8),%xmm6
mulsd  %xmm6,%xmm2
movsd  -0x38(%rsp),%xmm7
subsd  %xmm2,%xmm7
movsd  %xmm7,-0x38(%rsp)
mulsd  %xmm6,%xmm1
movsd  -0x50(%rsp),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x50(%rsp)
mulsd  %xmm6,%xmm3
movsd  -0x48(%rsp),%xmm1
subsd  %xmm3,%xmm1
movsd  %xmm1,-0x48(%rsp)
mulsd  %xmm6,%xmm13
movsd  -0x28(%rsp),%xmm1
subsd  %xmm13,%xmm1
movsd  %xmm1,-0x28(%rsp)
add    $0x1,%rax
add    $0x20,%rcx
cmp    %eax,%edx
jne    1840 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x740>
jmp    19de <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x8de>
movapd %xmm15,%xmm10
movapd %xmm4,%xmm15
movapd %xmm0,%xmm5
movapd %xmm1,%xmm4
movapd %xmm6,%xmm14
movsd  -0x8(%rsp),%xmm8
movsd  %xmm14,-0x18(%rsp)
movsd  -0x40(%rsp),%xmm1
movapd %xmm8,%xmm2
movsd  -0x20(%rsp),%xmm0
movapd %xmm4,%xmm8
movapd %xmm5,%xmm14
movapd %xmm15,%xmm4
movapd %xmm11,%xmm5
movapd %xmm10,%xmm7
movapd %xmm9,%xmm6
movapd %xmm12,%xmm3
mov    0x18(%rsp),%rax
test   %r10d,%r10d
je     1ae9 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0x9e9>
mov    0x10(%rsp),%rcx
movapd %xmm2,%xmm15
addsd  (%rcx),%xmm15
movapd %xmm0,%xmm12
addsd  0x8(%rcx),%xmm12
movapd %xmm4,%xmm11
addsd  0x10(%rcx),%xmm11
movapd %xmm7,%xmm13
addsd  0x18(%rcx),%xmm13
addsd  0x20(%rcx),%xmm1
movapd %xmm8,%xmm4
addsd  0x28(%rcx),%xmm4
movapd %xmm5,%xmm9
addsd  0x30(%rcx),%xmm9
addsd  0x38(%rcx),%xmm6
movsd  -0x18(%rsp),%xmm10
addsd  0x40(%rcx),%xmm10
movapd %xmm14,%xmm5
addsd  0x48(%rcx),%xmm5
movsd  -0x30(%rsp),%xmm0
addsd  0x50(%rcx),%xmm0
movsd  %xmm0,-0x30(%rsp)
addsd  0x58(%rcx),%xmm3
movsd  -0x38(%rsp),%xmm0
addsd  0x60(%rcx),%xmm0
movsd  %xmm0,-0x38(%rsp)
movsd  -0x50(%rsp),%xmm0
addsd  0x68(%rcx),%xmm0
movsd  %xmm0,-0x50(%rsp)
movsd  -0x48(%rsp),%xmm0
addsd  0x70(%rcx),%xmm0
movsd  %xmm0,-0x48(%rsp)
movsd  -0x28(%rsp),%xmm0
addsd  0x78(%rcx),%xmm0
movsd  %xmm0,-0x28(%rsp)
jmp    1b13 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xa13>
movapd %xmm7,%xmm13
movapd %xmm5,%xmm9
movapd %xmm4,%xmm11
movapd %xmm14,%xmm5
movapd %xmm8,%xmm4
movapd %xmm0,%xmm12
movsd  -0x18(%rsp),%xmm10
movapd %xmm2,%xmm15
mov    0x20(%rsp),%rcx
movsd  %xmm15,(%rax)
movsd  %xmm1,-0x40(%rsp)
movsd  %xmm1,0x20(%rax)
movsd  %xmm10,0x40(%rax)
cmp    $0x4,%esi
jl     1b3e <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xa3e>
movsd  -0x38(%rsp),%xmm0
movsd  %xmm0,0x60(%rax)
movsd  0x8(%rcx),%xmm1
movsd  0x10(%rcx),%xmm0
movsd  0x18(%rcx),%xmm14
movapd %xmm1,%xmm2
mulsd  %xmm15,%xmm2
subsd  %xmm2,%xmm12
movapd %xmm0,%xmm2
mulsd  %xmm15,%xmm2
subsd  %xmm2,%xmm11
movapd %xmm1,%xmm2
movsd  -0x40(%rsp),%xmm7
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm4
movapd %xmm0,%xmm2
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm9
movapd %xmm1,%xmm2
mulsd  %xmm10,%xmm2
subsd  %xmm2,%xmm5
movapd %xmm0,%xmm2
mulsd  %xmm10,%xmm2
movsd  -0x30(%rsp),%xmm7
subsd  %xmm2,%xmm7
movsd  %xmm7,-0x30(%rsp)
movsd  -0x38(%rsp),%xmm2
mulsd  %xmm2,%xmm1
movsd  -0x50(%rsp),%xmm7
subsd  %xmm1,%xmm7
movsd  %xmm7,-0x50(%rsp)
mulsd  %xmm2,%xmm0
movsd  -0x48(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x48(%rsp)
movsd  %xmm12,0x8(%rax)
movsd  %xmm4,0x28(%rax)
movsd  %xmm5,0x48(%rax)
cmp    $0x4,%esi
jl     1bfd <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xafd>
movsd  -0x50(%rsp),%xmm0
movsd  %xmm0,0x68(%rax)
movsd  0x30(%rcx),%xmm0
movsd  0x38(%rcx),%xmm8
movapd %xmm0,%xmm1
mulsd  %xmm12,%xmm1
subsd  %xmm1,%xmm11
movapd %xmm0,%xmm1
mulsd  %xmm4,%xmm1
subsd  %xmm1,%xmm9
movapd %xmm0,%xmm1
mulsd  %xmm5,%xmm1
movsd  -0x30(%rsp),%xmm2
subsd  %xmm1,%xmm2
mulsd  -0x50(%rsp),%xmm0
movsd  -0x48(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x48(%rsp)
movsd  %xmm11,0x10(%rax)
movsd  %xmm9,0x30(%rax)
movapd %xmm2,%xmm1
movsd  %xmm2,0x50(%rax)
cmp    $0x4,%esi
jl     1c70 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xb70>
movsd  -0x48(%rsp),%xmm0
movsd  %xmm0,0x70(%rax)
cmp    $0x4,%edi
movsd  -0x40(%rsp),%xmm7
jl     1d29 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xc29>
mulsd  %xmm14,%xmm15
subsd  %xmm15,%xmm13
mulsd  %xmm14,%xmm7
subsd  %xmm7,%xmm6
mulsd  %xmm14,%xmm10
subsd  %xmm10,%xmm3
mulsd  %xmm8,%xmm12
subsd  %xmm12,%xmm13
mulsd  %xmm8,%xmm4
subsd  %xmm4,%xmm6
mulsd  %xmm8,%xmm5
subsd  %xmm5,%xmm3
movsd  0x58(%rcx),%xmm0
mulsd  %xmm0,%xmm11
subsd  %xmm11,%xmm13
mulsd  %xmm0,%xmm9
subsd  %xmm9,%xmm6
mulsd  %xmm0,%xmm1
subsd  %xmm1,%xmm3
movsd  %xmm13,0x18(%rax)
movsd  %xmm6,0x38(%rax)
movsd  %xmm3,0x58(%rax)
cmp    $0x4,%esi
jl     1d29 <kernel_dtrsm_nn_ll_diag_4x4_vs_lib4+0xc29>
mulsd  -0x38(%rsp),%xmm14
movapd %xmm8,%xmm1
movsd  -0x28(%rsp),%xmm8
subsd  %xmm14,%xmm8
mulsd  -0x50(%rsp),%xmm1
xorpd  0x2ec(%rip),%xmm0
subsd  %xmm1,%xmm8
mulsd  -0x48(%rsp),%xmm0
addsd  %xmm8,%xmm0
movsd  %xmm0,0x78(%rax)
ret

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

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