user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<test_wmessage>:
  endbr64
  push   %r13
  lea    D75(%rip),%rsi
  lea    D55(%rip),%r13
  push   %r12
  push   %rbp
  lea    D81(%rip),%rbp
  call   <pbc_wmessage_new@plt>
  mov    $0xffffffff,%ecx
  lea    D32(%rip),%rdx
  lea    D132(%rip),%rsi
  mov    %rax,%r12
  mov    %rax,%rdi
  call   <pbc_wmessage_string@plt>
  mov    %r12,%rdi
  xor    %ecx,%ecx
  mov    $0x3039,%edx
  lea    D48(%rip),%rsi
  call   <pbc_wmessage_integer@plt>
  mov    $0xffffffff,%ecx
  mov    %r12,%rdi
  lea    D36(%rip),%rdx
  lea    D21(%rip),%rsi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  call   <pbc_wmessage_message@plt>
  mov    $0xffffffff,%ecx
  lea    D122(%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    D9(%rip),%rdx
  mov    %rax,%rbp
  mov    %rax,%rdi
  call   <pbc_wmessage_string@plt>
  mov    %rbp,%rdi
  mov    $0xffffffff,%ecx
  lea    D49(%rip),%rbp
  lea    D16(%rip),%rdx
  lea    D56(%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    D46(%rip),%rsi
  call   <pbc_wmessage_integer@plt>
  mov    %r12,%rax
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: read_data
arguments: data_label: D75
type_infered: string
name: read_data
arguments: data_label: D55
type_infered: string
name: read_data
arguments: data_label: D81
type_infered: string
name: read_data
arguments: data_label: D32
type_infered: string
name: read_data
arguments: data_label: D132
type_infered: string
name: read_data
arguments: data_label: D48
type_infered: string
name: read_data
arguments: data_label: D36
type_infered: string
name: read_data
arguments: data_label: D21
type_infered: string
name: read_data
arguments: data_label: D122
type_infered: string
name: read_data
arguments: data_label: D9
type_infered: string
name: read_data
arguments: data_label: D49
type_infered: string
name: read_data
arguments: data_label: D16
type_infered: string
name: read_data
arguments: data_label: D56
type_infered: string
name: read_data
arguments: data_label: D46
type_infered: string

tool: D75: tutorial.Person

tool: D55: number

tool: D81: phone

tool: D32: Alice

tool: D132: name

tool: D48: id

tool: D36: alice@unkown

tool: D21: email

tool: D122: 87654321

tool: D9: 13901234567

tool: D49: test

tool: D16: MOBILE

tool: D56: type

tool: D46: 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;
}
```