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

```asm
<wide_convert>:
  endbr64
  push   %r15
  mov    %rsi,%r15
  mov    $0x200,%esi
  push   %r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  push   %rbp
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x428,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x418(%rsp)
  xor    %eax,%eax
  lea    0x10(%rsp),%rbp
  lea    0x210(%rsp),%r14
  mov    %rbp,%rdi
  call   <bzero@plt>
  mov    $0x200,%esi
  mov    %r14,%rdi
  call   <bzero@plt>
  lea    D35(%rip),%rsi
  mov    %r12,%rdi
  call   <fopen@plt>
  test   %rax,%rax
  je     L0
  lea    D25(%rip),%rsi
  mov    %r15,%rdi
  mov    %rax,%r13
  call   <fopen@plt>
  movl   $0x0,0xc(%rsp)
  mov    %rax,%r12
  test   %rax,%rax
  jne    L71
  jmp    L1
  cs nopw 0x0(%rax,%rax,1)
L98:
  cmpb   $0x0,0x210(%rsp)
  je     L39
L59:
  lea    0x1(%rbx),%rdx
  lea    D33(%rip),%rsi
  mov    %r12,%rdi
  call   <fprintf@plt>
L71:
  xor    %esi,%esi
  mov    %r13,%rdi
  call   <get_line@plt>
  mov    %rax,%r15
  test   %rax,%rax
  je     L91
  mov    $0x3a,%esi
  mov    %r15,%rdi
  call   <strchr@plt>
  mov    $0x200,%esi
  mov    %rbp,%rdi
  mov    %rax,%rbx
  call   <bzero@plt>
  mov    %ebx,%edx
  mov    %r15,%rsi
  mov    %rbp,%rdi
  sub    %r15d,%edx
  call   <strncpy@plt>
  mov    0xc(%rsp),%eax
  test   %eax,%eax
  je     L98
  mov    %r14,%rsi
  mov    %rbp,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L98
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <strcpy@plt>
  mov    %r14,%rdx
  lea    D31(%rip),%rsi
  mov    %r12,%rdi
  call   <fprintf@plt>
  cmpb   $0x0,0x210(%rsp)
  jne    L59
  nopw   0x0(%rax,%rax,1)
L39:
  mov    %rbp,%rsi
  mov    %r14,%rdi
  call   <strcpy@plt>
  mov    %r14,%rdx
  lea    D31(%rip),%rsi
  mov    %r12,%rdi
  call   <fprintf@plt>
  movl   $0x1,0xc(%rsp)
  jmp    L59
  nopw   0x0(%rax,%rax,1)
L91:
  mov    %r12,%rdi
  mov    $0x1,%ebx
  call   <fclose@plt>
  mov    %r13,%rdi
  call   <fclose@plt>
L0:
  mov    0x418(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L47
  add    $0x428,%rsp
  mov    %ebx,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L1:
  mov    %r13,%rdi
  call   <fclose@plt>
  jmp    L0
L47:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D35
type_infered: string
name: unpack_data
arguments: label: D25
type_infered: string
name: unpack_data
arguments: label: D33
type_infered: string
name: unpack_data
arguments: label: D31
type_infered: string

tool: D35: r

tool: D25: w

tool: D33: %s


tool: D31: File: %s


assistant: ```c
int wide_convert(char *catfile, char *grp) {
  FILE *pfile;
  FILE *out;
  char *str;
  char *p, *q;
  char FileName[512];
  char LastFileName[512];
  int gotFileName = 0;
  bzero(FileName, 512);
  bzero(LastFileName, 512);
  pfile = fopen(catfile, "r");
  if (!pfile) {
    return (0);
  }
  out = fopen(grp, "w");
  if (!out) {
    fclose(pfile);
    return (0);
  }
  while ((str = get_line(pfile, 0)) != NULL) {
    p = strstr(str, ":");
    bzero(FileName, 512);
    strncpy(FileName, str, p - str);
    if (gotFileName) {
      if (strcmp(FileName, LastFileName)) {
        strcpy(LastFileName, FileName);
        fprintf(out, "File: %s\n", LastFileName);
      }
    }
    if (strlen(LastFileName) == 0) {
      strcpy(LastFileName, FileName);
      gotFileName = 1;
      fprintf(out, "File: %s\n", LastFileName);
    }
    q = strstr(p + 1, ":");
    fprintf(out, "%s\n", p + 1);
  }
  fclose(out);
  fclose(pfile);
  return (1);
}
```