user: 这段汇编代码用C语言表示是什么样的:

```asm
<gaussj>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x2d0,%rsp
  mov    %edi,-0x2b4(%rbp)
  mov    %rsi,-0x2c0(%rbp)
  mov    %edx,-0x2b8(%rbp)
  mov    %rcx,-0x2c8(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x2a0(%rbp)
  jmp    L360
L270:
  mov    -0x2a0(%rbp),%eax
  cltq
  movl   $0x0,-0x270(%rbp,%rax,4)
  addl   $0x1,-0x2a0(%rbp)
L360:
  mov    -0x2a0(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L270
  movl   $0x0,-0x2a4(%rbp)
  jmp    L72
L11:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x288(%rbp)
  movl   $0x0,-0x2a0(%rbp)
  jmp    L133
L122:
  mov    -0x2a0(%rbp),%eax
  cltq
  mov    -0x270(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  je     L239
  movl   $0x0,-0x29c(%rbp)
  jmp    L190
L187:
  mov    -0x29c(%rbp),%eax
  cltq
  mov    -0x270(%rbp,%rax,4),%eax
  test   %eax,%eax
  jne    L324
  mov    -0x29c(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2a0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D57(%rip),%xmm1
  andpd  %xmm1,%xmm0
  comisd -0x288(%rbp),%xmm0
  jb     L174
  mov    -0x29c(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x2a0(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movq   D57(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x288(%rbp)
  mov    -0x2a0(%rbp),%eax
  mov    %eax,-0x28c(%rbp)
  mov    -0x29c(%rbp),%eax
  mov    %eax,-0x290(%rbp)
  jmp    L174
L324:
  mov    -0x29c(%rbp),%eax
  cltq
  mov    -0x270(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  jle    L174
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x63,%edi
  call   <exit@plt>
L174:
  addl   $0x1,-0x29c(%rbp)
L190:
  mov    -0x29c(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L187
L239:
  addl   $0x1,-0x2a0(%rbp)
L133:
  mov    -0x2a0(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L122
  mov    -0x290(%rbp),%eax
  cltq
  mov    -0x270(%rbp,%rax,4),%eax
  lea    0x1(%rax),%edx
  mov    -0x290(%rbp),%eax
  cltq
  mov    %edx,-0x270(%rbp,%rax,4)
  mov    -0x28c(%rbp),%eax
  cmp    -0x290(%rbp),%eax
  je     L113
  movl   $0x0,-0x298(%rbp)
  jmp    L97
L208:
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x28c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x28c(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x2c0(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L97:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L208
  movl   $0x0,-0x298(%rbp)
  jmp    L186
L248:
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x28c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rax,%rdx
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x28c(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x2c8(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L186:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b8(%rbp),%eax
  jl     L248
L113:
  mov    -0x2a4(%rbp),%eax
  cltq
  mov    -0x28c(%rbp),%edx
  mov    %edx,-0x1a0(%rbp,%rax,4)
  mov    -0x2a4(%rbp),%eax
  cltq
  mov    -0x290(%rbp),%edx
  mov    %edx,-0xd0(%rbp,%rax,4)
  mov    -0x2b4(%rbp),%eax
  imul   -0x290(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L326
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L326
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x63,%edi
  call   <exit@plt>
L326:
  mov    -0x290(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D41(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x278(%rbp)
  mov    -0x290(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  D41(%rip),%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x298(%rbp)
  jmp    L135
L313:
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x278(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L135:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L313
  movl   $0x0,-0x298(%rbp)
  jmp    L119
L179:
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  mulsd  -0x278(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L119:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b8(%rbp),%eax
  jl     L179
  movl   $0x0,-0x294(%rbp)
  jmp    L36
L54:
  mov    -0x294(%rbp),%eax
  cmp    -0x290(%rbp),%eax
  je     L295
  mov    -0x290(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x290(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  pxor   %xmm0,%xmm0
  movsd  %xmm0,(%rax)
  movl   $0x0,-0x298(%rbp)
  jmp    L321
L148:
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  -0x280(%rbp),%xmm1
  mov    -0x298(%rbp),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L321:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L148
  movl   $0x0,-0x298(%rbp)
  jmp    L308
L220:
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x290(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  mulsd  -0x280(%rbp),%xmm1
  mov    -0x298(%rbp),%eax
  imul   -0x2b8(%rbp),%eax
  mov    %eax,%edx
  mov    -0x294(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c8(%rbp),%rax
  add    %rdx,%rax
  subsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x298(%rbp)
L308:
  mov    -0x298(%rbp),%eax
  cmp    -0x2b8(%rbp),%eax
  jl     L220
L295:
  addl   $0x1,-0x294(%rbp)
L36:
  mov    -0x294(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L54
  addl   $0x1,-0x2a4(%rbp)
L72:
  mov    -0x2a4(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L11
  mov    -0x2b4(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0x298(%rbp)
  jmp    L192
L83:
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%edx
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0xd0(%rbp,%rax,4),%eax
  cmp    %eax,%edx
  je     L167
  movl   $0x0,-0x29c(%rbp)
  jmp    L306
L260:
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x29c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x280(%rbp)
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0xd0(%rbp,%rax,4),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x29c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x29c(%rbp),%eax
  add    %ecx,%eax
  cltq
  lea    0x0(,%rax,8),%rcx
  mov    -0x2c0(%rbp),%rax
  add    %rcx,%rax
  movsd  (%rdx),%xmm0
  movsd  %xmm0,(%rax)
  mov    -0x298(%rbp),%eax
  cltq
  mov    -0xd0(%rbp,%rax,4),%eax
  imul   -0x2b4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x29c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x2c0(%rbp),%rax
  add    %rdx,%rax
  movsd  -0x280(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x29c(%rbp)
L306:
  mov    -0x29c(%rbp),%eax
  cmp    -0x2b4(%rbp),%eax
  jl     L260
L167:
  subl   $0x1,-0x298(%rbp)
L192:
  cmpl   $0x0,-0x298(%rbp)
  jns    L83
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L181
  call   <__stack_chk_fail@plt>
L181:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D57
datatype: qword
name: read_data
arguments: data_label: D1
datatype: string
name: read_data
arguments: data_label: D41
datatype: f64

tool: D57: 9223372036854775807

tool: D1: Error: singular matrix in gaussj


tool: D41: 1

assistant: ```c
void gaussj(int n, double a[], int m, double b[]) {
  int i, j, k, l, ll;
  int icol, irow;
  int ipiv[50], indxr[50], indxc[50];
  double big, dum, pivinv;
  for (j = 0; j < n; ++j)
    ipiv[j] = 0;
  for (i = 0; i < n; ++i) {
    big = 0.0;
    for (j = 0; j < n; ++j) {
      if (ipiv[j] != 1) {
        for (k = 0; k < n; ++k) {
          if (ipiv[k] == 0) {
            if (fabs(a[j + k * n]) >= big) {
              big = fabs(a[j + k * n]);
              irow = j;
              icol = k;
            }
          } else if (ipiv[k] > 1) {
            printf("Error: singular matrix in gaussj\n");
            exit(99);
          }
        }
      }
    }
    ++ipiv[icol];
    if (irow != icol) {
      for (l = 0; l < n; ++l) {
        dum = a[irow + l * n];
        a[irow + l * n] = a[icol + l * n];
        a[icol + l * n] = dum;
      }
      for (l = 0; l < m; ++l) {
        dum = b[irow + l * m];
        b[irow + l * m] = b[icol + l * m];
        b[icol + l * m] = dum;
      }
    }
    indxr[i] = irow;
    indxc[i] = icol;
    if (a[icol + n * icol] == 0.0) {
      printf("Error: singular matrix in gaussj\n");
      exit(99);
    }
    pivinv = 1.0 / a[icol + icol * n];
    a[icol + icol * n] = 1.0;
    for (l = 0; l < n; ++l)
      a[icol + l * n] *= pivinv;
    for (l = 0; l < m; ++l)
      b[icol + l * m] *= pivinv;
    for (ll = 0; ll < n; ++ll) {
      if (ll != icol) {
        dum = a[ll + icol * n];
        a[ll + icol * n] = 0.0;
        for (l = 0; l < n; ++l)
          a[ll + l * n] -= a[icol + l * n] * dum;
        for (l = 0; l < m; ++l)
          b[ll + l * m] -= b[icol + l * m] * dum;
      }
    }
  }
  for (l = (n - 1); l >= 0; --l) {
    if (indxr[l] != indxc[l]) {
      for (k = 0; k < n; ++k) {
        dum = a[k + indxr[l] * n];
        a[k + indxr[l] * n] = a[k + indxc[l] * n];
        a[k + indxc[l] * n] = dum;
      }
    }
  }
}
```