user: Please show me the C implementation that matches the assembly code listed below:

```asm
<get_script_type_name>:
  endbr64
  cmp    $0x12,%edi
  ja     L6
  lea    D122(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
L6:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D53(%rip),%rax
  ret
  lea    D48(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D0(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D158(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D16(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D109(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D2(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D61(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D145(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D149(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D46(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D36(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D70(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D10(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D81(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D110(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D53
data_type: string
name: disassemble_data
arguments: data_tag: D48
data_type: string
name: disassemble_data
arguments: data_tag: D0
data_type: string
name: disassemble_data
arguments: data_tag: D158
data_type: string
name: disassemble_data
arguments: data_tag: D16
data_type: string
name: disassemble_data
arguments: data_tag: D109
data_type: string
name: disassemble_data
arguments: data_tag: D2
data_type: string
name: disassemble_data
arguments: data_tag: D61
data_type: string
name: disassemble_data
arguments: data_tag: D145
data_type: string
name: disassemble_data
arguments: data_tag: D149
data_type: string
name: disassemble_data
arguments: data_tag: D46
data_type: string
name: disassemble_data
arguments: data_tag: D36
data_type: string
name: disassemble_data
arguments: data_tag: D70
data_type: string
name: disassemble_data
arguments: data_tag: D10
data_type: string
name: disassemble_data
arguments: data_tag: D81
data_type: string
name: disassemble_data
arguments: data_tag: D110
data_type: string

tool: D53: respawn

tool: D48: death

tool: D0: enter

tool: D158: pickup

tool: D16: bluereturn

tool: D109: redreturn

tool: D2: whitereturn

tool: D61: lightning

tool: D145: unloading

tool: D149: disconnect

tool: D46: return

tool: D36: event

tool: D70: kill

tool: D10: reopen

tool: D81: closed

tool: D110: open

assistant: ```c
const char *get_script_type_name(int type) {
  enum {
    TYPE_CLOSED,
    TYPE_OPEN,
    TYPE_RESPAWN,
    TYPE_DEATH,
    TYPE_ENTER,
    TYPE_PICKUP,
    TYPE_BLUERETURN,
    TYPE_REDRETURN,
    TYPE_WHITERETURN,
    TYPE_LIGHTNING = 12,
    TYPE_UNLOADING,
    TYPE_DISCONNECT,
    TYPE_RETURN,
    TYPE_EVENT,
    TYPE_KILL,
    TYPE_REOPEN,
  };
  switch (type) {
  case TYPE_CLOSED:
    return "closed";
  case TYPE_OPEN:
    return "open";
  case TYPE_RESPAWN:
    return "respawn";
  case TYPE_DEATH:
    return "death";
  case TYPE_ENTER:
    return "enter";
  case TYPE_PICKUP:
    return "pickup";
  case TYPE_BLUERETURN:
    return "bluereturn";
  case TYPE_REDRETURN:
    return "redreturn";
  case TYPE_WHITERETURN:
    return "whitereturn";
  case TYPE_LIGHTNING:
    return "lightning";
  case TYPE_UNLOADING:
    return "unloading";
  case TYPE_DISCONNECT:
    return "disconnect";
  case TYPE_RETURN:
    return "return";
  case TYPE_EVENT:
    return "event";
  case TYPE_KILL:
    return "kill";
  case TYPE_REOPEN:
    return "reopen";
  default:
    return NULL;
  }
}
```