void kernel_dtrmm_nt_l_4x4_lib4(int kmax, double *A, double *B, double *C) {
  const int lda = 4;
  const int ldc = 4;
  int k;
  double a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3,
      c_00 = 0, c_01 = 0, c_02 = 0, c_03 = 0, c_10 = 0, c_11 = 0, c_12 = 0,
      c_13 = 0, c_20 = 0, c_21 = 0, c_22 = 0, c_23 = 0, c_30 = 0, c_31 = 0,
      c_32 = 0, c_33 = 0;
  for (k = 0; k < kmax - 4; k += 4) {
    a_0 = A[0 + lda * 0];
    a_1 = A[1 + lda * 0];
    a_2 = A[2 + lda * 0];
    a_3 = A[3 + lda * 0];
    b_0 = B[0 + lda * 0];
    b_1 = B[1 + lda * 0];
    b_2 = B[2 + lda * 0];
    b_3 = B[3 + lda * 0];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 1];
    a_1 = A[1 + lda * 1];
    a_2 = A[2 + lda * 1];
    a_3 = A[3 + lda * 1];
    b_0 = B[0 + lda * 1];
    b_1 = B[1 + lda * 1];
    b_2 = B[2 + lda * 1];
    b_3 = B[3 + lda * 1];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 2];
    a_1 = A[1 + lda * 2];
    a_2 = A[2 + lda * 2];
    a_3 = A[3 + lda * 2];
    b_0 = B[0 + lda * 2];
    b_1 = B[1 + lda * 2];
    b_2 = B[2 + lda * 2];
    b_3 = B[3 + lda * 2];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    a_0 = A[0 + lda * 3];
    a_1 = A[1 + lda * 3];
    a_2 = A[2 + lda * 3];
    a_3 = A[3 + lda * 3];
    b_0 = B[0 + lda * 3];
    b_1 = B[1 + lda * 3];
    b_2 = B[2 + lda * 3];
    b_3 = B[3 + lda * 3];
    c_00 += a_0 * b_0;
    c_10 += a_1 * b_0;
    c_20 += a_2 * b_0;
    c_30 += a_3 * b_0;
    c_01 += a_0 * b_1;
    c_11 += a_1 * b_1;
    c_21 += a_2 * b_1;
    c_31 += a_3 * b_1;
    c_02 += a_0 * b_2;
    c_12 += a_1 * b_2;
    c_22 += a_2 * b_2;
    c_32 += a_3 * b_2;
    c_03 += a_0 * b_3;
    c_13 += a_1 * b_3;
    c_23 += a_2 * b_3;
    c_33 += a_3 * b_3;
    A += 16;
    B += 16;
  }
  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[0 + ldc * 0] = c_00;
  C[1 + ldc * 0] = c_10;
  C[2 + ldc * 0] = c_20;
  C[3 + ldc * 0] = c_30;
  c_01 += a_0 * b_1;
  c_11 += a_1 * b_1;
  c_21 += a_2 * b_1;
  c_31 += a_3 * b_1;
  c_02 += a_0 * b_2;
  c_12 += a_1 * b_2;
  c_22 += a_2 * b_2;
  c_32 += a_3 * b_2;
  c_03 += a_0 * b_3;
  c_13 += a_1 * b_3;
  c_23 += a_2 * b_3;
  c_33 += a_3 * b_3;
  a_0 = A[0 + lda * 1];
  a_1 = A[1 + lda * 1];
  a_2 = A[2 + lda * 1];
  a_3 = A[3 + lda * 1];
  b_1 = B[1 + lda * 1];
  b_2 = B[2 + lda * 1];
  b_3 = B[3 + lda * 1];
  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[0 + ldc * 1] = c_01;
  C[1 + ldc * 1] = c_11;
  C[2 + ldc * 1] = c_21;
  C[3 + ldc * 1] = c_31;
  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_2 = B[2 + lda * 2];
  b_3 = B[3 + lda * 2];
  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[0 + ldc * 2] = c_02;
  C[1 + ldc * 2] = c_12;
  C[2 + ldc * 2] = c_22;
  C[3 + ldc * 2] = c_32;
  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_3 = B[3 + lda * 3];
  c_03 += a_0 * b_3;
  c_13 += a_1 * b_3;
  c_23 += a_2 * b_3;
  c_33 += a_3 * b_3;
  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_l_4x4_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%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)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movl   $0x0,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x4,%ecx
cmp    %ecx,%eax
jge    1c1f <kernel_dtrmm_nt_l_4x4_lib4+0xb1f>
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  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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    -0x2c(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x2c(%rbp)
jmp    11d6 <kernel_dtrmm_nt_l_4x4_lib4+0xd6>
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  -0x78(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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  0x28(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xe0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xe0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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  0x50(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xe8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xe8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%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  0x78(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xf0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x78(%rax)
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrmm_nt_l_4x4_lib4>:
push   %rax
xorpd  %xmm5,%xmm5
cmp    $0x5,%edi
jl     142c <kernel_dtrmm_nt_l_4x4_lib4+0x32c>
add    $0xfffffffc,%edi
xorpd  %xmm10,%xmm10
xor    %eax,%eax
xorpd  %xmm13,%xmm13
xorpd  %xmm11,%xmm11
xorpd  %xmm8,%xmm8
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x80(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x70(%rsp)
xorpd  %xmm0,%xmm0
movapd %xmm0,-0x60(%rsp)
xorpd  %xmm7,%xmm7
nopl   0x0(%rax)
movupd (%rsi),%xmm12
movupd 0x10(%rsi),%xmm1
movupd 0x20(%rsi),%xmm14
movapd %xmm7,%xmm0
movupd 0x30(%rsi),%xmm9
movsd  (%rdx),%xmm6
movsd  0x8(%rdx),%xmm4
movsd  0x10(%rdx),%xmm3
unpcklpd %xmm6,%xmm6
movapd %xmm12,%xmm15
mulpd  %xmm6,%xmm15
addpd  %xmm10,%xmm15
movsd  0x18(%rdx),%xmm2
mulpd  %xmm1,%xmm6
addpd  %xmm13,%xmm6
unpcklpd %xmm4,%xmm4
movapd %xmm12,%xmm7
mulpd  %xmm4,%xmm7
addpd  %xmm11,%xmm7
mulpd  %xmm1,%xmm4
addpd  %xmm8,%xmm4
unpcklpd %xmm3,%xmm3
movapd %xmm12,%xmm8
mulpd  %xmm3,%xmm8
addpd  -0x80(%rsp),%xmm8
mulpd  %xmm1,%xmm3
addpd  -0x70(%rsp),%xmm3
unpcklpd %xmm2,%xmm2
mulpd  %xmm2,%xmm12
addpd  -0x60(%rsp),%xmm12
mulpd  %xmm1,%xmm2
addpd  %xmm0,%xmm2
movsd  0x20(%rdx),%xmm5
unpcklpd %xmm5,%xmm5
movapd %xmm14,%xmm1
mulpd  %xmm5,%xmm1
addpd  %xmm15,%xmm1
movapd %xmm9,%xmm0
mulpd  %xmm9,%xmm5
addpd  %xmm6,%xmm5
movsd  0x28(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
movapd %xmm14,%xmm9
mulpd  %xmm6,%xmm9
addpd  %xmm7,%xmm9
mulpd  %xmm0,%xmm6
addpd  %xmm4,%xmm6
movsd  0x30(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm14,%xmm10
mulpd  %xmm7,%xmm10
addpd  %xmm8,%xmm10
mulpd  %xmm0,%xmm7
addpd  %xmm3,%xmm7
movsd  0x38(%rdx),%xmm8
unpcklpd %xmm8,%xmm8
mulpd  %xmm8,%xmm14
addpd  %xmm12,%xmm14
mulpd  %xmm0,%xmm8
addpd  %xmm2,%xmm8
movupd 0x40(%rsi),%xmm2
movupd 0x50(%rsi),%xmm11
movsd  0x40(%rdx),%xmm3
unpcklpd %xmm3,%xmm3
movapd %xmm2,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,-0x50(%rsp)
mulpd  %xmm11,%xmm3
addpd  %xmm5,%xmm3
movsd  0x48(%rdx),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm2,%xmm4
mulpd  %xmm0,%xmm4
addpd  %xmm9,%xmm4
mulpd  %xmm11,%xmm0
addpd  %xmm6,%xmm0
movsd  0x50(%rdx),%xmm1
unpcklpd %xmm1,%xmm1
movapd %xmm2,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm10,%xmm5
mulpd  %xmm11,%xmm1
addpd  %xmm7,%xmm1
movsd  0x58(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
mulpd  %xmm6,%xmm2
addpd  %xmm14,%xmm2
mulpd  %xmm11,%xmm6
addpd  %xmm8,%xmm6
movupd 0x60(%rsi),%xmm8
movupd 0x70(%rsi),%xmm13
movsd  0x60(%rdx),%xmm12
unpcklpd %xmm12,%xmm12
movapd %xmm8,%xmm10
mulpd  %xmm12,%xmm10
mulpd  %xmm13,%xmm12
movsd  0x68(%rdx),%xmm14
unpcklpd %xmm14,%xmm14
movapd %xmm8,%xmm11
mulpd  %xmm14,%xmm11
mulpd  %xmm13,%xmm14
movsd  0x70(%rdx),%xmm15
unpcklpd %xmm15,%xmm15
movapd %xmm8,%xmm7
mulpd  %xmm15,%xmm7
mulpd  %xmm13,%xmm15
movsd  0x78(%rdx),%xmm9
unpcklpd %xmm9,%xmm9
mulpd  %xmm9,%xmm8
movapd %xmm8,-0x40(%rsp)
mulpd  %xmm13,%xmm9
movapd %xmm10,-0x30(%rsp)
addpd  -0x50(%rsp),%xmm10
movapd %xmm12,%xmm13
addpd  %xmm3,%xmm13
movapd %xmm11,-0x10(%rsp)
addpd  %xmm4,%xmm11
movapd %xmm14,%xmm8
addpd  %xmm0,%xmm8
movapd %xmm7,-0x20(%rsp)
addpd  %xmm5,%xmm7
movapd %xmm7,-0x80(%rsp)
movapd %xmm15,%xmm7
addpd  %xmm1,%xmm7
movapd %xmm7,-0x70(%rsp)
movapd -0x40(%rsp),%xmm7
addpd  %xmm2,%xmm7
movapd %xmm7,-0x60(%rsp)
movapd %xmm9,%xmm7
addpd  %xmm6,%xmm7
sub    $0xffffffffffffff80,%rsi
sub    $0xffffffffffffff80,%rdx
add    $0x4,%eax
cmp    %edi,%eax
jl     1150 <kernel_dtrmm_nt_l_4x4_lib4+0x50>
addpd  %xmm6,%xmm9
movapd -0x40(%rsp),%xmm6
addpd  %xmm2,%xmm6
movapd %xmm6,%xmm10
addpd  %xmm1,%xmm15
movapd -0x20(%rsp),%xmm2
addpd  %xmm5,%xmm2
addpd  %xmm0,%xmm14
movapd -0x10(%rsp),%xmm6
addpd  %xmm4,%xmm6
addpd  %xmm3,%xmm12
movapd -0x30(%rsp),%xmm5
addpd  -0x50(%rsp),%xmm5
jmp    144d <kernel_dtrmm_nt_l_4x4_lib4+0x34d>
xorpd  %xmm12,%xmm12
xorpd  %xmm6,%xmm6
xorpd  %xmm14,%xmm14
xorpd  %xmm2,%xmm2
xorpd  %xmm15,%xmm15
xorpd  %xmm10,%xmm10
xorpd  %xmm9,%xmm9
movupd (%rsi),%xmm13
movupd 0x10(%rsi),%xmm4
movsd  (%rdx),%xmm0
movsd  0x8(%rdx),%xmm3
movsd  0x10(%rdx),%xmm11
movsd  0x18(%rdx),%xmm8
unpcklpd %xmm0,%xmm0
movapd %xmm13,%xmm1
mulpd  %xmm0,%xmm1
addpd  %xmm5,%xmm1
mulpd  %xmm4,%xmm0
addpd  %xmm12,%xmm0
movupd %xmm1,(%rcx)
movupd %xmm0,0x10(%rcx)
unpcklpd %xmm3,%xmm3
movapd %xmm13,%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm6,%xmm1
mulpd  %xmm4,%xmm3
addpd  %xmm14,%xmm3
unpcklpd %xmm11,%xmm11
movapd %xmm13,%xmm0
mulpd  %xmm11,%xmm0
addpd  %xmm2,%xmm0
mulpd  %xmm4,%xmm11
addpd  %xmm15,%xmm11
unpcklpd %xmm8,%xmm8
mulpd  %xmm8,%xmm13
addpd  %xmm10,%xmm13
mulpd  %xmm4,%xmm8
addpd  %xmm9,%xmm8
movupd 0x20(%rsi),%xmm2
movupd 0x30(%rsi),%xmm10
movsd  0x28(%rdx),%xmm7
movsd  0x30(%rdx),%xmm6
movsd  0x38(%rdx),%xmm5
unpcklpd %xmm7,%xmm7
movapd %xmm2,%xmm4
mulpd  %xmm7,%xmm4
addpd  %xmm1,%xmm4
mulpd  %xmm10,%xmm7
addpd  %xmm3,%xmm7
movupd %xmm4,0x20(%rcx)
movupd %xmm7,0x30(%rcx)
unpcklpd %xmm6,%xmm6
movapd %xmm2,%xmm3
mulpd  %xmm6,%xmm3
addpd  %xmm0,%xmm3
mulpd  %xmm10,%xmm6
addpd  %xmm11,%xmm6
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm2
addpd  %xmm13,%xmm2
mulpd  %xmm10,%xmm5
addpd  %xmm8,%xmm5
movupd 0x40(%rsi),%xmm4
movupd 0x50(%rsi),%xmm8
movsd  0x50(%rdx),%xmm7
movsd  0x58(%rdx),%xmm0
unpcklpd %xmm7,%xmm7
movapd %xmm4,%xmm1
mulpd  %xmm7,%xmm1
addpd  %xmm3,%xmm1
mulpd  %xmm8,%xmm7
addpd  %xmm6,%xmm7
movupd %xmm1,0x40(%rcx)
movupd %xmm7,0x50(%rcx)
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm4
addpd  %xmm2,%xmm4
mulpd  %xmm8,%xmm0
addpd  %xmm5,%xmm0
movupd 0x60(%rsi),%xmm1
movupd 0x70(%rsi),%xmm2
movsd  0x78(%rdx),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm1
addpd  %xmm4,%xmm1
mulpd  %xmm2,%xmm3
addpd  %xmm0,%xmm3
movupd %xmm1,0x60(%rcx)
movupd %xmm3,0x70(%rcx)
pop    %rax
ret

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

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