user: Translate the below assembly code into C programming language:

```asm
<do_test>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  movl   $0x0,-0x18(%rbp)
  movl   $0x0,-0x14(%rbp)
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtof@plt>
  or     %eax,-0x14(%rbp)
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtod@plt>
  or     %eax,-0x14(%rbp)
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtold@plt>
  or     %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%eax
  or     %eax,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtof@plt>
  or     %eax,-0x10(%rbp)
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtod@plt>
  or     %eax,-0x10(%rbp)
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtold@plt>
  or     %eax,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  or     %eax,-0x18(%rbp)
  movl   $0x0,-0xc(%rbp)
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtof@plt>
  or     %eax,-0xc(%rbp)
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtod@plt>
  or     %eax,-0xc(%rbp)
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtold@plt>
  or     %eax,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  or     %eax,-0x18(%rbp)
  movl   $0x0,-0x8(%rbp)
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtof@plt>
  or     %eax,-0x8(%rbp)
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtod@plt>
  or     %eax,-0x8(%rbp)
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtold@plt>
  or     %eax,-0x8(%rbp)
  mov    -0x8(%rbp),%eax
  or     %eax,-0x18(%rbp)
  movl   $0x0,-0x4(%rbp)
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtof@plt>
  or     %eax,-0x4(%rbp)
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtod@plt>
  or     %eax,-0x4(%rbp)
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  call   <test_strtold@plt>
  or     %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  or     %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: label: D46
data_type: string
name: retrieve_data
arguments: label: D40
data_type: string
name: retrieve_data
arguments: label: D69
data_type: string
name: retrieve_data
arguments: label: D35
data_type: string
name: retrieve_data
arguments: label: D89
data_type: string

tool: D46: NaN(blabla)something

tool: D40: NaN(1234)something

tool: D69: NaN(4294967295)something

tool: D35: NaN(18446744073709551615)something

tool: D89: NaN(0)something

assistant: ```c
int do_test(void) {
  int result = 0;
  result |= ({
    int result = 0;
    result |= test_strtof("NaN(blabla)something");
    result |= test_strtod("NaN(blabla)something");
    result |= test_strtold("NaN(blabla)something");
    result;
  });
  result |= ({
    int result = 0;
    result |= test_strtof("NaN(1234)something");
    result |= test_strtod("NaN(1234)something");
    result |= test_strtold("NaN(1234)something");
    result;
  });
  result |= ({
    int result = 0;
    result |= test_strtof("NaN(4294967295)something");
    result |= test_strtod("NaN(4294967295)something");
    result |= test_strtold("NaN(4294967295)something");
    result;
  });
  result |= ({
    int result = 0;
    result |= test_strtof("NaN(18446744073709551615)something");
    result |= test_strtod("NaN(18446744073709551615)something");
    result |= test_strtold("NaN(18446744073709551615)something");
    result;
  });
  result |= ({
    int result = 0;
    result |= test_strtof("NaN(0)something");
    result |= test_strtod("NaN(0)something");
    result |= test_strtold("NaN(0)something");
    result;
  });
  return result;
}
```