// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/evo_combineVCFs.cpp
// Function: VCFcombMain(int, char**)
int VCFcombMain(int argc, char** argv) {
    parseVCFcombOptions(argc, argv);
    const string refAllele = "0/0"; const string altAllele = "1/1";
    string line; // for reading the input files
    
    std::istream* vcfFile1 = createReader(opt::vcfFile1.c_str());
    std::istream* vcfFile2 = createReader(opt::vcfFile2.c_str());
    std::ifstream* refFile1 = new std::ifstream(opt::refFile1.c_str());
    std::ifstream* refFile2 = new std::ifstream(opt::refFile2.c_str());
    
    string extraMaskFileName = opt::out + "_extraMask.bed";
    std::ofstream* extraMaskFile = new std::ofstream(extraMaskFileName.c_str());
    
    
    // Read in the whole reference sequences
    string refSeq1; string refSeq2; refSeq1.reserve(50000000); refSeq2.reserve(50000000);
    getline(*refFile1, line); string chrRef1 = line.substr(1,string::npos);
    getline(*refFile2, line); string chrRef2 = line.substr(1,string::npos);
    assert(chrRef1 == chrRef2);
    
    while (getline(*refFile1, line)) { refSeq1.append(line); }
    while (getline(*refFile2, line)) { refSeq2.append(line); }
    assert(chrRef1.length() == chrRef2.length());
    std::transform(refSeq1.begin(), refSeq1.end(),refSeq1.begin(), ::toupper);
    std::transform(refSeq2.begin(), refSeq2.end(),refSeq2.begin(), ::toupper);
    
    std::map<int,string> VCF1; std::map<int,string> VCF2;
    std::vector<string> header1; std::vector<string> header2;
    std::vector<string> samples1; std::vector<string> samples2;
    std::vector<std::string> fields;
    // Now go through the vcf and add the AA fields
    while (getline(*vcfFile1, line)) {
        if (line[0] == '#' && line[1] == '#') { header1.push_back(line); }
        else if (line[0] == '#' && line[1] == 'C') {
            header1.push_back(line);
            fields = split(line, '\t');
            for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                samples1.push_back(fields[i]);
            }
        } else {
            fields = split(line, '\t');
            VCF1[atoi(fields[1].c_str())] = line;
        }
    }
    while (getline(*vcfFile2, line)) {
        if (line[0] == '#' && line[1] == '#') { header2.push_back(line); }
        else if (line[0] == '#' && line[1] == 'C') {
            header2.push_back(line); fields = split(line, '\t');
            for (std::vector<std::string>::size_type i = NUM_NON_GENOTYPE_COLUMNS; i != fields.size(); i++) {
                samples2.push_back(fields[i]);
            }
        } else {
            fields = split(line, '\t');
            VCF2[atoi(fields[1].c_str())] = line;
        }
    }
    
    std::ifstream* accessibleGenomeBed = new std::ifstream(opt::mappabilityFile.c_str());
    std::cerr << "Loading the accessible genome annotation:" << std::endl;
    AccessibleGenome* ag = new AccessibleGenome(accessibleGenomeBed);
    std::vector<bool> acc(refSeq1.length(),false);
    std::vector<std::vector<int>> thisChrMask = ag->BedFeatureMap.at(chrRef1);
    for (int i = 0; i < thisChrMask[0].size(); i++) {
        for (int j = thisChrMask[0][i]; j < thisChrMask[1][i]; j++) { acc[j] = true; }
    }
    std::cerr << "Done" << std::endl;
    
    
    std::cout << header1[0] << std::endl;
    std::cout << header1[1] << std::endl;
    std::cout << header1[2] << std::endl;
    std::cout << header1.back() << "\t"; print_vector(samples2, std::cout);
    int inMask = 0; int noAlignment = 0; int notVariable = 0; int becomesMultiallelic = 0;
    int vcf1Var = 0; int vcf2Var = 0; int sharedVar = 0; int refDifVar = 0;
    std::cerr << "Length of the chromosome/scaffold: " <<  refSeq1.length() << std::endl;
    
    for (int i = 0; i < refSeq1.length(); i++) {
        int pos = i+1;
       /* if (pos == 7801 || pos == 20205) {
            std::cerr << "VCF1.count("<< pos<<"): " <<  VCF1.count(pos) << "VCF2.count("<< pos<<"): " <<  VCF2.count(pos) << std::endl;
            std::cerr << "refSeq1[i] " <<  refSeq1[i] << "refSeq2[i] " << refSeq2[i] << std::endl;
        }*/
        // if (ag->findIfBPaccessible(chrRef1, i+1) == true) continue; // This assumes a mask file is given
        if (acc[i] == true) { inMask++; continue; }
        if (refSeq1[i] == 'N' || refSeq2[i] == 'N') {
            *extraMaskFile << chrRef1 << "\t" << i << "\t" << i+1 << std::endl;
            noAlignment++; continue;
        }
        if (refSeq1[i] == refSeq2[i]) {
            if (VCF1.count(pos) == 0 && VCF2.count(pos) == 0) { notVariable++; continue; }
            else if (VCF1.count(pos) == 1) {
                if (VCF2.count(pos) == 0) {
                    std::cout << VCF1[pos]; for (int j = 0; j < samples2.size(); j++) { std::cout << "\t" << refAllele; }
                    std::cout << std::endl; vcf1Var++;
                }
                if (VCF2.count(pos) == 1) {
                    fields = split(VCF1[pos], '\t'); char altAllele1 = fields[4][0];
                    fields = split(VCF2[pos], '\t'); char refAllele2 = fields[3][0]; char altAllele2 = fields[4][0];
                    if (refAllele2 != refSeq2[i] && complementIUPAC(refAllele2) == refSeq2[i]) { altAllele2 = complementIUPAC(altAllele2);}
                    if (altAllele1 == altAllele2) {
                        std::vector<string> genotypes(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
                        std::cout << VCF1[pos] << "\t"; print_vector(genotypes, std::cout); sharedVar++;
                    } else {
                        becomesMultiallelic++;
                    } // else this would be multiallelic
                }
            }
            else if (VCF2.count(pos) == 1) {
                fields = split(VCF2[pos], '\t');
                if (fields[3][0] != refSeq2[i] && complementIUPAC(fields[3][0]) == refSeq2[i]) { fields[3][0] = complementIUPAC(fields[3][0]);}
                std::vector<string> genotypes(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
                for (int j = 0; j < NUM_NON_GENOTYPE_COLUMNS; j++) { std::cout << fields[j] << "\t"; }
                for (int j = 0; j < samples1.size(); j++) { std::cout << refAllele << "\t"; }
                print_vector(genotypes,std::cout); vcf2Var++;
            }
        } else // refSeq1[i] != refSeq2[i]
        {
            if (VCF1.count(pos) == 0 && VCF2.count(pos) == 0) {
                std::cout << chrRef1 << "\t" << pos << "\t.\t" << refSeq1[i] << "\t" << refSeq2[i] << "\t1000\tPASS\tAC=" << samples2.size()*2 << "\tGT";
                for (int j = 0; j < samples1.size(); j++) { std::cout << "\t" << refAllele; }
                for (int j = 0; j < samples2.size(); j++) { std::cout << "\t" << altAllele; }
                std::cout << std::endl; refDifVar++;
            }
            else if (VCF1.count(pos) == 1) {
                fields = split(VCF1[pos], '\t'); char altAllele1 = fields[4][0];
                /*if (pos == 7801 || pos == 20205) {
                    std::cerr << "altAllele1 " <<  altAllele1 << "refSeq2[i] " << refSeq2[i] << std::endl;
                }*/
                if (altAllele1 != refSeq2[i]) { becomesMultiallelic++; continue; } // This would be multiallelic
                
                if (VCF2.count(pos) == 0) {
                    std::cout << VCF1[pos]; for (int j = 0; j < samples2.size(); j++) { std::cout << "\t" << refAllele; }
                    std::cout << std::endl; vcf1Var++;
                }
                if (VCF2.count(pos) == 1) {
                    fields = split(VCF2[pos], '\t'); char refAllele2 = fields[3][0]; char altAllele2 = fields[4][0];
                    if (refAllele2 != refSeq2[i] && complementIUPAC(refAllele2) == refSeq2[i]) { altAllele2 = complementIUPAC(altAllele2);}
                    /*if (pos == 7801 || pos == 20205) {
                        std::cerr << "altAllele2 " <<  altAllele1 << "refSeq1[i] " << refSeq2[i] << std::endl;
                    }*/
                    if (altAllele2  == refSeq1[i]) { // The alternative allele in the simDia called VCF needs to match the AstCal allele
                        std::vector<string> genotypes(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
                        std::cout << VCF1[pos] << "\t"; print_vector(genotypes, std::cout); sharedVar++;
                    } else {
                        becomesMultiallelic++;
                    } // else this would be multiallelic
                }
            }
            else if (VCF2.count(pos) == 1) {
                fields = split(VCF2[pos], '\t'); char refAllele2 = fields[3][0]; char altAllele2 = fields[4][0];
                if (refAllele2 != refSeq2[i] && complementIUPAC(refAllele2) == refSeq2[i]) { altAllele2 = complementIUPAC(altAllele2);}
                if (altAllele2  == refSeq1[i]) { // The alternative allele in the simDia called VCF needs to match the AstCal allele
                    std::vector<string> genotypes(fields.begin()+NUM_NON_GENOTYPE_COLUMNS,fields.end());
                    for (int j = 0; j < NUM_NON_GENOTYPE_COLUMNS; j++) { std::cout << fields[j] << "\t"; }
                    for (int j = 0; j < samples1.size(); j++) { std::cout << refAllele << "\t"; }
                    print_vector(genotypes,std::cout); vcf2Var++;
                } else {
                    becomesMultiallelic++;
                }
            }
        }
    }
    std::cerr << "Base categories not resulting in a variant:" << std::endl;
    std::cerr << "inMask\t" << inMask << std::endl;
    std::cerr << "noAlignment\t" << noAlignment << std::endl;
    std::cerr << "notVariable\t" << notVariable << std::endl;
    std::cerr << "becomesMultiallelic\t" << becomesMultiallelic << std::endl;
    std::cerr << "Total non-variant sites:\t" << inMask+noAlignment+notVariable+becomesMultiallelic << std::endl;
    std::cout << std::endl;
    std::cerr << "Base categories resulting in a variant:" << std::endl;
    std::cerr << "Difference between reference sequences:\t" << refDifVar << std::endl;
    std::cerr << "Variant in vcf1:\t" << vcf1Var << std::endl;
    std::cerr << "Variant in vcf2:\t" << vcf2Var << std::endl;
    std::cerr << "Shared vcf1 and vcf2 variant:\t" << sharedVar << std::endl;
    std::cerr << "Total variant sites:\t" << refDifVar+vcf1Var+vcf2Var+sharedVar << std::endl;
    std::cout << std::endl;
    std::cerr << "Total sites:\t" << inMask+noAlignment+notVariable+becomesMultiallelic+refDifVar+vcf1Var+vcf2Var+sharedVar << std::endl;
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x328, %rsp            # imm = 0x328
callq 0xb9913
leaq 0x1a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1f6c5(%rip), %rsi     # 0xd69d6
leaq 0x1f6c1(%rip), %rdx     # 0xd69d9
leaq 0x190(%rsp), %rdi
callq 0x28952
leaq 0x240(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1f6a2(%rip), %rsi     # 0xd69da
leaq 0x1f69e(%rip), %rdx     # 0xd69dd
leaq 0x230(%rsp), %rdi
callq 0x28952
leaq 0x180(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x55c2e(%rip), %rsi     # 0x10cf98
leaq 0x120(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x286de
leaq 0x120(%rsp), %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, %r14
leaq 0x130(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0xb73b5
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x55bfc(%rip), %rsi     # 0x10cfb8
leaq 0x120(%rsp), %rdi
leaq 0xb0(%rsp), %rdx
callq 0x286de
leaq 0x120(%rsp), %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0xb7403
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r12
movq 0x55bc1(%rip), %rsi     # 0x10cfd8
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r15
movq 0x55bc0(%rip), %rsi     # 0x10cff8
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x200(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x55be0(%rip), %rsi     # 0x10d038
movq 0x55be1(%rip), %rdx     # 0x10d040
addq %rsi, %rdx
leaq 0x1f0(%rsp), %rdi
callq 0x2e45c
leaq 0x30f7a(%rip), %rsi     # 0xe83f0
leaq 0x1f0(%rsp), %rdi
callq 0x88c0
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, %rbp
movq 0x1f0(%rsp), %rsi
movq %rax, %rdi
movl $0x10, %edx
callq 0x84c0
leaq 0x1c0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x110(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x1b0(%rsp), %rdi
movl $0x2faf080, %esi        # imm = 0x2FAF080
callq 0x86f0
leaq 0x100(%rsp), %rdi
movl $0x2faf080, %esi        # imm = 0x2FAF080
callq 0x86f0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
leaq 0x170(%rsp), %rsi
movq %r12, %rdi
callq 0x8870
leaq 0x1d0(%rsp), %rdi
leaq 0x170(%rsp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x84a0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
leaq 0x170(%rsp), %rsi
movq %r15, %rdi
callq 0x8870
leaq 0x278(%rsp), %rdi
leaq 0x170(%rsp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x84a0
movq 0x1d8(%rsp), %rdx
cmpq 0x280(%rsp), %rdx
jne 0xb954a
testq %rdx, %rdx
je 0xb75b8
movq 0x278(%rsp), %rsi
movq 0x1d0(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xb954a
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
leaq 0x170(%rsp), %rsi
movq %r12, %rdi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb760d
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
leaq 0x1b0(%rsp), %rdi
callq 0x8180
jmp 0xb75b8
leaq 0x170(%rsp), %r12
leaq 0x100(%rsp), %r13
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb7667
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x8180
jmp 0xb761d
movq 0x1d8(%rsp), %rax
cmpq 0x280(%rsp), %rax
jne 0xb9569
movq 0x1b8(%rsp), %r15
testq %r15, %r15
je 0xb76ab
movq 0x1b0(%rsp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %edi
callq 0x8880
movb %al, (%r12,%r13)
incq %r13
cmpq %r13, %r15
jne 0xb7695
movq %rbp, 0x268(%rsp)
movq 0x108(%rsp), %r15
testq %r15, %r15
je 0xb76e1
movq 0x100(%rsp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %edi
callq 0x8880
movb %al, (%r12,%r13)
incq %r13
cmpq %r13, %r15
jne 0xb76cb
leaq 0x128(%rsp), %rcx
xorl %eax, %eax
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0xb8(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x210(%rsp), %rcx
movq %rax, 0x10(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rcx)
movq %rax, 0x260(%rsp)
movaps %xmm0, 0x250(%rsp)
leaq 0x150(%rsp), %rcx
movq %rax, 0x10(%rcx)
movaps %xmm0, (%rcx)
movq %rax, 0xf0(%rsp)
movaps %xmm0, 0xe0(%rsp)
movq %rax, 0x10(%rsp)
movaps %xmm0, (%rsp)
leaq 0x170(%rsp), %r13
leaq 0x20(%rsp), %rbp
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r14, %rdi
movq %r13, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb7960
movq 0x170(%rsp), %rax
movb (%rax), %cl
cmpb $0x23, %cl
jne 0xb78b7
cmpb $0x23, 0x1(%rax)
jne 0xb77cd
leaq 0x210(%rsp), %rdi
movq %r13, %rsi
callq 0x33db0
jmp 0xb776e
cmpb $0x23, %cl
jne 0xb78b7
cmpb $0x43, 0x1(%rax)
jne 0xb78b7
leaq 0x210(%rsp), %rdi
movq %r13, %rsi
callq 0x33db0
movq %rbp, %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x20(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x30(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x80(%rsp), %xmm1
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x90(%rsp)
movups %xmm1, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
leaq 0x80(%rsp), %rdi
callq 0x3123c
movq %rbp, %rdi
callq 0x3123c
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
cmpq $0x120, %rax            # imm = 0x120
je 0xb776e
movl $0x9, %r12d
movl $0x120, %r15d           # imm = 0x120
addq %r15, %rsi
leaq 0x150(%rsp), %rdi
callq 0x33db0
incq %r12
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x20, %r15
cmpq %rax, %r12
jne 0xb7886
jmp 0xb776e
movq %rbp, %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x20(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x30(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x80(%rsp), %xmm1
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x90(%rsp)
movups %xmm1, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
leaq 0x80(%rsp), %r15
movq %r15, %rdi
callq 0x3123c
movq %rbp, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
movl %eax, 0x80(%rsp)
leaq 0x120(%rsp), %rdi
movq %r15, %rsi
callq 0x32364
movq %rax, %rdi
movq %r13, %rsi
callq 0x8270
jmp 0xb776e
leaq 0x170(%rsp), %r14
leaq 0x20(%rsp), %r12
leaq 0x80(%rsp), %r13
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb7b59
movq 0x170(%rsp), %rax
movb (%rax), %cl
cmpb $0x23, %cl
jne 0xb7ab8
cmpb $0x23, 0x1(%rax)
jne 0xb79d4
leaq 0x250(%rsp), %rdi
movq %r14, %rsi
callq 0x33db0
jmp 0xb7975
cmpb $0x23, %cl
jne 0xb7ab8
cmpb $0x43, 0x1(%rax)
jne 0xb7ab8
leaq 0x250(%rsp), %rdi
movq %r14, %rsi
callq 0x33db0
movq %r12, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x20(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x30(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x80(%rsp), %xmm1
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x90(%rsp)
movups %xmm1, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq %r13, %rdi
callq 0x3123c
movq %r12, %rdi
callq 0x3123c
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
cmpq $0x120, %rax            # imm = 0x120
je 0xb7975
movl $0x9, %r15d
movl $0x120, %ebp            # imm = 0x120
addq %rbp, %rsi
leaq 0xe0(%rsp), %rdi
callq 0x33db0
incq %r15
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x20, %rbp
cmpq %rax, %r15
jne 0xb7a87
jmp 0xb7975
movq %r12, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x80(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x20(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x30(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x80(%rsp), %xmm1
movaps %xmm0, 0x80(%rsp)
movq %rax, 0x90(%rsp)
movups %xmm1, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq %r13, %rdi
callq 0x3123c
movq %r12, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
movl %eax, 0x80(%rsp)
leaq 0xb0(%rsp), %rdi
movq %r13, %rsi
callq 0x32364
movq %rax, %rdi
movq %r14, %rsi
callq 0x8270
jmp 0xb7975
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0x554ab(%rip), %rsi     # 0x10d018
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
movq %r14, 0x270(%rsp)
movq 0x5345f(%rip), %rbx     # 0x10afe8
leaq 0x308d9(%rip), %rsi     # 0xe8469
movl $0x29, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x5342d(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x38, %edi
callq 0x8470
movq %rax, %r14
leaq 0x270(%rsp), %rsi
movq %rax, %rdi
callq 0x496da
movq 0x1b8(%rsp), %rsi
leaq 0x20(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x80(%rsp), %rdi
leaq 0x298(%rsp), %rcx
callq 0x54f98
addq $0x8, %r14
leaq 0x1d0(%rsp), %rsi
movq %r14, %rdi
callq 0x4ba38
leaq 0x298(%rsp), %rdi
movq %rax, %rsi
callq 0x4ba8c
movq 0x298(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
je 0xb7cb9
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
sarq $0x2, %rdx
movq 0x18(%rcx), %rdi
movq 0x80(%rsp), %r8
cmpq $0x1, %rdx
adcq $0x0, %rdx
xorl %r9d, %r9d
leaq 0x3f(%rsi), %r10
movslq (%rax,%r9,4), %rcx
movslq (%rdi,%r9,4), %r11
cmpl %r11d, %ecx
jge 0xb7cb1
leaq 0x3f(%rcx), %rbx
testq %rcx, %rcx
cmovnsq %rcx, %rbx
sarq $0x6, %rbx
movq %rcx, %r14
andq %r10, %r14
xorl %r15d, %r15d
cmpq %rsi, %r14
setbe %r15b
movl $0x1, %r14d
shlq %cl, %r14
leaq (%r8,%rbx,8), %rbx
orq %r14, -0x8(%rbx,%r15,8)
incq %rcx
cmpq %rcx, %r11
jne 0xb7c78
incq %r9
cmpq %rdx, %r9
jne 0xb7c6b
movq 0x53328(%rip), %rbx     # 0x10afe8
leaq 0x163b0(%rip), %rsi     # 0xce077
movl $0x4, %edx
movq %rbx, %rdi
callq 0x84e0
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x532f6(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x210(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x532a3(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x210(%rsp), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
movq 0x5325d(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x210(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
movq 0x53217(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x218(%rsp), %rax
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
movq 0x531d1(%rip), %rdi     # 0x10afb8
callq 0x84e0
leaq 0x19e8b(%rip), %rsi     # 0xd1c7e
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x2b0(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x3273a
movq 0x5319c(%rip), %rsi     # 0x10afb8
leaq 0x2b0(%rsp), %rdi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
leaq 0x128(%rsp), %r15
leaq 0x2b0(%rsp), %rdi
callq 0x3123c
movq 0x53199(%rip), %rdi     # 0x10afe8
leaq 0x3063d(%rip), %rsi     # 0xe8493
movl $0x23, %edx
callq 0x84e0
movq 0x1b8(%rsp), %rsi
movq 0x53179(%rip), %rdi     # 0x10afe8
callq 0x82f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
cmpq $0x0, 0x1b8(%rsp)
je 0xb8e9c
xorl %ebp, %ebp
leaq 0x19dc8(%rip), %r14     # 0xd1c7e
leaq 0x40(%rsp), %r12
movl $0x0, 0x7c(%rsp)
movl $0x0, 0x74(%rsp)
movl $0x0, 0x78(%rsp)
movl $0x0, 0x44(%rsp)
movl $0x0, 0x4c(%rsp)
movl $0x0, 0x6c(%rsp)
movl $0x0, 0x70(%rsp)
movl $0x0, 0x48(%rsp)
movq %rbp, %rbx
incq %rbp
movl %ebp, 0x40(%rsp)
movq 0x80(%rsp), %rax
movq %rbx, %rcx
shrq $0x6, %rcx
movq (%rax,%rcx,8), %rax
btq %rbx, %rax
jae 0xb7f27
incl 0x7c(%rsp)
jmp 0xb7fd8
movq 0x1b0(%rsp), %rax
movb (%rax,%rbx), %cl
cmpb $0x4e, %cl
je 0xb7f4b
movq 0x100(%rsp), %rax
movb (%rax,%rbx), %dl
cmpb $0x4e, %dl
jne 0xb7feb
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
movq 0x268(%rsp), %rdi
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r15, %rdi
movl %ebx, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x74(%rsp)
leaq 0x128(%rsp), %r15
cmpq %rbp, 0x1b8(%rsp)
ja 0xb7efb
jmp 0xb8edc
movq 0x130(%rsp), %rax
cmpb %dl, %cl
jne 0xb806c
movq %r15, %rcx
testq %rax, %rax
je 0xb8020
movq %rax, %rdx
movq %r15, %rcx
movslq 0x20(%rdx), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rdx, %rcx
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0xb8005
movq %r15, %rdx
cmpq %r15, %rcx
je 0xb8032
cmpl %ebp, 0x20(%rcx)
cmovgq %r15, %rcx
movq %rcx, %rdx
cmpq %r15, %rdx
jne 0xb8104
movq 0xc0(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
testq %rdx, %rdx
je 0xb80e1
movslq 0x20(%rdx), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rdx, %rcx
movq 0x10(%rdx,%rdi,8), %rdx
jmp 0xb804b
movq %r15, %rcx
testq %rax, %rax
je 0xb8095
movq %rax, %rdx
movq %r15, %rcx
movslq 0x20(%rdx), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rdx, %rcx
movq 0x10(%rdx,%rdi,8), %rdx
testq %rdx, %rdx
jne 0xb807a
movq %r15, %rdx
cmpq %r15, %rcx
je 0xb80a7
cmpl %ebp, 0x20(%rcx)
cmovgq %r15, %rcx
movq %rcx, %rdx
cmpq %r15, %rdx
jne 0xb86b0
movq 0xc0(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
testq %rdx, %rdx
je 0xb868d
movslq 0x20(%rdx), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rdx, %rcx
movq 0x10(%rdx,%rdi,8), %rdx
jmp 0xb80c0
leaq 0xb8(%rsp), %rsi
movq %rsi, %rdx
cmpq %rsi, %rcx
je 0xb80fb
cmpl %ebp, 0x20(%rcx)
cmovgq %rsi, %rcx
movq %rcx, %rdx
cmpq %rsi, %rdx
je 0xb8cba
movq %r15, %rcx
testq %rax, %rax
je 0xb812a
movq %r15, %rcx
movslq 0x20(%rax), %rdx
xorl %esi, %esi
cmpq %rdx, %rbx
setge %sil
cmovlq %rax, %rcx
movq 0x10(%rax,%rsi,8), %rax
testq %rax, %rax
jne 0xb810f
movq %r15, %rdx
cmpq %r15, %rcx
je 0xb813c
cmpl %ebp, 0x20(%rcx)
cmovgq %r15, %rcx
movq %rcx, %rdx
movq 0xc0(%rsp), %rax
leaq 0xb8(%rsp), %rcx
cmpq %r15, %rdx
je 0xb8188
testq %rax, %rax
je 0xb836e
movslq 0x20(%rax), %rdx
xorl %esi, %esi
cmpq %rdx, %rbx
setge %sil
cmovlq %rax, %rcx
movq 0x10(%rax,%rsi,8), %rax
jmp 0xb8151
movslq 0x20(%rax), %rdx
xorl %esi, %esi
cmpq %rdx, %rbx
setge %sil
cmovlq %rax, %rcx
movq 0x10(%rax,%rsi,8), %rax
testq %rax, %rax
jne 0xb8172
leaq 0xb8(%rsp), %rdx
movq %rdx, %rax
cmpq %rdx, %rcx
je 0xb81a7
cmpl %ebp, 0x20(%rcx)
cmovgq %rdx, %rcx
movq %rcx, %rax
cmpq %rdx, %rax
je 0xb7fd8
leaq 0xb0(%rsp), %rdi
movq %r12, %r13
movq %r12, %rsi
callq 0x313d4
leaq 0x50(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r12, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x60(%rax), %rax
movb (%rax), %al
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
movq %r13, %r12
je 0xb8284
movsbl %al, %edi
callq 0x578ab
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
leaq 0x128(%rsp), %r15
jne 0xb8284
movq (%rsp), %rax
movq 0x60(%rax), %rax
movsbl (%rax), %edi
callq 0x578ab
movq (%rsp), %rcx
movq 0x60(%rcx), %rcx
movb %al, (%rcx)
leaq 0x128(%rsp), %r15
movq (%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x8(%rsp), %rdx
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rcx
callq 0x7fa48
movl $0x8, %ebx
movq (%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq 0x52cfb(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
addq $0x20, %rbx
cmpq $0x128, %rbx            # imm = 0x128
jne 0xb82a9
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
je 0xb833b
xorl %ebx, %ebx
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq 0x52cae(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb82f3
leaq 0x310(%rsp), %rbx
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x3273a
movq %rbx, %rdi
movq 0x52c5e(%rip), %rsi     # 0x10afb8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
jmp 0xb8c72
leaq 0xb8(%rsp), %rdx
movq %rdx, %rax
cmpq %rdx, %rcx
je 0xb8388
cmpl %ebp, 0x20(%rcx)
cmovgq %rdx, %rcx
movq %rcx, %rax
cmpq %rdx, %rax
jne 0xb8458
leaq 0x120(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x52c09(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %r14, %r15
movq 0xe8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
je 0xb8417
xorl %r14d, %r14d
movl $0x1, %edx
movq 0x52be0(%rip), %r13     # 0x10afb8
movq %r13, %rdi
movq %r15, %rsi
callq 0x84e0
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %r14
movq 0xe8(%rsp), %rax
subq 0xe0(%rsp), %rax
sarq $0x5, %rax
cmpq %r14, %rax
ja 0xb83cc
movq 0x52b9a(%rip), %rcx     # 0x10afb8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movq %r15, %r14
movsbl %al, %esi
movq 0x52b79(%rip), %rdi     # 0x10afb8
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x4c(%rsp)
leaq 0x128(%rsp), %r15
movq 0xc0(%rsp), %rcx
leaq 0xb8(%rsp), %rax
testq %rcx, %rcx
je 0xb8488
movl 0x40(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0xb8471
leaq 0xb8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0xb84a6
movl 0x40(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0xb7fd8
movq %r12, %rsi
leaq 0x120(%rsp), %rdi
callq 0x313d4
leaq 0x50(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r15, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x80(%rax), %rax
movb (%rax), %r14b
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r15, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb85ea
movsbl %al, %edi
callq 0x578ab
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb85ea
movsbl %r15b, %edi
callq 0x578ab
movl %eax, %r15d
cmpb %r15b, %r14b
jne 0xb8ca2
movq (%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x8(%rsp), %rdx
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rcx
callq 0x7fa48
leaq 0x128(%rsp), %r15
leaq 0x1965c(%rip), %r14     # 0xd1c7e
leaq 0x120(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x52978(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
leaq 0x2e0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3273a
leaq 0x2e0(%rsp), %rbx
movq %rbx, %rdi
movq 0x5293f(%rip), %rsi     # 0x10afb8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
jmp 0xb8a58
leaq 0xb8(%rsp), %rsi
movq %rsi, %rdx
cmpq %rsi, %rcx
je 0xb86a7
cmpl %ebp, 0x20(%rcx)
cmovgq %rsi, %rcx
movq %rcx, %rdx
cmpq %rsi, %rdx
je 0xb8cc3
movq %r15, %rcx
testq %rax, %rax
je 0xb86d6
movq %r15, %rcx
movslq 0x20(%rax), %rdx
xorl %esi, %esi
cmpq %rdx, %rbx
setge %sil
cmovlq %rax, %rcx
movq 0x10(%rax,%rsi,8), %rax
testq %rax, %rax
jne 0xb86bb
movq %r15, %rax
cmpq %r15, %rcx
je 0xb86e8
cmpl %ebp, 0x20(%rcx)
cmovgq %r15, %rcx
movq %rcx, %rax
cmpq %r15, %rax
je 0xb8a69
leaq 0x120(%rsp), %rdi
movq %r12, %r13
movq %r12, %rsi
callq 0x313d4
leaq 0x50(%rsp), %r12
movq %r12, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r12, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x80(%rax), %rax
movb (%rax), %al
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb8c8d
movq 0xc0(%rsp), %rcx
leaq 0xb8(%rsp), %rax
testq %rcx, %rcx
je 0xb87ba
movl 0x40(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0xb87a3
leaq 0xb8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0xb87d8
movl 0x40(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
jne 0xb88a2
movq %r14, %r12
leaq 0x120(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x313d4
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x527b4(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq 0xe8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
je 0xb8869
xorl %r14d, %r14d
movl $0x1, %edx
movq 0x5278e(%rip), %r13     # 0x10afb8
movq %r13, %rdi
movq %r12, %rsi
callq 0x84e0
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %r14
movq 0xe8(%rsp), %rax
subq 0xe0(%rsp), %rax
sarq $0x5, %rax
cmpq %r14, %rax
ja 0xb881e
movq 0x52748(%rip), %rcx     # 0x10afb8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x5272a(%rip), %rdi     # 0x10afb8
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x4c(%rsp)
movq %r12, %r14
movq 0xc0(%rsp), %rcx
leaq 0xb8(%rsp), %rax
testq %rcx, %rcx
leaq 0x40(%rsp), %r12
je 0xb88d7
movl 0x40(%rsp), %edx
xorl %esi, %esi
cmpl %edx, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0xb88c0
leaq 0xb8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0xb88f5
movl 0x40(%rsp), %ecx
cmpl 0x20(%rax), %ecx
cmovlq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0xb7fd8
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
leaq 0x50(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r15, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb89b8
movsbl %al, %edi
callq 0x578ab
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb89b8
movsbl %r15b, %edi
callq 0x578ab
movl %eax, %r15d
movq 0x1b0(%rsp), %rax
cmpb (%rax,%rbx), %r15b
jne 0xb8c99
movq (%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x8(%rsp), %rdx
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rcx
callq 0x7fa48
leaq 0x128(%rsp), %r15
leaq 0x120(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x525a8(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
leaq 0x2c8(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x3273a
leaq 0x2c8(%rsp), %rbx
movq %rbx, %rdi
movq 0x5256f(%rip), %rsi     # 0x10afb8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
movq %rbx, %rdi
callq 0x3123c
incl 0x48(%rsp)
jmp 0xb8c7e
movq 0xc0(%rsp), %rcx
leaq 0xb8(%rsp), %rax
testq %rcx, %rcx
je 0xb8a96
movslq 0x20(%rcx), %rdx
xorl %esi, %esi
cmpq %rdx, %rbx
setge %sil
cmovlq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
jmp 0xb8a79
leaq 0xb8(%rsp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0xb8ab0
cmpl %ebp, 0x20(%rax)
cmovgq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0xb7fd8
leaq 0xb0(%rsp), %rdi
movq %r12, %rsi
callq 0x313d4
leaq 0x50(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x50624
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movaps (%rsp), %xmm0
movq 0x10(%rsp), %rax
movups 0x50(%rsp), %xmm1
movaps %xmm1, (%rsp)
movq 0x60(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movaps 0x20(%rsp), %xmm1
movaps %xmm0, 0x20(%rsp)
movq %rax, 0x30(%rsp)
movups %xmm1, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
movq %r15, %rdi
callq 0x3123c
movq (%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb8b73
movsbl %al, %edi
callq 0x578ab
movq 0x100(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb8b73
movsbl %r15b, %edi
callq 0x578ab
movl %eax, %r15d
movq 0x1b0(%rsp), %rax
cmpb (%rax,%rbx), %r15b
jne 0xb8c99
movq (%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x8(%rsp), %rdx
leaq 0x20(%rsp), %rdi
leaq 0x50(%rsp), %rcx
callq 0x7fa48
leaq 0x128(%rsp), %r15
movl $0x8, %ebx
movq (%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq 0x523f2(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
addq $0x20, %rbx
cmpq $0x128, %rbx            # imm = 0x128
jne 0xb8bb2
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
je 0xb8c44
xorl %ebx, %ebx
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq 0x523a5(%rip), %rdi     # 0x10afb8
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb8bfc
leaq 0x2f8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x3273a
movq %rbx, %rdi
movq 0x52355(%rip), %rsi     # 0x10afb8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
movq %rbx, %rdi
callq 0x3123c
incl 0x6c(%rsp)
leaq 0x20(%rsp), %rdi
callq 0x3123c
jmp 0xb7fd8
incl 0x44(%rsp)
movq %r13, %r12
jmp 0xb7fd8
incl 0x44(%rsp)
jmp 0xb7fd0
incl 0x44(%rsp)
leaq 0x128(%rsp), %r15
leaq 0x18fc9(%rip), %r14     # 0xd1c7e
jmp 0xb7fd8
incl 0x78(%rsp)
jmp 0xb7fd8
movq 0x1d0(%rsp), %rsi
movq 0x1d8(%rsp), %rdx
movq 0x522de(%rip), %rdi     # 0x10afb8
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movl 0x40(%rsp), %esi
movq %r15, %rdi
callq 0x8810
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
leaq 0x2f7a7(%rip), %rsi     # 0xe84b7
callq 0x84e0
movq 0x1b0(%rsp), %rax
movb (%rax,%rbx), %al
movb %al, 0x20(%rsp)
movl $0x1, %edx
movq %r15, %rdi
leaq 0x20(%rsp), %rsi
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x100(%rsp), %rax
movb (%rax,%rbx), %al
movb %al, 0x20(%rsp)
movl $0x1, %edx
movq %r15, %rdi
leaq 0x20(%rsp), %rsi
callq 0x84e0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x2f73f(%rip), %rsi     # 0xe84bb
callq 0x84e0
movq 0xe8(%rsp), %rsi
subq 0xe0(%rsp), %rsi
sarq $0x4, %rsi
movq %rbx, %rdi
callq 0x82f0
movl $0x3, %edx
movq %rax, %rdi
leaq 0x2951e(%rip), %rsi     # 0xe22ca
callq 0x84e0
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
movq 0x521f0(%rip), %r15     # 0x10afb8
je 0xb8e10
xorl %ebx, %ebx
movl $0x1, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x190(%rsp), %rsi
movq 0x198(%rsp), %rdx
movq %r15, %rdi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb8dcc
movq 0xe8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
je 0xb8e68
xorl %ebx, %ebx
movl $0x1, %edx
movq %r15, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x230(%rsp), %rsi
movq 0x238(%rsp), %rdx
movq %r15, %rdi
callq 0x84e0
incq %rbx
movq 0xe8(%rsp), %rax
subq 0xe0(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb8e24
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x52132(%rip), %rdi     # 0x10afb8
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x70(%rsp)
jmp 0xb7fd0
movl $0x0, 0x48(%rsp)
movl $0x0, 0x70(%rsp)
movl $0x0, 0x6c(%rsp)
movl $0x0, 0x4c(%rsp)
movl $0x0, 0x44(%rsp)
movl $0x0, 0x78(%rsp)
movl $0x0, 0x74(%rsp)
movl $0x0, 0x7c(%rsp)
movq 0x52105(%rip), %rbx     # 0x10afe8
leaq 0x2f5e0(%rip), %rsi     # 0xe84ca
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x84e0
movl 0x6c(%rsp), %ebp
movl 0x78(%rsp), %r15d
movl 0x7c(%rsp), %r14d
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x520c5(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x520b1(%rip), %rdi     # 0x10afe8
leaq 0x2f5b8(%rip), %rsi     # 0xe84f6
movl $0x7, %edx
callq 0x84e0
movq 0x52099(%rip), %rdi     # 0x10afe8
movl %r14d, %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x52060(%rip), %rdi     # 0x10afe8
leaq 0x2f56f(%rip), %rsi     # 0xe84fe
movl $0xc, %edx
callq 0x84e0
movq 0x52048(%rip), %rdi     # 0x10afe8
movl 0x74(%rsp), %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x5200e(%rip), %rdi     # 0x10afe8
leaq 0x2f52a(%rip), %rsi     # 0xe850b
movl $0xc, %edx
callq 0x84e0
movq 0x51ff6(%rip), %rdi     # 0x10afe8
movl %r15d, %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51fbd(%rip), %rdi     # 0x10afe8
leaq 0x2f4e6(%rip), %rsi     # 0xe8518
movl $0x14, %edx
callq 0x84e0
movq 0x51fa5(%rip), %rdi     # 0x10afe8
movl 0x44(%rsp), %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51f6b(%rip), %rdi     # 0x10afe8
leaq 0x2f4a9(%rip), %rsi     # 0xe852d
movl $0x19, %edx
callq 0x84e0
addl 0x44(%rsp), %r15d
addl 0x74(%rsp), %r15d
addl %r14d, %r15d
movq 0x51f46(%rip), %rdi     # 0x10afe8
movl %r15d, %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51edd(%rip), %rdi     # 0x10afb8
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x51ec2(%rip), %rbx     # 0x10afb8
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51edb(%rip), %r14     # 0x10afe8
leaq 0x2f433(%rip), %rsi     # 0xe8547
movl $0x27, %edx
movq %r14, %rdi
callq 0x84e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x51ea9(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51e95(%rip), %rdi     # 0x10afe8
leaq 0x2f415(%rip), %rsi     # 0xe856f
movl $0x28, %edx
callq 0x84e0
movq 0x51e7d(%rip), %rdi     # 0x10afe8
movl 0x70(%rsp), %esi
callq 0x8810
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51e43(%rip), %rdi     # 0x10afe8
leaq 0x2f3ec(%rip), %rsi     # 0xe8598
movl $0x11, %edx
callq 0x84e0
movq 0x51e2b(%rip), %rdi     # 0x10afe8
movl 0x4c(%rsp), %esi
callq 0x8810
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51df1(%rip), %rdi     # 0x10afe8
leaq 0x2f3ac(%rip), %rsi     # 0xe85aa
movl $0x11, %edx
callq 0x84e0
movq 0x51dd9(%rip), %rdi     # 0x10afe8
movl %ebp, %esi
callq 0x8810
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51da1(%rip), %rdi     # 0x10afe8
leaq 0x2f36e(%rip), %rsi     # 0xe85bc
movl $0x1e, %edx
callq 0x84e0
movq 0x51d89(%rip), %rdi     # 0x10afe8
movl 0x48(%rsp), %esi
callq 0x8810
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51d4f(%rip), %rdi     # 0x10afe8
leaq 0x2f33b(%rip), %rsi     # 0xe85db
movl $0x15, %edx
callq 0x84e0
movl 0x70(%rsp), %eax
addl 0x48(%rsp), %eax
addl 0x4c(%rsp), %ebp
addl %eax, %ebp
movq 0x51d29(%rip), %rdi     # 0x10afe8
movl %ebp, %esi
callq 0x8810
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r14, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x51caa(%rip), %rdi     # 0x10afb8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x51cc6(%rip), %rdi     # 0x10afe8
leaq 0x2f2c8(%rip), %rsi     # 0xe85f1
movl $0xd, %edx
callq 0x84e0
addl %r15d, %ebp
movq 0x51cab(%rip), %rdi     # 0x10afe8
movl %ebp, %esi
callq 0x8810
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x298(%rsp), %rdi
callq 0x4b0a4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0xb93c0
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
xorl %eax, %eax
movq %rax, 0x80(%rsp)
movl %eax, 0x88(%rsp)
movq %rax, 0x90(%rsp)
movl %eax, 0x98(%rsp)
movq %rax, 0xa0(%rsp)
movq %rsp, %rdi
callq 0x3123c
leaq 0xe0(%rsp), %rdi
callq 0x3123c
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x250(%rsp), %rdi
callq 0x3123c
leaq 0x210(%rsp), %rdi
callq 0x3123c
leaq 0xb0(%rsp), %rdi
callq 0x340dc
leaq 0x120(%rsp), %rdi
callq 0x340dc
leaq 0x288(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb9437
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb9458
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0xb947d
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0xb94a2
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0xb94c7
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xb94ec
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xb9511
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0xb9536
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x328, %rsp            # imm = 0x328
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2eeae(%rip), %rdi     # 0xe83ff
leaq 0x2eeba(%rip), %rsi     # 0xe8412
leaq 0x2eec7(%rip), %rcx     # 0xe8426
movl $0x3f, %edx
callq 0x82c0
leaq 0x2eed4(%rip), %rdi     # 0xe8444
leaq 0x2ee9b(%rip), %rsi     # 0xe8412
leaq 0x2eea8(%rip), %rcx     # 0xe8426
movl $0x43, %edx
callq 0x82c0
movq %rax, %rbx
leaq 0x2c8(%rsp), %rdi
jmp 0xb95d8
jmp 0xb9739
movq %rax, %rbx
leaq 0x2f8(%rsp), %rdi
jmp 0xb95d8
jmp 0xb9713
jmp 0xb9739
jmp 0xb9739
jmp 0xb9739
movq %rax, %rbx
leaq 0x2e0(%rsp), %rdi
jmp 0xb95d8
jmp 0xb9739
movq %rax, %rbx
leaq 0x310(%rsp), %rdi
callq 0x3123c
jmp 0xb9716
jmp 0xb9713
jmp 0xb9739
jmp 0xb9739
jmp 0xb9713
jmp 0xb9739
jmp 0xb9739
jmp 0xb9739
jmp 0xb9739
jmp 0xb9713
jmp 0xb9739
jmp 0xb9739
movq %rax, %rbx
leaq 0x2b0(%rsp), %rdi
jmp 0xb971b
jmp 0xb9734
movq %rax, %rbx
movl $0x38, %esi
jmp 0xb9645
jmp 0xb9734
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
callq 0x8480
jmp 0xb978e
jmp 0xb96f3
jmp 0xb96ff
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq %rbp, %rdi
jmp 0xb9872
jmp 0xb966e
movq %rax, %rbx
jmp 0xb9877
jmp 0xb96d8
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r15, %rdi
jmp 0xb9897
jmp 0xb96d8
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r12, %rdi
jmp 0xb9897
jmp 0xb96d8
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
jne 0xb96cb
jmp 0xb989c
jmp 0xb96d8
movq %rax, %rbx
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb989c
movq 0x130(%rsp), %rsi
jmp 0xb9894
movq %rax, %rbx
jmp 0xb989c
movq %rax, %rbx
jmp 0xb98e6
jmp 0xb9739
jmp 0xb9734
jmp 0xb9734
movq %rax, %rbx
jmp 0xb9749
movq %rax, %rbx
jmp 0xb980c
jmp 0xb9713
jmp 0xb9739
movq %rax, %rbx
jmp 0xb982d
jmp 0xb9734
jmp 0xb9739
jmp 0xb9739
jmp 0xb9713
jmp 0xb9713
jmp 0xb9739
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3123c
jmp 0xb973c
jmp 0xb9739
jmp 0xb9734
jmp 0xb9734
jmp 0xb9734
jmp 0xb9734
jmp 0xb9734
jmp 0xb9734
jmp 0xb9739
jmp 0xb9734
movq %rax, %rbx
jmp 0xb978e
movq %rax, %rbx
leaq 0x298(%rsp), %rdi
callq 0x4b0a4
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0xb978e
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
xorl %eax, %eax
movq %rax, 0x80(%rsp)
movl %eax, 0x88(%rsp)
movq %rax, 0x90(%rsp)
movl %eax, 0x98(%rsp)
movq %rax, 0xa0(%rsp)
movq %rsp, %rdi
callq 0x3123c
leaq 0xe0(%rsp), %rdi
callq 0x3123c
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x250(%rsp), %rdi
callq 0x3123c
leaq 0x210(%rsp), %rdi
callq 0x3123c
leaq 0xb0(%rsp), %rdi
callq 0x340dc
leaq 0x120(%rsp), %rdi
callq 0x340dc
jmp 0xb97eb
jmp 0xb97e8
movq %rax, %rbx
leaq 0x288(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb980c
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1e0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb982d
movq 0x1e0(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x110(%rsp), %rax
movq 0x100(%rsp), %rdi
cmpq %rax, %rdi
je 0xb9852
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1b0(%rsp), %rdi
leaq 0x1c0(%rsp), %rax
cmpq %rax, %rdi
je 0xb9877
movq 0x1c0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0xb989c
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xb98c1
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0xb98e6
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1a0(%rsp), %rax
movq 0x190(%rsp), %rdi
cmpq %rax, %rdi
je 0xb990b
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8840