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

```asm
<ipv4_optnumber>:
  endbr64
  cmp    $0x1e,%dil
  ja     L5
  lea    D174(%rip),%rdx
  movzbl %dil,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L5:
  lea    D222(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D65(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D7(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D109(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D30(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D250(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D259(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D33(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D211(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D233(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D131(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D83(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D76(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D203(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D266(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D15(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D263(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D44(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D40(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D133(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D182(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D244(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D50(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D108(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D224(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D205(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D86(%rip),%rax
  ret
```

tool_calls: name: unpack_data
arguments: tag: D222
type_infered: string
name: unpack_data
arguments: tag: D65
type_infered: string
name: unpack_data
arguments: tag: D7
type_infered: string
name: unpack_data
arguments: tag: D109
type_infered: string
name: unpack_data
arguments: tag: D30
type_infered: string
name: unpack_data
arguments: tag: D250
type_infered: string
name: unpack_data
arguments: tag: D259
type_infered: string
name: unpack_data
arguments: tag: D33
type_infered: string
name: unpack_data
arguments: tag: D211
type_infered: string
name: unpack_data
arguments: tag: D233
type_infered: string
name: unpack_data
arguments: tag: D131
type_infered: string
name: unpack_data
arguments: tag: D83
type_infered: string
name: unpack_data
arguments: tag: D76
type_infered: string
name: unpack_data
arguments: tag: D203
type_infered: string
name: unpack_data
arguments: tag: D266
type_infered: string
name: unpack_data
arguments: tag: D15
type_infered: string
name: unpack_data
arguments: tag: D263
type_infered: string
name: unpack_data
arguments: tag: D44
type_infered: string
name: unpack_data
arguments: tag: D40
type_infered: string
name: unpack_data
arguments: tag: D133
type_infered: string
name: unpack_data
arguments: tag: D182
type_infered: string
name: unpack_data
arguments: tag: D244
type_infered: string
name: unpack_data
arguments: tag: D50
type_infered: string
name: unpack_data
arguments: tag: D108
type_infered: string
name: unpack_data
arguments: tag: D224
type_infered: string
name: unpack_data
arguments: tag: D205
type_infered: string
name: unpack_data
arguments: tag: D86
type_infered: string

tool: D222: UNKNOWN

tool: D65: EXP

tool: D7: QS

tool: D109: UMP

tool: D30: DPS

tool: D250: SDB

tool: D259: RTRALT

tool: D33: ADDEXT

tool: D211: TR

tool: D233: EIP

tool: D131: IMITD

tool: D83: ENCODE

tool: D76: VISA

tool: D203: FINN

tool: D266: MTUR

tool: D15: MTUP

tool: D263: ZSU

tool: D44: SSR

tool: D40: SID

tool: D133: RR

tool: D182: CIPSO

tool: D244: E-SEC

tool: D50: TS

tool: D108: LSR

tool: D224: SEC

tool: D205: EOOL

tool: D86: NOP

assistant: ```c
char *ipv4_optnumber(unsigned char id) {
  switch (id) {
  case 0:
    return ("EOOL");
  case 1:
    return ("NOP");
  case 2:
    return ("SEC");
  case 3:
    return ("LSR");
  case 4:
    return ("TS");
  case 5:
    return ("E-SEC");
  case 6:
    return ("CIPSO");
  case 7:
    return ("RR");
  case 8:
    return ("SID");
  case 9:
    return ("SSR");
  case 10:
    return ("ZSU");
  case 11:
    return ("MTUP");
  case 12:
    return ("MTUR");
  case 13:
    return ("FINN");
  case 14:
    return ("VISA");
  case 15:
    return ("ENCODE");
  case 16:
    return ("IMITD");
  case 17:
    return ("EIP");
  case 18:
    return ("TR");
  case 19:
    return ("ADDEXT");
  case 20:
    return ("RTRALT");
  case 21:
    return ("SDB");
  case 23:
    return ("DPS");
  case 24:
    return ("UMP");
  case 25:
    return ("QS");
  case 30:
    return ("EXP");
  }
  return ("UNKNOWN");
}
```