void kernel_dgemm_nt_4x4_lib4(int kmax, double *A, double *B, double *C,
                              double *D, int alg, int tc, int td) {
  const int bs = 4;
  int k;
  double 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;
  for (k = 0; k < kmax - 3; k += 4) {
    a_0 = A[0 + bs * 0];
    a_1 = A[1 + bs * 0];
    a_2 = A[2 + bs * 0];
    a_3 = A[3 + bs * 0];
    b_0 = B[0 + bs * 0];
    b_1 = B[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_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 += 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    $0xf8,%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)
movl   $0x4,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movl   $0x0,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    1c44 <kernel_dgemm_nt_4x4_lib4+0xb44>
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  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  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  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%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    11e3 <kernel_dgemm_nt_4x4_lib4+0xe3>
jmp    1c49 <kernel_dgemm_nt_4x4_lib4+0xb49>
mov    -0x34(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    1f03 <kernel_dgemm_nt_4x4_lib4+0xe03>
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  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1c49 <kernel_dgemm_nt_4x4_lib4+0xb49>
cmpl   $0x0,-0x2c(%rbp)
jne    2139 <kernel_dgemm_nt_4x4_lib4+0x1039>
cmpl   $0x0,0x18(%rbp)
jne    2028 <kernel_dgemm_nt_4x4_lib4+0xf28>
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xd8(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2134 <kernel_dgemm_nt_4x4_lib4+0x1034>
movsd  -0x80(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    28e1 <kernel_dgemm_nt_4x4_lib4+0x17e1>
cmpl   $0x0,0x10(%rbp)
jne    2257 <kernel_dgemm_nt_4x4_lib4+0x1157>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
jmp    2366 <kernel_dgemm_nt_4x4_lib4+0x1266>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
cmpl   $0x1,-0x2c(%rbp)
jne    24f2 <kernel_dgemm_nt_4x4_lib4+0x13f2>
movsd  -0x80(%rbp),%xmm0
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
addsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
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  -0x88(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%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  -0x90(%rbp),%xmm0
ff
addsd  -0x110(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%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  -0x98(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%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
jmp    26af <kernel_dgemm_nt_4x4_lib4+0x15af>
movsd  -0x80(%rbp),%xmm1
movsd  -0x100(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
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  -0x88(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xa8(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%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  -0x90(%rbp),%xmm1
ff
movsd  -0x110(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb0(%rbp),%xmm1
ff
movsd  -0x130(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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  -0x98(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0x138(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%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
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
cmpl   $0x0,0x18(%rbp)
jne    27cd <kernel_dgemm_nt_4x4_lib4+0x16cd>
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    28dc <kernel_dgemm_nt_4x4_lib4+0x17dc>
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x138(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x140(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x148(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x150(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x158(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x160(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x168(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x170(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x178(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    28e1 <kernel_dgemm_nt_4x4_lib4+0x17e1>
add    $0xf8,%rsp
pop    %rbp
ret

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