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

```asm
<parseAndExecute>:
  endbr64
  push   %r12
  lea    D7(%rip),%rsi
  push   %rbp
  sub    $0x8,%rsp
  call   <strtok@plt>
  lea    D107(%rip),%rsi
  xor    %edi,%edi
  mov    %rax,%rbp
  call   <strtok@plt>
  mov    %rax,%r12
  mov    $0x1,%eax
  test   %rbp,%rbp
  je     L11
  lea    D90(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L137
L11:
  add    $0x8,%rsp
  pop    %rbp
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L137:
  lea    D73(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L74
  lea    D24(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L84
  mov    %r12,%rdi
  call   <executeGo@plt>
  mov    $0x1,%eax
  jmp    L11
  nopw   0x0(%rax,%rax,1)
L74:
  mov    %r12,%rdi
  call   <executeLook@plt>
  add    $0x8,%rsp
  mov    $0x1,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L84:
  lea    D25(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L85
  lea    D74(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L91
  mov    %r12,%rdi
  call   <executeDrop@plt>
  mov    $0x1,%eax
  jmp    L11
  nopw   0x0(%rax,%rax,1)
L85:
  mov    %r12,%rdi
  call   <executeGet@plt>
  mov    $0x1,%eax
  jmp    L11
  nopw   0x0(%rax,%rax,1)
L91:
  lea    D14(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L149
  mov    %r12,%rdi
  call   <executeGive@plt>
  mov    $0x1,%eax
  jmp    L11
L149:
  lea    D13(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L124
  mov    %r12,%rdi
  call   <executeAsk@plt>
  mov    $0x1,%eax
  jmp    L11
L124:
  lea    D2(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L48
  call   <executeInventory@plt>
  mov    $0x1,%eax
  jmp    L11
L48:
  mov    %rbp,%rsi
  lea    D10(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%eax
  jmp    L11
```

tool_calls: name: extract_symbolic_data
arguments: tag: D7
type_guessed: string
name: extract_symbolic_data
arguments: tag: D107
type_guessed: string
name: extract_symbolic_data
arguments: tag: D90
type_guessed: string
name: extract_symbolic_data
arguments: tag: D73
type_guessed: string
name: extract_symbolic_data
arguments: tag: D24
type_guessed: string
name: extract_symbolic_data
arguments: tag: D25
type_guessed: string
name: extract_symbolic_data
arguments: tag: D74
type_guessed: string
name: extract_symbolic_data
arguments: tag: D14
type_guessed: string
name: extract_symbolic_data
arguments: tag: D13
type_guessed: string
name: extract_symbolic_data
arguments: tag: D2
type_guessed: string
name: extract_symbolic_data
arguments: tag: D10
type_guessed: string

tool: D7:  


tool: D107: 


tool: D90: quit

tool: D73: look

tool: D24: go

tool: D25: get

tool: D74: drop

tool: D14: give

tool: D13: ask

tool: D2: inventory

tool: D10: 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;
}
```