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

```asm
<solve_dobldobl_start_system>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  mov    %edi,-0x34(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D26(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  call   <celcon_dobldobl_random_coefficient_system@plt>
  mov    %eax,-0xc(%rbp)
  mov    $0x0,%eax
  call   <celcon_dobldobl_polyhedral_homotopy@plt>
  mov    %eax,-0xc(%rbp)
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0x1c(%rbp)
  movl   $0x0,-0x14(%rbp)
  movl   $0x1,-0x18(%rbp)
  jmp    L53
L124:
  lea    -0x24(%rbp),%rdx
  mov    -0x18(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <celcon_solve_dobldobl_start_system@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x24(%rbp),%eax
  mov    -0x18(%rbp),%edx
  mov    %eax,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <celcon_mixed_volume@plt>
  mov    %eax,-0xc(%rbp)
  mov    -0x24(%rbp),%edx
  mov    -0x20(%rbp),%eax
  cmp    %eax,%edx
  jne    L57
  mov    -0x20(%rbp),%eax
  mov    %eax,%esi
  lea    D72(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L133
L57:
  mov    -0x20(%rbp),%eax
  mov    %eax,%esi
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L133:
  mov    -0x24(%rbp),%eax
  add    %eax,-0x1c(%rbp)
  mov    -0x20(%rbp),%eax
  add    %eax,-0x14(%rbp)
  addl   $0x1,-0x18(%rbp)
L53:
  mov    -0x18(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L124
  mov    -0x1c(%rbp),%eax
  cmp    -0x14(%rbp),%eax
  jne    L81
  mov    -0x14(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  mov    %eax,%esi
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L91
L81:
  mov    -0x14(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  mov    %eax,%esi
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L91:
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x18(%rbp)
  jmp    L86
L111:
  lea    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <celcon_mixed_volume@plt>
  mov    %eax,-0xc(%rbp)
  movl   $0x1,-0x10(%rbp)
  jmp    L68
L121:
  mov    -0x18(%rbp),%edx
  mov    -0x10(%rbp),%eax
  mov    %eax,%esi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x10(%rbp),%ecx
  mov    -0x18(%rbp),%eax
  mov    $0x0,%edx
  mov    %ecx,%esi
  mov    %eax,%edi
  call   <celcon_track_dobldobl_solution_path@plt>
  mov    %eax,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L68:
  mov    -0x20(%rbp),%eax
  cmp    %eax,-0x10(%rbp)
  jle    L121
  addl   $0x1,-0x18(%rbp)
L86:
  mov    -0x18(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L111
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x18(%rbp)
  jmp    L117
L30:
  lea    -0x20(%rbp),%rdx
  mov    -0x18(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <celcon_mixed_volume@plt>
  mov    %eax,-0xc(%rbp)
  movl   $0x1,-0x10(%rbp)
  jmp    L135
L112:
  mov    -0x10(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <celcon_copy_target_dobldobl_solution_to_container@plt>
  mov    %eax,-0xc(%rbp)
  addl   $0x1,-0x10(%rbp)
L135:
  mov    -0x20(%rbp),%eax
  cmp    %eax,-0x10(%rbp)
  jle    L112
  addl   $0x1,-0x18(%rbp)
L117:
  mov    -0x18(%rbp),%eax
  cmp    -0x34(%rbp),%eax
  jle    L30
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  call   <celcon_write_dobldobl_random_coefficient_system@plt>
  mov    %eax,-0xc(%rbp)
  mov    $0x0,%eax
  call   <solcon_write_dobldobl_solutions@plt>
  mov    %eax,-0xc(%rbp)
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L105
  call   <__stack_chk_fail@plt>
L105:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D26
type_infered: string
name: extract_symbolic_data
arguments: label: D36
type_infered: string
name: extract_symbolic_data
arguments: label: D7
type_infered: string
name: extract_symbolic_data
arguments: label: D72
type_infered: string
name: extract_symbolic_data
arguments: label: D19
type_infered: string
name: extract_symbolic_data
arguments: label: D17
type_infered: string
name: extract_symbolic_data
arguments: label: D70
type_infered: string
name: extract_symbolic_data
arguments: label: D64
type_infered: string
name: extract_symbolic_data
arguments: label: D16
type_infered: string
name: extract_symbolic_data
arguments: label: D37
type_infered: string
name: extract_symbolic_data
arguments: label: D8
type_infered: string

tool: D26: solving a random coefficient system with double doubles ...

tool: D36: solving the binomial start systems ...

tool: D7:  -> found %d start solutions from cell %d


tool: D72: #start solutions equals mixed volume %d, OK


tool: D19: #start solutions does not equal mixed volume %d!!!


tool: D17: Total #start solutions : %d = %d mixed volume, OK.


tool: D70: Total #start solutions : %d /= %d mixed volume!!!


tool: D64: tracking the solution paths ...

tool: D16: Tracking path %d corresponding to cell %d ...


tool: D37: copying the target solutions to the solution container ...

tool: D8: writing random coefficient system and its solutions to file ...

assistant: ```c
void solve_dobldobl_start_system(int len) {
  int fail, nb, tnb, k, tmv, mv, i;
  printf("solving a random coefficient system with double doubles ...\n");
  fail = celcon_dobldobl_random_coefficient_system();
  fail = celcon_dobldobl_polyhedral_homotopy();
  printf("solving the binomial start systems ...\n");
  tnb = 0;
  tmv = 0;
  for (k = 1; k <= len; k++) {
    fail = celcon_solve_dobldobl_start_system(k, &nb);
    printf(" -> found %d start solutions from cell %d\n", nb, k);
    fail = celcon_mixed_volume(k, &mv);
    if (nb == mv)
      printf("#start solutions equals mixed volume %d, OK\n", mv);
    else
      printf("#start solutions does not equal mixed volume %d!!!\n", mv);
    tnb += nb;
    tmv += mv;
  }
  if (tnb == tmv)
    printf("Total #start solutions : %d = %d mixed volume, OK.\n", tnb, tmv);
  else
    printf("Total #start solutions : %d /= %d mixed volume!!!\n", tnb, tmv);
  printf("tracking the solution paths ...\n");
  for (k = 1; k <= len; k++) {
    fail = celcon_mixed_volume(k, &mv);
    for (i = 1; i <= mv; i++) {
      printf("Tracking path %d corresponding to cell %d ...\n", i, k);
      fail = celcon_track_dobldobl_solution_path(k, i, 0);
    }
  }
  printf("copying the target solutions to the solution container ...\n");
  for (k = 1; k <= len; k++) {
    fail = celcon_mixed_volume(k, &mv);
    for (i = 1; i <= mv; i++)
      fail = celcon_copy_target_dobldobl_solution_to_container(k, i);
  }
  printf("writing random coefficient system and its solutions to file ...\n");
  fail = celcon_write_dobldobl_random_coefficient_system();
  fail = solcon_write_dobldobl_solutions();
}
```