user: 提供的汇编代码用C语言表示会是什么样子：

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x568,%rsp
  mov    %edi,-0x1564(%rbp)
  mov    %rsi,-0x1570(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  cmpl   $0x3,-0x1564(%rbp)
  jg     L272
  lea    D762(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  jmp    L1116
L272:
  movl   $0x0,-0x1554(%rbp)
  movl   $0x0,-0x1550(%rbp)
  movl   $0x0,-0x154c(%rbp)
  movl   $0x0,-0x1544(%rbp)
  movl   $0x1,-0x1540(%rbp)
  movl   $0x1,-0x153c(%rbp)
  mov    -0x1570(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  lea    D799(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x1500(%rbp)
  cmpq   $0x0,-0x1500(%rbp)
  jne    L1127
  lea    D398(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  jmp    L1116
L675:
  lea    -0x2e0(%rbp),%rax
  mov    %rax,%rdi
  call   <RemoveLineEndings@plt>
  lea    -0x2e0(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cmp    $0x1f,%eax
  jle    L889
  lea    D567(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0xffffffff,%eax
  jmp    L1116
L889:
  mov    -0x1544(%rbp),%eax
  cltq
  movl   $0x0,-0x14e0(%rbp,%rax,4)
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1544(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rax,%rdx
  lea    -0x2e0(%rbp),%rax
  mov    %rax,%rsi
  mov    %rdx,%rdi
  call   <strcpy@plt>
  addl   $0x1,-0x1544(%rbp)
L1127:
  mov    -0x1500(%rbp),%rdx
  lea    -0x2e0(%rbp),%rax
  mov    $0x2bc,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L675
  mov    -0x1570(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%rax
  lea    D799(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x1500(%rbp)
  cmpq   $0x0,-0x1500(%rbp)
  jne    L997
  lea    D437(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  jmp    L1116
L997:
  mov    -0x1570(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%rax
  lea    D321(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x14f8(%rbp)
  cmpq   $0x0,-0x14f8(%rbp)
  jne    L630
  mov    -0x1500(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  lea    D65(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  jmp    L1116
L644:
  lea    -0x2e0(%rbp),%rax
  mov    %rax,%rdi
  call   <RemoveLineEndings@plt>
  movl   $0x0,-0x1538(%rbp)
  movzbl -0x2e0(%rbp),%eax
  test   %al,%al
  jne    L10
  jmp    L630
L10:
  movzbl -0x2e0(%rbp),%eax
  cmp    $0x3a,%al
  jne    L423
  lea    -0x2e0(%rbp),%rax
  add    $0x1,%rax
  mov    -0x14f8(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <fputs@plt>
  jmp    L527
L423:
  movzbl -0x2e0(%rbp),%eax
  cmp    $0x60,%al
  je     L620
  movzbl -0x2e0(%rbp),%eax
  cmp    $0x3f,%al
  jne    L86
L620:
  lea    -0x2e0(%rbp),%rax
  mov    $0x20,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  mov    %rax,-0x1518(%rbp)
  cmpq   $0x0,-0x1518(%rbp)
  je     L60
  mov    -0x1518(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x1518(%rbp)
  movb   $0x0,(%rax)
L60:
  lea    -0x2e0(%rbp),%rax
  add    $0x1,%rax
  mov    %rax,-0x14e8(%rbp)
  mov    -0x14e8(%rbp),%rax
  lea    D824(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L752
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x11,%edx
  mov    $0x1,%esi
  lea    D465(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L752:
  mov    -0x14e8(%rbp),%rax
  lea    D103(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L42
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D358(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L42:
  mov    -0x14e8(%rbp),%rax
  lea    D748(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L924
  mov    -0x1518(%rbp),%rcx
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D457(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L924:
  mov    -0x14e8(%rbp),%rax
  lea    D440(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L737
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x11,%edx
  mov    $0x1,%esi
  lea    D825(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L737:
  mov    -0x14e8(%rbp),%rax
  lea    D616(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L898
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D256(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L898:
  mov    -0x14e8(%rbp),%rax
  lea    D368(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L967
  mov    -0x1518(%rbp),%rcx
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D315(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L967:
  mov    -0x14e8(%rbp),%rax
  lea    D785(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L806
  mov    -0x1518(%rbp),%rcx
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D556(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L806:
  mov    -0x14e8(%rbp),%rax
  lea    D217(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L1073
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x10,%edx
  mov    $0x1,%esi
  lea    D426(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L1073:
  mov    -0x14e8(%rbp),%rax
  lea    D683(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L198
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D660(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L198:
  mov    -0x14e8(%rbp),%rax
  lea    D276(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L850
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D18(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L850:
  mov    -0x14e8(%rbp),%rax
  lea    D800(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L790
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D571(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L790:
  mov    -0x14e8(%rbp),%rax
  lea    D391(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L22
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x11,%edx
  mov    $0x1,%esi
  lea    D574(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L22:
  mov    -0x14e8(%rbp),%rax
  lea    D401(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L92
  movl   $0x0,-0x1540(%rbp)
  jmp    L420
L92:
  mov    -0x14e8(%rbp),%rax
  lea    D596(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L786
  movl   $0x1,-0x1540(%rbp)
  jmp    L420
L786:
  mov    -0x14e8(%rbp),%rax
  lea    D772(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L943
  movl   $0x0,-0x153c(%rbp)
  jmp    L420
L943:
  mov    -0x14e8(%rbp),%rax
  lea    D241(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L406
  mov    -0x1518(%rbp),%rcx
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D739(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L406:
  mov    -0x14e8(%rbp),%rax
  lea    D591(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L444
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D441(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L420
L444:
  mov    -0x14e8(%rbp),%rax
  lea    D237(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L306
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D695(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L306:
  mov    -0x14e8(%rbp),%rax
  lea    D681(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L93
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D425(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L420
L93:
  mov    -0x14e8(%rbp),%rax
  lea    D714(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L420
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x10,%edx
  mov    $0x1,%esi
  lea    D537(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L420:
  movzbl -0x2e0(%rbp),%eax
  cmp    $0x3f,%al
  jne    L81
  mov    -0x14e8(%rbp),%rax
  lea    D218(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L31
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D316(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L31:
  mov    -0x14e8(%rbp),%rax
  lea    D588(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L180
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D826(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L180:
  mov    -0x14e8(%rbp),%rax
  lea    D340(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L732
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D637(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L732:
  mov    -0x14e8(%rbp),%rax
  lea    D505(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L197
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D506(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L197
L81:
  mov    -0x14e8(%rbp),%rax
  lea    D218(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L856
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D187(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L856:
  mov    -0x14e8(%rbp),%rax
  lea    D588(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L730
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D286(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L730:
  mov    -0x14e8(%rbp),%rax
  lea    D561(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L197
  mov    -0x1518(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D727(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L197
L86:
  lea    -0x2e0(%rbp),%rax
  mov    %rax,-0x1520(%rbp)
  mov    -0x1520(%rbp),%rdx
  mov    -0x14f8(%rbp),%rax
  lea    D384(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  movzbl -0x2e0(%rbp),%eax
  movsbl %al,%eax
  cmp    $0x5b,%eax
  je     L503
  cmp    $0x5b,%eax
  jg     L431
  cmp    $0x3c,%eax
  je     L383
  cmp    $0x3e,%eax
  je     L498
  jmp    L431
L383:
  lea    -0x2e0(%rbp),%rax
  mov    $0x3e,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  add    $0x1,%rax
  mov    %rax,-0x1520(%rbp)
  mov    -0x1520(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x0,(%rax)
  lea    -0x2e0(%rbp),%rax
  add    $0x3,%rax
  movzbl -0x2df(%rbp),%edx
  movsbl %dl,%edx
  mov    -0x14f8(%rbp),%rdi
  mov    %rax,%rcx
  lea    D833(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x2,-0x154c(%rbp)
  movl   $0x1,-0x1538(%rbp)
  jmp    L431
L498:
  lea    -0x2e0(%rbp),%rax
  mov    $0x3c,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  add    $0x1,%rax
  mov    %rax,-0x1520(%rbp)
  mov    -0x1520(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x0,(%rax)
  lea    -0x2e0(%rbp),%rax
  add    $0x3,%rax
  movzbl -0x2df(%rbp),%edx
  movsbl %dl,%edx
  mov    -0x14f8(%rbp),%rdi
  mov    %rax,%rcx
  lea    D678(%rip),%rax
  mov    %rax,%rsi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x2,-0x154c(%rbp)
  movl   $0x1,-0x1538(%rbp)
  jmp    L431
L503:
  lea    -0x2e0(%rbp),%rax
  mov    $0x5d,%esi
  mov    %rax,%rdi
  call   <strchr@plt>
  add    $0x1,%rax
  mov    %rax,-0x1520(%rbp)
  mov    -0x1520(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x0,(%rax)
  movzbl -0x2df(%rbp),%eax
  test   %al,%al
  je     L1060
  lea    -0x2e0(%rbp),%rax
  add    $0x1,%rax
  jmp    L908
L1060:
  lea    D41(%rip),%rax
L908:
  mov    -0x14f8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D132(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x2,-0x154c(%rbp)
  movl   $0x1,-0x1538(%rbp)
  nop
L431:
  cmpl   $0x0,-0x1540(%rbp)
  je     L749
  lea    -0x2e0(%rbp),%rax
  cmp    %rax,-0x1520(%rbp)
  jne    L749
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x11,%edx
  mov    $0x1,%esi
  lea    D465(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  movl   $0x1,-0x1538(%rbp)
L749:
  cmpl   $0x0,-0x1538(%rbp)
  jne    L1121
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x5,%edx
  mov    $0x1,%esi
  lea    D709(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L1121:
  cmpl   $0x0,-0x1540(%rbp)
  je     L853
  movl   $0x0,-0x1534(%rbp)
  mov    -0x1520(%rbp),%rax
  mov    %rax,-0x1510(%rbp)
  jmp    L846
L221:
  mov    -0x1510(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  jne    L735
  movl   $0x0,-0x1530(%rbp)
  mov    -0x1510(%rbp),%rax
  add    $0x1,%rax
  mov    %rax,-0x1508(%rbp)
  jmp    L1111
L637:
  mov    -0x1508(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <CharWidth@plt>
  add    %eax,-0x1530(%rbp)
  addq   $0x1,-0x1508(%rbp)
L1111:
  mov    -0x1508(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L137
  mov    -0x1508(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L637
L137:
  mov    $0x20,%edi
  call   <CharWidth@plt>
  mov    -0x1534(%rbp),%edx
  add    %eax,%edx
  mov    -0x1530(%rbp),%eax
  add    %edx,%eax
  cmp    $0x7f,%eax
  jle    L735
  mov    -0x1510(%rbp),%rax
  movb   $0xa,(%rax)
  movl   $0x0,-0x1534(%rbp)
L735:
  mov    -0x1510(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  je     L1086
  mov    -0x1510(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <CharWidth@plt>
  add    %eax,-0x1534(%rbp)
L1086:
  addq   $0x1,-0x1510(%rbp)
L846:
  mov    -0x1510(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L221
L853:
  mov    -0x1520(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x1550(%rbp)
  jmp    L427
L301:
  movl   $0x0,-0x1548(%rbp)
  jmp    L200
L219:
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rax,%rdx
  mov    -0x1520(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <Match@plt>
  test   %rax,%rax
  je     L668
  cmpl   $0x0,-0x1538(%rbp)
  je     L1117
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D140(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L1117:
  mov    -0x1548(%rbp),%eax
  lea    0x80(%rax),%edx
  mov    -0x14f8(%rbp),%rax
  lea    D642(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  movl   $0x1,-0x1538(%rbp)
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D363(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  add    %rax,-0x1520(%rbp)
  mov    -0x1548(%rbp),%eax
  cltq
  mov    -0x14e0(%rbp,%rax,4),%eax
  lea    0x1(%rax),%edx
  mov    -0x1548(%rbp),%eax
  cltq
  mov    %edx,-0x14e0(%rbp,%rax,4)
  addl   $0x1,-0x1554(%rbp)
  jmp    L519
L668:
  addl   $0x1,-0x1548(%rbp)
L200:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jl     L219
L519:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jne    L397
  cmpl   $0x0,-0x1538(%rbp)
  je     L410
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D140(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L410:
  movl   $0x1,-0x1538(%rbp)
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0x22,%al
  jne    L664
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x14f8(%rbp),%rax
  lea    D17(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  jmp    L315
L664:
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  cmp    $0xa,%al
  jne    L247
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  mov    $0x1,%esi
  lea    D724(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  jmp    L315
L247:
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%edx
  mov    -0x14f8(%rbp),%rax
  lea    D565(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L315:
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <putchar@plt>
  addq   $0x1,-0x1520(%rbp)
L397:
  addl   $0x1,-0x1554(%rbp)
L427:
  mov    -0x1520(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L301
  mov    $0xa,%edi
  call   <putchar@plt>
  jmp    L527
L197:
  nop
L527:
  movzbl -0x2e0(%rbp),%eax
  test   %al,%al
  je     L630
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D549(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
L630:
  mov    -0x1500(%rbp),%rdx
  lea    -0x2e0(%rbp),%rax
  mov    $0x2bc,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L644
  mov    -0x1500(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  movl   $0x0,-0x152c(%rbp)
  movl   $0x0,-0x1528(%rbp)
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x17,%edx
  mov    $0x1,%esi
  lea    D519(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  movl   $0x0,-0x1548(%rbp)
  jmp    L584
L684:
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  add    %eax,-0x152c(%rbp)
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  add    %rdx,%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    -0x1548(%rbp),%edx
  movslq %edx,%rdx
  mov    -0x14e0(%rbp,%rdx,4),%edx
  sub    $0x1,%edx
  imul   %edx,%eax
  sub    $0x1,%eax
  add    %eax,-0x1528(%rbp)
  lea    -0x12e0(%rbp),%rdx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  lea    (%rdx,%rax,1),%rbx
  mov    %rbx,%rdi
  call   <strlen@plt>
  add    %rbx,%rax
  mov    %rax,-0x14f0(%rbp)
  mov    -0x14f0(%rbp),%rax
  movzbl -0x1(%rax),%eax
  mov    %al,-0x1555(%rbp)
  mov    -0x14f0(%rbp),%rax
  sub    $0x1,%rax
  movb   $0x0,(%rax)
  cmpl   $0x0,-0x153c(%rbp)
  je     L830
  mov    -0x1548(%rbp),%edx
  mov    -0x14f8(%rbp),%rax
  lea    D351(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
L830:
  movsbl -0x1555(%rbp),%edx
  lea    -0x12e0(%rbp),%rcx
  mov    -0x1548(%rbp),%eax
  cltq
  shl    $0x5,%rax
  lea    (%rcx,%rax,1),%rsi
  mov    -0x14f8(%rbp),%rax
  mov    %edx,%ecx
  mov    %rsi,%rdx
  lea    D639(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x1548(%rbp)
L584:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jl     L684
  cmpl   $0x0,-0x153c(%rbp)
  je     L412
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D126(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  movl   $0x0,-0x1548(%rbp)
  jmp    L1047
L581:
  mov    -0x1548(%rbp),%edx
  mov    -0x14f8(%rbp),%rax
  lea    D289(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x1548(%rbp)
L1047:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jl     L581
  movl   $0x0,-0x1548(%rbp)
  jmp    L143
L7:
  mov    -0x1548(%rbp),%edx
  mov    -0x14f8(%rbp),%rax
  lea    D759(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  addl   $0x1,-0x1548(%rbp)
L143:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jl     L7
L412:
  mov    -0x14f8(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x1550(%rbp),%eax
  sub    -0x1528(%rbp),%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x1524(%rbp)
  pxor   %xmm2,%xmm2
  cvtsi2ssl -0x1550(%rbp),%xmm2
  movss  -0x1524(%rbp),%xmm0
  movaps %xmm0,%xmm1
  divss  %xmm2,%xmm1
  movss  D645(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x1524(%rbp)
  mov    -0x1528(%rbp),%ecx
  mov    -0x152c(%rbp),%edx
  mov    -0x1544(%rbp),%eax
  mov    %eax,%esi
  lea    D499(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0x1524(%rbp),%xmm3
  movq   %xmm3,%rcx
  mov    -0x1550(%rbp),%eax
  sub    -0x1528(%rbp),%eax
  mov    %eax,%edx
  mov    -0x1550(%rbp),%eax
  movq   %rcx,%xmm0
  mov    %eax,%esi
  lea    D238(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    -0x154c(%rbp),%eax
  mov    %eax,%esi
  lea    D644(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movl   $0x0,-0x1548(%rbp)
  jmp    L100
L120:
  mov    -0x1548(%rbp),%eax
  cltq
  mov    -0x14e0(%rbp,%rax,4),%eax
  lea    -0x12e0(%rbp),%rcx
  mov    -0x1548(%rbp),%edx
  movslq %edx,%rdx
  shl    $0x5,%rdx
  add    %rdx,%rcx
  mov    %eax,%edx
  mov    %rcx,%rsi
  lea    D285(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x1548(%rbp)
L100:
  mov    -0x1548(%rbp),%eax
  cmp    -0x1544(%rbp),%eax
  jl     L120
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    $0x0,%eax
L1116:
  mov    -0x18(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L171
  call   <__stack_chk_fail@plt>
L171:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D762
type_guessed: string
name: extract_symbolic_data
arguments: tag: D799
type_guessed: string
name: extract_symbolic_data
arguments: tag: D398
type_guessed: string
name: extract_symbolic_data
arguments: tag: D567
type_guessed: string
name: extract_symbolic_data
arguments: tag: D437
type_guessed: string
name: extract_symbolic_data
arguments: tag: D321
type_guessed: string
name: extract_symbolic_data
arguments: tag: D65
type_guessed: string
name: extract_symbolic_data
arguments: tag: D824
type_guessed: string
name: extract_symbolic_data
arguments: tag: D465
type_guessed: string
name: extract_symbolic_data
arguments: tag: D103
type_guessed: string
name: extract_symbolic_data
arguments: tag: D358
type_guessed: string
name: extract_symbolic_data
arguments: tag: D748
type_guessed: string
name: extract_symbolic_data
arguments: tag: D457
type_guessed: string
name: extract_symbolic_data
arguments: tag: D440
type_guessed: string
name: extract_symbolic_data
arguments: tag: D825
type_guessed: string
name: extract_symbolic_data
arguments: tag: D616
type_guessed: string
name: extract_symbolic_data
arguments: tag: D256
type_guessed: string
name: extract_symbolic_data
arguments: tag: D368
type_guessed: string
name: extract_symbolic_data
arguments: tag: D315
type_guessed: string
name: extract_symbolic_data
arguments: tag: D785
type_guessed: string
name: extract_symbolic_data
arguments: tag: D556
type_guessed: string
name: extract_symbolic_data
arguments: tag: D217
type_guessed: string
name: extract_symbolic_data
arguments: tag: D426
type_guessed: string
name: extract_symbolic_data
arguments: tag: D683
type_guessed: string
name: extract_symbolic_data
arguments: tag: D660
type_guessed: string
name: extract_symbolic_data
arguments: tag: D276
type_guessed: string
name: extract_symbolic_data
arguments: tag: D18
type_guessed: string
name: extract_symbolic_data
arguments: tag: D800
type_guessed: string
name: extract_symbolic_data
arguments: tag: D571
type_guessed: string
name: extract_symbolic_data
arguments: tag: D391
type_guessed: string
name: extract_symbolic_data
arguments: tag: D574
type_guessed: string
name: extract_symbolic_data
arguments: tag: D401
type_guessed: string
name: extract_symbolic_data
arguments: tag: D596
type_guessed: string
name: extract_symbolic_data
arguments: tag: D772
type_guessed: string
name: extract_symbolic_data
arguments: tag: D241
type_guessed: string
name: extract_symbolic_data
arguments: tag: D739
type_guessed: string
name: extract_symbolic_data
arguments: tag: D591
type_guessed: string
name: extract_symbolic_data
arguments: tag: D441
type_guessed: string
name: extract_symbolic_data
arguments: tag: D237
type_guessed: string
name: extract_symbolic_data
arguments: tag: D695
type_guessed: string
name: extract_symbolic_data
arguments: tag: D681
type_guessed: string
name: extract_symbolic_data
arguments: tag: D425
type_guessed: string
name: extract_symbolic_data
arguments: tag: D714
type_guessed: string
name: extract_symbolic_data
arguments: tag: D537
type_guessed: string
name: extract_symbolic_data
arguments: tag: D218
type_guessed: string
name: extract_symbolic_data
arguments: tag: D316
type_guessed: string
name: extract_symbolic_data
arguments: tag: D588
type_guessed: string
name: extract_symbolic_data
arguments: tag: D826
type_guessed: string
name: extract_symbolic_data
arguments: tag: D340
type_guessed: string
name: extract_symbolic_data
arguments: tag: D637
type_guessed: string
name: extract_symbolic_data
arguments: tag: D505
type_guessed: string
name: extract_symbolic_data
arguments: tag: D506
type_guessed: string
name: extract_symbolic_data
arguments: tag: D187
type_guessed: string
name: extract_symbolic_data
arguments: tag: D286
type_guessed: string
name: extract_symbolic_data
arguments: tag: D561
type_guessed: string
name: extract_symbolic_data
arguments: tag: D727
type_guessed: string
name: extract_symbolic_data
arguments: tag: D384
type_guessed: string
name: extract_symbolic_data
arguments: tag: D833
type_guessed: string
name: extract_symbolic_data
arguments: tag: D678
type_guessed: string
name: extract_symbolic_data
arguments: tag: D41
type_guessed: string
name: extract_symbolic_data
arguments: tag: D132
type_guessed: string
name: extract_symbolic_data
arguments: tag: D709
type_guessed: string
name: extract_symbolic_data
arguments: tag: D140
type_guessed: string
name: extract_symbolic_data
arguments: tag: D642
type_guessed: string
name: extract_symbolic_data
arguments: tag: D363
type_guessed: string
name: extract_symbolic_data
arguments: tag: D17
type_guessed: string
name: extract_symbolic_data
arguments: tag: D724
type_guessed: string
name: extract_symbolic_data
arguments: tag: D565
type_guessed: string
name: extract_symbolic_data
arguments: tag: D549
type_guessed: string
name: extract_symbolic_data
arguments: tag: D519
type_guessed: string
name: extract_symbolic_data
arguments: tag: D351
type_guessed: string
name: extract_symbolic_data
arguments: tag: D639
type_guessed: string
name: extract_symbolic_data
arguments: tag: D126
type_guessed: string
name: extract_symbolic_data
arguments: tag: D289
type_guessed: string
name: extract_symbolic_data
arguments: tag: D759
type_guessed: string
name: extract_symbolic_data
arguments: tag: D645
type_guessed: byte[4]
name: extract_symbolic_data
arguments: tag: D499
type_guessed: string
name: extract_symbolic_data
arguments: tag: D238
type_guessed: string
name: extract_symbolic_data
arguments: tag: D644
type_guessed: string
name: extract_symbolic_data
arguments: tag: D285
type_guessed: string

tool: D762: syntax: mkdialog dictionary.txt in.txt out.s

tool: D799: rb

tool: D398: dictionary not found

tool: D567: Dictionary has a word that's too long

tool: D437: input file not found

tool: D321: wb

tool: D65: output file couldn't be opened

tool: D824: nl

tool: D465: .byt SCR::NEWLINE

tool: D103: end

tool: D358: .byt SCR::END_SCRIPT

tool: D748: poke

tool: D457: .byt SCR::POKE, <%s, >%s

tool: D440: asm

tool: D825: .byt SCR::RUN_ASM

tool: D616: p

tool: D256: .byt SCR::END_PAGE

tool: D368: goto

tool: D315: .byt SCR::GOTO, <%s, >%s

tool: D785: call

tool: D556: .byt SCR::CALL, <%s, >%s

tool: D217: return

tool: D426: .byt SCR::RETURN

tool: D683: choose

tool: D660: .byt SCR::CHOICES, CHOICELIST::%s

tool: D276: scene

tool: D18: .byt SCR::SCENE, SCENES::%s

tool: D800: transition

tool: D571: .byt SCR::TRANSITION

tool: D391: noskip

tool: D574: .byt SCR::NO_SKIP

tool: D401: manualwrap

tool: D596: autowrap

tool: D772: nodictionarytable

tool: D241: monotext

tool: D739: .byt SCR::MONO_TEXT, <%s, >%s

tool: D591: clear

tool: D441: .byt SCR::CLEAR_ALL

tool: D237: upload

tool: D695: .byt SCR::UPLOAD, %s

tool: D681: image

tool: D425: .byt SCR::IMAGE, %s

tool: D714: ground

tool: D537: .byt SCR::GROUND

tool: D218: on

tool: D316: .byt SCR::IF_FLAG_ON, EventFlags::%s

tool: D588: off

tool: D826: .byt SCR::IF_FLAG_OFF, EventFlags::%s

tool: D340: item

tool: D637: .byt SCR::IF_ITEM, InventoryItem::%s

tool: D505: notitem

tool: D506: .byt SCR::IF_NOT_ITEM, InventoryItem::%s

tool: D187: .byt SCR::FLAG_ON, EventFlags::%s

tool: D286: .byt SCR::FLAG_OFF, EventFlags::%s

tool: D561: toggle

tool: D727: .byt SCR::FLAG_TOGGLE, EventFlags::%s

tool: D384: ; %s


tool: D833: .byt SCR::SAY, SCR::SPEAKER_%c|CHAR::%s

tool: D678: .byt SCR::THINK, SCR::SPEAKER_%c|CHAR::%s

tool: D41: NONE

tool: D132: .byt SCR::NARRATE, CHAR::%s

tool: D709: .byt 

tool: D140: , 

tool: D642: $%.2x

tool: D363: [%s]

tool: D17: '"'

tool: D724: SCR::NEWLINE

tool: D565: "%c"

tool: D549: 


tool: D519: 
CutsceneDictionary:


tool: D351: DictionaryWord%i: 

tool: D639: .byt "%s", '%c'|128


tool: D126: 
CutsceneDictionaryTable:


tool: D289: .byt <DictionaryWord%i


tool: D759: .byt >DictionaryWord%i


tool: {"D645": [0x00,0x00,0xc8,0x42]}

tool: D499: Dictionary entries: %i (size %i, %i saved by dictionary)


tool: D238: Script size: %i ---> %i (%.2f%%)


tool: D644: Commands: %i


tool: D285: %s%i,

assistant: ```c
int main(int argc, char *argv[]) {
  if (argc < 4) {
    puts("syntax: mkdialog dictionary.txt in.txt out.s");
    return 0;
  }
  char Buffer[700];
  char *Text;
  int Size = 0, Uncompressed = 0, CommandSize = 0;
  int i;
  char Dictionary[128][32];
  int DictionaryUse[128];
  int DictionaryLen = 0;
  int AutoWordWrap = 1;
  int MakeDictionaryTable = 1;
  FILE *InputFile = fopen(argv[1], "rb");
  if (!InputFile) {
    puts("dictionary not found");
    return 0;
  }
  while (fgets(Buffer, sizeof(Buffer), InputFile)) {
    RemoveLineEndings(Buffer);
    if (strlen(Buffer) > 31) {
      puts("Dictionary has a word that's too long");
      return -1;
    }
    DictionaryUse[DictionaryLen] = 0;
    strcpy(Dictionary[DictionaryLen], Buffer);
    DictionaryLen++;
  }
  InputFile = fopen(argv[2], "rb");
  if (!InputFile) {
    puts("input file not found");
    return 0;
  }
  FILE *OutputFile = fopen(argv[3], "wb");
  if (!OutputFile) {
    fclose(InputFile);
    puts("output file couldn't be opened");
    return 0;
  }
  while (fgets(Buffer, sizeof(Buffer), InputFile)) {
    RemoveLineEndings(Buffer);
    int AlreadyStarted = 0;
    if (!*Buffer)
      continue;
    if (Buffer[0] == ':')
      fprintf(OutputFile, "%s", Buffer + 1);
    else if (Buffer[0] == '`' || Buffer[0] == '?') {
      char *Arg = strchr(Buffer, ' ');
      if (Arg)
        *(Arg++) = 0;
      char *Command = Buffer + 1;
      if (!strcmp(Command, "nl"))
        fprintf(OutputFile, ".byt SCR::NEWLINE");
      else if (!strcmp(Command, "end"))
        fprintf(OutputFile, ".byt SCR::END_SCRIPT");
      else if (!strcmp(Command, "poke"))
        fprintf(OutputFile, ".byt SCR::POKE, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "asm"))
        fprintf(OutputFile, ".byt SCR::RUN_ASM");
      else if (!strcmp(Command, "p"))
        fprintf(OutputFile, ".byt SCR::END_PAGE");
      else if (!strcmp(Command, "goto"))
        fprintf(OutputFile, ".byt SCR::GOTO, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "call"))
        fprintf(OutputFile, ".byt SCR::CALL, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "return"))
        fprintf(OutputFile, ".byt SCR::RETURN");
      else if (!strcmp(Command, "choose"))
        fprintf(OutputFile, ".byt SCR::CHOICES, CHOICELIST::%s", Arg);
      else if (!strcmp(Command, "scene"))
        fprintf(OutputFile, ".byt SCR::SCENE, SCENES::%s", Arg);
      else if (!strcmp(Command, "transition"))
        fprintf(OutputFile, ".byt SCR::TRANSITION");
      else if (!strcmp(Command, "noskip"))
        fprintf(OutputFile, ".byt SCR::NO_SKIP");
      else if (!strcmp(Command, "manualwrap"))
        AutoWordWrap = 0;
      else if (!strcmp(Command, "autowrap"))
        AutoWordWrap = 1;
      else if (!strcmp(Command, "nodictionarytable"))
        MakeDictionaryTable = 0;
      else if (!strcmp(Command, "monotext"))
        fprintf(OutputFile, ".byt SCR::MONO_TEXT, <%s, >%s", Arg, Arg);
      else if (!strcmp(Command, "clear"))
        fprintf(OutputFile, ".byt SCR::CLEAR_ALL");
      else if (!strcmp(Command, "upload"))
        fprintf(OutputFile, ".byt SCR::UPLOAD, %s", Arg);
      else if (!strcmp(Command, "image"))
        fprintf(OutputFile, ".byt SCR::IMAGE, %s", Arg);
      else if (!strcmp(Command, "ground"))
        fprintf(OutputFile, ".byt SCR::GROUND");
      if (Buffer[0] == '?') {
        if (!strcmp(Command, "on"))
          fprintf(OutputFile, ".byt SCR::IF_FLAG_ON, EventFlags::%s", Arg);
        if (!strcmp(Command, "off"))
          fprintf(OutputFile, ".byt SCR::IF_FLAG_OFF, EventFlags::%s", Arg);
        if (!strcmp(Command, "item"))
          fprintf(OutputFile, ".byt SCR::IF_ITEM, InventoryItem::%s", Arg);
        if (!strcmp(Command, "notitem"))
          fprintf(OutputFile, ".byt SCR::IF_NOT_ITEM, InventoryItem::%s", Arg);
      } else {
        if (!strcmp(Command, "on"))
          fprintf(OutputFile, ".byt SCR::FLAG_ON, EventFlags::%s", Arg);
        if (!strcmp(Command, "off"))
          fprintf(OutputFile, ".byt SCR::FLAG_OFF, EventFlags::%s", Arg);
        if (!strcmp(Command, "toggle"))
          fprintf(OutputFile, ".byt SCR::FLAG_TOGGLE, EventFlags::%s", Arg);
      }
    } else {
      Text = Buffer;
      fprintf(OutputFile, "; %s\r\n", Text);
      switch (Buffer[0]) {
      case '<':
        Text = strchr(Buffer, '>') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::SAY, SCR::SPEAKER_%c|CHAR::%s", Buffer[1], Buffer + 3);
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      case '>':
        Text = strchr(Buffer, '<') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::THINK, SCR::SPEAKER_%c|CHAR::%s", Buffer[1], Buffer + 3);
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      case '[':
        Text = strchr(Buffer, ']') + 1;
        Text[-1] = 0;
        fprintf(OutputFile, ".byt SCR::NARRATE, CHAR::%s", Buffer[1] ? (Buffer + 1) : "NONE");
        CommandSize += 2;
        AlreadyStarted = 1;
        break;
      }
      if (AutoWordWrap && Text == Buffer) {
        fprintf(OutputFile, ".byt SCR::NEWLINE");
        AlreadyStarted = 1;
      }
      if (!AlreadyStarted) {
        fprintf(OutputFile, ".byt ");
      }
      if (AutoWordWrap) {
        char *Peek;
        int CurXPos = 0;
        for (Peek = Text; *Peek; Peek++) {
          if (*Peek == ' ') {
            int WordLength = 0;
            char *Word = Peek + 1;
            for (; *Word != ' ' && *Word; Word++)
              WordLength += CharWidth(*Word);
            if (CurXPos + CharWidth(' ') + WordLength >= 128) {
              *Peek = '\n';
              CurXPos = 0;
            }
          }
          if (*Peek != '\n')
            CurXPos += CharWidth(*Peek);
        }
      }
      Uncompressed += strlen(Text);
      while (*Text) {
        for (i = 0; i < DictionaryLen; i++) {
          if (Match(Text, Dictionary[i])) {
            if (AlreadyStarted)
              fprintf(OutputFile, ", ");
            fprintf(OutputFile, "$%.2x", 0x80 + i);
            AlreadyStarted = 1;
            printf("[%s]", Dictionary[i]);
            Text += strlen(Dictionary[i]);
            DictionaryUse[i]++;
            Size++;
            break;
          }
        }
        if (i == DictionaryLen) {
          if (AlreadyStarted)
            fprintf(OutputFile, ", ");
          AlreadyStarted = 1;
          if (*Text == '"')
            fprintf(OutputFile, "'\"'", *Text);
          else if (*Text == '\n')
            fprintf(OutputFile, "SCR::NEWLINE");
          else
            fprintf(OutputFile, "\"%c\"", *Text);
          putchar(*Text);
          Text++;
        }
        Size++;
      }
      putchar('\n');
    }
    if (*Buffer)
      fprintf(OutputFile, "\r\n");
  }
  fclose(InputFile);
  int DictionarySize = 0, DictionarySavings = 0;
  fprintf(OutputFile, "\r\nCutsceneDictionary:\r\n");
  for (i = 0; i < DictionaryLen; i++) {
    DictionarySize += strlen(Dictionary[i]);
    DictionarySavings += strlen(Dictionary[i]) * (DictionaryUse[i] - 1) - 1;
    char *Last = strrchr(Dictionary[i], 0);
    char LastChar = Last[-1];
    Last[-1] = 0;
    if (MakeDictionaryTable)
      fprintf(OutputFile, "DictionaryWord%i: ", i);
    fprintf(OutputFile, ".byt \"%s\", '%c'|128\r\n", Dictionary[i], LastChar);
  }
  if (MakeDictionaryTable) {
    fprintf(OutputFile, "\r\nCutsceneDictionaryTable:\r\n");
    for (i = 0; i < DictionaryLen; i++) {
      fprintf(OutputFile, ".byt <DictionaryWord%i\r\n", i);
    }
    for (i = 0; i < DictionaryLen; i++) {
      fprintf(OutputFile, ".byt >DictionaryWord%i\r\n", i);
    }
  }
  fclose(OutputFile);
  float Saving = Uncompressed - DictionarySavings;
  Saving = Saving / Uncompressed * 100;
  printf("Dictionary entries: %i (size %i, %i saved by dictionary)\n", DictionaryLen, DictionarySize, DictionarySavings);
  printf("Script size: %i ---> %i (%.2f%%)\n", Uncompressed, Uncompressed - DictionarySavings, Saving);
  printf("Commands: %i\n", CommandSize);
  for (i = 0; i < DictionaryLen; i++)
    printf("%s%i,", Dictionary[i], DictionaryUse[i]);
  putchar('\n');
  return 0;
}
```