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

```asm
<idstr>:
  endbr64
  cmp    $0x1e,%edi
  ja     L1
  lea    D51(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
L1:
  lea    D141(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D52(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D23(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D45(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D284(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D193(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D241(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D205(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D125(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D234(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D87(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D21(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D287(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D215(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D164(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D246(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D54(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D90(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D233(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D17(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D226(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D270(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D218(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D60(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D217(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D273(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D108(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D161(%rip),%rax
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D141
type_guessed: string
name: unpack_data
arguments: data_label: D52
type_guessed: string
name: unpack_data
arguments: data_label: D23
type_guessed: string
name: unpack_data
arguments: data_label: D45
type_guessed: string
name: unpack_data
arguments: data_label: D284
type_guessed: string
name: unpack_data
arguments: data_label: D193
type_guessed: string
name: unpack_data
arguments: data_label: D241
type_guessed: string
name: unpack_data
arguments: data_label: D205
type_guessed: string
name: unpack_data
arguments: data_label: D125
type_guessed: string
name: unpack_data
arguments: data_label: D234
type_guessed: string
name: unpack_data
arguments: data_label: D87
type_guessed: string
name: unpack_data
arguments: data_label: D21
type_guessed: string
name: unpack_data
arguments: data_label: D287
type_guessed: string
name: unpack_data
arguments: data_label: D215
type_guessed: string
name: unpack_data
arguments: data_label: D164
type_guessed: string
name: unpack_data
arguments: data_label: D246
type_guessed: string
name: unpack_data
arguments: data_label: D54
type_guessed: string
name: unpack_data
arguments: data_label: D90
type_guessed: string
name: unpack_data
arguments: data_label: D233
type_guessed: string
name: unpack_data
arguments: data_label: D17
type_guessed: string
name: unpack_data
arguments: data_label: D226
type_guessed: string
name: unpack_data
arguments: data_label: D270
type_guessed: string
name: unpack_data
arguments: data_label: D218
type_guessed: string
name: unpack_data
arguments: data_label: D60
type_guessed: string
name: unpack_data
arguments: data_label: D217
type_guessed: string
name: unpack_data
arguments: data_label: D273
type_guessed: string
name: unpack_data
arguments: data_label: D108
type_guessed: string
name: unpack_data
arguments: data_label: D161
type_guessed: string

tool: D141: Unknown (Reserved)

tool: D52: BMPString

tool: D23: UniversalString

tool: D45: GeneralString

tool: D284: VisibleString

tool: D193: GraphicString

tool: D241: GeneralizedTime

tool: D205: UTCTime

tool: D125: IA5String

tool: D234: VideotexString

tool: D87: TeletexString

tool: D21: PrintableString

tool: D287: NumericString

tool: D215: SET

tool: D164: SEQUENCE

tool: D246: UTF8String

tool: D54: EMBEDDED PDV

tool: D90: ENUMERATED

tool: D233: REAL

tool: D17: EXTERNAL

tool: D226: ObjectDescriptor

tool: D270: OBJECT IDENTIFIER

tool: D218: NULL

tool: D60: OCTET STRING

tool: D217: BIT STRING

tool: D273: INTEGER

tool: D108: End-of-contents octets

tool: D161: BOOLEAN

assistant: ```c
char *idstr(const int tagID) {
  switch (tagID) {
  case 0x00:
    return ("End-of-contents octets");
  case 0x01:
    return ("BOOLEAN");
  case 0x02:
    return ("INTEGER");
  case 0x03:
    return ("BIT STRING");
  case 0x04:
    return ("OCTET STRING");
  case 0x05:
    return ("NULL");
  case 0x06:
    return ("OBJECT IDENTIFIER");
  case 0x07:
    return ("ObjectDescriptor");
  case 0x08:
    return ("EXTERNAL");
  case 0x09:
    return ("REAL");
  case 0x0A:
    return ("ENUMERATED");
  case 0x0B:
    return ("EMBEDDED PDV");
  case 0x0C:
    return ("UTF8String");
  case 0x10:
    return ("SEQUENCE");
  case 0x11:
    return ("SET");
  case 0x12:
    return ("NumericString");
  case 0x13:
    return ("PrintableString");
  case 0x14:
    return ("TeletexString");
  case 0x15:
    return ("VideotexString");
  case 0x16:
    return ("IA5String");
  case 0x17:
    return ("UTCTime");
  case 0x18:
    return ("GeneralizedTime");
  case 0x19:
    return ("GraphicString");
  case 0x1A:
    return ("VisibleString");
  case 0x1B:
    return ("GeneralString");
  case 0x1C:
    return ("UniversalString");
  case 0x1E:
    return ("BMPString");
  default:
    return ("Unknown (Reserved)");
  }
}
```