user: What is the c source code of the assembly code below:

```asm
<BGBDT_TagParse_ParseTokenBasic>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rsi,%rbp
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EatWhite@plt>
  movslq %eax,%rcx
  movzbl (%rcx),%eax
  test   %al,%al
  je     L1306
  lea    0xfc(%rbp),%rbx
  cmp    $0x5f,%al
  je     L635
  cmp    $0x24,%al
  je     L635
  mov    %eax,%edx
  and    $0xffffffdf,%edx
  sub    $0x41,%edx
  cmp    $0x19,%dl
  jbe    L635
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  jbe    L901
  cmp    $0x22,%al
  je     L389
  cmp    $0x27,%al
  je     L999
  movb   $0x58,0x0(%rbp)
  movzbl (%rcx),%edx
  lea    -0x21(%rdx),%eax
  cmp    $0x5d,%al
  ja     L487
  movzbl %al,%eax
  lea    D1(%rip),%rsi
  movslq (%rsi,%rax,4),%rax
  add    %rsi,%rax
  notrack jmp *%rax
L1306:
  movb   $0x0,0x0(%rbp)
  movb   $0x0,0x1(%rbp)
  jmp    L329
L635:
  lea    0x1(%rbp),%rdx
  movb   $0x49,0x0(%rbp)
  movzbl (%rcx),%eax
  movabs $0x8000000003ff001,%r8
  test   %al,%al
  jne    L592
  jmp    L591
L848:
  add    $0x1,%rcx
  add    $0x1,%rdx
  mov    %al,-0x1(%rdx)
  movzbl (%rcx),%eax
  test   %al,%al
  je     L591
  cmp    %rdx,%rbx
  jbe    L591
L592:
  mov    %eax,%esi
  lea    -0x24(%rax),%edi
  cmp    $0x3b,%dil
  ja     L237
  bt     %rdi,%r8
  jb     L848
L237:
  and    $0xffffffdf,%esi
  sub    $0x41,%esi
  cmp    $0x19,%sil
  jbe    L848
L591:
  movb   $0x0,(%rdx)
L329:
  mov    %rcx,%rax
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L901:
  movb   $0x23,0x0(%rbp)
  movzbl (%rcx),%eax
  mov    %al,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  lea    -0x62(%rax),%edx
  cmp    $0x2,%dl
  jbe    L1255
  cmp    $0x78,%al
  je     L1255
  add    $0x1,%rcx
  lea    0x2(%rbp),%rdx
  cmp    %rdx,%rbx
  jbe    L1117
  test   %al,%al
  jne    L1580
  jmp    L1117
L1255:
  movb   $0x7c,0x0(%rbp)
  lea    0x2(%rcx),%rsi
  lea    0x3(%rbp),%rax
  movzbl 0x1(%rcx),%edx
  mov    %dl,0x2(%rbp)
  movzbl 0x2(%rcx),%edx
  cmp    %rax,%rbx
  jbe    L222
  movabs $0x7e8000007e03ff,%rdi
  test   %dl,%dl
  jne    L1131
L222:
  movb   $0x0,(%rax)
  mov    %rsi,%rcx
  jmp    L329
L704:
  add    $0x1,%rsi
  add    $0x1,%rax
  mov    %dl,-0x1(%rax)
  movzbl (%rsi),%edx
  cmp    %rax,%rbx
  jbe    L222
  test   %dl,%dl
  je     L222
L1131:
  lea    -0x30(%rdx),%ecx
  cmp    $0x36,%cl
  ja     L222
  bt     %rcx,%rdi
  jb     L704
  jmp    L222
L1259:
  add    $0x1,%rcx
  add    $0x1,%rdx
  mov    %al,-0x1(%rdx)
  movzbl (%rcx),%eax
  cmp    %rdx,%rbx
  jbe    L1117
  test   %al,%al
  je     L1117
L1580:
  lea    -0x30(%rax),%esi
  cmp    $0x9,%sil
  jbe    L1259
  cmp    $0x5f,%al
  je     L1259
L1117:
  cmp    $0x2e,%al
  je     L151
  movb   $0x7c,0x0(%rbp)
L58:
  movb   $0x0,(%rdx)
  jmp    L329
L151:
  lea    0x1(%rcx),%rdi
  lea    0x1(%rdx),%rsi
  movb   $0x2e,(%rdx)
  movzbl 0x1(%rcx),%eax
  cmp    %rsi,%rbx
  jbe    L1367
  test   %al,%al
  jne    L1698
  jmp    L1367
L217:
  add    $0x1,%rdi
  add    $0x1,%rsi
  mov    %al,-0x1(%rsi)
  movzbl (%rdi),%eax
  cmp    %rsi,%rbx
  jbe    L1367
  test   %al,%al
  je     L1367
L1698:
  lea    -0x30(%rax),%edx
  cmp    $0x9,%dl
  jbe    L217
  cmp    $0x5f,%al
  je     L217
L1367:
  mov    %eax,%edx
  and    $0xffffffdf,%edx
  cmp    $0x45,%dl
  jne    L680
  mov    %al,(%rsi)
  movzbl 0x1(%rdi),%eax
  lea    -0x2b(%rax),%edx
  test   $0xfd,%dl
  je     L368
  lea    0x1(%rdi),%rcx
  lea    0x1(%rsi),%rdx
L630:
  movzbl (%rcx),%eax
  cmp    %rbx,%rdx
  jae    L58
  test   %al,%al
  jne    L815
  jmp    L58
L368:
  lea    0x2(%rdi),%rcx
  lea    0x2(%rsi),%rdx
  mov    %al,0x1(%rsi)
  jmp    L630
L1621:
  add    $0x1,%rcx
  add    $0x1,%rdx
  mov    %al,-0x1(%rdx)
  movzbl (%rcx),%eax
  cmp    %rdx,%rbx
  jbe    L58
  test   %al,%al
  je     L58
L815:
  lea    -0x30(%rax),%esi
  cmp    $0x9,%sil
  jbe    L1621
  cmp    $0x5f,%al
  je     L1621
  jmp    L58
L680:
  mov    %rsi,%rdx
  mov    %rdi,%rcx
  jmp    L58
L389:
  cmpb   $0x22,0x1(%rcx)
  jne    L236
  cmpb   $0x22,0x2(%rcx)
  je     L1390
L236:
  lea    0x1(%rcx),%r13
  lea    0x1(%rbp),%r12
  movb   $0x53,0x0(%rbp)
  movzbl 0x1(%rcx),%eax
  test   %al,%al
  je     L679
  lea    D18(%rip),%rbp
  jmp    L880
L1390:
  movb   $0x58,0x0(%rbp)
  movzbl (%rcx),%eax
  mov    %al,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  mov    %al,0x2(%rbp)
  movzbl 0x2(%rcx),%eax
  mov    %al,0x3(%rbp)
  movb   $0x0,0x4(%rbp)
  lea    0x3(%rcx),%rcx
  jmp    L329
L1083:
  movzbl 0x1(%r13),%eax
  cmp    $0x78,%al
  jg     L1323
  cmp    $0x5b,%al
  jle    L834
  sub    $0x5c,%eax
  cmp    $0x1c,%al
  ja     L1323
  movzbl %al,%eax
  movslq 0x0(%rbp,%rax,4),%rax
  add    %rbp,%rax
  notrack jmp *%rax
L834:
  cmp    $0x22,%al
  je     L832
  cmp    $0x27,%al
  jne    L1323
  add    $0x2,%r13
  movb   $0x27,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
L1323:
  add    $0x1,%r13
L811:
  movzbl 0x0(%r13),%eax
  cmp    %r12,%rbx
  jbe    L206
  test   %al,%al
  je     L206
L880:
  cmp    $0x5c,%al
  je     L1083
  cmp    $0x22,%al
  je     L1687
  add    $0x1,%r13
  mov    %al,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  add    $0x2,%r13
  movb   $0xa,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  add    $0x2,%r13
  movb   $0xd,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  add    $0x2,%r13
  movb   $0x8,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  add    $0x2,%r13
  movb   $0x9,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  add    $0x2,%r13
  movb   $0x5c,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
L832:
  add    $0x2,%r13
  movb   $0x22,(%r12)
  lea    0x1(%r12),%r12
  jmp    L811
  lea    0x2(%r13),%rdi
  mov    $0x2,%esi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %al,(%r12)
  add    $0x4,%r13
  lea    0x1(%r12),%r12
  jmp    L811
  lea    0x2(%r13),%rdi
  mov    $0x4,%esi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EmitUtf8@plt>
  movslq %eax,%r12
  add    $0x6,%r13
  jmp    L811
L206:
  cmp    $0x22,%al
  je     L1687
L679:
  movb   $0x0,(%r12)
  mov    %r13,%rcx
  jmp    L329
L1687:
  add    $0x1,%r13
  jmp    L679
L999:
  lea    0x1(%rcx),%r13
  lea    0x1(%rbp),%r12
  movb   $0x43,0x0(%rbp)
  movzbl 0x1(%rcx),%eax
  test   %al,%al
  je     L494
  lea    D17(%rip),%rbp
  jmp    L258
L893:
  movzbl 0x1(%r13),%eax
  cmp    $0x78,%al
  jg     L602
  cmp    $0x5b,%al
  jle    L78
  sub    $0x5c,%eax
  cmp    $0x1c,%al
  ja     L602
  movzbl %al,%eax
  movslq 0x0(%rbp,%rax,4),%rax
  add    %rbp,%rax
  notrack jmp *%rax
L78:
  cmp    $0x22,%al
  je     L1179
  cmp    $0x27,%al
  jne    L602
  add    $0x2,%r13
  movb   $0x27,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
L602:
  add    $0x1,%r13
L439:
  movzbl 0x0(%r13),%eax
  cmp    %r12,%rbx
  jbe    L502
  test   %al,%al
  je     L502
L258:
  cmp    $0x5c,%al
  je     L893
  cmp    $0x27,%al
  je     L810
  add    $0x1,%r13
  mov    %al,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  add    $0x2,%r13
  movb   $0xa,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  add    $0x2,%r13
  movb   $0xd,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  add    $0x2,%r13
  movb   $0x8,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  add    $0x2,%r13
  movb   $0x9,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  add    $0x2,%r13
  movb   $0x5c,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
L1179:
  add    $0x2,%r13
  movb   $0x22,(%r12)
  lea    0x1(%r12),%r12
  jmp    L439
  lea    0x2(%r13),%rdi
  mov    $0x2,%esi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %al,(%r12)
  add    $0x4,%r13
  lea    0x1(%r12),%r12
  jmp    L439
  lea    0x2(%r13),%rdi
  mov    $0x4,%esi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_ParseHexN@plt>
  mov    %eax,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <BGBDT_TagParse_EmitUtf8@plt>
  movslq %eax,%r12
  add    $0x6,%r13
  jmp    L439
L502:
  cmp    $0x27,%al
  je     L810
L494:
  movb   $0x0,(%r12)
  mov    %r13,%rcx
  jmp    L329
L810:
  add    $0x1,%r13
  jmp    L494
  movb   $0x2d,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  lea    -0x3d(%rax),%edx
  cmp    $0x1,%dl
  jbe    L1272
  cmp    $0x2d,%al
  jne    L1210
L1272:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rdx
  mov    %al,0x2(%rbp)
L703:
  movb   $0x0,(%rdx)
  jmp    L329
L1210:
  add    $0x1,%rcx
  lea    0x2(%rbp),%rdx
  jmp    L703
  movb   $0x2b,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x2b,%al
  je     L315
  cmp    $0x3d,%al
  je     L315
  add    $0x1,%rcx
  lea    0x2(%rbp),%rdx
L394:
  movb   $0x0,(%rdx)
  jmp    L329
L315:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rdx
  mov    %al,0x2(%rbp)
  jmp    L394
  mov    %dl,0x1(%rbp)
  cmpb   $0x3d,0x1(%rcx)
  je     L235
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L372:
  movb   $0x0,(%rax)
  jmp    L329
L235:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3d,0x2(%rbp)
  jmp    L372
  movb   $0x7c,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x3d,%al
  je     L1610
  cmp    $0x7c,%al
  je     L453
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L1121:
  movb   $0x0,(%rax)
  jmp    L329
L1610:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3d,0x2(%rbp)
  jmp    L1121
L453:
  movb   $0x7c,0x2(%rbp)
  cmpb   $0x3d,0x2(%rcx)
  je     L1662
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  jmp    L1121
L1662:
  add    $0x3,%rcx
  lea    0x4(%rbp),%rax
  movb   $0x3d,0x3(%rbp)
  jmp    L1121
  movb   $0x26,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x26,%al
  je     L942
  cmp    $0x3d,%al
  je     L133
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L683:
  movb   $0x0,(%rax)
  jmp    L329
L133:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3d,0x2(%rbp)
  jmp    L683
L942:
  movb   $0x26,0x2(%rbp)
  cmpb   $0x3d,0x2(%rcx)
  je     L270
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  jmp    L683
L270:
  add    $0x3,%rcx
  lea    0x4(%rbp),%rax
  movb   $0x3d,0x3(%rbp)
  jmp    L683
  movb   $0x3c,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x3c,%al
  je     L107
  cmp    $0x3d,%al
  je     L79
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L250:
  movb   $0x0,(%rax)
  jmp    L329
L79:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3d,0x2(%rbp)
  jmp    L250
L107:
  movb   $0x3c,0x2(%rbp)
  movzbl 0x2(%rcx),%edx
  movsbl %dl,%eax
  sub    $0x3c,%eax
  cmp    $0x1,%eax
  jbe    L1024
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  jmp    L250
L1024:
  add    $0x3,%rcx
  lea    0x4(%rbp),%rax
  mov    %dl,0x3(%rbp)
  jmp    L250
  movb   $0x3e,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x3d,%al
  je     L798
  cmp    $0x3e,%al
  je     L1037
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L1394:
  movb   $0x0,(%rax)
  jmp    L329
L798:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3d,0x2(%rbp)
  jmp    L1394
L1037:
  movb   $0x3e,0x2(%rbp)
  movzbl 0x2(%rcx),%edx
  movsbl %dl,%eax
  sub    $0x3d,%eax
  cmp    $0x1,%eax
  jbe    L858
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  jmp    L1394
L858:
  add    $0x3,%rcx
  lea    0x4(%rbp),%rax
  mov    %dl,0x3(%rbp)
  jmp    L1394
  movb   $0x23,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  cmp    $0x5b,%al
  je     L560
  jg     L1008
  cmp    $0x29,%al
  je     L863
  jle    L482
  cmp    $0x3a,%al
  jne    L1473
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x3a,0x2(%rbp)
  jmp    L790
L482:
  cmp    $0x23,%al
  je     L799
  cmp    $0x28,%al
  jne    L1473
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x28,0x2(%rbp)
  jmp    L790
L1008:
  cmp    $0x7b,%al
  je     L1684
  cmp    $0x7d,%al
  jne    L1559
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x7d,0x2(%rbp)
  jmp    L790
L1559:
  cmp    $0x5d,%al
  jne    L1473
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x5d,0x2(%rbp)
  jmp    L790
L1473:
  add    $0x1,%rcx
  lea    0x2(%rbp),%rax
L790:
  movb   $0x0,(%rax)
  jmp    L329
L799:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x23,0x2(%rbp)
  jmp    L790
L863:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x29,0x2(%rbp)
  jmp    L790
L560:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x5b,0x2(%rbp)
  jmp    L790
L1684:
  add    $0x2,%rcx
  lea    0x3(%rbp),%rax
  movb   $0x7b,0x2(%rbp)
  jmp    L790
  add    $0x1,%rcx
  mov    %dl,0x1(%rbp)
  movb   $0x0,0x2(%rbp)
  jmp    L329
  cmpb   $0x2e,0x1(%rcx)
  je     L1345
L969:
  add    $0x1,%rcx
  movb   $0x2e,0x1(%rbp)
  movb   $0x0,0x2(%rbp)
  jmp    L329
L1345:
  cmpb   $0x2e,0x2(%rcx)
  jne    L969
  movb   $0x2e,0x1(%rbp)
  movzbl 0x1(%rcx),%eax
  mov    %al,0x2(%rbp)
  movzbl 0x2(%rcx),%eax
  mov    %al,0x3(%rbp)
  movb   $0x0,0x4(%rbp)
  lea    0x3(%rcx),%rcx
  jmp    L329
  add    $0x1,%rcx
  mov    %dl,0x1(%rbp)
  movb   $0x0,0x2(%rbp)
  jmp    L329
L487:
  add    $0x1,%rcx
  mov    %dl,0x1(%rbp)
  movb   $0x0,0x2(%rbp)
  jmp    L329
```

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);
}
```