user: What would the C source look like for the assembly code provided here?

```asm
<print_help>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D157(%rip),%rax
  mov    %rax,%rsi
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <usage@plt>
  lea    D47(%rip),%rax
  mov    %rax,%rsi
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D127(%rip),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D0(%rip),%rax
  mov    %rax,%rsi
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rsi
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D79(%rip),%rax
  mov    %rax,%rsi
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D138(%rip),%rax
  mov    %rax,%rsi
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D162(%rip),%rax
  mov    %rax,%rsi
  lea    D99(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  call   <print_version@plt>
  mov    $0x0,%eax
  call   <print_copyright@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D157
data_type: string
name: parse_data
arguments: data_label: D5
data_type: string
name: parse_data
arguments: data_label: D47
data_type: string
name: parse_data
arguments: data_label: D1
data_type: string
name: parse_data
arguments: data_label: D127
data_type: string
name: parse_data
arguments: data_label: D56
data_type: string
name: parse_data
arguments: data_label: D0
data_type: string
name: parse_data
arguments: data_label: D80
data_type: string
name: parse_data
arguments: data_label: D34
data_type: string
name: parse_data
arguments: data_label: D57
data_type: string
name: parse_data
arguments: data_label: D79
data_type: string
name: parse_data
arguments: data_label: D143
data_type: string
name: parse_data
arguments: data_label: D138
data_type: string
name: parse_data
arguments: data_label: D44
data_type: string
name: parse_data
arguments: data_label: D162
data_type: string
name: parse_data
arguments: data_label: D99
data_type: string

tool: D157: trim

tool: D5: 
Tool name:
   %s


tool: D47:    trim allows you to trim/add any number of line or samples to an image
   (in ASF Internal format), and updates the metadata accordingly.

tool: D1: Description:
%s



tool: D127:    <infile>  The basename of the input data file.  Must be in ASF Internal
        format (.img)
   <new_top_line> Line in input that will be the top of output.  Can be
        negative, the top lines in the output image will be zeros.
   <new_top_sample> Sample in input that will be left side of output.  Can
        be negative, the left side of the output will be zeros.
   When the -to option is used, the new_top_line and new_top_sample arguments
   are not needed.


tool: D56: Input:
%s



tool: D0:    <outfile>  The basename of the output file.  The output file will be stored
        in ASF Internal format (.img and .meta)

tool: D80: Output:
%s



tool: D34:    -log <logfile>
        Save all tool output in <logfile>
   -height <height>
        Height of the output file.  If the height extends below the bottom
        of the image, it is padded with zeros.
   -width <width>
        Width of the output file.  If the width extends beyond the right
        edge of the image, it is padded with zeros.
   -to <metadata file>
        Trims the input file to the extent of the metadata file.  With this
        option you would not use -width, -height, or the new start line and
        sample values.
   -lat1 <lat> -lat2 <lat> -lon1 <lon> -lon2 <lon>
        Specifies a lat/lon boundary box to use for trimming.  With these
        options you would not use -width, -height, or the new start lien and
        sample vaules.
   -license
        Print copyright and license for this software then exit.
   -version
        Print version and copyright then exit.
   -help
        Print this help information and then exit.

tool: D57: Options:
%s



tool: D79:    Remove a 100x100 section, starting at line 50, sample 200
   from the file "test.img", and "test.meta".
   > trim -width 100 -height 100 test test_trimmed 50 200

   Trim test.img to the extent of "section.meta".
   > trim -to section test test_trimmed

   Trim test.img to the lat/lon area (64,-146) - (65,-147)
   > trim -lat1 64 -lat2 65 -lon1 -146 -lon2 -147 test test_trimmed


tool: D143: Examples:
%s



tool: D138:    Only works on ASF Internal files.

tool: D44: Limitations:
%s



tool: D162:    Alaska Satellite Facility
   Geophysical Institute
   University of Alaska Fairbanks
   P.O. Box 757320
   Fairbanks, AK 99775-7320
   http://www.asf.alaska.edu
   uso@asf.alaska.edu


tool: D99: Contact:
%s


assistant: ```c
void print_help() {
  printf("\nTool name:\n   %s\n", "trim");
  usage();
  printf("Description:\n%s\n\n", "   trim allows you to trim/add any number of line or samples to an image\n"
                                 "   (in ASF Internal format), and updates the metadata accordingly.");
  if (strlen("   <infile>  The basename of the input data file.  Must be in ASF Internal\n"
             "        format (.img)\n"
             "   <new_top_line> Line in input that will be the top of output.  Can be\n"
             "        negative, the top lines in the output image will be zeros.\n"
             "   <new_top_sample> Sample in input that will be left side of output.  Can\n"
             "        be negative, the left side of the output will be zeros.\n"
             "   When the -to option is used, the new_top_line and new_top_sample arguments\n"
             "   are not needed.\n"))
    printf("Input:\n%s\n\n", "   <infile>  The basename of the input data file.  Must be in ASF Internal\n"
                             "        format (.img)\n"
                             "   <new_top_line> Line in input that will be the top of output.  Can be\n"
                             "        negative, the top lines in the output image will be zeros.\n"
                             "   <new_top_sample> Sample in input that will be left side of output.  Can\n"
                             "        be negative, the left side of the output will be zeros.\n"
                             "   When the -to option is used, the new_top_line and new_top_sample arguments\n"
                             "   are not needed.\n");
  if (strlen("   <outfile>  The basename of the output file.  The output file will be stored\n"
             "        in ASF Internal format (.img and .meta)"))
    printf("Output:\n%s\n\n", "   <outfile>  The basename of the output file.  The output file will be stored\n"
                              "        in ASF Internal format (.img and .meta)");
  if (strlen("   -log <logfile>\n"
             "        Save all tool output in <logfile>\n"
             "   -height <height>\n"
             "        Height of the output file.  If the height extends below the bottom\n"
             "        of the image, it is padded with zeros.\n"
             "   -width <width>\n"
             "        Width of the output file.  If the width extends beyond the right\n"
             "        edge of the image, it is padded with zeros.\n"
             "   -to <metadata file>\n"
             "        Trims the input file to the extent of the metadata file.  With this\n"
             "        option you would not use -width, -height, or the new start line and\n"
             "        sample values.\n"
             "   -lat1 <lat> -lat2 <lat> -lon1 <lon> -lon2 <lon>\n"
             "        Specifies a lat/lon boundary box to use for trimming.  With these\n"
             "        options you would not use -width, -height, or the new start lien and\n"
             "        sample vaules.\n"
             "   -license\n"
             "        Print copyright and license for this software then exit.\n"
             "   -version\n"
             "        Print version and copyright then exit.\n"
             "   -help\n"
             "        Print this help information and then exit."))
    printf("Options:\n%s\n\n", "   -log <logfile>\n"
                               "        Save all tool output in <logfile>\n"
                               "   -height <height>\n"
                               "        Height of the output file.  If the height extends below the bottom\n"
                               "        of the image, it is padded with zeros.\n"
                               "   -width <width>\n"
                               "        Width of the output file.  If the width extends beyond the right\n"
                               "        edge of the image, it is padded with zeros.\n"
                               "   -to <metadata file>\n"
                               "        Trims the input file to the extent of the metadata file.  With this\n"
                               "        option you would not use -width, -height, or the new start line and\n"
                               "        sample values.\n"
                               "   -lat1 <lat> -lat2 <lat> -lon1 <lon> -lon2 <lon>\n"
                               "        Specifies a lat/lon boundary box to use for trimming.  With these\n"
                               "        options you would not use -width, -height, or the new start lien and\n"
                               "        sample vaules.\n"
                               "   -license\n"
                               "        Print copyright and license for this software then exit.\n"
                               "   -version\n"
                               "        Print version and copyright then exit.\n"
                               "   -help\n"
                               "        Print this help information and then exit.");
  if (strlen("   Remove a 100x100 section, starting at line 50, sample 200\n"
             "   from the file \"test.img\", and \"test.meta\".\n"
             "   > trim -width 100 -height 100 test test_trimmed 50 200\n"
             "\n"
             "   Trim test.img to the extent of \"section.meta\".\n"
             "   > trim -to section test test_trimmed\n"
             "\n"
             "   Trim test.img to the lat/lon area (64,-146) - (65,-147)\n"
             "   > trim -lat1 64 -lat2 65 -lon1 -146 -lon2 -147 test test_trimmed\n"))
    printf("Examples:\n%s\n\n", "   Remove a 100x100 section, starting at line 50, sample 200\n"
                                "   from the file \"test.img\", and \"test.meta\".\n"
                                "   > trim -width 100 -height 100 test test_trimmed 50 200\n"
                                "\n"
                                "   Trim test.img to the extent of \"section.meta\".\n"
                                "   > trim -to section test test_trimmed\n"
                                "\n"
                                "   Trim test.img to the lat/lon area (64,-146) - (65,-147)\n"
                                "   > trim -lat1 64 -lat2 65 -lon1 -146 -lon2 -147 test test_trimmed\n");
  if (strlen("   Only works on ASF Internal files."))
    printf("Limitations:\n%s\n\n", "   Only works on ASF Internal files.");
  if (strlen(""))
    printf("See Also:\n%s\n\n", "");
  printf("Contact:\n%s\n", "   "
                           "Alaska Satellite Facility"
                           "\n"
                           "   "
                           "Geophysical Institute"
                           "\n"
                           "   "
                           "University of Alaska Fairbanks"
                           "\n"
                           "   "
                           "P.O. Box 757320"
                           "\n"
                           "   "
                           "Fairbanks, AK 99775-7320"
                           "\n"
                           "   "
                           "http://www.asf.alaska.edu"
                           "\n"
                           "   "
                           "uso@asf.alaska.edu"
                           "\n");
  print_version("trim");
  print_copyright();
}
```