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

```asm
<get_mnemonic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,%eax
  mov    %rsi,-0x10(%rbp)
  mov    %ax,-0x4(%rbp)
  cmpw   $0x0,-0x4(%rbp)
  jne    L8
  mov    -0x10(%rbp),%rax
  lea    D150(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L8:
  cmpw   $0x1,-0x4(%rbp)
  jne    L300
  mov    -0x10(%rbp),%rax
  lea    D104(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L300:
  cmpw   $0x2,-0x4(%rbp)
  jne    L93
  mov    -0x10(%rbp),%rax
  lea    D117(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L93:
  cmpw   $0x3,-0x4(%rbp)
  jne    L90
  mov    -0x10(%rbp),%rax
  lea    D116(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L90:
  cmpw   $0x4,-0x4(%rbp)
  jne    L178
  mov    -0x10(%rbp),%rax
  lea    D93(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L178:
  cmpw   $0x5,-0x4(%rbp)
  jne    L177
  mov    -0x10(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L177:
  cmpw   $0x6,-0x4(%rbp)
  jne    L130
  mov    -0x10(%rbp),%rax
  lea    D60(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L130:
  cmpw   $0x7,-0x4(%rbp)
  jne    L250
  mov    -0x10(%rbp),%rax
  lea    D33(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L250:
  cmpw   $0x8,-0x4(%rbp)
  jne    L173
  mov    -0x10(%rbp),%rax
  lea    D156(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L173:
  cmpw   $0x9,-0x4(%rbp)
  jne    L146
  mov    -0x10(%rbp),%rax
  lea    D142(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L146:
  cmpw   $0xa,-0x4(%rbp)
  jne    L100
  mov    -0x10(%rbp),%rax
  lea    D102(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L100:
  cmpw   $0xb,-0x4(%rbp)
  jne    L133
  mov    -0x10(%rbp),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L133:
  cmpw   $0xc,-0x4(%rbp)
  jne    L103
  mov    -0x10(%rbp),%rax
  lea    D40(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L103:
  cmpw   $0xd,-0x4(%rbp)
  jne    L36
  mov    -0x10(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L36:
  cmpw   $0xe,-0x4(%rbp)
  jne    L126
  mov    -0x10(%rbp),%rax
  lea    D86(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
  jmp    L125
L126:
  cmpw   $0xf,-0x4(%rbp)
  jne    L125
  mov    -0x10(%rbp),%rax
  lea    D27(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcpy@plt>
L125:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D150
data_type: string
name: unpack_data
arguments: data_label: D104
data_type: string
name: unpack_data
arguments: data_label: D117
data_type: string
name: unpack_data
arguments: data_label: D116
data_type: string
name: unpack_data
arguments: data_label: D93
data_type: string
name: unpack_data
arguments: data_label: D15
data_type: string
name: unpack_data
arguments: data_label: D60
data_type: string
name: unpack_data
arguments: data_label: D33
data_type: string
name: unpack_data
arguments: data_label: D156
data_type: string
name: unpack_data
arguments: data_label: D142
data_type: string
name: unpack_data
arguments: data_label: D102
data_type: string
name: unpack_data
arguments: data_label: D24
data_type: string
name: unpack_data
arguments: data_label: D40
data_type: string
name: unpack_data
arguments: data_label: D73
data_type: string
name: unpack_data
arguments: data_label: D86
data_type: string
name: unpack_data
arguments: data_label: D27
data_type: string

tool: D150: ADD

tool: D104: SUB

tool: D117: AND

tool: D116: OR

tool: D93: XOR

tool: D15: NOT

tool: D60: LDM

tool: D33: LDI

tool: D156: STR

tool: D142: JMP

tool: D102: JMZ

tool: D24: JMN

tool: D40: CALL

tool: D73: RET

tool: D86: PUSH

tool: D27: POP

assistant: ```c
void get_mnemonic(unsigned short opcode, char mnemonic[5]) {
  if (opcode == 0)
    strcpy(mnemonic, "ADD");
  else if (opcode == 1)
    strcpy(mnemonic, "SUB");
  else if (opcode == 2)
    strcpy(mnemonic, "AND");
  else if (opcode == 3)
    strcpy(mnemonic, "OR");
  else if (opcode == 4)
    strcpy(mnemonic, "XOR");
  else if (opcode == 5)
    strcpy(mnemonic, "NOT");
  else if (opcode == 6)
    strcpy(mnemonic, "LDM");
  else if (opcode == 7)
    strcpy(mnemonic, "LDI");
  else if (opcode == 8)
    strcpy(mnemonic, "STR");
  else if (opcode == 9)
    strcpy(mnemonic, "JMP");
  else if (opcode == 10)
    strcpy(mnemonic, "JMZ");
  else if (opcode == 11)
    strcpy(mnemonic, "JMN");
  else if (opcode == 12)
    strcpy(mnemonic, "CALL");
  else if (opcode == 13)
    strcpy(mnemonic, "RET");
  else if (opcode == 14)
    strcpy(mnemonic, "PUSH");
  else if (opcode == 15)
    strcpy(mnemonic, "POP");
}
```