user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<main>:
  endbr64
  push   %r13
  lea    D185(%rip),%r13
  push   %r12
  lea    D266(%rip),%r12
  push   %rbp
  lea    D230(%rip),%rbp
  mov    %rbp,%rdi
  call   <puts@plt>
  lea    D39(%rip),%rdi
  call   <puts@plt>
  mov    %rbp,%rdi
  lea    D188(%rip),%rbp
  call   <puts@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D250(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_alloc@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D30(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_append@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D203(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_ascii@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D140(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_case@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D138(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_compare@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D206(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_customalloc@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D11(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_encoding@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D195(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_from@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D44(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_hexbinhex@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D228(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_internal@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D132(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_iterators@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D152(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_justify@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  xor    %eax,%eax
  lea    D58(%rip),%rsi
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_repeat@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D191(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_search@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D217(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_shuffle@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D210(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_sub@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D242(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_to@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D16(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_trim@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D47(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_utf32@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D240(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_utf8@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  lea    D137(%rip),%rsi
  mov    %r12,%rdi
  xor    %eax,%eax
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <puts@plt>
  call   <run_task_utils@plt>
  xor    %eax,%eax
  call   <st_memfree@plt>
  lea    D145(%rip),%rdi
  call   <puts@plt>
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: parse_data
arguments: tag: D185
type_infered: string
name: parse_data
arguments: tag: D266
type_infered: string
name: parse_data
arguments: tag: D230
type_infered: string
name: parse_data
arguments: tag: D39
type_infered: string
name: parse_data
arguments: tag: D188
type_infered: string
name: parse_data
arguments: tag: D250
type_infered: string
name: parse_data
arguments: tag: D30
type_infered: string
name: parse_data
arguments: tag: D203
type_infered: string
name: parse_data
arguments: tag: D140
type_infered: string
name: parse_data
arguments: tag: D138
type_infered: string
name: parse_data
arguments: tag: D206
type_infered: string
name: parse_data
arguments: tag: D11
type_infered: string
name: parse_data
arguments: tag: D195
type_infered: string
name: parse_data
arguments: tag: D44
type_infered: string
name: parse_data
arguments: tag: D228
type_infered: string
name: parse_data
arguments: tag: D132
type_infered: string
name: parse_data
arguments: tag: D152
type_infered: string
name: parse_data
arguments: tag: D58
type_infered: string
name: parse_data
arguments: tag: D191
type_infered: string
name: parse_data
arguments: tag: D217
type_infered: string
name: parse_data
arguments: tag: D210
type_infered: string
name: parse_data
arguments: tag: D242
type_infered: string
name: parse_data
arguments: tag: D16
type_infered: string
name: parse_data
arguments: tag: D47
type_infered: string
name: parse_data
arguments: tag: D240
type_infered: string
name: parse_data
arguments: tag: D137
type_infered: string
name: parse_data
arguments: tag: D145
type_infered: string

tool: D185: 

################

tool: D266: ## %s


tool: D230:     ########################

tool: D39:     ## string.c unit test ##

tool: D188: ################

tool: D250: alloc

tool: D30: append

tool: D203: ascii

tool: D140: case

tool: D138: compare

tool: D206: customalloc

tool: D11: encoding

tool: D195: from

tool: D44: hexbinhex

tool: D228: internal

tool: D132: iterators

tool: D152: justify

tool: D58: repeat

tool: D191: search

tool: D217: shuffle

tool: D210: sub

tool: D242: to

tool: D16: trim

tool: D47: utf32

tool: D240: utf8

tool: D137: utils

tool: D145: OK

assistant: ```c
int main(int argc, const char *argv[]) {
  printf("    ########################\n");
  printf("    ## string.c unit test ##\n");
  printf("    ########################\n");
  printf("\n\n################\n");
  printf("## %s\n", "alloc");
  printf("################\n");
  extern int run_task_alloc(void);
  run_task_alloc();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "append");
  printf("################\n");
  extern int run_task_append(void);
  run_task_append();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "ascii");
  printf("################\n");
  extern int run_task_ascii(void);
  run_task_ascii();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "case");
  printf("################\n");
  extern int run_task_case(void);
  run_task_case();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "compare");
  printf("################\n");
  extern int run_task_compare(void);
  run_task_compare();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "customalloc");
  printf("################\n");
  extern int run_task_customalloc(void);
  run_task_customalloc();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "encoding");
  printf("################\n");
  extern int run_task_encoding(void);
  run_task_encoding();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "from");
  printf("################\n");
  extern int run_task_from(void);
  run_task_from();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "hexbinhex");
  printf("################\n");
  extern int run_task_hexbinhex(void);
  run_task_hexbinhex();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "internal");
  printf("################\n");
  extern int run_task_internal(void);
  run_task_internal();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "iterators");
  printf("################\n");
  extern int run_task_iterators(void);
  run_task_iterators();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "justify");
  printf("################\n");
  extern int run_task_justify(void);
  run_task_justify();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "repeat");
  printf("################\n");
  extern int run_task_repeat(void);
  run_task_repeat();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "search");
  printf("################\n");
  extern int run_task_search(void);
  run_task_search();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "shuffle");
  printf("################\n");
  extern int run_task_shuffle(void);
  run_task_shuffle();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "sub");
  printf("################\n");
  extern int run_task_sub(void);
  run_task_sub();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "to");
  printf("################\n");
  extern int run_task_to(void);
  run_task_to();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "trim");
  printf("################\n");
  extern int run_task_trim(void);
  run_task_trim();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "utf32");
  printf("################\n");
  extern int run_task_utf32(void);
  run_task_utf32();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "utf8");
  printf("################\n");
  extern int run_task_utf8(void);
  run_task_utf8();
  ;
  printf("\n\n################\n");
  printf("## %s\n", "utils");
  printf("################\n");
  extern int run_task_utils(void);
  run_task_utils();
  ;
  st_memfree();
  printf("OK\n");
  return 0;
}
```