void kernel_dgetrf_nn_4x4_vs_lib4(int km, int kn, int kmax, double *A,
                                  double *B, int sdb, int alg, double *C,
                                  double *D, double *inv_diag_D) {
  const int bs = 4;
  int k;
  double tmp, a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_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];
  }
  tmp = 1.0 / d_00;
  d_10 *= tmp;
  d_20 *= tmp;
  d_30 *= tmp;
  inv_diag_D[0] = tmp;
  D[0 + bs * 0] = d_00;
  D[1 + bs * 0] = d_10;
  D[2 + bs * 0] = d_20;
  if (km >= 4)
    D[3 + bs * 0] = d_30;
  d_11 -= d_10 * d_01;
  d_21 -= d_20 * d_01;
  d_31 -= d_30 * d_01;
  tmp = 1.0 / d_11;
  d_21 *= tmp;
  d_31 *= tmp;
  inv_diag_D[1] = tmp;
  D[0 + bs * 1] = d_01;
  D[1 + bs * 1] = d_11;
  D[2 + bs * 1] = d_21;
  if (km >= 4)
    D[3 + bs * 1] = d_31;
  d_12 -= d_10 * d_02;
  d_22 -= d_20 * d_02;
  d_32 -= d_30 * d_02;
  d_22 -= d_21 * d_12;
  d_32 -= d_31 * d_12;
  tmp = 1.0 / d_22;
  d_32 *= tmp;
  inv_diag_D[2] = tmp;
  D[0 + bs * 2] = d_02;
  D[1 + bs * 2] = d_12;
  D[2 + bs * 2] = d_22;
  if (km >= 4)
    D[3 + bs * 2] = d_32;
  if (kn < 4)
    return;
  d_13 -= d_10 * d_03;
  d_23 -= d_20 * d_03;
  d_33 -= d_30 * d_03;
  d_23 -= d_21 * d_13;
  d_33 -= d_31 * d_13;
  d_33 -= d_32 * d_23;
  tmp = 1.0 / d_33;
  inv_diag_D[3] = tmp;
  D[0 + bs * 3] = d_03;
  D[1 + bs * 3] = d_13;
  D[2 + bs * 3] = d_23;
  if (km >= 4)
    D[3 + bs * 3] = d_33;
  return;
}


x86 assembly (clang, -O0):
<kernel_dgetrf_nn_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %edx,-0xc(%rbp)
mov    %rcx,-0x18(%rbp)
mov    %r8,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x4,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
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
cmpl   $0x0,-0xc(%rbp)
jg     11ef <kernel_dgetrf_nn_4x4_vs_lib4+0xef>
jmp    2655 <kernel_dgetrf_nn_4x4_vs_lib4+0x1555>
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0xc(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2221 <kernel_dgetrf_nn_4x4_vs_lib4+0x1121>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%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  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%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  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%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  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%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  -0x78(%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  -0x78(%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  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%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  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%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  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%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  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%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  -0x78(%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  -0x78(%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  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%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  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%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  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%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  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%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  -0x78(%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  -0x78(%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  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%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  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%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  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%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  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%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  -0x78(%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  -0x78(%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  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x24(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x20(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    11f6 <kernel_dgetrf_nn_4x4_vs_lib4+0xf6>
jmp    2226 <kernel_dgetrf_nn_4x4_vs_lib4+0x1126>
mov    -0x2c(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    2650 <kernel_dgetrf_nn_4x4_vs_lib4+0x1550>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%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  -0x50(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%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  -0x50(%rbp),%xmm0
movsd  -0x68(%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  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%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  -0x50(%rbp),%xmm0
movsd  -0x70(%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  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%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  -0x78(%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  -0x78(%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  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x20(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    2226 <kernel_dgetrf_nn_4x4_vs_lib4+0x1126>
jmp    2655 <kernel_dgetrf_nn_4x4_vs_lib4+0x1555>
cmpl   $0x0,0x10(%rbp)
je     27e8 <kernel_dgetrf_nn_4x4_vs_lib4+0x16e8>
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x810(%rip),%xmm0
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x80(%rbp),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2890 <kernel_dgetrf_nn_4x4_vs_lib4+0x1790>
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x88(%rbp),%xmm2
ff
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  -0xc0(%rbp),%xmm0
ff
movsd  -0x88(%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  -0xe0(%rbp),%xmm0
ff
movsd  -0x88(%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  0x6ab(%rip),%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     29e8 <kernel_dgetrf_nn_4x4_vs_lib4+0x18e8>
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm2
ff
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  -0xc0(%rbp),%xmm0
ff
movsd  -0x90(%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  -0xe0(%rbp),%xmm0
ff
movsd  -0x90(%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  -0xc8(%rbp),%xmm0
ff
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  -0xe8(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  0x4d5(%rip),%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2ba9 <kernel_dgetrf_nn_4x4_vs_lib4+0x1aa9>
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
cmpl   $0x4,-0x8(%rbp)
jge    2bb8 <kernel_dgetrf_nn_4x4_vs_lib4+0x1ab8>
jmp    2da8 <kernel_dgetrf_nn_4x4_vs_lib4+0x1ca8>
movsd  -0xa0(%rbp),%xmm0
ff
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  -0xc0(%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  -0xe0(%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  -0xc8(%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  -0xe8(%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  -0xf0(%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  0x2c6(%rip),%xmm0
divsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
cmpl   $0x4,-0x4(%rbp)
jl     2da3 <kernel_dgetrf_nn_4x4_vs_lib4+0x1ca3>
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2da8 <kernel_dgetrf_nn_4x4_vs_lib4+0x1ca8>
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dgetrf_nn_4x4_vs_lib4>:
sub    $0x88,%rsp
mov    0x90(%rsp),%r10d
test   %edx,%edx
jle    17e3 <kernel_dgetrf_nn_4x4_vs_lib4+0x6e3>
cmp    $0x4,%edx
jb     1831 <kernel_dgetrf_nn_4x4_vs_lib4+0x731>
lea    -0x3(%rdx),%r11d
shl    $0x2,%r9d
movslq %r9d,%r9
shl    $0x3,%r9
xorpd  %xmm7,%xmm7
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x20(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm8,%xmm8
xorpd  %xmm12,%xmm12
xorpd  %xmm11,%xmm11
xorpd  %xmm15,%xmm15
xorpd  %xmm14,%xmm14
xorpd  %xmm10,%xmm10
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x10(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movapd %xmm7,0x70(%rsp)
movsd  (%rcx),%xmm0
movupd 0x8(%rcx),%xmm13
movsd  0x18(%rcx),%xmm1
movsd  0x20(%r8),%xmm6
movsd  0x40(%r8),%xmm2
movsd  0x60(%r8),%xmm3
movsd  %xmm3,(%rsp)
movsd  (%r8),%xmm3
movapd %xmm0,%xmm5
mulsd  %xmm3,%xmm5
movsd  -0x10(%rsp),%xmm4
subsd  %xmm5,%xmm4
movsd  %xmm4,-0x10(%rsp)
movapd %xmm13,%xmm4
movapd 0xdfa(%rip),%xmm5
xorpd  %xmm5,%xmm4
movapd %xmm1,%xmm5
mulsd  %xmm3,%xmm5
unpcklpd %xmm3,%xmm3
movapd %xmm3,0x50(%rsp)
mulpd  %xmm3,%xmm13
subpd  %xmm13,%xmm7
movapd -0x60(%rsp),%xmm3
subsd  %xmm5,%xmm3
movapd %xmm3,-0x60(%rsp)
movapd %xmm0,%xmm3
mulsd  %xmm6,%xmm3
movsd  -0x30(%rsp),%xmm5
subsd  %xmm3,%xmm5
movsd  %xmm5,-0x30(%rsp)
movapd %xmm4,%xmm3
mulsd  %xmm6,%xmm3
addsd  %xmm10,%xmm3
movapd %xmm3,-0x40(%rsp)
pshufd $0xee,%xmm4,%xmm13
movdqa %xmm13,%xmm3
mulsd  %xmm6,%xmm3
addsd  %xmm11,%xmm3
movapd %xmm3,0x10(%rsp)
movsd  0x8(%r8),%xmm9
mulsd  %xmm1,%xmm6
movapd -0x20(%rsp),%xmm3
subsd  %xmm6,%xmm3
movapd %xmm3,-0x20(%rsp)
movapd %xmm0,%xmm5
mulsd  %xmm2,%xmm5
movsd  -0x50(%rsp),%xmm3
subsd  %xmm5,%xmm3
movsd  %xmm3,-0x50(%rsp)
movapd %xmm4,%xmm11
mulsd  %xmm2,%xmm11
addsd  %xmm14,%xmm11
movdqa %xmm13,%xmm10
mulsd  %xmm2,%xmm10
addsd  %xmm12,%xmm10
mulsd  %xmm1,%xmm2
movsd  -0x68(%rsp),%xmm3
subsd  %xmm2,%xmm3
movsd  %xmm3,-0x68(%rsp)
movsd  (%rsp),%xmm3
mulsd  %xmm3,%xmm0
movsd  -0x70(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,-0x70(%rsp)
movaps %xmm4,0x60(%rsp)
movapd %xmm4,%xmm12
mulsd  %xmm3,%xmm12
addsd  %xmm15,%xmm12
mulsd  %xmm3,%xmm13
addsd  %xmm8,%xmm13
movapd %xmm13,0x20(%rsp)
mulsd  %xmm3,%xmm1
movsd  -0x78(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rsp)
movsd  0x20(%rcx),%xmm3
movupd 0x28(%rcx),%xmm0
movsd  0x38(%rcx),%xmm15
movsd  0x28(%r8),%xmm5
movapd %xmm3,%xmm2
mulsd  %xmm9,%xmm2
movsd  -0x10(%rsp),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,-0x10(%rsp)
movapd %xmm0,%xmm1
xorpd  0xc94(%rip),%xmm1
movapd %xmm15,%xmm2
mulsd  %xmm9,%xmm2
unpcklpd %xmm9,%xmm9
movapd %xmm9,0x40(%rsp)
mulpd  %xmm9,%xmm0
subpd  %xmm0,%xmm7
movapd -0x60(%rsp),%xmm0
subsd  %xmm2,%xmm0
movapd %xmm0,-0x60(%rsp)
movapd %xmm3,%xmm0
mulsd  %xmm5,%xmm0
movsd  -0x30(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,-0x30(%rsp)
movapd %xmm1,%xmm0
mulsd  %xmm5,%xmm0
addsd  -0x40(%rsp),%xmm0
movapd %xmm0,(%rsp)
pshufd $0xee,%xmm1,%xmm8
movdqa %xmm8,%xmm0
mulsd  %xmm5,%xmm0
addsd  0x10(%rsp),%xmm0
movapd %xmm0,-0x40(%rsp)
movsd  0x48(%r8),%xmm6
mulsd  %xmm15,%xmm5
movapd -0x20(%rsp),%xmm0
subsd  %xmm5,%xmm0
movapd %xmm0,-0x20(%rsp)
movapd %xmm3,%xmm5
mulsd  %xmm6,%xmm5
movsd  -0x50(%rsp),%xmm4
subsd  %xmm5,%xmm4
movsd  %xmm4,-0x50(%rsp)
movapd %xmm1,%xmm14
mulsd  %xmm6,%xmm14
addsd  %xmm11,%xmm14
movdqa %xmm8,%xmm13
mulsd  %xmm6,%xmm13
addsd  %xmm10,%xmm13
movsd  0x68(%r8),%xmm4
mulsd  %xmm15,%xmm6
movsd  -0x68(%rsp),%xmm0
subsd  %xmm6,%xmm0
mulsd  %xmm4,%xmm3
movsd  -0x70(%rsp),%xmm6
subsd  %xmm3,%xmm6
movaps %xmm1,0x10(%rsp)
movapd %xmm1,%xmm10
mulsd  %xmm4,%xmm10
addsd  %xmm12,%xmm10
mulsd  %xmm4,%xmm8
addsd  0x20(%rsp),%xmm8
mulsd  %xmm4,%xmm15
movsd  -0x78(%rsp),%xmm1
subsd  %xmm15,%xmm1
movsd  %xmm1,-0x78(%rsp)
movsd  0x40(%rcx),%xmm4
movupd 0x48(%rcx),%xmm1
movsd  0x58(%rcx),%xmm15
movsd  0x10(%r8),%xmm5
movapd %xmm4,%xmm3
mulsd  %xmm5,%xmm3
movsd  -0x10(%rsp),%xmm2
subsd  %xmm3,%xmm2
movsd  %xmm2,-0x10(%rsp)
movapd %xmm15,%xmm3
mulsd  %xmm5,%xmm3
unpcklpd %xmm5,%xmm5
movapd %xmm1,%xmm9
movapd %xmm5,0x30(%rsp)
mulpd  %xmm5,%xmm1
subpd  %xmm1,%xmm7
movapd -0x60(%rsp),%xmm1
subsd  %xmm3,%xmm1
movapd %xmm1,-0x60(%rsp)
movsd  0x30(%r8),%xmm3
movapd %xmm4,%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x30(%rsp),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x30(%rsp)
movapd 0xaf1(%rip),%xmm1
xorpd  %xmm1,%xmm9
movapd %xmm9,%xmm11
mulsd  %xmm3,%xmm11
addsd  (%rsp),%xmm11
pshufd $0xee,%xmm9,%xmm1
movdqa %xmm1,%xmm2
movdqa %xmm1,%xmm5
mulsd  %xmm3,%xmm2
addsd  -0x40(%rsp),%xmm2
movapd %xmm2,(%rsp)
mulsd  %xmm15,%xmm3
movapd -0x20(%rsp),%xmm1
subsd  %xmm3,%xmm1
movapd %xmm1,-0x20(%rsp)
movsd  0x50(%r8),%xmm3
movapd %xmm4,%xmm2
mulsd  %xmm3,%xmm2
movsd  -0x50(%rsp),%xmm1
subsd  %xmm2,%xmm1
movsd  %xmm1,-0x50(%rsp)
movapd %xmm9,%xmm12
mulsd  %xmm3,%xmm12
addsd  %xmm14,%xmm12
movdqa %xmm5,%xmm1
movdqa %xmm5,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm13,%xmm2
movapd %xmm2,0x20(%rsp)
mulsd  %xmm15,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x68(%rsp)
movsd  0x70(%r8),%xmm3
mulsd  %xmm3,%xmm4
subsd  %xmm4,%xmm6
movsd  %xmm6,-0x70(%rsp)
movapd %xmm9,%xmm5
mulsd  %xmm3,%xmm5
addsd  %xmm10,%xmm5
mulsd  %xmm3,%xmm1
addsd  %xmm8,%xmm1
movapd %xmm1,-0x40(%rsp)
mulsd  %xmm3,%xmm15
movsd  -0x78(%rsp),%xmm0
subsd  %xmm15,%xmm0
movsd  %xmm0,-0x78(%rsp)
movsd  0x60(%rcx),%xmm6
movsd  0x18(%r8),%xmm13
movapd %xmm6,%xmm0
mulsd  %xmm13,%xmm0
movsd  -0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x10(%rsp)
movsd  0x78(%rcx),%xmm0
movapd %xmm0,%xmm4
mulsd  %xmm13,%xmm4
unpcklpd %xmm13,%xmm13
movupd 0x68(%rcx),%xmm3
movapd %xmm3,%xmm2
mulpd  %xmm13,%xmm3
subpd  %xmm3,%xmm7
movapd -0x60(%rsp),%xmm1
subsd  %xmm4,%xmm1
movapd %xmm1,-0x60(%rsp)
movsd  0x38(%r8),%xmm3
movapd %xmm6,%xmm4
mulsd  %xmm3,%xmm4
movsd  -0x30(%rsp),%xmm1
subsd  %xmm4,%xmm1
movsd  %xmm1,-0x30(%rsp)
xorpd  0x991(%rip),%xmm2
movapd %xmm2,%xmm10
mulsd  %xmm3,%xmm10
addsd  %xmm11,%xmm10
pshufd $0xee,%xmm2,%xmm8
movdqa %xmm8,%xmm11
mulsd  %xmm3,%xmm11
addsd  (%rsp),%xmm11
mulsd  %xmm0,%xmm3
movapd -0x20(%rsp),%xmm1
subsd  %xmm3,%xmm1
movapd %xmm1,-0x20(%rsp)
movsd  0x58(%r8),%xmm1
movapd %xmm6,%xmm3
mulsd  %xmm1,%xmm3
movsd  -0x50(%rsp),%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,-0x50(%rsp)
movapd %xmm2,%xmm14
mulsd  %xmm1,%xmm14
addsd  %xmm12,%xmm14
movdqa %xmm8,%xmm12
mulsd  %xmm1,%xmm12
addsd  0x20(%rsp),%xmm12
movapd %xmm2,%xmm3
mulsd  %xmm0,%xmm1
movsd  -0x68(%rsp),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x68(%rsp)
movsd  0x78(%r8),%xmm1
mulsd  %xmm1,%xmm6
movsd  -0x70(%rsp),%xmm2
subsd  %xmm6,%xmm2
movsd  %xmm2,-0x70(%rsp)
movapd %xmm3,%xmm15
mulsd  %xmm1,%xmm15
addsd  %xmm5,%xmm15
mulsd  %xmm1,%xmm8
addsd  -0x40(%rsp),%xmm8
mulsd  %xmm1,%xmm0
movsd  -0x78(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x78(%rsp)
sub    $0xffffffffffffff80,%rcx
add    $0x4,%eax
add    %r9,%r8
cmp    %r11d,%eax
jl     11b0 <kernel_dgetrf_nn_4x4_vs_lib4+0xb0>
movapd %xmm14,-0x40(%rsp)
movapd 0x60(%rsp),%xmm0
mulpd  0x50(%rsp),%xmm0
addpd  0x70(%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
mulpd  0x40(%rsp),%xmm1
addpd  %xmm0,%xmm1
mulpd  0x30(%rsp),%xmm9
addpd  %xmm1,%xmm9
mulpd  %xmm13,%xmm3
addpd  %xmm9,%xmm3
mov    %edx,%eax
and    $0xfffffffc,%eax
movsd  -0x70(%rsp),%xmm5
movsd  -0x78(%rsp),%xmm14
movsd  -0x50(%rsp),%xmm9
movsd  -0x68(%rsp),%xmm13
movsd  -0x30(%rsp),%xmm6
movapd -0x60(%rsp),%xmm7
movsd  -0x10(%rsp),%xmm1
movapd -0x20(%rsp),%xmm4
movapd %xmm10,%xmm2
cmp    %edx,%eax
jl     1884 <kernel_dgetrf_nn_4x4_vs_lib4+0x784>
jmp    1ab5 <kernel_dgetrf_nn_4x4_vs_lib4+0x9b5>
xorpd  %xmm3,%xmm3
xorpd  %xmm1,%xmm1
xorpd  %xmm6,%xmm6
xorpd  %xmm9,%xmm9
xorpd  %xmm5,%xmm5
xorpd  %xmm2,%xmm2
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
xorpd  %xmm15,%xmm15
xorpd  %xmm11,%xmm11
xorpd  %xmm12,%xmm12
xorpd  %xmm8,%xmm8
xorpd  %xmm7,%xmm7
xorpd  %xmm4,%xmm4
xorpd  %xmm13,%xmm13
xorpd  %xmm14,%xmm14
jmp    1ab5 <kernel_dgetrf_nn_4x4_vs_lib4+0x9b5>
xorpd  %xmm3,%xmm3
xorpd  %xmm1,%xmm1
xor    %eax,%eax
xorpd  %xmm6,%xmm6
xorpd  %xmm9,%xmm9
xorpd  %xmm5,%xmm5
xorpd  %xmm2,%xmm2
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
xorpd  %xmm15,%xmm15
xorpd  %xmm11,%xmm11
xorpd  %xmm12,%xmm12
xorpd  %xmm8,%xmm8
xorpd  %xmm7,%xmm7
xorpd  %xmm4,%xmm4
xorpd  %xmm13,%xmm13
xorpd  %xmm14,%xmm14
cmp    %edx,%eax
jge    1ab5 <kernel_dgetrf_nn_4x4_vs_lib4+0x9b5>
sub    %eax,%edx
xor    %eax,%eax
movapd %xmm6,%xmm10
movapd %xmm15,-0x60(%rsp)
movapd %xmm5,%xmm0
movapd %xmm12,%xmm5
movapd %xmm11,%xmm15
movapd %xmm7,%xmm11
movsd  %xmm14,-0x78(%rsp)
movapd %xmm3,%xmm12
movapd %xmm4,-0x20(%rsp)
movapd %xmm2,-0x30(%rsp)
movsd  %xmm13,-0x68(%rsp)
movapd %xmm1,%xmm14
movsd  %xmm0,-0x70(%rsp)
movapd %xmm8,%xmm3
movapd -0x40(%rsp),%xmm8
nopl   (%rax)
movapd %xmm3,-0x50(%rsp)
movapd %xmm12,-0x10(%rsp)
movsd  (%rcx),%xmm6
movupd 0x8(%rcx),%xmm3
movsd  0x18(%rcx),%xmm0
movsd  (%r8,%rax,8),%xmm4
movsd  0x20(%r8,%rax,8),%xmm2
movapd %xmm6,%xmm1
mulsd  %xmm4,%xmm1
subsd  %xmm1,%xmm14
movapd %xmm3,%xmm1
xorpd  0x6df(%rip),%xmm1
movapd %xmm0,%xmm7
mulsd  %xmm4,%xmm7
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm3
subpd  %xmm3,%xmm12
subsd  %xmm7,%xmm11
movapd %xmm6,%xmm3
mulsd  %xmm2,%xmm3
subsd  %xmm3,%xmm10
movapd %xmm1,%xmm3
mulsd  %xmm2,%xmm3
movapd -0x30(%rsp),%xmm7
addsd  %xmm3,%xmm7
movapd %xmm7,-0x30(%rsp)
pshufd $0xee,%xmm1,%xmm7
movdqa %xmm7,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm3,%xmm15
movsd  0x40(%r8,%rax,8),%xmm3
mulsd  %xmm0,%xmm2
movapd %xmm11,%xmm13
movapd %xmm10,%xmm11
movapd %xmm15,%xmm10
movapd %xmm9,%xmm15
movapd -0x20(%rsp),%xmm9
subsd  %xmm2,%xmm9
movapd %xmm9,-0x20(%rsp)
movapd %xmm15,%xmm9
movapd %xmm10,%xmm15
movapd %xmm11,%xmm10
movapd %xmm13,%xmm11
movapd %xmm6,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm9
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm8
movdqa %xmm7,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm2,%xmm5
mulsd  %xmm0,%xmm3
movsd  -0x68(%rsp),%xmm2
subsd  %xmm3,%xmm2
movsd  %xmm2,-0x68(%rsp)
movsd  0x60(%r8,%rax,8),%xmm2
mulsd  %xmm2,%xmm6
movsd  -0x70(%rsp),%xmm3
subsd  %xmm6,%xmm3
movsd  %xmm3,-0x70(%rsp)
movapd %xmm1,%xmm3
mulsd  %xmm2,%xmm3
movapd -0x60(%rsp),%xmm6
addsd  %xmm3,%xmm6
movapd -0x50(%rsp),%xmm3
movapd %xmm6,-0x60(%rsp)
mulsd  %xmm2,%xmm7
addsd  %xmm7,%xmm3
mulsd  %xmm2,%xmm0
movsd  -0x78(%rsp),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,-0x78(%rsp)
add    $0x1,%rax
add    $0x20,%rcx
cmp    %eax,%edx
jne    18e0 <kernel_dgetrf_nn_4x4_vs_lib4+0x7e0>
movapd %xmm8,-0x40(%rsp)
mulpd  %xmm4,%xmm1
addpd  -0x10(%rsp),%xmm1
movapd %xmm1,%xmm0
movapd %xmm10,%xmm6
movapd %xmm11,%xmm7
movapd %xmm14,%xmm1
movapd %xmm3,%xmm8
movapd %xmm15,%xmm11
movapd %xmm5,%xmm12
movapd -0x30(%rsp),%xmm2
movapd -0x60(%rsp),%xmm15
movapd %xmm0,%xmm3
movsd  -0x70(%rsp),%xmm5
movapd -0x20(%rsp),%xmm4
movsd  -0x78(%rsp),%xmm14
movsd  -0x68(%rsp),%xmm13
mov    0xa8(%rsp),%rcx
mov    0xa0(%rsp),%rax
test   %r10d,%r10d
je     1b43 <kernel_dgetrf_nn_4x4_vs_lib4+0xa43>
mov    0x98(%rsp),%rdx
addsd  (%rdx),%xmm1
movupd 0x8(%rdx),%xmm0
addpd  %xmm0,%xmm3
addsd  0x18(%rdx),%xmm7
addsd  0x20(%rdx),%xmm6
addsd  0x28(%rdx),%xmm2
addsd  0x30(%rdx),%xmm11
addsd  0x38(%rdx),%xmm4
addsd  0x40(%rdx),%xmm9
movapd -0x40(%rsp),%xmm0
addsd  0x48(%rdx),%xmm0
movapd %xmm0,-0x40(%rsp)
addsd  0x50(%rdx),%xmm12
addsd  0x58(%rdx),%xmm13
addsd  0x60(%rdx),%xmm5
addsd  0x68(%rdx),%xmm15
movapd %xmm15,-0x60(%rsp)
addsd  0x70(%rdx),%xmm8
movapd %xmm8,-0x50(%rsp)
addsd  0x78(%rdx),%xmm14
jmp    1b51 <kernel_dgetrf_nn_4x4_vs_lib4+0xa51>
movapd %xmm15,-0x60(%rsp)
movapd %xmm8,-0x50(%rsp)
movapd %xmm5,%xmm8
movsd  %xmm14,-0x78(%rsp)
movapd %xmm9,%xmm10
movsd  0x4a5(%rip),%xmm15
movapd %xmm15,%xmm0
divsd  %xmm1,%xmm0
mulsd  %xmm0,%xmm7
movsd  %xmm0,(%rcx)
unpcklpd %xmm0,%xmm0
mulpd  %xmm3,%xmm0
movsd  %xmm1,(%rax)
movupd %xmm0,0x8(%rax)
cmp    $0x4,%edi
jl     1b97 <kernel_dgetrf_nn_4x4_vs_lib4+0xa97>
movsd  %xmm7,0x18(%rax)
movapd 0x460(%rip),%xmm9
movapd %xmm0,%xmm1
xorpd  %xmm9,%xmm1
movapd %xmm0,%xmm3
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm2
unpckhpd %xmm0,%xmm0
movapd %xmm0,%xmm3
xorpd  %xmm9,%xmm3
mulsd  %xmm6,%xmm0
subsd  %xmm0,%xmm11
movapd %xmm7,%xmm5
xorpd  %xmm9,%xmm5
mulsd  %xmm6,%xmm7
subsd  %xmm7,%xmm4
movapd %xmm15,%xmm0
divsd  %xmm2,%xmm0
mulsd  %xmm0,%xmm11
mulsd  %xmm0,%xmm4
movsd  %xmm0,0x8(%rcx)
movsd  %xmm6,0x20(%rax)
movsd  %xmm2,0x28(%rax)
movsd  %xmm11,0x30(%rax)
cmp    $0x4,%edi
movapd -0x40(%rsp),%xmm0
jl     1c13 <kernel_dgetrf_nn_4x4_vs_lib4+0xb13>
movsd  %xmm4,0x38(%rax)
movapd %xmm1,%xmm6
mulsd  %xmm10,%xmm6
addsd  %xmm0,%xmm6
movapd %xmm3,%xmm7
mulsd  %xmm10,%xmm7
addsd  %xmm12,%xmm7
movapd %xmm5,%xmm0
mulsd  %xmm10,%xmm0
addsd  %xmm13,%xmm0
movapd %xmm11,%xmm2
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm7
movapd %xmm4,%xmm2
mulsd  %xmm6,%xmm2
subsd  %xmm2,%xmm0
movapd %xmm15,%xmm2
divsd  %xmm7,%xmm2
mulsd  %xmm2,%xmm0
movsd  %xmm2,0x10(%rcx)
movsd  %xmm10,0x40(%rax)
movsd  %xmm6,0x48(%rax)
movsd  %xmm7,0x50(%rax)
cmp    $0x4,%edi
jl     1c81 <kernel_dgetrf_nn_4x4_vs_lib4+0xb81>
movsd  %xmm0,0x58(%rax)
cmp    $0x4,%esi
jl     1cf2 <kernel_dgetrf_nn_4x4_vs_lib4+0xbf2>
xorpd  %xmm9,%xmm11
xorpd  %xmm9,%xmm4
mulsd  %xmm8,%xmm1
addsd  -0x60(%rsp),%xmm1
mulsd  %xmm8,%xmm3
addsd  -0x50(%rsp),%xmm3
mulsd  %xmm8,%xmm5
addsd  -0x78(%rsp),%xmm5
mulsd  %xmm1,%xmm11
addsd  %xmm3,%xmm11
mulsd  %xmm1,%xmm4
addsd  %xmm5,%xmm4
mulsd  %xmm11,%xmm0
subsd  %xmm0,%xmm4
divsd  %xmm4,%xmm15
movsd  %xmm15,0x18(%rcx)
movsd  %xmm8,0x60(%rax)
movsd  %xmm1,0x68(%rax)
movsd  %xmm11,0x70(%rax)
cmp    $0x4,%edi
jl     1cf2 <kernel_dgetrf_nn_4x4_vs_lib4+0xbf2>
movsd  %xmm4,0x78(%rax)
add    $0x88,%rsp
ret

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

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