void solve4x4(double M[4 * 4], double P[4], double C[4]) {
  double delta =
      +M[0] *
          (M[5] * M[10] * M[15] + M[7] * M[9] * M[14] + M[13] * M[6] * M[11] -
           M[7] * M[10] * M[13] - M[5] * M[11] * M[14] - M[15] * M[6] * M[9]) -
      M[1] *
          (M[4] * M[10] * M[15] + M[7] * M[8] * M[14] + M[12] * M[6] * M[11] -
           M[7] * M[10] * M[12] - M[4] * M[11] * M[14] - M[15] * M[6] * M[8]) +
      M[2] *
          (M[4] * M[9] * M[15] + M[7] * M[8] * M[13] + M[12] * M[5] * M[11] -
           M[7] * M[9] * M[12] - M[4] * M[11] * M[13] - M[15] * M[5] * M[8]) -
      M[3] * (M[4] * M[9] * M[14] + M[6] * M[8] * M[13] + M[12] * M[5] * M[10] -
              M[6] * M[9] * M[12] - M[4] * M[10] * M[13] - M[14] * M[5] * M[8]);
  double delta_x1 =
      +P[0] *
          (M[5] * M[10] * M[15] + M[7] * M[9] * M[14] + M[13] * M[6] * M[11] -
           M[7] * M[10] * M[13] - M[5] * M[11] * M[14] - M[15] * M[6] * M[9]) -
      M[1] *
          (P[1] * M[10] * M[15] + M[7] * P[2] * M[14] + P[3] * M[6] * M[11] -
           M[7] * M[10] * P[3] - P[1] * M[11] * M[14] - M[15] * M[6] * P[2]) +
      M[2] * (P[1] * M[9] * M[15] + M[7] * P[2] * M[13] + P[3] * M[5] * M[11] -
              M[7] * M[9] * P[3] - P[1] * M[11] * M[13] - M[15] * M[5] * P[2]) -
      M[3] * (P[1] * M[9] * M[14] + M[6] * P[2] * M[13] + P[3] * M[5] * M[10] -
              M[6] * M[9] * P[3] - P[1] * M[10] * M[13] - M[14] * M[5] * P[2]);
  double delta_x2 =
      +M[0] *
          (P[1] * M[10] * M[15] + M[7] * P[2] * M[14] + P[3] * M[6] * M[11] -
           M[7] * M[10] * P[3] - P[1] * M[11] * M[14] - M[15] * M[6] * P[2]) -
      P[0] *
          (M[4] * M[10] * M[15] + M[7] * M[8] * M[14] + M[12] * M[6] * M[11] -
           M[7] * M[10] * M[12] - M[4] * M[11] * M[14] - M[15] * M[6] * M[8]) +
      M[2] * (M[4] * P[2] * M[15] + M[7] * M[8] * P[3] + M[12] * P[1] * M[11] -
              M[7] * P[2] * M[12] - M[4] * M[11] * P[3] - M[15] * P[1] * M[8]) -
      M[3] * (M[4] * P[2] * M[14] + M[6] * M[8] * P[3] + M[12] * P[1] * M[10] -
              M[6] * P[2] * M[12] - M[4] * M[10] * P[3] - M[14] * P[1] * M[8]);
  double delta_x3 =
      +M[0] *
          (M[5] * P[2] * M[15] + M[7] * M[9] * P[3] + M[13] * P[1] * M[11] -
           M[7] * P[2] * M[13] - M[5] * M[11] * P[3] - M[15] * P[1] * M[9]) -
      M[1] * (M[4] * P[2] * M[15] + M[7] * M[8] * P[3] + M[12] * P[1] * M[11] -
              M[7] * P[2] * M[12] - M[4] * M[11] * P[3] - M[15] * P[1] * M[8]) +
      P[0] *
          (M[4] * M[9] * M[15] + M[7] * M[8] * M[13] + M[12] * M[5] * M[11] -
           M[7] * M[9] * M[12] - M[4] * M[11] * M[13] - M[15] * M[5] * M[8]) -
      M[3] * (M[4] * M[9] * P[3] + P[1] * M[8] * M[13] + M[12] * M[5] * P[2] -
              P[1] * M[9] * M[12] - M[4] * P[2] * M[13] - P[3] * M[5] * M[8]);
  double delta_x4 =
      +M[0] *
          (M[5] * M[10] * P[3] + P[1] * M[9] * M[14] + M[13] * M[6] * P[2] -
           P[1] * M[10] * M[13] - M[5] * P[2] * M[14] - P[3] * M[6] * M[9]) -
      M[1] * (M[4] * M[10] * P[3] + P[1] * M[8] * M[14] + M[12] * M[6] * P[2] -
              P[1] * M[10] * M[12] - M[4] * P[2] * M[14] - P[3] * M[6] * M[8]) +
      M[2] * (M[4] * M[9] * P[3] + P[1] * M[8] * M[13] + M[12] * M[5] * P[2] -
              P[1] * M[9] * M[12] - M[4] * P[2] * M[13] - P[3] * M[5] * M[8]) -
      P[0] * (M[4] * M[9] * M[14] + M[6] * M[8] * M[13] + M[12] * M[5] * M[10] -
              M[6] * M[9] * M[12] - M[4] * M[10] * M[13] - M[14] * M[5] * M[8]);
  assert(delta != 0.f);
  C[0] = delta_x1 / delta;
  C[1] = delta_x2 / delta;
  C[2] = delta_x3 / delta;
  C[3] = delta_x4 / delta;
}


x86 assembly (clang, -O0):
<solve4x4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm5
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm5
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm5
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm4
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm5
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm5
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm5
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm5
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm4
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm4
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm5
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x58(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm3
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm3
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm3
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm2
addsd  %xmm1,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm5
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x70(%rax),%xmm4
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm4
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm4
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm5
movq   %xmm4,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm5
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm1
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm4
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x10(%rbp),%rax
movsd  0x10(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x10(%rbp),%rax
movsd  0x18(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm4
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x40(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x68(%rax),%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm4
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x48(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm3
mov    -0x8(%rbp),%rax
mulsd  0x50(%rax),%xmm3
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm4
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm2,%xmm3
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x8(%rbp),%rax
mulsd  0x28(%rax),%xmm2
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm4
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
setne  %al
setp   %cl
or     %cl,%al
and    $0x1,%al
movzbl %al,%edi
mov    $0x0,%al
call   1030 <assert@plt>
movsd  -0x28(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x30(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x38(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x40(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<solve4x4>:
push   %rbx
sub    $0x280,%rsp
mov    %rdx,%rbx
movsd  0x50(%rdi),%xmm0
movsd  0x78(%rdi),%xmm13
movsd  0x38(%rdi),%xmm5
movsd  0x70(%rdi),%xmm12
movapd 0xec6(%rip),%xmm8
movapd %xmm5,%xmm1
xorpd  %xmm8,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,%xmm10
movsd  0x20(%rdi),%xmm7
movapd %xmm7,0x10(%rsp)
movsd  0x40(%rdi),%xmm1
movapd %xmm5,%xmm4
mulsd  %xmm1,%xmm4
movapd %xmm4,0x150(%rsp)
movapd %xmm1,%xmm6
movapd %xmm12,%xmm1
mulsd  %xmm4,%xmm1
movupd 0x8(%rsi),%xmm3
movapd %xmm3,%xmm2
shufpd $0x1,%xmm0,%xmm2
movapd %xmm2,0xa0(%rsp)
unpcklpd %xmm0,%xmm0
movapd %xmm0,0x270(%rsp)
movapd %xmm3,%xmm4
unpcklpd %xmm7,%xmm4
movapd %xmm0,%xmm7
mulpd  %xmm4,%xmm7
movapd %xmm7,(%rsp)
unpckhpd %xmm7,%xmm7
movapd %xmm7,0x120(%rsp)
mulsd  %xmm13,%xmm7
addsd  %xmm1,%xmm7
movsd  0x30(%rdi),%xmm1
movsd  0x60(%rdi),%xmm0
movapd %xmm1,%xmm15
mulsd  %xmm0,%xmm15
movapd %xmm0,%xmm2
movapd %xmm0,0x80(%rsp)
movapd %xmm3,%xmm0
movapd %xmm3,%xmm11
movapd %xmm3,0x130(%rsp)
unpckhpd %xmm3,%xmm0
movsd  0x68(%rdi),%xmm3
movapd %xmm3,0x70(%rsp)
unpcklpd %xmm1,%xmm3
movapd %xmm3,0x30(%rsp)
movapd %xmm6,0xb0(%rsp)
movapd %xmm6,%xmm3
unpcklpd %xmm1,%xmm3
movapd %xmm3,0x90(%rsp)
movapd %xmm1,%xmm9
movapd %xmm1,0x50(%rsp)
movapd %xmm1,0x40(%rsp)
mulsd  %xmm0,%xmm1
movapd %xmm1,0x110(%rsp)
mulsd  %xmm15,%xmm0
movapd %xmm0,0x260(%rsp)
movapd %xmm15,%xmm0
movsd  0x58(%rdi),%xmm15
mulsd  %xmm15,%xmm0
addsd  %xmm7,%xmm0
movapd %xmm10,%xmm3
movapd %xmm10,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
xorpd  %xmm8,%xmm4
movapd %xmm15,%xmm2
unpcklpd %xmm15,%xmm2
mulpd  %xmm2,%xmm4
movapd %xmm4,0xe0(%rsp)
movapd %xmm2,0x220(%rsp)
movapd %xmm4,%xmm0
unpckhpd %xmm4,%xmm0
movapd %xmm0,%xmm4
mulsd  %xmm12,%xmm4
addsd  %xmm1,%xmm4
movapd %xmm13,%xmm1
xorpd  %xmm8,%xmm1
movapd %xmm1,0x20(%rsp)
mulsd  %xmm1,%xmm9
movapd %xmm9,%xmm1
mulsd  %xmm6,%xmm1
addsd  %xmm4,%xmm1
movapd %xmm5,%xmm7
unpcklpd %xmm5,%xmm7
movsd  0x48(%rdi),%xmm10
movapd %xmm11,%xmm5
movsd  %xmm10,%xmm5
movapd %xmm10,0xd0(%rsp)
mulpd  %xmm5,%xmm7
movapd %xmm7,%xmm4
unpcklpd %xmm12,%xmm4
movapd %xmm7,%xmm6
movapd %xmm7,%xmm11
movapd %xmm7,0xc0(%rsp)
movsd  %xmm12,%xmm6
mulpd  %xmm4,%xmm6
movsd  0x28(%rdi),%xmm14
movapd %xmm14,%xmm7
unpcklpd %xmm14,%xmm7
mulpd  0xa0(%rsp),%xmm7
movapd %xmm7,0x1f0(%rsp)
shufpd $0x1,(%rsp),%xmm7
movapd %xmm13,%xmm4
movapd %xmm13,0x60(%rsp)
movapd %xmm13,%xmm8
unpcklpd %xmm13,%xmm8
movapd %xmm8,0x100(%rsp)
mulpd  %xmm8,%xmm7
addpd  %xmm6,%xmm7
movsd  0x18(%rsi),%xmm13
movapd 0x50(%rsp),%xmm6
unpcklpd %xmm13,%xmm6
mulpd  0x30(%rsp),%xmm6
movapd %xmm6,0x50(%rsp)
mulpd  %xmm2,%xmm6
addpd  %xmm7,%xmm6
unpcklpd %xmm3,%xmm3
movapd 0x70(%rsp),%xmm8
movapd %xmm8,%xmm2
unpcklpd %xmm13,%xmm2
movapd %xmm2,0xf0(%rsp)
mulpd  %xmm2,%xmm3
addpd  %xmm6,%xmm3
movapd %xmm14,%xmm7
xorpd  0xc30(%rip),%xmm7
movapd %xmm15,0x200(%rsp)
mulsd  %xmm15,%xmm7
movapd %xmm7,0x250(%rsp)
movapd 0xe0(%rsp),%xmm6
unpcklpd %xmm6,%xmm7
movapd %xmm12,%xmm2
unpcklpd %xmm12,%xmm2
movapd %xmm2,0x30(%rsp)
mulpd  %xmm2,%xmm7
addpd  %xmm3,%xmm7
unpcklpd %xmm9,%xmm9
mulpd  %xmm5,%xmm9
addpd  %xmm7,%xmm9
movsd  (%rsi),%xmm5
movapd %xmm5,0x210(%rsp)
movsd  0x8(%rdi),%xmm2
movapd %xmm2,0x240(%rsp)
unpcklpd %xmm5,%xmm2
movsd  (%rdi),%xmm7
movapd %xmm7,0x230(%rsp)
movapd %xmm7,%xmm3
mulsd  %xmm9,%xmm3
unpcklpd %xmm7,%xmm5
mulpd  %xmm9,%xmm5
movapd %xmm5,0x1e0(%rsp)
shufpd $0x1,%xmm1,%xmm9
mulpd  %xmm2,%xmm9
movapd %xmm9,0x1c0(%rsp)
movapd 0xb80(%rip),%xmm5
xorpd  %xmm5,%xmm2
movapd %xmm2,0x1a0(%rsp)
mulsd  %xmm2,%xmm1
addsd  %xmm1,%xmm3
movapd %xmm10,%xmm7
mulsd  0x10(%rsp),%xmm7
movapd %xmm8,%xmm1
mulsd  0x150(%rsp),%xmm1
movapd %xmm7,%xmm2
mulsd  %xmm4,%xmm2
addsd  %xmm1,%xmm2
movapd %xmm14,%xmm9
movapd 0x80(%rsp),%xmm1
mulsd  %xmm1,%xmm9
movapd %xmm9,%xmm4
mulsd  %xmm15,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm11,%xmm10
xorpd  %xmm5,%xmm10
movapd %xmm5,%xmm15
movapd %xmm10,%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm8,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm1,%xmm11
unpcklpd %xmm14,%xmm11
movapd %xmm14,%xmm2
movapd 0x130(%rsp),%xmm1
unpcklpd %xmm1,%xmm2
pshufd $0x44,0x20(%rsp),%xmm14
44
mulpd  %xmm2,%xmm14
movapd %xmm14,0x1d0(%rsp)
movapd 0xb0(%rsp),%xmm5
mulsd  %xmm5,%xmm14
addsd  %xmm0,%xmm14
movsd  0x10(%rdi),%xmm0
movapd %xmm0,0x190(%rsp)
mulsd  %xmm14,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm0,0x20(%rsp)
movapd 0xd0(%rsp),%xmm4
unpcklpd 0x10(%rsp),%xmm4
movapd %xmm1,%xmm8
unpcklpd %xmm5,%xmm8
mulpd  0x90(%rsp),%xmm8
movapd 0xf0(%rsp),%xmm0
mulpd  %xmm0,%xmm6
movapd %xmm6,0xe0(%rsp)
movapd (%rsp),%xmm6
mulpd  %xmm6,%xmm0
movapd %xmm0,0xf0(%rsp)
movapd %xmm13,%xmm0
unpcklpd %xmm12,%xmm0
movapd %xmm0,0x90(%rsp)
xorpd  %xmm15,%xmm6
mulpd  %xmm1,%xmm4
movapd %xmm1,%xmm3
movapd 0x70(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
movapd %xmm1,%xmm5
xorpd  %xmm15,%xmm5
shufpd $0x2,%xmm6,%xmm5
mulpd  %xmm0,%xmm5
shufpd $0x1,%xmm6,%xmm10
mulpd  %xmm0,%xmm10
mulpd  %xmm8,%xmm0
movapd %xmm8,0x10(%rsp)
mulsd  %xmm12,%xmm8
mulsd  %xmm12,%xmm1
movapd %xmm1,0x1b0(%rsp)
xorpd  %xmm15,%xmm12
pshufd $0x44,%xmm12,%xmm1
mulpd  %xmm2,%xmm1
movapd %xmm1,0x140(%rsp)
movapd %xmm3,%xmm2
movapd %xmm3,%xmm15
unpcklpd %xmm13,%xmm2
mulpd  %xmm11,%xmm2
unpcklpd %xmm7,%xmm7
mulpd  0x90(%rsp),%xmm7
addpd  %xmm0,%xmm7
unpcklpd %xmm9,%xmm9
mulpd  0xa0(%rsp),%xmm9
addpd  %xmm7,%xmm9
movapd 0xc0(%rsp),%xmm7
movapd %xmm7,%xmm0
shufpd $0x1,%xmm13,%xmm0
movapd %xmm0,0xa0(%rsp)
movapd 0x110(%rsp),%xmm11
movapd %xmm11,%xmm0
unpcklpd %xmm13,%xmm0
movapd %xmm0,0x180(%rsp)
movapd 0x60(%rsp),%xmm0
unpcklpd %xmm13,%xmm0
movapd %xmm0,0x60(%rsp)
movapd 0x120(%rsp),%xmm0
mulsd  %xmm13,%xmm0
movapd %xmm0,0x120(%rsp)
movapd 0x80(%rsp),%xmm0
unpcklpd %xmm0,%xmm13
movapd %xmm13,0x170(%rsp)
mulsd  %xmm0,%xmm6
movapd 0x90e(%rip),%xmm12
movapd 0x40(%rsp),%xmm3
xorpd  %xmm12,%xmm3
mulsd  0xd0(%rsp),%xmm3
movapd %xmm3,0x40(%rsp)
movapd 0x100(%rsp),%xmm1
mulpd  %xmm4,%xmm1
movapd %xmm1,0x100(%rsp)
movapd 0x30(%rsp),%xmm1
mulpd  %xmm4,%xmm1
movapd %xmm1,0x30(%rsp)
movapd %xmm7,%xmm1
movapd %xmm7,0x160(%rsp)
unpcklpd %xmm4,%xmm1
movapd %xmm1,0xc0(%rsp)
xorpd  %xmm12,%xmm4
movapd %xmm12,%xmm1
unpcklpd %xmm3,%xmm4
unpcklpd %xmm0,%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm9,%xmm0
addpd  %xmm0,%xmm5
movsd  0x18(%rdi),%xmm9
movapd %xmm9,%xmm0
xorpd  %xmm12,%xmm0
movapd %xmm0,(%rsp)
movapd %xmm2,%xmm4
unpckhpd %xmm2,%xmm2
xorpd  %xmm12,%xmm2
unpcklpd 0x140(%rsp),%xmm2
movapd %xmm15,%xmm0
movapd %xmm15,%xmm3
shufpd $0x1,0xb0(%rsp),%xmm3
movapd 0x70(%rsp),%xmm12
movapd 0x10(%rsp),%xmm7
movsd  %xmm12,%xmm7
movapd %xmm7,0x10(%rsp)
xorpd  %xmm1,%xmm11
movapd %xmm11,0x110(%rsp)
movapd %xmm12,%xmm13
mulsd  %xmm0,%xmm12
movapd 0x1f0(%rsp),%xmm15
movapd 0x60(%rsp),%xmm0
mulpd  %xmm15,%xmm0
movapd %xmm0,0x60(%rsp)
movapd 0x50(%rsp),%xmm0
unpcklpd %xmm0,%xmm12
movapd %xmm12,0x70(%rsp)
xorpd  %xmm1,%xmm15
unpckhpd %xmm0,%xmm0
xorpd  %xmm0,%xmm1
movapd %xmm1,0x80(%rsp)
movapd 0xb0(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm0,0x50(%rsp)
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
mulpd  %xmm2,%xmm0
addpd  %xmm5,%xmm0
movapd (%rsp),%xmm1
shufpd $0x2,0x1a0(%rsp),%xmm1
unpcklpd %xmm0,%xmm14
mulpd  %xmm0,%xmm1
movapd %xmm1,(%rsp)
unpckhpd %xmm0,%xmm0
mulsd  %xmm9,%xmm0
movapd 0x20(%rsp),%xmm12
subsd  %xmm0,%xmm12
movapd %xmm12,0x20(%rsp)
movapd 0x1e0(%rsp),%xmm2
subpd  0x1c0(%rsp),%xmm2
unpcklpd 0x150(%rsp),%xmm13
movapd 0xa0(%rsp),%xmm0
mulpd  %xmm13,%xmm0
movapd 0x100(%rsp),%xmm1
addpd  %xmm0,%xmm1
shufpd $0x1,%xmm4,%xmm4
movapd 0x220(%rsp),%xmm0
mulpd  %xmm4,%xmm0
addpd  %xmm1,%xmm0
movapd 0x170(%rsp),%xmm7
movapd 0x160(%rsp),%xmm1
mulpd  %xmm7,%xmm1
subpd  %xmm1,%xmm0
movapd 0xe0(%rsp),%xmm1
addpd  %xmm0,%xmm1
movapd 0x1d0(%rsp),%xmm13
movapd %xmm13,%xmm0
mulpd  %xmm3,%xmm0
addpd  %xmm1,%xmm0
movapd 0x210(%rsp),%xmm11
movapd 0x190(%rsp),%xmm5
unpcklpd %xmm5,%xmm11
unpcklpd %xmm5,%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm2,%xmm5
movapd 0x180(%rsp),%xmm2
mulpd  0x10(%rsp),%xmm2
movapd 0x30(%rsp),%xmm1
addpd  %xmm2,%xmm1
mulpd  0x270(%rsp),%xmm4
addpd  %xmm1,%xmm4
movapd 0x40(%rsp),%xmm1
unpcklpd 0x110(%rsp),%xmm1
mulpd  %xmm7,%xmm1
addpd  %xmm4,%xmm1
subpd  0xf0(%rsp),%xmm1
mulpd  0x140(%rsp),%xmm3
addpd  %xmm1,%xmm3
unpcklpd %xmm9,%xmm9
mulpd  %xmm3,%xmm9
subpd  %xmm9,%xmm5
movapd %xmm5,0x40(%rsp)
movapd 0x90(%rsp),%xmm3
movapd 0xc0(%rsp),%xmm2
mulpd  %xmm3,%xmm2
movapd 0x60(%rsp),%xmm1
addpd  %xmm2,%xmm1
movapd 0x130(%rsp),%xmm2
movlpd 0x200(%rsp),%xmm2
mulpd  0x70(%rsp),%xmm2
addpd  %xmm1,%xmm2
addpd  %xmm2,%xmm10
movapd 0x250(%rsp),%xmm1
unpcklpd %xmm15,%xmm1
mulpd  %xmm3,%xmm1
addpd  %xmm10,%xmm1
movapd %xmm13,%xmm2
shufpd $0x1,0x80(%rsp),%xmm2
movapd 0xd0(%rsp),%xmm15
unpcklpd %xmm15,%xmm15
mulpd  %xmm2,%xmm15
addpd  %xmm1,%xmm15
movapd 0x120(%rsp),%xmm1
addsd  %xmm8,%xmm1
movapd 0x260(%rsp),%xmm2
addsd  %xmm1,%xmm2
addsd  %xmm2,%xmm6
subsd  0x1b0(%rsp),%xmm6
subsd  0x50(%rsp),%xmm6
shufpd $0x1,%xmm6,%xmm0
movapd 0x240(%rsp),%xmm1
unpcklpd %xmm1,%xmm1
mulpd  %xmm0,%xmm1
movapd 0x230(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm15,%xmm0
subpd  %xmm1,%xmm0
mulpd  %xmm11,%xmm14
addpd  %xmm0,%xmm14
movapd (%rsp),%xmm0
addpd  %xmm14,%xmm0
movapd %xmm0,(%rsp)
xorpd  %xmm0,%xmm0
cmpneqsd %xmm12,%xmm0
movq   %xmm0,%rdi
and    $0x1,%edi
xor    %eax,%eax
call   1030 <assert@plt>
movapd 0x20(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
movapd 0x40(%rsp),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,(%rbx)
movapd (%rsp),%xmm1
divpd  %xmm0,%xmm1
movupd %xmm1,0x10(%rbx)
add    $0x280,%rsp
pop    %rbx
ret

LLVM IR (-O0):
define void @solve4x4(double* %0, double* %1, double* %2) {
%4 = alloca double*
%5 = alloca double*
%6 = alloca double*
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
store double* %0, double** %4
store double* %1, double** %5
store double* %2, double** %6
%12 = load double*, double** %4
%13 = getelementptr inbounds double, double* %12, i64 0
%14 = load double, double* %13
%15 = load double*, double** %4
%16 = getelementptr inbounds double, double* %15, i64 5
%17 = load double, double* %16
%18 = load double*, double** %4
%19 = getelementptr inbounds double, double* %18, i64 10
%20 = load double, double* %19
%21 = fmul double %17, %20
%22 = load double*, double** %4
%23 = getelementptr inbounds double, double* %22, i64 15
%24 = load double, double* %23
%25 = load double*, double** %4
%26 = getelementptr inbounds double, double* %25, i64 7
%27 = load double, double* %26
%28 = load double*, double** %4
%29 = getelementptr inbounds double, double* %28, i64 9
%30 = load double, double* %29
%31 = fmul double %27, %30
%32 = load double*, double** %4
%33 = getelementptr inbounds double, double* %32, i64 14
%34 = load double, double* %33
%35 = fmul double %31, %34
%36 = call double @llvm.fmuladd.f64(double %21, double %24, double %35)
%37 = load double*, double** %4
%38 = getelementptr inbounds double, double* %37, i64 13
%39 = load double, double* %38
%40 = load double*, double** %4
%41 = getelementptr inbounds double, double* %40, i64 6
%42 = load double, double* %41
%43 = fmul double %39, %42
%44 = load double*, double** %4
%45 = getelementptr inbounds double, double* %44, i64 11
%46 = load double, double* %45
%47 = call double @llvm.fmuladd.f64(double %43, double %46, double %36)
%48 = load double*, double** %4
%49 = getelementptr inbounds double, double* %48, i64 7
%50 = load double, double* %49
%51 = load double*, double** %4
%52 = getelementptr inbounds double, double* %51, i64 10
%53 = load double, double* %52
%54 = fmul double %50, %53
%55 = load double*, double** %4
%56 = getelementptr inbounds double, double* %55, i64 13
%57 = load double, double* %56
%58 = fneg double %54
%59 = call double @llvm.fmuladd.f64(double %58, double %57, double %47)
%60 = load double*, double** %4
%61 = getelementptr inbounds double, double* %60, i64 5
%62 = load double, double* %61
%63 = load double*, double** %4
%64 = getelementptr inbounds double, double* %63, i64 11
%65 = load double, double* %64
%66 = fmul double %62, %65
%67 = load double*, double** %4
%68 = getelementptr inbounds double, double* %67, i64 14
%69 = load double, double* %68
%70 = fneg double %66
%71 = call double @llvm.fmuladd.f64(double %70, double %69, double %59)
%72 = load double*, double** %4
%73 = getelementptr inbounds double, double* %72, i64 15
%74 = load double, double* %73
%75 = load double*, double** %4
%76 = getelementptr inbounds double, double* %75, i64 6
%77 = load double, double* %76
%78 = fmul double %74, %77
%79 = load double*, double** %4
%80 = getelementptr inbounds double, double* %79, i64 9
%81 = load double, double* %80
%82 = fneg double %78
%83 = call double @llvm.fmuladd.f64(double %82, double %81, double %71)
%84 = load double*, double** %4
%85 = getelementptr inbounds double, double* %84, i64 1
%86 = load double, double* %85
%87 = load double*, double** %4
%88 = getelementptr inbounds double, double* %87, i64 4
%89 = load double, double* %88
%90 = load double*, double** %4
%91 = getelementptr inbounds double, double* %90, i64 10
%92 = load double, double* %91
%93 = fmul double %89, %92
%94 = load double*, double** %4
%95 = getelementptr inbounds double, double* %94, i64 15
%96 = load double, double* %95
%97 = load double*, double** %4
%98 = getelementptr inbounds double, double* %97, i64 7
%99 = load double, double* %98
%100 = load double*, double** %4
%101 = getelementptr inbounds double, double* %100, i64 8
%102 = load double, double* %101
%103 = fmul double %99, %102
%104 = load double*, double** %4
%105 = getelementptr inbounds double, double* %104, i64 14
%106 = load double, double* %105
%107 = fmul double %103, %106
%108 = call double @llvm.fmuladd.f64(double %93, double %96, double %107)
%109 = load double*, double** %4
%110 = getelementptr inbounds double, double* %109, i64 12
%111 = load double, double* %110
%112 = load double*, double** %4
%113 = getelementptr inbounds double, double* %112, i64 6
%114 = load double, double* %113
%115 = fmul double %111, %114
%116 = load double*, double** %4
%117 = getelementptr inbounds double, double* %116, i64 11
%118 = load double, double* %117
%119 = call double @llvm.fmuladd.f64(double %115, double %118, double %108)
%120 = load double*, double** %4
%121 = getelementptr inbounds double, double* %120, i64 7
%122 = load double, double* %121
%123 = load double*, double** %4
%124 = getelementptr inbounds double, double* %123, i64 10
%125 = load double, double* %124
%126 = fmul double %122, %125
%127 = load double*, double** %4
%128 = getelementptr inbounds double, double* %127, i64 12
%129 = load double, double* %128
%130 = fneg double %126
%131 = call double @llvm.fmuladd.f64(double %130, double %129, double %119)
%132 = load double*, double** %4
%133 = getelementptr inbounds double, double* %132, i64 4
%134 = load double, double* %133
%135 = load double*, double** %4
%136 = getelementptr inbounds double, double* %135, i64 11
%137 = load double, double* %136
%138 = fmul double %134, %137
%139 = load double*, double** %4
%140 = getelementptr inbounds double, double* %139, i64 14
%141 = load double, double* %140
%142 = fneg double %138
%143 = call double @llvm.fmuladd.f64(double %142, double %141, double %131)
%144 = load double*, double** %4
%145 = getelementptr inbounds double, double* %144, i64 15
%146 = load double, double* %145
%147 = load double*, double** %4
%148 = getelementptr inbounds double, double* %147, i64 6
%149 = load double, double* %148
%150 = fmul double %146, %149
%151 = load double*, double** %4
%152 = getelementptr inbounds double, double* %151, i64 8
%153 = load double, double* %152
%154 = fneg double %150
%155 = call double @llvm.fmuladd.f64(double %154, double %153, double %143)
%156 = fmul double %86, %155
%157 = fneg double %156
%158 = call double @llvm.fmuladd.f64(double %14, double %83, double %157)
%159 = load double*, double** %4
%160 = getelementptr inbounds double, double* %159, i64 2
%161 = load double, double* %160
%162 = load double*, double** %4
%163 = getelementptr inbounds double, double* %162, i64 4
%164 = load double, double* %163
%165 = load double*, double** %4
%166 = getelementptr inbounds double, double* %165, i64 9
%167 = load double, double* %166
%168 = fmul double %164, %167
%169 = load double*, double** %4
%170 = getelementptr inbounds double, double* %169, i64 15
%171 = load double, double* %170
%172 = load double*, double** %4
%173 = getelementptr inbounds double, double* %172, i64 7
%174 = load double, double* %173
%175 = load double*, double** %4
%176 = getelementptr inbounds double, double* %175, i64 8
%177 = load double, double* %176
%178 = fmul double %174, %177
%179 = load double*, double** %4
%180 = getelementptr inbounds double, double* %179, i64 13
%181 = load double, double* %180
%182 = fmul double %178, %181
%183 = call double @llvm.fmuladd.f64(double %168, double %171, double %182)
%184 = load double*, double** %4
%185 = getelementptr inbounds double, double* %184, i64 12
%186 = load double, double* %185
%187 = load double*, double** %4
%188 = getelementptr inbounds double, double* %187, i64 5
%189 = load double, double* %188
%190 = fmul double %186, %189
%191 = load double*, double** %4
%192 = getelementptr inbounds double, double* %191, i64 11
%193 = load double, double* %192
%194 = call double @llvm.fmuladd.f64(double %190, double %193, double %183)
%195 = load double*, double** %4
%196 = getelementptr inbounds double, double* %195, i64 7
%197 = load double, double* %196
%198 = load double*, double** %4
%199 = getelementptr inbounds double, double* %198, i64 9
%200 = load double, double* %199
%201 = fmul double %197, %200
%202 = load double*, double** %4
%203 = getelementptr inbounds double, double* %202, i64 12
%204 = load double, double* %203
%205 = fneg double %201
%206 = call double @llvm.fmuladd.f64(double %205, double %204, double %194)
%207 = load double*, double** %4
%208 = getelementptr inbounds double, double* %207, i64 4
%209 = load double, double* %208
%210 = load double*, double** %4
%211 = getelementptr inbounds double, double* %210, i64 11
%212 = load double, double* %211
%213 = fmul double %209, %212
%214 = load double*, double** %4
%215 = getelementptr inbounds double, double* %214, i64 13
%216 = load double, double* %215
%217 = fneg double %213
%218 = call double @llvm.fmuladd.f64(double %217, double %216, double %206)
%219 = load double*, double** %4
%220 = getelementptr inbounds double, double* %219, i64 15
%221 = load double, double* %220
%222 = load double*, double** %4
%223 = getelementptr inbounds double, double* %222, i64 5
%224 = load double, double* %223
%225 = fmul double %221, %224
%226 = load double*, double** %4
%227 = getelementptr inbounds double, double* %226, i64 8
%228 = load double, double* %227
%229 = fneg double %225
%230 = call double @llvm.fmuladd.f64(double %229, double %228, double %218)
%231 = call double @llvm.fmuladd.f64(double %161, double %230, double %158)
%232 = load double*, double** %4
%233 = getelementptr inbounds double, double* %232, i64 3
%234 = load double, double* %233
%235 = load double*, double** %4
%236 = getelementptr inbounds double, double* %235, i64 4
%237 = load double, double* %236
%238 = load double*, double** %4
%239 = getelementptr inbounds double, double* %238, i64 9
%240 = load double, double* %239
%241 = fmul double %237, %240
%242 = load double*, double** %4
%243 = getelementptr inbounds double, double* %242, i64 14
%244 = load double, double* %243
%245 = load double*, double** %4
%246 = getelementptr inbounds double, double* %245, i64 6
%247 = load double, double* %246
%248 = load double*, double** %4
%249 = getelementptr inbounds double, double* %248, i64 8
%250 = load double, double* %249
%251 = fmul double %247, %250
%252 = load double*, double** %4
%253 = getelementptr inbounds double, double* %252, i64 13
%254 = load double, double* %253
%255 = fmul double %251, %254
%256 = call double @llvm.fmuladd.f64(double %241, double %244, double %255)
%257 = load double*, double** %4
%258 = getelementptr inbounds double, double* %257, i64 12
%259 = load double, double* %258
%260 = load double*, double** %4
%261 = getelementptr inbounds double, double* %260, i64 5
%262 = load double, double* %261
%263 = fmul double %259, %262
%264 = load double*, double** %4
%265 = getelementptr inbounds double, double* %264, i64 10
%266 = load double, double* %265
%267 = call double @llvm.fmuladd.f64(double %263, double %266, double %256)
%268 = load double*, double** %4
%269 = getelementptr inbounds double, double* %268, i64 6
%270 = load double, double* %269
%271 = load double*, double** %4
%272 = getelementptr inbounds double, double* %271, i64 9
%273 = load double, double* %272
%274 = fmul double %270, %273
%275 = load double*, double** %4
%276 = getelementptr inbounds double, double* %275, i64 12
%277 = load double, double* %276
%278 = fneg double %274
%279 = call double @llvm.fmuladd.f64(double %278, double %277, double %267)
%280 = load double*, double** %4
%281 = getelementptr inbounds double, double* %280, i64 4
%282 = load double, double* %281
%283 = load double*, double** %4
%284 = getelementptr inbounds double, double* %283, i64 10
%285 = load double, double* %284
%286 = fmul double %282, %285
%287 = load double*, double** %4
%288 = getelementptr inbounds double, double* %287, i64 13
%289 = load double, double* %288
%290 = fneg double %286
%291 = call double @llvm.fmuladd.f64(double %290, double %289, double %279)
%292 = load double*, double** %4
%293 = getelementptr inbounds double, double* %292, i64 14
%294 = load double, double* %293
%295 = load double*, double** %4
%296 = getelementptr inbounds double, double* %295, i64 5
%297 = load double, double* %296
%298 = fmul double %294, %297
%299 = load double*, double** %4
%300 = getelementptr inbounds double, double* %299, i64 8
%301 = load double, double* %300
%302 = fneg double %298
%303 = call double @llvm.fmuladd.f64(double %302, double %301, double %291)
%304 = fneg double %234
%305 = call double @llvm.fmuladd.f64(double %304, double %303, double %231)
store double %305, double* %7
%306 = load double*, double** %5
%307 = getelementptr inbounds double, double* %306, i64 0
%308 = load double, double* %307
%309 = load double*, double** %4
%310 = getelementptr inbounds double, double* %309, i64 5
%311 = load double, double* %310
%312 = load double*, double** %4
%313 = getelementptr inbounds double, double* %312, i64 10
%314 = load double, double* %313
%315 = fmul double %311, %314
%316 = load double*, double** %4
%317 = getelementptr inbounds double, double* %316, i64 15
%318 = load double, double* %317
%319 = load double*, double** %4
%320 = getelementptr inbounds double, double* %319, i64 7
%321 = load double, double* %320
%322 = load double*, double** %4
%323 = getelementptr inbounds double, double* %322, i64 9
%324 = load double, double* %323
%325 = fmul double %321, %324
%326 = load double*, double** %4
%327 = getelementptr inbounds double, double* %326, i64 14
%328 = load double, double* %327
%329 = fmul double %325, %328
%330 = call double @llvm.fmuladd.f64(double %315, double %318, double %329)
%331 = load double*, double** %4
%332 = getelementptr inbounds double, double* %331, i64 13
%333 = load double, double* %332
%334 = load double*, double** %4
%335 = getelementptr inbounds double, double* %334, i64 6
%336 = load double, double* %335
%337 = fmul double %333, %336
%338 = load double*, double** %4
%339 = getelementptr inbounds double, double* %338, i64 11
%340 = load double, double* %339
%341 = call double @llvm.fmuladd.f64(double %337, double %340, double %330)
%342 = load double*, double** %4
%343 = getelementptr inbounds double, double* %342, i64 7
%344 = load double, double* %343
%345 = load double*, double** %4
%346 = getelementptr inbounds double, double* %345, i64 10
%347 = load double, double* %346
%348 = fmul double %344, %347
%349 = load double*, double** %4
%350 = getelementptr inbounds double, double* %349, i64 13
%351 = load double, double* %350
%352 = fneg double %348
%353 = call double @llvm.fmuladd.f64(double %352, double %351, double %341)
%354 = load double*, double** %4
%355 = getelementptr inbounds double, double* %354, i64 5
%356 = load double, double* %355
%357 = load double*, double** %4
%358 = getelementptr inbounds double, double* %357, i64 11
%359 = load double, double* %358
%360 = fmul double %356, %359
%361 = load double*, double** %4
%362 = getelementptr inbounds double, double* %361, i64 14
%363 = load double, double* %362
%364 = fneg double %360
%365 = call double @llvm.fmuladd.f64(double %364, double %363, double %353)
%366 = load double*, double** %4
%367 = getelementptr inbounds double, double* %366, i64 15
%368 = load double, double* %367
%369 = load double*, double** %4
%370 = getelementptr inbounds double, double* %369, i64 6
%371 = load double, double* %370
%372 = fmul double %368, %371
%373 = load double*, double** %4
%374 = getelementptr inbounds double, double* %373, i64 9
%375 = load double, double* %374
%376 = fneg double %372
%377 = call double @llvm.fmuladd.f64(double %376, double %375, double %365)
%378 = load double*, double** %4
%379 = getelementptr inbounds double, double* %378, i64 1
%380 = load double, double* %379
%381 = load double*, double** %5
%382 = getelementptr inbounds double, double* %381, i64 1
%383 = load double, double* %382
%384 = load double*, double** %4
%385 = getelementptr inbounds double, double* %384, i64 10
%386 = load double, double* %385
%387 = fmul double %383, %386
%388 = load double*, double** %4
%389 = getelementptr inbounds double, double* %388, i64 15
%390 = load double, double* %389
%391 = load double*, double** %4
%392 = getelementptr inbounds double, double* %391, i64 7
%393 = load double, double* %392
%394 = load double*, double** %5
%395 = getelementptr inbounds double, double* %394, i64 2
%396 = load double, double* %395
%397 = fmul double %393, %396
%398 = load double*, double** %4
%399 = getelementptr inbounds double, double* %398, i64 14
%400 = load double, double* %399
%401 = fmul double %397, %400
%402 = call double @llvm.fmuladd.f64(double %387, double %390, double %401)
%403 = load double*, double** %5
%404 = getelementptr inbounds double, double* %403, i64 3
%405 = load double, double* %404
%406 = load double*, double** %4
%407 = getelementptr inbounds double, double* %406, i64 6
%408 = load double, double* %407
%409 = fmul double %405, %408
%410 = load double*, double** %4
%411 = getelementptr inbounds double, double* %410, i64 11
%412 = load double, double* %411
%413 = call double @llvm.fmuladd.f64(double %409, double %412, double %402)
%414 = load double*, double** %4
%415 = getelementptr inbounds double, double* %414, i64 7
%416 = load double, double* %415
%417 = load double*, double** %4
%418 = getelementptr inbounds double, double* %417, i64 10
%419 = load double, double* %418
%420 = fmul double %416, %419
%421 = load double*, double** %5
%422 = getelementptr inbounds double, double* %421, i64 3
%423 = load double, double* %422
%424 = fneg double %420
%425 = call double @llvm.fmuladd.f64(double %424, double %423, double %413)
%426 = load double*, double** %5
%427 = getelementptr inbounds double, double* %426, i64 1
%428 = load double, double* %427
%429 = load double*, double** %4
%430 = getelementptr inbounds double, double* %429, i64 11
%431 = load double, double* %430
%432 = fmul double %428, %431
%433 = load double*, double** %4
%434 = getelementptr inbounds double, double* %433, i64 14
%435 = load double, double* %434
%436 = fneg double %432
%437 = call double @llvm.fmuladd.f64(double %436, double %435, double %425)
%438 = load double*, double** %4
%439 = getelementptr inbounds double, double* %438, i64 15
%440 = load double, double* %439
%441 = load double*, double** %4
%442 = getelementptr inbounds double, double* %441, i64 6
%443 = load double, double* %442
%444 = fmul double %440, %443
%445 = load double*, double** %5
%446 = getelementptr inbounds double, double* %445, i64 2
%447 = load double, double* %446
%448 = fneg double %444
%449 = call double @llvm.fmuladd.f64(double %448, double %447, double %437)
%450 = fmul double %380, %449
%451 = fneg double %450
%452 = call double @llvm.fmuladd.f64(double %308, double %377, double %451)
%453 = load double*, double** %4
%454 = getelementptr inbounds double, double* %453, i64 2
%455 = load double, double* %454
%456 = load double*, double** %5
%457 = getelementptr inbounds double, double* %456, i64 1
%458 = load double, double* %457
%459 = load double*, double** %4
%460 = getelementptr inbounds double, double* %459, i64 9
%461 = load double, double* %460
%462 = fmul double %458, %461
%463 = load double*, double** %4
%464 = getelementptr inbounds double, double* %463, i64 15
%465 = load double, double* %464
%466 = load double*, double** %4
%467 = getelementptr inbounds double, double* %466, i64 7
%468 = load double, double* %467
%469 = load double*, double** %5
%470 = getelementptr inbounds double, double* %469, i64 2
%471 = load double, double* %470
%472 = fmul double %468, %471
%473 = load double*, double** %4
%474 = getelementptr inbounds double, double* %473, i64 13
%475 = load double, double* %474
%476 = fmul double %472, %475
%477 = call double @llvm.fmuladd.f64(double %462, double %465, double %476)
%478 = load double*, double** %5
%479 = getelementptr inbounds double, double* %478, i64 3
%480 = load double, double* %479
%481 = load double*, double** %4
%482 = getelementptr inbounds double, double* %481, i64 5
%483 = load double, double* %482
%484 = fmul double %480, %483
%485 = load double*, double** %4
%486 = getelementptr inbounds double, double* %485, i64 11
%487 = load double, double* %486
%488 = call double @llvm.fmuladd.f64(double %484, double %487, double %477)
%489 = load double*, double** %4
%490 = getelementptr inbounds double, double* %489, i64 7
%491 = load double, double* %490
%492 = load double*, double** %4
%493 = getelementptr inbounds double, double* %492, i64 9
%494 = load double, double* %493
%495 = fmul double %491, %494
%496 = load double*, double** %5
%497 = getelementptr inbounds double, double* %496, i64 3
%498 = load double, double* %497
%499 = fneg double %495
%500 = call double @llvm.fmuladd.f64(double %499, double %498, double %488)
%501 = load double*, double** %5
%502 = getelementptr inbounds double, double* %501, i64 1
%503 = load double, double* %502
%504 = load double*, double** %4
%505 = getelementptr inbounds double, double* %504, i64 11
%506 = load double, double* %505
%507 = fmul double %503, %506
%508 = load double*, double** %4
%509 = getelementptr inbounds double, double* %508, i64 13
%510 = load double, double* %509
%511 = fneg double %507
%512 = call double @llvm.fmuladd.f64(double %511, double %510, double %500)
%513 = load double*, double** %4
%514 = getelementptr inbounds double, double* %513, i64 15
%515 = load double, double* %514
%516 = load double*, double** %4
%517 = getelementptr inbounds double, double* %516, i64 5
%518 = load double, double* %517
%519 = fmul double %515, %518
%520 = load double*, double** %5
%521 = getelementptr inbounds double, double* %520, i64 2
%522 = load double, double* %521
%523 = fneg double %519
%524 = call double @llvm.fmuladd.f64(double %523, double %522, double %512)
%525 = call double @llvm.fmuladd.f64(double %455, double %524, double %452)
%526 = load double*, double** %4
%527 = getelementptr inbounds double, double* %526, i64 3
%528 = load double, double* %527
%529 = load double*, double** %5
%530 = getelementptr inbounds double, double* %529, i64 1
%531 = load double, double* %530
%532 = load double*, double** %4
%533 = getelementptr inbounds double, double* %532, i64 9
%534 = load double, double* %533
%535 = fmul double %531, %534
%536 = load double*, double** %4
%537 = getelementptr inbounds double, double* %536, i64 14
%538 = load double, double* %537
%539 = load double*, double** %4
%540 = getelementptr inbounds double, double* %539, i64 6
%541 = load double, double* %540
%542 = load double*, double** %5
%543 = getelementptr inbounds double, double* %542, i64 2
%544 = load double, double* %543
%545 = fmul double %541, %544
%546 = load double*, double** %4
%547 = getelementptr inbounds double, double* %546, i64 13
%548 = load double, double* %547
%549 = fmul double %545, %548
%550 = call double @llvm.fmuladd.f64(double %535, double %538, double %549)
%551 = load double*, double** %5
%552 = getelementptr inbounds double, double* %551, i64 3
%553 = load double, double* %552
%554 = load double*, double** %4
%555 = getelementptr inbounds double, double* %554, i64 5
%556 = load double, double* %555
%557 = fmul double %553, %556
%558 = load double*, double** %4
%559 = getelementptr inbounds double, double* %558, i64 10
%560 = load double, double* %559
%561 = call double @llvm.fmuladd.f64(double %557, double %560, double %550)
%562 = load double*, double** %4
%563 = getelementptr inbounds double, double* %562, i64 6
%564 = load double, double* %563
%565 = load double*, double** %4
%566 = getelementptr inbounds double, double* %565, i64 9
%567 = load double, double* %566
%568 = fmul double %564, %567
%569 = load double*, double** %5
%570 = getelementptr inbounds double, double* %569, i64 3
%571 = load double, double* %570
%572 = fneg double %568
%573 = call double @llvm.fmuladd.f64(double %572, double %571, double %561)
%574 = load double*, double** %5
%575 = getelementptr inbounds double, double* %574, i64 1
%576 = load double, double* %575
%577 = load double*, double** %4
%578 = getelementptr inbounds double, double* %577, i64 10
%579 = load double, double* %578
%580 = fmul double %576, %579
%581 = load double*, double** %4
%582 = getelementptr inbounds double, double* %581, i64 13
%583 = load double, double* %582
%584 = fneg double %580
%585 = call double @llvm.fmuladd.f64(double %584, double %583, double %573)
%586 = load double*, double** %4
%587 = getelementptr inbounds double, double* %586, i64 14
%588 = load double, double* %587
%589 = load double*, double** %4
%590 = getelementptr inbounds double, double* %589, i64 5
%591 = load double, double* %590
%592 = fmul double %588, %591
%593 = load double*, double** %5
%594 = getelementptr inbounds double, double* %593, i64 2
%595 = load double, double* %594
%596 = fneg double %592
%597 = call double @llvm.fmuladd.f64(double %596, double %595, double %585)
%598 = fneg double %528
%599 = call double @llvm.fmuladd.f64(double %598, double %597, double %525)
store double %599, double* %8
%600 = load double*, double** %4
%601 = getelementptr inbounds double, double* %600, i64 0
%602 = load double, double* %601
%603 = load double*, double** %5
%604 = getelementptr inbounds double, double* %603, i64 1
%605 = load double, double* %604
%606 = load double*, double** %4
%607 = getelementptr inbounds double, double* %606, i64 10
%608 = load double, double* %607
%609 = fmul double %605, %608
%610 = load double*, double** %4
%611 = getelementptr inbounds double, double* %610, i64 15
%612 = load double, double* %611
%613 = load double*, double** %4
%614 = getelementptr inbounds double, double* %613, i64 7
%615 = load double, double* %614
%616 = load double*, double** %5
%617 = getelementptr inbounds double, double* %616, i64 2
%618 = load double, double* %617
%619 = fmul double %615, %618
%620 = load double*, double** %4
%621 = getelementptr inbounds double, double* %620, i64 14
%622 = load double, double* %621
%623 = fmul double %619, %622
%624 = call double @llvm.fmuladd.f64(double %609, double %612, double %623)
%625 = load double*, double** %5
%626 = getelementptr inbounds double, double* %625, i64 3
%627 = load double, double* %626
%628 = load double*, double** %4
%629 = getelementptr inbounds double, double* %628, i64 6
%630 = load double, double* %629
%631 = fmul double %627, %630
%632 = load double*, double** %4
%633 = getelementptr inbounds double, double* %632, i64 11
%634 = load double, double* %633
%635 = call double @llvm.fmuladd.f64(double %631, double %634, double %624)
%636 = load double*, double** %4
%637 = getelementptr inbounds double, double* %636, i64 7
%638 = load double, double* %637
%639 = load double*, double** %4
%640 = getelementptr inbounds double, double* %639, i64 10
%641 = load double, double* %640
%642 = fmul double %638, %641
%643 = load double*, double** %5
%644 = getelementptr inbounds double, double* %643, i64 3
%645 = load double, double* %644
%646 = fneg double %642
%647 = call double @llvm.fmuladd.f64(double %646, double %645, double %635)
%648 = load double*, double** %5
%649 = getelementptr inbounds double, double* %648, i64 1
%650 = load double, double* %649
%651 = load double*, double** %4
%652 = getelementptr inbounds double, double* %651, i64 11
%653 = load double, double* %652
%654 = fmul double %650, %653
%655 = load double*, double** %4
%656 = getelementptr inbounds double, double* %655, i64 14
%657 = load double, double* %656
%658 = fneg double %654
%659 = call double @llvm.fmuladd.f64(double %658, double %657, double %647)
%660 = load double*, double** %4
%661 = getelementptr inbounds double, double* %660, i64 15
%662 = load double, double* %661
%663 = load double*, double** %4
%664 = getelementptr inbounds double, double* %663, i64 6
%665 = load double, double* %664
%666 = fmul double %662, %665
%667 = load double*, double** %5
%668 = getelementptr inbounds double, double* %667, i64 2
%669 = load double, double* %668
%670 = fneg double %666
%671 = call double @llvm.fmuladd.f64(double %670, double %669, double %659)
%672 = load double*, double** %5
%673 = getelementptr inbounds double, double* %672, i64 0
%674 = load double, double* %673
%675 = load double*, double** %4
%676 = getelementptr inbounds double, double* %675, i64 4
%677 = load double, double* %676
%678 = load double*, double** %4
%679 = getelementptr inbounds double, double* %678, i64 10
%680 = load double, double* %679
%681 = fmul double %677, %680
%682 = load double*, double** %4
%683 = getelementptr inbounds double, double* %682, i64 15
%684 = load double, double* %683
%685 = load double*, double** %4
%686 = getelementptr inbounds double, double* %685, i64 7
%687 = load double, double* %686
%688 = load double*, double** %4
%689 = getelementptr inbounds double, double* %688, i64 8
%690 = load double, double* %689
%691 = fmul double %687, %690
%692 = load double*, double** %4
%693 = getelementptr inbounds double, double* %692, i64 14
%694 = load double, double* %693
%695 = fmul double %691, %694
%696 = call double @llvm.fmuladd.f64(double %681, double %684, double %695)
%697 = load double*, double** %4
%698 = getelementptr inbounds double, double* %697, i64 12
%699 = load double, double* %698
%700 = load double*, double** %4
%701 = getelementptr inbounds double, double* %700, i64 6
%702 = load double, double* %701
%703 = fmul double %699, %702
%704 = load double*, double** %4
%705 = getelementptr inbounds double, double* %704, i64 11
%706 = load double, double* %705
%707 = call double @llvm.fmuladd.f64(double %703, double %706, double %696)
%708 = load double*, double** %4
%709 = getelementptr inbounds double, double* %708, i64 7
%710 = load double, double* %709
%711 = load double*, double** %4
%712 = getelementptr inbounds double, double* %711, i64 10
%713 = load double, double* %712
%714 = fmul double %710, %713
%715 = load double*, double** %4
%716 = getelementptr inbounds double, double* %715, i64 12
%717 = load double, double* %716
%718 = fneg double %714
%719 = call double @llvm.fmuladd.f64(double %718, double %717, double %707)
%720 = load double*, double** %4
%721 = getelementptr inbounds double, double* %720, i64 4
%722 = load double, double* %721
%723 = load double*, double** %4
%724 = getelementptr inbounds double, double* %723, i64 11
%725 = load double, double* %724
%726 = fmul double %722, %725
%727 = load double*, double** %4
%728 = getelementptr inbounds double, double* %727, i64 14
%729 = load double, double* %728
%730 = fneg double %726
%731 = call double @llvm.fmuladd.f64(double %730, double %729, double %719)
%732 = load double*, double** %4
%733 = getelementptr inbounds double, double* %732, i64 15
%734 = load double, double* %733
%735 = load double*, double** %4
%736 = getelementptr inbounds double, double* %735, i64 6
%737 = load double, double* %736
%738 = fmul double %734, %737
%739 = load double*, double** %4
%740 = getelementptr inbounds double, double* %739, i64 8
%741 = load double, double* %740
%742 = fneg double %738
%743 = call double @llvm.fmuladd.f64(double %742, double %741, double %731)
%744 = fmul double %674, %743
%745 = fneg double %744
%746 = call double @llvm.fmuladd.f64(double %602, double %671, double %745)
%747 = load double*, double** %4
%748 = getelementptr inbounds double, double* %747, i64 2
%749 = load double, double* %748
%750 = load double*, double** %4
%751 = getelementptr inbounds double, double* %750, i64 4
%752 = load double, double* %751
%753 = load double*, double** %5
%754 = getelementptr inbounds double, double* %753, i64 2
%755 = load double, double* %754
%756 = fmul double %752, %755
%757 = load double*, double** %4
%758 = getelementptr inbounds double, double* %757, i64 15
%759 = load double, double* %758
%760 = load double*, double** %4
%761 = getelementptr inbounds double, double* %760, i64 7
%762 = load double, double* %761
%763 = load double*, double** %4
%764 = getelementptr inbounds double, double* %763, i64 8
%765 = load double, double* %764
%766 = fmul double %762, %765
%767 = load double*, double** %5
%768 = getelementptr inbounds double, double* %767, i64 3
%769 = load double, double* %768
%770 = fmul double %766, %769
%771 = call double @llvm.fmuladd.f64(double %756, double %759, double %770)
%772 = load double*, double** %4
%773 = getelementptr inbounds double, double* %772, i64 12
%774 = load double, double* %773
%775 = load double*, double** %5
%776 = getelementptr inbounds double, double* %775, i64 1
%777 = load double, double* %776
%778 = fmul double %774, %777
%779 = load double*, double** %4
%780 = getelementptr inbounds double, double* %779, i64 11
%781 = load double, double* %780
%782 = call double @llvm.fmuladd.f64(double %778, double %781, double %771)
%783 = load double*, double** %4
%784 = getelementptr inbounds double, double* %783, i64 7
%785 = load double, double* %784
%786 = load double*, double** %5
%787 = getelementptr inbounds double, double* %786, i64 2
%788 = load double, double* %787
%789 = fmul double %785, %788
%790 = load double*, double** %4
%791 = getelementptr inbounds double, double* %790, i64 12
%792 = load double, double* %791
%793 = fneg double %789
%794 = call double @llvm.fmuladd.f64(double %793, double %792, double %782)
%795 = load double*, double** %4
%796 = getelementptr inbounds double, double* %795, i64 4
%797 = load double, double* %796
%798 = load double*, double** %4
%799 = getelementptr inbounds double, double* %798, i64 11
%800 = load double, double* %799
%801 = fmul double %797, %800
%802 = load double*, double** %5
%803 = getelementptr inbounds double, double* %802, i64 3
%804 = load double, double* %803
%805 = fneg double %801
%806 = call double @llvm.fmuladd.f64(double %805, double %804, double %794)
%807 = load double*, double** %4
%808 = getelementptr inbounds double, double* %807, i64 15
%809 = load double, double* %808
%810 = load double*, double** %5
%811 = getelementptr inbounds double, double* %810, i64 1
%812 = load double, double* %811
%813 = fmul double %809, %812
%814 = load double*, double** %4
%815 = getelementptr inbounds double, double* %814, i64 8
%816 = load double, double* %815
%817 = fneg double %813
%818 = call double @llvm.fmuladd.f64(double %817, double %816, double %806)
%819 = call double @llvm.fmuladd.f64(double %749, double %818, double %746)
%820 = load double*, double** %4
%821 = getelementptr inbounds double, double* %820, i64 3
%822 = load double, double* %821
%823 = load double*, double** %4
%824 = getelementptr inbounds double, double* %823, i64 4
%825 = load double, double* %824
%826 = load double*, double** %5
%827 = getelementptr inbounds double, double* %826, i64 2
%828 = load double, double* %827
%829 = fmul double %825, %828
%830 = load double*, double** %4
%831 = getelementptr inbounds double, double* %830, i64 14
%832 = load double, double* %831
%833 = load double*, double** %4
%834 = getelementptr inbounds double, double* %833, i64 6
%835 = load double, double* %834
%836 = load double*, double** %4
%837 = getelementptr inbounds double, double* %836, i64 8
%838 = load double, double* %837
%839 = fmul double %835, %838
%840 = load double*, double** %5
%841 = getelementptr inbounds double, double* %840, i64 3
%842 = load double, double* %841
%843 = fmul double %839, %842
%844 = call double @llvm.fmuladd.f64(double %829, double %832, double %843)
%845 = load double*, double** %4
%846 = getelementptr inbounds double, double* %845, i64 12
%847 = load double, double* %846
%848 = load double*, double** %5
%849 = getelementptr inbounds double, double* %848, i64 1
%850 = load double, double* %849
%851 = fmul double %847, %850
%852 = load double*, double** %4
%853 = getelementptr inbounds double, double* %852, i64 10
%854 = load double, double* %853
%855 = call double @llvm.fmuladd.f64(double %851, double %854, double %844)
%856 = load double*, double** %4
%857 = getelementptr inbounds double, double* %856, i64 6
%858 = load double, double* %857
%859 = load double*, double** %5
%860 = getelementptr inbounds double, double* %859, i64 2
%861 = load double, double* %860
%862 = fmul double %858, %861
%863 = load double*, double** %4
%864 = getelementptr inbounds double, double* %863, i64 12
%865 = load double, double* %864
%866 = fneg double %862
%867 = call double @llvm.fmuladd.f64(double %866, double %865, double %855)
%868 = load double*, double** %4
%869 = getelementptr inbounds double, double* %868, i64 4
%870 = load double, double* %869
%871 = load double*, double** %4
%872 = getelementptr inbounds double, double* %871, i64 10
%873 = load double, double* %872
%874 = fmul double %870, %873
%875 = load double*, double** %5
%876 = getelementptr inbounds double, double* %875, i64 3
%877 = load double, double* %876
%878 = fneg double %874
%879 = call double @llvm.fmuladd.f64(double %878, double %877, double %867)
%880 = load double*, double** %4
%881 = getelementptr inbounds double, double* %880, i64 14
%882 = load double, double* %881
%883 = load double*, double** %5
%884 = getelementptr inbounds double, double* %883, i64 1
%885 = load double, double* %884
%886 = fmul double %882, %885
%887 = load double*, double** %4
%888 = getelementptr inbounds double, double* %887, i64 8
%889 = load double, double* %888
%890 = fneg double %886
%891 = call double @llvm.fmuladd.f64(double %890, double %889, double %879)
%892 = fneg double %822
%893 = call double @llvm.fmuladd.f64(double %892, double %891, double %819)
store double %893, double* %9
%894 = load double*, double** %4
%895 = getelementptr inbounds double, double* %894, i64 0
%896 = load double, double* %895
%897 = load double*, double** %4
%898 = getelementptr inbounds double, double* %897, i64 5
%899 = load double, double* %898
%900 = load double*, double** %5
%901 = getelementptr inbounds double, double* %900, i64 2
%902 = load double, double* %901
%903 = fmul double %899, %902
%904 = load double*, double** %4
%905 = getelementptr inbounds double, double* %904, i64 15
%906 = load double, double* %905
%907 = load double*, double** %4
%908 = getelementptr inbounds double, double* %907, i64 7
%909 = load double, double* %908
%910 = load double*, double** %4
%911 = getelementptr inbounds double, double* %910, i64 9
%912 = load double, double* %911
%913 = fmul double %909, %912
%914 = load double*, double** %5
%915 = getelementptr inbounds double, double* %914, i64 3
%916 = load double, double* %915
%917 = fmul double %913, %916
%918 = call double @llvm.fmuladd.f64(double %903, double %906, double %917)
%919 = load double*, double** %4
%920 = getelementptr inbounds double, double* %919, i64 13
%921 = load double, double* %920
%922 = load double*, double** %5
%923 = getelementptr inbounds double, double* %922, i64 1
%924 = load double, double* %923
%925 = fmul double %921, %924
%926 = load double*, double** %4
%927 = getelementptr inbounds double, double* %926, i64 11
%928 = load double, double* %927
%929 = call double @llvm.fmuladd.f64(double %925, double %928, double %918)
%930 = load double*, double** %4
%931 = getelementptr inbounds double, double* %930, i64 7
%932 = load double, double* %931
%933 = load double*, double** %5
%934 = getelementptr inbounds double, double* %933, i64 2
%935 = load double, double* %934
%936 = fmul double %932, %935
%937 = load double*, double** %4
%938 = getelementptr inbounds double, double* %937, i64 13
%939 = load double, double* %938
%940 = fneg double %936
%941 = call double @llvm.fmuladd.f64(double %940, double %939, double %929)
%942 = load double*, double** %4
%943 = getelementptr inbounds double, double* %942, i64 5
%944 = load double, double* %943
%945 = load double*, double** %4
%946 = getelementptr inbounds double, double* %945, i64 11
%947 = load double, double* %946
%948 = fmul double %944, %947
%949 = load double*, double** %5
%950 = getelementptr inbounds double, double* %949, i64 3
%951 = load double, double* %950
%952 = fneg double %948
%953 = call double @llvm.fmuladd.f64(double %952, double %951, double %941)
%954 = load double*, double** %4
%955 = getelementptr inbounds double, double* %954, i64 15
%956 = load double, double* %955
%957 = load double*, double** %5
%958 = getelementptr inbounds double, double* %957, i64 1
%959 = load double, double* %958
%960 = fmul double %956, %959
%961 = load double*, double** %4
%962 = getelementptr inbounds double, double* %961, i64 9
%963 = load double, double* %962
%964 = fneg double %960
%965 = call double @llvm.fmuladd.f64(double %964, double %963, double %953)
%966 = load double*, double** %4
%967 = getelementptr inbounds double, double* %966, i64 1
%968 = load double, double* %967
%969 = load double*, double** %4
%970 = getelementptr inbounds double, double* %969, i64 4
%971 = load double, double* %970
%972 = load double*, double** %5
%973 = getelementptr inbounds double, double* %972, i64 2
%974 = load double, double* %973
%975 = fmul double %971, %974
%976 = load double*, double** %4
%977 = getelementptr inbounds double, double* %976, i64 15
%978 = load double, double* %977
%979 = load double*, double** %4
%980 = getelementptr inbounds double, double* %979, i64 7
%981 = load double, double* %980
%982 = load double*, double** %4
%983 = getelementptr inbounds double, double* %982, i64 8
%984 = load double, double* %983
%985 = fmul double %981, %984
%986 = load double*, double** %5
%987 = getelementptr inbounds double, double* %986, i64 3
%988 = load double, double* %987
%989 = fmul double %985, %988
%990 = call double @llvm.fmuladd.f64(double %975, double %978, double %989)
%991 = load double*, double** %4
%992 = getelementptr inbounds double, double* %991, i64 12
%993 = load double, double* %992
%994 = load double*, double** %5
%995 = getelementptr inbounds double, double* %994, i64 1
%996 = load double, double* %995
%997 = fmul double %993, %996
%998 = load double*, double** %4
%999 = getelementptr inbounds double, double* %998, i64 11
%1000 = load double, double* %999
%1001 = call double @llvm.fmuladd.f64(double %997, double %1000, double %990)
%1002 = load double*, double** %4
%1003 = getelementptr inbounds double, double* %1002, i64 7
%1004 = load double, double* %1003
%1005 = load double*, double** %5
%1006 = getelementptr inbounds double, double* %1005, i64 2
%1007 = load double, double* %1006
%1008 = fmul double %1004, %1007
%1009 = load double*, double** %4
%1010 = getelementptr inbounds double, double* %1009, i64 12
%1011 = load double, double* %1010
%1012 = fneg double %1008
%1013 = call double @llvm.fmuladd.f64(double %1012, double %1011, double %1001)
%1014 = load double*, double** %4
%1015 = getelementptr inbounds double, double* %1014, i64 4
%1016 = load double, double* %1015
%1017 = load double*, double** %4
%1018 = getelementptr inbounds double, double* %1017, i64 11
%1019 = load double, double* %1018
%1020 = fmul double %1016, %1019
%1021 = load double*, double** %5
%1022 = getelementptr inbounds double, double* %1021, i64 3
%1023 = load double, double* %1022
%1024 = fneg double %1020
%1025 = call double @llvm.fmuladd.f64(double %1024, double %1023, double %1013)
%1026 = load double*, double** %4
%1027 = getelementptr inbounds double, double* %1026, i64 15
%1028 = load double, double* %1027
%1029 = load double*, double** %5
%1030 = getelementptr inbounds double, double* %1029, i64 1
%1031 = load double, double* %1030
%1032 = fmul double %1028, %1031
%1033 = load double*, double** %4
%1034 = getelementptr inbounds double, double* %1033, i64 8
%1035 = load double, double* %1034
%1036 = fneg double %1032
%1037 = call double @llvm.fmuladd.f64(double %1036, double %1035, double %1025)
%1038 = fmul double %968, %1037
%1039 = fneg double %1038
%1040 = call double @llvm.fmuladd.f64(double %896, double %965, double %1039)
%1041 = load double*, double** %5
%1042 = getelementptr inbounds double, double* %1041, i64 0
%1043 = load double, double* %1042
%1044 = load double*, double** %4
%1045 = getelementptr inbounds double, double* %1044, i64 4
%1046 = load double, double* %1045
%1047 = load double*, double** %4
%1048 = getelementptr inbounds double, double* %1047, i64 9
%1049 = load double, double* %1048
%1050 = fmul double %1046, %1049
%1051 = load double*, double** %4
%1052 = getelementptr inbounds double, double* %1051, i64 15
%1053 = load double, double* %1052
%1054 = load double*, double** %4
%1055 = getelementptr inbounds double, double* %1054, i64 7
%1056 = load double, double* %1055
%1057 = load double*, double** %4
%1058 = getelementptr inbounds double, double* %1057, i64 8
%1059 = load double, double* %1058
%1060 = fmul double %1056, %1059
%1061 = load double*, double** %4
%1062 = getelementptr inbounds double, double* %1061, i64 13
%1063 = load double, double* %1062
%1064 = fmul double %1060, %1063
%1065 = call double @llvm.fmuladd.f64(double %1050, double %1053, double %1064)
%1066 = load double*, double** %4
%1067 = getelementptr inbounds double, double* %1066, i64 12
%1068 = load double, double* %1067
%1069 = load double*, double** %4
%1070 = getelementptr inbounds double, double* %1069, i64 5
%1071 = load double, double* %1070
%1072 = fmul double %1068, %1071
%1073 = load double*, double** %4
%1074 = getelementptr inbounds double, double* %1073, i64 11
%1075 = load double, double* %1074
%1076 = call double @llvm.fmuladd.f64(double %1072, double %1075, double %1065)
%1077 = load double*, double** %4
%1078 = getelementptr inbounds double, double* %1077, i64 7
%1079 = load double, double* %1078
%1080 = load double*, double** %4
%1081 = getelementptr inbounds double, double* %1080, i64 9
%1082 = load double, double* %1081
%1083 = fmul double %1079, %1082
%1084 = load double*, double** %4
%1085 = getelementptr inbounds double, double* %1084, i64 12
%1086 = load double, double* %1085
%1087 = fneg double %1083
%1088 = call double @llvm.fmuladd.f64(double %1087, double %1086, double %1076)
%1089 = load double*, double** %4
%1090 = getelementptr inbounds double, double* %1089, i64 4
%1091 = load double, double* %1090
%1092 = load double*, double** %4
%1093 = getelementptr inbounds double, double* %1092, i64 11
%1094 = load double, double* %1093
%1095 = fmul double %1091, %1094
%1096 = load double*, double** %4
%1097 = getelementptr inbounds double, double* %1096, i64 13
%1098 = load double, double* %1097
%1099 = fneg double %1095
%1100 = call double @llvm.fmuladd.f64(double %1099, double %1098, double %1088)
%1101 = load double*, double** %4
%1102 = getelementptr inbounds double, double* %1101, i64 15
%1103 = load double, double* %1102
%1104 = load double*, double** %4
%1105 = getelementptr inbounds double, double* %1104, i64 5
%1106 = load double, double* %1105
%1107 = fmul double %1103, %1106
%1108 = load double*, double** %4
%1109 = getelementptr inbounds double, double* %1108, i64 8
%1110 = load double, double* %1109
%1111 = fneg double %1107
%1112 = call double @llvm.fmuladd.f64(double %1111, double %1110, double %1100)
%1113 = call double @llvm.fmuladd.f64(double %1043, double %1112, double %1040)
%1114 = load double*, double** %4
%1115 = getelementptr inbounds double, double* %1114, i64 3
%1116 = load double, double* %1115
%1117 = load double*, double** %4
%1118 = getelementptr inbounds double, double* %1117, i64 4
%1119 = load double, double* %1118
%1120 = load double*, double** %4
%1121 = getelementptr inbounds double, double* %1120, i64 9
%1122 = load double, double* %1121
%1123 = fmul double %1119, %1122
%1124 = load double*, double** %5
%1125 = getelementptr inbounds double, double* %1124, i64 3
%1126 = load double, double* %1125
%1127 = load double*, double** %5
%1128 = getelementptr inbounds double, double* %1127, i64 1
%1129 = load double, double* %1128
%1130 = load double*, double** %4
%1131 = getelementptr inbounds double, double* %1130, i64 8
%1132 = load double, double* %1131
%1133 = fmul double %1129, %1132
%1134 = load double*, double** %4
%1135 = getelementptr inbounds double, double* %1134, i64 13
%1136 = load double, double* %1135
%1137 = fmul double %1133, %1136
%1138 = call double @llvm.fmuladd.f64(double %1123, double %1126, double %1137)
%1139 = load double*, double** %4
%1140 = getelementptr inbounds double, double* %1139, i64 12
%1141 = load double, double* %1140
%1142 = load double*, double** %4
%1143 = getelementptr inbounds double, double* %1142, i64 5
%1144 = load double, double* %1143
%1145 = fmul double %1141, %1144
%1146 = load double*, double** %5
%1147 = getelementptr inbounds double, double* %1146, i64 2
%1148 = load double, double* %1147
%1149 = call double @llvm.fmuladd.f64(double %1145, double %1148, double %1138)
%1150 = load double*, double** %5
%1151 = getelementptr inbounds double, double* %1150, i64 1
%1152 = load double, double* %1151
%1153 = load double*, double** %4
%1154 = getelementptr inbounds double, double* %1153, i64 9
%1155 = load double, double* %1154
%1156 = fmul double %1152, %1155
%1157 = load double*, double** %4
%1158 = getelementptr inbounds double, double* %1157, i64 12
%1159 = load double, double* %1158
%1160 = fneg double %1156
%1161 = call double @llvm.fmuladd.f64(double %1160, double %1159, double %1149)
%1162 = load double*, double** %4
%1163 = getelementptr inbounds double, double* %1162, i64 4
%1164 = load double, double* %1163
%1165 = load double*, double** %5
%1166 = getelementptr inbounds double, double* %1165, i64 2
%1167 = load double, double* %1166
%1168 = fmul double %1164, %1167
%1169 = load double*, double** %4
%1170 = getelementptr inbounds double, double* %1169, i64 13
%1171 = load double, double* %1170
%1172 = fneg double %1168
%1173 = call double @llvm.fmuladd.f64(double %1172, double %1171, double %1161)
%1174 = load double*, double** %5
%1175 = getelementptr inbounds double, double* %1174, i64 3
%1176 = load double, double* %1175
%1177 = load double*, double** %4
%1178 = getelementptr inbounds double, double* %1177, i64 5
%1179 = load double, double* %1178
%1180 = fmul double %1176, %1179
%1181 = load double*, double** %4
%1182 = getelementptr inbounds double, double* %1181, i64 8
%1183 = load double, double* %1182
%1184 = fneg double %1180
%1185 = call double @llvm.fmuladd.f64(double %1184, double %1183, double %1173)
%1186 = fneg double %1116
%1187 = call double @llvm.fmuladd.f64(double %1186, double %1185, double %1113)
store double %1187, double* %10
%1188 = load double*, double** %4
%1189 = getelementptr inbounds double, double* %1188, i64 0
%1190 = load double, double* %1189
%1191 = load double*, double** %4
%1192 = getelementptr inbounds double, double* %1191, i64 5
%1193 = load double, double* %1192
%1194 = load double*, double** %4
%1195 = getelementptr inbounds double, double* %1194, i64 10
%1196 = load double, double* %1195
%1197 = fmul double %1193, %1196
%1198 = load double*, double** %5
%1199 = getelementptr inbounds double, double* %1198, i64 3
%1200 = load double, double* %1199
%1201 = load double*, double** %5
%1202 = getelementptr inbounds double, double* %1201, i64 1
%1203 = load double, double* %1202
%1204 = load double*, double** %4
%1205 = getelementptr inbounds double, double* %1204, i64 9
%1206 = load double, double* %1205
%1207 = fmul double %1203, %1206
%1208 = load double*, double** %4
%1209 = getelementptr inbounds double, double* %1208, i64 14
%1210 = load double, double* %1209
%1211 = fmul double %1207, %1210
%1212 = call double @llvm.fmuladd.f64(double %1197, double %1200, double %1211)
%1213 = load double*, double** %4
%1214 = getelementptr inbounds double, double* %1213, i64 13
%1215 = load double, double* %1214
%1216 = load double*, double** %4
%1217 = getelementptr inbounds double, double* %1216, i64 6
%1218 = load double, double* %1217
%1219 = fmul double %1215, %1218
%1220 = load double*, double** %5
%1221 = getelementptr inbounds double, double* %1220, i64 2
%1222 = load double, double* %1221
%1223 = call double @llvm.fmuladd.f64(double %1219, double %1222, double %1212)
%1224 = load double*, double** %5
%1225 = getelementptr inbounds double, double* %1224, i64 1
%1226 = load double, double* %1225
%1227 = load double*, double** %4
%1228 = getelementptr inbounds double, double* %1227, i64 10
%1229 = load double, double* %1228
%1230 = fmul double %1226, %1229
%1231 = load double*, double** %4
%1232 = getelementptr inbounds double, double* %1231, i64 13
%1233 = load double, double* %1232
%1234 = fneg double %1230
%1235 = call double @llvm.fmuladd.f64(double %1234, double %1233, double %1223)
%1236 = load double*, double** %4
%1237 = getelementptr inbounds double, double* %1236, i64 5
%1238 = load double, double* %1237
%1239 = load double*, double** %5
%1240 = getelementptr inbounds double, double* %1239, i64 2
%1241 = load double, double* %1240
%1242 = fmul double %1238, %1241
%1243 = load double*, double** %4
%1244 = getelementptr inbounds double, double* %1243, i64 14
%1245 = load double, double* %1244
%1246 = fneg double %1242
%1247 = call double @llvm.fmuladd.f64(double %1246, double %1245, double %1235)
%1248 = load double*, double** %5
%1249 = getelementptr inbounds double, double* %1248, i64 3
%1250 = load double, double* %1249
%1251 = load double*, double** %4
%1252 = getelementptr inbounds double, double* %1251, i64 6
%1253 = load double, double* %1252
%1254 = fmul double %1250, %1253
%1255 = load double*, double** %4
%1256 = getelementptr inbounds double, double* %1255, i64 9
%1257 = load double, double* %1256
%1258 = fneg double %1254
%1259 = call double @llvm.fmuladd.f64(double %1258, double %1257, double %1247)
%1260 = load double*, double** %4
%1261 = getelementptr inbounds double, double* %1260, i64 1
%1262 = load double, double* %1261
%1263 = load double*, double** %4
%1264 = getelementptr inbounds double, double* %1263, i64 4
%1265 = load double, double* %1264
%1266 = load double*, double** %4
%1267 = getelementptr inbounds double, double* %1266, i64 10
%1268 = load double, double* %1267
%1269 = fmul double %1265, %1268
%1270 = load double*, double** %5
%1271 = getelementptr inbounds double, double* %1270, i64 3
%1272 = load double, double* %1271
%1273 = load double*, double** %5
%1274 = getelementptr inbounds double, double* %1273, i64 1
%1275 = load double, double* %1274
%1276 = load double*, double** %4
%1277 = getelementptr inbounds double, double* %1276, i64 8
%1278 = load double, double* %1277
%1279 = fmul double %1275, %1278
%1280 = load double*, double** %4
%1281 = getelementptr inbounds double, double* %1280, i64 14
%1282 = load double, double* %1281
%1283 = fmul double %1279, %1282
%1284 = call double @llvm.fmuladd.f64(double %1269, double %1272, double %1283)
%1285 = load double*, double** %4
%1286 = getelementptr inbounds double, double* %1285, i64 12
%1287 = load double, double* %1286
%1288 = load double*, double** %4
%1289 = getelementptr inbounds double, double* %1288, i64 6
%1290 = load double, double* %1289
%1291 = fmul double %1287, %1290
%1292 = load double*, double** %5
%1293 = getelementptr inbounds double, double* %1292, i64 2
%1294 = load double, double* %1293
%1295 = call double @llvm.fmuladd.f64(double %1291, double %1294, double %1284)
%1296 = load double*, double** %5
%1297 = getelementptr inbounds double, double* %1296, i64 1
%1298 = load double, double* %1297
%1299 = load double*, double** %4
%1300 = getelementptr inbounds double, double* %1299, i64 10
%1301 = load double, double* %1300
%1302 = fmul double %1298, %1301
%1303 = load double*, double** %4
%1304 = getelementptr inbounds double, double* %1303, i64 12
%1305 = load double, double* %1304
%1306 = fneg double %1302
%1307 = call double @llvm.fmuladd.f64(double %1306, double %1305, double %1295)
%1308 = load double*, double** %4
%1309 = getelementptr inbounds double, double* %1308, i64 4
%1310 = load double, double* %1309
%1311 = load double*, double** %5
%1312 = getelementptr inbounds double, double* %1311, i64 2
%1313 = load double, double* %1312
%1314 = fmul double %1310, %1313
%1315 = load double*, double** %4
%1316 = getelementptr inbounds double, double* %1315, i64 14
%1317 = load double, double* %1316
%1318 = fneg double %1314
%1319 = call double @llvm.fmuladd.f64(double %1318, double %1317, double %1307)
%1320 = load double*, double** %5
%1321 = getelementptr inbounds double, double* %1320, i64 3
%1322 = load double, double* %1321
%1323 = load double*, double** %4
%1324 = getelementptr inbounds double, double* %1323, i64 6
%1325 = load double, double* %1324
%1326 = fmul double %1322, %1325
%1327 = load double*, double** %4
%1328 = getelementptr inbounds double, double* %1327, i64 8
%1329 = load double, double* %1328
%1330 = fneg double %1326
%1331 = call double @llvm.fmuladd.f64(double %1330, double %1329, double %1319)
%1332 = fmul double %1262, %1331
%1333 = fneg double %1332
%1334 = call double @llvm.fmuladd.f64(double %1190, double %1259, double %1333)
%1335 = load double*, double** %4
%1336 = getelementptr inbounds double, double* %1335, i64 2
%1337 = load double, double* %1336
%1338 = load double*, double** %4
%1339 = getelementptr inbounds double, double* %1338, i64 4
%1340 = load double, double* %1339
%1341 = load double*, double** %4
%1342 = getelementptr inbounds double, double* %1341, i64 9
%1343 = load double, double* %1342
%1344 = fmul double %1340, %1343
%1345 = load double*, double** %5
%1346 = getelementptr inbounds double, double* %1345, i64 3
%1347 = load double, double* %1346
%1348 = load double*, double** %5
%1349 = getelementptr inbounds double, double* %1348, i64 1
%1350 = load double, double* %1349
%1351 = load double*, double** %4
%1352 = getelementptr inbounds double, double* %1351, i64 8
%1353 = load double, double* %1352
%1354 = fmul double %1350, %1353
%1355 = load double*, double** %4
%1356 = getelementptr inbounds double, double* %1355, i64 13
%1357 = load double, double* %1356
%1358 = fmul double %1354, %1357
%1359 = call double @llvm.fmuladd.f64(double %1344, double %1347, double %1358)
%1360 = load double*, double** %4
%1361 = getelementptr inbounds double, double* %1360, i64 12
%1362 = load double, double* %1361
%1363 = load double*, double** %4
%1364 = getelementptr inbounds double, double* %1363, i64 5
%1365 = load double, double* %1364
%1366 = fmul double %1362, %1365
%1367 = load double*, double** %5
%1368 = getelementptr inbounds double, double* %1367, i64 2
%1369 = load double, double* %1368
%1370 = call double @llvm.fmuladd.f64(double %1366, double %1369, double %1359)
%1371 = load double*, double** %5
%1372 = getelementptr inbounds double, double* %1371, i64 1
%1373 = load double, double* %1372
%1374 = load double*, double** %4
%1375 = getelementptr inbounds double, double* %1374, i64 9
%1376 = load double, double* %1375
%1377 = fmul double %1373, %1376
%1378 = load double*, double** %4
%1379 = getelementptr inbounds double, double* %1378, i64 12
%1380 = load double, double* %1379
%1381 = fneg double %1377
%1382 = call double @llvm.fmuladd.f64(double %1381, double %1380, double %1370)
%1383 = load double*, double** %4
%1384 = getelementptr inbounds double, double* %1383, i64 4
%1385 = load double, double* %1384
%1386 = load double*, double** %5
%1387 = getelementptr inbounds double, double* %1386, i64 2
%1388 = load double, double* %1387
%1389 = fmul double %1385, %1388
%1390 = load double*, double** %4
%1391 = getelementptr inbounds double, double* %1390, i64 13
%1392 = load double, double* %1391
%1393 = fneg double %1389
%1394 = call double @llvm.fmuladd.f64(double %1393, double %1392, double %1382)
%1395 = load double*, double** %5
%1396 = getelementptr inbounds double, double* %1395, i64 3
%1397 = load double, double* %1396
%1398 = load double*, double** %4
%1399 = getelementptr inbounds double, double* %1398, i64 5
%1400 = load double, double* %1399
%1401 = fmul double %1397, %1400
%1402 = load double*, double** %4
%1403 = getelementptr inbounds double, double* %1402, i64 8
%1404 = load double, double* %1403
%1405 = fneg double %1401
%1406 = call double @llvm.fmuladd.f64(double %1405, double %1404, double %1394)
%1407 = call double @llvm.fmuladd.f64(double %1337, double %1406, double %1334)
%1408 = load double*, double** %5
%1409 = getelementptr inbounds double, double* %1408, i64 0
%1410 = load double, double* %1409
%1411 = load double*, double** %4
%1412 = getelementptr inbounds double, double* %1411, i64 4
%1413 = load double, double* %1412
%1414 = load double*, double** %4
%1415 = getelementptr inbounds double, double* %1414, i64 9
%1416 = load double, double* %1415
%1417 = fmul double %1413, %1416
%1418 = load double*, double** %4
%1419 = getelementptr inbounds double, double* %1418, i64 14
%1420 = load double, double* %1419
%1421 = load double*, double** %4
%1422 = getelementptr inbounds double, double* %1421, i64 6
%1423 = load double, double* %1422
%1424 = load double*, double** %4
%1425 = getelementptr inbounds double, double* %1424, i64 8
%1426 = load double, double* %1425
%1427 = fmul double %1423, %1426
%1428 = load double*, double** %4
%1429 = getelementptr inbounds double, double* %1428, i64 13
%1430 = load double, double* %1429
%1431 = fmul double %1427, %1430
%1432 = call double @llvm.fmuladd.f64(double %1417, double %1420, double %1431)
%1433 = load double*, double** %4
%1434 = getelementptr inbounds double, double* %1433, i64 12
%1435 = load double, double* %1434
%1436 = load double*, double** %4
%1437 = getelementptr inbounds double, double* %1436, i64 5
%1438 = load double, double* %1437
%1439 = fmul double %1435, %1438
%1440 = load double*, double** %4
%1441 = getelementptr inbounds double, double* %1440, i64 10
%1442 = load double, double* %1441
%1443 = call double @llvm.fmuladd.f64(double %1439, double %1442, double %1432)
%1444 = load double*, double** %4
%1445 = getelementptr inbounds double, double* %1444, i64 6
%1446 = load double, double* %1445
%1447 = load double*, double** %4
%1448 = getelementptr inbounds double, double* %1447, i64 9
%1449 = load double, double* %1448
%1450 = fmul double %1446, %1449
%1451 = load double*, double** %4
%1452 = getelementptr inbounds double, double* %1451, i64 12
%1453 = load double, double* %1452
%1454 = fneg double %1450
%1455 = call double @llvm.fmuladd.f64(double %1454, double %1453, double %1443)
%1456 = load double*, double** %4
%1457 = getelementptr inbounds double, double* %1456, i64 4
%1458 = load double, double* %1457
%1459 = load double*, double** %4
%1460 = getelementptr inbounds double, double* %1459, i64 10
%1461 = load double, double* %1460
%1462 = fmul double %1458, %1461
%1463 = load double*, double** %4
%1464 = getelementptr inbounds double, double* %1463, i64 13
%1465 = load double, double* %1464
%1466 = fneg double %1462
%1467 = call double @llvm.fmuladd.f64(double %1466, double %1465, double %1455)
%1468 = load double*, double** %4
%1469 = getelementptr inbounds double, double* %1468, i64 14
%1470 = load double, double* %1469
%1471 = load double*, double** %4
%1472 = getelementptr inbounds double, double* %1471, i64 5
%1473 = load double, double* %1472
%1474 = fmul double %1470, %1473
%1475 = load double*, double** %4
%1476 = getelementptr inbounds double, double* %1475, i64 8
%1477 = load double, double* %1476
%1478 = fneg double %1474
%1479 = call double @llvm.fmuladd.f64(double %1478, double %1477, double %1467)
%1480 = fneg double %1410
%1481 = call double @llvm.fmuladd.f64(double %1480, double %1479, double %1407)
store double %1481, double* %11
%1482 = load double, double* %7
%1483 = fcmp une double %1482, 0.000000e+00
%1484 = zext i1 %1483 to i32
%1485 = call i32 (i32, ...) bitcast (i32 (...)* @assert to i32 (i32, ...)*)(i32 %1484)
%1486 = load double, double* %8
%1487 = load double, double* %7
%1488 = fdiv double %1486, %1487
%1489 = load double*, double** %6
%1490 = getelementptr inbounds double, double* %1489, i64 0
store double %1488, double* %1490
%1491 = load double, double* %9
%1492 = load double, double* %7
%1493 = fdiv double %1491, %1492
%1494 = load double*, double** %6
%1495 = getelementptr inbounds double, double* %1494, i64 1
store double %1493, double* %1495
%1496 = load double, double* %10
%1497 = load double, double* %7
%1498 = fdiv double %1496, %1497
%1499 = load double*, double** %6
%1500 = getelementptr inbounds double, double* %1499, i64 2
store double %1498, double* %1500
%1501 = load double, double* %11
%1502 = load double, double* %7
%1503 = fdiv double %1501, %1502
%1504 = load double*, double** %6
%1505 = getelementptr inbounds double, double* %1504, i64 3
store double %1503, double* %1505
ret void
}

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