// File: /workspace/github_cpp_makefile_star2_O3/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 $0x338, %rsp            # imm = 0x338
callq 0xb88a8
leaq 0x180(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x198ad(%rip), %rsi     # 0xcfc3e
leaq 0x198a9(%rip), %rdx     # 0xcfc41
leaq 0x170(%rsp), %rdi
callq 0x28a52
leaq 0x250(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1988a(%rip), %rsi     # 0xcfc42
leaq 0x19886(%rip), %rdx     # 0xcfc45
leaq 0x240(%rsp), %rdi
callq 0x28a52
leaq 0x110(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x4dbbe(%rip), %rsi     # 0x103fa8
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x287de
leaq 0x120(%rsp), %rdi
movl $0x8, %esi
callq 0x500af
movq %rax, %r14
leaq 0x130(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0xb6435
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x4db8c(%rip), %rsi     # 0x103fc8
leaq 0x120(%rsp), %rdi
leaq 0xd0(%rsp), %rdx
callq 0x287de
leaq 0x120(%rsp), %rdi
movl $0x8, %esi
callq 0x500af
movq %rax, 0x88(%rsp)
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
je 0xb6488
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r12
movq 0x4db4c(%rip), %rsi     # 0x103fe8
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r15
movq 0x4db4b(%rip), %rsi     # 0x104008
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
leaq 0x210(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x4db6b(%rip), %rsi     # 0x104048
movq 0x4db6c(%rip), %rdx     # 0x104050
addq %rsi, %rdx
leaq 0x200(%rsp), %rdi
callq 0x2ba06
leaq 0x28f6d(%rip), %rsi     # 0xdf468
leaq 0x200(%rsp), %rdi
callq 0x88c0
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, %rbp
movq 0x200(%rsp), %rsi
movq %rax, %rdi
movl $0x10, %edx
callq 0x84c0
leaq 0x1a0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0xc0(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x190(%rsp), %rdi
movl $0x2faf080, %esi        # imm = 0x2FAF080
callq 0x86f0
leaq 0xb0(%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 0x100(%rsp), %rsi
movq %r12, %rdi
callq 0x8870
leaq 0x1e0(%rsp), %rdi
leaq 0x100(%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 0x100(%rsp), %rsi
movq %r15, %rdi
callq 0x8870
leaq 0x288(%rsp), %rdi
leaq 0x100(%rsp), %rsi
movl $0x1, %edx
movq $-0x1, %rcx
callq 0x84a0
movq 0x1e8(%rsp), %rdx
cmpq 0x290(%rsp), %rdx
jne 0xb8507
testq %rdx, %rdx
je 0xb663d
movq 0x288(%rsp), %rsi
movq 0x1e0(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xb8507
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
leaq 0x100(%rsp), %rsi
movq %r12, %rdi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb6692
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
leaq 0x190(%rsp), %rdi
callq 0x8180
jmp 0xb663d
leaq 0x100(%rsp), %r12
leaq 0xb0(%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 0xb66ec
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rdx
movq %r13, %rdi
callq 0x8180
jmp 0xb66a2
movq 0x1e8(%rsp), %rax
cmpq 0x290(%rsp), %rax
jne 0xb8526
movq 0x198(%rsp), %rbx
testq %rbx, %rbx
je 0xb6730
movq 0x190(%rsp), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x8880
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %rbx
jne 0xb671a
movq %rbp, 0x278(%rsp)
movq 0xb8(%rsp), %rbx
testq %rbx, %rbx
je 0xb6766
movq 0xb0(%rsp), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x8880
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %rbx
jne 0xb6750
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 0xd8(%rsp), %rcx
movl %eax, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x220(%rsp), %rcx
movq %rax, 0x10(%rcx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rcx)
movq %rax, 0x270(%rsp)
movaps %xmm0, 0x260(%rsp)
leaq 0x150(%rsp), %r12
movq %rax, 0x10(%r12)
movaps %xmm0, (%r12)
movq %rax, 0xa0(%rsp)
movaps %xmm0, 0x90(%rsp)
movq %rax, 0x20(%rsp)
movaps %xmm0, 0x10(%rsp)
leaq 0x100(%rsp), %r13
leaq 0x30(%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 0xb69bd
movq 0x100(%rsp), %rax
cmpb $0x23, (%rax)
jne 0xb685c
movzbl 0x1(%rax), %eax
cmpl $0x43, %eax
je 0xb68f8
cmpl $0x23, %eax
jne 0xb685c
leaq 0x220(%rsp), %rdi
movq %r13, %rsi
callq 0x3133c
jmp 0xb67f7
movq %rbp, %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x30(%rsp), %xmm0
movq 0x40(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x1b0(%rsp)
movq %rax, 0x1c0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x1b0(%rsp), %rbx
movq %rbx, %rdi
callq 0x2e784
movq %rbp, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
movl %eax, 0x1b0(%rsp)
leaq 0x120(%rsp), %rdi
movq %rbx, %rsi
callq 0x2f8a2
movq %rax, %rdi
movq %r13, %rsi
callq 0x8270
jmp 0xb67f7
leaq 0x220(%rsp), %rdi
movq %r13, %rsi
callq 0x3133c
movq %rbp, %rdi
movq %r13, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x30(%rsp), %xmm0
movq 0x40(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x1b0(%rsp)
movq %rax, 0x1c0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
leaq 0x1b0(%rsp), %rdi
callq 0x2e784
movq %rbp, %rdi
callq 0x2e784
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
cmpq $0x120, %rax            # imm = 0x120
je 0xb67f7
movl $0x9, %r15d
movl $0x120, %ebx            # imm = 0x120
addq %rbx, %rsi
movq %r12, %rdi
callq 0x3133c
incq %r15
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %rax, %r15
jne 0xb6990
jmp 0xb67f7
leaq 0x100(%rsp), %r14
leaq 0x30(%rsp), %r12
leaq 0x1b0(%rsp), %r13
leaq 0x90(%rsp), %rbp
movq 0x88(%rsp), %rcx
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xb6ba0
movq 0x100(%rsp), %rax
cmpb $0x23, (%rax)
jne 0xb6a4c
movzbl 0x1(%rax), %eax
cmpl $0x43, %eax
je 0xb6ae0
cmpl $0x23, %eax
jne 0xb6a4c
leaq 0x260(%rsp), %rdi
movq %r14, %rsi
callq 0x3133c
jmp 0xb69da
movq %r12, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x30(%rsp), %xmm0
movq 0x40(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x1b0(%rsp)
movq %rax, 0x1c0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0x2e784
movq %r12, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
movl %eax, 0x1b0(%rsp)
leaq 0xd0(%rsp), %rdi
movq %r13, %rsi
callq 0x2f8a2
movq %rax, %rdi
movq %r14, %rsi
callq 0x8270
jmp 0xb69da
leaq 0x260(%rsp), %rdi
movq %r14, %rsi
callq 0x3133c
movq %r12, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x30(%rsp), %xmm0
movq 0x40(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x1b0(%rsp)
movq %rax, 0x1c0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq %r13, %rdi
callq 0x2e784
movq %r12, %rdi
callq 0x2e784
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
cmpq $0x120, %rax            # imm = 0x120
je 0xb69da
movl $0x9, %r15d
movl $0x120, %ebx            # imm = 0x120
addq %rbx, %rsi
movq %rbp, %rdi
callq 0x3133c
incq %r15
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rax
subq %rsi, %rax
sarq $0x5, %rax
addq $0x20, %rbx
cmpq %rax, %r15
jne 0xb6b73
jmp 0xb69da
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %r14
movq 0x4d474(%rip), %rsi     # 0x104028
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
movq %r14, 0x280(%rsp)
movq 0x4b418(%rip), %rbx     # 0x101fe8
leaq 0x2890a(%rip), %rsi     # 0xdf4e1
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 0x4b3e6(%rip), %rdi     # 0x101fe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0x38, %edi
callq 0x8470
movq %rax, %r14
leaq 0x280(%rsp), %rsi
movq %rax, %rdi
callq 0x4675a
movq 0x198(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movb $0x0, (%rdx)
leaq 0x1b0(%rsp), %rdi
leaq 0x2a8(%rsp), %rcx
callq 0x51f9e
addq $0x8, %r14
leaq 0x1e0(%rsp), %rsi
movq %r14, %rdi
callq 0x48a2c
leaq 0x2a8(%rsp), %rdi
movq %rax, %rsi
callq 0x48a80
movq 0x2a8(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
je 0xb6cff
movabsq $-0x8000000000000000, %rsi # imm = 0x8000000000000000
sarq $0x2, %rdx
movq 0x18(%rcx), %rdi
movq 0x1b0(%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 0xb6cf7
leal 0x3f(%rcx), %ebx
testl %ecx, %ecx
cmovnsl %ecx, %ebx
sarl $0x6, %ebx
movslq %ebx, %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 0xb6cbf
incq %r9
cmpq %rdx, %r9
jne 0xb6cb2
movq 0x4b2e2(%rip), %rbx     # 0x101fe8
leaq 0x1509a(%rip), %rsi     # 0xcbda7
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 0x4b2b0(%rip), %rdi     # 0x101fe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x220(%rsp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x4b25d(%rip), %rdi     # 0x101fb8
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 0x220(%rsp), %rax
movq 0x20(%rax), %rsi
movq 0x28(%rax), %rdx
movq 0x4b217(%rip), %rdi     # 0x101fb8
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 0x220(%rsp), %rax
movq 0x40(%rax), %rsi
movq 0x48(%rax), %rdx
movq 0x4b1d1(%rip), %rdi     # 0x101fb8
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 0x228(%rsp), %rax
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
movq 0x4b18b(%rip), %rdi     # 0x101fb8
callq 0x84e0
leaq 0x16b91(%rip), %rsi     # 0xcd9ca
movl $0x1, %edx
movq %rax, %rdi
callq 0x84e0
leaq 0x2c0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2fc8e
movq 0x4b156(%rip), %r13     # 0x101fb8
leaq 0x2c0(%rsp), %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
leaq 0x2c0(%rsp), %rdi
callq 0x2e784
movq 0x4b158(%rip), %rdi     # 0x101fe8
leaq 0x28674(%rip), %rsi     # 0xdf50b
movl $0x23, %edx
callq 0x84e0
movq 0x198(%rsp), %rsi
movq 0x4b138(%rip), %rdi     # 0x101fe8
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, 0x198(%rsp)
je 0xb7e73
xorl %r14d, %r14d
leaq 0x16ad2(%rip), %rbp     # 0xcd9ca
xorl %r12d, %r12d
movl $0x0, 0x88(%rsp)
movl $0x0, 0x84(%rsp)
movl $0x0, 0x50(%rsp)
movl $0x0, 0x5c(%rsp)
movl $0x0, 0x7c(%rsp)
movl $0x0, 0x80(%rsp)
movl $0x0, 0x58(%rsp)
movq %r14, %rbx
incq %r14
movl %r14d, 0xc(%rsp)
movq 0x1b0(%rsp), %rax
movl %ebx, %ecx
shrl $0x6, %ecx
movq (%rax,%rcx,8), %rax
btq %rbx, %rax
jae 0xb6f66
incl %r12d
jmp 0xb7013
movq 0x190(%rsp), %rax
movb (%rax,%rbx), %cl
cmpb $0x4e, %cl
je 0xb6f8a
movq 0xb0(%rsp), %rax
movb (%rax,%rbx), %dl
cmpb $0x4e, %dl
jne 0xb7026
movq 0x1e0(%rsp), %rsi
movq 0x1e8(%rsp), %rdx
movq 0x278(%rsp), %rdi
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
movq %r15, %rdi
movl %ebx, %esi
callq 0x8810
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
movq %rbx, %rdi
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
incl 0x88(%rsp)
cmpq %r14, 0x198(%rsp)
ja 0xb6f3c
jmp 0xb7eb7
movq 0x130(%rsp), %rax
cmpb %dl, %cl
jne 0xb70e7
testq %rax, %rax
je 0xb7086
movq %rax, %r8
leaq 0x128(%rsp), %rdi
movq %rdi, %rcx
movq %r8, %rdx
movslq 0x20(%r8), %rsi
xorl %r8d, %r8d
cmpq %rsi, %rbx
setge %r8b
cmovlq %rdx, %rdi
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0xb7046
leaq 0x128(%rsp), %r8
cmpq %r8, %rdi
je 0xb7086
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb735a
movq 0xe0(%rsp), %r8
testq %r8, %r8
je 0xb70db
leaq 0xd8(%rsp), %rdi
movq %rdi, %rcx
movq %r8, %rdx
movslq 0x20(%r8), %rsi
xorl %r8d, %r8d
cmpq %rsi, %rbx
setge %r8b
cmovlq %rdx, %rdi
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0xb709b
leaq 0xd8(%rsp), %r8
cmpq %r8, %rdi
je 0xb70db
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb735a
incl 0x84(%rsp)
jmp 0xb7013
testq %rax, %rax
je 0xb7137
movq %rax, %r8
leaq 0x128(%rsp), %rdi
movq %rdi, %rcx
movq %r8, %rdx
movslq 0x20(%r8), %rsi
xorl %r8d, %r8d
cmpq %rsi, %rbx
setge %r8b
cmovlq %rdx, %rdi
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0xb70f7
leaq 0x128(%rsp), %r8
cmpq %r8, %rdi
je 0xb7137
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb759b
movq 0xe0(%rsp), %r8
testq %r8, %r8
je 0xb718c
leaq 0xd8(%rsp), %rdi
movq %rdi, %rcx
movq %r8, %rdx
movslq 0x20(%r8), %rsi
xorl %r8d, %r8d
cmpq %rsi, %rbx
setge %r8b
cmovlq %rdx, %rdi
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0xb714c
leaq 0xd8(%rsp), %r8
cmpq %r8, %rdi
je 0xb718c
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb759b
movq 0x1e0(%rsp), %rsi
movq 0x1e8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
movl 0xc(%rsp), %esi
movq %r15, %rdi
callq 0x8810
movq %rax, %r15
movl $0x3, %edx
movq %rax, %rdi
leaq 0x2835a(%rip), %rsi     # 0xdf52f
callq 0x84e0
movq 0x190(%rsp), %rax
movb (%rax,%rbx), %al
movb %al, 0x30(%rsp)
movl $0x1, %edx
movq %r15, %rdi
leaq 0x30(%rsp), %rsi
callq 0x84e0
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
movq 0xb0(%rsp), %rax
movb (%rax,%rbx), %al
movb %al, 0x30(%rsp)
movl $0x1, %edx
movq %r15, %rdi
leaq 0x30(%rsp), %rsi
callq 0x84e0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x282f2(%rip), %rsi     # 0xdf533
callq 0x84e0
movq 0x98(%rsp), %rsi
subq 0x90(%rsp), %rsi
sarq $0x4, %rsi
movq %rbx, %rdi
callq 0x82f0
movl $0x3, %edx
movq %rax, %rdi
leaq 0x23639(%rip), %rsi     # 0xda8aa
callq 0x84e0
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
je 0xb72ce
xorl %ebx, %ebx
movl $0x1, %edx
movq %r13, %rdi
movq %rbp, %rsi
callq 0x84e0
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb728a
movq 0x98(%rsp), %rax
cmpq 0x90(%rsp), %rax
je 0xb7326
xorl %ebx, %ebx
movl $0x1, %edx
movq %r13, %rdi
movq %rbp, %rsi
callq 0x84e0
movq 0x240(%rsp), %rsi
movq 0x248(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %rbx
movq 0x98(%rsp), %rax
subq 0x90(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb72e2
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r13, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x80(%rsp)
jmp 0xb7013
testq %rax, %rax
je 0xb73a5
leaq 0x128(%rsp), %rdi
movq %rdi, %rcx
movq %rax, %rdx
movslq 0x20(%rax), %rsi
xorl %eax, %eax
cmpq %rsi, %rbx
setge %al
cmovlq %rdx, %rdi
movq 0x10(%rdx,%rax,8), %rax
testq %rax, %rax
jne 0xb7367
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0xb73a5
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb77ff
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xb7013
leaq 0xd8(%rsp), %rdx
movq %rdx, %rax
movq %rdi, %rcx
movslq 0x20(%rdi), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rcx, %rdx
movq 0x10(%rcx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0xb73be
leaq 0xd8(%rsp), %rdi
cmpq %rdi, %rdx
je 0xb7013
cmpq %rsi, %rbx
cmovlq %rcx, %rax
cmpl %r14d, 0x20(%rax)
jg 0xb7013
leaq 0xd0(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rsi
movq 0x60(%rsi), %rax
movb (%rax), %al
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb74c1
movsbl %al, %edi
callq 0x57a17
movq 0xb0(%rsp), %rcx
movq 0x10(%rsp), %rsi
cmpb (%rcx,%rbx), %al
jne 0xb74c1
movq 0x60(%rsi), %rax
movsbl (%rax), %edi
callq 0x57a17
movq 0x10(%rsp), %rcx
movq 0x60(%rcx), %rcx
movb %al, (%rcx)
movq 0x10(%rsp), %rsi
addq $0x120, %rsi            # imm = 0x120
movq 0x18(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rcx
callq 0x7f67a
movl $0x8, %ebx
movq 0x10(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
addq $0x20, %rbx
cmpq $0x128, %rbx            # imm = 0x128
jne 0xb74e1
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
je 0xb756c
xorl %ebx, %ebx
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb7528
leaq 0x320(%rsp), %rbx
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2fc8e
movq %rbx, %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
jmp 0xb77e4
testq %rax, %rax
je 0xb75e6
leaq 0x128(%rsp), %rdi
movq %rdi, %rcx
movq %rax, %rdx
movslq 0x20(%rax), %rsi
xorl %eax, %eax
cmpq %rsi, %rbx
setge %al
cmovlq %rdx, %rdi
movq 0x10(%rdx,%rax,8), %rax
testq %rax, %rax
jne 0xb75a8
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0xb75e6
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb7b20
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xb7013
leaq 0xd8(%rsp), %rdx
movq %rdx, %rax
movq %rdi, %rcx
movslq 0x20(%rdi), %rsi
xorl %edi, %edi
cmpq %rsi, %rbx
setge %dil
cmovlq %rcx, %rdx
movq 0x10(%rcx,%rdi,8), %rdi
testq %rdi, %rdi
jne 0xb75ff
leaq 0xd8(%rsp), %rdi
cmpq %rdi, %rdx
je 0xb7013
cmpq %rsi, %rbx
cmovlq %rcx, %rax
cmpl %r14d, 0x20(%rax)
jg 0xb7013
leaq 0xd0(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb76f7
movsbl %al, %edi
callq 0x57a17
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb76f7
movsbl %r15b, %edi
callq 0x57a17
movl %eax, %r15d
movq 0x190(%rsp), %rax
cmpb (%rax,%rbx), %r15b
jne 0xb7e6a
movq 0x10(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x18(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rcx
callq 0x7f67a
movl $0x8, %ebx
movq 0x10(%rsp), %rax
movq -0x8(%rax,%rbx), %rsi
movq (%rax,%rbx), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
addq $0x20, %rbx
cmpq $0x128, %rbx            # imm = 0x128
jne 0xb772f
movq 0x158(%rsp), %rax
cmpq 0x150(%rsp), %rax
je 0xb77ba
xorl %ebx, %ebx
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
incq %rbx
movq 0x158(%rsp), %rax
subq 0x150(%rsp), %rax
sarq $0x5, %rax
cmpq %rbx, %rax
ja 0xb7776
leaq 0x308(%rsp), %rbx
movq %rbx, %rdi
leaq 0x30(%rsp), %rsi
callq 0x2fc8e
movq %rbx, %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
movq %rbx, %rdi
callq 0x2e784
incl 0x7c(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
jmp 0xb7013
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0xb7857
movq %rax, %r8
leaq 0xd8(%rsp), %rdi
movq %rdi, %rcx
movq %r8, %rdx
movslq 0x20(%r8), %rsi
xorl %r8d, %r8d
cmpq %rsi, %rbx
setge %r8b
cmovlq %rdx, %rdi
movq 0x10(%rdx,%r8,8), %r8
testq %r8, %r8
jne 0xb7817
leaq 0xd8(%rsp), %r8
cmpq %r8, %rdi
je 0xb7857
cmpq %rsi, %rbx
cmovlq %rdx, %rcx
cmpl %r14d, 0x20(%rcx)
jle 0xb7905
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x84e0
movq 0x98(%rsp), %rax
cmpq 0x90(%rsp), %rax
je 0xb78d1
xorl %r15d, %r15d
movl $0x1, %edx
movq %r13, %rdi
movq %rbp, %rsi
callq 0x84e0
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %r15
movq 0x98(%rsp), %rax
subq 0x90(%rsp), %rax
sarq $0x5, %rax
cmpq %r15, %rax
ja 0xb788d
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r13, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x5c(%rsp)
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0xb7013
movl 0xc(%rsp), %ecx
leaq 0xd8(%rsp), %r8
movq %r8, %rdx
movq %rax, %rsi
movl 0x20(%rax), %edi
xorl %eax, %eax
cmpl %ecx, %edi
setl %al
movq %rsi, %r8
cmovlq %rdx, %r8
movq 0x10(%rsi,%rax,8), %rax
testq %rax, %rax
jne 0xb791a
leaq 0xd8(%rsp), %rax
cmpq %rax, %r8
je 0xb7013
cmpl %ecx, %edi
cmovlq %rdx, %rsi
cmpl 0x20(%rsi), %ecx
jl 0xb7013
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movb (%rax), %al
movb %al, 0x57(%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb7a8f
movsbl %al, %edi
callq 0x57a17
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb7a8f
movsbl %r15b, %edi
callq 0x57a17
movl %eax, %r15d
cmpb %r15b, 0x57(%rsp)
jne 0xb7e6a
movq 0x10(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x18(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rcx
callq 0x7f67a
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
leaq 0x2f0(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2fc8e
leaq 0x2f0(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
jmp 0xb7e59
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x80(%rax), %rax
movb (%rax), %al
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb7e6a
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0xb7c0d
movl 0xc(%rsp), %ecx
movq %rax, %r9
leaq 0xd8(%rsp), %r8
movq %r8, %rdx
movq %r9, %rsi
movl 0x20(%r9), %edi
xorl %r9d, %r9d
cmpl %ecx, %edi
setl %r9b
movq %rsi, %r8
cmovlq %rdx, %r8
movq 0x10(%rsi,%r9,8), %r9
testq %r9, %r9
jne 0xb7bcd
leaq 0xd8(%rsp), %r9
cmpq %r9, %r8
je 0xb7c0d
cmpl %ecx, %edi
cmovlq %rdx, %rsi
cmpl 0x20(%rsi), %ecx
jge 0xb7cbb
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x84e0
movq 0x98(%rsp), %rax
cmpq 0x90(%rsp), %rax
je 0xb7c87
xorl %r15d, %r15d
movl $0x1, %edx
movq %r13, %rdi
movq %rbp, %rsi
callq 0x84e0
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
incq %r15
movq 0x98(%rsp), %rax
subq 0x90(%rsp), %rax
sarq $0x5, %rax
cmpq %r15, %rax
ja 0xb7c43
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r13, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
incl 0x5c(%rsp)
movq 0xe0(%rsp), %rax
testq %rax, %rax
je 0xb7013
movl 0xc(%rsp), %ecx
leaq 0xd8(%rsp), %r8
movq %r8, %rdx
movq %rax, %rsi
movl 0x20(%rax), %edi
xorl %eax, %eax
cmpl %ecx, %edi
setl %al
movq %rsi, %r8
cmovlq %rdx, %r8
movq 0x10(%rsi,%rax,8), %rax
testq %rax, %rax
jne 0xb7cd0
leaq 0xd8(%rsp), %rax
cmpq %rax, %r8
je 0xb7013
cmpl %ecx, %edi
cmovlq %rdx, %rsi
cmpl 0x20(%rsi), %ecx
jl 0xb7013
leaq 0xd0(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
leaq 0x60(%rsp), %r15
movq %r15, %rdi
movq %rax, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x20(%rsp), %rax
movaps 0x60(%rsp), %xmm0
movq 0x70(%rsp), %rcx
movq %rcx, 0x20(%rsp)
movaps 0x10(%rsp), %xmm1
movaps %xmm0, 0x10(%rsp)
movaps %xmm1, 0x30(%rsp)
movq %rax, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x2e784
movq %r15, %rdi
callq 0x2e784
movq 0x10(%rsp), %rax
movq 0x60(%rax), %rcx
movq 0x80(%rax), %rdx
movb (%rcx), %al
movb (%rdx), %r15b
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
je 0xb7dc6
movsbl %al, %edi
callq 0x57a17
movq 0xb0(%rsp), %rcx
cmpb (%rcx,%rbx), %al
jne 0xb7dc6
movsbl %r15b, %edi
callq 0x57a17
movl %eax, %r15d
movq 0x190(%rsp), %rax
cmpb (%rax,%rbx), %r15b
jne 0xb7e6a
movq 0x10(%rsp), %rsi
movl $0x120, %eax            # imm = 0x120
addq %rax, %rsi
movq 0x18(%rsp), %rdx
leaq 0x30(%rsp), %rdi
leaq 0x60(%rsp), %rcx
callq 0x7f67a
leaq 0x120(%rsp), %rdi
leaq 0xc(%rsp), %rsi
callq 0x2e91e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x84e0
leaq 0x2d8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x2fc8e
leaq 0x2d8(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
movq %rbx, %rdi
callq 0x2e784
incl 0x58(%rsp)
jmp 0xb77f0
incl 0x50(%rsp)
jmp 0xb7013
movl $0x0, 0x58(%rsp)
movl $0x0, 0x80(%rsp)
movl $0x0, 0x7c(%rsp)
movl $0x0, 0x5c(%rsp)
movl $0x0, 0x50(%rsp)
movl $0x0, 0x84(%rsp)
movl $0x0, 0x88(%rsp)
xorl %r12d, %r12d
movq 0x4a12a(%rip), %rbx     # 0x101fe8
leaq 0x2767d(%rip), %rsi     # 0xdf542
movl $0x2b, %edx
movq %rbx, %rdi
callq 0x84e0
movl 0x7c(%rsp), %ebp
movl 0x88(%rsp), %r14d
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x4a0ec(%rip), %rdi     # 0x101fe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x4a0d8(%rip), %rdi     # 0x101fe8
leaq 0x27657(%rip), %rsi     # 0xdf56e
movl $0x7, %edx
callq 0x84e0
movq 0x4a0c0(%rip), %rdi     # 0x101fe8
movl %r12d, %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 0x4a087(%rip), %rdi     # 0x101fe8
leaq 0x2760e(%rip), %rsi     # 0xdf576
movl $0xc, %edx
callq 0x84e0
movq 0x4a06f(%rip), %rdi     # 0x101fe8
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 0x4a036(%rip), %rdi     # 0x101fe8
leaq 0x275ca(%rip), %rsi     # 0xdf583
movl $0xc, %edx
callq 0x84e0
movq 0x4a01e(%rip), %rdi     # 0x101fe8
movl 0x84(%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 0x49fe1(%rip), %rdi     # 0x101fe8
leaq 0x27582(%rip), %rsi     # 0xdf590
movl $0x14, %edx
callq 0x84e0
movq 0x49fc9(%rip), %rdi     # 0x101fe8
movl 0x50(%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 0x49f8f(%rip), %rdi     # 0x101fe8
leaq 0x27545(%rip), %rsi     # 0xdf5a5
movl $0x19, %edx
callq 0x84e0
movl 0x84(%rsp), %esi
addl 0x50(%rsp), %esi
addl %r14d, %esi
addl %r12d, %esi
movq 0x49f66(%rip), %rdi     # 0x101fe8
movl %esi, %r15d
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 (%r13), %rax
addq -0x18(%rax), %r13
movq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq 0x49ee5(%rip), %rbx     # 0x101fb8
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x49efe(%rip), %r14     # 0x101fe8
leaq 0x274ce(%rip), %rsi     # 0xdf5bf
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 0x49ecc(%rip), %rdi     # 0x101fe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x49eb8(%rip), %rdi     # 0x101fe8
leaq 0x274b0(%rip), %rsi     # 0xdf5e7
movl $0x28, %edx
callq 0x84e0
movq 0x49ea0(%rip), %rdi     # 0x101fe8
movl 0x80(%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 0x49e63(%rip), %rdi     # 0x101fe8
leaq 0x27484(%rip), %rsi     # 0xdf610
movl $0x11, %edx
callq 0x84e0
movq 0x49e4b(%rip), %rdi     # 0x101fe8
movl 0x5c(%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 0x49e11(%rip), %rdi     # 0x101fe8
leaq 0x27444(%rip), %rsi     # 0xdf622
movl $0x11, %edx
callq 0x84e0
movq 0x49df9(%rip), %rdi     # 0x101fe8
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 0x49dc1(%rip), %rdi     # 0x101fe8
leaq 0x27406(%rip), %rsi     # 0xdf634
movl $0x1e, %edx
callq 0x84e0
movq 0x49da9(%rip), %rdi     # 0x101fe8
movl 0x58(%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 0x49d6f(%rip), %rdi     # 0x101fe8
leaq 0x273d3(%rip), %rsi     # 0xdf653
movl $0x15, %edx
callq 0x84e0
movl 0x80(%rsp), %eax
addl 0x58(%rsp), %eax
addl 0x5c(%rsp), %ebp
addl %eax, %ebp
movq 0x49d46(%rip), %rdi     # 0x101fe8
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 0x49cc7(%rip), %rdi     # 0x101fb8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x49ce3(%rip), %rdi     # 0x101fe8
leaq 0x2735d(%rip), %rsi     # 0xdf669
movl $0xd, %edx
callq 0x84e0
addl %r15d, %ebp
movq 0x49cc8(%rip), %rdi     # 0x101fe8
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 0x2a8(%rsp), %rdi
callq 0x480b0
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0xb837b
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x10(%rsp), %rdi
callq 0x2e784
leaq 0x90(%rsp), %rdi
callq 0x2e784
leaq 0x150(%rsp), %rdi
callq 0x2e784
leaq 0x260(%rsp), %rdi
callq 0x2e784
leaq 0x220(%rsp), %rdi
callq 0x2e784
leaq 0xd0(%rsp), %rdi
callq 0x31630
leaq 0x120(%rsp), %rdi
callq 0x31630
leaq 0x298(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb83f4
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb8415
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
leaq 0xc0(%rsp), %rax
cmpq %rax, %rdi
je 0xb843a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0xb845f
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xb8484
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0xb84a9
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xb84ce
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0xb84f3
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x338, %rsp            # imm = 0x338
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x26f69(%rip), %rdi     # 0xdf477
leaq 0x26f75(%rip), %rsi     # 0xdf48a
leaq 0x26f82(%rip), %rcx     # 0xdf49e
movl $0x3f, %edx
callq 0x82c0
leaq 0x26f8f(%rip), %rdi     # 0xdf4bc
leaq 0x26f56(%rip), %rsi     # 0xdf48a
leaq 0x26f63(%rip), %rcx     # 0xdf49e
movl $0x43, %edx
callq 0x82c0
movq %rax, %rbx
leaq 0x2d8(%rsp), %rdi
jmp 0xb85b3
jmp 0xb86e9
jmp 0xb86e9
movq %rax, %rbx
leaq 0x2f0(%rsp), %rdi
jmp 0xb85b3
jmp 0xb86e9
jmp 0xb86e9
jmp 0xb86bc
jmp 0xb86e9
jmp 0xb86bc
jmp 0xb86e9
jmp 0xb86e9
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
jmp 0xb85b3
jmp 0xb86bc
jmp 0xb86e9
jmp 0xb86e9
movq %rax, %rbx
leaq 0x320(%rsp), %rdi
callq 0x2e784
jmp 0xb86bf
jmp 0xb86bc
jmp 0xb86e9
jmp 0xb86e9
jmp 0xb86e9
jmp 0xb86e9
jmp 0xb86e9
movq %rax, %rbx
leaq 0x2c0(%rsp), %rdi
jmp 0xb86c4
jmp 0xb871e
movq %rax, %rbx
movl $0x38, %esi
jmp 0xb8607
jmp 0xb871e
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r14, %rdi
jmp 0xb8711
jmp 0xb86b0
jmp 0xb86cb
movq %rax, %rbx
movl $0x200, %esi            # imm = 0x200
movq %rbp, %rdi
jmp 0xb8807
jmp 0xb862b
movq %rax, %rbx
jmp 0xb880c
jmp 0xb8695
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r15, %rdi
jmp 0xb882c
jmp 0xb8695
movq %rax, %rbx
movl $0x208, %esi            # imm = 0x208
movq %r12, %rdi
jmp 0xb882c
jmp 0xb8695
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r15, %rdi
jne 0xb8688
jmp 0xb8831
jmp 0xb8695
movq %rax, %rbx
leaq 0x130(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb8831
movq 0x130(%rsp), %rsi
jmp 0xb8829
movq %rax, %rbx
jmp 0xb8831
movq %rax, %rbx
jmp 0xb887b
jmp 0xb86bc
jmp 0xb86e9
jmp 0xb86bc
movq %rax, %rbx
jmp 0xb86f9
movq %rax, %rbx
jmp 0xb87a1
jmp 0xb86bc
jmp 0xb86e9
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x2e784
jmp 0xb86ec
movq %rax, %rbx
jmp 0xb87c2
jmp 0xb871e
jmp 0xb871e
jmp 0xb871e
jmp 0xb86e9
jmp 0xb871e
jmp 0xb871e
jmp 0xb86e9
jmp 0xb86e9
jmp 0xb871e
jmp 0xb871e
jmp 0xb86e9
movq %rax, %rbx
leaq 0x2a8(%rsp), %rdi
callq 0x480b0
movq 0x1b0(%rsp), %rdi
testq %rdi, %rdi
je 0xb8721
movq 0x1d0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
jmp 0xb8721
jmp 0xb871e
jmp 0xb871e
jmp 0xb871e
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x2e784
leaq 0x90(%rsp), %rdi
callq 0x2e784
leaq 0x150(%rsp), %rdi
callq 0x2e784
leaq 0x260(%rsp), %rdi
callq 0x2e784
leaq 0x220(%rsp), %rdi
callq 0x2e784
leaq 0xd0(%rsp), %rdi
callq 0x31630
leaq 0x120(%rsp), %rdi
callq 0x31630
jmp 0xb8780
jmp 0xb877d
movq %rax, %rbx
leaq 0x298(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb87a1
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x1f0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb87c2
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xc0(%rsp), %rax
movq 0xb0(%rsp), %rdi
cmpq %rax, %rdi
je 0xb87e7
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x190(%rsp), %rdi
leaq 0x1a0(%rsp), %rax
cmpq %rax, %rdi
je 0xb880c
movq 0x1a0(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xb8831
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0xb8856
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xb887b
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x180(%rsp), %rax
movq 0x170(%rsp), %rdi
cmpq %rax, %rdi
je 0xb88a0
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x8480
movq %rbx, %rdi
callq 0x8840