#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",
        "$Revision: 1.10 $\n"
        "usage: extract_region [-v] [-b] [-s scale] [-f] [-c cells_per_col]\n"
        "          bytes_per_cell cols_in rows_in\n"
        "          col_start row_start cols_out rows_out\n"
        "          file_in\n"
        "          file_out\n"
        "  input : bytes_per_cell - the number of bytes per single grid "
        "location.\n"
        "                           Must be 1, 2, 4, or 8.\n"
        "          cols_in - the number of columns in the input file\n"
        "          rows_in - the number of rows in the input file\n"
        "          col_start - the zero-based column number of the first "
        "column\n"
        "                      in the region\n"
        "          row_start - the zero-based row number of the first row\n"
        "                      in the region\n"
        "          cols_out - the number of columns in the region\n"
        "          rows_out - the number of rows in the region\n"
        "          file_in  - the input grid filename\n"
        "  output: file_out - the output grid filename\n"
        "  option: v - verbose (may be repeated)\n"
        "          b - byte swap the data\n"
        "          s scale - multiply the (byte-swapped) data by scale.\n"
        "                    The default value of scale is 1.0.\n"
        "          f - treat the (byte-swapped) data as\n"
        "              floating-point for the purposes of scaling,\n"
        "              so bytes_per_cell must be 4 or 8.\n"
        "          c cells_per_col - number of cells in each col.\n"
        "                            The default value of cells_per_col is "
        "1.\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 = [1332 x i8] c"$Revision: 1.10 $\0Ausage: extract_region [-v] [-b] [-s scale] [-f] [-c cells_per_col]\0A bytes_per_cell cols_in rows_in\0A col_start row_start cols_out rows_out\0A file_in\0A file_out\0A input : bytes_per_cell - the number of bytes per single grid location.\0A Must be 1, 2, 4, or 8.\0A cols_in - the number of columns in the input file\0A rows_in - the number of rows in the input file\0A col_start - the zero-based column number of the first column\0A in the region\0A row_start - the zero-based row number of the first row\0A in the region\0A cols_out - the number of columns in the region\0A rows_out - the number of rows in the region\0A file_in - the input grid filename\0A output: file_out - the output grid filename\0A option: v - verbose (may be repeated)\0A b - byte swap the data\0A s scale - multiply the (byte-swapped) data by scale.\0A The default value of scale is 1.0.\0A f - treat the (byte-swapped) data as\0A floating-point for the purposes of scaling,\0A so bytes_per_cell must be 4 or 8.\0A c cells_per_col - number of cells in each col.\0A The default value of cells_per_col is 1.\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 ([1332 x i8], [1332 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 = [1332 x i8] c"$Revision: 1.10 $\0Ausage: extract_region [-v] [-b] [-s scale] [-f] [-c cells_per_col]\0A bytes_per_cell cols_in rows_in\0A col_start row_start cols_out rows_out\0A file_in\0A file_out\0A input : bytes_per_cell - the number of bytes per single grid location.\0A Must be 1, 2, 4, or 8.\0A cols_in - the number of columns in the input file\0A rows_in - the number of rows in the input file\0A col_start - the zero-based column number of the first column\0A in the region\0A row_start - the zero-based row number of the first row\0A in the region\0A cols_out - the number of columns in the region\0A rows_out - the number of rows in the region\0A file_in - the input grid filename\0A output: file_out - the output grid filename\0A option: v - verbose (may be repeated)\0A b - byte swap the data\0A s scale - multiply the (byte-swapped) data by scale.\0A The default value of scale is 1.0.\0A f - treat the (byte-swapped) data as\0A floating-point for the purposes of scaling,\0A so bytes_per_cell must be 4 or 8.\0A c cells_per_col - number of cells in each col.\0A The default value of cells_per_col is 1.\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 ([1332 x i8], [1332 x i8]* @.str.1, i64 0, i64 0))
%3 = load i32, i32* @EXIT_FAILURE
%4 = tail call i32 @exit(i32 %3)
unreachable
}