void kernel_strsm_nt_rl_inv_4x4_vs_lib4(int kmax, float *A, float *B, float *C,
                                        float *D, float *E, float *inv_diag_E,
                                        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_01 = 0, c_02 = 0, c_03 = 0, c_10 = 0, c_11 = 0, c_12 = 0,
      c_13 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_23 = 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_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    c_23 -= a_2 * b_3;
    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_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    c_23 -= a_2 * b_3;
    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_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    c_23 -= a_2 * b_3;
    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_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    c_23 -= a_2 * b_3;
    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_01 -= a_0 * b_1;
    c_11 -= a_1 * b_1;
    c_21 -= a_2 * b_1;
    c_31 -= a_3 * b_1;
    c_02 -= a_0 * b_2;
    c_12 -= a_1 * b_2;
    c_22 -= a_2 * b_2;
    c_32 -= a_3 * b_2;
    c_03 -= a_0 * b_3;
    c_13 -= a_1 * b_3;
    c_23 -= a_2 * b_3;
    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_01 = C[0 + bs * 1] + c_01;
  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_02 = C[0 + bs * 2] + c_02;
  c_12 = C[1 + bs * 2] + c_12;
  c_22 = C[2 + bs * 2] + c_22;
  c_32 = C[3 + bs * 2] + c_32;
  c_03 = C[0 + bs * 3] + c_03;
  c_13 = C[1 + bs * 3] + c_13;
  c_23 = C[2 + bs * 3] + c_23;
  c_33 = C[3 + bs * 3] + c_33;
  tmp = inv_diag_E[0];
  c_00 *= tmp;
  c_10 *= tmp;
  c_20 *= tmp;
  c_30 *= tmp;
  if (kn == 1)
    goto store;
  tmp = E[1 + bs * 0];
  c_01 -= c_00 * tmp;
  c_11 -= c_10 * tmp;
  c_21 -= c_20 * tmp;
  c_31 -= c_30 * tmp;
  tmp = inv_diag_E[1];
  c_01 *= tmp;
  c_11 *= tmp;
  c_21 *= tmp;
  c_31 *= tmp;
  if (kn == 2)
    goto store;
  tmp = E[2 + bs * 0];
  c_02 -= c_00 * tmp;
  c_12 -= c_10 * tmp;
  c_22 -= c_20 * tmp;
  c_32 -= c_30 * tmp;
  tmp = E[2 + bs * 1];
  c_02 -= c_01 * tmp;
  c_12 -= c_11 * tmp;
  c_22 -= c_21 * tmp;
  c_32 -= c_31 * tmp;
  tmp = inv_diag_E[2];
  c_02 *= tmp;
  c_12 *= tmp;
  c_22 *= tmp;
  c_32 *= tmp;
  if (kn == 3)
    goto store;
  tmp = E[3 + bs * 0];
  c_03 -= c_00 * tmp;
  c_13 -= c_10 * tmp;
  c_23 -= c_20 * tmp;
  c_33 -= c_30 * tmp;
  tmp = E[3 + bs * 1];
  c_03 -= c_01 * tmp;
  c_13 -= c_11 * tmp;
  c_23 -= c_21 * tmp;
  c_33 -= c_31 * tmp;
  tmp = E[3 + bs * 2];
  c_03 -= c_02 * tmp;
  c_13 -= c_12 * tmp;
  c_23 -= c_22 * tmp;
  c_33 -= c_32 * tmp;
  tmp = inv_diag_E[3];
  c_03 *= tmp;
  c_13 *= tmp;
  c_23 *= tmp;
  c_33 *= 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[0 + bs * 1] = c_01;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    D[3 + bs * 1] = c_31;
    if (kn == 2)
      return;
    D[0 + bs * 2] = c_02;
    D[1 + bs * 2] = c_12;
    D[2 + bs * 2] = c_22;
    D[3 + bs * 2] = c_32;
    if (kn == 3)
      return;
    D[0 + bs * 3] = c_03;
    D[1 + bs * 3] = c_13;
    D[2 + bs * 3] = c_23;
    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[0 + bs * 1] = c_01;
    D[1 + bs * 1] = c_11;
    D[2 + bs * 1] = c_21;
    if (kn == 2)
      return;
    D[0 + bs * 2] = c_02;
    D[1 + bs * 2] = c_12;
    D[2 + bs * 2] = c_22;
    if (kn == 3)
      return;
    D[0 + bs * 3] = c_03;
    D[1 + bs * 3] = c_13;
    D[2 + bs * 3] = c_23;
  } else if (km >= 2) {
    D[0 + bs * 0] = c_00;
    D[1 + bs * 0] = c_10;
    if (kn == 1)
      return;
    D[0 + bs * 1] = c_01;
    D[1 + bs * 1] = c_11;
    if (kn == 2)
      return;
    D[0 + bs * 2] = c_02;
    D[1 + bs * 2] = c_12;
    if (kn == 3)
      return;
    D[0 + bs * 3] = c_03;
    D[1 + bs * 3] = c_13;
  } else {
    D[0 + bs * 0] = c_00;
    if (kn == 1)
      return;
    D[0 + bs * 1] = c_01;
    if (kn == 2)
      return;
    D[0 + bs * 2] = c_02;
    if (kn == 3)
      return;
    D[0 + bs * 3] = c_03;
  }
}


x86 assembly (clang, -O0):
<kernel_strsm_nt_rl_inv_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    0x20(%rbp),%eax
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%rax
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)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
xorps  %xmm0,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movl   $0x0,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1e9a <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0xd9a>
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  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%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  -0x48(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%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  -0x3c(%rbp),%xmm0
movss  -0x4c(%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  -0x40(%rbp),%xmm0
movss  -0x4c(%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  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%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  -0x3c(%rbp),%xmm0
movss  -0x50(%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  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%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  -0x3c(%rbp),%xmm0
movss  -0x54(%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  -0x54(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
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  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%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  -0x48(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%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  -0x3c(%rbp),%xmm0
movss  -0x4c(%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  -0x40(%rbp),%xmm0
movss  -0x4c(%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  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%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  -0x3c(%rbp),%xmm0
movss  -0x50(%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  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%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  -0x3c(%rbp),%xmm0
movss  -0x54(%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  -0x54(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
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  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%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  -0x48(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%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  -0x3c(%rbp),%xmm0
movss  -0x4c(%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  -0x40(%rbp),%xmm0
movss  -0x4c(%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  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%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  -0x3c(%rbp),%xmm0
movss  -0x50(%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  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%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  -0x3c(%rbp),%xmm0
movss  -0x54(%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  -0x54(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
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  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%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  -0x48(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%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  -0x3c(%rbp),%xmm0
movss  -0x4c(%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  -0x40(%rbp),%xmm0
movss  -0x4c(%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  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%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  -0x3c(%rbp),%xmm0
movss  -0x50(%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  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%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  -0x3c(%rbp),%xmm0
movss  -0x54(%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  -0x54(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0x18(%rbp)
mov    -0x9c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x9c(%rbp)
jmp    11cc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0xcc>
jmp    1e9f <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0xd9f>
mov    -0x9c(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    21fc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x10fc>
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  -0x6c(%rbp),%xmm1
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%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  -0x48(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%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  -0x3c(%rbp),%xmm0
movss  -0x4c(%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  -0x40(%rbp),%xmm0
movss  -0x4c(%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  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%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  -0x3c(%rbp),%xmm0
movss  -0x50(%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  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%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  -0x3c(%rbp),%xmm0
movss  -0x54(%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  -0x54(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x10,%rax
mov    %rax,-0x18(%rbp)
mov    -0x9c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x9c(%rbp)
jmp    1e9f <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0xd9f>
mov    -0x20(%rbp),%rax
movss  (%rax),%xmm0
addss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x4(%rax),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x20(%rbp),%rax
movss  0x8(%rax),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x20(%rbp),%rax
movss  0xc(%rax),%xmm0
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x10(%rax),%xmm0
addss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x20(%rbp),%rax
movss  0x14(%rax),%xmm0
addss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x20(%rbp),%rax
movss  0x18(%rax),%xmm0
addss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x20(%rbp),%rax
movss  0x1c(%rax),%xmm0
addss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x20(%rax),%xmm0
addss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x20(%rbp),%rax
movss  0x24(%rax),%xmm0
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x20(%rbp),%rax
movss  0x28(%rax),%xmm0
addss  -0x84(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x2c(%rax),%xmm0
addss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x30(%rax),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x20(%rbp),%rax
movss  0x34(%rax),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x20(%rbp),%rax
movss  0x38(%rax),%xmm0
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x20(%rbp),%rax
movss  0x3c(%rax),%xmm0
addss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%rax
movss  (%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x8c(%rbp)
ff
cmpl   $0x1,0x20(%rbp)
jne    23ad <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x12ad>
jmp    294a <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x184a>
mov    -0x30(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  -0x58(%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  -0x6c(%rbp),%xmm0
movss  -0x58(%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  -0x7c(%rbp),%xmm0
movss  -0x58(%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  -0x8c(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
mov    0x10(%rbp),%rax
movss  0x4(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
cmpl   $0x2,0x20(%rbp)
jne    24c7 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x13c7>
jmp    294a <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x184a>
mov    -0x30(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  -0x58(%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  -0x6c(%rbp),%xmm0
movss  -0x58(%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  -0x7c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  0x18(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x60(%rbp),%xmm0
movss  -0x58(%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  -0x70(%rbp),%xmm0
movss  -0x58(%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  -0x80(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%rbp)
ff
mov    0x10(%rbp),%rax
movss  0x8(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x84(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x58(%rbp),%xmm0
mulss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
cmpl   $0x3,0x20(%rbp)
jne    26ae <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x15ae>
jmp    294a <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x184a>
mov    -0x30(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x5c(%rbp),%xmm0
movss  -0x58(%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  -0x6c(%rbp),%xmm0
movss  -0x58(%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  -0x7c(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  0x1c(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x60(%rbp),%xmm0
movss  -0x58(%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  -0x70(%rbp),%xmm0
movss  -0x58(%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  -0x80(%rbp),%xmm0
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    -0x30(%rbp),%rax
movss  0x2c(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x64(%rbp),%xmm0
movss  -0x58(%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  -0x74(%rbp),%xmm0
movss  -0x58(%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  -0x84(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
movss  -0x58(%rbp),%xmm2
movss  -0x98(%rbp),%xmm1
ff
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
mov    0x10(%rbp),%rax
movss  0xc(%rax),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x58(%rbp),%xmm0
mulss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x58(%rbp),%xmm0
mulss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x98(%rbp)
ff
cmpl   $0x4,0x18(%rbp)
jl     2a77 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1977>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0xc(%rax)
cmpl   $0x1,0x20(%rbp)
jne    299d <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x189d>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x1c(%rax)
cmpl   $0x2,0x20(%rbp)
jne    29e7 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x18e7>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x2c(%rax)
cmpl   $0x3,0x20(%rbp)
jne    2a34 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1934>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x38(%rax)
movss  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x3c(%rax)
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
cmpl   $0x3,0x18(%rbp)
jl     2b60 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1a60>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x8(%rax)
cmpl   $0x1,0x20(%rbp)
jne    2ab9 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x19b9>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x18(%rax)
cmpl   $0x2,0x20(%rbp)
jne    2af2 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x19f2>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x28(%rax)
cmpl   $0x3,0x20(%rbp)
jne    2b2e <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1a2e>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movss  %xmm0,0x38(%rax)
jmp    2c74 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b74>
cmpl   $0x2,0x18(%rbp)
jl     2c0b <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b0b>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x4(%rax)
cmpl   $0x1,0x20(%rbp)
jne    2b94 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1a94>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x14(%rax)
cmpl   $0x2,0x20(%rbp)
jne    2bbf <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1abf>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x24(%rax)
cmpl   $0x3,0x20(%rbp)
jne    2bea <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1aea>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x34(%rax)
jmp    2c6f <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b6f>
movss  -0x5c(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
cmpl   $0x1,0x20(%rbp)
jne    2c27 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b27>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x60(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x10(%rax)
cmpl   $0x2,0x20(%rbp)
jne    2c44 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b44>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x64(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x20(%rax)
cmpl   $0x3,0x20(%rbp)
jne    2c61 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b61>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
movss  -0x68(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,0x30(%rax)
jmp    2c74 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b74>
jmp    2c79 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x1b79>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_strsm_nt_rl_inv_4x4_vs_lib4>:
sub    $0xd8,%rsp
cmp    $0x4,%edi
jl     1505 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x405>
lea    -0x3(%rdi),%r10d
xorps  %xmm12,%xmm12
xor    %eax,%eax
xorps  %xmm15,%xmm15
xorps  %xmm8,%xmm8
xorps  %xmm11,%xmm11
xorps  %xmm13,%xmm13
xorps  %xmm0,%xmm0
movaps %xmm0,-0x70(%rsp)
xorps  %xmm10,%xmm10
cs nopw 0x0(%rax,%rax,1)
movaps %xmm11,-0x60(%rsp)
movaps %xmm8,-0x40(%rsp)
movaps %xmm15,0x70(%rsp)
movaps %xmm12,0xa0(%rsp)
movsd  0x4(%rsi),%xmm2
movsd  0x8(%rdx),%xmm6
movaps %xmm6,%xmm7
shufps $0x5,%xmm6,%xmm7
movss  0xc(%rsi),%xmm1
movss  (%rsi),%xmm0
unpcklps %xmm1,%xmm0
movaps %xmm0,%xmm5
movlhps %xmm0,%xmm5
movss  (%rdx),%xmm3
movss  0x4(%rdx),%xmm4
shufps $0x0,%xmm3,%xmm3
movaps %xmm2,%xmm1
mulps  %xmm3,%xmm1
subps  %xmm1,%xmm8
movaps %xmm0,%xmm1
movaps %xmm3,0xc0(%rsp)
mulps  %xmm3,%xmm1
movaps -0x70(%rsp),%xmm3
subps  %xmm1,%xmm3
shufps $0x0,%xmm4,%xmm4
movaps %xmm2,%xmm1
mulps  %xmm4,%xmm1
subps  %xmm1,%xmm11
movaps %xmm0,0x40(%rsp)
movaps %xmm0,%xmm1
movaps %xmm4,0xb0(%rsp)
mulps  %xmm4,%xmm1
subps  %xmm1,%xmm10
movaps %xmm6,%xmm1
shufps $0x0,%xmm6,%xmm1
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm13
shufps $0x55,%xmm6,%xmm6
movaps %xmm2,-0x50(%rsp)
movaps %xmm2,%xmm1
movaps %xmm6,0x90(%rsp)
mulps  %xmm6,%xmm1
subps  %xmm1,%xmm12
movaps %xmm7,0x60(%rsp)
mulps  %xmm7,%xmm5
subps  %xmm5,%xmm15
movsd  0x14(%rsi),%xmm1
movsd  0x18(%rdx),%xmm5
movss  0x1c(%rsi),%xmm0
movss  0x10(%rsi),%xmm4
unpcklps %xmm0,%xmm4
movss  0x10(%rdx),%xmm2
shufps $0x0,%xmm2,%xmm2
movaps %xmm1,%xmm0
mulps  %xmm2,%xmm0
subps  %xmm0,%xmm8
movaps %xmm4,%xmm0
movaps %xmm2,0x50(%rsp)
mulps  %xmm2,%xmm0
subps  %xmm0,%xmm3
movss  0x14(%rdx),%xmm2
shufps $0x0,%xmm2,%xmm2
movaps %xmm1,%xmm0
mulps  %xmm2,%xmm0
subps  %xmm0,%xmm11
movaps %xmm4,%xmm0
movaps %xmm2,0x30(%rsp)
mulps  %xmm2,%xmm0
subps  %xmm0,%xmm10
movaps %xmm5,%xmm0
shufps $0x0,%xmm5,%xmm0
mulps  %xmm1,%xmm0
subps  %xmm0,%xmm13
movaps %xmm5,%xmm2
shufps $0x55,%xmm5,%xmm5
movaps %xmm1,0x80(%rsp)
movaps %xmm1,%xmm0
movaps %xmm5,-0x10(%rsp)
mulps  %xmm5,%xmm0
subps  %xmm0,%xmm12
shufps $0x5,%xmm2,%xmm2
movaps %xmm4,-0x80(%rsp)
movaps %xmm4,%xmm0
movlhps %xmm4,%xmm0
movaps %xmm2,-0x30(%rsp)
mulps  %xmm2,%xmm0
subps  %xmm0,%xmm15
movss  0x2c(%rsi),%xmm1
movss  0x20(%rsi),%xmm0
unpcklps %xmm1,%xmm0
movss  0x20(%rdx),%xmm2
shufps $0x0,%xmm2,%xmm2
movsd  0x24(%rsi),%xmm4
movaps %xmm4,%xmm1
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm8
movaps %xmm0,%xmm1
movaps %xmm2,0x10(%rsp)
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm3
movss  0x24(%rdx),%xmm2
shufps $0x0,%xmm2,%xmm2
movaps %xmm4,%xmm1
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm11
movaps %xmm0,%xmm1
movaps %xmm2,(%rsp)
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm10
movsd  0x28(%rdx),%xmm6
movaps %xmm6,%xmm1
shufps $0x0,%xmm6,%xmm1
mulps  %xmm4,%xmm1
subps  %xmm1,%xmm13
movaps %xmm6,%xmm2
shufps $0x55,%xmm6,%xmm6
movaps %xmm4,0x20(%rsp)
movaps %xmm4,%xmm1
mulps  %xmm6,%xmm1
subps  %xmm1,%xmm12
shufps $0x5,%xmm2,%xmm2
movaps %xmm0,%xmm1
movlhps %xmm0,%xmm1
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm15
movss  0x3c(%rsi),%xmm1
movss  0x30(%rsi),%xmm14
unpcklps %xmm1,%xmm14
movss  0x30(%rdx),%xmm1
shufps $0x0,%xmm1,%xmm1
movsd  0x34(%rsi),%xmm5
movaps %xmm5,%xmm4
mulps  %xmm1,%xmm4
subps  %xmm4,%xmm8
movaps %xmm14,%xmm4
mulps  %xmm1,%xmm4
subps  %xmm4,%xmm3
movaps %xmm3,-0x70(%rsp)
movss  0x34(%rdx),%xmm3
shufps $0x0,%xmm3,%xmm3
movaps %xmm5,%xmm4
mulps  %xmm3,%xmm4
subps  %xmm4,%xmm11
movaps %xmm14,%xmm4
mulps  %xmm3,%xmm4
subps  %xmm4,%xmm10
movsd  0x38(%rdx),%xmm7
movaps %xmm7,%xmm4
shufps $0x0,%xmm7,%xmm4
mulps  %xmm5,%xmm4
subps  %xmm4,%xmm13
movaps %xmm7,%xmm9
shufps $0x55,%xmm7,%xmm7
movaps %xmm5,-0x20(%rsp)
mulps  %xmm7,%xmm5
subps  %xmm5,%xmm12
shufps $0x5,%xmm9,%xmm9
movaps %xmm14,%xmm4
movlhps %xmm14,%xmm4
mulps  %xmm9,%xmm4
subps  %xmm4,%xmm15
add    $0x40,%rsi
add    $0x40,%rdx
add    $0x4,%eax
cmp    %r10d,%eax
jl     1140 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x40>
movaps 0xc21(%rip),%xmm4
movaps 0x40(%rsp),%xmm8
xorps  %xmm4,%xmm8
movaps -0x50(%rsp),%xmm11
xorps  %xmm4,%xmm11
movaps -0x80(%rsp),%xmm5
xorps  %xmm4,%xmm5
movaps %xmm5,-0x80(%rsp)
movaps 0x80(%rsp),%xmm12
xorps  %xmm4,%xmm12
xorps  %xmm4,%xmm0
movaps 0x20(%rsp),%xmm5
xorps  %xmm4,%xmm5
xorps  %xmm4,%xmm14
movaps -0x20(%rsp),%xmm15
xorps  %xmm4,%xmm15
pshufd $0x44,%xmm8,%xmm8
mulps  0x60(%rsp),%xmm8
addps  0x70(%rsp),%xmm8
pshufd $0x44,-0x80(%rsp),%xmm4
mulps  -0x30(%rsp),%xmm4
addps  %xmm8,%xmm4
pshufd $0x44,%xmm0,%xmm0
mulps  %xmm2,%xmm0
addps  %xmm4,%xmm0
pshufd $0x44,%xmm14,%xmm2
mulps  %xmm9,%xmm2
addps  %xmm0,%xmm2
movaps 0x90(%rsp),%xmm0
mulps  %xmm11,%xmm0
addps  0xa0(%rsp),%xmm0
movaps -0x10(%rsp),%xmm4
mulps  %xmm12,%xmm4
addps  %xmm0,%xmm4
mulps  %xmm5,%xmm6
addps  %xmm4,%xmm6
mulps  %xmm15,%xmm7
addps  %xmm6,%xmm7
movaps 0xb0(%rsp),%xmm0
mulps  %xmm11,%xmm0
addps  -0x60(%rsp),%xmm0
movaps 0x30(%rsp),%xmm4
mulps  %xmm12,%xmm4
addps  %xmm0,%xmm4
movaps (%rsp),%xmm0
mulps  %xmm5,%xmm0
addps  %xmm4,%xmm0
mulps  %xmm15,%xmm3
addps  %xmm0,%xmm3
mulps  0xc0(%rsp),%xmm11
addps  -0x40(%rsp),%xmm11
mulps  0x50(%rsp),%xmm12
addps  %xmm11,%xmm12
mulps  0x10(%rsp),%xmm5
addps  %xmm12,%xmm5
mulps  %xmm1,%xmm15
addps  %xmm5,%xmm15
mov    %edi,%eax
and    $0xfffffffc,%eax
movaps %xmm13,%xmm11
movaps %xmm2,%xmm13
movaps %xmm3,%xmm12
movaps %xmm7,%xmm14
movaps %xmm15,%xmm1
movaps -0x70(%rsp),%xmm5
jmp    1521 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x421>
xorps  %xmm14,%xmm14
xor    %eax,%eax
xorps  %xmm11,%xmm11
xorps  %xmm13,%xmm13
xorps  %xmm5,%xmm5
xorps  %xmm10,%xmm10
xorps  %xmm1,%xmm1
xorps  %xmm12,%xmm12
mov    0xf0(%rsp),%r10d
mov    0xe0(%rsp),%r11
cmp    %edi,%eax
jge    1671 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x571>
sub    %eax,%edi
xor    %eax,%eax
movaps %xmm13,%xmm15
movaps %xmm11,%xmm13
movaps %xmm10,%xmm11
movaps %xmm14,%xmm7
nopl   (%rax)
movaps %xmm1,-0x70(%rsp)
movaps %xmm11,-0x40(%rsp)
movaps %xmm5,-0x80(%rsp)
movaps %xmm15,%xmm10
movaps %xmm13,-0x50(%rsp)
movaps %xmm7,-0x60(%rsp)
movsd  0x4(%rsi,%rax,1),%xmm8
movsd  0x8(%rdx,%rax,1),%xmm9
movaps %xmm9,%xmm6
shufps $0x5,%xmm9,%xmm6
movss  0xc(%rsi,%rax,1),%xmm0
movss  (%rsi,%rax,1),%xmm4
unpcklps %xmm0,%xmm4
movss  (%rdx,%rax,1),%xmm0
movss  0x4(%rdx,%rax,1),%xmm3
shufps $0x0,%xmm0,%xmm0
movaps %xmm8,%xmm2
mulps  %xmm0,%xmm2
subps  %xmm2,%xmm1
movaps %xmm4,%xmm2
mulps  %xmm0,%xmm2
subps  %xmm2,%xmm5
shufps $0x0,%xmm3,%xmm3
movaps %xmm8,%xmm2
mulps  %xmm3,%xmm2
subps  %xmm2,%xmm12
movaps %xmm4,%xmm2
mulps  %xmm3,%xmm2
subps  %xmm2,%xmm11
movaps %xmm9,%xmm2
shufps $0x0,%xmm9,%xmm2
movaps %xmm1,%xmm14
movaps %xmm8,%xmm1
mulps  %xmm2,%xmm1
subps  %xmm1,%xmm13
shufps $0x55,%xmm9,%xmm9
movaps %xmm8,%xmm1
mulps  %xmm9,%xmm1
subps  %xmm1,%xmm7
movaps %xmm4,%xmm1
movlhps %xmm4,%xmm1
mulps  %xmm6,%xmm1
subps  %xmm1,%xmm15
movaps %xmm14,%xmm1
add    $0x10,%rax
add    $0xffffffff,%edi
jne    1550 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x450>
movaps 0x9e4(%rip),%xmm1
xorps  %xmm1,%xmm4
pshufd $0x44,%xmm4,%xmm13
xorps  %xmm1,%xmm8
mulps  %xmm6,%xmm13
addps  %xmm10,%xmm13
mulps  %xmm8,%xmm9
addps  -0x60(%rsp),%xmm9
mulps  %xmm8,%xmm2
addps  -0x50(%rsp),%xmm2
mulps  %xmm4,%xmm3
addps  -0x40(%rsp),%xmm3
mulps  %xmm0,%xmm4
addps  -0x80(%rsp),%xmm4
mulps  %xmm0,%xmm8
addps  -0x70(%rsp),%xmm8
movaps %xmm9,%xmm14
movaps %xmm2,%xmm11
movaps %xmm4,%xmm5
movaps %xmm3,%xmm10
movaps %xmm8,%xmm1
mov    0xe8(%rsp),%edx
movsd  0x4(%rcx),%xmm4
addps  %xmm1,%xmm4
movss  0xc(%rcx),%xmm0
movss  (%rcx),%xmm2
unpcklps %xmm0,%xmm2
addps  %xmm5,%xmm2
movss  (%r11),%xmm1
shufps $0x0,%xmm1,%xmm1
mulps  %xmm1,%xmm4
mulps  %xmm2,%xmm1
cmp    $0x1,%r10d
jne    16d2 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x5d2>
cmp    $0x4,%edx
jl     1836 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x736>
movss  %xmm1,(%r8)
movss  %xmm4,0x4(%r8)
shufps $0x11,%xmm4,%xmm1
shufps $0xe2,%xmm4,%xmm1
mov    $0x3,%eax
mov    $0x2,%ecx
movaps %xmm1,%xmm4
jmp    19ac <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8ac>
movsd  0x24(%rcx),%xmm0
addps  %xmm0,%xmm11
movsd  0x34(%rcx),%xmm0
addps  %xmm0,%xmm14
movss  0x2c(%rcx),%xmm0
movss  0x20(%rcx),%xmm2
unpcklps %xmm0,%xmm2
movss  0x3c(%rcx),%xmm0
movss  0x30(%rcx),%xmm3
unpcklps %xmm0,%xmm3
movlhps %xmm2,%xmm3
addps  %xmm3,%xmm13
movsd  0x14(%rcx),%xmm0
addps  %xmm0,%xmm12
movss  0x1c(%rcx),%xmm0
movss  0x10(%rcx),%xmm2
unpcklps %xmm0,%xmm2
addps  %xmm2,%xmm10
movss  0x4(%r9),%xmm0
shufps $0x0,%xmm0,%xmm0
movaps %xmm4,%xmm2
mulps  %xmm0,%xmm2
subps  %xmm2,%xmm12
mulps  %xmm1,%xmm0
subps  %xmm0,%xmm10
movss  0x4(%r11),%xmm2
shufps $0x0,%xmm2,%xmm2
mulps  %xmm2,%xmm12
mulps  %xmm10,%xmm2
cmp    $0x2,%r10d
je     17ca <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x6ca>
movaps 0x8a6(%rip),%xmm8
movaps %xmm4,%xmm0
xorps  %xmm8,%xmm0
movaps %xmm1,%xmm9
xorps  %xmm8,%xmm9
movss  0x8(%r9),%xmm7
movss  0x18(%r9),%xmm6
shufps $0x0,%xmm7,%xmm7
movaps %xmm0,%xmm5
mulps  %xmm7,%xmm5
addps  %xmm11,%xmm5
movaps %xmm13,%xmm3
unpckhpd %xmm13,%xmm3
mulps  %xmm9,%xmm7
addps  %xmm3,%xmm7
shufps $0x0,%xmm6,%xmm6
movaps %xmm12,%xmm3
mulps  %xmm6,%xmm3
subps  %xmm3,%xmm5
mulps  %xmm2,%xmm6
subps  %xmm6,%xmm7
movss  0x8(%r11),%xmm6
shufps $0x0,%xmm6,%xmm6
movaps %xmm5,%xmm11
mulps  %xmm6,%xmm11
mulps  %xmm7,%xmm6
cmp    $0x3,%r10d
jne    1853 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x753>
movlhps %xmm6,%xmm13
cmp    $0x3,%edx
jle    18d0 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x7d0>
movlhps %xmm4,%xmm1
shufps $0x78,%xmm1,%xmm1
movups %xmm1,(%r8)
movlhps %xmm12,%xmm2
shufps $0x78,%xmm2,%xmm2
movups %xmm2,0x10(%r8)
cmp    $0x2,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movaps %xmm13,%xmm0
shufps $0x4e,%xmm11,%xmm0
shufps $0x78,%xmm0,%xmm0
movups %xmm0,0x20(%r8)
cmp    $0x3,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movss  %xmm13,0x30(%r8)
movss  %xmm14,0x34(%r8)
shufps $0x11,%xmm14,%xmm13
shufps $0xe2,%xmm14,%xmm13
mov    $0xf,%eax
mov    $0xe,%ecx
jmp    19a8 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8a8>
cmp    $0x3,%edx
jne    194c <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x84c>
movss  %xmm1,(%r8)
mov    $0x2,%eax
mov    $0x1,%ecx
jmp    19ac <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8ac>
movss  0xc(%r9),%xmm10
shufps $0x0,%xmm10,%xmm10
mulps  %xmm10,%xmm0
addps  %xmm14,%xmm0
movaps %xmm12,%xmm7
xorps  %xmm8,%xmm7
xorps  %xmm2,%xmm8
movss  0x1c(%r9),%xmm5
movss  0x2c(%r9),%xmm3
mulps  %xmm10,%xmm9
addps  %xmm13,%xmm9
shufps $0x0,%xmm5,%xmm5
mulps  %xmm5,%xmm7
addps  %xmm0,%xmm7
mulps  %xmm8,%xmm5
addps  %xmm9,%xmm5
shufps $0x0,%xmm3,%xmm3
movaps %xmm11,%xmm0
mulps  %xmm3,%xmm0
subps  %xmm0,%xmm7
mulps  %xmm6,%xmm3
subps  %xmm3,%xmm5
movss  0xc(%r11),%xmm13
shufps $0x0,%xmm13,%xmm13
mulps  %xmm13,%xmm7
mulps  %xmm5,%xmm13
movlhps %xmm6,%xmm13
movaps %xmm7,%xmm14
cmp    $0x3,%edx
jg     17d3 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x6d3>
jne    195d <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x85d>
movss  %xmm1,(%r8)
movss  %xmm4,0x4(%r8)
shufps $0x55,%xmm4,%xmm4
movss  %xmm4,0x8(%r8)
movss  %xmm2,0x10(%r8)
movss  %xmm12,0x14(%r8)
shufps $0x55,%xmm12,%xmm12
movss  %xmm12,0x18(%r8)
cmp    $0x2,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movaps %xmm13,%xmm0
unpckhpd %xmm13,%xmm0
movss  %xmm0,0x20(%r8)
movss  %xmm11,0x24(%r8)
shufps $0x55,%xmm11,%xmm11
movss  %xmm11,0x28(%r8)
cmp    $0x3,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movss  %xmm13,0x30(%r8)
mov    $0xe,%eax
mov    $0xd,%ecx
movaps %xmm14,%xmm4
jmp    19ac <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8ac>
movss  %xmm1,(%r8)
cmp    $0x1,%edx
jle    19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
mov    $0x1,%eax
jmp    19b6 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8b6>
movss  %xmm1,(%r8)
cmp    $0x1,%edx
jle    19c4 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8c4>
movss  %xmm4,0x4(%r8)
movss  %xmm2,0x10(%r8)
movss  %xmm12,0x14(%r8)
cmp    $0x2,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movaps %xmm13,%xmm0
unpckhpd %xmm13,%xmm0
movss  %xmm0,0x20(%r8)
movss  %xmm11,0x24(%r8)
cmp    $0x3,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
unpcklps %xmm14,%xmm13
mov    $0xd,%eax
mov    $0xc,%ecx
movaps %xmm13,%xmm4
movss  %xmm4,(%r8,%rcx,4)
shufps $0x55,%xmm4,%xmm4
movss  %xmm4,(%r8,%rax,4)
add    $0xd8,%rsp
ret
movss  %xmm2,0x10(%r8)
cmp    $0x2,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
movaps %xmm13,%xmm0
unpckhpd %xmm13,%xmm0
movss  %xmm0,0x20(%r8)
cmp    $0x3,%r10d
je     19bc <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8bc>
mov    $0xc,%eax
movaps %xmm13,%xmm4
jmp    19b6 <kernel_strsm_nt_rl_inv_4x4_vs_lib4+0x8b6>

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

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