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

```asm
<parseAndExecute>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D102(%rip),%rsi
  call   <strtok@plt>
  mov    %rax,%rbx
  lea    D5(%rip),%rsi
  mov    $0x0,%edi
  call   <strtok@plt>
  mov    %rax,%rbp
  mov    $0x1,%eax
  test   %rbx,%rbx
  je     L54
  lea    D52(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x0,%eax
  test   %rdx,%rdx
  jne    L89
L54:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L89:
  lea    D58(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L0
  mov    %rbp,%rdi
  call   <executeLook@plt>
  mov    $0x1,%eax
  jmp    L54
L0:
  lea    D105(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L77
  mov    %rbp,%rdi
  call   <executeGo@plt>
  mov    $0x1,%eax
  jmp    L54
L77:
  lea    D87(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L24
  mov    %rbp,%rdi
  call   <executeGet@plt>
  mov    $0x1,%eax
  jmp    L54
L24:
  lea    D77(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L23
  mov    %rbp,%rdi
  call   <executeDrop@plt>
  mov    $0x1,%eax
  jmp    L54
L23:
  lea    D107(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L83
  mov    %rbp,%rdi
  call   <executeGive@plt>
  mov    $0x1,%eax
  jmp    L54
L83:
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L46
  mov    %rbp,%rdi
  call   <executeAsk@plt>
  mov    $0x1,%eax
  jmp    L54
L46:
  lea    D68(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L124
  call   <executeInventory@plt>
  mov    $0x1,%eax
  jmp    L54
L124:
  mov    %rbx,%rsi
  lea    D97(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%eax
  jmp    L54
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D102
datatype: string
name: extract_symbolic_data
arguments: data_label: D5
datatype: string
name: extract_symbolic_data
arguments: data_label: D52
datatype: string
name: extract_symbolic_data
arguments: data_label: D58
datatype: string
name: extract_symbolic_data
arguments: data_label: D105
datatype: string
name: extract_symbolic_data
arguments: data_label: D87
datatype: string
name: extract_symbolic_data
arguments: data_label: D77
datatype: string
name: extract_symbolic_data
arguments: data_label: D107
datatype: string
name: extract_symbolic_data
arguments: data_label: D84
datatype: string
name: extract_symbolic_data
arguments: data_label: D68
datatype: string
name: extract_symbolic_data
arguments: data_label: D97
datatype: string

tool: D102:  


tool: D5: 


tool: D52: quit

tool: D58: look

tool: D105: go

tool: D87: get

tool: D77: drop

tool: D107: give

tool: D84: ask

tool: D68: inventory

tool: D97: I don't know how to '%s'.


assistant: ```c
bool parseAndExecute(char *input) {
  char *verb = strtok(input, " \n");
  char *noun = strtok(NULL, "\n");
  if (verb != NULL) {
    if (strcmp(verb, "quit") == 0) {
      return false;
    } else if (strcmp(verb, "look") == 0) {
      executeLook(noun);
    } else if (strcmp(verb, "go") == 0) {
      executeGo(noun);
    } else if (strcmp(verb, "get") == 0) {
      executeGet(noun);
    } else if (strcmp(verb, "drop") == 0) {
      executeDrop(noun);
    } else if (strcmp(verb, "give") == 0) {
      executeGive(noun);
    } else if (strcmp(verb, "ask") == 0) {
      executeAsk(noun);
    } else if (strcmp(verb, "inventory") == 0) {
      executeInventory();
    } else {
      printf("I don't know how to '%s'.\n", verb);
    }
  }
  return true;
}
```