user: Demonstrate the C code that generates the assembly output below:

```asm
<test_wmessage>:
  endbr64
  push   %r13
  lea    D14(%rip),%rsi
  lea    D73(%rip),%r13
  push   %r12
  push   %rbp
  lea    D41(%rip),%rbp
  call   <pbc_wmessage_new@plt>
  mov    $0xffffffff,%ecx
  lea    D70(%rip),%rdx
  lea    D62(%rip),%rsi
  mov    %rax,%r12
  mov    %rax,%rdi
  call   <pbc_wmessage_string@plt>
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0x3039,%edx
  lea    D114(%rip),%rsi
  call   <pbc_wmessage_integer@plt>
  mov    $0xffffffff,%ecx
  mov    %r12,%rdi
  lea    D128(%rip),%rdx
  lea    D26(%rip),%rsi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  call   <pbc_wmessage_message@plt>
  mov    $0xffffffff,%ecx
  lea    D16(%rip),%rdx
  mov    %r13,%rsi
  mov    %rax,%rdi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  call   <pbc_wmessage_message@plt>
  mov    %r13,%rsi
  mov    $0xffffffff,%ecx
  lea    D32(%rip),%rdx
  mov    %rax,%rbp
  mov    %rax,%rdi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rdi
  mov    $0xffffffff,%ecx
  lea    D119(%rip),%rbp
  lea    D85(%rip),%rdx
  lea    D137(%rip),%rsi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0xffffff85,%edx
  call   <pbc_wmessage_integer@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0x3039,%edx
  call   <pbc_wmessage_integer@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0x12d687,%edx
  call   <pbc_wmessage_integer@plt>
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0xd431,%edx
  lea    D109(%rip),%rsi
  call   <pbc_wmessage_integer@plt>
  mov    %r12,%rax
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D14
type_infered: string
name: retrieve_data
arguments: data_label: D73
type_infered: string
name: retrieve_data
arguments: data_label: D41
type_infered: string
name: retrieve_data
arguments: data_label: D70
type_infered: string
name: retrieve_data
arguments: data_label: D62
type_infered: string
name: retrieve_data
arguments: data_label: D114
type_infered: string
name: retrieve_data
arguments: data_label: D128
type_infered: string
name: retrieve_data
arguments: data_label: D26
type_infered: string
name: retrieve_data
arguments: data_label: D16
type_infered: string
name: retrieve_data
arguments: data_label: D32
type_infered: string
name: retrieve_data
arguments: data_label: D119
type_infered: string
name: retrieve_data
arguments: data_label: D85
type_infered: string
name: retrieve_data
arguments: data_label: D137
type_infered: string
name: retrieve_data
arguments: data_label: D109
type_infered: string

tool: D14: tutorial.Person

tool: D73: number

tool: D41: phone

tool: D70: Alice

tool: D62: name

tool: D114: id

tool: D128: alice@unkown

tool: D26: email

tool: D16: 87654321

tool: D32: 13901234567

tool: D119: test

tool: D85: MOBILE

tool: D137: type

tool: D109: tutorial.Ext.test

assistant: ```c
struct pbc_wmessage *test_wmessage(struct pbc_env *env) {
  struct pbc_wmessage *msg = pbc_wmessage_new(env, "tutorial.Person");
  pbc_wmessage_string(msg, "name", "Alice", -1);
  pbc_wmessage_integer(msg, "id", 12345, 0);
  pbc_wmessage_string(msg, "email", "alice@unkown", -1);
  struct pbc_wmessage *phone = pbc_wmessage_message(msg, "phone");
  pbc_wmessage_string(phone, "number", "87654321", -1);
  phone = pbc_wmessage_message(msg, "phone");
  pbc_wmessage_string(phone, "number", "13901234567", -1);
  pbc_wmessage_string(phone, "type", "MOBILE", -1);
  pbc_wmessage_integer(msg, "test", -123, 0);
  pbc_wmessage_integer(msg, "test", 12345, 0);
  pbc_wmessage_integer(msg, "test", 1234567, 0);
  pbc_wmessage_integer(msg, "tutorial.Ext.test", 54321, 0);
  return msg;
}
```