user: Please show me the C implementation that matches the assembly code listed below:

```asm
<help>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D85(%rip),%rax
  mov    %rax,-0xa0(%rbp)
  lea    D54(%rip),%rax
  mov    %rax,-0x98(%rbp)
  lea    D78(%rip),%rax
  mov    %rax,-0x90(%rbp)
  lea    D67(%rip),%rax
  mov    %rax,-0x88(%rbp)
  lea    D144(%rip),%rax
  mov    %rax,-0x80(%rbp)
  lea    D92(%rip),%rax
  mov    %rax,-0x78(%rbp)
  lea    D146(%rip),%rax
  mov    %rax,-0x70(%rbp)
  lea    D96(%rip),%rax
  mov    %rax,-0x68(%rbp)
  lea    D161(%rip),%rax
  mov    %rax,-0x60(%rbp)
  lea    D149(%rip),%rax
  mov    %rax,-0x58(%rbp)
  lea    D64(%rip),%rax
  mov    %rax,-0x50(%rbp)
  lea    D21(%rip),%rax
  mov    %rax,-0x48(%rbp)
  lea    D173(%rip),%rax
  mov    %rax,-0x40(%rbp)
  lea    D41(%rip),%rax
  mov    %rax,-0x38(%rbp)
  lea    D52(%rip),%rax
  mov    %rax,-0x30(%rbp)
  lea    D48(%rip),%rax
  mov    %rax,-0x28(%rbp)
  lea    D6(%rip),%rax
  mov    %rax,-0x20(%rbp)
  lea    D31(%rip),%rax
  mov    %rax,-0x18(%rbp)
  movl   $0x0,-0xa4(%rbp)
  jmp    L16
L13:
  mov    -0xa4(%rbp),%eax
  cltq
  mov    -0xa0(%rbp,%rax,8),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0xa4(%rbp)
L16:
  mov    -0xa4(%rbp),%eax
  cmp    $0x11,%eax
  jbe    L13
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L1
  call   <__stack_chk_fail@plt>
L1:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D85
type_infered: string
name: parse_data
arguments: data_tag: D54
type_infered: string
name: parse_data
arguments: data_tag: D78
type_infered: string
name: parse_data
arguments: data_tag: D67
type_infered: string
name: parse_data
arguments: data_tag: D144
type_infered: string
name: parse_data
arguments: data_tag: D92
type_infered: string
name: parse_data
arguments: data_tag: D146
type_infered: string
name: parse_data
arguments: data_tag: D96
type_infered: string
name: parse_data
arguments: data_tag: D161
type_infered: string
name: parse_data
arguments: data_tag: D149
type_infered: string
name: parse_data
arguments: data_tag: D64
type_infered: string
name: parse_data
arguments: data_tag: D21
type_infered: string
name: parse_data
arguments: data_tag: D173
type_infered: string
name: parse_data
arguments: data_tag: D41
type_infered: string
name: parse_data
arguments: data_tag: D52
type_infered: string
name: parse_data
arguments: data_tag: D48
type_infered: string
name: parse_data
arguments: data_tag: D6
type_infered: string
name: parse_data
arguments: data_tag: D31
type_infered: string

tool: D85: usage: [doitclient] subcommand [options] [parameters]

tool: D54: options are:

tool: D78:   -h, --help         display this text

tool: D67:   -V, --version      display doitclient version

tool: D144:   -d, --set-dir      run program in your current directory

tool: D92:   -D, --no-set-dir   run program in DoIt's default directory

tool: D146:   -p, --path-translate    do path translation on command name

tool: D96:   -P, --no-path-translate    do not do path translation on command name

tool: D161:   -v, --verbose      log the transaction to stderr

tool: D149: subcommands are:

tool: D64:   win <command>      start Windows GUI process and don't wait

tool: D21:   winwait <command>  start Windows GUI process and wait for completion

tool: D173:   wcmd <command>     start Windows CLI process and return output

tool: D41:   wf <file>          path-translate a file and open in Windows

tool: D52:   www <URL>          open a URL in Windows's default browser

tool: D48:   wclip              copy stdin to the Windows clipboard

tool: D6:   wclip -r           copy the Windows clipboard to stdout

tool: D31:   wpath              path-translate a filename and print to stdout

assistant: ```c
void help(void) {
  char *help[] = {
      "usage: [doitclient] subcommand [options] [parameters]", "options are:", "  -h, --help         display this text", "  -V, --version      display doitclient version", "  -d, --set-dir      run program in your current directory", "  -D, --no-set-dir   run program in DoIt's default directory", "  -p, --path-translate    do path translation on command name", "  -P, --no-path-translate    do not do path translation on command name", "  -v, --verbose      log the transaction to stderr", "subcommands are:", "  win <command>      start Windows GUI process and don't wait", "  winwait <command>  start Windows GUI process and wait for completion", "  wcmd <command>     start Windows CLI process and return output", "  wf <file>          path-translate a file and open in Windows", "  www <URL>          open a URL in Windows's default browser", "  wclip              copy stdin to the Windows clipboard", "  wclip -r           copy the Windows clipboard to stdout", "  wpath              path-translate a filename and print to stdout",
  };
  int i;
  for (i = 0; i < sizeof(help) / sizeof(*help); i++)
    puts(help[i]);
}
```