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

```asm
<Parser_DisplayTagInfo>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,%eax
  mov    %al,-0x8(%rbp)
  cmpb   $0x3f,-0x8(%rbp)
  ja     L488
  movzbl -0x8(%rbp),%eax
  cmp    $0x3f,%eax
  je     L191
  cmp    $0x3f,%eax
  jg     L591
  cmp    $0xe,%eax
  je     L64
  cmp    $0xe,%eax
  jg     L591
  cmp    $0x9,%eax
  je     L82
  cmp    $0xa,%eax
  je     L68
  jmp    L591
L82:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D653(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L284
L68:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D336(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L284
L64:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D514(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L284
L191:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D513(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L284
L591:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D391(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  nop
L284:
  jmp    L462
L488:
  movzbl -0x8(%rbp),%eax
  sub    $0x40,%eax
  cmp    $0xbf,%eax
  ja     L534
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D720(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D720(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D616(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D646(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D611(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D555(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D379(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D91(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D620(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D151(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D355(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D38(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D569(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D387(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D718(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D19(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D695(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D505(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D582(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D87(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D257(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D155(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D631(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D232(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D632(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D648(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D527(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D562(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D318(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D194(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D37(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D196(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D477(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D589(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D41(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D267(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D591(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D181(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D361(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D351(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D136(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D71(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D622(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D284(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D307(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D615(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D340(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D192(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D287(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D645(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D153(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D55(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D432(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D93(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D100(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D599(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D249(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D39(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D548(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D508(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D475(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D349(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D612(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D577(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D559(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D710(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D297(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  jmp    L462
L534:
  movzbl -0x8(%rbp),%edx
  mov    -0x4(%rbp),%eax
  lea    D498(%rip),%rcx
  mov    %rcx,%rsi
  mov    %eax,%edi
  call   <Parser_TsPacketLog@plt>
  nop
L462:
  leave
  ret
```

tool_calls: name: read_data
arguments: data_tag: D653
datatype: string
name: read_data
arguments: data_tag: D336
datatype: string
name: read_data
arguments: data_tag: D514
datatype: string
name: read_data
arguments: data_tag: D513
datatype: string
name: read_data
arguments: data_tag: D391
datatype: string
name: read_data
arguments: data_tag: D616
datatype: string
name: read_data
arguments: data_tag: D646
datatype: string
name: read_data
arguments: data_tag: D611
datatype: string
name: read_data
arguments: data_tag: D555
datatype: string
name: read_data
arguments: data_tag: D379
datatype: string
name: read_data
arguments: data_tag: D91
datatype: string
name: read_data
arguments: data_tag: D620
datatype: string
name: read_data
arguments: data_tag: D151
datatype: string
name: read_data
arguments: data_tag: D355
datatype: string
name: read_data
arguments: data_tag: D38
datatype: string
name: read_data
arguments: data_tag: D569
datatype: string
name: read_data
arguments: data_tag: D387
datatype: string
name: read_data
arguments: data_tag: D718
datatype: string
name: read_data
arguments: data_tag: D19
datatype: string
name: read_data
arguments: data_tag: D695
datatype: string
name: read_data
arguments: data_tag: D505
datatype: string
name: read_data
arguments: data_tag: D582
datatype: string
name: read_data
arguments: data_tag: D87
datatype: string
name: read_data
arguments: data_tag: D257
datatype: string
name: read_data
arguments: data_tag: D155
datatype: string
name: read_data
arguments: data_tag: D631
datatype: string
name: read_data
arguments: data_tag: D232
datatype: string
name: read_data
arguments: data_tag: D632
datatype: string
name: read_data
arguments: data_tag: D648
datatype: string
name: read_data
arguments: data_tag: D527
datatype: string
name: read_data
arguments: data_tag: D562
datatype: string
name: read_data
arguments: data_tag: D318
datatype: string
name: read_data
arguments: data_tag: D194
datatype: string
name: read_data
arguments: data_tag: D37
datatype: string
name: read_data
arguments: data_tag: D196
datatype: string
name: read_data
arguments: data_tag: D477
datatype: string
name: read_data
arguments: data_tag: D589
datatype: string
name: read_data
arguments: data_tag: D41
datatype: string
name: read_data
arguments: data_tag: D267
datatype: string
name: read_data
arguments: data_tag: D591
datatype: string
name: read_data
arguments: data_tag: D181
datatype: string
name: read_data
arguments: data_tag: D361
datatype: string
name: read_data
arguments: data_tag: D351
datatype: string
name: read_data
arguments: data_tag: D136
datatype: string
name: read_data
arguments: data_tag: D71
datatype: string
name: read_data
arguments: data_tag: D622
datatype: string
name: read_data
arguments: data_tag: D284
datatype: string
name: read_data
arguments: data_tag: D307
datatype: string
name: read_data
arguments: data_tag: D615
datatype: string
name: read_data
arguments: data_tag: D340
datatype: string
name: read_data
arguments: data_tag: D192
datatype: string
name: read_data
arguments: data_tag: D287
datatype: string
name: read_data
arguments: data_tag: D645
datatype: string
name: read_data
arguments: data_tag: D153
datatype: string
name: read_data
arguments: data_tag: D55
datatype: string
name: read_data
arguments: data_tag: D432
datatype: string
name: read_data
arguments: data_tag: D93
datatype: string
name: read_data
arguments: data_tag: D100
datatype: string
name: read_data
arguments: data_tag: D599
datatype: string
name: read_data
arguments: data_tag: D249
datatype: string
name: read_data
arguments: data_tag: D39
datatype: string
name: read_data
arguments: data_tag: D548
datatype: string
name: read_data
arguments: data_tag: D508
datatype: string
name: read_data
arguments: data_tag: D475
datatype: string
name: read_data
arguments: data_tag: D349
datatype: string
name: read_data
arguments: data_tag: D612
datatype: string
name: read_data
arguments: data_tag: D577
datatype: string
name: read_data
arguments: data_tag: D559
datatype: string
name: read_data
arguments: data_tag: D710
datatype: string
name: read_data
arguments: data_tag: D297
datatype: string
name: read_data
arguments: data_tag: D498
datatype: string

tool: D653: ******Descriptor tag : 0x%x (CAT PMT) : ca_descriptor ******


tool: D336: ******Descriptor tag : 0x%x (PMT) : iso639_language_descriptor ******


tool: D514: ******Descriptor tag : 0x%x (PMT) : maxinum_bitrate_descriptor ******


tool: D513: ******Descriptor tag : 0x%x (PMT) : reserved_descriptor ******


tool: D391: ******Descriptor tag : 0x%x : unkown ******


tool: D616: ******Descriptor tag : 0x%x (NIT) : network_name_descriptor ******


tool: D646: ******Descriptor tag : 0x%x (NIT BAT) : service_list_descriptor ******


tool: D611: ******Descriptor tag : 0x%x (NIT BAT SDT EIT SIT) : stuffing_descriptor ******


tool: D555: ******Descriptor tag : 0x%x (NIT) : satellite_delivery_system_descriptor ******


tool: D379: ******Descriptor tag : 0x%x (NIT) : cable_delivery_system_descriptor ******


tool: D91: ******Descriptor tag : 0x%x (PMT) : VBI_data_descriptor ******


tool: D620: ******Descriptor tag : 0x%x (PMT) : VBI_teletext_descriptor ******


tool: D151: ******Descriptor tag : 0x%x (BAT SIT) : bouquet_name_descriptor ******


tool: D355: ******Descriptor tag : 0x%x (SDT SIT) : service_descriptor ******


tool: D38: ******Descriptor tag : 0x%x (BAT SDT SIT) : country_availability_descriptor ******


tool: D569: ******Descriptor tag : 0x%x (NIT BAT SDT EIT SIT) : linkage_descriptor ******


tool: D387: ******Descriptor tag : 0x%x (SDT SIT) : NVOD_reference_descriptor ******


tool: D718: ******Descriptor tag : 0x%x (SDT SIT) : time_shifted_service_descriptor ******


tool: D19: ******Descriptor tag : 0x%x (EIT SIT) : short_event_descriptor ******


tool: D695: ******Descriptor tag : 0x%x (EIT SIT) : extended_event_descriptor ******


tool: D505: ******Descriptor tag : 0x%x (EIT SIT) : time_shifted_event_descriptor ******


tool: D582: ******Descriptor tag : 0x%x (SDT EIT SIT) : component_descriptor ******


tool: D87: ******Descriptor tag : 0x%x (SDT PMT SIT) : mosaic_descriptor ******


tool: D257: ******Descriptor tag : 0x%x (PMT) : stream_identifier_descriptor ******


tool: D155: ******Descriptor tag : 0x%x (BAT SDT EIT SIT) : CA_identifier_descriptor ******


tool: D631: ******Descriptor tag : 0x%x (EIT SIT) : content_descriptor ******


tool: D232: ******Descriptor tag : 0x%x (EIT SIT) : parental_rating_descriptor ******


tool: D632: ******Descriptor tag : 0x%x (PMT) : teletext_descriptor ******


tool: D648: ******Descriptor tag : 0x%x (SDT EIT SIT) : telephone_descriptor ******


tool: D527: ******Descriptor tag : 0x%x (TOT) : local_time_offset_descriptor ******


tool: D562: ******Descriptor tag : 0x%x (PMT) : subtitling_descriptor ******


tool: D318: ******Descriptor tag : 0x%x (NIT) : terrestrial_delivery_system_descriptor ******


tool: D194: ******Descriptor tag : 0x%x (NIT) : multilingual_network_name_descriptor ******


tool: D37: ******Descriptor tag : 0x%x (BAT) : multilingual_bouquet_name_descriptor ******


tool: D196: ******Descriptor tag : 0x%x (SDT SIT) : multilingual_service_name_descriptor ******


tool: D477: ******Descriptor tag : 0x%x (EIT SIT) : multilingual_component_descriptor ******


tool: D589: ******Descriptor tag : 0x%x (NIT BAT SDT EIT PMT SIT) : private_data_specifier_descriptor ******


tool: D41: ******Descriptor tag : 0x%x (PMT) : service_move_descriptor ******


tool: D267: ******Descriptor tag : 0x%x (EIT SIT) : short_smoothing_buffer_descriptor ******


tool: D591: ******Descriptor tag : 0x%x (NIT) : frequency_list_descriptor ******


tool: D181: ******Descriptor tag : 0x%x (SIT) : partial_transport_stream_descriptor ******


tool: D361: ******Descriptor tag : 0x%x (SDT EIT) : data_broadcast_descriptor ******


tool: D351: ******Descriptor tag : 0x%x (PMT) : scrambling_descriptor ******


tool: D136: ******Descriptor tag : 0x%x (PMT) : data_broadcast_id_descriptor ******


tool: D71: ******Descriptor tag : 0x%x : transport_stream_descriptor ******


tool: D622: ******Descriptor tag : 0x%x : DSNG_descriptor ******


tool: D284: ******Descriptor tag : 0x%x (EIT) : PDC_descriptor ******


tool: D307: ******Descriptor tag : 0x%x (PMT) : AC-3_descriptor ******


tool: D615: ******Descriptor tag : 0x%x (PMT) : ancillary_data_descriptor ******


tool: D340: ******Descriptor tag : 0x%x (NIT) : cell_list_descriptor ******


tool: D192: ******Descriptor tag : 0x%x (NIT) : cell_frequency_link_descriptor ******


tool: D287: ******Descriptor tag : 0x%x (SDT) : announcement_support_descriptor ******


tool: D645: ******Descriptor tag : 0x%x (PMT) : application_signalling_descriptor ******


tool: D153: ******Descriptor tag : 0x%x (PMT) : adaptation_field_data_descriptor ******


tool: D55: ******Descriptor tag : 0x%x (SDT) : service_identifier_descriptor ******


tool: D432: ******Descriptor tag : 0x%x (SDT) : service_availability_descriptor ******


tool: D93: ******Descriptor tag : 0x%x (NIT BAT SDT) : default_authority_descriptor ******


tool: D100: ******Descriptor tag : 0x%x (PMT) : related_content_descriptor ******


tool: D599: ******Descriptor tag : 0x%x (EIT) : TVA_id_descriptor ******


tool: D249: ******Descriptor tag : 0x%x (EIT) : content_identifier_descriptor ******


tool: D39: ******Descriptor tag : 0x%x (NIT) : time_slice_fec_identifier_descriptor ******


tool: D548: ******Descriptor tag : 0x%x (PMT) : ECM_repetition_rate_descriptor ******


tool: D508: ******Descriptor tag : 0x%x (NIT) : S2_satellite_delivery_system_descriptor ******


tool: D475: ******Descriptor tag : 0x%x (PMT) : enhanced_AC-3_descriptor ******


tool: D349: ******Descriptor tag : 0x%x (PMT) : DTS descriptor ******


tool: D612: ******Descriptor tag : 0x%x (PMT) : AAC descriptor ******


tool: D577: ******Descriptor tag : 0x%x (NIT BAT SDT EIT TOT PMT SIT) : XAIT location descriptor ******


tool: D559: ******Descriptor tag : 0x%x (NIT BAT SDT EIT) : FTA_content_management_descriptor ******


tool: D710: ******Descriptor tag : 0x%x (NIT BAT SDT EIT TOT PMT SIT) : extension descriptor ******


tool: D297: ******Descriptor tag : 0x%x : forbidden ******


tool: D498: ******Descriptor tag : 0x%x : user defined ******


assistant: ```c
void Parser_DisplayTagInfo(unsigned int type, unsigned char tag) {
  if (tag < 0x40) {
    switch (tag) {
    case 0x09:
      Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (CAT PMT) : ca_descriptor ******\n", tag);
      break;
    case 0x0A:
      Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : iso639_language_descriptor ******\n", tag);
      break;
    case 0x0E:
      Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : maxinum_bitrate_descriptor ******\n", tag);
      break;
    case 0x3F:
      Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : reserved_descriptor ******\n", tag);
      break;
    default:
      Parser_TsPacketLog(type, "******Descriptor tag : 0x%x : unkown ******\n", tag);
      break;
    }
    return;
  }
  switch (tag) {
  case 0x40:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : network_name_descriptor ******\n", tag);
    break;
  case 0x41:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT) : service_list_descriptor ******\n", tag);
    break;
  case 0x42:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT SIT) : stuffing_descriptor ******\n", tag);
    break;
  case 0x43:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : satellite_delivery_system_descriptor ******\n", tag);
    break;
  case 0x44:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : cable_delivery_system_descriptor ******\n", tag);
    break;
  case 0x45:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : VBI_data_descriptor ******\n", tag);
    break;
  case 0x46:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : VBI_teletext_descriptor ******\n", tag);
    break;
  case 0x47:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (BAT SIT) : bouquet_name_descriptor ******\n", tag);
    break;
  case 0x48:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT SIT) : service_descriptor ******\n", tag);
    break;
  case 0x49:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (BAT SDT SIT) : country_availability_descriptor ******\n", tag);
    break;
  case 0x4A:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT SIT) : linkage_descriptor ******\n", tag);
    break;
  case 0x4B:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT SIT) : NVOD_reference_descriptor ******\n", tag);
    break;
  case 0x4C:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT SIT) : time_shifted_service_descriptor ******\n", tag);
    break;
  case 0x4D:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : short_event_descriptor ******\n", tag);
    break;
  case 0x4E:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : extended_event_descriptor ******\n", tag);
    break;
  case 0x4F:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : time_shifted_event_descriptor ******\n", tag);
    break;
  case 0x50:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT EIT SIT) : component_descriptor ******\n", tag);
    break;
  case 0x51:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT PMT SIT) : mosaic_descriptor ******\n", tag);
    break;
  case 0x52:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : stream_identifier_descriptor ******\n", tag);
    break;
  case 0x53:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (BAT SDT EIT SIT) : CA_identifier_descriptor ******\n", tag);
    break;
  case 0x54:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : content_descriptor ******\n", tag);
    break;
  case 0x55:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : parental_rating_descriptor ******\n", tag);
    break;
  case 0x56:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : teletext_descriptor ******\n", tag);
    break;
  case 0x57:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT EIT SIT) : telephone_descriptor ******\n", tag);
    break;
  case 0x58:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (TOT) : local_time_offset_descriptor ******\n", tag);
    break;
  case 0x59:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : subtitling_descriptor ******\n", tag);
    break;
  case 0x5A:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : terrestrial_delivery_system_descriptor ******\n", tag);
    break;
  case 0x5B:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : multilingual_network_name_descriptor ******\n", tag);
    break;
  case 0x5C:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (BAT) : multilingual_bouquet_name_descriptor ******\n", tag);
    break;
  case 0x5D:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT SIT) : multilingual_service_name_descriptor ******\n", tag);
    break;
  case 0x5E:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : multilingual_component_descriptor ******\n", tag);
    break;
  case 0x5F:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT PMT SIT) : private_data_specifier_descriptor ******\n", tag);
    break;
  case 0x60:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : service_move_descriptor ******\n", tag);
    break;
  case 0x61:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT SIT) : short_smoothing_buffer_descriptor ******\n", tag);
    break;
  case 0x62:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : frequency_list_descriptor ******\n", tag);
    break;
  case 0x63:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SIT) : partial_transport_stream_descriptor ******\n", tag);
    break;
  case 0x64:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT EIT) : data_broadcast_descriptor ******\n", tag);
    break;
  case 0x65:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : scrambling_descriptor ******\n", tag);
    break;
  case 0x66:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : data_broadcast_id_descriptor ******\n", tag);
    break;
  case 0x67:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x : transport_stream_descriptor ******\n", tag);
    break;
  case 0x68:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x : DSNG_descriptor ******\n", tag);
    break;
  case 0x69:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT) : PDC_descriptor ******\n", tag);
    break;
  case 0x6A:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : AC-3_descriptor ******\n", tag);
    break;
  case 0x6B:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : ancillary_data_descriptor ******\n", tag);
    break;
  case 0x6C:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : cell_list_descriptor ******\n", tag);
    break;
  case 0x6D:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : cell_frequency_link_descriptor ******\n", tag);
    break;
  case 0x6E:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT) : announcement_support_descriptor ******\n", tag);
    break;
  case 0x6F:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : application_signalling_descriptor ******\n", tag);
    break;
  case 0x70:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : adaptation_field_data_descriptor ******\n", tag);
    break;
  case 0x71:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT) : service_identifier_descriptor ******\n", tag);
    break;
  case 0x72:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (SDT) : service_availability_descriptor ******\n", tag);
    break;
  case 0x73:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT) : default_authority_descriptor ******\n", tag);
    break;
  case 0x74:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : related_content_descriptor ******\n", tag);
    break;
  case 0x75:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT) : TVA_id_descriptor ******\n", tag);
    break;
  case 0x76:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (EIT) : content_identifier_descriptor ******\n", tag);
    break;
  case 0x77:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : time_slice_fec_identifier_descriptor ******\n", tag);
    break;
  case 0x78:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : ECM_repetition_rate_descriptor ******\n", tag);
    break;
  case 0x79:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT) : S2_satellite_delivery_system_descriptor ******\n", tag);
    break;
  case 0x7A:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : enhanced_AC-3_descriptor ******\n", tag);
    break;
  case 0x7B:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : DTS descriptor ******\n", tag);
    break;
  case 0x7C:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (PMT) : AAC descriptor ******\n", tag);
    break;
  case 0x7D:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT TOT PMT SIT) : XAIT location descriptor ******\n", tag);
    break;
  case 0x7E:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT) : FTA_content_management_descriptor ******\n", tag);
    break;
  case 0x7F:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x (NIT BAT SDT EIT TOT PMT SIT) : extension descriptor ******\n", tag);
    break;
  case 0xFF:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x : forbidden ******\n", tag);
    break;
  default:
    Parser_TsPacketLog(type, "******Descriptor tag : 0x%x : user defined ******\n", tag);
    break;
  }
}
```