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

```asm
<usage>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  test   %rsi,%rsi
  lea    D57(%rip),%rax
  cmove  %rax,%rbp
  call   <version@plt>
  mov    %rbp,%rdx
  lea    D31(%rip),%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rcx
  mov    $0x37,%edx
  mov    $0x1,%esi
  lea    D52(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x3a,%edx
  mov    $0x1,%esi
  lea    D93(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x5b,%edx
  mov    $0x1,%esi
  lea    D106(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x4f,%edx
  mov    $0x1,%esi
  lea    D77(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x4d,%edx
  mov    $0x1,%esi
  lea    D90(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x3f,%edx
  mov    $0x1,%esi
  lea    D78(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x55,%edx
  mov    $0x1,%esi
  lea    D9(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x4b,%edx
  mov    $0x1,%esi
  lea    D10(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x49,%edx
  mov    $0x1,%esi
  lea    D97(%rip),%rdi
  call   <fwrite@plt>
  mov    %rbx,%rcx
  mov    $0x3a,%edx
  mov    $0x1,%esi
  lea    D44(%rip),%rdi
  call   <fwrite@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: label: D57
type_infered: string
name: parse_data
arguments: label: D31
type_infered: string
name: parse_data
arguments: label: D52
type_infered: string
name: parse_data
arguments: label: D93
type_infered: string
name: parse_data
arguments: label: D106
type_infered: string
name: parse_data
arguments: label: D77
type_infered: string
name: parse_data
arguments: label: D90
type_infered: string
name: parse_data
arguments: label: D78
type_infered: string
name: parse_data
arguments: label: D9
type_infered: string
name: parse_data
arguments: label: D10
type_infered: string
name: parse_data
arguments: label: D97
type_infered: string
name: parse_data
arguments: label: D44
type_infered: string

tool: D57: Purpose:
  Create RTEMS nios2 BSP configuration from Altera SOPC description


tool: D31: 
%s
Usage: nios2gen [OPTIONS] <SOPC PTF> [CONFIG PTF] [CONFIG PTF]...


tool: D52:    -h         --help               Print help and exit


tool: D93:    -V         --version            Print version and exit


tool: D106:    -bFILENAME --bspheader=FILENAME Output BSP configuration header file (default='sopc.h')


tool: D77:    -B         --no-bspheader       Do not output BSP configuration header file


tool: D90:    -lFILENAME --linkcmds=FILENAME  Output linker script (default='linkcmds')


tool: D78:    -L         --no-linkcmds        Do not output linker script


tool: D9:    -pFILENAME --parsed=FILENAME    Output PTF contents as long list (default: don't)


tool: D10:    -P         --no-parsed          Do not output PTF contents as long list


tool: D97:    -q         --quiet              Do not print progress info to stdout



tool: D44: Using "-" as the FILENAME means standard output (stdout).


assistant: ```c
void usage(FILE *f, char *errmsg) {
  char *info = "Purpose:\n  Create RTEMS nios2 BSP configuration from Altera SOPC description\n";
  if (errmsg)
    info = errmsg;
  version(f);
  fprintf(f, "\n%s\nUsage: nios2gen [OPTIONS] <SOPC PTF> [CONFIG PTF] [CONFIG PTF]...\n", info);
  fprintf(f, "   -h         --help               Print help and exit\n");
  fprintf(f, "   -V         --version            Print version and exit\n");
  fprintf(f, "   -bFILENAME --bspheader=FILENAME Output BSP configuration header file (default='sopc.h')\n");
  fprintf(f, "   -B         --no-bspheader       Do not output BSP configuration header file\n");
  fprintf(f, "   -lFILENAME --linkcmds=FILENAME  Output linker script (default='linkcmds')\n");
  fprintf(f, "   -L         --no-linkcmds        Do not output linker script\n");
  fprintf(f, "   -pFILENAME --parsed=FILENAME    Output PTF contents as long list (default: don't)\n");
  fprintf(f, "   -P         --no-parsed          Do not output PTF contents as long list\n");
  fprintf(f, "   -q         --quiet              Do not print progress info to stdout\n\n");
  fprintf(f, "Using \"-\" as the FILENAME means standard output (stdout).\n");
}
```