user: Translate the below assembly code into C programming language:

```asm
<print_help>:
  endbr64
  push   %rbp
  lea    D123(%rip),%rbp
  lea    D22(%rip),%rdi
  mov    %rbp,%rsi
  call   <printf@plt>
  xor    %eax,%eax
  call   <usage@plt>
  lea    D10(%rip),%rsi
  lea    D33(%rip),%rdi
  call   <printf@plt>
  lea    D4(%rip),%rsi
  lea    D159(%rip),%rdi
  call   <printf@plt>
  lea    D104(%rip),%rsi
  lea    D46(%rip),%rdi
  call   <printf@plt>
  lea    D42(%rip),%rsi
  lea    D142(%rip),%rdi
  call   <printf@plt>
  lea    D56(%rip),%rsi
  lea    D3(%rip),%rdi
  call   <printf@plt>
  lea    D21(%rip),%rsi
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D29(%rip),%rsi
  lea    D31(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <print_version@plt>
  xor    %eax,%eax
  pop    %rbp
  jmp    10a0 <print_copyright@plt>
```

tool_calls: name: read_data
arguments: data_label: D123
type: string
name: read_data
arguments: data_label: D22
type: string
name: read_data
arguments: data_label: D10
type: string
name: read_data
arguments: data_label: D33
type: string
name: read_data
arguments: data_label: D4
type: string
name: read_data
arguments: data_label: D159
type: string
name: read_data
arguments: data_label: D104
type: string
name: read_data
arguments: data_label: D46
type: string
name: read_data
arguments: data_label: D42
type: string
name: read_data
arguments: data_label: D142
type: string
name: read_data
arguments: data_label: D56
type: string
name: read_data
arguments: data_label: D3
type: string
name: read_data
arguments: data_label: D21
type: string
name: read_data
arguments: data_label: D70
type: string
name: read_data
arguments: data_label: D29
type: string
name: read_data
arguments: data_label: D31
type: string

tool: D123: trim

tool: D22: 
Tool name:
   %s


tool: D10:    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: D33: Description:
%s



tool: D4:    <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: D159: Input:
%s



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

tool: D46: Output:
%s



tool: D42:    -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: D142: Options:
%s



tool: D56:    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: D3: Examples:
%s



tool: D21:    Only works on ASF Internal files.

tool: D70: Limitations:
%s



tool: D29:    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: D31: 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();
}
```