user: 这段汇编代码用C语言表示是什么样的？

```asm
<invertMatrix>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x138,%rsp
  mov    %rdi,%r14
  mov    %fs:0x28,%rdx
  mov    %rdx,0x128(%rsp)
  xor    %edx,%edx
  pxor   %xmm1,%xmm1
  cvtss2sd (%rsi),%xmm1
  movsd  %xmm1,0x20(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x4(%rsi),%xmm0
  movsd  %xmm0,0x28(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd 0x8(%rsi),%xmm0
  movsd  %xmm0,0x30(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd 0xc(%rsi),%xmm0
  movsd  %xmm0,0x38(%rsp)
  movsd  D128(%rip),%xmm0
  movsd  %xmm0,0x40(%rsp)
  movq   $0x0,0x58(%rsp)
  movq   $0x0,0x50(%rsp)
  movq   $0x0,0x48(%rsp)
  pxor   %xmm2,%xmm2
  cvtss2sd 0x10(%rsi),%xmm2
  movsd  %xmm2,0x60(%rsp)
  pxor   %xmm3,%xmm3
  cvtss2sd 0x14(%rsi),%xmm3
  movsd  %xmm3,0x68(%rsp)
  pxor   %xmm3,%xmm3
  cvtss2sd 0x18(%rsi),%xmm3
  movsd  %xmm3,0x70(%rsp)
  pxor   %xmm3,%xmm3
  cvtss2sd 0x1c(%rsi),%xmm3
  movsd  %xmm3,0x78(%rsp)
  movsd  %xmm0,0x88(%rsp)
  movq   $0x0,0x98(%rsp)
  movq   $0x0,0x90(%rsp)
  movq   $0x0,0x80(%rsp)
  pxor   %xmm3,%xmm3
  cvtss2sd 0x20(%rsi),%xmm3
  movsd  %xmm3,0xa0(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x24(%rsi),%xmm4
  movsd  %xmm4,0xa8(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x28(%rsi),%xmm4
  movsd  %xmm4,0xb0(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x2c(%rsi),%xmm4
  movsd  %xmm4,0xb8(%rsp)
  movsd  %xmm0,0xd0(%rsp)
  movq   $0x0,0xd8(%rsp)
  movq   $0x0,0xc8(%rsp)
  movq   $0x0,0xc0(%rsp)
  pxor   %xmm7,%xmm7
  cvtss2sd 0x30(%rsi),%xmm7
  movsd  %xmm7,0xe0(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x34(%rsi),%xmm4
  movsd  %xmm4,0xe8(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x38(%rsi),%xmm4
  movsd  %xmm4,0xf0(%rsp)
  pxor   %xmm4,%xmm4
  cvtss2sd 0x3c(%rsi),%xmm4
  movsd  %xmm4,0xf8(%rsp)
  movsd  %xmm0,0x118(%rsp)
  movq   $0x0,0x110(%rsp)
  movq   $0x0,0x108(%rsp)
  movq   $0x0,0x100(%rsp)
  movq   D3(%rip),%xmm0
  movapd %xmm7,%xmm4
  andpd  %xmm0,%xmm4
  andpd  %xmm3,%xmm0
  comisd %xmm0,%xmm4
  ja     L160
  movq   %xmm3,%r15
  lea    0xe0(%rsp),%rbp
  lea    0xa0(%rsp),%r13
L204:
  movq   D3(%rip),%xmm0
  movq   %r15,%xmm3
  andpd  %xmm0,%xmm3
  andpd  %xmm2,%xmm0
  lea    0x60(%rsp),%rbx
  comisd %xmm0,%xmm3
  ja     L407
  movq   %xmm2,%r15
  mov    %r13,%rbx
  lea    0x60(%rsp),%r13
L407:
  movq   D3(%rip),%xmm0
  movq   %r15,%xmm2
  andpd  %xmm0,%xmm2
  andpd  %xmm1,%xmm0
  lea    0x20(%rsp),%r12
  comisd %xmm0,%xmm2
  ja     L169
  movq   %xmm1,%r15
  mov    %r13,%r12
  lea    0x20(%rsp),%r13
L169:
  movq   %r15,%xmm6
  ucomisd D77(%rip),%xmm6
  jp     L367
  je     L40
L367:
  movsd  (%r12),%xmm2
  movq   %r15,%xmm7
  divsd  %xmm7,%xmm2
  movsd  (%rbx),%xmm1
  divsd  %xmm7,%xmm1
  movsd  0x0(%rbp),%xmm0
  divsd  %xmm7,%xmm0
  movsd  0x8(%r13),%xmm3
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x8(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x8(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x8(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x8(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x8(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x8(%rbp)
  movsd  0x10(%r13),%xmm3
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x10(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x10(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x10(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x10(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x10(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x10(%rbp)
  movsd  0x18(%r13),%xmm3
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x18(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x18(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x18(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x18(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x18(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x18(%rbp)
  movsd  0x20(%r13),%xmm3
  ucomisd D77(%rip),%xmm3
  jp     L21
  jne    L21
L107:
  movsd  0x28(%r13),%xmm3
  ucomisd D77(%rip),%xmm3
  jp     L318
  jne    L318
L23:
  movsd  0x30(%r13),%xmm3
  ucomisd D77(%rip),%xmm3
  jp     L281
  jne    L281
L91:
  movsd  0x38(%r13),%xmm3
  ucomisd D77(%rip),%xmm3
  jp     L296
  jne    L296
L74:
  movsd  0x8(%rbp),%xmm0
  movq   D3(%rip),%xmm2
  movapd %xmm0,%xmm1
  andpd  %xmm2,%xmm1
  movsd  0x8(%rbx),%xmm0
  andpd  %xmm2,%xmm0
  comisd %xmm0,%xmm1
  jbe    L22
  mov    %rbx,%rax
  mov    %rbp,%rbx
  mov    %rax,%rbp
L22:
  movsd  0x8(%rbx),%xmm0
  movq   D3(%rip),%xmm2
  movapd %xmm0,%xmm1
  andpd  %xmm2,%xmm1
  movsd  0x8(%r12),%xmm0
  andpd  %xmm2,%xmm0
  comisd %xmm0,%xmm1
  jbe    L290
  mov    %r12,%rax
  mov    %rbx,%r12
  mov    %rax,%rbx
L290:
  mov    0x8(%r12),%r15
  movq   %r15,%xmm6
  ucomisd D77(%rip),%xmm6
  jp     L238
  je     L322
L238:
  movsd  0x8(%rbx),%xmm0
  movq   %r15,%xmm7
  divsd  %xmm7,%xmm0
  movsd  0x8(%rbp),%xmm1
  divsd  %xmm7,%xmm1
  movapd %xmm0,%xmm3
  mulsd  0x10(%r12),%xmm3
  movsd  0x10(%rbx),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x10(%rbx)
  movapd %xmm1,%xmm3
  mulsd  0x10(%r12),%xmm3
  movsd  0x10(%rbp),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x10(%rbp)
  movapd %xmm0,%xmm3
  mulsd  0x18(%r12),%xmm3
  movsd  0x18(%rbx),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x18(%rbx)
  movapd %xmm1,%xmm3
  mulsd  0x18(%r12),%xmm3
  movsd  0x18(%rbp),%xmm2
  subsd  %xmm3,%xmm2
  movsd  %xmm2,0x18(%rbp)
  movsd  0x20(%r12),%xmm2
  ucomisd D77(%rip),%xmm2
  jp     L413
  jne    L413
L12:
  movsd  0x28(%r12),%xmm2
  ucomisd D77(%rip),%xmm2
  jp     L113
  jne    L113
L210:
  movsd  0x30(%r12),%xmm2
  ucomisd D77(%rip),%xmm2
  jp     L108
  jne    L108
L53:
  movsd  0x38(%r12),%xmm2
  ucomisd D77(%rip),%xmm2
  jp     L82
  jne    L82
L100:
  movsd  0x10(%rbp),%xmm0
  movq   D3(%rip),%xmm2
  movapd %xmm0,%xmm1
  andpd  %xmm2,%xmm1
  movsd  0x10(%rbx),%xmm0
  andpd  %xmm2,%xmm0
  comisd %xmm0,%xmm1
  jbe    L127
  mov    %rbx,%rax
  mov    %rbp,%rbx
  mov    %rax,%rbp
L127:
  mov    0x10(%rbx),%r15
  movq   %r15,%xmm7
  ucomisd D77(%rip),%xmm7
  jp     L15
  je     L312
L15:
  movsd  0x10(%rbp),%xmm0
  movq   %r15,%xmm6
  divsd  %xmm6,%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x18(%rbx),%xmm1
  movsd  0x18(%rbp),%xmm2
  subsd  %xmm1,%xmm2
  movapd %xmm2,%xmm7
  movsd  %xmm2,(%rsp)
  movsd  %xmm2,0x18(%rbp)
  movapd %xmm0,%xmm1
  mulsd  0x20(%rbx),%xmm1
  movsd  0x20(%rbp),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x8(%rsp)
  movsd  %xmm2,0x20(%rbp)
  movapd %xmm0,%xmm1
  mulsd  0x28(%rbx),%xmm1
  movsd  0x28(%rbp),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x10(%rsp)
  movsd  %xmm2,0x28(%rbp)
  movapd %xmm0,%xmm1
  mulsd  0x30(%rbx),%xmm1
  movsd  0x30(%rbp),%xmm2
  subsd  %xmm1,%xmm2
  movq   %xmm2,%r15
  movsd  %xmm2,0x30(%rbp)
  mulsd  0x38(%rbx),%xmm0
  movsd  0x38(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsp)
  ucomisd D77(%rip),%xmm7
  jp     L36
  je     L310
L36:
  movsd  D128(%rip),%xmm4
  movapd %xmm4,%xmm1
  divsd  (%rsp),%xmm1
  movsd  0x8(%rsp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,0x20(%rbp)
  movsd  0x10(%rsp),%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,0x28(%rbp)
  movq   %r15,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,0x30(%rbp)
  mulsd  0x18(%rsp),%xmm1
  movsd  %xmm1,0x38(%rbp)
  movsd  0x18(%rbx),%xmm1
  movapd %xmm4,%xmm3
  divsd  0x10(%rbx),%xmm3
  mulsd  %xmm1,%xmm0
  movsd  0x20(%rbx),%xmm2
  subsd  %xmm0,%xmm2
  mulsd  %xmm3,%xmm2
  movsd  %xmm2,0x20(%rbx)
  movapd %xmm1,%xmm2
  mulsd  0x28(%rbp),%xmm2
  movsd  0x28(%rbx),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x28(%rbx)
  movapd %xmm1,%xmm2
  mulsd  0x30(%rbp),%xmm2
  movsd  0x30(%rbx),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x30(%rbx)
  mulsd  0x38(%rbp),%xmm1
  movsd  0x38(%rbx),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  %xmm3,%xmm0
  movsd  %xmm0,0x38(%rbx)
  movsd  0x18(%r12),%xmm0
  movapd %xmm0,%xmm2
  mulsd  0x20(%rbp),%xmm2
  movsd  0x20(%r12),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r12)
  movapd %xmm0,%xmm2
  mulsd  0x28(%rbp),%xmm2
  movsd  0x28(%r12),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r12)
  movapd %xmm0,%xmm2
  mulsd  0x30(%rbp),%xmm2
  movsd  0x30(%r12),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%r12)
  mulsd  0x38(%rbp),%xmm0
  movsd  0x38(%r12),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%r12)
  movsd  0x18(%r13),%xmm0
  movapd %xmm0,%xmm2
  mulsd  0x20(%rbp),%xmm2
  movsd  0x20(%r13),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r13)
  movapd %xmm0,%xmm2
  mulsd  0x28(%rbp),%xmm2
  movsd  0x28(%r13),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r13)
  movapd %xmm0,%xmm2
  mulsd  0x30(%rbp),%xmm2
  movsd  0x30(%r13),%xmm1
  subsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%r13)
  mulsd  0x38(%rbp),%xmm0
  movsd  0x38(%r13),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%r13)
  movsd  0x10(%r12),%xmm0
  movapd %xmm4,%xmm2
  divsd  0x8(%r12),%xmm2
  movapd %xmm0,%xmm3
  mulsd  0x20(%rbx),%xmm3
  movsd  0x20(%r12),%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x20(%r12)
  movapd %xmm0,%xmm3
  mulsd  0x28(%rbx),%xmm3
  movsd  0x28(%r12),%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x28(%r12)
  movapd %xmm0,%xmm3
  mulsd  0x30(%rbx),%xmm3
  movsd  0x30(%r12),%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x30(%r12)
  mulsd  0x38(%rbx),%xmm0
  movsd  0x38(%r12),%xmm1
  subsd  %xmm0,%xmm1
  mulsd  %xmm2,%xmm1
  movsd  %xmm1,0x38(%r12)
  movsd  0x10(%r13),%xmm0
  movapd %xmm0,%xmm1
  mulsd  0x20(%rbx),%xmm1
  movsd  0x20(%r13),%xmm3
  subsd  %xmm1,%xmm3
  movsd  %xmm3,0x20(%r13)
  movapd %xmm0,%xmm1
  mulsd  0x28(%rbx),%xmm1
  movsd  0x28(%r13),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x28(%r13)
  movapd %xmm0,%xmm5
  mulsd  0x30(%rbx),%xmm5
  movsd  0x30(%r13),%xmm1
  subsd  %xmm5,%xmm1
  movsd  %xmm1,0x30(%r13)
  movapd %xmm0,%xmm5
  mulsd  0x38(%rbx),%xmm5
  movsd  0x38(%r13),%xmm0
  subsd  %xmm5,%xmm0
  movsd  %xmm0,0x38(%r13)
  movsd  0x8(%r13),%xmm5
  divsd  0x0(%r13),%xmm4
  movapd %xmm5,%xmm6
  mulsd  0x20(%r12),%xmm6
  subsd  %xmm6,%xmm3
  mulsd  %xmm4,%xmm3
  movsd  %xmm3,0x20(%r13)
  movapd %xmm5,%xmm6
  mulsd  0x28(%r12),%xmm6
  subsd  %xmm6,%xmm2
  mulsd  %xmm4,%xmm2
  movsd  %xmm2,0x28(%r13)
  movapd %xmm5,%xmm6
  mulsd  0x30(%r12),%xmm6
  subsd  %xmm6,%xmm1
  mulsd  %xmm4,%xmm1
  movsd  %xmm1,0x30(%r13)
  mulsd  0x38(%r12),%xmm5
  subsd  %xmm5,%xmm0
  mulsd  %xmm4,%xmm0
  movsd  %xmm0,0x38(%r13)
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,(%r14)
  cvtsd2ss %xmm2,%xmm2
  movss  %xmm2,0x4(%r14)
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x8(%r14)
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,0xc(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x20(%r12),%xmm0
  movss  %xmm0,0x10(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x28(%r12),%xmm0
  movss  %xmm0,0x14(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x30(%r12),%xmm0
  movss  %xmm0,0x18(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x38(%r12),%xmm0
  movss  %xmm0,0x1c(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x20(%rbx),%xmm0
  movss  %xmm0,0x20(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x28(%rbx),%xmm0
  movss  %xmm0,0x24(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x30(%rbx),%xmm0
  movss  %xmm0,0x28(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x38(%rbx),%xmm0
  movss  %xmm0,0x2c(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x20(%rbp),%xmm0
  movss  %xmm0,0x30(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x28(%rbp),%xmm0
  movss  %xmm0,0x34(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x30(%rbp),%xmm0
  movss  %xmm0,0x38(%r14)
  pxor   %xmm0,%xmm0
  cvtsd2ss 0x38(%rbp),%xmm0
  movss  %xmm0,0x3c(%r14)
  mov    0x128(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L60
  add    $0x138,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L160:
  movq   %xmm7,%r15
  lea    0xa0(%rsp),%rbp
  lea    0xe0(%rsp),%r13
  jmp    L204
L40:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <assert@plt>
  jmp    L367
L21:
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x20(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x20(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x20(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x20(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x20(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x20(%rbp)
  jmp    L107
L318:
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x28(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x28(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x28(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x28(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x28(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x28(%rbp)
  jmp    L23
L281:
  movapd %xmm2,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x30(%r12),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x30(%r12)
  movapd %xmm1,%xmm5
  mulsd  %xmm3,%xmm5
  movsd  0x30(%rbx),%xmm4
  subsd  %xmm5,%xmm4
  movsd  %xmm4,0x30(%rbx)
  mulsd  %xmm0,%xmm3
  movsd  0x30(%rbp),%xmm4
  subsd  %xmm3,%xmm4
  movsd  %xmm4,0x30(%rbp)
  jmp    L91
L296:
  mulsd  %xmm3,%xmm2
  movsd  0x38(%r12),%xmm4
  subsd  %xmm2,%xmm4
  movsd  %xmm4,0x38(%r12)
  mulsd  %xmm3,%xmm1
  movsd  0x38(%rbx),%xmm2
  subsd  %xmm1,%xmm2
  movsd  %xmm2,0x38(%rbx)
  mulsd  %xmm3,%xmm0
  movsd  0x38(%rbp),%xmm1
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x38(%rbp)
  jmp    L74
L322:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <assert@plt>
  jmp    L238
L413:
  movapd %xmm0,%xmm4
  mulsd  %xmm2,%xmm4
  movsd  0x20(%rbx),%xmm3
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x20(%rbx)
  mulsd  %xmm1,%xmm2
  movsd  0x20(%rbp),%xmm3
  subsd  %xmm2,%xmm3
  movsd  %xmm3,0x20(%rbp)
  jmp    L12
L113:
  movapd %xmm0,%xmm4
  mulsd  %xmm2,%xmm4
  movsd  0x28(%rbx),%xmm3
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x28(%rbx)
  mulsd  %xmm1,%xmm2
  movsd  0x28(%rbp),%xmm3
  subsd  %xmm2,%xmm3
  movsd  %xmm3,0x28(%rbp)
  jmp    L210
L108:
  movapd %xmm0,%xmm4
  mulsd  %xmm2,%xmm4
  movsd  0x30(%rbx),%xmm3
  subsd  %xmm4,%xmm3
  movsd  %xmm3,0x30(%rbx)
  mulsd  %xmm1,%xmm2
  movsd  0x30(%rbp),%xmm3
  subsd  %xmm2,%xmm3
  movsd  %xmm3,0x30(%rbp)
  jmp    L53
L82:
  mulsd  %xmm2,%xmm0
  movsd  0x38(%rbx),%xmm3
  subsd  %xmm0,%xmm3
  movsd  %xmm3,0x38(%rbx)
  mulsd  %xmm2,%xmm1
  movsd  0x38(%rbp),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,0x38(%rbp)
  jmp    L100
L312:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <assert@plt>
  jmp    L15
L310:
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <assert@plt>
  jmp    L36
L60:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: label: D128
data_type: f64
name: read_data
arguments: label: D3
data_type: qword
name: read_data
arguments: label: D77
data_type: f64

tool: D128: 1

tool: D3: 9223372036854775807

tool: D77: 0

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];
}
```