user: 请从给定的汇编指令推导出C源代码:

```asm
<get_opcode>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D66(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x80,%eax
  test   %edx,%edx
  je     L28
  lea    D115(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x81,%eax
  test   %edx,%edx
  je     L28
  lea    D61(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x83,%eax
  test   %edx,%edx
  je     L28
  lea    D191(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x84,%eax
  test   %edx,%edx
  je     L28
  lea    D68(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x89,%eax
  test   %edx,%edx
  je     L28
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x91,%eax
  test   %edx,%edx
  je     L28
  lea    D104(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x8b,%eax
  test   %edx,%edx
  je     L28
  lea    D14(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x93,%eax
  test   %edx,%edx
  je     L28
  lea    D65(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x8a,%eax
  test   %edx,%edx
  je     L28
  lea    D8(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x90,%eax
  test   %edx,%edx
  je     L28
  lea    D179(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x97,%eax
  test   %edx,%edx
  je     L28
  lea    D160(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x8c,%eax
  test   %edx,%edx
  je     L28
  lea    D145(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x8d,%eax
  test   %edx,%edx
  je     L28
  lea    D128(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x95,%eax
  test   %edx,%edx
  je     L28
  lea    D12(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x8e,%eax
  test   %edx,%edx
  je     L28
  lea    D79(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x94,%eax
  test   %edx,%edx
  je     L28
  lea    D212(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x96,%eax
  test   %edx,%edx
  je     L28
  lea    D238(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x98,%eax
  test   %edx,%edx
  je     L28
  lea    D80(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x99,%eax
  test   %edx,%edx
  je     L28
  lea    D159(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x9a,%eax
  test   %edx,%edx
  je     L28
  lea    D206(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x9b,%eax
  test   %edx,%edx
  je     L28
  lea    D125(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x9c,%eax
  test   %edx,%edx
  je     L28
  lea    D35(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x9d,%eax
  test   %edx,%edx
  je     L28
  lea    D45(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%eax
  sbb    %eax,%eax
  and    $0x9e,%eax
L28:
  pop    %rbx
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D66
data_type: string
name: unpack_data
arguments: data_label: D115
data_type: string
name: unpack_data
arguments: data_label: D61
data_type: string
name: unpack_data
arguments: data_label: D191
data_type: string
name: unpack_data
arguments: data_label: D68
data_type: string
name: unpack_data
arguments: data_label: D97
data_type: string
name: unpack_data
arguments: data_label: D104
data_type: string
name: unpack_data
arguments: data_label: D14
data_type: string
name: unpack_data
arguments: data_label: D65
data_type: string
name: unpack_data
arguments: data_label: D8
data_type: string
name: unpack_data
arguments: data_label: D179
data_type: string
name: unpack_data
arguments: data_label: D160
data_type: string
name: unpack_data
arguments: data_label: D145
data_type: string
name: unpack_data
arguments: data_label: D128
data_type: string
name: unpack_data
arguments: data_label: D12
data_type: string
name: unpack_data
arguments: data_label: D79
data_type: string
name: unpack_data
arguments: data_label: D212
data_type: string
name: unpack_data
arguments: data_label: D238
data_type: string
name: unpack_data
arguments: data_label: D80
data_type: string
name: unpack_data
arguments: data_label: D159
data_type: string
name: unpack_data
arguments: data_label: D206
data_type: string
name: unpack_data
arguments: data_label: D125
data_type: string
name: unpack_data
arguments: data_label: D35
data_type: string
name: unpack_data
arguments: data_label: D45
data_type: string

tool: D66: srt

tool: D115: bud

tool: D61: saf

tool: D191: fll

tool: D68: drv

tool: D97: drd

tool: D104: led

tool: D14: dos

tool: D65: lsd

tool: D8: pwm

tool: D179: sir

tool: D160: sng

tool: D145: psg

tool: D128: qls

tool: D12: sns

tool: D79: stm

tool: D212: prs

tool: D238: spt

tool: D80: psc

tool: D159: ssc

tool: D206: wat

tool: D125: wad

tool: D35: waa

tool: D45: wae

assistant: ```c
int get_opcode(char asm_instruction[3]) {
  if (!strcmp(asm_instruction, "srt")) {
    return 128;
  }
  if (!strcmp(asm_instruction, "bud")) {
    return 129;
  }
  if (!strcmp(asm_instruction, "saf")) {
    return 131;
  }
  if (!strcmp(asm_instruction, "fll")) {
    return 132;
  }
  if (!strcmp(asm_instruction, "drv")) {
    return 137;
  }
  if (!strcmp(asm_instruction, "drd")) {
    return 145;
  }
  if (!strcmp(asm_instruction, "led")) {
    return 139;
  }
  if (!strcmp(asm_instruction, "dos")) {
    return 147;
  }
  if (!strcmp(asm_instruction, "lsd")) {
    return 138;
  }
  if (!strcmp(asm_instruction, "pwm")) {
    return 144;
  }
  if (!strcmp(asm_instruction, "sir")) {
    return 151;
  }
  if (!strcmp(asm_instruction, "sng")) {
    return 140;
  }
  if (!strcmp(asm_instruction, "psg")) {
    return 141;
  }
  if (!strcmp(asm_instruction, "qls")) {
    return 149;
  }
  if (!strcmp(asm_instruction, "sns")) {
    return 142;
  }
  if (!strcmp(asm_instruction, "stm")) {
    return 148;
  }
  if (!strcmp(asm_instruction, "prs")) {
    return 150;
  }
  if (!strcmp(asm_instruction, "spt")) {
    return 152;
  }
  if (!strcmp(asm_instruction, "psc")) {
    return 153;
  }
  if (!strcmp(asm_instruction, "ssc")) {
    return 154;
  }
  if (!strcmp(asm_instruction, "wat")) {
    return 155;
  }
  if (!strcmp(asm_instruction, "wad")) {
    return 156;
  }
  if (!strcmp(asm_instruction, "waa")) {
    return 157;
  }
  if (!strcmp(asm_instruction, "wae")) {
    return 158;
  } else {
    return 0;
  }
}
```