user: 这段汇编代码用C语言表示是什么样的?

```asm
<scalar_opcode>:
  endbr64
  cmp    $0x1f,%edi
  ja     L0
  lea    D299(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D31(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D82(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D135(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D257(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D29(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D129(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D210(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D89(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D222(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D197(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D211(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D181(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D198(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D216(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D178(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D318(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D163(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D286(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D80(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D305(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D246(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D22(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D169(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D230(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D65(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D91(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D67(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D152(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D276(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L0:
  lea    D278(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D295(%rip),%rax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D31
type: string
name: extract_symbolic_data
arguments: tag: D82
type: string
name: extract_symbolic_data
arguments: tag: D135
type: string
name: extract_symbolic_data
arguments: tag: D257
type: string
name: extract_symbolic_data
arguments: tag: D29
type: string
name: extract_symbolic_data
arguments: tag: D129
type: string
name: extract_symbolic_data
arguments: tag: D210
type: string
name: extract_symbolic_data
arguments: tag: D89
type: string
name: extract_symbolic_data
arguments: tag: D222
type: string
name: extract_symbolic_data
arguments: tag: D197
type: string
name: extract_symbolic_data
arguments: tag: D211
type: string
name: extract_symbolic_data
arguments: tag: D181
type: string
name: extract_symbolic_data
arguments: tag: D198
type: string
name: extract_symbolic_data
arguments: tag: D216
type: string
name: extract_symbolic_data
arguments: tag: D178
type: string
name: extract_symbolic_data
arguments: tag: D318
type: string
name: extract_symbolic_data
arguments: tag: D163
type: string
name: extract_symbolic_data
arguments: tag: D286
type: string
name: extract_symbolic_data
arguments: tag: D80
type: string
name: extract_symbolic_data
arguments: tag: D305
type: string
name: extract_symbolic_data
arguments: tag: D246
type: string
name: extract_symbolic_data
arguments: tag: D22
type: string
name: extract_symbolic_data
arguments: tag: D169
type: string
name: extract_symbolic_data
arguments: tag: D230
type: string
name: extract_symbolic_data
arguments: tag: D65
type: string
name: extract_symbolic_data
arguments: tag: D91
type: string
name: extract_symbolic_data
arguments: tag: D67
type: string
name: extract_symbolic_data
arguments: tag: D152
type: string
name: extract_symbolic_data
arguments: tag: D276
type: string
name: extract_symbolic_data
arguments: tag: D278
type: string
name: extract_symbolic_data
arguments: tag: D295
type: string

tool: D31: OPCODE-31

tool: D82: OPCODE-30

tool: D135: OPCODE-29

tool: D257: OPCODE-28

tool: D29: OPCODE-27

tool: D129: OPCODE-26

tool: D210: OPCODE-25

tool: D89: OPCODE-24

tool: D222: OPCODE-23

tool: D197: OPCODE-22

tool: D211: OPCODE-21

tool: D181: POPA

tool: D198: PUSHA

tool: D216: OPCODE-18

tool: D178: OPCODE-17

tool: D318: COS

tool: D163: SIN

tool: D286: EX2

tool: D80: LG2

tool: D305: RET

tool: D246: CAL

tool: D22: BRA

tool: D169: LIT

tool: D230: LOG

tool: D65: EXP

tool: D91: RSQ

tool: D67: RCC

tool: D152: RCP

tool: D276: NOP

tool: D278: INVALID!

tool: D295: MOV

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!";
}
```