user: 请从给定的汇编指令推导出C源代码:

```asm
<h222_stream_type_str>:
  endbr64
  lea    -0x1d(%rdi),%edx
  lea    D97(%rip),%rax
  cmp    $0x60,%edx
  jbe    L17
  lea    -0x80(%rdi),%edx
  lea    D93(%rip),%rax
  cmp    $0x7f,%edx
  jbe    L17
  cmp    $0x7f,%edi
  ja     L25
  lea    D123(%rip),%rdx
  mov    %edi,%edi
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D238(%rip),%rax
L17:
  ret
  nopw   0x0(%rax,%rax,1)
L25:
  lea    D75(%rip),%rax
  ret
  lea    D307(%rip),%rax
  ret
  lea    D219(%rip),%rax
  ret
  lea    D162(%rip),%rax
  ret
  lea    D46(%rip),%rax
  ret
  lea    D116(%rip),%rax
  ret
  lea    D83(%rip),%rax
  ret
  lea    D274(%rip),%rax
  ret
  lea    D48(%rip),%rax
  ret
  lea    D1(%rip),%rax
  ret
  lea    D82(%rip),%rax
  ret
  lea    D68(%rip),%rax
  ret
  lea    D109(%rip),%rax
  ret
  lea    D147(%rip),%rax
  ret
  lea    D269(%rip),%rax
  ret
  lea    D235(%rip),%rax
  ret
  lea    D324(%rip),%rax
  ret
  lea    D326(%rip),%rax
  ret
  lea    D287(%rip),%rax
  ret
  lea    D202(%rip),%rax
  ret
  lea    D187(%rip),%rax
  ret
  lea    D43(%rip),%rax
  ret
  lea    D228(%rip),%rax
  ret
  lea    D226(%rip),%rax
  ret
  lea    D275(%rip),%rax
  ret
  lea    D256(%rip),%rax
  ret
  lea    D18(%rip),%rax
  ret
  lea    D221(%rip),%rax
  ret
  lea    D108(%rip),%rax
  ret
```

tool_calls: name: unpack_data
arguments: label: D97
data_type: string
name: unpack_data
arguments: label: D93
data_type: string
name: unpack_data
arguments: label: D238
data_type: string
name: unpack_data
arguments: label: D75
data_type: string
name: unpack_data
arguments: label: D307
data_type: string
name: unpack_data
arguments: label: D219
data_type: string
name: unpack_data
arguments: label: D162
data_type: string
name: unpack_data
arguments: label: D46
data_type: string
name: unpack_data
arguments: label: D116
data_type: string
name: unpack_data
arguments: label: D83
data_type: string
name: unpack_data
arguments: label: D274
data_type: string
name: unpack_data
arguments: label: D48
data_type: string
name: unpack_data
arguments: label: D1
data_type: string
name: unpack_data
arguments: label: D82
data_type: string
name: unpack_data
arguments: label: D68
data_type: string
name: unpack_data
arguments: label: D109
data_type: string
name: unpack_data
arguments: label: D147
data_type: string
name: unpack_data
arguments: label: D269
data_type: string
name: unpack_data
arguments: label: D235
data_type: string
name: unpack_data
arguments: label: D324
data_type: string
name: unpack_data
arguments: label: D326
data_type: string
name: unpack_data
arguments: label: D287
data_type: string
name: unpack_data
arguments: label: D202
data_type: string
name: unpack_data
arguments: label: D187
data_type: string
name: unpack_data
arguments: label: D43
data_type: string
name: unpack_data
arguments: label: D228
data_type: string
name: unpack_data
arguments: label: D226
data_type: string
name: unpack_data
arguments: label: D275
data_type: string
name: unpack_data
arguments: label: D256
data_type: string
name: unpack_data
arguments: label: D18
data_type: string
name: unpack_data
arguments: label: D221
data_type: string
name: unpack_data
arguments: label: D108
data_type: string

tool: D97: H.220.0/13818-1 reserved

tool: D93: User private

tool: D238: Reserved

tool: D75: Unrecognised

tool: D307: H.262/13818-2 video (MPEG-2) or 11172-2 constrained video

tool: D219: 11172-3 audio (MPEG-1)

tool: D162: 13818-3 audio (MPEG-2)

tool: D46: H.222.0/13818-1  private sections

tool: D116: H.222.0/13818-1 PES private data (maybe Dolby/AC-3 in DVB)

tool: D83: 13522 MHEG

tool: D274: H.222.0/13818-1 Annex A - DSM CC

tool: D48: H.222.1

tool: D1: 13818-6 type A

tool: D82: 13818-6 type B

tool: D68: 13818-6 type C

tool: D109: 13818-6 type D

tool: D147: H.222.0/13818-1 auxiliary

tool: D269: 13818-7 Audio with ADTS transport syntax

tool: D235: 14496-2 Visual (MPEG-4 part 2 video)

tool: D324: 14496-3 Audio with LATM transport syntax (14496-3/AMD 1)

tool: D326: 14496-1 SL-packetized or FlexMux stream in PES packets

tool: D287: 14496-1 SL-packetized or FlexMux stream in 14496 sections

tool: D202: ISO/IEC 13818-6 Synchronized Download Protocol

tool: D187: Metadata in PES packets

tool: D43: Metadata in metadata_sections

tool: D228: Metadata in 13818-6 Data Carousel

tool: D226: Metadata in 13818-6 Object Carousel

tool: D275: Metadata in 13818-6 Synchronized Download Protocol

tool: D256: 13818-11 MPEG-2 IPMP stream

tool: D18: H.264/14496-10 video (MPEG-4/AVC)

tool: D221: IPMP stream

tool: D108: 11172-2 video (MPEG-1)

assistant: ```c
extern const char *h222_stream_type_str(unsigned s) {
  if ((0x1C < s) && (s < 0x7E))
    return "H.220.0/13818-1 reserved";
  else if ((0x80 <= s) && (s <= 0xFF))
    return "User private";
  else
    switch (s) {
    case 0x00:
      return "Reserved";
    case 0x01:
      return "11172-2 video (MPEG-1)";
    case 0x02:
      return "H.262/13818-2 video (MPEG-2) or 11172-2 constrained video";
    case 0x03:
      return "11172-3 audio (MPEG-1)";
    case 0x04:
      return "13818-3 audio (MPEG-2)";
    case 0x05:
      return "H.222.0/13818-1  private sections";
    case 0x06:
      return "H.222.0/13818-1 PES private data (maybe Dolby/AC-3 in DVB)";
    case 0x07:
      return "13522 MHEG";
    case 0x08:
      return "H.222.0/13818-1 Annex A - DSM CC";
    case 0x09:
      return "H.222.1";
    case 0x0A:
      return "13818-6 type A";
    case 0x0B:
      return "13818-6 type B";
    case 0x0C:
      return "13818-6 type C";
    case 0x0D:
      return "13818-6 type D";
    case 0x0E:
      return "H.222.0/13818-1 auxiliary";
    case 0x0F:
      return "13818-7 Audio with ADTS transport syntax";
    case 0x10:
      return "14496-2 Visual (MPEG-4 part 2 video)";
    case 0x11:
      return "14496-3 Audio with LATM transport syntax (14496-3/AMD 1)";
    case 0x12:
      return "14496-1 SL-packetized or FlexMux stream in PES packets";
    case 0x13:
      return "14496-1 SL-packetized or FlexMux stream in 14496 sections";
    case 0x14:
      return "ISO/IEC 13818-6 Synchronized Download Protocol";
    case 0x15:
      return "Metadata in PES packets";
    case 0x16:
      return "Metadata in metadata_sections";
    case 0x17:
      return "Metadata in 13818-6 Data Carousel";
    case 0x18:
      return "Metadata in 13818-6 Object Carousel";
    case 0x19:
      return "Metadata in 13818-6 Synchronized Download Protocol";
    case 0x1A:
      return "13818-11 MPEG-2 IPMP stream";
    case 0x1B:
      return "H.264/14496-10 video (MPEG-4/AVC)";
    case 0x24:
      return "HEVC video stream";
    case 0x25:
      return "HEVC temporal video subset (profile Annex A H.265)";
    case 0x42:
      return "AVS Video";
    case 0x7F:
      return "IPMP stream";
    case 0x81:
      return "User private (commonly Dolby/AC-3 in ATSC)";
    default:
      return "Unrecognised";
    }
}
```