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

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D145(%rip),%r12
  mov    %r12,%rdx
  lea    D195(%rip),%r13
  mov    %r13,%rsi
  lea    D121(%rip),%rbx
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D236(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdx
  mov    %r13,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D119(%rip),%rdi
  call   <printf@plt>
  lea    D41(%rip),%rbp
  mov    %rbp,%rdx
  mov    %r13,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D77(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdx
  lea    D123(%rip),%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D33(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdx
  lea    D7(%rip),%r12
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D126(%rip),%rdx
  lea    D36(%rip),%rsi
  lea    D173(%rip),%rdi
  call   <test_str@plt>
  lea    D122(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdx
  lea    D89(%rip),%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D91(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdx
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D61(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdx
  mov    %rbx,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D217(%rip),%rdi
  call   <printf@plt>
  lea    D64(%rip),%rdx
  mov    %rbx,%rsi
  mov    %rbx,%rdi
  call   <test_str@plt>
  lea    D166(%rip),%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdx
  lea    D170(%rip),%rsi
  lea    D136(%rip),%rdi
  call   <test_str@plt>
  mov    $0x0,%eax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: parse_data
arguments: data_label: D145
data_type: string
name: parse_data
arguments: data_label: D195
data_type: string
name: parse_data
arguments: data_label: D121
data_type: string
name: parse_data
arguments: data_label: D236
data_type: string
name: parse_data
arguments: data_label: D119
data_type: string
name: parse_data
arguments: data_label: D41
data_type: string
name: parse_data
arguments: data_label: D77
data_type: string
name: parse_data
arguments: data_label: D123
data_type: string
name: parse_data
arguments: data_label: D33
data_type: string
name: parse_data
arguments: data_label: D7
data_type: string
name: parse_data
arguments: data_label: D8
data_type: string
name: parse_data
arguments: data_label: D126
data_type: string
name: parse_data
arguments: data_label: D36
data_type: string
name: parse_data
arguments: data_label: D173
data_type: string
name: parse_data
arguments: data_label: D122
data_type: string
name: parse_data
arguments: data_label: D89
data_type: string
name: parse_data
arguments: data_label: D91
data_type: string
name: parse_data
arguments: data_label: D45
data_type: string
name: parse_data
arguments: data_label: D61
data_type: string
name: parse_data
arguments: data_label: D217
data_type: string
name: parse_data
arguments: data_label: D64
data_type: string
name: parse_data
arguments: data_label: D166
data_type: string
name: parse_data
arguments: data_label: D96
data_type: string
name: parse_data
arguments: data_label: D170
data_type: string
name: parse_data
arguments: data_label: D136
data_type: string

tool: D145: qq

tool: D195: el

tool: D121: Hello!

tool: D236: 
2 to 2


tool: D119: 
2 to 1


tool: D41: q

tool: D77: 
1 to 2


tool: D123: e

tool: D33: 
More than 1


tool: D7: l

tool: D8: 
More than 1 (long)


tool: D126: Hi

tool: D36: Hello

tool: D173: Hello! Hello!

tool: D122: 
None


tool: D89: f

tool: D91: 
Replace with Nothing


tool: 

tool: D61: 
Full Word


tool: D217: 
Full Word Long


tool: D64: Another Word!

tool: D166: 
Other Characters in String


tool: D96: array

tool: D170: string

tool: D136: This string is a Test!

assistant: ```c
int main(void) {
  test_str("Hello!", "el", "qq");
  printf("\n2 to 2\n");
  test_str("Hello!", "el", "qq");
  printf("\n2 to 1\n");
  test_str("Hello!", "el", "q");
  printf("\n1 to 2\n");
  test_str("Hello!", "e", "qq");
  printf("\nMore than 1\n");
  test_str("Hello!", "l", "q");
  printf("\nMore than 1 (long)\n");
  test_str("Hello! Hello!", "Hello", "Hi");
  printf("\nNone\n");
  test_str("Hello!", "f", "q");
  printf("\nReplace with Nothing\n");
  test_str("Hello!", "l", "");
  printf("\nFull Word\n");
  test_str("Hello!", "Hello!", "q");
  printf("\nFull Word Long\n");
  test_str("Hello!", "Hello!", "Another Word!");
  printf("\nOther Characters in String\n");
  test_str("This string is a Test!", "string", "array");
}
```