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

```asm
<prog_type_to_name>:
  endbr64
  lea    D251(%rip),%rax
  cmp    $0x200,%edi
  je     L40
  jg     L55
  cmp    $0x20,%edi
  jg     L80
  lea    D176(%rip),%rax
  test   %edi,%edi
  jle    L40
  cmp    $0x20,%edi
  ja     L113
  lea    D127(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   (%rax)
L113:
  lea    D176(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
L80:
  lea    D147(%rip),%rax
  cmp    $0x80,%edi
  je     L40
  cmp    $0x100,%edi
  jne    L122
  lea    D76(%rip),%rax
L40:
  ret
L122:
  cmp    $0x40,%edi
  lea    D89(%rip),%rdx
  lea    D176(%rip),%rax
  cmove  %rdx,%rax
  ret
  nopl   (%rax)
L55:
  lea    D96(%rip),%rax
  cmp    $0x4000,%edi
  je     L40
  jle    L116
  lea    D190(%rip),%rax
  cmp    $0x20000,%edi
  je     L40
  jle    L9
  cmp    $0x40000,%edi
  lea    D21(%rip),%rdx
  lea    D176(%rip),%rax
  cmove  %rdx,%rax
  ret
  nopl   0x0(%rax,%rax,1)
L116:
  lea    D232(%rip),%rax
  cmp    $0x1000,%edi
  je     L40
  jle    L112
  cmp    $0x2000,%edi
  lea    D121(%rip),%rdx
  lea    D176(%rip),%rax
  cmove  %rdx,%rax
  ret
L9:
  lea    D74(%rip),%rax
  cmp    $0x8000,%edi
  je     L40
  cmp    $0x10000,%edi
  lea    D131(%rip),%rdx
  lea    D176(%rip),%rax
  cmove  %rdx,%rax
  ret
L112:
  lea    D92(%rip),%rax
  cmp    $0x400,%edi
  je     L40
  cmp    $0x800,%edi
  lea    D171(%rip),%rdx
  lea    D176(%rip),%rax
  cmove  %rdx,%rax
  ret
  nopw   0x0(%rax,%rax,1)
  lea    D236(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D197(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D182(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D11(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D79(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D183(%rip),%rax
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D251
type: string
name: extract_symbolic_data
arguments: data_tag: D176
type: string
name: extract_symbolic_data
arguments: data_tag: D147
type: string
name: extract_symbolic_data
arguments: data_tag: D76
type: string
name: extract_symbolic_data
arguments: data_tag: D89
type: string
name: extract_symbolic_data
arguments: data_tag: D96
type: string
name: extract_symbolic_data
arguments: data_tag: D190
type: string
name: extract_symbolic_data
arguments: data_tag: D21
type: string
name: extract_symbolic_data
arguments: data_tag: D232
type: string
name: extract_symbolic_data
arguments: data_tag: D121
type: string
name: extract_symbolic_data
arguments: data_tag: D74
type: string
name: extract_symbolic_data
arguments: data_tag: D131
type: string
name: extract_symbolic_data
arguments: data_tag: D92
type: string
name: extract_symbolic_data
arguments: data_tag: D171
type: string
name: extract_symbolic_data
arguments: data_tag: D236
type: string
name: extract_symbolic_data
arguments: data_tag: D197
type: string
name: extract_symbolic_data
arguments: data_tag: D182
type: string
name: extract_symbolic_data
arguments: data_tag: D11
type: string
name: extract_symbolic_data
arguments: data_tag: D79
type: string
name: extract_symbolic_data
arguments: data_tag: D183
type: string

tool: D251: HPCNT

tool: D176: ERROR

tool: D147: GRALL

tool: D76: KILL

tool: D89: GREET

tool: D96: DELAY

tool: D190: DROP

tool: D21: SIT

tool: D232: EXIT

tool: D121: EXALL

tool: D74: SURRENDER

tool: D131: GET

tool: D92: RANDOM

tool: D171: SPEECH

tool: D236: FIGHT

tool: D197: GIVE

tool: D182: ENTRY

tool: D11: DEATH

tool: D79: BRIBE

tool: D183: ACT

assistant: ```c
char *prog_type_to_name(int type) {
  switch (type) {
  case (1):
    return "ACT";
  case (2048):
    return "SPEECH";
  case (1024):
    return "RANDOM";
  case (16):
    return "FIGHT";
  case (512):
    return "HPCNT";
  case (4):
    return "DEATH";
  case (8):
    return "ENTRY";
  case (64):
    return "GREET";
  case (128):
    return "GRALL";
  case (32):
    return "GIVE";
  case (2):
    return "BRIBE";
  case (256):
    return "KILL";
  case (16384):
    return "DELAY";
  case (32768):
    return "SURRENDER";
  case (4096):
    return "EXIT";
  case (8192):
    return "EXALL";
  case (65536):
    return "GET";
  case (131072):
    return "DROP";
  case (262144):
    return "SIT";
  default:
    return "ERROR";
  }
}
```