#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*/ printf(char *, char *);
void print_usage() {
  printf("%s",
         "USAGE: ./TransGeneScan -s [seq_file_name] -o [output_file_name] -w "
         "[1 or 0] -t [train_file_name] (-p [thread_num])\n\n");
  printf("%s", "       Mandatory parameters\n");
  printf("%s", "       [seq_file_name]:    sequence file name including the "
               "full path\n");
  printf(
      "%s",
      "       [output_file_name]: output file name including the full path\n");
  printf("%s", "       [1 or 0]:           1 if the sequence file has complete "
               "genomic sequences\n");
  printf("%s", "                           0 if the sequence file has short "
               "sequence reads\n");
  printf("%s", "       [train_file_name]:  file name that contains model "
               "parameters; this file should be in the \"train\" directory\n");
  printf("%s", "                           Note that four files containing "
               "model parameters already exist in the \"train\" directory\n");
  printf("%s", "                           [complete] for complete genomic "
               "sequences or short sequence reads without sequencing error\n");
  printf("%s", "                           [sanger_5] for Sanger sequencing "
               "reads with about 0.5% error rate\n");
  printf("%s", "                           [sanger_10] for Sanger sequencing "
               "reads with about 1% error rate\n");
  printf("%s", "                           [454_5] for 454 pyrosequencing "
               "reads with about 0.5% error rate\n");
  printf("%s", "                           [454_10] for 454 pyrosequencing "
               "reads with about 1% error rate\n");
  printf("%s", "                           [454_30] for 454 pyrosequencing "
               "reads with about 3% error rate\n");
  printf("%s", "                           [illumina_5] for Illumina "
               "sequencing reads with about 0.5% error rate\n");
  printf("%s", "                           [illumina_10] for Illumina "
               "sequencing reads with about 1% error rate\n\n");
  printf("%s", "       Optional parameter\n");
  printf("%s", "       [thread_num]:       the number of threads used by "
               "FragGeneScan; default is 1 thread.\n");
}


x86 assembly (clang, -O0):
<print_usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xee5(%rip),%rdi
lea    0xee1(%rip),%rsi
call   1030 <printf@plt>
lea    0xed2(%rip),%rdi
lea    0xf43(%rip),%rsi
call   1030 <printf@plt>
lea    0xebf(%rip),%rdi
lea    0xf4d(%rip),%rsi
call   1030 <printf@plt>
lea    0xeac(%rip),%rdi
lea    0xf81(%rip),%rsi
call   1030 <printf@plt>
lea    0xe99(%rip),%rdi
lea    0xfb3(%rip),%rsi
call   1030 <printf@plt>
lea    0xe86(%rip),%rdi
lea    0xff2(%rip),%rsi
call   1030 <printf@plt>
lea    0xe73(%rip),%rdi
lea    0x102b(%rip),%rsi
call   1030 <printf@plt>
lea    0xe60(%rip),%rdi
lea    0x108b(%rip),%rsi
call   1030 <printf@plt>
lea    0xe4d(%rip),%rdi
lea    0x10ec(%rip),%rsi
call   1030 <printf@plt>
lea    0xe3a(%rip),%rdi
lea    0x1150(%rip),%rsi
call   1030 <printf@plt>
lea    0xe27(%rip),%rdi
lea    0x119b(%rip),%rsi
call   1030 <printf@plt>
lea    0xe14(%rip),%rdi
lea    0x11e5(%rip),%rsi
call   1030 <printf@plt>
lea    0xe01(%rip),%rdi
lea    0x122e(%rip),%rsi
call   1030 <printf@plt>
lea    0xdee(%rip),%rdi
lea    0x1276(%rip),%rsi
call   1030 <printf@plt>
lea    0xddb(%rip),%rdi
lea    0x12be(%rip),%rsi
call   1030 <printf@plt>
lea    0xdc8(%rip),%rdi
lea    0x130d(%rip),%rsi
call   1030 <printf@plt>
lea    0xdb5(%rip),%rdi
lea    0x135c(%rip),%rsi
call   1030 <printf@plt>
lea    0xda2(%rip),%rdi
lea    0x1364(%rip),%rsi
call   1030 <printf@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<print_usage>:
push   %rbx
lea    0xee8(%rip),%rbx
lea    0xee4(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0xf4a(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0xf58(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0xf90(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0xfc6(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x1009(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x1046(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x10aa(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x110f(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x1177(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x11c6(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x1214(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x1261(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x12ad(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x12f9(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x134c(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x139f(%rip),%rsi
mov    %rbx,%rdi
call   1030 <printf@plt>
lea    0x13ab(%rip),%rsi
mov    %rbx,%rdi
pop    %rbx
jmp    1030 <printf@plt>

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [117 x i8] c"USAGE: ./TransGeneScan -s [seq_file_name] -o [output_file_name] -w [1 or 0] -t [train_file_name] (-p [thread_num])\0A\0A\00"
@.str.2 = [29 x i8] c" Mandatory parameters\0A\00"
@.str.3 = [71 x i8] c" [seq_file_name]: sequence file name including the full path\0A\00"
@.str.4 = [69 x i8] c" [output_file_name]: output file name including the full path\0A\00"
@.str.5 = [82 x i8] c" [1 or 0]: 1 if the sequence file has complete genomic sequences\0A\00"
@.str.6 = [76 x i8] c" 0 if the sequence file has short sequence reads\0A\00"
@.str.7 = [115 x i8] c" [train_file_name]: file name that contains model parameters; this file should be in the \22train\22 directory\0A\00"
@.str.8 = [116 x i8] c" Note that four files containing model parameters already exist in the \22train\22 directory\0A\00"
@.str.9 = [119 x i8] c" [complete] for complete genomic sequences or short sequence reads without sequencing error\0A\00"
@.str.10 = [94 x i8] c" [sanger_5] for Sanger sequencing reads with about 0.5% error rate\0A\00"
@.str.11 = [93 x i8] c" [sanger_10] for Sanger sequencing reads with about 1% error rate\0A\00"
@.str.12 = [92 x i8] c" [454_5] for 454 pyrosequencing reads with about 0.5% error rate\0A\00"
@.str.13 = [91 x i8] c" [454_10] for 454 pyrosequencing reads with about 1% error rate\0A\00"
@.str.14 = [91 x i8] c" [454_30] for 454 pyrosequencing reads with about 3% error rate\0A\00"
@.str.15 = [98 x i8] c" [illumina_5] for Illumina sequencing reads with about 0.5% error rate\0A\00"
@.str.16 = [98 x i8] c" [illumina_10] for Illumina sequencing reads with about 1% error rate\0A\0A\00"
@.str.17 = [27 x i8] c" Optional parameter\0A\00"
@.str.18 = [93 x i8] c" [thread_num]: the number of threads used by FragGeneScan; default is 1 thread.\0A\00"
define void @print_usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([117 x i8], [117 x i8]* @.str.1, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.4, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([82 x i8], [82 x i8]* @.str.5, i64 0, i64 0))
%6 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.6, i64 0, i64 0))
%7 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([115 x i8], [115 x i8]* @.str.7, i64 0, i64 0))
%8 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([116 x i8], [116 x i8]* @.str.8, i64 0, i64 0))
%9 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([119 x i8], [119 x i8]* @.str.9, i64 0, i64 0))
%10 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([94 x i8], [94 x i8]* @.str.10, i64 0, i64 0))
%11 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.11, i64 0, i64 0))
%12 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.12, i64 0, i64 0))
%13 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str.13, i64 0, i64 0))
%14 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str.14, i64 0, i64 0))
%15 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.15, i64 0, i64 0))
%16 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.16, i64 0, i64 0))
%17 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.17, i64 0, i64 0))
%18 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.18, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str = [3 x i8] c"%s\00"
@.str.1 = [117 x i8] c"USAGE: ./TransGeneScan -s [seq_file_name] -o [output_file_name] -w [1 or 0] -t [train_file_name] (-p [thread_num])\0A\0A\00"
@.str.2 = [29 x i8] c" Mandatory parameters\0A\00"
@.str.3 = [71 x i8] c" [seq_file_name]: sequence file name including the full path\0A\00"
@.str.4 = [69 x i8] c" [output_file_name]: output file name including the full path\0A\00"
@.str.5 = [82 x i8] c" [1 or 0]: 1 if the sequence file has complete genomic sequences\0A\00"
@.str.6 = [76 x i8] c" 0 if the sequence file has short sequence reads\0A\00"
@.str.7 = [115 x i8] c" [train_file_name]: file name that contains model parameters; this file should be in the \22train\22 directory\0A\00"
@.str.8 = [116 x i8] c" Note that four files containing model parameters already exist in the \22train\22 directory\0A\00"
@.str.9 = [119 x i8] c" [complete] for complete genomic sequences or short sequence reads without sequencing error\0A\00"
@.str.10 = [94 x i8] c" [sanger_5] for Sanger sequencing reads with about 0.5% error rate\0A\00"
@.str.11 = [93 x i8] c" [sanger_10] for Sanger sequencing reads with about 1% error rate\0A\00"
@.str.12 = [92 x i8] c" [454_5] for 454 pyrosequencing reads with about 0.5% error rate\0A\00"
@.str.13 = [91 x i8] c" [454_10] for 454 pyrosequencing reads with about 1% error rate\0A\00"
@.str.14 = [91 x i8] c" [454_30] for 454 pyrosequencing reads with about 3% error rate\0A\00"
@.str.15 = [98 x i8] c" [illumina_5] for Illumina sequencing reads with about 0.5% error rate\0A\00"
@.str.16 = [98 x i8] c" [illumina_10] for Illumina sequencing reads with about 1% error rate\0A\0A\00"
@.str.17 = [27 x i8] c" Optional parameter\0A\00"
@.str.18 = [93 x i8] c" [thread_num]: the number of threads used by FragGeneScan; default is 1 thread.\0A\00"
define void @print_usage() {
%1 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([117 x i8], [117 x i8]* @.str.1, i64 0, i64 0))
%2 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([29 x i8], [29 x i8]* @.str.2, i64 0, i64 0))
%3 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.3, i64 0, i64 0))
%4 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([69 x i8], [69 x i8]* @.str.4, i64 0, i64 0))
%5 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([82 x i8], [82 x i8]* @.str.5, i64 0, i64 0))
%6 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([76 x i8], [76 x i8]* @.str.6, i64 0, i64 0))
%7 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([115 x i8], [115 x i8]* @.str.7, i64 0, i64 0))
%8 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([116 x i8], [116 x i8]* @.str.8, i64 0, i64 0))
%9 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([119 x i8], [119 x i8]* @.str.9, i64 0, i64 0))
%10 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([94 x i8], [94 x i8]* @.str.10, i64 0, i64 0))
%11 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.11, i64 0, i64 0))
%12 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([92 x i8], [92 x i8]* @.str.12, i64 0, i64 0))
%13 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str.13, i64 0, i64 0))
%14 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([91 x i8], [91 x i8]* @.str.14, i64 0, i64 0))
%15 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.15, i64 0, i64 0))
%16 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([98 x i8], [98 x i8]* @.str.16, i64 0, i64 0))
%17 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([27 x i8], [27 x i8]* @.str.17, i64 0, i64 0))
%18 = tail call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([93 x i8], [93 x i8]* @.str.18, i64 0, i64 0))
ret void
}