// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
cmpl $0x1, %edi
jg 0x865a
movq 0x4f956(%rip), %rdi     # 0x57f98
leaq 0x38a0c(%rip), %rsi     # 0x41055
movl $0x3a9, %edx            # imm = 0x3A9
callq 0x74b0
xorl %ebx, %ebx
jmp 0x8803
movq %rsi, %rbx
movl %edi, %ebp
movq 0x8(%rsi), %rsi
leaq 0x8(%rsp), %r14
leaq 0x7(%rsp), %rdx
movq %r14, %rdi
callq 0x887c
leaq 0x3898a(%rip), %rsi     # 0x41006
movq %r14, %rdi
callq 0x70f0
movl $0x3a9, %r14d           # imm = 0x3A9
leaq 0x389c4(%rip), %r15     # 0x41055
testl %eax, %eax
je 0x87d4
leaq 0x38964(%rip), %rsi     # 0x41004
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
leaq 0x38952(%rip), %rsi     # 0x4100b
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
leaq 0x3893e(%rip), %rsi     # 0x41010
leaq 0x8(%rsp), %rdi
callq 0x70f0
movl $0x3c, %r14d
leaq 0x38d16(%rip), %r15     # 0x413ff
testl %eax, %eax
je 0x87d4
leaq 0x38916(%rip), %rsi     # 0x4100e
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
addq $0x8, %rbx
leaq 0x38903(%rip), %rsi     # 0x41018
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x8810
leaq 0x388f7(%rip), %rsi     # 0x41025
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x881e
leaq 0x39f12(%rip), %rsi     # 0x42659
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x882c
leaq 0x388cc(%rip), %rsi     # 0x4102c
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x883a
leaq 0x388bb(%rip), %rsi     # 0x41034
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x8848
movq 0x4f856(%rip), %rdi     # 0x57fe8
leaq 0x388a5(%rip), %rsi     # 0x4103e
movl $0x16, %edx
callq 0x74b0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x4f834(%rip), %rdi     # 0x57fe8
callq 0x74b0
movl $0x1, %ebx
leaq 0x38c75(%rip), %rsi     # 0x4143a
movl $0x1, %edx
movq %rax, %rdi
callq 0x74b0
jmp 0x87e8
movq 0x4f7bd(%rip), %rdi     # 0x57f98
movq %r15, %rsi
movq %r14, %rdx
callq 0x74b0
xorl %ebx, %ebx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8803
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x7420
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x12e8b
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x18a78
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x212e0
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x24040
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x36cf4
jmp 0x87e6
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x8874
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x7420
movq %rbx, %rdi
callq 0x7740