user: What would the C source look like for the assembly code provided here:

```asm
<lexAnalysis>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x170,%rsp
  mov    %rdi,-0x168(%rbp)
  mov    %esi,-0x16c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x154(%rbp)
  movq   $0x0,-0x150(%rbp)
  movq   $0x0,-0x148(%rbp)
  movq   $0x0,-0x140(%rbp)
  movq   $0x0,-0x138(%rbp)
  movq   $0x0,-0x130(%rbp)
  movq   $0x0,-0x128(%rbp)
  movq   $0x0,-0x120(%rbp)
  movq   $0x0,-0x118(%rbp)
  movq   $0x0,-0x110(%rbp)
  movq   $0x0,-0x108(%rbp)
  movq   $0x0,-0x100(%rbp)
  movq   $0x0,-0xf8(%rbp)
  movl   $0x0,-0xf0(%rbp)
  movq   $0x0,-0xe0(%rbp)
  movq   $0x0,-0xd8(%rbp)
  movq   $0x0,-0xd0(%rbp)
  movq   $0x0,-0xc8(%rbp)
  movq   $0x0,-0xc0(%rbp)
  movq   $0x0,-0xb8(%rbp)
  movq   $0x0,-0xb0(%rbp)
  movq   $0x0,-0xa8(%rbp)
  movq   $0x0,-0xa0(%rbp)
  movq   $0x0,-0x98(%rbp)
  movq   $0x0,-0x90(%rbp)
  movq   $0x0,-0x88(%rbp)
  movl   $0x0,-0x80(%rbp)
  movq   $0x0,-0x70(%rbp)
  movq   $0x0,-0x68(%rbp)
  movq   $0x0,-0x60(%rbp)
  movq   $0x0,-0x58(%rbp)
  movq   $0x0,-0x50(%rbp)
  movq   $0x0,-0x48(%rbp)
  movq   $0x0,-0x40(%rbp)
  movq   $0x0,-0x38(%rbp)
  movq   $0x0,-0x30(%rbp)
  movq   $0x0,-0x28(%rbp)
  movq   $0x0,-0x20(%rbp)
  movq   $0x0,-0x18(%rbp)
  movl   $0x0,-0x10(%rbp)
L1659:
  mov    -0x154(%rbp),%eax
  cmp    -0x16c(%rbp),%eax
  jne    L488
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L914
  jmp    L1496
L488:
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x156(%rbp)
  movsbl -0x156(%rbp),%eax
  cmp    $0x3e,%eax
  jg     L1858
  cmp    $0x20,%eax
  jge    L484
  jmp    L1458
L1226:
  sub    $0x41,%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%rdx
  movabs $0x3ffffff03ffffff,%rax
  and    %rdx,%rax
  test   %rax,%rax
  setne  %al
  test   %al,%al
  jne    L996
  movabs $0x1400000014000000,%rax
  and    %rdx,%rax
  test   %rax,%rax
  setne  %al
  test   %al,%al
  jne    L1285
  jmp    L1458
L484:
  sub    $0x20,%eax
  cmp    $0x1e,%eax
  ja     L1458
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D304(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D304(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L1858:
  cmp    $0x7d,%eax
  jg     L1458
  cmp    $0x41,%eax
  jge    L1226
  jmp    L1458
  addl   $0x1,-0x154(%rbp)
L84:
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x156(%rbp)
  movsbl -0x156(%rbp),%edx
  lea    -0x70(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <append@plt>
  addl   $0x1,-0x154(%rbp)
  cmpb   $0x22,-0x156(%rbp)
  jne    L84
  lea    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  sub    $0x1,%rax
  movb   $0x0,-0x70(%rbp,%rax,1)
  lea    -0x70(%rbp),%rax
  mov    %rax,%rsi
  lea    D166(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x70(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1379
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1379:
  movsbl -0x156(%rbp),%edx
  lea    -0x150(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <append@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L996:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1027
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1027:
  cmpb   $0x69,-0x156(%rbp)
  jne    L940
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x66,-0x155(%rbp)
  jne    L1051
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L554
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L554:
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1051:
  cmpb   $0x6e,-0x155(%rbp)
  jne    L675
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L791
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L679
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L679:
  lea    D105(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L791:
  subl   $0x2,-0x154(%rbp)
  jmp    L940
L675:
  subl   $0x1,-0x154(%rbp)
L940:
  cmpb   $0x65,-0x156(%rbp)
  jne    L318
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6c,-0x155(%rbp)
  jne    L1663
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x73,-0x155(%rbp)
  jne    L590
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x65,-0x155(%rbp)
  jne    L523
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x20,-0x155(%rbp)
  jne    L1549
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x69,-0x155(%rbp)
  jne    L891
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x66,-0x155(%rbp)
  jne    L853
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L161
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L161:
  lea    D713(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L853:
  subl   $0x6,-0x154(%rbp)
  jmp    L318
L891:
  subl   $0x5,-0x154(%rbp)
  jmp    L318
L1549:
  subl   $0x4,-0x154(%rbp)
  jmp    L318
L523:
  subl   $0x3,-0x154(%rbp)
  jmp    L318
L590:
  subl   $0x2,-0x154(%rbp)
  jmp    L318
L1663:
  subl   $0x1,-0x154(%rbp)
L318:
  cmpb   $0x6d,-0x156(%rbp)
  jne    L441
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x61,-0x155(%rbp)
  jne    L1354
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x69,-0x155(%rbp)
  jne    L972
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6e,-0x155(%rbp)
  jne    L1851
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1557
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1557:
  lea    D691(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1851:
  subl   $0x3,-0x154(%rbp)
  jmp    L441
L972:
  subl   $0x2,-0x154(%rbp)
  jmp    L441
L1354:
  subl   $0x1,-0x154(%rbp)
L441:
  cmpb   $0x6c,-0x156(%rbp)
  jne    L309
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6f,-0x155(%rbp)
  jne    L850
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6e,-0x155(%rbp)
  jne    L175
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x67,-0x155(%rbp)
  jne    L1306
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1561
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1561:
  lea    D691(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1306:
  subl   $0x3,-0x154(%rbp)
  jmp    L309
L175:
  subl   $0x2,-0x154(%rbp)
  jmp    L309
L850:
  subl   $0x1,-0x154(%rbp)
L309:
  cmpb   $0x76,-0x156(%rbp)
  jne    L1155
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6f,-0x155(%rbp)
  jne    L227
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x69,-0x155(%rbp)
  jne    L1531
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x64,-0x155(%rbp)
  jne    L83
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L734
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L734:
  lea    D175(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L83:
  subl   $0x3,-0x154(%rbp)
  jmp    L1155
L1531:
  subl   $0x2,-0x154(%rbp)
  jmp    L1155
L227:
  subl   $0x1,-0x154(%rbp)
L1155:
  cmpb   $0x63,-0x156(%rbp)
  jne    L1756
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x68,-0x155(%rbp)
  jne    L365
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x61,-0x155(%rbp)
  jne    L976
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x72,-0x155(%rbp)
  jne    L188
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1055
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1055:
  lea    D283(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L188:
  subl   $0x3,-0x154(%rbp)
  jmp    L1756
L976:
  subl   $0x2,-0x154(%rbp)
  jmp    L1756
L365:
  subl   $0x1,-0x154(%rbp)
L1756:
  cmpb   $0x77,-0x156(%rbp)
  jne    L1871
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x68,-0x155(%rbp)
  jne    L865
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x69,-0x155(%rbp)
  jne    L1865
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6c,-0x155(%rbp)
  jne    L444
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x65,-0x155(%rbp)
  jne    L360
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1460
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1460:
  lea    D364(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L360:
  subl   $0x4,-0x154(%rbp)
  jmp    L1871
L444:
  subl   $0x3,-0x154(%rbp)
  jmp    L1871
L1865:
  subl   $0x2,-0x154(%rbp)
  jmp    L1871
L865:
  subl   $0x1,-0x154(%rbp)
L1871:
  cmpb   $0x66,-0x156(%rbp)
  jne    L93
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6c,-0x155(%rbp)
  jne    L1629
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6f,-0x155(%rbp)
  jne    L1444
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x61,-0x155(%rbp)
  jne    L168
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L669
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1329
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1329:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L669:
  subl   $0x4,-0x154(%rbp)
  jmp    L93
L168:
  subl   $0x3,-0x154(%rbp)
  jmp    L93
L1444:
  subl   $0x2,-0x154(%rbp)
  jmp    L93
L1629:
  subl   $0x1,-0x154(%rbp)
L93:
  cmpb   $0x63,-0x156(%rbp)
  jne    L1615
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6f,-0x155(%rbp)
  jne    L1083
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6e,-0x155(%rbp)
  jne    L1320
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x73,-0x155(%rbp)
  jne    L1790
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L1063
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L390
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L390:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1063:
  subl   $0x4,-0x154(%rbp)
  jmp    L1615
L1790:
  subl   $0x3,-0x154(%rbp)
  jmp    L1615
L1320:
  subl   $0x2,-0x154(%rbp)
  jmp    L1615
L1083:
  subl   $0x1,-0x154(%rbp)
L1615:
  cmpb   $0x73,-0x156(%rbp)
  jne    L1250
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x68,-0x155(%rbp)
  jne    L1703
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x6f,-0x155(%rbp)
  jne    L204
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x72,-0x155(%rbp)
  jne    L482
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L663
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1831
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1831:
  lea    D235(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L663:
  subl   $0x4,-0x154(%rbp)
  jmp    L1250
L482:
  subl   $0x3,-0x154(%rbp)
  jmp    L1250
L204:
  subl   $0x2,-0x154(%rbp)
  jmp    L1250
L1703:
  subl   $0x1,-0x154(%rbp)
L1250:
  cmpb   $0x73,-0x156(%rbp)
  jne    L298
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L1476
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x72,-0x155(%rbp)
  jne    L307
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x75,-0x155(%rbp)
  jne    L1440
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x63,-0x155(%rbp)
  jne    L866
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  cmpb   $0x74,-0x155(%rbp)
  jne    L758
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L148
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L148:
  lea    D445(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L758:
  subl   $0x5,-0x154(%rbp)
  jmp    L298
L866:
  subl   $0x4,-0x154(%rbp)
  jmp    L298
L1440:
  subl   $0x3,-0x154(%rbp)
  jmp    L298
L307:
  subl   $0x2,-0x154(%rbp)
  jmp    L298
L1476:
  subl   $0x1,-0x154(%rbp)
L298:
  movsbl -0x156(%rbp),%edx
  lea    -0xe0(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <append@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1864
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1864:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L120
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L120:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x2b,%eax
  je     L948
  cmp    $0x3d,%eax
  je     L1796
  jmp    L1011
L948:
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L199
L1796:
  lea    D385(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L199
L1011:
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L199:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1507
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1507:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L651
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L651:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3e,%eax
  je     L1765
  cmp    $0x3e,%eax
  jg     L1575
  cmp    $0x2d,%eax
  je     L877
  cmp    $0x3d,%eax
  je     L1286
  jmp    L1575
L877:
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1072
L1286:
  lea    D394(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1072
L1765:
  lea    D747(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1072
L1575:
  lea    D667(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1072:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L154
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L154:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L599
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L599:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L1195
  lea    D471(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L641
L1195:
  lea    D656(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L641:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1530
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1530:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L191
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L191:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L1386
  lea    D569(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L171
L1386:
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L171:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L454
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L454:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L123
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L123:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L816
  lea    D142(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L492
L816:
  lea    D558(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L492:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1165
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1165:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1095
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1095:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L1532
  lea    D433(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1139
L1532:
  lea    D505(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L1139:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1755
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1755:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1066
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1066:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L1605
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1612
L1605:
  lea    D428(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1612:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1607
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1607:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1317
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1317:
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1285:
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L657
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L657:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L335
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L335:
  movsbl -0x156(%rbp),%eax
  mov    %eax,%esi
  lea    D255(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1709
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1709:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L21
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L21:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L269
  lea    D538(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L389
L269:
  lea    D58(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L389:
  jmp    L1659
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L596
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L596:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1168
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1168:
  addl   $0x1,-0x154(%rbp)
  mov    -0x154(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x168(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x155(%rbp)
  movsbl -0x155(%rbp),%eax
  cmp    $0x3d,%eax
  jne    L225
  lea    D440(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  addl   $0x1,-0x154(%rbp)
  jmp    L1873
L225:
  lea    D116(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
L1873:
  jmp    L1659
L1458:
  lea    -0xe0(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L798
  lea    -0xe0(%rbp),%rax
  mov    %rax,%rsi
  lea    D403(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xe0(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L798:
  lea    -0x150(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L1401
  lea    -0x150(%rbp),%rax
  mov    %rax,%rsi
  lea    D625(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x150(%rbp),%rax
  mov    $0x64,%edx
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <memset@plt>
L1401:
  addl   $0x1,-0x154(%rbp)
  jmp    L1659
L1496:
  call   <__stack_chk_fail@plt>
L914:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D166
data_type: string
name: retrieve_data
arguments: data_label: D403
data_type: string
name: retrieve_data
arguments: data_label: D625
data_type: string
name: retrieve_data
arguments: data_label: D46
data_type: string
name: retrieve_data
arguments: data_label: D105
data_type: string
name: retrieve_data
arguments: data_label: D713
data_type: string
name: retrieve_data
arguments: data_label: D691
data_type: string
name: retrieve_data
arguments: data_label: D175
data_type: string
name: retrieve_data
arguments: data_label: D283
data_type: string
name: retrieve_data
arguments: data_label: D364
data_type: string
name: retrieve_data
arguments: data_label: D235
data_type: string
name: retrieve_data
arguments: data_label: D445
data_type: string
name: retrieve_data
arguments: data_label: D92
data_type: string
name: retrieve_data
arguments: data_label: D385
data_type: string
name: retrieve_data
arguments: data_label: D87
data_type: string
name: retrieve_data
arguments: data_label: D10
data_type: string
name: retrieve_data
arguments: data_label: D394
data_type: string
name: retrieve_data
arguments: data_label: D747
data_type: string
name: retrieve_data
arguments: data_label: D667
data_type: string
name: retrieve_data
arguments: data_label: D471
data_type: string
name: retrieve_data
arguments: data_label: D656
data_type: string
name: retrieve_data
arguments: data_label: D569
data_type: string
name: retrieve_data
arguments: data_label: D109
data_type: string
name: retrieve_data
arguments: data_label: D142
data_type: string
name: retrieve_data
arguments: data_label: D558
data_type: string
name: retrieve_data
arguments: data_label: D433
data_type: string
name: retrieve_data
arguments: data_label: D505
data_type: string
name: retrieve_data
arguments: data_label: D5
data_type: string
name: retrieve_data
arguments: data_label: D428
data_type: string
name: retrieve_data
arguments: data_label: D255
data_type: string
name: retrieve_data
arguments: data_label: D538
data_type: string
name: retrieve_data
arguments: data_label: D58
data_type: string
name: retrieve_data
arguments: data_label: D440
data_type: string
name: retrieve_data
arguments: data_label: D116
data_type: string

tool: D166: <%s, literal>


tool: D403: <%s, identifier>


tool: D625: <%s, digit>


tool: D46: <if, keyword>

tool: D105: <int, keyword>

tool: D713: <else if, keyword>

tool: D691: <main, keyword>

tool: D175: <void, keyword>

tool: D283: <char, keyword>

tool: D364: <while, keyword>

tool: D235: <float, keyword>

tool: D445: <struct, keyword>

tool: D92: <++, operator>

tool: D385: <+=, assignment>

tool: D87: <+, operator>

tool: D10: <--, operator>

tool: D394: <-=, assignment>

tool: D747: <->, pointer>

tool: D667: <-, operator>

tool: D471: <*=, assignment>

tool: D656: <*, operator>

tool: D569: </=, assignment>

tool: D109: </, operator>

tool: D142: <==, comparison>

tool: D558: <=, assignment>

tool: D433: <%%=, assignment>


tool: D505: <%%, operator>


tool: D5: <!=, relational>

tool: D428: <!, logical>

tool: D255: <%c, delimiter>


tool: D538: <<=, relational>

tool: D58: <<, relational>

tool: D440: <>=, relational>

tool: D116: <>, relational>

assistant: ```c
int lexAnalysis(char *str, int len) {
  int i = 0, j;
  char curr, next;
  char t[100] = "";
  char tw[100] = "";
  char tl[100] = "";
loop:
  if (i == len) {
    return 0;
  }
  curr = str[i];
  switch (curr) {
  case '"':
    i++;
    do {
      curr = str[i];
      append(tl, curr);
      i++;
    } while (curr != '"');
    tl[strlen(tl) - 1] = 0;
    printf("<%s, literal>\n", tl);
    memset(tl, 0, 100);
    goto loop;
    break;
  case '0':
  case '1':
  case '2':
  case '3':
  case '4':
  case '5':
  case '6':
  case '7':
  case '8':
  case '9':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    append(t, curr);
    i++;
    goto loop;
    break;
  case 'a':
  case 'b':
  case 'c':
  case 'd':
  case 'e':
  case 'f':
  case 'g':
  case 'h':
  case 'i':
  case 'j':
  case 'k':
  case 'l':
  case 'm':
  case 'n':
  case 'o':
  case 'p':
  case 'q':
  case 'r':
  case 's':
  case 't':
  case 'u':
  case 'v':
  case 'w':
  case 'x':
  case 'y':
  case 'z':
  case 'A':
  case 'B':
  case 'C':
  case 'D':
  case 'E':
  case 'F':
  case 'G':
  case 'H':
  case 'I':
  case 'J':
  case 'K':
  case 'L':
  case 'M':
  case 'N':
  case 'O':
  case 'P':
  case 'Q':
  case 'R':
  case 'S':
  case 'T':
  case 'U':
  case 'V':
  case 'W':
  case 'X':
  case 'Y':
  case 'Z':
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    if (curr == 'i') {
      i++;
      next = str[i];
      if (next == 'f') {
        if (strlen(tw) > 0) {
          printf("<%s, identifier>\n", tw);
          memset(tw, 0, 100);
        }
        printf("<if, keyword>\n");
        i++;
        goto loop;
      } else if (next == 'n') {
        i++;
        next = str[i];
        if (next == 't') {
          if (strlen(tw) > 0) {
            printf("<%s, identifier>\n", tw);
            memset(tw, 0, 100);
          }
          printf("<int, keyword>\n");
          i++;
          goto loop;
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'e') {
      i++;
      next = str[i];
      if (next == 'l') {
        i++;
        next = str[i];
        if (next == 's') {
          i++;
          next = str[i];
          if (next == 'e') {
            i++;
            next = str[i];
            if (next == ' ') {
              i++;
              next = str[i];
              if (next == 'i') {
                i++;
                next = str[i];
                if (next == 'f') {
                  if (strlen(tw) > 0) {
                    printf("<%s, identifier>\n", tw);
                    memset(tw, 0, 100);
                  }
                  printf("<else if, keyword>\n");
                  i++;
                  goto loop;
                } else {
                  i -= 6;
                }
              } else {
                i -= 5;
              }
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'm') {
      i++;
      next = str[i];
      if (next == 'a') {
        i++;
        next = str[i];
        if (next == 'i') {
          i++;
          next = str[i];
          if (next == 'n') {
            if (strlen(tw) > 0) {
              printf("<%s, identifier>\n", tw);
              memset(tw, 0, 100);
            }
            printf("<main, keyword>\n");
            i++;
            goto loop;
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'l') {
      i++;
      next = str[i];
      if (next == 'o') {
        i++;
        next = str[i];
        if (next == 'n') {
          i++;
          next = str[i];
          if (next == 'g') {
            if (strlen(tw) > 0) {
              printf("<%s, identifier>\n", tw);
              memset(tw, 0, 100);
            }
            printf("<main, keyword>\n");
            i++;
            goto loop;
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'v') {
      i++;
      next = str[i];
      if (next == 'o') {
        i++;
        next = str[i];
        if (next == 'i') {
          i++;
          next = str[i];
          if (next == 'd') {
            if (strlen(tw) > 0) {
              printf("<%s, identifier>\n", tw);
              memset(tw, 0, 100);
            }
            printf("<void, keyword>\n");
            i++;
            goto loop;
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'c') {
      i++;
      next = str[i];
      if (next == 'h') {
        i++;
        next = str[i];
        if (next == 'a') {
          i++;
          next = str[i];
          if (next == 'r') {
            if (strlen(tw) > 0) {
              printf("<%s, identifier>\n", tw);
              memset(tw, 0, 100);
            }
            printf("<char, keyword>\n");
            i++;
            goto loop;
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'w') {
      i++;
      next = str[i];
      if (next == 'h') {
        i++;
        next = str[i];
        if (next == 'i') {
          i++;
          next = str[i];
          if (next == 'l') {
            i++;
            next = str[i];
            if (next == 'e') {
              if (strlen(tw) > 0) {
                printf("<%s, identifier>\n", tw);
                memset(tw, 0, 100);
              }
              printf("<while, keyword>\n");
              i++;
              goto loop;
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'f') {
      i++;
      next = str[i];
      if (next == 'l') {
        i++;
        next = str[i];
        if (next == 'o') {
          i++;
          next = str[i];
          if (next == 'a') {
            i++;
            next = str[i];
            if (next == 't') {
              if (strlen(tw) > 0) {
                printf("<%s, identifier>\n", tw);
                memset(tw, 0, 100);
              }
              printf("<float, keyword>\n");
              i++;
              goto loop;
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 'c') {
      i++;
      next = str[i];
      if (next == 'o') {
        i++;
        next = str[i];
        if (next == 'n') {
          i++;
          next = str[i];
          if (next == 's') {
            i++;
            next = str[i];
            if (next == 't') {
              if (strlen(tw) > 0) {
                printf("<%s, identifier>\n", tw);
                memset(tw, 0, 100);
              }
              printf("<float, keyword>\n");
              i++;
              goto loop;
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 's') {
      i++;
      next = str[i];
      if (next == 'h') {
        i++;
        next = str[i];
        if (next == 'o') {
          i++;
          next = str[i];
          if (next == 'r') {
            i++;
            next = str[i];
            if (next == 't') {
              if (strlen(tw) > 0) {
                printf("<%s, identifier>\n", tw);
                memset(tw, 0, 100);
              }
              printf("<float, keyword>\n");
              i++;
              goto loop;
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    if (curr == 's') {
      i++;
      next = str[i];
      if (next == 't') {
        i++;
        next = str[i];
        if (next == 'r') {
          i++;
          next = str[i];
          if (next == 'u') {
            i++;
            next = str[i];
            if (next == 'c') {
              i++;
              next = str[i];
              if (next == 't') {
                if (strlen(tw) > 0) {
                  printf("<%s, identifier>\n", tw);
                  memset(tw, 0, 100);
                }
                printf("<struct, keyword>\n");
                i++;
                goto loop;
              } else {
                i -= 5;
              }
            } else {
              i -= 4;
            }
          } else {
            i -= 3;
          }
        } else {
          i -= 2;
        }
      } else {
        i--;
      }
    }
    append(tw, curr);
    i++;
    goto loop;
    break;
  case '+':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '+':
      printf("<++, operator>\n");
      i++;
      break;
    case '=':
      printf("<+=, assignment>\n");
      i++;
      break;
    default:
      printf("<+, operator>\n");
    }
    goto loop;
    break;
  case '-':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '-':
      printf("<--, operator>\n");
      i++;
      break;
    case '=':
      printf("<-=, assignment>\n");
      i++;
      break;
    case '>':
      printf("<->, pointer>\n");
      i++;
      break;
    default:
      printf("<-, operator>\n");
    }
    goto loop;
    break;
  case '*':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<*=, assignment>\n");
      i++;
      break;
    default:
      printf("<*, operator>\n");
    }
    goto loop;
    break;
  case '/':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("</=, assignment>\n");
      i++;
      break;
    default:
      printf("</, operator>\n");
    }
    goto loop;
    break;
  case '=':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<==, comparison>\n");
      i++;
      break;
    default:
      printf("<=, assignment>\n");
    }
    goto loop;
    break;
  case '%':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<%%=, assignment>\n");
      i++;
      break;
    default:
      printf("<%%, operator>\n");
    }
    goto loop;
    break;
  case '!':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<!=, relational>\n");
      i++;
      break;
    default:
      printf("<!, logical>\n");
    }
    goto loop;
    break;
  case ' ':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    goto loop;
  case '{':
  case '}':
  case '(':
  case ')':
  case '[':
  case ']':
  case ',':
  case ';':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    printf("<%c, delimiter>\n", curr);
    i++;
    goto loop;
    break;
  case '<':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<<=, relational>\n");
      i++;
      break;
    default:
      printf("<<, relational>\n");
    }
    goto loop;
    break;
  case '>':
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    next = str[i];
    switch (next) {
    case '=':
      printf("<>=, relational>\n");
      i++;
      break;
    default:
      printf("<>, relational>\n");
    }
    goto loop;
    break;
  default:
    if (strlen(tw) > 0) {
      printf("<%s, identifier>\n", tw);
      memset(tw, 0, 100);
    }
    if (strlen(t) > 0) {
      printf("<%s, digit>\n", t);
      memset(t, 0, 100);
    }
    i++;
    goto loop;
  }
}
```