user: What would the C source look like for the assembly code provided here:

```asm
<get_operation_code>:
  endbr64
  push   %rbp
  lea    D126(%rip),%rsi
  mov    %rdi,%rbp
  call   <strcmp@plt>
  mov    %rax,%r8
  xor    %eax,%eax
  test   %r8,%r8
  jne    L41
L102:
  pop    %rbp
  ret
L41:
  lea    D20(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x1,%eax
  test   %r8,%r8
  je     L102
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x2,%eax
  test   %r8,%r8
  je     L102
  lea    D46(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x3,%eax
  test   %r8,%r8
  je     L102
  lea    D91(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x4,%eax
  test   %r8,%r8
  je     L102
  lea    D55(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x5,%eax
  test   %r8,%r8
  je     L102
  lea    D35(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x6,%eax
  test   %r8,%r8
  je     L102
  lea    D129(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x7,%eax
  test   %r8,%r8
  je     L102
  lea    D92(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x8,%eax
  test   %r8,%r8
  je     L102
  lea    D104(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0x9,%eax
  test   %r8,%r8
  je     L102
  lea    D53(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xa,%eax
  test   %r8,%r8
  je     L102
  lea    D88(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xb,%eax
  test   %r8,%r8
  je     L102
  lea    D113(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  mov    %rax,%r8
  mov    $0xc,%eax
  test   %r8,%r8
  je     L102
  mov    %rbp,%rdi
  lea    D69(%rip),%rsi
  call   <strcmp@plt>
  pop    %rbp
  cmp    $0x1,%rax
  sbb    %eax,%eax
  and    $0xe,%al
  add    $0xff,%eax
  ret
```

tool_calls: name: retrieve_data
arguments: label: D126
type_infered: string
name: retrieve_data
arguments: label: D20
type_infered: string
name: retrieve_data
arguments: label: D26
type_infered: string
name: retrieve_data
arguments: label: D46
type_infered: string
name: retrieve_data
arguments: label: D91
type_infered: string
name: retrieve_data
arguments: label: D55
type_infered: string
name: retrieve_data
arguments: label: D35
type_infered: string
name: retrieve_data
arguments: label: D129
type_infered: string
name: retrieve_data
arguments: label: D92
type_infered: string
name: retrieve_data
arguments: label: D104
type_infered: string
name: retrieve_data
arguments: label: D53
type_infered: string
name: retrieve_data
arguments: label: D88
type_infered: string
name: retrieve_data
arguments: label: D113
type_infered: string
name: retrieve_data
arguments: label: D69
type_infered: string

tool: D126: cmove

tool: D20: get

tool: D26: set

tool: D46: add

tool: D91: mult

tool: D55: div

tool: D35: nand

tool: D129: halt

tool: D92: allocate

tool: D104: free

tool: D53: out

tool: D88: in

tool: D113: load

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