user: Demonstrate the C code that generates the assembly output below:

```asm
<usage_summary>:
  endbr64
  push   %r12
  lea    D107(%rip),%rsi
  lea    D146(%rip),%r12
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x8,%rsp
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D142(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D172(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D153(%rip),%rsi
  call   <fprintf@plt>
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D53(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D35(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D79(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D91(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D77(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D36(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D173(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D21(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D49(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D7(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D27(%rip),%rsi
  call   <fprintf@plt>
  mov    %rbp,%rdi
  lea    D67(%rip),%rsi
  call   <fprintf@plt>
  add    $0x8,%rsp
  mov    %rbp,%rdi
  lea    D24(%rip),%rsi
  pop    %rbp
  pop    %r12
  jmp    1050 <fprintf@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D107
type: string
name: extract_symbolic_data
arguments: data_label: D146
type: string
name: extract_symbolic_data
arguments: data_label: D142
type: string
name: extract_symbolic_data
arguments: data_label: D172
type: string
name: extract_symbolic_data
arguments: data_label: D153
type: string
name: extract_symbolic_data
arguments: data_label: D53
type: string
name: extract_symbolic_data
arguments: data_label: D35
type: string
name: extract_symbolic_data
arguments: data_label: D79
type: string
name: extract_symbolic_data
arguments: data_label: D91
type: string
name: extract_symbolic_data
arguments: data_label: D77
type: string
name: extract_symbolic_data
arguments: data_label: D36
type: string
name: extract_symbolic_data
arguments: data_label: D173
type: string
name: extract_symbolic_data
arguments: data_label: D21
type: string
name: extract_symbolic_data
arguments: data_label: D49
type: string
name: extract_symbolic_data
arguments: data_label: D7
type: string
name: extract_symbolic_data
arguments: data_label: D27
type: string
name: extract_symbolic_data
arguments: data_label: D67
type: string
name: extract_symbolic_data
arguments: data_label: D24
type: string

tool: D107: Usage:


tool: D146: 


tool: D142:   metaflac [options] [operations] FLACfile [FLACfile ...]


tool: D172: Use metaflac to list, add, remove, or edit metadata in one or more FLAC files.


tool: D153: You may perform one major operation, or many shorthand operations at a time.


tool: D53: Options:


tool: D35: --preserve-modtime    Preserve the original modification time in spite of edits


tool: D79: --with-filename       Prefix each output line with the FLAC file name


tool: D91:                       (the default if more than one FLAC file is specified)


tool: D77: --no-filename         Do not prefix each output line with the FLAC file name


tool: D36:                       (the default if only one FLAC file is specified)


tool: D173: --no-utf8-convert     Do not convert tags from UTF-8 to local charset,


tool: D21:                       or vice versa.  This is useful for scripts, and setting


tool: D49:                       tags in situations where the locale is wrong.


tool: D7: --dont-use-padding    By default metaflac tries to use padding where possible


tool: D27:                       to avoid rewriting the entire file if the metadata size


tool: D67:                       changes.  Use this option to tell metaflac to not take


tool: D24:                       advantage of padding this way.


assistant: ```c
void usage_summary(FILE *out) {
  fprintf(out, "Usage:\n");
  fprintf(out, "  metaflac [options] [operations] FLACfile [FLACfile ...]\n");
  fprintf(out, "\n");
  fprintf(out, "Use metaflac to list, add, remove, or edit metadata in one or more FLAC files.\n");
  fprintf(out, "You may perform one major operation, or many shorthand operations at a time.\n");
  fprintf(out, "\n");
  fprintf(out, "Options:\n");
  fprintf(out, "--preserve-modtime    Preserve the original modification time in spite of edits\n");
  fprintf(out, "--with-filename       Prefix each output line with the FLAC file name\n");
  fprintf(out, "                      (the default if more than one FLAC file is specified)\n");
  fprintf(out, "--no-filename         Do not prefix each output line with the FLAC file name\n");
  fprintf(out, "                      (the default if only one FLAC file is specified)\n");
  fprintf(out, "--no-utf8-convert     Do not convert tags from UTF-8 to local charset,\n");
  fprintf(out, "                      or vice versa.  This is useful for scripts, and setting\n");
  fprintf(out, "                      tags in situations where the locale is wrong.\n");
  fprintf(out, "--dont-use-padding    By default metaflac tries to use padding where possible\n");
  fprintf(out, "                      to avoid rewriting the entire file if the metadata size\n");
  fprintf(out, "                      changes.  Use this option to tell metaflac to not take\n");
  fprintf(out, "                      advantage of padding this way.\n");
}
```