user: Translate the below assembly code into C programming language:

```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)
L1295:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2446
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L728
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2446:
  addq   $0x1,-0x18(%rbp)
L1810:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  jbe    L860
  jmp    L1295
L860:
  mov    -0x10(%rbp),%rax
  cmp    $0x21,%al
  ja     L1223
  jmp    L1295
L1223:
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L1469
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L902
  jmp    L460
L902:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L2293
  jmp    L2474
L2293:
  mov    -0x10(%rbp),%rax
  cmp    $0x23,%al
  jne    L2262
  jmp    L504
L2262:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L122
  jmp    L1295
L1840:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2055
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2160
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2055:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L1866
  jmp    L1295
L1866:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L2374
  jmp    L1840
L2374:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L688
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2575
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L688:
  addq   $0x1,-0x18(%rbp)
  jmp    L1840
L1469:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1078
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L961
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1078:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  jne    L2495
  jmp    L1840
L2495:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L2104
  jmp    L1810
L2104:
  nop
L286:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L971
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L556
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L971:
  addq   $0x1,-0x18(%rbp)
L1876:
  mov    -0x10(%rbp),%rax
  cmp    $0x2a,%al
  je     L1163
  jmp    L286
L1163:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2335
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1307
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2335:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x2f,%al
  je     L1295
  jmp    L1876
L460:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2303
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L328
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2303:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x27,%al
  jne    L1098
  jmp    L1295
L1098:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L2237
  jmp    L460
L2237:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1847
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2027
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1847:
  addq   $0x1,-0x18(%rbp)
  jmp    L460
L2474:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1218
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1836
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1218:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L2523
  jmp    L1295
L2523:
  mov    -0x10(%rbp),%rax
  cmp    $0x5c,%al
  je     L736
  jmp    L2474
L736:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1675
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1174
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1675:
  addq   $0x1,-0x18(%rbp)
  jmp    L2474
L504:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1492
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L601
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1492:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L1397
  jmp    L504
L1397:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L69
  jmp    L504
L69:
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L2045
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L1871
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L456
  jmp    L1810
L2045:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1818
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1198
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1818:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L621
  jmp    L1810
L621:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1972
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1101
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1972:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x63,%al
  je     L2639
  jmp    L1810
L2639:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2221
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L124
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2221:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6c,%al
  je     L701
  jmp    L1810
L701:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L692
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1629
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L692:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x75,%al
  je     L1505
  jmp    L1810
L1505:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1395
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L473
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1395:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L1932
  jmp    L1810
L1932:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1980
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2113
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1980:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L1946
  jmp    L1810
L1946:
  nop
L651:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1302
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L321
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1302:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L1939
  jmp    L651
L1939:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L2292
  jmp    L651
L2292:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  jne    L5
  jmp    L970
L5:
  mov    -0x10(%rbp),%rax
  cmp    $0x3c,%al
  jne    L1810
  jmp    L1082
L970:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2416
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2214
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2416:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L1460
  jmp    L1295
L1460:
  mov    -0x10(%rbp),%rax
  cmp    $0x22,%al
  je     L1083
  jmp    L970
L1083:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <handle_include@plt>
  jmp    L1295
L1082:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L159
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2619
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L159:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0xa,%al
  jne    L2112
  jmp    L1295
L2112:
  mov    -0x10(%rbp),%rax
  cmp    $0x3e,%al
  je     L219
  jmp    L1082
L219:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <handle_include@plt>
  jmp    L1295
L1871:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L935
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1636
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L935:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L585
  jmp    L1810
L585:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L855
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1202
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L855:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L1850
  jmp    L1810
L1850:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L990
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1338
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L990:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x69,%al
  je     L551
  jmp    L1810
L551:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1762
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2571
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1762:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L1743
  jmp    L1810
L1743:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L23
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L183
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L23:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L2217
  jmp    L1810
L456:
  nop
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L939
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L739
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L939:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x6e,%al
  je     L25
  jmp    L1810
L25:
  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    L1019
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L603:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x64,%al
  je     L1123
  jmp    L1810
L1123:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1025
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1292
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1025:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x65,%al
  je     L2478
  jmp    L1810
L2478:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L374
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2030
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L374:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x66,%al
  je     L1312
  jmp    L1810
L2217:
  nop
  jmp    L555
L1312:
  nop
L555:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L809
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L329
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L809:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x20,%al
  jne    L2546
  jmp    L555
L2546:
  mov    -0x10(%rbp),%rax
  cmp    $0x9,%al
  jne    L1394
  jmp    L555
L1394:
  mov    -0x10(%rbp),%rax
  cmp    $0x43,%al
  je     L2632
  jmp    L1810
L2632:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1739
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1620
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1739:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L699
  jmp    L1810
L699:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1758
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L378
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1758:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L527
  jmp    L1810
L527:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L887
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L401
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L887:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L1411
  jmp    L1810
L1411:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1600
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2616
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1600:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L1451
  jmp    L1810
L1451:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1707
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1112
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1707:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L2331
  jmp    L1810
L2331:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L307
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L93
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L307:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L2309
  jmp    L1810
L2309:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1368:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2382
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2373
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2382:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L1368
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L1810
  jmp    L1368
L122:
  nop
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  cmp    %rax,-0x18(%rbp)
  jb     L993
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L1295
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  jne    L993
  jmp    L1295
L993:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1199
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2056
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1199:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4f,%al
  je     L9
  jmp    L1810
L9:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2440
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L981
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2440:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x4e,%al
  je     L1973
  jmp    L1810
L1973:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L414
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L712
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L414:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x46,%al
  je     L606
  jmp    L1810
L606:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2482
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1020
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L2482:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x49,%al
  je     L1581
  jmp    L1810
L1581:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1679
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L1968
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1679:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x47,%al
  je     L382
  jmp    L1810
L382:
  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    L105
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L163:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  je     L982
  jmp    L1810
L982:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1038:
  shrq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1969
  mov    -0x18(%rbp),%rax
  cmp    -0x30(%rbp),%rax
  jae    L2582
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
L1969:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  movzbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L1038
  mov    -0x10(%rbp),%rax
  cmp    $0x5f,%al
  jne    L2108
  jmp    L1038
L2108:
  mov    -0x18(%rbp),%rax
  sub    -0x8(%rbp),%rax
  lea    -0x1(%rax),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <use_config@plt>
  jmp    L1810
L728:
  nop
  jmp    L1425
L2160:
  nop
  jmp    L1425
L2575:
  nop
  jmp    L1425
L961:
  nop
  jmp    L1425
L556:
  nop
  jmp    L1425
L1307:
  nop
  jmp    L1425
L328:
  nop
  jmp    L1425
L2027:
  nop
  jmp    L1425
L1836:
  nop
  jmp    L1425
L1174:
  nop
  jmp    L1425
L601:
  nop
  jmp    L1425
L1198:
  nop
  jmp    L1425
L1101:
  nop
  jmp    L1425
L124:
  nop
  jmp    L1425
L1629:
  nop
  jmp    L1425
L473:
  nop
  jmp    L1425
L2113:
  nop
  jmp    L1425
L321:
  nop
  jmp    L1425
L2214:
  nop
  jmp    L1425
L2619:
  nop
  jmp    L1425
L1636:
  nop
  jmp    L1425
L1202:
  nop
  jmp    L1425
L1338:
  nop
  jmp    L1425
L2571:
  nop
  jmp    L1425
L183:
  nop
  jmp    L1425
L739:
  nop
  jmp    L1425
L1019:
  nop
  jmp    L1425
L1292:
  nop
  jmp    L1425
L2030:
  nop
  jmp    L1425
L329:
  nop
  jmp    L1425
L1620:
  nop
  jmp    L1425
L378:
  nop
  jmp    L1425
L401:
  nop
  jmp    L1425
L2616:
  nop
  jmp    L1425
L1112:
  nop
  jmp    L1425
L93:
  nop
  jmp    L1425
L2373:
  nop
  jmp    L1425
L2056:
  nop
  jmp    L1425
L981:
  nop
  jmp    L1425
L712:
  nop
  jmp    L1425
L1020:
  nop
  jmp    L1425
L1968:
  nop
  jmp    L1425
L105:
  nop
  jmp    L1425
L2582:
  nop
L1425:
  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(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;
  }
}
```