user: 下面的汇编指令对应的C源代码是什么：

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  lea    D97(%rip),%rax
  mov    %rax,-0x8(%rbp)
  cmpq   $0x0,-0x20(%rbp)
  je     L5
  mov    -0x20(%rbp),%rax
  mov    %rax,-0x8(%rbp)
L5:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <version@plt>
  mov    -0x8(%rbp),%rdx
  mov    -0x18(%rbp),%rax
  lea    D21(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x37,%edx
  mov    $0x1,%esi
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x3a,%edx
  mov    $0x1,%esi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x5b,%edx
  mov    $0x1,%esi
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x4f,%edx
  mov    $0x1,%esi
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x4d,%edx
  mov    $0x1,%esi
  lea    D62(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x3f,%edx
  mov    $0x1,%esi
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x55,%edx
  mov    $0x1,%esi
  lea    D99(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x4b,%edx
  mov    $0x1,%esi
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x49,%edx
  mov    $0x1,%esi
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x3a,%edx
  mov    $0x1,%esi
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: data_label: D97
type_guessed: string
name: read_data
arguments: data_label: D21
type_guessed: string
name: read_data
arguments: data_label: D60
type_guessed: string
name: read_data
arguments: data_label: D44
type_guessed: string
name: read_data
arguments: data_label: D76
type_guessed: string
name: read_data
arguments: data_label: D61
type_guessed: string
name: read_data
arguments: data_label: D62
type_guessed: string
name: read_data
arguments: data_label: D63
type_guessed: string
name: read_data
arguments: data_label: D99
type_guessed: string
name: read_data
arguments: data_label: D14
type_guessed: string
name: read_data
arguments: data_label: D6
type_guessed: string
name: read_data
arguments: data_label: D30
type_guessed: string

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


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


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


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


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


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


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


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


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


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


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



tool: D30: 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");
}
```