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

```asm
<isnotfound>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x218,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x208(%rsp)
  xor    %eax,%eax
  test   %rdi,%rdi
  je     L51
  cmpb   $0x0,(%rdi)
  mov    %rdi,%r12
  jne    L73
L51:
  xor    %r14d,%r14d
L65:
  mov    0x208(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L3
  add    $0x218,%rsp
  mov    %r14d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L73:
  mov    %rsp,%rbp
  mov    %rdi,%rdx
  lea    D18(%rip),%rsi
  xor    %eax,%eax
  mov    %rbp,%rdi
  mov    $0x1,%r14d
  call   <sprintf@plt>
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <isfexists@plt>
  test   %eax,%eax
  je     L65
  mov    %r12,%rcx
  mov    %r12,%rdx
  lea    D37(%rip),%rsi
  mov    %rbp,%rdi
  xor    %eax,%eax
  call   <sprintf@plt>
  lea    D26(%rip),%rsi
  mov    %rbp,%rdi
  call   <popen@plt>
  mov    %rax,%r13
  test   %rax,%rax
  je     L51
  xor    %r12d,%r12d
  lea    0x100(%rsp),%rbx
  lea    D7(%rip),%rbp
  lea    D40(%rip),%r15
  lea    D5(%rip),%r14
  jmp    L6
  nopw   0x0(%rax,%rax,1)
L74:
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  mov    %rbp,%rdx
  mov    %r15,%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <strreplace@plt>
  mov    %rbp,%rdx
  mov    %r14,%rsi
  mov    %rbx,%rdi
  test   %eax,%eax
  setg   %al
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  movzbl %al,%eax
  add    %eax,%r12d
  xor    %eax,%eax
  call   <strreplace@plt>
  test   %eax,%eax
  setg   %al
  movzbl %al,%eax
  add    %eax,%r12d
L6:
  mov    %r13,%rdx
  mov    $0xff,%esi
  mov    %rbx,%rdi
  call   <fgets@plt>
  test   %rax,%rax
  jne    L74
  xor    %r14d,%r14d
  mov    %r13,%rdi
  test   %r12d,%r12d
  setne  %r14b
  call   <pclose@plt>
  jmp    L65
L3:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D18
datatype: string
name: unpack_data
arguments: label: D37
datatype: string
name: unpack_data
arguments: label: D26
datatype: string
name: unpack_data
arguments: label: D7
datatype: string
name: unpack_data
arguments: label: D40
datatype: string
name: unpack_data
arguments: label: D5
datatype: string

tool: D18: %s.err

tool: D37: grep -i "%s" %s.err

tool: D26: r

tool: 

tool: D40: not found

tool: D5: no such

assistant: ```c
int isnotfound(char *filename) {
  int status = 0;
  int isfexists();
  char command[256];
  FILE *grepout = NULL;
  char grepline[256];
  int strreplace();
  int nlines = 0;
  if (((filename) == NULL ? 1 : (*(filename) == '\000' ? 1 : 0)))
    goto end_of_job;
  sprintf(command, "%s.err", filename);
  if (!isfexists(command)) {
    status = 1;
    goto end_of_job;
  }
  sprintf(command, "grep -i \"%s\" %s.err", filename, filename);
  grepout = popen(command, "r");
  if (grepout == NULL)
    goto end_of_job;
  while (fgets(grepline, 255, grepout) != NULL) {
    if (strreplace(grepline, "not found", "", 0, 0) > 0)
      nlines++;
    if (strreplace(grepline, "no such", "", 0, 0) > 0)
      nlines++;
  }
  if (nlines > 0)
    status = 1;
  pclose(grepout);
end_of_job:
  return (status);
}
```