user: Converte this assembly snippet into its equivalent C code:

```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    D5(%rip),%r13
L1896:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1460
  cmp    %r12,%rbp
  jae    L1428
  mov    0x0(%rbp),%rbx
L1460:
  add    $0x1,%rbp
  mov    %ebx,%eax
  cmp    $0x43,%bl
  ja     L1896
L1039:
  sub    $0x22,%eax
  cmp    $0x21,%al
  ja     L1896
  movzbl %al,%eax
  movslq 0x0(%r13,%rax,4),%rax
  add    %r13,%rax
  notrack jmp *%rax
L1068:
  mov    %rax,%rbp
  jmp    L1896
L565:
  mov    %rax,%rbp
  jmp    L999
L717:
  mov    %rax,%rbp
  jmp    L999
L1106:
  mov    %rax,%rbp
  jmp    L999
L1345:
  mov    %rax,%rbp
  jmp    L999
L481:
  mov    %rax,%rbp
  jmp    L999
L850:
  mov    %rax,%rbp
  jmp    L999
L1033:
  mov    %rax,%rbp
  jmp    L999
L116:
  mov    %rax,%rbp
  jmp    L999
L1824:
  mov    %rax,%rbp
  jmp    L999
L689:
  mov    %rax,%rbp
  jmp    L999
L311:
  mov    %rax,%rbp
  jmp    L999
L683:
  mov    %rax,%rbp
  jmp    L999
L1829:
  mov    %rax,%rbp
  jmp    L999
L230:
  mov    %rax,%rbp
  jmp    L999
L1949:
  mov    %rax,%rbp
  jmp    L999
L173:
  mov    %rax,%rbp
  jmp    L999
L1789:
  mov    %rax,%rbp
  jmp    L999
L940:
  mov    %rax,%rbp
  jmp    L999
L748:
  mov    %rax,%rbp
  jmp    L999
L1633:
  mov    %rax,%rbp
  jmp    L999
L1848:
  mov    %rax,%rbp
  jmp    L999
L1710:
  mov    %rax,%rbp
  jmp    L999
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L39
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
L39:
  add    $0x1,%rbp
  cmp    $0x2f,%bl
  je     L1472
  cmp    $0x2a,%bl
  je     L1649
L999:
  mov    %ebx,%eax
  cmp    $0x43,%bl
  jbe    L1039
  jmp    L1896
  lea    0x2(%r14),%rax
  cmp    %rax,%rbp
  jae    L708
L964:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L499
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
L499:
  lea    0x1(%rbp),%rax
  cmp    $0x4f,%bl
  jne    L940
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L49
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
L49:
  lea    0x2(%rbp),%rax
  cmp    $0x4e,%bl
  jne    L748
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1951
  cmp    %rax,%r12
  jbe    L1428
  mov    0x2(%rbp),%rbx
L1951:
  lea    0x3(%rbp),%rax
  cmp    $0x46,%bl
  jne    L1633
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1420
  cmp    %rax,%r12
  jbe    L1428
  mov    0x3(%rbp),%rbx
L1420:
  lea    0x4(%rbp),%rax
  cmp    $0x49,%bl
  jne    L1848
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1704
  cmp    %rax,%r12
  jbe    L1428
  mov    0x4(%rbp),%rbx
L1704:
  lea    0x5(%rbp),%rax
  cmp    $0x47,%bl
  jne    L1710
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L234
  cmp    %rax,%r12
  jbe    L1428
  mov    0x5(%rbp),%rbx
L234:
  add    $0x6,%rbp
  cmp    $0x5f,%bl
  jne    L999
  mov    %rbp,%r15
L1433:
  shr    $0x8,%rbx
  test   $0x7,%r15b
  jne    L103
  cmp    %r12,%r15
  jae    L1428
  mov    (%r15),%rbx
L103:
  add    $0x1,%r15
  movzbl %bl,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%bl
  je     L1433
  test   %rax,%rax
  jne    L1433
  mov    %r15,%rsi
  sub    %rbp,%rsi
  sub    $0x1,%esi
  mov    %rbp,%rdi
  call   <use_config@plt>
  mov    %r15,%rbp
  jmp    L999
L952:
  mov    %rax,%rbp
L1472:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L88
  cmp    %r12,%rbp
  jae    L1428
  mov    0x0(%rbp),%rbx
L88:
  lea    0x1(%rbp),%rax
  cmp    $0xa,%bl
  je     L1068
  cmp    $0x5c,%bl
  jne    L952
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L205
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
L205:
  add    $0x2,%rbp
  jmp    L1472
L1649:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L27
  cmp    %r12,%rbp
  jae    L1428
  mov    0x0(%rbp),%rbx
L27:
  add    $0x1,%rbp
  jmp    L648
L715:
  add    $0x1,%rbp
  cmp    $0x2f,%bl
  je     L1896
L648:
  cmp    $0x2a,%bl
  jne    L1649
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L715
  cmp    %r12,%rbp
  jae    L1428
  mov    0x0(%rbp),%rbx
  jmp    L715
  mov    %rbp,%rax
  jmp    L890
L1835:
  mov    %rbp,%rax
L890:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1157
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L1157:
  lea    0x1(%rax),%rbp
  cmp    $0x27,%bl
  je     L1896
  cmp    $0x5c,%bl
  jne    L1835
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1419
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x1(%rax),%rbx
L1419:
  add    $0x2,%rax
  jmp    L890
  mov    %rbp,%rax
  jmp    L1117
L1921:
  mov    %rbp,%rax
L1117:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1402
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L1402:
  lea    0x1(%rax),%rbp
  cmp    $0x22,%bl
  je     L1896
  cmp    $0x5c,%bl
  jne    L1921
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1242
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x1(%rax),%rbx
L1242:
  add    $0x2,%rax
  jmp    L1117
  mov    %rbp,%rax
  jmp    L1642
L1588:
  mov    %rbp,%rax
L1642:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1074
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L1074:
  lea    0x1(%rax),%rbp
  cmp    $0x9,%bl
  je     L1588
  cmp    $0x20,%bl
  je     L1588
  cmp    $0x69,%bl
  je     L314
  cmp    $0x64,%bl
  je     L177
  cmp    $0x75,%bl
  jne    L999
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L256
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
L256:
  add    $0x2,%rax
  cmp    $0x6e,%bl
  jne    L689
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L359
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
L359:
  lea    0x2(%rbp),%rax
  cmp    $0x64,%bl
  jne    L311
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1316
  cmp    %rax,%r12
  jbe    L1428
  mov    0x2(%rbp),%rbx
L1316:
  lea    0x3(%rbp),%rax
  cmp    $0x65,%bl
  jne    L683
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1987
  cmp    %rax,%r12
  jbe    L1428
  mov    0x3(%rbp),%rbx
L1987:
  add    $0x4,%rbp
  cmp    $0x66,%bl
  jne    L999
L1754:
  mov    %rbp,%rax
  jmp    L1732
L314:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L180
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
L180:
  add    $0x2,%rax
  cmp    $0x6e,%bl
  jne    L565
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L696
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
L696:
  lea    0x2(%rbp),%rax
  cmp    $0x63,%bl
  jne    L717
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1650
  cmp    %rax,%r12
  jbe    L1428
  mov    0x2(%rbp),%rbx
L1650:
  lea    0x3(%rbp),%rax
  cmp    $0x6c,%bl
  jne    L1106
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L614
  cmp    %rax,%r12
  jbe    L1428
  mov    0x3(%rbp),%rbx
L614:
  lea    0x4(%rbp),%rax
  cmp    $0x75,%bl
  jne    L1345
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1573
  cmp    %rax,%r12
  jbe    L1428
  mov    0x4(%rbp),%rbx
L1573:
  lea    0x5(%rbp),%rax
  cmp    $0x64,%bl
  jne    L481
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1917
  cmp    %rax,%r12
  jbe    L1428
  mov    0x5(%rbp),%rbx
L1917:
  add    $0x6,%rbp
  mov    %rbp,%rdx
  cmp    $0x65,%bl
  jne    L999
  jmp    L81
L177:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L742
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
L742:
  add    $0x2,%rax
  cmp    $0x65,%bl
  jne    L850
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L917
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
L917:
  lea    0x2(%rbp),%rax
  cmp    $0x66,%bl
  jne    L1033
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1289
  cmp    %rax,%r12
  jbe    L1428
  mov    0x2(%rbp),%rbx
L1289:
  lea    0x3(%rbp),%rax
  cmp    $0x69,%bl
  jne    L116
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L440
  cmp    %rax,%r12
  jbe    L1428
  mov    0x3(%rbp),%rbx
L440:
  lea    0x4(%rbp),%rax
  cmp    $0x6e,%bl
  jne    L1824
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1064
  cmp    %rax,%r12
  jbe    L1428
  mov    0x4(%rbp),%rbx
L1064:
  add    $0x5,%rbp
  cmp    $0x65,%bl
  jne    L999
  jmp    L1754
L487:
  mov    %rsi,%rdx
L81:
  shr    $0x8,%rbx
  test   $0x7,%dl
  jne    L546
  cmp    %r12,%rdx
  jae    L1428
  mov    (%rdx),%rbx
L546:
  lea    0x1(%rdx),%rsi
  cmp    $0x9,%bl
  je     L487
  cmp    $0x20,%bl
  je     L487
  cmp    $0x22,%bl
  je     L1526
  cmp    $0x3c,%bl
  je     L1836
  mov    %rsi,%rbp
  jmp    L999
L1526:
  mov    %rsi,%rax
  jmp    L1682
L1877:
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L26:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1896
  cmp    $0x22,%bl
  je     L29
  mov    %rbp,%rax
L1682:
  test   $0x7,%al
  je     L1877
  shr    $0x8,%rbx
  jmp    L26
L29:
  sub    %rdx,%rax
  lea    -0x1(%rax),%edx
  mov    $0x0,%edi
  call   <handle_include@plt>
  jmp    L1896
L1836:
  mov    %rsi,%rax
  jmp    L1997
L1891:
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L1333:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1896
  cmp    $0x3e,%bl
  je     L1548
  mov    %rbp,%rax
L1997:
  test   $0x7,%al
  je     L1891
  shr    $0x8,%rbx
  jmp    L1333
L1548:
  sub    %rdx,%rax
  lea    -0x1(%rax),%edx
  mov    $0x1,%edi
  call   <handle_include@plt>
  jmp    L1896
L537:
  mov    %rbp,%rax
L1732:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1956
  cmp    %r12,%rax
  jae    L1428
  mov    (%rax),%rbx
L1956:
  lea    0x1(%rax),%rbp
  cmp    $0x9,%bl
  je     L537
  cmp    $0x20,%bl
  je     L537
  cmp    $0x43,%bl
  jne    L999
  test   $0x7,%bpl
  je     L566
  shr    $0x8,%rbx
L209:
  add    $0x2,%rax
  cmp    $0x4f,%bl
  jne    L1829
  test   $0x7,%al
  je     L348
  shr    $0x8,%rbx
L317:
  lea    0x2(%rbp),%rax
  cmp    $0x4e,%bl
  jne    L230
  test   $0x7,%al
  je     L688
  shr    $0x8,%rbx
L189:
  lea    0x3(%rbp),%rax
  cmp    $0x46,%bl
  jne    L1949
  test   $0x7,%al
  je     L829
  shr    $0x8,%rbx
L675:
  lea    0x4(%rbp),%rax
  cmp    $0x49,%bl
  jne    L173
  test   $0x7,%al
  je     L475
  shr    $0x8,%rbx
L705:
  lea    0x5(%rbp),%rax
  cmp    $0x47,%bl
  jne    L1789
  test   $0x7,%al
  je     L1874
  shr    $0x8,%rbx
L437:
  add    $0x6,%rbp
  cmp    $0x5f,%bl
  jne    L999
L816:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1611
  cmp    %r12,%rbp
  jae    L1428
  mov    0x0(%rbp),%rbx
L1611:
  add    $0x1,%rbp
  movzbl %bl,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%bl
  je     L816
  test   %rax,%rax
  jne    L816
  jmp    L999
L566:
  cmp    %rbp,%r12
  jbe    L1428
  mov    0x0(%rbp),%rbx
  jmp    L209
L348:
  cmp    %rax,%r12
  jbe    L1428
  mov    0x1(%rbp),%rbx
  jmp    L317
L688:
  cmp    %rax,%r12
  jbe    L1428
  mov    0x2(%rbp),%rbx
  jmp    L189
L829:
  cmp    %rax,%r12
  jbe    L1428
  mov    0x3(%rbp),%rbx
  jmp    L675
L475:
  cmp    %rax,%r12
  jbe    L1428
  mov    0x4(%rbp),%rbx
  jmp    L705
L1874:
  cmp    %rax,%r12
  jbe    L1428
  mov    0x5(%rbp),%rbx
  jmp    L437
L708:
  movzbl -0x2(%rbp),%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1896
  cmpb   $0x5f,-0x2(%rbp)
  jne    L964
  jmp    L1896
L1428:
  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((int)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;
  }
}
```