user: What is the c source code of the assembly code below:

```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    D48(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  lea    D5(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    (%rsp),%ecx
  test   %ecx,%ecx
  jle    L0
  mov    $0x1,%ebx
  lea    0x4(%rsp),%r12
  lea    D13(%rip),%rbp
  nop
L39:
  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    L39
L0:
  lea    D52(%rip),%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    (%rsp),%edx
  test   %edx,%edx
  jle    L44
  mov    $0x1,%ebx
  lea    D13(%rip),%rbp
  lea    0x8(%rsp),%r12
  cs nopw 0x0(%rax,%rax,1)
L29:
  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    L29
L44:
  lea    D6(%rip),%rdi
  call   <puts@plt>
  mov    (%rsp),%eax
  test   %eax,%eax
  jle    L26
  mov    $0x1,%ebx
  lea    0x10(%rsp),%rbp
  lea    0xc(%rsp),%r13
  lea    D51(%rip),%r12
  nopl   0x0(%rax)
L47:
  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    L47
L26:
  mov    $0xa,%edi
  call   <putchar@plt>
  xor    %eax,%eax
  call   <test_symbol_table@plt>
  mov    0x7e8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L14
  add    $0x7f8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L14:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D48
type_infered: string
name: disassemble_data
arguments: label: D5
type_infered: string
name: disassemble_data
arguments: label: D13
type_infered: string
name: disassemble_data
arguments: label: D52
type_infered: string
name: disassemble_data
arguments: label: D6
type_infered: string
name: disassemble_data
arguments: label: D51
type_infered: string

tool: D48: number of polynomials : %d


tool: D5: number of terms in each polynomial :

tool: D13:  %d

tool: D52: 
degree of each polynomial :

tool: D6: 
the polynomials as strings :

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