user: What would the C source look like for the assembly code provided here?

```asm
<prog_type_to_name>:
  endbr64
  lea    D10(%rip),%rax
  cmp    $0x200,%edi
  je     L77
  jg     L27
  cmp    $0x20,%edi
  jg     L116
  lea    D124(%rip),%rax
  test   %edi,%edi
  jle    L77
  cmp    $0x20,%edi
  ja     L75
  mov    %edi,%edi
  lea    D140(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D18(%rip),%rax
  ret
L75:
  lea    D124(%rip),%rax
  ret
L116:
  lea    D156(%rip),%rax
  cmp    $0x80,%edi
  je     L77
  cmp    $0x100,%edi
  jne    L65
  lea    D111(%rip),%rax
L77:
  ret
L65:
  cmp    $0x40,%edi
  lea    D124(%rip),%rax
  lea    D93(%rip),%rdx
  cmove  %rdx,%rax
  ret
L27:
  lea    D57(%rip),%rax
  cmp    $0x4000,%edi
  je     L77
  jle    L119
  lea    D35(%rip),%rax
  cmp    $0x20000,%edi
  je     L77
  jle    L31
  cmp    $0x40000,%edi
  lea    D124(%rip),%rax
  lea    D67(%rip),%rdx
  cmove  %rdx,%rax
  ret
L119:
  lea    D264(%rip),%rax
  cmp    $0x1000,%edi
  je     L77
  jle    L94
  cmp    $0x2000,%edi
  lea    D124(%rip),%rax
  lea    D154(%rip),%rdx
  cmove  %rdx,%rax
  ret
L94:
  lea    D207(%rip),%rax
  cmp    $0x400,%edi
  je     L77
  cmp    $0x800,%edi
  lea    D124(%rip),%rax
  lea    D172(%rip),%rdx
  cmove  %rdx,%rax
  ret
L31:
  lea    D114(%rip),%rax
  cmp    $0x8000,%edi
  je     L77
  cmp    $0x10000,%edi
  lea    D124(%rip),%rax
  lea    D78(%rip),%rdx
  cmove  %rdx,%rax
  ret
  lea    D211(%rip),%rax
  ret
  lea    D202(%rip),%rax
  ret
  lea    D73(%rip),%rax
  ret
  lea    D239(%rip),%rax
  ret
  lea    D12(%rip),%rax
  ret
```

tool_calls: name: read_data
arguments: tag: D10
data_type: string
name: read_data
arguments: tag: D124
data_type: string
name: read_data
arguments: tag: D18
data_type: string
name: read_data
arguments: tag: D156
data_type: string
name: read_data
arguments: tag: D111
data_type: string
name: read_data
arguments: tag: D93
data_type: string
name: read_data
arguments: tag: D57
data_type: string
name: read_data
arguments: tag: D35
data_type: string
name: read_data
arguments: tag: D67
data_type: string
name: read_data
arguments: tag: D264
data_type: string
name: read_data
arguments: tag: D154
data_type: string
name: read_data
arguments: tag: D207
data_type: string
name: read_data
arguments: tag: D172
data_type: string
name: read_data
arguments: tag: D114
data_type: string
name: read_data
arguments: tag: D78
data_type: string
name: read_data
arguments: tag: D211
data_type: string
name: read_data
arguments: tag: D202
data_type: string
name: read_data
arguments: tag: D73
data_type: string
name: read_data
arguments: tag: D239
data_type: string
name: read_data
arguments: tag: D12
data_type: string

tool: D10: HPCNT

tool: D124: ERROR

tool: D18: ACT

tool: D156: GRALL

tool: D111: KILL

tool: D93: GREET

tool: D57: DELAY

tool: D35: DROP

tool: D67: SIT

tool: D264: EXIT

tool: D154: EXALL

tool: D207: RANDOM

tool: D172: SPEECH

tool: D114: SURRENDER

tool: D78: GET

tool: D211: DEATH

tool: D202: ENTRY

tool: D73: GIVE

tool: D239: BRIBE

tool: D12: FIGHT

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