// File: /workspace/github_cpp_makefile_star2_O3/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 $0x218, %rsp            # imm = 0x218
cmpl $0x2, %edi
jl 0x34597
movq %rdx, %rbx
movq %rsi, %r15
movl %edi, %ebp
movq 0x8(%rsi), %r14
cmpb $0x2d, (%r14)
jne 0x3374c
cmpb $0x68, 0x1(%r14)
jne 0x3374c
cmpb $0x0, 0x2(%r14)
je 0x34597
leaq 0xca47(%rip), %rsi      # 0x4019a
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x34597
leaq 0x1f8(%rsp), %rdi
leaq 0x58(%rsp), %rdx
movq %r14, %rsi
callq 0xf418
movq 0x8(%r15), %r14
leaq 0x1402c(%rip), %rsi     # 0x477af
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x337fd
leaq 0x123d3(%rip), %rsi     # 0x45b69
movq %r14, %rdi
callq 0x7450
testl %eax, %eax
je 0x33801
leaq 0x12dac(%rip), %rsi     # 0x46555
movq %r14, %rdi
callq 0x7450
movl $0x3, %ecx
testl %eax, %eax
je 0x33806
movq 0x20807(%rip), %rax     # 0x53fc8
movq (%rax), %rdi
leaq 0xd678(%rip), %rsi      # 0x40e43
movq %r14, %rdx
xorl %eax, %eax
callq 0x7470
movq 0x2080c(%rip), %rdi     # 0x53fe8
leaq 0x1ff4d(%rip), %rsi     # 0x53730
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
callq 0x7a91
xorl %ecx, %ecx
jmp 0x33806
movl $0x1, %ecx
movl %ecx, (%rbx)
movq 0x207d9(%rip), %r14     # 0x53fe8
leaq 0x1235b(%rip), %rsi     # 0x45b71
movl $0x12, %edx
movq %r14, %rdi
callq 0x7340
movq 0x8(%r15), %r12
testq %r12, %r12
je 0x33848
movq %r12, %rdi
callq 0x7140
movq 0x207ad(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x33860
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 0x2076a(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
addl $-0x2, %ebp
addq $0x10, %r15
movl (%rbx), %eax
testl %eax, %eax
movq %rbx, 0x20(%rsp)
je 0x3400d
cmpl $0x3, %eax
je 0x33bf6
cmpl $0x1, %eax
jne 0x344a2
leaq 0x1ff66(%rip), %rsi     # 0x53820
leaq 0x30(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf308
movl 0x34(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x10(%rsp)
testq %rbx, %rbx
je 0x33921
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, %r12
jne 0x33901
movl 0x30(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x28(%rsp)
testq %rbx, %rbx
je 0x33973
movq 0x28(%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, %r12
jne 0x33953
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1fea0(%rip), %rsi     # 0x53820
leaq 0x60(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq 0x18(%rsp), %r8
movq 0x30(%rsp), %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf374
addq $0x20, %rsp
cmpb $0x1, 0x68(%rsp)
je 0x34641
cmpl $0x0, 0x58(%rsp)
je 0x346bc
jle 0x34478
movq 0x20(%rsp), %rax
leaq 0xa8(%rax), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x8(%rax), %r15
leaq 0x10(%rax), %r14
leaq 0x70(%rax), %rcx
movq %rcx, 0x48(%rsp)
addq $0x78, %rax
movq %rax, 0x40(%rsp)
movq 0x28(%rsp), %rbx
addq $0x20, %rbx
xorl %ebp, %ebp
leaq 0x12199(%rip), %r13     # 0x45b93
movq %r14, 0x50(%rsp)
movq %r15, 0x18(%rsp)
movq -0x10(%rbx), %rax
testq %rax, %rax
je 0x33a6c
movl (%rax), %eax
decl %eax
cmpl $0x6, %eax
ja 0x33a6c
leaq 0x11f6f(%rip), %rdx     # 0x4598c
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq %r14, %rax
movq %r15, %r12
jmpq *%rcx
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %r12
movq (%rbx), %r15
movq %r13, %r14
movq (%rax), %r13
movq %r15, %rdi
callq 0x7140
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r14, %r13
movq %r15, %rcx
movq 0x18(%rsp), %r15
movq 0x50(%rsp), %r14
movq %rax, %r8
callq 0x7510
jmp 0x33af5
movl $0x10, %edx
movq 0x20570(%rip), %rdi     # 0x53fe8
movq %r13, %rsi
callq 0x7340
movq -0x8(%rbx), %r12
testq %r12, %r12
je 0x33aa5
movq %r12, %rdi
callq 0x7140
movq 0x20550(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x33ac3
movq 0x2053c(%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 0x2051e(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x20500(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
incq %rbp
movslq 0x58(%rsp), %rax
addq $0x30, %rbx
cmpq %rax, %rbp
jl 0x33a04
jmp 0x34478
movq (%rbx), %rdi
callq 0x7520
cltq
movq 0x20(%rsp), %rcx
movq %rax, 0x118(%rcx)
jmp 0x33af5
movq (%rbx), %rsi
leaq 0x198(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xf418
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
leaq 0x98(%rsp), %r12
movq %r12, %rdi
leaq 0x12026(%rip), %rsi     # 0x45b84
leaq 0x1202d(%rip), %rdx     # 0x45b92
callq 0xc2d0
leaq 0x198(%rsp), %rdi
movq 0x38(%rsp), %rsi
movq %r12, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33569
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x33bac
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x33af5
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x33af5
movq 0x20(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x33af5
movq 0x20(%rsp), %rax
movb $0x1, 0x68(%rax)
jmp 0x33af5
leaq 0x1ffc3(%rip), %rsi     # 0x53bc0
leaq 0x30(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf308
movl 0x34(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x10(%rsp)
testq %rbx, %rbx
je 0x33c64
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, %r12
jne 0x33c44
movl 0x30(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x18(%rsp)
testq %rbx, %rbx
je 0x33cb6
movq 0x18(%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, %r12
jne 0x33c96
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1fefd(%rip), %rsi     # 0x53bc0
leaq 0x60(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq 0x18(%rsp), %r8
movq 0x20(%rsp), %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf374
addq $0x20, %rsp
cmpb $0x1, 0x68(%rsp)
je 0x3466a
cmpl $0x0, 0x58(%rsp)
je 0x346e1
jle 0x34008
movq 0x20(%rsp), %rax
leaq 0xd8(%rax), %rcx
movq %rcx, 0x48(%rsp)
leaq 0xe0(%rax), %rcx
movq %rcx, 0x40(%rsp)
leaq 0xc0(%rax), %rcx
movq %rcx, 0x78(%rsp)
leaq 0x48(%rax), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x50(%rax), %rcx
movq %rcx, 0x90(%rsp)
leaq 0xa8(%rax), %rcx
movq %rcx, 0x70(%rsp)
leaq 0x8(%rax), %rcx
movq %rcx, 0x28(%rsp)
leaq 0x10(%rax), %rcx
movq %rcx, 0x50(%rsp)
leaq 0x70(%rax), %rcx
movq %rcx, 0x88(%rsp)
addq $0x78, %rax
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rbx
addq $0x20, %rbx
xorl %r15d, %r15d
leaq 0x1b8(%rsp), %r13
leaq 0xd8(%rsp), %r14
movq -0x10(%rbx), %rax
testq %rax, %rax
je 0x33dd1
movl (%rax), %eax
decl %eax
cmpl $0x9, %eax
ja 0x33dd1
leaq 0x11b8b(%rip), %rdx     # 0x45934
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq 0x50(%rsp), %rax
movq 0x28(%rsp), %r12
jmpq *%rcx
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %r12
jmp 0x33e8a
movl $0x10, %edx
movq 0x2020b(%rip), %rdi     # 0x53fe8
leaq 0x11daf(%rip), %rsi     # 0x45b93
callq 0x7340
movq -0x8(%rbx), %r12
testq %r12, %r12
je 0x33e0e
movq %r12, %rdi
callq 0x7140
movq 0x201e7(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x33e2c
movq 0x201d3(%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 0x201b5(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x20197(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
jmp 0x33ff3
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %r12
jmp 0x33e8a
movq 0x20(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x33ff3
movq 0x90(%rsp), %rax
movq 0x38(%rsp), %r12
movq (%rbx), %rbp
movq %r13, %r14
movq (%rax), %r13
movq %rbp, %rdi
callq 0x7140
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r14, %r13
leaq 0xd8(%rsp), %r14
movq %rbp, %rcx
movq %rax, %r8
callq 0x7510
jmp 0x33ff3
movq (%rbx), %rsi
leaq 0x118(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xf418
leaq 0x1c8(%rsp), %r12
movq %r12, 0x1b8(%rsp)
movq %r13, %rdi
leaq 0x11c97(%rip), %rsi     # 0x45b84
leaq 0x11c9e(%rip), %rdx     # 0x45b92
callq 0xc2d0
leaq 0x118(%rsp), %rdi
movq 0x70(%rsp), %rsi
movq %r13, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33569
movq 0x1b8(%rsp), %rdi
cmpq %r12, %rdi
je 0x33f33
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x33ff3
movq 0x128(%rsp), %rsi
jmp 0x33feb
movq (%rbx), %rsi
leaq 0xf8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xf418
leaq 0xe8(%rsp), %r12
movq %r12, 0xd8(%rsp)
movq %r14, %rdi
leaq 0x11c1c(%rip), %rsi     # 0x45ba4
leaq 0x11c1b(%rip), %rdx     # 0x45baa
callq 0xc2d0
leaq 0xf8(%rsp), %rdi
movq 0x78(%rsp), %rsi
movq %r14, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x33569
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x33fce
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x33ff3
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x72f0
incq %r15
movslq 0x58(%rsp), %rax
addq $0x30, %rbx
cmpq %rax, %r15
jl 0x33d90
jmp 0x34489
leaq 0x1f99c(%rip), %rsi     # 0x539b0
leaq 0x30(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
xorl %r8d, %r8d
xorl %r9d, %r9d
callq 0xf308
movl 0x34(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x10(%rsp)
testq %rbx, %rbx
je 0x3407b
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, %r12
jne 0x3405b
movl 0x30(%rsp), %ebx
movq %rbx, %rax
shlq $0x4, %rax
leaq (%rax,%rax,2), %r12
movq %r12, %rdi
callq 0x7030
movq %rax, 0x18(%rsp)
testq %rbx, %rbx
je 0x340cd
movq 0x18(%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, %r12
jne 0x340ad
subq $0x8, %rsp
xorl %eax, %eax
leaq 0x1f8d6(%rip), %rsi     # 0x539b0
leaq 0x60(%rsp), %rdi
movl %ebp, %edx
movq %r15, %rcx
movq 0x18(%rsp), %r8
movq 0x20(%rsp), %r9
pushq $-0x1
pushq %rax
pushq %rax
callq 0xf374
addq $0x20, %rsp
cmpb $0x1, 0x68(%rsp)
je 0x34693
cmpl $0x0, 0x58(%rsp)
je 0x34706
jle 0x34489
movq 0x20(%rsp), %rax
leaq 0xf8(%rax), %rcx
movq %rcx, 0x48(%rsp)
leaq 0x100(%rax), %rcx
movq %rcx, 0x40(%rsp)
leaq 0x28(%rax), %rcx
movq %rcx, 0x38(%rsp)
leaq 0x30(%rax), %rcx
movq %rcx, 0x90(%rsp)
leaq 0xd8(%rax), %rcx
movq %rcx, 0x88(%rsp)
leaq 0xe0(%rax), %rcx
movq %rcx, 0x80(%rsp)
leaq 0xc0(%rax), %rcx
movq %rcx, 0xc0(%rsp)
leaq 0x48(%rax), %rcx
movq %rcx, 0x78(%rsp)
leaq 0x50(%rax), %rcx
movq %rcx, 0x70(%rsp)
leaq 0xa8(%rax), %rcx
movq %rcx, 0xb8(%rsp)
movq 0x18(%rsp), %r15
addq $0x20, %r15
leaq 0x8(%rax), %rcx
movq %rcx, 0x28(%rsp)
leaq 0x10(%rax), %rcx
movq %rcx, 0x50(%rsp)
leaq 0x70(%rax), %rcx
movq %rcx, 0xd0(%rsp)
addq $0x78, %rax
movq %rax, 0xc8(%rsp)
xorl %ebx, %ebx
leaq 0x1d8(%rsp), %r14
leaq 0x138(%rsp), %rbp
movq -0x10(%r15), %rax
testq %rax, %rax
je 0x3421d
movl (%rax), %eax
decl %eax
cmpl $0xb, %eax
ja 0x3421d
leaq 0x11767(%rip), %rdx     # 0x4595c
movslq (%rdx,%rax,4), %rcx
addq %rdx, %rcx
movq 0x50(%rsp), %rax
movq 0x28(%rsp), %r12
jmpq *%rcx
movq 0xc8(%rsp), %rax
movq 0xd0(%rsp), %r12
jmp 0x342e3
movl $0x10, %edx
movq 0x1fdbf(%rip), %rdi     # 0x53fe8
leaq 0x11963(%rip), %rsi     # 0x45b93
callq 0x7340
movq -0x8(%r15), %r12
testq %r12, %r12
je 0x3425a
movq %r12, %rdi
callq 0x7140
movq 0x1fd9b(%rip), %rdi     # 0x53fe8
movq %r12, %rsi
movq %rax, %rdx
callq 0x7340
jmp 0x34278
movq 0x1fd87(%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 0x1fd69(%rip), %rcx     # 0x53fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x72b0
movsbl %al, %esi
movq 0x1fd4b(%rip), %rdi     # 0x53fe8
callq 0x7040
movq %rax, %rdi
callq 0x71d0
jmp 0x3430c
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %r12
jmp 0x342e3
movq 0x90(%rsp), %rax
movq 0x38(%rsp), %r12
jmp 0x342e3
movq 0x80(%rsp), %rax
movq 0x88(%rsp), %r12
jmp 0x342e3
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %r12
movq (%r15), %rbp
movq (%rax), %r13
movq %rbp, %rdi
callq 0x7140
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %rbp, %rcx
leaq 0x138(%rsp), %rbp
movq %rax, %r8
callq 0x7510
incq %rbx
movslq 0x58(%rsp), %rax
addq $0x30, %r15
cmpq %rax, %rbx
jl 0x341dc
jmp 0x34489
movq (%r15), %rsi
leaq 0x178(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xf418
leaq 0x1e8(%rsp), %r12
movq %r12, 0x1d8(%rsp)
movq %r14, %rdi
leaq 0x1182f(%rip), %rsi     # 0x45b84
leaq 0x11836(%rip), %rdx     # 0x45b92
callq 0xc2d0
leaq 0x178(%rsp), %rdi
movq 0xb8(%rsp), %rsi
movq %r14, %rdx
xorl %ecx, %ecx
movl $0xff, %r8d
callq 0x33569
movq 0x1d8(%rsp), %rdi
cmpq %r12, %rdi
je 0x3439e
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x3430c
movq 0x188(%rsp), %rsi
jmp 0x3445d
movq (%r15), %rsi
leaq 0x158(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0xf418
leaq 0x148(%rsp), %r12
movq %r12, 0x138(%rsp)
movq %rbp, %rdi
leaq 0x117b1(%rip), %rsi     # 0x45ba4
leaq 0x117b0(%rip), %rdx     # 0x45baa
callq 0xc2d0
leaq 0x158(%rsp), %rdi
movq 0xc0(%rsp), %rsi
movq %rbp, %rdx
xorl %ecx, %ecx
movl $0xf4240, %r8d          # imm = 0xF4240
callq 0x33569
movq 0x138(%rsp), %rdi
cmpq %r12, %rdi
je 0x3443c
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x72f0
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x3430c
movq 0x168(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x3430c
movq 0x20(%rsp), %rax
movb $0x1, 0x69(%rax)
jmp 0x3430c
movq 0x10(%rsp), %rdi
callq 0x7400
movq 0x28(%rsp), %rdi
jmp 0x34498
movq 0x10(%rsp), %rdi
callq 0x7400
movq 0x18(%rsp), %rdi
callq 0x7400
movq 0x20(%rsp), %rbx
cmpq $0x0, 0x78(%rbx)
je 0x345c4
movl (%rbx), %eax
cmpl $0x1, %eax
jne 0x344c2
cmpq $0x0, 0x118(%rbx)
je 0x34570
cmpl $0x3, %eax
je 0x344e7
cmpl $0x1, %eax
je 0x3453d
testl %eax, %eax
jne 0x344f2
cmpq $0x0, 0x50(%rbx)
je 0x34730
cmpq $0x0, 0x30(%rbx)
jne 0x344f2
callq 0x7abf
cmpq $0x0, 0x50(%rbx)
je 0x34735
movq 0xc0(%rbx), %rax
movq 0xc8(%rbx), %rsi
cmpq %rsi, %rax
jne 0x3453d
movl $0x32, 0x58(%rsp)
cmpq 0xd0(%rbx), %rax
je 0x34529
movl $0x32, (%rsi)
addq $0x4, %rsi
movq %rsi, 0xc8(%rbx)
jmp 0x3453d
addq $0xc0, %rbx
leaq 0x58(%rsp), %rdx
movq %rbx, %rdi
callq 0x1e9a6
leaq 0x208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3455e
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x72f0
addq $0x218, %rsp            # imm = 0x218
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x1fa51(%rip), %rax     # 0x53fc8
movq (%rax), %rcx
leaq 0x11671(%rip), %rdi     # 0x45bf2
movl $0x57, %esi
movl $0x1, %edx
callq 0x7690
movl (%rbx), %eax
jmp 0x344c2
movq 0x1fa4a(%rip), %rdi     # 0x53fe8
leaq 0x1f18b(%rip), %rsi     # 0x53730
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
movl $0x1, %edi
callq 0x73b0
callq 0x7b09
movq 0x1fa18(%rip), %rdi     # 0x53fe8
leaq 0x1f249(%rip), %rsi     # 0x53820
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
jmp 0x34729
movq 0x1f9f0(%rip), %rdi     # 0x53fe8
leaq 0x1f5c1(%rip), %rsi     # 0x53bc0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
jmp 0x34729
movq 0x1f9c8(%rip), %rdi     # 0x53fe8
leaq 0x1f389(%rip), %rsi     # 0x539b0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
jmp 0x34729
movq 0x1f9a0(%rip), %rdi     # 0x53fe8
leaq 0xc82b(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f988(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x345ba
movq 0x1f977(%rip), %rdi     # 0x53fe8
leaq 0xc802(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f95f(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x345ba
movq 0x1f94e(%rip), %rdi     # 0x53fe8
leaq 0xc7d9(%rip), %rsi      # 0x40e7a
movl $0x2c, %edx
callq 0x7340
movq 0x1f936(%rip), %rdi     # 0x53fe8
callq 0x7150
jmp 0x345ba
movq 0x1f925(%rip), %rdi     # 0x53fe8
leaq 0x1f156(%rip), %rsi     # 0x53820
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
jmp 0x34729
movq 0x1f900(%rip), %rdi     # 0x53fe8
leaq 0x1f4d1(%rip), %rsi     # 0x53bc0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
jmp 0x34729
movq 0x1f8db(%rip), %rdi     # 0x53fe8
leaq 0x1f29c(%rip), %rsi     # 0x539b0
movl $0x50, %edx
movl $0x32, %ecx
movl $0x4b, %r8d
callq 0xb9e7
xorl %edi, %edi
callq 0x73b0
callq 0x7ae4
callq 0x7a9a
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
movq %rax, %r14
movq 0x1d8(%rsp), %rdi
cmpq %r12, %rdi
je 0x347a0
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x347a0
movq %rax, %r14
movq 0x178(%rsp), %rdi
leaq 0x188(%rsp), %rax
cmpq %rax, %rdi
je 0x34916
movq 0x188(%rsp), %rsi
jmp 0x348fb
jmp 0x34913
movq %rax, %r14
movq 0x138(%rsp), %rdi
cmpq %r12, %rdi
je 0x347f0
movq 0x148(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x347f0
movq %rax, %r14
movq 0x158(%rsp), %rdi
leaq 0x168(%rsp), %rax
cmpq %rax, %rdi
je 0x34916
movq 0x168(%rsp), %rsi
jmp 0x348fb
jmp 0x34913
movq %rax, %r14
movq 0x1b8(%rsp), %rdi
cmpq %r12, %rdi
je 0x34840
movq 0x1c8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34840
movq %rax, %r14
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x34916
movq 0x128(%rsp), %rsi
jmp 0x348fb
jmp 0x34913
movq %rax, %r14
movq 0xd8(%rsp), %rdi
cmpq %r12, %rdi
je 0x34890
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34890
movq %rax, %r14
movq 0xf8(%rsp), %rdi
leaq 0x108(%rsp), %rax
cmpq %rax, %rdi
je 0x34916
movq 0x108(%rsp), %rsi
jmp 0x348fb
jmp 0x34913
movq %rax, %r14
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x348de
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x348de
movq %rax, %r14
movq 0x198(%rsp), %rdi
leaq 0x1a8(%rsp), %rax
cmpq %rax, %rdi
je 0x34916
movq 0x1a8(%rsp), %rsi
incq %rsi
callq 0x72f0
jmp 0x34916
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
jmp 0x34913
movq %rax, %r14
leaq 0x208(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x34937
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x72f0
movq %r14, %rdi
callq 0x7600