user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D36(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D69(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D136(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D53(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D134(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D121
type_infered: string
name: extract_symbolic_data
arguments: label: D36
type_infered: string
name: extract_symbolic_data
arguments: label: D16
type_infered: string
name: extract_symbolic_data
arguments: label: D19
type_infered: string
name: extract_symbolic_data
arguments: label: D60
type_infered: string
name: extract_symbolic_data
arguments: label: D63
type_infered: string
name: extract_symbolic_data
arguments: label: D8
type_infered: string
name: extract_symbolic_data
arguments: label: D41
type_infered: string
name: extract_symbolic_data
arguments: label: D29
type_infered: string
name: extract_symbolic_data
arguments: label: D110
type_infered: string
name: extract_symbolic_data
arguments: label: D17
type_infered: string
name: extract_symbolic_data
arguments: label: D97
type_infered: string
name: extract_symbolic_data
arguments: label: D69
type_infered: string
name: extract_symbolic_data
arguments: label: D136
type_infered: string
name: extract_symbolic_data
arguments: label: D53
type_infered: string
name: extract_symbolic_data
arguments: label: D1
type_infered: string
name: extract_symbolic_data
arguments: label: D134
type_infered: string

tool: D121: Usage: %s < --read | --write > <file>


tool: D36:        %s --title


tool: D16:        %s --version


tool: D19:        %s --help


tool: D60: Writes a ROM or SAV file to the EMS 64 Mbit USB flash cart


tool: D63: Options:

tool: D8:     --read                  read entire cart into file

tool: D41:     --write                 write ROM file to cart

tool: D29:     --title                 title of the ROM in both banks

tool: D110:     --bank <num>            select cart bank (1 or 2)

tool: D17:     --save                  force write to SRAM

tool: D97:     --rom                   force write to Flash ROM

tool: D69: You MUST supply exactly one of --read, --write, or --title

tool: D136: Reading or writing with a file ending in .sav will write to SRAM.

tool: D53: To select between ROM and SRAM, use ONE of the --save / --rom options.

tool: D1: Advanced options:

tool: D134:     --blocksize <size>      bytes per block (default: 4096 read, 32 write)

assistant: ```c
void usage(char *name) {
  printf("Usage: %s < --read | --write > <file>\n", name);
  printf("       %s --title\n", name);
  printf("       %s --version\n", name);
  printf("       %s --help\n", name);
  printf("Writes a ROM or SAV file to the EMS 64 Mbit USB flash cart\n\n");
  printf("Options:\n");
  printf("    --read                  read entire cart into file\n");
  printf("    --write                 write ROM file to cart\n");
  printf("    --title                 title of the ROM in both banks\n");
  printf("    --bank <num>            select cart bank (1 or 2)\n");
  printf("    --save                  force write to SRAM\n");
  printf("    --rom                   force write to Flash ROM\n");
  printf("\n");
  printf("You MUST supply exactly one of --read, --write, or --title\n");
  printf("Reading or writing with a file ending in .sav will write to SRAM.\n");
  printf("To select between ROM and SRAM, use ONE of the --save / --rom options.\n");
  printf("\n");
  printf("Advanced options:\n");
  printf("    --blocksize <size>      bytes per block (default: 4096 read, 32 write)\n");
  exit(1);
}
```