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

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x258,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x248(%rsp)
  xor    %eax,%eax
  cmp    $0x1,%edi
  jle    L893
L776:
  mov    0x8(%rbx),%rdi
  lea    D838(%rip),%rsi
  call   <fopen@plt>
  mov    %rax,%r15
  test   %rax,%rax
  je     L727
  lea    D1092(%rip),%rsi
  lea    D910(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%r14
  test   %rax,%rax
  je     L202
  lea    D935(%rip),%rsi
  mov    %rax,%rdi
  lea    D1059(%rip),%rbp
  call   <f_outputLine@plt>
  lea    D222(%rip),%rsi
  mov    %r14,%rdi
  lea    D450(%rip),%r12
  call   <f_outputLine@plt>
  lea    D1147(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D222(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D50(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D662(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D85(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D338(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D892(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D503(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D556(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1070(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D313(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D466(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D451(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1078(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D190(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1073(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D744(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D942(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D826(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D997(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D359(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D632(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D992(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D902(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  movl   $0x0,0x18(%rsp)
  nopl   0x0(%rax,%rax,1)
L209:
  mov    %r15,%rdi
  call   <feof@plt>
  mov    %eax,%r13d
  test   %eax,%eax
  jne    L1205
L916:
  lea    0x40(%rsp),%rbx
  mov    %r15,%rdx
  mov    $0xff,%esi
  mov    %rbx,%rdi
  call   <fgets@plt>
  cmpb   $0x23,0x40(%rsp)
  je     L748
  mov    $0xf,%edx
  mov    %rbx,%rsi
  lea    D36(%rip),%rdi
  call   <strncmp@plt>
  movb   $0x0,0x140(%rsp)
  test   %rax,%rax
  je     L1027
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D724(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L264
  mov    0x8(%rsp),%esi
  test   %esi,%esi
  je     L872
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L872:
  lea    0x140(%rsp),%rbp
  lea    D943(%rip),%rsi
  mov    $0x4,%r12d
  mov    %rbp,%rdi
  call   <strcat@plt>
  movl   $0x0,0x8(%rsp)
  movl   $0x6,0x10(%rsp)
L1069:
  mov    $0x9,%edx
  mov    %rbx,%rsi
  lea    D969(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L323
  mov    $0x8,%edx
  mov    %rbx,%rsi
  lea    D656(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L844
  mov    0x8(%rsp),%ecx
  lea    0x140(%rsp),%rbp
  test   %ecx,%ecx
  jne    L758
L906:
  lea    D479(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D560(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L1054
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D1(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L1178
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D396(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L383
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D1115(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L722
  movl   $0x0,0x8(%rsp)
  mov    $0xe,%r12d
  movl   $0x8,0x10(%rsp)
L540:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D365(%rip),%rdi
  call   <strncmp@plt>
  movl   $0x0,0x1c(%rsp)
  test   %rax,%rax
  je     L571
L295:
  mov    0x10(%rsp),%edx
  test   %edx,%edx
  jne    L375
  cmpl   $0x1,0x18(%rsp)
  je     L440
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  je     L901
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L901:
  movzbl 0x40(%rsp),%eax
  cmp    $0xa,%al
  je     L552
  test   %al,%al
  je     L552
  movl   $0x0,0x8(%rsp)
  cmp    $0xd,%al
  jne    L209
  cmpb   $0xa,0x41(%rsp)
  jne    L209
  cmpb   $0x0,0x42(%rsp)
  jne    L209
L552:
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x18(%rsp)
  jmp    L209
L202:
  lea    D388(%rip),%rdi
  xor    %eax,%eax
  call   <fatal@plt>
L313:
  mov    0x248(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L1016
  add    $0x258,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L264:
  movl   $0x0,0x10(%rsp)
  xor    %r12d,%r12d
  jmp    L1069
L775:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D396(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L430
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L383
L532:
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L383:
  lea    D152(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D1115(%rip),%rdi
  call   <strncmp@plt>
  movl   $0x1,0x1c(%rsp)
  test   %rax,%rax
  je     L733
  movl   $0x6,0x10(%rsp)
  mov    $0x5,%r12d
L477:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D365(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L891
  lea    0x46(%rsp),%r8
  lea    D717(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x8(%rsp)
  call   <strstr@plt>
  mov    0x8(%rsp),%r8
  test   %rax,%rax
  je     L1099
  movl   $0x0,0x8(%rsp)
L1176:
  sub    %rbx,%rax
  mov    %rax,%r13
  cmp    $0xff,%rax
  jg     L295
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L684
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  mov    %r8,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    0x8(%rsp),%r8
L684:
  lea    D637(%rip),%rsi
  mov    %rbp,%rdi
  mov    %r8,0x8(%rsp)
  call   <strcat@plt>
  cmp    $0x6,%r13
  jle    L75
  lea    0x152(%rsp),%rax
  mov    0x8(%rsp),%rsi
  lea    -0x6(%r13),%ecx
  mov    %r13d,0x8(%rsp)
  mov    %rax,%rdi
  lea    0xc(%r13),%eax
  rep movsb %ds:(%rsi),%es:(%rdi)
L1110:
  lea    0x1(%rax),%r12d
  lea    D606(%rip),%rsi
  cltq
  mov    %rbp,%rdi
  movb   $0x0,0x140(%rsp,%rax,1)
  call   <strcat@plt>
  mov    0x8(%rsp),%eax
  movl   $0x0,0x8(%rsp)
  add    $0x3,%eax
  mov    %eax,0x20(%rsp)
  jmp    L818
L112:
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D1(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L775
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L1178
L280:
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L1178:
  lea    D652(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D396(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L383
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D1115(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L722
  movl   $0x0,0x1c(%rsp)
  mov    $0x15,%r12d
  movl   $0x11,0x10(%rsp)
  jmp    L477
  nopl   0x0(%rax)
L844:
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D560(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L112
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L1054
L823:
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L1054:
  lea    D809(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D1(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L1178
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D396(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L383
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D1115(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L722
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D365(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L235
  movl   $0x0,0x8(%rsp)
  mov    $0x11,%r12d
  movl   $0xb,0x10(%rsp)
L571:
  lea    0x46(%rsp),%r8
  lea    D717(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x20(%rsp)
  call   <strstr@plt>
  movl   $0x0,0x1c(%rsp)
  mov    0x20(%rsp),%r8
  test   %rax,%rax
  je     L295
  jmp    L1176
  nopw   0x0(%rax,%rax,1)
L323:
  lea    0x140(%rsp),%rbp
  lea    D296(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x8,%edx
  mov    %rbx,%rsi
  lea    D656(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L758
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D560(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L823
  mov    $0x11,%edx
  mov    %rbx,%rsi
  addl   $0x1,0x8(%rsp)
  lea    D1(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L280
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D396(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L532
  movl   $0x9,0x10(%rsp)
  mov    $0x8,%r12d
L430:
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D1115(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L540
  cmpl   $0x0,0x8(%rsp)
  je     L134
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  lea    0x140(%rsp),%rbp
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x1c(%rsp)
L733:
  lea    D335(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D365(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L483
  lea    0x46(%rsp),%r8
  lea    D717(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x8(%rsp)
  call   <strstr@plt>
  test   %rax,%rax
  je     L483
  sub    %rbx,%rax
  mov    0x8(%rsp),%r8
  cmp    $0xff,%rax
  mov    %rax,%r13
  jle    L684
L483:
  movl   $0x0,0x8(%rsp)
  mov    $0x5,%r12d
  movl   $0x4,0x20(%rsp)
L818:
  movslq 0x20(%rsp),%rcx
  mov    %r15,0x30(%rsp)
  mov    %rbx,%r13
  mov    %r14,0x38(%rsp)
  mov    %r12d,%r14d
  mov    %rcx,0x28(%rsp)
  mov    %ecx,%r15d
  mov    %ecx,%ebx
  mov    %rbp,0x10(%rsp)
  jmp    L817
  nopl   (%rax)
L348:
  cmp    $0x22,%al
  je     L17
  cmp    $0x25,%al
  je     L973
  cmp    $0x3e,%al
  jne    L739
  lea    -0x1(%r15),%eax
  cltq
  cmpb   $0x20,0x40(%rsp,%rax,1)
  jne    L1107
  sub    $0x1,%r14d
L1107:
  lea    (%r14,%r15,1),%eax
  sub    %ebx,%eax
  cltq
  movb   $0x3e,0x140(%rsp,%rax,1)
L741:
  add    $0x1,%r15d
  cmp    $0xff,%r15d
  jg     L561
L817:
  movslq %r15d,%r12
  movzbl 0x40(%rsp,%r12,1),%eax
  test   %al,%al
  je     L381
  cmp    $0xa,%al
  je     L381
  cmp    $0xd,%al
  jne    L348
  lea    0x1(%r15),%eax
  cltq
  cmpb   $0xa,0x40(%rsp,%rax,1)
  je     L381
L739:
  lea    0x0(%r13,%r12,1),%rbp
  mov    $0x9,%edx
  lea    D801(%rip),%rdi
  mov    %rbp,%rsi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L1059
  movslq %r14d,%rdi
  add    $0x8,%r15d
  lea    D324(%rip),%rsi
  sub    $0x1,%r14d
  add    %r12,%rdi
  add    $0x1,%r15d
  sub    0x28(%rsp),%rdi
  add    0x10(%rsp),%rdi
  call   <strcpy@plt>
  cmp    $0xff,%r15d
  jle    L817
L561:
  mov    0x30(%rsp),%r15
  mov    0x38(%rsp),%r14
  mov    0x10(%rsp),%rbp
  jmp    L746
  nopl   0x0(%rax,%rax,1)
L1059:
  mov    $0x9,%edx
  mov    %rbp,%rsi
  lea    D969(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L397
  lea    (%r15,%r14,1),%eax
  movzbl 0x40(%rsp,%r12,1),%edx
  sub    %ebx,%eax
  cltq
  cmp    $0x2f,%dl
  je     L119
  mov    %dl,0x140(%rsp,%rax,1)
  jmp    L741
  nopl   0x0(%rax,%rax,1)
L17:
  xorl   $0x1,0x1c(%rsp)
  sub    $0x1,%r14d
  jmp    L741
  xchg   %ax,%ax
L973:
  cmpl   $0x1,0x1c(%rsp)
  jne    L535
  lea    (%r15,%r14,1),%eax
  add    $0x1,%r14d
  sub    %ebx,%eax
  cltq
  movb   $0x25,0x140(%rsp,%rax,1)
L535:
  lea    (%r14,%r15,1),%eax
  sub    %ebx,%eax
  cltq
  movb   $0x25,0x140(%rsp,%rax,1)
  jmp    L741
L1027:
  lea    0x140(%rsp),%rbp
  lea    D514(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x10,%edx
  lea    0x3f(%rsp),%r8
  mov    $0x5c,%r10d
  lea    0x13a(%rsp),%r9
  jmp    L982
  nopl   0x0(%rax)
L1051:
  cmp    $0x2f,%al
  cmove  %r10d,%eax
L500:
  mov    %al,(%r9,%rdx,1)
  add    $0x1,%rdx
  cmp    $0x101,%rdx
  je     L217
L982:
  movzbl (%r8,%rdx,1),%eax
  lea    -0x6(%rdx),%edi
  cmp    $0x7d,%al
  sete   %cl
  test   %al,%al
  sete   %sil
  or     %sil,%cl
  jne    L522
  cmp    $0xa,%al
  je     L522
  cmp    $0xd,%al
  jne    L1051
  cmpb   $0xa,(%rbx,%rdx,1)
  jne    L500
  nopl   (%rax)
L522:
  movslq %edi,%rdi
  movb   $0x0,0x140(%rsp,%rdi,1)
L217:
  mov    0x8(%rsp),%edi
  test   %edi,%edi
  je     L469
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L469:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  cmp    $0x1,%eax
  je     L1143
L204:
  lea    D347(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r15,%rdi
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x18(%rsp)
  call   <feof@plt>
  mov    %eax,%r13d
  test   %eax,%eax
  je     L916
L1205:
  mov    %r15,%rdi
  call   <fclose@plt>
  mov    %r14,%rdi
  call   <fclose@plt>
  jmp    L313
L748:
  lea    0x140(%rsp),%rbp
  lea    D222(%rip),%rsi
  movb   $0x0,0x140(%rsp)
  mov    %rbp,%rdi
  call   <strcat@plt>
  movzbl 0x41(%rsp),%edx
  mov    $0x3,%r9d
  cmp    $0x20,%dl
  je     L572
  lea    D983(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  movzbl 0x41(%rsp),%edx
  mov    $0x4,%r9d
  cmp    $0xa,%dl
  je     L648
  test   %dl,%dl
  je     L648
L572:
  movslq %r9d,%rsi
  mov    $0x2,%eax
  add    %rbp,%rsi
  jmp    L68
  nopw   0x0(%rax,%rax,1)
L74:
  mov    %cl,-0x2(%rsi,%rax,1)
  add    $0x1,%rax
  test   %dl,%dl
  je     L1070
  cmp    $0xa,%dl
  je     L1070
L68:
  mov    %edx,%ecx
  lea    -0x1(%rax),%r8d
  movzbl (%rbx,%rax,1),%edx
  mov    %eax,%edi
  cmp    $0xd,%cl
  jne    L74
  cmp    $0xa,%dl
  jne    L74
  mov    %r8d,%edi
L1070:
  lea    -0x1(%r9,%rdi,1),%eax
  cmpl   $0x0,0x8(%rsp)
  cltq
  movb   $0x0,0x140(%rsp,%rax,1)
  je     L165
  lea    D935(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L165:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x18(%rsp)
  jmp    L209
L758:
  mov    %r14,%rdi
  lea    D935(%rip),%rsi
  call   <f_outputLine@plt>
  lea    D819(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  jmp    L906
L397:
  movslq %r14d,%rdi
  lea    D296(%rip),%rsi
  sub    $0x1,%r14d
  add    $0x8,%r15d
  add    %r12,%rdi
  sub    0x28(%rsp),%rdi
  add    0x10(%rsp),%rdi
  call   <strcpy@plt>
  jmp    L741
L119:
  movb   $0x5c,0x140(%rsp,%rax,1)
  jmp    L741
L381:
  mov    %r14d,%r12d
  mov    %r15d,%r13d
  mov    0x38(%rsp),%r14
  mov    0x30(%rsp),%r15
  mov    0x10(%rsp),%rbp
L1228:
  lea    (%r12,%r13,1),%ecx
  sub    0x20(%rsp),%ecx
  movslq %ecx,%rax
  movb   $0x0,0x140(%rsp,%rax,1)
L746:
  cmpl   $0x1,0x8(%rsp)
  jne    L54
  cmpl   $0x1,0x18(%rsp)
  je     L54
  lea    D105(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D49(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L54:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %eax,0x18(%rsp)
  jmp    L209
L727:
  mov    0x8(%rbx),%rsi
  lea    D367(%rip),%rdi
  xor    %eax,%eax
  call   <fatal@plt>
  jmp    L313
L893:
  lea    D412(%rip),%rdi
  call   <fatal@plt>
  jmp    L776
L1143:
  lea    D470(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  jmp    L204
L134:
  lea    0x140(%rsp),%rbp
L722:
  movl   $0x0,0x1c(%rsp)
  jmp    L733
L648:
  mov    $0x1,%edi
  jmp    L1070
L75:
  movl   $0x6,0x8(%rsp)
  mov    $0x12,%eax
  jmp    L1110
L440:
  cmpl   $0x0,0x10(%rsp)
  jne    L375
  xor    %edx,%edx
  jmp    L779
  nopl   0x0(%rax,%rax,1)
L514:
  cmp    $0x20,%al
  je     L341
  cmp    $0x9,%al
  jne    L642
L341:
  add    $0x1,%rdx
  cmp    $0x100,%rdx
  je     L221
L779:
  movzbl (%rbx,%rdx,1),%eax
  mov    %edx,%ecx
  test   %al,%al
  je     L564
  cmp    $0xa,%al
  je     L564
  cmp    $0xd,%al
  jne    L514
L642:
  mov    %ecx,0x20(%rsp)
  lea    0x140(%rsp),%rbp
  jmp    L818
L564:
  mov    %ecx,0x20(%rsp)
  mov    %ecx,%r13d
  lea    0x140(%rsp),%rbp
  jmp    L1228
L221:
  movl   $0x0,0x20(%rsp)
  lea    0x140(%rsp),%rbp
  jmp    L818
L375:
  mov    0x8(%rsp),%r13d
  lea    0x140(%rsp),%rbp
L1099:
  mov    0x10(%rsp),%eax
  mov    %r13d,0x8(%rsp)
  mov    %eax,0x20(%rsp)
  jmp    L818
L1016:
  call   <__stack_chk_fail@plt>
L891:
  mov    0x10(%rsp),%eax
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x20(%rsp)
  jmp    L818
L235:
  movl   $0x0,0x1c(%rsp)
  mov    $0x11,%r12d
  movl   $0xb,0x10(%rsp)
  jmp    L1099
```

tool_calls: name: unpack_data
arguments: data_tag: D838
type_infered: string
name: unpack_data
arguments: data_tag: D1092
type_infered: string
name: unpack_data
arguments: data_tag: D910
type_infered: string
name: unpack_data
arguments: data_tag: D935
type_infered: string
name: unpack_data
arguments: data_tag: D1059
type_infered: string
name: unpack_data
arguments: data_tag: D222
type_infered: string
name: unpack_data
arguments: data_tag: D450
type_infered: string
name: unpack_data
arguments: data_tag: D1147
type_infered: string
name: unpack_data
arguments: data_tag: D470
type_infered: string
name: unpack_data
arguments: data_tag: D50
type_infered: string
name: unpack_data
arguments: data_tag: D662
type_infered: string
name: unpack_data
arguments: data_tag: D85
type_infered: string
name: unpack_data
arguments: data_tag: D338
type_infered: string
name: unpack_data
arguments: data_tag: D798
type_infered: string
name: unpack_data
arguments: data_tag: D892
type_infered: string
name: unpack_data
arguments: data_tag: D503
type_infered: string
name: unpack_data
arguments: data_tag: D556
type_infered: string
name: unpack_data
arguments: data_tag: D1070
type_infered: string
name: unpack_data
arguments: data_tag: D313
type_infered: string
name: unpack_data
arguments: data_tag: D466
type_infered: string
name: unpack_data
arguments: data_tag: D451
type_infered: string
name: unpack_data
arguments: data_tag: D1078
type_infered: string
name: unpack_data
arguments: data_tag: D190
type_infered: string
name: unpack_data
arguments: data_tag: D1073
type_infered: string
name: unpack_data
arguments: data_tag: D744
type_infered: string
name: unpack_data
arguments: data_tag: D942
type_infered: string
name: unpack_data
arguments: data_tag: D826
type_infered: string
name: unpack_data
arguments: data_tag: D997
type_infered: string
name: unpack_data
arguments: data_tag: D359
type_infered: string
name: unpack_data
arguments: data_tag: D632
type_infered: string
name: unpack_data
arguments: data_tag: D992
type_infered: string
name: unpack_data
arguments: data_tag: D902
type_infered: string
name: unpack_data
arguments: data_tag: D36
type_infered: string
name: unpack_data
arguments: data_tag: D724
type_infered: string
name: unpack_data
arguments: data_tag: D819
type_infered: string
name: unpack_data
arguments: data_tag: D943
type_infered: string
name: unpack_data
arguments: data_tag: D969
type_infered: string
name: unpack_data
arguments: data_tag: D656
type_infered: string
name: unpack_data
arguments: data_tag: D479
type_infered: string
name: unpack_data
arguments: data_tag: D560
type_infered: string
name: unpack_data
arguments: data_tag: D1
type_infered: string
name: unpack_data
arguments: data_tag: D396
type_infered: string
name: unpack_data
arguments: data_tag: D1115
type_infered: string
name: unpack_data
arguments: data_tag: D365
type_infered: string
name: unpack_data
arguments: data_tag: D388
type_infered: string
name: unpack_data
arguments: data_tag: D152
type_infered: string
name: unpack_data
arguments: data_tag: D717
type_infered: string
name: unpack_data
arguments: data_tag: D637
type_infered: string
name: unpack_data
arguments: data_tag: D606
type_infered: string
name: unpack_data
arguments: data_tag: D652
type_infered: string
name: unpack_data
arguments: data_tag: D809
type_infered: string
name: unpack_data
arguments: data_tag: D296
type_infered: string
name: unpack_data
arguments: data_tag: D335
type_infered: string
name: unpack_data
arguments: data_tag: D801
type_infered: string
name: unpack_data
arguments: data_tag: D324
type_infered: string
name: unpack_data
arguments: data_tag: D514
type_infered: string
name: unpack_data
arguments: data_tag: D347
type_infered: string
name: unpack_data
arguments: data_tag: D983
type_infered: string
name: unpack_data
arguments: data_tag: D105
type_infered: string
name: unpack_data
arguments: data_tag: D49
type_infered: string
name: unpack_data
arguments: data_tag: D367
type_infered: string
name: unpack_data
arguments: data_tag: D412
type_infered: string

tool: D838: rb

tool: D1092: wb

tool: D910: wintesto.cmd

tool: D935: @echo off

tool: D1059: REM ==================================

tool: D222: REM

tool: D450: GOTO :EOF

tool: D1147: REM Simple Windows NT/2000/XP .cmd version of GPSBabel testo script

tool: 

tool: D50: SET GPSBABEL_FREEZE_TIME=y

tool: D662: SET TMPDIR=%TEMP%\WINTESTO

tool: D85: MKDIR %TMPDIR% 2>NUL:

tool: D338: GOTO :REALSTART

tool: D798: :CommonCOMPARE

tool: D892: SET PARAM1=%2

tool: D503: SET PARAM2=%3

tool: D556: REM Test if param3 was a dir rather than a file, if so add a \* to make fc work

tool: D1070: FOR %%A IN (%3) DO IF "d--------"=="%%~aA" SET PARAM2=%3\*

tool: D313: FOR /f "delims=" %%a IN ('fc %PARAM1% %PARAM2%') DO IF "x%%a"=="xFC: no differences encountered" GOTO :EOF

tool: D466: REM Show the first 5 lines of difference

tool: D451: fc %1 /LB5 %PARAM1% %PARAM2%

tool: D1078: if errorlevel 1 ECHO %* are not the same (first 5 differences above) - pausing. ^C to quit if required

tool: D190: if errorlevel 1 PAUSE

tool: D1073: :COMPARE

tool: D744: CALL :CommonCOMPARE /L %1 %2

tool: D942: :BINCOMPARE

tool: D826: CALL :CommonCOMPARE /B %1 %2

tool: D997: :SORTandCOMPARE

tool: D359: SORT <%1 >%TMPDIR%\s1

tool: D632: SORT <%2 >%TMPDIR%\s2

tool: D992: CALL :COMPARE %TMPDIR%\s1 %TMPDIR%\s2

tool: D902: :REALSTART

tool: D36: PNAME=${PNAME:-

tool: D724: rm -f 

tool: D819: @echo.

tool: D943: DEL 

tool: D969: ${PNAME} 

tool: D656: compare 

tool: D479: CALL :COMPARE 

tool: D560: bincompare 

tool: D1: sort_and_compare 

tool: D396: echo "

tool: D1115: cat 

tool: D365: sed '/

tool: D388: MkWinTesto: wintesto.cmd for writing


tool: D152: ECHO 

tool: D717: /d'

tool: D637: FINDSTR /V /R /C:"

tool: D606: "

tool: D652: CALL :SORTandCOMPARE 

tool: D809: CALL :BINCOMPARE 

tool: D296: %PNAME% 

tool: D335: TYPE 

tool: D801: ${TMPDIR}

tool: D324: %TMPDIR%

tool: D514: SET PNAME=

tool: D347: IF NOT EXIST %PNAME%.EXE ECHO Can't find %PNAME%&& GOTO :EOF

tool: D983:  

tool: D105: @echo on

tool: D49: @echo Testing...

tool: D367: MkWinTesto: %s for reading


tool: D412: MkWinTesto: needs a single parameter, the (testo) file to convert


assistant: ```c
int main(int argc, char *argv[]) {
  char acLineIn[256];
  char acLineOut[256];
  char *pcTerm;
  int iThisChar;
  int iStart;
  int iTarget;
  int iTranslateQuotes;
  int iQuoteCount;
  int iPrevLineContinues = 0;
  int iEchoLevel = 0;
  FILE *pfTestoIn;
  FILE *pfTestoOut;
  if (argc < 2) {
    fatal("MkWinTesto"
          ": needs a single parameter, the (testo) file to convert\n");
  }
  pfTestoIn = fopen(argv[1], "rb");
  if (pfTestoIn == NULL) {
    fatal("MkWinTesto"
          ": %s for reading\n",
          argv[1]);
  } else {
    pfTestoOut = fopen("wintesto.cmd", "wb");
    if (pfTestoOut == NULL) {
      fatal("MkWinTesto"
            ": wintesto.cmd for writing\n");
    } else {
      f_outputLine(pfTestoOut, "@echo off");
      f_outputLine(pfTestoOut, "REM");
      f_outputLine(pfTestoOut, "REM Simple Windows NT/2000/XP .cmd version of GPSBabel testo script");
      f_outputLine(pfTestoOut, "REM");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "SET GPSBABEL_FREEZE_TIME=y");
      f_outputLine(pfTestoOut, "SET TMPDIR=%TEMP%\\WINTESTO");
      f_outputLine(pfTestoOut, "MKDIR %TMPDIR% 2>NUL:");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "GOTO :REALSTART");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "REM ==================================");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, ":CommonCOMPARE");
      f_outputLine(pfTestoOut, "SET PARAM1=%2");
      f_outputLine(pfTestoOut, "SET PARAM2=%3");
      f_outputLine(pfTestoOut, "REM Test if param3 was a dir rather than a file, if so add a \\* to make fc work");
      f_outputLine(pfTestoOut, "FOR %%A IN (%3) DO IF \"d--------\"==\"%%~aA\" SET PARAM2=%3\\*");
      f_outputLine(pfTestoOut, "FOR /f \"delims=\" %%a IN ('fc %PARAM1% %PARAM2%') DO IF \"x%%a\"==\"xFC: no differences encountered\" GOTO :EOF");
      f_outputLine(pfTestoOut, "REM Show the first 5 lines of difference");
      f_outputLine(pfTestoOut, "fc %1 /LB5 %PARAM1% %PARAM2%");
      f_outputLine(pfTestoOut, "if errorlevel 1 ECHO %* are not the same (first 5 differences above) - pausing. ^C to quit if required");
      f_outputLine(pfTestoOut, "if errorlevel 1 PAUSE");
      f_outputLine(pfTestoOut, "GOTO :EOF");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "REM ==================================");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, ":COMPARE");
      f_outputLine(pfTestoOut, "CALL :CommonCOMPARE /L %1 %2");
      f_outputLine(pfTestoOut, "GOTO :EOF");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "REM ==================================");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, ":BINCOMPARE");
      f_outputLine(pfTestoOut, "CALL :CommonCOMPARE /B %1 %2");
      f_outputLine(pfTestoOut, "GOTO :EOF");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "REM ==================================");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, ":SORTandCOMPARE");
      f_outputLine(pfTestoOut, "SORT <%1 >%TMPDIR%\\s1");
      f_outputLine(pfTestoOut, "SORT <%2 >%TMPDIR%\\s2");
      f_outputLine(pfTestoOut, "CALL :COMPARE %TMPDIR%\\s1 %TMPDIR%\\s2");
      f_outputLine(pfTestoOut, "GOTO :EOF");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, "REM ==================================");
      f_outputLine(pfTestoOut, "");
      f_outputLine(pfTestoOut, ":REALSTART");
      f_outputLine(pfTestoOut, "");
      while (!feof(pfTestoIn)) {
        fgets(acLineIn, 256 - 1, pfTestoIn);
        if (acLineIn == NULL)
          break;
        if (acLineIn[0] == '#') {
          acLineOut[0] = '\0';
          strcat(acLineOut, "REM");
          iTarget = 3;
          if (acLineIn[1] != ' ') {
            strcat(acLineOut, " ");
            iTarget++;
          }
          for (iThisChar = 1; iThisChar < 256; iThisChar++) {
            if ((acLineIn[iThisChar] == '\0') || (acLineIn[iThisChar] == '\n') || ((acLineIn[iThisChar] == '\r') && (acLineIn[iThisChar + 1] == '\n'))) {
              acLineOut[iThisChar + iTarget - 1] = '\0';
              break;
            }
            acLineOut[iThisChar + iTarget - 1] = acLineIn[iThisChar];
          }
          if (iEchoLevel > 0) {
            f_outputLine(pfTestoOut, "@echo off");
            f_outputLine(pfTestoOut, "@echo.");
            iEchoLevel = 0;
          }
          iPrevLineContinues = f_outputLine(pfTestoOut, acLineOut);
        } else if (strncmp("PNAME=${PNAME:-", acLineIn, 15) == 0) {
          acLineOut[0] = '\0';
          strcat(acLineOut, "SET PNAME=");
          for (iThisChar = 15; iThisChar < 256; iThisChar++) {
            if ((acLineIn[iThisChar] == '}') || (acLineIn[iThisChar] == '\0') || (acLineIn[iThisChar] == '\n') || ((acLineIn[iThisChar] == '\r') && (acLineIn[iThisChar + 1] == '\n'))) {
              acLineOut[iThisChar - 5] = '\0';
              break;
            }
            if (acLineIn[iThisChar] == '/') {
              acLineOut[iThisChar - 5] = '\\';
            } else {
              acLineOut[iThisChar - 5] = acLineIn[iThisChar];
            }
          }
          if (iEchoLevel > 0) {
            f_outputLine(pfTestoOut, "@echo off");
            f_outputLine(pfTestoOut, "@echo.");
            iEchoLevel = 0;
          }
          iPrevLineContinues = f_outputLine(pfTestoOut, acLineOut);
          if (iPrevLineContinues == 1)
            f_outputLine(pfTestoOut, "");
          iPrevLineContinues = f_outputLine(pfTestoOut, "IF NOT EXIST %PNAME%.EXE ECHO Can't find %PNAME%&& GOTO :EOF");
        } else {
          iStart = 0;
          iTarget = 0;
          iTranslateQuotes = 0;
          iQuoteCount = 0;
          acLineOut[0] = '\0';
          if (strncmp("rm -f ", acLineIn, 6) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 6;
            strcat(acLineOut, "DEL ");
            iTarget = 4;
          }
          if (strncmp("${PNAME} ", acLineIn, 9) == 0) {
            iStart = 9;
            iEchoLevel++;
            strcat(acLineOut, "%PNAME% ");
            iTarget = 8;
          }
          if (strncmp("compare ", acLineIn, 8) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 8;
            strcat(acLineOut, "CALL :COMPARE ");
            iTarget = 14;
          }
          if (strncmp("bincompare ", acLineIn, 11) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 11;
            strcat(acLineOut, "CALL :BINCOMPARE ");
            iTarget = 17;
          }
          if (strncmp("sort_and_compare ", acLineIn, 17) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 17;
            strcat(acLineOut, "CALL :SORTandCOMPARE ");
            iTarget = 21;
          }
          if (strncmp("echo \"", acLineIn, 6) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 6;
            strcat(acLineOut, "ECHO ");
            iTarget = 5;
            iTranslateQuotes = 1;
            iQuoteCount = 1;
          }
          if (strncmp("cat ", acLineIn, 4) == 0) {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            iStart = 4;
            strcat(acLineOut, "TYPE ");
            iTarget = 5;
          }
          if (strncmp("sed '/", acLineIn, 6) == 0) {
            pcTerm = strstr(acLineIn + 6, "/d'");
            if ((pcTerm != NULL) && ((pcTerm - acLineIn) < 256)) {
              if (iEchoLevel > 0) {
                f_outputLine(pfTestoOut, "@echo off");
                f_outputLine(pfTestoOut, "@echo.");
                iEchoLevel = 0;
              }
              iStart = 6;
              strcat(acLineOut, "FINDSTR /V /R /C:\"");
              iTarget = 18;
              for (iThisChar = 6; iThisChar < (pcTerm - acLineIn); iThisChar++) {
                acLineOut[iTarget++] = acLineIn[iStart++];
              }
              acLineOut[iTarget++] = (char)0;
              strcat(acLineOut, "\"");
              iStart += 3;
            }
          }
          if ((iStart > 0) || (iPrevLineContinues == 1)) {
            if (iStart == 0) {
              for (iThisChar = 0; iThisChar < 256; iThisChar++) {
                if ((acLineIn[iThisChar] == '\0') || (acLineIn[iThisChar] == '\n') || ((acLineIn[iThisChar] == '\r') && (acLineIn[iThisChar + 1] == '\n'))) {
                  iStart = iThisChar;
                  break;
                }
                if ((acLineIn[iThisChar] != ' ') && (acLineIn[iThisChar] != '\t')) {
                  iStart = iThisChar;
                  break;
                }
              }
            }
            for (iThisChar = iStart; iThisChar < 256; iThisChar++) {
              if ((acLineIn[iThisChar] == '\0') || (acLineIn[iThisChar] == '\n') || ((acLineIn[iThisChar] == '\r') && (acLineIn[iThisChar + 1] == '\n'))) {
                acLineOut[iTarget + iThisChar - iStart] = '\0';
                break;
              }
              if (acLineIn[iThisChar] == '"') {
                iQuoteCount = (iQuoteCount > 0) ? 0 : 1;
                iTarget--;
                continue;
              }
              if (acLineIn[iThisChar] == '%') {
                if (iQuoteCount == 1) {
                  acLineOut[iTarget + iThisChar - iStart] = '%';
                  iTarget++;
                }
                acLineOut[iTarget + iThisChar - iStart] = '%';
                continue;
              }
              if (acLineIn[iThisChar] == '>') {
                if (acLineIn[iThisChar - 1] == ' ') {
                  iTarget--;
                }
                acLineOut[iTarget + iThisChar - iStart] = '>';
                continue;
              }
              if (strncmp("${TMPDIR}", acLineIn + iThisChar, 9) == 0) {
                strcpy(acLineOut + iTarget + iThisChar - iStart, "%TMPDIR%");
                iTarget--;
                iThisChar += 8;
              } else if (strncmp("${PNAME} ", acLineIn + iThisChar, 9) == 0) {
                strcpy(acLineOut + iTarget + iThisChar - iStart, "%PNAME% ");
                iTarget--;
                iThisChar += 8;
              } else if (acLineIn[iThisChar] == '/') {
                acLineOut[iTarget + iThisChar - iStart] = '\\';
              } else {
                acLineOut[iTarget + iThisChar - iStart] = acLineIn[iThisChar];
              }
            }
            if ((iEchoLevel == 1) && (iPrevLineContinues != 1)) {
              f_outputLine(pfTestoOut, "@echo on");
              f_outputLine(pfTestoOut, "@echo Testing...");
            }
            iPrevLineContinues = f_outputLine(pfTestoOut, acLineOut);
          } else {
            if (iEchoLevel > 0) {
              f_outputLine(pfTestoOut, "@echo off");
              f_outputLine(pfTestoOut, "@echo.");
              iEchoLevel = 0;
            }
            if ((acLineIn[0] == '\n') || (acLineIn[0] == '\0') || ((acLineIn[0] == '\r') && (acLineIn[1] == '\n') && (acLineIn[2] == '\0'))) {
              iPrevLineContinues = f_outputLine(pfTestoOut, "");
            }
          }
        }
      }
      fclose(pfTestoIn);
      fclose(pfTestoOut);
    }
  }
}
```