// File: /workspace/github_cpp_makefile_star2_O1/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 0xa8892
leaq 0x178(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb $0x0, (%rcx)
movq %rax, 0xe0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xd0(%rsp)
movq %rax, 0xc0(%rsp)
movapd %xmm0, 0xb0(%rsp)
movq 0x66c9c(%rip), %rax     # 0x10cd58
cmpq %rax, 0x66c9d(%rip)     # 0x10cd60
je 0xa67ee
leaq 0x18(%rsp), %r14
movl $0x8, %r13d
xorl %ebp, %ebp
leaq 0x8(%rsp), %rbx
leaq 0x2f8(%rsp), %r15
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3f21d(%rip), %rsi     # 0xe5323
callq 0x88c0
movq 0x8(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa6150
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa6303
movq 0x66bf8(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x4012d(%rip), %rsi     # 0xe62b0
callq 0x88c0
movq 0x8(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa61cd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa6356
movl $0x15, %edx
movq 0x64e06(%rip), %rdi     # 0x10afe8
leaq 0x400d7(%rip), %rsi     # 0xe62c0
callq 0x84e0
movq 0x66b63(%rip), %rax     # 0x10cd58
leaq 0x308(%rsp), %rcx
movq %rcx, 0x2f8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2e45c
movq %r15, %rdi
leaq 0x3f100(%rip), %rsi     # 0xe5323
callq 0x88c0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x64da9(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x40080(%rip), %rsi     # 0xe62d6
callq 0x84e0
movq 0x66af6(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x4002b(%rip), %rsi     # 0xe62b0
callq 0x88c0
movq 0x8(%rsp), %rsi
movq 0x10(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa62dd
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa63e8
movq 0x308(%rsp), %rsi
jmp 0xa63e0
movq 0x66a4e(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3eff6(%rip), %rsi     # 0xe5323
callq 0x88c0
movq 0x8(%rsp), %rsi
movq %r15, %rdi
leaq 0x80(%rsp), %rdx
callq 0x286de
movq %r15, %rdi
movl $0x8, %esi
callq 0x53224
jmp 0xa63a7
movq 0x669fb(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3ff30(%rip), %rsi     # 0xe62b0
callq 0x88c0
movq 0x8(%rsp), %rsi
movq %r15, %rdi
leaq 0x80(%rsp), %rdx
callq 0x286de
movq %r15, %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, 0x48(%rsp)
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa63d1
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa63e8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0xa640d
movq 0x48(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0xb8(%rsp)
jmp 0xa641f
leaq 0xb0(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0xa8d74
movq 0x66932(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3eee7(%rip), %rsi     # 0xe5330
callq 0x88c0
movq 0x8(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa6493
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa6646
movq 0x668b5(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3fe15(%rip), %rsi     # 0xe62db
callq 0x88c0
movq 0x8(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa6510
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %r12d, %r12d
je 0xa6699
movl $0x15, %edx
movq 0x64ac3(%rip), %rdi     # 0x10afe8
leaq 0x3fd94(%rip), %rsi     # 0xe62c0
callq 0x84e0
movq 0x66820(%rip), %rax     # 0x10cd58
leaq 0x308(%rsp), %rcx
movq %rcx, 0x2f8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2e45c
movq %r15, %rdi
leaq 0x3edca(%rip), %rsi     # 0xe5330
callq 0x88c0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x64a66(%rip), %rdi     # 0x10afe8
callq 0x84e0
movq %rax, %r12
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3fd3d(%rip), %rsi     # 0xe62d6
callq 0x84e0
movq 0x667b3(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3fd13(%rip), %rsi     # 0xe62db
callq 0x88c0
movq 0x8(%rsp), %rsi
movq 0x10(%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 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa6620
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa672e
movq 0x308(%rsp), %rsi
jmp 0xa6726
movq 0x6670b(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3ecc0(%rip), %rsi     # 0xe5330
callq 0x88c0
movq 0x8(%rsp), %rsi
movq %r15, %rdi
leaq 0x100(%rsp), %rdx
callq 0x286de
movq %r15, %rdi
movl $0x8, %esi
callq 0x53224
jmp 0xa66ea
movq 0x666b8(%rip), %rax     # 0x10cd58
movq %r14, 0x8(%rsp)
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x2e45c
movq %rbx, %rdi
leaq 0x3fc18(%rip), %rsi     # 0xe62db
callq 0x88c0
movq 0x8(%rsp), %rsi
movq %r15, %rdi
leaq 0x100(%rsp), %rdx
callq 0x286de
movq %r15, %rdi
movl $0x8, %esi
callq 0x53224
movq %rax, 0x80(%rsp)
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa6717
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa672e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xd8(%rsp), %rsi
cmpq 0xe0(%rsp), %rsi
je 0xa6756
movq 0x80(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, 0xd8(%rsp)
jmp 0xa676b
leaq 0xd0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0xa8d74
movl $0xd, %edx
movq 0x64871(%rip), %rdi     # 0x10afe8
leaq 0x3fb74(%rip), %rsi     # 0xe62f2
callq 0x84e0
movq 0x665ce(%rip), %rax     # 0x10cd58
movq -0x8(%rax,%r13), %rsi
movq (%rax,%r13), %rdx
movq 0x6484e(%rip), %rdi     # 0x10afe8
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 0x6658d(%rip), %rcx     # 0x10cd60
movq 0x6657e(%rip), %rax     # 0x10cd58
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %r13
cmpq %rbp, %rcx
ja 0xa60e3
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x28(%rsp)
leaq 0x308(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x66560(%rip), %rsi     # 0x10cd70
movq 0x66561(%rip), %rdx     # 0x10cd78
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
callq 0x2e45c
leaq 0x3eae1(%rip), %rsi     # 0xe530f
leaq 0x2f8(%rsp), %rdi
callq 0x88c0
leaq 0x2f8(%rsp), %rsi
movq 0x28(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa686f
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x200, %edi            # imm = 0x200
callq 0x8470
movq %rax, 0x68(%rsp)
leaq 0x2f8(%rsp), %rdi
movq %rbx, (%rdi)
movq 0x664e0(%rip), %rsi     # 0x10cd70
movq 0x664e1(%rip), %rdx     # 0x10cd78
addq %rsi, %rdx
callq 0x2e45c
leaq 0x3ea73(%rip), %rsi     # 0xe5319
leaq 0x2f8(%rsp), %rdi
callq 0x88c0
leaq 0x2f8(%rsp), %rsi
movq 0x68(%rsp), %rdi
movl $0x10, %edx
callq 0x88d0
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa68e7
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %r14d, %r14d
leaq 0x80(%rsp), %rax
movq %r14, 0x10(%rax)
xorpd %xmm0, %xmm0
movapd %xmm0, (%rax)
leaq 0x100(%rsp), %rax
movq %r14, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x120(%rsp), %rax
movq %r14, 0x10(%rax)
movapd %xmm0, (%rax)
leaq 0x2f8(%rsp), %rax
movq %rbx, (%rax)
movq %r14, 0x8(%rax)
movb %r14b, 0x10(%rax)
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r14, -0x8(%rax)
movb %r14b, (%rax)
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
movq %r14, -0x8(%rax)
movb %r14b, (%rax)
xorpd %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
movsd %xmm0, 0x30(%rsp)
movsd %xmm0, 0x40(%rsp)
leaq 0x200(%rsp), %r15
leaq 0x1e0(%rsp), %r12
leaq 0x1c0(%rsp), %r13
xorl %eax, %eax
movq %rax, 0x138(%rsp)
movl %r14d, %ebx
leal 0x1(%rbx), %r14d
imull $0x3afb7e91, %r14d, %eax # imm = 0x3AFB7E91
rorl $0x4, %eax
cmpl $0x68db8, %eax          # imm = 0x68DB8
ja 0xa6a07
movl $0xa, %edx
movq 0x6463b(%rip), %rdi     # 0x10afe8
leaq 0x31a72(%rip), %rsi     # 0xd8426
callq 0x84e0
movq 0x64628(%rip), %rdi     # 0x10afe8
movl %r14d, %esi
callq 0x8810
movq %rax, %rbp
movl $0x6, %edx
movq %rax, %rdi
leaq 0x3f926(%rip), %rsi     # 0xe6300
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl 0x64bab(%rip), %eax     # 0x10b5b8
cmpl $-0x1, %eax
je 0xa6af8
cmpl %eax, %r14d
jge 0xa6aea
movq 0xb0(%rsp), %rax
cmpq %rax, 0xb8(%rsp)
je 0xa6a7e
xorl %ebx, %ebx
movq (%rax,%rbx,8), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbp, %rdi
leaq 0x168(%rsp), %rsi
callq 0x8870
incq %rbx
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
ja 0xa6a33
movq 0xd0(%rsp), %rax
cmpq %rax, 0xd8(%rsp)
je 0xa6add
xorl %ebx, %ebx
movq (%rax,%rbx,8), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbp, %rdi
leaq 0x168(%rsp), %rsi
callq 0x8870
incq %rbx
movq 0xd0(%rsp), %rax
movq 0xd8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rbx, %rcx
ja 0xa6a92
movq 0x138(%rsp), %rax
jmp 0xa827f
addl 0x64acc(%rip), %eax     # 0x10b5bc
cmpl %eax, %ebx
jge 0xa8289
movq %r14, 0x188(%rsp)
movq 0xb0(%rsp), %rax
cmpq %rax, 0xb8(%rsp)
je 0xa6e0a
xorl %r14d, %r14d
leaq 0x2e8(%rsp), %rbx
movq (%rax,%r14,8), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbp, %rdi
leaq 0x168(%rsp), %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xa6de7
leaq 0xe8(%rsp), %rdi
leaq 0x168(%rsp), %rsi
movl $0x9, %edx
callq 0x50624
movq 0xe8(%rsp), %rbp
movq 0xf0(%rsp), %rax
subq %rbp, %rax
cmpq $0xc0, %rax
jne 0xa8427
testq %r14, %r14
je 0xa6c26
movq 0x300(%rsp), %rdx
cmpq 0x8(%rbp), %rdx
jne 0xa8408
testq %rdx, %rdx
je 0xa6bd1
movq (%rbp), %rsi
movq 0x2f8(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xa8408
movq 0x10(%rsp), %rdx
cmpq 0x28(%rbp), %rdx
jne 0xa83f6
testq %rdx, %rdx
je 0xa6bfb
movq 0x20(%rbp), %rsi
movq 0x8(%rsp), %rdi
callq 0x8490
testl %eax, %eax
jne 0xa83f6
movq 0x50(%rsp), %rdx
cmpq 0x48(%rbp), %rdx
jne 0xa83ff
testq %rdx, %rdx
je 0xa6c62
movq 0x40(%rbp), %rsi
movq 0x48(%rsp), %rdi
callq 0x8490
testl %eax, %eax
je 0xa6c62
jmp 0xa83ff
leaq 0x2f8(%rsp), %rdi
movq %rbp, %rsi
callq 0x8270
movq 0xe8(%rsp), %rsi
addq $0x20, %rsi
leaq 0x8(%rsp), %rdi
callq 0x8270
movq 0xe8(%rsp), %rsi
addq $0x40, %rsi
leaq 0x48(%rsp), %rdi
callq 0x8270
movq 0xe8(%rsp), %rax
movq %rbx, 0x2d8(%rsp)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
leaq 0x2d8(%rsp), %rbp
movq %rbp, %rdi
callq 0x2e45c
movq %rbp, %rdi
callq 0x5054c
movsd %xmm0, 0x70(%rsp)
movq 0x2d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa6cb8
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xe8(%rsp), %rax
leaq 0x250(%rsp), %rcx
movq %rcx, 0x240(%rsp)
movq 0x80(%rax), %rsi
movq 0x88(%rax), %rdx
addq %rsi, %rdx
leaq 0x240(%rsp), %rbp
movq %rbp, %rdi
callq 0x2e45c
movq %rbp, %rdi
callq 0x5054c
movsd %xmm0, 0x150(%rsp)
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xa6d27
movq 0x250(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xe8(%rsp), %rax
leaq 0x230(%rsp), %rcx
movq %rcx, 0x220(%rsp)
movq 0xa0(%rax), %rsi
movq 0xa8(%rax), %rdx
addq %rsi, %rdx
leaq 0x220(%rsp), %rbp
movq %rbp, %rdi
callq 0x2e45c
movq %rbp, %rdi
callq 0x5054c
movapd %xmm0, %xmm1
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xa6da3
movq 0x230(%rsp), %rsi
incq %rsi
movsd %xmm1, 0xa0(%rsp)
callq 0x8480
movsd 0xa0(%rsp), %xmm1
movsd 0x40(%rsp), %xmm0
addsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x30(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x30(%rsp)
movsd 0x38(%rsp), %xmm0
addsd 0x150(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
leaq 0xe8(%rsp), %rdi
callq 0x3123c
incq %r14
movq 0xb0(%rsp), %rax
movq 0xb8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r14, %rcx
ja 0xa6b21
movq 0xd0(%rsp), %rax
cmpq %rax, 0xd8(%rsp)
leaq 0x530(%rsp), %rbx
je 0xa71c3
xorl %r14d, %r14d
movq (%rax,%r14,8), %rbp
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbp, %rdi
leaq 0x168(%rsp), %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xa71a0
leaq 0xe8(%rsp), %rdi
leaq 0x168(%rsp), %rsi
movl $0x9, %edx
callq 0x50624
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rax
subq %rsi, %rax
cmpq $0x60, %rax
jne 0xa7162
leaq 0x1a8(%rsp), %rdi
movl $0x2c, %edx
callq 0x50624
movq 0xe8(%rsp), %rsi
addq $0x20, %rsi
leaq 0x518(%rsp), %rdi
movl $0x2c, %edx
callq 0x50624
movq 0xe8(%rsp), %rsi
addq $0x40, %rsi
leaq 0x500(%rsp), %rdi
movl $0x2c, %edx
callq 0x50624
movq 0x1a8(%rsp), %rax
cmpq %rax, 0x1b0(%rsp)
je 0xa7131
movl $0x8, %ebp
xorl %ebx, %ebx
leaq 0x210(%rsp), %rcx
movq %rcx, 0x200(%rsp)
movq -0x8(%rax,%rbp), %rsi
movq (%rax,%rbp), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x2e45c
movq %r15, %rdi
callq 0x5054c
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xa6f68
movq 0x210(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x70(%rsp)
callq 0x8480
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x2d0(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa6fb0
movq 0x88(%rsp), %rsi
cmpq 0x90(%rsp), %rsi
je 0xa6f9b
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x88(%rsp)
jmp 0xa6fb0
leaq 0x80(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0x79f34
movq 0x518(%rsp), %rax
leaq 0x1f0(%rsp), %rcx
movq %rcx, 0x1e0(%rsp)
movq -0x8(%rax,%rbp), %rsi
movq (%rax,%rbp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x2e45c
movq %r12, %rdi
callq 0x5054c
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0xa7015
movq 0x1f0(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x70(%rsp)
callq 0x8480
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x2c8(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa705d
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0xa7048
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x128(%rsp)
jmp 0xa705d
leaq 0x120(%rsp), %rdi
leaq 0x2c8(%rsp), %rdx
callq 0x79f34
movq 0x500(%rsp), %rax
leaq 0x1d0(%rsp), %rcx
movq %rcx, 0x1c0(%rsp)
movq -0x8(%rax,%rbp), %rsi
movq (%rax,%rbp), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x2e45c
movq %r13, %rdi
callq 0x5054c
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0xa70c2
movq 0x1d0(%rsp), %rsi
incq %rsi
movsd %xmm0, 0x70(%rsp)
callq 0x8480
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x2c0(%rsp)
ucomisd %xmm0, %xmm0
jp 0xa710a
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0xa70f5
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x108(%rsp)
jmp 0xa710a
leaq 0x100(%rsp), %rdi
leaq 0x2c0(%rsp), %rdx
callq 0x79f34
incq %rbx
movq 0x1a8(%rsp), %rax
movq 0x1b0(%rsp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %rbp
cmpq %rbx, %rcx
ja 0xa6f0b
leaq 0x500(%rsp), %rdi
callq 0x3123c
leaq 0x518(%rsp), %rdi
callq 0x3123c
leaq 0x1a8(%rsp), %rdi
callq 0x3123c
leaq 0x530(%rsp), %rbx
jmp 0xa7193
movq %rbx, %rdi
leaq 0xe8(%rsp), %rsi
callq 0x3273a
movq %rbx, %rdi
movq 0x63e6c(%rip), %rsi     # 0x10afe8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x39979
movq %rbx, %rdi
callq 0x3123c
leaq 0xe8(%rsp), %rdi
callq 0x3123c
incq %r14
movq 0xd0(%rsp), %rax
movq 0xd8(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r14, %rcx
ja 0xa6e2b
movq 0x88(%rsp), %rcx
movb $0x1, %al
cmpq 0x80(%rsp), %rcx
je 0xa76b2
movq 0x128(%rsp), %rcx
cmpq 0x120(%rsp), %rcx
movq 0x188(%rsp), %r14
je 0xa76ab
movq 0x108(%rsp), %rcx
cmpq 0x100(%rsp), %rcx
je 0xa76ab
leaq 0x80(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0x70(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0xa0(%rsp)
leaq 0x100(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0x140(%rsp)
movsd 0x30(%rsp), %xmm1
movapd %xmm1, %xmm2
movsd 0x38(%rsp), %xmm0
subsd %xmm0, %xmm2
addsd %xmm1, %xmm0
divsd %xmm0, %xmm2
movapd %xmm2, 0x290(%rsp)
movapd %xmm2, %xmm0
andpd 0x31ff1(%rip), %xmm0    # 0xd9270
movapd %xmm0, 0x150(%rsp)
divsd 0x70(%rsp), %xmm0
movapd %xmm0, 0x190(%rsp)
leaq 0x2f8(%rsp), %rdi
leaq 0x3f0f7(%rip), %rsi     # 0xe639d
callq 0x8160
testl %eax, %eax
jne 0xa758a
leaq 0x8(%rsp), %rdi
leaq 0x3f0e5(%rip), %rsi     # 0xe63a4
callq 0x8160
testl %eax, %eax
jne 0xa758a
leaq 0x48(%rsp), %rdi
leaq 0x3f0d3(%rip), %rsi     # 0xe63ab
callq 0x8160
testl %eax, %eax
jne 0xa758a
movl $0x7, %edx
movq 0x63cf7(%rip), %rdi     # 0x10afe8
leaq 0x3f0ba(%rip), %rsi     # 0xe63b2
callq 0x84e0
movq 0x63ce4(%rip), %rdi     # 0x10afe8
movapd 0x190(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xd, %edx
movq 0x63ca0(%rip), %rdi     # 0x10afe8
leaq 0x3f06b(%rip), %rsi     # 0xe63ba
callq 0x84e0
movq 0x63c8d(%rip), %rdi     # 0x10afe8
movsd 0x70(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
leaq 0x2a8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x3a864
leaq 0x2a8(%rsp), %rdi
movq 0x63c34(%rip), %rsi     # 0x10afe8
movl $0x9, %edx
movl $0x1, %ecx
callq 0x5ae16
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0xa73e0
movq 0x2b8(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movl $0xd, %edx
movq 0x63bfc(%rip), %rdi     # 0x10afe8
leaq 0x3efd5(%rip), %rsi     # 0xe63c8
callq 0x84e0
movq 0x63be9(%rip), %rdi     # 0x10afe8
movsd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xd, %edx
movq 0x63ba5(%rip), %rdi     # 0x10afe8
leaq 0x3ef8c(%rip), %rsi     # 0xe63d6
callq 0x84e0
movq 0x63b92(%rip), %rdi     # 0x10afe8
movsd 0xa0(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xc, %edx
movq 0x63b4e(%rip), %rdi     # 0x10afe8
leaq 0x3ef43(%rip), %rsi     # 0xe63e4
callq 0x84e0
movq 0x63b3b(%rip), %rdi     # 0x10afe8
movsd 0x30(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xc, %edx
movq 0x63afa(%rip), %rdi     # 0x10afe8
leaq 0x3eefc(%rip), %rsi     # 0xe63f1
callq 0x84e0
movq 0x63ae7(%rip), %rdi     # 0x10afe8
movsd 0x38(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movl $0xc, %edx
movq 0x63aa6(%rip), %rdi     # 0x10afe8
leaq 0x3eeb5(%rip), %rsi     # 0xe63fe
callq 0x84e0
movq 0x63a93(%rip), %rdi     # 0x10afe8
movsd 0x40(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movsd 0x30(%rsp), %xmm2
movapd %xmm2, %xmm6
movsd 0x40(%rsp), %xmm3
subsd %xmm3, %xmm6
movapd %xmm3, %xmm5
movsd 0x38(%rsp), %xmm4
subsd %xmm4, %xmm5
movapd %xmm2, %xmm0
addsd %xmm3, %xmm0
movapd %xmm4, %xmm1
addsd %xmm3, %xmm1
divsd %xmm0, %xmm6
divsd %xmm1, %xmm5
movapd %xmm6, 0x280(%rsp)
movapd %xmm6, %xmm1
movapd 0x31c97(%rip), %xmm0    # 0xd9270
andpd %xmm0, %xmm1
movapd %xmm1, 0x70(%rsp)
divsd 0xa0(%rsp), %xmm1
movapd %xmm1, 0x270(%rsp)
movapd %xmm5, 0x260(%rsp)
andpd %xmm0, %xmm5
movapd %xmm5, 0xa0(%rsp)
movapd %xmm5, %xmm0
divsd 0x140(%rsp), %xmm0
movapd %xmm0, 0x140(%rsp)
ucomisd %xmm4, %xmm3
jb 0xa76c1
ucomisd %xmm2, %xmm3
jb 0xa76c1
movapd 0x290(%rsp), %xmm0
ucomisd 0x269e2(%rip), %xmm0    # 0xce028
jae 0xa77df
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a60c(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a5dd(%rip), %rsi     # 0xd1c7e
callq 0x84e0
jmp 0xa7839
xorl %ecx, %ecx
jmp 0xa827b
xorl %ecx, %ecx
movq 0x188(%rsp), %r14
jmp 0xa827b
movsd 0x38(%rsp), %xmm0
ucomisd %xmm3, %xmm0
jb 0xa774b
ucomisd 0x30(%rsp), %xmm0
jb 0xa774b
movapd 0x280(%rsp), %xmm0
ucomisd 0x26942(%rip), %xmm0    # 0xce028
jae 0xa7926
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a56c(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a53d(%rip), %rsi     # 0xd1c7e
callq 0x84e0
jmp 0xa7980
movsd 0x30(%rsp), %xmm0
ucomisd 0x40(%rsp), %xmm0
jb 0xa7bbf
movsd 0x30(%rsp), %xmm0
ucomisd 0x38(%rsp), %xmm0
jb 0xa7bbf
movapd 0x260(%rsp), %xmm0
ucomisd 0x268a8(%rip), %xmm0    # 0xce028
jae 0xa7a6a
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a4d2(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a4a9(%rip), %rsi     # 0xd1c7e
callq 0x84e0
jmp 0xa7abe
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a473(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a44a(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movl $0x1, %edx
movq 0x28(%rsp), %rdi
leaq 0x2a422(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movapd 0x150(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a3f8(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x190(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a3d3(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a3ac(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x38(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a387(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x30(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7bac
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a32c(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a303(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movl $0x1, %edx
movq 0x28(%rsp), %rdi
leaq 0x2a2db(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movapd 0x70(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a2b4(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x270(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a28f(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movsd 0x38(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a268(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a243(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x30(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa7bac
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x28(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a1ee(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a1c5(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movl $0x1, %edx
movq 0x28(%rsp), %rdi
leaq 0x2a197(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movapd 0xa0(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a16d(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x140(%rsp), %xmm0
callq 0x8730
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a148(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x28(%rsp), %rdi
movsd 0x30(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a121(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x38(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a0fc(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movsd 0x40(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movapd 0x150(%rsp), %xmm0
movapd 0x70(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0xa7cef
movapd 0xa0(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0xa7cef
movapd 0x290(%rsp), %xmm0
ucomisd 0x2642c(%rip), %xmm0    # 0xce028
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
jae 0xa7f48
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a050(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x2a027(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29ffe(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x150(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29fd6(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x190(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29fae(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa81fa
movapd 0x70(%rsp), %xmm1
ucomisd %xmm1, %xmm0
jb 0xa7e17
movapd %xmm1, %xmm0
movapd 0xa0(%rsp), %xmm1
ucomisd %xmm0, %xmm1
jb 0xa7e17
movapd 0x280(%rsp), %xmm0
ucomisd 0x26301(%rip), %xmm0    # 0xce028
jae 0xa8025
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29f2b(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29efc(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29ed3(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x70(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29eae(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x270(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29e86(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa81fa
movapd 0x150(%rsp), %xmm0
ucomisd 0xa0(%rsp), %xmm0
jb 0xa820d
movapd 0x70(%rsp), %xmm0
ucomisd 0xa0(%rsp), %xmm0
jb 0xa820d
movapd 0x260(%rsp), %xmm0
ucomisd 0x261d3(%rip), %xmm0    # 0xce028
jae 0xa8112
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29dfd(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29dd4(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29da5(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0xa0(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29d7d(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29d55(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa81fa
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29d1a(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29cf1(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29cc8(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x290(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29ca0(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x190(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29c78(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa81fa
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29c2d(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29c04(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29bdb(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x280(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29bb3(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x270(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29b8b(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
jmp 0xa81fa
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq 0x68(%rsp), %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29b46(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29b1d(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq 0x2f8(%rsp), %rsi
movq 0x300(%rsp), %rdx
movq %rbp, %rdi
callq 0x84e0
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29aee(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x260(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29ac6(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq %rbp, %rdi
movapd 0x140(%rsp), %xmm0
callq 0x8730
movq %rax, %rbp
movl $0x1, %edx
movq %rax, %rdi
leaq 0x29a9e(%rip), %rsi     # 0xd1c7e
callq 0x84e0
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x80(%rsp), %rax
cmpq %rax, 0x88(%rsp)
je 0xa8227
movq %rax, 0x88(%rsp)
movq 0x100(%rsp), %rax
cmpq %rax, 0x108(%rsp)
je 0xa8241
movq %rax, 0x108(%rsp)
movq 0x120(%rsp), %rax
movb $0x1, %cl
xorpd %xmm0, %xmm0
movsd %xmm0, 0x38(%rsp)
cmpq %rax, 0x128(%rsp)
je 0xa8267
movq %rax, 0x128(%rsp)
movq 0x138(%rsp), %rax
movsd %xmm0, 0x30(%rsp)
movsd %xmm0, 0x40(%rsp)
testb %cl, %cl
je 0xa82cf
testb $0x1, %al
je 0xa6981
jmp 0xa82cf
movq 0x62d58(%rip), %rbx     # 0x10afe8
leaq 0x3d133(%rip), %rsi     # 0xe53ca
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 0x62d26(%rip), %rdi     # 0x10afe8
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa82eb
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
leaq 0x308(%rsp), %rbx
je 0xa830f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa832c
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xa8349
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0xa8366
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0xa8383
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xa83a0
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0xa83bd
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xa83e2
movq 0x178(%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 0x3df72(%rip), %rdi     # 0xe636f
jmp 0xa840f
leaq 0x3df80(%rip), %rdi     # 0xe6386
jmp 0xa840f
leaq 0x3df49(%rip), %rdi     # 0xe6358
leaq 0x3df0b(%rip), %rsi     # 0xe6321
leaq 0x3df19(%rip), %rcx     # 0xe6336
movl $0x6e, %edx
callq 0x82c0
leaq 0x3ded9(%rip), %rdi     # 0xe6307
leaq 0x3deec(%rip), %rsi     # 0xe6321
leaq 0x3defa(%rip), %rcx     # 0xe6336
movl $0x68, %edx
callq 0x82c0
movq %rax, %r15
movq 0x2a8(%rsp), %rdi
testq %rdi, %rdi
je 0xa8777
movq 0x2b8(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
jmp 0xa8777
jmp 0xa86c6
jmp 0xa8476
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa849b
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa849b
movq %rax, %r15
movl $0x200, %esi            # imm = 0x200
movq 0x68(%rsp), %rdi
jmp 0xa8826
jmp 0xa86b8
jmp 0xa84b1
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa84d6
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa84d6
movq %rax, %r15
movl $0x200, %esi            # imm = 0x200
movq 0x28(%rsp), %rdi
jmp 0xa8826
jmp 0xa86b8
jmp 0xa86c6
jmp 0xa86c6
jmp 0xa86c6
jmp 0xa8527
jmp 0xa859d
jmp 0xa859d
jmp 0xa86b8
jmp 0xa8527
jmp 0xa859d
jmp 0xa859d
jmp 0xa86b8
jmp 0xa86b8
jmp 0xa86b8
jmp 0xa8527
movq %rax, %r15
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa85a0
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa85a0
jmp 0xa859d
jmp 0xa859d
jmp 0xa859d
jmp 0xa859d
jmp 0xa8588
jmp 0xa85b7
jmp 0xa86b8
jmp 0xa8588
jmp 0xa8588
jmp 0xa86b8
jmp 0xa85b7
jmp 0xa8588
jmp 0xa859d
jmp 0xa859d
jmp 0xa859d
jmp 0xa859d
jmp 0xa86b8
jmp 0xa86b8
jmp 0xa86b8
jmp 0xa8588
movq %rax, %r15
jmp 0xa85d1
jmp 0xa86b8
jmp 0xa859d
jmp 0xa859d
jmp 0xa86b8
jmp 0xa859d
movq %rax, %r15
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa882b
movq 0x18(%rsp), %rsi
jmp 0xa85f2
jmp 0xa85b7
movq %rax, %r15
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0xa85d1
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa882b
movq 0x308(%rsp), %rsi
incq %rsi
jmp 0xa8826
jmp 0xa86c6
movq %rax, %r15
jmp 0xa8750
movq %rax, %r15
jmp 0xa875d
movq %rax, %r15
leaq 0x530(%rsp), %rdi
jmp 0xa8765
jmp 0xa86b0
jmp 0xa86b0
jmp 0xa86c6
jmp 0xa86c6
jmp 0xa86b0
movq %rax, %r15
movq 0x240(%rsp), %rdi
leaq 0x250(%rsp), %rax
cmpq %rax, %rdi
je 0xa876a
movq 0x250(%rsp), %rsi
jmp 0xa86a1
jmp 0xa86b0
movq %rax, %r15
movq 0x220(%rsp), %rdi
leaq 0x230(%rsp), %rax
cmpq %rax, %rdi
je 0xa876a
movq 0x230(%rsp), %rsi
jmp 0xa86a1
jmp 0xa86c6
movq %rax, %r15
movq 0x2d8(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa876a
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa876a
jmp 0xa86b0
movq %rax, %r15
jmp 0xa876a
movq %rax, %r15
jmp 0xa882b
jmp 0xa86c6
jmp 0xa86c6
jmp 0xa86c6
movq %rax, %r15
jmp 0xa8777
movq %rax, %r15
movq 0x200(%rsp), %rdi
leaq 0x210(%rsp), %rax
cmpq %rax, %rdi
je 0xa8743
movq 0x210(%rsp), %rsi
jmp 0xa8732
movq %rax, %r15
movq 0x1c0(%rsp), %rdi
leaq 0x1d0(%rsp), %rax
cmpq %rax, %rdi
je 0xa8743
movq 0x1d0(%rsp), %rsi
jmp 0xa8732
movq %rax, %r15
movq 0x1e0(%rsp), %rdi
leaq 0x1f0(%rsp), %rax
cmpq %rax, %rdi
je 0xa8743
movq 0x1f0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xa8743
jmp 0xa8740
jmp 0xa8740
movq %rax, %r15
leaq 0x500(%rsp), %rdi
callq 0x3123c
leaq 0x518(%rsp), %rdi
callq 0x3123c
leaq 0x1a8(%rsp), %rdi
callq 0x3123c
leaq 0xe8(%rsp), %rdi
callq 0x3123c
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xa8793
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa87af
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x2f8(%rsp), %rdi
leaq 0x308(%rsp), %rax
cmpq %rax, %rdi
je 0xa87d4
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0xa87f1
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0xa880e
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
testq %rdi, %rdi
je 0xa882b
movq 0x90(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0xa8848
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0xa8865
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xa888a
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x8480
movq %r15, %rdi
callq 0x8840