user: 请将以下的汇编代码转换成C语言代码：

```asm
<PrintUsage>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rsi
  lea    D115(%rip),%rdi
  call   <printf@plt>
  lea    D69(%rip),%rdi
  call   <puts@plt>
  lea    D64(%rip),%rdi
  call   <puts@plt>
  lea    D166(%rip),%rdi
  call   <puts@plt>
  lea    D105(%rip),%rdi
  call   <puts@plt>
  lea    D22(%rip),%rdi
  call   <puts@plt>
  lea    D51(%rip),%rdi
  call   <puts@plt>
  lea    D4(%rip),%rdi
  call   <puts@plt>
  lea    D83(%rip),%rdi
  call   <puts@plt>
  lea    D70(%rip),%rdi
  call   <puts@plt>
  lea    D91(%rip),%rdi
  call   <puts@plt>
  lea    D6(%rip),%rdi
  call   <puts@plt>
  lea    D12(%rip),%rdi
  call   <puts@plt>
  lea    D56(%rip),%rdi
  call   <puts@plt>
  lea    D30(%rip),%rdi
  call   <puts@plt>
  lea    D5(%rip),%rdi
  call   <puts@plt>
  lea    D58(%rip),%rdi
  call   <puts@plt>
  lea    D149(%rip),%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D115
type_infered: string
name: disassemble_data
arguments: data_label: D69
type_infered: string
name: disassemble_data
arguments: data_label: D64
type_infered: string
name: disassemble_data
arguments: data_label: D166
type_infered: string
name: disassemble_data
arguments: data_label: D105
type_infered: string
name: disassemble_data
arguments: data_label: D22
type_infered: string
name: disassemble_data
arguments: data_label: D51
type_infered: string
name: disassemble_data
arguments: data_label: D4
type_infered: string
name: disassemble_data
arguments: data_label: D83
type_infered: string
name: disassemble_data
arguments: data_label: D70
type_infered: string
name: disassemble_data
arguments: data_label: D91
type_infered: string
name: disassemble_data
arguments: data_label: D6
type_infered: string
name: disassemble_data
arguments: data_label: D12
type_infered: string
name: disassemble_data
arguments: data_label: D56
type_infered: string
name: disassemble_data
arguments: data_label: D30
type_infered: string
name: disassemble_data
arguments: data_label: D5
type_infered: string
name: disassemble_data
arguments: data_label: D58
type_infered: string
name: disassemble_data
arguments: data_label: D149
type_infered: string

tool: D115: Usage: %s [options] file.jpg ...


tool: D69: -g, --gps file.gpx       Specifies GPX file with GPS data

tool: D64: -z, --timeadd +/-HH[:MM] Time to add to GPS data to make it match photos

tool: D166: -i, --no-interpolation   Disable interpolation between points; interpolation
                         is linear, points rounded if disabled

tool: D105: -d, --datum DATUM        Specify measurement datum (defaults to WGS-84)

tool: D22: -n, --no-write           Do not write the EXIF data. Useful with --verbose

tool: D51: -m, --max-dist SECS      Max time outside points that photo will be matched

tool: D4: -s, --show               Just show the GPS data from the given files

tool: D83: -o, --machine            Similar to --show but with machine-readable output

tool: D70: -r, --remove             Strip GPS tags from the given files

tool: D91: -t, --ignore-tracksegs   Interpolate between track segments, too

tool: D6: -M, --no-mtime           Don't change mtime of modified files

tool: D12: -f, --fix-datestamps     Fix broken GPS datestamps written with ver. < 1.5.2

tool: D56:     --degmins            Write location as DD MM.MM (was default before v1.5.3)

tool: D30: -O, --photooffset SECS   Offset added to photo time to make it match the GPS

tool: D5: -h, --help               Display usage/help message

tool: D58: -v, --verbose            Show more detailed output

tool: D149: -V, --version            Display version information

assistant: ```c
void PrintUsage(const char *ProgramName) {
  printf(("Usage: %s [options] file.jpg ...\n"), ProgramName);
  puts(("-g, --gps file.gpx       Specifies GPX file with GPS data"));
  puts(("-z, --timeadd +/-HH[:MM] Time to add to GPS data to make it match photos"));
  puts(("-i, --no-interpolation   Disable interpolation between points; interpolation\n"
        "                         is linear, points rounded if disabled"));
  puts(("-d, --datum DATUM        Specify measurement datum (defaults to WGS-84)"));
  puts(("-n, --no-write           Do not write the EXIF data. Useful with --verbose"));
  puts(("-m, --max-dist SECS      Max time outside points that photo will be matched"));
  puts(("-s, --show               Just show the GPS data from the given files"));
  puts(("-o, --machine            Similar to --show but with machine-readable output"));
  puts(("-r, --remove             Strip GPS tags from the given files"));
  puts(("-t, --ignore-tracksegs   Interpolate between track segments, too"));
  puts(("-M, --no-mtime           Don't change mtime of modified files"));
  puts(("-f, --fix-datestamps     Fix broken GPS datestamps written with ver. < 1.5.2"));
  puts(("    --degmins            Write location as DD MM.MM (was default before v1.5.3)"));
  puts(("-O, --photooffset SECS   Offset added to photo time to make it match the GPS"));
  puts(("-h, --help               Display usage/help message"));
  puts(("-v, --verbose            Show more detailed output"));
  puts(("-V, --version            Display version information"));
}
```