// File: /workspace/github_cpp_makefile_star2_O1/millanek[P]evo/process_vcf_coding_sequences.cpp
// Function: getStatsBothPhasedHaps(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::vector<std::vector<double, std::allocator<double>>, std::allocator<std::vector<double, std::allocator<double>>>>&, pNsets*, double, bool)
void getStatsBothPhasedHaps(const std::vector<std::string>& allSeqs, const std::vector<std::string>& allSeqsH2, std::vector<string>& statsThisGene, std::vector<std::vector<double> >& combinedVectorForPCA, pNsets* sets, double tStVratio, bool nonCodingNull) {
    //std::cerr << "Collecting gene sequence statistics...." << std::endl;
    //clock_t begin = clock();
    double pN = 0; double pS = 0;
    double hetN = 0; double hetS = 0;
    assert(allSeqs.size() == allSeqsH2.size());
    std::string::size_type geneLengthNt = allSeqs[0].length();
    int numSamples = (int)allSeqs.size();
    std::vector<string> altCodons; altCodons.resize(numSamples);
    std::vector<string> altCodonsH2; altCodonsH2.resize(numSamples);
    initialize_matrix_double(combinedVectorForPCA, numSamples);
    
    std::map<std::vector<string>::size_type, int> haveStop;
    std::map<std::vector<string>::size_type, int> haveStopH2;
    for (std::vector<string>::size_type i = 0; i != numSamples; i++) {
        assert(allSeqs[i].length() == geneLengthNt);
        assert(allSeqsH2[i].length() == geneLengthNt);
        altCodons[i] = ""; altCodonsH2[i] = "";
        haveStop[i] = 0; haveStopH2[i] = 0;
    }
    
    CDSH1H2ComparisonMatrices pairwiseMatrices(numSamples);
    for (string::size_type i = 0; i != geneLengthNt; i++) {
        for (std::vector<std::string>::size_type j = 0; j != allSeqs.size(); j++) {
            altCodons[j] += allSeqs[j][i];
            altCodonsH2[j] += allSeqsH2[j][i];
        }
        // Find the types of mutation we are dealing with
        if ((i+1)%3 == 0) {
            if (!nonCodingNull) {
                // If this is an alignment for a coding region:
                // the remainder of the sequence after any stop will be excluded from the calculations for any sequence
                for (std::vector<std::string>::size_type j = 0; j != numSamples; j++) {
                    if (getAminoAcid(altCodons[j]) == "Stop") {
                        //std::cerr << "Stop in : i = " << i << " ; j = " << j << std::endl;
                        haveStop[j] = 1;
                    }
                    if (getAminoAcid(altCodonsH2[j]) == "Stop") haveStopH2[j] = 1;
                    
                }
            }
            //std::cerr << "Now going to loop through codons: i = " << i << std::endl;
            addAllPairwiseN_S_Nd_Sd_DifferentIndividuals(altCodons,haveStop, *pairwiseMatrices.H1p);
            //std::cerr << "Added pairwise among H1:" << std::endl;
            addAllPairwiseN_S_Nd_Sd_DifferentIndividuals(altCodonsH2,haveStopH2, *pairwiseMatrices.H2p);
            //std::cerr << "Added pairwise among H2: " << std::endl;
            addN_S_Nd_Sd_DifferentIndividualsH1againstH2(altCodons, altCodonsH2, haveStop, haveStopH2, *pairwiseMatrices.H1H2p);
            //std::cerr << "Added pairwise beween H1 and H2:" << std::endl;
            addN_S_Nd_Sd_SameIndividualsH1againstH2(altCodons, altCodonsH2, haveStop, haveStopH2, *pairwiseMatrices.H1H2p);
            //std::cerr << "Added heterozygosity beween H1 and H2:" << std::endl;
            
            for (std::vector<std::string>::size_type j = 0; j != numSamples; j++) {
                altCodons[j] = ""; altCodonsH2[j] = "";
            }
        }
    }
     
    double sumPn = 0; double sumPs = 0;
    // double sumS = 0; double sumN = 0;
    std::vector<double> pNjackknifeVector;
    std::vector<double> pSjackknifeVector;
    std::vector<double> pN_pSjackknifeVector;
    std::vector<double> pN_pSjackknifeVector_allComparisons;
    // Add the within H1 and within H2 comparisons
    for (std::vector<std::string>::size_type j = 0; j != numSamples - 1; j++) {
        //std::cerr << "j = " << j << "; sumPn: " << sumPn << "; sumPs:" << sumPs << std::endl;
        for (std::vector<std::string>::size_type k = j+1; k != numSamples; k++) {
            //double pN_jk = pairwiseMatrices.H1p->N_d_jk[j][k]/pairwiseMatrices.H1p->N_jk[j][k];
            double pN_jk = pairwiseMatrices.H1p->N_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H1p->tS_N_jk[j][k])+pairwiseMatrices.H1p->tV_N_jk[j][k]); sumPn = sumPn + pN_jk;
            //sumN = sumN + (2*tStVratio*pairwiseMatrices.H1p->tS_N_jk[j][k]) + pairwiseMatrices.H1p->tV_N_jk[j][k];
            combinedVectorForPCA[j][k] = combinedVectorForPCA[j][k] + pN_jk;
            //if (isnan(pN_jk) || N_jk[j][k] == 0) {
                //std::cerr << "j = " << j << "; k = " << k << std::endl;
                //std::cerr << "N_d_jk[j][k] = " << N_d_jk[j][k] << "; N_jk[j][k] = " << N_jk[j][k] << std::endl;
                //std::cerr << "pN_jk = " << N_d_jk[j][k] << "; sumPn = " << sumPn << std::endl;
            //}
            double pS_jk = pairwiseMatrices.H1p->S_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H1p->tS_S_jk[j][k])+pairwiseMatrices.H1p->tV_S_jk[j][k]); sumPs = sumPs + pS_jk;
            //sumS = sumS + pairwiseMatrices.H1p->tS_S_jk[j][k]+pairwiseMatrices.H1p->tV_S_jk[j][k];
            double H2pN_jk = pairwiseMatrices.H2p->N_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H2p->tS_N_jk[j][k])+pairwiseMatrices.H2p->tV_N_jk[j][k]); sumPn = sumPn + H2pN_jk;
            //sumN = sumN + pairwiseMatrices.H2p->tS_N_jk[j][k]+pairwiseMatrices.H2p->tV_N_jk[j][k];
            combinedVectorForPCA[j][k] = combinedVectorForPCA[j][k] + H2pN_jk;
            double H2pS_jk = pairwiseMatrices.H2p->S_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H2p->tS_S_jk[j][k])+pairwiseMatrices.H2p->tV_S_jk[j][k]); sumPs = sumPs + H2pS_jk;
            pN_pSjackknifeVector_allComparisons.push_back(pN_jk-pS_jk); pN_pSjackknifeVector_allComparisons.push_back(H2pN_jk-H2pS_jk);
            if ((j % 2 == 0) && (k == j+1)) {
                pNjackknifeVector.push_back(pN_jk); pNjackknifeVector.push_back(H2pN_jk);
                pSjackknifeVector.push_back(pS_jk); pSjackknifeVector.push_back(H2pS_jk);
                pN_pSjackknifeVector.push_back(pN_jk-pS_jk); pN_pSjackknifeVector.push_back(H2pN_jk-H2pS_jk);
            }
          //  std::cerr << "j = " << j << "; sumPn: " << sumPn << "; sumPs:" << sumPs << std::endl;
            if (sets->initialised == true) {
            //    std::cerr << "j = " << j << "; sumPn: " << sumPn << "; sumPs:" << sumPs << std::endl;
                if ((sets->set1Loci.count(j) == 1 && sets->set1Loci.count(k) == 1) || (sets->set1Loci.count(k) == 1 && sets->set1Loci.count(j) == 1)) {
                    sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + pN_jk + H2pN_jk;
                    sets->withinSet1pN = sets->withinSet1pN + pN_jk + H2pN_jk;
                } else if ((sets->set2Loci.count(j) == 1 && sets->set2Loci.count(k) == 1) || (sets->set2Loci.count(k) == 1 && sets->set2Loci.count(j) == 1)) {
                    sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + pN_jk + H2pN_jk;
                    sets->withinSet2pN = sets->withinSet2pN + pN_jk + H2pN_jk;
                } else if ((sets->set1Loci.count(j) == 1 && sets->set2Loci.count(k) == 1)) {
                    sets->set1vsSet2pN = sets->set1vsSet2pN + pN_jk + H2pN_jk;
                    sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + pN_jk + H2pN_jk;
                } else if (sets->set1Loci.count(k) == 1 && sets->set2Loci.count(j) == 1) {
                    sets->set1vsSet2pN = sets->set1vsSet2pN + pN_jk + H2pN_jk;
                    sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + pN_jk + H2pN_jk;
                } else if ((sets->set1Loci.count(j) == 1 || sets->set2Loci.count(j) == 1) && sets->set3Loci.count(k) == 1) {
                    sets->sets1and2vsSet3pN = sets->sets1and2vsSet3pN + pN_jk + H2pN_jk;
                } else if ((sets->set1Loci.count(k) == 1 || sets->set2Loci.count(k) == 1) && sets->set3Loci.count(j) == 1) {
                    sets->sets1and2vsSet3pN = sets->sets1and2vsSet3pN + pN_jk + H2pN_jk;
                    //std::cerr << "j = " << j << "; (set 3): " << allSeqs[j] << std::endl;
                    //std::cerr << "k = " << k << "; (set 1 or 2): " << allSeqs[k] << std::endl;
                    //std::cerr << std::endl;
                } else if ((sets->set3Loci.count(j) == 1 && sets->set3Loci.count(k) == 1) || (sets->set3Loci.count(k) == 1 && sets->set3Loci.count(j) == 1)) {
                    sets->withinSet3pN = sets->withinSet3pN + pN_jk + H2pN_jk;
                }
            }
        }
    }
    
    double sumHetPn = 0; double sumHetPs = 0;
    // Add the between H1 and H2 comparisons
    for (std::vector<std::string>::size_type j = 0; j != numSamples; j++) {
        //std::cerr << "j = " << j << "; sumPn: " << sumPn << "; sumPs:" << sumPs << std::endl;
        for (std::vector<std::string>::size_type k = 0; k != numSamples; k++) {
            if (j != k) {
                //std::cerr << ((2*tStVratio*pairwiseMatrices.H1H2p->tS_N_jk[j][k])+pairwiseMatrices.H1H2p->tV_N_jk[j][k]) << std::endl;
                double H1H2pN_jk = pairwiseMatrices.H1H2p->N_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H1H2p->tS_N_jk[j][k])+pairwiseMatrices.H1H2p->tV_N_jk[j][k]);
                double H1H2pS_jk = pairwiseMatrices.H1H2p->S_d_jk[j][k]/((2*tStVratio*pairwiseMatrices.H1H2p->tS_S_jk[j][k])+pairwiseMatrices.H1H2p->tV_S_jk[j][k]);
                if (j < k)
                    combinedVectorForPCA[j][k] = combinedVectorForPCA[j][k] + H1H2pN_jk;
                else
                    combinedVectorForPCA[k][j] = combinedVectorForPCA[k][j] + H1H2pN_jk;
                sumPn = sumPn + H1H2pN_jk;
                sumPs = sumPs + H1H2pS_jk;
                pN_pSjackknifeVector_allComparisons.push_back(H1H2pN_jk-H1H2pS_jk);
                
                if (sets->initialised == true) {
                    if ((sets->set1Loci.count(j) == 1 && sets->set1Loci.count(k) == 1) || (sets->set1Loci.count(k) == 1 && sets->set1Loci.count(j) == 1)) {
                        sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + H1H2pN_jk;
                        sets->withinSet1pN = sets->withinSet1pN + H1H2pN_jk;
                    } else if ((sets->set2Loci.count(j) == 1 && sets->set2Loci.count(k) == 1) || (sets->set2Loci.count(k) == 1 && sets->set2Loci.count(j) == 1)) {
                        sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + H1H2pN_jk;
                        sets->withinSet2pN = sets->withinSet2pN + H1H2pN_jk;
                    } else if ((sets->set1Loci.count(j) == 1 && sets->set2Loci.count(k) == 1) || (sets->set1Loci.count(k) == 1 && sets->set2Loci.count(j) == 1)) {
                        sets->set1vsSet2pN = sets->set1vsSet2pN + H1H2pN_jk;
                        sets->withinSet1andSet2pN = sets->withinSet1andSet2pN + H1H2pN_jk;
                    } if ((sets->set1Loci.count(j) == 1 || sets->set2Loci.count(j) == 1) && sets->set3Loci.count(k) == 1) {
                        sets->sets1and2vsSet3pN = sets->sets1and2vsSet3pN + H1H2pN_jk;
                    } else if ((sets->set1Loci.count(k) == 1 || sets->set2Loci.count(k) == 1) && sets->set3Loci.count(j) == 1) {
                        sets->sets1and2vsSet3pN = sets->sets1and2vsSet3pN + H1H2pN_jk;
                    } else if ((sets->set3Loci.count(j) == 1 && sets->set3Loci.count(k) == 1) || (sets->set3Loci.count(k) == 1 && sets->set3Loci.count(j) == 1)) {
                        sets->withinSet3pN = sets->withinSet3pN + H1H2pN_jk;
                    }
                }
            } else {
               // std::cerr << ((2*tStVratio*pairwiseMatrices.H1H2p->tS_N_jk[j][j])+pairwiseMatrices.H1H2p->tV_N_jk[j][j]) << std::endl;
                double H1H2pN_jj = pairwiseMatrices.H1H2p->N_d_jk[j][j]/((2*tStVratio*pairwiseMatrices.H1H2p->tS_N_jk[j][j])+pairwiseMatrices.H1H2p->tV_N_jk[j][j]);
                double H1H2pS_jj = pairwiseMatrices.H1H2p->S_d_jk[j][j]/((2*tStVratio*pairwiseMatrices.H1H2p->tS_S_jk[j][j])+pairwiseMatrices.H1H2p->tV_S_jk[j][j]);
                sumHetPn = sumHetPn + H1H2pN_jj;
                sumHetPs = sumHetPs + H1H2pS_jj;
            }
        }
    }

    double pNstdErr = jackknive_std_err(pNjackknifeVector);
    double pSstdErr = jackknive_std_err(pSjackknifeVector);
    double pNpSstdErr = jackknive_std_err(pN_pSjackknifeVector);
    double pNpSstdErrAllComparisons = jackknive_std_err(pN_pSjackknifeVector_allComparisons);
    pN = sumPn/(2*(numSamples*(numSamples-1)));
    pS = sumPs/(2*(numSamples*(numSamples-1)));
    hetN = sumHetPn/(double)numSamples;
    hetS = sumHetPs/(double)numSamples;
    
    statsThisGene.push_back(numToString(geneLengthNt));
    statsThisGene.push_back(numToString(pN));
    statsThisGene.push_back(numToString(pS));
    statsThisGene.push_back(numToString(hetN));
    statsThisGene.push_back(numToString(hetS));
    statsThisGene.push_back(numToString(pNstdErr));
    statsThisGene.push_back(numToString(pSstdErr));
    statsThisGene.push_back(numToString(pNpSstdErr));
    statsThisGene.push_back(numToString(pNpSstdErrAllComparisons));
   // clock_t end = clock();
   // double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
    //std::cerr << "Time per gene: " << elapsed_secs << std::endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1f8, %rsp            # imm = 0x1F8
movl %r9d, 0x40(%rsp)
movsd %xmm0, 0x80(%rsp)
movq %rcx, 0xd0(%rsp)
movq %rdx, 0x188(%rsp)
movq (%rdi), %rax
movq 0x8(%rdi), %rbp
subq %rax, %rbp
movq 0x8(%rsi), %rcx
subq (%rsi), %rcx
cmpq %rcx, %rbp
jne 0x743be
movq %r8, %r12
movq %rsi, %r14
movq %rdi, %r15
movq %rbp, 0x78(%rsp)
shrq $0x5, %rbp
movq 0x8(%rax), %r13
xorpd %xmm0, %xmm0
leaq 0x170(%rsp), %rdi
movapd %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movslq %ebp, %rbx
movq %rbx, %rsi
callq 0x415c4
movq %r13, 0x118(%rsp)
leaq 0x150(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %rbx, 0x58(%rsp)
movq %rbx, %rsi
callq 0x415c4
xorl %ebx, %ebx
movq 0xd0(%rsp), %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x50664
shlq $0x1b, 0x78(%rsp)
leaq 0x1a0(%rsp), %rax
movl %ebx, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
leaq 0x1d0(%rsp), %rax
movl %ebx, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
movq %rbx, 0x8(%rsp)
je 0x730ff
xorl %eax, %eax
leaq 0x5ec36(%rip), %rbx     # 0xd1c7f
leaq 0x8(%rsp), %r13
movq (%r15), %rcx
shlq $0x5, %rax
movq 0x118(%rsp), %rdx
cmpq %rdx, 0x8(%rcx,%rax)
jne 0x7439f
movq (%r14), %rcx
cmpq %rdx, 0x8(%rcx,%rax)
jne 0x74380
movq 0x170(%rsp), %rcx
leaq (%rcx,%rax), %rdi
movq 0x8(%rcx,%rax), %rdx
xorl %esi, %esi
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x86c0
movq 0x8(%rsp), %rax
movq 0x150(%rsp), %rcx
shlq $0x5, %rax
leaq (%rcx,%rax), %rdi
movq 0x8(%rcx,%rax), %rdx
xorl %esi, %esi
movq %rbx, %rcx
xorl %r8d, %r8d
callq 0x86c0
leaq 0x198(%rsp), %rdi
movq %r13, %rsi
callq 0x76548
movl $0x0, (%rax)
leaq 0x1c8(%rsp), %rdi
movq %r13, %rsi
callq 0x76548
movl $0x0, (%rax)
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq 0x58(%rsp), %rax
jne 0x7304e
leaq 0x138(%rsp), %rdi
movq %rbp, 0x190(%rsp)
movl %ebp, %esi
callq 0x773be
cmpq $0x0, 0x118(%rsp)
je 0x733ae
xorl %r13d, %r13d
movq %r14, 0x30(%rsp)
movq (%r15), %rax
cmpq %rax, 0x8(%r15)
je 0x73189
xorl %ebx, %ebx
xorl %ebp, %ebp
movq (%rax,%rbx), %rax
movsbl (%rax,%r13), %esi
movq 0x170(%rsp), %rdi
addq %rbx, %rdi
callq 0x83d0
movq (%r14), %rax
movq (%rax,%rbx), %rax
movsbl (%rax,%r13), %esi
movq 0x150(%rsp), %rdi
addq %rbx, %rdi
callq 0x83d0
incq %rbp
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
addq $0x20, %rbx
cmpq %rcx, %rbp
jne 0x7313a
incq %r13
movq %r13, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
movabsq $0x5555555555555556, %rcx # imm = 0x5555555555555556
cmpq %rcx, %rax
jae 0x7339b
cmpb $0x0, 0x40(%rsp)
jne 0x732c3
movq $0x0, 0x90(%rsp)
cmpq $0x0, 0x78(%rsp)
movq 0x58(%rsp), %rbp
leaq 0x8(%rsp), %r14
je 0x732c3
xorl %esi, %esi
shlq $0x5, %rsi
addq 0x170(%rsp), %rsi
movq %r14, %rdi
callq 0x766fe
movq %r14, %rdi
leaq 0x6a005(%rip), %rsi     # 0xdd202
callq 0x8160
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x73220
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %ebx, %ebx
jne 0x7323f
leaq 0x198(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x76548
movl $0x1, (%rax)
movq 0x90(%rsp), %rsi
shlq $0x5, %rsi
addq 0x150(%rsp), %rsi
movq %r14, %rdi
callq 0x766fe
movq %r14, %rdi
leaq 0x69f9d(%rip), %rsi     # 0xdd202
callq 0x8160
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x73288
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %ebx, %ebx
leaq 0x1c8(%rsp), %rdi
jne 0x732a7
leaq 0x90(%rsp), %rsi
callq 0x76548
movl $0x1, (%rax)
movq 0x90(%rsp), %rsi
incq %rsi
movq %rsi, 0x90(%rsp)
cmpq %rbp, %rsi
jne 0x731df
movq 0x138(%rsp), %rdx
leaq 0x170(%rsp), %r14
movq %r14, %rdi
leaq 0x198(%rsp), %rsi
callq 0x76f00
leaq 0x150(%rsp), %rbp
leaq 0x1c8(%rsp), %rbx
movq 0x140(%rsp), %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x76f00
movq 0x148(%rsp), %r8
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x198(%rsp), %rdx
movq %rbx, %rcx
callq 0x77438
movq 0x148(%rsp), %r8
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x198(%rsp), %rdx
movq %rbx, %rcx
callq 0x77783
cmpq $0x0, 0x78(%rsp)
je 0x7339b
xorl %ebx, %ebx
movq 0x58(%rsp), %rbp
movq 0x170(%rsp), %rdi
movq 0x8(%rdi,%rbx), %rdx
addq %rbx, %rdi
xorl %esi, %esi
leaq 0x5e915(%rip), %r14     # 0xd1c7f
movq %r14, %rcx
xorl %r8d, %r8d
callq 0x86c0
movq 0x150(%rsp), %rdi
movq 0x8(%rdi,%rbx), %rdx
addq %rbx, %rdi
xorl %esi, %esi
movq %r14, %rcx
xorl %r8d, %r8d
callq 0x86c0
addq $0x20, %rbx
decq %rbp
jne 0x73351
cmpq 0x118(%rsp), %r13
movq 0x30(%rsp), %r14
jne 0x7312d
xorpd %xmm0, %xmm0
movapd %xmm0, 0x90(%rsp)
xorl %eax, %eax
movq %rax, 0xa0(%rsp)
movq %rax, 0x110(%rsp)
movapd %xmm0, 0x100(%rsp)
movq %rax, 0xf0(%rsp)
movapd %xmm0, 0xe0(%rsp)
movq %rax, 0xc0(%rsp)
movapd %xmm0, 0xb0(%rsp)
movq 0x190(%rsp), %rbp
movl %ebp, %ecx
movq %rax, 0x8(%rsp)
xorpd %xmm0, %xmm0
movsd %xmm0, 0xa8(%rsp)
movsd %xmm0, 0x40(%rsp)
movsd %xmm0, 0x30(%rsp)
decl %ecx
movl %ecx, 0xdc(%rsp)
je 0x73b34
movslq 0xdc(%rsp), %r13
movsd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, 0x120(%rsp)
leaq 0x38(%r12), %rbx
leaq 0x70(%r12), %rax
movq %rax, 0x48(%rsp)
xorpd %xmm0, %xmm0
movsd %xmm0, 0x30(%rsp)
leaq 0x8(%rsp), %r15
leaq 0x70(%rsp), %r14
movsd %xmm0, 0x40(%rsp)
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x70(%rsp)
cmpq 0x58(%rsp), %rax
je 0x73b1e
movq 0x138(%rsp), %rsi
movq 0x8(%rsp), %rcx
shlq $0x3, %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%rsi), %rdx
movq 0x60(%rsi), %rdi
movq (%rdx,%rcx), %rdx
movsd (%rdx,%rax,8), %xmm2
movq (%rdi,%rcx), %rdx
movq 0x90(%rsi), %rdi
movq (%rdi,%rcx), %rdi
movsd (%rdx,%rax,8), %xmm0
movsd 0x120(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd (%rdi,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x28(%rsp)
movq 0xd0(%rsp), %rdx
movq (%rdx), %rdx
movq (%rdx,%rcx), %rdi
movsd (%rdi,%rax,8), %xmm0
movsd %xmm2, 0x50(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, (%rdi,%rax,8)
movq 0x30(%rsi), %rdi
movq 0x78(%rsi), %r8
movq (%rdi,%rcx), %rdi
movsd (%rdi,%rax,8), %xmm2
movq (%r8,%rcx), %rdi
movq 0xa8(%rsi), %rsi
movq (%rsi,%rcx), %rsi
movsd (%rdi,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd (%rsi,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x68(%rsp)
movsd %xmm2, 0x130(%rsp)
movq 0x140(%rsp), %rsi
movq (%rsi), %rdi
movq 0x60(%rsi), %r8
movq (%rdi,%rcx), %rdi
movsd (%rdi,%rax,8), %xmm2
movq (%r8,%rcx), %rdi
movq 0x90(%rsi), %r8
movq (%r8,%rcx), %r8
movsd (%rdi,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd (%r8,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x38(%rsp)
movq (%rdx,%rcx), %rdx
movsd (%rdx,%rax,8), %xmm0
movsd %xmm2, 0xc8(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, (%rdx,%rax,8)
movq 0x30(%rsi), %rdx
movq 0x78(%rsi), %rdi
movq (%rdx,%rcx), %rdx
movsd (%rdx,%rax,8), %xmm2
movq (%rdi,%rcx), %rdx
movq 0xa8(%rsi), %rsi
movq (%rsi,%rcx), %rcx
movsd (%rdx,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd (%rcx,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x60(%rsp)
movsd %xmm2, 0x128(%rsp)
movsd 0x28(%rsp), %xmm0
subsd 0x130(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0x7361f
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0x73634
leaq 0xb0(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x33c70
movsd 0x38(%rsp), %xmm0
subsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0x73670
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0x73685
leaq 0xb0(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x33c70
movq 0x8(%rsp), %rax
testb $0x1, %al
jne 0x7383f
orq $0x1, %rax
cmpq %rax, 0x70(%rsp)
jne 0x7383f
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x736cb
movsd 0x28(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x736dd
leaq 0x90(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x79f34
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x73707
movsd 0x38(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x73719
leaq 0x90(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x79f34
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x73746
movsd 0x130(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x108(%rsp)
jmp 0x7375b
leaq 0x100(%rsp), %rdi
leaq 0x130(%rsp), %rdx
callq 0x79f34
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x73788
movsd 0x128(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x108(%rsp)
jmp 0x7379d
leaq 0x100(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x79f34
movsd 0x28(%rsp), %xmm0
subsd 0x130(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0xe8(%rsp), %rsi
cmpq 0xf0(%rsp), %rsi
je 0x737d9
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0x737ee
leaq 0xe0(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x33c70
movsd 0x38(%rsp), %xmm0
subsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x88(%rsp)
movq 0xe8(%rsp), %rsi
cmpq 0xf0(%rsp), %rsi
je 0x7382a
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xe8(%rsp)
jmp 0x7383f
leaq 0xe0(%rsp), %rdi
leaq 0x88(%rsp), %rdx
callq 0x33c70
cmpb $0x1, 0xd8(%r12)
jne 0x73ae1
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73870
movq %r12, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73892
movq %r12, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x738d7
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x738d7
movsd 0x28(%rsp), %xmm0
movsd 0xc0(%r12), %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0xc0(%r12)
addsd 0xa8(%r12), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xa8(%r12)
jmp 0x73ae1
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x738f9
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x7391b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73960
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73960
movsd 0x28(%rsp), %xmm0
movsd 0xc0(%r12), %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0xc0(%r12)
addsd 0xb0(%r12), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xb0(%r12)
jmp 0x73ae1
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73982
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x739a4
movq %r12, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x739e9
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x739e9
movsd 0x28(%rsp), %xmm0
movsd 0xc8(%r12), %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0xc8(%r12)
addsd 0xc0(%r12), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xc0(%r12)
jmp 0x73ae1
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73a0b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73a1e
movq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73a53
movq %r12, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73a40
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73a75
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73a75
movsd 0xd0(%r12), %xmm0
addsd 0x28(%rsp), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0xd0(%r12)
jmp 0x73ae1
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73a9b
movq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73ac1
movq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73ae1
movq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73ae1
movsd 0xb8(%r12), %xmm0
addsd 0x28(%rsp), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0xb8(%r12)
movsd 0x40(%rsp), %xmm1
addsd 0x50(%rsp), %xmm1
movsd 0x30(%rsp), %xmm0
addsd 0x68(%rsp), %xmm0
addsd 0xc8(%rsp), %xmm1
movsd %xmm1, 0x40(%rsp)
addsd 0x60(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x70(%rsp), %rax
jmp 0x7347b
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq %r13, %rax
jne 0x73476
movq $0x0, 0x8(%rsp)
cmpq $0x0, 0x78(%rsp)
je 0x74006
movsd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, 0x80(%rsp)
leaq 0x38(%r12), %rbx
leaq 0xc8(%r12), %rax
movq %rax, 0x78(%rsp)
leaq 0xc0(%r12), %rax
movq %rax, 0x60(%rsp)
leaq 0xb0(%r12), %rax
movq %rax, 0x48(%rsp)
leaq 0xa8(%r12), %rax
movq %rax, 0x120(%rsp)
leaq 0x70(%r12), %r14
xorpd %xmm0, %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x8(%rsp), %r15
leaq 0x70(%rsp), %r13
movsd %xmm0, 0xa8(%rsp)
movq $0x0, 0x70(%rsp)
xorl %ecx, %ecx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jne 0x73c82
movq 0x148(%rsp), %rcx
leaq (,%rax,8), %rdx
leaq (%rdx,%rdx,2), %rdx
movq (%rcx), %rsi
movq 0x30(%rcx), %rdi
movq (%rsi,%rdx), %rsi
movsd (%rsi,%rax,8), %xmm0
movq 0x60(%rcx), %rsi
movq (%rsi,%rdx), %rsi
movq 0x90(%rcx), %r8
movq (%r8,%rdx), %r8
movsd (%rsi,%rax,8), %xmm1
movsd 0x80(%rsp), %xmm2
mulsd %xmm2, %xmm1
addsd (%r8,%rax,8), %xmm1
divsd %xmm1, %xmm0
movq (%rdi,%rdx), %rsi
movq 0x78(%rcx), %rdi
movq (%rdi,%rdx), %rdi
movq 0xa8(%rcx), %rcx
movq (%rcx,%rdx), %rcx
movsd (%rdi,%rax,8), %xmm1
mulsd %xmm2, %xmm1
addsd (%rcx,%rax,8), %xmm1
movsd (%rsi,%rax,8), %xmm2
divsd %xmm1, %xmm2
movsd 0xa8(%rsp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, 0xa8(%rsp)
movsd 0x68(%rsp), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0x68(%rsp)
jmp 0x73fd4
movq 0x148(%rsp), %rdx
leaq (,%rax,8), %rsi
leaq (%rsi,%rsi,2), %rsi
movq (%rdx), %rdi
movq 0x30(%rdx), %r8
movq (%rdi,%rsi), %rdi
movq 0x60(%rdx), %r9
movq (%r9,%rsi), %r9
movsd (%r9,%rcx,8), %xmm0
movq 0x90(%rdx), %r9
movq (%r9,%rsi), %r9
movsd 0x80(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd (%r9,%rcx,8), %xmm0
movsd (%rdi,%rcx,8), %xmm2
divsd %xmm0, %xmm2
movq (%r8,%rsi), %rdi
movsd (%rdi,%rcx,8), %xmm3
movq 0x78(%rdx), %rdi
movq (%rdi,%rsi), %rdi
movq 0xa8(%rdx), %rdx
movq (%rdx,%rsi), %rdx
movsd (%rdi,%rcx,8), %xmm0
mulsd %xmm1, %xmm0
addsd (%rdx,%rcx,8), %xmm0
cmpq %rcx, %rax
movq %rcx, %rdx
cmovbq %rax, %rdx
divsd %xmm0, %xmm3
cmovaq %rax, %rcx
movq 0xd0(%rsp), %rax
movq (%rax), %rax
leaq (%rdx,%rdx,2), %rdx
movq (%rax,%rdx,8), %rax
movsd (%rax,%rcx,8), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, (%rax,%rcx,8)
movsd %xmm2, 0x50(%rsp)
movapd %xmm2, %xmm0
movsd %xmm3, 0xc8(%rsp)
subsd %xmm3, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0xb8(%rsp), %rsi
cmpq 0xc0(%rsp), %rsi
je 0x73d74
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xb8(%rsp)
jmp 0x73d86
leaq 0xb0(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x33c70
movsd 0x40(%rsp), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x40(%rsp)
movsd 0x30(%rsp), %xmm0
addsd 0xc8(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
cmpb $0x1, 0xd8(%r12)
jne 0x73fd4
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73def
movq %r12, %rdi
movq %r13, %rsi
callq 0x4d2c2
movq 0x60(%rsp), %rcx
movq 0x120(%rsp), %rdx
cmpq $0x1, %rax
je 0x73ed6
movq %r12, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73e22
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
movq 0x60(%rsp), %rcx
movq 0x120(%rsp), %rdx
cmpq $0x1, %rax
je 0x73ed6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73e52
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4d2c2
movq 0x60(%rsp), %rcx
movq 0x48(%rsp), %rdx
cmpq $0x1, %rax
je 0x73ed6
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73e7e
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
movq 0x60(%rsp), %rcx
movq 0x48(%rsp), %rdx
cmpq $0x1, %rax
je 0x73ed6
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73eaa
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4d2c2
movq 0x78(%rsp), %rcx
movq 0x60(%rsp), %rdx
cmpq $0x1, %rax
je 0x73ed6
movq %r12, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73ef4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
movq 0x78(%rsp), %rcx
movq 0x60(%rsp), %rdx
cmpq $0x1, %rax
jne 0x73ef4
movsd (%rcx), %xmm0
movsd 0x50(%rsp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, (%rcx)
movsd (%rdx), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rdx)
movq %r12, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73f16
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73f27
movq %r14, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73f5a
movq %r12, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73f49
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73f76
movq %r14, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73f76
movsd 0x50(%rsp), %xmm0
addsd 0xd0(%r12), %xmm0
movsd %xmm0, 0xd0(%r12)
jmp 0x73fd4
movq %r14, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73f98
movq %r14, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
je 0x73fba
movq %r14, %rdi
movq %r13, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73fd4
movq %r14, %rdi
movq %r15, %rsi
callq 0x4d2c2
cmpq $0x1, %rax
jne 0x73fd4
movsd 0x50(%rsp), %xmm0
addsd 0xb8(%r12), %xmm0
movsd %xmm0, 0xb8(%r12)
movq 0x70(%rsp), %rcx
incq %rcx
movq %rcx, 0x70(%rsp)
cmpq 0x58(%rsp), %rcx
jne 0x73bc8
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq 0x58(%rsp), %rax
jne 0x73bbd
jmp 0x74010
xorpd %xmm0, %xmm0
movsd %xmm0, 0x68(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0x58(%rsp)
leaq 0x100(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0x80(%rsp)
movq 0x188(%rsp), %rbx
movq 0x118(%rsp), %r14
leaq 0xe0(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0xd0(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x3a4b8
movsd %xmm0, 0xc8(%rsp)
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6ec27
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movl 0xdc(%rsp), %eax
imull %ebp, %eax
addl %eax, %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movsd 0x40(%rsp), %xmm0
movsd %xmm1, 0x50(%rsp)
divsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rsp)
leaq 0x18(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x740d3
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x40(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movsd 0x30(%rsp), %xmm0
divsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x30(%rsp)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x74119
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x30(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
xorps %xmm1, %xmm1
cvtsi2sd %ebp, %xmm1
movsd 0xa8(%rsp), %xmm0
movsd %xmm1, 0x30(%rsp)
divsd %xmm1, %xmm0
movsd %xmm0, 0xa8(%rsp)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x74170
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0xa8(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movsd 0x68(%rsp), %xmm0
divsd 0x30(%rsp), %xmm0
movsd %xmm0, 0x68(%rsp)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x741b9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x741ed
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x58(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x74221
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x80(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x74258
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0xd0(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x7428f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0xc8(%rsp), %xmm0
callq 0x45e1c
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x416a6
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x742c6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x742e3
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x74300
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x7431d
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x7433a
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x1c8(%rsp), %rdi
callq 0x79d9e
leaq 0x198(%rsp), %rdi
callq 0x79d9e
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x170(%rsp), %rdi
callq 0x3123c
addq $0x1f8, %rsp            # imm = 0x1F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x68f99(%rip), %rdi     # 0xdd320
leaq 0x68c74(%rip), %rsi     # 0xdd002
leaq 0x68ed8(%rip), %rcx     # 0xdd26d
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x82c0
leaq 0x68ddf(%rip), %rdi     # 0xdd185
leaq 0x68c55(%rip), %rsi     # 0xdd002
leaq 0x68eb9(%rip), %rcx     # 0xdd26d
movl $0x1ce, %edx            # imm = 0x1CE
callq 0x82c0
leaq 0x68e85(%rip), %rdi     # 0xdd24a
leaq 0x68c36(%rip), %rsi     # 0xdd002
leaq 0x68e9a(%rip), %rcx     # 0xdd26d
movl $0x1c4, %edx            # imm = 0x1C4
callq 0x82c0
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
jmp 0x743fc
jmp 0x74466
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x74469
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x74469
jmp 0x74466
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x74409
jmp 0x74469
jmp 0x74466
jmp 0x74466
jmp 0x74466
jmp 0x74466
jmp 0x74466
jmp 0x7445f
movq %rax, %rbx
jmp 0x74504
movq %rax, %rbx
jmp 0x744f7
jmp 0x74466
jmp 0x74466
jmp 0x7445f
jmp 0x7445f
jmp 0x7445f
jmp 0x7445f
jmp 0x7445f
jmp 0x74466
jmp 0x74466
jmp 0x74466
jmp 0x7445f
movq %rax, %rbx
jmp 0x744dd
jmp 0x74466
movq %rax, %rbx
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x74486
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xe0(%rsp), %rdi
testq %rdi, %rdi
je 0x744a3
movq 0xf0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x744c0
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x744dd
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x1c8(%rsp), %rdi
callq 0x79d9e
leaq 0x198(%rsp), %rdi
callq 0x79d9e
leaq 0x150(%rsp), %rdi
callq 0x3123c
leaq 0x170(%rsp), %rdi
callq 0x3123c
movq %rbx, %rdi
callq 0x8840