user: 请将以下的汇编代码转换成C语言代码:

```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    L772
L830:
  mov    0x8(%rbx),%rdi
  lea    D779(%rip),%rsi
  call   <fopen@plt>
  mov    %rax,%r15
  test   %rax,%rax
  je     L982
  lea    D706(%rip),%rsi
  lea    D314(%rip),%rdi
  call   <fopen@plt>
  mov    %rax,%r14
  test   %rax,%rax
  je     L108
  lea    D669(%rip),%rsi
  mov    %rax,%rdi
  lea    D1130(%rip),%rbp
  call   <f_outputLine@plt>
  lea    D1134(%rip),%rsi
  mov    %r14,%rdi
  lea    D726(%rip),%r12
  call   <f_outputLine@plt>
  lea    D703(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1134(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D343(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D954(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D259(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D609(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D315(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D124(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D340(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D810(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D128(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1055(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1072(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D718(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1085(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D352(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D48(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D969(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D279(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1112(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D55(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D639(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D125(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %r12,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D856(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  movl   $0x0,0x18(%rsp)
  nopl   0x0(%rax,%rax,1)
L473:
  mov    %r15,%rdi
  call   <feof@plt>
  mov    %eax,%r13d
  test   %eax,%eax
  jne    L24
L1127:
  lea    0x40(%rsp),%rbx
  mov    %r15,%rdx
  mov    $0xff,%esi
  mov    %rbx,%rdi
  call   <fgets@plt>
  cmpb   $0x23,0x40(%rsp)
  je     L1062
  mov    $0xf,%edx
  mov    %rbx,%rsi
  lea    D513(%rip),%rdi
  call   <strncmp@plt>
  movb   $0x0,0x140(%rsp)
  test   %rax,%rax
  je     L419
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D456(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L279
  mov    0x8(%rsp),%esi
  test   %esi,%esi
  je     L87
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L87:
  lea    0x140(%rsp),%rbp
  lea    D720(%rip),%rsi
  mov    $0x4,%r12d
  mov    %rbp,%rdi
  call   <strcat@plt>
  movl   $0x0,0x8(%rsp)
  movl   $0x6,0x10(%rsp)
L703:
  mov    $0x9,%edx
  mov    %rbx,%rsi
  lea    D241(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L722
  mov    $0x8,%edx
  mov    %rbx,%rsi
  lea    D1161(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L171
  mov    0x8(%rsp),%ecx
  lea    0x140(%rsp),%rbp
  test   %ecx,%ecx
  jne    L1084
L630:
  lea    D916(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D1101(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L373
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D734(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L268
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D700(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L428
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D432(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L494
  movl   $0x0,0x8(%rsp)
  mov    $0xe,%r12d
  movl   $0x8,0x10(%rsp)
L700:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D50(%rip),%rdi
  call   <strncmp@plt>
  movl   $0x0,0x1c(%rsp)
  test   %rax,%rax
  je     L542
L813:
  mov    0x10(%rsp),%edx
  test   %edx,%edx
  jne    L534
  cmpl   $0x1,0x18(%rsp)
  je     L544
  mov    0x8(%rsp),%eax
  test   %eax,%eax
  je     L27
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L27:
  movzbl 0x40(%rsp),%eax
  cmp    $0xa,%al
  je     L129
  test   %al,%al
  je     L129
  movl   $0x0,0x8(%rsp)
  cmp    $0xd,%al
  jne    L473
  cmpb   $0xa,0x41(%rsp)
  jne    L473
  cmpb   $0x0,0x42(%rsp)
  jne    L473
L129:
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x18(%rsp)
  jmp    L473
L108:
  lea    D971(%rip),%rdi
  xor    %eax,%eax
  call   <fatal@plt>
L635:
  mov    0x248(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L219
  add    $0x258,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L279:
  movl   $0x0,0x10(%rsp)
  xor    %r12d,%r12d
  jmp    L703
L1102:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D700(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L152
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L428
L1091:
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L428:
  lea    D66(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D432(%rip),%rdi
  call   <strncmp@plt>
  movl   $0x1,0x1c(%rsp)
  test   %rax,%rax
  je     L106
  movl   $0x6,0x10(%rsp)
  mov    $0x5,%r12d
L140:
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D50(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L445
  lea    0x46(%rsp),%r8
  lea    D806(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x8(%rsp)
  call   <strstr@plt>
  mov    0x8(%rsp),%r8
  test   %rax,%rax
  je     L854
  movl   $0x0,0x8(%rsp)
L1215:
  sub    %rbx,%rax
  mov    %rax,%r13
  cmp    $0xff,%rax
  jg     L813
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L1169
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  mov    %r8,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    0x8(%rsp),%r8
L1169:
  lea    D622(%rip),%rsi
  mov    %rbp,%rdi
  mov    %r8,0x8(%rsp)
  call   <strcat@plt>
  cmp    $0x6,%r13
  jle    L19
  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)
L1105:
  lea    0x1(%rax),%r12d
  lea    D630(%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    L209
L310:
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D734(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L1102
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L268
L317:
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L268:
  lea    D452(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D700(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L428
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D432(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L494
  movl   $0x0,0x1c(%rsp)
  mov    $0x15,%r12d
  movl   $0x11,0x10(%rsp)
  jmp    L140
  nopl   0x0(%rax)
L171:
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D1101(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L310
  cmpl   $0x0,0x8(%rsp)
  lea    0x140(%rsp),%rbp
  je     L373
L102:
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L373:
  lea    D606(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x11,%edx
  mov    %rbx,%rsi
  lea    D734(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L268
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D700(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L428
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D432(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L494
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D50(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L426
  movl   $0x0,0x8(%rsp)
  mov    $0x11,%r12d
  movl   $0xb,0x10(%rsp)
L542:
  lea    0x46(%rsp),%r8
  lea    D806(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x20(%rsp)
  call   <strstr@plt>
  movl   $0x0,0x1c(%rsp)
  mov    0x20(%rsp),%r8
  test   %rax,%rax
  je     L813
  jmp    L1215
  nopw   0x0(%rax,%rax,1)
L722:
  lea    0x140(%rsp),%rbp
  lea    D167(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x8,%edx
  mov    %rbx,%rsi
  lea    D1161(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L1084
  mov    $0xb,%edx
  mov    %rbx,%rsi
  lea    D1101(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L102
  mov    $0x11,%edx
  mov    %rbx,%rsi
  addl   $0x1,0x8(%rsp)
  lea    D734(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L317
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D700(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L1091
  movl   $0x9,0x10(%rsp)
  mov    $0x8,%r12d
L152:
  mov    $0x4,%edx
  mov    %rbx,%rsi
  lea    D432(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L700
  cmpl   $0x0,0x8(%rsp)
  je     L868
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  lea    0x140(%rsp),%rbp
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x1c(%rsp)
L106:
  lea    D808(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x6,%edx
  mov    %rbx,%rsi
  lea    D50(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L440
  lea    0x46(%rsp),%r8
  lea    D806(%rip),%rsi
  mov    %r8,%rdi
  mov    %r8,0x8(%rsp)
  call   <strstr@plt>
  test   %rax,%rax
  je     L440
  sub    %rbx,%rax
  mov    0x8(%rsp),%r8
  cmp    $0xff,%rax
  mov    %rax,%r13
  jle    L1169
L440:
  movl   $0x0,0x8(%rsp)
  mov    $0x5,%r12d
  movl   $0x4,0x20(%rsp)
L209:
  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    L353
  nopl   (%rax)
L383:
  cmp    $0x22,%al
  je     L486
  cmp    $0x25,%al
  je     L376
  cmp    $0x3e,%al
  jne    L942
  lea    -0x1(%r15),%eax
  cltq
  cmpb   $0x20,0x40(%rsp,%rax,1)
  jne    L185
  sub    $0x1,%r14d
L185:
  lea    (%r14,%r15,1),%eax
  sub    %ebx,%eax
  cltq
  movb   $0x3e,0x140(%rsp,%rax,1)
L1197:
  add    $0x1,%r15d
  cmp    $0xff,%r15d
  jg     L377
L353:
  movslq %r15d,%r12
  movzbl 0x40(%rsp,%r12,1),%eax
  test   %al,%al
  je     L1158
  cmp    $0xa,%al
  je     L1158
  cmp    $0xd,%al
  jne    L383
  lea    0x1(%r15),%eax
  cltq
  cmpb   $0xa,0x40(%rsp,%rax,1)
  je     L1158
L942:
  lea    0x0(%r13,%r12,1),%rbp
  mov    $0x9,%edx
  lea    D272(%rip),%rdi
  mov    %rbp,%rsi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L298
  movslq %r14d,%rdi
  add    $0x8,%r15d
  lea    D113(%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    L353
L377:
  mov    0x30(%rsp),%r15
  mov    0x38(%rsp),%r14
  mov    0x10(%rsp),%rbp
  jmp    L616
  nopl   0x0(%rax,%rax,1)
L298:
  mov    $0x9,%edx
  mov    %rbp,%rsi
  lea    D241(%rip),%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L503
  lea    (%r15,%r14,1),%eax
  movzbl 0x40(%rsp,%r12,1),%edx
  sub    %ebx,%eax
  cltq
  cmp    $0x2f,%dl
  je     L1132
  mov    %dl,0x140(%rsp,%rax,1)
  jmp    L1197
  nopl   0x0(%rax,%rax,1)
L486:
  xorl   $0x1,0x1c(%rsp)
  sub    $0x1,%r14d
  jmp    L1197
  xchg   %ax,%ax
L376:
  cmpl   $0x1,0x1c(%rsp)
  jne    L82
  lea    (%r15,%r14,1),%eax
  add    $0x1,%r14d
  sub    %ebx,%eax
  cltq
  movb   $0x25,0x140(%rsp,%rax,1)
L82:
  lea    (%r14,%r15,1),%eax
  sub    %ebx,%eax
  cltq
  movb   $0x25,0x140(%rsp,%rax,1)
  jmp    L1197
L419:
  lea    0x140(%rsp),%rbp
  lea    D19(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  mov    $0x10,%edx
  lea    0x3f(%rsp),%r8
  mov    $0x5c,%r10d
  lea    0x13a(%rsp),%r9
  jmp    L271
  nopl   0x0(%rax)
L198:
  cmp    $0x2f,%al
  cmove  %r10d,%eax
L537:
  mov    %al,(%r9,%rdx,1)
  add    $0x1,%rdx
  cmp    $0x101,%rdx
  je     L816
L271:
  movzbl (%r8,%rdx,1),%eax
  lea    -0x6(%rdx),%edi
  cmp    $0x7d,%al
  sete   %cl
  test   %al,%al
  sete   %sil
  or     %sil,%cl
  jne    L1111
  cmp    $0xa,%al
  je     L1111
  cmp    $0xd,%al
  jne    L198
  cmpb   $0xa,(%rbx,%rdx,1)
  jne    L537
  nopl   (%rax)
L1111:
  movslq %edi,%rdi
  movb   $0x0,0x140(%rsp,%rdi,1)
L816:
  mov    0x8(%rsp),%edi
  test   %edi,%edi
  je     L971
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L971:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  cmp    $0x1,%eax
  je     L61
L404:
  lea    D558(%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     L1127
L24:
  mov    %r15,%rdi
  call   <fclose@plt>
  mov    %r14,%rdi
  call   <fclose@plt>
  jmp    L635
L1062:
  lea    0x140(%rsp),%rbp
  lea    D1134(%rip),%rsi
  movb   $0x0,0x140(%rsp)
  mov    %rbp,%rdi
  call   <strcat@plt>
  movzbl 0x41(%rsp),%edx
  mov    $0x3,%r9d
  cmp    $0x20,%dl
  je     L18
  lea    D988(%rip),%rsi
  mov    %rbp,%rdi
  call   <strcat@plt>
  movzbl 0x41(%rsp),%edx
  mov    $0x4,%r9d
  cmp    $0xa,%dl
  je     L877
  test   %dl,%dl
  je     L877
L18:
  movslq %r9d,%rsi
  mov    $0x2,%eax
  add    %rbp,%rsi
  jmp    L411
  nopw   0x0(%rax,%rax,1)
L315:
  mov    %cl,-0x2(%rsi,%rax,1)
  add    $0x1,%rax
  test   %dl,%dl
  je     L821
  cmp    $0xa,%dl
  je     L821
L411:
  mov    %edx,%ecx
  lea    -0x1(%rax),%r8d
  movzbl (%rbx,%rax,1),%edx
  mov    %eax,%edi
  cmp    $0xd,%cl
  jne    L315
  cmp    $0xa,%dl
  jne    L315
  mov    %r8d,%edi
L821:
  lea    -0x1(%r9,%rdi,1),%eax
  cmpl   $0x0,0x8(%rsp)
  cltq
  movb   $0x0,0x140(%rsp,%rax,1)
  je     L301
  lea    D669(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L301:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x18(%rsp)
  jmp    L473
L1084:
  mov    %r14,%rdi
  lea    D669(%rip),%rsi
  call   <f_outputLine@plt>
  lea    D321(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  jmp    L630
L503:
  movslq %r14d,%rdi
  lea    D167(%rip),%rsi
  sub    $0x1,%r14d
  add    $0x8,%r15d
  add    %r12,%rdi
  sub    0x28(%rsp),%rdi
  add    0x10(%rsp),%rdi
  call   <strcpy@plt>
  jmp    L1197
L1132:
  movb   $0x5c,0x140(%rsp,%rax,1)
  jmp    L1197
L1158:
  mov    %r14d,%r12d
  mov    %r15d,%r13d
  mov    0x38(%rsp),%r14
  mov    0x30(%rsp),%r15
  mov    0x10(%rsp),%rbp
L186:
  lea    (%r12,%r13,1),%ecx
  sub    0x20(%rsp),%ecx
  movslq %ecx,%rax
  movb   $0x0,0x140(%rsp,%rax,1)
L616:
  cmpl   $0x1,0x8(%rsp)
  jne    L790
  cmpl   $0x1,0x18(%rsp)
  je     L790
  lea    D900(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  lea    D1096(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
L790:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  mov    %eax,0x18(%rsp)
  jmp    L473
L982:
  mov    0x8(%rbx),%rsi
  lea    D444(%rip),%rdi
  xor    %eax,%eax
  call   <fatal@plt>
  jmp    L635
L772:
  lea    D347(%rip),%rdi
  call   <fatal@plt>
  jmp    L830
L61:
  lea    D798(%rip),%rsi
  mov    %r14,%rdi
  call   <f_outputLine@plt>
  jmp    L404
L868:
  lea    0x140(%rsp),%rbp
L494:
  movl   $0x0,0x1c(%rsp)
  jmp    L106
L877:
  mov    $0x1,%edi
  jmp    L821
L19:
  movl   $0x6,0x8(%rsp)
  mov    $0x12,%eax
  jmp    L1105
L544:
  cmpl   $0x0,0x10(%rsp)
  jne    L534
  xor    %edx,%edx
  jmp    L914
  nopl   0x0(%rax,%rax,1)
L679:
  cmp    $0x20,%al
  je     L25
  cmp    $0x9,%al
  jne    L70
L25:
  add    $0x1,%rdx
  cmp    $0x100,%rdx
  je     L1017
L914:
  movzbl (%rbx,%rdx,1),%eax
  mov    %edx,%ecx
  test   %al,%al
  je     L11
  cmp    $0xa,%al
  je     L11
  cmp    $0xd,%al
  jne    L679
L70:
  mov    %ecx,0x20(%rsp)
  lea    0x140(%rsp),%rbp
  jmp    L209
L11:
  mov    %ecx,0x20(%rsp)
  mov    %ecx,%r13d
  lea    0x140(%rsp),%rbp
  jmp    L186
L1017:
  movl   $0x0,0x20(%rsp)
  lea    0x140(%rsp),%rbp
  jmp    L209
L534:
  mov    0x8(%rsp),%r13d
  lea    0x140(%rsp),%rbp
L854:
  mov    0x10(%rsp),%eax
  mov    %r13d,0x8(%rsp)
  mov    %eax,0x20(%rsp)
  jmp    L209
L219:
  call   <__stack_chk_fail@plt>
L445:
  mov    0x10(%rsp),%eax
  movl   $0x0,0x8(%rsp)
  mov    %eax,0x20(%rsp)
  jmp    L209
L426:
  movl   $0x0,0x1c(%rsp)
  mov    $0x11,%r12d
  movl   $0xb,0x10(%rsp)
  jmp    L854
```

tool_calls: name: read_data
arguments: label: D779
type_guessed: string
name: read_data
arguments: label: D706
type_guessed: string
name: read_data
arguments: label: D314
type_guessed: string
name: read_data
arguments: label: D669
type_guessed: string
name: read_data
arguments: label: D1130
type_guessed: string
name: read_data
arguments: label: D1134
type_guessed: string
name: read_data
arguments: label: D726
type_guessed: string
name: read_data
arguments: label: D703
type_guessed: string
name: read_data
arguments: label: D798
type_guessed: string
name: read_data
arguments: label: D343
type_guessed: string
name: read_data
arguments: label: D954
type_guessed: string
name: read_data
arguments: label: D259
type_guessed: string
name: read_data
arguments: label: D609
type_guessed: string
name: read_data
arguments: label: D315
type_guessed: string
name: read_data
arguments: label: D124
type_guessed: string
name: read_data
arguments: label: D340
type_guessed: string
name: read_data
arguments: label: D810
type_guessed: string
name: read_data
arguments: label: D128
type_guessed: string
name: read_data
arguments: label: D1055
type_guessed: string
name: read_data
arguments: label: D1072
type_guessed: string
name: read_data
arguments: label: D718
type_guessed: string
name: read_data
arguments: label: D1085
type_guessed: string
name: read_data
arguments: label: D352
type_guessed: string
name: read_data
arguments: label: D48
type_guessed: string
name: read_data
arguments: label: D969
type_guessed: string
name: read_data
arguments: label: D279
type_guessed: string
name: read_data
arguments: label: D1112
type_guessed: string
name: read_data
arguments: label: D55
type_guessed: string
name: read_data
arguments: label: D1
type_guessed: string
name: read_data
arguments: label: D639
type_guessed: string
name: read_data
arguments: label: D125
type_guessed: string
name: read_data
arguments: label: D856
type_guessed: string
name: read_data
arguments: label: D513
type_guessed: string
name: read_data
arguments: label: D456
type_guessed: string
name: read_data
arguments: label: D321
type_guessed: string
name: read_data
arguments: label: D720
type_guessed: string
name: read_data
arguments: label: D241
type_guessed: string
name: read_data
arguments: label: D1161
type_guessed: string
name: read_data
arguments: label: D916
type_guessed: string
name: read_data
arguments: label: D1101
type_guessed: string
name: read_data
arguments: label: D734
type_guessed: string
name: read_data
arguments: label: D700
type_guessed: string
name: read_data
arguments: label: D432
type_guessed: string
name: read_data
arguments: label: D50
type_guessed: string
name: read_data
arguments: label: D971
type_guessed: string
name: read_data
arguments: label: D66
type_guessed: string
name: read_data
arguments: label: D806
type_guessed: string
name: read_data
arguments: label: D622
type_guessed: string
name: read_data
arguments: label: D630
type_guessed: string
name: read_data
arguments: label: D452
type_guessed: string
name: read_data
arguments: label: D606
type_guessed: string
name: read_data
arguments: label: D167
type_guessed: string
name: read_data
arguments: label: D808
type_guessed: string
name: read_data
arguments: label: D272
type_guessed: string
name: read_data
arguments: label: D113
type_guessed: string
name: read_data
arguments: label: D19
type_guessed: string
name: read_data
arguments: label: D558
type_guessed: string
name: read_data
arguments: label: D988
type_guessed: string
name: read_data
arguments: label: D900
type_guessed: string
name: read_data
arguments: label: D1096
type_guessed: string
name: read_data
arguments: label: D444
type_guessed: string
name: read_data
arguments: label: D347
type_guessed: string

tool: D779: rb

tool: D706: wb

tool: D314: wintesto.cmd

tool: D669: @echo off

tool: D1130: REM ==================================

tool: D1134: REM

tool: D726: GOTO :EOF

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

tool: 

tool: D343: SET GPSBABEL_FREEZE_TIME=y

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

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

tool: D609: GOTO :REALSTART

tool: D315: :CommonCOMPARE

tool: D124: SET PARAM1=%2

tool: D340: SET PARAM2=%3

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

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

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

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

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

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

tool: D352: if errorlevel 1 PAUSE

tool: D48: :COMPARE

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

tool: D279: :BINCOMPARE

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

tool: D55: :SORTandCOMPARE

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

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

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

tool: D856: :REALSTART

tool: D513: PNAME=${PNAME:-

tool: D456: rm -f 

tool: D321: @echo.

tool: D720: DEL 

tool: D241: ${PNAME} 

tool: D1161: compare 

tool: D916: CALL :COMPARE 

tool: D1101: bincompare 

tool: D734: sort_and_compare 

tool: D700: echo "

tool: D432: cat 

tool: D50: sed '/

tool: D971: MkWinTesto: wintesto.cmd for writing


tool: D66: ECHO 

tool: D806: /d'

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

tool: D630: "

tool: D452: CALL :SORTandCOMPARE 

tool: D606: CALL :BINCOMPARE 

tool: D167: %PNAME% 

tool: D808: TYPE 

tool: D272: ${TMPDIR}

tool: D113: %TMPDIR%

tool: D19: SET PNAME=

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

tool: D988:  

tool: D900: @echo on

tool: D1096: @echo Testing...

tool: D444: MkWinTesto: %s for reading


tool: D347: 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);
    }
  }
}
```