user: Converte this assembly snippet into its equivalent C code:

```asm
<get_code>:
  endbr64
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <read_separator@plt>
  test   %rax,%rax
  je     L134
L176:
  xor    %r12d,%r12d
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L134:
  mov    %rbp,%rdi
  call   <read_word@plt>
  mov    %rax,%rbp
  test   %rax,%rax
  je     L176
  lea    D98(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L16
L180:
  mov    %rbp,%rdi
  call   <free@plt>
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L16:
  lea    D147(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x2,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x3,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D128(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D45(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x5,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D8(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x6,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D92(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x7,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D248(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x8,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D84(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x9,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D143(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xa,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D107(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xb,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D6(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xc,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D49(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xd,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D113(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xe,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D146(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xf,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D4(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x10,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D91(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x11,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D162(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x12,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D64(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x13,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D198(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x14,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D53(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x15,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D68(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x16,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D141(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x17,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D61(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x18,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L180
  lea    D216(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%rax
  sbb    %r12d,%r12d
  and    $0x19,%r12d
  jmp    L180
```

tool_calls: name: parse_data
arguments: tag: D98
datatype: string
name: parse_data
arguments: tag: D147
datatype: string
name: parse_data
arguments: tag: D20
datatype: string
name: parse_data
arguments: tag: D128
datatype: string
name: parse_data
arguments: tag: D45
datatype: string
name: parse_data
arguments: tag: D8
datatype: string
name: parse_data
arguments: tag: D92
datatype: string
name: parse_data
arguments: tag: D248
datatype: string
name: parse_data
arguments: tag: D84
datatype: string
name: parse_data
arguments: tag: D143
datatype: string
name: parse_data
arguments: tag: D107
datatype: string
name: parse_data
arguments: tag: D6
datatype: string
name: parse_data
arguments: tag: D49
datatype: string
name: parse_data
arguments: tag: D113
datatype: string
name: parse_data
arguments: tag: D146
datatype: string
name: parse_data
arguments: tag: D4
datatype: string
name: parse_data
arguments: tag: D91
datatype: string
name: parse_data
arguments: tag: D162
datatype: string
name: parse_data
arguments: tag: D64
datatype: string
name: parse_data
arguments: tag: D198
datatype: string
name: parse_data
arguments: tag: D53
datatype: string
name: parse_data
arguments: tag: D68
datatype: string
name: parse_data
arguments: tag: D141
datatype: string
name: parse_data
arguments: tag: D61
datatype: string
name: parse_data
arguments: tag: D216
datatype: string

tool: D98: OK

tool: D147: ERR

tool: D20: PING

tool: D128: ECHO

tool: D45: PROGRAM

tool: D8: VERSION

tool: D92: PASSWORD

tool: D248: FREE

tool: D84: TEAM

tool: D143: READY

tool: D107: START

tool: D6: WAITING

tool: D49: NEXT

tool: D113: TEAMSTARTINFO

tool: D146: WHO

tool: D4: LOCAL

tool: D91: NETWORK

tool: D162: NOBODY

tool: D64: SENDMAP

tool: D198: RECVMAP

tool: D53: SENDCONFIG

tool: D68: RECVCONFIG

tool: D141: CHATTALK

tool: D61: CHATLISTEN

tool: D216: QUIT

assistant: ```c
int get_code(char **message) {
  char *command;
  int result = 0;
  if (read_separator(message) == 0) {
    if ((command = read_word(message)) != NULL) {
      if (strcmp((command), ("OK")) == 0) {
        result = 1;
      } else if (strcmp((command), ("ERR")) == 0) {
        result = 2;
      } else if (strcmp((command), ("PING")) == 0) {
        result = 3;
      } else if (strcmp((command), ("ECHO")) == 0) {
        result = 4;
      } else if (strcmp((command), ("PROGRAM")) == 0) {
        result = 5;
      } else if (strcmp((command), ("VERSION")) == 0) {
        result = 6;
      } else if (strcmp((command), ("PASSWORD")) == 0) {
        result = 7;
      } else if (strcmp((command), ("FREE")) == 0) {
        result = 8;
      } else if (strcmp((command), ("TEAM")) == 0) {
        result = 9;
      } else if (strcmp((command), ("READY")) == 0) {
        result = 10;
      } else if (strcmp((command), ("START")) == 0) {
        result = 11;
      } else if (strcmp((command), ("WAITING")) == 0) {
        result = 12;
      } else if (strcmp((command), ("NEXT")) == 0) {
        result = 13;
      } else if (strcmp((command), ("TEAMSTARTINFO")) == 0) {
        result = 14;
      } else if (strcmp((command), ("WHO")) == 0) {
        result = 15;
      } else if (strcmp((command), ("LOCAL")) == 0) {
        result = 16;
      } else if (strcmp((command), ("NETWORK")) == 0) {
        result = 17;
      } else if (strcmp((command), ("NOBODY")) == 0) {
        result = 18;
      } else if (strcmp((command), ("SENDMAP")) == 0) {
        result = 19;
      } else if (strcmp((command), ("RECVMAP")) == 0) {
        result = 20;
      } else if (strcmp((command), ("SENDCONFIG")) == 0) {
        result = 21;
      } else if (strcmp((command), ("RECVCONFIG")) == 0) {
        result = 22;
      } else if (strcmp((command), ("CHATTALK")) == 0) {
        result = 23;
      } else if (strcmp((command), ("CHATLISTEN")) == 0) {
        result = 24;
      } else if (strcmp((command), ("QUIT")) == 0) {
        result = 25;
      }
      free(command);
    }
  }
  return result;
}
```