// File: /workspace/github_cpp_makefile_star2_O1/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 0x4e956(%rip), %rdi     # 0x56f98
leaq 0x37a0c(%rip), %rsi     # 0x40055
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 0x3798a(%rip), %rsi     # 0x40006
movq %r14, %rdi
callq 0x70f0
movl $0x3a9, %r14d           # imm = 0x3A9
leaq 0x379c4(%rip), %r15     # 0x40055
testl %eax, %eax
je 0x87d4
leaq 0x37964(%rip), %rsi     # 0x40004
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
leaq 0x37952(%rip), %rsi     # 0x4000b
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
leaq 0x3793e(%rip), %rsi     # 0x40010
leaq 0x8(%rsp), %rdi
callq 0x70f0
movl $0x3c, %r14d
leaq 0x37d16(%rip), %r15     # 0x403ff
testl %eax, %eax
je 0x87d4
leaq 0x37916(%rip), %rsi     # 0x4000e
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x87d4
addq $0x8, %rbx
leaq 0x37903(%rip), %rsi     # 0x40018
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x8810
leaq 0x378f7(%rip), %rsi     # 0x40025
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x881e
leaq 0x38e82(%rip), %rsi     # 0x415c9
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x882c
leaq 0x378cc(%rip), %rsi     # 0x4002c
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x883a
leaq 0x378bb(%rip), %rsi     # 0x40034
leaq 0x8(%rsp), %rdi
callq 0x70f0
testl %eax, %eax
je 0x8848
movq 0x4e856(%rip), %rdi     # 0x56fe8
leaq 0x378a5(%rip), %rsi     # 0x4003e
movl $0x16, %edx
callq 0x74b0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x4e834(%rip), %rdi     # 0x56fe8
callq 0x74b0
movl $0x1, %ebx
leaq 0x37c75(%rip), %rsi     # 0x4043a
movl $0x1, %edx
movq %rax, %rdi
callq 0x74b0
jmp 0x87e8
movq 0x4e7bd(%rip), %rdi     # 0x56f98
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 0x12cc5
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x18144
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x20a08
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x23754
jmp 0x87e6
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x36328
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