#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(char *);
int /*<<< orphan*/ printf(char *);
void Usage() {
  printf("\033[00;01m"
         "NAME\n"
         "\033[00;00m"
         "\tphyml\n"
         "\033[00;00m"
         "\tA simple, fast, and accurate algorithm to estimate\n"
         "\033[00;00m"
         "\tlarge phylogenies by maximum likelihood.\n\n"
         "\033[00;00m"
         "\tStephane Guindon and Olivier Gascuel,\n"
         "\033[00;00m"
         "\tSystematic Biology 52(5):696-704, 2003.\n"
         "\033[00;00m"
         "\tPlease cite this paper if you use this software in your "
         "publications.\n");
  printf("\033[00;01m"
         "\nCOMMAND-LINE USE\n"
         "\033[00;01m"
         "\tphyml "
         "\033[00;00m"
         "[ "
         "\033[00;04m"
         "sequences"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "data_type"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "format"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "data_sets"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "bootstrap_sets"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "model"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "\n\t\t[kappa]"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "invar"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "nb_categ"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "alpha"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "tree"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "opt_topology"
         "\033[00;00m"
         " "
         "\033[00;04m"
         "opt_lengths"
         "\033[00;00m"
         " "
         "]\n");
  printf("\033[00;00m"
         "\n\tYou can use phyml with no arguments, in this case change the "
         "value of\n"
         "\033[00;00m"
         "\ta parameter by typing its corresponding character as shown on "
         "screen.\n\n"
         "\033[00;00m"
         "\tYou can alternatively use phyml with the following arguments :\n");
  printf("\033[00;04m"
         "\n\tsequence_file"
         "\033[00;00m"
         "\tDNA or Amino-Acids sequence filename (PHYLIP format)\n"
         "\033[00;04m"
         "\n\tdata type"
         "\033[00;00m"
         "\t"
         "\033[00;01m"
         "0"
         "\033[00;00m"
         " = DNA | "
         "\033[00;01m"
         "1"
         "\033[00;00m"
         " = Amino-Acids\n"
         "\033[00;04m"
         "\n\tformat"
         "\033[00;00m"
         "\t\t"
         "\033[00;01m"
         "i"
         "\033[00;00m"
         " = interleaved sequence format | "
         "\033[00;01m"
         "s"
         "\033[00;00m"
         " = sequential\n"
         "\033[00;04m"
         "\n\tdata_sets"
         "\033[00;00m"
         "\tnumber of data sets to analyse (ex:3)\n"
         "\033[00;04m"
         "\n\tbootstrap_sets"
         "\033[00;00m"
         "\tnumber of bootstrap data sets to generate (ex:2)\n"
         "\033[00;00m"
         "\t\t\tonly works with one data set to analyse\n"
         "\033[00;04m"
         "\n\tmodel"
         "\033[00;00m"
         "\t\tsubstitution model name\n"
         "\033[00;01m"
         "\t\t\tJC69 | K2P | F81 | HKY | F84 | TN93 | GTR "
         "\033[00;00m"
         "(DNA)\n"
         "\033[00;01m"
         "\t\t\tJTT | MtREV | Dayhoff | WAG "
         "\033[00;00m"
         "(Amino-Acids)\n"
         "\033[00;04m"
         "\n\tkappa"
         "\033[00;00m"
         "\t\ttransition/transversion ratio, only for DNA sequences,\n"
         "\033[00;00m"
         "\t\t\ta fixed value (ex:4.0) | "
         "\033[00;01m"
         "e"
         "\033[00;00m"
         " to get the maximum likelihood estimate\n"
         "\033[00;04m"
         "\n\tinvar"
         "\033[00;00m"
         "\t\tproportion of invariable sites,\n"
         "\033[00;00m"
         "\t\t\ta fixed value (ex:0.0) | "
         "\033[00;01m"
         "e"
         "\033[00;00m"
         " to get the maximum likelihood estimate\n"
         "\033[00;04m"
         "\n\tnb_categ"
         "\033[00;00m"
         "\tnumber of relative substitution rate categories (ex:4)\n"
         "\033[00;04m"
         "\n\talpha"
         "\033[00;00m"
         "\t\tgamma distribution parameter,\n"
         "\033[00;00m"
         "\t\t\ta fixed value (ex:1.0) | "
         "\033[00;01m"
         "e"
         "\033[00;00m"
         " to get the maximum likelihood estimate\n"
         "\033[00;04m"
         "\n\ttree"
         "\033[00;00m"
         "\t\tstarting tree filename (Newick format),\n"
         "\033[00;00m"
         "\t\t\tyour tree filename | "
         "\033[00;01m"
         "BIONJ"
         "\033[00;00m"
         " for a distance-based tree\n"
         "\033[00;04m"
         "\n\topt_topology"
         "\033[00;00m"
         "\toptimise tree topology ? "
         "\033[00;01m"
         "y | n\n"
         "\033[00;04m"
         "\n\topt_lengths"
         "\033[00;00m"
         "\toptimise branch lengths and rate parameters ? "
         "\033[00;01m"
         "y | n\n");
  printf("\033[00;00m"
         "\n\tExamples\n"
         "\033[00;00m"
         "\tDNA sequences : "
         "\033[00;01m"
         "  ./phyml seqs1 0 i 2 0 HKY 4.0 e 1 1.0 BIONJ y n \n"
         "\033[00;00m"
         "\n\tAA sequences :  "
         "\033[00;01m"
         "  ./phyml seqs2 1 i 1 5 JTT 0.0 4 1.0 BIONJ n n \n"
         "\033[00;00m");
  Exit("");
}


x86 assembly (clang, -O0):
<Usage>:
push   %rbp
mov    %rsp,%rbp
lea    0xed5(%rip),%rdi
call   1030 <printf@plt>
lea    0x1004(%rip),%rdi
call   1030 <printf@plt>
lea    0x1176(%rip),%rdi
call   1030 <printf@plt>
lea    0x1253(%rip),%rdi
call   1030 <printf@plt>
lea    0x182f(%rip),%rdi
call   1030 <printf@plt>
lea    0xfd3(%rip),%rdi
call   1040 <Exit@plt>
pop    %rbp
ret

x86 assembly (clang, -O2):
<Usage>:
push   %rax
lea    0xf8b(%rip),%rdi
call   1030 <puts@plt>
lea    0x10b9(%rip),%rdi
call   1030 <puts@plt>
lea    0x122a(%rip),%rdi
call   1030 <puts@plt>
lea    0x1306(%rip),%rdi
call   1030 <puts@plt>
lea    0xe98(%rip),%rdi
call   1040 <printf@plt>
lea    0x1088(%rip),%rdi
pop    %rax
jmp    1050 <Exit@plt>

LLVM IR (-O0):
@.str = [315 x i8] c"\1B[00;01mNAME\0A\1B[00;00m\09phyml\0A\1B[00;00m\09A simple, fast, and accurate algorithm to estimate\0A\1B[00;00m\09large phylogenies by maximum likelihood.\0A\0A\1B[00;00m\09Stephane Guindon and Olivier Gascuel,\0A\1B[00;00m\09Systematic Biology 52(5):696-704, 2003.\0A\1B[00;00m\09Please cite this paper if you use this software in your publications.\0A\00"
@.str.1 = [382 x i8] c"\1B[00;01m\0ACOMMAND-LINE USE\0A\1B[00;01m\09phyml \1B[00;00m[ \1B[00;04msequences\1B[00;00m \1B[00;04mdata_type\1B[00;00m \1B[00;04mformat\1B[00;00m \1B[00;04mdata_sets\1B[00;00m \1B[00;04mbootstrap_sets\1B[00;00m \1B[00;04mmodel\1B[00;00m \1B[00;04m\0A\09\09[kappa]\1B[00;00m \1B[00;04minvar\1B[00;00m \1B[00;04mnb_categ\1B[00;00m \1B[00;04malpha\1B[00;00m \1B[00;04mtree\1B[00;00m \1B[00;04mopt_topology\1B[00;00m \1B[00;04mopt_lengths\1B[00;00m ]\0A\00"
@.str.2 = [233 x i8] c"\1B[00;00m\0A\09You can use phyml with no arguments, in this case change the value of\0A\1B[00;00m\09a parameter by typing its corresponding character as shown on screen.\0A\0A\1B[00;00m\09You can alternatively use phyml with the following arguments :\0A\00"
@.str.3 = [1512 x i8] c"\1B[00;04m\0A\09sequence_file\1B[00;00m\09DNA or Amino-Acids sequence filename (PHYLIP format)\0A\1B[00;04m\0A\09data type\1B[00;00m\09\1B[00;01m0\1B[00;00m = DNA | \1B[00;01m1\1B[00;00m = Amino-Acids\0A\1B[00;04m\0A\09format\1B[00;00m\09\09\1B[00;01mi\1B[00;00m = interleaved sequence format | \1B[00;01ms\1B[00;00m = sequential\0A\1B[00;04m\0A\09data_sets\1B[00;00m\09number of data sets to analyse (ex:3)\0A\1B[00;04m\0A\09bootstrap_sets\1B[00;00m\09number of bootstrap data sets to generate (ex:2)\0A\1B[00;00m\09\09\09only works with one data set to analyse\0A\1B[00;04m\0A\09model\1B[00;00m\09\09substitution model name\0A\1B[00;01m\09\09\09JC69 | K2P | F81 | HKY | F84 | TN93 | GTR \1B[00;00m(DNA)\0A\1B[00;01m\09\09\09JTT | MtREV | Dayhoff | WAG \1B[00;00m(Amino-Acids)\0A\1B[00;04m\0A\09kappa\1B[00;00m\09\09transition/transversion ratio, only for DNA sequences,\0A\1B[00;00m\09\09\09a fixed value (ex:4.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09invar\1B[00;00m\09\09proportion of invariable sites,\0A\1B[00;00m\09\09\09a fixed value (ex:0.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09nb_categ\1B[00;00m\09number of relative substitution rate categories (ex:4)\0A\1B[00;04m\0A\09alpha\1B[00;00m\09\09gamma distribution parameter,\0A\1B[00;00m\09\09\09a fixed value (ex:1.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09tree\1B[00;00m\09\09starting tree filename (Newick format),\0A\1B[00;00m\09\09\09your tree filename | \1B[00;01mBIONJ\1B[00;00m for a distance-based tree\0A\1B[00;04m\0A\09opt_topology\1B[00;00m\09optimise tree topology ? \1B[00;01my | n\0A\1B[00;04m\0A\09opt_lengths\1B[00;00m\09optimise branch lengths and rate parameters ? \1B[00;01my | n\0A\00"
@.str.4 = [195 x i8] c"\1B[00;00m\0A\09Examples\0A\1B[00;00m\09DNA sequences : \1B[00;01m ./phyml seqs1 0 i 2 0 HKY 4.0 e 1 1.0 BIONJ y n \0A\1B[00;00m\0A\09AA sequences : \1B[00;01m ./phyml seqs2 1 i 1 5 JTT 0.0 4 1.0 BIONJ n n \0A\1B[00;00m\00"
@.str.5 = [1 x i8] zeroinitializer
define void @Usage() {
%1 = call i32 @printf(i8* getelementptr inbounds ([315 x i8], [315 x i8]* @.str, i64 0, i64 0))
%2 = call i32 @printf(i8* getelementptr inbounds ([382 x i8], [382 x i8]* @.str.1, i64 0, i64 0))
%3 = call i32 @printf(i8* getelementptr inbounds ([233 x i8], [233 x i8]* @.str.2, i64 0, i64 0))
%4 = call i32 @printf(i8* getelementptr inbounds ([1512 x i8], [1512 x i8]* @.str.3, i64 0, i64 0))
%5 = call i32 @printf(i8* getelementptr inbounds ([195 x i8], [195 x i8]* @.str.4, i64 0, i64 0))
%6 = call i32 @Exit(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.5, i64 0, i64 0))
ret void
}

LLVM IR (-O2):
@.str.4 = [195 x i8] c"\1B[00;00m\0A\09Examples\0A\1B[00;00m\09DNA sequences : \1B[00;01m ./phyml seqs1 0 i 2 0 HKY 4.0 e 1 1.0 BIONJ y n \0A\1B[00;00m\0A\09AA sequences : \1B[00;01m ./phyml seqs2 1 i 1 5 JTT 0.0 4 1.0 BIONJ n n \0A\1B[00;00m\00"
@.str.5 = [1 x i8] zeroinitializer
@str = [314 x i8] c"\1B[00;01mNAME\0A\1B[00;00m\09phyml\0A\1B[00;00m\09A simple, fast, and accurate algorithm to estimate\0A\1B[00;00m\09large phylogenies by maximum likelihood.\0A\0A\1B[00;00m\09Stephane Guindon and Olivier Gascuel,\0A\1B[00;00m\09Systematic Biology 52(5):696-704, 2003.\0A\1B[00;00m\09Please cite this paper if you use this software in your publications.\00"
@str.6 = [381 x i8] c"\1B[00;01m\0ACOMMAND-LINE USE\0A\1B[00;01m\09phyml \1B[00;00m[ \1B[00;04msequences\1B[00;00m \1B[00;04mdata_type\1B[00;00m \1B[00;04mformat\1B[00;00m \1B[00;04mdata_sets\1B[00;00m \1B[00;04mbootstrap_sets\1B[00;00m \1B[00;04mmodel\1B[00;00m \1B[00;04m\0A\09\09[kappa]\1B[00;00m \1B[00;04minvar\1B[00;00m \1B[00;04mnb_categ\1B[00;00m \1B[00;04malpha\1B[00;00m \1B[00;04mtree\1B[00;00m \1B[00;04mopt_topology\1B[00;00m \1B[00;04mopt_lengths\1B[00;00m ]\00"
@str.7 = [232 x i8] c"\1B[00;00m\0A\09You can use phyml with no arguments, in this case change the value of\0A\1B[00;00m\09a parameter by typing its corresponding character as shown on screen.\0A\0A\1B[00;00m\09You can alternatively use phyml with the following arguments :\00"
@str.8 = [1511 x i8] c"\1B[00;04m\0A\09sequence_file\1B[00;00m\09DNA or Amino-Acids sequence filename (PHYLIP format)\0A\1B[00;04m\0A\09data type\1B[00;00m\09\1B[00;01m0\1B[00;00m = DNA | \1B[00;01m1\1B[00;00m = Amino-Acids\0A\1B[00;04m\0A\09format\1B[00;00m\09\09\1B[00;01mi\1B[00;00m = interleaved sequence format | \1B[00;01ms\1B[00;00m = sequential\0A\1B[00;04m\0A\09data_sets\1B[00;00m\09number of data sets to analyse (ex:3)\0A\1B[00;04m\0A\09bootstrap_sets\1B[00;00m\09number of bootstrap data sets to generate (ex:2)\0A\1B[00;00m\09\09\09only works with one data set to analyse\0A\1B[00;04m\0A\09model\1B[00;00m\09\09substitution model name\0A\1B[00;01m\09\09\09JC69 | K2P | F81 | HKY | F84 | TN93 | GTR \1B[00;00m(DNA)\0A\1B[00;01m\09\09\09JTT | MtREV | Dayhoff | WAG \1B[00;00m(Amino-Acids)\0A\1B[00;04m\0A\09kappa\1B[00;00m\09\09transition/transversion ratio, only for DNA sequences,\0A\1B[00;00m\09\09\09a fixed value (ex:4.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09invar\1B[00;00m\09\09proportion of invariable sites,\0A\1B[00;00m\09\09\09a fixed value (ex:0.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09nb_categ\1B[00;00m\09number of relative substitution rate categories (ex:4)\0A\1B[00;04m\0A\09alpha\1B[00;00m\09\09gamma distribution parameter,\0A\1B[00;00m\09\09\09a fixed value (ex:1.0) | \1B[00;01me\1B[00;00m to get the maximum likelihood estimate\0A\1B[00;04m\0A\09tree\1B[00;00m\09\09starting tree filename (Newick format),\0A\1B[00;00m\09\09\09your tree filename | \1B[00;01mBIONJ\1B[00;00m for a distance-based tree\0A\1B[00;04m\0A\09opt_topology\1B[00;00m\09optimise tree topology ? \1B[00;01my | n\0A\1B[00;04m\0A\09opt_lengths\1B[00;00m\09optimise branch lengths and rate parameters ? \1B[00;01my | n\00"
define void @Usage() {
%1 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([314 x i8], [314 x i8]* @str, i64 0, i64 0))
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([381 x i8], [381 x i8]* @str.6, i64 0, i64 0))
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([232 x i8], [232 x i8]* @str.7, i64 0, i64 0))
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([1511 x i8], [1511 x i8]* @str.8, i64 0, i64 0))
%5 = tail call i32 @printf(i8* dereferenceable(1) getelementptr inbounds ([195 x i8], [195 x i8]* @.str.4, i64 0, i64 0))
%6 = tail call i32 @Exit(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str.5, i64 0, i64 0))
ret void
}