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

```asm
<test_dobldobl_container>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x800,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%eax
  call   <syscon_read_dobldobl_system@plt>
  mov    %eax,-0x7e4(%rbp)
  mov    $0x0,%eax
  call   <syscon_write_dobldobl_system@plt>
  mov    %eax,-0x7e4(%rbp)
  lea    -0x7f8(%rbp),%rax
  mov    %rax,%rdi
  call   <syscon_number_of_dobldobl_polynomials@plt>
  mov    %eax,-0x7e4(%rbp)
  mov    -0x7f8(%rbp),%eax
  mov    %eax,%esi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x7e8(%rbp)
  jmp    L57
L18:
  lea    -0x7f4(%rbp),%rdx
  mov    -0x7e8(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <syscon_number_of_dobldobl_terms@plt>
  mov    %eax,-0x7e4(%rbp)
  mov    -0x7f4(%rbp),%eax
  mov    %eax,%esi
  lea    D53(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x7e8(%rbp)
L57:
  mov    -0x7f8(%rbp),%eax
  cmp    %eax,-0x7e8(%rbp)
  jle    L18
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x1,-0x7e8(%rbp)
  jmp    L45
L3:
  lea    -0x7f0(%rbp),%rdx
  mov    -0x7e8(%rbp),%eax
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <syscon_degree_of_dobldobl_polynomial@plt>
  mov    %eax,-0x7e4(%rbp)
  mov    -0x7f0(%rbp),%eax
  mov    %eax,%esi
  lea    D53(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x7e8(%rbp)
L45:
  mov    -0x7f8(%rbp),%eax
  cmp    %eax,-0x7e8(%rbp)
  jle    L3
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x7e8(%rbp)
  jmp    L69
L13:
  lea    -0x7e0(%rbp),%rdx
  lea    -0x7ec(%rbp),%rcx
  mov    -0x7e8(%rbp),%eax
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <syscon_load_dobldobl_polynomial@plt>
  mov    %eax,-0x7e4(%rbp)
  lea    -0x7e0(%rbp),%rdx
  mov    -0x7e8(%rbp),%eax
  mov    %eax,%esi
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x7e8(%rbp)
L69:
  mov    -0x7f8(%rbp),%eax
  cmp    %eax,-0x7e8(%rbp)
  jle    L13
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
  call   <test_symbol_table@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L34
  call   <__stack_chk_fail@plt>
L34:
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D24
datatype: string
name: read_data
arguments: tag: D43
datatype: string
name: read_data
arguments: tag: D53
datatype: string
name: read_data
arguments: tag: D48
datatype: string
name: read_data
arguments: tag: D27
datatype: string
name: read_data
arguments: tag: D4
datatype: string

tool: D24: number of polynomials : %d


tool: D43: number of terms in each polynomial :

tool: D53:  %d

tool: D48: 
degree of each polynomial :

tool: D27: 
the polynomials as strings :

tool: D4: polynomial %d : %s


assistant: ```c
void test_dobldobl_container(void) {
  int fail, n, i, t, deg;
  fail = syscon_read_dobldobl_system();
  fail = syscon_write_dobldobl_system();
  fail = syscon_number_of_dobldobl_polynomials(&n);
  printf("number of polynomials : %d\n", n);
  printf("number of terms in each polynomial :");
  for (i = 1; i <= n; i++) {
    fail = syscon_number_of_dobldobl_terms(i, &t);
    printf(" %d", t);
  }
  printf("\ndegree of each polynomial :");
  for (i = 1; i <= n; i++) {
    fail = syscon_degree_of_dobldobl_polynomial(i, &deg);
    printf(" %d", deg);
  }
  printf("\nthe polynomials as strings :\n");
  for (i = 1; i <= n; i++) {
    char buffer[2000];
    int nc;
    fail = syscon_load_dobldobl_polynomial(i, &nc, buffer);
    printf("polynomial %d : %s\n", i, buffer);
  }
  printf("\n");
  test_symbol_table();
}
```