user: What would the C source look like for the assembly code provided here?

```asm
<save_makefile_uninstall>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x250,%rsp
  mov    %rdi,-0x228(%rbp)
  mov    %rsi,-0x230(%rbp)
  mov    %rdx,-0x238(%rbp)
  mov    %ecx,-0x23c(%rbp)
  mov    %r8,-0x248(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x214(%rbp)
  jmp    L80
L50:
  mov    -0x214(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <get_subdirectory_string@plt>
  test   %rax,%rax
  je     L87
  mov    -0x214(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    $0x20,%esi
  mov    %rax,%rdi
  call   <contains_char@plt>
  test   %rax,%rax
  jne    L28
  mov    -0x214(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <get_subdirectory_string@plt>
  mov    %rax,%rdx
  lea    -0x210(%rbp),%rax
  lea    D162(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
  jmp    L43
L28:
  mov    -0x214(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x248(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    %rax,%rdi
  call   <get_subdirectory_string@plt>
  mov    %rax,%rdx
  lea    -0x210(%rbp),%rax
  lea    D199(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <sprintf@plt>
L43:
  lea    -0x210(%rbp),%rdx
  mov    -0x228(%rbp),%rax
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
L87:
  addl   $0x1,-0x214(%rbp)
L80:
  mov    -0x214(%rbp),%eax
  cmp    -0x23c(%rbp),%eax
  jl     L50
  mov    -0x228(%rbp),%rax
  lea    D191(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x230(%rbp),%rax
  mov    %rax,%rdi
  call   <is_library@plt>
  test   %rax,%rax
  jne    L64
  mov    -0x228(%rbp),%rax
  lea    D89(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D228(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  jmp    L22
L64:
  mov    -0x228(%rbp),%rax
  lea    D17(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D165(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D67(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D243(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D122(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
L22:
  mov    -0x238(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L69
  mov    -0x228(%rbp),%rax
  lea    D202(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D156(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    -0x228(%rbp),%rax
  lea    D167(%rip),%rdx
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <add_makefile_entry_to_file@plt>
L69:
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L25
  call   <__stack_chk_fail@plt>
L25:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D162
type: string
name: parse_data
arguments: tag: D199
type: string
name: parse_data
arguments: tag: D49
type: string
name: parse_data
arguments: tag: D191
type: string
name: parse_data
arguments: tag: D89
type: string
name: parse_data
arguments: tag: D228
type: string
name: parse_data
arguments: tag: D17
type: string
name: parse_data
arguments: tag: D165
type: string
name: parse_data
arguments: tag: D67
type: string
name: parse_data
arguments: tag: D243
type: string
name: parse_data
arguments: tag: D122
type: string
name: parse_data
arguments: tag: D202
type: string
name: parse_data
arguments: tag: D156
type: string
name: parse_data
arguments: tag: D167
type: string

tool: D162: rm -f /%s

tool: D199: rm -f "/%s"

tool: D49: uninstall

tool: D191: rm -f ${PREFIX}/share/man/man1/${APP}.1.gz

tool: D89: rm -rf ${PREFIX}/share/${APP}

tool: D228: rm -f ${PREFIX}/bin/${APP}

tool: D17: rm -f ${PREFIX}/${LIBDIR}/${LIBNAME}

tool: D165: rm -f ${PREFIX}/${LIBDIR}/${APP}.so

tool: D67: rm -f ${PREFIX}/${LIBDIR}/${SONAME}

tool: D243: rm -rf ${PREFIX}/include/${APP}

tool: D122: ldconfig

tool: D202: rm -f ${PREFIX}/share/applications/${APP}.desktop

tool: D156: rm -f ${PREFIX}/share/icons/hicolor/scalable/apps/${APP}.svg

tool: D167: rm -f ${PREFIX}/share/pixmaps/${APP}.svg

assistant: ```c
void save_makefile_uninstall(char *filename, char *project_name, char *commandline, int no_of_binaries, char **binaries) {
  int i;
  char str[512];
  for (i = 0; i < no_of_binaries; i++) {
    if (get_subdirectory_string(binaries[i]) != 0) {
      if (contains_char(binaries[i], ' ') == 0) {
        sprintf(str, "rm -f /%s", get_subdirectory_string(binaries[i]));
      } else {
        sprintf(str, "rm -f \"/%s\"", get_subdirectory_string(binaries[i]));
      }
      add_makefile_entry_to_file(filename, "uninstall", str);
    }
  }
  add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/share/man/man1/${APP}.1.gz");
  if (is_library(project_name) == 0) {
    add_makefile_entry_to_file(filename, "uninstall", "rm -rf ${PREFIX}/share/${APP}");
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/bin/${APP}");
  } else {
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/${LIBDIR}/${LIBNAME}");
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/${LIBDIR}/${APP}.so");
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/${LIBDIR}/${SONAME}");
    add_makefile_entry_to_file(filename, "uninstall", "rm -rf ${PREFIX}/include/${APP}");
    add_makefile_entry_to_file(filename, "uninstall", "ldconfig");
  }
  if (strlen(commandline) == 0) {
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/share/applications/${APP}.desktop");
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/share/icons/hicolor/scalable/apps/${APP}.svg");
    add_makefile_entry_to_file(filename, "uninstall", "rm -f ${PREFIX}/share/pixmaps/${APP}.svg");
  }
}
```