int matrix_inverse_4x4d(const double m[16], double inv[16]) {
  double det = m[0] * m[5] * m[10] * m[15] - m[0] * m[5] * m[11] * m[14] -
               m[0] * m[9] * m[6] * m[15] + m[0] * m[9] * m[7] * m[14] +
               m[0] * m[13] * m[6] * m[11] - m[0] * m[13] * m[7] * m[10] -
               m[4] * m[1] * m[10] * m[15] + m[4] * m[1] * m[11] * m[14] +
               m[4] * m[9] * m[2] * m[15] - m[4] * m[9] * m[3] * m[14] -
               m[4] * m[13] * m[2] * m[11] + m[4] * m[13] * m[3] * m[10] +
               m[8] * m[1] * m[6] * m[15] - m[8] * m[1] * m[7] * m[14] -
               m[8] * m[5] * m[2] * m[15] + m[8] * m[5] * m[3] * m[14] +
               m[8] * m[13] * m[2] * m[7] - m[8] * m[13] * m[3] * m[6] -
               m[12] * m[1] * m[6] * m[11] + m[12] * m[1] * m[7] * m[10] +
               m[12] * m[5] * m[2] * m[11] - m[12] * m[5] * m[3] * m[10] -
               m[12] * m[9] * m[2] * m[7] + m[12] * m[9] * m[3] * m[6];
  if (det == 0)
    return -1;
  inv[0] = m[5] * m[10] * m[15] - m[5] * m[11] * m[14] - m[9] * m[6] * m[15] +
           m[9] * m[7] * m[14] + m[13] * m[6] * m[11] - m[13] * m[7] * m[10];
  inv[4] = -m[4] * m[10] * m[15] + m[4] * m[11] * m[14] + m[8] * m[6] * m[15] -
           m[8] * m[7] * m[14] - m[12] * m[6] * m[11] + m[12] * m[7] * m[10];
  inv[8] = m[4] * m[9] * m[15] - m[4] * m[11] * m[13] - m[8] * m[5] * m[15] +
           m[8] * m[7] * m[13] + m[12] * m[5] * m[11] - m[12] * m[7] * m[9];
  inv[12] = -m[4] * m[9] * m[14] + m[4] * m[10] * m[13] + m[8] * m[5] * m[14] -
            m[8] * m[6] * m[13] - m[12] * m[5] * m[10] + m[12] * m[6] * m[9];
  inv[1] = -m[1] * m[10] * m[15] + m[1] * m[11] * m[14] + m[9] * m[2] * m[15] -
           m[9] * m[3] * m[14] - m[13] * m[2] * m[11] + m[13] * m[3] * m[10];
  inv[5] = m[0] * m[10] * m[15] - m[0] * m[11] * m[14] - m[8] * m[2] * m[15] +
           m[8] * m[3] * m[14] + m[12] * m[2] * m[11] - m[12] * m[3] * m[10];
  inv[9] = -m[0] * m[9] * m[15] + m[0] * m[11] * m[13] + m[8] * m[1] * m[15] -
           m[8] * m[3] * m[13] - m[12] * m[1] * m[11] + m[12] * m[3] * m[9];
  inv[13] = m[0] * m[9] * m[14] - m[0] * m[10] * m[13] - m[8] * m[1] * m[14] +
            m[8] * m[2] * m[13] + m[12] * m[1] * m[10] - m[12] * m[2] * m[9];
  inv[2] = m[1] * m[6] * m[15] - m[1] * m[7] * m[14] - m[5] * m[2] * m[15] +
           m[5] * m[3] * m[14] + m[13] * m[2] * m[7] - m[13] * m[3] * m[6];
  inv[6] = -m[0] * m[6] * m[15] + m[0] * m[7] * m[14] + m[4] * m[2] * m[15] -
           m[4] * m[3] * m[14] - m[12] * m[2] * m[7] + m[12] * m[3] * m[6];
  inv[10] = m[0] * m[5] * m[15] - m[0] * m[7] * m[13] - m[4] * m[1] * m[15] +
            m[4] * m[3] * m[13] + m[12] * m[1] * m[7] - m[12] * m[3] * m[5];
  inv[14] = -m[0] * m[5] * m[14] + m[0] * m[6] * m[13] + m[4] * m[1] * m[14] -
            m[4] * m[2] * m[13] - m[12] * m[1] * m[6] + m[12] * m[2] * m[5];
  inv[3] = -m[1] * m[6] * m[11] + m[1] * m[7] * m[10] + m[5] * m[2] * m[11] -
           m[5] * m[3] * m[10] - m[9] * m[2] * m[7] + m[9] * m[3] * m[6];
  inv[7] = m[0] * m[6] * m[11] - m[0] * m[7] * m[10] - m[4] * m[2] * m[11] +
           m[4] * m[3] * m[10] + m[8] * m[2] * m[7] - m[8] * m[3] * m[6];
  inv[11] = -m[0] * m[5] * m[11] + m[0] * m[7] * m[9] + m[4] * m[1] * m[11] -
            m[4] * m[3] * m[9] - m[8] * m[1] * m[7] + m[8] * m[3] * m[5];
  inv[15] = m[0] * m[5] * m[10] - m[0] * m[6] * m[9] - m[4] * m[1] * m[10] +
            m[4] * m[2] * m[9] + m[8] * m[1] * m[6] - m[8] * m[2] * m[5];
  for (int i = 0; i < 16; i++)
    inv[i] /= det;
  return 0;
}


x86 assembly (clang, -O0):
<matrix_inverse_4x4d>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%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    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    165b <matrix_inverse_4x4d+0x55b>
jp     165b <matrix_inverse_4x4d+0x55b>
movl   $0xffffffff,-0x4(%rbp)
jmp    2809 <matrix_inverse_4x4d+0x1709>
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x20(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x40(%rax)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x60(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x8(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x28(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x58(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x48(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x68(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x10(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x70(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x30(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x78(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x50(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x68(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x70(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x70(%rax)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x18(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x50(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x38(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x38(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x58(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x58(%rax)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x30(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x48(%rax),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x50(%rax),%xmm2
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm1
mov    -0x10(%rbp),%rax
mulsd  0x8(%rax),%xmm1
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm2
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
mulsd  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movl   $0x0,-0x24(%rbp)
cmpl   $0x10,-0x24(%rbp)
jge    2802 <matrix_inverse_4x4d+0x1702>
movsd  -0x20(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    27cf <matrix_inverse_4x4d+0x16cf>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<matrix_inverse_4x4d>:
movsd  0x28(%rdi),%xmm12
movsd  (%rdi),%xmm1
movsd  0x8(%rdi),%xmm6
movapd %xmm1,%xmm2
mulsd  %xmm12,%xmm2
movsd  0x50(%rdi),%xmm11
movsd  0x78(%rdi),%xmm15
movsd  0x58(%rdi),%xmm13
movsd  0x70(%rdi),%xmm14
movapd %xmm13,%xmm0
mulsd  %xmm2,%xmm0
mulsd  %xmm11,%xmm2
mulsd  %xmm14,%xmm0
mulsd  %xmm15,%xmm2
subsd  %xmm0,%xmm2
movsd  0x48(%rdi),%xmm10
movapd %xmm1,%xmm3
mulsd  %xmm10,%xmm3
movsd  0x30(%rdi),%xmm4
movapd %xmm4,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm15,%xmm0
subsd  %xmm0,%xmm2
movsd  0x38(%rdi),%xmm8
mulsd  %xmm8,%xmm3
mulsd  %xmm14,%xmm3
addsd  %xmm2,%xmm3
movsd  0x68(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movapd %xmm4,%xmm2
mulsd  %xmm1,%xmm2
mulsd  %xmm13,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm8,%xmm1
mulsd  %xmm11,%xmm1
subsd  %xmm1,%xmm2
movsd  0x20(%rdi),%xmm3
movapd %xmm3,%xmm5
mulsd  %xmm6,%xmm5
movapd %xmm11,%xmm1
mulsd  %xmm5,%xmm1
mulsd  %xmm15,%xmm1
subsd  %xmm1,%xmm2
mulsd  %xmm13,%xmm5
mulsd  %xmm14,%xmm5
addsd  %xmm2,%xmm5
movapd %xmm10,%xmm0
mulsd  %xmm3,%xmm0
movsd  0x10(%rdi),%xmm1
movapd %xmm0,%xmm7
mulsd  %xmm1,%xmm7
mulsd  %xmm15,%xmm7
addsd  %xmm5,%xmm7
movsd  0x18(%rdi),%xmm2
mulsd  %xmm2,%xmm0
mulsd  %xmm14,%xmm0
subsd  %xmm0,%xmm7
mulsd  %xmm9,%xmm3
movapd %xmm1,%xmm0
mulsd  %xmm3,%xmm0
mulsd  %xmm13,%xmm0
subsd  %xmm0,%xmm7
mulsd  %xmm2,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm7,%xmm3
movsd  0x40(%rdi),%xmm5
movapd %xmm6,%xmm0
mulsd  %xmm5,%xmm0
movapd %xmm4,%xmm7
mulsd  %xmm0,%xmm7
mulsd  %xmm15,%xmm7
addsd  %xmm3,%xmm7
mulsd  %xmm8,%xmm0
mulsd  %xmm14,%xmm0
subsd  %xmm0,%xmm7
movapd %xmm12,%xmm0
mulsd  %xmm5,%xmm0
movapd %xmm1,%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm15,%xmm3
subsd  %xmm3,%xmm7
mulsd  %xmm2,%xmm0
mulsd  %xmm14,%xmm0
addsd  %xmm7,%xmm0
mulsd  %xmm9,%xmm5
movapd %xmm1,%xmm3
mulsd  %xmm5,%xmm3
mulsd  %xmm8,%xmm3
addsd  %xmm0,%xmm3
mulsd  %xmm2,%xmm5
mulsd  %xmm4,%xmm5
subsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm5
mulsd  %xmm5,%xmm6
movapd %xmm4,%xmm0
mulsd  %xmm6,%xmm0
mulsd  %xmm13,%xmm0
subsd  %xmm0,%xmm3
mulsd  %xmm8,%xmm6
mulsd  %xmm11,%xmm6
addsd  %xmm3,%xmm6
movapd %xmm12,%xmm0
mulsd  %xmm5,%xmm0
movapd %xmm1,%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm13,%xmm3
addsd  %xmm6,%xmm3
mulsd  %xmm2,%xmm0
mulsd  %xmm11,%xmm0
subsd  %xmm0,%xmm3
mulsd  %xmm10,%xmm5
mulsd  %xmm5,%xmm1
mulsd  %xmm8,%xmm1
subsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm3,%xmm5
mov    $0xffffffff,%eax
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm5
jne    1324 <matrix_inverse_4x4d+0x224>
jp     1324 <matrix_inverse_4x4d+0x224>
ret
movapd %xmm13,%xmm0
mulsd  %xmm12,%xmm0
mulsd  %xmm11,%xmm12
mulsd  %xmm14,%xmm0
mulsd  %xmm15,%xmm12
subsd  %xmm0,%xmm12
movapd %xmm4,%xmm0
mulsd  %xmm10,%xmm0
mulsd  %xmm15,%xmm0
subsd  %xmm0,%xmm12
mulsd  %xmm8,%xmm10
mulsd  %xmm14,%xmm10
addsd  %xmm12,%xmm10
mulsd  %xmm9,%xmm4
mulsd  %xmm13,%xmm4
addsd  %xmm10,%xmm4
mulsd  %xmm9,%xmm8
mulsd  %xmm11,%xmm8
subsd  %xmm8,%xmm4
movsd  %xmm4,(%rsi)
movsd  0x50(%rdi),%xmm2
movsd  0x20(%rdi),%xmm1
movsd  0x30(%rdi),%xmm0
movsd  0x40(%rdi),%xmm3
movapd %xmm3,%xmm4
movapd %xmm5,%xmm11
movsd  0x38(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x78(%rdi),%xmm7
movsd  0x58(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x70(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x20(%rsi)
movsd  0x48(%rdi),%xmm1
movsd  0x20(%rdi),%xmm2
movsd  0x28(%rdi),%xmm0
movsd  0x78(%rdi),%xmm3
movsd  0x58(%rdi),%xmm4
movsd  0x68(%rdi),%xmm5
movapd %xmm0,%xmm6
movsd  0x60(%rdi),%xmm7
mulsd  %xmm7,%xmm0
mulsd  %xmm4,%xmm0
mulsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm4
mulsd  %xmm3,%xmm2
subsd  %xmm4,%xmm2
movsd  0x40(%rdi),%xmm4
mulsd  %xmm4,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm2
movsd  0x38(%rdi),%xmm3
mulsd  %xmm3,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm2,%xmm4
addsd  %xmm4,%xmm0
mulsd  %xmm7,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,0x40(%rsi)
movsd  0x48(%rdi),%xmm2
movsd  0x20(%rdi),%xmm1
movsd  0x28(%rdi),%xmm0
movsd  0x40(%rdi),%xmm3
movapd %xmm3,%xmm4
movsd  0x30(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x70(%rdi),%xmm7
movsd  0x50(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x68(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x60(%rsi)
movsd  0x50(%rdi),%xmm2
movsd  0x8(%rdi),%xmm1
movsd  0x10(%rdi),%xmm0
movsd  0x48(%rdi),%xmm3
movapd %xmm3,%xmm4
movsd  0x18(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x68(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x78(%rdi),%xmm7
movsd  0x58(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x70(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x8(%rsi)
movsd  0x50(%rdi),%xmm1
movsd  (%rdi),%xmm2
movsd  0x10(%rdi),%xmm0
movsd  0x78(%rdi),%xmm3
movsd  0x58(%rdi),%xmm4
movsd  0x70(%rdi),%xmm5
movapd %xmm0,%xmm6
movsd  0x60(%rdi),%xmm7
mulsd  %xmm7,%xmm0
mulsd  %xmm4,%xmm0
mulsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm4
mulsd  %xmm3,%xmm2
subsd  %xmm4,%xmm2
movsd  0x40(%rdi),%xmm4
mulsd  %xmm4,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm2
movsd  0x18(%rdi),%xmm3
mulsd  %xmm3,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm2,%xmm4
addsd  %xmm4,%xmm0
mulsd  %xmm7,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,0x28(%rsi)
movsd  0x48(%rdi),%xmm2
movsd  (%rdi),%xmm1
movsd  0x8(%rdi),%xmm0
movsd  0x40(%rdi),%xmm3
movapd %xmm3,%xmm4
movsd  0x18(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x78(%rdi),%xmm7
movsd  0x58(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x68(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x48(%rsi)
movsd  0x48(%rdi),%xmm1
movsd  (%rdi),%xmm2
movsd  0x8(%rdi),%xmm0
movsd  0x70(%rdi),%xmm3
movsd  0x50(%rdi),%xmm4
movsd  0x68(%rdi),%xmm5
movapd %xmm0,%xmm6
movsd  0x60(%rdi),%xmm7
mulsd  %xmm7,%xmm0
mulsd  %xmm4,%xmm0
mulsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm4
mulsd  %xmm3,%xmm2
subsd  %xmm4,%xmm2
movsd  0x40(%rdi),%xmm4
mulsd  %xmm4,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm2
movsd  0x10(%rdi),%xmm3
mulsd  %xmm3,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm2,%xmm4
addsd  %xmm4,%xmm0
mulsd  %xmm7,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,0x68(%rsi)
movsd  0x30(%rdi),%xmm1
movsd  0x8(%rdi),%xmm2
movsd  0x10(%rdi),%xmm0
movsd  0x78(%rdi),%xmm3
movsd  0x38(%rdi),%xmm5
movsd  0x70(%rdi),%xmm4
movapd %xmm0,%xmm6
movsd  0x68(%rdi),%xmm7
mulsd  %xmm7,%xmm0
mulsd  %xmm5,%xmm0
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
mulsd  %xmm4,%xmm5
mulsd  %xmm3,%xmm2
subsd  %xmm5,%xmm2
movsd  0x28(%rdi),%xmm5
mulsd  %xmm5,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm2
movsd  0x18(%rdi),%xmm3
mulsd  %xmm3,%xmm5
mulsd  %xmm4,%xmm5
addsd  %xmm2,%xmm5
addsd  %xmm5,%xmm0
mulsd  %xmm7,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,0x10(%rsi)
movsd  0x30(%rdi),%xmm2
movsd  (%rdi),%xmm1
movsd  0x10(%rdi),%xmm0
movsd  0x20(%rdi),%xmm3
movapd %xmm3,%xmm4
movsd  0x18(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x78(%rdi),%xmm7
movsd  0x38(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x70(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x30(%rsi)
movsd  0x28(%rdi),%xmm1
movsd  (%rdi),%xmm2
movsd  0x8(%rdi),%xmm0
movsd  0x78(%rdi),%xmm3
movsd  0x38(%rdi),%xmm4
movsd  0x68(%rdi),%xmm5
movapd %xmm0,%xmm6
movsd  0x60(%rdi),%xmm7
mulsd  %xmm7,%xmm0
mulsd  %xmm4,%xmm0
mulsd  %xmm2,%xmm4
mulsd  %xmm1,%xmm2
mulsd  %xmm5,%xmm4
mulsd  %xmm3,%xmm2
subsd  %xmm4,%xmm2
movsd  0x20(%rdi),%xmm4
mulsd  %xmm4,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm6,%xmm2
movsd  0x18(%rdi),%xmm3
mulsd  %xmm3,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm2,%xmm4
addsd  %xmm4,%xmm0
mulsd  %xmm7,%xmm3
mulsd  %xmm1,%xmm3
subsd  %xmm3,%xmm0
movsd  %xmm0,0x50(%rsi)
movsd  0x28(%rdi),%xmm2
movsd  (%rdi),%xmm1
movsd  0x8(%rdi),%xmm0
movsd  0x20(%rdi),%xmm3
movapd %xmm3,%xmm4
movsd  0x10(%rdi),%xmm5
mulsd  %xmm5,%xmm3
movsd  0x60(%rdi),%xmm8
mulsd  %xmm8,%xmm5
mulsd  %xmm2,%xmm5
mulsd  %xmm1,%xmm2
movsd  0x70(%rdi),%xmm7
movsd  0x30(%rdi),%xmm9
mulsd  %xmm9,%xmm1
movsd  0x68(%rdi),%xmm6
mulsd  %xmm6,%xmm1
mulsd  %xmm7,%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm0,%xmm4
mulsd  %xmm7,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm6,%xmm3
subsd  %xmm3,%xmm4
mulsd  %xmm8,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm4
addsd  %xmm4,%xmm5
movsd  %xmm5,0x70(%rsi)
movsd  0x30(%rdi),%xmm3
movsd  0x8(%rdi),%xmm2
movsd  0x10(%rdi),%xmm1
movsd  0x28(%rdi),%xmm4
movapd %xmm4,%xmm5
movsd  0x18(%rdi),%xmm8
mulsd  %xmm8,%xmm4
movsd  0x48(%rdi),%xmm9
mulsd  %xmm9,%xmm8
mulsd  %xmm3,%xmm8
mulsd  %xmm2,%xmm3
movsd  0x58(%rdi),%xmm7
movsd  0x38(%rdi),%xmm0
mulsd  %xmm0,%xmm2
movsd  0x50(%rdi),%xmm6
mulsd  %xmm6,%xmm2
mulsd  %xmm7,%xmm3
subsd  %xmm3,%xmm2
mulsd  %xmm1,%xmm5
mulsd  %xmm7,%xmm5
addsd  %xmm2,%xmm5
mulsd  %xmm6,%xmm4
subsd  %xmm4,%xmm5
mulsd  %xmm9,%xmm1
mulsd  %xmm0,%xmm1
subsd  %xmm1,%xmm5
addsd  %xmm5,%xmm8
movsd  %xmm8,0x18(%rsi)
movsd  0x30(%rdi),%xmm2
movsd  (%rdi),%xmm3
movsd  0x10(%rdi),%xmm10
movsd  0x58(%rdi),%xmm0
movsd  0x38(%rdi),%xmm4
movsd  0x50(%rdi),%xmm5
movapd %xmm10,%xmm6
movsd  0x40(%rdi),%xmm7
mulsd  %xmm7,%xmm10
mulsd  %xmm4,%xmm10
mulsd  %xmm3,%xmm4
mulsd  %xmm2,%xmm3
mulsd  %xmm5,%xmm4
mulsd  %xmm0,%xmm3
subsd  %xmm4,%xmm3
movsd  0x20(%rdi),%xmm4
mulsd  %xmm4,%xmm6
mulsd  %xmm0,%xmm6
subsd  %xmm6,%xmm3
movsd  0x18(%rdi),%xmm0
mulsd  %xmm0,%xmm4
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
addsd  %xmm4,%xmm10
mulsd  %xmm7,%xmm0
mulsd  %xmm2,%xmm0
subsd  %xmm0,%xmm10
movsd  %xmm10,0x38(%rsi)
movsd  0x28(%rdi),%xmm4
movsd  (%rdi),%xmm3
movsd  0x20(%rdi),%xmm0
movapd %xmm0,%xmm5
movsd  0x18(%rdi),%xmm2
mulsd  %xmm2,%xmm0
movsd  0x40(%rdi),%xmm9
mulsd  %xmm9,%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm3,%xmm4
movsd  0x58(%rdi),%xmm7
movsd  0x38(%rdi),%xmm6
mulsd  %xmm6,%xmm3
movsd  0x48(%rdi),%xmm1
mulsd  %xmm1,%xmm3
mulsd  %xmm7,%xmm4
subsd  %xmm4,%xmm3
movsd  0x8(%rdi),%xmm4
mulsd  %xmm4,%xmm5
mulsd  %xmm7,%xmm5
addsd  %xmm3,%xmm5
mulsd  %xmm1,%xmm0
subsd  %xmm0,%xmm5
mulsd  %xmm9,%xmm4
mulsd  %xmm6,%xmm4
subsd  %xmm4,%xmm5
addsd  %xmm5,%xmm2
movsd  %xmm2,0x58(%rsi)
movsd  0x28(%rdi),%xmm9
movsd  (%rdi),%xmm5
movsd  0x8(%rdi),%xmm3
movsd  0x50(%rdi),%xmm0
movsd  0x30(%rdi),%xmm1
movsd  0x48(%rdi),%xmm6
movapd %xmm3,%xmm7
movsd  0x40(%rdi),%xmm4
mulsd  %xmm4,%xmm3
mulsd  %xmm1,%xmm3
mulsd  %xmm5,%xmm1
mulsd  %xmm9,%xmm5
mulsd  %xmm6,%xmm1
mulsd  %xmm0,%xmm5
subsd  %xmm1,%xmm5
movsd  0x20(%rdi),%xmm1
mulsd  %xmm1,%xmm7
mulsd  %xmm0,%xmm7
subsd  %xmm7,%xmm5
movsd  0x10(%rdi),%xmm0
mulsd  %xmm0,%xmm1
mulsd  %xmm6,%xmm1
addsd  %xmm5,%xmm1
addsd  %xmm1,%xmm3
mulsd  %xmm4,%xmm0
mulsd  %xmm9,%xmm0
subsd  %xmm0,%xmm3
movupd (%rsi),%xmm0
unpcklpd %xmm11,%xmm11
divpd  %xmm11,%xmm0
movupd %xmm0,(%rsi)
movsd  0x10(%rsi),%xmm0
unpcklpd %xmm8,%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x10(%rsi)
movupd 0x20(%rsi),%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x20(%rsi)
movsd  0x30(%rsi),%xmm0
unpcklpd %xmm10,%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x30(%rsi)
movupd 0x40(%rsi),%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x40(%rsi)
movsd  0x50(%rsi),%xmm0
unpcklpd %xmm2,%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x50(%rsi)
movupd 0x60(%rsi),%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x60(%rsi)
movsd  0x70(%rsi),%xmm0
unpcklpd %xmm3,%xmm0
divpd  %xmm11,%xmm0
movupd %xmm0,0x70(%rsi)
xor    %eax,%eax
ret

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

LLVM IR (-O2):
define i32 @matrix_inverse_4x4d(double* %0, double* nocapture %1) {
%3 = load double, double* %0
%4 = getelementptr inbounds double, double* %0, i64 5
%5 = load double, double* %4
%6 = fmul double %3, %5
%7 = getelementptr inbounds double, double* %0, i64 10
%8 = load double, double* %7
%9 = fmul double %6, %8
%10 = getelementptr inbounds double, double* %0, i64 15
%11 = load double, double* %10
%12 = getelementptr inbounds double, double* %0, i64 11
%13 = load double, double* %12
%14 = getelementptr inbounds double, double* %0, i64 14
%15 = load double, double* %14
%16 = fneg double %6
%17 = fmul double %13, %16
%18 = fmul double %17, %15
%19 = tail call double @llvm.fmuladd.f64(double %9, double %11, double %18)
%20 = getelementptr inbounds double, double* %0, i64 9
%21 = load double, double* %20
%22 = fmul double %3, %21
%23 = getelementptr inbounds double, double* %0, i64 6
%24 = load double, double* %23
%25 = fneg double %22
%26 = fmul double %24, %25
%27 = tail call double @llvm.fmuladd.f64(double %26, double %11, double %19)
%28 = getelementptr inbounds double, double* %0, i64 7
%29 = load double, double* %28
%30 = fmul double %22, %29
%31 = tail call double @llvm.fmuladd.f64(double %30, double %15, double %27)
%32 = getelementptr inbounds double, double* %0, i64 13
%33 = load double, double* %32
%34 = fmul double %3, %33
%35 = fmul double %24, %34
%36 = tail call double @llvm.fmuladd.f64(double %35, double %13, double %31)
%37 = fneg double %34
%38 = fmul double %29, %37
%39 = tail call double @llvm.fmuladd.f64(double %38, double %8, double %36)
%40 = getelementptr inbounds double, double* %0, i64 4
%41 = load double, double* %40
%42 = getelementptr inbounds double, double* %0, i64 1
%43 = load double, double* %42
%44 = fmul double %41, %43
%45 = fneg double %44
%46 = fmul double %8, %45
%47 = tail call double @llvm.fmuladd.f64(double %46, double %11, double %39)
%48 = fmul double %13, %44
%49 = tail call double @llvm.fmuladd.f64(double %48, double %15, double %47)
%50 = fmul double %21, %41
%51 = getelementptr inbounds double, double* %0, i64 2
%52 = load double, double* %51
%53 = fmul double %50, %52
%54 = tail call double @llvm.fmuladd.f64(double %53, double %11, double %49)
%55 = getelementptr inbounds double, double* %0, i64 3
%56 = load double, double* %55
%57 = fneg double %50
%58 = fmul double %56, %57
%59 = tail call double @llvm.fmuladd.f64(double %58, double %15, double %54)
%60 = fmul double %33, %41
%61 = fneg double %60
%62 = fmul double %52, %61
%63 = tail call double @llvm.fmuladd.f64(double %62, double %13, double %59)
%64 = fmul double %60, %56
%65 = tail call double @llvm.fmuladd.f64(double %64, double %8, double %63)
%66 = getelementptr inbounds double, double* %0, i64 8
%67 = load double, double* %66
%68 = fmul double %43, %67
%69 = fmul double %24, %68
%70 = tail call double @llvm.fmuladd.f64(double %69, double %11, double %65)
%71 = fneg double %68
%72 = fmul double %29, %71
%73 = tail call double @llvm.fmuladd.f64(double %72, double %15, double %70)
%74 = fmul double %5, %67
%75 = fneg double %74
%76 = fmul double %52, %75
%77 = tail call double @llvm.fmuladd.f64(double %76, double %11, double %73)
%78 = fmul double %56, %74
%79 = tail call double @llvm.fmuladd.f64(double %78, double %15, double %77)
%80 = fmul double %33, %67
%81 = fmul double %52, %80
%82 = tail call double @llvm.fmuladd.f64(double %81, double %29, double %79)
%83 = fneg double %80
%84 = fmul double %56, %83
%85 = tail call double @llvm.fmuladd.f64(double %84, double %24, double %82)
%86 = getelementptr inbounds double, double* %0, i64 12
%87 = load double, double* %86
%88 = fmul double %43, %87
%89 = fneg double %88
%90 = fmul double %24, %89
%91 = tail call double @llvm.fmuladd.f64(double %90, double %13, double %85)
%92 = fmul double %29, %88
%93 = tail call double @llvm.fmuladd.f64(double %92, double %8, double %91)
%94 = fmul double %5, %87
%95 = fmul double %52, %94
%96 = tail call double @llvm.fmuladd.f64(double %95, double %13, double %93)
%97 = fneg double %94
%98 = fmul double %56, %97
%99 = tail call double @llvm.fmuladd.f64(double %98, double %8, double %96)
%100 = fmul double %21, %87
%101 = fneg double %100
%102 = fmul double %52, %101
%103 = tail call double @llvm.fmuladd.f64(double %102, double %29, double %99)
%104 = fmul double %56, %100
%105 = tail call double @llvm.fmuladd.f64(double %104, double %24, double %103)
%106 = fcmp oeq double %105, 0.000000e+00
br i1 %106, label %535, label %107
107: ; preds = %2
%108 = fmul double %5, %8
%109 = fneg double %5
%110 = fmul double %13, %109
%111 = fmul double %110, %15
%112 = tail call double @llvm.fmuladd.f64(double %108, double %11, double %111)
%113 = fneg double %21
%114 = fmul double %24, %113
%115 = tail call double @llvm.fmuladd.f64(double %114, double %11, double %112)
%116 = fmul double %21, %29
%117 = tail call double @llvm.fmuladd.f64(double %116, double %15, double %115)
%118 = fmul double %24, %33
%119 = tail call double @llvm.fmuladd.f64(double %118, double %13, double %117)
%120 = fneg double %33
%121 = fmul double %29, %120
%122 = tail call double @llvm.fmuladd.f64(double %121, double %8, double %119)
store double %122, double* %1
%123 = load double, double* %40
%124 = fneg double %123
%125 = load double, double* %7
%126 = fmul double %125, %124
%127 = load double, double* %10
%128 = load double, double* %12
%129 = fmul double %123, %128
%130 = load double, double* %14
%131 = fmul double %129, %130
%132 = tail call double @llvm.fmuladd.f64(double %126, double %127, double %131)
%133 = load double, double* %66
%134 = load double, double* %23
%135 = fmul double %133, %134
%136 = tail call double @llvm.fmuladd.f64(double %135, double %127, double %132)
%137 = load double, double* %28
%138 = fneg double %133
%139 = fmul double %137, %138
%140 = tail call double @llvm.fmuladd.f64(double %139, double %130, double %136)
%141 = load double, double* %86
%142 = fneg double %141
%143 = fmul double %134, %142
%144 = tail call double @llvm.fmuladd.f64(double %143, double %128, double %140)
%145 = fmul double %137, %141
%146 = tail call double @llvm.fmuladd.f64(double %145, double %125, double %144)
%147 = getelementptr inbounds double, double* %1, i64 4
store double %146, double* %147
%148 = load double, double* %40
%149 = load double, double* %20
%150 = fmul double %148, %149
%151 = load double, double* %10
%152 = load double, double* %12
%153 = load double, double* %32
%154 = fneg double %148
%155 = fmul double %152, %154
%156 = fmul double %155, %153
%157 = tail call double @llvm.fmuladd.f64(double %150, double %151, double %156)
%158 = load double, double* %66
%159 = load double, double* %4
%160 = fneg double %158
%161 = fmul double %159, %160
%162 = tail call double @llvm.fmuladd.f64(double %161, double %151, double %157)
%163 = load double, double* %28
%164 = fmul double %158, %163
%165 = tail call double @llvm.fmuladd.f64(double %164, double %153, double %162)
%166 = load double, double* %86
%167 = fmul double %159, %166
%168 = tail call double @llvm.fmuladd.f64(double %167, double %152, double %165)
%169 = fneg double %166
%170 = fmul double %163, %169
%171 = tail call double @llvm.fmuladd.f64(double %170, double %149, double %168)
%172 = getelementptr inbounds double, double* %1, i64 8
store double %171, double* %172
%173 = load double, double* %40
%174 = fneg double %173
%175 = load double, double* %20
%176 = fmul double %175, %174
%177 = load double, double* %14
%178 = load double, double* %7
%179 = fmul double %173, %178
%180 = load double, double* %32
%181 = fmul double %179, %180
%182 = tail call double @llvm.fmuladd.f64(double %176, double %177, double %181)
%183 = load double, double* %66
%184 = load double, double* %4
%185 = fmul double %183, %184
%186 = tail call double @llvm.fmuladd.f64(double %185, double %177, double %182)
%187 = load double, double* %23
%188 = fneg double %183
%189 = fmul double %187, %188
%190 = tail call double @llvm.fmuladd.f64(double %189, double %180, double %186)
%191 = load double, double* %86
%192 = fneg double %191
%193 = fmul double %184, %192
%194 = tail call double @llvm.fmuladd.f64(double %193, double %178, double %190)
%195 = fmul double %187, %191
%196 = tail call double @llvm.fmuladd.f64(double %195, double %175, double %194)
%197 = getelementptr inbounds double, double* %1, i64 12
store double %196, double* %197
%198 = load double, double* %42
%199 = fneg double %198
%200 = load double, double* %7
%201 = fmul double %200, %199
%202 = load double, double* %10
%203 = load double, double* %12
%204 = fmul double %198, %203
%205 = load double, double* %14
%206 = fmul double %204, %205
%207 = tail call double @llvm.fmuladd.f64(double %201, double %202, double %206)
%208 = load double, double* %20
%209 = load double, double* %51
%210 = fmul double %208, %209
%211 = tail call double @llvm.fmuladd.f64(double %210, double %202, double %207)
%212 = load double, double* %55
%213 = fneg double %208
%214 = fmul double %212, %213
%215 = tail call double @llvm.fmuladd.f64(double %214, double %205, double %211)
%216 = load double, double* %32
%217 = fneg double %216
%218 = fmul double %209, %217
%219 = tail call double @llvm.fmuladd.f64(double %218, double %203, double %215)
%220 = fmul double %212, %216
%221 = tail call double @llvm.fmuladd.f64(double %220, double %200, double %219)
%222 = getelementptr inbounds double, double* %1, i64 1
store double %221, double* %222
%223 = load double, double* %0
%224 = load double, double* %7
%225 = fmul double %223, %224
%226 = load double, double* %10
%227 = load double, double* %12
%228 = load double, double* %14
%229 = fneg double %223
%230 = fmul double %227, %229
%231 = fmul double %230, %228
%232 = tail call double @llvm.fmuladd.f64(double %225, double %226, double %231)
%233 = load double, double* %66
%234 = load double, double* %51
%235 = fneg double %233
%236 = fmul double %234, %235
%237 = tail call double @llvm.fmuladd.f64(double %236, double %226, double %232)
%238 = load double, double* %55
%239 = fmul double %233, %238
%240 = tail call double @llvm.fmuladd.f64(double %239, double %228, double %237)
%241 = load double, double* %86
%242 = fmul double %234, %241
%243 = tail call double @llvm.fmuladd.f64(double %242, double %227, double %240)
%244 = fneg double %241
%245 = fmul double %238, %244
%246 = tail call double @llvm.fmuladd.f64(double %245, double %224, double %243)
%247 = getelementptr inbounds double, double* %1, i64 5
store double %246, double* %247
%248 = load double, double* %0
%249 = fneg double %248
%250 = load double, double* %20
%251 = fmul double %250, %249
%252 = load double, double* %10
%253 = load double, double* %12
%254 = fmul double %248, %253
%255 = load double, double* %32
%256 = fmul double %254, %255
%257 = tail call double @llvm.fmuladd.f64(double %251, double %252, double %256)
%258 = load double, double* %66
%259 = load double, double* %42
%260 = fmul double %258, %259
%261 = tail call double @llvm.fmuladd.f64(double %260, double %252, double %257)
%262 = load double, double* %55
%263 = fneg double %258
%264 = fmul double %262, %263
%265 = tail call double @llvm.fmuladd.f64(double %264, double %255, double %261)
%266 = load double, double* %86
%267 = fneg double %266
%268 = fmul double %259, %267
%269 = tail call double @llvm.fmuladd.f64(double %268, double %253, double %265)
%270 = fmul double %262, %266
%271 = tail call double @llvm.fmuladd.f64(double %270, double %250, double %269)
%272 = getelementptr inbounds double, double* %1, i64 9
store double %271, double* %272
%273 = load double, double* %0
%274 = load double, double* %20
%275 = fmul double %273, %274
%276 = load double, double* %14
%277 = load double, double* %7
%278 = load double, double* %32
%279 = fneg double %273
%280 = fmul double %277, %279
%281 = fmul double %280, %278
%282 = tail call double @llvm.fmuladd.f64(double %275, double %276, double %281)
%283 = load double, double* %66
%284 = load double, double* %42
%285 = fneg double %283
%286 = fmul double %284, %285
%287 = tail call double @llvm.fmuladd.f64(double %286, double %276, double %282)
%288 = load double, double* %51
%289 = fmul double %283, %288
%290 = tail call double @llvm.fmuladd.f64(double %289, double %278, double %287)
%291 = load double, double* %86
%292 = fmul double %284, %291
%293 = tail call double @llvm.fmuladd.f64(double %292, double %277, double %290)
%294 = fneg double %291
%295 = fmul double %288, %294
%296 = tail call double @llvm.fmuladd.f64(double %295, double %274, double %293)
%297 = getelementptr inbounds double, double* %1, i64 13
store double %296, double* %297
%298 = load double, double* %42
%299 = load double, double* %23
%300 = fmul double %298, %299
%301 = load double, double* %10
%302 = load double, double* %28
%303 = load double, double* %14
%304 = fneg double %298
%305 = fmul double %302, %304
%306 = fmul double %305, %303
%307 = tail call double @llvm.fmuladd.f64(double %300, double %301, double %306)
%308 = load double, double* %4
%309 = load double, double* %51
%310 = fneg double %308
%311 = fmul double %309, %310
%312 = tail call double @llvm.fmuladd.f64(double %311, double %301, double %307)
%313 = load double, double* %55
%314 = fmul double %308, %313
%315 = tail call double @llvm.fmuladd.f64(double %314, double %303, double %312)
%316 = load double, double* %32
%317 = fmul double %309, %316
%318 = tail call double @llvm.fmuladd.f64(double %317, double %302, double %315)
%319 = fneg double %316
%320 = fmul double %313, %319
%321 = tail call double @llvm.fmuladd.f64(double %320, double %299, double %318)
%322 = getelementptr inbounds double, double* %1, i64 2
store double %321, double* %322
%323 = load double, double* %0
%324 = fneg double %323
%325 = load double, double* %23
%326 = fmul double %325, %324
%327 = load double, double* %10
%328 = load double, double* %28
%329 = fmul double %323, %328
%330 = load double, double* %14
%331 = fmul double %329, %330
%332 = tail call double @llvm.fmuladd.f64(double %326, double %327, double %331)
%333 = load double, double* %40
%334 = load double, double* %51
%335 = fmul double %333, %334
%336 = tail call double @llvm.fmuladd.f64(double %335, double %327, double %332)
%337 = load double, double* %55
%338 = fneg double %333
%339 = fmul double %337, %338
%340 = tail call double @llvm.fmuladd.f64(double %339, double %330, double %336)
%341 = load double, double* %86
%342 = fneg double %341
%343 = fmul double %334, %342
%344 = tail call double @llvm.fmuladd.f64(double %343, double %328, double %340)
%345 = fmul double %337, %341
%346 = tail call double @llvm.fmuladd.f64(double %345, double %325, double %344)
%347 = getelementptr inbounds double, double* %1, i64 6
store double %346, double* %347
%348 = load double, double* %0
%349 = load double, double* %4
%350 = fmul double %348, %349
%351 = load double, double* %10
%352 = load double, double* %28
%353 = load double, double* %32
%354 = fneg double %348
%355 = fmul double %352, %354
%356 = fmul double %355, %353
%357 = tail call double @llvm.fmuladd.f64(double %350, double %351, double %356)
%358 = load double, double* %40
%359 = load double, double* %42
%360 = fneg double %358
%361 = fmul double %359, %360
%362 = tail call double @llvm.fmuladd.f64(double %361, double %351, double %357)
%363 = load double, double* %55
%364 = fmul double %358, %363
%365 = tail call double @llvm.fmuladd.f64(double %364, double %353, double %362)
%366 = load double, double* %86
%367 = fmul double %359, %366
%368 = tail call double @llvm.fmuladd.f64(double %367, double %352, double %365)
%369 = fneg double %366
%370 = fmul double %363, %369
%371 = tail call double @llvm.fmuladd.f64(double %370, double %349, double %368)
%372 = getelementptr inbounds double, double* %1, i64 10
store double %371, double* %372
%373 = load double, double* %0
%374 = fneg double %373
%375 = load double, double* %4
%376 = fmul double %375, %374
%377 = load double, double* %14
%378 = load double, double* %23
%379 = fmul double %373, %378
%380 = load double, double* %32
%381 = fmul double %379, %380
%382 = tail call double @llvm.fmuladd.f64(double %376, double %377, double %381)
%383 = load double, double* %40
%384 = load double, double* %42
%385 = fmul double %383, %384
%386 = tail call double @llvm.fmuladd.f64(double %385, double %377, double %382)
%387 = load double, double* %51
%388 = fneg double %383
%389 = fmul double %387, %388
%390 = tail call double @llvm.fmuladd.f64(double %389, double %380, double %386)
%391 = load double, double* %86
%392 = fneg double %391
%393 = fmul double %384, %392
%394 = tail call double @llvm.fmuladd.f64(double %393, double %378, double %390)
%395 = fmul double %387, %391
%396 = tail call double @llvm.fmuladd.f64(double %395, double %375, double %394)
%397 = getelementptr inbounds double, double* %1, i64 14
store double %396, double* %397
%398 = load double, double* %42
%399 = fneg double %398
%400 = load double, double* %23
%401 = fmul double %400, %399
%402 = load double, double* %12
%403 = load double, double* %28
%404 = fmul double %398, %403
%405 = load double, double* %7
%406 = fmul double %404, %405
%407 = tail call double @llvm.fmuladd.f64(double %401, double %402, double %406)
%408 = load double, double* %4
%409 = load double, double* %51
%410 = fmul double %408, %409
%411 = tail call double @llvm.fmuladd.f64(double %410, double %402, double %407)
%412 = load double, double* %55
%413 = fneg double %408
%414 = fmul double %412, %413
%415 = tail call double @llvm.fmuladd.f64(double %414, double %405, double %411)
%416 = load double, double* %20
%417 = fneg double %416
%418 = fmul double %409, %417
%419 = tail call double @llvm.fmuladd.f64(double %418, double %403, double %415)
%420 = fmul double %412, %416
%421 = tail call double @llvm.fmuladd.f64(double %420, double %400, double %419)
%422 = getelementptr inbounds double, double* %1, i64 3
store double %421, double* %422
%423 = load double, double* %0
%424 = load double, double* %23
%425 = fmul double %423, %424
%426 = load double, double* %12
%427 = load double, double* %28
%428 = load double, double* %7
%429 = fneg double %423
%430 = fmul double %427, %429
%431 = fmul double %430, %428
%432 = tail call double @llvm.fmuladd.f64(double %425, double %426, double %431)
%433 = load double, double* %40
%434 = load double, double* %51
%435 = fneg double %433
%436 = fmul double %434, %435
%437 = tail call double @llvm.fmuladd.f64(double %436, double %426, double %432)
%438 = load double, double* %55
%439 = fmul double %433, %438
%440 = tail call double @llvm.fmuladd.f64(double %439, double %428, double %437)
%441 = load double, double* %66
%442 = fmul double %434, %441
%443 = tail call double @llvm.fmuladd.f64(double %442, double %427, double %440)
%444 = fneg double %441
%445 = fmul double %438, %444
%446 = tail call double @llvm.fmuladd.f64(double %445, double %424, double %443)
%447 = getelementptr inbounds double, double* %1, i64 7
store double %446, double* %447
%448 = load double, double* %0
%449 = fneg double %448
%450 = load double, double* %4
%451 = fmul double %450, %449
%452 = load double, double* %12
%453 = load double, double* %28
%454 = fmul double %448, %453
%455 = load double, double* %20
%456 = fmul double %454, %455
%457 = tail call double @llvm.fmuladd.f64(double %451, double %452, double %456)
%458 = load double, double* %40
%459 = load double, double* %42
%460 = fmul double %458, %459
%461 = tail call double @llvm.fmuladd.f64(double %460, double %452, double %457)
%462 = load double, double* %55
%463 = fneg double %458
%464 = fmul double %462, %463
%465 = tail call double @llvm.fmuladd.f64(double %464, double %455, double %461)
%466 = load double, double* %66
%467 = fneg double %466
%468 = fmul double %459, %467
%469 = tail call double @llvm.fmuladd.f64(double %468, double %453, double %465)
%470 = fmul double %462, %466
%471 = tail call double @llvm.fmuladd.f64(double %470, double %450, double %469)
%472 = getelementptr inbounds double, double* %1, i64 11
store double %471, double* %472
%473 = load double, double* %0
%474 = load double, double* %4
%475 = fmul double %473, %474
%476 = load double, double* %7
%477 = load double, double* %23
%478 = load double, double* %20
%479 = fneg double %473
%480 = fmul double %477, %479
%481 = fmul double %480, %478
%482 = tail call double @llvm.fmuladd.f64(double %475, double %476, double %481)
%483 = load double, double* %40
%484 = load double, double* %42
%485 = fneg double %483
%486 = fmul double %484, %485
%487 = tail call double @llvm.fmuladd.f64(double %486, double %476, double %482)
%488 = load double, double* %51
%489 = fmul double %483, %488
%490 = tail call double @llvm.fmuladd.f64(double %489, double %478, double %487)
%491 = load double, double* %66
%492 = fmul double %484, %491
%493 = tail call double @llvm.fmuladd.f64(double %492, double %477, double %490)
%494 = fneg double %491
%495 = fmul double %488, %494
%496 = tail call double @llvm.fmuladd.f64(double %495, double %474, double %493)
%497 = bitcast double* %1 to <2 x double>*
%498 = load <2 x double>, <2 x double>* %497
%499 = insertelement <2 x double> poison, double %105, i64 0
%500 = shufflevector <2 x double> %499, <2 x double> poison, <2 x i32> zeroinitializer
%501 = fdiv <2 x double> %498, %500
%502 = bitcast double* %1 to <2 x double>*
store <2 x double> %501, <2 x double>* %502
%503 = load double, double* %322
%504 = insertelement <2 x double> poison, double %503, i64 0
%505 = insertelement <2 x double> %504, double %421, i64 1
%506 = fdiv <2 x double> %505, %500
%507 = bitcast double* %322 to <2 x double>*
store <2 x double> %506, <2 x double>* %507
%508 = bitcast double* %147 to <2 x double>*
%509 = load <2 x double>, <2 x double>* %508
%510 = fdiv <2 x double> %509, %500
%511 = bitcast double* %147 to <2 x double>*
store <2 x double> %510, <2 x double>* %511
%512 = load double, double* %347
%513 = insertelement <2 x double> poison, double %512, i64 0
%514 = insertelement <2 x double> %513, double %446, i64 1
%515 = fdiv <2 x double> %514, %500
%516 = bitcast double* %347 to <2 x double>*
store <2 x double> %515, <2 x double>* %516
%517 = bitcast double* %172 to <2 x double>*
%518 = load <2 x double>, <2 x double>* %517
%519 = fdiv <2 x double> %518, %500
%520 = bitcast double* %172 to <2 x double>*
store <2 x double> %519, <2 x double>* %520
%521 = load double, double* %372
%522 = insertelement <2 x double> poison, double %521, i64 0
%523 = insertelement <2 x double> %522, double %471, i64 1
%524 = fdiv <2 x double> %523, %500
%525 = bitcast double* %372 to <2 x double>*
store <2 x double> %524, <2 x double>* %525
%526 = bitcast double* %197 to <2 x double>*
%527 = load <2 x double>, <2 x double>* %526
%528 = fdiv <2 x double> %527, %500
%529 = bitcast double* %197 to <2 x double>*
store <2 x double> %528, <2 x double>* %529
%530 = load double, double* %397
%531 = insertelement <2 x double> poison, double %530, i64 0
%532 = insertelement <2 x double> %531, double %496, i64 1
%533 = fdiv <2 x double> %532, %500
%534 = bitcast double* %397 to <2 x double>*
store <2 x double> %533, <2 x double>* %534
br label %535
535: ; preds = %107, %2
%536 = phi i32 [ -1, %2 ], [ 0, %107 ]
ret i32 %536
}