void kernel_dtrsm_nn_ll_diag_4x4_lib4(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;
  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;
  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;
  D[2 + bs * 3] = d_23;
  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;
  D[3 + bs * 3] = d_33;
  return;
}


x86 assembly (clang, -O0):
<kernel_dtrsm_nn_ll_diag_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x4,-0x2c(%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,-0x4(%rbp)
jg     11ef <kernel_dtrsm_nn_ll_diag_4x4_lib4+0xef>
jmp    2673 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x1573>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2239 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x1139>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%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    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%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    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%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    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%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    -0x10(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x10(%rbp)
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    11f6 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0xf6>
jmp    223e <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x113e>
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    266e <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x156e>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%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    -0x10(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    223e <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x113e>
jmp    2673 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x1573>
cmpl   $0x0,-0x20(%rbp)
je     280c <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x170c>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x50(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x58(%rax),%xmm0
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x78(%rax),%xmm0
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x18(%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
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
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    0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x18(%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    0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    0x18(%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    0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x78(%rax)
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrsm_nn_ll_diag_4x4_lib4>:
test   %edi,%edi
jle    1738 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x638>
cmp    $0x4,%edi
jb     17af <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x6af>
lea    -0x3(%rdi),%r10d
shl    $0x2,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x20(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x28(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm11,%xmm11
xorpd  %xmm12,%xmm12
xorpd  %xmm6,%xmm6
xorpd  %xmm15,%xmm15
xorpd  %xmm9,%xmm9
xorpd  %xmm10,%xmm10
nopl   (%rax)
movsd  %xmm14,-0x8(%rsp)
movsd  (%rsi),%xmm14
movsd  0x8(%rsi),%xmm1
movsd  0x10(%rsi),%xmm0
movsd  -0x30(%rsp),%xmm4
movsd  0x18(%rsi),%xmm8
movsd  (%rdx),%xmm3
movapd %xmm14,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm12
movsd  %xmm12,-0x18(%rsp)
movapd %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  -0x28(%rsp),%xmm5
subsd  %xmm2,%xmm5
movsd  %xmm5,-0x28(%rsp)
movsd  0x20(%rdx),%xmm2
mulsd  %xmm8,%xmm3
movsd  -0x40(%rsp),%xmm12
subsd  %xmm3,%xmm12
movapd %xmm14,%xmm3
mulsd  %xmm2,%xmm3
subsd  %xmm3,%xmm9
movapd %xmm1,%xmm3
mulsd  %xmm2,%xmm3
subsd  %xmm3,%xmm11
movsd  %xmm11,-0x10(%rsp)
movapd %xmm0,%xmm3
mulsd  %xmm2,%xmm3
movsd  -0x20(%rsp),%xmm5
subsd  %xmm3,%xmm5
movsd  %xmm5,-0x20(%rsp)
movsd  0x40(%rdx),%xmm3
mulsd  %xmm8,%xmm2
movsd  -0x38(%rsp),%xmm7
subsd  %xmm2,%xmm7
movapd %xmm14,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm15
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movsd  -0x50(%rsp),%xmm5
subsd  %xmm2,%xmm5
movsd  %xmm5,-0x50(%rsp)
movapd %xmm0,%xmm2
mulsd  %xmm3,%xmm2
movsd  -0x60(%rsp),%xmm5
subsd  %xmm2,%xmm5
movsd  %xmm5,-0x60(%rsp)
movsd  0x60(%rdx),%xmm2
mulsd  %xmm8,%xmm3
movsd  -0x58(%rsp),%xmm5
subsd  %xmm3,%xmm5
movsd  %xmm5,-0x58(%rsp)
movsd  0x8(%rdx),%xmm13
mulsd  %xmm2,%xmm14
subsd  %xmm14,%xmm6
movsd  %xmm6,-0x38(%rsp)
movsd  -0x8(%rsp),%xmm5
mulsd  %xmm2,%xmm1
movsd  -0x48(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  %xmm3,-0x48(%rsp)
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm5
movapd %xmm5,%xmm14
mulsd  %xmm2,%xmm8
subsd  %xmm8,%xmm4
movapd %xmm4,%xmm8
movsd  0x20(%rsi),%xmm5
movsd  0x28(%rsi),%xmm2
movsd  0x30(%rsi),%xmm1
movsd  0x38(%rsi),%xmm11
movapd %xmm5,%xmm3
mulsd  %xmm13,%xmm3
subsd  %xmm3,%xmm10
movapd %xmm2,%xmm3
mulsd  %xmm13,%xmm3
movsd  -0x18(%rsp),%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,-0x18(%rsp)
movapd %xmm1,%xmm3
mulsd  %xmm13,%xmm3
movsd  -0x28(%rsp),%xmm0
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x28(%rsp)
movsd  0x28(%rdx),%xmm3
mulsd  %xmm11,%xmm13
subsd  %xmm13,%xmm12
movsd  %xmm12,-0x40(%rsp)
movapd %xmm5,%xmm4
mulsd  %xmm3,%xmm4
subsd  %xmm4,%xmm9
movapd %xmm2,%xmm4
mulsd  %xmm3,%xmm4
movsd  -0x10(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x10(%rsp)
movapd %xmm1,%xmm4
mulsd  %xmm3,%xmm4
movsd  -0x20(%rsp),%xmm13
subsd  %xmm4,%xmm13
movsd  0x48(%rdx),%xmm4
mulsd  %xmm11,%xmm3
subsd  %xmm3,%xmm7
movapd %xmm5,%xmm3
mulsd  %xmm4,%xmm3
subsd  %xmm3,%xmm15
movapd %xmm2,%xmm3
mulsd  %xmm4,%xmm3
movsd  -0x50(%rsp),%xmm12
subsd  %xmm3,%xmm12
movsd  %xmm12,-0x50(%rsp)
movapd %xmm1,%xmm3
mulsd  %xmm4,%xmm3
movsd  -0x60(%rsp),%xmm0
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x60(%rsp)
movsd  -0x38(%rsp),%xmm6
movsd  0x68(%rdx),%xmm3
mulsd  %xmm11,%xmm4
movsd  -0x58(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x58(%rsp)
mulsd  %xmm3,%xmm5
subsd  %xmm5,%xmm6
mulsd  %xmm3,%xmm2
movsd  -0x48(%rsp),%xmm4
subsd  %xmm2,%xmm4
movsd  %xmm4,-0x48(%rsp)
mulsd  %xmm3,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm3,%xmm11
subsd  %xmm11,%xmm8
movapd %xmm8,%xmm11
movsd  0x40(%rsi),%xmm3
movsd  0x48(%rsi),%xmm2
movsd  0x50(%rsi),%xmm12
movsd  0x58(%rsi),%xmm8
movsd  0x10(%rdx),%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm10
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x18(%rsp),%xmm0
subsd  %xmm5,%xmm0
movsd  %xmm0,-0x18(%rsp)
movapd %xmm12,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x28(%rsp),%xmm0
subsd  %xmm5,%xmm0
movsd  0x30(%rdx),%xmm5
mulsd  %xmm8,%xmm4
movsd  -0x40(%rsp),%xmm1
subsd  %xmm4,%xmm1
movsd  %xmm1,-0x40(%rsp)
movapd %xmm3,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm9
movapd %xmm2,%xmm4
mulsd  %xmm5,%xmm4
movsd  -0x10(%rsp),%xmm1
subsd  %xmm4,%xmm1
movsd  %xmm1,-0x10(%rsp)
movapd %xmm12,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm13
movsd  %xmm13,-0x20(%rsp)
movsd  0x50(%rdx),%xmm4
mulsd  %xmm8,%xmm5
subsd  %xmm5,%xmm7
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm15
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x50(%rsp),%xmm1
subsd  %xmm5,%xmm1
movsd  %xmm1,-0x50(%rsp)
movapd %xmm12,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x60(%rsp),%xmm1
subsd  %xmm5,%xmm1
movsd  %xmm1,-0x60(%rsp)
movsd  0x70(%rdx),%xmm5
mulsd  %xmm8,%xmm4
movsd  -0x58(%rsp),%xmm1
subsd  %xmm4,%xmm1
movsd  %xmm1,-0x58(%rsp)
mulsd  %xmm5,%xmm3
subsd  %xmm3,%xmm6
mulsd  %xmm5,%xmm2
movsd  -0x48(%rsp),%xmm3
subsd  %xmm2,%xmm3
movsd  %xmm3,-0x48(%rsp)
mulsd  %xmm5,%xmm12
subsd  %xmm12,%xmm14
mulsd  %xmm5,%xmm8
subsd  %xmm8,%xmm11
movsd  %xmm11,-0x30(%rsp)
movsd  0x60(%rsi),%xmm3
movsd  0x68(%rsi),%xmm2
movsd  0x70(%rsi),%xmm1
movsd  0x78(%rsi),%xmm13
movsd  0x18(%rdx),%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm10
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x18(%rsp),%xmm8
subsd  %xmm5,%xmm8
movsd  %xmm8,-0x18(%rsp)
movapd %xmm1,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm0
movsd  %xmm0,-0x28(%rsp)
movsd  0x38(%rdx),%xmm5
mulsd  %xmm13,%xmm4
movsd  -0x40(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm3,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm9
movapd %xmm2,%xmm4
mulsd  %xmm5,%xmm4
movsd  -0x10(%rsp),%xmm11
subsd  %xmm4,%xmm11
movapd %xmm1,%xmm4
mulsd  %xmm5,%xmm4
movsd  -0x20(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x20(%rsp)
movsd  0x58(%rdx),%xmm4
mulsd  %xmm13,%xmm5
subsd  %xmm5,%xmm7
movsd  %xmm7,-0x38(%rsp)
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm15
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x50(%rsp),%xmm0
subsd  %xmm5,%xmm0
movsd  %xmm0,-0x50(%rsp)
movapd %xmm1,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x60(%rsp),%xmm0
subsd  %xmm5,%xmm0
movsd  %xmm0,-0x60(%rsp)
mulsd  %xmm13,%xmm4
movsd  -0x58(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x58(%rsp)
movsd  -0x18(%rsp),%xmm12
movsd  0x78(%rdx),%xmm4
mulsd  %xmm4,%xmm3
subsd  %xmm3,%xmm6
mulsd  %xmm4,%xmm2
movsd  -0x48(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x48(%rsp)
mulsd  %xmm4,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm4,%xmm13
movsd  -0x30(%rsp),%xmm0
subsd  %xmm13,%xmm0
movsd  %xmm0,-0x30(%rsp)
sub    $0xffffffffffffff80,%rsi
add    $0x4,%eax
add    %rcx,%rdx
cmp    %r10d,%eax
jl     11a0 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0xa0>
movapd %xmm10,%xmm3
movapd %xmm9,%xmm2
movapd %xmm15,%xmm1
movapd %xmm6,%xmm8
movapd %xmm11,%xmm6
movsd  -0x50(%rsp),%xmm11
movsd  -0x48(%rsp),%xmm10
movsd  -0x28(%rsp),%xmm9
movsd  -0x20(%rsp),%xmm15
mov    %edi,%eax
and    $0xfffffffc,%eax
jmp    1816 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x716>
xorpd  %xmm13,%xmm13
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x48(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm8,%xmm8
xorpd  %xmm12,%xmm12
xorpd  %xmm6,%xmm6
xorpd  %xmm11,%xmm11
xorpd  %xmm10,%xmm10
xorpd  %xmm9,%xmm9
xorpd  %xmm15,%xmm15
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
jmp    1981 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x881>
xorpd  %xmm3,%xmm3
xor    %eax,%eax
xorpd  %xmm2,%xmm2
xorpd  %xmm1,%xmm1
xorpd  %xmm8,%xmm8
xorpd  %xmm12,%xmm12
xorpd  %xmm6,%xmm6
xorpd  %xmm11,%xmm11
xorpd  %xmm10,%xmm10
xorpd  %xmm9,%xmm9
xorpd  %xmm15,%xmm15
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x60(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x58(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
cmp    %edi,%eax
movsd  %xmm2,-0x48(%rsp)
movsd  %xmm1,-0x50(%rsp)
jge    197c <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x87c>
sub    %eax,%edi
xor    %eax,%eax
movapd %xmm3,%xmm13
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  (%rsi),%xmm3
movsd  0x8(%rsi),%xmm2
movsd  0x10(%rsi),%xmm1
movsd  0x18(%rsi),%xmm0
movsd  (%rdx,%rax,8),%xmm4
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm13
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm12
movapd %xmm1,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm9
movsd  0x20(%rdx,%rax,8),%xmm5
mulsd  %xmm0,%xmm4
movsd  -0x40(%rsp),%xmm7
subsd  %xmm4,%xmm7
movsd  %xmm7,-0x40(%rsp)
movapd %xmm3,%xmm4
mulsd  %xmm5,%xmm4
movsd  -0x48(%rsp),%xmm7
subsd  %xmm4,%xmm7
movsd  %xmm7,-0x48(%rsp)
movapd %xmm2,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm6
movapd %xmm1,%xmm4
mulsd  %xmm5,%xmm4
subsd  %xmm4,%xmm15
movsd  0x40(%rdx,%rax,8),%xmm4
mulsd  %xmm0,%xmm5
movsd  -0x38(%rsp),%xmm7
subsd  %xmm5,%xmm7
movsd  %xmm7,-0x38(%rsp)
movapd %xmm3,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x50(%rsp),%xmm7
subsd  %xmm5,%xmm7
movsd  %xmm7,-0x50(%rsp)
movapd %xmm2,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm11
movapd %xmm1,%xmm5
mulsd  %xmm4,%xmm5
movsd  -0x60(%rsp),%xmm7
subsd  %xmm5,%xmm7
movsd  %xmm7,-0x60(%rsp)
mulsd  %xmm0,%xmm4
movsd  -0x58(%rsp),%xmm5
subsd  %xmm4,%xmm5
movsd  %xmm5,-0x58(%rsp)
movsd  0x60(%rdx,%rax,8),%xmm4
mulsd  %xmm4,%xmm3
subsd  %xmm3,%xmm8
mulsd  %xmm4,%xmm2
subsd  %xmm2,%xmm10
mulsd  %xmm4,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm4,%xmm0
movsd  -0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x30(%rsp)
add    $0x1,%rax
add    $0x20,%rsi
cmp    %eax,%edi
jne    1840 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x740>
jmp    1981 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x881>
movapd %xmm3,%xmm13
movapd %xmm13,%xmm3
movsd  -0x48(%rsp),%xmm2
movsd  -0x50(%rsp),%xmm1
movapd %xmm12,%xmm0
movapd %xmm6,%xmm12
movapd %xmm10,%xmm13
movapd %xmm9,%xmm5
movapd %xmm15,%xmm4
mov    0x10(%rsp),%rcx
mov    0x8(%rsp),%rax
test   %r8d,%r8d
je     1a65 <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x965>
addsd  (%r9),%xmm3
movapd %xmm0,%xmm15
addsd  0x8(%r9),%xmm15
addsd  0x10(%r9),%xmm5
movsd  -0x40(%rsp),%xmm0
addsd  0x18(%r9),%xmm0
movsd  %xmm0,-0x40(%rsp)
movapd %xmm2,%xmm9
addsd  0x20(%r9),%xmm9
addsd  0x28(%r9),%xmm12
addsd  0x30(%r9),%xmm4
movsd  -0x38(%rsp),%xmm0
addsd  0x38(%r9),%xmm0
movsd  %xmm0,-0x38(%rsp)
addsd  0x40(%r9),%xmm1
addsd  0x48(%r9),%xmm11
movsd  -0x60(%rsp),%xmm0
addsd  0x50(%r9),%xmm0
movsd  %xmm0,-0x60(%rsp)
movsd  -0x58(%rsp),%xmm0
addsd  0x58(%r9),%xmm0
movsd  %xmm0,-0x58(%rsp)
addsd  0x60(%r9),%xmm8
addsd  0x68(%r9),%xmm13
addsd  0x70(%r9),%xmm14
movsd  -0x30(%rsp),%xmm0
addsd  0x78(%r9),%xmm0
movsd  %xmm0,-0x30(%rsp)
jmp    1a6f <kernel_dtrsm_nn_ll_diag_4x4_lib4+0x96f>
movapd %xmm0,%xmm15
movapd %xmm2,%xmm9
movsd  %xmm3,(%rax)
movsd  %xmm9,0x20(%rax)
movsd  %xmm1,0x40(%rax)
movsd  %xmm8,0x60(%rax)
movsd  0x8(%rcx),%xmm0
movapd %xmm1,%xmm7
movapd %xmm0,%xmm1
mulsd  %xmm3,%xmm1
subsd  %xmm1,%xmm15
movsd  0x10(%rcx),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm5
movsd  0x18(%rcx),%xmm2
mulsd  %xmm2,%xmm3
movsd  -0x40(%rsp),%xmm10
subsd  %xmm3,%xmm10
movapd %xmm0,%xmm3
mulsd  %xmm9,%xmm3
subsd  %xmm3,%xmm12
movapd %xmm1,%xmm3
mulsd  %xmm9,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm9
movsd  -0x38(%rsp),%xmm6
subsd  %xmm9,%xmm6
movapd %xmm0,%xmm3
mulsd  %xmm7,%xmm3
subsd  %xmm3,%xmm11
movapd %xmm1,%xmm3
mulsd  %xmm7,%xmm3
movapd %xmm5,%xmm9
movsd  -0x60(%rsp),%xmm5
subsd  %xmm3,%xmm5
mulsd  %xmm2,%xmm7
movsd  -0x58(%rsp),%xmm3
subsd  %xmm7,%xmm3
mulsd  %xmm8,%xmm0
subsd  %xmm0,%xmm13
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm14
mulsd  %xmm8,%xmm2
movsd  -0x30(%rsp),%xmm8
subsd  %xmm2,%xmm8
movsd  %xmm15,0x8(%rax)
movsd  %xmm12,0x28(%rax)
movsd  %xmm11,0x48(%rax)
movsd  %xmm13,0x68(%rax)
movsd  0x30(%rcx),%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm15,%xmm1
subsd  %xmm1,%xmm9
movsd  0x38(%rcx),%xmm1
mulsd  %xmm1,%xmm15
subsd  %xmm15,%xmm10
movapd %xmm0,%xmm2
mulsd  %xmm12,%xmm2
subsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm12
subsd  %xmm12,%xmm6
movapd %xmm0,%xmm2
mulsd  %xmm11,%xmm2
subsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm11
subsd  %xmm11,%xmm3
mulsd  %xmm13,%xmm0
subsd  %xmm0,%xmm14
mulsd  %xmm1,%xmm13
subsd  %xmm13,%xmm8
movsd  %xmm9,0x10(%rax)
movsd  %xmm4,0x30(%rax)
movsd  %xmm5,0x50(%rax)
movsd  %xmm14,0x70(%rax)
movsd  0x58(%rcx),%xmm0
mulsd  %xmm0,%xmm9
subsd  %xmm9,%xmm10
mulsd  %xmm0,%xmm4
subsd  %xmm4,%xmm6
mulsd  %xmm0,%xmm5
subsd  %xmm5,%xmm3
mulsd  %xmm0,%xmm14
subsd  %xmm14,%xmm8
movsd  %xmm10,0x18(%rax)
movsd  %xmm6,0x38(%rax)
movsd  %xmm3,0x58(%rax)
movsd  %xmm8,0x78(%rax)
ret

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

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