// File: 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
movq %rsp, %rbp
subq $0x6d0, %rsp            # imm = 0x6D0
movb %r9b, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movsd %xmm0, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x48(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3ffd0
movq %rax, -0x3d8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x3d8(%rbp), %rax
cmpq %rcx, %rax
jne 0xb3cb6
jmp 0xb3cd5
leaq 0x8d241(%rip), %rdi     # 0x140efe
leaq 0x8cff2(%rip), %rsi     # 0x140cb6
movl $0x1c4, %edx            # imm = 0x1C4
leaq 0x8d251(%rip), %rcx     # 0x140f21
callq 0xa390
movq -0x8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x52960
movq %rax, %rdi
callq 0xa930
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3ffd0
movl %eax, -0x64(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x48da0
movq -0x3e0(%rbp), %rdi
movslq -0x64(%rbp), %rsi
callq 0x5f8f0
jmp 0xb3d1c
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x48da0
movq -0x3e8(%rbp), %rdi
movslq -0x64(%rbp), %rsi
callq 0x5f8f0
jmp 0xb3d41
movq -0x20(%rbp), %rdi
movl -0x64(%rbp), %esi
xorl %edx, %edx
callq 0x7bc60
jmp 0xb3d51
leaq -0xd8(%rbp), %rdi
callq 0xb7aa0
leaq -0x108(%rbp), %rdi
callq 0xb7aa0
movq $0x0, -0x110(%rbp)
movq -0x110(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb3ef9
movq -0x8(%rbp), %rdi
movq -0x110(%rbp), %rsi
callq 0x52960
movq %rax, %rdi
callq 0xa930
cmpq -0x60(%rbp), %rax
jne 0xb3da8
jmp 0xb3df5
leaq 0x8d08a(%rip), %rdi     # 0x140e39
leaq 0x8cf00(%rip), %rsi     # 0x140cb6
movl $0x1ce, %edx            # imm = 0x1CE
leaq 0x8d15f(%rip), %rcx     # 0x140f21
callq 0xa390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xb5e08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xb5dfc
movq -0x10(%rbp), %rdi
movq -0x110(%rbp), %rsi
callq 0x52960
movq %rax, %rdi
callq 0xa930
cmpq -0x60(%rbp), %rax
jne 0xb3e15
jmp 0xb3e34
leaq 0x8d1b8(%rip), %rdi     # 0x140fd4
leaq 0x8ce93(%rip), %rsi     # 0x140cb6
movl $0x1cf, %edx            # imm = 0x1CF
leaq 0x8d0f2(%rip), %rcx     # 0x140f21
callq 0xa390
movq -0x110(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x82091(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb3e55
movq -0x110(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x8206d(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb3e79
leaq -0xd8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xb7ac0
movq %rax, -0x3f0(%rbp)
jmp 0xb3e95
movq -0x3f0(%rbp), %rax
movl $0x0, (%rax)
leaq -0x108(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xb7ac0
movq %rax, -0x3f8(%rbp)
jmp 0xb3ebe
movq -0x3f8(%rbp), %rax
movl $0x0, (%rax)
movq -0x110(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x110(%rbp)
jmp 0xb3d74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xb5de4
movl -0x64(%rbp), %esi
leaq -0x128(%rbp), %rdi
callq 0xb9350
jmp 0xb3f0a
movq $0x0, -0x130(%rbp)
movq -0x130(%rbp), %rax
cmpq -0x60(%rbp), %rax
je 0xb42c5
movq $0x0, -0x138(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0x400(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3ffd0
movq %rax, %rcx
movq -0x400(%rbp), %rax
cmpq %rcx, %rax
je 0xb4007
movq -0x8(%rbp), %rdi
movq -0x138(%rbp), %rsi
callq 0x52960
movq %rax, %rdi
movq -0x130(%rbp), %rsi
callq 0xa670
movsbl (%rax), %eax
movl %eax, -0x404(%rbp)
movq -0x138(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x3d940
movl -0x404(%rbp), %esi
movq %rax, %rdi
callq 0xa380
jmp 0xb3fa3
movq -0x10(%rbp), %rdi
movq -0x138(%rbp), %rsi
callq 0x52960
movq %rax, %rdi
movq -0x130(%rbp), %rsi
callq 0xa670
movsbl (%rax), %eax
movl %eax, -0x408(%rbp)
movq -0x138(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d940
movl -0x408(%rbp), %esi
movq %rax, %rdi
callq 0xa380
jmp 0xb3fee
jmp 0xb3ff0
movq -0x138(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x138(%rbp)
jmp 0xb3f31
movq -0x130(%rbp), %rax
addq $0x1, %rax
movl $0x3, %ecx
xorl %edx, %edx
divq %rcx
cmpq $0x0, %rdx
jne 0xb42ac
testb $0x1, -0x31(%rbp)
jne 0xb41b1
movq $0x0, -0x140(%rbp)
movq -0x140(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb41af
movq -0x140(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x160(%rbp), %rdi
callq 0xb7da0
jmp 0xb4070
leaq 0x8ce3f(%rip), %rsi     # 0x140eb6
leaq -0x160(%rbp), %rdi
callq 0x2d770
movb %al, -0x409(%rbp)
jmp 0xb408b
leaq -0x160(%rbp), %rdi
callq 0xac88
movb -0x409(%rbp), %al
testb $0x1, %al
jne 0xb40a3
jmp 0xb40f1
leaq -0xd8(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xb7ac0
movq %rax, -0x418(%rbp)
jmp 0xb40bf
movq -0x418(%rbp), %rax
movl $0x1, (%rax)
jmp 0xb40f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x160(%rbp), %rdi
callq 0xac88
jmp 0xb5de4
movq -0x140(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d940
movq %rax, %rsi
leaq -0x180(%rbp), %rdi
callq 0xb7da0
jmp 0xb4115
leaq 0x8cd9a(%rip), %rsi     # 0x140eb6
leaq -0x180(%rbp), %rdi
callq 0x2d770
movb %al, -0x419(%rbp)
jmp 0xb4130
leaq -0x180(%rbp), %rdi
callq 0xac88
movb -0x419(%rbp), %al
testb $0x1, %al
jne 0xb4148
jmp 0xb4196
leaq -0x108(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0xb7ac0
movq %rax, -0x428(%rbp)
jmp 0xb4164
movq -0x428(%rbp), %rax
movl $0x1, (%rax)
jmp 0xb4196
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xac88
jmp 0xb5de4
jmp 0xb4198
movq -0x140(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x140(%rbp)
jmp 0xb403b
jmp 0xb41b1
movq -0x128(%rbp), %rdx
leaq -0x80(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xb8a70
jmp 0xb41ca
movq -0x120(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xb8a70
jmp 0xb41e6
movq -0x118(%rbp), %r8
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
leaq -0x108(%rbp), %rcx
callq 0xb9450
jmp 0xb420d
movq -0x118(%rbp), %r8
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
leaq -0x108(%rbp), %rcx
callq 0xb9ab0
jmp 0xb4234
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb42aa
movq -0x188(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x81c76(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb4270
movq -0x188(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d940
movq %rax, %rdi
leaq 0x81c52(%rip), %rsi     # 0x135edf
callq 0xa810
jmp 0xb4294
jmp 0xb4296
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0xb423f
jmp 0xb42ac
jmp 0xb42ae
movq -0x130(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x130(%rbp)
jmp 0xb3f15
xorps %xmm0, %xmm0
movsd %xmm0, -0x190(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x198(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x48410
leaq -0x1c8(%rbp), %rdi
callq 0x48410
leaq -0x1e0(%rbp), %rdi
callq 0x48410
leaq -0x1f8(%rbp), %rdi
callq 0x48410
movq $0x0, -0x200(%rbp)
movq -0x200(%rbp), %rax
movl -0x64(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
cmpq %rcx, %rax
je 0xb4ec4
movq -0x200(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb4eab
movq -0x128(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x488(%rbp)
movsd -0x30(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x498(%rbp)
movq -0x128(%rbp), %rdi
addq $0x60, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x490(%rbp)
movq -0x128(%rbp), %rdi
addq $0x90, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x498(%rbp), %xmm1
movsd -0x490(%rbp), %xmm3
movsd -0x488(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movsd -0x190(%rbp), %xmm0
movsd -0x210(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x190(%rbp)
movq -0x20(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd -0x210(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x480(%rbp)
movq -0x20(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x480(%rbp), %xmm0
movsd %xmm0, (%rax)
movq -0x128(%rbp), %rdi
addq $0x30, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x468(%rbp)
movsd -0x30(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x478(%rbp)
movq -0x128(%rbp), %rdi
addq $0x78, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x470(%rbp)
movq -0x128(%rbp), %rdi
addq $0xa8, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x478(%rbp), %xmm1
movsd -0x470(%rbp), %xmm3
movsd -0x468(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x218(%rbp)
movsd -0x198(%rbp), %xmm0
movsd -0x218(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movq -0x120(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x450(%rbp)
movsd -0x30(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x460(%rbp)
movq -0x120(%rbp), %rdi
addq $0x60, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x458(%rbp)
movq -0x120(%rbp), %rdi
addq $0x90, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x460(%rbp), %xmm1
movsd -0x458(%rbp), %xmm3
movsd -0x450(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x220(%rbp)
movsd -0x190(%rbp), %xmm0
movsd -0x220(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x190(%rbp)
movq -0x20(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd -0x220(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x448(%rbp)
movq -0x20(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x448(%rbp), %xmm0
movsd %xmm0, (%rax)
movq -0x120(%rbp), %rdi
addq $0x30, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x430(%rbp)
movsd -0x30(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd %xmm0, -0x440(%rbp)
movq -0x120(%rbp), %rdi
addq $0x78, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x438(%rbp)
movq -0x120(%rbp), %rdi
addq $0xa8, %rdi
movq -0x200(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x208(%rbp), %rsi
callq 0x3ec30
movsd -0x440(%rbp), %xmm1
movsd -0x438(%rbp), %xmm3
movsd -0x430(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x228(%rbp)
movsd -0x198(%rbp), %xmm0
movsd -0x228(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x210(%rbp), %xmm0
movsd -0x218(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x230(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x48450
jmp 0xb47ea
movsd -0x220(%rbp), %xmm0
movsd -0x228(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x238(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x48450
jmp 0xb481b
movq -0x200(%rbp), %rax
andq $0x1, %rax
cmpq $0x0, %rax
jne 0xb491a
movq -0x208(%rbp), %rax
movq -0x200(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0xb491a
leaq -0x1b0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0xb77b0
jmp 0xb4860
leaq -0x1b0(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xb77b0
jmp 0xb4875
leaq -0x1c8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0xb77b0
jmp 0xb488a
leaq -0x1c8(%rbp), %rdi
leaq -0x228(%rbp), %rsi
callq 0xb77b0
jmp 0xb489f
movsd -0x210(%rbp), %xmm0
movsd -0x218(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x240(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x48450
jmp 0xb48d0
movsd -0x220(%rbp), %xmm0
movsd -0x228(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x248(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x48450
jmp 0xb4901
jmp 0xb491a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xb5db4
movq -0x28(%rbp), %rax
movb 0xd8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xb4e92
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4a0(%rbp)
jmp 0xb494b
movq -0x4a0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb497e
movq -0x28(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4a8(%rbp)
jmp 0xb4971
movq -0x4a8(%rbp), %rax
cmpq $0x1, %rax
je 0xb49ca
movq -0x28(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4b0(%rbp)
jmp 0xb4997
movq -0x4b0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4a1f
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4b8(%rbp)
jmp 0xb49bd
movq -0x4b8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4a1f
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
movq -0x28(%rbp), %rax
movsd 0xa8(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xa8(%rax)
jmp 0xb4e90
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4c0(%rbp)
jmp 0xb4a3c
movq -0x4c0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4a73
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4c8(%rbp)
jmp 0xb4a66
movq -0x4c8(%rbp), %rax
cmpq $0x1, %rax
je 0xb4ac7
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4d0(%rbp)
jmp 0xb4a90
movq -0x4d0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4b1c
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4d8(%rbp)
jmp 0xb4aba
movq -0x4d8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4b1c
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
movq -0x28(%rbp), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xb0(%rax)
jmp 0xb4e8e
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4e0(%rbp)
jmp 0xb4b35
movq -0x4e0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4bc1
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4e8(%rbp)
jmp 0xb4b5f
movq -0x4e8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4bc1
movq -0x28(%rbp), %rax
movsd 0xc8(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc8(%rax)
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
jmp 0xb4e8c
movq -0x28(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4f0(%rbp)
jmp 0xb4bda
movq -0x4f0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4c66
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x4f8(%rbp)
jmp 0xb4c04
movq -0x4f8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4c66
movq -0x28(%rbp), %rax
movsd 0xc8(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc8(%rax)
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
jmp 0xb4e8a
movq -0x28(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x500(%rbp)
jmp 0xb4c7f
movq -0x500(%rbp), %rax
cmpq $0x1, %rax
je 0xb4cb6
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x508(%rbp)
jmp 0xb4ca9
movq -0x508(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4d0d
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x510(%rbp)
jmp 0xb4cd3
movq -0x510(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4d0d
movq -0x28(%rbp), %rax
movsd 0xd0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xd0(%rax)
jmp 0xb4e88
movq -0x28(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x518(%rbp)
jmp 0xb4d26
movq -0x518(%rbp), %rax
cmpq $0x1, %rax
je 0xb4d5d
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x520(%rbp)
jmp 0xb4d50
movq -0x520(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4db4
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x528(%rbp)
jmp 0xb4d7a
movq -0x528(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4db4
movq -0x28(%rbp), %rax
movsd 0xd0(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xd0(%rax)
jmp 0xb4e86
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x530(%rbp)
jmp 0xb4dd1
movq -0x530(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4e08
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x538(%rbp)
jmp 0xb4dfb
movq -0x538(%rbp), %rax
cmpq $0x1, %rax
je 0xb4e5c
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x208(%rbp), %rsi
callq 0x6b670
movq %rax, -0x540(%rbp)
jmp 0xb4e25
movq -0x540(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4e84
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x200(%rbp), %rsi
callq 0x6b670
movq %rax, -0x548(%rbp)
jmp 0xb4e4f
movq -0x548(%rbp), %rax
cmpq $0x1, %rax
jne 0xb4e84
movq -0x28(%rbp), %rax
movsd 0xb8(%rax), %xmm0
addsd -0x210(%rbp), %xmm0
addsd -0x220(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xb8(%rax)
jmp 0xb4e86
jmp 0xb4e88
jmp 0xb4e8a
jmp 0xb4e8c
jmp 0xb4e8e
jmp 0xb4e90
jmp 0xb4e92
jmp 0xb4e94
movq -0x208(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x208(%rbp)
jmp 0xb4341
jmp 0xb4ead
movq -0x200(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x200(%rbp)
jmp 0xb4316
xorps %xmm0, %xmm0
movsd %xmm0, -0x250(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x258(%rbp)
movq $0x0, -0x260(%rbp)
movq -0x260(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb58dc
movq $0x0, -0x268(%rbp)
movq -0x268(%rbp), %rax
movslq -0x64(%rbp), %rcx
cmpq %rcx, %rax
je 0xb58c3
movq -0x260(%rbp), %rax
cmpq -0x268(%rbp), %rax
je 0xb56da
movq -0x118(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x568(%rbp)
movsd 0x7e766(%rip), %xmm0    # 0x1336c8
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x578(%rbp)
movq -0x118(%rbp), %rdi
addq $0x60, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x570(%rbp)
movq -0x118(%rbp), %rdi
addq $0x90, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd -0x578(%rbp), %xmm1
movsd -0x570(%rbp), %xmm3
movsd -0x568(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x270(%rbp)
movq -0x118(%rbp), %rdi
addq $0x30, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x550(%rbp)
movsd 0x7e694(%rip), %xmm0    # 0x1336c8
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x560(%rbp)
movq -0x118(%rbp), %rdi
addq $0x78, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x558(%rbp)
movq -0x118(%rbp), %rdi
addq $0xa8, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd -0x560(%rbp), %xmm1
movsd -0x558(%rbp), %xmm3
movsd -0x550(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x278(%rbp)
movq -0x260(%rbp), %rax
cmpq -0x268(%rbp), %rax
jae 0xb513c
movq -0x20(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movsd %xmm0, -0x580(%rbp)
movq -0x20(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x268(%rbp), %rsi
callq 0x3ec30
movsd -0x580(%rbp), %xmm0
movsd %xmm0, (%rax)
jmp 0xb519a
movq -0x20(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movsd %xmm0, -0x588(%rbp)
movq -0x20(%rbp), %rdi
movq -0x268(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd -0x588(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd -0x190(%rbp), %xmm0
movsd -0x270(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x190(%rbp)
movsd -0x198(%rbp), %xmm0
movsd -0x278(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x198(%rbp)
movsd -0x270(%rbp), %xmm0
movsd -0x278(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x48450
jmp 0xb5203
movq -0x28(%rbp), %rax
movb 0xd8(%rax), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xb56d5
movq -0x28(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x590(%rbp)
jmp 0xb5234
movq -0x590(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5267
movq -0x28(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x598(%rbp)
jmp 0xb525a
movq -0x598(%rbp), %rax
cmpq $0x1, %rax
je 0xb52b3
movq -0x28(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5a0(%rbp)
jmp 0xb5280
movq -0x5a0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb52f8
movq -0x28(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5a8(%rbp)
jmp 0xb52a6
movq -0x5a8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb52f8
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
movq -0x28(%rbp), %rax
movsd 0xa8(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xa8(%rax)
jmp 0xb54c9
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5b0(%rbp)
jmp 0xb5315
movq -0x5b0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb534c
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5b8(%rbp)
jmp 0xb533f
movq -0x5b8(%rbp), %rax
cmpq $0x1, %rax
je 0xb53a0
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5c0(%rbp)
jmp 0xb5369
movq -0x5c0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb53e5
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5c8(%rbp)
jmp 0xb5393
movq -0x5c8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb53e5
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
movq -0x28(%rbp), %rax
movsd 0xb0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xb0(%rax)
jmp 0xb54c7
movq -0x28(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5d0(%rbp)
jmp 0xb53fe
movq -0x5d0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5435
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5d8(%rbp)
jmp 0xb5428
movq -0x5d8(%rbp), %rax
cmpq $0x1, %rax
je 0xb5485
movq -0x28(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5e0(%rbp)
jmp 0xb544e
movq -0x5e0(%rbp), %rax
cmpq $0x1, %rax
jne 0xb54c5
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5e8(%rbp)
jmp 0xb5478
movq -0x5e8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb54c5
movq -0x28(%rbp), %rax
movsd 0xc8(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc8(%rax)
movq -0x28(%rbp), %rax
movsd 0xc0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
jmp 0xb54c7
jmp 0xb54c9
movq -0x28(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5f0(%rbp)
jmp 0xb54e2
movq -0x5f0(%rbp), %rax
cmpq $0x1, %rax
je 0xb5519
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x5f8(%rbp)
jmp 0xb550c
movq -0x5f8(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5568
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x600(%rbp)
jmp 0xb5536
movq -0x600(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5568
movq -0x28(%rbp), %rax
movsd 0xd0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xd0(%rax)
jmp 0xb56d3
movq -0x28(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x608(%rbp)
jmp 0xb5581
movq -0x608(%rbp), %rax
cmpq $0x1, %rax
je 0xb55b8
movq -0x28(%rbp), %rdi
addq $0x38, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x610(%rbp)
jmp 0xb55ab
movq -0x610(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5607
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x618(%rbp)
jmp 0xb55d5
movq -0x618(%rbp), %rax
cmpq $0x1, %rax
jne 0xb5607
movq -0x28(%rbp), %rax
movsd 0xd0(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xd0(%rax)
jmp 0xb56d1
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x620(%rbp)
jmp 0xb5624
movq -0x620(%rbp), %rax
cmpq $0x1, %rax
jne 0xb565b
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x628(%rbp)
jmp 0xb564e
movq -0x628(%rbp), %rax
cmpq $0x1, %rax
je 0xb56af
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x268(%rbp), %rsi
callq 0x6b670
movq %rax, -0x630(%rbp)
jmp 0xb5678
movq -0x630(%rbp), %rax
cmpq $0x1, %rax
jne 0xb56cf
movq -0x28(%rbp), %rdi
addq $0x70, %rdi
leaq -0x260(%rbp), %rsi
callq 0x6b670
movq %rax, -0x638(%rbp)
jmp 0xb56a2
movq -0x638(%rbp), %rax
cmpq $0x1, %rax
jne 0xb56cf
movq -0x28(%rbp), %rax
movsd 0xb8(%rax), %xmm0
addsd -0x270(%rbp), %xmm0
movq -0x28(%rbp), %rax
movsd %xmm0, 0xb8(%rax)
jmp 0xb56d1
jmp 0xb56d3
jmp 0xb56d5
jmp 0xb58aa
movq -0x118(%rbp), %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x658(%rbp)
movsd 0x7dfb8(%rip), %xmm0    # 0x1336c8
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x668(%rbp)
movq -0x118(%rbp), %rdi
addq $0x60, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x660(%rbp)
movq -0x118(%rbp), %rdi
addq $0x90, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd -0x668(%rbp), %xmm1
movsd -0x660(%rbp), %xmm3
movsd -0x658(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x288(%rbp)
movq -0x118(%rbp), %rdi
addq $0x30, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x640(%rbp)
movsd 0x7dee6(%rip), %xmm0    # 0x1336c8
mulsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x650(%rbp)
movq -0x118(%rbp), %rdi
addq $0x78, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd (%rax), %xmm0
movsd %xmm0, -0x648(%rbp)
movq -0x118(%rbp), %rdi
addq $0xa8, %rdi
movq -0x260(%rbp), %rsi
callq 0x651e0
movq %rax, %rdi
movq -0x260(%rbp), %rsi
callq 0x3ec30
movsd -0x650(%rbp), %xmm1
movsd -0x648(%rbp), %xmm3
movsd -0x640(%rbp), %xmm0
movsd (%rax), %xmm2
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x290(%rbp)
movsd -0x250(%rbp), %xmm0
addsd -0x288(%rbp), %xmm0
movsd %xmm0, -0x250(%rbp)
movsd -0x258(%rbp), %xmm0
addsd -0x290(%rbp), %xmm0
movsd %xmm0, -0x258(%rbp)
jmp 0xb58ac
movq -0x268(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x268(%rbp)
jmp 0xb4f04
jmp 0xb58c5
movq -0x260(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x260(%rbp)
jmp 0xb4ee5
leaq -0x1b0(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x670(%rbp)
jmp 0xb58f2
movsd -0x670(%rbp), %xmm0
movsd %xmm0, -0x298(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x678(%rbp)
jmp 0xb5918
movsd -0x678(%rbp), %xmm0
movsd %xmm0, -0x2a0(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x680(%rbp)
jmp 0xb593e
movsd -0x680(%rbp), %xmm0
movsd %xmm0, -0x2a8(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x52290
movsd %xmm0, -0x688(%rbp)
jmp 0xb5964
movsd -0x688(%rbp), %xmm0
movsd %xmm0, -0x2b0(%rbp)
movsd -0x190(%rbp), %xmm0
movl -0x64(%rbp), %eax
movl %eax, %ecx
decl %ecx
imull %ecx, %eax
addl %eax, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x198(%rbp), %xmm0
movl -0x64(%rbp), %eax
movl %eax, %ecx
decl %ecx
imull %ecx, %eax
addl %eax, %eax
cvtsi2sd %eax, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x250(%rbp), %xmm0
cvtsi2sdl -0x64(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x258(%rbp), %xmm0
cvtsi2sdl -0x64(%rbp), %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x690(%rbp)
movq -0x60(%rbp), %rsi
leaq -0x2d0(%rbp), %rdi
callq 0xae5d0
jmp 0xb59ff
movq -0x690(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x5f980
jmp 0xb5a14
leaq -0x2d0(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x698(%rbp)
movsd -0x40(%rbp), %xmm0
leaq -0x2f0(%rbp), %rdi
callq 0x650a0
jmp 0xb5a3e
movq -0x698(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0x5f980
jmp 0xb5a53
leaq -0x2f0(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6a0(%rbp)
movsd -0x48(%rbp), %xmm0
leaq -0x310(%rbp), %rdi
callq 0x650a0
jmp 0xb5a7d
movq -0x6a0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x5f980
jmp 0xb5a92
leaq -0x310(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6a8(%rbp)
movsd -0x50(%rbp), %xmm0
leaq -0x330(%rbp), %rdi
callq 0x650a0
jmp 0xb5abc
movq -0x6a8(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x5f980
jmp 0xb5ad1
leaq -0x330(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6b0(%rbp)
movsd -0x58(%rbp), %xmm0
leaq -0x350(%rbp), %rdi
callq 0x650a0
jmp 0xb5afb
movq -0x6b0(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x5f980
jmp 0xb5b10
leaq -0x350(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6b8(%rbp)
movsd -0x298(%rbp), %xmm0
leaq -0x370(%rbp), %rdi
callq 0x650a0
jmp 0xb5b3d
movq -0x6b8(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x5f980
jmp 0xb5b52
leaq -0x370(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6c0(%rbp)
movsd -0x2a0(%rbp), %xmm0
leaq -0x390(%rbp), %rdi
callq 0x650a0
jmp 0xb5b7f
movq -0x6c0(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x5f980
jmp 0xb5b94
leaq -0x390(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6c8(%rbp)
movsd -0x2a8(%rbp), %xmm0
leaq -0x3b0(%rbp), %rdi
callq 0x650a0
jmp 0xb5bc1
movq -0x6c8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x5f980
jmp 0xb5bd6
leaq -0x3b0(%rbp), %rdi
callq 0xac88
movq -0x18(%rbp), %rax
movq %rax, -0x6d0(%rbp)
movsd -0x2b0(%rbp), %xmm0
leaq -0x3d0(%rbp), %rdi
callq 0x650a0
jmp 0xb5c03
movq -0x6d0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x5f980
jmp 0xb5c18
leaq -0x3d0(%rbp), %rdi
callq 0xac88
leaq -0x1f8(%rbp), %rdi
callq 0x3ecb0
leaq -0x1e0(%rbp), %rdi
callq 0x3ecb0
leaq -0x1c8(%rbp), %rdi
callq 0x3ecb0
leaq -0x1b0(%rbp), %rdi
callq 0x3ecb0
leaq -0x108(%rbp), %rdi
callq 0xb9330
leaq -0xd8(%rbp), %rdi
callq 0xb9330
leaq -0xa8(%rbp), %rdi
callq 0x3dfa0
leaq -0x80(%rbp), %rdi
callq 0x3dfa0
addq $0x6d0, %rsp            # imm = 0x6D0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2f0(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x310(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x330(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x350(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x370(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x390(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0xac88
jmp 0xb5db4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0xac88
leaq -0x1f8(%rbp), %rdi
callq 0x3ecb0
leaq -0x1e0(%rbp), %rdi
callq 0x3ecb0
leaq -0x1c8(%rbp), %rdi
callq 0x3ecb0
leaq -0x1b0(%rbp), %rdi
callq 0x3ecb0
leaq -0x108(%rbp), %rdi
callq 0xb9330
leaq -0xd8(%rbp), %rdi
callq 0xb9330
leaq -0xa8(%rbp), %rdi
callq 0x3dfa0
leaq -0x80(%rbp), %rdi
callq 0x3dfa0
movq -0x88(%rbp), %rdi
callq 0xab50
nopl (%rax)