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

```asm
<BGBDT_TagParse_ParseTokenBasic>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    -0x30(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x30(%rbp),%rax
  add    $0xfc,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EatWhite@plt>
  cltq
  mov    %rax,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L1166
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L1166:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L1313
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x24,%al
  je     L1313
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L769
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5a,%al
  jle    L1313
L769:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x60,%al
  jle    L1245
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x7a,%al
  jg     L1245
L1313:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x49,(%rax)
  jmp    L239
L181:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L239:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L719
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L719
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L181
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x24,%al
  je     L181
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L95
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5a,%al
  jle    L181
L95:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x60,%al
  jle    L1654
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x7a,%al
  jle    L181
L1654:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L719
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L181
L719:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L1245:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L71
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jg     L71
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x23,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x78,%al
  je     L1617
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x62,%al
  je     L1617
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x63,%al
  je     L1617
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x64,%al
  jne    L1546
L1617:
  mov    -0x30(%rbp),%rax
  movb   $0x7c,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L905
L1033:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L905:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L118
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L118
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L1033
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L1655
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L1033
L1655:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x40,%al
  jle    L1629
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x46,%al
  jle    L1033
L1629:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x60,%al
  jle    L118
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x66,%al
  jle    L1033
L118:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L673:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L1546:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L145
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L145
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L673
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L145
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L673
L145:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L433
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1495
L75:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L1495:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1282
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L1282
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L75
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L1282
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L75
L1282:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x65,%al
  je     L595
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x45,%al
  jne    L1729
L595:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2b,%al
  je     L202
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  jne    L1365
L202:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1365
L22:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L1365:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1729
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jae    L1729
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  je     L22
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jle    L1729
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x39,%al
  jle    L22
  jmp    L1729
L433:
  mov    -0x30(%rbp),%rax
  movb   $0x7c,(%rax)
L1729:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L71:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L708
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L168
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L168
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x58,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L168:
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x53,(%rax)
  jmp    L1701
L1448:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L9
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x78,%eax
  jg     L1701
  cmp    $0x5c,%eax
  jge    L178
  cmp    $0x22,%eax
  je     L1185
  cmp    $0x27,%eax
  je     L1400
  jmp    L775
L178:
  sub    $0x5c,%eax
  cmp    $0x1c,%eax
  ja     L1701
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D41(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D41(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0xa,(%rax)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0xd,(%rax)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x8,(%rax)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x9,(%rax)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x5c,(%rax)
  jmp    L775
L1185:
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x22,(%rax)
  jmp    L775
L1400:
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x27,(%rax)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    $0x2,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  addq   $0x2,-0x28(%rbp)
  jmp    L775
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    $0x4,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EmitUtf8@plt>
  cltq
  mov    %rax,-0x10(%rbp)
  addq   $0x4,-0x28(%rbp)
  nop
L775:
  jmp    L1701
L9:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  je     L757
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L1701:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L779
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jb     L1448
  jmp    L779
L757:
  nop
L779:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L1690
  addq   $0x1,-0x28(%rbp)
L1690:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L708:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L855
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x43,(%rax)
  jmp    L1045
L456:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x5c,%al
  jne    L790
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x78,%eax
  jg     L1045
  cmp    $0x5c,%eax
  jge    L192
  cmp    $0x22,%eax
  je     L1328
  cmp    $0x27,%eax
  je     L1406
  jmp    L895
L192:
  sub    $0x5c,%eax
  cmp    $0x1c,%eax
  ja     L1045
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D57(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D57(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0xa,(%rax)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0xd,(%rax)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x8,(%rax)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x9,(%rax)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x5c,(%rax)
  jmp    L895
L1328:
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x22,(%rax)
  jmp    L895
L1406:
  addq   $0x1,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x27,(%rax)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    $0x2,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  addq   $0x2,-0x28(%rbp)
  jmp    L895
  addq   $0x1,-0x28(%rbp)
  mov    -0x28(%rbp),%rax
  mov    $0x4,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,-0x14(%rbp)
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EmitUtf8@plt>
  cltq
  mov    %rax,-0x10(%rbp)
  addq   $0x4,-0x28(%rbp)
  nop
L895:
  jmp    L1045
L790:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  je     L423
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L1045:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1585
  mov    -0x10(%rbp),%rax
  cmp    -0x8(%rbp),%rax
  jb     L456
  jmp    L1585
L423:
  nop
L1585:
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x27,%al
  jne    L1106
  addq   $0x1,-0x28(%rbp)
L1106:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  mov    -0x28(%rbp),%rax
  jmp    L1778
L855:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x58,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x21,%eax
  cmp    $0x5d,%eax
  ja     L693
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D19(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D19(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2d,%al
  je     L1779
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  je     L1779
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3e,%al
  jne    L809
L1779:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L809:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x2b,%al
  je     L1081
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  jne    L762
L1081:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L762:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x3d,%al
  jne    L781
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
L781:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x3d,%eax
  je     L320
  cmp    $0x7c,%eax
  je     L591
  jmp    L960
L320:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L960
L591:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x3d,%eax
  jne    L1472
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L224
L1472:
  nop
L224:
  nop
L960:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x26,%eax
  je     L1799
  cmp    $0x3d,%eax
  jne    L760
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L447
L1799:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x3d,%eax
  jne    L903
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1182
L903:
  nop
L1182:
  jmp    L447
L760:
  nop
L447:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x3c,%eax
  je     L1223
  cmp    $0x3d,%eax
  jne    L1344
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L103
L1223:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x3c,%eax
  cmp    $0x1,%eax
  ja     L1040
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L380
L1040:
  nop
L380:
  jmp    L103
L1344:
  nop
L103:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x3d,%eax
  je     L120
  cmp    $0x3e,%eax
  je     L946
  jmp    L1454
L120:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1454
L946:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  sub    $0x3d,%eax
  cmp    $0x1,%eax
  ja     L1645
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L281
L1645:
  nop
L281:
  nop
L1454:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x7d,%eax
  je     L74
  cmp    $0x7d,%eax
  jg     L821
  cmp    $0x7b,%eax
  je     L365
  cmp    $0x7b,%eax
  jg     L821
  cmp    $0x5d,%eax
  je     L115
  cmp    $0x5d,%eax
  jg     L821
  cmp    $0x5b,%eax
  je     L125
  cmp    $0x5b,%eax
  jg     L821
  cmp    $0x3a,%eax
  je     L624
  cmp    $0x3a,%eax
  jg     L821
  cmp    $0x29,%eax
  je     L992
  cmp    $0x29,%eax
  jg     L821
  cmp    $0x23,%eax
  je     L1272
  cmp    $0x28,%eax
  je     L1315
  jmp    L821
L1272:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L624:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L1315:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L992:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L125:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L115:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L365:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L74:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  jmp    L1773
L821:
  nop
L1773:
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L551
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L551
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
L551:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  jmp    L1197
L693:
  mov    -0x28(%rbp),%rdx
  lea    0x1(%rdx),%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rcx
  mov    %rcx,-0x10(%rbp)
  movzbl (%rdx),%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  movb   $0x0,(%rax)
  nop
L1197:
  mov    -0x28(%rbp),%rax
L1778:
  leave
  ret
```

assistant: ```c
char *BGBDT_TagParse_ParseTokenBasic(char *s, char *tb) {
  char *t, *te;
  int i, j, k;
  t = tb;
  te = tb + 252;
  s = BGBDT_TagParse_EatWhite(s);
  if (!(*s)) {
    *t++ = 0;
    *t++ = 0;
    return (s);
  }
  if ((*s == '_') || (*s == '$') || ((*s >= 'A') && (*s <= 'Z')) || ((*s >= 'a') && (*s <= 'z'))) {
    *t++ = 'I';
    while (*s && (t < te) && ((*s == '_') || (*s == '$') || ((*s >= 'A') && (*s <= 'Z')) || ((*s >= 'a') && (*s <= 'z')) || ((*s >= '0') && (*s <= '9'))))
      *t++ = *s++;
    *t++ = 0;
    return (s);
  }
  if ((*s >= '0') && (*s <= '9')) {
    *t++ = '#';
    *t++ = *s++;
    if ((*s == 'x') || (*s == 'b') || (*s == 'c') || (*s == 'd')) {
      *tb = '|';
      *t++ = *s++;
      while (*s && (t < te) && ((*s == '_') || ((*s >= '0') && (*s <= '9')) || ((*s >= 'A') && (*s <= 'F')) || ((*s >= 'a') && (*s <= 'f'))))
        *t++ = *s++;
      *t++ = 0;
      return (s);
    }
    while (*s && (t < te) && ((*s == '_') || ((*s >= '0') && (*s <= '9'))))
      *t++ = *s++;
    if (*s == '.') {
      *t++ = *s++;
      while (*s && (t < te) && ((*s == '_') || ((*s >= '0') && (*s <= '9'))))
        *t++ = *s++;
      if ((*s == 'e') || (*s == 'E')) {
        *t++ = *s++;
        if ((*s == '+') || (*s == '-'))
          *t++ = *s++;
        while (*s && (t < te) && ((*s == '_') || ((*s >= '0') && (*s <= '9'))))
          *t++ = *s++;
      }
    } else {
      *tb = '|';
    }
    *t++ = 0;
    return (s);
  }
  if (*s == '\"') {
    if ((s[1] == '\"') && (s[2] == '\"')) {
      *t++ = 'X';
      *t++ = *s++;
      *t++ = *s++;
      *t++ = *s++;
      *t++ = 0;
      return (s);
    }
    s++;
    *t++ = 'S';
    while (*s && (t < te)) {
      if (*s == '\\') {
        s++;
        switch (*s) {
        case 'n':
          s++;
          *t++ = '\n';
          break;
        case 'r':
          s++;
          *t++ = '\r';
          break;
        case 'b':
          s++;
          *t++ = '\b';
          break;
        case 't':
          s++;
          *t++ = '\t';
          break;
        case '\\':
          s++;
          *t++ = '\\';
          break;
        case '\"':
          s++;
          *t++ = '\"';
          break;
        case '\'':
          s++;
          *t++ = '\'';
          break;
        case 'x':
          s++;
          *t++ = BGBDT_TagParse_ParseHexN(s, 2);
          s += 2;
          break;
        case 'u':
          s++;
          i = BGBDT_TagParse_ParseHexN(s, 4);
          t = BGBDT_TagParse_EmitUtf8(t, i);
          s += 4;
          break;
        }
        continue;
      }
      if (*s == '\"')
        break;
      *t++ = *s++;
    }
    if (*s == '\"')
      s++;
    *t++ = 0;
    return (s);
  }
  if (*s == '\'') {
    s++;
    *t++ = 'C';
    while (*s && (t < te)) {
      if (*s == '\\') {
        s++;
        switch (*s) {
        case 'n':
          s++;
          *t++ = '\n';
          break;
        case 'r':
          s++;
          *t++ = '\r';
          break;
        case 'b':
          s++;
          *t++ = '\b';
          break;
        case 't':
          s++;
          *t++ = '\t';
          break;
        case '\\':
          s++;
          *t++ = '\\';
          break;
        case '\"':
          s++;
          *t++ = '\"';
          break;
        case '\'':
          s++;
          *t++ = '\'';
          break;
        case 'x':
          s++;
          *t++ = BGBDT_TagParse_ParseHexN(s, 2);
          s += 2;
          break;
        case 'u':
          s++;
          i = BGBDT_TagParse_ParseHexN(s, 4);
          t = BGBDT_TagParse_EmitUtf8(t, i);
          s += 4;
          break;
        }
        continue;
      }
      if (*s == '\'')
        break;
      *t++ = *s++;
    }
    if (*s == '\'')
      s++;
    *t++ = 0;
    return (s);
  }
  *t++ = 'X';
  switch (*s) {
  case '-':
    *t++ = *s++;
    if ((*s == '-') || (*s == '=') || (*s == '>')) {
      *t++ = *s++;
    }
    *t++ = 0;
    break;
  case '+':
    *t++ = *s++;
    if ((*s == '+') || (*s == '=')) {
      *t++ = *s++;
    }
    *t++ = 0;
    break;
  case '=':
  case '!':
  case '/':
  case '*':
  case '%':
  case '^':
    *t++ = *s++;
    if (*s == '=')
      *t++ = *s++;
    *t++ = 0;
    break;
  case '|':
    *t++ = *s++;
    switch (*s) {
    case '=':
      *t++ = *s++;
      break;
    case '|':
      *t++ = *s++;
      switch (*s) {
      case '=':
        *t++ = *s++;
        break;
      default:
        break;
      }
      break;
    default:
      break;
    }
    *t++ = 0;
    break;
  case '&':
    *t++ = *s++;
    switch (*s) {
    case '=':
      *t++ = *s++;
      break;
    case '&':
      *t++ = *s++;
      switch (*s) {
      case '=':
        *t++ = *s++;
        break;
      default:
        break;
      }
      break;
    default:
      break;
    }
    *t++ = 0;
    break;
  case '<':
    *t++ = *s++;
    switch (*s) {
    case '=':
      *t++ = *s++;
      break;
    case '<':
      *t++ = *s++;
      switch (*s) {
      case '<':
      case '=':
        *t++ = *s++;
        break;
      default:
        break;
      }
      break;
    default:
      break;
    }
    *t++ = 0;
    break;
  case '>':
    *t++ = *s++;
    switch (*s) {
    case '=':
      *t++ = *s++;
      break;
    case '>':
      *t++ = *s++;
      switch (*s) {
      case '>':
      case '=':
        *t++ = *s++;
        break;
      default:
        break;
      }
      break;
    default:
      break;
    }
    *t++ = 0;
    break;
  case '#':
    *t++ = *s++;
    switch (*s) {
    case '#':
      *t++ = *s++;
      break;
    case ':':
      *t++ = *s++;
      break;
    case '(':
      *t++ = *s++;
      break;
    case ')':
      *t++ = *s++;
      break;
    case '[':
      *t++ = *s++;
      break;
    case ']':
      *t++ = *s++;
      break;
    case '{':
      *t++ = *s++;
      break;
    case '}':
      *t++ = *s++;
      break;
    default:
      break;
    }
    *t++ = 0;
    break;
  case '~':
  case '?':
  case '@':
  case '\\':
  case ';':
  case ':':
  case ',':
    *t++ = *s++;
    *t++ = 0;
    break;
  case '.':
    if ((s[1] == '.') && (s[2] == '.')) {
      *t++ = *s++;
      *t++ = *s++;
      *t++ = *s++;
      *t++ = 0;
      break;
    }
    *t++ = *s++;
    *t++ = 0;
    break;
  case '(':
  case ')':
  case '[':
  case ']':
  case '{':
  case '}':
    *t++ = *s++;
    *t++ = 0;
    break;
  default:
    *t++ = *s++;
    *t++ = 0;
    break;
  }
  return (s);
}
```