// File: readmapping[P]alfalfa/src/performanceUtils.cpp
// Function: checkOracle(samCheckOptions_t&)
void checkOracle(samCheckOptions_t & opt){
    //initialize fields and data for calculating edit distance
    string ref;
    vector<string> refdescr;
    vector<long> startpos;
    load_fasta(opt.refString, ref, refdescr, startpos);
    //fields: input
    samRecord_t oracleUp;
    samRecord_t oracleDown;
    vector<samRecord_t> mapped;
    ifstream oracleFile(opt.oracleSam.c_str());
    ifstream queryFile(opt.querySam.c_str());
    string oracleLine = "";
    string queryLine = "";
    streampos oraclePos = oracleFile.tellg();
    if(oracleFile.good())
        getlijn2(oracleFile, oracleLine);
    if(queryFile.good())
        getlijn2(queryFile,queryLine);
    //fields: output
    long readcnt = 0;
    size_t rangeCount = opt.correctRange.size();
    size_t qualValCount = opt.qualityValues.size();
    oracleLine_t ** results = new oracleLine_t * [rangeCount];
    for(size_t i = 0; i < rangeCount; i++){
        results[i] = new oracleLine_t[qualValCount+2];
    }
    
    //init results
    for(size_t i=0; i<rangeCount; i++)
        for(size_t j=0; j<qualValCount+2; j++)
            results[i][j].init();
    
    //iterate over both SORTED sam files simultaneously
    cerr << "summary: checking accuracy of SAM file, using oracle SAM file containing the original simulated positions" << endl;
    //print header of both files
    cerr << "header of oracle SAM file: " << endl;
    while(oracleFile.good() && !oracleLine.empty() && oracleLine[0]=='@'){
        cerr << oracleLine << endl;
        oraclePos = oracleFile.tellg();
        getlijn2(oracleFile,oracleLine);
    }
    cerr << "header of query SAM file: " << endl;
    while(queryFile.good() && !queryLine.empty() && queryLine[0]=='@'){
        cerr << queryLine << endl;
        getlijn2(queryFile,queryLine);
    }
    cerr << endl;
    cerr << "the ranges for which an alignment is considered valid are: " << printVector(opt.correctRange) << endl;
    cerr << "extra lines containing only alignments with minimal quality values of: " << printVector(opt.qualityValues) << endl;    
    cerr << "checking accuracy of alignments: ..." << endl;
    //if at least one record can be found
    bool paired = false;
    if(opt.print)
        cerr << "summary of reads: " << endl;
    if(!oracleLine.empty() && oracleLine[0]!='@' && !queryLine.empty() && queryLine[0]!='@'){
        //check if it are paired reads
        samRecord_t tempQuery;
        samRecord_t tempOracle;
        readRecord(oracleLine, tempOracle,opt.otag);
        readRecord(queryLine, tempQuery,opt.qtag);
        paired = tempOracle.flag.test(0);
        oracleFile.seekg(oraclePos);
        if(paired){
            while(oracleFile.good()){//next reads
                getlijn2(oracleFile, oracleLine);
                readRecord(oracleLine, tempOracle,opt.otag);
                if(!tempOracle.qname.empty()){
                    tempOracle.flag.test(6) ? oracleUp = tempOracle : oracleDown = tempOracle;
                    getlijn2(oracleFile, oracleLine);
                    readRecord(oracleLine, tempOracle,opt.otag);
                    tempOracle.flag.test(6) ? oracleUp = tempOracle : oracleDown = tempOracle;
                    mapped.clear();
                    //iterate over the SAM file. To work query should always be more advanced than oracle
                    while(queryFile.good() && !queryLine.empty() && tempQuery.qname.compare(oracleUp.qname)==0){
                        //fill mappedUp
                        if(tempQuery.edit<0 && tempQuery.rname.compare("*")!=0){
                            tempQuery.edit = calculatedDPScore(ref, refdescr, startpos, queryLine);
                        }
                        mapped.push_back(tempQuery);
                        getlijn2(queryFile, queryLine);
                        readRecord(queryLine, tempQuery, opt.qtag); 
                    }
                    if(!queryLine.empty() && tempQuery.qname.compare(oracleUp.qname)==0){//add last query of file
                        if(tempQuery.edit<0 && tempQuery.rname.compare("*")!=0){
                            tempQuery.edit = calculatedDPScore(ref, refdescr, startpos, queryLine);
                        }
                        mapped.push_back(tempQuery);
                    }
                    //process this read's alignments (paired and unpaired)
                    for(size_t i=0; i < mapped.size(); i++){
                        samRecord_t& query = mapped[i];
                        if(!query.flag.test(2)){
                            for(size_t j=0; j < rangeCount; j++){
                                int match = pairedCompareSam(query, query.flag.test(6) ? oracleUp : oracleDown, opt.correctRange[j]);
                                //all
                                results[j][0].addAlignment(match);
                                //unique
                                if(mapped.size()==2) results[j][1].addAlignment(match);
                                //quality values
                                for(size_t k=0; k < qualValCount; k++)
                                    if(query.mapq >= opt.qualityValues[k])
                                        results[j][2+k].addAlignment(match);
                            }
                        }
                    }
                    //sumarize for read
                    for(size_t j=0; j < rangeCount; j++){
                        if(opt.print)
                            cerr << oracleUp.qname << "\t" << (results[j][0].tempReadResult==0 ? 0 : 1) << endl;
                        results[j][0].finishRead();
                        results[j][1].finishRead();
                        for(size_t k=0; k < qualValCount; k++)
                            results[j][2+k].finishRead();
                    }
                    readcnt++;//update readcnt
                }
            }
        }
        else{
            while(oracleFile.good()){//next reads
                getlijn2(oracleFile, oracleLine);
                readRecord(oracleLine, oracleUp,opt.otag);
                if(!oracleUp.qname.empty()){
                    mapped.clear();
                    //iterate over the SAM file. To work query should always be more advanced than oracle
                    while(queryFile.good() && !queryLine.empty() && tempQuery.qname.compare(oracleUp.qname)==0){
                        //fill mappedUp
                        if(tempQuery.edit<0 && tempQuery.rname.compare("*")!=0){
                            tempQuery.edit = calculatedDPScore(ref, refdescr, startpos, queryLine);
                        }
                        mapped.push_back(tempQuery);
                        getlijn2(queryFile, queryLine);
                        readRecord(queryLine, tempQuery, opt.qtag); 
                    }
                    if(!queryLine.empty() && tempQuery.qname.compare(oracleUp.qname)==0){//add last query of file
                        if(tempQuery.edit<0 && tempQuery.rname.compare("*")!=0){
                            tempQuery.edit = calculatedDPScore(ref, refdescr, startpos, queryLine);
                        }
                        mapped.push_back(tempQuery);
                    }
                    //process this read's alignments
                    for(size_t i=0; i < mapped.size(); i++){
                        if(!mapped[i].flag.test(2)){
                            for(size_t j=0; j < rangeCount; j++){
                                int match = unpairedCompareSam(mapped[i], oracleUp, opt.correctRange[j]);
                                //all
                                results[j][0].addAlignment(match);
                                //unique
                                if(mapped.size()==1) results[j][1].addAlignment(match);
                                //quality values
                                for(size_t k=0; k < qualValCount; k++)
                                    if(mapped[i].mapq >= opt.qualityValues[k])
                                        results[j][2+k].addAlignment(match);
                            }
                        }
                    }
                    //sumarize for read
                    for(size_t j=0; j < rangeCount; j++){
                        if(opt.print)
                            cerr << oracleUp.qname << "\t" << (results[j][0].tempReadResult==0 ? 0 : 1) << endl;
                        results[j][0].finishRead();
                        results[j][1].finishRead();
                        for(size_t k=0; k < qualValCount; k++)
                            results[j][2+k].finishRead();
                    }
                    readcnt++;//update readcnt
                }
            }
        }
    }
    cerr << "checking accuracy of alignments: done" << endl;
    queryFile.close();
    oracleFile.close();
    cerr << endl;
    cerr << "printing results" << endl;
    cerr << "Warning, these results only make sense if both the oracle and query file are sorted according to \
    query name and if the edit distance field is filled correctly." << endl;
    if(!opt.outputFile.empty()){
        ofstream outfile ( opt.outputFile.c_str() );
        outfile << "##ALFALFA check alignment accuracy using an oracle file for simulated reads" << endl;
        outfile << "##" << endl;
        outfile << "##Warning: these results only make sense if both the oracle and query file are sorted according to \
        query name and if the edit distance field is filled correctly." << endl;
        outfile << "##" << endl;
        outfile << "##SAM file containing alignments: " << opt.querySam << endl;
        outfile << "##SAM file containing simulated origins: " << opt.oracleSam << endl;
        outfile << "##" << endl;
        outfile << "##An alignment is considered correct if it falls within a certain range from the simulated origin" << endl;
        outfile << "##The ranges that are considered are: " << printVector(opt.correctRange) << endl;
        outfile << "##" << endl;
        outfile << "##Results will be presented for all alignments in the file, unique alignments and for the \
        fraction of reads for which the mapping quality is at least: " << printVector(opt.qualityValues)  << endl;
        outfile << "##" << endl;
        outfile << "##The first 6 columns represent number and percentage of alignments that are correct, ok \
        (not close to origin/not paired correctly, but with a smaller or equal edit distance) and incorrect alignments." << endl;
        outfile << "##The second 6 columns represent these numbers and percentages for the reads. A read is considered correctly mapped\
        if at least one correct alignment has been found (and likewise for ok reads)." << endl;
        outfile << "##" << endl;
        outfile << "##" << endl;
        outfile << "##Results" << endl;
        outfile << "##" << endl;
        outfile << "##Number of reads: " << readcnt << endl;
        outfile << "##Reads are paired?: " << paired << endl;
        outfile << "##" << endl;
        for(size_t i=0; i < rangeCount; i++){
            outfile << "##Results for allowed range of " << opt.correctRange[i] << endl;
            outfile << "#\t\t\t alignments\t\t\t\t\t\t reads" << endl;
            outfile << "#resultType\t num_correct\t percent_correct\t num_ok\t percent_ok\t /"
                    "num_incorrect\t percent_incorrect\t num_correct\t percent_correct\t /"
                    "num_ok\t percent_ok\t num_incorrect\t percent_incorrect" << endl;
            outfile << "all\t " << results[i][0].printLine(readcnt);
            outfile << "unique aligned\t " << results[i][1].printLine(readcnt);
            for(size_t j=0; j< qualValCount; j++){
                outfile << "min mapq of " << opt.qualityValues[j] << "\t " << results[i][2+j].printLine(readcnt);
            }
            outfile << "##" << endl;
            outfile << "##" << endl;
        }
        outfile.close();
    }
    else{
        cout << "##ALFALFA check alignment accuracy using an oracle file for simulated reads" << endl;
        cout << "##" << endl;
        cout << "##Warning: these results only make sense if both the oracle and query file are sorted according to \
        query name and if the edit distance field is filled correctly." << endl;
        cout << "##" << endl;
        cout << "##SAM file containing alignments: " << opt.querySam << endl;
        cout << "##SAM file containing simulated origins: " << opt.oracleSam << endl;
        cout << "##" << endl;
        cout << "##An alignment is considered correct if it falls within a certain range from the simulated origin" << endl;
        cout << "##The ranges that are considered are: " << printVector(opt.correctRange) << endl;
        cout << "##" << endl;
        cout << "##Results will be presented for all alignments in the file, unique alignments and for the \
        fraction of reads for which the mapping quality is at least: " << printVector(opt.qualityValues)  << endl;
        cout << "##" << endl;
        cout << "##The first 6 columns represent number and percentage of alignments that are correct, ok \
        (not close to origin/not paired correctly, but with a smaller or equal edit distance) and incorrect alignments." << endl;
        cout << "##The second 6 columns represent these numbers and percentages for the reads. A read is considered correctly mapped\
        if at least one correct alignment has been found (and likewise for ok reads)." << endl;
        cout << "##" << endl;
        cout << "##" << endl;
        cout << "##Results" << endl;
        cout << "##" << endl;
        cout << "##Number of reads: " << readcnt << endl;
        cout << "##Reads are paired?: " << paired << endl;
        cout << "##" << endl;
        for(size_t i=0; i < rangeCount; i++){
            cout << "##Results for allowed range of " << opt.correctRange[i] << endl;
            cout << "#\t\t\t alignments\t\t\t\t\t\t reads" << endl;
            cout << "#resultType\t num_correct\t percent_correct\t num_ok\t percent_ok\t /"
                    "num_incorrect\t percent_incorrect\t num_correct\t percent_correct\t /"
                    "num_ok\t percent_ok\t num_incorrect\t percent_incorrect" << endl;
            cout << "all\t " << results[i][0].printLine(readcnt);
            cout << "unique aligned\t " << results[i][1].printLine(readcnt);
            for(size_t j=0; j< qualValCount; j++){
                cout << "min mapq of " << opt.qualityValues[j] << "\t " << results[i][2+j].printLine(readcnt);
            }
            cout << "##" << endl;
            cout << "##" << endl;
        }        
    }
    for(size_t i = 0; i < rangeCount; i++)
        delete[] results[ i ];
    delete[] results;
}

// Assembly:
subq $0x1158, %rsp           # imm = 0x1158
movq %rdi, 0x1150(%rsp)
leaq 0x1130(%rsp), %rdi
callq 0x8590
leaq 0x1118(%rsp), %rdi
callq 0xe750
leaq 0x1100(%rsp), %rdi
callq 0xecb0
movq 0x1150(%rsp), %rsi
addq $0x48, %rsi
leaq 0x10e0(%rsp), %rdi
callq 0x8180
jmp 0x68311
leaq 0x10e0(%rsp), %rdi
leaq 0x1130(%rsp), %rsi
leaq 0x1118(%rsp), %rdx
leaq 0x1100(%rsp), %rcx
callq 0x2fd20
jmp 0x68338
leaq 0x10e0(%rsp), %rdi
callq 0x8858
leaq 0x1048(%rsp), %rdi
callq 0x70a00
jmp 0x68354
leaq 0xfc0(%rsp), %rdi
callq 0x70a00
jmp 0x68363
leaq 0xfa8(%rsp), %rdi
callq 0x70b70
movq 0x1150(%rsp), %rdi
addq $0x28, %rdi
callq 0x8170
movq %rax, %rsi
leaq 0xda0(%rsp), %rdi
movl $0x8, %edx
callq 0x87a0
jmp 0x68398
movq 0x1150(%rsp), %rdi
addq $0x70, %rdi
callq 0x8170
movq %rax, %rsi
leaq 0xb98(%rsp), %rdi
movl $0x8, %edx
callq 0x87a0
jmp 0x683c0
leaq 0xb77(%rsp), %rdi
movq %rdi, 0x438(%rsp)
callq 0x8750
movq 0x438(%rsp), %rdx
leaq 0x1167a(%rip), %rsi     # 0x79a5e
leaq 0xb78(%rsp), %rdi
callq 0xb8b0
jmp 0x683f3
leaq 0xb77(%rsp), %rdi
callq 0x83e0
leaq 0xb4f(%rsp), %rdi
movq %rdi, 0x430(%rsp)
callq 0x8750
movq 0x430(%rsp), %rdx
leaq 0x1163a(%rip), %rsi     # 0x79a5e
leaq 0xb50(%rsp), %rdi
callq 0xb8b0
jmp 0x68433
leaq 0xb4f(%rsp), %rdi
callq 0x83e0
leaq 0xda0(%rsp), %rdi
callq 0x8720
movq %rdx, 0x420(%rsp)
movq %rax, 0x428(%rsp)
jmp 0x6845f
movq 0x420(%rsp), %rax
movq 0x428(%rsp), %rcx
movq %rcx, 0xb30(%rsp)
movq %rax, 0xb38(%rsp)
movq 0xda0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xda0(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x41f(%rsp)
jmp 0x684a1
movb 0x41f(%rsp), %al
testb $0x1, %al
jne 0x684b1
jmp 0x685bc
leaq 0xda0(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
callq 0x66fa0
jmp 0x684c8
jmp 0x685bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b61d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x10e0(%rsp), %rdi
callq 0x8858
jmp 0x6b61d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b610
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b5f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b5e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0xb77(%rsp), %rdi
callq 0x83e0
jmp 0x6b5dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0xb4f(%rsp), %rdi
callq 0x83e0
jmp 0x6b5cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b5c2
movq 0xb98(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xb98(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x41e(%rsp)
jmp 0x685de
movb 0x41e(%rsp), %al
testb $0x1, %al
jne 0x685eb
jmp 0x68604
leaq 0xb98(%rsp), %rdi
leaq 0xb50(%rsp), %rsi
callq 0x66fa0
jmp 0x68602
jmp 0x68604
movq $0x0, 0xb28(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xc0, %rdi
callq 0x1f530
movq %rax, 0xb20(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xa8, %rdi
callq 0x1f530
movq %rax, 0xb18(%rsp)
movq 0xb20(%rsp), %rax
movl $0x8, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
callq 0x8030
movq %rax, 0x410(%rsp)
jmp 0x68675
movq 0x410(%rsp), %rax
movq %rax, 0xb10(%rsp)
movq $0x0, 0xb08(%rsp)
movq 0xb08(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x687bb
movq 0xb18(%rsp), %rax
addq $0x2, %rax
movq %rax, 0x3f8(%rsp)
movl $0x40, %ecx
mulq %rcx
movq %rax, %rdi
movq $-0x1, %rax
cmovoq %rax, %rdi
movq %rdi, 0x400(%rsp)
callq 0x8030
movq %rax, 0x408(%rsp)
jmp 0x686e8
movq 0x3f8(%rsp), %rax
cmpq $0x0, %rax
je 0x68758
movq 0x408(%rsp), %rax
movq 0x3f8(%rsp), %rdx
shlq $0x6, %rdx
movq %rax, %rcx
addq %rdx, %rcx
movq %rcx, 0x3e8(%rsp)
movq %rax, 0x3f0(%rsp)
movq 0x3f0(%rsp), %rdi
movq %rdi, 0x3e0(%rsp)
callq 0x70b80
jmp 0x68737
movq 0x3e8(%rsp), %rcx
movq 0x3e0(%rsp), %rax
addq $0x40, %rax
cmpq %rcx, %rax
movq %rax, 0x3f0(%rsp)
jne 0x68720
movq 0x408(%rsp), %rdx
movq 0xb10(%rsp), %rax
movq 0xb08(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0xb08(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb08(%rsp)
jmp 0x68691
movq 0x400(%rsp), %rsi
movq 0x408(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
callq 0x8800
jmp 0x6b5c2
movq $0x0, 0xb00(%rsp)
movq 0xb00(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x6885f
movq $0x0, 0xaf8(%rsp)
movq 0xaf8(%rsp), %rax
movq 0xb18(%rsp), %rcx
addq $0x2, %rcx
cmpq %rcx, %rax
jae 0x68844
movq 0xb10(%rsp), %rax
movq 0xb00(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0xaf8(%rsp), %rax
shlq $0x6, %rax
addq %rax, %rdi
callq 0x70bd0
jmp 0x6882c
jmp 0x6882e
movq 0xaf8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xaf8(%rsp)
jmp 0x687e9
jmp 0x68846
movq 0xb00(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb00(%rsp)
jmp 0x687c7
movq 0x2e78a(%rip), %rdi     # 0x96ff0
leaq 0x16429(%rip), %rsi     # 0x7ec96
callq 0x8360
movq %rax, 0x3d8(%rsp)
jmp 0x6887c
movq 0x3d8(%rsp), %rdi
movq 0x2e725(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68892
movq 0x2e757(%rip), %rdi     # 0x96ff0
leaq 0x16460(%rip), %rsi     # 0x7ed00
callq 0x8360
movq %rax, 0x3d0(%rsp)
jmp 0x688af
movq 0x3d0(%rsp), %rdi
movq 0x2e6f2(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x688c5
jmp 0x688c7
movq 0xda0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xda0(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x3cf(%rsp)
jmp 0x688e9
movb 0x3cf(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x3ce(%rsp)
jne 0x68900
jmp 0x68950
leaq 0xb78(%rsp), %rdi
callq 0x86e0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x3ce(%rsp)
jne 0x68950
xorl %eax, %eax
movl %eax, %esi
leaq 0xb78(%rsp), %rdi
callq 0x8830
movq %rax, 0x3c0(%rsp)
jmp 0x68938
movq 0x3c0(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x40, %eax
sete %al
movb %al, 0x3ce(%rsp)
movb 0x3ce(%rsp), %al
testb $0x1, %al
jne 0x68960
jmp 0x689ff
movq 0x2e689(%rip), %rdi     # 0x96ff0
leaq 0xb78(%rsp), %rsi
callq 0x8330
movq %rax, 0x3b8(%rsp)
jmp 0x6897e
movq 0x3b8(%rsp), %rdi
movq 0x2e623(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68994
leaq 0xda0(%rsp), %rdi
callq 0x8720
movq %rdx, 0x3a8(%rsp)
movq %rax, 0x3b0(%rsp)
jmp 0x689b3
movq 0x3a8(%rsp), %rax
movq 0x3b0(%rsp), %rcx
movq %rcx, 0xae8(%rsp)
movq %rax, 0xaf0(%rsp)
movups 0xae8(%rsp), %xmm0
movaps %xmm0, 0xb30(%rsp)
leaq 0xda0(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
callq 0x66fa0
jmp 0x689fa
jmp 0x688c7
movq 0x2e5ea(%rip), %rdi     # 0x96ff0
leaq 0x1630f(%rip), %rsi     # 0x7ed1c
callq 0x8360
movq %rax, 0x3a0(%rsp)
jmp 0x68a1c
movq 0x3a0(%rsp), %rdi
movq 0x2e585(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68a32
jmp 0x68a34
movq 0xb98(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xb98(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x39f(%rsp)
jmp 0x68a56
movb 0x39f(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x39e(%rsp)
jne 0x68a6d
jmp 0x68abd
leaq 0xb50(%rsp), %rdi
callq 0x86e0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x39e(%rsp)
jne 0x68abd
xorl %eax, %eax
movl %eax, %esi
leaq 0xb50(%rsp), %rdi
callq 0x8830
movq %rax, 0x390(%rsp)
jmp 0x68aa5
movq 0x390(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x40, %eax
sete %al
movb %al, 0x39e(%rsp)
movb 0x39e(%rsp), %al
testb $0x1, %al
jne 0x68aca
jmp 0x68b1a
movq 0x2e51f(%rip), %rdi     # 0x96ff0
leaq 0xb50(%rsp), %rsi
callq 0x8330
movq %rax, 0x388(%rsp)
jmp 0x68ae8
movq 0x388(%rsp), %rdi
movq 0x2e4b9(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68afe
leaq 0xb98(%rsp), %rdi
leaq 0xb50(%rsp), %rsi
callq 0x66fa0
jmp 0x68b15
jmp 0x68a34
movq 0x2e4cf(%rip), %rdi     # 0x96ff0
movq 0x2e488(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68b2f
movq 0x2e4ba(%rip), %rdi     # 0x96ff0
leaq 0x161fa(%rip), %rsi     # 0x7ed37
callq 0x8360
movq %rax, 0x380(%rsp)
jmp 0x68b4c
movq 0x1150(%rsp), %rsi
addq $0xc0, %rsi
leaq 0xab0(%rsp), %rdi
callq 0x70d50
jmp 0x68b6a
leaq 0xac8(%rsp), %rdi
leaq 0xab0(%rsp), %rsi
callq 0x70c20
jmp 0x68b81
movq 0x380(%rsp), %rdi
leaq 0xac8(%rsp), %rsi
callq 0x8330
movq %rax, 0x378(%rsp)
jmp 0x68ba0
movq 0x378(%rsp), %rdi
movq 0x2e401(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68bb6
leaq 0xac8(%rsp), %rdi
callq 0x8858
leaq 0xab0(%rsp), %rdi
callq 0xe770
movq 0x2e419(%rip), %rdi     # 0x96ff0
leaq 0x16195(%rip), %rsi     # 0x7ed73
callq 0x8360
movq %rax, 0x370(%rsp)
jmp 0x68bed
movq 0x1150(%rsp), %rsi
addq $0xa8, %rsi
leaq 0xa78(%rsp), %rdi
callq 0x70d50
jmp 0x68c0b
leaq 0xa90(%rsp), %rdi
leaq 0xa78(%rsp), %rsi
callq 0x70c20
jmp 0x68c22
movq 0x370(%rsp), %rdi
leaq 0xa90(%rsp), %rsi
callq 0x8330
movq %rax, 0x368(%rsp)
jmp 0x68c41
movq 0x368(%rsp), %rdi
movq 0x2e360(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68c57
leaq 0xa90(%rsp), %rdi
callq 0x8858
leaq 0xa78(%rsp), %rdi
callq 0xe770
movq 0x2e378(%rip), %rdi     # 0x96ff0
leaq 0x1613c(%rip), %rsi     # 0x7edbb
callq 0x8360
movq %rax, 0x360(%rsp)
jmp 0x68c8e
movq 0x360(%rsp), %rdi
movq 0x2e313(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68ca4
movb $0x0, 0xa77(%rsp)
movq 0x1150(%rsp), %rax
testb $0x1, 0x69(%rax)
je 0x68d88
movq 0x2e32b(%rip), %rdi     # 0x96ff0
leaq 0x16114(%rip), %rsi     # 0x7ede0
callq 0x8360
movq %rax, 0x358(%rsp)
jmp 0x68cdb
movq 0x358(%rsp), %rdi
movq 0x2e2c6(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x68cf1
jmp 0x68d88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x68d2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0xac8(%rsp), %rdi
callq 0x8858
leaq 0xab0(%rsp), %rdi
callq 0xe770
jmp 0x6b5c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x68d76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0xa90(%rsp), %rdi
callq 0x8858
leaq 0xa78(%rsp), %rdi
callq 0xe770
jmp 0x6b5c2
leaq 0xb78(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x69fb0
xorl %eax, %eax
movl %eax, %esi
leaq 0xb78(%rsp), %rdi
callq 0x8830
movq %rax, 0x350(%rsp)
jmp 0x68db8
movq 0x350(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x40, %eax
je 0x69fb0
leaq 0xb50(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x69fb0
xorl %eax, %eax
movl %eax, %esi
leaq 0xb50(%rsp), %rdi
callq 0x8830
movq %rax, 0x348(%rsp)
jmp 0x68dfc
movq 0x348(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x40, %eax
je 0x69fb0
leaq 0x9e8(%rsp), %rdi
callq 0x70a00
jmp 0x68e1f
leaq 0x960(%rsp), %rdi
callq 0x70a00
jmp 0x68e2e
movq 0x1150(%rsp), %rsi
addq $0xf8, %rsi
leaq 0x940(%rsp), %rdi
callq 0x8180
jmp 0x68e4c
leaq 0xb78(%rsp), %rdi
leaq 0x960(%rsp), %rsi
leaq 0x940(%rsp), %rdx
callq 0x67050
jmp 0x68e6b
leaq 0x940(%rsp), %rdi
callq 0x8858
movq 0x1150(%rsp), %rsi
addq $0xd8, %rsi
leaq 0x920(%rsp), %rdi
callq 0x8180
jmp 0x68e96
leaq 0xb50(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
leaq 0x920(%rsp), %rdx
callq 0x67050
jmp 0x68eb5
leaq 0x920(%rsp), %rdi
callq 0x8858
leaq 0x980(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe340
movb %al, 0x347(%rsp)
jmp 0x68edc
movb 0x347(%rsp), %al
andb $0x1, %al
movb %al, 0xa77(%rsp)
movups 0xb30(%rsp), %xmm0
movaps %xmm0, 0x910(%rsp)
movq 0x910(%rsp), %rsi
movq 0x918(%rsp), %rdx
leaq 0xda0(%rsp), %rdi
callq 0x8510
jmp 0x68f1b
testb $0x1, 0xa77(%rsp)
je 0x69856
jmp 0x68f2b
movq 0xda0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xda0(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x346(%rsp)
jmp 0x68f4d
movb 0x346(%rsp), %al
testb $0x1, %al
jne 0x68f5d
jmp 0x69851
leaq 0xda0(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
callq 0x66fa0
jmp 0x68f74
movq 0x1150(%rsp), %rsi
addq $0xf8, %rsi
leaq 0x8f0(%rsp), %rdi
callq 0x8180
jmp 0x68f92
leaq 0xb78(%rsp), %rdi
leaq 0x960(%rsp), %rsi
leaq 0x8f0(%rsp), %rdx
callq 0x67050
jmp 0x68fb1
leaq 0x8f0(%rsp), %rdi
callq 0x8858
leaq 0x960(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x6984c
leaq 0x980(%rsp), %rdi
movl $0x6, %esi
callq 0xe340
movb %al, 0x345(%rsp)
jmp 0x68fee
movb 0x345(%rsp), %al
testb $0x1, %al
jne 0x68ffb
jmp 0x69014
leaq 0x1048(%rsp), %rdi
leaq 0x960(%rsp), %rsi
callq 0x70e50
jmp 0x69012
jmp 0x6902d
leaq 0xfc0(%rsp), %rdi
leaq 0x960(%rsp), %rsi
callq 0x70e50
jmp 0x6902b
jmp 0x6902d
leaq 0xda0(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
callq 0x66fa0
jmp 0x69044
movq 0x1150(%rsp), %rsi
addq $0xf8, %rsi
leaq 0x8d0(%rsp), %rdi
callq 0x8180
jmp 0x69062
leaq 0xb78(%rsp), %rdi
leaq 0x960(%rsp), %rsi
leaq 0x8d0(%rsp), %rdx
callq 0x67050
jmp 0x69081
leaq 0x8d0(%rsp), %rdi
callq 0x8858
leaq 0x980(%rsp), %rdi
movl $0x6, %esi
callq 0xe340
movb %al, 0x344(%rsp)
jmp 0x690a9
movb 0x344(%rsp), %al
testb $0x1, %al
jne 0x690b6
jmp 0x690cf
leaq 0x1048(%rsp), %rdi
leaq 0x960(%rsp), %rsi
callq 0x70e50
jmp 0x690cd
jmp 0x690e8
leaq 0xfc0(%rsp), %rdi
leaq 0x960(%rsp), %rsi
callq 0x70e50
jmp 0x690e6
jmp 0x690e8
leaq 0xfa8(%rsp), %rdi
callq 0x70ee0
movq 0xb98(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xb98(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x343(%rsp)
jmp 0x69117
movb 0x343(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x342(%rsp)
jne 0x6912e
jmp 0x6917d
leaq 0xb50(%rsp), %rdi
callq 0x86e0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x342(%rsp)
jne 0x6917d
leaq 0x9e8(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
callq 0x8050
movl %eax, 0x33c(%rsp)
jmp 0x69169
movl 0x33c(%rsp), %eax
cmpl $0x0, %eax
sete %al
movb %al, 0x342(%rsp)
movb 0x342(%rsp), %al
testb $0x1, %al
jne 0x6918d
jmp 0x6936a
cmpl $0x0, 0xa68(%rsp)
jge 0x692c7
leaq 0x9e8(%rsp), %rdi
addq $0x28, %rdi
leaq 0xfea4(%rip), %rsi      # 0x79052
callq 0x8130
cmpl $0x0, %eax
je 0x692c7
leaq 0x1130(%rsp), %rdi
leaq 0x1118(%rsp), %rsi
leaq 0x1100(%rsp), %rdx
leaq 0xb50(%rsp), %rcx
callq 0x67920
movl %eax, 0x338(%rsp)
jmp 0x691ea
movl 0x338(%rsp), %eax
movl %eax, 0xa68(%rsp)
jmp 0x692c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x69f9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x69f91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x940(%rsp), %rdi
callq 0x8858
jmp 0x69f91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x920(%rsp), %rdi
callq 0x8858
jmp 0x69f91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x8f0(%rsp), %rdi
callq 0x8858
jmp 0x69f91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x8d0(%rsp), %rdi
callq 0x8858
jmp 0x69f91
leaq 0xfa8(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
callq 0x70f00
jmp 0x692de
leaq 0xb98(%rsp), %rdi
leaq 0xb50(%rsp), %rsi
callq 0x66fa0
jmp 0x692f5
movq 0x1150(%rsp), %rsi
addq $0xd8, %rsi
leaq 0x8b0(%rsp), %rdi
callq 0x8180
jmp 0x69313
leaq 0xb50(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
leaq 0x8b0(%rsp), %rdx
callq 0x67050
jmp 0x69332
leaq 0x8b0(%rsp), %rdi
callq 0x8858
jmp 0x690f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x8b0(%rsp), %rdi
callq 0x8858
jmp 0x69f91
leaq 0xb50(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x69425
leaq 0x9e8(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
callq 0x8050
movl %eax, 0x334(%rsp)
jmp 0x6939d
movl 0x334(%rsp), %eax
cmpl $0x0, %eax
jne 0x69425
cmpl $0x0, 0xa68(%rsp)
jge 0x6940c
leaq 0x9e8(%rsp), %rdi
addq $0x28, %rdi
leaq 0xfc8c(%rip), %rsi      # 0x79052
callq 0x8130
cmpl $0x0, %eax
je 0x6940c
leaq 0x1130(%rsp), %rdi
leaq 0x1118(%rsp), %rsi
leaq 0x1100(%rsp), %rdx
leaq 0xb50(%rsp), %rcx
callq 0x67920
movl %eax, 0x330(%rsp)
jmp 0x693fe
movl 0x330(%rsp), %eax
movl %eax, 0xa68(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
callq 0x70f00
jmp 0x69423
jmp 0x69425
movq $0x0, 0x8a8(%rsp)
movq 0x8a8(%rsp), %rax
movq %rax, 0x328(%rsp)
leaq 0xfa8(%rsp), %rdi
callq 0x70f80
movq %rax, %rcx
movq 0x328(%rsp), %rax
cmpq %rcx, %rax
jae 0x696c9
movq 0x8a8(%rsp), %rsi
leaq 0xfa8(%rsp), %rdi
callq 0x70fa0
movq %rax, 0x8a0(%rsp)
movq 0x8a0(%rsp), %rdi
addq $0x20, %rdi
movl $0x2, %esi
callq 0xe340
movb %al, 0x327(%rsp)
jmp 0x6949e
movb 0x327(%rsp), %al
testb $0x1, %al
jne 0x696ae
jmp 0x694af
movq $0x0, 0x898(%rsp)
movq 0x898(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x696ac
movq 0x8a0(%rsp), %rdi
movq %rdi, 0x318(%rsp)
addq $0x20, %rdi
movl $0x6, %esi
callq 0xe340
movb %al, 0x326(%rsp)
jmp 0x694f8
movb 0x326(%rsp), %al
testb $0x1, %al
jne 0x69505
jmp 0x69517
leaq 0x1048(%rsp), %rax
movq %rax, 0x310(%rsp)
jmp 0x69529
leaq 0xfc0(%rsp), %rax
movq %rax, 0x310(%rsp)
jmp 0x69529
movq 0x310(%rsp), %rax
movq %rax, 0x300(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xc0, %rdi
movq 0x898(%rsp), %rsi
callq 0x1eb90
movq 0x318(%rsp), %rdi
movq 0x300(%rsp), %rsi
movl (%rax), %edx
callq 0x677f0
movl %eax, 0x30c(%rsp)
jmp 0x69575
movl 0x30c(%rsp), %eax
movl %eax, 0x894(%rsp)
movq 0xb10(%rsp), %rax
movq 0x898(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movl 0x894(%rsp), %esi
callq 0x63cf0
jmp 0x695a5
leaq 0xfa8(%rsp), %rdi
callq 0x70f80
cmpq $0x2, %rax
jne 0x695e0
movq 0xb10(%rsp), %rax
movq 0x898(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x40, %rdi
movl 0x894(%rsp), %esi
callq 0x63cf0
jmp 0x695de
jmp 0x695e0
movq $0x0, 0x888(%rsp)
movq 0x888(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x69691
movq 0x8a0(%rsp), %rax
movl 0x50(%rax), %eax
movl %eax, 0x2fc(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xa8, %rdi
movq 0x888(%rsp), %rsi
callq 0x1eb90
movq %rax, %rcx
movl 0x2fc(%rsp), %eax
cmpl (%rcx), %eax
jl 0x69676
movq 0xb10(%rsp), %rax
movq 0x898(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x888(%rsp), %rax
shlq $0x6, %rax
leaq 0x80(%rax,%rcx), %rdi
movl 0x894(%rsp), %esi
callq 0x63cf0
jmp 0x69674
jmp 0x69676
jmp 0x69678
movq 0x888(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x888(%rsp)
jmp 0x695ec
jmp 0x69693
movq 0x898(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x898(%rsp)
jmp 0x694bb
jmp 0x696ae
jmp 0x696b0
movq 0x8a8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x8a8(%rsp)
jmp 0x69431
movq $0x0, 0x880(%rsp)
movq 0x880(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x69838
movq 0x1150(%rsp), %rax
testb $0x1, 0x69(%rax)
je 0x69787
movq 0x2d8ec(%rip), %rdi     # 0x96ff0
leaq 0x1048(%rsp), %rsi
callq 0x8330
movq %rax, 0x2f0(%rsp)
jmp 0x6971b
movq 0x2f0(%rsp), %rdi
leaq 0x10333(%rip), %rsi     # 0x79a5d
callq 0x8360
movq %rax, 0x2e8(%rsp)
jmp 0x69739
movq 0x2e8(%rsp), %rdi
movq 0xb10(%rsp), %rax
movq 0x880(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x38(%rax), %eax
testl %eax, %eax
setne %al
movzbl %al, %esi
callq 0x8710
movq %rax, 0x2e0(%rsp)
jmp 0x6976f
movq 0x2e0(%rsp), %rdi
movq 0x2d832(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x69785
jmp 0x69787
movq 0xb10(%rsp), %rax
movq 0x880(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x63d80
movq 0xb10(%rsp), %rax
movq 0x880(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x40, %rdi
callq 0x63d80
movq $0x0, 0x878(%rsp)
movq 0x878(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x6981d
movq 0xb10(%rsp), %rax
movq 0x880(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x878(%rsp), %rax
addq $0x2, %rax
shlq $0x6, %rax
addq %rax, %rdi
callq 0x63d80
movq 0x878(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x878(%rsp)
jmp 0x697c9
jmp 0x6981f
movq 0x880(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x880(%rsp)
jmp 0x696d5
movq 0xb28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb28(%rsp)
jmp 0x68f2b
jmp 0x69f75
jmp 0x69858
movq 0xda0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xda0(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x2df(%rsp)
jmp 0x6987a
movb 0x2df(%rsp), %al
testb $0x1, %al
jne 0x6988a
jmp 0x69f73
leaq 0xda0(%rsp), %rdi
leaq 0xb78(%rsp), %rsi
callq 0x66fa0
jmp 0x698a1
movq 0x1150(%rsp), %rsi
addq $0xf8, %rsi
leaq 0x858(%rsp), %rdi
callq 0x8180
jmp 0x698bf
leaq 0xb78(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
leaq 0x858(%rsp), %rdx
callq 0x67050
jmp 0x698de
leaq 0x858(%rsp), %rdi
callq 0x8858
leaq 0x1048(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x69f6e
leaq 0xfa8(%rsp), %rdi
callq 0x70ee0
movq 0xb98(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xb98(%rsp,%rax), %rdi
callq 0x8700
movb %al, 0x2de(%rsp)
jmp 0x6992f
movb 0x2de(%rsp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x2dd(%rsp)
jne 0x69946
jmp 0x69995
leaq 0xb50(%rsp), %rdi
callq 0x86e0
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x2dd(%rsp)
jne 0x69995
leaq 0x9e8(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
callq 0x8050
movl %eax, 0x2d8(%rsp)
jmp 0x69981
movl 0x2d8(%rsp), %eax
cmpl $0x0, %eax
sete %al
movb %al, 0x2dd(%rsp)
movb 0x2dd(%rsp), %al
testb $0x1, %al
jne 0x699a5
jmp 0x69ad7
cmpl $0x0, 0xa68(%rsp)
jge 0x69a34
leaq 0x9e8(%rsp), %rdi
addq $0x28, %rdi
leaq 0xf68c(%rip), %rsi      # 0x79052
callq 0x8130
cmpl $0x0, %eax
je 0x69a34
leaq 0x1130(%rsp), %rdi
leaq 0x1118(%rsp), %rsi
leaq 0x1100(%rsp), %rdx
leaq 0xb50(%rsp), %rcx
callq 0x67920
movl %eax, 0x2d4(%rsp)
jmp 0x699fe
movl 0x2d4(%rsp), %eax
movl %eax, 0xa68(%rsp)
jmp 0x69a34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x858(%rsp), %rdi
callq 0x8858
jmp 0x69f91
leaq 0xfa8(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
callq 0x70f00
jmp 0x69a4b
leaq 0xb98(%rsp), %rdi
leaq 0xb50(%rsp), %rsi
callq 0x66fa0
jmp 0x69a62
movq 0x1150(%rsp), %rsi
addq $0xd8, %rsi
leaq 0x838(%rsp), %rdi
callq 0x8180
jmp 0x69a80
leaq 0xb50(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
leaq 0x838(%rsp), %rdx
callq 0x67050
jmp 0x69a9f
leaq 0x838(%rsp), %rdi
callq 0x8858
jmp 0x6990d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x838(%rsp), %rdi
callq 0x8858
jmp 0x69f91
leaq 0xb50(%rsp), %rdi
callq 0x86e0
testb $0x1, %al
jne 0x69b92
leaq 0x9e8(%rsp), %rdi
leaq 0x1048(%rsp), %rsi
callq 0x8050
movl %eax, 0x2d0(%rsp)
jmp 0x69b0a
movl 0x2d0(%rsp), %eax
cmpl $0x0, %eax
jne 0x69b92
cmpl $0x0, 0xa68(%rsp)
jge 0x69b79
leaq 0x9e8(%rsp), %rdi
addq $0x28, %rdi
leaq 0xf51f(%rip), %rsi      # 0x79052
callq 0x8130
cmpl $0x0, %eax
je 0x69b79
leaq 0x1130(%rsp), %rdi
leaq 0x1118(%rsp), %rsi
leaq 0x1100(%rsp), %rdx
leaq 0xb50(%rsp), %rcx
callq 0x67920
movl %eax, 0x2cc(%rsp)
jmp 0x69b6b
movl 0x2cc(%rsp), %eax
movl %eax, 0xa68(%rsp)
leaq 0xfa8(%rsp), %rdi
leaq 0x9e8(%rsp), %rsi
callq 0x70f00
jmp 0x69b90
jmp 0x69b92
movq $0x0, 0x830(%rsp)
movq 0x830(%rsp), %rax
movq %rax, 0x2c0(%rsp)
leaq 0xfa8(%rsp), %rdi
callq 0x70f80
movq %rax, %rcx
movq 0x2c0(%rsp), %rax
cmpq %rcx, %rax
jae 0x69deb
movq 0x830(%rsp), %rsi
leaq 0xfa8(%rsp), %rdi
callq 0x70fa0
movq %rax, %rdi
addq $0x20, %rdi
movl $0x2, %esi
callq 0xe340
movb %al, 0x2bf(%rsp)
jmp 0x69bfe
movb 0x2bf(%rsp), %al
testb $0x1, %al
jne 0x69dd0
jmp 0x69c0f
movq $0x0, 0x828(%rsp)
movq 0x828(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x69dce
movq 0x830(%rsp), %rsi
leaq 0xfa8(%rsp), %rdi
callq 0x70fa0
movq %rax, 0x2b0(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xc0, %rdi
movq 0x828(%rsp), %rsi
callq 0x1eb90
movq 0x2b0(%rsp), %rdi
movl (%rax), %edx
leaq 0x1048(%rsp), %rsi
callq 0x676e0
movl %eax, 0x2b8(%rsp)
jmp 0x69c8a
movl 0x2b8(%rsp), %eax
movl %eax, 0x824(%rsp)
movq 0xb10(%rsp), %rax
movq 0x828(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movl 0x824(%rsp), %esi
callq 0x63cf0
jmp 0x69cba
leaq 0xfa8(%rsp), %rdi
callq 0x70f80
cmpq $0x1, %rax
jne 0x69cf5
movq 0xb10(%rsp), %rax
movq 0x828(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x40, %rdi
movl 0x824(%rsp), %esi
callq 0x63cf0
jmp 0x69cf3
jmp 0x69cf5
movq $0x0, 0x818(%rsp)
movq 0x818(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x69db3
movq 0x830(%rsp), %rsi
leaq 0xfa8(%rsp), %rdi
callq 0x70fa0
movl 0x50(%rax), %eax
movl %eax, 0x2ac(%rsp)
movq 0x1150(%rsp), %rdi
addq $0xa8, %rdi
movq 0x818(%rsp), %rsi
callq 0x1eb90
movq %rax, %rcx
movl 0x2ac(%rsp), %eax
cmpl (%rcx), %eax
jl 0x69d98
movq 0xb10(%rsp), %rax
movq 0x828(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x818(%rsp), %rax
shlq $0x6, %rax
leaq 0x80(%rax,%rcx), %rdi
movl 0x824(%rsp), %esi
callq 0x63cf0
jmp 0x69d96
jmp 0x69d98
jmp 0x69d9a
movq 0x818(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x818(%rsp)
jmp 0x69d01
jmp 0x69db5
movq 0x828(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x828(%rsp)
jmp 0x69c1b
jmp 0x69dd0
jmp 0x69dd2
movq 0x830(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x830(%rsp)
jmp 0x69b9e
movq $0x0, 0x810(%rsp)
movq 0x810(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x69f5a
movq 0x1150(%rsp), %rax
testb $0x1, 0x69(%rax)
je 0x69ea9
movq 0x2d1ca(%rip), %rdi     # 0x96ff0
leaq 0x1048(%rsp), %rsi
callq 0x8330
movq %rax, 0x2a0(%rsp)
jmp 0x69e3d
movq 0x2a0(%rsp), %rdi
leaq 0xfc11(%rip), %rsi      # 0x79a5d
callq 0x8360
movq %rax, 0x298(%rsp)
jmp 0x69e5b
movq 0x298(%rsp), %rdi
movq 0xb10(%rsp), %rax
movq 0x810(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movl 0x38(%rax), %eax
testl %eax, %eax
setne %al
movzbl %al, %esi
callq 0x8710
movq %rax, 0x290(%rsp)
jmp 0x69e91
movq 0x290(%rsp), %rdi
movq 0x2d110(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x69ea7
jmp 0x69ea9
movq 0xb10(%rsp), %rax
movq 0x810(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x63d80
movq 0xb10(%rsp), %rax
movq 0x810(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x40, %rdi
callq 0x63d80
movq $0x0, 0x808(%rsp)
movq 0x808(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x69f3f
movq 0xb10(%rsp), %rax
movq 0x810(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq 0x808(%rsp), %rax
addq $0x2, %rax
shlq $0x6, %rax
addq %rax, %rdi
callq 0x63d80
movq 0x808(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x808(%rsp)
jmp 0x69eeb
jmp 0x69f41
movq 0x810(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x810(%rsp)
jmp 0x69df7
movq 0xb28(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb28(%rsp)
jmp 0x69858
jmp 0x69f75
leaq 0x960(%rsp), %rdi
callq 0x70fc0
leaq 0x9e8(%rsp), %rdi
callq 0x70fc0
jmp 0x69fb0
leaq 0x960(%rsp), %rdi
callq 0x70fc0
leaq 0x9e8(%rsp), %rdi
callq 0x70fc0
jmp 0x6b5c2
movq 0x2d039(%rip), %rdi     # 0x96ff0
leaq 0x14e35(%rip), %rsi     # 0x7edf3
callq 0x8360
movq %rax, 0x288(%rsp)
jmp 0x69fcd
movq 0x288(%rsp), %rdi
movq 0x2cfd4(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x69fe3
leaq 0xb98(%rsp), %rdi
callq 0x80e0
jmp 0x69ff2
leaq 0xda0(%rsp), %rdi
callq 0x80e0
jmp 0x6a001
movq 0x2cfe8(%rip), %rdi     # 0x96ff0
movq 0x2cfa1(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a016
movq 0x2cfd3(%rip), %rdi     # 0x96ff0
leaq 0x14df5(%rip), %rsi     # 0x7ee19
callq 0x8360
movq %rax, 0x280(%rsp)
jmp 0x6a033
movq 0x280(%rsp), %rdi
movq 0x2cf6e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a049
movq 0x2cfa0(%rip), %rdi     # 0x96ff0
leaq 0x14dd3(%rip), %rsi     # 0x7ee2a
callq 0x8360
movq %rax, 0x278(%rsp)
jmp 0x6a066
movq 0x278(%rsp), %rdi
movq 0x2cf3b(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a07c
movq 0x1150(%rsp), %rdi
addq $0x8, %rdi
callq 0x86e0
testb $0x1, %al
jne 0x6ab17
movq 0x1150(%rsp), %rdi
addq $0x8, %rdi
callq 0x8170
movq %rax, %rsi
leaq 0x608(%rsp), %rdi
movl $0x10, %edx
callq 0x83f0
jmp 0x6a0bd
leaq 0x14e0a(%rip), %rsi     # 0x7eece
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x270(%rsp)
jmp 0x6a0db
movq 0x270(%rsp), %rdi
movq 0x2cec6(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a0f1
leaq 0x14e22(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x268(%rsp)
jmp 0x6a10f
movq 0x268(%rsp), %rdi
movq 0x2ce92(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a125
leaq 0x14df1(%rip), %rsi     # 0x7ef1d
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x260(%rsp)
jmp 0x6a143
movq 0x260(%rsp), %rdi
movq 0x2ce5e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a159
leaq 0x14dba(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x258(%rsp)
jmp 0x6a177
movq 0x258(%rsp), %rdi
movq 0x2ce2a(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a18d
leaq 0x14e33(%rip), %rsi     # 0x7efc7
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x250(%rsp)
jmp 0x6a1ab
movq 0x250(%rsp), %rdi
movq 0x1150(%rsp), %rsi
addq $0x70, %rsi
callq 0x8330
movq %rax, 0x248(%rsp)
jmp 0x6a1ce
movq 0x248(%rsp), %rdi
movq 0x2cdd3(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a1e4
leaq 0x14dff(%rip), %rsi     # 0x7efea
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x240(%rsp)
jmp 0x6a202
movq 0x240(%rsp), %rdi
movq 0x1150(%rsp), %rsi
addq $0x28, %rsi
callq 0x8330
movq %rax, 0x238(%rsp)
jmp 0x6a225
movq 0x238(%rsp), %rdi
movq 0x2cd7c(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a23b
leaq 0x14cd8(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x230(%rsp)
jmp 0x6a259
movq 0x230(%rsp), %rdi
movq 0x2cd48(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a26f
leaq 0x14d9e(%rip), %rsi     # 0x7f014
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x228(%rsp)
jmp 0x6a28d
movq 0x228(%rsp), %rdi
movq 0x2cd14(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a2a3
leaq 0x14dcc(%rip), %rsi     # 0x7f076
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x220(%rsp)
jmp 0x6a2c1
movq 0x1150(%rsp), %rsi
addq $0xc0, %rsi
leaq 0x5d0(%rsp), %rdi
callq 0x70d50
jmp 0x6a2df
leaq 0x5e8(%rsp), %rdi
leaq 0x5d0(%rsp), %rsi
callq 0x70c20
jmp 0x6a2f6
movq 0x220(%rsp), %rdi
leaq 0x5e8(%rsp), %rsi
callq 0x8330
movq %rax, 0x218(%rsp)
jmp 0x6a315
movq 0x218(%rsp), %rdi
movq 0x2cc8c(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a32b
leaq 0x5e8(%rsp), %rdi
callq 0x8858
leaq 0x5d0(%rsp), %rdi
callq 0xe770
leaq 0x14bce(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x210(%rsp)
jmp 0x6a363
movq 0x210(%rsp), %rdi
movq 0x2cc3e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a379
leaq 0x14d1d(%rip), %rsi     # 0x7f09d
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x208(%rsp)
jmp 0x6a397
movq 0x1150(%rsp), %rsi
addq $0xa8, %rsi
leaq 0x598(%rsp), %rdi
callq 0x70d50
jmp 0x6a3b5
leaq 0x5b0(%rsp), %rdi
leaq 0x598(%rsp), %rsi
callq 0x70c20
jmp 0x6a3cc
movq 0x208(%rsp), %rdi
leaq 0x5b0(%rsp), %rsi
callq 0x8330
movq %rax, 0x200(%rsp)
jmp 0x6a3eb
movq 0x200(%rsp), %rdi
movq 0x2cbb6(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a401
leaq 0x5b0(%rsp), %rdi
callq 0x8858
leaq 0x598(%rsp), %rdi
callq 0xe770
leaq 0x14af8(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1f8(%rsp)
jmp 0x6a439
movq 0x1f8(%rsp), %rdi
movq 0x2cb68(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a44f
leaq 0x14ce7(%rip), %rsi     # 0x7f13d
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1f0(%rsp)
jmp 0x6a46d
movq 0x1f0(%rsp), %rdi
movq 0x2cb34(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a483
leaq 0x14d84(%rip), %rsi     # 0x7f20e
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1e8(%rsp)
jmp 0x6a4a1
movq 0x1e8(%rsp), %rdi
movq 0x2cb00(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a4b7
leaq 0x14a5c(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1e0(%rsp)
jmp 0x6a4d5
movq 0x1e0(%rsp), %rdi
movq 0x2cacc(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a4eb
leaq 0x14a28(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1d8(%rsp)
jmp 0x6a509
movq 0x1d8(%rsp), %rdi
movq 0x2ca98(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a51f
leaq 0x14db1(%rip), %rsi     # 0x7f2d7
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1d0(%rsp)
jmp 0x6a53d
movq 0x1d0(%rsp), %rdi
movq 0x2ca64(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a553
leaq 0x149c0(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1c8(%rsp)
jmp 0x6a571
movq 0x1c8(%rsp), %rdi
movq 0x2ca30(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a587
leaq 0x14d53(%rip), %rsi     # 0x7f2e1
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1c0(%rsp)
jmp 0x6a5a5
movq 0x1c0(%rsp), %rdi
movq 0xb28(%rsp), %rsi
callq 0x8790
movq %rax, 0x1b8(%rsp)
jmp 0x6a5c4
movq 0x1b8(%rsp), %rdi
movq 0x2c9dd(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a5da
leaq 0x14d14(%rip), %rsi     # 0x7f2f5
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1b0(%rsp)
jmp 0x6a5f8
movq 0x1b0(%rsp), %rdi
movzbl 0xa77(%rsp), %esi
andl $0x1, %esi
callq 0x8760
movq %rax, 0x1a8(%rsp)
jmp 0x6a61a
movq 0x1a8(%rsp), %rdi
movq 0x2c987(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a630
leaq 0x148e3(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x1a0(%rsp)
jmp 0x6a64e
movq 0x1a0(%rsp), %rdi
movq 0x2c953(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a664
movq $0x0, 0x590(%rsp)
movq 0x590(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x6aae4
leaq 0x14c7e(%rip), %rsi     # 0x7f30b
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x198(%rsp)
jmp 0x6a6a4
movq 0x1150(%rsp), %rdi
addq $0xc0, %rdi
movq 0x590(%rsp), %rsi
callq 0x1eb90
movq 0x198(%rsp), %rdi
movl (%rax), %esi
callq 0x8710
movq %rax, 0x190(%rsp)
jmp 0x6a6d9
movq 0x190(%rsp), %rdi
movq 0x2c8c8(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a6ef
leaq 0x14c35(%rip), %rsi     # 0x7f32b
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x188(%rsp)
jmp 0x6a70d
movq 0x188(%rsp), %rdi
movq 0x2c894(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a723
leaq 0x14c1d(%rip), %rsi     # 0x7f347
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x180(%rsp)
jmp 0x6a741
movq 0x180(%rsp), %rdi
movq 0x2c860(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6a757
leaq 0x14c9f(%rip), %rsi     # 0x7f3fd
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x178(%rsp)
jmp 0x6a775
movq 0xb10(%rsp), %rax
movq 0x590(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0xb28(%rsp), %rdx
leaq 0x570(%rsp), %rdi
callq 0x63df0
jmp 0x6a7a0
movq 0x178(%rsp), %rdi
leaq 0x570(%rsp), %rsi
callq 0x8330
jmp 0x6a7b7
leaq 0x570(%rsp), %rdi
callq 0x8858
leaq 0x14c38(%rip), %rsi     # 0x7f403
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x170(%rsp)
jmp 0x6a7e2
movq 0xb10(%rsp), %rax
movq 0x590(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x40, %rsi
movq 0xb28(%rsp), %rdx
leaq 0x550(%rsp), %rdi
callq 0x63df0
jmp 0x6a811
movq 0x170(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x8330
jmp 0x6a828
leaq 0x550(%rsp), %rdi
callq 0x8858
movq $0x0, 0x548(%rsp)
movq 0x548(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x6aa61
leaq 0x14bb6(%rip), %rsi     # 0x7f414
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x168(%rsp)
jmp 0x6a875
movq 0x1150(%rsp), %rdi
addq $0xa8, %rdi
movq 0x548(%rsp), %rsi
callq 0x1eb90
movq 0x168(%rsp), %rdi
movl (%rax), %esi
callq 0x8710
movq %rax, 0x160(%rsp)
jmp 0x6a8aa
movq 0x160(%rsp), %rdi
leaq 0x14b58(%rip), %rsi     # 0x7f411
callq 0x8360
movq %rax, 0x158(%rsp)
jmp 0x6a8c8
movq 0xb10(%rsp), %rax
movq 0x590(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x548(%rsp), %rax
shlq $0x6, %rax
leaq 0x80(%rax,%rcx), %rsi
movq 0xb28(%rsp), %rdx
leaq 0x528(%rsp), %rdi
callq 0x63df0
jmp 0x6a907
movq 0x158(%rsp), %rdi
leaq 0x528(%rsp), %rsi
callq 0x8330
jmp 0x6a91e
leaq 0x528(%rsp), %rdi
callq 0x8858
movq 0x548(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x548(%rsp)
jmp 0x6a841
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6ab05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6a994
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x5e8(%rsp), %rdi
callq 0x8858
leaq 0x5d0(%rsp), %rdi
callq 0xe770
jmp 0x6ab05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6a9dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x5b0(%rsp), %rdi
callq 0x8858
leaq 0x598(%rsp), %rdi
callq 0xe770
jmp 0x6ab05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x570(%rsp), %rdi
callq 0x8858
jmp 0x6ab05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x8858
jmp 0x6ab05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x528(%rsp), %rdi
callq 0x8858
jmp 0x6ab05
leaq 0x144b2(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x150(%rsp)
jmp 0x6aa7f
movq 0x150(%rsp), %rdi
movq 0x2c522(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6aa95
leaq 0x1447e(%rip), %rsi     # 0x7ef1a
leaq 0x608(%rsp), %rdi
callq 0x8360
movq %rax, 0x148(%rsp)
jmp 0x6aab3
movq 0x148(%rsp), %rdi
movq 0x2c4ee(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6aac9
jmp 0x6aacb
movq 0x590(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x590(%rsp)
jmp 0x6a670
leaq 0x608(%rsp), %rdi
callq 0x85b0
jmp 0x6aaf3
leaq 0x608(%rsp), %rdi
callq 0x8610
jmp 0x6b4bc
leaq 0x608(%rsp), %rdi
callq 0x8610
jmp 0x6b5c2
movq 0x2c4aa(%rip), %rdi     # 0x96fc8
leaq 0x143a9(%rip), %rsi     # 0x7eece
callq 0x8360
movq %rax, 0x140(%rsp)
jmp 0x6ab34
movq 0x140(%rsp), %rdi
movq 0x2c46d(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ab4a
movq 0x2c477(%rip), %rdi     # 0x96fc8
leaq 0x143c2(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x138(%rsp)
jmp 0x6ab67
movq 0x138(%rsp), %rdi
movq 0x2c43a(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ab7d
movq 0x2c444(%rip), %rdi     # 0x96fc8
leaq 0x14392(%rip), %rsi     # 0x7ef1d
callq 0x8360
movq %rax, 0x130(%rsp)
jmp 0x6ab9a
movq 0x130(%rsp), %rdi
movq 0x2c407(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6abb0
movq 0x2c411(%rip), %rdi     # 0x96fc8
leaq 0x1435c(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x128(%rsp)
jmp 0x6abcd
movq 0x128(%rsp), %rdi
movq 0x2c3d4(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6abe3
movq 0x2c3de(%rip), %rdi     # 0x96fc8
leaq 0x143d6(%rip), %rsi     # 0x7efc7
callq 0x8360
movq %rax, 0x120(%rsp)
jmp 0x6ac00
movq 0x120(%rsp), %rdi
movq 0x1150(%rsp), %rsi
addq $0x70, %rsi
callq 0x8330
movq %rax, 0x118(%rsp)
jmp 0x6ac23
movq 0x118(%rsp), %rdi
movq 0x2c37e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ac39
movq 0x2c388(%rip), %rdi     # 0x96fc8
leaq 0x143a3(%rip), %rsi     # 0x7efea
callq 0x8360
movq %rax, 0x110(%rsp)
jmp 0x6ac56
movq 0x110(%rsp), %rdi
movq 0x1150(%rsp), %rsi
addq $0x28, %rsi
callq 0x8330
movq %rax, 0x108(%rsp)
jmp 0x6ac79
movq 0x108(%rsp), %rdi
movq 0x2c328(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ac8f
movq 0x2c332(%rip), %rdi     # 0x96fc8
leaq 0x1427d(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x100(%rsp)
jmp 0x6acac
movq 0x100(%rsp), %rdi
movq 0x2c2f5(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6acc2
movq 0x2c2ff(%rip), %rdi     # 0x96fc8
leaq 0x14344(%rip), %rsi     # 0x7f014
callq 0x8360
movq %rax, 0xf8(%rsp)
jmp 0x6acdf
movq 0xf8(%rsp), %rdi
movq 0x2c2c2(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6acf5
movq 0x2c2cc(%rip), %rdi     # 0x96fc8
leaq 0x14373(%rip), %rsi     # 0x7f076
callq 0x8360
movq %rax, 0xf0(%rsp)
jmp 0x6ad12
movq 0x1150(%rsp), %rsi
addq $0xc0, %rsi
leaq 0x4f0(%rsp), %rdi
callq 0x70d50
jmp 0x6ad30
leaq 0x508(%rsp), %rdi
leaq 0x4f0(%rsp), %rsi
callq 0x70c20
jmp 0x6ad47
movq 0xf0(%rsp), %rdi
leaq 0x508(%rsp), %rsi
callq 0x8330
movq %rax, 0xe8(%rsp)
jmp 0x6ad66
movq 0xe8(%rsp), %rdi
movq 0x2c23b(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ad7c
leaq 0x508(%rsp), %rdi
callq 0x8858
leaq 0x4f0(%rsp), %rdi
callq 0xe770
movq 0x2c22b(%rip), %rdi     # 0x96fc8
leaq 0x14176(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0xe0(%rsp)
jmp 0x6adb3
movq 0xe0(%rsp), %rdi
movq 0x2c1ee(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6adc9
movq 0x2c1f8(%rip), %rdi     # 0x96fc8
leaq 0x142c6(%rip), %rsi     # 0x7f09d
callq 0x8360
movq %rax, 0xd8(%rsp)
jmp 0x6ade6
movq 0x1150(%rsp), %rsi
addq $0xa8, %rsi
leaq 0x4b8(%rsp), %rdi
callq 0x70d50
jmp 0x6ae04
leaq 0x4d0(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
callq 0x70c20
jmp 0x6ae1b
movq 0xd8(%rsp), %rdi
leaq 0x4d0(%rsp), %rsi
callq 0x8330
movq %rax, 0xd0(%rsp)
jmp 0x6ae3a
movq 0xd0(%rsp), %rdi
movq 0x2c167(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ae50
leaq 0x4d0(%rsp), %rdi
callq 0x8858
leaq 0x4b8(%rsp), %rdi
callq 0xe770
movq 0x2c157(%rip), %rdi     # 0x96fc8
leaq 0x140a2(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0xc8(%rsp)
jmp 0x6ae87
movq 0xc8(%rsp), %rdi
movq 0x2c11a(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6ae9d
movq 0x2c124(%rip), %rdi     # 0x96fc8
leaq 0x14292(%rip), %rsi     # 0x7f13d
callq 0x8360
movq %rax, 0xc0(%rsp)
jmp 0x6aeba
movq 0xc0(%rsp), %rdi
movq 0x2c0e7(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6aed0
movq 0x2c0f1(%rip), %rdi     # 0x96fc8
leaq 0x14330(%rip), %rsi     # 0x7f20e
callq 0x8360
movq %rax, 0xb8(%rsp)
jmp 0x6aeed
movq 0xb8(%rsp), %rdi
movq 0x2c0b4(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6af03
movq 0x2c0be(%rip), %rdi     # 0x96fc8
leaq 0x14009(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0xb0(%rsp)
jmp 0x6af20
movq 0xb0(%rsp), %rdi
movq 0x2c081(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6af36
movq 0x2c08b(%rip), %rdi     # 0x96fc8
leaq 0x13fd6(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0xa8(%rsp)
jmp 0x6af53
movq 0xa8(%rsp), %rdi
movq 0x2c04e(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6af69
movq 0x2c058(%rip), %rdi     # 0x96fc8
leaq 0x14360(%rip), %rsi     # 0x7f2d7
callq 0x8360
movq %rax, 0xa0(%rsp)
jmp 0x6af86
movq 0xa0(%rsp), %rdi
movq 0x2c01b(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6af9c
movq 0x2c025(%rip), %rdi     # 0x96fc8
leaq 0x13f70(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x98(%rsp)
jmp 0x6afb9
movq 0x98(%rsp), %rdi
movq 0x2bfe8(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6afcf
movq 0x2bff2(%rip), %rdi     # 0x96fc8
leaq 0x14304(%rip), %rsi     # 0x7f2e1
callq 0x8360
movq %rax, 0x90(%rsp)
jmp 0x6afec
movq 0x90(%rsp), %rdi
movq 0xb28(%rsp), %rsi
callq 0x8790
movq %rax, 0x88(%rsp)
jmp 0x6b00b
movq 0x88(%rsp), %rdi
movq 0x2bf96(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b021
movq 0x2bfa0(%rip), %rdi     # 0x96fc8
leaq 0x142c6(%rip), %rsi     # 0x7f2f5
callq 0x8360
movq %rax, 0x80(%rsp)
jmp 0x6b03e
movq 0x80(%rsp), %rdi
movzbl 0xa77(%rsp), %esi
andl $0x1, %esi
callq 0x8760
movq %rax, 0x78(%rsp)
jmp 0x6b05d
movq 0x78(%rsp), %rdi
movq 0x2bf47(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b070
movq 0x2bf51(%rip), %rdi     # 0x96fc8
leaq 0x13e9c(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x70(%rsp)
jmp 0x6b08a
movq 0x70(%rsp), %rdi
movq 0x2bf1a(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b09d
movq $0x0, 0x4b0(%rsp)
movq 0x4b0(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x6b4ba
movq 0x2bf02(%rip), %rdi     # 0x96fc8
leaq 0x1423e(%rip), %rsi     # 0x7f30b
callq 0x8360
movq %rax, 0x68(%rsp)
jmp 0x6b0d9
movq 0x1150(%rsp), %rdi
addq $0xc0, %rdi
movq 0x4b0(%rsp), %rsi
callq 0x1eb90
movq 0x68(%rsp), %rdi
movl (%rax), %esi
callq 0x8710
movq %rax, 0x60(%rsp)
jmp 0x6b108
movq 0x60(%rsp), %rdi
movq 0x2be9c(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b11b
movq 0x2bea6(%rip), %rdi     # 0x96fc8
leaq 0x14202(%rip), %rsi     # 0x7f32b
callq 0x8360
movq %rax, 0x58(%rsp)
jmp 0x6b135
movq 0x58(%rsp), %rdi
movq 0x2be6f(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b148
movq 0x2be79(%rip), %rdi     # 0x96fc8
leaq 0x141f1(%rip), %rsi     # 0x7f347
callq 0x8360
movq %rax, 0x50(%rsp)
jmp 0x6b162
movq 0x50(%rsp), %rdi
movq 0x2be42(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b175
movq 0x2be4c(%rip), %rdi     # 0x96fc8
leaq 0x1427a(%rip), %rsi     # 0x7f3fd
callq 0x8360
movq %rax, 0x48(%rsp)
jmp 0x6b18f
movq 0xb10(%rsp), %rax
movq 0x4b0(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
movq 0xb28(%rsp), %rdx
leaq 0x490(%rsp), %rdi
callq 0x63df0
jmp 0x6b1ba
movq 0x48(%rsp), %rdi
leaq 0x490(%rsp), %rsi
callq 0x8330
jmp 0x6b1ce
leaq 0x490(%rsp), %rdi
callq 0x8858
movq 0x2bde6(%rip), %rdi     # 0x96fc8
leaq 0x1421a(%rip), %rsi     # 0x7f403
callq 0x8360
movq %rax, 0x40(%rsp)
jmp 0x6b1f5
movq 0xb10(%rsp), %rax
movq 0x4b0(%rsp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x40, %rsi
movq 0xb28(%rsp), %rdx
leaq 0x470(%rsp), %rdi
callq 0x63df0
jmp 0x6b224
movq 0x40(%rsp), %rdi
leaq 0x470(%rsp), %rsi
callq 0x8330
jmp 0x6b238
leaq 0x470(%rsp), %rdi
callq 0x8858
movq $0x0, 0x468(%rsp)
movq 0x468(%rsp), %rax
cmpq 0xb18(%rsp), %rax
jae 0x6b445
movq 0x2bd5a(%rip), %rdi     # 0x96fc8
leaq 0x1419f(%rip), %rsi     # 0x7f414
callq 0x8360
movq %rax, 0x38(%rsp)
jmp 0x6b281
movq 0x1150(%rsp), %rdi
addq $0xa8, %rdi
movq 0x468(%rsp), %rsi
callq 0x1eb90
movq 0x38(%rsp), %rdi
movl (%rax), %esi
callq 0x8710
movq %rax, 0x30(%rsp)
jmp 0x6b2b0
movq 0x30(%rsp), %rdi
leaq 0x14155(%rip), %rsi     # 0x7f411
callq 0x8360
movq %rax, 0x28(%rsp)
jmp 0x6b2c8
movq 0xb10(%rsp), %rax
movq 0x4b0(%rsp), %rcx
movq (%rax,%rcx,8), %rcx
movq 0x468(%rsp), %rax
shlq $0x6, %rax
leaq 0x80(%rax,%rcx), %rsi
movq 0xb28(%rsp), %rdx
leaq 0x448(%rsp), %rdi
callq 0x63df0
jmp 0x6b307
movq 0x28(%rsp), %rdi
leaq 0x448(%rsp), %rsi
callq 0x8330
jmp 0x6b31b
leaq 0x448(%rsp), %rdi
callq 0x8858
movq 0x468(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x468(%rsp)
jmp 0x6b251
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b378
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x508(%rsp), %rdi
callq 0x8858
leaq 0x4f0(%rsp), %rdi
callq 0xe770
jmp 0x6b5c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
jmp 0x6b3c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x4d0(%rsp), %rdi
callq 0x8858
leaq 0x4b8(%rsp), %rdi
callq 0xe770
jmp 0x6b5c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x490(%rsp), %rdi
callq 0x8858
jmp 0x6b5c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x470(%rsp), %rdi
callq 0x8858
jmp 0x6b5c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x10d8(%rsp)
movl %eax, 0x10d4(%rsp)
leaq 0x448(%rsp), %rdi
callq 0x8858
jmp 0x6b5c2
movq 0x2bb7c(%rip), %rdi     # 0x96fc8
leaq 0x13ac7(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x20(%rsp)
jmp 0x6b45f
movq 0x20(%rsp), %rdi
movq 0x2bb45(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b472
movq 0x2bb4f(%rip), %rdi     # 0x96fc8
leaq 0x13a9a(%rip), %rsi     # 0x7ef1a
callq 0x8360
movq %rax, 0x18(%rsp)
jmp 0x6b48c
movq 0x18(%rsp), %rdi
movq 0x2bb18(%rip), %rsi     # 0x96fb0
callq 0x83b0
jmp 0x6b49f
jmp 0x6b4a1
movq 0x4b0(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x4b0(%rsp)
jmp 0x6b0a9
jmp 0x6b4bc
movq $0x0, 0x440(%rsp)
movq 0x440(%rsp), %rax
cmpq 0xb20(%rsp), %rax
jae 0x6b51b
movq 0xb10(%rsp), %rax
movq 0x440(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x6b503
movq 0x10(%rsp), %rdi
callq 0x8520
jmp 0x6b505
movq 0x440(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x440(%rsp)
jmp 0x6b4c8
movq 0xb10(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x6b538
movq 0x8(%rsp), %rdi
callq 0x8520
leaq 0xb50(%rsp), %rdi
callq 0x8858
leaq 0xb78(%rsp), %rdi
callq 0x8858
leaq 0xb98(%rsp), %rdi
callq 0x8110
leaq 0xda0(%rsp), %rdi
callq 0x8110
leaq 0xfa8(%rsp), %rdi
callq 0x71000
leaq 0xfc0(%rsp), %rdi
callq 0x70fc0
leaq 0x1048(%rsp), %rdi
callq 0x70fc0
leaq 0x1100(%rsp), %rdi
callq 0xf0f0
leaq 0x1118(%rsp), %rdi
callq 0xe7d0
leaq 0x1130(%rsp), %rdi
callq 0x8858
addq $0x1158, %rsp           # imm = 0x1158
retq
leaq 0xb50(%rsp), %rdi
callq 0x8858
leaq 0xb78(%rsp), %rdi
callq 0x8858
leaq 0xb98(%rsp), %rdi
callq 0x8110
leaq 0xda0(%rsp), %rdi
callq 0x8110
leaq 0xfa8(%rsp), %rdi
callq 0x71000
leaq 0xfc0(%rsp), %rdi
callq 0x70fc0
leaq 0x1048(%rsp), %rdi
callq 0x70fc0
leaq 0x1100(%rsp), %rdi
callq 0xf0f0
leaq 0x1118(%rsp), %rdi
callq 0xe7d0
leaq 0x1130(%rsp), %rdi
callq 0x8858
movq 0x10d8(%rsp), %rdi
callq 0x8730
nopw %cs:(%rax,%rax)