void kernel_spotrf_nt_l_4x4_vs_lib4(int kmax, float *A, float *B, float *C,
                                    float *D, float *inv_diag_D, int km,
                                    int kn) {
  const int bs = 4;
  float a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3, tmp,
      c_00 = 0, c_10 = 0, c_11 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_30 = 0,
      c_31 = 0, c_32 = 0, c_33 = 0;
  int k;
  for (k = 0; k < kmax - 3; k += 4) {
    a_0 = A[0];
    a_1 = A[1];
    a_2 = A[2];
    a_3 = A[3];
    b_0 = B[0];
    b_1 = B[1];
    b_2 = B[2];
    b_3 = B[3];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_33 -= a_3 * b_3;
    a_0 = A[4];
    a_1 = A[5];
    a_2 = A[6];
    a_3 = A[7];
    b_0 = B[4];
    b_1 = B[5];
    b_2 = B[6];
    b_3 = B[7];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_33 -= a_3 * b_3;
    a_0 = A[8];
    a_1 = A[9];
    a_2 = A[10];
    a_3 = A[11];
    b_0 = B[8];
    b_1 = B[9];
    b_2 = B[10];
    b_3 = B[11];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_33 -= a_3 * b_3;
    a_0 = A[12];
    a_1 = A[13];
    a_2 = A[14];
    a_3 = A[15];
    b_0 = B[12];
    b_1 = B[13];
    b_2 = B[14];
    b_3 = B[15];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_33 -= a_3 * b_3;
    A += 16;
    B += 16;
  }
  for (; k < kmax; k++) {
    a_0 = A[0];
    a_1 = A[1];
    a_2 = A[2];
    a_3 = A[3];
    b_0 = B[0];
    b_1 = B[1];
    b_2 = B[2];
    b_3 = B[3];
    c_00 -= a_0 * b_0;
    c_10 -= a_1 * b_0;
    c_20 -= a_2 * b_0;
    c_30 -= a_3 * b_0;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_33 -= a_3 * b_3;
    A += 4;
    B += 4;
  }
  c_00 = C[0 + bs * 0] + c_00;
  c_10 = C[1 + bs * 0] + c_10;
  c_20 = C[2 + bs * 0] + c_20;
  c_30 = C[3 + bs * 0] + c_30;
  c_11 = C[1 + bs * 1] + c_11;
  c_21 = C[2 + bs * 1] + c_21;
  c_31 = C[3 + bs * 1] + c_31;
  c_22 = C[2 + bs * 2] + c_22;
  c_32 = C[3 + bs * 2] + c_32;
  c_33 = C[3 + bs * 3] + c_33;
  if (c_00 > 0) {
    c_00 = sqrt(c_00);
    tmp = 1.0 / c_00;
  } else {
    c_00 = 0.0;
    tmp = 0.0;
  }
  c_10 *= tmp;
  c_20 *= tmp;
  c_30 *= tmp;
  inv_diag_D[0] = tmp;
  if (kn == 1)
    goto store;
  c_11 -= c_10 * c_10;
  c_21 -= c_20 * c_10;
  c_31 -= c_30 * c_10;
  if (c_11 > 0) {
    c_11 = sqrt(c_11);
    tmp = 1.0 / c_11;
  } else {
    c_11 = 0.0;
    tmp = 0.0;
  }
  c_21 *= tmp;
  c_31 *= tmp;
  inv_diag_D[1] = tmp;
  if (kn == 2)
    goto store;
  c_22 -= c_20 * c_20;
  c_32 -= c_30 * c_20;
  c_22 -= c_21 * c_21;
  c_32 -= c_31 * c_21;
  if (c_22 > 0) {
    c_22 = sqrt(c_22);
    tmp = 1.0 / c_22;
  } else {
    c_22 = 0.0;
    tmp = 0.0;
  }
  c_32 *= tmp;
  inv_diag_D[2] = tmp;
  if (kn == 3)
    goto store;
  c_33 -= c_30 * c_30;
  c_33 -= c_31 * c_31;
  c_33 -= c_32 * c_32;
  if (c_33 > 0) {
    c_33 = sqrt(c_33);
    tmp = 1.0 / c_33;
  } else {
    c_33 = 0.0;
    tmp = 0.0;
  }
  inv_diag_D[3] = tmp;
store:
  if (km >= 4) {
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    D[2 + bs * 0] = c_20;
    D[3 + bs * 0] = c_30;
    if (kn == 1)
      return;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    D[3 + bs * 1] = c_31;
    if (kn == 2)
      return;
    D[2 + bs * 2] = c_22;
    D[3 + bs * 2] = c_32;
    if (kn == 3)
      return;
    D[3 + bs * 3] = c_33;
  } else if (km >= 3) {
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    D[2 + bs * 0] = c_20;
    if (kn == 1)
      return;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    if (kn == 2)
      return;
    D[2 + bs * 2] = c_22;
  } else if (km >= 2) {
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    if (kn == 1)
      return;
    D[1 + bs * 1] = c_11;
  } else {
    D[0 + bs * 0] = c_00;
  }
}


x86 assembly (clang, -O0):
<kernel_spotrf_nt_l_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x4,-0x34(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x68(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x6c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x7c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movl   $0x0,-0x84(%rbp)
mov    -0x84(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    19ff <kernel_spotrf_nt_l_4x4_vs_lib4+0x8ef>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movss  0x10(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movss  0x14(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movss  0x10(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x14(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movss  0x20(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movss  0x24(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x28(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movss  0x20(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x24(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x28(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movss  0x30(%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movss  0x34(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x38(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0x3c(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movss  0x30(%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x34(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x38(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0x3c(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x18(%rbp)
mov    -0x84(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x84(%rbp)
jmp    1199 <kernel_spotrf_nt_l_4x4_vs_lib4+0x89>
jmp    1a04 <kernel_spotrf_nt_l_4x4_vs_lib4+0x8f4>
mov    -0x84(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1c47 <kernel_spotrf_nt_l_4x4_vs_lib4+0xb37>
mov    -0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x44(%rbp)
mov    -0x18(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x4c(%rbp)
mov    -0x18(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x18(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1a04 <kernel_spotrf_nt_l_4x4_vs_lib4+0x8f4>
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
addss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x4(%rax),%xmm0
addss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movss  0x8(%rax),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movss  0xc(%rax),%xmm0
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x20(%rbp),%rax
movss  0x14(%rax),%xmm0
addss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x20(%rbp),%rax
movss  0x18(%rax),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x1c(%rax),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
movss  0x28(%rax),%xmm0
addss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movss  0x2c(%rax),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x3c(%rax),%xmm0
addss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x5c(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1d4f <kernel_spotrf_nt_l_4x4_vs_lib4+0xc3f>
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x5c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x12c3(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    1d5f <kernel_spotrf_nt_l_4x4_vs_lib4+0xc4f>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
cmpl   $0x1,0x18(%rbp)
jne    1da8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xc98>
jmp    20c8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xfb8>
movss  -0x60(%rbp),%xmm0
movss  -0x60(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x68(%rbp),%xmm0
movss  -0x60(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x74(%rbp),%xmm0
movss  -0x60(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x64(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1e6e <kernel_spotrf_nt_l_4x4_vs_lib4+0xd5e>
movss  -0x64(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x64(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x11a4(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    1e7e <kernel_spotrf_nt_l_4x4_vs_lib4+0xd6e>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x64(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x4(%rax)
cmpl   $0x2,0x18(%rbp)
jne    1eb9 <kernel_spotrf_nt_l_4x4_vs_lib4+0xda9>
jmp    20c8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xfb8>
movss  -0x68(%rbp),%xmm0
movss  -0x68(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x74(%rbp),%xmm0
movss  -0x68(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  -0x6c(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x78(%rbp),%xmm0
movss  -0x6c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    1fa8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xe98>
movss  -0x70(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x70(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x106a(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    1fb8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xea8>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x70(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x8(%rax)
cmpl   $0x3,0x18(%rbp)
jne    1fe4 <kernel_spotrf_nt_l_4x4_vs_lib4+0xed4>
jmp    20c8 <kernel_spotrf_nt_l_4x4_vs_lib4+0xfb8>
movss  -0x74(%rbp),%xmm0
movss  -0x74(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x78(%rbp),%xmm0
movss  -0x78(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x7c(%rbp),%xmm0
movss  -0x7c(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x80(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jbe    20aa <kernel_spotrf_nt_l_4x4_vs_lib4+0xf9a>
movss  -0x80(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
call   1030 <sqrt@plt>
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x80(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xf68(%rip),%xmm0
divsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
jmp    20ba <kernel_spotrf_nt_l_4x4_vs_lib4+0xfaa>
xorps  %xmm0,%xmm0
movss  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0xc(%rax)
cmpl   $0x4,0x10(%rbp)
jl     218f <kernel_spotrf_nt_l_4x4_vs_lib4+0x107f>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0xc(%rax)
cmpl   $0x1,0x18(%rbp)
jne    2118 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1008>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x1c(%rax)
cmpl   $0x2,0x18(%rbp)
jne    2151 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1041>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x2c(%rax)
cmpl   $0x3,0x18(%rbp)
jne    217c <kernel_spotrf_nt_l_4x4_vs_lib4+0x106c>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x3c(%rax)
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
cmpl   $0x3,0x10(%rbp)
jl     220f <kernel_spotrf_nt_l_4x4_vs_lib4+0x10ff>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
cmpl   $0x1,0x18(%rbp)
jne    21d1 <kernel_spotrf_nt_l_4x4_vs_lib4+0x10c1>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
cmpl   $0x2,0x18(%rbp)
jne    21fc <kernel_spotrf_nt_l_4x4_vs_lib4+0x10ec>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
jmp    2268 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1158>
cmpl   $0x2,0x10(%rbp)
jl     2256 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1146>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
cmpl   $0x1,0x18(%rbp)
jne    2243 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1133>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
jmp    2263 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1153>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
jmp    2268 <kernel_spotrf_nt_l_4x4_vs_lib4+0x1158>
jmp    226d <kernel_spotrf_nt_l_4x4_vs_lib4+0x115d>
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_spotrf_nt_l_4x4_vs_lib4>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0xa8,%rsp
mov    %r9,%r14
mov    %r8,%rbx
cmp    $0x4,%edi
jl     137c <kernel_spotrf_nt_l_4x4_vs_lib4+0x26c>
lea    -0x3(%rdi),%eax
xorps  %xmm2,%xmm2
xor    %ebp,%ebp
xorps  %xmm0,%xmm0
xorps  %xmm4,%xmm4
nopw   0x0(%rax,%rax,1)
movaps %xmm4,0x40(%rsp)
movaps %xmm0,0x50(%rsp)
movaps %xmm2,0x10(%rsp)
movsd  (%rdx),%xmm13
movsd  0x8(%rdx),%xmm5
movsd  0x10(%rdx),%xmm15
movsd  0x18(%rdx),%xmm9
movups (%rsi),%xmm3
movups 0x10(%rsi),%xmm10
movups 0x20(%rsi),%xmm8
movaps %xmm3,%xmm7
shufps $0x94,%xmm3,%xmm7
movaps %xmm3,%xmm6
unpckhps %xmm3,%xmm6
movaps %xmm5,%xmm1
shufps $0x10,%xmm13,%xmm1
shufps $0x42,%xmm13,%xmm1
shufps $0x10,%xmm13,%xmm13
mulps  %xmm1,%xmm6
subps  %xmm6,%xmm4
mulps  %xmm13,%xmm7
subps  %xmm7,%xmm0
movaps %xmm3,0x20(%rsp)
movaps %xmm3,%xmm6
shufps $0xff,%xmm3,%xmm6
movaps %xmm5,(%rsp)
mulps  %xmm5,%xmm6
subps  %xmm6,%xmm2
movaps %xmm10,%xmm6
unpckhps %xmm10,%xmm6
movaps %xmm10,%xmm3
shufps $0x94,%xmm10,%xmm3
movaps %xmm9,%xmm7
shufps $0x10,%xmm15,%xmm7
shufps $0x42,%xmm15,%xmm7
shufps $0x10,%xmm15,%xmm15
mulps  %xmm15,%xmm3
subps  %xmm3,%xmm0
mulps  %xmm7,%xmm6
subps  %xmm6,%xmm4
movaps %xmm8,%xmm6
movaps %xmm10,0x30(%rsp)
movaps %xmm10,%xmm3
shufps $0xff,%xmm10,%xmm3
movaps %xmm9,0x80(%rsp)
mulps  %xmm9,%xmm3
subps  %xmm3,%xmm2
movsd  0x20(%rdx),%xmm8
movsd  0x28(%rdx),%xmm5
movaps %xmm6,%xmm3
unpckhps %xmm6,%xmm3
movaps %xmm5,%xmm9
shufps $0x10,%xmm8,%xmm9
shufps $0x42,%xmm8,%xmm9
mulps  %xmm9,%xmm3
subps  %xmm3,%xmm4
movaps %xmm6,%xmm3
shufps $0x94,%xmm6,%xmm3
shufps $0x10,%xmm8,%xmm8
mulps  %xmm8,%xmm3
subps  %xmm3,%xmm0
movaps %xmm6,%xmm3
shufps $0xff,%xmm6,%xmm3
mulps  %xmm5,%xmm3
subps  %xmm3,%xmm2
movups 0x30(%rsi),%xmm10
movaps %xmm10,%xmm3
shufps $0x94,%xmm10,%xmm3
movsd  0x30(%rdx),%xmm12
movsd  0x38(%rdx),%xmm14
movaps %xmm14,%xmm11
shufps $0x10,%xmm12,%xmm11
shufps $0x42,%xmm12,%xmm11
shufps $0x10,%xmm12,%xmm12
mulps  %xmm12,%xmm3
subps  %xmm3,%xmm0
movaps %xmm10,%xmm3
unpckhps %xmm10,%xmm3
mulps  %xmm11,%xmm3
subps  %xmm3,%xmm4
movaps %xmm10,%xmm3
shufps $0xff,%xmm10,%xmm3
mulps  %xmm14,%xmm3
subps  %xmm3,%xmm2
add    $0x40,%rsi
add    $0x40,%rdx
add    $0x4,%ebp
cmp    %eax,%ebp
jl     1140 <kernel_spotrf_nt_l_4x4_vs_lib4+0x30>
movaps 0x20(%rsp),%xmm4
movaps 0xd40(%rip),%xmm0
xorps  %xmm0,%xmm4
movaps 0x30(%rsp),%xmm3
xorps  %xmm0,%xmm3
xorps  %xmm0,%xmm6
xorps  %xmm0,%xmm10
pshufd $0xff,%xmm4,%xmm0
mulps  (%rsp),%xmm0
addps  0x10(%rsp),%xmm0
pshufd $0xff,%xmm3,%xmm2
mulps  0x80(%rsp),%xmm2
addps  %xmm0,%xmm2
pshufd $0xff,%xmm6,%xmm0
mulps  %xmm5,%xmm0
addps  %xmm2,%xmm0
pshufd $0xff,%xmm10,%xmm2
mulps  %xmm14,%xmm2
addps  %xmm0,%xmm2
pshufd $0xfa,%xmm4,%xmm0
mulps  %xmm1,%xmm0
addps  0x40(%rsp),%xmm0
pshufd $0x94,%xmm4,%xmm1
mulps  %xmm13,%xmm1
addps  0x50(%rsp),%xmm1
pshufd $0x94,%xmm3,%xmm4
mulps  %xmm15,%xmm4
addps  %xmm1,%xmm4
pshufd $0xfa,%xmm3,%xmm1
mulps  %xmm7,%xmm1
addps  %xmm0,%xmm1
pshufd $0xfa,%xmm6,%xmm0
mulps  %xmm9,%xmm0
addps  %xmm1,%xmm0
pshufd $0x94,%xmm6,%xmm1
mulps  %xmm8,%xmm1
addps  %xmm4,%xmm1
pshufd $0x94,%xmm10,%xmm14
mulps  %xmm12,%xmm14
addps  %xmm1,%xmm14
pshufd $0xfa,%xmm10,%xmm10
mulps  %xmm11,%xmm10
addps  %xmm0,%xmm10
mov    %edi,%eax
and    $0xfffffffc,%eax
cmp    %edi,%eax
jl     1391 <kernel_spotrf_nt_l_4x4_vs_lib4+0x281>
jmp    142b <kernel_spotrf_nt_l_4x4_vs_lib4+0x31b>
xorps  %xmm2,%xmm2
xor    %eax,%eax
xorps  %xmm14,%xmm14
xorps  %xmm10,%xmm10
cmp    %edi,%eax
jge    142b <kernel_spotrf_nt_l_4x4_vs_lib4+0x31b>
sub    %eax,%edi
xor    %eax,%eax
movaps 0xc63(%rip),%xmm8
nopl   (%rax)
movaps %xmm10,%xmm9
movaps %xmm14,%xmm11
movaps %xmm2,%xmm3
movaps %xmm2,%xmm1
movups (%rsi,%rax,1),%xmm0
movsd  (%rdx,%rax,1),%xmm4
movsd  0x8(%rdx,%rax,1),%xmm6
movaps %xmm0,%xmm7
unpckhps %xmm0,%xmm7
movaps %xmm0,%xmm2
shufps $0x94,%xmm0,%xmm2
movaps %xmm6,%xmm5
shufps $0x10,%xmm4,%xmm5
shufps $0x42,%xmm4,%xmm5
shufps $0x10,%xmm4,%xmm4
mulps  %xmm4,%xmm2
subps  %xmm2,%xmm14
mulps  %xmm5,%xmm7
subps  %xmm7,%xmm10
movaps %xmm0,%xmm2
shufps $0xff,%xmm0,%xmm2
mulps  %xmm6,%xmm2
subps  %xmm2,%xmm3
movaps %xmm3,%xmm2
add    $0x10,%rax
add    $0xffffffff,%edi
jne    13a0 <kernel_spotrf_nt_l_4x4_vs_lib4+0x290>
xorps  %xmm8,%xmm0
pshufd $0xfa,%xmm0,%xmm10
pshufd $0x94,%xmm0,%xmm14
pshufd $0xff,%xmm0,%xmm2
mulps  %xmm6,%xmm2
addps  %xmm1,%xmm2
mulps  %xmm4,%xmm14
addps  %xmm11,%xmm14
mulps  %xmm5,%xmm10
addps  %xmm9,%xmm10
mov    0xd8(%rsp),%r15d
movss  (%rcx),%xmm0
movaps %xmm14,%xmm7
shufps $0x55,%xmm14,%xmm7
addss  0x4(%rcx),%xmm7
addss  %xmm14,%xmm0
movaps %xmm14,%xmm3
shufps $0xff,%xmm14,%xmm3
addss  0x8(%rcx),%xmm3
movaps %xmm10,%xmm4
unpckhpd %xmm10,%xmm4
addss  0xc(%rcx),%xmm4
movhlps %xmm14,%xmm14
addss  0x14(%rcx),%xmm14
movss  0x18(%rcx),%xmm13
addss  %xmm10,%xmm13
movaps %xmm10,%xmm6
shufps $0xff,%xmm10,%xmm6
addss  0x1c(%rcx),%xmm6
shufps $0x55,%xmm10,%xmm10
addss  0x28(%rcx),%xmm10
movss  0x2c(%rcx),%xmm9
movss  0x3c(%rcx),%xmm5
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
xorps  %xmm11,%xmm11
jbe    1553 <kernel_spotrf_nt_l_4x4_vs_lib4+0x443>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     14c5 <kernel_spotrf_nt_l_4x4_vs_lib4+0x3b5>
xorps  %xmm11,%xmm11
sqrtss %xmm0,%xmm11
jmp    1546 <kernel_spotrf_nt_l_4x4_vs_lib4+0x436>
movaps %xmm2,0x80(%rsp)
movaps %xmm10,(%rsp)
movaps %xmm7,0x50(%rsp)
movaps %xmm3,0x40(%rsp)
movaps %xmm4,0x30(%rsp)
movss  %xmm13,0x20(%rsp)
movaps %xmm6,0x10(%rsp)
movaps %xmm14,0x60(%rsp)
movaps %xmm9,0x70(%rsp)
movaps %xmm5,0x90(%rsp)
call   1030 <sqrtf@plt>
movaps 0x90(%rsp),%xmm5
movaps 0x70(%rsp),%xmm9
movaps 0x60(%rsp),%xmm14
movaps 0x10(%rsp),%xmm6
movss  0x20(%rsp),%xmm13
movaps 0x30(%rsp),%xmm4
movaps 0x40(%rsp),%xmm3
movaps 0x50(%rsp),%xmm7
movaps (%rsp),%xmm10
movaps 0x80(%rsp),%xmm2
movaps %xmm0,%xmm11
movss  0xac2(%rip),%xmm1
divss  %xmm11,%xmm1
mov    0xd0(%rsp),%ebp
mulss  %xmm1,%xmm7
mulss  %xmm1,%xmm3
mulss  %xmm1,%xmm4
movss  %xmm1,(%r14)
cmp    $0x1,%r15d
jne    158f <kernel_spotrf_nt_l_4x4_vs_lib4+0x47f>
cmp    $0x4,%ebp
jl     15de <kernel_spotrf_nt_l_4x4_vs_lib4+0x4ce>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
movss  %xmm3,0x8(%rbx)
movss  %xmm4,0xc(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
unpcklps %xmm5,%xmm9
movaps %xmm7,%xmm0
mulss  %xmm7,%xmm0
subss  %xmm0,%xmm14
movaps %xmm3,%xmm0
mulss  %xmm7,%xmm0
subss  %xmm0,%xmm13
movaps %xmm4,%xmm0
mulss  %xmm7,%xmm0
subss  %xmm0,%xmm6
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm14
xorps  %xmm8,%xmm8
jbe    167f <kernel_spotrf_nt_l_4x4_vs_lib4+0x56f>
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm14
jb     15fb <kernel_spotrf_nt_l_4x4_vs_lib4+0x4eb>
xorps  %xmm8,%xmm8
sqrtss %xmm14,%xmm8
jmp    1672 <kernel_spotrf_nt_l_4x4_vs_lib4+0x562>
cmp    $0x3,%ebp
jne    1703 <kernel_spotrf_nt_l_4x4_vs_lib4+0x5f3>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
movss  %xmm3,0x8(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movaps %xmm14,%xmm0
movaps %xmm2,0x80(%rsp)
movaps %xmm10,(%rsp)
movaps %xmm7,0x50(%rsp)
movaps %xmm3,0x40(%rsp)
movaps %xmm4,0x30(%rsp)
movss  %xmm13,0x20(%rsp)
movaps %xmm6,0x10(%rsp)
movss  %xmm11,0x60(%rsp)
movaps %xmm9,0x70(%rsp)
call   1030 <sqrtf@plt>
movaps 0x70(%rsp),%xmm9
movss  0x60(%rsp),%xmm11
movaps 0x10(%rsp),%xmm6
movss  0x20(%rsp),%xmm13
movaps 0x30(%rsp),%xmm4
movaps 0x40(%rsp),%xmm3
movaps 0x50(%rsp),%xmm7
movaps (%rsp),%xmm10
movaps 0x80(%rsp),%xmm2
movaps %xmm0,%xmm8
movss  0x996(%rip),%xmm0
divss  %xmm8,%xmm0
addps  %xmm9,%xmm2
mulss  %xmm0,%xmm13
mulss  %xmm0,%xmm6
movss  %xmm0,0x4(%r14)
cmp    $0x2,%r15d
je     17c3 <kernel_spotrf_nt_l_4x4_vs_lib4+0x6b3>
movaps 0x95d(%rip),%xmm5
movaps %xmm3,%xmm0
xorps  %xmm5,%xmm0
xorps  %xmm4,%xmm5
mulss  %xmm3,%xmm0
addss  %xmm10,%xmm0
movaps %xmm5,%xmm12
mulss  %xmm3,%xmm12
addss  %xmm2,%xmm12
movaps %xmm13,%xmm1
mulss  %xmm13,%xmm1
subss  %xmm1,%xmm0
movaps %xmm6,%xmm1
mulss  %xmm13,%xmm1
subss  %xmm1,%xmm12
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
xorps  %xmm10,%xmm10
jbe    17ad <kernel_spotrf_nt_l_4x4_vs_lib4+0x69d>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     171b <kernel_spotrf_nt_l_4x4_vs_lib4+0x60b>
xorps  %xmm10,%xmm10
sqrtss %xmm0,%xmm10
jmp    17a0 <kernel_spotrf_nt_l_4x4_vs_lib4+0x690>
cmp    $0x2,%ebp
jl     1945 <kernel_spotrf_nt_l_4x4_vs_lib4+0x835>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movaps %xmm2,0x80(%rsp)
movaps %xmm7,0x50(%rsp)
movaps %xmm3,0x40(%rsp)
movaps %xmm4,0x30(%rsp)
movss  %xmm13,0x20(%rsp)
movaps %xmm6,0x10(%rsp)
movss  %xmm11,0x60(%rsp)
movss  %xmm8,0x70(%rsp)
movaps %xmm12,0x90(%rsp)
movaps %xmm5,(%rsp)
call   1030 <sqrtf@plt>
movaps (%rsp),%xmm5
movaps 0x90(%rsp),%xmm12
movss  0x70(%rsp),%xmm8
movss  0x60(%rsp),%xmm11
movaps 0x10(%rsp),%xmm6
movss  0x20(%rsp),%xmm13
movaps 0x30(%rsp),%xmm4
movaps 0x40(%rsp),%xmm3
movaps 0x50(%rsp),%xmm7
movaps 0x80(%rsp),%xmm2
movaps %xmm0,%xmm10
movss  0x868(%rip),%xmm1
divss  %xmm10,%xmm1
mulss  %xmm1,%xmm12
movss  %xmm1,0x8(%r14)
cmp    $0x3,%r15d
jne    181e <kernel_spotrf_nt_l_4x4_vs_lib4+0x70e>
movss  %xmm12,%xmm2
cmp    $0x3,%ebp
jle    1903 <kernel_spotrf_nt_l_4x4_vs_lib4+0x7f3>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
movss  %xmm3,0x8(%rbx)
movss  %xmm4,0xc(%rbx)
movss  %xmm8,0x14(%rbx)
movss  %xmm13,0x18(%rbx)
movss  %xmm6,0x1c(%rbx)
cmp    $0x2,%r15d
je     194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movss  %xmm10,0x28(%rbx)
movss  %xmm2,0x2c(%rbx)
cmp    $0x3,%r15d
je     194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
shufps $0x55,%xmm2,%xmm2
movss  %xmm2,0x3c(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movaps 0x7db(%rip),%xmm0
xorps  %xmm6,%xmm0
shufps $0x55,%xmm2,%xmm2
mulss  %xmm4,%xmm5
addss  %xmm2,%xmm5
mulss  %xmm6,%xmm0
addss  %xmm5,%xmm0
movaps %xmm12,%xmm1
mulss  %xmm12,%xmm1
subss  %xmm1,%xmm0
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
xorps  %xmm2,%xmm2
jbe    18eb <kernel_spotrf_nt_l_4x4_vs_lib4+0x7db>
xorps  %xmm1,%xmm1
ucomiss %xmm1,%xmm0
jb     1869 <kernel_spotrf_nt_l_4x4_vs_lib4+0x759>
xorps  %xmm2,%xmm2
sqrtss %xmm0,%xmm2
jmp    18df <kernel_spotrf_nt_l_4x4_vs_lib4+0x7cf>
movaps %xmm10,(%rsp)
movaps %xmm7,0x50(%rsp)
movaps %xmm3,0x40(%rsp)
movaps %xmm4,0x30(%rsp)
movss  %xmm13,0x20(%rsp)
movaps %xmm6,0x10(%rsp)
movss  %xmm11,0x60(%rsp)
movss  %xmm8,0x70(%rsp)
movaps %xmm12,0x90(%rsp)
call   1030 <sqrtf@plt>
movaps 0x90(%rsp),%xmm12
movss  0x70(%rsp),%xmm8
movss  0x60(%rsp),%xmm11
movaps 0x10(%rsp),%xmm6
movss  0x20(%rsp),%xmm13
movaps 0x30(%rsp),%xmm4
movaps 0x40(%rsp),%xmm3
movaps 0x50(%rsp),%xmm7
movaps (%rsp),%xmm10
movaps %xmm0,%xmm2
movss  0x729(%rip),%xmm1
divss  %xmm2,%xmm1
movss  %xmm1,0xc(%r14)
movlhps %xmm12,%xmm2
shufps $0xe2,%xmm12,%xmm2
cmp    $0x3,%ebp
jg     17cc <kernel_spotrf_nt_l_4x4_vs_lib4+0x6bc>
jne    192e <kernel_spotrf_nt_l_4x4_vs_lib4+0x81e>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
movss  %xmm3,0x8(%rbx)
movss  %xmm8,0x14(%rbx)
movss  %xmm13,0x18(%rbx)
cmp    $0x2,%r15d
je     194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movss  %xmm10,0x28(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
cmp    $0x1,%ebp
jle    1945 <kernel_spotrf_nt_l_4x4_vs_lib4+0x835>
movss  %xmm11,(%rbx)
movss  %xmm7,0x4(%rbx)
movss  %xmm8,0x14(%rbx)
jmp    194a <kernel_spotrf_nt_l_4x4_vs_lib4+0x83a>
movss  %xmm11,(%rbx)
add    $0xa8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define void @kernel_spotrf_nt_l_4x4_vs_lib4(i32 %0, float* nocapture %1, float* nocapture %2, float* nocapture %3, float* nocapture writeonly %4, float* nocapture writeonly %5, i32 %6, i32 %7) {
%9 = add nsw i32 %0, -3
%10 = icmp sgt i32 %0, 3
br i1 %10, label %32, label %25
11: ; preds = %32
%12 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %49, <2 x float> %44, <2 x float> %36)
%13 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %64, <2 x float> %59, <2 x float> %12)
%14 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %79, <2 x float> %74, <2 x float> %13)
%15 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %94, <2 x float> %89, <2 x float> %14)
%16 = shufflevector <2 x float> %86, <2 x float> %89, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%17 = shufflevector <2 x float> %71, <2 x float> %74, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%18 = shufflevector <2 x float> %56, <2 x float> %59, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%19 = shufflevector <2 x float> %41, <2 x float> %44, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%20 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %46, <8 x float> %19, <8 x float> %37)
%21 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %61, <8 x float> %18, <8 x float> %20)
%22 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %76, <8 x float> %17, <8 x float> %21)
%23 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %91, <8 x float> %16, <8 x float> %22)
%24 = and i32 %0, -4
br label %25
25: ; preds = %11, %8
%26 = phi float* [ %2, %8 ], [ %97, %11 ]
%27 = phi float* [ %1, %8 ], [ %96, %11 ]
%28 = phi i32 [ 0, %8 ], [ %24, %11 ]
%29 = phi <2 x float> [ zeroinitializer, %8 ], [ %15, %11 ]
%30 = phi <8 x float> [ zeroinitializer, %8 ], [ %23, %11 ]
%31 = icmp slt i32 %28, %0
br i1 %31, label %100, label %127
32: ; preds = %8, %32
%33 = phi i32 [ %98, %32 ], [ 0, %8 ]
%34 = phi float* [ %96, %32 ], [ %1, %8 ]
%35 = phi float* [ %97, %32 ], [ %2, %8 ]
%36 = phi <2 x float> [ %95, %32 ], [ zeroinitializer, %8 ]
%37 = phi <8 x float> [ %93, %32 ], [ zeroinitializer, %8 ]
%38 = bitcast float* %34 to <4 x float>*
%39 = load <4 x float>, <4 x float>* %38
%40 = bitcast float* %35 to <2 x float>*
%41 = load <2 x float>, <2 x float>* %40
%42 = getelementptr inbounds float, float* %35, i64 2
%43 = bitcast float* %42 to <2 x float>*
%44 = load <2 x float>, <2 x float>* %43
%45 = fneg <4 x float> %39
%46 = shufflevector <4 x float> %45, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 3>
%47 = shufflevector <2 x float> %41, <2 x float> %44, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%48 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %46, <8 x float> %47, <8 x float> %37)
%49 = shufflevector <4 x float> %45, <4 x float> undef, <2 x i32> <i32 3, i32 3>
%50 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %49, <2 x float> %44, <2 x float> %36)
%51 = getelementptr inbounds float, float* %34, i64 4
%52 = bitcast float* %51 to <4 x float>*
%53 = load <4 x float>, <4 x float>* %52
%54 = getelementptr inbounds float, float* %35, i64 4
%55 = bitcast float* %54 to <2 x float>*
%56 = load <2 x float>, <2 x float>* %55
%57 = getelementptr inbounds float, float* %35, i64 6
%58 = bitcast float* %57 to <2 x float>*
%59 = load <2 x float>, <2 x float>* %58
%60 = fneg <4 x float> %53
%61 = shufflevector <4 x float> %60, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 3>
%62 = shufflevector <2 x float> %56, <2 x float> %59, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%63 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %61, <8 x float> %62, <8 x float> %48)
%64 = shufflevector <4 x float> %60, <4 x float> undef, <2 x i32> <i32 3, i32 3>
%65 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %64, <2 x float> %59, <2 x float> %50)
%66 = getelementptr inbounds float, float* %34, i64 8
%67 = bitcast float* %66 to <4 x float>*
%68 = load <4 x float>, <4 x float>* %67
%69 = getelementptr inbounds float, float* %35, i64 8
%70 = bitcast float* %69 to <2 x float>*
%71 = load <2 x float>, <2 x float>* %70
%72 = getelementptr inbounds float, float* %35, i64 10
%73 = bitcast float* %72 to <2 x float>*
%74 = load <2 x float>, <2 x float>* %73
%75 = fneg <4 x float> %68
%76 = shufflevector <4 x float> %75, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 3>
%77 = shufflevector <2 x float> %71, <2 x float> %74, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%78 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %76, <8 x float> %77, <8 x float> %63)
%79 = shufflevector <4 x float> %75, <4 x float> undef, <2 x i32> <i32 3, i32 3>
%80 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %79, <2 x float> %74, <2 x float> %65)
%81 = getelementptr inbounds float, float* %34, i64 12
%82 = bitcast float* %81 to <4 x float>*
%83 = load <4 x float>, <4 x float>* %82
%84 = getelementptr inbounds float, float* %35, i64 12
%85 = bitcast float* %84 to <2 x float>*
%86 = load <2 x float>, <2 x float>* %85
%87 = getelementptr inbounds float, float* %35, i64 14
%88 = bitcast float* %87 to <2 x float>*
%89 = load <2 x float>, <2 x float>* %88
%90 = fneg <4 x float> %83
%91 = shufflevector <4 x float> %90, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 3>
%92 = shufflevector <2 x float> %86, <2 x float> %89, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%93 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %91, <8 x float> %92, <8 x float> %78)
%94 = shufflevector <4 x float> %90, <4 x float> undef, <2 x i32> <i32 3, i32 3>
%95 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %94, <2 x float> %89, <2 x float> %80)
%96 = getelementptr inbounds float, float* %34, i64 16
%97 = getelementptr inbounds float, float* %35, i64 16
%98 = add nuw nsw i32 %33, 4
%99 = icmp slt i32 %98, %9
br i1 %99, label %32, label %11
100: ; preds = %25, %100
%101 = phi i32 [ %121, %100 ], [ %28, %25 ]
%102 = phi float* [ %119, %100 ], [ %27, %25 ]
%103 = phi float* [ %120, %100 ], [ %26, %25 ]
%104 = phi <2 x float> [ %118, %100 ], [ %29, %25 ]
%105 = phi <8 x float> [ %116, %100 ], [ %30, %25 ]
%106 = bitcast float* %102 to <4 x float>*
%107 = load <4 x float>, <4 x float>* %106
%108 = bitcast float* %103 to <2 x float>*
%109 = load <2 x float>, <2 x float>* %108
%110 = getelementptr inbounds float, float* %103, i64 2
%111 = bitcast float* %110 to <2 x float>*
%112 = load <2 x float>, <2 x float>* %111
%113 = fneg <4 x float> %107
%114 = shufflevector <4 x float> %113, <4 x float> poison, <8 x i32> <i32 0, i32 1, i32 1, i32 2, i32 2, i32 2, i32 3, i32 3>
%115 = shufflevector <2 x float> %109, <2 x float> %112, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%116 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %114, <8 x float> %115, <8 x float> %105)
%117 = shufflevector <4 x float> %113, <4 x float> undef, <2 x i32> <i32 3, i32 3>
%118 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %117, <2 x float> %112, <2 x float> %104)
%119 = getelementptr inbounds float, float* %102, i64 4
%120 = getelementptr inbounds float, float* %103, i64 4
%121 = add nuw nsw i32 %101, 1
%122 = icmp eq i32 %121, %0
br i1 %122, label %123, label %100
123: ; preds = %100
%124 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %117, <2 x float> %112, <2 x float> %104)
%125 = shufflevector <2 x float> %109, <2 x float> %112, <8 x i32> <i32 0, i32 0, i32 1, i32 0, i32 1, i32 2, i32 0, i32 1>
%126 = call <8 x float> @llvm.fmuladd.v8f32(<8 x float> %114, <8 x float> %125, <8 x float> %105)
br label %127
127: ; preds = %123, %25
%128 = phi <2 x float> [ %29, %25 ], [ %124, %123 ]
%129 = phi <8 x float> [ %30, %25 ], [ %126, %123 ]
%130 = load float, float* %3
%131 = extractelement <8 x float> %129, i64 0
%132 = fadd float %131, %130
%133 = getelementptr inbounds float, float* %3, i64 1
%134 = load float, float* %133
%135 = extractelement <8 x float> %129, i64 1
%136 = fadd float %135, %134
%137 = getelementptr inbounds float, float* %3, i64 2
%138 = load float, float* %137
%139 = extractelement <8 x float> %129, i64 3
%140 = fadd float %139, %138
%141 = getelementptr inbounds float, float* %3, i64 3
%142 = load float, float* %141
%143 = extractelement <8 x float> %129, i64 6
%144 = fadd float %143, %142
%145 = getelementptr inbounds float, float* %3, i64 5
%146 = load float, float* %145
%147 = extractelement <8 x float> %129, i64 2
%148 = fadd float %147, %146
%149 = getelementptr inbounds float, float* %3, i64 6
%150 = load float, float* %149
%151 = extractelement <8 x float> %129, i64 4
%152 = fadd float %151, %150
%153 = getelementptr inbounds float, float* %3, i64 7
%154 = load float, float* %153
%155 = extractelement <8 x float> %129, i64 7
%156 = fadd float %155, %154
%157 = getelementptr inbounds float, float* %3, i64 10
%158 = load float, float* %157
%159 = extractelement <8 x float> %129, i64 5
%160 = fadd float %159, %158
%161 = getelementptr inbounds float, float* %3, i64 11
%162 = load float, float* %161
%163 = getelementptr inbounds float, float* %3, i64 15
%164 = load float, float* %163
%165 = insertelement <2 x float> poison, float %162, i64 0
%166 = insertelement <2 x float> %165, float %164, i64 1
%167 = fadd <2 x float> %128, %166
%168 = fcmp ogt float %132, 0.000000e+00
br i1 %168, label %169, label %172
169: ; preds = %127
%170 = tail call float @sqrtf(float %132)
%171 = fdiv float 1.000000e+00, %170
br label %172
172: ; preds = %127, %169
%173 = phi float [ %171, %169 ], [ 0.000000e+00, %127 ]
%174 = phi float [ %170, %169 ], [ 0.000000e+00, %127 ]
%175 = fmul float %136, %173
%176 = fmul float %140, %173
%177 = fmul float %144, %173
store float %173, float* %5
%178 = icmp eq i32 %7, 1
br i1 %178, label %236, label %179
179: ; preds = %172
%180 = fneg float %175
%181 = tail call float @llvm.fmuladd.f32(float %180, float %175, float %148)
%182 = fneg float %176
%183 = tail call float @llvm.fmuladd.f32(float %182, float %175, float %152)
%184 = fneg float %177
%185 = tail call float @llvm.fmuladd.f32(float %184, float %175, float %156)
%186 = fcmp ogt float %181, 0.000000e+00
br i1 %186, label %187, label %190
187: ; preds = %179
%188 = tail call float @sqrtf(float %181)
%189 = fdiv float 1.000000e+00, %188
br label %190
190: ; preds = %179, %187
%191 = phi float [ %189, %187 ], [ 0.000000e+00, %179 ]
%192 = phi float [ %188, %187 ], [ 0.000000e+00, %179 ]
%193 = fmul float %183, %191
%194 = fmul float %185, %191
%195 = getelementptr inbounds float, float* %5, i64 1
store float %191, float* %195
%196 = icmp eq i32 %7, 2
br i1 %196, label %232, label %197
197: ; preds = %190
%198 = tail call float @llvm.fmuladd.f32(float %182, float %176, float %160)
%199 = extractelement <2 x float> %167, i64 0
%200 = tail call float @llvm.fmuladd.f32(float %184, float %176, float %199)
%201 = fneg float %193
%202 = tail call float @llvm.fmuladd.f32(float %201, float %193, float %198)
%203 = fneg float %194
%204 = tail call float @llvm.fmuladd.f32(float %203, float %193, float %200)
%205 = fcmp ogt float %202, 0.000000e+00
br i1 %205, label %206, label %209
206: ; preds = %197
%207 = tail call float @sqrtf(float %202)
%208 = fdiv float 1.000000e+00, %207
br label %209
209: ; preds = %197, %206
%210 = phi float [ %208, %206 ], [ 0.000000e+00, %197 ]
%211 = phi float [ %207, %206 ], [ 0.000000e+00, %197 ]
%212 = fmul float %204, %210
%213 = getelementptr inbounds float, float* %5, i64 2
store float %210, float* %213
%214 = icmp eq i32 %7, 3
%215 = insertelement <2 x float> poison, float %212, i64 0
%216 = insertelement <2 x float> %167, float %212, i64 0
br i1 %214, label %232, label %217
217: ; preds = %209
%218 = extractelement <2 x float> %167, i64 1
%219 = tail call float @llvm.fmuladd.f32(float %184, float %177, float %218)
%220 = tail call float @llvm.fmuladd.f32(float %203, float %194, float %219)
%221 = fneg float %212
%222 = tail call float @llvm.fmuladd.f32(float %221, float %212, float %220)
%223 = fcmp ogt float %222, 0.000000e+00
br i1 %223, label %224, label %227
224: ; preds = %217
%225 = tail call float @sqrtf(float %222)
%226 = fdiv float 1.000000e+00, %225
br label %227
227: ; preds = %217, %224
%228 = phi float [ %226, %224 ], [ 0.000000e+00, %217 ]
%229 = phi float [ %225, %224 ], [ 0.000000e+00, %217 ]
%230 = getelementptr inbounds float, float* %5, i64 3
store float %228, float* %230
%231 = insertelement <2 x float> %215, float %229, i64 1
br label %232
232: ; preds = %209, %190, %227
%233 = phi float [ %160, %190 ], [ %211, %209 ], [ %211, %227 ]
%234 = phi <2 x float> [ %167, %190 ], [ %216, %209 ], [ %231, %227 ]
%235 = icmp sgt i32 %6, 3
br i1 %235, label %242, label %257
236: ; preds = %172
%237 = icmp sgt i32 %6, 3
br i1 %237, label %238, label %259
238: ; preds = %236
store float %174, float* %4
%239 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %239
%240 = getelementptr inbounds float, float* %4, i64 2
store float %176, float* %240
%241 = getelementptr inbounds float, float* %4, i64 3
store float %177, float* %241
br label %281
242: ; preds = %232
store float %174, float* %4
%243 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %243
%244 = getelementptr inbounds float, float* %4, i64 2
store float %176, float* %244
%245 = getelementptr inbounds float, float* %4, i64 3
store float %177, float* %245
%246 = getelementptr inbounds float, float* %4, i64 5
store float %192, float* %246
%247 = getelementptr inbounds float, float* %4, i64 6
store float %193, float* %247
%248 = getelementptr inbounds float, float* %4, i64 7
store float %194, float* %248
br i1 %196, label %281, label %249
249: ; preds = %242
%250 = getelementptr inbounds float, float* %4, i64 10
store float %233, float* %250
%251 = getelementptr inbounds float, float* %4, i64 11
%252 = extractelement <2 x float> %234, i64 0
store float %252, float* %251
%253 = icmp eq i32 %7, 3
br i1 %253, label %281, label %254
254: ; preds = %249
%255 = getelementptr inbounds float, float* %4, i64 15
%256 = extractelement <2 x float> %234, i64 1
store float %256, float* %255
br label %281
257: ; preds = %232
%258 = icmp eq i32 %6, 3
br i1 %258, label %264, label %271
259: ; preds = %236
%260 = icmp eq i32 %6, 3
br i1 %260, label %261, label %273
261: ; preds = %259
store float %174, float* %4
%262 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %262
%263 = getelementptr inbounds float, float* %4, i64 2
store float %176, float* %263
br label %281
264: ; preds = %257
store float %174, float* %4
%265 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %265
%266 = getelementptr inbounds float, float* %4, i64 2
store float %176, float* %266
%267 = getelementptr inbounds float, float* %4, i64 5
store float %192, float* %267
%268 = getelementptr inbounds float, float* %4, i64 6
store float %193, float* %268
br i1 %196, label %281, label %269
269: ; preds = %264
%270 = getelementptr inbounds float, float* %4, i64 10
store float %233, float* %270
br label %281
271: ; preds = %257
%272 = icmp sgt i32 %6, 1
br i1 %272, label %277, label %280
273: ; preds = %259
%274 = icmp sgt i32 %6, 1
br i1 %274, label %275, label %280
275: ; preds = %273
store float %174, float* %4
%276 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %276
br label %281
277: ; preds = %271
store float %174, float* %4
%278 = getelementptr inbounds float, float* %4, i64 1
store float %175, float* %278
%279 = getelementptr inbounds float, float* %4, i64 5
store float %192, float* %279
br label %281
280: ; preds = %273, %271
store float %174, float* %4
br label %281
281: ; preds = %275, %261, %238, %254, %277, %280, %269, %264, %249, %242
ret void
}