user: 下面的汇编指令对应的C源代码是什么:

```asm
<state_machine>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  mov    -0x28(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  movq   $0x0,-0x10(%rbp)
L372:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L517
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L24
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L517:
  addq   $0x1,-0x18(%rbp)
L2142:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  jbe    L2479
  jmp    L372
L2479:
  mov    -0x10(%rbp),%rax
  cmp    $0x21,%al
  ja     L1632
  jmp    L372
L1632:
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L334
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L1072
  jmp    L1620
L1072:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L1716
  jmp    L1584
L1716:
  mov    -0x10(%rbp),%rax
  cmp    $0x23,%al
  jne    L2606
  jmp    L1024
L2606:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L262
  jmp    L372
L1711:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2562
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2179
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2562:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L1745
  jmp    L372
L1745:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L2016
  jmp    L1711
L2016:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L670
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1929
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L670:
  addq   $0x1,-0x18(%rbp)
  jmp    L1711
L334:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1122
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1883
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1122:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  jne    L867
  jmp    L1711
L867:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L1314
  jmp    L2142
L1314:
  nop
L1256:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L581
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L992
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L581:
  addq   $0x1,-0x18(%rbp)
L1057:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L2092
  jmp    L1256
L2092:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2113
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1689
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2113:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L372
  jmp    L1057
L1620:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2289
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2502
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2289:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L2348
  jmp    L372
L2348:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L217
  jmp    L1620
L217:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1569
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L640
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1569:
  addq   $0x1,-0x18(%rbp)
  jmp    L1620
L1584:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1604
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2601
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1604:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L1250
  jmp    L372
L1250:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L1859
  jmp    L1584
L1859:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1452
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L910
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1452:
  addq   $0x1,-0x18(%rbp)
  jmp    L1584
L1024:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2149
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L829
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2149:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L717
  jmp    L1024
L717:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L997
  jmp    L1024
L997:
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L1921
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L2404
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L1602
  jmp    L2142
L1921:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1434
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L354
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1434:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L1550
  jmp    L2142
L1550:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L474
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1880
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L474:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x63,%al
  je     L953
  jmp    L2142
L953:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2061
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1344
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2061:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6c,%al
  je     L2193
  jmp    L2142
L2193:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2243
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1715
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2243:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L2463
  jmp    L2142
L2463:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L314
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1163
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L314:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L2205
  jmp    L2142
L2205:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2028
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1881
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2028:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L2237
  jmp    L2142
L2237:
  nop
L2117:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1010
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1854
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1010:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L53
  jmp    L2117
L53:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L225
  jmp    L2117
L225:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L1579
  jmp    L2139
L1579:
  mov    -0x10(%rbp),%rax
  cmp    $0x3c,%al
  jne    L2142
  jmp    L271
L2139:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2203
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1807
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2203:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L1681
  jmp    L372
L1681:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  je     L353
  jmp    L2139
L353:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  sub    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  call   <handle_include@plt>
  jmp    L372
L271:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1964
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L465
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1964:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L1376
  jmp    L372
L1376:
  mov    -0x10(%rbp),%rax
  cmp    $0x3e,%al
  je     L1637
  jmp    L271
L1637:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  sub    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  call   <handle_include@plt>
  jmp    L372
L2404:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2074
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2377
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2074:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L146
  jmp    L2142
L146:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2204
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1631
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2204:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L677
  jmp    L2142
L677:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1011
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2064
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1011:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L2432
  jmp    L2142
L2432:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L360
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2500
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L360:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L1333
  jmp    L2142
L1333:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L35
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L54
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L35:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L821
  jmp    L2142
L1602:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2458
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L283
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2458:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L1134
  jmp    L2142
L1134:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1324
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L945
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1324:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L2025
  jmp    L2142
L2025:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2308
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2467
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2308:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L984
  jmp    L2142
L984:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1664
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L574
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1664:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L1495
  jmp    L2142
L821:
  nop
  jmp    L857
L1495:
  nop
L857:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1979
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L955
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1979:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L2394
  jmp    L857
L2394:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L516
  jmp    L857
L516:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L1930
  jmp    L2142
L1930:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L773
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L448
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L773:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L524
  jmp    L2142
L524:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1786
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2159
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1786:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L1087
  jmp    L2142
L1087:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2038
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2100
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2038:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L1905
  jmp    L2142
L1905:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L779
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L15
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L779:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L2306
  jmp    L2142
L2306:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L612
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2428
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L612:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L1218
  jmp    L2142
L1218:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2456
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L375
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2456:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L2574
  jmp    L2142
L2574:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1290:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2376
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2605
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2376:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1290
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L2142
  jmp    L1290
L262:
  nop
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  cmp    %rax,-0x18(%rbp)
  jb     L1210
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L372
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  jne    L1210
  jmp    L372
L1210:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1380
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1977
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1380:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L1123
  jmp    L2142
L1123:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L560
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1894
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L560:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L1776
  jmp    L2142
L1776:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1321
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L245
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1321:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L1926
  jmp    L2142
L1926:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1130
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2280
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1130:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L1889
  jmp    L2142
L1889:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1950
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2609
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1950:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L111
  jmp    L2142
L111:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1440
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2161
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1440:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L699
  jmp    L2142
L699:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L869:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1697
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L646
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1697:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L869
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L1020
  jmp    L869
L1020:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  sub    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <use_config@plt>
  jmp    L2142
L24:
  nop
  jmp    L2331
L2179:
  nop
  jmp    L2331
L1929:
  nop
  jmp    L2331
L1883:
  nop
  jmp    L2331
L992:
  nop
  jmp    L2331
L1689:
  nop
  jmp    L2331
L2502:
  nop
  jmp    L2331
L640:
  nop
  jmp    L2331
L2601:
  nop
  jmp    L2331
L910:
  nop
  jmp    L2331
L829:
  nop
  jmp    L2331
L354:
  nop
  jmp    L2331
L1880:
  nop
  jmp    L2331
L1344:
  nop
  jmp    L2331
L1715:
  nop
  jmp    L2331
L1163:
  nop
  jmp    L2331
L1881:
  nop
  jmp    L2331
L1854:
  nop
  jmp    L2331
L1807:
  nop
  jmp    L2331
L465:
  nop
  jmp    L2331
L2377:
  nop
  jmp    L2331
L1631:
  nop
  jmp    L2331
L2064:
  nop
  jmp    L2331
L2500:
  nop
  jmp    L2331
L54:
  nop
  jmp    L2331
L283:
  nop
  jmp    L2331
L945:
  nop
  jmp    L2331
L2467:
  nop
  jmp    L2331
L574:
  nop
  jmp    L2331
L955:
  nop
  jmp    L2331
L448:
  nop
  jmp    L2331
L2159:
  nop
  jmp    L2331
L2100:
  nop
  jmp    L2331
L15:
  nop
  jmp    L2331
L2428:
  nop
  jmp    L2331
L375:
  nop
  jmp    L2331
L2605:
  nop
  jmp    L2331
L1977:
  nop
  jmp    L2331
L1894:
  nop
  jmp    L2331
L245:
  nop
  jmp    L2331
L2280:
  nop
  jmp    L2331
L2609:
  nop
  jmp    L2331
L2161:
  nop
  jmp    L2331
L646:
  nop
L2331:
  nop
  leave
  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;
  }
}
```