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

```asm
<state_machine>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%r14
  mov    %rsi,%r12
  mov    %rdi,%rbp
  mov    $0x0,%ebx
  lea    D6(%rip),%r13
L1216:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1725
  cmp    %r12,%rbp
  jae    L1614
  mov    0x0(%rbp),%rbx
L1725:
  add    $0x1,%rbp
  mov    %ebx,%eax
  cmp    $0x43,%bl
  ja     L1216
L1164:
  sub    $0x22,%eax
  cmp    $0x21,%al
  ja     L1216
  movzbl %al,%eax
  movslq 0x0(%r13,%rax,4),%rax
  add    %r13,%rax
  notrack jmp *%rax
L125:
  mov    %rax,%rbp
  jmp    L1216
L506:
  mov    %rax,%rbp
  jmp    L1242
L1224:
  mov    %rax,%rbp
  jmp    L1242
L334:
  mov    %rax,%rbp
  jmp    L1242
L906:
  mov    %rax,%rbp
  jmp    L1242
L1485:
  mov    %rax,%rbp
  jmp    L1242
L31:
  mov    %rax,%rbp
  jmp    L1242
L1521:
  mov    %rax,%rbp
  jmp    L1242
L662:
  mov    %rax,%rbp
  jmp    L1242
L874:
  mov    %rax,%rbp
  jmp    L1242
L226:
  mov    %rax,%rbp
  jmp    L1242
L894:
  mov    %rax,%rbp
  jmp    L1242
L1285:
  mov    %rax,%rbp
  jmp    L1242
L1267:
  mov    %rax,%rbp
  jmp    L1242
L696:
  mov    %rax,%rbp
  jmp    L1242
L1369:
  mov    %rax,%rbp
  jmp    L1242
L1070:
  mov    %rax,%rbp
  jmp    L1242
L707:
  mov    %rax,%rbp
  jmp    L1242
L1389:
  mov    %rax,%rbp
  jmp    L1242
L127:
  mov    %rax,%rbp
  jmp    L1242
L106:
  mov    %rax,%rbp
  jmp    L1242
L117:
  mov    %rax,%rbp
  jmp    L1242
L1326:
  mov    %rax,%rbp
  jmp    L1242
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1087
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
L1087:
  add    $0x1,%rbp
  cmp    $0x2f,%bl
  je     L1219
  cmp    $0x2a,%bl
  je     L1730
L1242:
  mov    %ebx,%eax
  cmp    $0x43,%bl
  jbe    L1164
  jmp    L1216
  lea    0x2(%r14),%rax
  cmp    %rax,%rbp
  jae    L70
L530:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1348
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
L1348:
  lea    0x1(%rbp),%rax
  cmp    $0x4f,%bl
  jne    L1389
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L786
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
L786:
  lea    0x2(%rbp),%rax
  cmp    $0x4e,%bl
  jne    L127
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1048
  cmp    %rax,%r12
  jbe    L1614
  mov    0x2(%rbp),%rbx
L1048:
  lea    0x3(%rbp),%rax
  cmp    $0x46,%bl
  jne    L106
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L381
  cmp    %rax,%r12
  jbe    L1614
  mov    0x3(%rbp),%rbx
L381:
  lea    0x4(%rbp),%rax
  cmp    $0x49,%bl
  jne    L117
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1308
  cmp    %rax,%r12
  jbe    L1614
  mov    0x4(%rbp),%rbx
L1308:
  lea    0x5(%rbp),%rax
  cmp    $0x47,%bl
  jne    L1326
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1089
  cmp    %rax,%r12
  jbe    L1614
  mov    0x5(%rbp),%rbx
L1089:
  add    $0x6,%rbp
  cmp    $0x5f,%bl
  jne    L1242
  mov    %rbp,%r15
L673:
  shr    $0x8,%rbx
  test   $0x7,%r15b
  jne    L1487
  cmp    %r12,%r15
  jae    L1614
  mov    (%r15),%rbx
L1487:
  add    $0x1,%r15
  movzbl %bl,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%bl
  je     L673
  test   %eax,%eax
  jne    L673
  mov    %r15,%rsi
  sub    %rbp,%rsi
  sub    $0x1,%rsi
  mov    %rbp,%rdi
  call   <use_config@plt>
  mov    %r15,%rbp
  jmp    L1242
L1819:
  mov    %rax,%rbp
L1219:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L0
  cmp    %r12,%rbp
  jae    L1614
  mov    0x0(%rbp),%rbx
L0:
  lea    0x1(%rbp),%rax
  cmp    $0xa,%bl
  je     L125
  cmp    $0x5c,%bl
  jne    L1819
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1400
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
L1400:
  add    $0x2,%rbp
  jmp    L1219
L1730:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1166
  cmp    %r12,%rbp
  jae    L1614
  mov    0x0(%rbp),%rbx
L1166:
  add    $0x1,%rbp
  jmp    L883
L1114:
  add    $0x1,%rbp
  cmp    $0x2f,%bl
  je     L1216
L883:
  cmp    $0x2a,%bl
  jne    L1730
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1114
  cmp    %r12,%rbp
  jae    L1614
  mov    0x0(%rbp),%rbx
  jmp    L1114
  mov    %rbp,%rax
  jmp    L1297
L638:
  mov    %rbp,%rax
L1297:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1771
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L1771:
  lea    0x1(%rax),%rbp
  cmp    $0x27,%bl
  je     L1216
  cmp    $0x5c,%bl
  jne    L638
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L771
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x1(%rax),%rbx
L771:
  add    $0x2,%rax
  jmp    L1297
  mov    %rbp,%rax
  jmp    L797
L478:
  mov    %rbp,%rax
L797:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1727
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L1727:
  lea    0x1(%rax),%rbp
  cmp    $0x22,%bl
  je     L1216
  cmp    $0x5c,%bl
  jne    L478
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L386
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x1(%rax),%rbx
L386:
  add    $0x2,%rax
  jmp    L797
  mov    %rbp,%rax
  jmp    L1019
L979:
  mov    %rbp,%rax
L1019:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L65
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L65:
  lea    0x1(%rax),%rbp
  cmp    $0x9,%bl
  je     L979
  cmp    $0x20,%bl
  je     L979
  cmp    $0x69,%bl
  je     L621
  cmp    $0x64,%bl
  je     L1146
  cmp    $0x75,%bl
  jne    L1242
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1988
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
L1988:
  add    $0x2,%rax
  cmp    $0x6e,%bl
  jne    L226
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L804
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
L804:
  lea    0x2(%rbp),%rax
  cmp    $0x64,%bl
  jne    L894
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1639
  cmp    %rax,%r12
  jbe    L1614
  mov    0x2(%rbp),%rbx
L1639:
  lea    0x3(%rbp),%rax
  cmp    $0x65,%bl
  jne    L1285
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1004
  cmp    %rax,%r12
  jbe    L1614
  mov    0x3(%rbp),%rbx
L1004:
  add    $0x4,%rbp
  cmp    $0x66,%bl
  jne    L1242
L35:
  mov    %rbp,%rax
  jmp    L732
L621:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1104
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
L1104:
  add    $0x2,%rax
  cmp    $0x6e,%bl
  jne    L506
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1179
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
L1179:
  lea    0x2(%rbp),%rax
  cmp    $0x63,%bl
  jne    L1224
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L974
  cmp    %rax,%r12
  jbe    L1614
  mov    0x2(%rbp),%rbx
L974:
  lea    0x3(%rbp),%rax
  cmp    $0x6c,%bl
  jne    L334
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1645
  cmp    %rax,%r12
  jbe    L1614
  mov    0x3(%rbp),%rbx
L1645:
  lea    0x4(%rbp),%rax
  cmp    $0x75,%bl
  jne    L906
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1929
  cmp    %rax,%r12
  jbe    L1614
  mov    0x4(%rbp),%rbx
L1929:
  lea    0x5(%rbp),%rax
  cmp    $0x64,%bl
  jne    L1485
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1814
  cmp    %rax,%r12
  jbe    L1614
  mov    0x5(%rbp),%rbx
L1814:
  add    $0x6,%rbp
  mov    %rbp,%rdx
  cmp    $0x65,%bl
  jne    L1242
  jmp    L622
L1146:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1382
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
L1382:
  add    $0x2,%rax
  cmp    $0x65,%bl
  jne    L31
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L363
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
L363:
  lea    0x2(%rbp),%rax
  cmp    $0x66,%bl
  jne    L1521
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1211
  cmp    %rax,%r12
  jbe    L1614
  mov    0x2(%rbp),%rbx
L1211:
  lea    0x3(%rbp),%rax
  cmp    $0x69,%bl
  jne    L662
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1835
  cmp    %rax,%r12
  jbe    L1614
  mov    0x3(%rbp),%rbx
L1835:
  lea    0x4(%rbp),%rax
  cmp    $0x6e,%bl
  jne    L874
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1899
  cmp    %rax,%r12
  jbe    L1614
  mov    0x4(%rbp),%rbx
L1899:
  add    $0x5,%rbp
  cmp    $0x65,%bl
  jne    L1242
  jmp    L35
L41:
  mov    %rsi,%rdx
L622:
  shr    $0x8,%rbx
  test   $0x7,%dl
  jne    L556
  cmp    %r12,%rdx
  jae    L1614
  mov    (%rdx),%rbx
L556:
  lea    0x1(%rdx),%rsi
  cmp    $0x9,%bl
  je     L41
  cmp    $0x20,%bl
  je     L41
  cmp    $0x22,%bl
  je     L1343
  cmp    $0x3c,%bl
  je     L1579
  mov    %rsi,%rbp
  jmp    L1242
L1343:
  mov    %rsi,%rax
  jmp    L914
L11:
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L1287:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1216
  cmp    $0x22,%bl
  je     L1143
  mov    %rbp,%rax
L914:
  test   $0x7,%al
  je     L11
  shr    $0x8,%rbx
  jmp    L1287
L1143:
  sub    %rdx,%rax
  lea    -0x1(%rax),%rdx
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <handle_include@plt>
  jmp    L1216
L1579:
  mov    %rsi,%rax
  jmp    L587
L1056:
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L231:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1216
  cmp    $0x3e,%bl
  je     L1119
  mov    %rbp,%rax
L587:
  test   $0x7,%al
  je     L1056
  shr    $0x8,%rbx
  jmp    L231
L1119:
  sub    %rdx,%rax
  lea    -0x1(%rax),%rdx
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <handle_include@plt>
  jmp    L1216
L1018:
  mov    %rbp,%rax
L732:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L325
  cmp    %r12,%rax
  jae    L1614
  mov    (%rax),%rbx
L325:
  lea    0x1(%rax),%rbp
  cmp    $0x9,%bl
  je     L1018
  cmp    $0x20,%bl
  je     L1018
  cmp    $0x43,%bl
  jne    L1242
  test   $0x7,%bpl
  je     L1733
  shr    $0x8,%rbx
L413:
  add    $0x2,%rax
  cmp    $0x4f,%bl
  jne    L1267
  test   $0x7,%al
  je     L1661
  shr    $0x8,%rbx
L341:
  lea    0x2(%rbp),%rax
  cmp    $0x4e,%bl
  jne    L696
  test   $0x7,%al
  je     L957
  shr    $0x8,%rbx
L952:
  lea    0x3(%rbp),%rax
  cmp    $0x46,%bl
  jne    L1369
  test   $0x7,%al
  je     L472
  shr    $0x8,%rbx
L557:
  lea    0x4(%rbp),%rax
  cmp    $0x49,%bl
  jne    L1070
  test   $0x7,%al
  je     L1935
  shr    $0x8,%rbx
L887:
  lea    0x5(%rbp),%rax
  cmp    $0x47,%bl
  jne    L707
  test   $0x7,%al
  je     L1341
  shr    $0x8,%rbx
L405:
  add    $0x6,%rbp
  cmp    $0x5f,%bl
  jne    L1242
L663:
  test   $0x7,%bpl
  je     L678
  shr    $0x8,%rbx
L1469:
  add    $0x1,%rbp
  movzbl %bl,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%bl
  je     L663
  test   %eax,%eax
  jne    L663
  jmp    L1242
L1733:
  cmp    %rbp,%r12
  jbe    L1614
  mov    0x0(%rbp),%rbx
  jmp    L413
L1661:
  cmp    %rax,%r12
  jbe    L1614
  mov    0x1(%rbp),%rbx
  jmp    L341
L957:
  cmp    %rax,%r12
  jbe    L1614
  mov    0x2(%rbp),%rbx
  jmp    L952
L472:
  cmp    %rax,%r12
  jbe    L1614
  mov    0x3(%rbp),%rbx
  jmp    L557
L1935:
  cmp    %rax,%r12
  jbe    L1614
  mov    0x4(%rbp),%rbx
  jmp    L887
L1341:
  cmp    %rax,%r12
  jbe    L1614
  mov    0x5(%rbp),%rbx
  jmp    L405
L678:
  cmp    %r12,%rbp
  jae    L1614
  mov    0x0(%rbp),%rbx
  jmp    L1469
L70:
  movzbl -0x2(%rbp),%r15d
  movsbl %r15b,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%r15b
  je     L1216
  test   %eax,%eax
  je     L530
  jmp    L1216
L1614:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

assistant: ```c
void state_machine(const char *map, const char *end) {
  const char *next = map;
  const char *map_dot;
  unsigned long __buf = 0;
  for (;;) {
  start : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
  __start:
    if (((unsigned char)__buf) > ((('/') > ((('\'') > ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))))) ? ('/') : ((('\'') > ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))))))))
      goto start;
    if (((unsigned char)__buf) < ((('/') < ((('\'') < ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))))) ? ('/') : ((('\'') < ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))))))))
      goto start;
    if (((unsigned char)__buf) == '/')
      goto slash;
    if (((unsigned char)__buf) == '\'')
      goto squote;
    if (((unsigned char)__buf) == '"')
      goto dquote;
    if (((unsigned char)__buf) == '#')
      goto pound;
    if (((unsigned char)__buf) == 'C')
      goto cee;
    goto start;
  slash_slash : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '\n')
      goto start;
    if (((unsigned char)__buf) != '\\')
      goto slash_slash;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    goto slash_slash;
  slash : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '/')
      goto slash_slash;
    if (((unsigned char)__buf) != '*')
      goto __start;
  slash_star_dot_star : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
  __slash_star_dot_star:
    if (((unsigned char)__buf) != '*')
      goto slash_star_dot_star;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != '/')
      goto __slash_star_dot_star;
    goto start;
  squote : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '\'')
      goto start;
    if (((unsigned char)__buf) != '\\')
      goto squote;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    goto squote;
  dquote : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '"')
      goto start;
    if (((unsigned char)__buf) != '\\')
      goto dquote;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    goto dquote;
  pound : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == ' ')
      goto pound;
    if (((unsigned char)__buf) == '\t')
      goto pound;
    if (((unsigned char)__buf) == 'i')
      goto pound_i;
    if (((unsigned char)__buf) == 'd')
      goto pound_d;
    if (((unsigned char)__buf) == 'u')
      goto pound_u;
    goto __start;
  pound_i : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) != 'n')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'c')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'l')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'u')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'd')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'e')
      goto __start;
    goto pound_include;
  pound_include : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == ' ')
      goto pound_include;
    if (((unsigned char)__buf) == '\t')
      goto pound_include;
    map_dot = next;
    if (((unsigned char)__buf) == '"')
      goto pound_include_dquote;
    if (((unsigned char)__buf) == '<')
      goto pound_include_langle;
    goto __start;
  pound_include_dquote : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '\n')
      goto start;
    if (((unsigned char)__buf) != '"')
      goto pound_include_dquote;
    handle_include(0, map_dot, next - map_dot - 1);
    goto start;
  pound_include_langle : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == '\n')
      goto start;
    if (((unsigned char)__buf) != '>')
      goto pound_include_langle;
    handle_include(1, map_dot, next - map_dot - 1);
    goto start;
  pound_d : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) != 'e')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'f')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'i')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'n')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'e')
      goto __start;
    goto pound_define_undef;
  pound_u : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) != 'n')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'd')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'e')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'f')
      goto __start;
    goto pound_define_undef;
  pound_define_undef : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (((unsigned char)__buf) == ' ')
      goto pound_define_undef;
    if (((unsigned char)__buf) == '\t')
      goto pound_define_undef;
    if (((unsigned char)__buf) != 'C')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'O')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'N')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'F')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'I')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'G')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != '_')
      goto __start;
    map_dot = next;
  pound_define_undef_CONFIG_word : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (isalnum(((unsigned char)__buf)) || ((unsigned char)__buf) == '_')
      goto pound_define_undef_CONFIG_word;
    goto __start;
  cee:
    if (next >= map + 2 && (isalnum(next[-2]) || next[-2] == '_'))
      goto start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'O')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'N')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'F')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'I')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != 'G')
      goto __start;
    {
      (__buf >>= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if (((unsigned char)__buf) != '_')
      goto __start;
    map_dot = next;
  cee_CONFIG_word : {
    (__buf >>= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if (isalnum(((unsigned char)__buf)) || ((unsigned char)__buf) == '_')
      goto cee_CONFIG_word;
    use_config(map_dot, next - map_dot - 1);
    goto __start;
  }
}
```