user: What would the C source look like for the assembly code provided here:

```asm
<invertMatrix>:
  endbr64
  push   %r14
  pxor   %xmm2,%xmm2
  mov    %rdi,%r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x140,%rsp
  cvtps2pd (%rsi),%xmm0
  movapd %xmm0,%xmm5
  movq   D59(%rip),%xmm1
  mov    %fs:0x28,%rax
  mov    %rax,0x138(%rsp)
  xor    %eax,%eax
  movaps %xmm0,0x30(%rsp)
  pxor   %xmm0,%xmm0
  movups 0x30(%rsi),%xmm4
  movlps 0x8(%rsi),%xmm0
  movapd D31(%rip),%xmm3
  movaps %xmm1,0x50(%rsp)
  cvtps2pd %xmm0,%xmm0
  movaps %xmm0,0x40(%rsp)
  cvtps2pd 0x10(%rsi),%xmm0
  movapd %xmm0,%xmm6
  movaps %xmm0,0x70(%rsp)
  pxor   %xmm0,%xmm0
  movlps 0x18(%rsi),%xmm0
  movaps %xmm1,0xe0(%rsp)
  cvtps2pd %xmm0,%xmm0
  movaps %xmm0,0x80(%rsp)
  cvtps2pd 0x20(%rsi),%xmm0
  movapd %xmm0,%xmm7
  movaps %xmm0,0xb0(%rsp)
  pxor   %xmm0,%xmm0
  movlps 0x28(%rsi),%xmm0
  movaps %xmm2,0x60(%rsp)
  cvtps2pd %xmm0,%xmm0
  movaps %xmm0,0xc0(%rsp)
  cvtps2pd %xmm4,%xmm0
  movapd %xmm0,%xmm1
  movaps %xmm0,0xf0(%rsp)
  pxor   %xmm0,%xmm0
  movhlps %xmm4,%xmm0
  movaps %xmm3,0x90(%rsp)
  movaps %xmm2,0xa0(%rsp)
  cvtps2pd %xmm0,%xmm0
  movaps %xmm2,0xd0(%rsp)
  movaps %xmm0,0x100(%rsp)
  movapd %xmm1,%xmm0
  movaps %xmm2,0x110(%rsp)
  movaps %xmm3,0x120(%rsp)
  movq   D4(%rip),%xmm2
  movapd %xmm7,%xmm3
  andpd  %xmm2,%xmm0
  andpd  %xmm2,%xmm3
  comisd %xmm3,%xmm0
  ja     L217
  movapd %xmm3,%xmm0
  movapd %xmm7,%xmm1
  lea    0xf0(%rsp),%rbx
  lea    0xb0(%rsp),%r13
L81:
  movapd %xmm6,%xmm3
  lea    0x70(%rsp),%rbp
  andpd  %xmm2,%xmm3
  comisd %xmm3,%xmm0
  ja     L205
  mov    %r13,%rbp
  movapd %xmm3,%xmm0
  movapd %xmm6,%xmm1
  lea    0x70(%rsp),%r13
L205:
  movapd %xmm5,%xmm3
  lea    0x30(%rsp),%r12
  andpd  %xmm2,%xmm3
  comisd %xmm3,%xmm0
  ja     L280
  mov    %r13,%r12
  movapd %xmm5,%xmm1
  lea    0x30(%rsp),%r13
L280:
  pxor   %xmm0,%xmm0
  ucomisd %xmm0,%xmm1
  jp     L78
  je     L102
L78:
  movsd  (%r12),%xmm4
  movsd  0x0(%rbp),%xmm3
  movsd  (%rbx),%xmm6
  movsd  0x8(%r13),%xmm5
  divsd  %xmm1,%xmm4
  divsd  %xmm1,%xmm3
  movapd %xmm4,%xmm7
  mulsd  %xmm5,%xmm7
  divsd  %xmm1,%xmm6
  movsd  0x8(%r12),%xmm1
  subsd  %xmm7,%xmm1
  movsd  %xmm1,0x8(%r12)
  movsd  0x8(%rbp),%xmm1
  movapd %xmm3,%xmm7
  mulsd  %xmm5,%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm4,%xmm7
  movsd  %xmm1,0x8(%rbp)
  movsd  0x8(%rbx),%xmm1
  mulsd  %xmm6,%xmm5
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x8(%rbx)
  movsd  0x10(%r13),%xmm5
  movsd  0x10(%r12),%xmm1
  mulsd  %xmm5,%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm3,%xmm7
  mulsd  %xmm5,%xmm7
  mulsd  %xmm6,%xmm5
  movsd  %xmm1,0x10(%r12)
  movsd  0x10(%rbp),%xmm1
  subsd  %xmm7,%xmm1
  movapd %xmm4,%xmm7
  movsd  %xmm1,0x10(%rbp)
  movsd  0x10(%rbx),%xmm1
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x10(%rbx)
  movsd  0x18(%r13),%xmm5
  movsd  0x18(%r12),%xmm1
  mulsd  %xmm5,%xmm7
  subsd  %xmm7,%xmm1
  movapd %xmm3,%xmm7
  mulsd  %xmm5,%xmm7
  mulsd  %xmm6,%xmm5
  movsd  %xmm1,0x18(%r12)
  movsd  0x18(%rbp),%xmm1
  subsd  %xmm7,%xmm1
  movsd  %xmm1,0x18(%rbp)
  movsd  0x18(%rbx),%xmm1
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x18(%rbx)
  movsd  0x20(%r13),%xmm1
  ucomisd %xmm0,%xmm1
  jp     L45
  jne    L45
L420:
  movsd  0x28(%r13),%xmm1
  ucomisd %xmm0,%xmm1
  jp     L417
  jne    L417
L299:
  movsd  0x30(%r13),%xmm1
  ucomisd %xmm0,%xmm1
  jp     L392
  jne    L392
L341:
  movsd  0x38(%r13),%xmm1
  ucomisd %xmm0,%xmm1
  jp     L380
  jne    L380
L244:
  movsd  0x8(%rbx),%xmm3
  movsd  0x8(%rbp),%xmm1
  movapd %xmm3,%xmm5
  movapd %xmm1,%xmm4
  andpd  %xmm2,%xmm5
  andpd  %xmm2,%xmm4
  comisd %xmm4,%xmm5
  jbe    L230
  mov    %rbp,%rax
  movapd %xmm5,%xmm4
  movapd %xmm3,%xmm1
  mov    %rbx,%rbp
  mov    %rax,%rbx
L230:
  movsd  0x8(%r12),%xmm3
  movapd %xmm3,%xmm5
  andpd  %xmm2,%xmm5
  comisd %xmm5,%xmm4
  jbe    L308
  movq   %xmm3,%rax
  movapd %xmm1,%xmm3
  movq   %rax,%xmm1
  mov    %r12,%rax
  mov    %rbp,%r12
  mov    %rax,%rbp
L308:
  ucomisd %xmm0,%xmm3
  jp     L343
  je     L305
L343:
  divsd  %xmm3,%xmm1
  movsd  0x8(%rbx),%xmm4
  movsd  0x10(%r12),%xmm5
  divsd  %xmm3,%xmm4
  movsd  0x10(%rbp),%xmm3
  mulsd  %xmm1,%xmm5
  subsd  %xmm5,%xmm3
  movsd  %xmm3,0x10(%rbp)
  movsd  0x10(%r12),%xmm5
  movsd  0x10(%rbx),%xmm3
  mulsd  %xmm4,%xmm5
  subsd  %xmm5,%xmm3
  movsd  %xmm3,0x10(%rbx)
  movsd  0x18(%r12),%xmm5
  movsd  0x18(%rbp),%xmm3
  mulsd  %xmm1,%xmm5
  subsd  %xmm5,%xmm3
  movsd  %xmm3,0x18(%rbp)
  movsd  0x18(%r12),%xmm5
  movsd  0x18(%rbx),%xmm3
  mulsd  %xmm4,%xmm5
  subsd  %xmm5,%xmm3
  movsd  %xmm3,0x18(%rbx)
  movsd  0x20(%r12),%xmm3
  ucomisd %xmm0,%xmm3
  jp     L394
  jne    L394
L77:
  movsd  0x28(%r12),%xmm3
  ucomisd %xmm0,%xmm3
  jp     L198
  jne    L198
L66:
  movsd  0x30(%r12),%xmm3
  ucomisd %xmm0,%xmm3
  jp     L223
  jne    L223
L121:
  movsd  0x38(%r12),%xmm5
  ucomisd %xmm0,%xmm5
  jp     L90
  jne    L90
L248:
  movsd  0x10(%rbx),%xmm1
  movsd  0x10(%rbp),%xmm3
  movapd %xmm1,%xmm4
  andpd  %xmm2,%xmm4
  andpd  %xmm3,%xmm2
  comisd %xmm2,%xmm4
  jbe    L313
  movq   %xmm3,%rax
  movapd %xmm1,%xmm3
  movq   %rax,%xmm1
  mov    %rbp,%rax
  mov    %rbx,%rbp
  mov    %rax,%rbx
L313:
  ucomisd %xmm0,%xmm3
  jp     L212
  je     L365
L212:
  divsd  %xmm3,%xmm1
  movsd  0x18(%rbp),%xmm2
  movsd  0x18(%rbx),%xmm7
  movsd  0x28(%rbx),%xmm5
  movsd  0x38(%rbx),%xmm6
  mulsd  %xmm1,%xmm2
  subsd  %xmm2,%xmm7
  movsd  0x20(%rbx),%xmm2
  movsd  %xmm7,0x18(%rbx)
  movsd  0x20(%rbp),%xmm3
  ucomisd %xmm0,%xmm7
  mulsd  %xmm1,%xmm3
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x20(%rbx)
  movsd  0x28(%rbp),%xmm3
  mulsd  %xmm1,%xmm3
  subsd  %xmm3,%xmm5
  movsd  0x30(%rbx),%xmm3
  movsd  %xmm5,0x28(%rbx)
  movsd  0x30(%rbp),%xmm4
  mulsd  %xmm1,%xmm4
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x30(%rbx)
  mulsd  0x38(%rbp),%xmm1
  subsd  %xmm1,%xmm6
  jp     L402
  je     L50
L402:
  movsd  D59(%rip),%xmm4
  movapd %xmm4,%xmm0
  divsd  %xmm7,%xmm0
  mulsd  %xmm0,%xmm2
  mulsd  %xmm0,%xmm5
  mulsd  %xmm0,%xmm3
  mulsd  %xmm0,%xmm6
  movsd  %xmm2,0x20(%rbx)
  movsd  %xmm5,0x28(%rbx)
  movsd  %xmm3,0x30(%rbx)
  movapd %xmm4,%xmm3
  movsd  %xmm6,0x38(%rbx)
  movsd  0x18(%rbp),%xmm0
  movsd  0x20(%rbp),%xmm1
  divsd  0x10(%rbp),%xmm3
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,0x20(%rbp)
  movsd  0x28(%rbx),%xmm2
  movsd  0x28(%rbp),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,0x28(%rbp)
  movsd  0x30(%rbx),%xmm2
  movsd  0x30(%rbp),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,0x30(%rbp)
  mulsd  0x38(%rbx),%xmm0
  movsd  0x38(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm3,%xmm1
  movsd  %xmm1,0x38(%rbp)
  movsd  0x20(%rbx),%xmm2
  movsd  0x18(%r12),%xmm0
  movsd  0x20(%r12),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r12)
  movsd  0x28(%rbx),%xmm2
  movsd  0x28(%r12),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r12)
  movsd  0x30(%rbx),%xmm2
  movsd  0x30(%r12),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%r12)
  mulsd  0x38(%rbx),%xmm0
  movsd  0x38(%r12),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%r12)
  movsd  0x18(%r13),%xmm0
  movsd  0x20(%rbx),%xmm2
  movsd  0x20(%r13),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r13)
  movsd  0x28(%rbx),%xmm2
  movsd  0x28(%r13),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r13)
  movsd  0x30(%rbx),%xmm2
  movsd  0x30(%r13),%xmm1
  mulsd  %xmm0,%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm4,%xmm2
  movsd  %xmm1,0x30(%r13)
  mulsd  0x38(%rbx),%xmm0
  movsd  0x38(%r13),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%r13)
  movsd  0x20(%rbp),%xmm3
  movsd  0x10(%r12),%xmm0
  divsd  0x8(%r12),%xmm2
  movsd  0x20(%r12),%xmm1
  mulsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r12)
  movsd  0x28(%rbp),%xmm3
  movsd  0x28(%r12),%xmm1
  mulsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r12)
  movsd  0x30(%rbp),%xmm3
  movsd  0x30(%r12),%xmm1
  mulsd  %xmm0,%xmm3
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%r12)
  mulsd  0x38(%rbp),%xmm0
  movsd  0x38(%r12),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x38(%r12)
  movsd  0x10(%r13),%xmm0
  movsd  0x20(%rbp),%xmm1
  movsd  0x20(%r13),%xmm3
  movsd  0x28(%r13),%xmm2
  mulsd  %xmm0,%xmm1
  subsd  %xmm1,%xmm3
  movsd  %xmm3,0x20(%r13)
  movsd  0x28(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x28(%r13)
  movsd  0x30(%rbp),%xmm5
  movsd  0x30(%r13),%xmm1
  divsd  0x0(%r13),%xmm4
  mulsd  %xmm0,%xmm5
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x30(%r13)
  movsd  0x38(%rbp),%xmm5
  mulsd  %xmm0,%xmm5
  movsd  0x38(%r13),%xmm0
  subsd  %xmm5,%xmm0
  movsd  0x8(%r13),%xmm5
  movsd  %xmm0,0x38(%r13)
  movsd  0x20(%r12),%xmm6
  mulsd  %xmm5,%xmm6
  subsd  %xmm6,%xmm3
  mulsd  %xmm4,%xmm3
  movsd  %xmm3,0x20(%r13)
  movsd  0x28(%r12),%xmm6
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%r14)
  mulsd  %xmm5,%xmm6
  subsd  %xmm6,%xmm2
  mulsd  %xmm4,%xmm2
  movsd  %xmm2,0x28(%r13)
  movsd  0x30(%r12),%xmm6
  cvtsd2ss %xmm2,%xmm2
  movss  %xmm2,0x4(%r14)
  mulsd  %xmm5,%xmm6
  subsd  %xmm6,%xmm1
  mulsd  %xmm4,%xmm1
  movsd  %xmm1,0x30(%r13)
  mulsd  0x38(%r12),%xmm5
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x8(%r14)
  subsd  %xmm5,%xmm0
  mulsd  %xmm4,%xmm0
  movsd  %xmm0,0x38(%r13)
  cvtsd2ss %xmm0,%xmm0
  cvtpd2ps 0x30(%r12),%xmm1
  movss  %xmm0,0xc(%r14)
  cvtpd2ps 0x20(%r12),%xmm0
  movlhps %xmm1,%xmm0
  cvtpd2ps 0x30(%rbp),%xmm1
  movups %xmm0,0x10(%r14)
  cvtpd2ps 0x20(%rbp),%xmm0
  movlhps %xmm1,%xmm0
  movapd 0x30(%rbx),%xmm1
  movups %xmm0,0x20(%r14)
  movapd 0x20(%rbx),%xmm0
  cvtpd2ps %xmm1,%xmm1
  cvtpd2ps %xmm0,%xmm0
  movlhps %xmm1,%xmm0
  movups %xmm0,0x30(%r14)
  mov    0x138(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L350
  add    $0x140,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax,%rax,1)
L90:
  mulsd  %xmm5,%xmm4
  movapd %xmm1,%xmm3
  movsd  0x38(%rbp),%xmm1
  mulsd  %xmm5,%xmm3
  subsd  %xmm3,%xmm1
  movsd  %xmm1,0x38(%rbp)
  movsd  0x38(%rbx),%xmm3
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x38(%rbx)
  jmp    L248
  nopl   (%rax)
L223:
  movapd %xmm1,%xmm6
  movsd  0x30(%rbp),%xmm5
  mulsd  %xmm3,%xmm6
  mulsd  %xmm4,%xmm3
  subsd  %xmm6,%xmm5
  movsd  %xmm5,0x30(%rbp)
  movsd  0x30(%rbx),%xmm5
  subsd  %xmm3,%xmm5
  movsd  %xmm5,0x30(%rbx)
  jmp    L121
  nopl   (%rax)
L198:
  movapd %xmm1,%xmm6
  movsd  0x28(%rbp),%xmm5
  mulsd  %xmm3,%xmm6
  mulsd  %xmm4,%xmm3
  subsd  %xmm6,%xmm5
  movsd  %xmm5,0x28(%rbp)
  movsd  0x28(%rbx),%xmm5
  subsd  %xmm3,%xmm5
  movsd  %xmm5,0x28(%rbx)
  jmp    L66
  nopl   (%rax)
L394:
  movapd %xmm1,%xmm6
  movsd  0x20(%rbp),%xmm5
  mulsd  %xmm3,%xmm6
  mulsd  %xmm4,%xmm3
  subsd  %xmm6,%xmm5
  movsd  %xmm5,0x20(%rbp)
  movsd  0x20(%rbx),%xmm5
  subsd  %xmm3,%xmm5
  movsd  %xmm5,0x20(%rbx)
  jmp    L77
  nopl   (%rax)
L380:
  mulsd  %xmm1,%xmm4
  movsd  0x38(%r12),%xmm5
  mulsd  %xmm1,%xmm3
  mulsd  %xmm6,%xmm1
  subsd  %xmm4,%xmm5
  movsd  %xmm5,0x38(%r12)
  movsd  0x38(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x38(%rbp)
  movsd  0x38(%rbx),%xmm3
  subsd  %xmm1,%xmm3
  movsd  %xmm3,0x38(%rbx)
  jmp    L244
  nop
L392:
  movapd %xmm4,%xmm7
  movsd  0x30(%r12),%xmm5
  mulsd  %xmm1,%xmm7
  subsd  %xmm7,%xmm5
  movapd %xmm3,%xmm7
  mulsd  %xmm1,%xmm7
  mulsd  %xmm6,%xmm1
  movsd  %xmm5,0x30(%r12)
  movsd  0x30(%rbp),%xmm5
  subsd  %xmm7,%xmm5
  movsd  %xmm5,0x30(%rbp)
  movsd  0x30(%rbx),%xmm5
  subsd  %xmm1,%xmm5
  movsd  %xmm5,0x30(%rbx)
  jmp    L341
  nopw   0x0(%rax,%rax,1)
L417:
  movapd %xmm4,%xmm7
  movsd  0x28(%r12),%xmm5
  mulsd  %xmm1,%xmm7
  subsd  %xmm7,%xmm5
  movapd %xmm3,%xmm7
  mulsd  %xmm1,%xmm7
  mulsd  %xmm6,%xmm1
  movsd  %xmm5,0x28(%r12)
  movsd  0x28(%rbp),%xmm5
  subsd  %xmm7,%xmm5
  movsd  %xmm5,0x28(%rbp)
  movsd  0x28(%rbx),%xmm5
  subsd  %xmm1,%xmm5
  movsd  %xmm5,0x28(%rbx)
  jmp    L299
  nopw   0x0(%rax,%rax,1)
L45:
  movapd %xmm4,%xmm7
  movsd  0x20(%r12),%xmm5
  mulsd  %xmm1,%xmm7
  subsd  %xmm7,%xmm5
  movapd %xmm3,%xmm7
  mulsd  %xmm1,%xmm7
  mulsd  %xmm6,%xmm1
  movsd  %xmm5,0x20(%r12)
  movsd  0x20(%rbp),%xmm5
  subsd  %xmm7,%xmm5
  movsd  %xmm5,0x20(%rbp)
  movsd  0x20(%rbx),%xmm5
  subsd  %xmm1,%xmm5
  movsd  %xmm5,0x20(%rbx)
  jmp    L420
  nopw   0x0(%rax,%rax,1)
L217:
  lea    0xb0(%rsp),%rbx
  lea    0xf0(%rsp),%r13
  jmp    L81
  nopl   (%rax)
L102:
  xor    %edi,%edi
  xor    %eax,%eax
  movsd  %xmm1,0x8(%rsp)
  call   <assert@plt>
  movsd  0x8(%rsp),%xmm1
  pxor   %xmm0,%xmm0
  movq   D4(%rip),%xmm2
  jmp    L78
  xchg   %ax,%ax
L50:
  xor    %edi,%edi
  xor    %eax,%eax
  movsd  %xmm6,0x28(%rsp)
  movsd  %xmm3,0x20(%rsp)
  movsd  %xmm5,0x18(%rsp)
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm7,0x8(%rsp)
  call   <assert@plt>
  movsd  0x28(%rsp),%xmm6
  movsd  0x20(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm7
  jmp    L402
  nopw   0x0(%rax,%rax,1)
L365:
  xor    %edi,%edi
  xor    %eax,%eax
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <assert@plt>
  movsd  0x10(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm1
  pxor   %xmm0,%xmm0
  jmp    L212
  nopw   0x0(%rax,%rax,1)
L305:
  xor    %edi,%edi
  xor    %eax,%eax
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm1,0x8(%rsp)
  call   <assert@plt>
  movsd  0x10(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm1
  pxor   %xmm0,%xmm0
  movq   D4(%rip),%xmm2
  jmp    L343
L350:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: tag: D59
data_type: f64
name: unpack_data
arguments: tag: D31
data_type: f64[2]
name: unpack_data
arguments: tag: D4
data_type: qword

tool: D59: 1

tool: {"D31": [0.0,1.0]}

tool: D4: 9223372036854775807

assistant: ```c
void invertMatrix(float *out, const float *m) {
  double wtmp[4][8];
  double m0, m1, m2, m3, s;
  double *r0, *r1, *r2, *r3;
  r0 = wtmp[0], r1 = wtmp[1], r2 = wtmp[2], r3 = wtmp[3];
  r0[0] = (m)[(0) * 4 + (0)], r0[1] = (m)[(0) * 4 + (1)], r0[2] = (m)[(0) * 4 + (2)], r0[3] = (m)[(0) * 4 + (3)], r0[4] = 1.0, r0[5] = r0[6] = r0[7] = 0.0, r1[0] = (m)[(1) * 4 + (0)], r1[1] = (m)[(1) * 4 + (1)], r1[2] = (m)[(1) * 4 + (2)], r1[3] = (m)[(1) * 4 + (3)], r1[5] = 1.0, r1[4] = r1[6] = r1[7] = 0.0, r2[0] = (m)[(2) * 4 + (0)], r2[1] = (m)[(2) * 4 + (1)], r2[2] = (m)[(2) * 4 + (2)], r2[3] = (m)[(2) * 4 + (3)], r2[6] = 1.0, r2[4] = r2[5] = r2[7] = 0.0, r3[0] = (m)[(3) * 4 + (0)], r3[1] = (m)[(3) * 4 + (1)], r3[2] = (m)[(3) * 4 + (2)], r3[3] = (m)[(3) * 4 + (3)], r3[7] = 1.0, r3[4] = r3[5] = r3[6] = 0.0;
  if (fabs(r3[0]) > fabs(r2[0])) {
    double *_tmp = r3;
    (r3) = (r2);
    (r2) = _tmp;
  };
  if (fabs(r2[0]) > fabs(r1[0])) {
    double *_tmp = r2;
    (r2) = (r1);
    (r1) = _tmp;
  };
  if (fabs(r1[0]) > fabs(r0[0])) {
    double *_tmp = r1;
    (r1) = (r0);
    (r0) = _tmp;
  };
  if (0.0 == r0[0]) {
    assert(!"could not invert matrix");
  }
  m1 = r1[0] / r0[0];
  m2 = r2[0] / r0[0];
  m3 = r3[0] / r0[0];
  s = r0[1];
  r1[1] -= m1 * s;
  r2[1] -= m2 * s;
  r3[1] -= m3 * s;
  s = r0[2];
  r1[2] -= m1 * s;
  r2[2] -= m2 * s;
  r3[2] -= m3 * s;
  s = r0[3];
  r1[3] -= m1 * s;
  r2[3] -= m2 * s;
  r3[3] -= m3 * s;
  s = r0[4];
  if (s != 0.0) {
    r1[4] -= m1 * s;
    r2[4] -= m2 * s;
    r3[4] -= m3 * s;
  }
  s = r0[5];
  if (s != 0.0) {
    r1[5] -= m1 * s;
    r2[5] -= m2 * s;
    r3[5] -= m3 * s;
  }
  s = r0[6];
  if (s != 0.0) {
    r1[6] -= m1 * s;
    r2[6] -= m2 * s;
    r3[6] -= m3 * s;
  }
  s = r0[7];
  if (s != 0.0) {
    r1[7] -= m1 * s;
    r2[7] -= m2 * s;
    r3[7] -= m3 * s;
  }
  if (fabs(r3[1]) > fabs(r2[1])) {
    double *_tmp = r3;
    (r3) = (r2);
    (r2) = _tmp;
  };
  if (fabs(r2[1]) > fabs(r1[1])) {
    double *_tmp = r2;
    (r2) = (r1);
    (r1) = _tmp;
  };
  if (0.0 == r1[1]) {
    assert(!"could not invert matrix");
  }
  m2 = r2[1] / r1[1];
  m3 = r3[1] / r1[1];
  r2[2] -= m2 * r1[2];
  r3[2] -= m3 * r1[2];
  r2[3] -= m2 * r1[3];
  r3[3] -= m3 * r1[3];
  s = r1[4];
  if (0.0 != s) {
    r2[4] -= m2 * s;
    r3[4] -= m3 * s;
  }
  s = r1[5];
  if (0.0 != s) {
    r2[5] -= m2 * s;
    r3[5] -= m3 * s;
  }
  s = r1[6];
  if (0.0 != s) {
    r2[6] -= m2 * s;
    r3[6] -= m3 * s;
  }
  s = r1[7];
  if (0.0 != s) {
    r2[7] -= m2 * s;
    r3[7] -= m3 * s;
  }
  if (fabs(r3[2]) > fabs(r2[2])) {
    double *_tmp = r3;
    (r3) = (r2);
    (r2) = _tmp;
  };
  if (0.0 == r2[2]) {
    assert(!"could not invert matrix");
  }
  m3 = r3[2] / r2[2];
  r3[3] -= m3 * r2[3], r3[4] -= m3 * r2[4], r3[5] -= m3 * r2[5], r3[6] -= m3 * r2[6], r3[7] -= m3 * r2[7];
  if (0.0 == r3[3]) {
    assert(!"could not invert matrix");
  }
  s = 1.0 / r3[3];
  r3[4] *= s;
  r3[5] *= s;
  r3[6] *= s;
  r3[7] *= s;
  m2 = r2[3];
  s = 1.0 / r2[2];
  r2[4] = s * (r2[4] - r3[4] * m2), r2[5] = s * (r2[5] - r3[5] * m2), r2[6] = s * (r2[6] - r3[6] * m2), r2[7] = s * (r2[7] - r3[7] * m2);
  m1 = r1[3];
  r1[4] -= r3[4] * m1, r1[5] -= r3[5] * m1, r1[6] -= r3[6] * m1, r1[7] -= r3[7] * m1;
  m0 = r0[3];
  r0[4] -= r3[4] * m0, r0[5] -= r3[5] * m0, r0[6] -= r3[6] * m0, r0[7] -= r3[7] * m0;
  m1 = r1[2];
  s = 1.0 / r1[1];
  r1[4] = s * (r1[4] - r2[4] * m1), r1[5] = s * (r1[5] - r2[5] * m1), r1[6] = s * (r1[6] - r2[6] * m1), r1[7] = s * (r1[7] - r2[7] * m1);
  m0 = r0[2];
  r0[4] -= r2[4] * m0, r0[5] -= r2[5] * m0, r0[6] -= r2[6] * m0, r0[7] -= r2[7] * m0;
  m0 = r0[1];
  s = 1.0 / r0[0];
  r0[4] = s * (r0[4] - r1[4] * m0), r0[5] = s * (r0[5] - r1[5] * m0), r0[6] = s * (r0[6] - r1[6] * m0), r0[7] = s * (r0[7] - r1[7] * m0);
  (out)[(0) * 4 + (0)] = (float)r0[4];
  (out)[(0) * 4 + (1)] = (float)r0[5], (out)[(0) * 4 + (2)] = (float)r0[6];
  (out)[(0) * 4 + (3)] = (float)r0[7], (out)[(1) * 4 + (0)] = (float)r1[4];
  (out)[(1) * 4 + (1)] = (float)r1[5], (out)[(1) * 4 + (2)] = (float)r1[6];
  (out)[(1) * 4 + (3)] = (float)r1[7], (out)[(2) * 4 + (0)] = (float)r2[4];
  (out)[(2) * 4 + (1)] = (float)r2[5], (out)[(2) * 4 + (2)] = (float)r2[6];
  (out)[(2) * 4 + (3)] = (float)r2[7], (out)[(3) * 4 + (0)] = (float)r3[4];
  (out)[(3) * 4 + (1)] = (float)r3[5], (out)[(3) * 4 + (2)] = (float)r3[6];
  (out)[(3) * 4 + (3)] = (float)r3[7];
}
```