// File: /workspace/github_cpp_makefile_star2_O1/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 $0x208, %rsp            # imm = 0x208
cmpl $0x2, %edi
jl 0x34776
movq %rdx, %rbx
movq %rsi, %r15
movl %edi, %ebp
movq 0x8(%rsi), %r14
leaq 0xc8af(%rip), %rsi      # 0x4019a
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x34776
leaq 0xc89b(%rip), %rsi      # 0x4019d
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x34776
leaq 0x1e8(%rsp), %rdi
leaq 0x48(%rsp), %rdx
movq %r14, %rsi
callq 0xf4e4
movq 0x8(%r15), %r14
leaq 0x13e7d(%rip), %rsi     # 0x477af
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x339ac
leaq 0x12224(%rip), %rsi     # 0x45b69
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x339b0
leaq 0x12bfd(%rip), %rsi     # 0x46555
movq %r14, %rdi
callq 0x7450
movl $0x3, %ecx
testl %eax, %eax
je 0x339b5
movq 0x20658(%rip), %rax     # 0x53fc8
movq (%rax), %rdi
leaq 0xd4c9(%rip), %rsi      # 0x40e43
movq %r14, %rdx
xorl %eax, %eax
callq 0x7470
movq 0x2065d(%rip), %rdi     # 0x53fe8
leaq 0x1fd9e(%rip), %rsi     # 0x53730
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
callq 0x7ad5
xorl %ecx, %ecx
jmp 0x339b5
movl $0x1, %ecx
movl %ecx, (%rbx)
movq 0x2062a(%rip), %r14     # 0x53fe8
leaq 0x121ac(%rip), %rsi     # 0x45b71
movl $0x12, %edx
movq %r14, %rdi
callq 0x7340
movq 0x8(%r15), %r12
testq %r12, %r12
je 0x339f7
movq %r12, %rdi
callq 0x7140
movq 0x205fe(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x33a0f
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x75c0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x205bb(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
addl $-0x2, %ebp
addq $0x10, %r15
movl (%rbx), %eax
testl %eax, %eax
movq %rbx, 0x8(%rsp)
je 0x3420a
cmpl $0x3, %eax
je 0x33dbf
cmpl $0x1, %eax
jne 0x34698
leaq 0x1fdb7(%rip), %rsi     # 0x53820
leaq 0x10(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf3d4
movl 0x14(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r14
testq %rbx, %rbx
je 0x33aca
leaq 0x10(%r14), %rax
leaq 0x1(%r14), %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, %r12
jne 0x33aaa
movl 0x10(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r13
testq %rbx, %rbx
je 0x33b16
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, %r12
jne 0x33af6
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1fcfd(%rip), %rsi     # 0x53820
leaq 0x50(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq %r14, %r8
movq %r13, %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf440
addq $0x20, %rsp
cmpb $0x1, 0x58(%rsp)
je 0x34825
movq %r13, 0x18(%rsp)
movq %r14, 0x28(%rsp)
cmpl $0x0, 0x48(%rsp)
je 0x348a0
cmpl $0x0, 0x48(%rsp)
jle 0x33dab
movq 0x8(%rsp), %rax
leaq 0xa8(%rax), %rcx
movq %rcx, 0x30(%rsp)
leaq 0x8(%rax), %r15
leaq 0x10(%rax), %rbx
leaq 0x70(%rax), %rcx
movq %rcx, 0x20(%rsp)
addq $0x78, %rax
movq %rax, 0x38(%rsp)
movq 0x18(%rsp), %r13
addq $0x20, %r13
xorl %r14d, %r14d
leaq 0x11de3(%rip), %r12     # 0x4598c
movq %rbx, 0x40(%rsp)
movq -0x10(%r13), %rax
testq %rax, %rax
je 0x33bbb
movl (%rax), %eax
jmp 0x33bc0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
decl %eax
cmpl $0x6, %eax
ja 0x33d09
movslq (%r12,%rax,4), %rcx
addq %r12, %rcx
movq %rbx, %rax
movq %r15, %rbp
jmpq *%rcx
movq 0x38(%rsp), %rax
movq 0x20(%rsp), %rbp
movq (%r13), %r12
movq %r15, %rbx
movq (%rax), %r15
movq %r12, %rdi
callq 0x7140
movq %rbp, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %rbx, %r15
movq 0x40(%rsp), %rbx
movq %r12, %rcx
leaq 0x11d7c(%rip), %r12     # 0x4598c
movq %rax, %r8
callq 0x7510
jmp 0x33d96
movq (%r13), %rdi
callq 0x7520
cltq
movq 0x8(%rsp), %rcx
movq %rax, 0x118(%rcx)
jmp 0x33d96
movq (%r13), %rsi
leaq 0x1c8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xf4e4
leaq 0x128(%rsp), %rax
movq %rax, 0x118(%rsp)
leaq 0x118(%rsp), %rbp
movq %rbp, %rdi
leaq 0x11f13(%rip), %rsi     # 0x45b84
leaq 0x11f1a(%rip), %rdx     # 0x45b92
callq 0xc2e4
leaq 0x1c8(%rsp), %rdi
movq 0x30(%rsp), %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33719
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x33cbf
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x33d96
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x33d96
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x33d96
movq 0x8(%rsp), %rax
movb $0x1, 0x68(%rax)
jmp 0x33d96
movl $0x10, %edx
movq 0x202d3(%rip), %rdi     # 0x53fe8
leaq 0x11e77(%rip), %rsi     # 0x45b93
callq 0x7340
movq -0x8(%r13), %rbp
testq %rbp, %rbp
je 0x33d46
movq %rbp, %rdi
callq 0x7140
movq 0x202af(%rip), %rdi     # 0x53fe8
movq %rbp, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x33d64
movq 0x2029b(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
leaq (%rcx,%rax), %rdi
movl 0x20(%rcx,%rax), %esi
orl $0x1, %esi
callq 0x75c0
movq 0x2027d(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x2025f(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
incq %r14
movslq 0x48(%rsp), %rax
addq $0x30, %r13
cmpq %rax, %r14
jl 0x33bae
movq 0x28(%rsp), %rdi
callq 0x7400
movq 0x18(%rsp), %rdi
jmp 0x3468e
leaq 0x1fdfa(%rip), %rsi     # 0x53bc0
leaq 0x10(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf3d4
movl 0x14(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r14
testq %rbx, %rbx
je 0x33e27
leaq 0x10(%r14), %rax
leaq 0x1(%r14), %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, %r12
jne 0x33e07
movl 0x10(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r13
testq %rbx, %rbx
je 0x33e73
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, %r12
jne 0x33e53
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1fd40(%rip), %rsi     # 0x53bc0
leaq 0x50(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq %r14, %r8
movq %r13, %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf440
addq $0x20, %rsp
cmpb $0x1, 0x58(%rsp)
je 0x3484e
movq %r13, 0x60(%rsp)
movq %r14, 0x68(%rsp)
cmpl $0x0, 0x48(%rsp)
je 0x348c5
cmpl $0x0, 0x48(%rsp)
jle 0x341f6
movq 0x8(%rsp), %rax
leaq 0xd8(%rax), %rcx
movq %rcx, 0x30(%rsp)
leaq 0xe0(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0xc0(%rax), %rcx
movq %rcx, 0x78(%rsp)
leaq 0x48(%rax), %rcx
movq %rcx, 0x28(%rsp)
leaq 0x50(%rax), %rcx
movq %rcx, 0x90(%rsp)
leaq 0xa8(%rax), %rcx
movq %rcx, 0x70(%rsp)
leaq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0x10(%rax), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x70(%rax), %rcx
movq %rcx, 0x88(%rsp)
addq $0x78, %rax
movq %rax, 0x80(%rsp)
movq 0x60(%rsp), %r13
addq $0x20, %r13
xorl %ebx, %ebx
leaq 0xb8(%rsp), %r15
leaq 0x98(%rsp), %r14
movq -0x10(%r13), %rax
testq %rax, %rax
je 0x33f64
movl (%rax), %eax
jmp 0x33f69
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
decl %eax
cmpl $0x9, %eax
ja 0x34154
leaq 0x119b9(%rip), %rdx     # 0x45934
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq 0x38(%rsp), %rax
movq 0x20(%rsp), %r12
jmpq *%rcx
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %r12
jmp 0x33fc7
movq 0x18(%rsp), %rax
movq 0x30(%rsp), %r12
jmp 0x33fc7
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x341e1
movq 0x90(%rsp), %rax
movq 0x28(%rsp), %r12
movq %rbx, 0x40(%rsp)
movq %r14, %rbx
movq %r15, %r14
movq (%r13), %r15
movq (%rax), %rbp
movq %r15, %rdi
callq 0x7140
movq %r12, %rdi
xorl %esi, %esi
movq %rbp, %rdx
movq %r15, %rcx
movq %r14, %r15
movq %rbx, %r14
movq 0x40(%rsp), %rbx
movq %rax, %r8
callq 0x7510
jmp 0x341e1
movq (%r13), %rsi
leaq 0x168(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xf4e4
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq %r15, %rdi
leaq 0x11b50(%rip), %rsi     # 0x45b84
leaq 0x11b57(%rip), %rdx     # 0x45b92
callq 0xc2e4
leaq 0x168(%rsp), %rdi
movq 0x70(%rsp), %rsi
movq %r15, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33719
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x34082
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x341e1
movq 0x178(%rsp), %rsi
jmp 0x34147
movq (%r13), %rsi
leaq 0x148(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xf4e4
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq %r14, %rdi
leaq 0x11acc(%rip), %rsi     # 0x45ba4
leaq 0x11acb(%rip), %rdx     # 0x45baa
callq 0xc2e4
leaq 0x148(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq %r14, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x33719
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x34126
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x341e1
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x341e1
movl $0x10, %edx
movq 0x1fe88(%rip), %rdi     # 0x53fe8
leaq 0x11a2c(%rip), %rsi     # 0x45b93
callq 0x7340
movq -0x8(%r13), %r12
testq %r12, %r12
je 0x34191
movq %r12, %rdi
callq 0x7140
movq 0x1fe64(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x341af
movq 0x1fe50(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
leaq (%rcx,%rax), %rdi
movl 0x20(%rcx,%rax), %esi
orl $0x1, %esi
callq 0x75c0
movq 0x1fe32(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x1fe14(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
incq %rbx
movslq 0x48(%rsp), %rax
addq $0x30, %r13
cmpq %rax, %rbx
jl 0x33f57
movq 0x68(%rsp), %rdi
callq 0x7400
movq 0x60(%rsp), %rdi
jmp 0x3468e
leaq 0x1f79f(%rip), %rsi     # 0x539b0
leaq 0x10(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf3d4
movl 0x14(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r14
testq %rbx, %rbx
je 0x34272
leaq 0x10(%r14), %rax
leaq 0x1(%r14), %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, %r12
jne 0x34252
movl 0x10(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, %r13
testq %rbx, %rbx
je 0x342be
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, %r12
jne 0x3429e
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1f6e5(%rip), %rsi     # 0x539b0
leaq 0x50(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq %r14, %r8
movq %r13, %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf440
addq $0x20, %rsp
cmpb $0x1, 0x58(%rsp)
je 0x34877
movq %r13, 0x20(%rsp)
movq %r14, 0x138(%rsp)
cmpl $0x0, 0x48(%rsp)
je 0x348ea
cmpl $0x0, 0x48(%rsp)
jle 0x3467c
movq 0x8(%rsp), %rax
leaq 0xf8(%rax), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x100(%rax), %rcx
movq %rcx, 0x30(%rsp)
leaq 0x28(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x30(%rax), %rcx
movq %rcx, 0x28(%rsp)
leaq 0xd8(%rax), %rcx
movq %rcx, 0x90(%rsp)
leaq 0xe0(%rax), %rcx
movq %rcx, 0x88(%rsp)
leaq 0xc0(%rax), %rcx
movq %rcx, 0x68(%rsp)
leaq 0x48(%rax), %rcx
movq %rcx, 0x80(%rsp)
leaq 0x50(%rax), %rcx
movq %rcx, 0x78(%rsp)
leaq 0xa8(%rax), %rcx
movq %rcx, 0x140(%rsp)
movq 0x20(%rsp), %r13
addq $0x20, %r13
leaq 0x8(%rax), %rcx
movq %rcx, 0x40(%rsp)
leaq 0x10(%rax), %rbx
leaq 0x70(%rax), %rcx
movq %rcx, 0x70(%rsp)
addq $0x78, %rax
movq %rax, 0x60(%rsp)
xorl %r14d, %r14d
movq -0x10(%r13), %rax
testq %rax, %rax
je 0x343cb
movl (%rax), %eax
jmp 0x343d0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
decl %eax
cmpl $0xb, %eax
ja 0x34521
leaq 0x1157a(%rip), %rdx     # 0x4595c
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq %rbx, %rax
movq 0x40(%rsp), %r12
jmpq *%rcx
movq 0x60(%rsp), %rax
movq 0x70(%rsp), %r12
jmp 0x34436
movq 0x30(%rsp), %rax
movq 0x38(%rsp), %r12
jmp 0x34436
movq 0x28(%rsp), %rax
movq 0x18(%rsp), %r12
jmp 0x34436
movq 0x88(%rsp), %rax
movq 0x90(%rsp), %r12
jmp 0x34436
movq 0x78(%rsp), %rax
movq 0x80(%rsp), %r12
movq (%r13), %r15
movq (%rax), %rbp
movq %r15, %rdi
callq 0x7140
movq %r12, %rdi
xorl %esi, %esi
movq %rbp, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x7510
incq %r14
movslq 0x48(%rsp), %rax
addq $0x30, %r13
cmpq %rax, %r14
jl 0x343be
jmp 0x3467c
movq (%r13), %rsi
leaq 0x1a8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xf4e4
leaq 0x108(%rsp), %rax
movq %rax, 0xf8(%rsp)
leaq 0xf8(%rsp), %r15
movq %r15, %rdi
leaq 0x116da(%rip), %rsi     # 0x45b84
leaq 0x116e1(%rip), %rdx     # 0x45b92
callq 0xc2e4
leaq 0x1a8(%rsp), %rdi
movq 0x140(%rsp), %rsi
movq %r15, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33719
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x344fb
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x34458
movq 0x1b8(%rsp), %rsi
jmp 0x3460c
movl $0x10, %edx
movq 0x1fabb(%rip), %rdi     # 0x53fe8
leaq 0x1165f(%rip), %rsi     # 0x45b93
callq 0x7340
movq -0x8(%r13), %r12
testq %r12, %r12
je 0x34627
movq %r12, %rdi
callq 0x7140
movq 0x1fa93(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x34645
movq (%r13), %rsi
leaq 0x188(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0xf4e4
leaq 0xe8(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0xd8(%rsp), %r15
movq %r15, %rdi
leaq 0x11607(%rip), %rsi     # 0x45ba4
leaq 0x11606(%rip), %rdx     # 0x45baa
callq 0xc2e4
leaq 0x188(%rsp), %rdi
movq 0x68(%rsp), %rsi
movq %r15, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x33719
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x345eb
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x34458
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34458
movq 0x8(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x34458
movq 0x1f9ba(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rax
leaq (%rcx,%rax), %rdi
movl 0x20(%rcx,%rax), %esi
orl $0x1, %esi
callq 0x75c0
movq 0x1f99c(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x1f97e(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
jmp 0x34458
movq 0x138(%rsp), %rdi
callq 0x7400
movq 0x20(%rsp), %rdi
callq 0x7400
movq 0x8(%rsp), %rbx
cmpq $0x0, 0x78(%rbx)
je 0x347a3
cmpl $0x1, (%rbx)
jne 0x346b6
cmpq $0x0, 0x118(%rbx)
je 0x3476c
movl (%rbx), %eax
cmpl $0x3, %eax
je 0x346e1
cmpl $0x1, %eax
je 0x34739
testl %eax, %eax
jne 0x346f1
cmpq $0x0, 0x50(%rbx)
je 0x34914
cmpq $0x0, 0x30(%rbx)
je 0x34919
cmpl $0x3, %eax
jne 0x346ec
cmpq $0x0, 0x50(%rbx)
je 0x34820
cmpl $0x1, %eax
je 0x34739
movq 0xc8(%rbx), %rsi
cmpq %rsi, 0xc0(%rbx)
jne 0x34739
movl $0x32, 0x48(%rsp)
cmpq 0xd0(%rbx), %rsi
je 0x34725
movl $0x32, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xc8(%rbx)
jmp 0x34739
addq $0xc0, %rbx
leaq 0x48(%rsp), %rdx
movq %rbx, %rdi
callq 0x1ecaa
leaq 0x1f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3475a
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x72f0
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x7ade
jmp 0x346b6
movq 0x1f86b(%rip), %rdi     # 0x53fe8
leaq 0x1efac(%rip), %rsi     # 0x53730
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
movl $0x1, %edi
callq 0x73b0
callq 0x7b6f
movq 0x1f839(%rip), %rdi     # 0x53fe8
leaq 0x1f06a(%rip), %rsi     # 0x53820
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
jmp 0x3490d
movq 0x1f811(%rip), %rdi     # 0x53fe8
leaq 0x1f3e2(%rip), %rsi     # 0x53bc0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
jmp 0x3490d
movq 0x1f7e9(%rip), %rdi     # 0x53fe8
leaq 0x1f1aa(%rip), %rsi     # 0x539b0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
jmp 0x3490d
callq 0x7b00
movq 0x1f7bc(%rip), %rdi     # 0x53fe8
leaq 0xc647(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f7a4(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x34799
movq 0x1f793(%rip), %rdi     # 0x53fe8
leaq 0xc61e(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f77b(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x34799
movq 0x1f76a(%rip), %rdi     # 0x53fe8
leaq 0xc5f5(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f752(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x34799
movq 0x1f741(%rip), %rdi     # 0x53fe8
leaq 0x1ef72(%rip), %rsi     # 0x53820
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
jmp 0x3490d
movq 0x1f71c(%rip), %rdi     # 0x53fe8
leaq 0x1f2ed(%rip), %rsi     # 0x53bc0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
jmp 0x3490d
movq 0x1f6f7(%rip), %rdi     # 0x53fe8
leaq 0x1f0b8(%rip), %rsi     # 0x539b0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xba01
xorl %edi, %edi
callq 0x73b0
callq 0x7b4a
callq 0x7b25
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
movq %rax, %r15
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x3498c
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x3498c
movq %rax, %r15
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x34b23
movq 0x1b8(%rsp), %rsi
jmp 0x34b0e
jmp 0x34b20
movq %rax, %r15
movq 0xd8(%rsp), %rdi
leaq 0xe8(%rsp), %rax
cmpq %rax, %rdi
je 0x349e4
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x349e4
movq %rax, %r15
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x34b23
movq 0x198(%rsp), %rsi
jmp 0x34b0e
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
movq %rax, %r15
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x34a4b
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34a4b
movq %rax, %r15
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x34b23
movq 0x178(%rsp), %rsi
jmp 0x34b0e
jmp 0x34b20
movq %rax, %r15
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x34aa3
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34aa3
movq %rax, %r15
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x34b23
movq 0x158(%rsp), %rsi
jmp 0x34b0e
jmp 0x34b20
movq %rax, %r15
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x34af1
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34af1
movq %rax, %r15
movq 0x1c8(%rsp), %rdi
leaq 0x1d8(%rsp), %rax
cmpq %rax, %rdi
je 0x34b23
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34b23
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
jmp 0x34b20
movq %rax, %r15
leaq 0x1f8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34b44
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq %r15, %rdi
callq 0x7600