user: Demonstrate the C code that generates the assembly output below:

```asm
<prog_type_to_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  cmpl   $0x40000,-0x4(%rbp)
  je     L72
  cmpl   $0x40000,-0x4(%rbp)
  jg     L236
  cmpl   $0x20000,-0x4(%rbp)
  je     L258
  cmpl   $0x20000,-0x4(%rbp)
  jg     L236
  cmpl   $0x10000,-0x4(%rbp)
  je     L45
  cmpl   $0x10000,-0x4(%rbp)
  jg     L236
  cmpl   $0x8000,-0x4(%rbp)
  je     L375
  cmpl   $0x8000,-0x4(%rbp)
  jg     L236
  cmpl   $0x4000,-0x4(%rbp)
  je     L331
  cmpl   $0x4000,-0x4(%rbp)
  jg     L236
  cmpl   $0x2000,-0x4(%rbp)
  je     L40
  cmpl   $0x2000,-0x4(%rbp)
  jg     L236
  cmpl   $0x1000,-0x4(%rbp)
  je     L209
  cmpl   $0x1000,-0x4(%rbp)
  jg     L236
  cmpl   $0x800,-0x4(%rbp)
  je     L454
  cmpl   $0x800,-0x4(%rbp)
  jg     L236
  cmpl   $0x400,-0x4(%rbp)
  je     L101
  cmpl   $0x400,-0x4(%rbp)
  jg     L236
  cmpl   $0x200,-0x4(%rbp)
  je     L46
  cmpl   $0x200,-0x4(%rbp)
  jg     L236
  cmpl   $0x100,-0x4(%rbp)
  je     L17
  cmpl   $0x100,-0x4(%rbp)
  jg     L236
  cmpl   $0x80,-0x4(%rbp)
  je     L240
  cmpl   $0x80,-0x4(%rbp)
  jg     L236
  cmpl   $0x20,-0x4(%rbp)
  jg     L428
  cmpl   $0x0,-0x4(%rbp)
  jle    L236
  cmpl   $0x20,-0x4(%rbp)
  ja     L236
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D33(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D33(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L428:
  cmpl   $0x40,-0x4(%rbp)
  je     L227
  jmp    L236
  lea    D60(%rip),%rax
  jmp    L306
L454:
  lea    D123(%rip),%rax
  jmp    L306
L101:
  lea    D4(%rip),%rax
  jmp    L306
  lea    D191(%rip),%rax
  jmp    L306
L46:
  lea    D20(%rip),%rax
  jmp    L306
  lea    D135(%rip),%rax
  jmp    L306
  lea    D6(%rip),%rax
  jmp    L306
L227:
  lea    D3(%rip),%rax
  jmp    L306
L240:
  lea    D73(%rip),%rax
  jmp    L306
  lea    D129(%rip),%rax
  jmp    L306
  lea    D204(%rip),%rax
  jmp    L306
L17:
  lea    D52(%rip),%rax
  jmp    L306
L331:
  lea    D80(%rip),%rax
  jmp    L306
L375:
  lea    D177(%rip),%rax
  jmp    L306
L209:
  lea    D96(%rip),%rax
  jmp    L306
L40:
  lea    D68(%rip),%rax
  jmp    L306
L45:
  lea    D144(%rip),%rax
  jmp    L306
L258:
  lea    D69(%rip),%rax
  jmp    L306
L72:
  lea    D176(%rip),%rax
  jmp    L306
L236:
  lea    D208(%rip),%rax
L306:
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D60
datatype: string
name: parse_data
arguments: data_label: D123
datatype: string
name: parse_data
arguments: data_label: D4
datatype: string
name: parse_data
arguments: data_label: D191
datatype: string
name: parse_data
arguments: data_label: D20
datatype: string
name: parse_data
arguments: data_label: D135
datatype: string
name: parse_data
arguments: data_label: D6
datatype: string
name: parse_data
arguments: data_label: D3
datatype: string
name: parse_data
arguments: data_label: D73
datatype: string
name: parse_data
arguments: data_label: D129
datatype: string
name: parse_data
arguments: data_label: D204
datatype: string
name: parse_data
arguments: data_label: D52
datatype: string
name: parse_data
arguments: data_label: D80
datatype: string
name: parse_data
arguments: data_label: D177
datatype: string
name: parse_data
arguments: data_label: D96
datatype: string
name: parse_data
arguments: data_label: D68
datatype: string
name: parse_data
arguments: data_label: D144
datatype: string
name: parse_data
arguments: data_label: D69
datatype: string
name: parse_data
arguments: data_label: D176
datatype: string
name: parse_data
arguments: data_label: D208
datatype: string

tool: D60: ACT

tool: D123: SPEECH

tool: D4: RANDOM

tool: D191: FIGHT

tool: D20: HPCNT

tool: D135: DEATH

tool: D6: ENTRY

tool: D3: GREET

tool: D73: GRALL

tool: D129: GIVE

tool: D204: BRIBE

tool: D52: KILL

tool: D80: DELAY

tool: D177: SURRENDER

tool: D96: EXIT

tool: D68: EXALL

tool: D144: GET

tool: D69: DROP

tool: D176: SIT

tool: D208: ERROR

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