user: 请将以下的汇编代码转换成C语言代码：

```asm
<state_machine>:
  endbr64
  push   %r15
  mov    %rdi,%r15
  push   %r14
  lea    D3(%rip),%r14
  push   %r13
  mov    %rsi,%r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x18,%rsp
  nopl   0x0(%rax)
L1551:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1745
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L1745:
  add    $0x1,%rbp
  mov    %ebx,%r12d
  cmp    $0x43,%bl
  ja     L1551
L587:
  mov    %rbp,%rcx
  mov    %rbx,%rdx
  sub    $0x22,%r12d
  and    $0x7,%ecx
  shr    $0x8,%rdx
  cmp    $0x21,%r12b
  ja     L1551
  movzbl %r12b,%r12d
  movslq (%r14,%r12,4),%rax
  add    %r14,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
L1000:
  mov    %rbp,%rax
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L558
  cmp    %r13,%rax
  jae    L1193
L882:
  mov    (%rax),%rbx
L558:
  lea    0x1(%rax),%rbp
  cmp    $0x22,%bl
  je     L1551
  cmp    $0x5c,%bl
  jne    L1000
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L145
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x1(%rax),%rbx
L145:
  add    $0x2,%rax
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L558
  cmp    %r13,%rax
  jb     L882
L1193:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L1749:
  mov    %rbp,%rax
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L31
L1035:
  cmp    %r13,%rax
  jae    L1193
  mov    (%rax),%rbx
L31:
  lea    0x1(%rax),%rbp
  cmp    $0x27,%bl
  je     L1551
  cmp    $0x5c,%bl
  jne    L1749
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L610
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x1(%rax),%rbx
L610:
  add    $0x2,%rax
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L31
  jmp    L1035
  xchg   %ax,%ax
L240:
  mov    %rbp,%rax
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L768
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L768:
  add    $0x1,%rbp
  mov    %ebx,%r12d
  cmp    $0x20,%bl
  je     L240
  cmp    $0x9,%bl
  je     L240
  mov    %rbp,%rcx
  mov    %rbx,%rdx
  and    $0x7,%ecx
  shr    $0x8,%rdx
  cmp    $0x69,%bl
  je     L1297
  cmp    $0x64,%bl
  je     L918
  cmp    $0x75,%bl
  jne    L1306
  mov    %rdx,%rbx
  test   %rcx,%rcx
  jne    L1845
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x1(%rax),%rbx
L1845:
  lea    0x2(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x6e,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L890
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x2(%rax),%rbx
L890:
  lea    0x3(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x64,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1033
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x3(%rax),%rbx
L1033:
  lea    0x4(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x65,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1591
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x4(%rax),%rbx
L1591:
  lea    0x5(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x66,%bl
  jne    L1306
  jmp    L418
  nopl   0x0(%rax,%rax,1)
L1517:
  mov    %rax,%rbp
L418:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1443
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L1443:
  lea    0x1(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x9,%bl
  je     L1517
  cmp    $0x20,%bl
  je     L1517
  cmp    $0x43,%bl
  jne    L916
  test   $0x7,%al
  je     L1494
  shr    $0x8,%rbx
L184:
  lea    0x2(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x4f,%bl
  jne    L916
  test   $0x7,%al
  je     L611
  shr    $0x8,%rbx
L129:
  lea    0x3(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x4e,%bl
  jne    L916
  test   $0x7,%al
  je     L14
  shr    $0x8,%rbx
L1252:
  lea    0x4(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x46,%bl
  jne    L916
  test   $0x7,%al
  je     L1483
  shr    $0x8,%rbx
L1614:
  lea    0x5(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x49,%bl
  jne    L916
  test   $0x7,%al
  je     L1092
  shr    $0x8,%rbx
L647:
  lea    0x6(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x47,%bl
  jne    L916
  test   $0x7,%al
  je     L1850
  shr    $0x8,%rbx
L1464:
  add    $0x7,%rbp
  mov    %ebx,%r12d
L1762:
  cmp    $0x5f,%bl
  jne    L1306
L1001:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L852
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L852:
  movzbl %bl,%edi
  add    $0x1,%rbp
  mov    %ebx,%r12d
  call   <isalnum@plt>
  test   %rax,%rax
  je     L1762
  jmp    L1001
  nopl   0x0(%rax)
  lea    0x2(%r15),%rax
  cmp    %rax,%rbp
  jae    L1094
  test   %rcx,%rcx
  jne    L1248
L561:
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x0(%rbp),%rdx
L1248:
  lea    0x1(%rbp),%rax
  mov    %edx,%r12d
  cmp    $0x4f,%dl
  je     L1359
  mov    %rdx,%rbx
  mov    %rax,%rbp
  jmp    L1306
  nopl   0x0(%rax,%rax,1)
  mov    %rdx,%rbx
  test   %rcx,%rcx
  je     L135
L593:
  add    $0x1,%rbp
  mov    %ebx,%r12d
  cmp    $0x2f,%bl
  je     L774
  cmp    $0x2a,%bl
  je     L1171
L1306:
  cmp    $0x43,%r12b
  jbe    L587
  jmp    L1551
  nopl   0x0(%rax,%rax,1)
L135:
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x0(%rbp),%rbx
  jmp    L593
  nop
L1359:
  test   $0x7,%al
  je     L1409
  shr    $0x8,%rdx
  lea    0x2(%rbp),%rax
  mov    %rdx,%rbx
  mov    %ebx,%r12d
  cmp    $0x4e,%bl
  jne    L916
L356:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L899
  cmp    %rax,%r13
  jbe    L1193
  mov    0x2(%rbp),%rbx
L899:
  lea    0x3(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x46,%bl
  jne    L916
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1569
  cmp    %rax,%r13
  jbe    L1193
  mov    0x3(%rbp),%rbx
L1569:
  lea    0x4(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x49,%bl
  jne    L916
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L1197
  cmp    %rax,%r13
  jbe    L1193
  mov    0x4(%rbp),%rbx
L1197:
  lea    0x5(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x47,%bl
  jne    L916
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L577
  cmp    %rax,%r13
  jbe    L1193
  mov    0x5(%rbp),%rbx
L577:
  add    $0x6,%rbp
  mov    %ebx,%r12d
  cmp    $0x5f,%bl
  jne    L1306
  mov    %rbp,%rdx
L1811:
  shr    $0x8,%rbx
  test   $0x7,%dl
  jne    L1698
  cmp    %r13,%rdx
  jae    L1193
  mov    (%rdx),%rbx
L1698:
  add    $0x1,%rdx
  movzbl %bl,%edi
  mov    %ebx,%r12d
  mov    %rdx,(%rsp)
  call   <isalnum@plt>
  mov    (%rsp),%rdx
  test   %rax,%rax
  jne    L1811
  cmp    $0x5f,%bl
  je     L1811
  mov    %rdx,%rsi
  mov    %rbp,%rdi
  sub    %rbp,%rsi
  sub    $0x1,%esi
  call   <use_config@plt>
  mov    (%rsp),%rbp
  jmp    L1306
  cs nopw 0x0(%rax,%rax,1)
L1094:
  movzbl -0x2(%rbp),%edi
  mov    %rcx,0x8(%rsp)
  mov    %rdx,(%rsp)
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1551
  cmpb   $0x5f,-0x2(%rbp)
  mov    (%rsp),%rdx
  mov    0x8(%rsp),%rcx
  je     L1551
  test   %rcx,%rcx
  je     L561
  jmp    L1248
L1378:
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L1642:
  lea    0x1(%rbp),%rax
  cmp    $0xa,%bl
  je     L147
  cmp    $0x5c,%bl
  je     L1175
  mov    %rax,%rbp
L774:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1642
  jmp    L1378
  nopw   0x0(%rax,%rax,1)
L1409:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x1(%rbp),%rbx
  lea    0x2(%rbp),%rax
  mov    %ebx,%r12d
  cmp    $0x4e,%bl
  je     L356
L916:
  mov    %rax,%rbp
  jmp    L1306
L1175:
  shr    $0x8,%rbx
  test   $0x7,%al
  jne    L495
  cmp    %rax,%r13
  jbe    L1193
  mov    0x1(%rbp),%rbx
L495:
  add    $0x2,%rbp
  jmp    L774
L1297:
  test   %rcx,%rcx
  jne    L1025
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x1(%rax),%rdx
L1025:
  lea    0x2(%rax),%rbp
  mov    %edx,%r12d
  cmp    $0x6e,%dl
  jne    L1566
  test   $0x7,%bpl
  je     L592
  shr    $0x8,%rdx
  mov    %rdx,%rbx
L477:
  lea    0x3(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x63,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1425
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x3(%rax),%rbx
L1425:
  lea    0x4(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x6c,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L42
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x4(%rax),%rbx
L42:
  lea    0x5(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x75,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1272
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x5(%rax),%rbx
L1272:
  lea    0x6(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x64,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L355
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x6(%rax),%rbx
L355:
  lea    0x7(%rax),%rbp
  mov    %ebx,%r12d
  mov    %rbp,%rdx
  cmp    $0x65,%bl
  jne    L1306
  jmp    L362
  nopl   0x0(%rax)
L29:
  mov    %rsi,%rdx
L362:
  shr    $0x8,%rbx
  test   $0x7,%dl
  jne    L1360
  cmp    %r13,%rdx
  jae    L1193
  mov    (%rdx),%rbx
L1360:
  lea    0x1(%rdx),%rsi
  mov    %ebx,%r12d
  cmp    $0x9,%bl
  je     L29
  cmp    $0x20,%bl
  je     L29
  cmp    $0x22,%bl
  je     L891
  cmp    $0x3c,%bl
  je     L45
  mov    %rsi,%rbp
  jmp    L1306
  nopl   0x0(%rax,%rax,1)
L918:
  mov    %rdx,%rbx
  test   %rcx,%rcx
  jne    L607
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x1(%rax),%rbx
L607:
  lea    0x2(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x65,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L99
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x2(%rax),%rbx
L99:
  lea    0x3(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x66,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1120
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x3(%rax),%rbx
L1120:
  lea    0x4(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x69,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1190
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x4(%rax),%rbx
L1190:
  lea    0x5(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x6e,%bl
  jne    L1306
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L823
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x5(%rax),%rbx
L823:
  lea    0x6(%rax),%rbp
  mov    %ebx,%r12d
  cmp    $0x65,%bl
  jne    L1306
  jmp    L418
  cs nopw 0x0(%rax,%rax,1)
L1566:
  mov    %rdx,%rbx
  jmp    L1306
L1171:
  shr    $0x8,%rbx
  test   $0x7,%bpl
  jne    L60
  cmp    %r13,%rbp
  jae    L1193
  mov    0x0(%rbp),%rbx
L60:
  add    $0x1,%rbp
  jmp    L671
  nopl   (%rax)
L1489:
  mov    0x0(%rbp),%rbx
L263:
  add    $0x1,%rbp
  cmp    $0x2f,%bl
  je     L1551
L671:
  mov    %rbp,%rax
  and    $0x7,%eax
  cmp    $0x2a,%bl
  jne    L1171
  shr    $0x8,%rbx
  test   %rax,%rax
  jne    L263
  cmp    %r13,%rbp
  jb     L1489
  jmp    L1193
L592:
  cmp    %rbp,%r13
  jbe    L1193
  mov    0x2(%rax),%rbx
  jmp    L477
L147:
  mov    %rax,%rbp
  jmp    L1551
L1494:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x1(%rbp),%rbx
  jmp    L184
L1850:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x6(%rbp),%rbx
  jmp    L1464
L1092:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x5(%rbp),%rbx
  jmp    L647
L1483:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x4(%rbp),%rbx
  jmp    L1614
L14:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x3(%rbp),%rbx
  jmp    L1252
L611:
  cmp    %rax,%r13
  jbe    L1193
  mov    0x2(%rbp),%rbx
  jmp    L129
L45:
  mov    %rsi,%rax
  jmp    L540
L1081:
  shr    $0x8,%rbx
L333:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1551
  cmp    $0x3e,%bl
  je     L1807
  mov    %rbp,%rax
L540:
  test   $0x7,%al
  jne    L1081
  cmp    %r13,%rax
  jae    L1193
  mov    (%rax),%rbx
  jmp    L333
L891:
  mov    %rsi,%rax
  jmp    L1536
L1319:
  shr    $0x8,%rbx
L475:
  lea    0x1(%rax),%rbp
  cmp    $0xa,%bl
  je     L1551
  cmp    $0x22,%bl
  je     L430
  mov    %rbp,%rax
L1536:
  test   $0x7,%al
  jne    L1319
  cmp    %r13,%rax
  jae    L1193
  mov    (%rax),%rbx
  jmp    L475
L1807:
  sub    %rdx,%rax
  mov    $0x1,%edi
  lea    -0x1(%rax),%edx
  call   <handle_include@plt>
  jmp    L1551
L430:
  sub    %rdx,%rax
  xor    %edi,%edi
  lea    -0x1(%rax),%edx
  call   <handle_include@plt>
  jmp    L1551
```

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