// File: /workspace/github_cpp_makefile_star2_O3/millanek[P]evo/evo_Dmin_combine.cpp
// Function: DminCombineMain(int, char**)
int DminCombineMain(int argc, char** argv) {
    parseDminCombineOptions(argc, argv);
    string line; // for reading the input files
    
    
    std::vector<std::istream*> dminstdErrFiles; std::vector<std::istream*> dminBBAAscoreFiles;
    for (int i = 0; i < opt::dminFiles.size(); i++) {
        std::istream* dminBBAAscoreFile;
        if (file_exists(opt::dminFiles[i] + "_combine.txt")) {
            dminBBAAscoreFile = createReader((opt::dminFiles[i] + "_combine.txt").c_str());
        } else if(file_exists(opt::dminFiles[i] + "_combine.txt.gz")) {
            dminBBAAscoreFile = createReader((opt::dminFiles[i] + "_combine.txt.gz").c_str());
        } else {
            std::cerr << "Can't fine the file: " << opt::dminFiles[i] + "_combine.txt" << " or " << opt::dminFiles[i] + "_combine.txt.gz" << std::endl;
        }
        dminBBAAscoreFiles.push_back(dminBBAAscoreFile);
        std::istream* dminstdErrFile;
        if (file_exists(opt::dminFiles[i] + "_combine_stderr.txt")) {
            dminstdErrFile = createReader((opt::dminFiles[i] + "_combine_stderr.txt").c_str());
        } else if(file_exists(opt::dminFiles[i] + "_combine_stderr.txt.gz")) {
            dminstdErrFile = createReader((opt::dminFiles[i] + "_combine_stderr.txt.gz").c_str());
        } else {
            std::cerr << "Can't fine the file: " << opt::dminFiles[i] + "_combine_stderr.txt" << " or " << opt::dminFiles[i] + "_combine_stderr.txt.gz" << std::endl;
        }
        dminstdErrFiles.push_back(dminstdErrFile);
        std::cerr << "Reading file " << opt::dminFiles[i] << std::endl;
    }
    
    
    // Now get the standard error values
    std::ofstream* outFileBBAA = new std::ofstream(opt::runName + "_BBAA.txt"); std::ofstream* outFileDmin = new std::ofstream(opt::runName + "_Dmin.txt");
    std::vector<double> BBAA_local_Ds; std::vector<double> ABBA_local_Ds; std::vector<double> BABA_local_Ds;
    string s1; string s2; string s3;
    double BBAAtotal = 0; double ABBAtotal = 0; double BABAtotal = 0;
    bool allDone = false;
    int processedTriosNumber = 0;
    do {
        processedTriosNumber++;
        if (processedTriosNumber % 10000 == 0) {
            //durationOverall = ( std::clock() - start ) / (double) CLOCKS_PER_SEC;
            std::cerr << "Processed " << processedTriosNumber << " trios" << std::endl;
            //std::cerr << "GettingCounts " << durationGettingCounts << " calculation " << durationCalculation << "secs" << std::endl;
        }
        if (opt::subsetStart != -1) {
            if (processedTriosNumber < opt::subsetStart) {
                for (int i = 0; i < dminBBAAscoreFiles.size(); i++) { getline(*dminBBAAscoreFiles[i], line); }
                for (int i = 0; i < dminstdErrFiles.size(); i++) { getline(*dminstdErrFiles[i], line); }
                continue;
            }
            if (processedTriosNumber > (opt::subsetStart+opt::subsetLength)) {
                std::cerr << "DONE" << std::endl; break;
            }
        }
        for (int i = 0; i < dminBBAAscoreFiles.size(); i++) {
            if (getline(*dminBBAAscoreFiles[i], line)) {
                std::vector<string> patternCounts = split(line, '\t');
                assert(patternCounts.size() == 6);
                if (i == 0) {
                    s1 = patternCounts[0];
                    s2 = patternCounts[1];
                    s3 = patternCounts[2];
                } else {
                    assert(s1 == patternCounts[0]); assert(s2 == patternCounts[1]); assert(s3 == patternCounts[2]);
                }
                double BBAA = stringToDouble(patternCounts[3]);
                double BABA = stringToDouble(patternCounts[4]);
                double ABBA = stringToDouble(patternCounts[5]);
                BBAAtotal += BBAA; ABBAtotal += ABBA; BABAtotal += BABA;
            }
        }
        //std::cerr << "ABBAtotal = " << ABBAtotal << std::endl;
        //std::cerr << "BABAtotal = " << BABAtotal << std::endl;
        double Dnum1 = ABBAtotal - BABAtotal; // assert(Dnum1 == Dnums[i][0]);
        double Dnum2 = ABBAtotal - BBAAtotal; // assert(Dnum2 == Dnums[i][1]);
        double Dnum3 = BBAAtotal - BABAtotal; // assert(Dnum3 == Dnums[i][2]);
        double Ddenom1 = ABBAtotal + BABAtotal; // assert(Ddenom1 == Ddenoms[i][0]);
        double Ddenom2 = ABBAtotal + BBAAtotal; // assert(Ddenom2 == Ddenoms[i][1]);
        double Ddenom3 = BBAAtotal + BABAtotal; // assert(Ddenom3 == Ddenoms[i][2]);
        //std::cerr << "Dnum1 = " << Dnum1 << std::endl;
        //std::cerr << "Ddenom1 = " << Ddenom1 << std::endl;
        double D1 = Dnum1/Ddenom1; double D2 = Dnum2/Ddenom2; double D3 = Dnum3/Ddenom3;
        //std::cerr << "D1 = " << D1 << std::endl;
        for (int i = 0; i < dminstdErrFiles.size(); i++) {
            if (getline(*dminstdErrFiles[i], line)) {
                std::vector<string> localDs = split(line, '\t');
                //assert(localDs.size() == 3 || localDs.size() == 0);
                if (localDs.size() == 3) {
                    std::vector<string> BBAA_D_strings = split(localDs[0], ',');
                    std::vector<string> BABA_D_strings = split(localDs[1], ',');
                    std::vector<string> ABBA_D_strings = split(localDs[2], ',');
                    for (int j = 0; j < BBAA_D_strings.size(); j++) {
                        //std::cerr << "BBAA_D_strings[j] = " << BBAA_D_strings[j] << std::endl;
                        double thisBBAA_localD = stringToDouble(BBAA_D_strings[j]);
                        if (!std::isnan(thisBBAA_localD)) BBAA_local_Ds.push_back(thisBBAA_localD);
                       // std::cerr << "BABA_D_strings[j] = " << BABA_D_strings[j] << std::endl;
                        double thisBABA_localD = stringToDouble(BABA_D_strings[j]);
                        if (!std::isnan(thisBABA_localD)) BABA_local_Ds.push_back(thisBABA_localD);
                        //std::cerr << "ABBA_D_strings[j] = " << ABBA_D_strings[j] << std::endl;
                        double thisABBA_localD = stringToDouble(ABBA_D_strings[j]);
                        if (!std::isnan(thisABBA_localD)) ABBA_local_Ds.push_back(thisABBA_localD);
                    }
                } else {
                    print_vector(localDs,std::cerr);
                }
            }
        }
        if (BBAA_local_Ds.size() == 0 || BABA_local_Ds.size() == 0 || ABBA_local_Ds.size() == 0) { // no info to estimate the standard error; probably all lines have been processed
            allDone = true; break;
        }
       // std::cerr << "D1 = " << D1 << std::endl;
        //print_vector(BBAA_local_Ds, std::cerr);
        double BBAAstdErr = jackknive_std_err(BBAA_local_Ds);
        //print_vector(BABA_local_Ds, std::cerr);
        double BABAstdErr = jackknive_std_err(BABA_local_Ds);
        //print_vector(ABBA_local_Ds, std::cerr);
        //std::cerr << "D1 = " << D1 << std::endl;
        double ABBAstdErr = jackknive_std_err(ABBA_local_Ds);
        //std::cerr << "D1 = " << D1 << std::endl;
        //std::cerr << "BBAAstdErr" << BBAAstdErr << std::endl;
        double D1_Z = fabs(D1)/BBAAstdErr; double D2_Z = fabs(D2)/BABAstdErr;
        double D3_Z = fabs(D3)/ABBAstdErr;
        //std::cerr << "D1_Z = " << D1_Z << std::endl;
        if (s1 == "Altcal" && s2 == "Altshe" && s3 == "Asplep") {
            std::cerr << "D1_Z = " << D1_Z << std::endl;
            std::cerr << "BBAAstdErr = " << BBAAstdErr << std::endl;
            print_vector(BBAA_local_Ds, std::cerr);
            std::cerr << "ABBAstdErr = " << ABBAstdErr << std::endl;
            std::cerr << "BABAstdErr = " << BABAstdErr << std::endl;
            std::cerr << "ABBAtotal = " << ABBAtotal << std::endl;
            std::cerr << "BABAtotal = " << BABAtotal << std::endl;
            std::cerr << "BBAAtotal = " << BBAAtotal << std::endl;
        }

        
        // Find which topology is in agreement with the counts of the BBAA, BABA, and ABBA patterns
        if (BBAAtotal >= BABAtotal && BBAAtotal >= ABBAtotal) {
            if (D1 >= 0)
                *outFileBBAA << s1 << "\t" << s2 << "\t" << s3;
            else
                *outFileBBAA << s2 << "\t" << s1 << "\t" << s3;
            *outFileBBAA << "\t" << fabs(D1) << "\t" << D1_Z << "\t";
            *outFileBBAA << BBAAtotal << "\t" << BABAtotal << "\t" << ABBAtotal << std::endl;
        } else if (BABAtotal >= BBAAtotal && BABAtotal >= ABBAtotal) {
            if (D2 >= 0)
                *outFileBBAA << s1 << "\t" << s3 << "\t" << s2;
            else
                *outFileBBAA << s3 << "\t" << s1 << "\t" << s2;
            *outFileBBAA << "\t" << fabs(D2) << "\t" << D2_Z << "\t";
            *outFileBBAA << BABAtotal << "\t" << BBAAtotal << "\t" << ABBAtotal << std::endl;
        } else if (ABBAtotal >= BBAAtotal && ABBAtotal >= BABAtotal) {
            if (D3 >= 0)
                *outFileBBAA << s3 << "\t" << s2 << "\t" << s1;
            else
                *outFileBBAA << s2 << "\t" << s3 << "\t" << s1;
            *outFileBBAA << "\t" << fabs(D3) << "\t" << D3_Z << "\t";
            *outFileBBAA << ABBAtotal << "\t" << BABAtotal << "\t" << BBAAtotal << std::endl;
        }
        
        // Find Dmin:
        if (fabs(D1) <= fabs(D2) && fabs(D1) <= fabs(D3)) { // (P3 == S3)
            if (D1 >= 0)
                *outFileDmin << s1 << "\t" << s2 << "\t" << s3 << "\t" << D1 << "\t" << D1_Z << "\t" << std::endl;
            else
                *outFileDmin << s1 << "\t" << s2 << "\t" << s3 << "\t" << fabs(D1) << "\t" << D1_Z << "\t"<< std::endl;
        } else if (fabs(D2) <= fabs(D1) && fabs(D2) <= fabs(D3)) { // (P3 == S2)
            if (D2 >= 0)
                *outFileDmin << s1 << "\t" << s3 << "\t" << s2 << "\t" << D2 << "\t" << D2_Z << "\t"<< std::endl;
            else
                *outFileDmin << s3 << "\t" << s1 << "\t" << s2 << "\t" << fabs(D2) << "\t" << D2_Z << "\t"<< std::endl;
        } else if (fabs(D3) <= fabs(D1) && fabs(D3) <= fabs(D2)) { // (P3 == S1)
            if (D3 >= 0)
                *outFileDmin << s3 << "\t" << s2 << "\t" << s1 << "\t" << D3 << "\t" << D3_Z << "\t"<< std::endl;
            else
                *outFileDmin << s2 << "\t" << s3 << "\t" << s1 << "\t" << fabs(D3) << "\t" << D3_Z << "\t" << std::endl;;
        }
        
        BBAA_local_Ds.clear(); ABBA_local_Ds.clear(); BABA_local_Ds.clear();
        BBAAtotal = 0; ABBAtotal = 0; BABAtotal = 0;
    } while(!allDone);
  
    
    
    /*
    for (int i = 0; i != trios.size(); i++) { //
        // Get the standard error values:
        double D1stdErr = jackknive_std_err(regionDs[i][0]); double D2stdErr = jackknive_std_err(regionDs[i][1]);
        double D3stdErr = jackknive_std_err(regionDs[i][2]);
        // Get the D values
        //Dnums[i][0] = ABBAtotals[i] - BABAtotals[i]; Dnums[i][1] = ABBAtotals[i] - BBAAtotals[i]; Dnums[i][2] = BBAAtotals[i] - BABAtotals[i];
        double Dnum1 = ABBAtotals[i] - BABAtotals[i]; // assert(Dnum1 == Dnums[i][0]);
        double Dnum2 = ABBAtotals[i] - BBAAtotals[i]; // assert(Dnum2 == Dnums[i][1]);
        double Dnum3 = BBAAtotals[i] - BABAtotals[i]; // assert(Dnum3 == Dnums[i][2]);
        // Ddenoms[i][0] = ABBAtotals[i] + BABAtotals[i]; Ddenoms[i][1] = ABBAtotals[i] + BBAAtotals[i]; Ddenoms[i][2] = BBAAtotals[i] + BABAtotals[i];
        double Ddenom1 = ABBAtotals[i] + BABAtotals[i]; // assert(Ddenom1 == Ddenoms[i][0]);
        double Ddenom2 = ABBAtotals[i] + BBAAtotals[i]; // assert(Ddenom2 == Ddenoms[i][1]);
        double Ddenom3 = BBAAtotals[i] + BABAtotals[i]; // assert(Ddenom3 == Ddenoms[i][2]);
        double D1 = Dnum1/Ddenom1; double D2 = Dnum2/Ddenom2; double D3 = Dnum3/Ddenom3;
        // Get the Z-scores
        double D1_Z = abs(D1)/D1stdErr; double D2_Z = abs(D2)/D2stdErr;
        double D3_Z = abs(D3)/D3stdErr;
        
        
        // Find which topology is in agreement with the counts of the BBAA, BABA, and ABBA patterns
        if (BBAAtotals[i] >= BABAtotals[i] && BBAAtotals[i] >= ABBAtotals[i]) {
            if (D1 >= 0)
                *outFileBBAA << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2];
            else
                *outFileBBAA << trios[i][1] << "\t" << trios[i][0] << "\t" << trios[i][2];
            *outFileBBAA << "\t" << abs(D1) << "\t" << D1_Z << "\t";
            *outFileBBAA << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        } else if (BABAtotals[i] >= BBAAtotals[i] && BABAtotals[i] >= ABBAtotals[i]) {
            if (D2 >= 0)
                *outFileBBAA << trios[i][0] << "\t" << trios[i][2] << "\t" << trios[i][1];
            else
                *outFileBBAA << trios[i][2] << "\t" << trios[i][0] << "\t" << trios[i][1];
            *outFileBBAA << "\t" << abs(D2) << "\t" << D2_Z << "\t";
            *outFileBBAA << BABAtotals[i] << "\t" << BBAAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        } else if (ABBAtotals[i] >= BBAAtotals[i] && ABBAtotals[i] >= BABAtotals[i]) {
            if (D3 >= 0)
                *outFileBBAA << trios[i][2] << "\t" << trios[i][1] << "\t" << trios[i][0];
            else
                *outFileBBAA << trios[i][1] << "\t" << trios[i][2] << "\t" << trios[i][0];
            *outFileBBAA << "\t" << abs(D3) << "\t" << D3_Z << "\t";
            *outFileBBAA << ABBAtotals[i] << "\t" << BABAtotals[i] << "\t" << BBAAtotals[i] << std::endl;
        }
        
        // Find Dmin:
        if (abs(D1) <= abs(D2) && abs(D1) <= abs(D3)) { // (P3 == S3)
            if (D1 >= 0)
                *outFileDmin << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << D1 << "\t" << D1_Z << "\t" << std::endl;
            else
                *outFileDmin << trios[i][1] << "\t" << trios[i][0] << "\t" << trios[i][2] << "\t" << abs(D1) << "\t" << D1_Z << "\t"<< std::endl;
            // if (BBAAtotals[i] < BABAtotals[i] || BBAAtotals[i] < ABBAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        } else if (abs(D2) <= abs(D1) && abs(D2) <= abs(D3)) { // (P3 == S2)
            if (D2 >= 0)
                *outFileDmin << trios[i][0] << "\t" << trios[i][2] << "\t" << trios[i][1] << "\t" << D2 << "\t" << D2_Z << "\t"<< std::endl;
            else
                *outFileDmin << trios[i][2] << "\t" << trios[i][0] << "\t" << trios[i][1] << "\t" << abs(D2) << "\t" << D2_Z << "\t"<< std::endl;
            // if (BABAtotals[i] < BBAAtotals[i] || BABAtotals[i] < ABBAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        } else if (abs(D3) <= abs(D1) && abs(D3) <= abs(D2)) { // (P3 == S1)
            if (D3 >= 0)
                *outFileDmin << trios[i][2] << "\t" << trios[i][1] << "\t" << trios[i][0] << "\t" << D3 << "\t" << D3_Z << "\t"<< std::endl;
            else
                *outFileDmin << trios[i][1] << "\t" << trios[i][2] << "\t" << trios[i][0] << "\t" << abs(D3) << "\t" << D3_Z << "\t" << std::endl;;
            // if (ABBAtotals[i] < BBAAtotals[i] || ABBAtotals[i] < BABAtotals[i])
            //     std::cerr << "\t" << "WARNING: Dmin tree different from DAF tree" << std::endl;
        }
        
        // Output a simple file that can be used for combining multiple local runs:
        *outFileCombine << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
        print_vector(regionDs[i][0], *outFileCombineStdErr, ',', false); *outFileCombineStdErr << "\t"; print_vector(regionDs[i][1], *outFileCombineStdErr, ',', false); *outFileCombineStdErr << "\t";
        print_vector(regionDs[i][2], *outFileCombineStdErr, ',',false); *outFileCombineStdErr << std::endl;
        
        //std::cerr << trios[i][0] << "\t" << trios[i][1] << "\t" << trios[i][2] << "\t" << D1 << "\t" << D2 << "\t" << D3 << "\t" << BBAAtotals[i] << "\t" << BABAtotals[i] << "\t" << ABBAtotals[i] << std::endl;
    }
     */
    return 0;
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x548, %rsp            # imm = 0x548
callq 0xa7bff
leaq 0x198(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, 0xc0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xb0(%rsp)
movq %rax, 0xa0(%rsp)
movapd %xmm0, 0x90(%rsp)
movq 0x5e820(%rip), %rax     # 0x103d68
cmpq %rax, 0x5e821(%rip)     # 0x103d70
je 0xa5c4d
leaq 0x10(%rsp), %r14
movl $0x8, %r13d
xorl %ebp, %ebp
movq %rsp, %rbx
leaq 0x2f8(%rsp), %r15
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x38384(%rip), %rsi     # 0xdd913
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
movl $0x8, %edx
callq 0x8860
movq 0x2f8(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x318(%rsp,%rax), %r12d
movq %r15, %rdi
callq 0x8130
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa55d7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa5784
movq 0x5e781(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x387d9(%rip), %rsi     # 0xddde2
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
movl $0x8, %edx
callq 0x8860
movq 0x2f8(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x318(%rsp,%rax), %r12d
movq %r15, %rdi
callq 0x8130
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa5651
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa57d2
movl $0x15, %edx
movq 0x5c982(%rip), %rdi     # 0x101fe8
leaq 0x38785(%rip), %rsi     # 0xdddf2
callq 0x84e0
movq 0x5e6ef(%rip), %rax     # 0x103d68
leaq 0x308(%rsp), %rcx
movq %rcx, 0x2f8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2ba06
movq %r15, %rdi
leaq 0x3826c(%rip), %rsi     # 0xdd913
callq 0x88c0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x5c925(%rip), %rdi     # 0x101fe8
callq 0x84e0
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3872e(%rip), %rsi     # 0xdde08
callq 0x84e0
movq 0x5e682(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x386da(%rip), %rsi     # 0xddde2
callq 0x88c0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r12, %rdi
callq 0x84e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r12, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa575e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa585e
movq 0x308(%rsp), %rsi
jmp 0xa5856
movq 0x5e5dd(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x38166(%rip), %rsi     # 0xdd913
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
leaq 0x60(%rsp), %rdx
callq 0x287de
movq %r15, %rdi
movl $0x8, %esi
callq 0x500af
jmp 0xa581e
movq 0x5e58f(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x385e7(%rip), %rsi     # 0xddde2
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
leaq 0x60(%rsp), %rdx
callq 0x287de
movq %r15, %rdi
movl $0x8, %esi
callq 0x500af
movq %rax, 0x28(%rsp)
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa5848
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa585e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0xa5883
movq 0x28(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0x98(%rsp)
jmp 0xa5895
leaq 0x90(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0xa80ca
movq 0x5e4cc(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x38062(%rip), %rsi     # 0xdd920
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
movl $0x8, %edx
callq 0x8860
movq 0x2f8(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x318(%rsp,%rax), %r12d
movq %r15, %rdi
callq 0x8130
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa5906
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa5ab3
movq 0x5e452(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x384d5(%rip), %rsi     # 0xdde0d
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
movl $0x8, %edx
callq 0x8860
movq 0x2f8(%rsp), %rax
movq -0x18(%rax), %rax
movl 0x318(%rsp,%rax), %r12d
movq %r15, %rdi
callq 0x8130
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa5980
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa5b04
movl $0x15, %edx
movq 0x5c653(%rip), %rdi     # 0x101fe8
leaq 0x38456(%rip), %rsi     # 0xdddf2
callq 0x84e0
movq 0x5e3c0(%rip), %rax     # 0x103d68
leaq 0x308(%rsp), %rcx
movq %rcx, 0x2f8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2ba06
movq %r15, %rdi
leaq 0x37f4a(%rip), %rsi     # 0xdd920
callq 0x88c0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x5c5f6(%rip), %rdi     # 0x101fe8
callq 0x84e0
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x383ff(%rip), %rsi     # 0xdde08
callq 0x84e0
movq 0x5e353(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x383d6(%rip), %rsi     # 0xdde0d
callq 0x88c0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r12, %rdi
callq 0x84e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r12, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa5a8d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa5b93
movq 0x308(%rsp), %rsi
jmp 0xa5b8b
movq 0x5e2ae(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x37e44(%rip), %rsi     # 0xdd920
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
leaq 0xe0(%rsp), %rdx
callq 0x287de
movq %r15, %rdi
movl $0x8, %esi
callq 0x500af
jmp 0xa5b53
movq 0x5e25d(%rip), %rax     # 0x103d68
movq %r14, (%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
leaq 0x382e0(%rip), %rsi     # 0xdde0d
callq 0x88c0
movq (%rsp), %rsi
movq %r15, %rdi
leaq 0xe0(%rsp), %rdx
callq 0x287de
movq %r15, %rdi
movl $0x8, %esi
callq 0x500af
movq %rax, 0x60(%rsp)
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa5b7d
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa5b93
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0xa5bb8
movq 0x60(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0xb8(%rsp)
jmp 0xa5bca
leaq 0xb0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xa80ca
movl $0xd, %edx
movq 0x5c412(%rip), %rdi     # 0x101fe8
leaq 0x38247(%rip), %rsi     # 0xdde24
callq 0x84e0
movq 0x5e17f(%rip), %rax     # 0x103d68
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
movq 0x5c3ef(%rip), %rdi     # 0x101fe8
callq 0x84e0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %r12, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
incq %rbp
movq 0x5e13e(%rip), %rcx     # 0x103d70
movq 0x5e12f(%rip), %rax     # 0x103d68
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %r13
cmpq %rbp, %rcx
ja 0xa556d
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, %rbx
leaq 0x308(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x5e113(%rip), %rsi     # 0x103d80
movq 0x5e114(%rip), %rdx     # 0x103d88
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
movq %rbx, 0x1a8(%rsp)
callq 0x2ba06
leaq 0x37c6c(%rip), %rsi     # 0xdd8ff
leaq 0x2f8(%rsp), %rdi
callq 0x88c0
leaq 0x2f8(%rsp), %rsi
movq %rbx, %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa5cda
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x48(%rsp)
leaq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
movq %rax, (%rdi)
movq 0x5e07d(%rip), %rsi     # 0x103d80
movq 0x5e07e(%rip), %rdx     # 0x103d88
addq %rsi, %rdx
callq 0x2ba06
leaq 0x37bf0(%rip), %rsi     # 0xdd909
leaq 0x2f8(%rsp), %rdi
callq 0x88c0
leaq 0x2f8(%rsp), %rsi
movq 0x48(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa5d62
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %ebx, %ebx
leaq 0x60(%rsp), %rax
movq %rbx, 0x10(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rax)
leaq 0xe0(%rsp), %rax
movq %rbx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x120(%rsp), %rax
movq %rbx, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x2f8(%rsp), %rcx
leaq 0x308(%rsp), %rax
movq %rax, (%rcx)
movq %rbx, 0x8(%rcx)
movb %bl, 0x10(%rcx)
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rbx, -0x8(%rax)
movb %bl, (%rax)
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rbx, -0x8(%rax)
movb %bl, (%rax)
leaq 0x220(%rsp), %rbp
leaq 0x200(%rsp), %r12
leaq 0x1e0(%rsp), %r15
leal 0x1(%rbx), %eax
movl %eax, 0x24(%rsp)
imull $0x3afb7e91, %eax, %eax # imm = 0x3AFB7E91
rorl $0x4, %eax
cmpl $0x68db8, %eax          # imm = 0x68DB8
ja 0xa5e63
movl $0xa, %edx
movq 0x5c1e0(%rip), %rdi     # 0x101fe8
leaq 0x2c157(%rip), %rsi     # 0xd1f66
callq 0x84e0
movq 0x5c1cd(%rip), %rdi     # 0x101fe8
movl 0x24(%rsp), %esi
callq 0x8810
movq %rax, %r13
movl $0x6, %edx
movq %rax, %rdi
leaq 0x37ffc(%rip), %rsi     # 0xdde32
callq 0x84e0
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
movl 0x5c74f(%rip), %eax     # 0x1025b8
cmpl $-0x1, %eax
je 0xa5f5d
cmpl %eax, 0x24(%rsp)
jge 0xa5f4f
movq 0x90(%rsp), %rax
cmpq %rax, 0x98(%rsp)
je 0xa5edb
xorl %ebx, %ebx
movq (%rax,%rbx,8), %r13
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r13, %rdi
leaq 0x188(%rsp), %rsi
callq 0x8870
incq %rbx
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
ja 0xa5e90
movq 0xb0(%rsp), %rax
movl 0x24(%rsp), %ecx
movl %ecx, %ebx
cmpq %rax, 0xb8(%rsp)
je 0xa5de5
xorl %ebx, %ebx
movq (%rax,%rbx,8), %r13
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r13, %rdi
leaq 0x188(%rsp), %rsi
callq 0x8870
incq %rbx
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
ja 0xa5ef9
movl 0x24(%rsp), %eax
movl %eax, %ebx
jmp 0xa5de5
addl 0x5c667(%rip), %eax     # 0x1025bc
cmpl %eax, %ebx
jge 0xa75eb
movq 0x90(%rsp), %rax
cmpq %rax, 0x98(%rsp)
je 0xa628c
xorpd %xmm0, %xmm0
movapd %xmm0, 0x100(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x80(%rsp)
xorl %r14d, %r14d
movq (%rax,%r14,8), %r13
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r13, %rdi
leaq 0x188(%rsp), %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xa6267
leaq 0xc8(%rsp), %rdi
leaq 0x188(%rsp), %rsi
movl $0x9, %edx
callq 0x4d650
movq 0xc8(%rsp), %r13
movq 0xd0(%rsp), %rax
subq %r13, %rax
cmpq $0xc0, %rax
jne 0xa7782
testq %r14, %r14
je 0xa6094
movq 0x300(%rsp), %rdx
cmpq 0x8(%r13), %rdx
jne 0xa7763
testq %rdx, %rdx
je 0xa6040
movq (%r13), %rsi
movq 0x2f8(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xa7763
movq 0x8(%rsp), %rdx
cmpq 0x28(%r13), %rdx
jne 0xa7751
testq %rdx, %rdx
je 0xa6069
movq 0x20(%r13), %rsi
movq (%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xa7751
movq 0x30(%rsp), %rdx
cmpq 0x48(%r13), %rdx
jne 0xa775a
testq %rdx, %rdx
je 0xa60d6
movq 0x40(%r13), %rsi
movq 0x28(%rsp), %rdi
callq 0x8490
testl %eax, %eax
je 0xa60d6
jmp 0xa775a
leaq 0x2f8(%rsp), %rdi
movq %r13, %rsi
callq 0x8270
movq 0xc8(%rsp), %rsi
addq $0x20, %rsi
movq %rsp, %rdi
callq 0x8270
movq 0xc8(%rsp), %rsi
addq $0x40, %rsi
leaq 0x28(%rsp), %rdi
callq 0x8270
movq 0xc8(%rsp), %r13
leaq 0x290(%rsp), %rax
movq %rax, 0x280(%rsp)
movq 0x60(%r13), %rsi
movq 0x68(%r13), %rdx
addq %rsi, %rdx
leaq 0x280(%rsp), %rbx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
callq 0x4d578
movapd %xmm0, 0x50(%rsp)
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0xa6134
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xc8(%rsp), %rax
leaq 0x270(%rsp), %rcx
movq %rcx, 0x260(%rsp)
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
leaq 0x260(%rsp), %rbx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
callq 0x4d578
movapd %xmm0, 0x170(%rsp)
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0xa61a3
movq 0x270(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xc8(%rsp), %rax
leaq 0x250(%rsp), %rcx
movq %rcx, 0x240(%rsp)
movq 0xa0(%rax), %rsi
movq 0xa8(%rax), %rdx
addq %rsi, %rdx
leaq 0x240(%rsp), %rbx
movq %rbx, %rdi
callq 0x2ba06
movq %rbx, %rdi
callq 0x4d578
movapd %xmm0, %xmm1
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xa621f
movq 0x250(%rsp), %rsi
incq %rsi
movsd %xmm1, 0x110(%rsp)
callq 0x8480
movsd 0x110(%rsp), %xmm1
movapd 0x80(%rsp), %xmm0
addsd %xmm1, %xmm0
movapd %xmm0, 0x80(%rsp)
movapd 0x50(%rsp), %xmm1
unpcklpd 0x170(%rsp), %xmm1      # xmm1 = xmm1[0],mem[0]
movapd 0x100(%rsp), %xmm0
addpd %xmm1, %xmm0
movapd %xmm0, 0x100(%rsp)
leaq 0xc8(%rsp), %rdi
callq 0x2e784
incq %r14
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r14, %rcx
ja 0xa5f90
jmp 0xa62a6
xorpd %xmm0, %xmm0
movapd %xmm0, 0x100(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x80(%rsp)
movq 0xb0(%rsp), %rax
cmpq %rax, 0xb8(%rsp)
je 0xa6647
xorl %r14d, %r14d
movq (%rax,%r14,8), %r13
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r13, %rdi
leaq 0x188(%rsp), %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xa6624
leaq 0xc8(%rsp), %rdi
leaq 0x188(%rsp), %rsi
movl $0x9, %edx
callq 0x4d650
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rax
subq %rsi, %rax
cmpq $0x60, %rax
jne 0xa65de
leaq 0x1c8(%rsp), %rdi
movl $0x2c, %edx
callq 0x4d650
movq 0xc8(%rsp), %rsi
addq $0x20, %rsi
leaq 0x518(%rsp), %rdi
movl $0x2c, %edx
callq 0x4d650
movq 0xc8(%rsp), %rsi
addq $0x40, %rsi
leaq 0x500(%rsp), %rdi
movl $0x2c, %edx
callq 0x4d650
movq 0x1c8(%rsp), %rax
cmpq %rax, 0x1d0(%rsp)
je 0xa65ba
movl $0x8, %r13d
xorl %ebx, %ebx
leaq 0x230(%rsp), %rcx
movq %rcx, 0x220(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbp, %rdi
callq 0x2ba06
movq %rbp, %rdi
callq 0x4d578
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xa63fd
movq 0x230(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x50(%rsp)
callq 0x8480
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x2f0(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa6439
movq 0x68(%rsp), %rsi
cmpq 0x70(%rsp), %rsi
je 0xa6427
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x68(%rsp)
jmp 0xa6439
leaq 0x60(%rsp), %rdi
leaq 0x2f0(%rsp), %rdx
callq 0x79b8e
movq 0x518(%rsp), %rax
leaq 0x210(%rsp), %rcx
movq %rcx, 0x200(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x2ba06
movq %r12, %rdi
callq 0x4d578
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xa649e
movq 0x210(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x50(%rsp)
callq 0x8480
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x2e8(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa64e6
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0xa64d1
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x128(%rsp)
jmp 0xa64e6
leaq 0x120(%rsp), %rdi
leaq 0x2e8(%rsp), %rdx
callq 0x79b8e
movq 0x500(%rsp), %rax
leaq 0x1f0(%rsp), %rcx
movq %rcx, 0x1e0(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2ba06
movq %r15, %rdi
callq 0x4d578
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0xa654b
movq 0x1f0(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x50(%rsp)
callq 0x8480
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x2e0(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa6593
movq 0xe8(%rsp), %rsi
cmpq 0xf0(%rsp), %rsi
je 0xa657e
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0xa6593
leaq 0xe0(%rsp), %rdi
leaq 0x2e0(%rsp), %rdx
callq 0x79b8e
incq %rbx
movq 0x1c8(%rsp), %rax
movq 0x1d0(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %r13
cmpq %rbx, %rcx
ja 0xa63a0
leaq 0x500(%rsp), %rdi
callq 0x2e784
leaq 0x518(%rsp), %rdi
callq 0x2e784
leaq 0x1c8(%rsp), %rdi
jmp 0xa6612
leaq 0x530(%rsp), %rbx
movq %rbx, %rdi
leaq 0xc8(%rsp), %rsi
callq 0x2fc8e
movq %rbx, %rdi
movq 0x5b9e8(%rip), %rsi     # 0x101fe8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x36ba0
movq %rbx, %rdi
callq 0x2e784
leaq 0xc8(%rsp), %rdi
callq 0x2e784
incq %r14
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r14, %rcx
ja 0xa62bf
movq 0x68(%rsp), %rax
cmpq 0x60(%rsp), %rax
je 0xa7631
movq 0x128(%rsp), %rax
cmpq 0x120(%rsp), %rax
je 0xa7631
movq 0xe8(%rsp), %rax
cmpq 0xe0(%rsp), %rax
je 0xa7631
leaq 0x60(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0x140(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0x160(%rsp)
movq 0x1a8(%rsp), %rbx
leaq 0x2730f(%rip), %r14     # 0xcd9ca
leaq 0xe0(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0x150(%rsp)
movapd 0x80(%rsp), %xmm2
movapd %xmm2, %xmm3
unpcklpd %xmm2, %xmm3            # xmm3 = xmm3[0],xmm2[0]
movapd 0x100(%rsp), %xmm1
subpd %xmm1, %xmm3
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
movapd %xmm0, 0x50(%rsp)
movapd %xmm1, %xmm0
movsd %xmm2, %xmm0            # xmm0 = xmm2[0],xmm0[1]
unpcklpd %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0]
addpd %xmm0, %xmm1
divpd %xmm1, %xmm3
movapd %xmm3, 0x110(%rsp)
andpd 0x2c68e(%rip), %xmm3    # 0xd2db0
movapd %xmm3, 0x170(%rsp)
pshufd $0xee, %xmm3, %xmm0     # xmm0 = xmm3[2,3,2,3]
movdqa %xmm0, 0x2b0(%rsp)
divsd 0x140(%rsp), %xmm0
movapd %xmm0, 0x1b0(%rsp)
leaq 0x2f8(%rsp), %rdi
leaq 0x37775(%rip), %rsi     # 0xddecf
callq 0x8160
testl %eax, %eax
jne 0xa6a42
movq %rsp, %rdi
leaq 0x37765(%rip), %rsi     # 0xdded6
callq 0x8160
testl %eax, %eax
jne 0xa6a42
leaq 0x28(%rsp), %rdi
leaq 0x37753(%rip), %rsi     # 0xddedd
callq 0x8160
testl %eax, %eax
jne 0xa6a42
movl $0x7, %edx
movq 0x5b845(%rip), %rdi     # 0x101fe8
leaq 0x3773a(%rip), %rsi     # 0xddee4
callq 0x84e0
movq 0x5b832(%rip), %rdi     # 0x101fe8
movapd 0x1b0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movl $0xd, %edx
movq 0x5b7ee(%rip), %rdi     # 0x101fe8
leaq 0x376eb(%rip), %rsi     # 0xddeec
callq 0x84e0
movq 0x5b7db(%rip), %rdi     # 0x101fe8
movsd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
leaq 0x2c8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x37978
leaq 0x2c8(%rsp), %rdi
movq 0x5b782(%rip), %rsi     # 0x101fe8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x5af81
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa6892
movq 0x2d8(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movl $0xd, %edx
movq 0x5b74a(%rip), %rdi     # 0x101fe8
leaq 0x37655(%rip), %rsi     # 0xddefa
callq 0x84e0
movq 0x5b737(%rip), %rdi     # 0x101fe8
movsd 0x150(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movl $0xd, %edx
movq 0x5b6f3(%rip), %rdi     # 0x101fe8
leaq 0x3760c(%rip), %rsi     # 0xddf08
callq 0x84e0
movq 0x5b6e0(%rip), %rdi     # 0x101fe8
movsd 0x160(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movl $0xc, %edx
movq 0x5b69c(%rip), %rdi     # 0x101fe8
leaq 0x375c3(%rip), %rsi     # 0xddf16
callq 0x84e0
movq 0x5b689(%rip), %rdi     # 0x101fe8
movapd 0x80(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movl $0xc, %edx
movq 0x5b645(%rip), %rdi     # 0x101fe8
leaq 0x37579(%rip), %rsi     # 0xddf23
callq 0x84e0
movq 0x5b632(%rip), %rdi     # 0x101fe8
movapd 0x50(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movl $0xc, %edx
movq 0x5b5f1(%rip), %rdi     # 0x101fe8
leaq 0x37532(%rip), %rsi     # 0xddf30
callq 0x84e0
movq 0x5b5de(%rip), %rdi     # 0x101fe8
movapd 0x100(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movapd 0x100(%rsp), %xmm1
movapd %xmm1, %xmm3
movapd 0x50(%rsp), %xmm2
subsd %xmm2, %xmm3
movapd %xmm2, %xmm0
addsd %xmm1, %xmm0
divsd %xmm0, %xmm3
movapd 0x170(%rsp), %xmm0
divsd 0x160(%rsp), %xmm0
movapd %xmm0, 0x160(%rsp)
movapd %xmm3, 0x2a0(%rsp)
movapd %xmm3, %xmm0
andpd 0x2c31b(%rip), %xmm0    # 0xd2db0
movapd %xmm0, 0x140(%rsp)
divsd 0x150(%rsp), %xmm0
movapd %xmm0, 0x150(%rsp)
ucomisd %xmm2, %xmm1
jb 0xa6b30
ucomisd 0x80(%rsp), %xmm1
jb 0xa6b30
movapd 0x110(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
ucomisd 0x2525a(%rip), %xmm0    # 0xcbd30
jae 0xa6c45
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
jmp 0xa6c94
movapd 0x50(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0xa6bb3
ucomisd 0x80(%rsp), %xmm0
jb 0xa6bb3
movapd 0x110(%rsp), %xmm0
ucomisd 0x251d8(%rip), %xmm0    # 0xcbd30
jae 0xa6d6d
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
jmp 0xa6dbd
movapd 0x80(%rsp), %xmm0
ucomisd 0x100(%rsp), %xmm0
jb 0xa6fcb
movapd 0x80(%rsp), %xmm0
ucomisd 0x50(%rsp), %xmm0
jb 0xa6fcb
movapd 0x2a0(%rsp), %xmm0
ucomisd 0x2513f(%rip), %xmm0    # 0xcbd30
jae 0xa6e95
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
jmp 0xa6ede
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x2b0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x1b0(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x100(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x50(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x80(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa6fb8
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x170(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x160(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x50(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x100(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x80(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa6fb8
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movl $0x1, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x150(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %rbx, %rdi
movapd 0x80(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x50(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x100(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movq (%rax), %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
movapd 0x170(%rsp), %xmm1
movapd 0x2b0(%rsp), %xmm0
ucomisd %xmm0, %xmm1
jb 0xa70f6
movapd 0x140(%rsp), %xmm2
ucomisd %xmm0, %xmm2
jb 0xa70f6
movapd 0x110(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
movapd %xmm0, 0x110(%rsp)
ucomisd 0x24d18(%rip), %xmm0    # 0xcbd30
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
jae 0xa730f
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x2b0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x1b0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7582
ucomisd %xmm1, %xmm0
jb 0xa7202
movapd 0x140(%rsp), %xmm0
ucomisd %xmm1, %xmm0
jb 0xa7202
movapd 0x110(%rsp), %xmm0
ucomisd 0x24c0c(%rip), %xmm0    # 0xcbd30
jae 0xa73d7
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x170(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x160(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7582
movapd 0x140(%rsp), %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
cmpnlepd %xmm1, %xmm0
movmskpd %xmm0, %eax
testl %eax, %eax
jne 0xa7595
movapd 0x2a0(%rsp), %xmm0
ucomisd 0x24aff(%rip), %xmm0    # 0xcbd30
jae 0xa74af
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x150(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7582
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x110(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x1b0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7582
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x110(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x160(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7582
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq 0x48(%rsp), %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %r13, %rdi
callq 0x84e0
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x2a0(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
movq %r13, %rdi
movapd 0x150(%rsp), %xmm0
callq 0x8730
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x84e0
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
movq 0x60(%rsp), %rax
cmpq %rax, 0x68(%rsp)
je 0xa75a6
movq %rax, 0x68(%rsp)
movq 0xe0(%rsp), %rax
cmpq %rax, 0xe8(%rsp)
je 0xa75c0
movq %rax, 0xe8(%rsp)
movq 0x120(%rsp), %rax
movl 0x24(%rsp), %ecx
movl %ecx, %ebx
cmpq %rax, 0x128(%rsp)
je 0xa5de5
movq %rax, 0x128(%rsp)
movl %ecx, %ebx
jmp 0xa5de5
movq 0x5a9f6(%rip), %rbx     # 0x101fe8
leaq 0x363c1(%rip), %rsi     # 0xdd9ba
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 0x5a9c4(%rip), %rdi     # 0x101fe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa764d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xa7668
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa768d
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xa76aa
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xa76c7
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa76de
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xa76fb
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xa7718
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0xa773d
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x548, %rsp            # imm = 0x548
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x36749(%rip), %rdi     # 0xddea1
jmp 0xa776a
leaq 0x36757(%rip), %rdi     # 0xddeb8
jmp 0xa776a
leaq 0x36720(%rip), %rdi     # 0xdde8a
leaq 0x366e2(%rip), %rsi     # 0xdde53
leaq 0x366f0(%rip), %rcx     # 0xdde68
movl $0x6e, %edx
callq 0x82c0
leaq 0x366b0(%rip), %rdi     # 0xdde39
leaq 0x366c3(%rip), %rsi     # 0xdde53
leaq 0x366d1(%rip), %rcx     # 0xdde68
movl $0x68, %edx
callq 0x82c0
movq %rax, %r15
movq 0x2c8(%rsp), %rdi
testq %rdi, %rdi
je 0xa7aeb
movq 0x2d8(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
jmp 0xa7aeb
jmp 0xa7a3a
jmp 0xa77d1
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa77fe
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa77fe
movq %rax, %r15
movl $0x200, %esi            # imm = 0x200
movq 0x48(%rsp), %rdi
jmp 0xa7b93
jmp 0xa7a2a
jmp 0xa7814
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa7841
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa7841
movq %rax, %r15
movl $0x200, %esi            # imm = 0x200
movq 0x1a8(%rsp), %rdi
jmp 0xa7b93
jmp 0xa7a2a
jmp 0xa7886
jmp 0xa790b
jmp 0xa790b
jmp 0xa7a2a
jmp 0xa7886
jmp 0xa790b
jmp 0xa790b
jmp 0xa7a2a
jmp 0xa7a2a
jmp 0xa7a2a
jmp 0xa7886
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa790e
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa790e
jmp 0xa790b
jmp 0xa790b
jmp 0xa790b
jmp 0xa790b
jmp 0xa78f6
jmp 0xa7924
jmp 0xa7a2a
jmp 0xa78f6
jmp 0xa78f6
jmp 0xa7a2a
jmp 0xa7924
jmp 0xa78f6
jmp 0xa7a3a
jmp 0xa7a3a
jmp 0xa7a3a
jmp 0xa790b
jmp 0xa790b
jmp 0xa790b
jmp 0xa790b
jmp 0xa7a2a
jmp 0xa7a2a
jmp 0xa7a2a
jmp 0xa78f6
movq %rax, %r15
jmp 0xa793d
jmp 0xa7a2a
jmp 0xa790b
jmp 0xa790b
jmp 0xa7a2a
jmp 0xa790b
movq %rax, %r15
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa7b98
movq 0x10(%rsp), %rsi
jmp 0xa795e
jmp 0xa7924
movq %rax, %r15
movq (%rsp), %rdi
cmpq %r14, %rdi
je 0xa793d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa7b98
movq 0x308(%rsp), %rsi
incq %rsi
jmp 0xa7b93
jmp 0xa7a3a
movq %rax, %r15
jmp 0xa7ac4
movq %rax, %r15
jmp 0xa7ad1
jmp 0xa7a22
movq %rax, %r15
leaq 0x530(%rsp), %rdi
jmp 0xa7ad9
jmp 0xa7a22
jmp 0xa7a3a
jmp 0xa7a22
movq %rax, %r15
movq 0x260(%rsp), %rdi
leaq 0x270(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ade
movq 0x270(%rsp), %rsi
jmp 0xa7a15
jmp 0xa7a22
movq %rax, %r15
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ade
movq 0x250(%rsp), %rsi
jmp 0xa7a15
jmp 0xa7a3a
jmp 0xa7a22
movq %rax, %r15
movq 0x280(%rsp), %rdi
leaq 0x290(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ade
movq 0x290(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa7ade
movq %rax, %r15
jmp 0xa7ade
movq %rax, %r15
jmp 0xa7b98
jmp 0xa7a3a
jmp 0xa7a3a
jmp 0xa7a3a
jmp 0xa7a3a
movq %rax, %r15
jmp 0xa7aeb
movq %rax, %r15
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ab7
movq 0x230(%rsp), %rsi
jmp 0xa7aa6
movq %rax, %r15
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ab7
movq 0x1f0(%rsp), %rsi
jmp 0xa7aa6
movq %rax, %r15
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xa7ab7
movq 0x210(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa7ab7
jmp 0xa7ab4
jmp 0xa7ab4
movq %rax, %r15
leaq 0x500(%rsp), %rdi
callq 0x2e784
leaq 0x518(%rsp), %rdi
callq 0x2e784
leaq 0x1c8(%rsp), %rdi
callq 0x2e784
leaq 0xc8(%rsp), %rdi
callq 0x2e784
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa7b07
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x8480
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0xa7b22
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa7b47
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xa7b64
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0xa7b81
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa7b98
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xa7bb5
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xa7bd2
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0xa7bf7
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x8480
movq %r15, %rdi
callq 0x8840