void kernel_dtrtri_4x3_lib4(int kmax, double *A, double *B, double *C,
                            double *E, int use_inv_diag_E, double *inv_diag_E) {
  const int bs = 4;
  int k;
  double a_0, a_1, a_2, a_3, b_0, b_1, b_2, b_3,
      c_00 = 0, c_01 = 0, c_02 = 0, c_10 = 0, c_11 = 0, c_12 = 0, c_20 = 0,
      c_21 = 0, c_22 = 0, c_30 = 0, c_31 = 0, c_32 = 0;
  a_0 = A[0 + bs * 0];
  b_0 = B[0 + bs * 0];
  b_1 = B[1 + bs * 0];
  b_2 = B[2 + bs * 0];
  c_00 -= a_0 * b_0;
  c_01 -= a_0 * b_1;
  c_02 -= a_0 * b_2;
  a_0 = A[0 + bs * 1];
  a_1 = A[1 + bs * 1];
  b_0 = B[0 + bs * 1];
  b_1 = B[1 + bs * 1];
  b_2 = B[2 + bs * 1];
  c_00 -= a_0 * b_0;
  c_10 -= a_1 * b_0;
  c_01 -= a_0 * b_1;
  c_11 -= a_1 * b_1;
  c_02 -= a_0 * b_2;
  c_12 -= a_1 * b_2;
  a_0 = A[0 + bs * 2];
  a_1 = A[1 + bs * 2];
  a_2 = A[2 + bs * 2];
  b_0 = B[0 + bs * 2];
  b_1 = B[1 + bs * 2];
  b_2 = B[2 + bs * 2];
  c_00 -= a_0 * b_0;
  c_10 -= a_1 * b_0;
  c_20 -= a_2 * b_0;
  c_01 -= a_0 * b_1;
  c_11 -= a_1 * b_1;
  c_21 -= a_2 * b_1;
  c_02 -= a_0 * b_2;
  c_12 -= a_1 * b_2;
  c_22 -= a_2 * b_2;
  a_0 = A[0 + bs * 3];
  a_1 = A[1 + bs * 3];
  a_2 = A[2 + bs * 3];
  a_3 = A[3 + bs * 3];
  b_0 = B[0 + bs * 3];
  b_1 = B[1 + bs * 3];
  b_2 = B[2 + bs * 3];
  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 += 16;
  B += 16;
  k = 4;
  for (; k < kmax - 3; k += 4) {
    a_0 = A[0 + bs * 0];
    a_1 = A[1 + bs * 0];
    a_2 = A[2 + bs * 0];
    a_3 = A[3 + bs * 0];
    b_0 = B[0 + bs * 0];
    b_1 = B[1 + bs * 0];
    b_2 = B[2 + bs * 0];
    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 + bs * 1];
    a_1 = A[1 + bs * 1];
    a_2 = A[2 + bs * 1];
    a_3 = A[3 + bs * 1];
    b_0 = B[0 + bs * 1];
    b_1 = B[1 + bs * 1];
    b_2 = B[2 + bs * 1];
    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 + bs * 2];
    a_1 = A[1 + bs * 2];
    a_2 = A[2 + bs * 2];
    a_3 = A[3 + bs * 2];
    b_0 = B[0 + bs * 2];
    b_1 = B[1 + bs * 2];
    b_2 = B[2 + bs * 2];
    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 + bs * 3];
    a_1 = A[1 + bs * 3];
    a_2 = A[2 + bs * 3];
    a_3 = A[3 + bs * 3];
    b_0 = B[0 + bs * 3];
    b_1 = B[1 + bs * 3];
    b_2 = B[2 + bs * 3];
    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 += 16;
    B += 16;
  }
  double a_00, a_10, a_20, a_30, a_11, a_21, a_31, a_22, a_32, a_33;
  if (use_inv_diag_E) {
    a_00 = inv_diag_E[0];
    a_11 = inv_diag_E[1];
    a_22 = inv_diag_E[2];
  } else {
    a_00 = 1.0 / E[0 + bs * 0];
    a_11 = 1.0 / E[1 + bs * 1];
    a_22 = 1.0 / E[2 + bs * 2];
  }
  c_00 *= a_00;
  c_10 *= a_00;
  c_20 *= a_00;
  c_30 *= a_00;
  C[0 + bs * 0] = c_00;
  C[1 + bs * 0] = c_10;
  C[2 + bs * 0] = c_20;
  C[3 + bs * 0] = c_30;
  a_10 = E[1 + bs * 0];
  c_01 -= c_00 * a_10;
  c_11 -= c_10 * a_10;
  c_21 -= c_20 * a_10;
  c_31 -= c_30 * a_10;
  c_01 *= a_11;
  c_11 *= a_11;
  c_21 *= a_11;
  c_31 *= a_11;
  C[0 + bs * 1] = c_01;
  C[1 + bs * 1] = c_11;
  C[2 + bs * 1] = c_21;
  C[3 + bs * 1] = c_31;
  a_20 = E[2 + bs * 0];
  a_21 = E[2 + bs * 1];
  c_02 -= c_00 * a_20;
  c_12 -= c_10 * a_20;
  c_22 -= c_20 * a_20;
  c_32 -= c_30 * a_20;
  c_02 -= c_01 * a_21;
  c_12 -= c_11 * a_21;
  c_22 -= c_21 * a_21;
  c_32 -= c_31 * a_21;
  c_02 *= a_22;
  c_12 *= a_22;
  c_22 *= a_22;
  c_32 *= a_22;
  C[0 + bs * 2] = c_02;
  C[1 + bs * 2] = c_12;
  C[2 + bs * 2] = c_22;
  C[3 + bs * 2] = c_32;
}


x86 assembly (clang, -O0):
<kernel_dtrtri_4x3_lib4>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa8,%rsp
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9d,-0x2c(%rbp)
movl   $0x4,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%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,-0x34(%rbp)
mov    -0x34(%rbp),%eax
mov    -0x4(%rbp),%ecx
sub    $0x3,%ecx
cmp    %ecx,%eax
jge    25f2 <kernel_dtrtri_4x3_lib4+0x14f2>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x18(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x98(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xb0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0xc8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x18(%rbp)
mov    -0x34(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0x34(%rbp)
jmp    1999 <kernel_dtrtri_4x3_lib4+0x899>
cmpl   $0x0,-0x2c(%rbp)
je     2633 <kernel_dtrtri_4x3_lib4+0x1533>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    0x10(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
jmp    267d <kernel_dtrtri_4x3_lib4+0x157d>
mov    -0x28(%rbp),%rax
movsd  0x9c1(%rip),%xmm0
divsd  (%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x9a9(%rip),%xmm0
divsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x990(%rip),%xmm0
divsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x28(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xa0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x28(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x28(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0x90(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0xc0(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x90(%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  -0xc0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0xd8(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,0x58(%rax)
add    $0xa8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<kernel_dtrtri_4x3_lib4>:
sub    $0xa8,%rsp
movsd  (%rsi),%xmm1
movsd  (%rdx),%xmm2
mulsd  %xmm1,%xmm2
xorpd  %xmm10,%xmm10
xorpd  %xmm3,%xmm3
subsd  %xmm2,%xmm3
movsd  0x8(%rdx),%xmm2
mulsd  %xmm1,%xmm2
xorpd  %xmm4,%xmm4
subsd  %xmm2,%xmm4
mulsd  0x10(%rdx),%xmm1
xorpd  %xmm5,%xmm5
subsd  %xmm1,%xmm5
movupd 0x20(%rsi),%xmm6
movsd  0x20(%rdx),%xmm1
movsd  0x28(%rdx),%xmm7
movsd  0x30(%rdx),%xmm0
unpcklpd %xmm1,%xmm1
movq   %xmm3,%xmm8
mulpd  %xmm6,%xmm1
subpd  %xmm1,%xmm8
unpcklpd %xmm7,%xmm7
movq   %xmm4,%xmm11
mulpd  %xmm6,%xmm7
subpd  %xmm7,%xmm11
unpcklpd %xmm0,%xmm0
movq   %xmm5,%xmm14
mulpd  %xmm6,%xmm0
subpd  %xmm0,%xmm14
movupd 0x40(%rsi),%xmm9
movsd  0x50(%rsi),%xmm0
movsd  0x40(%rdx),%xmm4
movsd  0x48(%rdx),%xmm6
movsd  0x50(%rdx),%xmm7
movapd %xmm0,%xmm5
mulsd  %xmm4,%xmm5
unpcklpd %xmm4,%xmm4
mulpd  %xmm9,%xmm4
subpd  %xmm4,%xmm8
xorpd  %xmm4,%xmm4
subsd  %xmm5,%xmm4
movapd %xmm0,%xmm5
mulsd  %xmm6,%xmm5
unpcklpd %xmm6,%xmm6
mulpd  %xmm9,%xmm6
subpd  %xmm6,%xmm11
xorpd  %xmm6,%xmm6
subsd  %xmm5,%xmm6
mulsd  %xmm7,%xmm0
unpcklpd %xmm7,%xmm7
mulpd  %xmm9,%xmm7
subpd  %xmm7,%xmm14
subsd  %xmm0,%xmm10
movupd 0x60(%rsi),%xmm0
movupd 0x70(%rsi),%xmm1
movsd  0x60(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm0,%xmm5
mulpd  %xmm7,%xmm5
subpd  %xmm5,%xmm8
movq   %xmm4,%xmm5
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm5
movsd  0x68(%rdx),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm0,%xmm4
mulpd  %xmm7,%xmm4
subpd  %xmm4,%xmm11
movq   %xmm6,%xmm9
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm9
movsd  0x70(%rdx),%xmm6
unpcklpd %xmm6,%xmm6
mulpd  %xmm6,%xmm0
subpd  %xmm0,%xmm14
movq   %xmm10,%xmm12
mulpd  %xmm1,%xmm6
subpd  %xmm6,%xmm12
cmp    $0x8,%edi
jl     16b3 <kernel_dtrtri_4x3_lib4+0x5b3>
add    $0xfffffffd,%edi
mov    $0x4,%r10d
mov    $0xf0,%eax
nopl   0x0(%rax)
movapd %xmm12,-0x30(%rsp)
movapd %xmm14,(%rsp)
movapd %xmm9,0x10(%rsp)
movapd %xmm11,0x30(%rsp)
movapd %xmm5,0x50(%rsp)
movapd %xmm8,0x80(%rsp)
movupd -0x70(%rsi,%rax,1),%xmm6
movupd -0x60(%rsi,%rax,1),%xmm1
movupd -0x50(%rsi,%rax,1),%xmm10
movupd -0x40(%rsi,%rax,1),%xmm13
movsd  -0x70(%rdx,%rax,1),%xmm0
movsd  -0x68(%rdx,%rax,1),%xmm2
movsd  -0x60(%rdx,%rax,1),%xmm4
movsd  -0x50(%rdx,%rax,1),%xmm3
unpcklpd %xmm0,%xmm0
movapd %xmm6,%xmm7
mulpd  %xmm0,%xmm7
subpd  %xmm7,%xmm8
movapd %xmm1,%xmm7
movapd %xmm0,0x60(%rsp)
mulpd  %xmm0,%xmm7
subpd  %xmm7,%xmm5
unpcklpd %xmm2,%xmm2
movapd %xmm6,%xmm7
mulpd  %xmm2,%xmm7
subpd  %xmm7,%xmm11
movapd %xmm1,%xmm7
movapd %xmm2,0x20(%rsp)
mulpd  %xmm2,%xmm7
subpd  %xmm7,%xmm9
unpcklpd %xmm4,%xmm4
movapd %xmm6,0x90(%rsp)
movapd %xmm6,%xmm7
mulpd  %xmm4,%xmm7
subpd  %xmm7,%xmm14
movapd %xmm1,0x40(%rsp)
movapd %xmm1,%xmm7
movapd %xmm4,-0x20(%rsp)
mulpd  %xmm4,%xmm7
subpd  %xmm7,%xmm12
unpcklpd %xmm3,%xmm3
movapd %xmm10,%xmm7
mulpd  %xmm3,%xmm7
subpd  %xmm7,%xmm8
movapd %xmm13,%xmm7
movapd %xmm3,0x70(%rsp)
mulpd  %xmm3,%xmm7
subpd  %xmm7,%xmm5
movsd  -0x48(%rdx,%rax,1),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm10,%xmm7
mulpd  %xmm0,%xmm7
subpd  %xmm7,%xmm11
movapd %xmm13,%xmm7
movapd %xmm0,-0x60(%rsp)
mulpd  %xmm0,%xmm7
subpd  %xmm7,%xmm9
movsd  -0x40(%rdx,%rax,1),%xmm15
unpcklpd %xmm15,%xmm15
movapd %xmm10,-0x70(%rsp)
movapd %xmm10,%xmm7
mulpd  %xmm15,%xmm7
subpd  %xmm7,%xmm14
movapd %xmm13,-0x10(%rsp)
movapd %xmm13,%xmm7
mulpd  %xmm15,%xmm7
subpd  %xmm7,%xmm12
movsd  -0x30(%rdx,%rax,1),%xmm1
unpcklpd %xmm1,%xmm1
movupd -0x30(%rsi,%rax,1),%xmm6
movapd %xmm6,%xmm7
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm8
movupd -0x20(%rsi,%rax,1),%xmm4
movapd %xmm4,%xmm7
movapd %xmm1,-0x50(%rsp)
mulpd  %xmm1,%xmm7
subpd  %xmm7,%xmm5
movsd  -0x28(%rdx,%rax,1),%xmm10
unpcklpd %xmm10,%xmm10
movapd %xmm6,%xmm7
mulpd  %xmm10,%xmm7
subpd  %xmm7,%xmm11
movapd %xmm4,%xmm7
mulpd  %xmm10,%xmm7
subpd  %xmm7,%xmm9
movsd  -0x20(%rdx,%rax,1),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm6,-0x80(%rsp)
mulpd  %xmm7,%xmm6
subpd  %xmm6,%xmm14
movapd %xmm4,%xmm6
mulpd  %xmm7,%xmm6
subpd  %xmm6,%xmm12
movsd  -0x10(%rdx,%rax,1),%xmm13
unpcklpd %xmm13,%xmm13
movupd -0x10(%rsi,%rax,1),%xmm3
movapd %xmm3,%xmm6
mulpd  %xmm13,%xmm6
subpd  %xmm6,%xmm8
movupd (%rsi,%rax,1),%xmm0
movapd %xmm0,%xmm6
mulpd  %xmm13,%xmm6
subpd  %xmm6,%xmm5
movsd  -0x8(%rdx,%rax,1),%xmm2
unpcklpd %xmm2,%xmm2
movapd %xmm3,%xmm6
mulpd  %xmm2,%xmm6
subpd  %xmm6,%xmm11
movapd %xmm0,%xmm6
mulpd  %xmm2,%xmm6
subpd  %xmm6,%xmm9
movsd  (%rdx,%rax,1),%xmm1
unpcklpd %xmm1,%xmm1
movapd %xmm3,-0x40(%rsp)
mulpd  %xmm1,%xmm3
subpd  %xmm3,%xmm14
movapd %xmm0,%xmm3
mulpd  %xmm1,%xmm0
subpd  %xmm0,%xmm12
add    $0x4,%r10d
sub    $0xffffffffffffff80,%rax
cmp    %edi,%r10d
jl     1280 <kernel_dtrtri_4x3_lib4+0x180>
movapd 0x90(%rsp),%xmm0
movapd %xmm4,%xmm11
movapd 0xafb(%rip),%xmm4
xorpd  %xmm4,%xmm0
movapd 0x40(%rsp),%xmm6
xorpd  %xmm4,%xmm6
movapd -0x70(%rsp),%xmm5
xorpd  %xmm4,%xmm5
movapd %xmm5,-0x70(%rsp)
movapd -0x10(%rsp),%xmm8
xorpd  %xmm4,%xmm8
movapd -0x80(%rsp),%xmm5
xorpd  %xmm4,%xmm5
movapd %xmm5,-0x80(%rsp)
xorpd  %xmm4,%xmm11
movapd -0x40(%rsp),%xmm14
xorpd  %xmm4,%xmm14
xorpd  %xmm4,%xmm3
movapd %xmm6,%xmm9
movapd -0x20(%rsp),%xmm5
mulpd  %xmm5,%xmm9
addpd  -0x30(%rsp),%xmm9
movapd %xmm8,%xmm4
mulpd  %xmm15,%xmm4
addpd  %xmm9,%xmm4
movapd %xmm11,%xmm9
mulpd  %xmm7,%xmm9
addpd  %xmm4,%xmm9
movapd %xmm3,%xmm12
mulpd  %xmm1,%xmm12
addpd  %xmm9,%xmm12
mulpd  %xmm0,%xmm5
addpd  (%rsp),%xmm5
mulpd  -0x70(%rsp),%xmm15
addpd  %xmm5,%xmm15
mulpd  -0x80(%rsp),%xmm7
addpd  %xmm15,%xmm7
mulpd  %xmm14,%xmm1
addpd  %xmm7,%xmm1
movapd %xmm6,%xmm5
movapd 0x20(%rsp),%xmm7
mulpd  %xmm7,%xmm5
addpd  0x10(%rsp),%xmm5
movapd %xmm8,%xmm4
movapd -0x60(%rsp),%xmm15
mulpd  %xmm15,%xmm4
addpd  %xmm5,%xmm4
movapd %xmm11,%xmm5
mulpd  %xmm10,%xmm5
addpd  %xmm4,%xmm5
movapd %xmm3,%xmm9
mulpd  %xmm2,%xmm9
addpd  %xmm5,%xmm9
mulpd  %xmm0,%xmm7
addpd  0x30(%rsp),%xmm7
mulpd  -0x70(%rsp),%xmm15
addpd  %xmm7,%xmm15
mulpd  -0x80(%rsp),%xmm10
addpd  %xmm15,%xmm10
mulpd  %xmm14,%xmm2
addpd  %xmm10,%xmm2
movapd 0x60(%rsp),%xmm5
mulpd  %xmm5,%xmm6
addpd  0x50(%rsp),%xmm6
movapd 0x70(%rsp),%xmm7
mulpd  %xmm7,%xmm8
addpd  %xmm6,%xmm8
movapd -0x50(%rsp),%xmm4
mulpd  %xmm4,%xmm11
addpd  %xmm8,%xmm11
mulpd  %xmm13,%xmm3
addpd  %xmm11,%xmm3
mulpd  %xmm5,%xmm0
addpd  0x80(%rsp),%xmm0
movapd -0x70(%rsp),%xmm5
mulpd  %xmm7,%xmm5
addpd  %xmm0,%xmm5
movapd -0x80(%rsp),%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm5,%xmm0
mulpd  %xmm13,%xmm14
addpd  %xmm0,%xmm14
movapd %xmm14,%xmm8
movapd %xmm3,%xmm5
movapd %xmm2,%xmm11
movapd %xmm1,%xmm14
test   %r9d,%r9d
je     16cb <kernel_dtrtri_4x3_lib4+0x5cb>
mov    0xb0(%rsp),%rax
movupd (%rax),%xmm6
movsd  0x10(%rax),%xmm0
jmp    16f0 <kernel_dtrtri_4x3_lib4+0x5f0>
movsd  (%r8),%xmm7
movhpd 0x28(%r8),%xmm7
movapd 0x932(%rip),%xmm6
divpd  %xmm7,%xmm6
movsd  0x936(%rip),%xmm0
divsd  0x50(%r8),%xmm0
movapd %xmm6,%xmm7
unpcklpd %xmm6,%xmm7
mulpd  %xmm7,%xmm8
mulpd  %xmm7,%xmm5
movupd %xmm8,(%rcx)
movupd %xmm5,0x10(%rcx)
movsd  0x8(%r8),%xmm7
unpcklpd %xmm7,%xmm7
movapd %xmm8,%xmm3
mulpd  %xmm7,%xmm3
subpd  %xmm3,%xmm11
mulpd  %xmm5,%xmm7
subpd  %xmm7,%xmm9
unpckhpd %xmm6,%xmm6
mulpd  %xmm6,%xmm11
mulpd  %xmm9,%xmm6
movupd %xmm11,0x20(%rcx)
movupd %xmm6,0x30(%rcx)
movsd  0x10(%r8),%xmm3
movsd  0x30(%r8),%xmm4
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm8
subpd  %xmm8,%xmm14
mulpd  %xmm5,%xmm3
subpd  %xmm3,%xmm12
unpcklpd %xmm4,%xmm4
mulpd  %xmm4,%xmm11
subpd  %xmm11,%xmm14
mulpd  %xmm6,%xmm4
subpd  %xmm4,%xmm12
unpcklpd %xmm0,%xmm0
mulpd  %xmm0,%xmm14
mulpd  %xmm12,%xmm0
movupd %xmm14,0x40(%rcx)
movupd %xmm0,0x50(%rcx)
add    $0xa8,%rsp
ret

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

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