user: 请将以下的汇编代码转换成C语言代码：

```asm
<solve_axb_cholesky>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x24(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    %rdx,-0x38(%rbp)
  mov    %rcx,-0x40(%rbp)
  mov    -0x24(%rbp),%eax
  movslq %eax,%rdx
  sub    $0x1,%rdx
  mov    %rdx,-0x8(%rbp)
  movslq %eax,%rdx
  mov    %rdx,%r8
  mov    $0x0,%r9d
  movl   $0x0,-0x18(%rbp)
  jmp    L57
L10:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movl   $0x0,-0x14(%rbp)
  jmp    L61
L38:
  mov    -0x18(%rbp),%edx
  movslq %edx,%rcx
  movslq %eax,%rdx
  imul   %rcx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x30(%rbp),%rdx
  add    %rdx,%rcx
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  movsd  (%rcx,%rdx,8),%xmm1
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  addl   $0x1,-0x14(%rbp)
L61:
  mov    -0x14(%rbp),%edx
  cmp    -0x18(%rbp),%edx
  jl     L38
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x40(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  subsd  -0x10(%rbp),%xmm0
  mov    -0x18(%rbp),%edx
  movslq %edx,%rcx
  movslq %eax,%rdx
  imul   %rcx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x30(%rbp),%rdx
  add    %rdx,%rcx
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  movsd  (%rcx,%rdx,8),%xmm1
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  addl   $0x1,-0x18(%rbp)
L57:
  mov    -0x18(%rbp),%edx
  cmp    -0x24(%rbp),%edx
  jl     L10
  mov    -0x24(%rbp),%edx
  sub    $0x1,%edx
  mov    %edx,-0x18(%rbp)
  jmp    L58
L34:
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  mov    -0x18(%rbp),%edx
  add    $0x1,%edx
  mov    %edx,-0x14(%rbp)
  jmp    L74
L78:
  mov    -0x14(%rbp),%edx
  movslq %edx,%rcx
  movslq %eax,%rdx
  imul   %rcx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x30(%rbp),%rdx
  add    %rdx,%rcx
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  movsd  (%rcx,%rdx,8),%xmm1
  mov    -0x14(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x10(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  addl   $0x1,-0x14(%rbp)
L74:
  mov    -0x14(%rbp),%edx
  cmp    -0x24(%rbp),%edx
  jl     L78
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  movsd  (%rdx),%xmm0
  subsd  -0x10(%rbp),%xmm0
  mov    -0x18(%rbp),%edx
  movslq %edx,%rcx
  movslq %eax,%rdx
  imul   %rcx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x30(%rbp),%rdx
  add    %rdx,%rcx
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  movsd  (%rcx,%rdx,8),%xmm1
  mov    -0x18(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x38(%rbp),%rdx
  add    %rcx,%rdx
  divsd  %xmm1,%xmm0
  movsd  %xmm0,(%rdx)
  subl   $0x1,-0x18(%rbp)
L58:
  cmpl   $0x0,-0x18(%rbp)
  jns    L34
  nop
  nop
  pop    %rbp
  ret
```

assistant: ```c
void solve_axb_cholesky(int n, double l[n][n], double x[n], double b[n]) {
  int i, j;
  double sum;
  for (i = 0; i < n; i++) {
    sum = 0;
    for (j = 0; j < i; j++)
      sum += l[i][j] * x[j];
    x[i] = (b[i] - sum) / l[i][i];
  }
  for (i = n - 1; i >= 0; i--) {
    sum = 0;
    for (j = i + 1; j < n; j++)
      sum += l[j][i] * x[j];
    x[i] = (x[i] - sum) / l[i][i];
  }
}
```