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

```asm
<invers>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  movsd  %xmm0,-0x38(%rbp)
  mov    %rdx,-0x40(%rbp)
  mov    %rcx,-0x48(%rbp)
  mov    %r8,-0x50(%rbp)
  movl   $0x0,-0x20(%rbp)
  jmp    L141
L105:
  movl   $0x0,-0x1c(%rbp)
  jmp    L118
L71:
  mov    -0x20(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jne    L193
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  D6(%rip),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  jmp    L151
L193:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
L151:
  addl   $0x1,-0x1c(%rbp)
L118:
  mov    -0x1c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L71
  addl   $0x1,-0x20(%rbp)
L141:
  mov    -0x20(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L105
  mov    -0x48(%rbp),%rax
  movsd  D6(%rip),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x18(%rbp)
  mov    -0x50(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L229
L226:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movq   D4(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x20(%rbp)
  jmp    L214
L24:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movq   D4(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0x10(%rbp),%xmm0
  jbe    L56
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movq   D4(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x20(%rbp),%eax
  mov    %eax,-0x14(%rbp)
L56:
  addl   $0x1,-0x20(%rbp)
L214:
  mov    -0x20(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L24
  mov    -0x18(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  je     L75
  movl   $0x0,-0x1c(%rbp)
  jmp    L216
L88:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  lea    (%rdx,%rax,1),%rcx
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rcx,%rax,8),%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,(%rdx,%rax,8)
  addl   $0x1,-0x1c(%rbp)
L216:
  mov    -0x1c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L88
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm0
  movq   D5(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mov    -0x48(%rbp),%rax
  movsd  %xmm0,(%rax)
L75:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movq   D4(%rip),%xmm1
  andpd  %xmm0,%xmm1
  movsd  -0x38(%rbp),%xmm0
  comisd %xmm1,%xmm0
  jbe    L159
  mov    -0x50(%rbp),%rax
  movl   $0x1,(%rax)
  jmp    L104
L159:
  mov    -0x48(%rbp),%rax
  movsd  (%rax),%xmm1
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x48(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L98
L135:
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  divsd  -0x8(%rbp),%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  divsd  -0x8(%rbp),%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  addl   $0x1,-0x1c(%rbp)
L98:
  mov    -0x1c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L135
  movl   $0x0,-0x20(%rbp)
  jmp    L174
L198:
  mov    -0x20(%rbp),%eax
  cmp    -0x18(%rbp),%eax
  je     L132
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x18(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movl   $0x0,-0x1c(%rbp)
  jmp    L62
L47:
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  subsd  %xmm1,%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm0
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  (%rdx,%rax,8),%xmm1
  mulsd  -0x8(%rbp),%xmm1
  mov    -0x20(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  shl    $0x4,%rax
  mov    %rax,%rdx
  mov    -0x40(%rbp),%rax
  add    %rax,%rdx
  subsd  %xmm1,%xmm0
  mov    -0x1c(%rbp),%eax
  cltq
  movsd  %xmm0,(%rdx,%rax,8)
  addl   $0x1,-0x1c(%rbp)
L62:
  mov    -0x1c(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L47
L132:
  addl   $0x1,-0x20(%rbp)
L174:
  mov    -0x20(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jl     L198
L104:
  addl   $0x1,-0x18(%rbp)
L229:
  mov    -0x18(%rbp),%eax
  cmp    -0x24(%rbp),%eax
  jge    L215
  mov    -0x50(%rbp),%rax
  mov    (%rax),%eax
  test   %eax,%eax
  je     L226
L215:
  nop
  pop    %rbp
  ret
```

tool_calls: name: disassemble_data
arguments: label: D6
type: f64
name: disassemble_data
arguments: label: D4
type: qword
name: disassemble_data
arguments: label: D5
type: f32[2]

tool: D6: 1

tool: D4: 9223372036854775807

tool: {"D5": [0.0,-0.0]}

assistant: ```c
void invers(int n, double a[10][10], double eps, double b[10][10], double *det_a, int *err) {
  int i, j, k, pozmax;
  double amax, aux;
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++)
      if (i == j)
        b[i][j] = 1.0;
      else
        b[i][j] = 0.0;
  *det_a = 1.0;
  k = 0;
  *err = 0;
  while ((k < n) && (*err == 0)) {
    amax = fabs(a[k][k]);
    pozmax = k;
    for (i = k + 1; i < n; i++)
      if (fabs(a[i][k]) > amax) {
        amax = fabs(a[i][k]);
        pozmax = i;
      };
    if (k != pozmax) {
      for (j = 0; j < n; j++) {
        aux = a[k][j];
        a[k][j] = a[pozmax][j];
        a[pozmax][j] = aux;
        aux = b[k][j];
        b[k][j] = b[pozmax][j];
        b[pozmax][j] = aux;
      };
      *det_a = -*det_a;
    };
    if (fabs(a[k][k]) < eps)
      *err = 1;
    else {
      *det_a = *det_a * a[k][k];
      aux = a[k][k];
      for (j = 0; j < n; j++) {
        a[k][j] = a[k][j] / aux;
        b[k][j] = b[k][j] / aux;
      };
      for (i = 0; i < n; i++)
        if (i != k) {
          aux = a[i][k];
          for (j = 0; j < n; j++) {
            a[i][j] = a[i][j] - a[k][j] * aux;
            b[i][j] = b[i][j] - b[k][j] * aux;
          }
        }
    }
    k++;
  }
}
```