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

```asm
<help>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  cmpq   $0x0,-0x8(%rbp)
  jne    L30
  mov    $0x0,%eax
  call   <help_ls@plt>
  jmp    L173
L30:
  mov    -0x8(%rbp),%rax
  lea    D69(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L257
  mov    $0x0,%eax
  call   <help_help@plt>
  jmp    L173
L257:
  mov    -0x8(%rbp),%rax
  lea    D66(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L183
  mov    $0x0,%eax
  call   <help_prompt@plt>
  jmp    L173
L183:
  mov    -0x8(%rbp),%rax
  lea    D49(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L128
  mov    $0x0,%eax
  call   <help_init@plt>
  jmp    L173
L128:
  mov    -0x8(%rbp),%rax
  lea    D95(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L237
  mov    $0x0,%eax
  call   <help_drop@plt>
  jmp    L173
L237:
  mov    -0x8(%rbp),%rax
  lea    D115(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L247
  mov    $0x0,%eax
  call   <help_create_service@plt>
  jmp    L173
L247:
  mov    -0x8(%rbp),%rax
  lea    D44(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L76
  mov    $0x0,%eax
  call   <help_list@plt>
  jmp    L173
L76:
  mov    -0x8(%rbp),%rax
  lea    D31(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L8
  mov    $0x0,%eax
  call   <help_switch@plt>
  jmp    L173
L8:
  mov    -0x8(%rbp),%rax
  lea    D23(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L227
  mov    $0x0,%eax
  call   <help_back@plt>
  jmp    L173
L227:
  mov    -0x8(%rbp),%rax
  lea    D91(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L194
  mov    $0x0,%eax
  call   <help_book@plt>
  jmp    L173
L194:
  mov    -0x8(%rbp),%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L255
  mov    $0x0,%eax
  call   <help_service@plt>
  jmp    L173
L255:
  mov    -0x8(%rbp),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L157
  mov    $0x0,%eax
  call   <help_bill@plt>
  jmp    L173
L157:
  mov    -0x8(%rbp),%rax
  lea    D12(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L129
  mov    $0x0,%eax
  call   <help_checkout@plt>
  jmp    L173
L129:
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  call   <error_print@plt>
L173:
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D69
datatype: string
name: parse_data
arguments: data_label: D66
datatype: string
name: parse_data
arguments: data_label: D49
datatype: string
name: parse_data
arguments: data_label: D95
datatype: string
name: parse_data
arguments: data_label: D115
datatype: string
name: parse_data
arguments: data_label: D44
datatype: string
name: parse_data
arguments: data_label: D31
datatype: string
name: parse_data
arguments: data_label: D23
datatype: string
name: parse_data
arguments: data_label: D91
datatype: string
name: parse_data
arguments: data_label: D94
datatype: string
name: parse_data
arguments: data_label: D104
datatype: string
name: parse_data
arguments: data_label: D12
datatype: string
name: parse_data
arguments: data_label: D71
datatype: string

tool: D69: help

tool: D66: prompt

tool: D49: init

tool: D95: drop

tool: D115: create-service

tool: D44: list

tool: D31: switch

tool: D23: back

tool: D91: book

tool: D94: service

tool: D104: bill

tool: D12: checkout

tool: D71: Unknown command!

assistant: ```c
void help(char *command) {
  if (!command)
    help_ls();
  else if (!strcmp(command, "help"))
    help_help();
  else if (!strcmp(command, "prompt"))
    help_prompt();
  else if (!strcmp(command, "init"))
    help_init();
  else if (!strcmp(command, "drop"))
    help_drop();
  else if (!strcmp(command, "create-service"))
    help_create_service();
  else if (!strcmp(command, "list"))
    help_list();
  else if (!strcmp(command, "switch"))
    help_switch();
  else if (!strcmp(command, "back"))
    help_back();
  else if (!strcmp(command, "book"))
    help_book();
  else if (!strcmp(command, "service"))
    help_service();
  else if (!strcmp(command, "bill"))
    help_bill();
  else if (!strcmp(command, "checkout"))
    help_checkout();
  else
    error_print("Unknown command!");
}
```