#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(int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *);
void usage() {
  printf(
      "Tool:    ga_nuc_summit\n\nSummary: report the nucleotide "
      "composition(number of ATCG) or AT content around summit.\n\nUsage:   "
      "ga_nuc_summit -fa <fasta> -smt <summit file> -gt <genome table> -n_flag "
      "<nucleotide flag:A | T | C | G | AT>\n\nOptions:\n         -v: output "
      "version information and exit.\n         -h, --help: display this help "
      "and exit.\n         --header: the first line of the summit file is "
      "considered as header (default:off).\n         --col_chr: <int> column "
      "number for chromosome of summit file (default:0).\n         "
      "--col_start: <int> column number for start position of summit file "
      "(default:1).\n         --col_end: <int> column number for end position "
      "of summit file (default:2).\n         --col_strand: <int> column number "
      "for strand of summit file (default:-1).\n         --hw: <int> half "
      "range size (default:1000).\n         --step: <int> step size "
      "(default:10).\n         --win: <int> window size (default:100).\n");
  exit(0);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<usage>:
push   %rax
lea    0xed8(%rip),%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1040 <exit@plt>

LLVM IR (-O0):
@.str = [922 x i8] c"Tool: ga_nuc_summit\0A\0ASummary: report the nucleotide composition(number of ATCG) or AT content around summit.\0A\0AUsage: ga_nuc_summit -fa <fasta> -smt <summit file> -gt <genome table> -n_flag <nucleotide flag:A | T | C | G | AT>\0A\0AOptions:\0A -v: output version information and exit.\0A -h, --help: display this help and exit.\0A --header: the first line of the summit file is considered as header (default:off).\0A --col_chr: <int> column number for chromosome of summit file (default:0).\0A --col_start: <int> column number for start position of summit file (default:1).\0A --col_end: <int> column number for end position of summit file (default:2).\0A --col_strand: <int> column number for strand of summit file (default:-1).\0A --hw: <int> half range size (default:1000).\0A --step: <int> step size (default:10).\0A --win: <int> window size (default:100).\0A\00"
define void @usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([922 x i8], [922 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [921 x i8] c"Tool: ga_nuc_summit\0A\0ASummary: report the nucleotide composition(number of ATCG) or AT content around summit.\0A\0AUsage: ga_nuc_summit -fa <fasta> -smt <summit file> -gt <genome table> -n_flag <nucleotide flag:A | T | C | G | AT>\0A\0AOptions:\0A -v: output version information and exit.\0A -h, --help: display this help and exit.\0A --header: the first line of the summit file is considered as header (default:off).\0A --col_chr: <int> column number for chromosome of summit file (default:0).\0A --col_start: <int> column number for start position of summit file (default:1).\0A --col_end: <int> column number for end position of summit file (default:2).\0A --col_strand: <int> column number for strand of summit file (default:-1).\0A --hw: <int> half range size (default:1000).\0A --step: <int> step size (default:10).\0A --win: <int> window size (default:100).\00"
define void @usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([921 x i8], [921 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}