#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*/ fputs(char const *, int /*<<< orphan*/);
int /*<<< orphan*/ stdout;
void usage() {
  const char *usage_str =
      "Usage: flash [OPTIONS] MATES_1.FASTQ MATES_2.FASTQ\n"
      "\n"
      "DESCRIPTION:\n"
      "\n"
      "FLASH (Fast Length Adjustment of SHort reads) is an accurate and fast "
      "tool\n"
      "to merge paired-end reads that were generated from DNA fragments whose\n"
      "lengths are shorter than twice the length of reads.  Merged read pairs "
      "result\n"
      "in unpaired longer reads.  Longer reads are generally more desired in "
      "genome\n"
      "assembly and genome analysis processes.\n"
      "\n"
      "MANDATORY INPUT:\n"
      "\n"
      "To run FLASH, you may provide two FASTQ files of paired-end reads\n"
      "where corresponding paired reads are in the same order in both files.\n"
      "Alternatively, you may provide one FASTQ file, which may be standard "
      "input,\n"
      "containing interleaved paired-end reads (see the --interleaved "
      "option).\n"
      "The input FASTQ files may be either plain-text or compressed with "
      "gzip.\n"
      "Other compression formats for the input files are not yet supported.\n"
      "\n"
      "OUTPUT:\n"
      "\n"
      "The default output of FLASH is a FASTQ file containing the extended "
      "fragments\n"
      "produced by combining read pairs, two FASTQ files containing read "
      "pairs\n"
      "that were not combined, and histogram files that show the distribution "
      "of\n"
      "lengths of the extended fragments.  Writing the uncombined read pairs "
      "to an\n"
      "interleaved FASTQ file is also supported.  Also, writing the extended\n"
      "fragments directly to standard output is supported.  Plain-text and "
      "gzip\n"
      "output formats are natively supported; other output formats are "
      "supported\n"
      "indirectly via the --compress-prog option.  (Note that this is all "
      "FASTQ.)\n"
      "\n"
      "OPTIONS:\n"
      "\n"
      "  -m, --min-overlap=NUM   The minimum required overlap length between "
      "two\n"
      "                          reads to provide a confident overlap.  "
      "Default:\n"
      "                          10bp.\n"
      "\n"
      "  -M, --max-overlap=NUM   Maximum overlap length expected in "
      "approximately\n"
      "                          90% of read pairs.  It is by default set to "
      "70bp,\n"
      "                          which works well for 100bp reads generated "
      "from a\n"
      "                          180bp library, assuming a normal distribution "
      "of\n"
      "                          fragment lengths.  Overlaps longer than the "
      "maximum\n"
      "                          overlap parameter are still considered as "
      "good\n"
      "                          overlaps, but the mismatch density (explained "
      "below)\n"
      "                          is calculated over the first max_overlap "
      "bases in\n"
      "                          the overlapped region rather than the entire\n"
      "                          overlap.  Default: 70bp, or calculated from "
      "the\n"
      "                          specified read length, fragment length, and "
      "fragment\n"
      "                          length standard deviation.\n"
      "\n"
      "  -x, --max-mismatch-density=NUM\n"
      "                          Maximum allowed ratio between the number of\n"
      "                          mismatched base pairs and the overlap "
      "length.\n"
      "                          Two reads will not be combined with a given "
      "overlap\n"
      "                          if that overlap results in a mismatched base "
      "density\n"
      "                          higher than this value.  Note: Any occurence "
      "of an\n"
      "                          'N' in either read is ignored and not "
      "counted\n"
      "                          towards the mismatches or overlap length.  "
      "Our\n"
      "                          experimental results suggest that higher "
      "values of\n"
      "                          the maximum mismatch density yield larger\n"
      "                          numbers of correctly merged read pairs but "
      "at\n"
      "                          the expense of higher numbers of incorrectly\n"
      "                          merged read pairs.  Default: 0.25.\n"
      "\n"
      "  -p, --phred-offset=OFFSET\n"
      "                          The smallest ASCII value of the characters "
      "used to\n"
      "                          represent quality values of bases in FASTQ "
      "files.\n"
      "                          It should be set to either 33, which "
      "corresponds\n"
      "                          to the later Illumina platforms and Sanger\n"
      "                          platforms, or 64, which corresponds to the\n"
      "                          earlier Illumina platforms.  Default: 33.\n"
      "\n"
      "  -r, --read-len=LEN\n"
      "  -f, --fragment-len=LEN\n"
      "  -s, --fragment-len-stddev=LEN\n"
      "                          Average read length, fragment length, and "
      "fragment\n"
      "                          standard deviation.  These are convenience "
      "parameters\n"
      "                          only, as they are only used for calculating "
      "the\n"
      "                          maximum overlap (--max-overlap) parameter.\n"
      "                          The maximum overlap is calculated as the "
      "overlap of\n"
      "                          average-length reads from an average-size "
      "fragment\n"
      "                          plus 2.5 times the fragment length standard\n"
      "                          deviation.  The default values are -r 100, -f "
      "180,\n"
      "                          and -s 18, so this works out to a maximum "
      "overlap of\n"
      "                          70 bp.  If --max-overlap is specified, then "
      "the\n"
      "                          specified value overrides the calculated "
      "value.\n"
      "\n"
      "                          If you do not know the standard deviation of "
      "the\n"
      "                          fragment library, you can probably assume "
      "that the\n"
      "                          standard deviation is 10% of the average "
      "fragment\n"
      "                          length.\n"
      "\n"
      "  --interleaved-input     Instead of requiring files MATES_1.FASTQ and\n"
      "                          MATES_2.FASTQ, allow a single file "
      "MATES.FASTQ that\n"
      "                          has the paired-end reads interleaved.  "
      "Specify \"-\"\n"
      "                          to read from standard input.\n"
      "\n"
      "  --interleaved-output    Write the uncombined pairs in interleaved "
      "format.\n"
      "\n"
      "  -I, --interleaved       Equivalent to specifying both "
      "--interleaved-input\n"
      "                          and --interleaved-output.\n"
      "\n"
      "  -o, --output-prefix=PREFIX\n"
      "                          Prefix of output files.  Default: \"out\".\n"
      "\n"
      "  -d, --output-directory=DIR\n"
      "                          Path to directory for output files.  "
      "Default:\n"
      "                          current working directory.\n"
      "\n"
      "  -c, --to-stdout         Write the combined reads to standard output; "
      "do not\n"
      "                          write uncombined reads to anywhere.\n"
      "\n"
      "  -z, --compress          Compress the FASTQ output files directly with "
      "zlib.\n"
      "                          Similar to specifying --compress-prog=gzip "
      "and\n"
      "                          --suffix=gz, but may be slightly faster.\n"
      "\n"
      "  --compress-prog=PROG    Pipe the output through the compression "
      "program\n"
      "                          PROG, which will be called as `PROG -c -',\n"
      "                          plus any arguments specified by "
      "--compress-prog-args.\n"
      "                          PROG must read uncompressed data from "
      "standard input\n"
      "                          and write compressed data to standard "
      "output.\n"
      "                          Examples: gzip, bzip2, xz, pigz.\n"
      "\n"
      "  --compress-prog-args=ARGS\n"
      "                          A string of arguments that will be passed to "
      "the\n"
      "                          compression program if one is specified with\n"
      "                          --compress-prog.  Note: the argument -c is "
      "already\n"
      "                          assumed.\n"
      "\n"
      "  --suffix=SUFFIX, --output-suffix=SUFFIX\n"
      "                          Use SUFFIX as the suffix of the output files\n"
      "                          after \".fastq\".  A dot before the suffix is "
      "assumed,\n"
      "                          unless an empty suffix is provided.  "
      "Default:\n"
      "                          nothing; or 'gz' if -z is specified; or PROG "
      "if\n"
      "                          --compress-prog is specified.\n"
      "\n"
      "  -t, --threads=NTHREADS  Set the number of worker threads.  This is "
      "in\n"
      "                          addition to the I/O threads.  Default: number "
      "of\n"
      "                          processors.  Note: if you need FLASH's output "
      "to\n"
      "                          appear deterministically or in the same order "
      "as\n"
      "                          the original reads, you must specify -t 1\n"
      "                          (--threads=1).\n"
      "\n"
      "  -q, --quiet             Do not print informational messages.  "
      "(Implied with\n"
      "                          --to-stdout.)\n"
      "\n"
      "  -h, --help              Display this help and exit.\n"
      "\n"
      "  -v, --version           Display version.\n";
  fputs(usage_str, stdout);
}


x86 assembly (clang, -O0):
<usage>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
lea    0xee1(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
mov    0x4eb2(%rip),%rax
mov    (%rax),%esi
call   1030 <fputs@plt>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<usage>:
mov    0x4ec9(%rip),%rax
mov    (%rax),%esi
lea    0xee0(%rip),%rdi
jmp    1030 <fputs@plt>

LLVM IR (-O0):
@.str = [7910 x i8] c"Usage: flash [OPTIONS] MATES_1.FASTQ MATES_2.FASTQ\0A\0ADESCRIPTION:\0A\0AFLASH (Fast Length Adjustment of SHort reads) is an accurate and fast tool\0Ato merge paired-end reads that were generated from DNA fragments whose\0Alengths are shorter than twice the length of reads. Merged read pairs result\0Ain unpaired longer reads. Longer reads are generally more desired in genome\0Aassembly and genome analysis processes.\0A\0AMANDATORY INPUT:\0A\0ATo run FLASH, you may provide two FASTQ files of paired-end reads\0Awhere corresponding paired reads are in the same order in both files.\0AAlternatively, you may provide one FASTQ file, which may be standard input,\0Acontaining interleaved paired-end reads (see the --interleaved option).\0AThe input FASTQ files may be either plain-text or compressed with gzip.\0AOther compression formats for the input files are not yet supported.\0A\0AOUTPUT:\0A\0AThe default output of FLASH is a FASTQ file containing the extended fragments\0Aproduced by combining read pairs, two FASTQ files containing read pairs\0Athat were not combined, and histogram files that show the distribution of\0Alengths of the extended fragments. Writing the uncombined read pairs to an\0Ainterleaved FASTQ file is also supported. Also, writing the extended\0Afragments directly to standard output is supported. Plain-text and gzip\0Aoutput formats are natively supported; other output formats are supported\0Aindirectly via the --compress-prog option. (Note that this is all FASTQ.)\0A\0AOPTIONS:\0A\0A -m, --min-overlap=NUM The minimum required overlap length between two\0A reads to provide a confident overlap. Default:\0A 10bp.\0A\0A -M, --max-overlap=NUM Maximum overlap length expected in approximately\0A 90% of read pairs. It is by default set to 70bp,\0A which works well for 100bp reads generated from a\0A 180bp library, assuming a normal distribution of\0A fragment lengths. Overlaps longer than the maximum\0A overlap parameter are still considered as good\0A overlaps, but the mismatch density (explained below)\0A is calculated over the first max_overlap bases in\0A the overlapped region rather than the entire\0A overlap. Default: 70bp, or calculated from the\0A specified read length, fragment length, and fragment\0A length standard deviation.\0A\0A -x, --max-mismatch-density=NUM\0A Maximum allowed ratio between the number of\0A mismatched base pairs and the overlap length.\0A Two reads will not be combined with a given overlap\0A if that overlap results in a mismatched base density\0A higher than this value. Note: Any occurence of an\0A 'N' in either read is ignored and not counted\0A towards the mismatches or overlap length. Our\0A experimental results suggest that higher values of\0A the maximum mismatch density yield larger\0A numbers of correctly merged read pairs but at\0A the expense of higher numbers of incorrectly\0A merged read pairs. Default: 0.25.\0A\0A -p, --phred-offset=OFFSET\0A The smallest ASCII value of the characters used to\0A represent quality values of bases in FASTQ files.\0A It should be set to either 33, which corresponds\0A to the later Illumina platforms and Sanger\0A platforms, or 64, which corresponds to the\0A earlier Illumina platforms. Default: 33.\0A\0A -r, --read-len=LEN\0A -f, --fragment-len=LEN\0A -s, --fragment-len-stddev=LEN\0A Average read length, fragment length, and fragment\0A standard deviation. These are convenience parameters\0A only, as they are only used for calculating the\0A maximum overlap (--max-overlap) parameter.\0A The maximum overlap is calculated as the overlap of\0A average-length reads from an average-size fragment\0A plus 2.5 times the fragment length standard\0A deviation. The default values are -r 100, -f 180,\0A and -s 18, so this works out to a maximum overlap of\0A 70 bp. If --max-overlap is specified, then the\0A specified value overrides the calculated value.\0A\0A If you do not know the standard deviation of the\0A fragment library, you can probably assume that the\0A standard deviation is 10% of the average fragment\0A length.\0A\0A --interleaved-input Instead of requiring files MATES_1.FASTQ and\0A MATES_2.FASTQ, allow a single file MATES.FASTQ that\0A has the paired-end reads interleaved. Specify \22-\22\0A to read from standard input.\0A\0A --interleaved-output Write the uncombined pairs in interleaved format.\0A\0A -I, --interleaved Equivalent to specifying both --interleaved-input\0A and --interleaved-output.\0A\0A -o, --output-prefix=PREFIX\0A Prefix of output files. Default: \22out\22.\0A\0A -d, --output-directory=DIR\0A Path to directory for output files. Default:\0A current working directory.\0A\0A -c, --to-stdout Write the combined reads to standard output; do not\0A write uncombined reads to anywhere.\0A\0A -z, --compress Compress the FASTQ output files directly with zlib.\0A Similar to specifying --compress-prog=gzip and\0A --suffix=gz, but may be slightly faster.\0A\0A --compress-prog=PROG Pipe the output through the compression program\0A PROG, which will be called as `PROG -c -',\0A plus any arguments specified by --compress-prog-args.\0A PROG must read uncompressed data from standard input\0A and write compressed data to standard output.\0A Examples: gzip, bzip2, xz, pigz.\0A\0A --compress-prog-args=ARGS\0A A string of arguments that will be passed to the\0A compression program if one is specified with\0A --compress-prog. Note: the argument -c is already\0A assumed.\0A\0A --suffix=SUFFIX, --output-suffix=SUFFIX\0A Use SUFFIX as the suffix of the output files\0A after \22.fastq\22. A dot before the suffix is assumed,\0A unless an empty suffix is provided. Default:\0A nothing; or 'gz' if -z is specified; or PROG if\0A --compress-prog is specified.\0A\0A -t, --threads=NTHREADS Set the number of worker threads. This is in\0A addition to the I/O threads. Default: number of\0A processors. Note: if you need FLASH's output to\0A appear deterministically or in the same order as\0A the original reads, you must specify -t 1\0A (--threads=1).\0A\0A -q, --quiet Do not print informational messages. (Implied with\0A --to-stdout.)\0A\0A -h, --help Display this help and exit.\0A\0A -v, --version Display version.\0A\00"
@stdout = global i32 0
define void @usage() {
%1 = alloca i8*
store i8* getelementptr inbounds ([7910 x i8], [7910 x i8]* @.str, i64 0, i64 0), i8** %1
%2 = load i8*, i8** %1
%3 = load i32, i32* @stdout
%4 = call i32 @fputs(i8* %2, i32 %3)
ret void
}

LLVM IR (-O2):
@.str = [7910 x i8] c"Usage: flash [OPTIONS] MATES_1.FASTQ MATES_2.FASTQ\0A\0ADESCRIPTION:\0A\0AFLASH (Fast Length Adjustment of SHort reads) is an accurate and fast tool\0Ato merge paired-end reads that were generated from DNA fragments whose\0Alengths are shorter than twice the length of reads. Merged read pairs result\0Ain unpaired longer reads. Longer reads are generally more desired in genome\0Aassembly and genome analysis processes.\0A\0AMANDATORY INPUT:\0A\0ATo run FLASH, you may provide two FASTQ files of paired-end reads\0Awhere corresponding paired reads are in the same order in both files.\0AAlternatively, you may provide one FASTQ file, which may be standard input,\0Acontaining interleaved paired-end reads (see the --interleaved option).\0AThe input FASTQ files may be either plain-text or compressed with gzip.\0AOther compression formats for the input files are not yet supported.\0A\0AOUTPUT:\0A\0AThe default output of FLASH is a FASTQ file containing the extended fragments\0Aproduced by combining read pairs, two FASTQ files containing read pairs\0Athat were not combined, and histogram files that show the distribution of\0Alengths of the extended fragments. Writing the uncombined read pairs to an\0Ainterleaved FASTQ file is also supported. Also, writing the extended\0Afragments directly to standard output is supported. Plain-text and gzip\0Aoutput formats are natively supported; other output formats are supported\0Aindirectly via the --compress-prog option. (Note that this is all FASTQ.)\0A\0AOPTIONS:\0A\0A -m, --min-overlap=NUM The minimum required overlap length between two\0A reads to provide a confident overlap. Default:\0A 10bp.\0A\0A -M, --max-overlap=NUM Maximum overlap length expected in approximately\0A 90% of read pairs. It is by default set to 70bp,\0A which works well for 100bp reads generated from a\0A 180bp library, assuming a normal distribution of\0A fragment lengths. Overlaps longer than the maximum\0A overlap parameter are still considered as good\0A overlaps, but the mismatch density (explained below)\0A is calculated over the first max_overlap bases in\0A the overlapped region rather than the entire\0A overlap. Default: 70bp, or calculated from the\0A specified read length, fragment length, and fragment\0A length standard deviation.\0A\0A -x, --max-mismatch-density=NUM\0A Maximum allowed ratio between the number of\0A mismatched base pairs and the overlap length.\0A Two reads will not be combined with a given overlap\0A if that overlap results in a mismatched base density\0A higher than this value. Note: Any occurence of an\0A 'N' in either read is ignored and not counted\0A towards the mismatches or overlap length. Our\0A experimental results suggest that higher values of\0A the maximum mismatch density yield larger\0A numbers of correctly merged read pairs but at\0A the expense of higher numbers of incorrectly\0A merged read pairs. Default: 0.25.\0A\0A -p, --phred-offset=OFFSET\0A The smallest ASCII value of the characters used to\0A represent quality values of bases in FASTQ files.\0A It should be set to either 33, which corresponds\0A to the later Illumina platforms and Sanger\0A platforms, or 64, which corresponds to the\0A earlier Illumina platforms. Default: 33.\0A\0A -r, --read-len=LEN\0A -f, --fragment-len=LEN\0A -s, --fragment-len-stddev=LEN\0A Average read length, fragment length, and fragment\0A standard deviation. These are convenience parameters\0A only, as they are only used for calculating the\0A maximum overlap (--max-overlap) parameter.\0A The maximum overlap is calculated as the overlap of\0A average-length reads from an average-size fragment\0A plus 2.5 times the fragment length standard\0A deviation. The default values are -r 100, -f 180,\0A and -s 18, so this works out to a maximum overlap of\0A 70 bp. If --max-overlap is specified, then the\0A specified value overrides the calculated value.\0A\0A If you do not know the standard deviation of the\0A fragment library, you can probably assume that the\0A standard deviation is 10% of the average fragment\0A length.\0A\0A --interleaved-input Instead of requiring files MATES_1.FASTQ and\0A MATES_2.FASTQ, allow a single file MATES.FASTQ that\0A has the paired-end reads interleaved. Specify \22-\22\0A to read from standard input.\0A\0A --interleaved-output Write the uncombined pairs in interleaved format.\0A\0A -I, --interleaved Equivalent to specifying both --interleaved-input\0A and --interleaved-output.\0A\0A -o, --output-prefix=PREFIX\0A Prefix of output files. Default: \22out\22.\0A\0A -d, --output-directory=DIR\0A Path to directory for output files. Default:\0A current working directory.\0A\0A -c, --to-stdout Write the combined reads to standard output; do not\0A write uncombined reads to anywhere.\0A\0A -z, --compress Compress the FASTQ output files directly with zlib.\0A Similar to specifying --compress-prog=gzip and\0A --suffix=gz, but may be slightly faster.\0A\0A --compress-prog=PROG Pipe the output through the compression program\0A PROG, which will be called as `PROG -c -',\0A plus any arguments specified by --compress-prog-args.\0A PROG must read uncompressed data from standard input\0A and write compressed data to standard output.\0A Examples: gzip, bzip2, xz, pigz.\0A\0A --compress-prog-args=ARGS\0A A string of arguments that will be passed to the\0A compression program if one is specified with\0A --compress-prog. Note: the argument -c is already\0A assumed.\0A\0A --suffix=SUFFIX, --output-suffix=SUFFIX\0A Use SUFFIX as the suffix of the output files\0A after \22.fastq\22. A dot before the suffix is assumed,\0A unless an empty suffix is provided. Default:\0A nothing; or 'gz' if -z is specified; or PROG if\0A --compress-prog is specified.\0A\0A -t, --threads=NTHREADS Set the number of worker threads. This is in\0A addition to the I/O threads. Default: number of\0A processors. Note: if you need FLASH's output to\0A appear deterministically or in the same order as\0A the original reads, you must specify -t 1\0A (--threads=1).\0A\0A -q, --quiet Do not print informational messages. (Implied with\0A --to-stdout.)\0A\0A -h, --help Display this help and exit.\0A\0A -v, --version Display version.\0A\00"
@stdout = global i32 0
define void @usage() {
%1 = load i32, i32* @stdout
%2 = tail call i32 @fputs(i8* getelementptr inbounds ([7910 x i8], [7910 x i8]* @.str, i64 0, i64 0), i32 %1)
ret void
}