#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 print_usage_and_exit() {
  printf(
      "\n"
      "Usage: gkmmatrix [options] <pos_seqfile> <neg_seqfile> <output_kernel>\n"
      "\n"
      " build kernel matrix of gkm-SVM\n"
      "\n"
      "Arguments:\n"
      " pos_seqfile: positive sequence file (fasta format)\n"
      " neg_seqfile: negative sequence file (fasta format)\n"
      " output_kernel: output kernel file\n"
      "\n"
      "Options:\n"
      " -t <0 ~ 5>   set type of kernel function (default: 2)\n"
      "                0 -- gapped-kmer (gkm)\n"
      "                1 -- estimated l-mer with full filter\n"
      "                2 -- estimated l-mer with truncated filter\n"
      "                3 -- truncated filter + radial basis function (RBF)\n"
      "                4 -- truncated filter + positional weights (PW)\n"
      "                5 -- truncated filter + PW + RBF\n"
      " -l <int>     set word length, 3<=l<=12 (default: 10)\n"
      " -k <int>     set number of informative column, k<=l (default: 6)\n"
      " -d <int>     set maximum number of mismatches to consider, d<=4 "
      "(default: 3)\n"
      " -g <float>   set gamma for RBF kernel (-t 3 or 5) (default: 1.0)\n"
      " -v <0 ~ 4>   set the level of verbosity (default: 2)\n"
      "                0 -- error msgs only (ERROR)\n"
      "                1 -- warning msgs (WARN)\n"
      "                2 -- progress msgs at coarse-grained level (INFO)\n"
      "                3 -- progress msgs at fine-grained level (DEBUG)\n"
      "                4 -- progress msgs at finer-grained level (TRACE)\n"
      "-T <1|4|16>   set the number of threads for parallel calculation, 1, 4, "
      "or 16\n"
      "              (default: 1)\n"
      "\n");
  exit(0);
}


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

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

LLVM IR (-O0):
@.str = [1362 x i8] c"\0AUsage: gkmmatrix [options] <pos_seqfile> <neg_seqfile> <output_kernel>\0A\0A build kernel matrix of gkm-SVM\0A\0AArguments:\0A pos_seqfile: positive sequence file (fasta format)\0A neg_seqfile: negative sequence file (fasta format)\0A output_kernel: output kernel file\0A\0AOptions:\0A -t <0 ~ 5> set type of kernel function (default: 2)\0A 0 -- gapped-kmer (gkm)\0A 1 -- estimated l-mer with full filter\0A 2 -- estimated l-mer with truncated filter\0A 3 -- truncated filter + radial basis function (RBF)\0A 4 -- truncated filter + positional weights (PW)\0A 5 -- truncated filter + PW + RBF\0A -l <int> set word length, 3<=l<=12 (default: 10)\0A -k <int> set number of informative column, k<=l (default: 6)\0A -d <int> set maximum number of mismatches to consider, d<=4 (default: 3)\0A -g <float> set gamma for RBF kernel (-t 3 or 5) (default: 1.0)\0A -v <0 ~ 4> set the level of verbosity (default: 2)\0A 0 -- error msgs only (ERROR)\0A 1 -- warning msgs (WARN)\0A 2 -- progress msgs at coarse-grained level (INFO)\0A 3 -- progress msgs at fine-grained level (DEBUG)\0A 4 -- progress msgs at finer-grained level (TRACE)\0A-T <1|4|16> set the number of threads for parallel calculation, 1, 4, or 16\0A (default: 1)\0A\0A\00"
define void @print_usage_and_exit() {
%1 = call i32 @printf(i8* getelementptr inbounds ([1362 x i8], [1362 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@str = [1361 x i8] c"\0AUsage: gkmmatrix [options] <pos_seqfile> <neg_seqfile> <output_kernel>\0A\0A build kernel matrix of gkm-SVM\0A\0AArguments:\0A pos_seqfile: positive sequence file (fasta format)\0A neg_seqfile: negative sequence file (fasta format)\0A output_kernel: output kernel file\0A\0AOptions:\0A -t <0 ~ 5> set type of kernel function (default: 2)\0A 0 -- gapped-kmer (gkm)\0A 1 -- estimated l-mer with full filter\0A 2 -- estimated l-mer with truncated filter\0A 3 -- truncated filter + radial basis function (RBF)\0A 4 -- truncated filter + positional weights (PW)\0A 5 -- truncated filter + PW + RBF\0A -l <int> set word length, 3<=l<=12 (default: 10)\0A -k <int> set number of informative column, k<=l (default: 6)\0A -d <int> set maximum number of mismatches to consider, d<=4 (default: 3)\0A -g <float> set gamma for RBF kernel (-t 3 or 5) (default: 1.0)\0A -v <0 ~ 4> set the level of verbosity (default: 2)\0A 0 -- error msgs only (ERROR)\0A 1 -- warning msgs (WARN)\0A 2 -- progress msgs at coarse-grained level (INFO)\0A 3 -- progress msgs at fine-grained level (DEBUG)\0A 4 -- progress msgs at finer-grained level (TRACE)\0A-T <1|4|16> set the number of threads for parallel calculation, 1, 4, or 16\0A (default: 1)\0A\00"
define void @print_usage_and_exit() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1361 x i8], [1361 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @exit(i32 0)
unreachable
}