// File: millanek[P]Dsuite/Dmin_combine.cpp
// Function: parseDminCombineOptions(int, char**)
void parseDminCombineOptions(int argc, char** argv) {
    bool die = false; string subsetArgString; std::vector<string> subsetArgs;
    for (char c; (c = getopt_long(argc, argv, shortopts, longopts, NULL)) != -1;)
    {
        std::istringstream arg(optarg != NULL ? optarg : "");
        switch (c)
        {
            case '?': die = true; break;
            case 'n': arg >> opt::runName; break;
            case 't': arg >> opt::treeFile; break;
            case 'o': arg >> opt::providedOutPrefix; break;
            case 's': arg >> subsetArgString; subsetArgs = split(subsetArgString, ',');
                opt::subsetStart = (int)stringToDouble(subsetArgs[0]); opt::subsetLength = (int)stringToDouble(subsetArgs[1]);  break;
            case 'h':
                std::cout << DMINCOMBINE_USAGE_MESSAGE;
                exit(EXIT_SUCCESS);
        }
    }
    
    
    int nFilenames = argc - optind;
    if (nFilenames < 1) {
        std::cerr << "missing arguments\n";
        die = true;
    }
    
    if (die) {
        std::cout << "\n" << DMINCOMBINE_USAGE_MESSAGE;
        exit(EXIT_FAILURE);
    }
    
    // Parse the input filenames
    while (optind < argc) {
        opt::dminFiles.push_back(argv[optind++]);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2f0, %rsp            # imm = 0x2F0
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movb $0x0, -0x11(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x87d0
leaq -0x50(%rbp), %rdi
callq 0x11d80
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
movq 0x7b5aa(%rip), %rdx     # 0xbf690
leaq 0x7a6b3(%rip), %rcx     # 0xbe7a0
xorl %eax, %eax
movl %eax, %r8d
callq 0x8970
movb %al, -0x51(%rbp)
movsbl %al, %eax
cmpl $-0x1, %eax
je 0x44401
movq 0x7ae5b(%rip), %rax     # 0xbef68
cmpq $0x0, (%rax)
je 0x44126
movq 0x7ae4e(%rip), %rax     # 0xbef68
movq (%rax), %rax
movq %rax, -0x2a0(%rbp)
jmp 0x44136
leaq 0x4723c(%rip), %rax     # 0x8b369
movq %rax, -0x2a0(%rbp)
jmp 0x44136
movq -0x2a0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x8a60
movq -0x2b0(%rbp), %rsi
movq -0x2a8(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x9a00
jmp 0x44173
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
movl $0x8, %edx
callq 0x89a0
jmp 0x4418d
leaq -0x1f8(%rbp), %rdi
callq 0x8c08
leaq -0x1f9(%rbp), %rdi
callq 0x8610
movsbl -0x51(%rbp), %eax
addl $-0x3f, %eax
movl %eax, %ecx
movq %rcx, -0x2b8(%rbp)
subl $0x35, %eax
ja 0x443df
movq -0x2b8(%rbp), %rax
leaq 0x46680(%rip), %rcx     # 0x8a84c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x44207
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x8c08
leaq -0x1f9(%rbp), %rdi
callq 0x8610
jmp 0x4457e
movb $0x1, -0x11(%rbp)
jmp 0x443df
leaq 0x7bc58(%rip), %rsi     # 0xbfe80
leaq -0x1d8(%rbp), %rdi
callq 0x8730
jmp 0x44236
jmp 0x443df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x443f0
leaq 0x7bc47(%rip), %rsi     # 0xbfea0
leaq -0x1d8(%rbp), %rdi
callq 0x8730
jmp 0x44267
jmp 0x443df
leaq 0x7bbed(%rip), %rsi     # 0xbfe60
leaq -0x1d8(%rbp), %rdi
callq 0x8730
jmp 0x44281
jmp 0x443df
leaq -0x1d8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x8730
jmp 0x44298
leaq -0x228(%rbp), %rdi
leaq -0x38(%rbp), %rsi
movl $0x2c, %edx
callq 0xaef0
jmp 0x442af
leaq -0x50(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
leaq -0x228(%rbp), %rsi
movq %rsi, -0x2c8(%rbp)
callq 0x20aa0
movq -0x2c8(%rbp), %rdi
callq 0x10760
movq -0x2c0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x10b10
movq %rax, %rsi
leaq -0x248(%rbp), %rdi
callq 0x8250
jmp 0x442fa
leaq -0x248(%rbp), %rdi
callq 0xf4f0
movsd %xmm0, -0x2d0(%rbp)
jmp 0x44310
movsd -0x2d0(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x7b366(%rip)     # 0xbf688
leaq -0x248(%rbp), %rdi
callq 0x8c08
leaq -0x50(%rbp), %rdi
movl $0x1, %esi
callq 0x10b10
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x8250
jmp 0x4434d
leaq -0x268(%rbp), %rdi
callq 0xf4f0
movsd %xmm0, -0x2d8(%rbp)
jmp 0x44363
movsd -0x2d8(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x7b317(%rip)     # 0xbf68c
leaq -0x268(%rbp), %rdi
callq 0x8c08
jmp 0x443df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x8c08
jmp 0x443f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x8c08
jmp 0x443f0
movq 0x7b2ce(%rip), %rsi     # 0xbf698
movq 0x7abd7(%rip), %rdi     # 0xbefa8
callq 0x8590
jmp 0x443d8
xorl %edi, %edi
callq 0x86e0
leaq -0x1d8(%rbp), %rdi
callq 0x8290
jmp 0x440d8
leaq -0x1d8(%rbp), %rdi
callq 0x8290
jmp 0x4457e
movl -0x4(%rbp), %eax
movq 0x7aba5(%rip), %rcx     # 0xbefb0
subl (%rcx), %eax
movl %eax, -0x26c(%rbp)
cmpl $0x1, -0x26c(%rbp)
jge 0x4444e
movq 0x7abcd(%rip), %rdi     # 0xbeff0
leaq 0x44618(%rip), %rsi     # 0x88a42
callq 0x8590
jmp 0x44431
movb $0x1, -0x11(%rbp)
jmp 0x4444e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x4457e
testb $0x1, -0x11(%rbp)
je 0x4448f
movq 0x7ab4d(%rip), %rdi     # 0xbefa8
leaq 0x43fd8(%rip), %rsi     # 0x8843a
callq 0x8590
movq %rax, -0x2e0(%rbp)
jmp 0x44470
movq -0x2e0(%rbp), %rdi
movq 0x7b21a(%rip), %rsi     # 0xbf698
callq 0x8590
jmp 0x44485
movl $0x1, %edi
callq 0x86e0
jmp 0x44491
movq 0x7ab18(%rip), %rax     # 0xbefb0
movl (%rax), %eax
cmpl -0x4(%rbp), %eax
jge 0x44563
movq -0x10(%rbp), %rax
movq 0x7ab02(%rip), %rdx     # 0xbefb0
movslq (%rdx), %rcx
movl %ecx, %esi
incl %esi
movl %esi, (%rdx)
movq (%rax,%rcx,8), %rax
movq %rax, -0x2f0(%rbp)
leaq -0x291(%rbp), %rdi
movq %rdi, -0x2e8(%rbp)
callq 0x8a60
movq -0x2f0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
leaq -0x290(%rbp), %rdi
callq 0x9a00
jmp 0x444f1
leaq 0x7b950(%rip), %rdi     # 0xbfe48
leaq -0x290(%rbp), %rsi
callq 0x446f0
jmp 0x44506
leaq -0x290(%rbp), %rdi
callq 0x8c08
leaq -0x291(%rbp), %rdi
callq 0x8610
jmp 0x44491
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
jmp 0x44555
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x208(%rbp)
movl %eax, -0x20c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x8c08
leaq -0x291(%rbp), %rdi
callq 0x8610
jmp 0x4457e
leaq -0x50(%rbp), %rdi
callq 0x10760
leaq -0x38(%rbp), %rdi
callq 0x8c08
addq $0x2f0, %rsp            # imm = 0x2F0
popq %rbp
retq
leaq -0x50(%rbp), %rdi
callq 0x10760
leaq -0x38(%rbp), %rdi
callq 0x8c08
movq -0x208(%rbp), %rdi
callq 0x8a50
nopl (%rax)