// File: millanek[P]Dsuite/Dsuite.cpp
// Function: main
int main(int argc, char **argv) {
    
    if(argc <= 1)
    {
        std::cout << USAGE_MESSAGE;
        return 0;
    }
    else
    {
        std::string command(argv[1]);
        if(command == "help" || command == "--help" || command == "-h")
        {
            std::cout << USAGE_MESSAGE;
            return 0;
        }
        else if(command == "version" || command == "--version")
        {
            std::cout << VERSION_MESSAGE;
            return 0;
        }
        
        if(command == "Dinvestigate")
            abbaBabaMain(argc - 1, argv + 1);
        else if (command == "Dtrios")
            DminMain(argc - 1, argv + 1);
        else if (command == "DtriosCombine")
            DminCombineMain(argc - 1, argv + 1);
        else if (command == "Fbranch")
            fBranchMain(argc - 1, argv + 1);
        else if (command == "Dquartets")
            DquartetsMain(argc - 1, argv + 1);
        else
        {
            std::cerr << "Unrecognized command: " << command << "\n";
            return 1;
        }
        return 0;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x1, -0x8(%rbp)
jg 0x970e
movq 0xb5f1a(%rip), %rsi     # 0xbf610
movq 0xb58ab(%rip), %rdi     # 0xbefa8
callq 0x8590
movl $0x0, -0x4(%rbp)
jmp 0x99dc
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x50(%rbp)
callq 0x8a60
movq -0x58(%rbp), %rsi
movq -0x50(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0x9a00
jmp 0x973a
leaq -0x31(%rbp), %rdi
callq 0x8610
leaq 0x7e8bc(%rip), %rsi     # 0x88006
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x59(%rbp)
jmp 0x9758
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x979d
jmp 0x9761
leaq 0x7e89c(%rip), %rsi     # 0x88004
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5a(%rbp)
jmp 0x9776
movb -0x5a(%rbp), %al
testb $0x1, %al
jne 0x979d
jmp 0x977f
leaq 0x7e885(%rip), %rsi     # 0x8800b
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5b(%rbp)
jmp 0x9794
movb -0x5b(%rbp), %al
testb $0x1, %al
jne 0x979d
jmp 0x97f9
movq 0xb5e6c(%rip), %rsi     # 0xbf610
movq 0xb57fd(%rip), %rdi     # 0xbefa8
callq 0x8590
jmp 0x97b2
movl $0x0, -0x4(%rbp)
movl $0x1, -0x48(%rbp)
jmp 0x99d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x8610
jmp 0x99e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x8c08
jmp 0x99e8
leaq 0x7e810(%rip), %rsi     # 0x88010
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5c(%rbp)
jmp 0x980e
movb -0x5c(%rbp), %al
testb $0x1, %al
jne 0x9835
jmp 0x9817
leaq 0x7e7f0(%rip), %rsi     # 0x8800e
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5d(%rbp)
jmp 0x982c
movb -0x5d(%rbp), %al
testb $0x1, %al
jne 0x9835
jmp 0x985d
movq 0xb5ddc(%rip), %rsi     # 0xbf618
movq 0xb5765(%rip), %rdi     # 0xbefa8
callq 0x8590
jmp 0x984a
movl $0x0, -0x4(%rbp)
movl $0x1, -0x48(%rbp)
jmp 0x99d3
jmp 0x985f
leaq 0x7e7b2(%rip), %rsi     # 0x88018
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5e(%rbp)
jmp 0x9874
movb -0x5e(%rbp), %al
testb $0x1, %al
jne 0x987d
jmp 0x9896
movl -0x8(%rbp), %edi
decl %edi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x1f780
jmp 0x9891
jmp 0x99c5
leaq 0x7e788(%rip), %rsi     # 0x88025
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x5f(%rbp)
jmp 0x98ab
movb -0x5f(%rbp), %al
testb $0x1, %al
jne 0x98b4
jmp 0x98cd
movl -0x8(%rbp), %edi
decl %edi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x30390
jmp 0x98c8
jmp 0x99c3
leaq 0x7fe8d(%rip), %rsi     # 0x89761
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x60(%rbp)
jmp 0x98e2
movb -0x60(%rbp), %al
testb $0x1, %al
jne 0x98eb
jmp 0x9904
movl -0x8(%rbp), %edi
decl %edi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x417b0
jmp 0x98ff
jmp 0x99c1
leaq 0x7e721(%rip), %rsi     # 0x8802c
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x61(%rbp)
jmp 0x9919
movb -0x61(%rbp), %al
testb $0x1, %al
jne 0x9922
jmp 0x993b
movl -0x8(%rbp), %edi
decl %edi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x45290
jmp 0x9936
jmp 0x99bf
leaq 0x7e6f2(%rip), %rsi     # 0x88034
leaq -0x30(%rbp), %rdi
callq 0x9ab0
movb %al, -0x62(%rbp)
jmp 0x9950
movb -0x62(%rbp), %al
testb $0x1, %al
jne 0x9959
jmp 0x996f
movl -0x8(%rbp), %edi
decl %edi
movq -0x10(%rbp), %rsi
addq $0x8, %rsi
callq 0x77cd0
jmp 0x996d
jmp 0x99bd
movq 0xb567a(%rip), %rdi     # 0xbeff0
leaq 0x7e6c1(%rip), %rsi     # 0x8803e
callq 0x8590
movq %rax, -0x70(%rbp)
jmp 0x9988
movq -0x70(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8520
movq %rax, -0x78(%rbp)
jmp 0x999b
movq -0x78(%rbp), %rdi
leaq 0x7ea94(%rip), %rsi     # 0x8843a
callq 0x8590
jmp 0x99ad
movl $0x1, -0x4(%rbp)
movl $0x1, -0x48(%rbp)
jmp 0x99d3
jmp 0x99bf
jmp 0x99c1
jmp 0x99c3
jmp 0x99c5
movl $0x0, -0x4(%rbp)
movl $0x1, -0x48(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x8c08
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x8a50
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)