// File: /workspace/github_cpp_makefile_star2_O2/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 %r14
pushq %rbx
subq $0x30, %rsp
cmpl $0x1, %edi
jg 0x7f43
movq 0x49068(%rip), %rdi     # 0x50f98
leaq 0x2e11e(%rip), %rsi     # 0x36055
callq 0x7400
xorl %ebx, %ebx
jmp 0x7fee
movq %rsi, %rbx
movl %edi, %ebp
movq 0x8(%rsi), %rsi
leaq 0x10(%rsp), %r14
leaq 0xf(%rsp), %rdx
movq %r14, %rdi
callq 0x8102
leaq 0x2e0a1(%rip), %rsi     # 0x36006
movq %r14, %rdi
callq 0x813d
leaq 0x2e0e1(%rip), %r14     # 0x36055
testb %al, %al
jne 0x7fd3
leaq 0x2e085(%rip), %rsi     # 0x36004
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
jne 0x7fd3
leaq 0x2e077(%rip), %rsi     # 0x3600b
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
jne 0x7fd3
leaq 0x2e067(%rip), %rsi     # 0x36010
leaq 0x10(%rsp), %rdi
callq 0x813d
leaq 0x2e445(%rip), %r14     # 0x363ff
testb %al, %al
jne 0x7fd3
leaq 0x2e049(%rip), %rsi     # 0x3600e
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x7ff9
movq 0x48fbe(%rip), %rdi     # 0x50f98
movq %r14, %rsi
callq 0x7400
xorl %ebx, %ebx
leaq 0x10(%rsp), %rdi
callq 0x7898
movl %ebx, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
addq $0x8, %rbx
leaq 0x2e014(%rip), %rsi     # 0x36018
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x8020
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0xffb4
jmp 0x7fe2
leaq 0x2dffe(%rip), %rsi     # 0x36025
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x8043
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x153f4
jmp 0x7fe2
leaq 0x2f59f(%rip), %rsi     # 0x375e9
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x8069
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1c488
jmp 0x7fe2
leaq 0x2dfbc(%rip), %rsi     # 0x3602c
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x808f
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1e24c
jmp 0x7fe2
leaq 0x2df9e(%rip), %rsi     # 0x36034
leaq 0x10(%rsp), %rdi
callq 0x813d
testb %al, %al
je 0x80b5
decl %ebp
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2de5c
jmp 0x7fe2
movq 0x48f2c(%rip), %rdi     # 0x50fe8
leaq 0x2df7b(%rip), %rsi     # 0x3603e
callq 0x7400
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x73c0
leaq 0x2e35e(%rip), %rsi     # 0x3643a
movq %rax, %rdi
callq 0x7400
pushq $0x1
popq %rbx
jmp 0x7fe4
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x7898
movq %rbx, %rdi
callq 0x7750
nop