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

```asm
<format_mount_command>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x98,%rsp
  mov    %rdi,%rbp
  mov    %rsi,%rdi
  mov    %rdx,0x18(%rsp)
  mov    %rcx,%rbx
  mov    %r8,%r13
  mov    %r9,%r12
  mov    0xd0(%rsp),%r14
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  movl   $0x0,(%r14)
  mov    $0x0,%esi
  call   <escape_filename@plt>
  mov    %rax,0x8(%rsp)
  mov    $0x0,%esi
  mov    %rbp,%rdi
  call   <escape_filename@plt>
  mov    %rax,0x10(%rsp)
  movb   $0x0,(%r12)
  mov    $0x7c,%esi
  mov    %rbx,%rdi
  call   <after_first@plt>
  mov    %rax,%rbx
  movzbl (%rax),%eax
  test   %al,%al
  je     L2
  mov    %r12,%rbp
  lea    D26(%rip),%r15
  jmp    L87
L42:
  movzbl (%rbx),%edx
  test   $0xdf,%dl
  je     L56
  lea    0x20(%rsp),%rax
  mov    %rax,%rcx
L95:
  mov    %dl,(%rax)
  mov    %rax,%rdx
  sub    %rcx,%rdx
  cmp    $0x60,%rdx
  adc    $0x0,%rax
  add    $0x1,%rbx
  movzbl (%rbx),%edx
  test   $0xdf,%dl
  jne    L95
L129:
  movb   $0x0,(%rax)
  lea    0x20(%rsp),%rdi
  mov    %r15,%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L8
  lea    0x20(%rsp),%rdi
  lea    D37(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L13
  lea    0x20(%rsp),%rdi
  lea    D13(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L62
  lea    0x20(%rsp),%rdi
  lea    D18(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  je     L9
  lea    0x20(%rsp),%rdi
  lea    D19(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  jne    L127
L9:
  movl   $0x1,(%r14)
  jmp    L127
L56:
  lea    0x20(%rsp),%rax
  jmp    L129
L8:
  mov    %rbp,%rax
  sub    %r12,%rax
  mov    %r13d,%esi
  sub    %eax,%esi
  mov    0x8(%rsp),%rdx
  mov    %rbp,%rdi
  call   <copy_str@plt>
  mov    %rbp,%rdi
  call   <strlen@plt>
  cltq
  add    %rax,%rbp
L127:
  movzbl (%rbx),%eax
  test   %al,%al
  je     L90
L87:
  cmp    $0x25,%al
  je     L42
  mov    %al,0x0(%rbp)
  mov    %rbp,%rdx
  sub    %r12,%rdx
  lea    -0x1(%r13),%rax
  cmp    %rax,%rdx
  adc    $0x0,%rbp
  add    $0x1,%rbx
  jmp    L127
L13:
  mov    %rbp,%rax
  sub    %r12,%rax
  mov    %r13d,%esi
  sub    %eax,%esi
  mov    0x18(%rsp),%rdx
  mov    %rbp,%rdi
  call   <copy_str@plt>
  mov    %rbp,%rdi
  call   <strlen@plt>
  cltq
  add    %rax,%rbp
  jmp    L127
L62:
  mov    %rbp,%rax
  sub    %r12,%rax
  mov    %r13d,%esi
  sub    %eax,%esi
  mov    0x10(%rsp),%rdx
  mov    %rbp,%rdi
  call   <copy_str@plt>
  mov    %rbp,%rdi
  call   <strlen@plt>
  cltq
  add    %rax,%rbp
  jmp    L127
L2:
  mov    %r12,%rbp
L90:
  movb   $0x0,0x0(%rbp)
  mov    0x10(%rsp),%rdi
  call   <free@plt>
  mov    0x8(%rsp),%rdi
  call   <free@plt>
  mov    0x88(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L166
  add    $0x98,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L166:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: label: D26
type_guessed: string
name: disassemble_data
arguments: label: D37
type_guessed: string
name: disassemble_data
arguments: label: D13
type_guessed: string
name: disassemble_data
arguments: label: D18
type_guessed: string
name: disassemble_data
arguments: label: D19
type_guessed: string

tool: D26: %SOURCE_FILE

tool: D37: %PARAM

tool: D13: %DESTINATION_DIR

tool: D18: %FOREGROUND

tool: D19: %CLEAR

assistant: ```c
void format_mount_command(const char mount_point[], const char file_name[], const char param[], const char format[], size_t buf_size, char buf[], int *foreground) {
  char *buf_pos;
  const char *prog_pos;
  char *escaped_path;
  char *escaped_mount_point;
  *foreground = 0;
  escaped_path = escape_filename(file_name, 0);
  escaped_mount_point = escape_filename(mount_point, 0);
  buf_pos = buf;
  buf_pos[0] = '\0';
  prog_pos = after_first(format, '|');
  while (*prog_pos != '\0') {
    if (*prog_pos == '%') {
      char cmd_buf[96];
      char *cmd_pos;
      cmd_pos = cmd_buf;
      while (*prog_pos != '\0' && *prog_pos != ' ') {
        *cmd_pos = *prog_pos;
        if (cmd_pos - cmd_buf < sizeof(cmd_buf))
          cmd_pos++;
        prog_pos++;
      }
      *cmd_pos = '\0';
      if (!strcmp(cmd_buf, "%SOURCE_FILE")) {
        copy_str(buf_pos, buf_size - (buf_pos - buf), escaped_path);
        buf_pos += strlen(buf_pos);
      } else if (!strcmp(cmd_buf, "%PARAM")) {
        copy_str(buf_pos, buf_size - (buf_pos - buf), param);
        buf_pos += strlen(buf_pos);
      } else if (!strcmp(cmd_buf, "%DESTINATION_DIR")) {
        copy_str(buf_pos, buf_size - (buf_pos - buf), escaped_mount_point);
        buf_pos += strlen(buf_pos);
      } else if (!strcmp(cmd_buf, "%FOREGROUND") || !strcmp(cmd_buf, "%CLEAR")) {
        *foreground = 1;
      }
    } else {
      *buf_pos = *prog_pos;
      if (buf_pos - buf < buf_size - 1)
        buf_pos++;
      prog_pos++;
    }
  }
  *buf_pos = '\0';
  free(escaped_mount_point);
  free(escaped_path);
}
```