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

```asm
<state_machine>:
  endbr64
  push   %r15
  lea    D25(%rip),%rcx
  mov    %rdi,%r15
  push   %r14
  lea    D78(%rip),%r14
  push   %r13
  mov    %rsi,%r13
  push   %r12
  push   %rbp
  mov    %rdi,%rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x28,%rsp
  nopl   0x0(%rax,%rax,1)
L1838:
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L723
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L723:
  mov    %rbx,%r12
  add    $0x1,%rbp
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  ja     L1838
  lea    0x2(%r15),%rdx
L745:
  mov    %rbp,%r8
  mov    %rbx,%rsi
  and    $0x7,%r8d
  shl    $0x8,%rsi
  cmp    $0x43,%r12
  ja     L582
  cmp    $0x21,%r12
  jbe    L1838
  sub    $0x22,%r12
  cmp    $0x21,%r12
  ja     L1838
  movslq (%r14,%r12,4),%rax
  add    %r14,%rax
  notrack jmp *%rax
  xchg   %ax,%ax
L2003:
  mov    %rbp,%rax
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L1684
  cmp    %r13,%rax
  jae    L211
L680:
  mov    (%rax),%rbx
L1684:
  mov    %rbx,%rdx
  lea    0x1(%rax),%rbp
  shr    $0x38,%rdx
  cmp    $0x22,%rdx
  je     L1838
  cmp    $0x5c,%rdx
  jne    L2003
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L335
  cmp    %rbp,%r13
  jbe    L211
  mov    0x1(%rax),%rbx
L335:
  add    $0x2,%rax
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L1684
  cmp    %r13,%rax
  jb     L680
L211:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L1920:
  mov    %rbp,%rax
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L924
L2015:
  cmp    %r13,%rax
  jae    L211
  mov    (%rax),%rbx
L924:
  mov    %rbx,%rdx
  lea    0x1(%rax),%rbp
  shr    $0x38,%rdx
  cmp    $0x27,%rdx
  je     L1838
  cmp    $0x5c,%rdx
  jne    L1920
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1310
  cmp    %rbp,%r13
  jbe    L211
  mov    0x1(%rax),%rbx
L1310:
  add    $0x2,%rax
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L924
  jmp    L2015
  nopw   0x0(%rax,%rax,1)
L467:
  mov    %rbp,%rax
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1850
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L1850:
  mov    %rbx,%r12
  add    $0x1,%rbp
  shr    $0x38,%r12
  cmp    $0x20,%r12
  je     L467
  cmp    $0x9,%r12
  je     L467
  mov    %rbp,%rdi
  mov    %rbx,%rsi
  and    $0x7,%edi
  shl    $0x8,%rsi
  cmp    $0x69,%r12
  je     L197
  cmp    $0x64,%r12
  je     L228
  cmp    $0x75,%r12
  jne    L780
  mov    %rsi,%rbx
  test   %rdi,%rdi
  jne    L1587
  cmp    %rbp,%r13
  jbe    L211
  mov    0x1(%rax),%rbx
L1587:
  mov    %rbx,%r12
  lea    0x2(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x6e,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1302
  cmp    %rbp,%r13
  jbe    L211
  mov    0x2(%rax),%rbx
L1302:
  mov    %rbx,%r12
  lea    0x3(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x64,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1064
  cmp    %rbp,%r13
  jbe    L211
  mov    0x3(%rax),%rbx
L1064:
  mov    %rbx,%r12
  lea    0x4(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x65,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L207
  cmp    %rbp,%r13
  jbe    L211
  mov    0x4(%rax),%rbx
L207:
  mov    %rbx,%r12
  lea    0x5(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x66,%r12
  jne    L780
  jmp    L1049
  nopl   0x0(%rax,%rax,1)
L1333:
  mov    %rax,%rbp
L1049:
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1233
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L1233:
  mov    %rbx,%r12
  lea    0x1(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x20,%r12
  je     L1333
  cmp    $0x9,%r12
  je     L1333
  cmp    $0x43,%r12
  jne    L1634
  test   $0x7,%al
  je     L308
  shl    $0x8,%rbx
L412:
  mov    %rbx,%r12
  lea    0x2(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x4f,%r12
  jne    L1634
  test   $0x7,%al
  je     L633
  shl    $0x8,%rbx
L1883:
  mov    %rbx,%r12
  lea    0x3(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x4e,%r12
  jne    L1634
  test   $0x7,%al
  je     L1906
  shl    $0x8,%rbx
L1823:
  mov    %rbx,%r12
  lea    0x4(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x46,%r12
  jne    L1634
  test   $0x7,%al
  je     L1682
  shl    $0x8,%rbx
L1866:
  mov    %rbx,%r12
  lea    0x5(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x49,%r12
  jne    L1634
  test   $0x7,%al
  je     L1970
  shl    $0x8,%rbx
L1911:
  mov    %rbx,%r12
  lea    0x6(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x47,%r12
  jne    L1634
  test   $0x7,%al
  je     L1603
  shl    $0x8,%rbx
L824:
  mov    %rbx,%r12
  add    $0x7,%rbp
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  jne    L780
L368:
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L2007
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L2007:
  mov    %rbx,%r12
  mov    %rdx,0x8(%rsp)
  add    $0x1,%rbp
  shr    $0x38,%r12
  movsbl %r12b,%edi
  call   <isalnum@plt>
  cmp    $0x5f,%r12
  mov    0x8(%rsp),%rdx
  lea    D25(%rip),%rcx
  je     L368
  test   %rax,%rax
  jne    L368
  jmp    L780
  nopw   0x0(%rax,%rax,1)
  cmp    %rdx,%rbp
  jae    L730
  test   %r8,%r8
  jne    L1824
L1443:
  cmp    %rbp,%r13
  jbe    L211
  mov    0x0(%rbp),%rsi
L1824:
  mov    %rsi,%r12
  lea    0x1(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x4f,%r12
  je     L1148
L1719:
  mov    %rsi,%rbx
  mov    %rax,%rbp
L780:
  cmp    $0x5f,%r12
  jbe    L745
  jmp    L1838
  nopl   (%rax)
  mov    %rsi,%rbx
  test   %r8,%r8
  je     L1688
L1274:
  mov    %rbx,%r12
  add    $0x1,%rbp
  shr    $0x38,%r12
  cmp    $0x2f,%r12
  je     L238
  cmp    $0x2a,%r12
  jne    L780
L764:
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1789
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L1789:
  add    $0x1,%rbp
  jmp    L1391
  nopl   0x0(%rax)
L1946:
  mov    0x0(%rbp),%rbx
L1629:
  mov    %rbx,%rax
  add    $0x1,%rbp
  shr    $0x38,%rax
  cmp    $0x2f,%rax
  je     L1838
L1391:
  mov    %rbx,%rax
  mov    %rbp,%rdx
  shr    $0x38,%rax
  and    $0x7,%edx
  cmp    $0x2a,%rax
  jne    L764
  shl    $0x8,%rbx
  test   %rdx,%rdx
  jne    L1629
  cmp    %r13,%rbp
  jb     L1946
  jmp    L211
  nop
L582:
  cmp    $0x5f,%r12
  jne    L1838
L1698:
  test   %r8,%r8
  jne    L184
  cmp    %rbp,%r13
  jbe    L211
  mov    0x0(%rbp),%rsi
L184:
  mov    %rsi,%r12
  lea    0x1(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  jne    L1719
  test   $0x7,%al
  je     L1132
  shl    $0x8,%rsi
  mov    %rsi,%rbx
L918:
  mov    %rbx,%r12
  lea    0x2(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x53,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L1744
  cmp    %rax,%r13
  jbe    L211
  mov    0x2(%rbp),%rbx
L1744:
  mov    %rbx,%r12
  lea    0x3(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x4d,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L1196
  cmp    %rax,%r13
  jbe    L211
  mov    0x3(%rbp),%rbx
L1196:
  mov    %rbx,%r12
  lea    0x4(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x50,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L739
  cmp    %rax,%r13
  jbe    L211
  mov    0x4(%rbp),%rbx
L739:
  mov    %rbx,%r12
  lea    0x5(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L2037
  cmp    %rax,%r13
  jbe    L211
  mov    0x5(%rbp),%rbx
L2037:
  mov    %rbx,%r12
  add    $0x6,%rbp
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  jne    L780
  mov    $0x3,%esi
  mov    %rcx,%rdi
  mov    %rdx,0x8(%rsp)
  call   <use_config@plt>
  mov    %rbp,%r8
  mov    %rbx,%rsi
  mov    0x8(%rsp),%rdx
  and    $0x7,%r8d
  shl    $0x8,%rsi
  lea    D25(%rip),%rcx
  jmp    L1698
  xchg   %ax,%ax
L1688:
  cmp    %rbp,%r13
  jbe    L211
  mov    0x0(%rbp),%rbx
  jmp    L1274
  nopw   0x0(%rax,%rax,1)
L1148:
  test   $0x7,%al
  je     L1079
  shl    $0x8,%rsi
  mov    %rsi,%rbx
L1559:
  mov    %rbx,%r12
  lea    0x2(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x4e,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L364
  cmp    %rax,%r13
  jbe    L211
  mov    0x2(%rbp),%rbx
L364:
  mov    %rbx,%r12
  lea    0x3(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x46,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L1323
  cmp    %rax,%r13
  jbe    L211
  mov    0x3(%rbp),%rbx
L1323:
  mov    %rbx,%r12
  lea    0x4(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x49,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L384
  cmp    %rax,%r13
  jbe    L211
  mov    0x4(%rbp),%rbx
L384:
  mov    %rbx,%r12
  lea    0x5(%rbp),%rax
  shr    $0x38,%r12
  cmp    $0x47,%r12
  jne    L1634
  shl    $0x8,%rbx
  test   $0x7,%al
  jne    L10
  cmp    %rax,%r13
  jbe    L211
  mov    0x5(%rbp),%rbx
L10:
  mov    %rbx,%r12
  add    $0x6,%rbp
  shr    $0x38,%r12
  cmp    $0x5f,%r12
  jne    L780
  mov    %rbp,%r8
L1046:
  shl    $0x8,%rbx
  test   $0x7,%r8b
  jne    L731
  cmp    %r13,%r8
  jae    L211
  mov    (%r8),%rbx
L731:
  mov    %rbx,%r12
  add    $0x1,%r8
  mov    %rdx,0x10(%rsp)
  shr    $0x38,%r12
  mov    %r8,0x8(%rsp)
  movsbl %r12b,%edi
  call   <isalnum@plt>
  mov    0x8(%rsp),%r8
  mov    0x10(%rsp),%rdx
  test   %rax,%rax
  jne    L1046
  cmp    $0x5f,%r12
  je     L1046
  mov    %r8,%rsi
  mov    %rbp,%rdi
  sub    %rbp,%rsi
  sub    $0x1,%esi
  call   <use_config@plt>
  mov    0x8(%rsp),%rbp
  mov    0x10(%rsp),%rdx
  lea    D25(%rip),%rcx
  jmp    L780
  nopw   0x0(%rax,%rax,1)
L730:
  movsbl -0x2(%rbp),%edi
  mov    %rdx,0x18(%rsp)
  mov    %r8,0x10(%rsp)
  mov    %rsi,0x8(%rsp)
  call   <isalnum@plt>
  lea    D25(%rip),%rcx
  test   %rax,%rax
  jne    L1838
  cmpb   $0x5f,-0x2(%rbp)
  mov    0x8(%rsp),%rsi
  mov    0x10(%rsp),%r8
  mov    0x18(%rsp),%rdx
  je     L1838
  test   %r8,%r8
  je     L1443
  jmp    L1824
L1007:
  cmp    %r13,%rbp
  jae    L211
  mov    0x0(%rbp),%rbx
L927:
  mov    %rbx,%rax
  lea    0x1(%rbp),%rdx
  shr    $0x38,%rax
  cmp    $0xa,%rax
  je     L2084
  cmp    $0x5c,%rax
  je     L1931
  mov    %rdx,%rbp
L238:
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L927
  jmp    L1007
  cs nopw 0x0(%rax,%rax,1)
L1132:
  cmp    %rax,%r13
  jbe    L211
  mov    0x1(%rbp),%rbx
  jmp    L918
  nopw   0x0(%rax,%rax,1)
L1079:
  cmp    %rax,%r13
  jbe    L211
  mov    0x1(%rbp),%rbx
  jmp    L1559
L1931:
  shl    $0x8,%rbx
  test   $0x7,%dl
  jne    L499
  cmp    %rdx,%r13
  jbe    L211
  mov    0x1(%rbp),%rbx
L499:
  add    $0x2,%rbp
  jmp    L238
  cs nopw 0x0(%rax,%rax,1)
L1634:
  mov    %rax,%rbp
  jmp    L780
L197:
  test   %rdi,%rdi
  jne    L879
  cmp    %rbp,%r13
  jbe    L211
  mov    0x1(%rax),%rsi
L879:
  mov    %rsi,%r12
  lea    0x2(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x6e,%r12
  jne    L1319
  test   $0x7,%bpl
  je     L1702
  shl    $0x8,%rsi
  mov    %rsi,%rbx
L485:
  mov    %rbx,%r12
  lea    0x3(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x63,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1958
  cmp    %rbp,%r13
  jbe    L211
  mov    0x3(%rax),%rbx
L1958:
  mov    %rbx,%r12
  lea    0x4(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x6c,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1082
  cmp    %rbp,%r13
  jbe    L211
  mov    0x4(%rax),%rbx
L1082:
  mov    %rbx,%r12
  lea    0x5(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x75,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L753
  cmp    %rbp,%r13
  jbe    L211
  mov    0x5(%rax),%rbx
L753:
  mov    %rbx,%r12
  lea    0x6(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x64,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1237
  cmp    %rbp,%r13
  jbe    L211
  mov    0x6(%rax),%rbx
L1237:
  mov    %rbx,%r12
  lea    0x7(%rax),%rbp
  shr    $0x38,%r12
  mov    %rbp,%rdi
  cmp    $0x65,%r12
  jne    L780
  jmp    L774
  nopw   0x0(%rax,%rax,1)
L1150:
  mov    %rsi,%rdi
L774:
  shl    $0x8,%rbx
  test   $0x7,%dil
  jne    L1722
  cmp    %r13,%rdi
  jae    L211
  mov    (%rdi),%rbx
L1722:
  mov    %rbx,%r12
  lea    0x1(%rdi),%rsi
  shr    $0x38,%r12
  cmp    $0x9,%r12
  je     L1150
  cmp    $0x20,%r12
  je     L1150
  cmp    $0x22,%r12
  je     L623
  cmp    $0x3c,%r12
  je     L403
  mov    %rsi,%rbp
  jmp    L780
  nopl   0x0(%rax)
L228:
  mov    %rsi,%rbx
  test   %rdi,%rdi
  jne    L115
  cmp    %rbp,%r13
  jbe    L211
  mov    0x1(%rax),%rbx
L115:
  mov    %rbx,%r12
  lea    0x2(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x65,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L65
  cmp    %rbp,%r13
  jbe    L211
  mov    0x2(%rax),%rbx
L65:
  mov    %rbx,%r12
  lea    0x3(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x66,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L1939
  cmp    %rbp,%r13
  jbe    L211
  mov    0x3(%rax),%rbx
L1939:
  mov    %rbx,%r12
  lea    0x4(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x69,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L800
  cmp    %rbp,%r13
  jbe    L211
  mov    0x4(%rax),%rbx
L800:
  mov    %rbx,%r12
  lea    0x5(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x6e,%r12
  jne    L780
  shl    $0x8,%rbx
  test   $0x7,%bpl
  jne    L11
  cmp    %rbp,%r13
  jbe    L211
  mov    0x5(%rax),%rbx
L11:
  mov    %rbx,%r12
  lea    0x6(%rax),%rbp
  shr    $0x38,%r12
  cmp    $0x65,%r12
  jne    L780
  jmp    L1049
  nop
L1319:
  mov    %rsi,%rbx
  jmp    L780
L1702:
  cmp    %rbp,%r13
  jbe    L211
  mov    0x2(%rax),%rbx
  jmp    L485
L2084:
  mov    %rdx,%rbp
  jmp    L1838
L308:
  cmp    %rax,%r13
  jbe    L211
  mov    0x1(%rbp),%rbx
  jmp    L412
L1603:
  cmp    %rax,%r13
  jbe    L211
  mov    0x6(%rbp),%rbx
  jmp    L824
L1970:
  cmp    %rax,%r13
  jbe    L211
  mov    0x5(%rbp),%rbx
  jmp    L1911
L1682:
  cmp    %rax,%r13
  jbe    L211
  mov    0x4(%rbp),%rbx
  jmp    L1866
L1906:
  cmp    %rax,%r13
  jbe    L211
  mov    0x3(%rbp),%rbx
  jmp    L1823
L633:
  cmp    %rax,%r13
  jbe    L211
  mov    0x2(%rbp),%rbx
  jmp    L1883
L403:
  mov    %rsi,%rax
  jmp    L714
L1973:
  shl    $0x8,%rbx
L790:
  mov    %rbx,%rdx
  lea    0x1(%rax),%rbp
  shr    $0x38,%rdx
  cmp    $0xa,%rdx
  je     L1838
  cmp    $0x3e,%rdx
  je     L2063
  mov    %rbp,%rax
L714:
  test   $0x7,%al
  jne    L1973
  cmp    %r13,%rax
  jae    L211
  mov    (%rax),%rbx
  jmp    L790
L623:
  mov    %rsi,%rax
  jmp    L2047
L1111:
  shl    $0x8,%rbx
L659:
  mov    %rbx,%rdx
  lea    0x1(%rax),%rbp
  shr    $0x38,%rdx
  cmp    $0xa,%rdx
  je     L1838
  cmp    $0x22,%rdx
  je     L1985
  mov    %rbp,%rax
L2047:
  test   $0x7,%al
  jne    L1111
  cmp    %r13,%rax
  jae    L211
  mov    (%rax),%rbx
  jmp    L659
L2063:
  sub    %rdi,%rax
  xor    %edi,%edi
  lea    -0x1(%rax),%edx
  call   <handle_include@plt>
  lea    D25(%rip),%rcx
  jmp    L1838
L1985:
  sub    %rdi,%rax
  mov    $0x1,%edi
  lea    -0x1(%rax),%edx
  call   <handle_include@plt>
  lea    D25(%rip),%rcx
  jmp    L1838
```

tool_calls: name: extract_symbolic_data
arguments: tag: D25
type: string

tool: D25: SMP

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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) > ((('/') > ((('\'') > ((('"') > ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))))) ? ('\'') : ((('"') > ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))))))) ? ('/') : ((('\'') > ((('"') > ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))))) ? ('\'') : ((('"') > ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') > ((('C') > ('_') ? ('C') : ('_'))) ? ('#') : ((('C') > ('_') ? ('C') : ('_'))))))))))))
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) < ((('/') < ((('\'') < ((('"') < ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))))) ? ('\'') : ((('"') < ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))))))) ? ('/') : ((('\'') < ((('"') < ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))))) ? ('\'') : ((('"') < ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))) ? ('"') : ((('#') < ((('C') < ('_') ? ('C') : ('_'))) ? ('#') : ((('C') < ('_') ? ('C') : ('_'))))))))))))
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '/')
      goto slash;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\'')
      goto squote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto dquote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '#')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'C')
      goto cee;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '_')
      goto underscore;
    goto start;
  slash_slash : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\n')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '\\')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '/')
      goto slash_slash;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '*')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '*')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '/')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\'')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '\\')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '\\')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'i')
      goto pound_i;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'd')
      goto pound_d;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'c')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'l')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'u')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'd')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound_include;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound_include;
    map_dot = next;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto pound_include_dquote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '<')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\n')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '"')
      goto pound_include_dquote;
    handle_include(1, 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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\n')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '>')
      goto pound_include_langle;
    handle_include(0, 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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'f')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'i')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'd')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound_define_undef;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound_define_undef;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'C')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'O')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'N')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'F')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'I')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'G')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      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((__buf >> 8 * (sizeof(unsigned long) - 1))) || (__buf >> 8 * (sizeof(unsigned long) - 1)) == '_')
      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 ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'O')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'N')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'F')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'I')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'G')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      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((__buf >> 8 * (sizeof(unsigned long) - 1))) || (__buf >> 8 * (sizeof(unsigned long) - 1)) == '_')
      goto cee_CONFIG_word;
    use_config(map_dot, next - map_dot - 1);
    goto __start;
  underscore : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      if (next >= end)
        break;
      __buf = *(unsigned long *)next;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'S')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'M')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'P')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        if (next >= end)
          break;
        __buf = *(unsigned long *)next;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      goto __start;
    use_config("SMP", 3);
    goto __start;
  }
}
```