user: What is the c source code of the assembly code below?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D74(%rip),%rax
  mov    %rax,%rsi
  lea    D139(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x80(%rbp)
  lea    D20(%rip),%rax
  mov    %rax,%rsi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x78(%rbp)
  lea    D20(%rip),%rax
  mov    %rax,%rsi
  lea    D71(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x70(%rbp)
  lea    D20(%rip),%rax
  mov    %rax,%rsi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <fopen@plt>
  mov    %rax,-0x68(%rbp)
  jmp    L11
L12:
  lea    -0x60(%rbp),%rax
  lea    D128(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L39
  lea    -0x60(%rbp),%rdx
  mov    -0x78(%rbp),%rax
  lea    D7(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L11
L39:
  lea    -0x60(%rbp),%rax
  lea    D68(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L29
  lea    -0x60(%rbp),%rdx
  mov    -0x70(%rbp),%rax
  lea    D7(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
  jmp    L11
L29:
  lea    -0x60(%rbp),%rdx
  mov    -0x68(%rbp),%rax
  lea    D7(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fprintf@plt>
L11:
  lea    -0x60(%rbp),%rdx
  mov    -0x80(%rbp),%rax
  lea    D17(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <fscanf@plt>
  cmp    $0x1,%eax
  je     L12
  mov    -0x78(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x70(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x68(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    -0x80(%rbp),%rax
  mov    %rax,%rdi
  call   <fclose@plt>
  mov    $0x1,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L32
  call   <__stack_chk_fail@plt>
L32:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D74
datatype: string
name: disassemble_data
arguments: label: D139
datatype: string
name: disassemble_data
arguments: label: D20
datatype: string
name: disassemble_data
arguments: label: D62
datatype: string
name: disassemble_data
arguments: label: D71
datatype: string
name: disassemble_data
arguments: label: D113
datatype: string
name: disassemble_data
arguments: label: D128
datatype: string
name: disassemble_data
arguments: label: D7
datatype: string
name: disassemble_data
arguments: label: D68
datatype: string
name: disassemble_data
arguments: label: D17
datatype: string

tool: D74: r

tool: D139: spooky.csv

tool: D20: w

tool: D62: ufos.csv

tool: D71: elvis.csv

tool: D113: other.csv

tool: D128: UFO

tool: D7: %s


tool: D68: Elvis

tool: D17: %79[^
]


assistant: ```c
int main() {
  FILE *in = fopen("spooky.csv", "r");
  FILE *file1 = fopen("ufos.csv", "w");
  FILE *file2 = fopen("elvis.csv", "w");
  FILE *file3 = fopen("other.csv", "w");
  char line[80];
  while (fscanf(in, "%79[^\n]\n", line) == 1) {
    if (strstr(line, "UFO")) {
      fprintf(file1, "%s\n", line);
    } else if (strstr(line, "Elvis")) {
      fprintf(file2, "%s\n", line);
    } else {
      fprintf(file3, "%s\n", line);
    }
  }
  fclose(file1);
  fclose(file2);
  fclose(file3);
  fclose(in);
  return 1;
}
```