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     L36
L37:
  xor    %r12d,%r12d
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  cs nopw 0x0(%rax,%rax,1)
L36:
  mov    %rbp,%rdi
  call   <read_word@plt>
  mov    %rax,%rbp
  test   %rax,%rax
  je     L37
  lea    D151(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x1,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L42
L263:
  mov    %rbp,%rdi
  call   <free@plt>
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L42:
  lea    D169(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x2,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D178(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x3,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D201(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x4,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D139(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x5,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D202(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x6,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D157(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x7,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D248(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x8,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D32(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x9,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D229(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xa,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D96(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xb,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D2(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xc,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D81(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xd,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D119(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xe,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D152(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0xf,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D224(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x10,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D160(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x11,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D46(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x12,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D86(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x13,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D185(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x14,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D113(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x15,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D11(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x16,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D61(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x17,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D74(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x18,%r12d
  call   <strcmp@plt>
  test   %rax,%rax
  je     L263
  lea    D247(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%rax
  sbb    %r12d,%r12d
  and    $0x19,%r12d
  jmp    L263
```

tool_calls: name: disassemble_data
arguments: data_label: D151
datatype: string
name: disassemble_data
arguments: data_label: D169
datatype: string
name: disassemble_data
arguments: data_label: D178
datatype: string
name: disassemble_data
arguments: data_label: D201
datatype: string
name: disassemble_data
arguments: data_label: D139
datatype: string
name: disassemble_data
arguments: data_label: D202
datatype: string
name: disassemble_data
arguments: data_label: D157
datatype: string
name: disassemble_data
arguments: data_label: D248
datatype: string
name: disassemble_data
arguments: data_label: D32
datatype: string
name: disassemble_data
arguments: data_label: D229
datatype: string
name: disassemble_data
arguments: data_label: D96
datatype: string
name: disassemble_data
arguments: data_label: D2
datatype: string
name: disassemble_data
arguments: data_label: D81
datatype: string
name: disassemble_data
arguments: data_label: D119
datatype: string
name: disassemble_data
arguments: data_label: D152
datatype: string
name: disassemble_data
arguments: data_label: D224
datatype: string
name: disassemble_data
arguments: data_label: D160
datatype: string
name: disassemble_data
arguments: data_label: D46
datatype: string
name: disassemble_data
arguments: data_label: D86
datatype: string
name: disassemble_data
arguments: data_label: D185
datatype: string
name: disassemble_data
arguments: data_label: D113
datatype: string
name: disassemble_data
arguments: data_label: D11
datatype: string
name: disassemble_data
arguments: data_label: D61
datatype: string
name: disassemble_data
arguments: data_label: D74
datatype: string
name: disassemble_data
arguments: data_label: D247
datatype: string

tool: D151: OK

tool: D169: ERR

tool: D178: PING

tool: D201: ECHO

tool: D139: PROGRAM

tool: D202: VERSION

tool: D157: PASSWORD

tool: D248: FREE

tool: D32: TEAM

tool: D229: READY

tool: D96: START

tool: D2: WAITING

tool: D81: NEXT

tool: D119: TEAMSTARTINFO

tool: D152: WHO

tool: D224: LOCAL

tool: D160: NETWORK

tool: D46: NOBODY

tool: D86: SENDMAP

tool: D185: RECVMAP

tool: D113: SENDCONFIG

tool: D11: RECVCONFIG

tool: D61: CHATTALK

tool: D74: CHATLISTEN

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