// File: /workspace/github_cpp_makefile_star2_O2/readmapping[P]alfalfa/src/performanceUtils.cpp
// Function: processCheckParameters(int, char**, samCheckOptions_t&)
void processCheckParameters(int argc, char* argv[], samCheckOptions_t& opt){
    //parse the subcommand
    if(argc < 2 || strcmp(argv[1], "-h")==0 || strcmp(argv[1], "--help")==0){
        option::printUsage(std::cerr, evaluateUsage);
        exit(1);
    }
    string subcommand = argv[1];
    if(strcmp(argv[1], "sam") == 0) opt.subcommand = ORACLE;
    else if(strcmp(argv[1], "summary") == 0) opt.subcommand = SUMMARY;
    else if(strcmp(argv[1], "wgsim") == 0) opt.subcommand = WGSIM;
    else{
        fprintf(stderr, "[main] unrecognized command '%s'\n", argv[1]);
        option::printUsage(std::cerr, evaluateUsage);
        exit(1);
    }
    cerr << "COMMAND: evaluate " << argv[1] << endl;
    argc-=2; argv++; argv++;
    //summary options
    if(opt.subcommand == SUMMARY){
        option::Stats  stats(summaryUsage, argc, argv);
        option::Option* options = new option::Option[stats.options_max];
        option::Option* buffer  = new option::Option[stats.buffer_max];
        option::Parser parser(summaryUsage, argc, argv, options, buffer);
        if (parser.error()){
            cerr << "error during parsing of command line options" << endl;
            exit(1);
        }
        if(parser.optionsCount() == 0){
            option::printUsage(std::cerr, summaryUsage); exit(0);
        }
        for (int i = 0; i < parser.optionsCount(); ++i) {
            option::Option& option = buffer[i];
            switch(option.index()) {
                case ARG_INPUT_SAM: opt.querySam = option.arg; break;
                case ARG_OUTPUT_EVAL: opt.outputFile = option.arg; break;
                case ARG_QUALITY: processCommaSepListInt(option.arg, opt.qualityValues, "quality-values", 0, 255); break;
                case ARG_READS: opt.numReads = atoi(option.arg); break;
                case ARG_PAIRED: opt.paired = true; break;
                case ARG_PRINT: opt.print = true; break;
                case ARG_HELP_EVAL: option::printUsage(std::cerr, summaryUsage); exit(0);
                default: cerr << "unknown option: " << option.name << endl; break;
                throw 1;
            }
        }
        delete[] options;
        delete[] buffer;
    }
    else if(opt.subcommand == ORACLE){
        option::Stats  stats(samUsage, argc, argv);
        option::Option* options = new option::Option[stats.options_max];
        option::Option* buffer  = new option::Option[stats.buffer_max];
        option::Parser parser(samUsage, argc, argv, options, buffer);
        if (parser.error()){
            cerr << "error during parsing of command line options" << endl;
            exit(1);
        }
        if(parser.optionsCount() == 0){
            option::printUsage(std::cerr, samUsage); exit(0);
        }
        for (int i = 0; i < parser.optionsCount(); ++i) {
            option::Option& option = buffer[i];
            switch(option.index()) {
                case ARG_INPUT_SAM: opt.querySam = option.arg; break;
                case ARG_OUTPUT_EVAL: opt.outputFile = option.arg; break;
                case ARG_QUALITY: processCommaSepListInt(option.arg, opt.qualityValues, "quality-values", 0, 255); break;
                case ARG_REFERENCE_EVAL: opt.refString = option.arg; break;
                case ARG_WINDOW: processCommaSepListInt(option.arg, opt.correctRange, "ranges", 0, 1000000); break;
                case ARG_INPUT_EDIT: opt.qtag = option.arg; break;
                case ARG_REFERENCE_SAM: opt.oracleSam = option.arg; break;
                case ARG_REFERENCE_EDIT: opt.otag = option.arg; break;
                case ARG_PRINT: opt.print = true; break;
                case ARG_HELP_EVAL: option::printUsage(std::cerr, samUsage); exit(0);
                default: cerr << "unknown option: " << option.name << endl; break;
                throw 1;
            }
        }
        delete[] options;
        delete[] buffer;
    }
    else if(opt.subcommand == WGSIM){
        option::Stats  stats(wgsimUsage, argc, argv);
        option::Option* options = new option::Option[stats.options_max];
        option::Option* buffer  = new option::Option[stats.buffer_max];
        option::Parser parser(wgsimUsage, argc, argv, options, buffer);
        if (parser.error()){
            cerr << "error during parsing of command line options" << endl;
            exit(1);
        }
        if(0==parser.optionsCount()){
            option::printUsage(std::cerr, wgsimUsage); exit(0);
        }
        for (int i = 0; i < parser.optionsCount(); ++i) {
            option::Option& option = buffer[i];
            switch(option.index()) {
                case ARG_INPUT_SAM: opt.querySam = option.arg; break;
                case ARG_OUTPUT_EVAL: opt.outputFile = option.arg; break;
                case ARG_QUALITY: processCommaSepListInt(option.arg, opt.qualityValues, "quality-values", 0, 255); break;
                case ARG_REFERENCE_EVAL: opt.refString = option.arg; break;
                case ARG_WINDOW: processCommaSepListInt(option.arg, opt.correctRange, "ranges", 0, 1000000); break;
                case ARG_INPUT_EDIT: opt.qtag = option.arg; break;
                case ARG_PRINT: opt.print = true; break;
                case ARG_HELP_EVAL: option::printUsage(std::cerr, wgsimUsage); exit(0);
                default: cerr << "unknown option: " << option.name << endl; break;
                throw 1;
            }
        }
        delete[] options;
        delete[] buffer;
    }
    if(opt.querySam.empty()){
        fprintf(stderr, "ERROR: The query SAM file has not been specified using the -i option.\n"); 
        exit(1);
    }
    if(opt.subcommand == SUMMARY){
        if(opt.numReads==0)
            fprintf(stderr, "WARNING: Number of reads was not specified. Number of reads in input sam will be used.\n");
    }
    if(opt.subcommand == ORACLE){
        if(opt.refString.empty()){
            fprintf(stderr, "ERROR: The reference genome has not been specified using the -r option.\n"); 
            exit(1);
        }
        if(opt.oracleSam.empty()){
            fprintf(stderr, "ERROR: The reference SAM file has not been specified using the --reference-sam option.\n"); 
            exit(1);
        }
    }
    if(opt.subcommand == WGSIM){
        if(opt.refString.empty()){
            fprintf(stderr, "ERROR: The reference genome has not been specified using the -r option.\n"); 
            exit(1);
        }
    }
    if(opt.subcommand != SUMMARY && opt.correctRange.empty())
        opt.correctRange.push_back(50);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1d8, %rsp            # imm = 0x1D8
cmpl $0x2, %edi
jl 0x2a029
movq %rdx, %rbx
movq %rsi, %r14
movl %edi, %ebp
movq 0x8(%rsi), %r15
cmpb $0x2d, (%r15)
jne 0x29695
cmpb $0x68, 0x1(%r15)
jne 0x29695
cmpb $0x0, 0x2(%r15)
je 0x2a029
leaq 0x8afe(%rip), %rsi      # 0x3219a
movq %r15, %rdi
callq 0x7460
testl %eax, %eax
je 0x2a029
leaq 0x118(%rsp), %rdi
leaq 0x40(%rsp), %rdx
movq %r15, %rsi
callq 0x91c4
movq 0x8(%r14), %r15
leaq 0x100a3(%rip), %rsi     # 0x3976f
movq %r15, %rdi
callq 0x7460
testl %eax, %eax
je 0x29706
leaq 0xe44a(%rip), %rsi      # 0x37b29
movq %r15, %rdi
callq 0x7460
testl %eax, %eax
je 0x2970a
leaq 0xee23(%rip), %rsi      # 0x38515
movq %r15, %rdi
callq 0x7460
testl %eax, %eax
jne 0x29fe9
pushq $0x3
jmp 0x2970c
xorl %eax, %eax
jmp 0x2970d
pushq $0x1
popq %rax
movl %eax, (%rbx)
movq 0x208d2(%rip), %rdi     # 0x49fe8
leaq 0xe414(%rip), %rsi      # 0x37b31
callq 0x72b0
movq 0x8(%r14), %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
addl $-0x2, %ebp
addq $0x10, %r14
movl (%rbx), %eax
testl %eax, %eax
movq %rbx, 0x8(%rsp)
je 0x29c1f
cmpl $0x3, %eax
je 0x29989
cmpl $0x1, %eax
jne 0x29f1a
leaq 0x200cb(%rip), %rsi     # 0x49830
leaq 0x18(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xc892
movl 0x1c(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, %r13
testq %r12, %r12
je 0x297c0
leaq 0x10(%r13), %rax
leaq 0x1(%r13), %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x297a0
movl 0x18(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, 0x10(%rsp)
testq %r12, %r12
je 0x2980c
movq 0x10(%rsp), %rcx
leaq 0x10(%rcx), %rax
incq %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x297ec
subq $0x8, %rsp
leaq 0x20019(%rip), %rsi     # 0x49830
leaq 0x48(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r13, %r8
movq 0x18(%rsp), %r9
pushq $-0x1
pushq $0x0
pushq $0x0
callq 0xc8bc
addq $0x20, %rsp
cmpb $0x1, 0x50(%rsp)
je 0x2a0e4
movq %r13, 0x20(%rsp)
movl 0x40(%rsp), %eax
testl %eax, %eax
je 0x2a144
movq 0x8(%rsp), %rcx
leaq 0xa8(%rcx), %rdx
movq %rdx, 0x28(%rsp)
leaq 0x8(%rcx), %r12
addq $0x70, %rcx
movq %rcx, 0x30(%rsp)
movq 0x10(%rsp), %r15
addq $0x20, %r15
xorl %r14d, %r14d
leaq 0xe0c7(%rip), %r13      # 0x3794c
leaq 0x1b8(%rsp), %rbp
cltq
cmpq %rax, %r14
jge 0x29ee9
movq -0x10(%r15), %rax
testq %rax, %rax
je 0x298c6
movl (%rax), %eax
decl %eax
cmpl $0x6, %eax
ja 0x298c6
movslq (%r13,%rax,4), %rax
addq %r13, %rax
movq %r12, %rdi
jmpq *%rax
movq 0x30(%rsp), %rdi
movq (%r15), %rsi
callq 0x7660
jmp 0x298ed
movq 0x2071b(%rip), %rdi     # 0x49fe8
leaq 0xe27f(%rip), %rsi      # 0x37b53
callq 0x72b0
movq -0x8(%r15), %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
incq %r14
movl 0x40(%rsp), %eax
addq $0x30, %r15
jmp 0x2988d
movq (%r15), %rdi
callq 0x7520
cltq
movq 0x8(%rsp), %rcx
movq %rax, 0x118(%rcx)
jmp 0x298ed
movq (%r15), %rsi
leaq 0xf8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x91c4
movq %rbp, %rdi
leaq 0xe213(%rip), %rsi      # 0x37b44
leaq 0x7(%rsp), %rdx
callq 0x91c4
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x2952a
movq %rbp, %rdi
callq 0x76a8
movq %rbx, %rdi
callq 0x76a8
jmp 0x298ed
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x298ed
movq 0x8(%rsp), %rax
movb $0x1, 0x68(%rax)
jmp 0x298ed
leaq 0x20240(%rip), %rsi     # 0x49bd0
leaq 0x18(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xc892
movl 0x1c(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, %r13
testq %r12, %r12
je 0x299eb
leaq 0x10(%r13), %rax
leaq 0x1(%r13), %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x299cb
movl 0x18(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, 0x38(%rsp)
testq %r12, %r12
movq 0x38(%rsp), %r12
je 0x29a3a
leaq 0x10(%r12), %rax
leaq 0x1(%r12), %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x29a1a
subq $0x8, %rsp
leaq 0x2018b(%rip), %rsi     # 0x49bd0
leaq 0x48(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r13, %r8
movq %r12, %r9
pushq $-0x1
pushq $0x0
pushq $0x0
callq 0xc8bc
addq $0x20, %rsp
cmpb $0x1, 0x50(%rsp)
je 0x2a104
movq %r13, 0x58(%rsp)
movl 0x40(%rsp), %eax
testl %eax, %eax
je 0x2a163
movq 0x8(%rsp), %rdx
leaq 0xd8(%rdx), %rcx
movq %rcx, 0x10(%rsp)
leaq 0xc0(%rdx), %rcx
movq %rcx, 0x20(%rsp)
leaq 0x48(%rdx), %rcx
movq %rcx, 0x30(%rsp)
leaq 0xa8(%rdx), %rcx
movq %rcx, 0x60(%rsp)
leaq 0x8(%rdx), %r13
leaq 0x70(%rdx), %rcx
movq %rcx, 0x28(%rsp)
addq $0x20, %r12
xorl %r14d, %r14d
leaq 0xde27(%rip), %rbp      # 0x378f4
cltq
cmpq %rax, %r14
jge 0x29f01
movq -0x10(%r12), %rax
testq %rax, %rax
je 0x29aff
movl (%rax), %eax
decl %eax
cmpl $0x9, %eax
ja 0x29aff
movslq (%rbp,%rax,4), %rax
addq %rbp, %rax
movq %r13, %rdi
jmpq *%rax
movq 0x28(%rsp), %rdi
jmp 0x29b46
movq 0x204e2(%rip), %rdi     # 0x49fe8
leaq 0xe046(%rip), %rsi      # 0x37b53
callq 0x72b0
movq -0x8(%r12), %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
jmp 0x29c0f
movq 0x10(%rsp), %rdi
jmp 0x29b46
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x29c0f
movq 0x30(%rsp), %rdi
movq (%r12), %rsi
callq 0x7660
jmp 0x29c0f
movq (%r12), %rsi
leaq 0x98(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x91c4
leaq 0x158(%rsp), %rbx
movq %rbx, %rdi
leaq 0xdfc8(%rip), %rsi      # 0x37b44
leaq 0x7(%rsp), %rdx
callq 0x91c4
leaq 0x98(%rsp), %r15
movq %r15, %rdi
movq 0x60(%rsp), %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x2952a
movq %rbx, %rdi
callq 0x76a8
movq %r15, %rdi
jmp 0x29c0a
movq (%r12), %rsi
leaq 0x78(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x91c4
leaq 0x138(%rsp), %r15
movq %r15, %rdi
leaq 0xdf8c(%rip), %rsi      # 0x37b64
leaq 0x7(%rsp), %rdx
callq 0x91c4
leaq 0x78(%rsp), %rbx
movq %rbx, %rdi
movq 0x20(%rsp), %rsi
movq %r15, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x2952a
movq %r15, %rdi
callq 0x76a8
movq %rbx, %rdi
callq 0x76a8
incq %r14
movl 0x40(%rsp), %eax
addq $0x30, %r12
jmp 0x29acd
leaq 0x1fd9a(%rip), %rsi     # 0x499c0
leaq 0x18(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xc892
movl 0x1c(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, %r13
testq %r12, %r12
je 0x29c81
leaq 0x10(%r13), %rax
leaq 0x1(%r13), %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x29c61
movl 0x18(%rsp), %r12d
imulq $0x30, %r12, %r15
movq %r15, %rdi
callq 0x7030
movq %rax, 0x10(%rsp)
testq %r12, %r12
movq 0x10(%rsp), %r12
je 0x29cd0
leaq 0x10(%r12), %rax
leaq 0x1(%r12), %rcx
xorl %edx, %edx
xorps %xmm0, %xmm0
leaq (%rcx,%rdx), %rsi
movups %xmm0, 0xc(%rax,%rdx)
movups %xmm0, (%rax,%rdx)
movq %rsi, -0x8(%rax,%rdx)
movq %rsi, -0x10(%rax,%rdx)
addq $0x30, %rdx
cmpq %rdx, %r15
jne 0x29cb0
subq $0x8, %rsp
leaq 0x1fce5(%rip), %rsi     # 0x499c0
leaq 0x48(%rsp), %rdi
movl %ebp, %edx
movq %r14, %rcx
movq %r13, %r8
movq %r12, %r9
pushq $-0x1
pushq $0x0
pushq $0x0
callq 0xc8bc
addq $0x20, %rsp
cmpb $0x1, 0x50(%rsp)
je 0x2a124
movq %r13, 0x68(%rsp)
movl 0x40(%rsp), %eax
testl %eax, %eax
je 0x2a182
movq 0x8(%rsp), %rdx
leaq 0xf8(%rdx), %rcx
movq %rcx, 0x30(%rsp)
leaq 0x28(%rdx), %rcx
movq %rcx, 0x28(%rsp)
leaq 0xd8(%rdx), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xc0(%rdx), %rcx
movq %rcx, 0x58(%rsp)
leaq 0x48(%rdx), %rcx
movq %rcx, 0x60(%rsp)
leaq 0xa8(%rdx), %rcx
movq %rcx, 0x70(%rsp)
leaq 0x8(%rdx), %r15
leaq 0x70(%rdx), %rcx
movq %rcx, 0x38(%rsp)
addq $0x20, %r12
xorl %r13d, %r13d
leaq 0x7(%rsp), %rbx
cltq
cmpq %rax, %r13
jge 0x29ef0
movq -0x10(%r12), %rax
testq %rax, %rax
je 0x29dae
movl (%rax), %eax
decl %eax
cmpl $0xb, %eax
ja 0x29dae
leaq 0xdb81(%rip), %rcx      # 0x3791c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq %r15, %rdi
jmpq *%rax
movq 0x38(%rsp), %rdi
jmp 0x29df2
movq 0x20233(%rip), %rdi     # 0x49fe8
leaq 0xdd97(%rip), %rsi      # 0x37b53
callq 0x72b0
movq -0x8(%r12), %rsi
movq %rax, %rdi
callq 0x72b0
movq %rax, %rdi
callq 0x7160
jmp 0x29dfb
movq 0x30(%rsp), %rdi
jmp 0x29df2
movq 0x28(%rsp), %rdi
jmp 0x29df2
movq 0x20(%rsp), %rdi
jmp 0x29df2
movq 0x60(%rsp), %rdi
movq (%r12), %rsi
callq 0x7660
incq %r13
movl 0x40(%rsp), %eax
addq $0x30, %r12
jmp 0x29d76
movq (%r12), %rsi
leaq 0xd8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x91c4
leaq 0x198(%rsp), %r14
movq %r14, %rdi
leaq 0xdd11(%rip), %rsi      # 0x37b44
movq %rbx, %rbp
movq %rbx, %rdx
callq 0x91c4
movq %r14, %rbx
leaq 0xd8(%rsp), %r14
movq %r14, %rdi
movq 0x70(%rsp), %rsi
movq %rbx, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x2952a
movq %rbx, %rdi
callq 0x76a8
movq %r14, %rdi
callq 0x76a8
movq %rbp, %rbx
jmp 0x29dfb
movq (%r12), %rsi
leaq 0xb8(%rsp), %rdi
leaq 0x6(%rsp), %rdx
callq 0x91c4
leaq 0x178(%rsp), %r14
movq %r14, %rdi
leaq 0xdcc6(%rip), %rsi      # 0x37b64
movq %rbx, %rdx
callq 0x91c4
leaq 0xb8(%rsp), %rbp
movq %rbp, %rdi
movq 0x58(%rsp), %rsi
movq %r14, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x2952a
movq %r14, %rdi
callq 0x76a8
movq %rbp, %rdi
callq 0x76a8
jmp 0x29dfb
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x29dfb
movq 0x20(%rsp), %rdi
jmp 0x29ef5
movq 0x68(%rsp), %rdi
callq 0x73f0
movq 0x10(%rsp), %rdi
jmp 0x29f10
movq 0x58(%rsp), %rdi
callq 0x73f0
movq 0x38(%rsp), %rdi
callq 0x73f0
movq 0x8(%rsp), %rbx
cmpq $0x0, 0x78(%rbx)
je 0x2a048
movl (%rbx), %eax
cmpl $0x1, %eax
jne 0x29f3a
cmpq $0x0, 0x118(%rbx)
je 0x29fc6
cmpl $0x3, %eax
je 0x29f72
cmpl $0x1, %eax
je 0x29fa7
testl %eax, %eax
jne 0x29f7d
cmpq $0x0, 0x50(%rbx)
je 0x2a0a1
cmpq $0x0, 0x30(%rbx)
jne 0x29f7d
movq 0x20067(%rip), %rax     # 0x49fc8
movq (%rax), %rcx
leaq 0xdce8(%rip), %rdi      # 0x37c53
pushq $0x57
jmp 0x2a0b4
cmpq $0x0, 0x50(%rbx)
je 0x2a0a1
movq 0xc0(%rbx), %rax
cmpq 0xc8(%rbx), %rax
jne 0x29fa7
addq $0xc0, %rbx
leaq 0x40(%rsp), %rsi
movl $0x32, (%rsi)
movq %rbx, %rdi
callq 0x18e08
leaq 0x118(%rsp), %rdi
callq 0x76a8
addq $0x1d8, %rsp            # imm = 0x1D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x1fffb(%rip), %rax     # 0x49fc8
movq (%rax), %rcx
leaq 0xdbdb(%rip), %rdi      # 0x37bb2
pushq $0x57
popq %rsi
pushq $0x1
popq %rdx
callq 0x7670
movl (%rbx), %eax
jmp 0x29f3a
movq 0x1ffd8(%rip), %rax     # 0x49fc8
movq (%rax), %rdi
leaq 0x8ec9(%rip), %rsi      # 0x32ec3
movq %r15, %rdx
xorl %eax, %eax
callq 0x7480
movq 0x1ffdd(%rip), %rdi     # 0x49fe8
leaq 0x1f72e(%rip), %rsi     # 0x49740
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
pushq $0x1
popq %rdi
callq 0x7390
movq 0x1ffb8(%rip), %rdi     # 0x49fe8
leaq 0x1f709(%rip), %rsi     # 0x49740
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a021
movq 0x1ff79(%rip), %rax     # 0x49fc8
movq (%rax), %rcx
leaq 0xdb12(%rip), %rdi      # 0x37b6b
pushq $0x46
jmp 0x2a0b4
movq 0x1ff84(%rip), %rdi     # 0x49fe8
leaq 0x1f7c5(%rip), %rsi     # 0x49830
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a19f
movq 0x1ff62(%rip), %rdi     # 0x49fe8
leaq 0x1fb43(%rip), %rsi     # 0x49bd0
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a19f
movq 0x1ff20(%rip), %rax     # 0x49fc8
movq (%rax), %rcx
leaq 0xdb58(%rip), %rdi      # 0x37c0a
pushq $0x48
popq %rsi
pushq $0x1
popq %rdx
callq 0x7670
jmp 0x2a021
movq 0x1ff1f(%rip), %rdi     # 0x49fe8
leaq 0x1f8f0(%rip), %rsi     # 0x499c0
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a19f
movq 0x1fefd(%rip), %rdi     # 0x49fe8
leaq 0x8e08(%rip), %rsi      # 0x32efa
callq 0x72b0
movq %rax, %rdi
callq 0x7160
jmp 0x2a021
movq 0x1fedd(%rip), %rdi     # 0x49fe8
leaq 0x8de8(%rip), %rsi      # 0x32efa
callq 0x72b0
movq %rax, %rdi
callq 0x7160
jmp 0x2a021
movq 0x1febd(%rip), %rdi     # 0x49fe8
leaq 0x8dc8(%rip), %rsi      # 0x32efa
callq 0x72b0
movq %rax, %rdi
callq 0x7160
jmp 0x2a021
movq 0x1fe9d(%rip), %rdi     # 0x49fe8
leaq 0x1f6de(%rip), %rsi     # 0x49830
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a19f
movq 0x1fe7e(%rip), %rdi     # 0x49fe8
leaq 0x1fa5f(%rip), %rsi     # 0x49bd0
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
jmp 0x2a19f
movq 0x1fe5f(%rip), %rdi     # 0x49fe8
leaq 0x1f830(%rip), %rsi     # 0x499c0
pushq $0x50
popq %rdx
pushq $0x32
popq %rcx
pushq $0x4b
popq %r8
callq 0x99da
xorl %edi, %edi
callq 0x7390
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
movq %rax, %rbx
jmp 0x2a218
jmp 0x2a2a0
movq %rax, %rbx
leaq 0x178(%rsp), %rdi
callq 0x76a8
jmp 0x2a225
jmp 0x2a2a0
movq %rax, %rbx
leaq 0x198(%rsp), %rdi
callq 0x76a8
leaq 0xd8(%rsp), %rdi
jmp 0x2a293
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x2a293
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
movq %rax, %rbx
jmp 0x2a26a
movq %rax, %rbx
leaq 0x138(%rsp), %rdi
callq 0x76a8
jmp 0x2a24f
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
jmp 0x2a293
jmp 0x2a2a0
jmp 0x2a2a0
movq %rax, %rbx
leaq 0x158(%rsp), %rdi
callq 0x76a8
leaq 0x98(%rsp), %rdi
jmp 0x2a293
movq %rax, %rbx
jmp 0x2a28b
jmp 0x2a2a0
movq %rax, %rbx
leaq 0x1b8(%rsp), %rdi
callq 0x76a8
leaq 0xf8(%rsp), %rdi
callq 0x76a8
jmp 0x2a2a3
jmp 0x2a2a0
jmp 0x2a2a0
jmp 0x2a2a0
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x76a8
movq %rbx, %rdi
callq 0x75e0