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


x86 assembly (clang, -O0):
<kernel_dtrmm_l_u_nt_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf8,%rsp
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)
movl   $0x4,-0x34(%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
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%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  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%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  -0x40(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%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    -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  -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  -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  -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)
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    -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  -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  -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  -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
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
movl   $0x4,-0x38(%rbp)
mov    -0x10(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2303 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1203>
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)
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    -0x38(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x38(%rbp)
jmp    18a2 <kernel_dtrmm_l_u_nt_4x4_lib4+0x7a2>
jmp    2308 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1208>
mov    -0x38(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    25c2 <kernel_dtrmm_l_u_nt_4x4_lib4+0x14c2>
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
add    $0x20,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    2308 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1208>
cmpl   $0x0,-0x2c(%rbp)
jne    26dd <kernel_dtrmm_l_u_nt_4x4_lib4+0x15dd>
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
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,0x78(%rax)
jmp    2c44 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1b44>
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
cmpl   $0x1,-0x2c(%rbp)
jne    2978 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1878>
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    2b35 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1a35>
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)
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
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)
add    $0xf8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrmm_l_u_nt_4x4_lib4>:
sub    $0x18,%rsp
movsd  (%rsi),%xmm0
movsd  (%rdx),%xmm1
mulsd  %xmm0,%xmm1
xorpd  %xmm8,%xmm8
addsd  %xmm8,%xmm1
movsd  0x8(%rdx),%xmm3
mulsd  %xmm0,%xmm3
addsd  %xmm8,%xmm3
movsd  0x10(%rdx),%xmm6
mulsd  %xmm0,%xmm6
addsd  %xmm8,%xmm6
mulsd  0x18(%rdx),%xmm0
addsd  %xmm8,%xmm0
movupd 0x20(%rsi),%xmm4
movsd  0x20(%rdx),%xmm2
movsd  0x28(%rdx),%xmm7
movsd  0x30(%rdx),%xmm5
movsd  0x38(%rdx),%xmm13
unpcklpd %xmm2,%xmm2
movq   %xmm1,%xmm1
mulpd  %xmm4,%xmm2
addpd  %xmm1,%xmm2
unpcklpd %xmm7,%xmm7
movq   %xmm3,%xmm1
mulpd  %xmm4,%xmm7
addpd  %xmm1,%xmm7
unpcklpd %xmm5,%xmm5
movq   %xmm6,%xmm1
mulpd  %xmm4,%xmm5
addpd  %xmm1,%xmm5
unpcklpd %xmm13,%xmm13
movq   %xmm0,%xmm0
mulpd  %xmm4,%xmm13
addpd  %xmm0,%xmm13
movupd 0x40(%rsi),%xmm12
movsd  0x50(%rsi),%xmm9
movsd  0x40(%rdx),%xmm0
movsd  0x48(%rdx),%xmm6
movsd  0x50(%rdx),%xmm3
movsd  0x58(%rdx),%xmm11
movapd %xmm9,%xmm1
mulsd  %xmm0,%xmm1
unpcklpd %xmm0,%xmm0
mulpd  %xmm12,%xmm0
addpd  %xmm2,%xmm0
addsd  %xmm8,%xmm1
movapd %xmm9,%xmm10
mulsd  %xmm6,%xmm10
unpcklpd %xmm6,%xmm6
mulpd  %xmm12,%xmm6
addpd  %xmm7,%xmm6
addsd  %xmm8,%xmm10
movapd %xmm9,%xmm7
mulsd  %xmm3,%xmm7
unpcklpd %xmm3,%xmm3
mulpd  %xmm12,%xmm3
addpd  %xmm5,%xmm3
addsd  %xmm8,%xmm7
mulsd  %xmm11,%xmm9
unpcklpd %xmm11,%xmm11
mulpd  %xmm12,%xmm11
addpd  %xmm13,%xmm11
addsd  %xmm8,%xmm9
movupd 0x60(%rsi),%xmm12
movupd 0x70(%rsi),%xmm4
movsd  0x60(%rdx),%xmm8
unpcklpd %xmm8,%xmm8
movapd %xmm12,%xmm13
mulpd  %xmm8,%xmm13
addpd  %xmm0,%xmm13
movq   %xmm1,%xmm0
mulpd  %xmm4,%xmm8
addpd  %xmm0,%xmm8
movsd  0x68(%rdx),%xmm2
unpcklpd %xmm2,%xmm2
movapd %xmm12,%xmm5
mulpd  %xmm2,%xmm5
addpd  %xmm6,%xmm5
movq   %xmm10,%xmm0
mulpd  %xmm4,%xmm2
addpd  %xmm0,%xmm2
movsd  0x70(%rdx),%xmm14
unpcklpd %xmm14,%xmm14
movapd %xmm12,%xmm15
mulpd  %xmm14,%xmm15
addpd  %xmm3,%xmm15
movq   %xmm7,%xmm0
mulpd  %xmm4,%xmm14
addpd  %xmm0,%xmm14
movsd  0x78(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm12
addpd  %xmm11,%xmm12
movq   %xmm9,%xmm0
mulpd  %xmm4,%xmm7
addpd  %xmm0,%xmm7
sub    $0xffffffffffffff80,%rsi
sub    $0xffffffffffffff80,%rdx
mov    $0x4,%eax
cmp    $0x8,%edi
jge    12ef <kernel_dtrmm_l_u_nt_4x4_lib4+0x1ef>
cmp    %edi,%eax
jl     162b <kernel_dtrmm_l_u_nt_4x4_lib4+0x52b>
test   %r9d,%r9d
jne    17d0 <kernel_dtrmm_l_u_nt_4x4_lib4+0x6d0>
jmp    1874 <kernel_dtrmm_l_u_nt_4x4_lib4+0x774>
lea    -0x3(%rdi),%r10d
mov    $0x4,%eax
movapd %xmm12,-0x80(%rsp)
movapd %xmm5,%xmm12
movapd %xmm15,-0x40(%rsp)
movapd %xmm7,-0x70(%rsp)
movapd %xmm2,%xmm15
movapd %xmm14,-0x30(%rsp)
nopl   (%rax)
movupd (%rsi),%xmm1
movupd 0x10(%rsi),%xmm5
movupd 0x20(%rsi),%xmm9
movupd 0x30(%rsi),%xmm10
movsd  (%rdx),%xmm6
movsd  0x8(%rdx),%xmm4
movsd  0x10(%rdx),%xmm3
unpcklpd %xmm6,%xmm6
movapd %xmm1,%xmm0
mulpd  %xmm6,%xmm0
addpd  %xmm13,%xmm0
movsd  0x18(%rdx),%xmm2
mulpd  %xmm5,%xmm6
addpd  %xmm8,%xmm6
unpcklpd %xmm4,%xmm4
movapd %xmm1,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm12,%xmm7
mulpd  %xmm5,%xmm4
addpd  %xmm15,%xmm4
unpcklpd %xmm3,%xmm3
movapd %xmm1,%xmm8
mulpd  %xmm3,%xmm8
addpd  -0x40(%rsp),%xmm8
mulpd  %xmm5,%xmm3
addpd  -0x30(%rsp),%xmm3
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm1
addpd  -0x80(%rsp),%xmm1
mulpd  %xmm5,%xmm2
addpd  -0x70(%rsp),%xmm2
movsd  0x20(%rdx),%xmm5
unpcklpd %xmm5,%xmm5
movapd %xmm9,%xmm14
mulpd  %xmm5,%xmm14
addpd  %xmm0,%xmm14
movapd %xmm10,%xmm0
mulpd  %xmm10,%xmm5
addpd  %xmm6,%xmm5
movsd  0x28(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
movapd %xmm9,%xmm10
mulpd  %xmm6,%xmm10
addpd  %xmm7,%xmm10
mulpd  %xmm0,%xmm6
movapd %xmm0,%xmm13
addpd  %xmm4,%xmm6
movsd  0x30(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm9,%xmm0
movapd %xmm9,%xmm11
mulpd  %xmm7,%xmm11
addpd  %xmm8,%xmm11
mulpd  %xmm13,%xmm7
addpd  %xmm3,%xmm7
movsd  0x38(%rdx),%xmm9
unpcklpd %xmm9,%xmm9
mulpd  %xmm9,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm12
mulpd  %xmm13,%xmm9
addpd  %xmm2,%xmm9
movupd 0x40(%rsi),%xmm3
movupd 0x50(%rsi),%xmm8
movsd  0x40(%rdx),%xmm1
unpcklpd %xmm1,%xmm1
movapd %xmm3,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm14,%xmm0
movapd %xmm0,-0x50(%rsp)
mulpd  %xmm8,%xmm1
addpd  %xmm5,%xmm1
movsd  0x48(%rdx),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm3,%xmm15
mulpd  %xmm0,%xmm15
addpd  %xmm10,%xmm15
mulpd  %xmm8,%xmm0
addpd  %xmm6,%xmm0
movsd  0x50(%rdx),%xmm5
unpcklpd %xmm5,%xmm5
movapd %xmm3,%xmm2
mulpd  %xmm5,%xmm2
addpd  %xmm11,%xmm2
mulpd  %xmm8,%xmm5
addpd  %xmm7,%xmm5
movsd  0x58(%rdx),%xmm10
unpcklpd %xmm10,%xmm10
mulpd  %xmm10,%xmm3
addpd  %xmm12,%xmm3
mulpd  %xmm8,%xmm10
addpd  %xmm9,%xmm10
movupd 0x60(%rsi),%xmm4
movupd 0x70(%rsi),%xmm8
movsd  0x60(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm4,%xmm13
mulpd  %xmm7,%xmm13
mulpd  %xmm8,%xmm7
movsd  0x68(%rdx),%xmm11
unpcklpd %xmm11,%xmm11
movapd %xmm4,%xmm12
movapd %xmm4,%xmm6
mulpd  %xmm11,%xmm12
mulpd  %xmm8,%xmm11
movsd  0x70(%rdx),%xmm14
unpcklpd %xmm14,%xmm14
movapd %xmm4,%xmm9
mulpd  %xmm14,%xmm9
mulpd  %xmm8,%xmm14
movsd  0x78(%rdx),%xmm4
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm6
movapd %xmm6,-0x60(%rsp)
mulpd  %xmm8,%xmm4
movapd %xmm13,(%rsp)
addpd  -0x50(%rsp),%xmm13
movapd %xmm7,%xmm8
addpd  %xmm1,%xmm8
movapd %xmm12,-0x10(%rsp)
movapd %xmm15,-0x20(%rsp)
addpd  %xmm15,%xmm12
movapd %xmm11,%xmm15
addpd  %xmm0,%xmm15
movapd %xmm9,%xmm6
addpd  %xmm2,%xmm6
movapd %xmm6,-0x40(%rsp)
movapd %xmm14,%xmm6
addpd  %xmm5,%xmm6
movapd %xmm6,-0x30(%rsp)
movapd -0x60(%rsp),%xmm6
addpd  %xmm3,%xmm6
movapd %xmm6,-0x80(%rsp)
movapd %xmm4,%xmm6
addpd  %xmm10,%xmm6
movapd %xmm6,-0x70(%rsp)
add    $0x4,%eax
sub    $0xffffffffffffff80,%rsi
sub    $0xffffffffffffff80,%rdx
cmp    %r10d,%eax
jl     1320 <kernel_dtrmm_l_u_nt_4x4_lib4+0x220>
addpd  %xmm10,%xmm4
movapd -0x60(%rsp),%xmm12
addpd  %xmm3,%xmm12
addpd  %xmm5,%xmm14
addpd  %xmm2,%xmm9
addpd  %xmm0,%xmm11
movapd -0x10(%rsp),%xmm5
addpd  -0x20(%rsp),%xmm5
addpd  %xmm1,%xmm7
movapd (%rsp),%xmm13
addpd  -0x50(%rsp),%xmm13
mov    %edi,%eax
and    $0xfffffffc,%eax
movapd %xmm7,%xmm8
movapd %xmm11,%xmm2
movapd %xmm9,%xmm15
movapd %xmm4,%xmm7
cmp    %edi,%eax
jge    12e1 <kernel_dtrmm_l_u_nt_4x4_lib4+0x1e1>
sub    %eax,%edi
xor    %eax,%eax
movapd %xmm14,%xmm10
movapd %xmm12,%xmm14
movapd %xmm8,%xmm4
movapd %xmm5,%xmm12
movapd %xmm13,-0x50(%rsp)
movapd %xmm2,%xmm11
movapd %xmm15,%xmm8
movapd %xmm7,%xmm15
nopl   0x0(%rax)
movupd (%rsi,%rax,1),%xmm0
movupd 0x10(%rsi,%rax,1),%xmm7
movsd  (%rdx,%rax,1),%xmm3
movsd  0x8(%rdx,%rax,1),%xmm2
movsd  0x10(%rdx,%rax,1),%xmm1
unpcklpd %xmm3,%xmm3
movapd %xmm0,%xmm13
mulpd  %xmm3,%xmm13
mulpd  %xmm7,%xmm3
unpcklpd %xmm2,%xmm2
movapd %xmm0,%xmm9
mulpd  %xmm2,%xmm9
mulpd  %xmm7,%xmm2
unpcklpd %xmm1,%xmm1
movapd %xmm0,%xmm6
mulpd  %xmm1,%xmm6
mulpd  %xmm7,%xmm1
movapd %xmm7,%xmm5
movsd  0x18(%rdx,%rax,1),%xmm7
unpcklpd %xmm7,%xmm7
mulpd  %xmm7,%xmm0
mulpd  %xmm5,%xmm7
movapd %xmm15,-0x80(%rsp)
movapd %xmm14,-0x70(%rsp)
movapd %xmm10,-0x60(%rsp)
movapd %xmm8,%xmm15
movapd %xmm11,%xmm14
movapd %xmm12,%xmm10
movapd %xmm4,%xmm8
movapd -0x50(%rsp),%xmm4
movapd %xmm13,%xmm5
movapd %xmm4,-0x30(%rsp)
addpd  %xmm4,%xmm5
movapd %xmm5,-0x50(%rsp)
movapd %xmm3,%xmm4
movapd %xmm8,-0x40(%rsp)
addpd  %xmm8,%xmm4
movapd %xmm9,%xmm12
movapd %xmm10,(%rsp)
addpd  %xmm10,%xmm12
movapd %xmm2,%xmm11
movapd %xmm14,-0x10(%rsp)
addpd  %xmm14,%xmm11
movapd %xmm6,%xmm8
movapd %xmm15,-0x20(%rsp)
addpd  %xmm15,%xmm8
movapd %xmm1,%xmm10
addpd  -0x60(%rsp),%xmm10
movapd %xmm0,%xmm14
addpd  -0x70(%rsp),%xmm14
movapd %xmm7,%xmm15
addpd  -0x80(%rsp),%xmm15
add    $0x20,%rax
add    $0xffffffff,%edi
jne    1660 <kernel_dtrmm_l_u_nt_4x4_lib4+0x560>
addpd  -0x80(%rsp),%xmm7
addpd  -0x70(%rsp),%xmm0
addpd  -0x60(%rsp),%xmm1
addpd  -0x20(%rsp),%xmm6
addpd  -0x10(%rsp),%xmm2
addpd  (%rsp),%xmm9
addpd  -0x40(%rsp),%xmm3
addpd  -0x30(%rsp),%xmm13
movapd %xmm3,%xmm8
movapd %xmm9,%xmm5
movapd %xmm6,%xmm15
movapd %xmm1,%xmm14
movapd %xmm0,%xmm12
test   %r9d,%r9d
je     1874 <kernel_dtrmm_l_u_nt_4x4_lib4+0x774>
movupd (%rcx),%xmm3
movupd 0x10(%rcx),%xmm0
movupd 0x20(%rcx),%xmm1
movupd 0x30(%rcx),%xmm4
movupd 0x40(%rcx),%xmm6
movupd 0x50(%rcx),%xmm11
movupd 0x60(%rcx),%xmm10
movupd 0x70(%rcx),%xmm9
cmp    $0x1,%r9d
jne    1828 <kernel_dtrmm_l_u_nt_4x4_lib4+0x728>
addpd  %xmm3,%xmm13
addpd  %xmm0,%xmm8
addpd  %xmm1,%xmm5
addpd  %xmm4,%xmm2
addpd  %xmm6,%xmm15
addpd  %xmm11,%xmm14
addpd  %xmm10,%xmm12
addpd  %xmm9,%xmm7
jmp    1874 <kernel_dtrmm_l_u_nt_4x4_lib4+0x774>
subpd  %xmm13,%xmm3
subpd  %xmm8,%xmm0
subpd  %xmm5,%xmm1
subpd  %xmm2,%xmm4
subpd  %xmm15,%xmm6
subpd  %xmm14,%xmm11
subpd  %xmm12,%xmm10
subpd  %xmm7,%xmm9
movapd %xmm3,%xmm13
movapd %xmm0,%xmm8
movapd %xmm1,%xmm5
movapd %xmm4,%xmm2
movapd %xmm6,%xmm15
movapd %xmm11,%xmm14
movapd %xmm10,%xmm12
movapd %xmm9,%xmm7
movupd %xmm13,(%r8)
movupd %xmm8,0x10(%r8)
movupd %xmm5,0x20(%r8)
movupd %xmm2,0x30(%r8)
movupd %xmm15,0x40(%r8)
movupd %xmm14,0x50(%r8)
movupd %xmm12,0x60(%r8)
movupd %xmm7,0x70(%r8)
add    $0x18,%rsp
ret

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

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