user: What is the c source code of the assembly code below?

```asm
<_matrix_3x3_invert>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x30,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%r12
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  call   <_matrix_3x3_determinant@plt>
  movss  %xmm0,0xc(%rsp)
  ucomiss D12(%rip),%xmm0
  jp     L6
  jne    L6
L26:
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L16
  add    $0x30,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L6:
  movss  0x10(%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x14(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x1c(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x20(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  lea    0x10(%rsp),%rbp
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,(%r12)
  movss  0xc(%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x14(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x18(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x20(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x4(%r12)
  movss  0xc(%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x10(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x18(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x1c(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x8(%r12)
  movss  0x4(%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x8(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x1c(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x20(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0xc(%r12)
  movss  (%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x8(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x18(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x20(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x10(%r12)
  movss  (%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x4(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x18(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x1c(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x14(%r12)
  movss  0x4(%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x8(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0x10(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x14(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x18(%r12)
  movss  (%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x8(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0xc(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x14(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x1c(%r12)
  movss  (%rbx),%xmm0
  movss  %xmm0,0x10(%rsp)
  movss  0x4(%rbx),%xmm0
  movss  %xmm0,0x14(%rsp)
  movss  0xc(%rbx),%xmm0
  movss  %xmm0,0x18(%rsp)
  movss  0x10(%rbx),%xmm0
  movss  %xmm0,0x1c(%rsp)
  mov    %rbp,%rdi
  call   <_matrix_2x2_determinant@plt>
  movss  %xmm0,0x20(%r12)
  movss  D1(%rip),%xmm0
  divss  0xc(%rsp),%xmm0
  mov    %r12,%rdi
  call   <_matrix_3x3_mul_constant@plt>
  jmp    L26
L16:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D12
type_guessed: byte[4]
name: extract_symbolic_data
arguments: data_label: D1
type_guessed: byte[4]

tool: {"D12": [0x00,0x00,0x00,0x00]}

tool: {"D1": [0x00,0x00,0x80,0x3f]}

assistant: ```c
void _matrix_3x3_invert(float m1[3][3], float m2[3][3]) {
  float tmp[2][2];
  float determinant = _matrix_3x3_determinant(m1);
  if (determinant == 0.0f)
    return;
  tmp[0][0] = m1[1][1];
  tmp[0][1] = m1[1][2];
  tmp[1][0] = m1[2][1];
  tmp[1][1] = m1[2][2];
  m2[0][0] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[1][0];
  tmp[0][1] = m1[1][2];
  tmp[1][0] = m1[2][0];
  tmp[1][1] = m1[2][2];
  m2[0][1] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[1][0];
  tmp[0][1] = m1[1][1];
  tmp[1][0] = m1[2][0];
  tmp[1][1] = m1[2][1];
  m2[0][2] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][1];
  tmp[0][1] = m1[0][2];
  tmp[1][0] = m1[2][1];
  tmp[1][1] = m1[2][2];
  m2[1][0] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][0];
  tmp[0][1] = m1[0][2];
  tmp[1][0] = m1[2][0];
  tmp[1][1] = m1[2][2];
  m2[1][1] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][0];
  tmp[0][1] = m1[0][1];
  tmp[1][0] = m1[2][0];
  tmp[1][1] = m1[2][1];
  m2[1][2] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][1];
  tmp[0][1] = m1[0][2];
  tmp[1][0] = m1[1][1];
  tmp[1][1] = m1[1][2];
  m2[2][0] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][0];
  tmp[0][1] = m1[0][2];
  tmp[1][0] = m1[1][0];
  tmp[1][1] = m1[1][2];
  m2[2][1] = _matrix_2x2_determinant(tmp);
  tmp[0][0] = m1[0][0];
  tmp[0][1] = m1[0][1];
  tmp[1][0] = m1[1][0];
  tmp[1][1] = m1[1][1];
  m2[2][2] = _matrix_2x2_determinant(tmp);
  _matrix_3x3_mul_constant(m2, 1.0f / determinant);
}
```