double det6x6(double M[6 * 6]) {
  double minor11[5 * 5] = {M[7],  M[8],  M[9],  M[10], M[11], M[13], M[14],
                           M[15], M[16], M[17], M[19], M[20], M[21], M[22],
                           M[23], M[25], M[26], M[27], M[28], M[29], M[31],
                           M[32], M[33], M[34], M[35]};
  double minor12[5 * 5] = {M[6],  M[8],  M[9],  M[10], M[11], M[12], M[14],
                           M[15], M[16], M[17], M[18], M[20], M[21], M[22],
                           M[23], M[24], M[26], M[27], M[28], M[29], M[30],
                           M[32], M[33], M[34], M[35]};
  double minor13[5 * 5] = {M[6],  M[7],  M[9],  M[10], M[11], M[12], M[13],
                           M[15], M[16], M[17], M[18], M[19], M[21], M[22],
                           M[23], M[24], M[25], M[27], M[28], M[29], M[30],
                           M[31], M[33], M[34], M[35]};
  double minor14[5 * 5] = {M[6],  M[7],  M[8],  M[10], M[11], M[12], M[13],
                           M[14], M[16], M[17], M[18], M[19], M[20], M[22],
                           M[23], M[24], M[25], M[26], M[28], M[29], M[30],
                           M[31], M[32], M[34], M[35]};
  double minor15[5 * 5] = {M[6],  M[7],  M[8],  M[9],  M[11], M[12], M[13],
                           M[14], M[15], M[17], M[18], M[19], M[20], M[21],
                           M[23], M[24], M[25], M[26], M[27], M[29], M[30],
                           M[31], M[32], M[33], M[35]};
  double minor16[5 * 5] = {M[6],  M[7],  M[8],  M[9],  M[10], M[12], M[13],
                           M[14], M[15], M[16], M[18], M[19], M[20], M[21],
                           M[22], M[24], M[25], M[26], M[27], M[28], M[30],
                           M[31], M[32], M[33], M[34]};
  return M[0] * (det5x5(minor11)) - M[1] * (det5x5(minor12)) +
         M[2] * (det5x5(minor13)) - M[3] * (det5x5(minor14)) +
         M[4] * (det5x5(minor15)) - M[5] * (det5x5(minor16));
}


x86 assembly (clang, -O0):
<det6x6>:
push   %rbp
mov    %rsp,%rbp
sub    $0x540,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x78(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0x10(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x190(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x268(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x340(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x338(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x330(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x328(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x320(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x318(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x310(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x308(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x300(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x2f8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x2f0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x2e8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x2e0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x2d8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x2c0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x2b8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x2a8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x298(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0x290(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x410(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x408(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x400(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x3f8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
movsd  %xmm0,-0x3f0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x3e8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x3e0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x3d8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x3d0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x3c8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x3c0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x3b8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x3b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x3a8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x3a0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x398(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x390(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x388(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x380(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x378(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x370(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x368(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0x360(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0x358(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x118(%rax),%xmm0
movsd  %xmm0,-0x350(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x4e0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x4d8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x4d0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x4c8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
movsd  %xmm0,-0x4c0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
movsd  %xmm0,-0x4b8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
movsd  %xmm0,-0x4b0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
movsd  %xmm0,-0x4a8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
movsd  %xmm0,-0x4a0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x498(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x490(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x488(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x478(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x470(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x468(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x460(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x458(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x450(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x448(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x100(%rax),%xmm0
movsd  %xmm0,-0x430(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x108(%rax),%xmm0
movsd  %xmm0,-0x428(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x110(%rax),%xmm0
movsd  %xmm0,-0x420(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x530(%rbp)
ff
lea    -0xd0(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x528(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x538(%rbp)
ff
lea    -0x1a0(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
movsd  -0x538(%rbp),%xmm1
ff
movsd  -0x530(%rbp),%xmm0
ff
movsd  -0x528(%rbp),%xmm2
ff
cvtsi2sd %eax,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x518(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
movsd  %xmm0,-0x520(%rbp)
ff
lea    -0x270(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
movsd  -0x520(%rbp),%xmm0
ff
movsd  -0x518(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x508(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
movsd  %xmm0,-0x510(%rbp)
ff
lea    -0x340(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
movsd  -0x510(%rbp),%xmm0
ff
movsd  -0x508(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4f8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x500(%rbp)
ff
lea    -0x410(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
movsd  -0x500(%rbp),%xmm0
ff
movsd  -0x4f8(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x4e8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x4f0(%rbp)
ff
lea    -0x4e0(%rbp),%rdi
mov    $0x0,%al
call   1030 <det5x5@plt>
movsd  -0x4f0(%rbp),%xmm0
ff
movsd  -0x4e8(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
add    $0x540,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<det6x6>:
push   %rbx
sub    $0x4f0,%rsp
mov    %rdi,%rbx
movups 0x38(%rdi),%xmm4
movaps %xmm4,0x280(%rsp)
movups 0x48(%rdi),%xmm7
movaps %xmm7,0x290(%rsp)
movups 0x58(%rdi),%xmm3
movlps %xmm3,0x2a0(%rsp)
movups 0x68(%rdi),%xmm15
movups %xmm15,0x2a8(%rsp)
movups 0x78(%rdi),%xmm2
movups %xmm2,0x2b8(%rsp)
movups 0x88(%rdi),%xmm13
movlps %xmm13,0x2c8(%rsp)
movups 0x98(%rdi),%xmm14
movaps %xmm14,0x2d0(%rsp)
movups 0xa8(%rdi),%xmm6
movaps %xmm6,0x2e0(%rsp)
movups 0xb8(%rdi),%xmm12
movlps %xmm12,0x2f0(%rsp)
movups 0xc8(%rdi),%xmm11
movups %xmm11,0x2f8(%rsp)
movups 0xd8(%rdi),%xmm1
movups %xmm1,0x308(%rsp)
movups 0xe8(%rdi),%xmm9
movlps %xmm9,0x318(%rsp)
movups 0xf8(%rdi),%xmm10
movaps %xmm10,0x320(%rsp)
movups 0x108(%rdi),%xmm0
movaps %xmm0,0x330(%rsp)
movsd  0x118(%rdi),%xmm8
movsd  %xmm8,0x340(%rsp)
movsd  0x30(%rdi),%xmm5
movsd  %xmm5,0x1b0(%rsp)
movsd  %xmm5,0xe0(%rsp)
movsd  %xmm5,0x350(%rsp)
movsd  %xmm5,0x10(%rsp)
movsd  %xmm5,0x420(%rsp)
movlps %xmm4,0xe8(%rsp)
movups %xmm4,0x358(%rsp)
movups %xmm4,0x18(%rsp)
movups %xmm4,0x428(%rsp)
shufps $0x4e,%xmm7,%xmm4
movups %xmm4,0x1b8(%rsp)
movhps %xmm7,0x1c8(%rsp)
movaps %xmm3,0x1d0(%rsp)
movaps %xmm7,0xf0(%rsp)
movaps %xmm3,0x100(%rsp)
movlps %xmm7,0x28(%rsp)
movups %xmm7,0x438(%rsp)
shufps $0x4e,%xmm3,%xmm7
movups %xmm7,0x368(%rsp)
movaps %xmm3,0x30(%rsp)
shufps $0x4e,%xmm15,%xmm3
movups %xmm3,0x378(%rsp)
movaps %xmm15,%xmm4
unpckhpd %xmm2,%xmm4
movups %xmm4,0x388(%rsp)
movups %xmm3,0x448(%rsp)
movlps %xmm15,0x110(%rsp)
movaps %xmm15,0x40(%rsp)
shufps $0x4e,%xmm2,%xmm15
movaps %xmm15,0x1e0(%rsp)
movups %xmm15,0x458(%rsp)
movhps %xmm2,0x1f0(%rsp)
movups %xmm13,0x1f8(%rsp)
movups %xmm2,0x118(%rsp)
movups %xmm13,0x128(%rsp)
movups %xmm13,0x398(%rsp)
movlps %xmm2,0x50(%rsp)
movups %xmm13,0x58(%rsp)
unpckhpd %xmm13,%xmm2
movups %xmm2,0x468(%rsp)
movlps %xmm14,0x138(%rsp)
movups %xmm14,0x3a8(%rsp)
movups %xmm14,0x68(%rsp)
movups %xmm14,0x478(%rsp)
shufps $0x4e,%xmm6,%xmm14
movups %xmm14,0x208(%rsp)
movhps %xmm6,0x218(%rsp)
movaps %xmm12,0x220(%rsp)
movaps %xmm6,0x140(%rsp)
movaps %xmm12,0x150(%rsp)
movlps %xmm6,0x78(%rsp)
movups %xmm6,0x488(%rsp)
shufps $0x4e,%xmm12,%xmm6
movups %xmm6,0x3b8(%rsp)
movaps %xmm12,0x80(%rsp)
shufps $0x4e,%xmm11,%xmm12
movups %xmm12,0x3c8(%rsp)
movaps %xmm11,%xmm2
unpckhpd %xmm1,%xmm2
movups %xmm2,0x3d8(%rsp)
movups %xmm12,0x498(%rsp)
movlps %xmm11,0x160(%rsp)
movaps %xmm11,0x90(%rsp)
shufps $0x4e,%xmm1,%xmm11
movaps %xmm11,0x230(%rsp)
movups %xmm11,0x4a8(%rsp)
movhps %xmm1,0x240(%rsp)
movups %xmm9,0x248(%rsp)
movups %xmm1,0x168(%rsp)
movups %xmm9,0x178(%rsp)
movups %xmm9,0x3e8(%rsp)
movlps %xmm1,0xa0(%rsp)
movups %xmm9,0xa8(%rsp)
unpckhpd %xmm9,%xmm1
movups %xmm1,0x4b8(%rsp)
movlps %xmm10,0x188(%rsp)
movups %xmm10,0x3f8(%rsp)
movups %xmm10,0xb8(%rsp)
movups %xmm10,0x4c8(%rsp)
shufps $0x4e,%xmm0,%xmm10
movups %xmm10,0x258(%rsp)
movhps %xmm0,0x268(%rsp)
movsd  %xmm8,0x270(%rsp)
movaps %xmm0,0x190(%rsp)
movsd  %xmm8,0x1a0(%rsp)
movhps %xmm0,0x408(%rsp)
movsd  %xmm8,0x410(%rsp)
movlps %xmm0,0xc8(%rsp)
movsd  %xmm8,0xd0(%rsp)
movups %xmm0,0x4d8(%rsp)
movsd  (%rdi),%xmm0
movsd  %xmm0,(%rsp)
lea    0x280(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x8(%rbx),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x1b0(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x10(%rbx),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0xe0(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x18(%rbx),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x350(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  (%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,(%rsp)
movsd  0x20(%rbx),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x10(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
addsd  (%rsp),%xmm0
movsd  %xmm0,(%rsp)
movsd  0x28(%rbx),%xmm0
movsd  %xmm0,0x8(%rsp)
lea    0x420(%rsp),%rdi
xor    %eax,%eax
call   1030 <det5x5@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0x8(%rsp),%xmm1
movsd  (%rsp),%xmm0
subsd  %xmm1,%xmm0
add    $0x4f0,%rsp
pop    %rbx
ret

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

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