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