// File: /workspace/github_cpp_makefile_star2_O2/JenTus[P]TCEM/src_TCEM/main.cc
// Function: readOptions(int, char**)
AnyOption* readOptions(int argc, char* argv[]) {
    
    AnyOption *opt = new AnyOption();
    
    // ignore POSIX style options
    opt->noPOSIX();
    opt->setVerbose(); /* print warnings about unknown options */
    opt->autoUsagePrint(true); /* print usage for bad options */
    
    opt->addUsage("");
    opt->addUsage("Usage: ");
    opt->addUsage("");
    opt->addUsage("-help Prints this help ");
    opt->addUsage(" -c <config_file> Specify config file ");
    opt->addUsage(" -x <input_file> Specify input file name");
    opt->addUsage(" -r Specify red nodes");
    opt->addUsage(" -b Specify blue nodes");
    opt->addUsage("");
    
//    opt->setOption("probGraphFile");
    opt->setOption("outputFolder");
    
//    opt->setOption("n");
//    opt->setOption("m");
    //opt->setOption("nrItems");
    //opt->setOption("k");
    //opt->setOption("kr");
    //opt->setOption("kb");
//    opt->setOption("attentionConstraint");

    opt->setOption("epsilon");
    opt->setOption("ell");

    opt->setCommandFlag("help");
    opt->setCommandOption("c");
    opt->setCommandOption("x"); // to specify input file
    opt->setCommandOption("r");
    opt->setCommandOption("b");
    opt->setCommandOption("p"); // if comparing with the input, specify a filename
    opt->processCommandArgs(argc, argv);


    if(opt->getFlag( "help" )) {
        opt->printUsage();
        delete opt;
        exit(0);
    }
    
    const char* configFile = opt->getValue("c");
    if (configFile == NULL) {
        cout << "Config file not mentioned" << endl;
        opt->printUsage();
        delete opt;
        exit(0);
    }
    
    cout << "Config file : " << configFile << endl;
    opt->processFile(configFile);
    opt->processCommandArgs( argc, argv );
    cout << endl << endl;
    return opt;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %r14
movl %edi, %ebp
movl $0xb0, %edi
callq 0x32d0
movq %rax, %rbx
movq %rax, %rdi
callq 0xbdf8
movq %rbx, %rdi
callq 0xc2bc
movq %rbx, %rdi
callq 0xc2cc
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0xc338
leaq 0xa9d7(%rip), %r15      # 0xe248
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd628
leaq 0xa781(%rip), %rsi      # 0xe004
movq %rbx, %rdi
callq 0xd628
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd628
leaq 0xa76f(%rip), %rsi      # 0xe00c
movq %rbx, %rdi
callq 0xd628
leaq 0xa778(%rip), %rsi      # 0xe024
movq %rbx, %rdi
callq 0xd628
leaq 0xa790(%rip), %rsi      # 0xe04b
movq %rbx, %rdi
callq 0xd628
leaq 0xa7aa(%rip), %rsi      # 0xe074
movq %rbx, %rdi
callq 0xd628
leaq 0xa7b1(%rip), %rsi      # 0xe08a
movq %rbx, %rdi
callq 0xd628
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd628
leaq 0xa7ae(%rip), %rsi      # 0xe0a1
movq %rbx, %rdi
callq 0xc5ae
leaq 0xa7ac(%rip), %rsi      # 0xe0ae
movq %rbx, %rdi
callq 0xc5ae
leaq 0xa7a5(%rip), %rsi      # 0xe0b6
movq %rbx, %rdi
callq 0xc5ae
leaq 0xa79a(%rip), %r15      # 0xe0ba
movq %rbx, %rdi
movq %r15, %rsi
callq 0xc4b2
leaq 0xafe7(%rip), %rsi      # 0xe919
movq %rbx, %rdi
callq 0xc36e
leaq 0xa77e(%rip), %rsi      # 0xe0bf
movq %rbx, %rdi
callq 0xc36e
leaq 0xa75c(%rip), %rsi      # 0xe0ac
movq %rbx, %rdi
callq 0xc36e
leaq 0xa81f(%rip), %rsi      # 0xe17e
movq %rbx, %rdi
callq 0xc36e
leaq 0xa74f(%rip), %rsi      # 0xe0bd
movq %rbx, %rdi
callq 0xc36e
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0xc94e
movq %rbx, %rdi
movq %r15, %rsi
callq 0xcf40
testb %al, %al
jne 0x3a25
leaq 0xaf7c(%rip), %rsi      # 0xe919
movq %rbx, %rdi
callq 0xceb8
testq %rax, %rax
je 0x3a0a
movq %rax, %r15
movq 0x11624(%rip), %r12     # 0x14fd8
leaq 0xa720(%rip), %rsi      # 0xe0db
movq %r12, %rdi
callq 0x32c0
movq %rax, %rdi
movq %r15, %rsi
callq 0x32c0
movq %rax, %rdi
callq 0x3150
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd1be
movq %rbx, %rdi
movl %ebp, %esi
movq %r14, %rdx
callq 0xc94e
movq %r12, %rdi
callq 0x3150
movq %rax, %rdi
callq 0x3150
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq 0x115c7(%rip), %rdi     # 0x14fd8
leaq 0xa6a9(%rip), %rsi      # 0xe0c1
callq 0x32c0
movq %rax, %rdi
callq 0x3150
movq %rbx, %rdi
callq 0xd5c0
movq %rbx, %rdi
callq 0xbeda
movq %rbx, %rdi
callq 0x32b0
xorl %edi, %edi
callq 0x3360
movq %rax, %r14
movq %rbx, %rdi
callq 0x32b0
movq %r14, %rdi
callq 0x3560
nop