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

```asm
<matrixInverse3by3_float>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  movss  D3(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x8,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  D3(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x10,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x14,%rax
  movss  D3(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  subss  %xmm1,%xmm0
  mov    -0x10(%rbp),%rax
  add    $0x1c,%rax
  movss  D3(%rip),%xmm1
  xorps  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  movss  (%rax),%xmm0
  mulss  %xmm1,%xmm0
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm2
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm1
  mulss  %xmm2,%xmm1
  mov    -0x10(%rbp),%rax
  add    $0x20,%rax
  subss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm1
  mov    -0x10(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0xc,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm0,%xmm1
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  movss  (%rax),%xmm2
  mov    -0x10(%rbp),%rax
  add    $0x18,%rax
  movss  (%rax),%xmm0
  mulss  %xmm2,%xmm0
  addss  %xmm1,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D3
type_infered: byte[4]

tool: {"D3": [0x00,0x00,0x00,0x80]}

assistant: ```c
float matrixInverse3by3_float(float *A, float *inverse) {
  inverse[0] = (A[4] * A[8] - A[7] * A[5]);
  inverse[1] = -(A[1] * A[8] - A[7] * A[2]);
  inverse[2] = (A[1] * A[5] - A[4] * A[2]);
  inverse[3] = -(A[3] * A[8] - A[6] * A[5]);
  inverse[4] = (A[0] * A[8] - A[6] * A[2]);
  inverse[5] = -(A[0] * A[5] - A[3] * A[2]);
  inverse[6] = (A[3] * A[7] - A[6] * A[4]);
  inverse[7] = -(A[0] * A[7] - A[6] * A[1]);
  inverse[8] = (A[0] * A[4] - A[3] * A[1]);
  return (A[0] * inverse[0] + A[1] * inverse[3] + A[2] * inverse[6]);
}
```