#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*/ EXIT_FAILURE;
int /*<<< orphan*/ exit(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *);
int /*<<< orphan*/ stderr;
void DisplayUsage(void) {
  {
    fprintf(
        stderr, "%s\n",
        "usage: ll2cr [-v] [-f] [-r rind] [-F fill_in fill_out]\n"
        "             colsin scansin rowsperscan latfile lonfile gpdfile tag\n"
        "\n"
        " input : colsin  - number of columns in each input file\n"
        "         scansin  - number of scans in each input file\n"
        "         rowsperscan - number of rows in each scan\n"
        "         latfile - grid of 4 byte floating-point latitudes\n"
        "         lonfile - grid of 4 byte floating-point longitudes\n"
        "         gpdfile - grid parameters definition file\n"
        "\n"
        " output: tag - string used to construct output filenames:\n"
        "           colfile = "
        "tag_cols_colsin_scansout_scanfirst_rowsperscan.img\n"
        "           rowfile = "
        "tag_rows_colsin_scansout_scanfirst_rowsperscan.img\n"
        "             where\n"
        "               scansout - number of scans written to each output "
        "file\n"
        "               scanfirst - scan number of first scan written\n"
        "           colfile - grid of 4 byte floating-point column numbers\n"
        "           rowfile - grid of 4 byte floating-point row numbers\n"
        "\n"
        " options:v - verbose\n"
        "         f - force scansout = scansin and scanfirst = 0. If -f is not "
        "set,\n"
        "             then scansout is set to the number of scans which "
        "contain at\n"
        "             least one point which is contained within the grid, and\n"
        "             scanfirst is set to the number of the first scan "
        "containing\n"
        "             such a point.\n"
        "         r rind - specifies the number of pixels by which the grid is "
        "to\n"
        "             be expanded in detecting whether points fall within the "
        "grid\n"
        "             for the purposes of determining scansout and scanfirst.\n"
        "             The default value of rind is 0. Note that if -f is "
        "specified,\n"
        "             then the -r option is ignored and rind is set to 0.\n"
        "         F fill_in fill_out - specifies the input and output fill "
        "values,\n"
        "             respectively. The default values are -999.0 and -1e30.\n"
        "\n");
    exit(EXIT_FAILURE);
  };
}


x86 assembly (clang, -O0):
<DisplayUsage>:
push   %rbp
mov    %rsp,%rbp
mov    0x2eb5(%rip),%rax
mov    (%rax),%edi
lea    0xecc(%rip),%rsi
lea    0xec9(%rip),%rdx
call   1030 <fprintf@plt>
mov    0x2e91(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<DisplayUsage>:
push   %rax
mov    0x2eb8(%rip),%rax
mov    (%rax),%edi
lea    0xecf(%rip),%rsi
lea    0xecc(%rip),%rdx
call   1030 <fprintf@plt>
mov    0x2e94(%rip),%rax
mov    (%rax),%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [4 x i8] c"%s\0A\00"
@.str.1 = [1778 x i8] c"usage: ll2cr [-v] [-f] [-r rind] [-F fill_in fill_out]\0A colsin scansin rowsperscan latfile lonfile gpdfile tag\0A\0A input : colsin - number of columns in each input file\0A scansin - number of scans in each input file\0A rowsperscan - number of rows in each scan\0A latfile - grid of 4 byte floating-point latitudes\0A lonfile - grid of 4 byte floating-point longitudes\0A gpdfile - grid parameters definition file\0A\0A output: tag - string used to construct output filenames:\0A colfile = tag_cols_colsin_scansout_scanfirst_rowsperscan.img\0A rowfile = tag_rows_colsin_scansout_scanfirst_rowsperscan.img\0A where\0A scansout - number of scans written to each output file\0A scanfirst - scan number of first scan written\0A colfile - grid of 4 byte floating-point column numbers\0A rowfile - grid of 4 byte floating-point row numbers\0A\0A options:v - verbose\0A f - force scansout = scansin and scanfirst = 0. If -f is not set,\0A then scansout is set to the number of scans which contain at\0A least one point which is contained within the grid, and\0A scanfirst is set to the number of the first scan containing\0A such a point.\0A r rind - specifies the number of pixels by which the grid is to\0A be expanded in detecting whether points fall within the grid\0A for the purposes of determining scansout and scanfirst.\0A The default value of rind is 0. Note that if -f is specified,\0A then the -r option is ignored and rind is set to 0.\0A F fill_in fill_out - specifies the input and output fill values,\0A respectively. The default values are -999.0 and -1e30.\0A\0A\00"
@EXIT_FAILURE = global i32 0
define void @DisplayUsage() {
%1 = load i32, i32* @stderr
%2 = call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1778 x i8], [1778 x i8]* @.str.1, i64 0, i64 0))
%3 = load i32, i32* @EXIT_FAILURE
%4 = call i32 @exit(i32 %3)
unreachable
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [4 x i8] c"%s\0A\00"
@.str.1 = [1778 x i8] c"usage: ll2cr [-v] [-f] [-r rind] [-F fill_in fill_out]\0A colsin scansin rowsperscan latfile lonfile gpdfile tag\0A\0A input : colsin - number of columns in each input file\0A scansin - number of scans in each input file\0A rowsperscan - number of rows in each scan\0A latfile - grid of 4 byte floating-point latitudes\0A lonfile - grid of 4 byte floating-point longitudes\0A gpdfile - grid parameters definition file\0A\0A output: tag - string used to construct output filenames:\0A colfile = tag_cols_colsin_scansout_scanfirst_rowsperscan.img\0A rowfile = tag_rows_colsin_scansout_scanfirst_rowsperscan.img\0A where\0A scansout - number of scans written to each output file\0A scanfirst - scan number of first scan written\0A colfile - grid of 4 byte floating-point column numbers\0A rowfile - grid of 4 byte floating-point row numbers\0A\0A options:v - verbose\0A f - force scansout = scansin and scanfirst = 0. If -f is not set,\0A then scansout is set to the number of scans which contain at\0A least one point which is contained within the grid, and\0A scanfirst is set to the number of the first scan containing\0A such a point.\0A r rind - specifies the number of pixels by which the grid is to\0A be expanded in detecting whether points fall within the grid\0A for the purposes of determining scansout and scanfirst.\0A The default value of rind is 0. Note that if -f is specified,\0A then the -r option is ignored and rind is set to 0.\0A F fill_in fill_out - specifies the input and output fill values,\0A respectively. The default values are -999.0 and -1e30.\0A\0A\00"
@EXIT_FAILURE = global i32 0
define void @DisplayUsage() {
%1 = load i32, i32* @stderr
%2 = tail call i32 @fprintf(i32 %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([1778 x i8], [1778 x i8]* @.str.1, i64 0, i64 0))
%3 = load i32, i32* @EXIT_FAILURE
%4 = tail call i32 @exit(i32 %3)
unreachable
}