#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ print_copyright();
int /*<<< orphan*/ print_version(char *);
int /*<<< orphan*/ printf(char *, char *);
scalar_t__ strlen(char *);
int /*<<< orphan*/ usage();
void print_help() {
  printf("\nTool name:\n   %s\n", "fill_holes");
  usage();
  printf("Description:\n%s\n\n", "   The fill_holes tool scans an image for "
                                 "regions of data below the given\n"
                                 "   cut-off height, then when found, "
                                 "interpolates the surrounding values\n"
                                 "   over the hole to 'patch' it with the most "
                                 "realistic values that it can.\n"
                                 "   The most useful application of this tools "
                                 "is for patching holes in DEMs\n"
                                 "   since holes in DEMs result in visible "
                                 "defects in terrain-corrected images.");
  if (strlen("   <infile>  The basename of the input data file.  Must be in "
             "ASF Internal\n"
             "        format (.img)"))
    printf("Input:\n%s\n\n", "   <infile>  The basename of the input data "
                             "file.  Must be in ASF Internal\n"
                             "        format (.img)");
  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\n"
          "   -quiet\n"
          "        Suppress all output\n\n"
          "   -cutoff <height>\n"
          "        Use <height>, in meters, as the minimum valid data value in "
          "the image.\n"
          "        Values below <height> will be considered to be no-data "
          "values (a hole)\n"
          "        and will be patched as described.  The default cutoff value "
          "is -900\n"
          "        meters.\n\n"
          "        The default -900 is a good choice for SRTM dems.\n\n"
          "   -license\n"
          "        Print copyright and license for this software then exit.\n\n"
          "   -version\n"
          "        Print version and copyright then exit.\n\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\n"
        "   -quiet\n"
        "        Suppress all output\n\n"
        "   -cutoff <height>\n"
        "        Use <height>, in meters, as the minimum valid data value in "
        "the image.\n"
        "        Values below <height> will be considered to be no-data values "
        "(a hole)\n"
        "        and will be patched as described.  The default cutoff value "
        "is -900\n"
        "        meters.\n\n"
        "        The default -900 is a good choice for SRTM dems.\n\n"
        "   -license\n"
        "        Print copyright and license for this software then exit.\n\n"
        "   -version\n"
        "        Print version and copyright then exit.\n\n"
        "   -help\n"
        "        Print this help information and then exit.");
  if (strlen("    This example fills holes in the dem 'dem.img' (with metadata "
             "'dem.meta'),\n"
             "    creating 'dem_fixed.img' and 'dem_fixed.meta'.  A hole will "
             "be any DEM\n"
             "    values lower than 0 meters:\n"
             "      > fill_holes -cutoff 0 dem dem_fixed"))
    printf("Examples:\n%s\n\n", "    This example fills holes in the dem "
                                "'dem.img' (with metadata 'dem.meta'),\n"
                                "    creating 'dem_fixed.img' and "
                                "'dem_fixed.meta'.  A hole will be any DEM\n"
                                "    values lower than 0 meters:\n"
                                "      > fill_holes -cutoff 0 dem dem_fixed");
  if (strlen("    At this time, fill_holes only works on ASF Internal format "
             "files (.img)"))
    printf("Limitations:\n%s\n\n", "    At this time, fill_holes only works on "
                                   "ASF Internal format files (.img)");
  if (strlen("    asf_terrcorr\n"
             "    asf_mapready\n"
             "    mapready"))
    printf("See Also:\n%s\n\n", "    asf_terrcorr\n"
                                "    asf_mapready\n"
                                "    mapready");
  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("fill_holes");
  print_copyright();
}


x86 assembly (clang, -O0):
<print_help>:
push   %rbp
mov    %rsp,%rbp
lea    0xea5(%rip),%rdi
lea    0xeb1(%rip),%rsi
call   1050 <printf@plt>
mov    $0x0,%al
call   1070 <usage@plt>
lea    0xea9(%rip),%rdi
lea    0xeb4(%rip),%rsi
call   1050 <printf@plt>
lea    0x101e(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     11aa <print_help+0x5a>
lea    0x1069(%rip),%rdi
lea    0x1001(%rip),%rsi
call   1050 <printf@plt>
lea    0x1062(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     11d3 <print_help+0x83>
lea    0x10cb(%rip),%rdi
lea    0x1045(%rip),%rsi
call   1050 <printf@plt>
lea    0x10c5(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     11fc <print_help+0xac>
lea    0x1322(%rip),%rdi
lea    0x10a8(%rip),%rsi
call   1050 <printf@plt>
lea    0x131d(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     1225 <print_help+0xd5>
lea    0x13eb(%rip),%rdi
lea    0x1300(%rip),%rsi
call   1050 <printf@plt>
lea    0x13e7(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     124e <print_help+0xfe>
lea    0x141d(%rip),%rdi
lea    0x13ca(%rip),%rsi
call   1050 <printf@plt>
lea    0x141c(%rip),%rdi
call   1040 <strlen@plt>
cmp    $0x0,%rax
je     1277 <print_help+0x127>
lea    0x1435(%rip),%rdi
lea    0x13ff(%rip),%rsi
call   1050 <printf@plt>
lea    0x1431(%rip),%rdi
lea    0x1437(%rip),%rsi
call   1050 <printf@plt>
lea    0xd82(%rip),%rdi
call   1030 <print_version@plt>
mov    $0x0,%al
call   1060 <print_copyright@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_help>:
push   %rbx
lea    0xeb8(%rip),%rdi
lea    0xec4(%rip),%rbx
mov    %rbx,%rsi
call   1040 <printf@plt>
xor    %eax,%eax
call   1060 <usage@plt>
lea    0xeb9(%rip),%rdi
lea    0xec4(%rip),%rsi
call   1040 <printf@plt>
lea    0x108f(%rip),%rdi
lea    0x1027(%rip),%rsi
call   1040 <printf@plt>
lea    0x1107(%rip),%rdi
lea    0x1081(%rip),%rsi
call   1040 <printf@plt>
lea    0x1374(%rip),%rdi
lea    0x10fa(%rip),%rsi
call   1040 <printf@plt>
lea    0x1453(%rip),%rdi
lea    0x1368(%rip),%rsi
call   1040 <printf@plt>
lea    0x149b(%rip),%rdi
lea    0x1448(%rip),%rsi
call   1040 <printf@plt>
lea    0x14c9(%rip),%rdi
lea    0x1493(%rip),%rsi
call   1040 <printf@plt>
lea    0x14c5(%rip),%rdi
lea    0x14cb(%rip),%rsi
call   1040 <printf@plt>
mov    %rbx,%rdi
call   1030 <print_version@plt>
xor    %eax,%eax
pop    %rbx
jmp    1050 <print_copyright@plt>

LLVM IR (-O0):
@.str = [19 x i8] c"\0ATool name:\0A %s\0A\00"
@.str.1 = [11 x i8] c"fill_holes\00"
@.str.2 = [18 x i8] c"Description:\0A%s\0A\0A\00"
@.str.3 = [374 x i8] c" The fill_holes tool scans an image for regions of data below the given\0A cut-off height, then when found, interpolates the surrounding values\0A over the hole to 'patch' it with the most realistic values that it can.\0A The most useful application of this tools is for patching holes in DEMs\0A since holes in DEMs result in visible defects in terrain-corrected images.\00"
@.str.4 = [97 x i8] c" <infile> The basename of the input data file. Must be in ASF Internal\0A format (.img)\00"
@.str.5 = [12 x i8] c"Input:\0A%s\0A\0A\00"
@.str.6 = [127 x i8] c" <outfile> The basename of the output file. The output file will be stored\0A in ASF Internal format (.img and .meta)\00"
@.str.7 = [13 x i8] c"Output:\0A%s\0A\0A\00"
@.str.8 = [627 x i8] c" -log <logfile>\0A Save all tool output in <logfile>\0A\0A -quiet\0A Suppress all output\0A\0A -cutoff <height>\0A Use <height>, in meters, as the minimum valid data value in the image.\0A Values below <height> will be considered to be no-data values (a hole)\0A and will be patched as described. The default cutoff value is -900\0A meters.\0A\0A The default -900 is a good choice for SRTM dems.\0A\0A -license\0A Print copyright and license for this software then exit.\0A\0A -version\0A Print version and copyright then exit.\0A\0A -help\0A Print this help information and then exit.\00"
@.str.9 = [14 x i8] c"Options:\0A%s\0A\0A\00"
@.str.10 = [228 x i8] c" This example fills holes in the dem 'dem.img' (with metadata 'dem.meta'),\0A creating 'dem_fixed.img' and 'dem_fixed.meta'. A hole will be any DEM\0A values lower than 0 meters:\0A > fill_holes -cutoff 0 dem dem_fixed\00"
@.str.11 = [15 x i8] c"Examples:\0A%s\0A\0A\00"
@.str.12 = [76 x i8] c" At this time, fill_holes only works on ASF Internal format files (.img)\00"
@.str.13 = [18 x i8] c"Limitations:\0A%s\0A\0A\00"
@.str.14 = [47 x i8] c" asf_terrcorr\0A asf_mapready\0A mapready\00"
@.str.15 = [15 x i8] c"See Also:\0A%s\0A\0A\00"
@.str.16 = [13 x i8] c"Contact:\0A%s\0A\00"
@.str.17 = [187 x i8] c" Alaska Satellite Facility\0A Geophysical Institute\0A University of Alaska Fairbanks\0A P.O. Box 757320\0A Fairbanks, AK 99775-7320\0A http://www.asf.alaska.edu\0A uso@asf.alaska.edu\0A\00"
define void @print_help() {
%1 = call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 (...) @usage()
%3 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([374 x i8], [374 x i8]* @.str.3, i64 0, i64 0))
%4 = call i64 @strlen(i8* getelementptr inbounds ([97 x i8], [97 x i8]* @.str.4, i64 0, i64 0))
%5 = icmp ne i64 %4, 0
br i1 %5, label %6, label %8
6: ; preds = %0
%7 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([97 x i8], [97 x i8]* @.str.4, i64 0, i64 0))
br label %8
8: ; preds = %6, %0
%9 = call i64 @strlen(i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.6, i64 0, i64 0))
%10 = icmp ne i64 %9, 0
br i1 %10, label %11, label %13
11: ; preds = %8
%12 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.6, i64 0, i64 0))
br label %13
13: ; preds = %11, %8
%14 = call i64 @strlen(i8* getelementptr inbounds ([627 x i8], [627 x i8]* @.str.8, i64 0, i64 0))
%15 = icmp ne i64 %14, 0
br i1 %15, label %16, label %18
16: ; preds = %13
%17 = call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([627 x i8], [627 x i8]* @.str.8, i64 0, i64 0))
br label %18
18: ; preds = %16, %13
%19 = call i64 @strlen(i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str.10, i64 0, i64 0))
%20 = icmp ne i64 %19, 0
br i1 %20, label %21, label %23
21: ; preds = %18
%22 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str.10, i64 0, i64 0))
br label %23
23: ; preds = %21, %18
%24 = call i64 @strlen(i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.12, i64 0, i64 0))
%25 = icmp ne i64 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.12, i64 0, i64 0))
br label %28
28: ; preds = %26, %23
%29 = call i64 @strlen(i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i64 0, i64 0))
%30 = icmp ne i64 %29, 0
br i1 %30, label %31, label %33
31: ; preds = %28
%32 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i64 0, i64 0))
br label %33
33: ; preds = %31, %28
%34 = call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([187 x i8], [187 x i8]* @.str.17, i64 0, i64 0))
%35 = call i32 @print_version(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%36 = call i32 (...) @print_copyright()
ret void
}

LLVM IR (-O2):
@.str = [19 x i8] c"\0ATool name:\0A %s\0A\00"
@.str.1 = [11 x i8] c"fill_holes\00"
@.str.2 = [18 x i8] c"Description:\0A%s\0A\0A\00"
@.str.3 = [374 x i8] c" The fill_holes tool scans an image for regions of data below the given\0A cut-off height, then when found, interpolates the surrounding values\0A over the hole to 'patch' it with the most realistic values that it can.\0A The most useful application of this tools is for patching holes in DEMs\0A since holes in DEMs result in visible defects in terrain-corrected images.\00"
@.str.4 = [97 x i8] c" <infile> The basename of the input data file. Must be in ASF Internal\0A format (.img)\00"
@.str.5 = [12 x i8] c"Input:\0A%s\0A\0A\00"
@.str.6 = [127 x i8] c" <outfile> The basename of the output file. The output file will be stored\0A in ASF Internal format (.img and .meta)\00"
@.str.7 = [13 x i8] c"Output:\0A%s\0A\0A\00"
@.str.8 = [627 x i8] c" -log <logfile>\0A Save all tool output in <logfile>\0A\0A -quiet\0A Suppress all output\0A\0A -cutoff <height>\0A Use <height>, in meters, as the minimum valid data value in the image.\0A Values below <height> will be considered to be no-data values (a hole)\0A and will be patched as described. The default cutoff value is -900\0A meters.\0A\0A The default -900 is a good choice for SRTM dems.\0A\0A -license\0A Print copyright and license for this software then exit.\0A\0A -version\0A Print version and copyright then exit.\0A\0A -help\0A Print this help information and then exit.\00"
@.str.9 = [14 x i8] c"Options:\0A%s\0A\0A\00"
@.str.10 = [228 x i8] c" This example fills holes in the dem 'dem.img' (with metadata 'dem.meta'),\0A creating 'dem_fixed.img' and 'dem_fixed.meta'. A hole will be any DEM\0A values lower than 0 meters:\0A > fill_holes -cutoff 0 dem dem_fixed\00"
@.str.11 = [15 x i8] c"Examples:\0A%s\0A\0A\00"
@.str.12 = [76 x i8] c" At this time, fill_holes only works on ASF Internal format files (.img)\00"
@.str.13 = [18 x i8] c"Limitations:\0A%s\0A\0A\00"
@.str.14 = [47 x i8] c" asf_terrcorr\0A asf_mapready\0A mapready\00"
@.str.15 = [15 x i8] c"See Also:\0A%s\0A\0A\00"
@.str.16 = [13 x i8] c"Contact:\0A%s\0A\00"
@.str.17 = [187 x i8] c" Alaska Satellite Facility\0A Geophysical Institute\0A University of Alaska Fairbanks\0A P.O. Box 757320\0A Fairbanks, AK 99775-7320\0A http://www.asf.alaska.edu\0A uso@asf.alaska.edu\0A\00"
define void @print_help() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 (...) @usage()
%3 = tail call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.2, i64 0, i64 0), i8* getelementptr inbounds ([374 x i8], [374 x i8]* @.str.3, i64 0, i64 0))
%4 = tail call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([97 x i8], [97 x i8]* @.str.4, i64 0, i64 0))
%5 = tail call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([127 x i8], [127 x i8]* @.str.6, i64 0, i64 0))
%6 = tail call i32 @printf(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([627 x i8], [627 x i8]* @.str.8, i64 0, i64 0))
%7 = tail call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.11, i64 0, i64 0), i8* getelementptr inbounds ([228 x i8], [228 x i8]* @.str.10, i64 0, i64 0))
%8 = tail call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.13, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.12, i64 0, i64 0))
%9 = tail call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.15, i64 0, i64 0), i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.14, i64 0, i64 0))
%10 = tail call i32 @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([187 x i8], [187 x i8]* @.str.17, i64 0, i64 0))
%11 = tail call i32 @print_version(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.1, i64 0, i64 0))
%12 = tail call i32 (...) @print_copyright()
ret void
}