user: 下面的汇编指令对应的C源代码是什么：

```asm
<lu_invert>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x60,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %esi,-0x5c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  cmpl   $0xa,-0x5c(%rbp)
  jg     L79
  lea    -0x30(%rbp),%rax
  mov    %rax,-0x40(%rbp)
  jmp    L61
L79:
  mov    -0x5c(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <ivector@plt>
  mov    %rax,-0x40(%rbp)
L61:
  lea    -0x48(%rbp),%rcx
  mov    -0x40(%rbp),%rdx
  mov    -0x5c(%rbp),%esi
  mov    -0x58(%rbp),%rax
  mov    %rax,%rdi
  call   <lu_decomp@plt>
  test   %rax,%rax
  je     L66
  lea    -0x30(%rbp),%rax
  cmp    %rax,-0x40(%rbp)
  je     L22
  mov    -0x5c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <free_ivector@plt>
L22:
  mov    $0x1,%eax
  jmp    L95
L66:
  mov    -0x5c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x5c(%rbp),%eax
  sub    $0x1,%eax
  mov    %edx,%ecx
  mov    $0x0,%edx
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <dmatrix@plt>
  mov    %rax,-0x38(%rbp)
  movl   $0x0,-0x50(%rbp)
  jmp    L143
L98:
  movl   $0x0,-0x4c(%rbp)
  jmp    L14
L94:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rax,%rdx
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x38(%rbp),%rax
  add    %rcx,%rax
  mov    (%rax),%rcx
  mov    -0x4c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x4c(%rbp)
L14:
  mov    -0x4c(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L94
  addl   $0x1,-0x50(%rbp)
L143:
  mov    -0x50(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L98
  movl   $0x0,-0x50(%rbp)
  jmp    L26
L64:
  movl   $0x0,-0x4c(%rbp)
  jmp    L19
L115:
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x4c(%rbp)
L19:
  mov    -0x4c(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L115
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x50(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  movsd  D2(%rip),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x50(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rcx
  mov    -0x40(%rbp),%rdx
  mov    -0x5c(%rbp),%esi
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <lu_backsub@plt>
  addl   $0x1,-0x50(%rbp)
L26:
  mov    -0x50(%rbp),%eax
  cmp    -0x5c(%rbp),%eax
  jl     L64
  mov    -0x5c(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x5c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <free_dmatrix@plt>
  lea    -0x30(%rbp),%rax
  cmp    %rax,-0x40(%rbp)
  je     L39
  mov    -0x5c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <free_ivector@plt>
L39:
  mov    $0x0,%eax
L95:
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L127
  call   <__stack_chk_fail@plt>
L127:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D2
type_guessed: f64

tool: D2: 1

assistant: ```c
int lu_invert(double **a, int n) {
  int i, j;
  double rip;
  int *pivx, PIVX[10];
  double **y;
  if (n <= 10)
    pivx = PIVX;
  else
    pivx = ivector(0, n - 1);
  if (lu_decomp(a, n, pivx, &rip)) {
    if (pivx != PIVX)
      free_ivector(pivx, 0, n - 1);
    return 1;
  }
  y = dmatrix(0, n - 1, 0, n - 1);
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      y[i][j] = a[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++)
      a[i][j] = 0.0;
    a[i][i] = 1.0;
    lu_backsub(y, n, pivx, a[i]);
  }
  free_dmatrix(y, 0, n - 1, 0, n - 1);
  if (pivx != PIVX)
    free_ivector(pivx, 0, n - 1);
  return 0;
}
```