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

```asm
<scalar_opcode>:
  endbr64
  cmp    $0x1f,%edi
  ja     L4
  mov    %edi,%edi
  lea    D169(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D312(%rip),%rax
  ret
  lea    D120(%rip),%rax
  ret
  lea    D25(%rip),%rax
  ret
  lea    D152(%rip),%rax
  ret
  lea    D49(%rip),%rax
  ret
  lea    D117(%rip),%rax
  ret
  lea    D193(%rip),%rax
  ret
  lea    D303(%rip),%rax
  ret
  lea    D151(%rip),%rax
  ret
  lea    D268(%rip),%rax
  ret
  lea    D103(%rip),%rax
  ret
  lea    D64(%rip),%rax
  ret
  lea    D87(%rip),%rax
  ret
  lea    D46(%rip),%rax
  ret
  lea    D208(%rip),%rax
  ret
  lea    D142(%rip),%rax
  ret
  lea    D19(%rip),%rax
  ret
  lea    D316(%rip),%rax
  ret
  lea    D24(%rip),%rax
  ret
  lea    D73(%rip),%rax
  ret
  lea    D75(%rip),%rax
  ret
  lea    D0(%rip),%rax
  ret
  lea    D308(%rip),%rax
  ret
  lea    D264(%rip),%rax
  ret
  lea    D89(%rip),%rax
  ret
  lea    D31(%rip),%rax
  ret
  lea    D172(%rip),%rax
  ret
  lea    D246(%rip),%rax
  ret
  lea    D231(%rip),%rax
  ret
L4:
  lea    D156(%rip),%rax
  ret
  lea    D301(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D312
type: string
name: disassemble_data
arguments: data_tag: D120
type: string
name: disassemble_data
arguments: data_tag: D25
type: string
name: disassemble_data
arguments: data_tag: D152
type: string
name: disassemble_data
arguments: data_tag: D49
type: string
name: disassemble_data
arguments: data_tag: D117
type: string
name: disassemble_data
arguments: data_tag: D193
type: string
name: disassemble_data
arguments: data_tag: D303
type: string
name: disassemble_data
arguments: data_tag: D151
type: string
name: disassemble_data
arguments: data_tag: D268
type: string
name: disassemble_data
arguments: data_tag: D103
type: string
name: disassemble_data
arguments: data_tag: D64
type: string
name: disassemble_data
arguments: data_tag: D87
type: string
name: disassemble_data
arguments: data_tag: D46
type: string
name: disassemble_data
arguments: data_tag: D208
type: string
name: disassemble_data
arguments: data_tag: D142
type: string
name: disassemble_data
arguments: data_tag: D19
type: string
name: disassemble_data
arguments: data_tag: D316
type: string
name: disassemble_data
arguments: data_tag: D24
type: string
name: disassemble_data
arguments: data_tag: D73
type: string
name: disassemble_data
arguments: data_tag: D75
type: string
name: disassemble_data
arguments: data_tag: D0
type: string
name: disassemble_data
arguments: data_tag: D308
type: string
name: disassemble_data
arguments: data_tag: D264
type: string
name: disassemble_data
arguments: data_tag: D89
type: string
name: disassemble_data
arguments: data_tag: D31
type: string
name: disassemble_data
arguments: data_tag: D172
type: string
name: disassemble_data
arguments: data_tag: D246
type: string
name: disassemble_data
arguments: data_tag: D231
type: string
name: disassemble_data
arguments: data_tag: D156
type: string
name: disassemble_data
arguments: data_tag: D301
type: string

tool: D312: MOV

tool: D120: RCP

tool: D25: RCC

tool: D152: RSQ

tool: D49: EXP

tool: D117: LOG

tool: D193: LIT

tool: D303: BRA

tool: D151: CAL

tool: D268: RET

tool: D103: LG2

tool: D64: EX2

tool: D87: SIN

tool: D46: COS

tool: D208: PUSHA

tool: D142: POPA

tool: D19: OPCODE-17

tool: D316: OPCODE-18

tool: D24: OPCODE-21

tool: D73: OPCODE-22

tool: D75: OPCODE-23

tool: D0: OPCODE-24

tool: D308: OPCODE-25

tool: D264: OPCODE-26

tool: D89: OPCODE-27

tool: D31: OPCODE-28

tool: D172: OPCODE-29

tool: D246: OPCODE-30

tool: D231: OPCODE-31

tool: D156: INVALID!

tool: D301: NOP

assistant: ```c
const char *scalar_opcode(unsigned opcode) {
  switch (opcode) {
  case 0:
    return "NOP";
  case 1:
    return "MOV";
  case 2:
    return "RCP";
  case 3:
    return "RCC";
  case 4:
    return "RSQ";
  case 5:
    return "EXP";
  case 6:
    return "LOG";
  case 7:
    return "LIT";
  case 9:
    return "BRA";
  case 11:
    return "CAL";
  case 12:
    return "RET";
  case 13:
    return "LG2";
  case 14:
    return "EX2";
  case 15:
    return "SIN";
  case 16:
    return "COS";
  case 19:
    return "PUSHA";
  case 20:
    return "POPA";
  case 17:
    return "OPCODE-17";
  case 18:
    return "OPCODE-18";
  case 21:
    return "OPCODE-21";
  case 22:
    return "OPCODE-22";
  case 23:
    return "OPCODE-23";
  case 24:
    return "OPCODE-24";
  case 25:
    return "OPCODE-25";
  case 26:
    return "OPCODE-26";
  case 27:
    return "OPCODE-27";
  case 28:
    return "OPCODE-28";
  case 29:
    return "OPCODE-29";
  case 30:
    return "OPCODE-30";
  case 31:
    return "OPCODE-31";
  default:
    break;
  }
  return "INVALID!";
}
```