user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<test_dobldobl_container>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x7f8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x7e8(%rsp)
  xor    %eax,%eax
  call   <syscon_read_dobldobl_system@plt>
  xor    %eax,%eax
  call   <syscon_write_dobldobl_system@plt>
  mov    %rsp,%rdi
  call   <syscon_number_of_dobldobl_polynomials@plt>
  mov    (%rsp),%esi
  lea    D9(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D29(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    (%rsp),%ecx
  test   %ecx,%ecx
  jle    L43
  mov    $0x1,%ebx
  lea    0x4(%rsp),%r12
  lea    D61(%rip),%rbp
  nop
L59:
  mov    %ebx,%edi
  mov    %r12,%rsi
  add    $0x1,%ebx
  call   <syscon_number_of_dobldobl_terms@plt>
  mov    0x4(%rsp),%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  cmp    %ebx,(%rsp)
  jge    L59
L43:
  lea    D43(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    (%rsp),%edx
  test   %edx,%edx
  jle    L6
  mov    $0x1,%ebx
  lea    D61(%rip),%rbp
  lea    0x8(%rsp),%r12
  cs nopw 0x0(%rax,%rax,1)
L41:
  mov    %ebx,%edi
  mov    %r12,%rsi
  add    $0x1,%ebx
  call   <syscon_degree_of_dobldobl_polynomial@plt>
  mov    0x8(%rsp),%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  cmp    %ebx,(%rsp)
  jge    L41
L6:
  lea    D45(%rip),%rdi
  call   <puts@plt>
  mov    (%rsp),%eax
  test   %eax,%eax
  jle    L1
  mov    $0x1,%ebx
  lea    0x10(%rsp),%rbp
  lea    0xc(%rsp),%r13
  lea    D23(%rip),%r12
  nopl   0x0(%rax)
L24:
  mov    %ebx,%edi
  mov    %rbp,%rdx
  mov    %r13,%rsi
  call   <syscon_load_dobldobl_polynomial@plt>
  mov    %ebx,%esi
  mov    %rbp,%rdx
  mov    %r12,%rdi
  xor    %eax,%eax
  add    $0x1,%ebx
  call   <printf@plt>
  cmp    %ebx,(%rsp)
  jge    L24
L1:
  mov    $0xa,%edi
  call   <putchar@plt>
  xor    %eax,%eax
  call   <test_symbol_table@plt>
  mov    0x7e8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L64
  add    $0x7f8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L64:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D9
datatype: string
name: parse_data
arguments: label: D29
datatype: string
name: parse_data
arguments: label: D61
datatype: string
name: parse_data
arguments: label: D43
datatype: string
name: parse_data
arguments: label: D45
datatype: string
name: parse_data
arguments: label: D23
datatype: string

tool: D9: number of polynomials : %d


tool: D29: number of terms in each polynomial :

tool: D61:  %d

tool: D43: 
degree of each polynomial :

tool: D45: 
the polynomials as strings :

tool: D23: 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();
}
```