// File: /workspace/github_cpp_makefile_star2_O2/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 $0x258, %rsp            # imm = 0x258
movl %r9d, 0x40(%rsp)
movapd %xmm0, 0x70(%rsp)
movq %rcx, 0x68(%rsp)
movq (%rdi), %rax
movq 0x8(%rdi), %r13
subq %rax, %r13
movq 0x8(%rsi), %rcx
subq (%rsi), %rcx
cmpq %rcx, %r13
jne 0x593a3
movq %r8, %r12
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
shrq $0x5, %r13
movq 0x8(%rax), %rax
movq %rax, 0xc0(%rsp)
xorpd %xmm0, %xmm0
leaq 0x110(%rsp), %rdi
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movslq %r13d, %rbp
movq %rbp, %rsi
callq 0x34872
movq %rbx, 0x1a8(%rsp)
leaq 0x130(%rsp), %rdi
xorpd %xmm0, %xmm0
movapd %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movq %rbp, 0x80(%rsp)
movq %rbp, %rsi
callq 0x34872
movq 0x68(%rsp), %rdi
movl %r13d, %esi
xorl %edx, %edx
callq 0x40386
movq %r13, 0xb8(%rsp)
leaq 0x200(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
leaq 0x230(%rsp), %rax
andl $0x0, (%rax)
andq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
andq $0x0, 0x20(%rax)
xorl %edi, %edi
leaq 0x41a95(%rip), %rbx     # 0x99e1f
leaq 0x1f8(%rsp), %rbp
leaq 0x18(%rsp), %r13
movq %rdi, 0x18(%rsp)
cmpq 0x80(%rsp), %rdi
je 0x58425
movq (%r15), %rax
shlq $0x5, %rdi
movq 0xc0(%rsp), %rcx
cmpq %rcx, 0x8(%rax,%rdi)
jne 0x59384
movq (%r14), %rax
cmpq %rcx, 0x8(%rax,%rdi)
jne 0x59365
addq 0x110(%rsp), %rdi
movq %rbx, %rsi
callq 0x88f0
movq 0x18(%rsp), %rdi
shlq $0x5, %rdi
addq 0x130(%rsp), %rdi
movq %rbx, %rsi
callq 0x88f0
movq %rbp, %rdi
movq %r13, %rsi
callq 0x5a5fe
andl $0x0, (%rax)
leaq 0x228(%rsp), %rdi
movq %r13, %rsi
callq 0x5a5fe
andl $0x0, (%rax)
movq 0x18(%rsp), %rdi
incq %rdi
jmp 0x58397
leaq 0x158(%rsp), %rdi
movq 0xb8(%rsp), %rsi
callq 0x5b0f6
xorl %r13d, %r13d
movq %r14, 0x50(%rsp)
cmpq 0xc0(%rsp), %r13
je 0x5866d
xorl %ebp, %ebp
xorl %ebx, %ebx
movq (%r15), %rax
movq 0x8(%r15), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %rcx, %rbx
je 0x584a5
movq (%rax,%rbp), %rax
movsbl (%rax,%r13), %esi
movq 0x110(%rsp), %rdi
addq %rbp, %rdi
callq 0x8400
movq (%r14), %rax
movq (%rax,%rbp), %rax
movsbl (%rax,%r13), %esi
movq 0x130(%rsp), %rdi
addq %rbp, %rdi
callq 0x8400
incq %rbx
addq $0x20, %rbp
jmp 0x58454
incq %r13
movq %r13, %rax
xorl %edx, %edx
pushq $0x3
popq %rcx
divq %rcx
testq %rdx, %rdx
leaq 0x130(%rsp), %rbp
jne 0x58442
cmpb $0x0, 0x40(%rsp)
movq 0x80(%rsp), %rbx
je 0x58596
movq 0x158(%rsp), %rdx
leaq 0x110(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x5ad86
leaq 0x228(%rsp), %r14
movq 0x160(%rsp), %rdx
movq %rbp, %rdi
movq %r14, %rsi
callq 0x5ad86
movq 0x168(%rsp), %r8
leaq 0x110(%rsp), %rdi
movq %rbp, %rsi
leaq 0x1f8(%rsp), %rdx
movq %r14, %rcx
callq 0x5b170
movq 0x168(%rsp), %r8
leaq 0x110(%rsp), %rdi
movq %rbp, %rsi
leaq 0x1f8(%rsp), %rdx
movq %r14, %rcx
callq 0x5b400
xorl %ebp, %ebp
leaq 0x418c5(%rip), %r14     # 0x99e1f
subq $0x1, %rbx
jb 0x5858c
movq 0x110(%rsp), %rdi
addq %rbp, %rdi
movq %r14, %rsi
callq 0x88f0
movq 0x130(%rsp), %rdi
addq %rbp, %rdi
movq %r14, %rsi
callq 0x88f0
addq $0x20, %rbp
jmp 0x5855a
movq 0x50(%rsp), %r14
jmp 0x58442
xorl %esi, %esi
movq %rsi, 0xf0(%rsp)
cmpq %rbx, %rsi
je 0x584d3
shlq $0x5, %rsi
addq 0x110(%rsp), %rsi
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
callq 0x5a79e
movq %rbp, %rdi
leaq 0x4c202(%rip), %rsi     # 0xa47ce
callq 0x2193f
movq %rbp, %rdi
movl %eax, %ebp
callq 0x8978
testb %bpl, %bpl
je 0x585fb
leaq 0x1f8(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5a5fe
movl $0x1, (%rax)
movq 0xf0(%rsp), %rsi
shlq $0x5, %rsi
addq 0x130(%rsp), %rsi
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
callq 0x5a79e
movq %rbp, %rdi
leaq 0x4c1a8(%rip), %rsi     # 0xa47ce
callq 0x2193f
movq %rbp, %rdi
movl %eax, %ebp
callq 0x8978
testb %bpl, %bpl
je 0x58655
leaq 0x228(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0x5a5fe
movl $0x1, (%rax)
movq 0xf0(%rsp), %rsi
incq %rsi
leaq 0x130(%rsp), %rbp
jmp 0x58598
xorpd %xmm1, %xmm1
leaq 0xf0(%rsp), %rax
movapd %xmm1, (%rax)
andq $0x0, 0x10(%rax)
leaq 0x190(%rsp), %rax
andq $0x0, 0x10(%rax)
leaq 0x1e0(%rsp), %rcx
andq $0x0, 0x10(%rcx)
movapd %xmm1, (%rax)
movapd %xmm1, (%rcx)
leaq 0x1c0(%rsp), %r15
xorpd %xmm0, %xmm0
movapd %xmm0, 0x40(%rsp)
movapd %xmm1, (%r15)
andq $0x0, 0x10(%r15)
movq 0xb8(%rsp), %rax
decl %eax
movl %eax, 0xec(%rsp)
cltq
movq %rax, 0x1b0(%rsp)
movapd 0x70(%rsp), %xmm0
addsd %xmm0, %xmm0
movapd %xmm0, 0x70(%rsp)
leaq 0x38(%r12), %rbx
leaq 0x70(%r12), %rax
movq %rax, 0x8(%rsp)
leaq 0xc8(%r12), %rax
movq %rax, 0x150(%rsp)
leaq 0xc0(%r12), %rbp
leaq 0xb0(%r12), %rax
movq %rax, 0xc8(%rsp)
leaq 0xa8(%r12), %rax
movq %rax, 0xd0(%rsp)
xorl %eax, %eax
leaq 0x98(%rsp), %r14
leaq 0x18(%rsp), %r13
movq %r12, 0x1b8(%rsp)
movq %rax, 0x18(%rsp)
cmpq 0x1b0(%rsp), %rax
je 0x58ca9
leaq 0x1(%rax), %rcx
movq %rcx, (%rsp)
cmpq 0x80(%rsp), %rcx
je 0x58c9c
movq 0x158(%rsp), %rsi
imulq $0x18, 0x18(%rsp), %rcx
movq (%rsi), %rdx
movq 0x60(%rsi), %rdi
movq (%rdx,%rcx), %rdx
movsd 0x8(%rdx,%rax,8), %xmm2
movq (%rdi,%rcx), %rdx
movq 0x90(%rsi), %rdi
movq (%rdi,%rcx), %rdi
movsd 0x8(%rdx,%rax,8), %xmm0
movapd 0x70(%rsp), %xmm1
mulsd %xmm1, %xmm0
addsd 0x8(%rdi,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x10(%rsp)
movq 0x68(%rsp), %rdx
movq (%rdx), %rdx
movq (%rdx,%rcx), %rdx
movsd 0x8(%rdx,%rax,8), %xmm0
movapd %xmm2, 0x50(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, 0x8(%rdx,%rax,8)
movq 0x30(%rsi), %rdi
movq 0x78(%rsi), %r8
movq (%rdi,%rcx), %rdi
movsd 0x8(%rdi,%rax,8), %xmm2
movq (%r8,%rcx), %rdi
movq 0xa8(%rsi), %rsi
movq (%rsi,%rcx), %rsi
movsd 0x8(%rdi,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd 0x8(%rsi,%rax,8), %xmm0
divsd %xmm0, %xmm2
movapd %xmm2, 0xa0(%rsp)
movsd %xmm2, 0xe0(%rsp)
movq 0x160(%rsp), %rsi
movq (%rsi), %rdi
movq 0x60(%rsi), %r8
movq (%rdi,%rcx), %rdi
movsd 0x8(%rdi,%rax,8), %xmm2
movq (%r8,%rcx), %rdi
movq 0x90(%rsi), %r8
movq (%r8,%rcx), %r8
movsd 0x8(%rdi,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd 0x8(%r8,%rax,8), %xmm0
divsd %xmm0, %xmm2
movsd %xmm2, 0x38(%rsp)
movsd 0x8(%rdx,%rax,8), %xmm0
movapd %xmm2, 0x180(%rsp)
addsd %xmm2, %xmm0
movsd %xmm0, 0x8(%rdx,%rax,8)
movq 0x30(%rsi), %rdx
movq 0x78(%rsi), %rdi
movq (%rdx,%rcx), %rdx
movsd 0x8(%rdx,%rax,8), %xmm2
movq (%rdi,%rcx), %rdx
movq 0xa8(%rsi), %rsi
movq (%rsi,%rcx), %rcx
movsd 0x8(%rdx,%rax,8), %xmm0
mulsd %xmm1, %xmm0
addsd 0x8(%rcx,%rax,8), %xmm0
divsd %xmm0, %xmm2
movapd %xmm2, 0x170(%rsp)
movsd %xmm2, 0xd8(%rsp)
movsd 0x10(%rsp), %xmm0
subsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movq %r15, %rdi
movq %r14, %rsi
callq 0x2af10
movsd 0x38(%rsp), %xmm0
subsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movq %r15, %rdi
movq %r14, %rsi
callq 0x2af10
movq 0x18(%rsp), %rax
testb $0x1, %al
jne 0x589f2
orq $0x1, %rax
cmpq %rax, (%rsp)
jne 0x589f2
leaq 0xf0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x5a406
leaq 0xf0(%rsp), %rdi
leaq 0x38(%rsp), %rsi
callq 0x5a406
leaq 0x190(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0x5a406
leaq 0x190(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x5a406
movq %r15, %r12
movq %rbx, %r15
movq %r13, %rbx
movq %rbp, %r13
movsd 0x10(%rsp), %xmm0
subsd 0xe0(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
leaq 0x1e0(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
callq 0x2af10
movsd 0x38(%rsp), %xmm0
subsd 0xd8(%rsp), %xmm0
movsd %xmm0, 0x98(%rsp)
movq %rbp, %rdi
movq %r14, %rbp
movq %r14, %rsi
callq 0x2af10
movq %r13, %rax
movq %rbx, %r13
movq %r15, %rbx
movq %r12, %r15
movq %rbp, %r14
movq %rax, %rbp
movq 0x1b8(%rsp), %r12
cmpb $0x1, 0xd8(%r12)
jne 0x58ae7
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58a23
movq %r12, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58a45
movq %r12, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58a6d
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58a6d
movsd 0x10(%rsp), %xmm0
movsd (%rbp), %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, (%rbp)
movq 0xd0(%rsp), %rax
jmp 0x58adb
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58a8f
movq %rbx, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58ab5
movq %rbx, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58b25
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58b25
movsd 0x10(%rsp), %xmm0
movsd (%rbp), %xmm1
addsd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm2
addsd %xmm2, %xmm1
movsd %xmm1, (%rbp)
movq 0xc8(%rsp), %rax
addsd (%rax), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, (%rax)
movapd 0x50(%rsp), %xmm1
unpcklpd 0xa0(%rsp), %xmm1       # xmm1 = xmm1[0],mem[0]
movapd 0x40(%rsp), %xmm0
addpd %xmm1, %xmm0
movapd 0x180(%rsp), %xmm1
unpcklpd 0x170(%rsp), %xmm1      # xmm1 = xmm1[0],mem[0]
addpd %xmm1, %xmm0
movapd %xmm0, 0x40(%rsp)
movq (%rsp), %rax
jmp 0x5875c
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58b47
movq %rbx, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58b69
movq %r12, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58b94
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58b94
movupd (%rbp), %xmm0
movsd 0x10(%rsp), %xmm1
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
addpd %xmm0, %xmm1
movsd 0x38(%rsp), %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
addpd %xmm1, %xmm0
movupd %xmm0, (%rbp)
jmp 0x58ae7
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58bb6
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58bc9
movq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58bfe
movq %r12, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58beb
movq %rbx, %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58c23
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58c23
movsd 0xd0(%r12), %xmm0
addsd 0x10(%rsp), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0xd0(%r12)
jmp 0x58ae7
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58c49
movq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58c77
movq 0x8(%rsp), %rdi
movq %rsp, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58ae7
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58ae7
movsd 0xb8(%r12), %xmm0
addsd 0x10(%rsp), %xmm0
addsd 0x38(%rsp), %xmm0
movsd %xmm0, 0xb8(%r12)
jmp 0x58ae7
movq 0x18(%rsp), %rax
incq %rax
jmp 0x58749
movapd 0x70(%rsp), %xmm0
unpcklpd %xmm0, %xmm0            # xmm0 = xmm0[0,0]
movapd %xmm0, 0x70(%rsp)
xorpd %xmm0, %xmm0
movapd %xmm0, 0xa0(%rsp)
xorl %eax, %eax
leaq 0x10(%rsp), %r15
leaq 0x18(%rsp), %r13
movq %rsp, %r14
movq %rax, 0x18(%rsp)
cmpq 0x80(%rsp), %rax
je 0x59099
xorl %eax, %eax
movq %rax, (%rsp)
cmpq 0x80(%rsp), %rax
je 0x5908c
movq 0x18(%rsp), %rcx
movq 0x168(%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 0x58d91
imulq $0x18, %rax, %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 0x70(%rsp), %xmm0
addpd %xmm1, %xmm0
movsd (%r9,%rax,8), %xmm1
movhpd (%rcx,%rax,8), %xmm1    # xmm1 = xmm1[0],mem[0]
divpd %xmm0, %xmm1
movapd 0xa0(%rsp), %xmm0
addpd %xmm1, %xmm0
movapd %xmm0, 0xa0(%rsp)
jmp 0x59080
imulq $0x18, %rcx, %r11
movq (%r9,%r11), %r9
movq (%r10,%r11), %r10
movq (%r8,%r11), %r8
movq (%rdx,%r11), %rdx
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]
mulpd 0x70(%rsp), %xmm0
movsd (%r9,%rax,8), %xmm2
movhpd (%rdx,%rax,8), %xmm2    # xmm2 = xmm2[0],mem[0]
addpd %xmm1, %xmm0
divpd %xmm0, %xmm2
movq 0x68(%rsp), %rdx
movq (%rdx), %rdx
cmpq %rax, %rcx
movq %rax, %rsi
cmovaq %rcx, %rax
cmovbq %rcx, %rsi
imulq $0x18, %rsi, %rcx
movq (%rdx,%rcx), %rcx
movsd (%rcx,%rax,8), %xmm0
addsd %xmm2, %xmm0
movsd %xmm0, (%rcx,%rax,8)
movapd %xmm2, %xmm0
unpckhpd %xmm2, %xmm0            # xmm0 = xmm0[1],xmm2[1]
movapd %xmm2, 0x50(%rsp)
movapd %xmm2, %xmm1
subsd %xmm0, %xmm1
movsd %xmm1, 0x10(%rsp)
leaq 0x1c0(%rsp), %rdi
movq %r15, %rsi
callq 0x2af10
movapd 0x40(%rsp), %xmm0
addpd 0x50(%rsp), %xmm0
movapd %xmm0, 0x40(%rsp)
cmpb $0x1, 0xd8(%r12)
jne 0x59080
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58e8d
movq %r12, %rdi
movq %r14, %rsi
callq 0x3d9a2
movq %rbp, %rcx
movq 0xd0(%rsp), %rdx
cmpq $0x1, %rax
je 0x58f76
movq %r12, %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58ebe
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
movq %rbp, %rcx
movq 0xd0(%rsp), %rdx
cmpq $0x1, %rax
je 0x58f76
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58eef
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3d9a2
movq %rbp, %rcx
movq 0xc8(%rsp), %rdx
cmpq $0x1, %rax
je 0x58f76
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58f1c
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
movq %rbp, %rcx
movq 0xc8(%rsp), %rdx
cmpq $0x1, %rax
je 0x58f76
movq %r12, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58f49
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3d9a2
movq 0x150(%rsp), %rcx
movq %rbp, %rdx
cmpq $0x1, %rax
je 0x58f76
movq %r12, %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58f94
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
movq 0x150(%rsp), %rcx
movq %rbp, %rdx
cmpq $0x1, %rax
jne 0x58f94
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 %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58fb6
movq %rbx, %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x58fc9
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58ffe
movq %r12, %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x58feb
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x5901a
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x5901a
movsd 0xd0(%r12), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0xd0(%r12)
jmp 0x59080
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x59040
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
je 0x59066
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x59080
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x3d9a2
cmpq $0x1, %rax
jne 0x59080
movsd 0xb8(%r12), %xmm0
addsd 0x50(%rsp), %xmm0
movsd %xmm0, 0xb8(%r12)
movq (%rsp), %rax
incq %rax
jmp 0x58cea
movq 0x18(%rsp), %rax
incq %rax
jmp 0x58cd5
leaq 0xf0(%rsp), %rdi
callq 0x2f3e3
movsd %xmm0, 0x70(%rsp)
leaq 0x190(%rsp), %rdi
callq 0x2f3e3
movsd %xmm0, 0x180(%rsp)
movq 0x1a8(%rsp), %rbx
movq 0xb8(%rsp), %r14
movq 0xc0(%rsp), %r15
leaq 0x1e0(%rsp), %rdi
callq 0x2f3e3
movsd %xmm0, 0x170(%rsp)
leaq 0x1c0(%rsp), %rdi
callq 0x2f3e3
movsd %xmm0, 0x68(%rsp)
leaq 0x18(%rsp), %rdi
movq %r15, %rsi
callq 0x554cb
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
movl 0xec(%rsp), %eax
imull %r14d, %eax
addl %eax, %eax
cvtsi2sd %eax, %xmm0
movapd 0x40(%rsp), %xmm1
movsd %xmm0, 0x50(%rsp)
divsd %xmm0, %xmm1
movapd %xmm1, 0x80(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movapd 0x80(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
movapd 0x40(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
divsd 0x50(%rsp), %xmm0
movapd %xmm0, 0x40(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movapd 0x40(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
cvtsi2sd %r14d, %xmm0
movapd 0xa0(%rsp), %xmm1
movsd %xmm0, 0x80(%rsp)
divsd %xmm0, %xmm1
movapd %xmm1, 0x40(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movapd 0x40(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
movapd 0xa0(%rsp), %xmm0
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
divsd 0x80(%rsp), %xmm0
movapd %xmm0, 0xa0(%rsp)
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movapd 0xa0(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movsd 0x70(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movsd 0x180(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movsd 0x170(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x18(%rsp), %rdi
movsd 0x68(%rsp), %xmm0
callq 0x37bd4
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x3490e
leaq 0x18(%rsp), %rdi
callq 0x8978
leaq 0x1c0(%rsp), %rdi
callq 0x2b43c
leaq 0x1e0(%rsp), %rdi
callq 0x2b43c
leaq 0x190(%rsp), %rdi
callq 0x2b43c
leaq 0xf0(%rsp), %rdi
callq 0x2b43c
leaq 0x228(%rsp), %rdi
callq 0x5d6e4
leaq 0x1f8(%rsp), %rdi
callq 0x5d6e4
leaq 0x130(%rsp), %rdi
callq 0x28a08
leaq 0x110(%rsp), %rdi
callq 0x28a08
addq $0x258, %rsp            # imm = 0x258
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4b580(%rip), %rdi     # 0xa48ec
leaq 0x4b25b(%rip), %rsi     # 0xa45ce
leaq 0x4b4bf(%rip), %rcx     # 0xa4839
movl $0x1cf, %edx            # imm = 0x1CF
callq 0x82f0
leaq 0x4b3c6(%rip), %rdi     # 0xa4751
leaq 0x4b23c(%rip), %rsi     # 0xa45ce
leaq 0x4b4a0(%rip), %rcx     # 0xa4839
movl $0x1ce, %edx            # imm = 0x1CE
callq 0x82f0
leaq 0x4b46c(%rip), %rdi     # 0xa4816
leaq 0x4b21d(%rip), %rsi     # 0xa45ce
leaq 0x4b481(%rip), %rcx     # 0xa4839
movl $0x1c4, %edx            # imm = 0x1C4
callq 0x82f0
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
jmp 0x593e2
jmp 0x59427
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x8978
jmp 0x5942a
jmp 0x59427
jmp 0x59427
jmp 0x59427
jmp 0x59427
jmp 0x59427
jmp 0x59420
movq %rax, %rbx
jmp 0x59485
movq %rax, %rbx
jmp 0x59478
jmp 0x59420
jmp 0x59420
jmp 0x59420
jmp 0x59420
jmp 0x59420
jmp 0x59427
jmp 0x59427
jmp 0x59427
jmp 0x59420
jmp 0x59427
jmp 0x59427
movq %rax, %rbx
jmp 0x5945e
jmp 0x59427
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
callq 0x2b43c
leaq 0x1e0(%rsp), %rdi
callq 0x2b43c
leaq 0x190(%rsp), %rdi
callq 0x2b43c
leaq 0xf0(%rsp), %rdi
callq 0x2b43c
leaq 0x228(%rsp), %rdi
callq 0x5d6e4
leaq 0x1f8(%rsp), %rdi
callq 0x5d6e4
leaq 0x130(%rsp), %rdi
callq 0x28a08
leaq 0x110(%rsp), %rdi
callq 0x28a08
movq %rbx, %rdi
callq 0x8870