user: What is the c source code of the assembly code below:

```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)
L1993:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L377
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1253
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L377:
  addq   $0x1,-0x18(%rbp)
L1751:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  jbe    L1809
  jmp    L1993
L1809:
  mov    -0x10(%rbp),%rax
  cmp    $0x21,%al
  ja     L132
  jmp    L1993
L132:
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L937
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L1527
  jmp    L2409
L1527:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L1393
  jmp    L2507
L1393:
  mov    -0x10(%rbp),%rax
  cmp    $0x23,%al
  jne    L278
  jmp    L295
L278:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L1578
  jmp    L1993
L1395:
  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    L1981
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L581:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L284
  jmp    L1993
L284:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L1897
  jmp    L1395
L1897:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1026
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L101
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1026:
  addq   $0x1,-0x18(%rbp)
  jmp    L1395
L937:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2058
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1724
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2058:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  jne    L1770
  jmp    L1395
L1770:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L10
  jmp    L1751
L10:
  nop
L1970:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2015
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1774
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2015:
  addq   $0x1,-0x18(%rbp)
L71:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L452
  jmp    L1970
L452:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1406
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2378
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1406:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L1993
  jmp    L71
L2409:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2267
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1015
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2267:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L30
  jmp    L1993
L30:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L881
  jmp    L2409
L881:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1071
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1821
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1071:
  addq   $0x1,-0x18(%rbp)
  jmp    L2409
L2507:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2508
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1014
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2508:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L2019
  jmp    L1993
L2019:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L504
  jmp    L2507
L504:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L207
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2543
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L207:
  addq   $0x1,-0x18(%rbp)
  jmp    L2507
L295:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1760
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L526
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1760:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L2086
  jmp    L295
L2086:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L94
  jmp    L295
L94:
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L1495
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L2251
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L342
  jmp    L1751
L1495:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2115
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2552
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2115:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L1166
  jmp    L1751
L1166:
  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    L1086
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1664:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x63,%al
  je     L1603
  jmp    L1751
L1603:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L603
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1629
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L603:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6c,%al
  je     L455
  jmp    L1751
L455:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2610
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2325
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2610:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L563
  jmp    L1751
L563:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L163
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1470
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L163:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L1426
  jmp    L1751
L1426:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1565
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2053
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1565:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L1697
  jmp    L1751
L1697:
  nop
L745:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1476
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2206
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1476:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L939
  jmp    L745
L939:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L607
  jmp    L745
L607:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L65
  jmp    L162
L65:
  mov    -0x10(%rbp),%rax
  cmp    $0x3c,%al
  jne    L1751
  jmp    L2255
L162:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L85
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2168
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L85:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L12
  jmp    L1993
L12:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  je     L1602
  jmp    L162
L1602:
  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    L1993
L2255:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L445
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L20
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L445:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L708
  jmp    L1993
L708:
  mov    -0x10(%rbp),%rax
  cmp    $0x3e,%al
  je     L2007
  jmp    L2255
L2007:
  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    L1993
L2251:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L335
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L812
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L335:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L512
  jmp    L1751
L512:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2349
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L90
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2349:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L1692
  jmp    L1751
L1692:
  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    L2227
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L612:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L28
  jmp    L1751
L28:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L543
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L701
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L543:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L252
  jmp    L1751
L252:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L868
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1242
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L868:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L1794
  jmp    L1751
L342:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L642
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1013
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L642:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L34
  jmp    L1751
L34:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1985
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1053
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1985:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L367
  jmp    L1751
L367:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L81
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L533
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L81:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L2014
  jmp    L1751
L2014:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1691
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L159
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1691:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L1598
  jmp    L1751
L1794:
  nop
  jmp    L86
L1598:
  nop
L86:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1782
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L672
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1782:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L2517
  jmp    L86
L2517:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L490
  jmp    L86
L490:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L1849
  jmp    L1751
L1849:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1940
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2087
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1940:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L632
  jmp    L1751
L632:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1475
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1104
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1475:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L1505
  jmp    L1751
L1505:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1566
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2501
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1566:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L884
  jmp    L1751
L884:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2643
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1888
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2643:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L879
  jmp    L1751
L879:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L274
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L269
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L274:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L1943
  jmp    L1751
L1943:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2315
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1661
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2315:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L1388
  jmp    L1751
L1388:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1926:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2428
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L510
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2428:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1926
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L1751
  jmp    L1926
L1578:
  nop
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  cmp    %rax,-0x18(%rbp)
  jb     L1479
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1993
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  jne    L1479
  jmp    L1993
L1479:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2514
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L743
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2514:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L1562
  jmp    L1751
L1562:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2341
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2098
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2341:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L722
  jmp    L1751
L722:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2445
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1047
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2445:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L145
  jmp    L1751
L145:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1835
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1534
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1835:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L785
  jmp    L1751
L785:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1784
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2064
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1784:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L675
  jmp    L1751
L675:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L178
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1750
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L178:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L623
  jmp    L1751
L623:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1592:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L680
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1250
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L680:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %rax,%rax
  jne    L1592
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L186
  jmp    L1592
L186:
  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    L1751
L1253:
  nop
  jmp    L2633
L1981:
  nop
  jmp    L2633
L101:
  nop
  jmp    L2633
L1724:
  nop
  jmp    L2633
L1774:
  nop
  jmp    L2633
L2378:
  nop
  jmp    L2633
L1015:
  nop
  jmp    L2633
L1821:
  nop
  jmp    L2633
L1014:
  nop
  jmp    L2633
L2543:
  nop
  jmp    L2633
L526:
  nop
  jmp    L2633
L2552:
  nop
  jmp    L2633
L1086:
  nop
  jmp    L2633
L1629:
  nop
  jmp    L2633
L2325:
  nop
  jmp    L2633
L1470:
  nop
  jmp    L2633
L2053:
  nop
  jmp    L2633
L2206:
  nop
  jmp    L2633
L2168:
  nop
  jmp    L2633
L20:
  nop
  jmp    L2633
L812:
  nop
  jmp    L2633
L90:
  nop
  jmp    L2633
L2227:
  nop
  jmp    L2633
L701:
  nop
  jmp    L2633
L1242:
  nop
  jmp    L2633
L1013:
  nop
  jmp    L2633
L1053:
  nop
  jmp    L2633
L533:
  nop
  jmp    L2633
L159:
  nop
  jmp    L2633
L672:
  nop
  jmp    L2633
L2087:
  nop
  jmp    L2633
L1104:
  nop
  jmp    L2633
L2501:
  nop
  jmp    L2633
L1888:
  nop
  jmp    L2633
L269:
  nop
  jmp    L2633
L1661:
  nop
  jmp    L2633
L510:
  nop
  jmp    L2633
L743:
  nop
  jmp    L2633
L2098:
  nop
  jmp    L2633
L1047:
  nop
  jmp    L2633
L1534:
  nop
  jmp    L2633
L2064:
  nop
  jmp    L2633
L1750:
  nop
  jmp    L2633
L1250:
  nop
L2633:
  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;
  }
}
```