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

```asm
<save_makefile_install_scripts>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x1000,%rsp
  orq    $0x0,(%rsp)
  sub    $0x238,%rsp
  lea    0x20(%rsp),%r13
  lea    0x220(%rsp),%rbx
  mov    %rdi,%rbp
  mov    %rsi,%r12
  mov    %fs:0x28,%rax
  mov    %rax,0x1228(%rsp)
  xor    %eax,%eax
  mov    %r13,%rsi
  lea    D130(%rip),%rdi
  lea    0x420(%rsp),%r14
  call   <get_setting@plt>
  mov    %rbx,%rsi
  lea    D17(%rip),%rdi
  lea    0xa20(%rsp),%r15
  call   <get_setting@plt>
  mov    %r14,%rsi
  lea    D248(%rip),%rdi
  call   <get_setting@plt>
  mov    %r15,%rsi
  lea    D156(%rip),%rdi
  call   <get_setting@plt>
  lea    0xc20(%rsp),%rax
  lea    D179(%rip),%rdi
  mov    %rax,%rsi
  mov    %rax,(%rsp)
  call   <get_setting@plt>
  mov    %rbx,%rdi
  call   <is_library@plt>
  test   %rax,%rax
  je     L129
L121:
  mov    0x1228(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L147
  add    $0x1238,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L129:
  mov    %r14,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  je     L121
  mov    %r13,%rdi
  call   <is_script_language@plt>
  test   %rax,%rax
  je     L121
  lea    D256(%rip),%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  lea    0x620(%rsp),%rbx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  lea    D188(%rip),%rdx
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rcx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D97(%rip),%rdx
  lea    D127(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  lea    0x820(%rsp),%r15
  mov    %rbx,%rdi
  movdqa D137(%rip),%xmm0
  movabs $0x2f6e69622f7d5849,%rax
  mov    $0x7d50,%edx
  lea    D170(%rip),%rsi
  movl   $0x50417b24,0x838(%rsp)
  mov    %rax,0x830(%rsp)
  xor    %eax,%eax
  mov    %dx,0x83c(%rsp)
  mov    %r15,%rdx
  movaps %xmm0,0x820(%rsp)
  movb   $0x0,0x83e(%rsp)
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rdx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D41(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rdx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D120(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rdx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D169(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rdx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D141(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  mov    %r15,%rdx
  mov    %rbx,%rdi
  xor    %eax,%eax
  lea    D65(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbp,%rdi
  mov    %rbx,%rdx
  mov    %r12,%rsi
  call   <add_makefile_entry_to_file@plt>
  mov    %r13,%rdi
  call   <is_script_language@plt>
  test   %rax,%rax
  jne    L38
  lea    D240(%rip),%rax
  mov    %rax,0x8(%rsp)
L110:
  mov    0x8(%rsp),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  je     L145
L52:
  mov    %r15,%rdx
  mov    %rbx,%rdi
  lea    D233(%rip),%rsi
  xor    %eax,%eax
  call   <sprintf@plt>
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  jmp    L121
  nopw   0x0(%rax,%rax,1)
L38:
  lea    D240(%rip),%rax
  mov    %r13,%rdi
  movb   $0x0,0xe20(%rsp)
  mov    %rax,%rsi
  mov    %rax,0x8(%rsp)
  call   <strcmp@plt>
  test   %rax,%rax
  je     L3
L143:
  lea    D230(%rip),%rsi
  mov    %r13,%rdi
  call   <strcmp@plt>
  lea    0xe20(%rsp),%rcx
  mov    %rcx,0x10(%rsp)
  test   %rax,%rax
  je     L125
L162:
  mov    0x10(%rsp),%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jle    L110
  mov    (%rsp),%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jle    L62
  mov    0x10(%rsp),%rcx
  mov    (%rsp),%rdx
  mov    %r15,%r9
  mov    %r14,%r8
  lea    D211(%rip),%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <sprintf@plt>
L185:
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  jmp    L110
  nopl   0x0(%rax,%rax,1)
L145:
  mov    (%rsp),%r13
  mov    %r13,%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jle    L131
  mov    %r15,%r8
  mov    %r14,%rcx
  mov    %r13,%rdx
  mov    %rbx,%rdi
  lea    D189(%rip),%rsi
  xor    %eax,%eax
  call   <sprintf@plt>
L158:
  mov    %rbx,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <add_makefile_entry_to_file@plt>
  jmp    L52
  nopl   (%rax)
L131:
  mov    %r15,%rcx
  mov    %r14,%rdx
  lea    D123(%rip),%rsi
  mov    %rbx,%rdi
  xor    %eax,%eax
  call   <sprintf@plt>
  jmp    L158
  nopl   0x0(%rax)
L125:
  lea    0x1020(%rsp),%rsi
  lea    D252(%rip),%rdi
  mov    %rsi,0x18(%rsp)
  call   <get_setting@plt>
  mov    0x18(%rsp),%rdi
  call   <strlen@plt>
  test   %eax,%eax
  jle    L58
  mov    0x18(%rsp),%rdi
  call   <strlen@plt>
  mov    0x18(%rsp),%rsi
  cmp    $0x1,%eax
  je     L197
  mov    0x10(%rsp),%rdi
  call   <strcpy@plt>
  jmp    L162
  nopw   0x0(%rax,%rax,1)
L3:
  movl   $0x6c726570,0xe20(%rsp)
  movb   $0x0,0xe24(%rsp)
  jmp    L143
L62:
  mov    0x10(%rsp),%rdx
  mov    %r15,%r8
  mov    %r14,%rcx
  mov    %rbx,%rdi
  lea    D255(%rip),%rsi
  xor    %eax,%eax
  call   <sprintf@plt>
  jmp    L185
L58:
  mov    $0x6e6f,%eax
  movb   $0x0,0xe26(%rsp)
  movl   $0x68747970,0xe20(%rsp)
  mov    %ax,0xe24(%rsp)
  jmp    L162
L197:
  mov    0x10(%rsp),%rdi
  mov    %rsi,%rdx
  xor    %eax,%eax
  lea    D83(%rip),%rsi
  call   <sprintf@plt>
  jmp    L162
L147:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D130
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D17
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D248
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D156
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D179
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D256
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D188
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D97
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D127
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D137
type_guessed: byte[16]
name: extract_symbolic_data
arguments: data_label: D170
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D41
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D120
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D169
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D141
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D65
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D240
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D233
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D230
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D211
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D189
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D123
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D252
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D255
type_guessed: string
name: extract_symbolic_data
arguments: data_label: D83
type_guessed: string

tool: D130: project type

tool: D17: project name

tool: D248: main script

tool: D156: source dir

tool: D179: library path

tool: D256: mkdir -m 755 -p ${DESTDIR}${PREFIX}/share

tool: D188: mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/${APP}

tool: D97: cp

tool: D127: %s -rf %s/* ${DESTDIR}${PREFIX}/share/${APP}

tool: {"D137": [0x24,0x7b,0x44,0x45,0x53,0x54,0x44,0x49,0x52,0x7d,0x24,0x7b,0x50,0x52,0x45,0x46]}

tool: D170: echo '#!/bin/sh' > %s

tool: D41: echo 'if [ -d ${DESTDIR}${PREFIX}/share/${APP} ]; then' >> %s

tool: D120: echo '  cd ${DESTDIR}${PREFIX}/share/${APP}' >> %s

tool: D169: echo 'else' >> %s

tool: D141: echo '  cd /usr/share/${APP}' >> %s

tool: D65: echo 'fi' >> %s

tool: D240: pl

tool: D233: chmod +x %s

tool: D230: py

tool: D211: echo 'LD_LIBRARY_PATH="%s" exec %s %s' >> %s

tool: D189: echo 'LD_LIBRARY_PATH="%s" exec perl %s' >> %s

tool: D123: echo 'exec perl %s' >> %s

tool: D252: python version

tool: D255: echo 'exec %s %s' >> %s

tool: D83: python%s

assistant: ```c
void save_makefile_install_scripts(char *filename, char *section) {
  char project_type[512];
  char project_name[512];
  char mainscript[512];
  char str[512];
  char runscript[512];
  char sourcedir[512];
  char library_path[512];
  char progname[512];
  char python_version[512];
  get_setting("project type", project_type);
  get_setting("project name", project_name);
  get_setting("main script", mainscript);
  get_setting("source dir", sourcedir);
  get_setting("library path", library_path);
  if (is_library(project_name) != 0)
    return;
  if (strlen(mainscript) == 0)
    return;
  if (is_script_language(project_type) == 0)
    return;
  add_makefile_entry_to_file(filename, section, "mkdir -m 755 -p ${DESTDIR}${PREFIX}/share");
  add_makefile_entry_to_file(filename, section, "mkdir -m 755 -p ${DESTDIR}${PREFIX}/share/${APP}");
  sprintf(str, "%s -rf %s/* ${DESTDIR}${PREFIX}/share/${APP}", "cp", sourcedir);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(runscript, "${DESTDIR}${PREFIX}/bin/${APP}");
  sprintf(str, "echo '#!/bin/sh' > %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(str, "echo 'if [ -d ${DESTDIR}${PREFIX}/share/${APP} ]; then' >> %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(str, "echo '  cd ${DESTDIR}${PREFIX}/share/${APP}' >> %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(str, "echo 'else' >> %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(str, "echo '  cd /usr/share/${APP}' >> %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  sprintf(str, "echo 'fi' >> %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
  if (is_script_language(project_type) != 0) {
    sprintf(progname, "%s", "");
    if (strcmp(project_type, "pl") == 0) {
      sprintf(progname, "%s", "perl");
    }
    if (strcmp(project_type, "py") == 0) {
      get_setting("python version", python_version);
      if (strlen(python_version) > 0) {
        if (strlen(python_version) == 1) {
          sprintf(progname, "python%s", python_version);
        } else {
          sprintf(progname, "%s", python_version);
        }
      } else {
        sprintf(progname, "%s", "python");
      }
    }
    if (strlen(progname) > 0) {
      if (strlen(library_path) > 0) {
        sprintf(str,
                "echo 'LD_LIBRARY_PATH=\"%s\" "
                "exec %s %s' >> %s",
                library_path, progname, mainscript, runscript);
      } else {
        sprintf(str, "echo 'exec %s %s' >> %s", progname, mainscript, runscript);
      }
      add_makefile_entry_to_file(filename, section, str);
    }
  }
  if (strcmp(project_type, "pl") == 0) {
    if (strlen(library_path) > 0) {
      sprintf(str,
              "echo 'LD_LIBRARY_PATH=\"%s\" "
              "exec perl %s' >> %s",
              library_path, mainscript, runscript);
    } else {
      sprintf(str, "echo 'exec perl %s' >> %s", mainscript, runscript);
    }
    add_makefile_entry_to_file(filename, section, str);
  }
  sprintf(str, "chmod +x %s", runscript);
  add_makefile_entry_to_file(filename, section, str);
}
```