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

```asm
<mat4_getRotation>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  movss  (%rsi),%xmm3
  movss  0x14(%rsi),%xmm1
  movss  0x28(%rsi),%xmm2
  movaps %xmm3,%xmm0
  addss  %xmm1,%xmm0
  addss  %xmm2,%xmm0
  comiss D19(%rip),%xmm0
  ja     L13
  comiss %xmm1,%xmm3
  jbe    L56
  comiss %xmm2,%xmm3
  ja     L49
L56:
  comiss %xmm2,%xmm1
  jbe    L8
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  addsd  D19(%rip),%xmm0
  cvtss2sd %xmm3,%xmm3
  subsd  %xmm3,%xmm0
  cvtss2sd %xmm2,%xmm2
  subsd  %xmm2,%xmm0
  call   <sqrtf@plt>
  add    %eax,%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movss  0x20(%rbx),%xmm0
  subss  0x8(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0xc(%rbp)
  movss  0x4(%rbx),%xmm0
  addss  0x10(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0x0(%rbp)
  movaps %xmm1,%xmm0
  mulss  D13(%rip),%xmm0
  movss  %xmm0,0x4(%rbp)
  movss  0x18(%rbx),%xmm0
  addss  0x24(%rbx),%xmm0
  divss  %xmm1,%xmm0
  jmp    L37
L13:
  cvtss2sd %xmm0,%xmm0
  addsd  D19(%rip),%xmm0
  call   <sqrtf@plt>
  add    %eax,%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movaps %xmm1,%xmm0
  mulss  D13(%rip),%xmm0
  movss  %xmm0,0xc(%rbp)
  movss  0x18(%rbx),%xmm0
  subss  0x24(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0x0(%rbp)
  movss  0x20(%rbx),%xmm0
  subss  0x8(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0x4(%rbp)
  movss  0x4(%rbx),%xmm0
  subss  0x10(%rbx),%xmm0
  divss  %xmm1,%xmm0
L37:
  movss  %xmm0,0x8(%rbp)
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L49:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm3,%xmm0
  addsd  D19(%rip),%xmm0
  cvtss2sd %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  cvtss2sd %xmm2,%xmm2
  subsd  %xmm2,%xmm0
  call   <sqrtf@plt>
  add    %eax,%eax
  pxor   %xmm1,%xmm1
  cvtsi2ss %eax,%xmm1
  movss  0x18(%rbx),%xmm0
  subss  0x24(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0xc(%rbp)
  movaps %xmm1,%xmm0
  mulss  D13(%rip),%xmm0
  movss  %xmm0,0x0(%rbp)
  movss  0x4(%rbx),%xmm0
  addss  0x10(%rbx),%xmm0
  divss  %xmm1,%xmm0
  movss  %xmm0,0x4(%rbp)
  movss  0x20(%rbx),%xmm0
  addss  0x8(%rbx),%xmm0
  divss  %xmm1,%xmm0
  jmp    L37
L8:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm2,%xmm0
  addsd  D19(%rip),%xmm0
  cvtss2sd %xmm3,%xmm3
  subsd  %xmm3,%xmm0
  cvtss2sd %xmm1,%xmm1
  subsd  %xmm1,%xmm0
  call   <sqrtf@plt>
  add    %eax,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  0x4(%rbx),%xmm1
  subss  0x10(%rbx),%xmm1
  divss  %xmm0,%xmm1
  movss  %xmm1,0xc(%rbp)
  movss  0x20(%rbx),%xmm1
  addss  0x8(%rbx),%xmm1
  divss  %xmm0,%xmm1
  movss  %xmm1,0x0(%rbp)
  movss  0x18(%rbx),%xmm1
  addss  0x24(%rbx),%xmm1
  divss  %xmm0,%xmm1
  movss  %xmm1,0x4(%rbp)
  mulss  D13(%rip),%xmm0
  jmp    L37
```

tool_calls: name: read_data
arguments: label: D19
type_infered: f64
name: read_data
arguments: label: D13
type_infered: f32

tool: D19: 1

tool: D13: 0.25

assistant: ```c
void mat4_getRotation(float *dst, float *mat) {
  float trace = mat[0] + mat[5] + mat[10];
  float S = 0;
  if (trace > 0) {
    S = sqrtf(trace + 1.0) * 2;
    dst[3] = 0.25 * S;
    dst[0] = (mat[6] - mat[9]) / S;
    dst[1] = (mat[8] - mat[2]) / S;
    dst[2] = (mat[1] - mat[4]) / S;
  } else if ((mat[0] > mat[5]) && (mat[0] > mat[10])) {
    S = sqrtf(1.0 + mat[0] - mat[5] - mat[10]) * 2;
    dst[3] = (mat[6] - mat[9]) / S;
    dst[0] = 0.25 * S;
    dst[1] = (mat[1] + mat[4]) / S;
    dst[2] = (mat[8] + mat[2]) / S;
  } else if (mat[5] > mat[10]) {
    S = sqrtf(1.0 + mat[5] - mat[0] - mat[10]) * 2;
    dst[3] = (mat[8] - mat[2]) / S;
    dst[0] = (mat[1] + mat[4]) / S;
    dst[1] = 0.25 * S;
    dst[2] = (mat[6] + mat[9]) / S;
  } else {
    S = sqrtf(1.0 + mat[10] - mat[0] - mat[5]) * 2;
    dst[3] = (mat[1] - mat[4]) / S;
    dst[0] = (mat[8] + mat[2]) / S;
    dst[1] = (mat[6] + mat[9]) / S;
    dst[2] = 0.25 * S;
  }
}
```