user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<implicit_3Dz>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0xf8,%rsp
  mov    %rdi,-0xa8(%rbp)
  mov    %rsi,-0xb0(%rbp)
  mov    %rdx,-0xb8(%rbp)
  mov    %rcx,-0xc0(%rbp)
  movsd  %xmm0,-0xc8(%rbp)
  movsd  %xmm1,-0xd0(%rbp)
  movsd  %xmm2,-0xd8(%rbp)
  movsd  %xmm3,-0xe0(%rbp)
  movsd  %xmm4,-0xe8(%rbp)
  movsd  %xmm5,-0xf0(%rbp)
  mov    %r8d,-0xf4(%rbp)
  mov    %r9d,-0xf8(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x90(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x88(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x80(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x78(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x70(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x68(%rbp)
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x60(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x58(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x50(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x48(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x40(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%eax
  mov    %eax,%edi
  call   <malloc@plt>
  mov    %rax,-0x38(%rbp)
  mov    -0x90(%rbp),%rdx
  mov    -0xc0(%rbp),%rax
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <compute_dx@plt>
  mov    -0x88(%rbp),%rdx
  mov    -0x90(%rbp),%rax
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <compute_dfactor@plt>
  mov    -0x80(%rbp),%rdx
  mov    -0xc0(%rbp),%rax
  mov    0x10(%rbp),%esi
  mov    %rax,%rdi
  call   <compute_xInt@plt>
  movl   $0x0,-0x94(%rbp)
  jmp    L55
L217:
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x94(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x70(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  movsd  -0xc8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Vfunc@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x94(%rbp)
L55:
  mov    -0x94(%rbp),%eax
  cmp    0x10(%rbp),%eax
  jl     L217
  movl   $0x0,-0x94(%rbp)
  jmp    L187
L132:
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x94(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x68(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  movsd  -0xc8(%rbp),%xmm0
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Vfunc@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x94(%rbp)
L187:
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x94(%rbp)
  jl     L132
  mov    0x10(%rbp),%edi
  call   <tridiag_malloc@plt>
  mov    0x20(%rbp),%eax
  mov    %eax,-0x9c(%rbp)
  jmp    L135
L176:
  movl   $0x0,-0x98(%rbp)
  jmp    L103
L69:
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0xc0(%rbp),%rax
  mov    (%rax),%rax
  movsd  -0xe8(%rbp),%xmm5
  movsd  -0xe0(%rbp),%xmm4
  movsd  -0xd8(%rbp),%xmm3
  movsd  -0xd0(%rbp),%xmm2
  movsd  -0x28(%rbp),%xmm1
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Mfunc3D@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x20(%rbp)
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0xc0(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movsd  -0xe8(%rbp),%xmm5
  movsd  -0xe0(%rbp),%xmm4
  movsd  -0xd8(%rbp),%xmm3
  movsd  -0xd0(%rbp),%xmm2
  movsd  -0x28(%rbp),%xmm1
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Mfunc3D@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0x94(%rbp)
  jmp    L51
L218:
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    -0x94(%rbp),%edx
  movslq %edx,%rdx
  lea    0x0(,%rdx,8),%rcx
  mov    -0x78(%rbp),%rdx
  lea    (%rcx,%rdx,1),%rbx
  movsd  -0xe8(%rbp),%xmm5
  movsd  -0xe0(%rbp),%xmm4
  movsd  -0xd8(%rbp),%xmm3
  movsd  -0xd0(%rbp),%xmm2
  movsd  -0x28(%rbp),%xmm1
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm5,%xmm6
  movapd %xmm4,%xmm5
  movapd %xmm3,%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <Mfunc3D@plt>
  movq   %xmm0,%rax
  mov    %rax,(%rbx)
  addl   $0x1,-0x94(%rbp)
L51:
  mov    0x10(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0x94(%rbp)
  jl     L218
  mov    0x18(%rbp),%edi
  mov    -0x60(%rbp),%rcx
  mov    -0x68(%rbp),%rdx
  mov    -0x78(%rbp),%rsi
  mov    -0x90(%rbp),%rax
  mov    %edi,%r9d
  mov    %rcx,%r8
  mov    0x10(%rbp),%ecx
  mov    %rax,%rdi
  call   <compute_delj@plt>
  mov    -0xf0(%rbp),%rdi
  mov    -0x70(%rbp),%r8
  mov    -0x78(%rbp),%rcx
  mov    -0x60(%rbp),%rdx
  mov    -0x88(%rbp),%rsi
  mov    -0x90(%rbp),%rax
  sub    $0x8,%rsp
  push   -0x48(%rbp)
  push   -0x50(%rbp)
  push   -0x58(%rbp)
  mov    0x10(%rbp),%r9d
  movq   %rdi,%xmm0
  mov    %rax,%rdi
  call   <compute_abc_nobc@plt>
  add    $0x20,%rsp
  movl   $0x0,-0x94(%rbp)
  jmp    L180
L120:
  mov    -0x9c(%rbp),%eax
  imul   -0xf8(%rbp),%eax
  imul   0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  imul   0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x94(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  mov    -0x94(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x40(%rbp),%rax
  add    %rdx,%rax
  divsd  -0xf0(%rbp),%xmm0
  movsd  %xmm0,(%rax)
  addl   $0x1,-0x94(%rbp)
L180:
  mov    -0x94(%rbp),%eax
  cmp    0x10(%rbp),%eax
  jl     L120
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L52
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L52
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jp     L52
  pxor   %xmm1,%xmm1
  ucomisd %xmm1,%xmm0
  jne    L52
  pxor   %xmm0,%xmm0
  comisd -0x20(%rbp),%xmm0
  jb     L52
  mov    -0x50(%rbp),%rax
  movsd  (%rax),%xmm1
  movsd  D45(%rip),%xmm0
  divsd  -0xc8(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mov    -0x90(%rbp),%rax
  movsd  (%rax),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x50(%rbp),%rax
  movsd  %xmm0,(%rax)
L52:
  mov    -0x9c(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb0(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  D11(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L5
  movsd  D11(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L5
  mov    -0x98(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xb8(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm0
  movsd  D11(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L5
  movsd  D11(%rip),%xmm1
  ucomisd %xmm1,%xmm0
  jne    L5
  movsd  -0x18(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jb     L5
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm1
  movsd  D30(%rip),%xmm0
  divsd  -0xc8(%rbp),%xmm0
  subsd  -0x18(%rbp),%xmm0
  movq   D42(%rip),%xmm2
  xorpd  %xmm2,%xmm0
  addsd  %xmm0,%xmm0
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x90(%rbp),%rax
  add    %rdx,%rax
  movsd  (%rax),%xmm2
  divsd  %xmm2,%xmm0
  mov    0x10(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x50(%rbp),%rax
  add    %rdx,%rax
  addsd  %xmm1,%xmm0
  movsd  %xmm0,(%rax)
L5:
  mov    -0x9c(%rbp),%eax
  imul   -0xf8(%rbp),%eax
  imul   0x10(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  imul   0x10(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0xa8(%rbp),%rax
  lea    (%rdx,%rax,1),%rdi
  mov    -0x40(%rbp),%rcx
  mov    -0x48(%rbp),%rdx
  mov    -0x50(%rbp),%rsi
  mov    -0x58(%rbp),%rax
  mov    0x10(%rbp),%r9d
  mov    %rdi,%r8
  mov    %rax,%rdi
  call   <tridiag_premalloc@plt>
  addl   $0x1,-0x98(%rbp)
L103:
  mov    -0x98(%rbp),%eax
  cmp    -0xf8(%rbp),%eax
  jl     L69
  addl   $0x1,-0x9c(%rbp)
L135:
  mov    -0x9c(%rbp),%eax
  cmp    0x28(%rbp),%eax
  jl     L176
  mov    $0x0,%eax
  call   <tridiag_free@plt>
  mov    -0x90(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x88(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x60(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x58(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x50(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x40(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  mov    -0x38(%rbp),%rax
  mov    %rax,%rdi
  call   <free@plt>
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D45
type_guessed: f64
name: extract_symbolic_data
arguments: label: D11
type_guessed: byte[8]
name: extract_symbolic_data
arguments: label: D30
type_guessed: byte[8]
name: extract_symbolic_data
arguments: label: D42
type_guessed: byte[8]

tool: D45: 0.5

tool: {"D11": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D30": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xbf]}

tool: {"D42": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
void implicit_3Dz(double *phi, double *xx, double *yy, double *zz, double nu3, double m31, double m32, double gamma3, double h3, double dt, int L, int M, int N, int use_delj_trick, int Lstart, int Lend) {
  int ii, jj, kk;
  double *dz = malloc((N - 1) * sizeof(*dz));
  double *dfactor = malloc(N * sizeof(*dfactor));
  double *zInt = malloc((N - 1) * sizeof(*zInt));
  double Mfirst, Mlast;
  double *MInt = malloc((N - 1) * sizeof(*MInt));
  double *V = malloc(N * sizeof(*V));
  double *VInt = malloc((N - 1) * sizeof(*VInt));
  double *delj = malloc((N - 1) * sizeof(*delj));
  double *a = malloc(N * sizeof(*a));
  double *b = malloc(N * sizeof(*b));
  double *c = malloc(N * sizeof(*c));
  double *r = malloc(N * sizeof(*r));
  double *temp = malloc(N * sizeof(*temp));
  double x, y;
  compute_dx(zz, N, dz);
  compute_dfactor(dz, N, dfactor);
  compute_xInt(zz, N, zInt);
  for (kk = 0; kk < N; kk++)
    V[kk] = Vfunc(zz[kk], nu3);
  for (kk = 0; kk < N - 1; kk++)
    VInt[kk] = Vfunc(zInt[kk], nu3);
  tridiag_malloc(N);
  for (ii = Lstart; ii < Lend; ii++) {
    for (jj = 0; jj < M; jj++) {
      x = xx[ii];
      y = yy[jj];
      Mfirst = Mfunc3D(zz[0], x, y, m31, m32, gamma3, h3);
      Mlast = Mfunc3D(zz[N - 1], x, y, m31, m32, gamma3, h3);
      for (kk = 0; kk < N - 1; kk++)
        MInt[kk] = Mfunc3D(zInt[kk], x, y, m31, m32, gamma3, h3);
      compute_delj(dz, MInt, VInt, N, delj, use_delj_trick);
      compute_abc_nobc(dz, dfactor, delj, MInt, V, dt, N, a, b, c);
      for (kk = 0; kk < N; kk++)
        r[kk] = phi[ii * M * N + jj * N + kk] / dt;
      if ((xx[ii] == 0) && (yy[jj] == 0) && (Mfirst <= 0))
        b[0] += (0.5 / nu3 - Mfirst) * 2. / dz[0];
      if ((xx[ii] == 1) && (yy[jj] == 1) && (Mlast >= 0))
        b[N - 1] += -(-0.5 / nu3 - Mlast) * 2. / dz[N - 2];
      tridiag_premalloc(a, b, c, r, &phi[ii * M * N + jj * N], N);
    }
  }
  tridiag_free();
  free(dz);
  free(dfactor);
  free(zInt);
  free(MInt);
  free(V);
  free(VInt);
  free(delj);
  free(a);
  free(b);
  free(c);
  free(r);
  free(temp);
}
```