void kernel_dtrmm_nt_u_4x4_lib4(int kadd, double *A, double *B, double *C) {
  const int bs = 4;
  const int lda = bs;
  const int ldc = 4;
  int k;
  double a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3, A_0, A_1, A_2, A_3, B_0, B_1,
      B_2, B_3, c_00 = 0, c_01 = 0, c_02 = 0, c_03 = 0, c_10 = 0, c_11 = 0,
                c_12 = 0, c_13 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_23 = 0,
                c_30 = 0, c_31 = 0, c_32 = 0, c_33 = 0;
  a_0 = A[0 + 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];
  c_00 += a_0 * b_0;
  c_10 += a_1 * b_0;
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  a_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];
  c_00 += a_0 * b_0;
  c_10 += a_1 * b_0;
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  c_01 += a_0 * b_1;
  c_11 += a_1 * b_1;
  c_21 += a_2 * b_1;
  c_31 += a_3 * b_1;
  a_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];
  c_00 += a_0 * b_0;
  c_10 += a_1 * b_0;
  c_20 += a_2 * b_0;
  c_30 += a_3 * b_0;
  c_01 += a_0 * b_1;
  c_11 += a_1 * b_1;
  c_21 += a_2 * b_1;
  c_31 += a_3 * b_1;
  c_02 += a_0 * b_2;
  c_12 += a_1 * b_2;
  c_22 += a_2 * b_2;
  c_32 += a_3 * b_2;
  a_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;
  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];
  for (k = 4; k < kadd - 3; k += 4) {
    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_0 = A[0 + lda * 4];
    a_1 = A[1 + lda * 4];
    a_2 = A[2 + lda * 4];
    a_3 = A[3 + lda * 4];
    b_0 = B[0 + lda * 4];
    b_1 = B[1 + lda * 4];
    b_2 = B[2 + lda * 4];
    b_3 = B[3 + lda * 4];
    c_00 += A_0 * B_0;
    c_10 += A_1 * B_0;
    c_20 += A_2 * B_0;
    c_30 += A_3 * B_0;
    c_01 += A_0 * B_1;
    c_11 += A_1 * B_1;
    c_21 += A_2 * B_1;
    c_31 += A_3 * B_1;
    c_02 += A_0 * B_2;
    c_12 += A_1 * B_2;
    c_22 += A_2 * B_2;
    c_32 += A_3 * B_2;
    c_03 += A_0 * B_3;
    c_13 += A_1 * B_3;
    c_23 += A_2 * B_3;
    c_33 += A_3 * B_3;
    A += 16;
    B += 16;
  }
  for (; k < kadd; 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;
  }
  C[0 + ldc * 0] = c_00;
  C[1 + ldc * 0] = c_10;
  C[2 + ldc * 0] = c_20;
  C[3 + ldc * 0] = c_30;
  C[0 + ldc * 1] = c_01;
  C[1 + ldc * 1] = c_11;
  C[2 + ldc * 1] = c_21;
  C[3 + ldc * 1] = c_31;
  C[0 + ldc * 2] = c_02;
  C[1 + ldc * 2] = c_12;
  C[2 + ldc * 2] = c_22;
  C[3 + ldc * 2] = c_32;
  C[0 + ldc * 3] = c_03;
  C[1 + ldc * 3] = c_13;
  C[2 + ldc * 3] = c_23;
  C[3 + ldc * 3] = c_33;
}


x86 assembly (clang, -O0):
<kernel_dtrmm_nt_u_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0xb0,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
movl   $0x4,-0x24(%rbp)
movl   $0x4,-0x28(%rbp)
movl   $0x4,-0x2c(%rbp)
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
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x38(%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  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x38(%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  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x38(%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  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movl   $0x4,-0x30(%rbp)
mov    -0x30(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    2471 <kernel_dtrmm_nt_u_4x4_lib4+0x1371>
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x38(%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  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x38(%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  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x38(%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  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x38(%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  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm2
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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    -0x30(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x30(%rbp)
jmp    192a <kernel_dtrmm_nt_u_4x4_lib4+0x82a>
jmp    2476 <kernel_dtrmm_nt_u_4x4_lib4+0x1376>
mov    -0x30(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2736 <kernel_dtrmm_nt_u_4x4_lib4+0x1636>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x118(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%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  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x38(%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  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x108(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x128(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x38(%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  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x110(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x130(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%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    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
jmp    2476 <kernel_dtrmm_nt_u_4x4_lib4+0x1376>
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x118(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x100(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x120(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x108(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x128(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x110(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
add    $0xb0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrmm_nt_u_4x4_lib4>:
sub    $0x18,%rsp
movsd  (%rdx),%xmm2
movsd  0x20(%rdx),%xmm4
movsd  0x28(%rdx),%xmm3
movsd  0x40(%rdx),%xmm1
unpcklpd %xmm2,%xmm2
movupd (%rsi),%xmm6
movupd 0x10(%rsi),%xmm7
movupd 0x20(%rsi),%xmm0
movupd 0x30(%rsi),%xmm9
mulpd  %xmm2,%xmm6
xorpd  %xmm8,%xmm8
addpd  %xmm8,%xmm6
mulpd  %xmm2,%xmm7
addpd  %xmm8,%xmm7
unpcklpd %xmm4,%xmm4
movapd %xmm0,%xmm5
mulpd  %xmm4,%xmm5
addpd  %xmm6,%xmm5
mulpd  %xmm9,%xmm4
addpd  %xmm7,%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm0
addpd  %xmm8,%xmm0
mulpd  %xmm9,%xmm3
addpd  %xmm8,%xmm3
movupd 0x40(%rsi),%xmm2
movupd 0x50(%rsi),%xmm9
unpcklpd %xmm1,%xmm1
movapd %xmm2,%xmm6
mulpd  %xmm1,%xmm6
addpd  %xmm5,%xmm6
mulpd  %xmm9,%xmm1
addpd  %xmm4,%xmm1
movsd  0x48(%rdx),%xmm4
unpcklpd %xmm4,%xmm4
movapd %xmm2,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm0,%xmm7
mulpd  %xmm9,%xmm4
addpd  %xmm3,%xmm4
movsd  0x50(%rdx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm2
addpd  %xmm8,%xmm2
mulpd  %xmm9,%xmm3
addpd  %xmm8,%xmm3
movupd 0x60(%rsi),%xmm0
movupd 0x70(%rsi),%xmm5
movsd  0x60(%rdx),%xmm9
unpcklpd %xmm9,%xmm9
movapd %xmm0,%xmm10
mulpd  %xmm9,%xmm10
addpd  %xmm6,%xmm10
mulpd  %xmm5,%xmm9
addpd  %xmm1,%xmm9
movsd  0x68(%rdx),%xmm15
unpcklpd %xmm15,%xmm15
movapd %xmm0,%xmm11
mulpd  %xmm15,%xmm11
addpd  %xmm7,%xmm11
mulpd  %xmm5,%xmm15
addpd  %xmm4,%xmm15
movsd  0x70(%rdx),%xmm12
unpcklpd %xmm12,%xmm12
movapd %xmm0,%xmm6
mulpd  %xmm12,%xmm6
addpd  %xmm2,%xmm6
mulpd  %xmm5,%xmm12
addpd  %xmm3,%xmm12
movsd  0x78(%rdx),%xmm13
unpcklpd %xmm13,%xmm13
mulpd  %xmm13,%xmm0
addpd  %xmm8,%xmm0
mulpd  %xmm5,%xmm13
addpd  %xmm8,%xmm13
sub    $0xffffffffffffff80,%rsi
sub    $0xffffffffffffff80,%rdx
mov    $0x4,%eax
cmp    $0x8,%edi
jl     15b9 <kernel_dtrmm_nt_u_4x4_lib4+0x4b9>
lea    -0x3(%rdi),%r8d
mov    $0x4,%eax
movapd %xmm0,-0x40(%rsp)
movapd %xmm9,%xmm1
movapd %xmm15,%xmm8
movapd %xmm11,%xmm15
movapd %xmm12,-0x50(%rsp)
movapd %xmm6,%xmm0
movapd %xmm13,-0x80(%rsp)
nopl   (%rax)
movupd (%rsi),%xmm14
movupd 0x10(%rsi),%xmm6
movupd 0x20(%rsi),%xmm13
movupd 0x30(%rsi),%xmm12
movsd  (%rdx),%xmm5
movsd  0x8(%rdx),%xmm4
movsd  0x10(%rdx),%xmm3
unpcklpd %xmm5,%xmm5
movapd %xmm14,%xmm7
mulpd  %xmm5,%xmm7
addpd  %xmm10,%xmm7
movsd  0x18(%rdx),%xmm2
mulpd  %xmm6,%xmm5
addpd  %xmm1,%xmm5
unpcklpd %xmm4,%xmm4
movapd %xmm14,%xmm1
mulpd  %xmm4,%xmm1
addpd  %xmm15,%xmm1
mulpd  %xmm6,%xmm4
addpd  %xmm8,%xmm4
unpcklpd %xmm3,%xmm3
movapd %xmm14,%xmm8
mulpd  %xmm3,%xmm8
addpd  %xmm0,%xmm8
mulpd  %xmm6,%xmm3
addpd  -0x50(%rsp),%xmm3
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm14
addpd  -0x40(%rsp),%xmm14
mulpd  %xmm6,%xmm2
addpd  -0x80(%rsp),%xmm2
movupd 0x40(%rsi),%xmm0
movupd 0x50(%rsi),%xmm9
movsd  0x20(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
movapd %xmm13,%xmm11
mulpd  %xmm6,%xmm11
addpd  %xmm7,%xmm11
movapd %xmm12,%xmm7
mulpd  %xmm12,%xmm6
addpd  %xmm5,%xmm6
movsd  0x28(%rdx),%xmm5
unpcklpd %xmm5,%xmm5
movapd %xmm13,%xmm12
mulpd  %xmm5,%xmm12
addpd  %xmm1,%xmm12
mulpd  %xmm7,%xmm5
movapd %xmm7,%xmm10
addpd  %xmm4,%xmm5
movsd  0x30(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm13,%xmm4
mulpd  %xmm7,%xmm13
addpd  %xmm8,%xmm13
mulpd  %xmm10,%xmm7
addpd  %xmm3,%xmm7
movsd  0x38(%rdx),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm1,%xmm4
addpd  %xmm14,%xmm4
movapd %xmm4,%xmm8
mulpd  %xmm10,%xmm1
addpd  %xmm2,%xmm1
movupd 0x60(%rsi),%xmm10
movupd 0x70(%rsi),%xmm14
movsd  0x40(%rdx),%xmm2
unpcklpd %xmm2,%xmm2
movapd %xmm0,%xmm15
mulpd  %xmm2,%xmm15
addpd  %xmm11,%xmm15
mulpd  %xmm9,%xmm2
addpd  %xmm6,%xmm2
movsd  0x48(%rdx),%xmm4
unpcklpd %xmm4,%xmm4
movapd %xmm0,%xmm3
mulpd  %xmm4,%xmm3
addpd  %xmm12,%xmm3
mulpd  %xmm9,%xmm4
addpd  %xmm5,%xmm4
movsd  0x50(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
movapd %xmm0,%xmm5
mulpd  %xmm6,%xmm5
addpd  %xmm13,%xmm5
mulpd  %xmm9,%xmm6
addpd  %xmm7,%xmm6
movsd  0x58(%rdx),%xmm11
unpcklpd %xmm11,%xmm11
mulpd  %xmm11,%xmm0
addpd  %xmm8,%xmm0
movapd %xmm0,-0x60(%rsp)
mulpd  %xmm9,%xmm11
addpd  %xmm1,%xmm11
movsd  0x60(%rdx),%xmm9
unpcklpd %xmm9,%xmm9
movapd %xmm10,%xmm1
mulpd  %xmm9,%xmm1
mulpd  %xmm14,%xmm9
movsd  0x68(%rdx),%xmm12
unpcklpd %xmm12,%xmm12
movapd %xmm10,%xmm0
mulpd  %xmm12,%xmm0
mulpd  %xmm14,%xmm12
movapd %xmm14,%xmm8
movsd  0x70(%rdx),%xmm14
unpcklpd %xmm14,%xmm14
movapd %xmm10,%xmm7
mulpd  %xmm14,%xmm7
mulpd  %xmm8,%xmm14
movsd  0x78(%rdx),%xmm13
unpcklpd %xmm13,%xmm13
mulpd  %xmm13,%xmm10
movapd %xmm10,-0x70(%rsp)
mulpd  %xmm8,%xmm13
movapd %xmm1,-0x10(%rsp)
movapd %xmm1,%xmm10
movapd %xmm15,(%rsp)
addpd  %xmm15,%xmm10
movapd %xmm9,%xmm1
addpd  %xmm2,%xmm1
movapd %xmm0,-0x20(%rsp)
movapd %xmm0,%xmm15
addpd  %xmm3,%xmm15
movapd %xmm12,%xmm8
addpd  %xmm4,%xmm8
movapd %xmm7,-0x30(%rsp)
movapd %xmm7,%xmm0
addpd  %xmm5,%xmm0
movapd %xmm14,%xmm7
addpd  %xmm6,%xmm7
movapd %xmm7,-0x50(%rsp)
movapd -0x70(%rsp),%xmm7
addpd  -0x60(%rsp),%xmm7
movapd %xmm7,-0x40(%rsp)
movapd %xmm13,%xmm7
addpd  %xmm11,%xmm7
movapd %xmm7,-0x80(%rsp)
add    $0x4,%eax
sub    $0xffffffffffffff80,%rsi
sub    $0xffffffffffffff80,%rdx
cmp    %r8d,%eax
jl     12b0 <kernel_dtrmm_nt_u_4x4_lib4+0x1b0>
addpd  %xmm11,%xmm13
movapd -0x70(%rsp),%xmm0
addpd  -0x60(%rsp),%xmm0
addpd  %xmm6,%xmm14
movapd -0x30(%rsp),%xmm6
addpd  %xmm5,%xmm6
addpd  %xmm4,%xmm12
movapd -0x20(%rsp),%xmm11
addpd  %xmm3,%xmm11
addpd  %xmm2,%xmm9
movapd -0x10(%rsp),%xmm10
addpd  (%rsp),%xmm10
mov    %edi,%eax
and    $0xfffffffc,%eax
movapd %xmm12,%xmm15
movapd %xmm14,%xmm12
cmp    %edi,%eax
jge    175b <kernel_dtrmm_nt_u_4x4_lib4+0x65b>
sub    %eax,%edi
xor    %eax,%eax
movapd %xmm0,%xmm14
movapd %xmm10,-0x60(%rsp)
movapd %xmm11,%xmm4
movapd %xmm15,%xmm11
movapd %xmm6,%xmm8
movapd %xmm13,%xmm15
cs nopw 0x0(%rax,%rax,1)
nop
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,%xmm10
mulpd  %xmm3,%xmm10
mulpd  %xmm7,%xmm3
unpcklpd %xmm2,%xmm2
movapd %xmm0,%xmm13
mulpd  %xmm2,%xmm13
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 %xmm12,%xmm15
movapd %xmm8,%xmm14
movapd %xmm11,%xmm12
movapd %xmm4,%xmm11
movapd %xmm9,%xmm8
movapd -0x60(%rsp),%xmm4
movapd %xmm10,%xmm5
movapd %xmm4,-0x40(%rsp)
addpd  %xmm4,%xmm5
movapd %xmm5,-0x60(%rsp)
movapd %xmm3,%xmm9
movapd %xmm8,-0x50(%rsp)
addpd  %xmm8,%xmm9
movapd %xmm13,%xmm4
movapd %xmm11,(%rsp)
addpd  %xmm11,%xmm4
movapd %xmm2,%xmm11
movapd %xmm12,-0x10(%rsp)
addpd  %xmm12,%xmm11
movapd %xmm6,%xmm8
movapd %xmm14,-0x20(%rsp)
addpd  %xmm14,%xmm8
movapd %xmm1,%xmm12
movapd %xmm15,-0x30(%rsp)
addpd  %xmm15,%xmm12
movapd %xmm0,%xmm14
addpd  -0x70(%rsp),%xmm14
movapd %xmm7,%xmm15
addpd  -0x80(%rsp),%xmm15
add    $0x20,%rax
add    $0xffffffff,%edi
jne    15f0 <kernel_dtrmm_nt_u_4x4_lib4+0x4f0>
addpd  -0x80(%rsp),%xmm7
addpd  -0x70(%rsp),%xmm0
addpd  -0x30(%rsp),%xmm1
addpd  -0x20(%rsp),%xmm6
addpd  -0x10(%rsp),%xmm2
addpd  (%rsp),%xmm13
addpd  -0x50(%rsp),%xmm3
addpd  -0x40(%rsp),%xmm10
movapd %xmm3,%xmm9
movapd %xmm13,%xmm11
movapd %xmm2,%xmm15
movapd %xmm1,%xmm12
movapd %xmm7,%xmm13
movupd %xmm10,(%rcx)
movupd %xmm9,0x10(%rcx)
movupd %xmm11,0x20(%rcx)
movupd %xmm15,0x30(%rcx)
movupd %xmm6,0x40(%rcx)
movupd %xmm12,0x50(%rcx)
movupd %xmm0,0x60(%rcx)
movupd %xmm13,0x70(%rcx)
add    $0x18,%rsp
ret

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

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