void kernel_strmm_nt_ru_4x4_vs_lib4(int kmax, float *A, float *B, int alg,
                                    float *C, float *D, int km, int kn) {
  const int bs = 4;
  float a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3,
      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;
  k = 0;
  if (kmax > 0) {
    a_0 = A[0];
    a_1 = A[1];
    a_2 = A[2];
    a_3 = A[3];
    b_0 = B[0];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    A += 4;
    B += 4;
    k++;
  }
  if (kmax > 0) {
    a_0 = A[0];
    a_1 = A[1];
    a_2 = A[2];
    a_3 = A[3];
    b_0 = B[0];
    b_1 = B[1];
    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;
    A += 4;
    B += 4;
    k++;
  }
  if (kmax > 0) {
    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];
    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;
    A += 4;
    B += 4;
    k++;
  }
  for (; 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;
  }
  if (alg == 0) {
    goto store;
  } else {
    if (alg == 1) {
      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;
      goto store;
    } else {
      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;
      goto store;
    }
  }
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_strmm_nt_ru_4x4_vs_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x18,%rsp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movl   $0x4,-0x34(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x58(%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
movl   $0x0,-0x98(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    12af <kernel_strmm_nt_ru_4x4_vs_lib4+0x1af>
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)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%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    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    141e <kernel_strmm_nt_ru_4x4_vs_lib4+0x31e>
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)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%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    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
cmpl   $0x0,-0x4(%rbp)
jle    1611 <kernel_strmm_nt_ru_4x4_vs_lib4+0x511>
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)
movss  -0x38(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%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    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    1616 <kernel_strmm_nt_ru_4x4_vs_lib4+0x516>
mov    -0x98(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1f8c <kernel_strmm_nt_ru_4x4_vs_lib4+0xe8c>
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  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%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  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%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  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%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  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%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    -0x98(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x98(%rbp)
jmp    1616 <kernel_strmm_nt_ru_4x4_vs_lib4+0x516>
jmp    1f91 <kernel_strmm_nt_ru_4x4_vs_lib4+0xe91>
mov    -0x98(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2218 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1118>
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  -0x58(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x68(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x78(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x48(%rbp),%xmm2
movss  -0x88(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x5c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x6c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x7c(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm2
movss  -0x8c(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x60(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x80(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x44(%rbp),%xmm0
movss  -0x50(%rbp),%xmm2
movss  -0x90(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x38(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x64(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x3c(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x74(%rbp),%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x40(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x84(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x44(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x94(%rbp),%xmm1
ff
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x94(%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    -0x98(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x98(%rbp)
jmp    1f91 <kernel_strmm_nt_ru_4x4_vs_lib4+0xe91>
cmpl   $0x0,-0x1c(%rbp)
jne    2227 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1127>
jmp    24d0 <kernel_strmm_nt_ru_4x4_vs_lib4+0x13d0>
cmpl   $0x1,-0x1c(%rbp)
jne    2383 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1283>
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
addss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
mov    -0x28(%rbp),%rax
movss  0x4(%rax),%xmm0
addss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%rax
movss  0x8(%rax),%xmm0
addss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x28(%rbp),%rax
movss  0xc(%rax),%xmm0
addss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x10(%rax),%xmm0
addss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x14(%rax),%xmm0
addss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x18(%rax),%xmm0
addss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x1c(%rax),%xmm0
addss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x20(%rax),%xmm0
addss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x28(%rbp),%rax
movss  0x24(%rax),%xmm0
addss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x28(%rbp),%rax
movss  0x28(%rax),%xmm0
addss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x28(%rbp),%rax
movss  0x2c(%rax),%xmm0
addss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x30(%rax),%xmm0
addss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x28(%rbp),%rax
movss  0x34(%rax),%xmm0
addss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x28(%rbp),%rax
movss  0x38(%rax),%xmm0
addss  -0x84(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x3c(%rax),%xmm0
addss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
jmp    24d0 <kernel_strmm_nt_ru_4x4_vs_lib4+0x13d0>
mov    -0x28(%rbp),%rax
movss  (%rax),%xmm0
subss  -0x58(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
mov    -0x28(%rbp),%rax
movss  0x4(%rax),%xmm0
subss  -0x68(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
mov    -0x28(%rbp),%rax
movss  0x8(%rax),%xmm0
subss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
mov    -0x28(%rbp),%rax
movss  0xc(%rax),%xmm0
subss  -0x88(%rbp),%xmm0
ff
movss  %xmm0,-0x88(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x10(%rax),%xmm0
subss  -0x5c(%rbp),%xmm0
movss  %xmm0,-0x5c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x14(%rax),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x18(%rax),%xmm0
subss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
mov    -0x28(%rbp),%rax
movss  0x1c(%rax),%xmm0
subss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x8c(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x20(%rax),%xmm0
subss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x60(%rbp)
mov    -0x28(%rbp),%rax
movss  0x24(%rax),%xmm0
subss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
mov    -0x28(%rbp),%rax
movss  0x28(%rax),%xmm0
subss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
mov    -0x28(%rbp),%rax
movss  0x2c(%rax),%xmm0
subss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x90(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x30(%rax),%xmm0
subss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
mov    -0x28(%rbp),%rax
movss  0x34(%rax),%xmm0
subss  -0x74(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
mov    -0x28(%rbp),%rax
movss  0x38(%rax),%xmm0
subss  -0x84(%rbp),%xmm0
ff
movss  %xmm0,-0x84(%rbp)
ff
mov    -0x28(%rbp),%rax
movss  0x3c(%rax),%xmm0
subss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x94(%rbp)
ff
cmpl   $0x4,0x10(%rbp)
jl     25fa <kernel_strmm_nt_ru_4x4_vs_lib4+0x14fa>
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x8(%rax)
movss  -0x88(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0xc(%rax)
cmpl   $0x1,0x18(%rbp)
jne    2523 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1423>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x5c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x18(%rax)
movss  -0x8c(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0x1c(%rax)
cmpl   $0x2,0x18(%rbp)
jne    256d <kernel_strmm_nt_ru_4x4_vs_lib4+0x146d>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x28(%rax)
movss  -0x90(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0x2c(%rax)
cmpl   $0x3,0x18(%rbp)
jne    25b7 <kernel_strmm_nt_ru_4x4_vs_lib4+0x14b7>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x64(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0x38(%rax)
movss  -0x94(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0x3c(%rax)
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
cmpl   $0x3,0x10(%rbp)
jl     26e0 <kernel_strmm_nt_ru_4x4_vs_lib4+0x15e0>
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x4(%rax)
movss  -0x78(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x8(%rax)
cmpl   $0x1,0x18(%rbp)
jne    263c <kernel_strmm_nt_ru_4x4_vs_lib4+0x153c>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x5c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x14(%rax)
movss  -0x7c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x18(%rax)
cmpl   $0x2,0x18(%rbp)
jne    2675 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1575>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x24(%rax)
movss  -0x80(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x28(%rax)
cmpl   $0x3,0x18(%rbp)
jne    26ae <kernel_strmm_nt_ru_4x4_vs_lib4+0x15ae>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x64(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x34(%rax)
movss  -0x84(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movss  %xmm0,0x38(%rax)
jmp    27f4 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f4>
cmpl   $0x2,0x10(%rbp)
jl     278b <kernel_strmm_nt_ru_4x4_vs_lib4+0x168b>
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x68(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x4(%rax)
cmpl   $0x1,0x18(%rbp)
jne    2714 <kernel_strmm_nt_ru_4x4_vs_lib4+0x1614>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x5c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x10(%rax)
movss  -0x6c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x14(%rax)
cmpl   $0x2,0x18(%rbp)
jne    273f <kernel_strmm_nt_ru_4x4_vs_lib4+0x163f>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x20(%rax)
movss  -0x70(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x24(%rax)
cmpl   $0x3,0x18(%rbp)
jne    276a <kernel_strmm_nt_ru_4x4_vs_lib4+0x166a>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x64(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x30(%rax)
movss  -0x74(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x34(%rax)
jmp    27ef <kernel_strmm_nt_ru_4x4_vs_lib4+0x16ef>
movss  -0x58(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,(%rax)
cmpl   $0x1,0x18(%rbp)
jne    27a7 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16a7>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x5c(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x10(%rax)
cmpl   $0x2,0x18(%rbp)
jne    27c4 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16c4>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x60(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x20(%rax)
cmpl   $0x3,0x18(%rbp)
jne    27e1 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16e1>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
movss  -0x64(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movss  %xmm0,0x30(%rax)
jmp    27f4 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f4>
jmp    27f9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x16f9>
add    $0x18,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_strmm_nt_ru_4x4_vs_lib4>:
xorps  %xmm8,%xmm8
test   %edi,%edi
jle    118e <kernel_strmm_nt_ru_4x4_vs_lib4+0x8e>
movss  (%rdx),%xmm1
movss  0x10(%rdx),%xmm3
movss  0x14(%rdx),%xmm0
movss  0x20(%rdx),%xmm11
shufps $0x0,%xmm1,%xmm1
movups (%rsi),%xmm4
mulps  %xmm1,%xmm4
movups 0x10(%rsi),%xmm5
movups 0x20(%rsi),%xmm2
xorps  %xmm1,%xmm1
addps  %xmm1,%xmm4
shufps $0x0,%xmm3,%xmm3
mulps  %xmm5,%xmm3
addps  %xmm4,%xmm3
shufps $0x0,%xmm0,%xmm0
mulps  %xmm5,%xmm0
addps  %xmm1,%xmm0
shufps $0x0,%xmm11,%xmm11
mulps  %xmm2,%xmm11
addps  %xmm3,%xmm11
movss  0x24(%rdx),%xmm10
shufps $0x0,%xmm10,%xmm10
mulps  %xmm2,%xmm10
addps  %xmm0,%xmm10
movss  0x28(%rdx),%xmm9
shufps $0x0,%xmm9,%xmm9
mulps  %xmm2,%xmm9
addps  %xmm1,%xmm9
add    $0x30,%rsi
add    $0x30,%rdx
mov    $0x3,%eax
jmp    119c <kernel_strmm_nt_ru_4x4_vs_lib4+0x9c>
xor    %eax,%eax
xorps  %xmm9,%xmm9
xorps  %xmm10,%xmm10
xorps  %xmm11,%xmm11
lea    -0x3(%rdi),%r10d
cmp    %r10d,%eax
jge    1365 <kernel_strmm_nt_ru_4x4_vs_lib4+0x265>
xorps  %xmm13,%xmm13
xorps  %xmm14,%xmm14
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%rsi),%xmm0
movsd  0x8(%rsi),%xmm5
movsd  0x10(%rsi),%xmm8
movups (%rsi),%xmm6
movss  (%rdx),%xmm3
movss  0x4(%rdx),%xmm4
movss  0x8(%rdx),%xmm1
movss  0xc(%rdx),%xmm2
shufps $0x0,%xmm3,%xmm3
mulps  %xmm6,%xmm3
addps  %xmm11,%xmm3
shufps $0x0,%xmm4,%xmm4
mulps  %xmm6,%xmm4
addps  %xmm10,%xmm4
shufps $0x0,%xmm1,%xmm1
mulps  %xmm6,%xmm1
addps  %xmm9,%xmm1
shufps $0x0,%xmm2,%xmm2
mulps  %xmm2,%xmm0
addps  %xmm13,%xmm0
mulps  %xmm5,%xmm2
addps  %xmm14,%xmm2
movsd  0x18(%rsi),%xmm5
movups 0x10(%rsi),%xmm6
movss  0x10(%rdx),%xmm7
shufps $0x0,%xmm7,%xmm7
mulps  %xmm6,%xmm7
addps  %xmm3,%xmm7
movss  0x14(%rdx),%xmm3
shufps $0x0,%xmm3,%xmm3
mulps  %xmm6,%xmm3
addps  %xmm4,%xmm3
movss  0x18(%rdx),%xmm4
shufps $0x0,%xmm4,%xmm4
mulps  %xmm6,%xmm4
addps  %xmm1,%xmm4
movss  0x1c(%rdx),%xmm1
shufps $0x0,%xmm1,%xmm1
mulps  %xmm1,%xmm8
addps  %xmm0,%xmm8
mulps  %xmm5,%xmm1
addps  %xmm2,%xmm1
movsd  0x20(%rsi),%xmm6
movsd  0x28(%rsi),%xmm9
movups 0x20(%rsi),%xmm2
movss  0x20(%rdx),%xmm5
shufps $0x0,%xmm5,%xmm5
mulps  %xmm2,%xmm5
addps  %xmm7,%xmm5
movss  0x24(%rdx),%xmm7
shufps $0x0,%xmm7,%xmm7
mulps  %xmm2,%xmm7
addps  %xmm3,%xmm7
movss  0x28(%rdx),%xmm0
shufps $0x0,%xmm0,%xmm0
mulps  %xmm2,%xmm0
addps  %xmm4,%xmm0
movss  0x2c(%rdx),%xmm2
shufps $0x0,%xmm2,%xmm2
mulps  %xmm2,%xmm6
addps  %xmm8,%xmm6
mulps  %xmm9,%xmm2
addps  %xmm1,%xmm2
movsd  0x30(%rsi),%xmm8
movsd  0x38(%rsi),%xmm14
movups 0x30(%rsi),%xmm9
movss  0x30(%rdx),%xmm3
shufps $0x0,%xmm3,%xmm3
mulps  %xmm9,%xmm3
movaps %xmm3,%xmm11
addps  %xmm5,%xmm11
movss  0x34(%rdx),%xmm1
shufps $0x0,%xmm1,%xmm1
mulps  %xmm9,%xmm1
movaps %xmm1,%xmm10
addps  %xmm7,%xmm10
movss  0x38(%rdx),%xmm4
shufps $0x0,%xmm4,%xmm4
mulps  %xmm9,%xmm4
movaps %xmm4,%xmm9
addps  %xmm0,%xmm9
movss  0x3c(%rdx),%xmm12
shufps $0x0,%xmm12,%xmm12
mulps  %xmm12,%xmm8
movaps %xmm8,%xmm13
addps  %xmm6,%xmm13
mulps  %xmm14,%xmm12
movaps %xmm12,%xmm14
addps  %xmm2,%xmm14
add    $0x40,%rsi
add    $0x40,%rdx
add    $0x4,%eax
cmp    %r10d,%eax
jl     11c0 <kernel_strmm_nt_ru_4x4_vs_lib4+0xc0>
addps  %xmm2,%xmm12
addps  %xmm6,%xmm8
addps  %xmm0,%xmm4
addps  %xmm7,%xmm1
addps  %xmm5,%xmm3
movaps %xmm4,%xmm9
movaps %xmm1,%xmm10
movaps %xmm3,%xmm11
cmp    %edi,%eax
jl     1371 <kernel_strmm_nt_ru_4x4_vs_lib4+0x271>
jmp    1436 <kernel_strmm_nt_ru_4x4_vs_lib4+0x336>
xorps  %xmm12,%xmm12
cmp    %edi,%eax
jge    1436 <kernel_strmm_nt_ru_4x4_vs_lib4+0x336>
sub    %eax,%edi
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movaps %xmm11,%xmm13
movaps %xmm10,%xmm14
movaps %xmm9,%xmm15
movaps %xmm12,%xmm0
movaps %xmm8,%xmm7
movsd  (%rsi,%rax,1),%xmm4
movsd  0x8(%rsi,%rax,1),%xmm12
movups (%rsi,%rax,1),%xmm3
movss  (%rdx,%rax,1),%xmm2
movss  0x4(%rdx,%rax,1),%xmm5
movss  0x8(%rdx,%rax,1),%xmm6
movss  0xc(%rdx,%rax,1),%xmm1
shufps $0x0,%xmm2,%xmm2
mulps  %xmm3,%xmm2
movaps %xmm2,%xmm11
addps  %xmm13,%xmm11
shufps $0x0,%xmm5,%xmm5
mulps  %xmm3,%xmm5
movaps %xmm5,%xmm10
addps  %xmm14,%xmm10
shufps $0x0,%xmm6,%xmm6
mulps  %xmm3,%xmm6
movaps %xmm6,%xmm9
addps  %xmm15,%xmm9
shufps $0x0,%xmm1,%xmm1
mulps  %xmm1,%xmm4
movaps %xmm4,%xmm8
addps  %xmm7,%xmm8
mulps  %xmm12,%xmm1
movaps %xmm1,%xmm12
addps  %xmm0,%xmm12
add    $0x10,%rax
add    $0xffffffff,%edi
jne    1380 <kernel_strmm_nt_ru_4x4_vs_lib4+0x280>
addps  %xmm0,%xmm1
addps  %xmm7,%xmm4
addps  %xmm15,%xmm6
addps  %xmm14,%xmm5
addps  %xmm13,%xmm2
movaps %xmm4,%xmm8
movaps %xmm1,%xmm12
movaps %xmm6,%xmm9
movaps %xmm5,%xmm10
movaps %xmm2,%xmm11
mov    0x8(%rsp),%edx
test   %ecx,%ecx
je     14b5 <kernel_strmm_nt_ru_4x4_vs_lib4+0x3b5>
cmp    $0x1,%ecx
jne    1473 <kernel_strmm_nt_ru_4x4_vs_lib4+0x373>
movups (%r8),%xmm0
movups 0x10(%r8),%xmm1
movups 0x20(%r8),%xmm2
addps  %xmm0,%xmm11
addps  %xmm1,%xmm10
addps  %xmm2,%xmm9
movsd  0x30(%r8),%xmm0
addps  %xmm0,%xmm8
movsd  0x38(%r8),%xmm0
addps  %xmm0,%xmm12
jmp    14b5 <kernel_strmm_nt_ru_4x4_vs_lib4+0x3b5>
movups (%r8),%xmm0
movups 0x10(%r8),%xmm1
movups 0x20(%r8),%xmm2
subps  %xmm11,%xmm0
subps  %xmm10,%xmm1
subps  %xmm9,%xmm2
movsd  0x30(%r8),%xmm3
subps  %xmm8,%xmm3
movsd  0x38(%r8),%xmm4
subps  %xmm12,%xmm4
movaps %xmm3,%xmm8
movaps %xmm4,%xmm12
movaps %xmm2,%xmm9
movaps %xmm1,%xmm10
movaps %xmm0,%xmm11
mov    0x10(%rsp),%eax
cmp    $0x4,%edx
jl     1506 <kernel_strmm_nt_ru_4x4_vs_lib4+0x406>
movups %xmm11,(%r9)
cmp    $0x1,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movups %xmm10,0x10(%r9)
cmp    $0x2,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movups %xmm9,0x20(%r9)
cmp    $0x3,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm8,0x30(%r9)
shufps $0x55,%xmm8,%xmm8
mov    $0xf,%eax
mov    $0xe,%ecx
mov    $0xd,%edx
jmp    159f <kernel_strmm_nt_ru_4x4_vs_lib4+0x49f>
cmp    $0x3,%edx
jne    15bc <kernel_strmm_nt_ru_4x4_vs_lib4+0x4bc>
movss  %xmm11,(%r9)
movaps %xmm11,%xmm0
shufps $0x55,%xmm11,%xmm0
movss  %xmm0,0x4(%r9)
movhlps %xmm11,%xmm11
movss  %xmm11,0x8(%r9)
cmp    $0x1,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm10,0x10(%r9)
movaps %xmm10,%xmm0
shufps $0x55,%xmm10,%xmm0
movss  %xmm0,0x14(%r9)
movhlps %xmm10,%xmm10
movss  %xmm10,0x18(%r9)
cmp    $0x2,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm9,0x20(%r9)
movaps %xmm9,%xmm0
shufps $0x55,%xmm9,%xmm0
movss  %xmm0,0x24(%r9)
movhlps %xmm9,%xmm9
movss  %xmm9,0x28(%r9)
cmp    $0x3,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
shufps $0x10,%xmm8,%xmm12
shufps $0xe2,%xmm8,%xmm12
mov    $0xe,%eax
mov    $0xd,%ecx
mov    $0xc,%edx
movss  %xmm8,(%r9,%rdx,4)
movaps %xmm12,%xmm8
movss  %xmm8,(%r9,%rcx,4)
shufps $0x55,%xmm8,%xmm8
movss  %xmm8,(%r9,%rax,4)
jmp    1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm11,(%r9)
cmp    $0x2,%edx
jl     160e <kernel_strmm_nt_ru_4x4_vs_lib4+0x50e>
shufps $0x55,%xmm11,%xmm11
movss  %xmm11,0x4(%r9)
cmp    $0x1,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm10,0x10(%r9)
shufps $0x55,%xmm10,%xmm10
movss  %xmm10,0x14(%r9)
cmp    $0x2,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm9,0x20(%r9)
shufps $0x55,%xmm9,%xmm9
movss  %xmm9,0x24(%r9)
cmp    $0x3,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
mov    $0xd,%eax
mov    $0xc,%ecx
jmp    15a9 <kernel_strmm_nt_ru_4x4_vs_lib4+0x4a9>
cmp    $0x1,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm10,0x10(%r9)
cmp    $0x2,%eax
je     1629 <kernel_strmm_nt_ru_4x4_vs_lib4+0x529>
movss  %xmm9,0x20(%r9)
cmp    $0x3,%eax
jne    162a <kernel_strmm_nt_ru_4x4_vs_lib4+0x52a>
ret
mov    $0xc,%eax
jmp    15b4 <kernel_strmm_nt_ru_4x4_vs_lib4+0x4b4>

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

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