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    -0x28(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  movq   $0x0,-0x10(%rbp)
L2190:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L503
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1764
L503:
  addq   $0x1,-0x18(%rbp)
L948:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x43,%rax
  jbe    L844
  jmp    L2190
L844:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x21,%rax
  ja     L1873
  jmp    L2190
L1873:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x2f,%rax
  je     L1127
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x27,%rax
  jne    L585
  jmp    L644
L585:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x22,%rax
  jne    L1323
  jmp    L180
L1323:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x23,%rax
  jne    L1082
  jmp    L1080
L1082:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x43,%rax
  je     L2359
  jmp    L2190
L1127:
  nop
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L643
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L502
L643:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x2a,%rax
  je     L1273
  jmp    L948
L1273:
  nop
L1906:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1790
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1920
L1790:
  addq   $0x1,-0x18(%rbp)
L597:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x2a,%rax
  je     L2262
  jmp    L1906
L2262:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2254
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L724
L2254:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x2f,%rax
  je     L2190
  jmp    L597
L644:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L738
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L913
L738:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x27,%rax
  jne    L106
  jmp    L2190
L106:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5c,%rax
  je     L711
  jmp    L644
L711:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1902
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2217
L1902:
  addq   $0x1,-0x18(%rbp)
  jmp    L644
L180:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1977
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2231
L1977:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x22,%rax
  jne    L350
  jmp    L2190
L350:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5c,%rax
  je     L1272
  jmp    L180
L1272:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2307
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2494
L2307:
  addq   $0x1,-0x18(%rbp)
  jmp    L180
L1080:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L601
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L992
L601:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x20,%rax
  jne    L1119
  jmp    L1080
L1119:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x9,%rax
  jne    L2434
  jmp    L1080
L2434:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x69,%rax
  je     L1279
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x64,%rax
  je     L705
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x75,%rax
  je     L1022
  jmp    L948
L1279:
  nop
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2093
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1561
L2093:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x6e,%rax
  je     L1717
  jmp    L948
L1717:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L155
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L314
L155:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x63,%rax
  je     L244
  jmp    L948
L244:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L647
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1240
L647:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x6c,%rax
  je     L1201
  jmp    L948
L1201:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L41
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L499
L41:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x75,%rax
  je     L1060
  jmp    L948
L1060:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2298
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L386
L2298:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x64,%rax
  je     L1311
  jmp    L948
L1311:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1208
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2387
L1208:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x65,%rax
  je     L1614
  jmp    L948
L1614:
  nop
L2211:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L395
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2180
L395:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x20,%rax
  jne    L2350
  jmp    L2211
L2350:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x9,%rax
  jne    L148
  jmp    L2211
L148:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x22,%rax
  jne    L1731
  jmp    L734
L1731:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x3c,%rax
  jne    L948
  jmp    L309
L734:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2137
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1552
L2137:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0xa,%rax
  jne    L1540
  jmp    L2190
L1540:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x22,%rax
  je     L2125
  jmp    L734
L2125:
  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    L2190
L309:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1327
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L714
L1327:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0xa,%rax
  jne    L1462
  jmp    L2190
L1462:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x3e,%rax
  je     L86
  jmp    L309
L86:
  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    L2190
L705:
  nop
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1852
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2273
L1852:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x65,%rax
  je     L2370
  jmp    L948
L2370:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1145
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2288
L1145:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x66,%rax
  je     L1027
  jmp    L948
L1027:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L545
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1936
L545:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x69,%rax
  je     L1807
  jmp    L948
L1807:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2004
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2507
L2004:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x6e,%rax
  je     L123
  jmp    L948
L123:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1470
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1023
L1470:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x65,%rax
  je     L1951
  jmp    L948
L1022:
  nop
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L320
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L466
L320:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x6e,%rax
  je     L745
  jmp    L948
L745:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1450
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1099
L1450:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x64,%rax
  je     L1321
  jmp    L948
L1321:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L696
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L231
L696:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x65,%rax
  je     L125
  jmp    L948
L125:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1930
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L79
L1930:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x66,%rax
  je     L263
  jmp    L948
L1951:
  nop
  jmp    L2485
L263:
  nop
L2485:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L422
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2236
L422:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x20,%rax
  jne    L2198
  jmp    L2485
L2198:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x9,%rax
  jne    L1586
  jmp    L2485
L1586:
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x43,%rax
  je     L1141
  jmp    L948
L1141:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2404
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1668
L2404:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x4f,%rax
  je     L1840
  jmp    L948
L1840:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L624
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L914
L624:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x4e,%rax
  je     L339
  jmp    L948
L339:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L362
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L2077
L362:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x46,%rax
  je     L988
  jmp    L948
L988:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1762
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L939
L1762:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x49,%rax
  je     L1537
  jmp    L948
L1537:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2186
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1502
L2186:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x47,%rax
  je     L564
  jmp    L948
L564:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1867
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L168
L1867:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5f,%rax
  je     L2253
  jmp    L948
L2253:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L700:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2266
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L416
L2266:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  mov    %rax,%rdi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L700
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5f,%rax
  jne    L189
  jmp    L700
L189:
  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   <define_config@plt>
  jmp    L948
L2359:
  nop
  mov    -0x28(%rbp),%rax
  add    $0x2,%rax
  cmp    %rax,-0x18(%rbp)
  jb     L319
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L2190
  mov    -0x18(%rbp),%rax
  sub    $0x2,%rax
  movzbl (%rax),%eax
  cmp    $0x5f,%al
  jne    L319
  jmp    L2190
L319:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L496
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1407
L496:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x4f,%rax
  je     L42
  jmp    L948
L42:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1371
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L833
L1371:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x4e,%rax
  je     L352
  jmp    L948
L352:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L704
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1397
L704:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x46,%rax
  je     L149
  jmp    L948
L149:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L989
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L333
L989:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x49,%rax
  je     L1589
  jmp    L948
L1589:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L2136
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L676
L2136:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x47,%rax
  je     L1259
  jmp    L948
L1259:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L569
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1998
L569:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5f,%rax
  je     L398
  jmp    L948
L398:
  mov    -0x18(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L1135:
  shlq   $0x8,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  and    $0x7,%eax
  test   %rax,%rax
  jne    L1792
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x10(%rbp)
  cmpq   $0x0,-0x10(%rbp)
  je     L1845
L1792:
  addq   $0x1,-0x18(%rbp)
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  mov    %rax,%rdi
  call   <isalnum@plt>
  test   %eax,%eax
  jne    L1135
  mov    -0x10(%rbp),%rax
  shr    $0x38,%rax
  cmp    $0x5f,%rax
  jne    L15
  jmp    L1135
L15:
  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    L948
L1764:
  nop
  jmp    L220
L502:
  nop
  jmp    L220
L1920:
  nop
  jmp    L220
L724:
  nop
  jmp    L220
L913:
  nop
  jmp    L220
L2217:
  nop
  jmp    L220
L2231:
  nop
  jmp    L220
L2494:
  nop
  jmp    L220
L992:
  nop
  jmp    L220
L1561:
  nop
  jmp    L220
L314:
  nop
  jmp    L220
L1240:
  nop
  jmp    L220
L499:
  nop
  jmp    L220
L386:
  nop
  jmp    L220
L2387:
  nop
  jmp    L220
L2180:
  nop
  jmp    L220
L1552:
  nop
  jmp    L220
L714:
  nop
  jmp    L220
L2273:
  nop
  jmp    L220
L2288:
  nop
  jmp    L220
L1936:
  nop
  jmp    L220
L2507:
  nop
  jmp    L220
L1023:
  nop
  jmp    L220
L466:
  nop
  jmp    L220
L1099:
  nop
  jmp    L220
L231:
  nop
  jmp    L220
L79:
  nop
  jmp    L220
L2236:
  nop
  jmp    L220
L1668:
  nop
  jmp    L220
L914:
  nop
  jmp    L220
L2077:
  nop
  jmp    L220
L939:
  nop
  jmp    L220
L1502:
  nop
  jmp    L220
L168:
  nop
  jmp    L220
L416:
  nop
  jmp    L220
L1407:
  nop
  jmp    L220
L833:
  nop
  jmp    L220
L1397:
  nop
  jmp    L220
L333:
  nop
  jmp    L220
L676:
  nop
  jmp    L220
L1998:
  nop
  jmp    L220
L1845:
  nop
L220:
  nop
  leave
  ret
```

assistant: ```c
void state_machine(const char *map) {
  const char *next = map;
  const char *map_dot;
  unsigned long __buf = 0;
  for (;;) {
  start : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
  __start:
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) > ((('/') > ((('\'') > ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))))) ? ('/') : ((('\'') > ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') > ((('#') > ('C') ? ('#') : ('C'))) ? ('"') : ((('#') > ('C') ? ('#') : ('C'))))))))))
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) < ((('/') < ((('\'') < ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))))) ? ('/') : ((('\'') < ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))) ? ('\'') : ((('"') < ((('#') < ('C') ? ('#') : ('C'))) ? ('"') : ((('#') < ('C') ? ('#') : ('C'))))))))))
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '/')
      goto slash;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\'')
      goto squote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto dquote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '#')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'C')
      goto cee;
    goto start;
  slash : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '*')
      goto __start;
  slash_star_dot_star : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
  __slash_star_dot_star:
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '*')
      goto slash_star_dot_star;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '/')
      goto __slash_star_dot_star;
    goto start;
  squote : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\'')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '\\')
      goto squote;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    goto squote;
  dquote : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '\\')
      goto dquote;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    goto dquote;
  pound : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'i')
      goto pound_i;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'd')
      goto pound_d;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == 'u')
      goto pound_u;
    goto __start;
  pound_i : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'c')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'l')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'u')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'd')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    goto pound_include;
  pound_include : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound_include;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound_include;
    map_dot = next;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '"')
      goto pound_include_dquote;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '<')
      goto pound_include_langle;
    goto __start;
  pound_include_dquote : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\n')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '"')
      goto pound_include_dquote;
    handle_include(1, map_dot, next - map_dot - 1);
    goto start;
  pound_include_langle : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\n')
      goto start;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '>')
      goto pound_include_langle;
    handle_include(0, map_dot, next - map_dot - 1);
    goto start;
  pound_d : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'f')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'i')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    goto pound_define_undef;
  pound_u : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'n')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'd')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'e')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'f')
      goto __start;
    goto pound_define_undef;
  pound_define_undef : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == ' ')
      goto pound_define_undef;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) == '\t')
      goto pound_define_undef;
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'C')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'O')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'N')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'F')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'I')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'G')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      goto __start;
    map_dot = next;
  pound_define_undef_CONFIG_word : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if (isalnum((__buf >> 8 * (sizeof(unsigned long) - 1))) || (__buf >> 8 * (sizeof(unsigned long) - 1)) == '_')
      goto pound_define_undef_CONFIG_word;
    define_config(1, map_dot, next - map_dot - 1);
    goto __start;
  cee:
    if (next >= map + 2 && (isalnum(next[-2]) || next[-2] == '_'))
      goto start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'O')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'N')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'F')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'I')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != 'G')
      goto __start;
    {
      (__buf <<= 8);
      if ((unsigned long)next % sizeof(unsigned long) == 0) {
        __buf = *(unsigned long *)next;
        if (!__buf)
          break;
      }
      next++;
    }
    if ((__buf >> 8 * (sizeof(unsigned long) - 1)) != '_')
      goto __start;
    map_dot = next;
  cee_CONFIG_word : {
    (__buf <<= 8);
    if ((unsigned long)next % sizeof(unsigned long) == 0) {
      __buf = *(unsigned long *)next;
      if (!__buf)
        break;
    }
    next++;
  }
    if (isalnum((__buf >> 8 * (sizeof(unsigned long) - 1))) || (__buf >> 8 * (sizeof(unsigned long) - 1)) == '_')
      goto cee_CONFIG_word;
    use_config(map_dot, next - map_dot - 1);
    goto __start;
  }
}
```