void kernel_dgemm_nt_4x4_lib4(int kmax, double *A, double *B, double *C,
                              double *D, int alg, int tc, int td) {
  if (kmax <= 0)
    return;
  const int bs = 4;
  int k;
  double a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3, 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;
  a_0 = A[0 + bs * 0];
  a_1 = A[1 + bs * 0];
  a_2 = A[2 + bs * 0];
  a_3 = A[3 + bs * 0];
  b_0 = B[0 + bs * 0];
  b_1 = B[1 + bs * 0];
  b_2 = B[2 + bs * 0];
  b_3 = B[3 + bs * 0];
  k = 0;
  for (; k < kmax - 3; k += 4) {
    A_0 = A[0 + bs * 1];
    A_1 = A[1 + bs * 1];
    A_2 = A[2 + bs * 1];
    A_3 = A[3 + bs * 1];
    B_0 = B[0 + bs * 1];
    B_1 = B[1 + bs * 1];
    B_2 = B[2 + bs * 1];
    B_3 = B[3 + bs * 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;
    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[0 + bs * 2];
    a_1 = A[1 + bs * 2];
    a_2 = A[2 + bs * 2];
    a_3 = A[3 + bs * 2];
    b_0 = B[0 + bs * 2];
    b_1 = B[1 + bs * 2];
    b_2 = B[2 + bs * 2];
    b_3 = B[3 + bs * 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;
    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[0 + bs * 3];
    A_1 = A[1 + bs * 3];
    A_2 = A[2 + bs * 3];
    A_3 = A[3 + bs * 3];
    B_0 = B[0 + bs * 3];
    B_1 = B[1 + bs * 3];
    B_2 = B[2 + bs * 3];
    B_3 = B[3 + bs * 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[0 + bs * 4];
    a_1 = A[1 + bs * 4];
    a_2 = A[2 + bs * 4];
    a_3 = A[3 + bs * 4];
    b_0 = B[0 + bs * 4];
    b_1 = B[1 + bs * 4];
    b_2 = B[2 + bs * 4];
    b_3 = B[3 + bs * 4];
    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 + bs * 0];
    a_1 = A[1 + bs * 0];
    a_2 = A[2 + bs * 0];
    a_3 = A[3 + bs * 0];
    b_0 = B[0 + bs * 0];
    b_1 = B[1 + bs * 0];
    b_2 = B[2 + bs * 0];
    b_3 = B[3 + bs * 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;
    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;
  }
  double d_00, d_01, d_02, d_03, d_10, d_11, d_12, d_13, d_20, d_21, d_22, d_23,
      d_30, d_31, d_32, d_33;
  if (alg == 0) {
    if (td == 0) {
      D[0 + bs * 0] = c_00;
      D[1 + bs * 0] = c_10;
      D[2 + bs * 0] = c_20;
      D[3 + bs * 0] = c_30;
      D[0 + bs * 1] = c_01;
      D[1 + bs * 1] = c_11;
      D[2 + bs * 1] = c_21;
      D[3 + bs * 1] = c_31;
      D[0 + bs * 2] = c_02;
      D[1 + bs * 2] = c_12;
      D[2 + bs * 2] = c_22;
      D[3 + bs * 2] = c_32;
      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 {
      D[0 + bs * 0] = c_00;
      D[1 + bs * 0] = c_01;
      D[2 + bs * 0] = c_02;
      D[3 + bs * 0] = c_03;
      D[0 + bs * 1] = c_10;
      D[1 + bs * 1] = c_11;
      D[2 + bs * 1] = c_12;
      D[3 + bs * 1] = c_13;
      D[0 + bs * 2] = c_20;
      D[1 + bs * 2] = c_21;
      D[2 + bs * 2] = c_22;
      D[3 + bs * 2] = c_23;
      D[0 + bs * 3] = c_30;
      D[1 + bs * 3] = c_31;
      D[2 + bs * 3] = c_32;
      D[3 + bs * 3] = c_33;
    }
  } else {
    if (tc == 0) {
      d_00 = C[0 + bs * 0];
      d_10 = C[1 + bs * 0];
      d_20 = C[2 + bs * 0];
      d_30 = C[3 + bs * 0];
      d_01 = C[0 + bs * 1];
      d_11 = C[1 + bs * 1];
      d_21 = C[2 + bs * 1];
      d_31 = C[3 + bs * 1];
      d_02 = C[0 + bs * 2];
      d_12 = C[1 + bs * 2];
      d_22 = C[2 + bs * 2];
      d_32 = C[3 + bs * 2];
      d_03 = C[0 + bs * 3];
      d_13 = C[1 + bs * 3];
      d_23 = C[2 + bs * 3];
      d_33 = C[3 + bs * 3];
    } else {
      d_00 = C[0 + bs * 0];
      d_01 = C[1 + bs * 0];
      d_02 = C[2 + bs * 0];
      d_03 = C[3 + bs * 0];
      d_10 = C[0 + bs * 1];
      d_11 = C[1 + bs * 1];
      d_12 = C[2 + bs * 1];
      d_13 = C[3 + bs * 1];
      d_20 = C[0 + bs * 2];
      d_21 = C[1 + bs * 2];
      d_22 = C[2 + bs * 2];
      d_23 = C[3 + bs * 2];
      d_30 = C[0 + bs * 3];
      d_31 = C[1 + bs * 3];
      d_32 = C[2 + bs * 3];
      d_33 = C[3 + bs * 3];
    }
    if (alg == 1) {
      d_00 += c_00;
      d_10 += c_10;
      d_20 += c_20;
      d_30 += c_30;
      d_01 += c_01;
      d_11 += c_11;
      d_21 += c_21;
      d_31 += c_31;
      d_02 += c_02;
      d_12 += c_12;
      d_22 += c_22;
      d_32 += c_32;
      d_03 += c_03;
      d_13 += c_13;
      d_23 += c_23;
      d_33 += c_33;
    } else {
      d_00 -= c_00;
      d_10 -= c_10;
      d_20 -= c_20;
      d_30 -= c_30;
      d_01 -= c_01;
      d_11 -= c_11;
      d_21 -= c_21;
      d_31 -= c_31;
      d_02 -= c_02;
      d_12 -= c_12;
      d_22 -= c_22;
      d_32 -= c_32;
      d_03 -= c_03;
      d_13 -= c_13;
      d_23 -= c_23;
      d_33 -= c_33;
    }
    if (td == 0) {
      D[0 + bs * 0] = d_00;
      D[1 + bs * 0] = d_10;
      D[2 + bs * 0] = d_20;
      D[3 + bs * 0] = d_30;
      D[0 + bs * 1] = d_01;
      D[1 + bs * 1] = d_11;
      D[2 + bs * 1] = d_21;
      D[3 + bs * 1] = d_31;
      D[0 + bs * 2] = d_02;
      D[1 + bs * 2] = d_12;
      D[2 + bs * 2] = d_22;
      D[3 + bs * 2] = d_32;
      D[0 + bs * 3] = d_03;
      D[1 + bs * 3] = d_13;
      D[2 + bs * 3] = d_23;
      D[3 + bs * 3] = d_33;
    } else {
      D[0 + bs * 0] = d_00;
      D[1 + bs * 0] = d_01;
      D[2 + bs * 0] = d_02;
      D[3 + bs * 0] = d_03;
      D[0 + bs * 1] = d_10;
      D[1 + bs * 1] = d_11;
      D[2 + bs * 1] = d_12;
      D[3 + bs * 1] = d_13;
      D[0 + bs * 2] = d_20;
      D[1 + bs * 2] = d_21;
      D[2 + bs * 2] = d_22;
      D[3 + bs * 2] = d_23;
      D[0 + bs * 3] = d_30;
      D[1 + bs * 3] = d_31;
      D[2 + bs * 3] = d_32;
      D[3 + bs * 3] = d_33;
    }
  }
}


x86 assembly (clang, -O0):
<kernel_dgemm_nt_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x138,%rsp
mov    0x18(%rbp),%eax
mov    0x10(%rbp),%eax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
cmpl   $0x0,-0x4(%rbp)
jg     1137 <kernel_dgemm_nt_4x4_lib4+0x37>
jmp    2a77 <kernel_dgemm_nt_4x4_lib4+0x1977>
movl   $0x4,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1dc8 <kernel_dgemm_nt_4x4_lib4+0xcc8>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x34(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
jmp    1263 <kernel_dgemm_nt_4x4_lib4+0x163>
jmp    1dcd <kernel_dgemm_nt_4x4_lib4+0xccd>
mov    -0x34(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    208d <kernel_dgemm_nt_4x4_lib4+0xf8d>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x138(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1dcd <kernel_dgemm_nt_4x4_lib4+0xccd>
cmpl   $0x0,-0x2c(%rbp)
jne    22c9 <kernel_dgemm_nt_4x4_lib4+0x11c9>
cmpl   $0x0,0x18(%rbp)
jne    21b5 <kernel_dgemm_nt_4x4_lib4+0x10b5>
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    22c4 <kernel_dgemm_nt_4x4_lib4+0x11c4>
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2a77 <kernel_dgemm_nt_4x4_lib4+0x1977>
cmpl   $0x0,0x10(%rbp)
jne    23e7 <kernel_dgemm_nt_4x4_lib4+0x12e7>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
jmp    24f6 <kernel_dgemm_nt_4x4_lib4+0x13f6>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
cmpl   $0x1,-0x2c(%rbp)
jne    2685 <kernel_dgemm_nt_4x4_lib4+0x1585>
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
addsd  -0x1a0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x1a8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x190(%rbp),%xmm0
ff
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
addsd  -0x1b0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x198(%rbp),%xmm0
ff
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
addsd  -0x1b8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
jmp    2845 <kernel_dgemm_nt_4x4_lib4+0x1745>
movsd  -0xc0(%rbp),%xmm1
ff
movsd  -0x140(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe0(%rbp),%xmm1
ff
movsd  -0x160(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x100(%rbp),%xmm1
ff
movsd  -0x180(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x1a0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xe8(%rbp),%xmm1
ff
movsd  -0x168(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x108(%rbp),%xmm1
ff
movsd  -0x188(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x1a8(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x150(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xf0(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0x190(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0x158(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xf8(%rbp),%xmm1
ff
movsd  -0x178(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x118(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x138(%rbp),%xmm1
ff
movsd  -0x1b8(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
cmpl   $0x0,0x18(%rbp)
jne    2963 <kernel_dgemm_nt_4x4_lib4+0x1863>
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x180(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x1a0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x188(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x190(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x1b0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x198(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2a72 <kernel_dgemm_nt_4x4_lib4+0x1972>
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x180(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x188(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x190(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x198(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x1a0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x1a8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x1b0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x1b8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2a77 <kernel_dgemm_nt_4x4_lib4+0x1977>
add    $0x138,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dgemm_nt_4x4_lib4>:
test   %edi,%edi
jle    199b <kernel_dgemm_nt_4x4_lib4+0x89b>
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
cmp    $0x4,%edi
jb     1651 <kernel_dgemm_nt_4x4_lib4+0x551>
lea    -0x3(%rdi),%r10d
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x80(%rsp)
xor    %eax,%eax
xorpd  %xmm8,%xmm8
xorpd  %xmm2,%xmm2
xorpd  %xmm9,%xmm9
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x50(%rsp)
xorpd  %xmm5,%xmm5
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x40(%rsp)
xorpd  %xmm11,%xmm11
nopw   0x0(%rax,%rax,1)
movupd 0x10(%rsi),%xmm10
movupd (%rdx),%xmm3
movupd 0x10(%rdx),%xmm0
movups 0x20(%rdx),%xmm1
movaps %xmm1,-0x60(%rsp)
movups 0x30(%rdx),%xmm1
movaps %xmm1,-0x70(%rsp)
movapd %xmm3,%xmm7
unpcklpd %xmm3,%xmm7
mulpd  %xmm10,%xmm7
addpd  %xmm8,%xmm7
movsd  (%rsi),%xmm6
movapd %xmm5,%xmm14
movsd  0x8(%rsi),%xmm5
unpcklpd %xmm6,%xmm6
movapd %xmm6,%xmm8
mulpd  %xmm3,%xmm8
addpd  %xmm11,%xmm8
unpcklpd %xmm5,%xmm5
movapd %xmm5,%xmm4
mulpd  %xmm3,%xmm4
addpd  %xmm2,%xmm4
movupd 0x30(%rsi),%xmm13
unpckhpd %xmm3,%xmm3
mulpd  %xmm10,%xmm3
addpd  -0x50(%rsp),%xmm3
mulpd  %xmm0,%xmm6
addpd  -0x80(%rsp),%xmm6
mulpd  %xmm0,%xmm5
addpd  %xmm9,%xmm5
movapd %xmm10,%xmm1
unpcklpd %xmm10,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm14,%xmm1
unpckhpd %xmm10,%xmm10
mulpd  %xmm0,%xmm10
addpd  -0x40(%rsp),%xmm10
movupd 0x50(%rsi),%xmm15
movupd 0x40(%rdx),%xmm12
movapd -0x60(%rsp),%xmm0
movapd %xmm0,%xmm2
unpcklpd %xmm0,%xmm2
mulpd  %xmm13,%xmm2
addpd  %xmm7,%xmm2
movsd  0x20(%rsi),%xmm11
unpcklpd %xmm11,%xmm11
movapd %xmm11,%xmm14
mulpd  %xmm0,%xmm14
addpd  %xmm8,%xmm14
movsd  0x28(%rsi),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm7,%xmm8
mulpd  %xmm0,%xmm8
addpd  %xmm4,%xmm8
movups 0x50(%rdx),%xmm4
movaps %xmm4,-0x80(%rsp)
unpckhpd %xmm0,%xmm0
mulpd  %xmm13,%xmm0
addpd  %xmm3,%xmm0
movapd %xmm0,%xmm4
movapd -0x70(%rsp),%xmm0
mulpd  %xmm0,%xmm11
addpd  %xmm6,%xmm11
mulpd  %xmm0,%xmm7
addpd  %xmm5,%xmm7
movapd %xmm13,%xmm9
unpcklpd %xmm13,%xmm9
mulpd  %xmm0,%xmm9
addpd  %xmm1,%xmm9
unpckhpd %xmm13,%xmm13
mulpd  %xmm0,%xmm13
addpd  %xmm10,%xmm13
movupd 0x70(%rsi),%xmm10
movupd 0x60(%rdx),%xmm5
movapd %xmm12,%xmm3
unpcklpd %xmm12,%xmm3
mulpd  %xmm15,%xmm3
addpd  %xmm2,%xmm3
movsd  0x40(%rsi),%xmm1
unpcklpd %xmm1,%xmm1
movapd %xmm1,%xmm2
mulpd  %xmm12,%xmm2
addpd  %xmm14,%xmm2
movapd %xmm2,-0x70(%rsp)
movsd  0x48(%rsi),%xmm6
unpcklpd %xmm6,%xmm6
movapd %xmm6,%xmm0
mulpd  %xmm12,%xmm0
addpd  %xmm8,%xmm0
movupd 0x70(%rdx),%xmm8
unpckhpd %xmm12,%xmm12
mulpd  %xmm15,%xmm12
addpd  %xmm4,%xmm12
movapd -0x80(%rsp),%xmm2
mulpd  %xmm2,%xmm1
addpd  %xmm11,%xmm1
mulpd  %xmm2,%xmm6
addpd  %xmm7,%xmm6
movapd %xmm15,%xmm7
unpcklpd %xmm15,%xmm7
mulpd  %xmm2,%xmm7
addpd  %xmm9,%xmm7
unpckhpd %xmm15,%xmm15
mulpd  %xmm2,%xmm15
addpd  %xmm13,%xmm15
movapd %xmm5,%xmm14
unpcklpd %xmm5,%xmm14
movapd %xmm10,%xmm2
mulpd  %xmm10,%xmm14
movsd  0x60(%rsi),%xmm13
unpcklpd %xmm13,%xmm13
movapd %xmm13,%xmm11
mulpd  %xmm5,%xmm11
movsd  0x68(%rsi),%xmm4
unpcklpd %xmm4,%xmm4
movapd %xmm4,%xmm9
mulpd  %xmm5,%xmm9
unpckhpd %xmm5,%xmm5
mulpd  %xmm10,%xmm5
mulpd  %xmm8,%xmm13
mulpd  %xmm8,%xmm4
unpcklpd %xmm10,%xmm10
mulpd  %xmm8,%xmm10
unpckhpd %xmm2,%xmm2
mulpd  %xmm8,%xmm2
add    $0x80,%rsi
sub    $0xffffffffffffff80,%rdx
movapd %xmm14,%xmm8
addpd  %xmm3,%xmm8
movapd %xmm11,-0x30(%rsp)
addpd  -0x70(%rsp),%xmm11
movapd %xmm9,-0x20(%rsp)
addpd  %xmm0,%xmm9
movapd %xmm9,-0x60(%rsp)
movapd %xmm5,-0x10(%rsp)
addpd  %xmm12,%xmm5
movapd %xmm5,-0x50(%rsp)
movapd %xmm13,%xmm5
addpd  %xmm1,%xmm5
movapd %xmm5,-0x80(%rsp)
movapd %xmm4,%xmm9
addpd  %xmm6,%xmm9
movapd %xmm10,%xmm5
addpd  %xmm7,%xmm5
movapd %xmm2,(%rsp)
addpd  %xmm15,%xmm2
movapd %xmm2,-0x40(%rsp)
movapd -0x60(%rsp),%xmm2
add    $0x4,%eax
cmp    %r10d,%eax
jl     1160 <kernel_dgemm_nt_4x4_lib4+0x60>
movapd (%rsp),%xmm8
addpd  %xmm15,%xmm8
addpd  %xmm7,%xmm10
addpd  %xmm6,%xmm4
addpd  %xmm1,%xmm13
movapd -0x10(%rsp),%xmm11
addpd  %xmm12,%xmm11
movapd -0x20(%rsp),%xmm6
addpd  %xmm0,%xmm6
movapd -0x30(%rsp),%xmm0
addpd  -0x70(%rsp),%xmm0
addpd  %xmm3,%xmm14
mov    %edi,%eax
and    $0xfffffffc,%eax
movapd %xmm8,%xmm15
movapd %xmm13,%xmm5
movapd %xmm0,%xmm8
cmp    %edi,%eax
jl     1680 <kernel_dgemm_nt_4x4_lib4+0x580>
test   %r9d,%r9d
je     1822 <kernel_dgemm_nt_4x4_lib4+0x722>
movapd %xmm8,%xmm12
movapd %xmm4,-0x50(%rsp)
movapd %xmm10,-0x40(%rsp)
movapd %xmm5,-0x80(%rsp)
movapd %xmm6,-0x20(%rsp)
movapd %xmm14,%xmm10
movapd %xmm11,-0x10(%rsp)
mov    %r8,-0x70(%rsp)
movapd %xmm15,(%rsp)
mov    %r9d,%r8d
lea    0x70(%rcx),%r9
lea    0x58(%rcx),%r10
lea    0x68(%rcx),%r12
lea    0x38(%rcx),%rax
lea    0x60(%rcx),%r11
lea    0x18(%rcx),%rdi
lea    0x48(%rcx),%r13
lea    0x30(%rcx),%rsi
lea    0x40(%rcx),%r15
lea    0x10(%rcx),%rdx
lea    0x20(%rcx),%r14
cmpl   $0x0,0x60(%rsp)
mov    %r9,%rbp
cmove  %r10,%rbp
lea    0x8(%rcx),%rbx
movsd  0x0(%rbp),%xmm15
mov    %r12,%rbp
cmove  %rax,%rbp
movsd  0x78(%rcx),%xmm0
movaps %xmm0,-0x60(%rsp)
movsd  0x0(%rbp),%xmm13
mov    %r11,%rbp
cmove  %rdi,%rbp
movsd  0x0(%rbp),%xmm11
cmove  %r9,%r10
movsd  (%r10),%xmm0
movaps %xmm0,-0x30(%rsp)
movsd  0x50(%rcx),%xmm2
mov    %r13,%rbp
cmove  %rsi,%rbp
movsd  0x0(%rbp),%xmm4
mov    %r15,%rbp
cmove  %rdx,%rbp
cmove  %r12,%rax
movsd  0x0(%rbp),%xmm7
movsd  (%rax),%xmm9
cmove  %r13,%rsi
movsd  (%rsi),%xmm5
movsd  (%rcx),%xmm1
mov    %r14,%rax
cmove  %rbx,%rax
movsd  0x28(%rcx),%xmm14
movsd  (%rax),%xmm3
cmove  %r11,%rdi
movsd  (%rdi),%xmm8
cmove  %r15,%rdx
movsd  (%rdx),%xmm6
cmove  %r14,%rbx
movsd  (%rbx),%xmm0
unpcklpd %xmm11,%xmm7
cmp    $0x1,%r8d
jne    185b <kernel_dgemm_nt_4x4_lib4+0x75b>
addpd  %xmm7,%xmm10
unpcklpd %xmm0,%xmm1
addpd  %xmm1,%xmm12
movapd %xmm12,%xmm1
unpcklpd %xmm14,%xmm3
movapd -0x20(%rsp),%xmm12
addpd  %xmm3,%xmm12
unpcklpd %xmm13,%xmm4
movapd -0x10(%rsp),%xmm11
addpd  %xmm4,%xmm11
unpcklpd %xmm8,%xmm6
movapd %xmm10,%xmm14
movapd -0x80(%rsp),%xmm8
addpd  %xmm6,%xmm8
movapd %xmm12,%xmm6
unpcklpd %xmm9,%xmm5
movapd -0x50(%rsp),%xmm9
addpd  %xmm5,%xmm9
unpcklpd -0x30(%rsp),%xmm2
movapd -0x40(%rsp),%xmm10
addpd  %xmm2,%xmm10
unpcklpd -0x60(%rsp),%xmm15
movapd (%rsp),%xmm0
addpd  %xmm15,%xmm0
movapd %xmm0,%xmm15
jmp    18cb <kernel_dgemm_nt_4x4_lib4+0x7cb>
xorpd  %xmm5,%xmm5
xor    %eax,%eax
xorpd  %xmm14,%xmm14
xorpd  %xmm6,%xmm6
xorpd  %xmm4,%xmm4
xorpd  %xmm11,%xmm11
xorpd  %xmm10,%xmm10
xorpd  %xmm15,%xmm15
xorpd  %xmm8,%xmm8
cmp    %edi,%eax
jge    14a3 <kernel_dgemm_nt_4x4_lib4+0x3a3>
sub    %eax,%edi
xor    %eax,%eax
movapd %xmm14,-0x70(%rsp)
movapd %xmm4,%xmm13
movapd %xmm6,%xmm9
movapd %xmm5,%xmm12
movapd %xmm10,%xmm14
nop
movupd 0x10(%rsi,%rax,1),%xmm0
movupd (%rdx,%rax,1),%xmm1
movupd 0x10(%rdx,%rax,1),%xmm7
movapd %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm0,%xmm2
movsd  (%rsi,%rax,1),%xmm5
movsd  0x8(%rsi,%rax,1),%xmm4
unpcklpd %xmm5,%xmm5
movapd %xmm5,%xmm3
mulpd  %xmm1,%xmm3
movapd %xmm3,-0x60(%rsp)
unpcklpd %xmm4,%xmm4
movapd %xmm4,%xmm10
mulpd  %xmm1,%xmm10
unpckhpd %xmm1,%xmm1
mulpd  %xmm0,%xmm1
mulpd  %xmm7,%xmm5
mulpd  %xmm7,%xmm4
movapd %xmm7,%xmm6
movapd %xmm0,%xmm7
unpcklpd %xmm0,%xmm7
mulpd  %xmm6,%xmm7
unpckhpd %xmm0,%xmm0
mulpd  %xmm6,%xmm0
movapd %xmm8,-0x80(%rsp)
movapd %xmm15,-0x50(%rsp)
movapd %xmm14,-0x40(%rsp)
movapd %xmm11,%xmm14
movapd %xmm13,%xmm15
movapd -0x70(%rsp),%xmm6
movapd %xmm12,%xmm13
movapd %xmm2,%xmm3
movapd %xmm6,(%rsp)
addpd  %xmm6,%xmm3
movapd %xmm9,%xmm6
movapd %xmm3,-0x70(%rsp)
movapd -0x60(%rsp),%xmm8
addpd  -0x80(%rsp),%xmm8
movapd %xmm10,%xmm9
movapd %xmm6,0x10(%rsp)
addpd  %xmm6,%xmm9
movapd %xmm1,%xmm11
movapd %xmm14,-0x10(%rsp)
addpd  %xmm14,%xmm11
movapd %xmm5,%xmm12
movapd %xmm13,-0x20(%rsp)
addpd  %xmm13,%xmm12
movapd %xmm4,%xmm13
movapd %xmm15,-0x30(%rsp)
addpd  %xmm15,%xmm13
movapd %xmm7,%xmm14
addpd  -0x40(%rsp),%xmm14
movapd %xmm0,%xmm15
addpd  -0x50(%rsp),%xmm15
add    $0x20,%rax
add    $0xffffffff,%edi
jne    16a0 <kernel_dgemm_nt_4x4_lib4+0x5a0>
addpd  -0x50(%rsp),%xmm0
addpd  -0x40(%rsp),%xmm7
addpd  -0x30(%rsp),%xmm4
addpd  -0x20(%rsp),%xmm5
addpd  -0x10(%rsp),%xmm1
addpd  0x10(%rsp),%xmm10
movapd -0x60(%rsp),%xmm8
addpd  -0x80(%rsp),%xmm8
addpd  (%rsp),%xmm2
movapd %xmm2,%xmm14
movapd %xmm10,%xmm6
movapd %xmm1,%xmm11
movapd %xmm7,%xmm10
movapd %xmm0,%xmm15
test   %r9d,%r9d
jne    14ac <kernel_dgemm_nt_4x4_lib4+0x3ac>
movlpd %xmm8,(%r8)
cmpl   $0x0,0x68(%rsp)
je     1930 <kernel_dgemm_nt_4x4_lib4+0x830>
movhpd %xmm8,0x8(%r8)
movapd %xmm14,%xmm0
unpckhpd %xmm11,%xmm0
movapd %xmm14,%xmm1
movapd %xmm11,%xmm2
movapd %xmm5,%xmm14
movapd %xmm4,%xmm11
jmp    195d <kernel_dgemm_nt_4x4_lib4+0x85d>
subpd  %xmm10,%xmm7
unpcklpd %xmm0,%xmm1
subpd  %xmm12,%xmm1
unpcklpd %xmm14,%xmm3
subpd  -0x20(%rsp),%xmm3
unpcklpd %xmm13,%xmm4
subpd  -0x10(%rsp),%xmm4
unpcklpd %xmm8,%xmm6
subpd  -0x80(%rsp),%xmm6
unpcklpd %xmm9,%xmm5
subpd  -0x50(%rsp),%xmm5
unpcklpd -0x30(%rsp),%xmm2
subpd  -0x40(%rsp),%xmm2
unpcklpd -0x60(%rsp),%xmm15
subpd  (%rsp),%xmm15
movapd %xmm6,%xmm8
movapd %xmm7,%xmm14
movapd %xmm3,%xmm6
movapd %xmm5,%xmm9
movapd %xmm4,%xmm11
movapd %xmm2,%xmm10
mov    -0x70(%rsp),%r8
mov    0x68(%rsp),%eax
movlpd %xmm1,(%r8)
test   %eax,%eax
je     1903 <kernel_dgemm_nt_4x4_lib4+0x803>
movhpd %xmm1,0x8(%r8)
movapd %xmm14,%xmm0
unpckhpd %xmm11,%xmm0
movapd %xmm14,%xmm1
movapd %xmm11,%xmm2
movapd %xmm8,%xmm14
movapd %xmm9,%xmm11
jmp    195d <kernel_dgemm_nt_4x4_lib4+0x85d>
movlpd %xmm6,0x8(%r8)
movhlps %xmm1,%xmm6
movapd %xmm10,%xmm3
unpcklpd %xmm15,%xmm3
movapd %xmm8,%xmm0
unpckhpd %xmm9,%xmm0
movhlps %xmm10,%xmm15
movapd %xmm8,%xmm1
movapd %xmm9,%xmm2
jmp    1958 <kernel_dgemm_nt_4x4_lib4+0x858>
movlpd %xmm6,0x8(%r8)
movhlps %xmm8,%xmm6
movapd %xmm10,%xmm3
unpcklpd %xmm15,%xmm3
movapd %xmm5,%xmm0
unpckhpd %xmm4,%xmm0
movhlps %xmm10,%xmm15
movapd %xmm5,%xmm1
movapd %xmm4,%xmm2
movapd %xmm3,%xmm10
movupd %xmm14,0x10(%r8)
movupd %xmm6,0x20(%r8)
movupd %xmm11,0x30(%r8)
movsd  %xmm1,0x40(%r8)
movsd  %xmm2,0x48(%r8)
movupd %xmm10,0x50(%r8)
movupd %xmm0,0x60(%r8)
movupd %xmm15,0x70(%r8)
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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