// File: /workspace/github_cpp_makefile_star2_O3/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 $0x238, %rsp            # imm = 0x238
movl %r9d, 0x50(%rsp)
movapd %xmm0, 0x130(%rsp)
movq %rcx, 0xb0(%rsp)
movq %rdx, 0x1c8(%rsp)
movq (%rdi), %rax
movq 0x8(%rdi), %rbp
subq %rax, %rbp
movq 0x8(%rsi), %rcx
subq (%rsi), %rcx
cmpq %rcx, %rbp
jne 0x7403c
movq %r8, %r12
movq %rsi, %r14
movq %rdi, %r15
movq %rbp, 0x108(%rsp)
shrq $0x5, %rbp
movq 0x8(%rax), %r13
xorpd %xmm0, %xmm0
leaq 0x180(%rsp), %rdi
movapd %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movslq %ebp, %rbx
movq %rbx, %rsi
callq 0x3e6a2
movq %r13, 0x110(%rsp)
leaq 0x160(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movq %rbx, 0x38(%rsp)
movq %rbx, %rsi
callq 0x3e6a2
xorl %ebx, %ebx
movq 0xb0(%rsp), %rdi
movl %ebp, %esi
xorl %edx, %edx
callq 0x4d690
shlq $0x1b, 0x108(%rsp)
leaq 0x1e0(%rsp), %rax
movl %ebx, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
leaq 0x210(%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 0x72dd9
xorl %eax, %eax
leaq 0x5aca8(%rip), %rbx     # 0xcd9cb
leaq 0x8(%rsp), %r13
movq (%r15), %rcx
shlq $0x5, %rax
movq 0x110(%rsp), %rdx
cmpq %rdx, 0x8(%rcx,%rax)
jne 0x7401d
movq (%r14), %rcx
cmpq %rdx, 0x8(%rcx,%rax)
jne 0x73ffe
movq 0x180(%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 0x160(%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 0x1d8(%rsp), %rdi
movq %r13, %rsi
callq 0x761aa
movl $0x0, (%rax)
leaq 0x208(%rsp), %rdi
movq %r13, %rsi
callq 0x761aa
movl $0x0, (%rax)
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq 0x38(%rsp), %rax
jne 0x72d28
leaq 0x198(%rsp), %rdi
movq %rbp, 0x1d0(%rsp)
movl %ebp, %esi
callq 0x7702e
cmpq $0x0, 0x110(%rsp)
je 0x7307c
xorl %r13d, %r13d
movq %r14, 0x60(%rsp)
movq (%r15), %rax
cmpq %rax, 0x8(%r15)
je 0x72e63
xorl %ebx, %ebx
xorl %ebp, %ebp
movq (%rax,%rbx), %rax
movsbl (%rax,%r13), %esi
movq 0x180(%rsp), %rdi
addq %rbx, %rdi
callq 0x83d0
movq (%r14), %rax
movq (%rax,%rbx), %rax
movsbl (%rax,%r13), %esi
movq 0x160(%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 0x72e14
incq %r13
movq %r13, %rax
movabsq $-0x5555555555555555, %rcx # imm = 0xAAAAAAAAAAAAAAAB
imulq %rcx, %rax
movabsq $0x5555555555555556, %rcx # imm = 0x5555555555555556
cmpq %rcx, %rax
jae 0x73069
cmpb $0x0, 0x50(%rsp)
jne 0x72f8e
movq $0x0, 0x70(%rsp)
cmpq $0x0, 0x108(%rsp)
movq 0x38(%rsp), %rbp
leaq 0x8(%rsp), %r14
je 0x72f8e
xorl %esi, %esi
shlq $0x5, %rsi
addq 0x180(%rsp), %rsi
movq %r14, %rdi
callq 0x76360
movq %r14, %rdi
leaq 0x633bb(%rip), %rsi     # 0xd6292
callq 0x8160
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x72efa
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %ebx, %ebx
jne 0x72f16
leaq 0x1d8(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0x761aa
movl $0x1, (%rax)
movq 0x70(%rsp), %rsi
shlq $0x5, %rsi
addq 0x160(%rsp), %rsi
movq %r14, %rdi
callq 0x76360
movq %r14, %rdi
leaq 0x63359(%rip), %rsi     # 0xd6292
callq 0x8160
movl %eax, %ebx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x72f5c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
testl %ebx, %ebx
leaq 0x208(%rsp), %rdi
jne 0x72f78
leaq 0x70(%rsp), %rsi
callq 0x761aa
movl $0x1, (%rax)
movq 0x70(%rsp), %rsi
incq %rsi
movq %rsi, 0x70(%rsp)
cmpq %rbp, %rsi
jne 0x72eb9
movq 0x198(%rsp), %rdx
leaq 0x180(%rsp), %r14
movq %r14, %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x76b62
leaq 0x160(%rsp), %rbp
leaq 0x208(%rsp), %rbx
movq 0x1a0(%rsp), %rdx
movq %rbp, %rdi
movq %rbx, %rsi
callq 0x76b62
movq 0x1a8(%rsp), %r8
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x1d8(%rsp), %rdx
movq %rbx, %rcx
callq 0x770a8
movq 0x1a8(%rsp), %r8
movq %r14, %rdi
movq %rbp, %rsi
leaq 0x1d8(%rsp), %rdx
movq %rbx, %rcx
callq 0x773e5
cmpq $0x0, 0x108(%rsp)
je 0x73069
xorl %ebx, %ebx
movq 0x38(%rsp), %rbp
movq 0x180(%rsp), %rdi
movq 0x8(%rdi,%rbx), %rdx
addq %rbx, %rdi
xorl %esi, %esi
leaq 0x5a993(%rip), %r14     # 0xcd9cb
movq %r14, %rcx
xorl %r8d, %r8d
callq 0x86c0
movq 0x160(%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 0x7301f
cmpq 0x110(%rsp), %r13
movq 0x60(%rsp), %r14
jne 0x72e07
xorpd %xmm1, %xmm1
movapd %xmm1, 0x70(%rsp)
xorl %eax, %eax
movq %rax, 0x80(%rsp)
movq %rax, 0x100(%rsp)
movapd %xmm1, 0xf0(%rsp)
movq %rax, 0xe0(%rsp)
movapd %xmm1, 0xd0(%rsp)
movq %rax, 0xa0(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x140(%rsp)
movapd %xmm1, 0x90(%rsp)
movq 0x1d0(%rsp), %rbp
movl %ebp, %ecx
movq %rax, 0x8(%rsp)
movapd %xmm0, 0x60(%rsp)
decl %ecx
movl %ecx, 0xbc(%rsp)
je 0x737f4
movslq 0xbc(%rsp), %r13
movapd 0x130(%rsp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, 0x118(%rsp)
leaq 0x38(%r12), %rbx
leaq 0x70(%r12), %rax
movq %rax, 0x88(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x60(%rsp)
xorl %eax, %eax
leaq 0x8(%rsp), %r14
leaq 0x40(%rsp), %r15
incq %rax
movq %rax, 0x40(%rsp)
cmpq 0x38(%rsp), %rax
je 0x737e6
movq 0x198(%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 0x118(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd (%rdi,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x28(%rsp)
movq 0xb0(%rsp), %rdx
movq (%rdx), %rdx
movq (%rdx,%rcx), %rdx
movsd (%rdx,%rax,8), %xmm0
movapd %xmm2, 0x50(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, (%rdx,%rax,8)
movq 0x30(%rsi), %rdi
movq 0x78(%rsi), %r8
movq (%rdi,%rcx), %rdi
movq (%r8,%rcx), %r8
movq 0xa8(%rsi), %rsi
movq (%rsi,%rcx), %rsi
movsd (%r8,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd (%rsi,%rax,8), %xmm0
movsd (%rdi,%rax,8), %xmm2
divsd %xmm0, %xmm2
movapd %xmm2, 0xc0(%rsp)
movsd %xmm2, 0x128(%rsp)
movq 0x1a0(%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, 0x30(%rsp)
movsd (%rdx,%rax,8), %xmm0
movapd %xmm2, 0x150(%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
movapd %xmm2, 0x1b0(%rsp)
movsd %xmm2, 0x120(%rsp)
movsd 0x28(%rsp), %xmm0
subsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rax
cmpq %rax, %rsi
je 0x732e1
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x73303
leaq 0x90(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x311fc
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rax
movsd 0x30(%rsp), %xmm0
subsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
cmpq %rax, %rsi
je 0x7332f
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x73341
leaq 0x90(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x311fc
movq 0x8(%rsp), %rax
testb $0x1, %al
jne 0x734ef
orq $0x1, %rax
cmpq %rax, 0x40(%rsp)
jne 0x734ef
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rax
cmpq %rax, %rsi
je 0x73384
movsd 0x28(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x733a0
leaq 0x70(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x79b8e
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rax
cmpq %rax, %rsi
je 0x733ba
movsd 0x30(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x733c9
leaq 0x70(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x79b8e
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rax
cmpq %rax, %rsi
je 0x733f9
movsd 0x128(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x7341e
leaq 0xf0(%rsp), %rdi
leaq 0x128(%rsp), %rdx
callq 0x79b8e
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rax
cmpq %rax, %rsi
je 0x7343e
movsd 0x120(%rsp), %xmm0
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xf8(%rsp)
jmp 0x73453
leaq 0xf0(%rsp), %rdi
leaq 0x120(%rsp), %rdx
callq 0x79b8e
movsd 0x28(%rsp), %xmm0
subsd 0x128(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rax
cmpq %rax, %rsi
je 0x7348f
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xd8(%rsp)
jmp 0x734b1
leaq 0xd0(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x311fc
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rax
movsd 0x30(%rsp), %xmm0
subsd 0x120(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
cmpq %rax, %rsi
je 0x734dd
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0xd8(%rsp)
jmp 0x734ef
leaq 0xd0(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq 0x311fc
cmpb $0x1, 0xd8(%r12)
jne 0x7370b
movq %r12, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7351e
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x7353e
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73583
movq %r12, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73583
movsd 0x28(%rsp), %xmm0
movsd 0xc0(%r12), %xmm1
addsd %xmm0, %xmm1
movsd 0x30(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0xc0(%r12)
addsd 0xa8(%r12), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xa8(%r12)
jmp 0x7370b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x735a3
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x735c3
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73608
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73608
movsd 0x28(%rsp), %xmm0
movsd 0xc0(%r12), %xmm1
addsd %xmm0, %xmm1
movsd 0x30(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, 0xc0(%r12)
addsd 0xb0(%r12), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, 0xb0(%r12)
jmp 0x7370b
movq %r12, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73628
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x73648
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7367d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7367d
movupd 0xc0(%r12), %xmm0
movsd 0x28(%rsp), %xmm1
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
addpd %xmm0, %xmm1
movsd 0x30(%rsp), %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
addpd %xmm1, %xmm0
movupd %xmm0, 0xc0(%r12)
jmp 0x7370b
movq %r12, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x7369d
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x736b2
movq 0x88(%rsp), %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x736eb
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x736d6
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7375d
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7375d
movsd 0xd0(%r12), %xmm0
addsd 0x28(%rsp), %xmm0
addsd 0x30(%rsp), %xmm0
movsd %xmm0, 0xd0(%r12)
movapd 0x50(%rsp), %xmm1
unpcklpd 0xc0(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x60(%rsp), %xmm0
addpd %xmm1, %xmm0
movapd 0x150(%rsp), %xmm1
unpcklpd 0x1b0(%rsp), %xmm1      # xmm1 = xmm1[0],mem[0]
addpd %xmm0, %xmm1
movapd %xmm1, 0x60(%rsp)
movq 0x40(%rsp), %rax
incq %rax
movq %rax, 0x40(%rsp)
cmpq 0x38(%rsp), %rax
jne 0x7314d
jmp 0x737de
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73787
movq 0x88(%rsp), %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x737b9
movq 0x88(%rsp), %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7370b
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0x4a242
testq %rax, %rax
je 0x7370b
movsd 0xb8(%r12), %xmm0
addsd 0x28(%rsp), %xmm0
addsd 0x30(%rsp), %xmm0
movsd %xmm0, 0xb8(%r12)
jmp 0x7370b
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq %r13, %rax
jne 0x7313a
movq $0x0, 0x8(%rsp)
cmpq $0x0, 0x108(%rsp)
je 0x73c83
movapd 0x130(%rsp), %xmm0
addsd %xmm0, %xmm0
leaq 0xc0(%r12), %rax
movq %rax, 0xc0(%rsp)
leaq 0xa8(%r12), %rax
movq %rax, 0x150(%rsp)
leaq 0x38(%r12), %rbx
leaq 0xb0(%r12), %rax
movq %rax, 0x1b0(%rsp)
leaq 0xc8(%r12), %rax
movq %rax, 0x118(%rsp)
leaq 0x70(%r12), %r14
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
movapd %xmm0, 0x130(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0x140(%rsp)
leaq 0x8(%rsp), %r15
leaq 0x40(%rsp), %r13
movq $0x0, 0x40(%rsp)
xorl %eax, %eax
movq 0x8(%rsp), %rcx
movq 0x1a8(%rsp), %rsi
movq (%rsi), %r9
movq 0x30(%rsi), %rdx
movq 0x60(%rsi), %r10
movq 0x90(%rsi), %r8
movq 0x78(%rsi), %rdi
cmpq %rax, %rcx
jne 0x73932
leaq (,%rax,8), %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%r9,%rcx), %r9
movq (%r10,%rcx), %r10
movq (%r8,%rcx), %r8
movq (%rdi,%rcx), %rdi
movq 0xa8(%rsi), %rsi
movsd (%r10,%rax,8), %xmm0
movhpd (%rdi,%rax,8), %xmm0    # xmm0 = xmm0[0],mem[0]
movq (%rsi,%rcx), %rsi
movsd (%r8,%rax,8), %xmm1
movhpd (%rsi,%rax,8), %xmm1    # xmm1 = xmm1[0],mem[0]
movq (%rdx,%rcx), %rcx
mulpd 0x130(%rsp), %xmm0
addpd %xmm1, %xmm0
movsd (%r9,%rax,8), %xmm1
movhpd (%rcx,%rax,8), %xmm1    # xmm1 = xmm1[0],mem[0]
divpd %xmm0, %xmm1
movapd 0x140(%rsp), %xmm0
addpd %xmm1, %xmm0
movapd %xmm0, 0x140(%rsp)
jmp 0x73bf5
leaq (,%rcx,8), %r11
leaq (%r11,%r11,2), %r11
movq (%r9,%r11), %r9
movq (%r10,%r11), %r10
movq (%r8,%r11), %r8
movq (%rdi,%r11), %rdi
movq 0xa8(%rsi), %rsi
movsd (%r10,%rax,8), %xmm0
movhpd (%rdi,%rax,8), %xmm0    # xmm0 = xmm0[0],mem[0]
movq (%rsi,%r11), %rsi
movsd (%r8,%rax,8), %xmm1
movhpd (%rsi,%rax,8), %xmm1    # xmm1 = xmm1[0],mem[0]
movq (%rdx,%r11), %rdx
mulpd 0x130(%rsp), %xmm0
addpd %xmm1, %xmm0
movsd (%r9,%rax,8), %xmm2
movhpd (%rdx,%rax,8), %xmm2    # xmm2 = xmm2[0],mem[0]
divpd %xmm0, %xmm2
movq 0xb0(%rsp), %rdx
movq (%rdx), %rdx
cmpq %rax, %rcx
movq %rax, %rsi
cmovbq %rcx, %rsi
cmovaq %rcx, %rax
leaq (%rsi,%rsi,2), %rcx
movq (%rdx,%rcx,8), %rcx
movsd (%rcx,%rax,8), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, (%rcx,%rax,8)
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
movapd %xmm2, 0x50(%rsp)
movapd %xmm2, %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, 0x28(%rsp)
movq 0x98(%rsp), %rsi
cmpq 0xa0(%rsp), %rsi
je 0x739fe
movsd %xmm0, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x98(%rsp)
jmp 0x73a10
leaq 0x90(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x311fc
movapd 0x60(%rsp), %xmm0
addpd 0x50(%rsp), %xmm0
movapd %xmm0, 0x60(%rsp)
cmpb $0x1, 0xd8(%r12)
jne 0x73bf5
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73a65
movq %r12, %rdi
movq %r13, %rsi
callq 0x4a242
movq 0xc0(%rsp), %rcx
movq 0x150(%rsp), %rdx
testq %rax, %rax
jne 0x73b5d
movq %r12, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73a99
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
movq 0xc0(%rsp), %rcx
movq 0x150(%rsp), %rdx
testq %rax, %rax
jne 0x73b5d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73acd
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4a242
movq 0xc0(%rsp), %rcx
movq 0x1b0(%rsp), %rdx
testq %rax, %rax
jne 0x73b5d
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73afd
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
movq 0xc0(%rsp), %rcx
movq 0x1b0(%rsp), %rdx
testq %rax, %rax
jne 0x73b5d
movq %r12, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73b2d
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4a242
movq 0x118(%rsp), %rcx
movq 0xc0(%rsp), %rdx
testq %rax, %rax
jne 0x73b5d
movq %r12, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73b7b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
movq 0x118(%rsp), %rcx
movq 0xc0(%rsp), %rdx
testq %rax, %rax
je 0x73b7b
movsd (%rcx), %xmm0
movapd 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 0x4a242
testq %rax, %rax
jne 0x73b9b
movq %rbx, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73bab
movq %r14, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x73bdb
movq %r12, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x73bcb
movq %rbx, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73c0f
movq %r14, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73c0f
movsd 0xd0(%r12), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0xd0(%r12)
movq 0x40(%rsp), %rax
incq %rax
movq %rax, 0x40(%rsp)
cmpq 0x38(%rsp), %rax
jne 0x73892
jmp 0x73c6b
movq %r14, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73c2f
movq %r14, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
jne 0x73c4f
movq %r14, %rdi
movq %r13, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73bf5
movq %r14, %rdi
movq %r15, %rsi
callq 0x4a242
testq %rax, %rax
je 0x73bf5
movsd 0xb8(%r12), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0xb8(%r12)
jmp 0x73bf5
movq 0x8(%rsp), %rax
incq %rax
movq %rax, 0x8(%rsp)
cmpq 0x38(%rsp), %rax
jne 0x73887
leaq 0x70(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0x38(%rsp)
leaq 0xf0(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0x130(%rsp)
movq 0x1c8(%rsp), %rbx
movq 0x110(%rsp), %r14
leaq 0xd0(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0xb0(%rsp)
leaq 0x90(%rsp), %rdi
callq 0x37608
movsd %xmm0, 0xc0(%rsp)
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x6e90d
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movl 0xbc(%rsp), %eax
imull %ebp, %eax
addl %eax, %eax
xorps %xmm1, %xmm1
cvtsi2sd %eax, %xmm1
movapd 0x60(%rsp), %xmm0
movsd %xmm1, 0x50(%rsp)
divsd %xmm1, %xmm0
leaq 0x18(%rsp), %r14
movq -0x10(%r14), %rdi
cmpq %r14, %rdi
je 0x73d4f
movq 0x18(%rsp), %rsi
incq %rsi
movapd %xmm0, 0x150(%rsp)
callq 0x8480
movapd 0x150(%rsp), %xmm0
leaq 0x8(%rsp), %rdi
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movapd 0x60(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
divsd 0x50(%rsp), %xmm0
movapd %xmm0, 0x60(%rsp)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73d93
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movapd 0x60(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
xorps %xmm1, %xmm1
cvtsi2sd %ebp, %xmm1
movapd 0x140(%rsp), %xmm0
movsd %xmm1, 0x60(%rsp)
divsd %xmm1, %xmm0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73ded
movq 0x18(%rsp), %rsi
incq %rsi
movapd %xmm0, 0x50(%rsp)
callq 0x8480
movapd 0x50(%rsp), %xmm0
leaq 0x8(%rsp), %rdi
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movapd 0x140(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
divsd 0x60(%rsp), %xmm0
movapd %xmm0, 0x140(%rsp)
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73e37
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movapd 0x140(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73e6e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x38(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73ea2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0x130(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73ed9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0xb0(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73f10
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0x8(%rsp), %rdi
movsd 0xc0(%rsp), %xmm0
callq 0x42f10
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x3e784
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x73f47
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x73f64
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x73f81
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x73f9e
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x73fb8
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x208(%rsp), %rdi
callq 0x79a02
leaq 0x1d8(%rsp), %rdi
callq 0x79a02
leaq 0x160(%rsp), %rdi
callq 0x2e784
leaq 0x180(%rsp), %rdi
callq 0x2e784
addq $0x238, %rsp            # imm = 0x238
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x623ab(%rip), %rdi     # 0xd63b0
leaq 0x62086(%rip), %rsi     # 0xd6092
leaq 0x622ea(%rip), %rcx     # 0xd62fd
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x82c0
leaq 0x621f1(%rip), %rdi     # 0xd6215
leaq 0x62067(%rip), %rsi     # 0xd6092
leaq 0x622cb(%rip), %rcx     # 0xd62fd
movl $0x1ce, %edx            # imm = 0x1CE
callq 0x82c0
leaq 0x62297(%rip), %rdi     # 0xd62da
leaq 0x62048(%rip), %rsi     # 0xd6092
leaq 0x622ac(%rip), %rcx     # 0xd62fd
movl $0x1c4, %edx            # imm = 0x1C4
callq 0x82c0
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
jmp 0x7407a
jmp 0x740e4
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x740e7
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0x740e7
jmp 0x740e4
movq %rax, %rbx
leaq 0x18(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x74087
jmp 0x740e7
jmp 0x740e4
jmp 0x740e4
jmp 0x740e4
jmp 0x740e4
jmp 0x740e4
jmp 0x740df
movq %rax, %rbx
jmp 0x7417f
movq %rax, %rbx
jmp 0x74172
jmp 0x740e4
jmp 0x740e4
jmp 0x740df
jmp 0x740df
jmp 0x740df
jmp 0x740df
jmp 0x740df
jmp 0x740e4
jmp 0x740e4
jmp 0x740e4
jmp 0x740df
jmp 0x740e4
movq %rax, %rbx
jmp 0x74158
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x74104
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x74121
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x7413e
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x74158
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
leaq 0x208(%rsp), %rdi
callq 0x79a02
leaq 0x1d8(%rsp), %rdi
callq 0x79a02
leaq 0x160(%rsp), %rdi
callq 0x2e784
leaq 0x180(%rsp), %rdi
callq 0x2e784
movq %rbx, %rdi
callq 0x8840