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

```asm
<asc2c>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xa0,%rsp
  mov    %rdi,-0x88(%rbp)
  mov    %rsi,-0x90(%rbp)
  mov    %edx,-0x94(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L146
L37:
  movl   $0x0,-0x74(%rbp)
  jmp    L65
L192:
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    $0x5c,%eax
  je     L107
  cmp    $0x5c,%eax
  jg     L12
  cmp    $0x22,%eax
  je     L16
  cmp    $0x22,%eax
  jg     L12
  cmp    $0x20,%eax
  je     L1
  cmp    $0x20,%eax
  jg     L12
  cmp    $0xa,%eax
  jg     L86
  cmp    $0x9,%eax
  jge    L1
  jmp    L12
L86:
  cmp    $0xd,%eax
  jne    L12
L1:
  cmpl   $0x0,-0x94(%rbp)
  je     L266
  cmpb   $0x20,-0x75(%rbp)
  je     L290
  cmpb   $0x3e,-0x75(%rbp)
  je     L290
  mov    -0x90(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
L290:
  movb   $0x20,-0x75(%rbp)
  jmp    L244
L266:
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  movsbl %al,%eax
  cmp    $0x20,%eax
  je     L153
  cmp    $0x20,%eax
  jg     L244
  cmp    $0x9,%eax
  je     L71
  cmp    $0xa,%eax
  je     L117
  jmp    L244
L153:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x20,%edi
  call   <fputc@plt>
  jmp    L128
L71:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rsi
  mov    $0x9,%edi
  call   <fputc@plt>
  jmp    L128
L117:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x4,%edx
  mov    $0x1,%esi
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  nop
L128:
  jmp    L244
L107:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  mov    %al,-0x75(%rbp)
  jmp    L200
L16:
  mov    -0x90(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2,%edx
  mov    $0x1,%esi
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  mov    %al,-0x75(%rbp)
  jmp    L200
L12:
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  movsbl %al,%eax
  mov    -0x90(%rbp),%rdx
  mov    %rdx,%rsi
  mov    %eax,%edi
  call   <fputc@plt>
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  mov    %al,-0x75(%rbp)
  jmp    L200
L244:
  nop
L200:
  addl   $0x1,-0x74(%rbp)
L65:
  mov    -0x74(%rbp),%eax
  cltq
  movzbl -0x70(%rbp,%rax,1),%eax
  test   %al,%al
  jne    L192
L146:
  mov    -0x88(%rbp),%rdx
  lea    -0x70(%rbp),%rax
  mov    $0x64,%esi
  mov    %rax,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L37
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L17
  call   <__stack_chk_fail@plt>
L17:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D17
type_guessed: string
name: parse_data
arguments: label: D2
type_guessed: string
name: parse_data
arguments: label: D11
type_guessed: string

tool: D17: \n\


tool: D2: \\

tool: D11: \"

assistant: ```c
void asc2c(FILE *file_in, FILE *file_out, int cmpr) {
  char buf[100];
  char prev;
  int bpos;
  while (fgets(buf, 100, file_in) != NULL) {
    bpos = 0;
    while (buf[bpos]) {
      switch (buf[bpos]) {
      case 13:
      case ' ':
      case 10:
      case '\t':
        if (cmpr) {
          if (prev != ' ' && prev != '>')
            fprintf(file_out, " ");
          prev = ' ';
        } else {
          switch (buf[bpos]) {
          case ' ':
            fprintf(file_out, " ");
            break;
          case '\t':
            fprintf(file_out, "	");
            break;
          case 10:
            fprintf(file_out, "\\n\\\n");
            break;
          }
        }
        break;
      case '\\':
        fprintf(file_out, "\\\\");
        prev = buf[bpos];
        break;
      case '\"':
        fprintf(file_out, "\\\"");
        prev = buf[bpos];
        break;
      default:
        fprintf(file_out, "%c", buf[bpos]);
        prev = buf[bpos];
        break;
      }
      bpos++;
    }
  }
}
```