user: 请将以下的汇编代码转换成C语言代码：

```asm
<get_operation_code>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L148
  mov    $0x0,%eax
  jmp    L56
L148:
  mov    -0x8(%rbp),%rax
  lea    D52(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L87
  mov    $0x1,%eax
  jmp    L56
L87:
  mov    -0x8(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L263
  mov    $0x2,%eax
  jmp    L56
L263:
  mov    -0x8(%rbp),%rax
  lea    D113(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L4
  mov    $0x3,%eax
  jmp    L56
L4:
  mov    -0x8(%rbp),%rax
  lea    D83(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L138
  mov    $0x4,%eax
  jmp    L56
L138:
  mov    -0x8(%rbp),%rax
  lea    D5(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L50
  mov    $0x5,%eax
  jmp    L56
L50:
  mov    -0x8(%rbp),%rax
  lea    D107(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L73
  mov    $0x6,%eax
  jmp    L56
L73:
  mov    -0x8(%rbp),%rax
  lea    D70(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L257
  mov    $0x7,%eax
  jmp    L56
L257:
  mov    -0x8(%rbp),%rax
  lea    D33(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L84
  mov    $0x8,%eax
  jmp    L56
L84:
  mov    -0x8(%rbp),%rax
  lea    D84(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L96
  mov    $0x9,%eax
  jmp    L56
L96:
  mov    -0x8(%rbp),%rax
  lea    D61(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L35
  mov    $0xa,%eax
  jmp    L56
L35:
  mov    -0x8(%rbp),%rax
  lea    D35(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L198
  mov    $0xb,%eax
  jmp    L56
L198:
  mov    -0x8(%rbp),%rax
  lea    D10(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L203
  mov    $0xc,%eax
  jmp    L56
L203:
  mov    -0x8(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L151
  mov    $0xd,%eax
  jmp    L56
L151:
  mov    $0xff,%eax
L56:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D102
type: string
name: disassemble_data
arguments: tag: D52
type: string
name: disassemble_data
arguments: tag: D108
type: string
name: disassemble_data
arguments: tag: D113
type: string
name: disassemble_data
arguments: tag: D83
type: string
name: disassemble_data
arguments: tag: D5
type: string
name: disassemble_data
arguments: tag: D107
type: string
name: disassemble_data
arguments: tag: D70
type: string
name: disassemble_data
arguments: tag: D33
type: string
name: disassemble_data
arguments: tag: D84
type: string
name: disassemble_data
arguments: tag: D61
type: string
name: disassemble_data
arguments: tag: D35
type: string
name: disassemble_data
arguments: tag: D10
type: string
name: disassemble_data
arguments: tag: D39
type: string

tool: D102: cmove

tool: D52: get

tool: D108: set

tool: D113: add

tool: D83: mult

tool: D5: div

tool: D107: nand

tool: D70: halt

tool: D33: allocate

tool: D84: free

tool: D61: out

tool: D35: in

tool: D10: load

tool: D39: put

assistant: ```c
uint8_t get_operation_code(const char *code) {
  if (strcmp(code, "cmove") == 0)
    return 0;
  else if (strcmp(code, "get") == 0)
    return 1;
  else if (strcmp(code, "set") == 0)
    return 2;
  else if (strcmp(code, "add") == 0)
    return 3;
  else if (strcmp(code, "mult") == 0)
    return 4;
  else if (strcmp(code, "div") == 0)
    return 5;
  else if (strcmp(code, "nand") == 0)
    return 6;
  else if (strcmp(code, "halt") == 0)
    return 7;
  else if (strcmp(code, "allocate") == 0)
    return 8;
  else if (strcmp(code, "free") == 0)
    return 9;
  else if (strcmp(code, "out") == 0)
    return 10;
  else if (strcmp(code, "in") == 0)
    return 11;
  else if (strcmp(code, "load") == 0)
    return 12;
  else if (strcmp(code, "put") == 0)
    return 13;
  return 255;
}
```