// File: j-faria[P]kima/src/RVmodel.cpp
// Function: RVmodel::perturb(DNest4::RNG&)
double RVmodel::perturb(RNG& rng)
{
    #if TIMING
    auto begin = std::chrono::high_resolution_clock::now();  // start timing
    #endif

    auto data = Data::get_instance();
    const vector<double>& t = data.get_t();
    const vector<int>& obsi = data.get_obsi();
    auto actind = data.get_actind();
    double logH = 0.;
    double tmid = data.get_t_middle();

    if(GP)
    {
        if(rng.rand() <= 0.5) // perturb planet parameters
        {
            logH += planets.perturb(rng);
            planets.consolidate_diff();
            calculate_mu();
        }
        else if(rng.rand() <= 0.5) // perturb GP parameters
        {
            switch (kernel)
            {
                case standard:
                {
                    if(rng.rand() <= 0.25)
                    {
                        log_eta1 = log(eta1);
                        log_eta1_prior->perturb(log_eta1, rng);
                        eta1 = exp(log_eta1);
                    }
                    else if(rng.rand() <= 0.33330)
                    {
                        // log_eta2 = log(eta2);
                        // log_eta2_prior->perturb(log_eta2, rng);
                        // eta2 = exp(log_eta2);
                        eta2_prior->perturb(eta2, rng);
                    }
                    else if(rng.rand() <= 0.5)
                    {
                        eta3_prior->perturb(eta3, rng);
                    }
                    else
                    {
                        log_eta4 = log(eta4);
                        log_eta4_prior->perturb(log_eta4, rng);
                        eta4 = exp(log_eta4);
                    }

                    break;
                }

                case celerite:
                {
                    if(rng.rand() <= 0.33330)
                    {
                        log_eta1 = log(eta1);
                        log_eta1_prior->perturb(log_eta1, rng);
                        eta1 = exp(log_eta1);
                    }
                    else if(rng.rand() <= 0.5)
                    {
                        // log_eta2 = log(eta2);
                        // log_eta2_prior->perturb(log_eta2, rng);
                        // eta2 = exp(log_eta2);
                        eta2_prior->perturb(eta2, rng);
                    }
                    else
                    {
                        eta3_prior->perturb(eta3, rng);
                    }
                    break;
                }
                default:
                    break;
            }

            calculate_C();
        }
        else if(rng.rand() <= 0.5) // perturb jitter(s) + known_object
        {
            if(multi_instrument)
            {
                for(int i=0; i<jitters.size(); i++)
                    Jprior->perturb(jitters[i], rng);
            }
            else
            {
                Jprior->perturb(extra_sigma, rng);
            }

            calculate_C(); // recalculate covariance matrix

            if (known_object)
            {
                remove_known_object();

                for (int i=0; i<n_known_object; i++){
                    KO_Pprior[i]->perturb(KO_P[i], rng);
                    KO_Kprior[i]->perturb(KO_K[i], rng);
                    KO_eprior[i]->perturb(KO_e[i], rng);
                    KO_phiprior[i]->perturb(KO_phi[i], rng);
                    KO_wprior[i]->perturb(KO_w[i], rng);
                }

                add_known_object();
            }

        }
        else // perturb other parameters: vsys, slope, offsets
        {
            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] -= background;
                if(trend) {
                    mu[i] -= slope*(t[i]-data.get_t_middle());
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] -= offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] -= betas[j] * actind[j][i];
                    }
                }

            }

            Cprior->perturb(background, rng);

            // propose new instrument offsets
            if (multi_instrument){
                for(unsigned j=0; j<offsets.size(); j++)
                    offsets_prior->perturb(offsets[j], rng);
            }

            // propose new slope
            if(trend) {
                slope_prior->perturb(slope, rng);
            }

            // propose new indicator correlations
            if(data.indicator_correlations){
                for(size_t j = 0; j < data.number_indicators; j++){
                    betaprior->perturb(betas[j], rng);
                }
            }

            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] += background;
                if(trend) {
                    mu[i] += slope*(t[i]-data.get_t_middle());
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] += offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] += betas[j]*actind[j][i];
                    }
                }
                
            }
        }

    }

    else if(MA)
    {
        if(rng.rand() <= 0.5) // perturb planet parameters
        {
            logH += planets.perturb(rng);
            planets.consolidate_diff();
            calculate_mu();
        }
        else if(rng.rand() <= 0.5) // perturb MA parameters
        {
            if(rng.rand() <= 0.5)
                sigmaMA_prior->perturb(sigmaMA, rng);
            else
                tauMA_prior->perturb(tauMA, rng);
            
            calculate_mu();
        }
        else if(rng.rand() <= 0.5) // perturb jitter(s)
        {
            if(multi_instrument)
            {
                for(int i=0; i<jitters.size(); i++)
                    Jprior->perturb(jitters[i], rng);
            }
            else
            {
                Jprior->perturb(extra_sigma, rng);
            }
            calculate_C();
        }
        else // perturb other parameters: vsys, slope, offsets
        {
            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] -= background;
                if(trend) {
                    mu[i] -= slope*(t[i]-data.get_t_middle());
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] -= offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] -= betas[j] * actind[j][i];
                    }
                }

            }

            Cprior->perturb(background, rng);

            // propose new instrument offsets
            if (multi_instrument){
                for(unsigned j=0; j<offsets.size(); j++)
                    offsets_prior->perturb(offsets[j], rng);
            }

            // propose new slope
            if(trend) {
                slope_prior->perturb(slope, rng);
            }

            if(data.indicator_correlations){
                for(size_t j = 0; j < data.number_indicators; j++){
                    betaprior->perturb(betas[j], rng);
                }
            }

            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] += background;
                if(trend) {
                    mu[i] += slope*(t[i]-data.get_t_middle());
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] += offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] += betas[j]*actind[j][i];
                    }
                }
                
            }
        }

    }

    else
    {
        if(rng.rand() <= 0.75) // perturb planet parameters
        {
            logH += planets.perturb(rng);
            planets.consolidate_diff();
            calculate_mu();
        }
        else if(rng.rand() <= 0.5) // perturb jitter(s) + known_object
        {
            if(multi_instrument)
            {
                for(int i=0; i<jitters.size(); i++)
                    Jprior->perturb(jitters[i], rng);
            }
            else
            {
                Jprior->perturb(extra_sigma, rng);
            }

            if (studentt)
                nu_prior->perturb(nu, rng);


            if (known_object)
            {
                remove_known_object();

                for (int i=0; i<n_known_object; i++){
                    KO_Pprior[i]->perturb(KO_P[i], rng);
                    KO_Kprior[i]->perturb(KO_K[i], rng);
                    KO_eprior[i]->perturb(KO_e[i], rng);
                    KO_phiprior[i]->perturb(KO_phi[i], rng);
                    KO_wprior[i]->perturb(KO_w[i], rng);
                }

                add_known_object();
            }
        
        }
        else
        {
            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] -= background;
                if(trend) {
                    mu[i] -= slope*(t[i]-tmid) + quadr*pow(t[i]-tmid, 2) + cubic*pow(t[i]-tmid, 3);
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] -= offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] -= betas[j] * actind[j][i];
                    }
                }
            }

            // propose new vsys
            Cprior->perturb(background, rng);

            // propose new instrument offsets
            if (multi_instrument){
                for(unsigned j=0; j<offsets.size(); j++){
                    offsets_prior->perturb(offsets[j], rng);
                }
            }

            // propose new slope
            if(trend) {
                if (degree >= 1) slope_prior->perturb(slope, rng);
                if (degree >= 2) quadr_prior->perturb(quadr, rng);
                if (degree == 3) cubic_prior->perturb(cubic, rng);
            }

            // propose new indicator correlations
            if(data.indicator_correlations){
                for(size_t j = 0; j < data.number_indicators; j++){
                    betaprior->perturb(betas[j], rng);
                }
            }

            for(size_t i=0; i<mu.size(); i++)
            {
                mu[i] += background;
                if(trend) {
                    mu[i] += slope*(t[i]-tmid) + quadr*pow(t[i]-tmid, 2) + cubic*pow(t[i]-tmid, 3);
                }
                if(multi_instrument) {
                    for(size_t j=0; j<offsets.size(); j++){
                        if (obsi[i] == j+1) { mu[i] += offsets[j]; }
                    }
                }

                if(data.indicator_correlations) {
                    for(size_t j = 0; j < data.number_indicators; j++){
                        mu[i] += betas[j]*actind[j][i];
                    }
                }
            }
        }
    }


    #if TIMING
    auto end = std::chrono::high_resolution_clock::now();
    cout << "Perturb took ";
    cout << std::chrono::duration_cast<std::chrono::nanoseconds>(end-begin).count()*1E-6;
    cout << " ms" << std::endl;
    #endif

    return logH;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x6f0, %rsp            # imm = 0x6F0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x2b0(%rbp)
callq 0xab10
movq %rax, %rsi
leaq -0x118(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x269d0
movq -0x2a8(%rbp), %rdi
callq 0x271b0
movq %rax, -0x2a0(%rbp)
jmp 0x20bfe
movq -0x2a0(%rbp), %rax
movq %rax, -0x120(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x271e0
movq %rax, -0x2b8(%rbp)
jmp 0x20c21
movq -0x2b8(%rbp), %rax
movq %rax, -0x138(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x278e0
movq %rax, -0x2c0(%rbp)
jmp 0x20c44
movq -0x2c0(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x27900
jmp 0x20c59
movq $0x0, -0x158(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x27a80
movsd %xmm0, -0x2c8(%rbp)
jmp 0x20c7a
movsd -0x2c8(%rbp), %xmm0
movsd %xmm0, -0x160(%rbp)
leaq 0xa4d0f(%rip), %rax     # 0xc59a0
testb $0x1, (%rax)
je 0x21ba9
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x2d0(%rbp)
jmp 0x20cad
movsd -0x2d0(%rbp), %xmm1
movsd 0x964db(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x20d65
movq -0x2b0(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
movl $0x1, %edx
callq 0x27b30
movsd %xmm0, -0x2d8(%rbp)
jmp 0x20cea
movq -0x2b0(%rbp), %rdi
movsd -0x2d8(%rbp), %xmm1
movsd -0x158(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
addq $0x8, %rdi
callq 0x27050
jmp 0x20d18
movq -0x2b0(%rbp), %rdi
callq 0x1eb30
jmp 0x20d26
jmp 0x21ba4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
jmp 0x23390
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x16030
jmp 0x23390
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x2e0(%rbp)
jmp 0x20d78
movsd -0x2e0(%rbp), %xmm1
movsd 0x96410(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x210e4
movq -0x2b0(%rbp), %rax
movl 0x1a8(%rax), %eax
movl %eax, -0x2e4(%rbp)
testl %eax, %eax
je 0x20dbf
jmp 0x20dab
movl -0x2e4(%rbp), %eax
subl $0x1, %eax
je 0x20f9b
jmp 0x210cf
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x2f0(%rbp)
jmp 0x20dd2
movsd -0x2f0(%rbp), %xmm1
movsd 0x968ce(%rip), %xmm0    # 0xb76b0
ucomisd %xmm1, %xmm0
jb 0x20e64
movq -0x2b0(%rbp), %rax
movsd 0x1b0(%rax), %xmm0
callq 0x6430
movq -0x2b0(%rbp), %rdi
movq %rdi, %rax
addq $0x1d8, %rax            # imm = 0x1D8
movq %rax, -0x2f8(%rbp)
movsd %xmm0, 0x1d8(%rdi)
addq $0x448, %rdi            # imm = 0x448
callq 0xc680
movq -0x2f8(%rbp), %rsi
movq %rax, %rdi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x20e3c
movq -0x2b0(%rbp), %rax
movsd 0x1d8(%rax), %xmm0
callq 0x6870
movq -0x2b0(%rbp), %rax
movsd %xmm0, 0x1b0(%rax)
jmp 0x20f96
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x300(%rbp)
jmp 0x20e77
movsd -0x300(%rbp), %xmm1
movsd 0x96849(%rip), %xmm0    # 0xb76d0
ucomisd %xmm1, %xmm0
jb 0x20ec1
movq -0x2b0(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x1b8, %rsi            # imm = 0x1B8
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x20ebc
jmp 0x20f94
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x308(%rbp)
jmp 0x20ed4
movsd -0x308(%rbp), %xmm1
movsd 0x962b4(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x20f1b
movq -0x2b0(%rbp), %rdi
addq $0x468, %rdi            # imm = 0x468
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x1c0, %rsi            # imm = 0x1C0
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x20f19
jmp 0x20f92
movq -0x2b0(%rbp), %rax
movsd 0x1c8(%rax), %xmm0
callq 0x6430
movq -0x2b0(%rbp), %rdi
movq %rdi, %rax
addq $0x1f0, %rax            # imm = 0x1F0
movq %rax, -0x310(%rbp)
movsd %xmm0, 0x1f0(%rdi)
addq $0x478, %rdi            # imm = 0x478
callq 0xc680
movq -0x310(%rbp), %rsi
movq %rax, %rdi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x20f6f
movq -0x2b0(%rbp), %rax
movsd 0x1f0(%rax), %xmm0
callq 0x6870
movq -0x2b0(%rbp), %rax
movsd %xmm0, 0x1c8(%rax)
jmp 0x20f94
jmp 0x20f96
jmp 0x210d1
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x318(%rbp)
jmp 0x20fae
movsd -0x318(%rbp), %xmm1
movsd 0x96712(%rip), %xmm0    # 0xb76d0
ucomisd %xmm1, %xmm0
jb 0x21040
movq -0x2b0(%rbp), %rax
movsd 0x1b0(%rax), %xmm0
callq 0x6430
movq -0x2b0(%rbp), %rdi
movq %rdi, %rax
addq $0x1d8, %rax            # imm = 0x1D8
movq %rax, -0x320(%rbp)
movsd %xmm0, 0x1d8(%rdi)
addq $0x448, %rdi            # imm = 0x448
callq 0xc680
movq -0x320(%rbp), %rsi
movq %rax, %rdi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21018
movq -0x2b0(%rbp), %rax
movsd 0x1d8(%rax), %xmm0
callq 0x6870
movq -0x2b0(%rbp), %rax
movsd %xmm0, 0x1b0(%rax)
jmp 0x210cd
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x328(%rbp)
jmp 0x21053
movsd -0x328(%rbp), %xmm1
movsd 0x96135(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x2109a
movq -0x2b0(%rbp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x1b8, %rsi            # imm = 0x1B8
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21098
jmp 0x210cb
movq -0x2b0(%rbp), %rdi
addq $0x468, %rdi            # imm = 0x468
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x1c0, %rsi            # imm = 0x1C0
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x210c9
jmp 0x210cb
jmp 0x210cd
jmp 0x210d1
jmp 0x210d1
movq -0x2b0(%rbp), %rdi
callq 0x1f6c0
jmp 0x210df
jmp 0x21ba2
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x330(%rbp)
jmp 0x210f7
movsd -0x330(%rbp), %xmm1
movsd 0x96091(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x2141b
leaq 0xa4890(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x211bc
movl $0x0, -0x164(%rbp)
movq -0x2b0(%rbp), %rdi
movslq -0x164(%rbp), %rax
movq %rax, -0x338(%rbp)
addq $0x140, %rdi            # imm = 0x140
callq 0x7c90
movq %rax, %rcx
movq -0x338(%rbp), %rax
cmpq %rcx, %rax
jae 0x211ba
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x340(%rbp)
addq $0x140, %rdi            # imm = 0x140
movslq -0x164(%rbp), %rsi
callq 0xc6a0
movq -0x340(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x211a4
jmp 0x211a6
movl -0x164(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x164(%rbp)
jmp 0x2112b
jmp 0x211ed
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x198, %rsi            # imm = 0x198
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x211eb
jmp 0x211ed
movq -0x2b0(%rbp), %rdi
callq 0x1f6c0
jmp 0x211fb
leaq 0xa47a7(%rip), %rax     # 0xc59a9
testb $0x1, (%rax)
je 0x21416
movq -0x2b0(%rbp), %rdi
callq 0x20820
jmp 0x21219
movl $0x0, -0x168(%rbp)
movl -0x168(%rbp), %eax
leaq 0xa477c(%rip), %rcx     # 0xc59ac
cmpl (%rcx), %eax
jge 0x21406
movq -0x2b0(%rbp), %rdi
addq $0x488, %rdi            # imm = 0x488
movslq -0x168(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x348(%rbp)
addq $0x308, %rdi            # imm = 0x308
movslq -0x168(%rbp), %rsi
callq 0xc6a0
movq -0x348(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21290
movq -0x2b0(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movslq -0x168(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x350(%rbp)
addq $0x320, %rdi            # imm = 0x320
movslq -0x168(%rbp), %rsi
callq 0xc6a0
movq -0x350(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x212e8
movq -0x2b0(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
movslq -0x168(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x358(%rbp)
addq $0x338, %rdi            # imm = 0x338
movslq -0x168(%rbp), %rsi
callq 0xc6a0
movq -0x358(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21340
movq -0x2b0(%rbp), %rdi
addq $0x4d0, %rdi            # imm = 0x4D0
movslq -0x168(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x360(%rbp)
addq $0x350, %rdi            # imm = 0x350
movslq -0x168(%rbp), %rsi
callq 0xc6a0
movq -0x360(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21398
movq -0x2b0(%rbp), %rdi
addq $0x4e8, %rdi            # imm = 0x4E8
movslq -0x168(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x368(%rbp)
addq $0x368, %rdi            # imm = 0x368
movslq -0x168(%rbp), %rsi
callq 0xc6a0
movq -0x368(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x213f0
jmp 0x213f2
movl -0x168(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x168(%rbp)
jmp 0x21223
movq -0x2b0(%rbp), %rdi
callq 0x203a0
jmp 0x21414
jmp 0x21416
jmp 0x21ba0
movq $0x0, -0x170(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x170(%rbp), %rax
movq %rax, -0x370(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x370(%rbp), %rax
cmpq %rcx, %rax
jae 0x2170d
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x37c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x170(%rbp), %rsi
callq 0x27ad0
fldt -0x37c(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa4510(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x21542
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x398(%rbp)
movq -0x120(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x390(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x27a80
movsd %xmm0, -0x388(%rbp)
jmp 0x214e8
movq -0x2b0(%rbp), %rdi
movsd -0x398(%rbp), %xmm0
movsd -0x388(%rbp), %xmm2
movsd -0x390(%rbp), %xmm1
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x290(%rbp)
fldl -0x290(%rbp)
fstpt -0x3a4(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x170(%rbp), %rsi
callq 0x27ad0
fldt -0x3a4(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa445f(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x2161a
movq $0x0, -0x178(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x178(%rbp), %rax
movq %rax, -0x3b0(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x3b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x21618
movq -0x138(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x178(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x215ff
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x178(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x3bc(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x170(%rbp), %rsi
callq 0x27ad0
fldt -0x3bc(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
jmp 0x21601
movq -0x178(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x178(%rbp)
jmp 0x2155d
jmp 0x2161a
testb $0x1, -0xa0(%rbp)
je 0x216f4
movq $0x0, -0x180(%rbp)
movq -0x180(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x216f2
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x180(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x3d0(%rbp)
movq -0x180(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x170(%rbp), %rsi
callq 0xc6a0
movsd -0x3d0(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x298(%rbp)
fldl -0x298(%rbp)
fstpt -0x3c8(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x170(%rbp), %rsi
callq 0x27ad0
fldt -0x3c8(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
movq -0x180(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x180(%rbp)
jmp 0x21632
jmp 0x216f4
jmp 0x216f6
movq -0x170(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x170(%rbp)
jmp 0x21426
movq -0x2b0(%rbp), %rdi
addq $0x3b8, %rdi            # imm = 0x3B8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x120, %rsi            # imm = 0x120
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2173c
leaq 0xa4265(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x217e7
movl $0x0, -0x184(%rbp)
movq -0x2b0(%rbp), %rdi
movl -0x184(%rbp), %eax
movq %rax, -0x3d8(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x3d8(%rbp), %rax
cmpq %rcx, %rax
jae 0x217e5
movq -0x2b0(%rbp), %rdi
addq $0x408, %rdi            # imm = 0x408
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x3e0(%rbp)
addq $0x128, %rdi            # imm = 0x128
movl -0x184(%rbp), %eax
movl %eax, %esi
callq 0xc6a0
movq -0x3e0(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x217cf
jmp 0x217d1
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x21756
jmp 0x217e7
leaq 0xa41b5(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x21824
movq -0x2b0(%rbp), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x170, %rsi            # imm = 0x170
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21822
jmp 0x21824
testb $0x1, -0xa0(%rbp)
je 0x218ac
movq $0x0, -0x190(%rbp)
movq -0x190(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x218aa
movq -0x2b0(%rbp), %rdi
addq $0x418, %rdi            # imm = 0x418
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x3e8(%rbp)
addq $0x158, %rdi            # imm = 0x158
movq -0x190(%rbp), %rsi
callq 0xc6a0
movq -0x3e8(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21894
jmp 0x21896
movq -0x190(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x190(%rbp)
jmp 0x21838
jmp 0x218ac
movq $0x0, -0x198(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x198(%rbp), %rax
movq %rax, -0x3f0(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x3f0(%rbp), %rax
cmpq %rcx, %rax
jae 0x21b9e
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x3fc(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x198(%rbp), %rsi
callq 0x27ad0
fldt -0x3fc(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa407f(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x219d3
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x418(%rbp)
movq -0x120(%rbp), %rdi
movq -0x198(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x410(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x27a80
movsd %xmm0, -0x408(%rbp)
jmp 0x21979
movq -0x2b0(%rbp), %rdi
movsd -0x418(%rbp), %xmm0
movsd -0x408(%rbp), %xmm2
movsd -0x410(%rbp), %xmm1
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x280(%rbp)
fldl -0x280(%rbp)
fstpt -0x424(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x198(%rbp), %rsi
callq 0x27ad0
fldt -0x424(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa3fce(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x21aab
movq $0x0, -0x1a0(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x1a0(%rbp), %rax
movq %rax, -0x430(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x430(%rbp), %rax
cmpq %rcx, %rax
jae 0x21aa9
movq -0x138(%rbp), %rdi
movq -0x198(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x1a0(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x21a90
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x1a0(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x43c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x198(%rbp), %rsi
callq 0x27ad0
fldt -0x43c(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
jmp 0x21a92
movq -0x1a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a0(%rbp)
jmp 0x219ee
jmp 0x21aab
testb $0x1, -0xa0(%rbp)
je 0x21b85
movq $0x0, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x21b83
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x1a8(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x450(%rbp)
movq -0x1a8(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x198(%rbp), %rsi
callq 0xc6a0
movsd -0x450(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x288(%rbp)
fldl -0x288(%rbp)
fstpt -0x448(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x198(%rbp), %rsi
callq 0x27ad0
fldt -0x448(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
movq -0x1a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1a8(%rbp)
jmp 0x21ac3
jmp 0x21b85
jmp 0x21b87
movq -0x198(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x198(%rbp)
jmp 0x218b7
jmp 0x21ba0
jmp 0x21ba2
jmp 0x21ba4
jmp 0x23357
leaq 0xa3df1(%rip), %rax     # 0xc59a1
testb $0x1, (%rax)
je 0x225bb
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x458(%rbp)
jmp 0x21bcc
movsd -0x458(%rbp), %xmm1
movsd 0x955bc(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x21c46
movq -0x2b0(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
movl $0x1, %edx
callq 0x27b30
movsd %xmm0, -0x460(%rbp)
jmp 0x21c05
movq -0x2b0(%rbp), %rdi
movsd -0x460(%rbp), %xmm1
movsd -0x158(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
addq $0x8, %rdi
callq 0x27050
jmp 0x21c33
movq -0x2b0(%rbp), %rdi
callq 0x1eb30
jmp 0x21c41
jmp 0x225b6
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x468(%rbp)
jmp 0x21c59
movsd -0x468(%rbp), %xmm1
movsd 0x9552f(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x21d11
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x470(%rbp)
jmp 0x21c86
movsd -0x470(%rbp), %xmm1
movsd 0x95502(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x21ccd
movq -0x2b0(%rbp), %rdi
addq $0x428, %rdi            # imm = 0x428
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x188, %rsi            # imm = 0x188
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21ccb
jmp 0x21cfe
movq -0x2b0(%rbp), %rdi
addq $0x438, %rdi            # imm = 0x438
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x190, %rsi            # imm = 0x190
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21cfc
jmp 0x21cfe
movq -0x2b0(%rbp), %rdi
callq 0x1eb30
jmp 0x21d0c
jmp 0x225b4
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x478(%rbp)
jmp 0x21d24
movsd -0x478(%rbp), %xmm1
movsd 0x95464(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x21e2d
leaq 0xa3c63(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x21de9
movl $0x0, -0x1ac(%rbp)
movq -0x2b0(%rbp), %rdi
movslq -0x1ac(%rbp), %rax
movq %rax, -0x480(%rbp)
addq $0x140, %rdi            # imm = 0x140
callq 0x7c90
movq %rax, %rcx
movq -0x480(%rbp), %rax
cmpq %rcx, %rax
jae 0x21de7
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x488(%rbp)
addq $0x140, %rdi            # imm = 0x140
movslq -0x1ac(%rbp), %rsi
callq 0xc6a0
movq -0x488(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21dd1
jmp 0x21dd3
movl -0x1ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ac(%rbp)
jmp 0x21d58
jmp 0x21e1a
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x198, %rsi            # imm = 0x198
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x21e18
jmp 0x21e1a
movq -0x2b0(%rbp), %rdi
callq 0x1f6c0
jmp 0x21e28
jmp 0x225b2
movq $0x0, -0x1b8(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x1b8(%rbp), %rax
movq %rax, -0x490(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x490(%rbp), %rax
cmpq %rcx, %rax
jae 0x2211f
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x49c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1b8(%rbp), %rsi
callq 0x27ad0
fldt -0x49c(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa3afe(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x21f54
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x4b8(%rbp)
movq -0x120(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x4b0(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x27a80
movsd %xmm0, -0x4a8(%rbp)
jmp 0x21efa
movq -0x2b0(%rbp), %rdi
movsd -0x4b8(%rbp), %xmm0
movsd -0x4a8(%rbp), %xmm2
movsd -0x4b0(%rbp), %xmm1
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x270(%rbp)
fldl -0x270(%rbp)
fstpt -0x4c4(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1b8(%rbp), %rsi
callq 0x27ad0
fldt -0x4c4(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa3a4d(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x2202c
movq $0x0, -0x1c0(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x1c0(%rbp), %rax
movq %rax, -0x4d0(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x4d0(%rbp), %rax
cmpq %rcx, %rax
jae 0x2202a
movq -0x138(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x1c0(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x22011
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x1c0(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x4dc(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1b8(%rbp), %rsi
callq 0x27ad0
fldt -0x4dc(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
jmp 0x22013
movq -0x1c0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1c0(%rbp)
jmp 0x21f6f
jmp 0x2202c
testb $0x1, -0xa0(%rbp)
je 0x22106
movq $0x0, -0x1c8(%rbp)
movq -0x1c8(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x22104
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x1c8(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x4f0(%rbp)
movq -0x1c8(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x1b8(%rbp), %rsi
callq 0xc6a0
movsd -0x4f0(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x278(%rbp)
fldl -0x278(%rbp)
fstpt -0x4e8(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1b8(%rbp), %rsi
callq 0x27ad0
fldt -0x4e8(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
movq -0x1c8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1c8(%rbp)
jmp 0x22044
jmp 0x22106
jmp 0x22108
movq -0x1b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1b8(%rbp)
jmp 0x21e38
movq -0x2b0(%rbp), %rdi
addq $0x3b8, %rdi            # imm = 0x3B8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x120, %rsi            # imm = 0x120
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2214e
leaq 0xa3853(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x221f9
movl $0x0, -0x1cc(%rbp)
movq -0x2b0(%rbp), %rdi
movl -0x1cc(%rbp), %eax
movq %rax, -0x4f8(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x4f8(%rbp), %rax
cmpq %rcx, %rax
jae 0x221f7
movq -0x2b0(%rbp), %rdi
addq $0x408, %rdi            # imm = 0x408
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x500(%rbp)
addq $0x128, %rdi            # imm = 0x128
movl -0x1cc(%rbp), %eax
movl %eax, %esi
callq 0xc6a0
movq -0x500(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x221e1
jmp 0x221e3
movl -0x1cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1cc(%rbp)
jmp 0x22168
jmp 0x221f9
leaq 0xa37a3(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x22236
movq -0x2b0(%rbp), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x170, %rsi            # imm = 0x170
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22234
jmp 0x22236
testb $0x1, -0xa0(%rbp)
je 0x222be
movq $0x0, -0x1d8(%rbp)
movq -0x1d8(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x222bc
movq -0x2b0(%rbp), %rdi
addq $0x418, %rdi            # imm = 0x418
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x508(%rbp)
addq $0x158, %rdi            # imm = 0x158
movq -0x1d8(%rbp), %rsi
callq 0xc6a0
movq -0x508(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x222a6
jmp 0x222a8
movq -0x1d8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1d8(%rbp)
jmp 0x2224a
jmp 0x222be
movq $0x0, -0x1e0(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x1e0(%rbp), %rax
movq %rax, -0x510(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x510(%rbp), %rax
cmpq %rcx, %rax
jae 0x225b0
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x51c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1e0(%rbp), %rsi
callq 0x27ad0
fldt -0x51c(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa366d(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x223e5
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x538(%rbp)
movq -0x120(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x530(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x27a80
movsd %xmm0, -0x528(%rbp)
jmp 0x2238b
movq -0x2b0(%rbp), %rdi
movsd -0x538(%rbp), %xmm0
movsd -0x528(%rbp), %xmm2
movsd -0x530(%rbp), %xmm1
subsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x260(%rbp)
fldl -0x260(%rbp)
fstpt -0x544(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1e0(%rbp), %rsi
callq 0x27ad0
fldt -0x544(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa35bc(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x224bd
movq $0x0, -0x1e8(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x1e8(%rbp), %rax
movq %rax, -0x550(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x550(%rbp), %rax
cmpq %rcx, %rax
jae 0x224bb
movq -0x138(%rbp), %rdi
movq -0x1e0(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x1e8(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x224a2
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x1e8(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x55c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1e0(%rbp), %rsi
callq 0x27ad0
fldt -0x55c(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
jmp 0x224a4
movq -0x1e8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e8(%rbp)
jmp 0x22400
jmp 0x224bd
testb $0x1, -0xa0(%rbp)
je 0x22597
movq $0x0, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x22595
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x1f0(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x570(%rbp)
movq -0x1f0(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x1e0(%rbp), %rsi
callq 0xc6a0
movsd -0x570(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x268(%rbp)
fldl -0x268(%rbp)
fstpt -0x568(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x1e0(%rbp), %rsi
callq 0x27ad0
fldt -0x568(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
movq -0x1f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1f0(%rbp)
jmp 0x224d5
jmp 0x22597
jmp 0x22599
movq -0x1e0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1e0(%rbp)
jmp 0x222c9
jmp 0x225b2
jmp 0x225b4
jmp 0x225b6
jmp 0x23355
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x578(%rbp)
jmp 0x225ce
movsd -0x578(%rbp), %xmm1
movsd 0x950ea(%rip), %xmm0    # 0xb76c8
ucomisd %xmm1, %xmm0
jb 0x22648
movq -0x2b0(%rbp), %rdi
addq $0x8, %rdi
movq -0x10(%rbp), %rsi
movl $0x1, %edx
callq 0x27b30
movsd %xmm0, -0x580(%rbp)
jmp 0x22607
movq -0x2b0(%rbp), %rdi
movsd -0x580(%rbp), %xmm1
movsd -0x158(%rbp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x158(%rbp)
addq $0x8, %rdi
callq 0x27050
jmp 0x22635
movq -0x2b0(%rbp), %rdi
callq 0x1eb30
jmp 0x22643
jmp 0x23353
movq -0x10(%rbp), %rdi
callq 0xb26f0
movsd %xmm0, -0x588(%rbp)
jmp 0x2265b
movsd -0x588(%rbp), %xmm1
movsd 0x94b2d(%rip), %xmm0    # 0xb7198
ucomisd %xmm1, %xmm0
jb 0x229ae
leaq 0xa332c(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x22720
movl $0x0, -0x1f4(%rbp)
movq -0x2b0(%rbp), %rdi
movslq -0x1f4(%rbp), %rax
movq %rax, -0x590(%rbp)
addq $0x140, %rdi            # imm = 0x140
callq 0x7c90
movq %rax, %rcx
movq -0x590(%rbp), %rax
cmpq %rcx, %rax
jae 0x2271e
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x598(%rbp)
addq $0x140, %rdi            # imm = 0x140
movslq -0x1f4(%rbp), %rsi
callq 0xc6a0
movq -0x598(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22708
jmp 0x2270a
movl -0x1f4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1f4(%rbp)
jmp 0x2268f
jmp 0x22751
movq -0x2b0(%rbp), %rdi
addq $0x3c8, %rdi            # imm = 0x3C8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x198, %rsi            # imm = 0x198
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2274f
jmp 0x22751
leaq 0xa3258(%rip), %rax     # 0xc59b0
testb $0x1, (%rax)
je 0x2278e
movq -0x2b0(%rbp), %rdi
addq $0x500, %rdi            # imm = 0x500
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x1a0, %rsi            # imm = 0x1A0
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2278c
jmp 0x2278e
leaq 0xa3214(%rip), %rax     # 0xc59a9
testb $0x1, (%rax)
je 0x229a9
movq -0x2b0(%rbp), %rdi
callq 0x20820
jmp 0x227ac
movl $0x0, -0x1f8(%rbp)
movl -0x1f8(%rbp), %eax
leaq 0xa31e9(%rip), %rcx     # 0xc59ac
cmpl (%rcx), %eax
jge 0x22999
movq -0x2b0(%rbp), %rdi
addq $0x488, %rdi            # imm = 0x488
movslq -0x1f8(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x5a0(%rbp)
addq $0x308, %rdi            # imm = 0x308
movslq -0x1f8(%rbp), %rsi
callq 0xc6a0
movq -0x5a0(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22823
movq -0x2b0(%rbp), %rdi
addq $0x4a0, %rdi            # imm = 0x4A0
movslq -0x1f8(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x5a8(%rbp)
addq $0x320, %rdi            # imm = 0x320
movslq -0x1f8(%rbp), %rsi
callq 0xc6a0
movq -0x5a8(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2287b
movq -0x2b0(%rbp), %rdi
addq $0x4b8, %rdi            # imm = 0x4B8
movslq -0x1f8(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x5b0(%rbp)
addq $0x338, %rdi            # imm = 0x338
movslq -0x1f8(%rbp), %rsi
callq 0xc6a0
movq -0x5b0(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x228d3
movq -0x2b0(%rbp), %rdi
addq $0x4d0, %rdi            # imm = 0x4D0
movslq -0x1f8(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x5b8(%rbp)
addq $0x350, %rdi            # imm = 0x350
movslq -0x1f8(%rbp), %rsi
callq 0xc6a0
movq -0x5b8(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x2292b
movq -0x2b0(%rbp), %rdi
addq $0x4e8, %rdi            # imm = 0x4E8
movslq -0x1f8(%rbp), %rsi
callq 0x26ef0
movq %rax, %rdi
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x5c0(%rbp)
addq $0x368, %rdi            # imm = 0x368
movslq -0x1f8(%rbp), %rsi
callq 0xc6a0
movq -0x5c0(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22983
jmp 0x22985
movl -0x1f8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1f8(%rbp)
jmp 0x227b6
movq -0x2b0(%rbp), %rdi
callq 0x203a0
jmp 0x229a7
jmp 0x229a9
jmp 0x23351
movq $0x0, -0x200(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x200(%rbp), %rax
movq %rax, -0x5c8(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x5c8(%rbp), %rax
cmpq %rcx, %rax
jae 0x22d69
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x5d4(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x200(%rbp), %rsi
callq 0x27ad0
fldt -0x5d4(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa2f7d(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x22b9e
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x5f8(%rbp)
movq -0x120(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0xa6a0
movq %rax, %rcx
movq -0x2b0(%rbp), %rax
movsd (%rcx), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x5f0(%rbp)
movsd 0x178(%rax), %xmm0
movsd %xmm0, -0x5e8(%rbp)
movq -0x120(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movl $0x2, %edi
callq 0x16850
movsd %xmm0, -0x5e0(%rbp)
jmp 0x22ac2
movq -0x2b0(%rbp), %rax
movsd -0x5f0(%rbp), %xmm2
movsd -0x5f8(%rbp), %xmm0
movsd -0x5e0(%rbp), %xmm3
movsd -0x5e8(%rbp), %xmm1
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x610(%rbp)
movsd 0x180(%rax), %xmm0
movsd %xmm0, -0x608(%rbp)
movq -0x120(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movl $0x3, %edi
callq 0x16850
movsd %xmm0, -0x600(%rbp)
jmp 0x22b44
movq -0x2b0(%rbp), %rdi
movsd -0x610(%rbp), %xmm1
movsd -0x600(%rbp), %xmm2
movsd -0x608(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x250(%rbp)
fldl -0x250(%rbp)
fstpt -0x61c(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x200(%rbp), %rsi
callq 0x27ad0
fldt -0x61c(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
leaq 0xa2e03(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x22c76
movq $0x0, -0x208(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x208(%rbp), %rax
movq %rax, -0x628(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x628(%rbp), %rax
cmpq %rcx, %rax
jae 0x22c74
movq -0x138(%rbp), %rdi
movq -0x200(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x208(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x22c5b
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x208(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x634(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x200(%rbp), %rsi
callq 0x27ad0
fldt -0x634(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
jmp 0x22c5d
movq -0x208(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x208(%rbp)
jmp 0x22bb9
jmp 0x22c76
testb $0x1, -0xa0(%rbp)
je 0x22d50
movq $0x0, -0x210(%rbp)
movq -0x210(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x22d4e
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x210(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x648(%rbp)
movq -0x210(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x200(%rbp), %rsi
callq 0xc6a0
movsd -0x648(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x258(%rbp)
fldl -0x258(%rbp)
fstpt -0x640(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x200(%rbp), %rsi
callq 0x27ad0
fldt -0x640(%rbp)
fldt (%rax)
fsubp %st, %st(1)
fstpt (%rax)
movq -0x210(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x210(%rbp)
jmp 0x22c8e
jmp 0x22d50
jmp 0x22d52
movq -0x200(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x200(%rbp)
jmp 0x229b9
movq -0x2b0(%rbp), %rdi
addq $0x3b8, %rdi            # imm = 0x3B8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x120, %rsi            # imm = 0x120
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22d98
leaq 0xa2c09(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x22e43
movl $0x0, -0x214(%rbp)
movq -0x2b0(%rbp), %rdi
movl -0x214(%rbp), %eax
movq %rax, -0x650(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x650(%rbp), %rax
cmpq %rcx, %rax
jae 0x22e41
movq -0x2b0(%rbp), %rdi
addq $0x408, %rdi            # imm = 0x408
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x658(%rbp)
addq $0x128, %rdi            # imm = 0x128
movl -0x214(%rbp), %eax
movl %eax, %esi
callq 0xc6a0
movq -0x658(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22e2b
jmp 0x22e2d
movl -0x214(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x214(%rbp)
jmp 0x22db2
jmp 0x22e43
leaq 0xa2b59(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x22f0c
leaq 0xa2b4a(%rip), %rax     # 0xc59a4
cmpl $0x1, (%rax)
jl 0x22e90
movq -0x2b0(%rbp), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x170, %rsi            # imm = 0x170
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22e8e
jmp 0x22e90
leaq 0xa2b0d(%rip), %rax     # 0xc59a4
cmpl $0x2, (%rax)
jl 0x22ecd
movq -0x2b0(%rbp), %rdi
addq $0x3e8, %rdi            # imm = 0x3E8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x178, %rsi            # imm = 0x178
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22ecb
jmp 0x22ecd
leaq 0xa2ad0(%rip), %rax     # 0xc59a4
cmpl $0x3, (%rax)
jne 0x22f0a
movq -0x2b0(%rbp), %rdi
addq $0x3f8, %rdi            # imm = 0x3F8
callq 0xc680
movq -0x2b0(%rbp), %rsi
movq %rax, %rdi
addq $0x180, %rsi            # imm = 0x180
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22f08
jmp 0x22f0a
jmp 0x22f0c
testb $0x1, -0xa0(%rbp)
je 0x22f94
movq $0x0, -0x220(%rbp)
movq -0x220(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x22f92
movq -0x2b0(%rbp), %rdi
addq $0x418, %rdi            # imm = 0x418
callq 0xc680
movq -0x2b0(%rbp), %rdi
movq %rax, -0x660(%rbp)
addq $0x158, %rdi            # imm = 0x158
movq -0x220(%rbp), %rsi
callq 0xc6a0
movq -0x660(%rbp), %rdi
movq %rax, %rsi
movq -0x10(%rbp), %rdx
callq 0xb4500
jmp 0x22f7c
jmp 0x22f7e
movq -0x220(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x220(%rbp)
jmp 0x22f20
jmp 0x22f94
movq $0x0, -0x228(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x228(%rbp), %rax
movq %rax, -0x668(%rbp)
addq $0x380, %rdi            # imm = 0x380
callq 0x27a60
movq %rax, %rcx
movq -0x668(%rbp), %rax
cmpq %rcx, %rax
jae 0x2334f
movq -0x2b0(%rbp), %rdi
fldl 0x120(%rdi)
fstpt -0x674(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x228(%rbp), %rsi
callq 0x27ad0
fldt -0x674(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa2997(%rip), %rax     # 0xc59a3
testb $0x1, (%rax)
je 0x23184
movq -0x2b0(%rbp), %rax
movsd 0x170(%rax), %xmm0
movsd %xmm0, -0x698(%rbp)
movq -0x120(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0xa6a0
movq %rax, %rcx
movq -0x2b0(%rbp), %rax
movsd (%rcx), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x690(%rbp)
movsd 0x178(%rax), %xmm0
movsd %xmm0, -0x688(%rbp)
movq -0x120(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movl $0x2, %edi
callq 0x16850
movsd %xmm0, -0x680(%rbp)
jmp 0x230a8
movq -0x2b0(%rbp), %rax
movsd -0x690(%rbp), %xmm2
movsd -0x698(%rbp), %xmm0
movsd -0x680(%rbp), %xmm3
movsd -0x688(%rbp), %xmm1
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x6b0(%rbp)
movsd 0x180(%rax), %xmm0
movsd %xmm0, -0x6a8(%rbp)
movq -0x120(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0xa6a0
movsd (%rax), %xmm0
movsd -0x160(%rbp), %xmm1
subsd %xmm1, %xmm0
movl $0x3, %edi
callq 0x16850
movsd %xmm0, -0x6a0(%rbp)
jmp 0x2312a
movq -0x2b0(%rbp), %rdi
movsd -0x6b0(%rbp), %xmm1
movsd -0x6a0(%rbp), %xmm2
movsd -0x6a8(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x240(%rbp)
fldl -0x240(%rbp)
fstpt -0x6bc(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x228(%rbp), %rsi
callq 0x27ad0
fldt -0x6bc(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
leaq 0xa281d(%rip), %rax     # 0xc59a8
testb $0x1, (%rax)
je 0x2325c
movq $0x0, -0x230(%rbp)
movq -0x2b0(%rbp), %rdi
movq -0x230(%rbp), %rax
movq %rax, -0x6c8(%rbp)
addq $0x128, %rdi            # imm = 0x128
callq 0x7c90
movq %rax, %rcx
movq -0x6c8(%rbp), %rax
cmpq %rcx, %rax
jae 0x2325a
movq -0x138(%rbp), %rdi
movq -0x228(%rbp), %rsi
callq 0x166f0
movslq (%rax), %rax
movq -0x230(%rbp), %rcx
addq $0x1, %rcx
cmpq %rcx, %rax
jne 0x23241
movq -0x2b0(%rbp), %rdi
addq $0x128, %rdi            # imm = 0x128
movq -0x230(%rbp), %rsi
callq 0xc6a0
movq -0x2b0(%rbp), %rdi
fldl (%rax)
fstpt -0x6d4(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x228(%rbp), %rsi
callq 0x27ad0
fldt -0x6d4(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
jmp 0x23243
movq -0x230(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x230(%rbp)
jmp 0x2319f
jmp 0x2325c
testb $0x1, -0xa0(%rbp)
je 0x23336
movq $0x0, -0x238(%rbp)
movq -0x238(%rbp), %rax
movslq -0x9c(%rbp), %rcx
cmpq %rcx, %rax
jae 0x23334
movq -0x2b0(%rbp), %rdi
addq $0x158, %rdi            # imm = 0x158
movq -0x238(%rbp), %rsi
callq 0xc6a0
movsd (%rax), %xmm0
movsd %xmm0, -0x6e8(%rbp)
movq -0x238(%rbp), %rsi
leaq -0x150(%rbp), %rdi
callq 0x15d30
movq %rax, %rdi
movq -0x228(%rbp), %rsi
callq 0xc6a0
movsd -0x6e8(%rbp), %xmm0
movq -0x2b0(%rbp), %rdi
movsd (%rax), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x248(%rbp)
fldl -0x248(%rbp)
fstpt -0x6e0(%rbp)
addq $0x380, %rdi            # imm = 0x380
movq -0x228(%rbp), %rsi
callq 0x27ad0
fldt -0x6e0(%rbp)
fldt (%rax)
faddp %st, %st(1)
fstpt (%rax)
movq -0x238(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x238(%rbp)
jmp 0x23274
jmp 0x23336
jmp 0x23338
movq -0x228(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x228(%rbp)
jmp 0x22f9f
jmp 0x23351
jmp 0x23353
jmp 0x23355
jmp 0x23357
movsd -0x158(%rbp), %xmm0
movsd %xmm0, -0x6f0(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x16030
leaq -0x118(%rbp), %rdi
callq 0x155c0
movsd -0x6f0(%rbp), %xmm0
addq $0x6f0, %rsp            # imm = 0x6F0
popq %rbp
retq
leaq -0x118(%rbp), %rdi
callq 0x155c0
movq -0x128(%rbp), %rdi
callq 0x6830
nopl (%rax,%rax)