user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<get_opcode>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L262
  mov    $0x80,%eax
  jmp    L384
L262:
  mov    -0x8(%rbp),%rax
  lea    D165(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L94
  mov    $0x81,%eax
  jmp    L384
L94:
  mov    -0x8(%rbp),%rax
  lea    D205(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L99
  mov    $0x83,%eax
  jmp    L384
L99:
  mov    -0x8(%rbp),%rax
  lea    D41(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L128
  mov    $0x84,%eax
  jmp    L384
L128:
  mov    -0x8(%rbp),%rax
  lea    D162(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L355
  mov    $0x89,%eax
  jmp    L384
L355:
  mov    -0x8(%rbp),%rax
  lea    D84(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L225
  mov    $0x91,%eax
  jmp    L384
L225:
  mov    -0x8(%rbp),%rax
  lea    D46(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L263
  mov    $0x8b,%eax
  jmp    L384
L263:
  mov    -0x8(%rbp),%rax
  lea    D91(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L24
  mov    $0x93,%eax
  jmp    L384
L24:
  mov    -0x8(%rbp),%rax
  lea    D101(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L318
  mov    $0x8a,%eax
  jmp    L384
L318:
  mov    -0x8(%rbp),%rax
  lea    D130(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L191
  mov    $0x90,%eax
  jmp    L384
L191:
  mov    -0x8(%rbp),%rax
  lea    D193(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L334
  mov    $0x97,%eax
  jmp    L384
L334:
  mov    -0x8(%rbp),%rax
  lea    D106(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L378
  mov    $0x8c,%eax
  jmp    L384
L378:
  mov    -0x8(%rbp),%rax
  lea    D76(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L357
  mov    $0x8d,%eax
  jmp    L384
L357:
  mov    -0x8(%rbp),%rax
  lea    D36(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L138
  mov    $0x95,%eax
  jmp    L384
L138:
  mov    -0x8(%rbp),%rax
  lea    D169(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L170
  mov    $0x8e,%eax
  jmp    L384
L170:
  mov    -0x8(%rbp),%rax
  lea    D213(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L73
  mov    $0x94,%eax
  jmp    L384
L73:
  mov    -0x8(%rbp),%rax
  lea    D125(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L110
  mov    $0x96,%eax
  jmp    L384
L110:
  mov    -0x8(%rbp),%rax
  lea    D196(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L150
  mov    $0x98,%eax
  jmp    L384
L150:
  mov    -0x8(%rbp),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L338
  mov    $0x99,%eax
  jmp    L384
L338:
  mov    -0x8(%rbp),%rax
  lea    D136(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L474
  mov    $0x9a,%eax
  jmp    L384
L474:
  mov    -0x8(%rbp),%rax
  lea    D89(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L358
  mov    $0x9b,%eax
  jmp    L384
L358:
  mov    -0x8(%rbp),%rax
  lea    D225(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L145
  mov    $0x9c,%eax
  jmp    L384
L145:
  mov    -0x8(%rbp),%rax
  lea    D181(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L88
  mov    $0x9d,%eax
  jmp    L384
L88:
  mov    -0x8(%rbp),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L147
  mov    $0x9e,%eax
  jmp    L384
L147:
  mov    $0x0,%eax
L384:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D73
data_type: string
name: disassemble_data
arguments: data_tag: D165
data_type: string
name: disassemble_data
arguments: data_tag: D205
data_type: string
name: disassemble_data
arguments: data_tag: D41
data_type: string
name: disassemble_data
arguments: data_tag: D162
data_type: string
name: disassemble_data
arguments: data_tag: D84
data_type: string
name: disassemble_data
arguments: data_tag: D46
data_type: string
name: disassemble_data
arguments: data_tag: D91
data_type: string
name: disassemble_data
arguments: data_tag: D101
data_type: string
name: disassemble_data
arguments: data_tag: D130
data_type: string
name: disassemble_data
arguments: data_tag: D193
data_type: string
name: disassemble_data
arguments: data_tag: D106
data_type: string
name: disassemble_data
arguments: data_tag: D76
data_type: string
name: disassemble_data
arguments: data_tag: D36
data_type: string
name: disassemble_data
arguments: data_tag: D169
data_type: string
name: disassemble_data
arguments: data_tag: D213
data_type: string
name: disassemble_data
arguments: data_tag: D125
data_type: string
name: disassemble_data
arguments: data_tag: D196
data_type: string
name: disassemble_data
arguments: data_tag: D104
data_type: string
name: disassemble_data
arguments: data_tag: D136
data_type: string
name: disassemble_data
arguments: data_tag: D89
data_type: string
name: disassemble_data
arguments: data_tag: D225
data_type: string
name: disassemble_data
arguments: data_tag: D181
data_type: string
name: disassemble_data
arguments: data_tag: D97
data_type: string

tool: D73: srt

tool: D165: bud

tool: D205: saf

tool: D41: fll

tool: D162: drv

tool: D84: drd

tool: D46: led

tool: D91: dos

tool: D101: lsd

tool: D130: pwm

tool: D193: sir

tool: D106: sng

tool: D76: psg

tool: D36: qls

tool: D169: sns

tool: D213: stm

tool: D125: prs

tool: D196: spt

tool: D104: psc

tool: D136: ssc

tool: D89: wat

tool: D225: wad

tool: D181: waa

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