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

```asm
<pr_type>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,%eax
  mov    %al,-0x4(%rbp)
  movzbl -0x4(%rbp),%eax
  cmp    $0x4,%eax
  jg     L18
  test   %eax,%eax
  jns    L39
  jmp    L62
L151:
  add    $0xffffff80,%eax
  cmp    $0x9,%eax
  ja     L62
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D49(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D49(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L39:
  cmp    $0x4,%eax
  ja     L62
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D8(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D8(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L18:
  cmp    $0x89,%eax
  jg     L62
  cmp    $0x80,%eax
  jge    L151
  jmp    L62
  lea    D147(%rip),%rax
  jmp    L187
  lea    D183(%rip),%rax
  jmp    L187
  lea    D86(%rip),%rax
  jmp    L187
  lea    D185(%rip),%rax
  jmp    L187
  lea    D150(%rip),%rax
  jmp    L187
  lea    D76(%rip),%rax
  jmp    L187
  lea    D126(%rip),%rax
  jmp    L187
  lea    D16(%rip),%rax
  jmp    L187
  lea    D142(%rip),%rax
  jmp    L187
  lea    D174(%rip),%rax
  jmp    L187
  lea    D42(%rip),%rax
  jmp    L187
  lea    D155(%rip),%rax
  jmp    L187
  lea    D188(%rip),%rax
  jmp    L187
  lea    D194(%rip),%rax
  jmp    L187
  lea    D2(%rip),%rax
  jmp    L187
L62:
  lea    D127(%rip),%rax
L187:
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_label: D147
datatype: string
name: read_data
arguments: data_label: D183
datatype: string
name: read_data
arguments: data_label: D86
datatype: string
name: read_data
arguments: data_label: D185
datatype: string
name: read_data
arguments: data_label: D150
datatype: string
name: read_data
arguments: data_label: D76
datatype: string
name: read_data
arguments: data_label: D126
datatype: string
name: read_data
arguments: data_label: D16
datatype: string
name: read_data
arguments: data_label: D142
datatype: string
name: read_data
arguments: data_label: D174
datatype: string
name: read_data
arguments: data_label: D42
datatype: string
name: read_data
arguments: data_label: D155
datatype: string
name: read_data
arguments: data_label: D188
datatype: string
name: read_data
arguments: data_label: D194
datatype: string
name: read_data
arguments: data_label: D2
datatype: string
name: read_data
arguments: data_label: D127
datatype: string

tool: D147: Error

tool: D183: Destination Unreachable

tool: D86: Packet Too Big

tool: D185: Time Exceeded in Transit

tool: D150: Parameter Problem

tool: D76: Echo Request

tool: D126: Echo Reply

tool: D16: Membership Query

tool: D142: Membership Report

tool: D174: Membership Reduction

tool: D42: Router Solicitation

tool: D155: Router Advertisement

tool: D188: Neighbor Solicitation

tool: D194: Neighbor Advertisement

tool: D2: Redirect

tool: D127: OUT-OF-RANGE

assistant: ```c
char *pr_type(unsigned char t) {
  switch (t) {
  case 0:
    return "Error";
  case 1:
    return "Destination Unreachable";
  case 2:
    return "Packet Too Big";
  case 3:
    return "Time Exceeded in Transit";
  case 4:
    return "Parameter Problem";
  case 128:
    return "Echo Request";
  case 129:
    return "Echo Reply";
  case 130:
    return "Membership Query";
  case 131:
    return "Membership Report";
  case 132:
    return "Membership Reduction";
  case 133:
    return "Router Solicitation";
  case 134:
    return "Router Advertisement";
  case 135:
    return "Neighbor Solicitation";
  case 136:
    return "Neighbor Advertisement";
  case 137:
    return "Redirect";
  }
  return ("OUT-OF-RANGE");
}
```