#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 printSplash(char *version) {
  printf("********************************************************\n");
  printf("*                 mlRho, version %s                   *\n", version);
  printf("*   ML Estimation of Mutation and Recombination Rate   *\n");
  printf("* Bernhard Haubold, Peter Pfaffelhuber, Michael Lynch  *\n");
  printf("*------------------------------------------------------*\n");
  printf("* REFERENCES                                           *\n");
  printf("* 1) Lynch, M. (2008). Estimation of nucleotide        *\n");
  printf("* diversity, disequilibrium coefficients, and mutation *\n");
  printf("* rates from high-coverage genome-sequencing projects. *\n");
  printf("* Mol. Biol. Evol., 25:2409--2419.                     *\n");
  printf("* 2) Haubold, B., Pfaffelhuber, P. and Lynch, M.       *\n");
  printf("* (2009). mlRho - A program for estimating the pop-    *\n");
  printf("* ulation mutation and recombination rates from shot-  *\n");
  printf("* gun-sequenced diploid genomes. Mol. Ecol., sub-      *\n");
  printf("* mitted.                                              *\n");
  printf("*                                                      *\n");
  printf("* CONTACT                                              *\n");
  printf("* Code maintained by Bernhard Haubold,                 *\n");
  printf("* haubold@evolbio.mpg.de                               *\n");
  printf("*                                                      *\n");
  printf("* LICENSE                                              *\n");
  printf("* This software is distributed under the GNU General   *\n");
  printf("* Public License. You should have received a copy      *\n");
  printf("* of the licence together with this software. If       *\n");
  printf("* not, see http://www.gnu.org/licenses/.               *\n");
  printf("********************************************************\n");
  exit(0);
}


x86 assembly (clang, -O0):
<printSplash>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xecd(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x8(%rbp),%rsi
lea    0xef5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf4c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xf78(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfa4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xfd0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xffc(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1028(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1054(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1080(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x10ac(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x10d8(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1104(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1130(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x115c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1188(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x11b4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x11e0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1124(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x11fe(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x122a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1256(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x1282(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0x12ae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd6b(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %edi,%edi
call   1040 <exit@plt>

x86 assembly (clang, -O2):
<printSplash>:
push   %r14
push   %rbx
push   %rax
mov    %rdi,%rbx
lea    0x13e1(%rip),%r14
mov    %r14,%rdi
call   1030 <puts@plt>
lea    0xeb3(%rip),%rdi
mov    %rbx,%rsi
xor    %eax,%eax
call   1040 <printf@plt>
lea    0xedb(%rip),%rdi
call   1030 <puts@plt>
lea    0xf08(%rip),%rdi
call   1030 <puts@plt>
lea    0xf35(%rip),%rdi
call   1030 <puts@plt>
lea    0xf62(%rip),%rdi
call   1030 <puts@plt>
lea    0xf8f(%rip),%rdi
call   1030 <puts@plt>
lea    0xfbc(%rip),%rdi
call   1030 <puts@plt>
lea    0xfe9(%rip),%rdi
call   1030 <puts@plt>
lea    0x1016(%rip),%rdi
call   1030 <puts@plt>
lea    0x1043(%rip),%rdi
call   1030 <puts@plt>
lea    0x1070(%rip),%rdi
call   1030 <puts@plt>
lea    0x109d(%rip),%rdi
call   1030 <puts@plt>
lea    0x10ca(%rip),%rdi
call   1030 <puts@plt>
lea    0x10f7(%rip),%rdi
call   1030 <puts@plt>
lea    0x11cf(%rip),%rbx
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0x1115(%rip),%rdi
call   1030 <puts@plt>
lea    0x1142(%rip),%rdi
call   1030 <puts@plt>
lea    0x116f(%rip),%rdi
call   1030 <puts@plt>
mov    %rbx,%rdi
call   1030 <puts@plt>
lea    0x11cd(%rip),%rdi
call   1030 <puts@plt>
lea    0x11fa(%rip),%rdi
call   1030 <puts@plt>
lea    0x1227(%rip),%rdi
call   1030 <puts@plt>
lea    0x1254(%rip),%rdi
call   1030 <puts@plt>
lea    0x1281(%rip),%rdi
call   1030 <puts@plt>
mov    %r14,%rdi
call   1030 <puts@plt>
xor    %edi,%edi
call   1050 <exit@plt>

LLVM IR (-O0):
@.str = [58 x i8] c"********************************************************\0A\00"
@.str.1 = [57 x i8] c"* mlRho, version %s *\0A\00"
@.str.2 = [58 x i8] c"* ML Estimation of Mutation and Recombination Rate *\0A\00"
@.str.3 = [58 x i8] c"* Bernhard Haubold, Peter Pfaffelhuber, Michael Lynch *\0A\00"
@.str.4 = [58 x i8] c"*------------------------------------------------------*\0A\00"
@.str.5 = [58 x i8] c"* REFERENCES *\0A\00"
@.str.6 = [58 x i8] c"* 1) Lynch, M. (2008). Estimation of nucleotide *\0A\00"
@.str.7 = [58 x i8] c"* diversity, disequilibrium coefficients, and mutation *\0A\00"
@.str.8 = [58 x i8] c"* rates from high-coverage genome-sequencing projects. *\0A\00"
@.str.9 = [58 x i8] c"* Mol. Biol. Evol., 25:2409--2419. *\0A\00"
@.str.10 = [58 x i8] c"* 2) Haubold, B., Pfaffelhuber, P. and Lynch, M. *\0A\00"
@.str.11 = [58 x i8] c"* (2009). mlRho - A program for estimating the pop- *\0A\00"
@.str.12 = [58 x i8] c"* ulation mutation and recombination rates from shot- *\0A\00"
@.str.13 = [58 x i8] c"* gun-sequenced diploid genomes. Mol. Ecol., sub- *\0A\00"
@.str.14 = [58 x i8] c"* mitted. *\0A\00"
@.str.15 = [58 x i8] c"* *\0A\00"
@.str.16 = [58 x i8] c"* CONTACT *\0A\00"
@.str.17 = [58 x i8] c"* Code maintained by Bernhard Haubold, *\0A\00"
@.str.18 = [58 x i8] c"* haubold@evolbio.mpg.de *\0A\00"
@.str.19 = [58 x i8] c"* LICENSE *\0A\00"
@.str.20 = [58 x i8] c"* This software is distributed under the GNU General *\0A\00"
@.str.21 = [58 x i8] c"* Public License. You should have received a copy *\0A\00"
@.str.22 = [58 x i8] c"* of the licence together with this software. If *\0A\00"
@.str.23 = [58 x i8] c"* not, see http://www.gnu.org/licenses/. *\0A\00"
define void @printSplash(i8* %0) {
%2 = alloca i8*
store i8* %0, i8** %2
%3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0))
%4 = load i8*, i8** %2
%5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), i8* %4)
%6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.2, i64 0, i64 0))
%7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.3, i64 0, i64 0))
%8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.4, i64 0, i64 0))
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.5, i64 0, i64 0))
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.6, i64 0, i64 0))
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.7, i64 0, i64 0))
%12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.8, i64 0, i64 0))
%13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.9, i64 0, i64 0))
%14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.10, i64 0, i64 0))
%15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.11, i64 0, i64 0))
%16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.12, i64 0, i64 0))
%17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.13, i64 0, i64 0))
%18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.14, i64 0, i64 0))
%19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.15, i64 0, i64 0))
%20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.16, i64 0, i64 0))
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.17, i64 0, i64 0))
%22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.18, i64 0, i64 0))
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.15, i64 0, i64 0))
%24 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.19, i64 0, i64 0))
%25 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.20, i64 0, i64 0))
%26 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.21, i64 0, i64 0))
%27 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.22, i64 0, i64 0))
%28 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str.23, i64 0, i64 0))
%29 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([58 x i8], [58 x i8]* @.str, i64 0, i64 0))
%30 = call i32 @exit(i32 0)
unreachable
}

LLVM IR (-O2):
@.str.1 = [57 x i8] c"* mlRho, version %s *\0A\00"
@str.24 = [57 x i8] c"* ML Estimation of Mutation and Recombination Rate *\00"
@str.25 = [57 x i8] c"* Bernhard Haubold, Peter Pfaffelhuber, Michael Lynch *\00"
@str.26 = [57 x i8] c"*------------------------------------------------------*\00"
@str.27 = [57 x i8] c"* REFERENCES *\00"
@str.28 = [57 x i8] c"* 1) Lynch, M. (2008). Estimation of nucleotide *\00"
@str.29 = [57 x i8] c"* diversity, disequilibrium coefficients, and mutation *\00"
@str.30 = [57 x i8] c"* rates from high-coverage genome-sequencing projects. *\00"
@str.31 = [57 x i8] c"* Mol. Biol. Evol., 25:2409--2419. *\00"
@str.32 = [57 x i8] c"* 2) Haubold, B., Pfaffelhuber, P. and Lynch, M. *\00"
@str.33 = [57 x i8] c"* (2009). mlRho - A program for estimating the pop- *\00"
@str.34 = [57 x i8] c"* ulation mutation and recombination rates from shot- *\00"
@str.35 = [57 x i8] c"* gun-sequenced diploid genomes. Mol. Ecol., sub- *\00"
@str.36 = [57 x i8] c"* mitted. *\00"
@str.38 = [57 x i8] c"* CONTACT *\00"
@str.39 = [57 x i8] c"* Code maintained by Bernhard Haubold, *\00"
@str.40 = [57 x i8] c"* haubold@evolbio.mpg.de *\00"
@str.41 = [57 x i8] c"* *\00"
@str.42 = [57 x i8] c"* LICENSE *\00"
@str.43 = [57 x i8] c"* This software is distributed under the GNU General *\00"
@str.44 = [57 x i8] c"* Public License. You should have received a copy *\00"
@str.45 = [57 x i8] c"* of the licence together with this software. If *\00"
@str.46 = [57 x i8] c"* not, see http://www.gnu.org/licenses/. *\00"
@str.47 = [57 x i8] c"********************************************************\00"
define void @printSplash(i8* %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.47, i64 0, i64 0))
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @.str.1, i64 0, i64 0), i8* %0)
%4 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.24, i64 0, i64 0))
%5 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.25, i64 0, i64 0))
%6 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.26, i64 0, i64 0))
%7 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.27, i64 0, i64 0))
%8 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.28, i64 0, i64 0))
%9 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.29, i64 0, i64 0))
%10 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.30, i64 0, i64 0))
%11 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.31, i64 0, i64 0))
%12 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.32, i64 0, i64 0))
%13 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.33, i64 0, i64 0))
%14 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.34, i64 0, i64 0))
%15 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.35, i64 0, i64 0))
%16 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.36, i64 0, i64 0))
%17 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.41, i64 0, i64 0))
%18 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.38, i64 0, i64 0))
%19 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.39, i64 0, i64 0))
%20 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.40, i64 0, i64 0))
%21 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.41, i64 0, i64 0))
%22 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.42, i64 0, i64 0))
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.43, i64 0, i64 0))
%24 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.44, i64 0, i64 0))
%25 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.45, i64 0, i64 0))
%26 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.46, i64 0, i64 0))
%27 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([57 x i8], [57 x i8]* @str.47, i64 0, i64 0))
%28 = tail call i32 @exit(i32 0)
unreachable
}