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

```asm
<help_message>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  lea    D180(%rip),%rax
  mov    %rax,%rsi
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D106(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D111(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D153(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D190(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D98(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  cltq
  lea    D143(%rip),%rdx
  lea    (%rax,%rdx,1),%rcx
  mov    -0x8(%rbp),%rax
  mov    %rax,%rdx
  lea    D204(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  lea    D143(%rip),%rax
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_label: D180
type_guessed: string
name: parse_data
arguments: data_label: D106
type_guessed: string
name: parse_data
arguments: data_label: D111
type_guessed: string
name: parse_data
arguments: data_label: D153
type_guessed: string
name: parse_data
arguments: data_label: D190
type_guessed: string
name: parse_data
arguments: data_label: D98
type_guessed: string
name: parse_data
arguments: data_label: D204
type_guessed: string

tool: D180: 
Uses:


tool: D106: 	%s		   * user mode *


tool: D111: 	%s -penc             * encodes characters received by piping *


tool: D153: 	%s -pdec             * decodes characters received by piping *


tool: D190: 	%s -enc <filename>   * encodes contents of file *


tool: D98: 	%s -dec <filename>   * decodes contents of file *


tool: D204: 	%s --help            * prints this help message *


assistant: ```c
char *help_message(char *program_name) {
  static char message[2048];
  sprintf(message, "\nUses:\n");
  sprintf(message + strlen(message), "\t%s\t\t   * user mode *\n", program_name);
  sprintf(message + strlen(message), "\t%s -penc             * encodes characters received by piping *\n", program_name);
  sprintf(message + strlen(message), "\t%s -pdec             * decodes characters received by piping *\n", program_name);
  sprintf(message + strlen(message), "\t%s -enc <filename>   * encodes contents of file *\n", program_name);
  sprintf(message + strlen(message), "\t%s -dec <filename>   * decodes contents of file *\n", program_name);
  sprintf(message + strlen(message), "\t%s --help            * prints this help message *\n", program_name);
  return message;
}
```