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


x86 assembly (clang, -O0):
<kernel_dgetrf_nn_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9,-0x28(%rbp)
movl   $0x4,-0x2c(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-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,-0x4(%rbp)
jg     11e9 <kernel_dgetrf_nn_4x4_lib4+0xe9>
jmp    264f <kernel_dgetrf_nn_4x4_lib4+0x154f>
movl   $0x0,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    221b <kernel_dgetrf_nn_4x4_lib4+0x111b>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -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    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -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    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -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    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -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    -0x10(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x10(%rbp)
mov    -0x1c(%rbp),%ecx
shl    $0x2,%ecx
mov    -0x18(%rbp),%rax
movslq %ecx,%rcx
shl    $0x3,%rcx
add    %rcx,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    11f0 <kernel_dgetrf_nn_4x4_lib4+0xf0>
jmp    2220 <kernel_dgetrf_nn_4x4_lib4+0x1120>
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    264a <kernel_dgetrf_nn_4x4_lib4+0x154a>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -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    -0x10(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x8,%rax
mov    %rax,-0x18(%rbp)
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    2220 <kernel_dgetrf_nn_4x4_lib4+0x1120>
jmp    264f <kernel_dgetrf_nn_4x4_lib4+0x154f>
cmpl   $0x0,-0x20(%rbp)
je     27e2 <kernel_dgetrf_nn_4x4_lib4+0x16e2>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
addsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
addsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x18(%rax),%xmm0
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x20(%rax),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x28(%rax),%xmm0
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x30(%rax),%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
mov    -0x28(%rbp),%rax
movsd  0x38(%rax),%xmm0
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x40(%rax),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x48(%rax),%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x50(%rax),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x58(%rax),%xmm0
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x60(%rax),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x68(%rax),%xmm0
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x70(%rax),%xmm0
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x78(%rax),%xmm0
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x816(%rip),%xmm0
divsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
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    0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x80(%rbp),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    0x10(%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  0x6bb(%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    0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    0x10(%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  0x4ef(%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    0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x58(%rax)
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  0x2f9(%rip),%xmm0
divsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
mov    0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    0x10(%rbp),%rax
movsd  %xmm0,0x78(%rax)
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dgetrf_nn_4x4_lib4>:
sub    $0x78,%rsp
test   %edi,%edi
jle    17c6 <kernel_dgetrf_nn_4x4_lib4+0x6c6>
cmp    $0x4,%edi
jb     181b <kernel_dgetrf_nn_4x4_lib4+0x71b>
lea    -0x3(%rdi),%r10d
shl    $0x2,%ecx
movslq %ecx,%rcx
shl    $0x3,%rcx
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
xor    %eax,%eax
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm10,%xmm10
xorpd  %xmm6,%xmm6
xorpd  %xmm8,%xmm8
xorpd  %xmm9,%xmm9
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x70(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x20(%rsp)
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x68(%rsp)
xorpd  %xmm13,%xmm13
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movapd %xmm6,-0x30(%rsp)
movapd -0x40(%rsp),%xmm0
movapd %xmm0,0x60(%rsp)
movapd %xmm0,%xmm1
movsd  (%rsi),%xmm3
movupd 0x8(%rsi),%xmm5
movsd  0x18(%rsi),%xmm7
movsd  0x20(%rdx),%xmm11
movsd  0x40(%rdx),%xmm2
movsd  0x60(%rdx),%xmm0
movsd  %xmm0,(%rsp)
movsd  (%rdx),%xmm4
movapd %xmm3,%xmm6
mulsd  %xmm4,%xmm6
movsd  -0x68(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x68(%rsp)
movapd %xmm5,%xmm12
movapd 0xdfe(%rip),%xmm6
xorpd  %xmm6,%xmm12
movapd %xmm6,%xmm0
movapd %xmm7,%xmm6
mulsd  %xmm4,%xmm6
unpcklpd %xmm4,%xmm4
movapd %xmm4,0x40(%rsp)
mulpd  %xmm4,%xmm5
subpd  %xmm5,%xmm1
movapd %xmm1,-0x40(%rsp)
movapd %xmm7,%xmm5
xorpd  %xmm0,%xmm5
movapd -0x60(%rsp),%xmm0
subsd  %xmm6,%xmm0
movapd %xmm0,-0x60(%rsp)
movapd %xmm3,%xmm6
mulsd  %xmm11,%xmm6
movapd -0x20(%rsp),%xmm0
subsd  %xmm6,%xmm0
movapd %xmm0,-0x20(%rsp)
movapd %xmm12,%xmm15
mulsd  %xmm11,%xmm15
addsd  %xmm14,%xmm15
movapd %xmm12,%xmm6
shufpd $0x1,%xmm5,%xmm6
movsd  0x8(%rdx),%xmm14
unpcklpd %xmm11,%xmm11
mulpd  %xmm6,%xmm11
movapd %xmm8,%xmm4
pshufd $0xee,%xmm12,%xmm1
addpd  %xmm13,%xmm11
movapd %xmm3,%xmm5
mulsd  %xmm2,%xmm5
movsd  -0x70(%rsp),%xmm0
subsd  %xmm5,%xmm0
movsd  %xmm0,-0x70(%rsp)
movapd %xmm12,%xmm13
mulsd  %xmm2,%xmm13
addsd  %xmm9,%xmm13
movdqa %xmm1,%xmm6
mulsd  %xmm2,%xmm6
addsd  -0x30(%rsp),%xmm6
mulsd  %xmm7,%xmm2
movsd  -0x50(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x50(%rsp)
movsd  (%rsp),%xmm0
mulsd  %xmm0,%xmm3
movsd  -0x80(%rsp),%xmm2
subsd  %xmm3,%xmm2
movsd  %xmm2,-0x80(%rsp)
movaps %xmm12,0x50(%rsp)
movapd %xmm12,%xmm8
mulsd  %xmm0,%xmm8
addsd  %xmm4,%xmm8
mulsd  %xmm0,%xmm1
addsd  %xmm10,%xmm1
movapd %xmm1,-0x30(%rsp)
mulsd  %xmm0,%xmm7
movsd  -0x78(%rsp),%xmm0
subsd  %xmm7,%xmm0
movapd %xmm0,%xmm10
movsd  0x20(%rsi),%xmm5
movupd 0x28(%rsi),%xmm3
movsd  0x38(%rsi),%xmm4
movsd  0x28(%rdx),%xmm0
movapd %xmm5,%xmm2
mulsd  %xmm14,%xmm2
movsd  -0x68(%rsp),%xmm7
subsd  %xmm2,%xmm7
movsd  %xmm7,-0x68(%rsp)
movapd %xmm3,%xmm7
movapd 0xc99(%rip),%xmm1
xorpd  %xmm1,%xmm7
movapd %xmm4,%xmm2
mulsd  %xmm14,%xmm2
unpcklpd %xmm14,%xmm14
movapd %xmm14,(%rsp)
mulpd  %xmm14,%xmm3
movapd -0x40(%rsp),%xmm9
subpd  %xmm3,%xmm9
movapd %xmm4,%xmm3
xorpd  %xmm1,%xmm3
movapd -0x60(%rsp),%xmm1
subsd  %xmm2,%xmm1
movapd %xmm1,-0x60(%rsp)
movapd %xmm5,%xmm2
mulsd  %xmm0,%xmm2
movapd -0x20(%rsp),%xmm1
subsd  %xmm2,%xmm1
movapd %xmm1,-0x20(%rsp)
movapd %xmm7,%xmm14
mulsd  %xmm0,%xmm14
addsd  %xmm15,%xmm14
movapd %xmm7,%xmm2
shufpd $0x1,%xmm3,%xmm2
movsd  0x48(%rdx),%xmm3
unpcklpd %xmm0,%xmm0
mulpd  %xmm2,%xmm0
pshufd $0xee,%xmm7,%xmm12
addpd  %xmm11,%xmm0
movapd %xmm5,%xmm1
mulsd  %xmm3,%xmm1
movsd  -0x70(%rsp),%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x70(%rsp)
movapd %xmm7,%xmm15
mulsd  %xmm3,%xmm15
addsd  %xmm13,%xmm15
movdqa %xmm12,%xmm13
mulsd  %xmm3,%xmm13
addsd  %xmm6,%xmm13
movsd  0x68(%rdx),%xmm2
mulsd  %xmm4,%xmm3
movsd  -0x50(%rsp),%xmm1
subsd  %xmm3,%xmm1
movsd  %xmm1,-0x50(%rsp)
mulsd  %xmm2,%xmm5
movsd  -0x80(%rsp),%xmm1
subsd  %xmm5,%xmm1
movsd  %xmm1,-0x80(%rsp)
movaps %xmm7,0x30(%rsp)
movapd %xmm7,%xmm6
mulsd  %xmm2,%xmm6
addsd  %xmm8,%xmm6
mulsd  %xmm2,%xmm12
addsd  -0x30(%rsp),%xmm12
mulsd  %xmm2,%xmm4
subsd  %xmm4,%xmm10
movsd  %xmm10,-0x78(%rsp)
movsd  0x40(%rsi),%xmm4
movupd 0x48(%rsi),%xmm3
movsd  0x58(%rsi),%xmm2
movsd  0x10(%rdx),%xmm7
movapd %xmm4,%xmm5
mulsd  %xmm7,%xmm5
movsd  -0x68(%rsp),%xmm1
subsd  %xmm5,%xmm1
movsd  %xmm1,-0x68(%rsp)
movapd %xmm2,%xmm5
mulsd  %xmm7,%xmm5
unpcklpd %xmm7,%xmm7
movapd %xmm3,%xmm10
movapd %xmm7,0x20(%rsp)
mulpd  %xmm7,%xmm3
subpd  %xmm3,%xmm9
movapd %xmm9,-0x40(%rsp)
movapd -0x60(%rsp),%xmm7
subsd  %xmm5,%xmm7
movsd  0x30(%rdx),%xmm11
movapd %xmm4,%xmm3
mulsd  %xmm11,%xmm3
movapd -0x20(%rsp),%xmm9
subsd  %xmm3,%xmm9
movapd 0xaff(%rip),%xmm1
xorpd  %xmm1,%xmm10
movapd %xmm10,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm14,%xmm3
movapd %xmm2,%xmm5
xorpd  %xmm1,%xmm5
movapd %xmm10,%xmm1
shufpd $0x1,%xmm5,%xmm1
unpcklpd %xmm11,%xmm11
mulpd  %xmm1,%xmm11
addpd  %xmm0,%xmm11
movapd %xmm7,%xmm14
movsd  0x50(%rdx),%xmm7
movapd %xmm4,%xmm0
mulsd  %xmm7,%xmm0
movsd  -0x70(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,-0x70(%rsp)
movapd %xmm10,%xmm8
mulsd  %xmm7,%xmm8
addsd  %xmm15,%xmm8
pshufd $0xee,%xmm10,%xmm5
movdqa %xmm5,%xmm0
mulsd  %xmm7,%xmm0
addsd  %xmm13,%xmm0
movapd %xmm0,-0x30(%rsp)
mulsd  %xmm2,%xmm7
movsd  -0x50(%rsp),%xmm0
subsd  %xmm7,%xmm0
movsd  %xmm0,-0x50(%rsp)
movsd  0x70(%rdx),%xmm7
mulsd  %xmm7,%xmm4
movsd  -0x80(%rsp),%xmm0
subsd  %xmm4,%xmm0
movsd  %xmm0,-0x80(%rsp)
movaps %xmm10,0x10(%rsp)
movapd %xmm10,%xmm13
mulsd  %xmm7,%xmm13
addsd  %xmm6,%xmm13
mulsd  %xmm7,%xmm5
addsd  %xmm12,%xmm5
mulsd  %xmm7,%xmm2
movsd  -0x78(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x78(%rsp)
movsd  0x60(%rsi),%xmm1
movsd  0x18(%rdx),%xmm12
movapd %xmm1,%xmm2
mulsd  %xmm12,%xmm2
movsd  -0x68(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x68(%rsp)
movsd  0x78(%rsi),%xmm2
movapd %xmm2,%xmm4
mulsd  %xmm12,%xmm4
unpcklpd %xmm12,%xmm12
movupd 0x68(%rsi),%xmm6
movapd %xmm6,%xmm15
mulpd  %xmm12,%xmm6
movapd -0x40(%rsp),%xmm0
subpd  %xmm6,%xmm0
movapd %xmm0,-0x40(%rsp)
subsd  %xmm4,%xmm14
movapd %xmm14,-0x60(%rsp)
movsd  0x38(%rdx),%xmm7
movapd %xmm1,%xmm6
mulsd  %xmm7,%xmm6
subsd  %xmm6,%xmm9
movapd %xmm9,-0x20(%rsp)
movapd 0x99e(%rip),%xmm0
xorpd  %xmm0,%xmm15
movapd %xmm15,%xmm14
mulsd  %xmm7,%xmm14
addsd  %xmm3,%xmm14
movapd %xmm2,%xmm3
xorpd  %xmm0,%xmm3
movapd %xmm15,%xmm6
shufpd $0x1,%xmm3,%xmm6
unpcklpd %xmm7,%xmm7
mulpd  %xmm6,%xmm7
movsd  0x58(%rdx),%xmm3
movapd %xmm1,%xmm6
mulsd  %xmm3,%xmm6
movsd  -0x70(%rsp),%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,-0x70(%rsp)
movapd %xmm15,%xmm9
mulsd  %xmm3,%xmm9
addsd  %xmm8,%xmm9
pshufd $0xee,%xmm15,%xmm10
movdqa %xmm10,%xmm6
mulsd  %xmm3,%xmm6
addsd  -0x30(%rsp),%xmm6
mulsd  %xmm2,%xmm3
movsd  -0x50(%rsp),%xmm0
subsd  %xmm3,%xmm0
movsd  %xmm0,-0x50(%rsp)
movsd  0x78(%rdx),%xmm0
mulsd  %xmm0,%xmm1
movsd  -0x80(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  %xmm3,-0x80(%rsp)
movapd %xmm15,%xmm8
mulsd  %xmm0,%xmm8
addsd  %xmm13,%xmm8
mulsd  %xmm0,%xmm10
addsd  %xmm5,%xmm10
mulsd  %xmm0,%xmm2
movsd  -0x78(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,-0x78(%rsp)
movapd %xmm7,%xmm13
addpd  %xmm11,%xmm13
sub    $0xffffffffffffff80,%rsi
add    $0x4,%eax
add    %rcx,%rdx
cmp    %r10d,%eax
jl     11a0 <kernel_dgetrf_nn_4x4_lib4+0xa0>
movapd %xmm9,-0x10(%rsp)
addpd  %xmm11,%xmm7
movapd 0x50(%rsp),%xmm0
mulpd  0x40(%rsp),%xmm0
addpd  0x60(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
mulpd  (%rsp),%xmm1
addpd  %xmm0,%xmm1
movapd 0x10(%rsp),%xmm0
mulpd  0x20(%rsp),%xmm0
addpd  %xmm1,%xmm0
mulpd  %xmm12,%xmm15
addpd  %xmm0,%xmm15
mov    %edi,%eax
and    $0xfffffffc,%eax
movsd  -0x78(%rsp),%xmm13
movsd  -0x70(%rsp),%xmm12
movsd  -0x50(%rsp),%xmm4
movapd -0x20(%rsp),%xmm5
movsd  -0x68(%rsp),%xmm2
movapd %xmm8,%xmm11
cmp    %edi,%eax
jl     1875 <kernel_dgetrf_nn_4x4_lib4+0x775>
jmp    1ab7 <kernel_dgetrf_nn_4x4_lib4+0x9b7>
xorpd  %xmm15,%xmm15
xorpd  %xmm2,%xmm2
xorpd  %xmm5,%xmm5
xorpd  %xmm12,%xmm12
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x10(%rsp)
xorpd  %xmm11,%xmm11
xorpd  %xmm6,%xmm6
xorpd  %xmm10,%xmm10
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm4,%xmm4
xorpd  %xmm13,%xmm13
xorpd  %xmm7,%xmm7
jmp    1ab7 <kernel_dgetrf_nn_4x4_lib4+0x9b7>
xorpd  %xmm15,%xmm15
xorpd  %xmm2,%xmm2
xor    %eax,%eax
xorpd  %xmm5,%xmm5
xorpd  %xmm12,%xmm12
xorpd  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rsp)
xorpd  %xmm14,%xmm14
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x10(%rsp)
xorpd  %xmm11,%xmm11
xorpd  %xmm6,%xmm6
xorpd  %xmm10,%xmm10
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm4,%xmm4
xorpd  %xmm13,%xmm13
xorpd  %xmm7,%xmm7
cmp    %edi,%eax
jge    1ab7 <kernel_dgetrf_nn_4x4_lib4+0x9b7>
sub    %eax,%edi
xor    %eax,%eax
movapd %xmm11,-0x40(%rsp)
movapd %xmm15,%xmm11
movsd  %xmm12,-0x70(%rsp)
movapd %xmm10,%xmm12
movapd -0x60(%rsp),%xmm10
movapd %xmm14,-0x50(%rsp)
movapd -0x10(%rsp),%xmm15
movapd %xmm6,-0x30(%rsp)
movapd %xmm4,%xmm9
movapd %xmm7,%xmm8
movapd %xmm5,%xmm4
movapd 0x73d(%rip),%xmm14
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm13,-0x78(%rsp)
movapd %xmm11,-0x60(%rsp)
movsd  (%rsi),%xmm0
movupd 0x8(%rsi),%xmm6
movsd  0x18(%rsi),%xmm13
movsd  (%rdx,%rax,8),%xmm7
movsd  0x20(%rdx,%rax,8),%xmm3
movsd  0x40(%rdx,%rax,8),%xmm5
movapd %xmm0,%xmm1
mulsd  %xmm7,%xmm1
subsd  %xmm1,%xmm2
movsd  %xmm2,-0x68(%rsp)
movapd %xmm6,%xmm1
xorpd  %xmm14,%xmm1
movapd %xmm13,%xmm2
mulsd  %xmm7,%xmm2
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm6
subpd  %xmm6,%xmm11
movapd %xmm13,%xmm6
xorpd  %xmm14,%xmm6
subsd  %xmm2,%xmm10
movapd %xmm0,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm2,%xmm4
movapd %xmm4,-0x20(%rsp)
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
movapd -0x50(%rsp),%xmm4
addsd  %xmm2,%xmm4
movapd %xmm4,-0x50(%rsp)
movapd %xmm1,%xmm2
shufpd $0x1,%xmm6,%xmm2
pshufd $0xee,%xmm1,%xmm6
unpcklpd %xmm3,%xmm3
mulpd  %xmm2,%xmm3
movapd %xmm0,%xmm2
mulsd  %xmm5,%xmm2
movapd %xmm10,%xmm4
movapd %xmm9,%xmm10
movapd %xmm12,%xmm9
movsd  -0x70(%rsp),%xmm12
subsd  %xmm2,%xmm12
movsd  %xmm12,-0x70(%rsp)
movapd %xmm9,%xmm12
movapd %xmm10,%xmm9
movapd %xmm4,%xmm10
movapd %xmm1,%xmm2
mulsd  %xmm5,%xmm2
addsd  %xmm2,%xmm15
movdqa %xmm6,%xmm2
mulsd  %xmm5,%xmm2
movapd -0x30(%rsp),%xmm4
addsd  %xmm2,%xmm4
movapd %xmm4,-0x30(%rsp)
mulsd  %xmm13,%xmm5
subsd  %xmm5,%xmm9
movsd  0x60(%rdx,%rax,8),%xmm2
mulsd  %xmm2,%xmm0
movsd  -0x80(%rsp),%xmm5
subsd  %xmm0,%xmm5
movsd  %xmm5,-0x80(%rsp)
movapd %xmm1,%xmm0
mulsd  %xmm2,%xmm0
movapd -0x40(%rsp),%xmm4
addsd  %xmm0,%xmm4
movapd %xmm4,-0x40(%rsp)
movapd -0x20(%rsp),%xmm4
mulsd  %xmm2,%xmm6
addsd  %xmm6,%xmm12
mulsd  %xmm2,%xmm13
movsd  -0x68(%rsp),%xmm2
movapd %xmm8,%xmm0
movsd  -0x78(%rsp),%xmm5
subsd  %xmm13,%xmm5
movsd  %xmm5,-0x78(%rsp)
movsd  -0x78(%rsp),%xmm13
movapd %xmm3,%xmm8
addpd  %xmm0,%xmm8
add    $0x1,%rax
add    $0x20,%rsi
cmp    %eax,%edi
jne    18d0 <kernel_dgetrf_nn_4x4_lib4+0x7d0>
movapd %xmm15,-0x10(%rsp)
addpd  %xmm0,%xmm3
mulpd  %xmm7,%xmm1
addpd  -0x60(%rsp),%xmm1
movapd %xmm1,%xmm15
movapd %xmm3,%xmm7
movapd %xmm10,-0x60(%rsp)
movapd -0x40(%rsp),%xmm11
movapd %xmm12,%xmm10
movapd -0x30(%rsp),%xmm6
movapd -0x50(%rsp),%xmm14
movsd  -0x70(%rsp),%xmm12
movapd %xmm4,%xmm5
movapd %xmm9,%xmm4
mov    0x88(%rsp),%rcx
mov    0x80(%rsp),%rax
test   %r8d,%r8d
je     1b49 <kernel_dgetrf_nn_4x4_lib4+0xa49>
addsd  (%r9),%xmm2
movupd 0x8(%r9),%xmm0
movupd 0x30(%r9),%xmm1
movapd -0x60(%rsp),%xmm3
addsd  0x18(%r9),%xmm3
movapd %xmm3,-0x60(%rsp)
addsd  0x20(%r9),%xmm5
addpd  %xmm0,%xmm15
addsd  0x28(%r9),%xmm14
addpd  %xmm1,%xmm7
addsd  0x40(%r9),%xmm12
movapd -0x10(%rsp),%xmm9
addsd  0x48(%r9),%xmm9
addsd  0x50(%r9),%xmm6
addsd  0x58(%r9),%xmm4
movsd  -0x80(%rsp),%xmm0
addsd  0x60(%r9),%xmm0
movsd  %xmm0,-0x80(%rsp)
addsd  0x68(%r9),%xmm11
addsd  0x70(%r9),%xmm10
addsd  0x78(%r9),%xmm13
jmp    1b50 <kernel_dgetrf_nn_4x4_lib4+0xa50>
movapd -0x10(%rsp),%xmm9
movsd  %xmm13,-0x78(%rsp)
movapd %xmm10,%xmm13
movapd %xmm4,%xmm10
movsd  0x4a6(%rip),%xmm8
movapd %xmm8,%xmm0
divsd  %xmm2,%xmm0
movapd -0x60(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  %xmm0,(%rcx)
unpcklpd %xmm0,%xmm0
mulpd  %xmm15,%xmm0
movsd  %xmm2,(%rax)
movupd %xmm0,0x8(%rax)
movsd  %xmm1,0x18(%rax)
movapd %xmm0,%xmm2
mulsd  %xmm5,%xmm2
subsd  %xmm2,%xmm14
movapd %xmm0,%xmm2
shufpd $0x1,%xmm1,%xmm2
movapd 0x44a(%rip),%xmm3
xorpd  %xmm2,%xmm3
movapd %xmm5,%xmm4
unpcklpd %xmm5,%xmm4
mulpd  %xmm2,%xmm4
subpd  %xmm4,%xmm7
movapd %xmm5,%xmm1
movapd %xmm8,%xmm5
divsd  %xmm14,%xmm5
movsd  %xmm5,0x8(%rcx)
unpcklpd %xmm5,%xmm5
mulpd  %xmm7,%xmm5
movsd  %xmm1,0x20(%rax)
movsd  %xmm14,0x28(%rax)
movupd %xmm5,0x30(%rax)
movapd %xmm0,%xmm2
mulsd  %xmm12,%xmm2
subsd  %xmm2,%xmm9
movapd %xmm3,%xmm7
mulsd  %xmm12,%xmm7
addsd  %xmm6,%xmm7
pshufd $0xee,%xmm3,%xmm2
movdqa %xmm2,%xmm4
mulsd  %xmm12,%xmm4
addsd  %xmm10,%xmm4
movapd %xmm5,%xmm6
mulsd  %xmm9,%xmm6
subsd  %xmm6,%xmm7
movapd %xmm5,%xmm1
unpckhpd %xmm5,%xmm1
movapd %xmm1,%xmm6
mulsd  %xmm9,%xmm6
subsd  %xmm6,%xmm4
movapd %xmm8,%xmm6
divsd  %xmm7,%xmm6
mulsd  %xmm6,%xmm4
movsd  %xmm6,0x10(%rcx)
movsd  %xmm12,0x40(%rax)
movsd  %xmm9,0x48(%rax)
movsd  %xmm7,0x50(%rax)
movsd  -0x80(%rsp),%xmm6
mulsd  %xmm6,%xmm0
subsd  %xmm0,%xmm11
mulsd  %xmm6,%xmm3
addsd  %xmm13,%xmm3
mulsd  %xmm6,%xmm2
addsd  -0x78(%rsp),%xmm2
mulsd  %xmm11,%xmm5
subsd  %xmm5,%xmm3
mulsd  %xmm11,%xmm1
subsd  %xmm1,%xmm2
movsd  %xmm4,0x58(%rax)
mulsd  %xmm3,%xmm4
subsd  %xmm4,%xmm2
divsd  %xmm2,%xmm8
movsd  %xmm8,0x18(%rcx)
movsd  %xmm6,0x60(%rax)
movsd  %xmm11,0x68(%rax)
movsd  %xmm3,0x70(%rax)
movsd  %xmm2,0x78(%rax)
add    $0x78,%rsp
ret

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

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