// File: /workspace/github_cpp_makefile_star2_O3/TBody[P]atomicpp/atomicpp/RateEquations.cpp
// Function: atomicpp::RateEquations::calculateElectronImpactPopulationEquation(double, std::vector<double, std::allocator<double>> const&, std::vector<double, std::allocator<double>> const&, double)
void RateEquations::calculateElectronImpactPopulationEquation(
	const double Ne,
	const std::vector<double>& Nzk,
	const std::vector<double>& Vzk,
	const double Te
	){
	
	// Initialise vectors as all zeros (this is default, but it doesn't hurt to be explicit)
	// These will be summed with Neumaier summation
	//Rates for population equation
		std::vector<double>    iz_to_above(Z+1, 0.0); //Rate (m^-3 s^-1)
		std::vector<double>  iz_from_below(Z+1, 0.0);
		std::vector<double>   rec_to_below(Z+1, 0.0);
		std::vector<double> rec_from_above(Z+1, 0.0);

	//Rates for momentum equation
		std::vector<double>    iz_p_to_above(Z+1, 0.0); //Momentum (kg m/s s^-1 = N)
		std::vector<double>  iz_p_from_below(Z+1, 0.0);
		std::vector<double>   rec_p_to_below(Z+1, 0.0);
		std::vector<double> rec_p_from_above(Z+1, 0.0);

	std::shared_ptr<RateCoefficient> ionisation_coefficient    = rate_coefficients["ionisation"];
	std::shared_ptr<RateCoefficient> recombination_coefficient = rate_coefficients["recombination"];
	
	//N.b. iterating over all data indices of the rate coefficient, hence the < since these are 0,...,Z-1  or 1,...,Z indexed
	for(int k=0; k < Z; ++k){
		double ionisation_coefficient_evaluated = ionisation_coefficient->call0D(k, Te, Ne);
		double recombination_coefficient_evaluated = recombination_coefficient->call0D(k, Te, Ne);
		
		// Note that recombination coefficients are indexed from 1 to Z, while ionisation is indexed from 0 to Z-1 (consider what 
		// charge the target must have in each case)
		int k_rec = k + 1; //The target charge state for recombination -- makes it a bit easier to understand

		double ionisation_rate_factor = ionisation_coefficient_evaluated * Ne;
		// std::printf("ionisation(%i)    K = %e, Ne = %e, Nzk = %e, R= %e\n",k,ionisation_coefficient_evaluated, Ne, Nzk[k],ionisation_rate_factor);
		double recombination_rate_factor = recombination_coefficient_evaluated * Ne;
		// std::printf("recombination(%i) K = %e, Ne = %e, Nzk = %e, R= %e\n",k+1,recombination_coefficient_evaluated, Ne, Nzk[k+1],recombination_rate_factor);

		// Want both the target and source densities to be above the Nthres density threshold
		// If we allow target to be below the source density, then won't get particle balance if ignoring stage or alternatively
		// 	will artificially pump a low density stage if we consider only source terms
		// 	N.b. Nzk[k+1] = Nzk[k_rec], Nzk[k] = Nzk[k_rec - 1], so can test just one condition and it will work for ionisation and recombination
		if((Nzk[k+1] > Nthres) and (Nzk[k] > Nthres)){
			//Rates 'to' a state are loss terms from that state. They are paired with Rates 'from'
			//which are source terms for other states
			iz_to_above.at(k)               = -ionisation_rate_factor * Nzk.at(k);
			iz_from_below.at(k+1)        = +ionisation_rate_factor * Nzk.at(k);
			rec_to_below.at(k_rec)       = -recombination_rate_factor * Nzk.at(k_rec);
			rec_from_above.at(k_rec-1)   = +recombination_rate_factor * Nzk.at(k_rec);

			iz_p_to_above.at(k)          = -ionisation_rate_factor * mz * amu_to_kg * Vzk.at(k);
			iz_p_from_below.at(k+1)      = +ionisation_rate_factor * mz * amu_to_kg * Vzk.at(k);
			rec_p_to_below.at(k_rec)     = -recombination_rate_factor * mz * amu_to_kg * Vzk.at(k_rec);
			rec_p_from_above.at(k_rec-1) = +recombination_rate_factor * mz * amu_to_kg * Vzk.at(k_rec);
		}
		// Otherwise, the rates stay as default = 0
	}

	for(int k=0; k <= Z; ++k){
		// N.b. bare nucleus will not contribute to electron density nor have an ionisation potential -- treat it separately
		// Rates will be zero for edge cases (from initialisation)
		std::vector<double> rates_for_stage              = {iz_to_above[k],iz_from_below[k],rec_to_below[k],rec_from_above[k]};
		std::pair<double, double> neumaier_pair_rates    = neumaierSum(rates_for_stage);
		dNzk[k]                                          = neumaier_pair_rates.first;
		dNzk_correction[k]                               = neumaier_pair_rates.second; //Store compensation separately for later evaluation

		std::vector<double> momentum_for_stage           = {iz_p_to_above[k],iz_p_from_below[k],rec_p_to_below[k],rec_p_from_above[k]};
		std::pair<double, double> neumaier_pair_momentum = neumaierSum(momentum_for_stage);
		F_zk[k]                                          = neumaier_pair_momentum.first;
		F_zk_correction[k]                               = neumaier_pair_momentum.second; //Store compensation separately for later evaluation
	}

	//For Neumaier summation of the change in Ne from the different rates 
	std::vector<double> dNe_from_stage(Z, 0.0);
	// Ionisation potential (in eV per transition) is not a rate coefficient, but is treated as one since the interpolation methods and
	// data shape are identical. This is used to calculate the effect of iz and rec on the electron energy (in Pcool).
	std::shared_ptr<RateCoefficient> ionisation_potential = rate_coefficients["ionisation_potential"];
	for(int k=0; k < Z; ++k){
		// N.b. bare nucleus will not contribute to electron density nor have an ionisation potential
		// Rates will be zero for edge cases (from initialisation)
		double ionisation_potential_evaluated            = ionisation_potential->call0D(k, Te, Ne);
		Pcool                                            += eV_to_J * ionisation_potential_evaluated * (iz_to_above[k] + rec_from_above[k]); //N.b. iz_to_above is -ve, rec_from_above is +ve
		dNe_from_stage[k]                                = -(iz_to_above[k] + rec_from_above[k]); //N.b. rates already have signs
	}
	// Perturbation on electron density
	std::pair<double, double> neumaier_pair_dNe      = neumaierSum(dNe_from_stage);
	dNe                                              = neumaier_pair_dNe.first + neumaier_pair_dNe.second;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1c8, %rsp            # imm = 0x1C8
movsd %xmm1, -0xb0(%rbp)
movq %rdx, -0x1a8(%rbp)
movq %rsi, %r15
movsd %xmm0, -0x78(%rbp)
movq %rdi, %rbx
movslq 0x34(%rdi), %r12
incq %r12
leaq -0x70(%rbp), %r13
movq $0x0, (%r13)
leaq -0x188(%rbp), %r14
movq %r14, %rdi
callq 0x533c
leaq -0x1e8(%rbp), %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %r14, %rcx
callq 0x1802a
leaq -0x188(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
leaq -0x70(%rbp), %r12
movq $0x0, (%r12)
leaq -0x170(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x188(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x170(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0xf8(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x170(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0xf8(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0x158(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0xf8(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x158(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0x140(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x158(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x140(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0x128(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x140(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x128(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0x110(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x128(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x110(%rbp), %rdi
callq 0x5a80
movslq 0x34(%rbx), %r14
incq %r14
movq $0x0, (%r12)
leaq -0x90(%rbp), %r13
movq %r13, %rdi
callq 0x533c
leaq -0x110(%rbp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movq %r13, %rcx
callq 0x1802a
leaq -0x90(%rbp), %rdi
callq 0x5a80
leaq -0x90(%rbp), %r14
movq %r14, %rdi
callq 0x4540
leaq 0x2d78(%rip), %rsi      # 0x22040
leaq -0x70(%rbp), %rdi
movq %r14, %rdx
callq 0x4160
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0xd17e
leaq -0x1d0(%rbp), %rdi
movq %rax, %rsi
callq 0xd174
leaq -0x70(%rbp), %rdi
callq 0x41a0
leaq -0x90(%rbp), %rdi
callq 0x58c6
movq %r14, %rdi
callq 0x4540
leaq 0x2d38(%rip), %rsi      # 0x2204b
leaq -0x70(%rbp), %rdi
movq %r14, %rdx
callq 0x4160
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0xd17e
movq -0x1a8(%rbp), %r14
leaq -0x1c0(%rbp), %rdi
movq %rax, %rsi
callq 0xd174
leaq -0x70(%rbp), %rdi
callq 0x41a0
leaq -0x90(%rbp), %rdi
callq 0x58c6
movl 0x34(%rbx), %eax
testl %eax, %eax
jle 0x1f640
xorl %r12d, %r12d
leaq -0x1d0(%rbp), %rdi
callq 0x53ae
movq %rax, %rdi
movl %r12d, %esi
movsd -0xb0(%rbp), %xmm0
movsd -0x78(%rbp), %xmm1
callq 0x11312
movapd %xmm0, -0x50(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x53ae
movq %rax, %rdi
movl %r12d, %esi
movsd -0xb0(%rbp), %xmm0
movsd -0x78(%rbp), %xmm1
callq 0x11312
movapd %xmm0, -0xa0(%rbp)
leaq 0x1(%r12), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x184f2
movsd (%rax), %xmm0
ucomisd 0x40(%rbx), %xmm0
jbe 0x1f630
movq %r15, %rdi
movq %r12, %rsi
callq 0x184f2
movsd (%rax), %xmm0
ucomisd 0x40(%rbx), %xmm0
jbe 0x1f630
movq %r15, %rdi
movq %r12, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x1e8(%rbp), %rdi
movq %r12, %rsi
callq 0x1d102
movapd -0x50(%rbp), %xmm0
mulsd -0x78(%rbp), %xmm0
movapd %xmm0, -0x50(%rbp)
xorpd 0x5c64(%rip), %xmm0     # 0x25090
movapd %xmm0, -0xe0(%rbp)
movsd -0x38(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq %r15, %rdi
movq %r12, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x188(%rbp), %rdi
movq %r13, %rsi
callq 0x1d102
movsd -0x38(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x170(%rbp), %rdi
movq %r13, %rsi
callq 0x1d102
movapd -0xa0(%rbp), %xmm0
mulsd -0x78(%rbp), %xmm0
movapd %xmm0, -0xa0(%rbp)
xorpd 0x5bde(%rip), %xmm0     # 0x25090
movapd %xmm0, -0x1a0(%rbp)
movsd -0x38(%rbp), %xmm1
mulsd %xmm0, %xmm1
movsd %xmm1, (%rax)
movq %r15, %rdi
movq %r13, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0xf8(%rbp), %rdi
movq %r12, %rsi
callq 0x1d102
movsd -0x38(%rbp), %xmm0
mulsd -0xa0(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x38(%rbx), %xmm0
movsd %xmm0, -0x38(%rbp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0xa8(%rbp)
leaq -0x158(%rbp), %rdi
movq %r12, %rsi
callq 0x1d102
movsd -0x38(%rbp), %xmm0
mulsd -0xe0(%rbp), %xmm0
mulsd 0x5b30(%rip), %xmm0     # 0x25070
mulsd -0xa8(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x38(%rbx), %xmm0
movsd %xmm0, -0x38(%rbp)
movq %r14, %rdi
movq %r12, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0xe0(%rbp)
leaq -0x140(%rbp), %rdi
movq %r13, %rsi
callq 0x1d102
movapd -0x50(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
mulsd 0x5ae2(%rip), %xmm0     # 0x25070
mulsd -0xe0(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x38(%rbx), %xmm0
movsd %xmm0, -0x50(%rbp)
movq %r14, %rdi
movq %r13, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x128(%rbp), %rdi
movq %r13, %rsi
callq 0x1d102
movsd -0x50(%rbp), %xmm0
mulsd -0x1a0(%rbp), %xmm0
mulsd 0x5a94(%rip), %xmm0     # 0x25070
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, (%rax)
movsd 0x38(%rbx), %xmm0
movsd %xmm0, -0x50(%rbp)
movq %r14, %rdi
movq %r13, %rsi
callq 0x1d15e
movsd (%rax), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x110(%rbp), %rdi
movq %r12, %rsi
callq 0x1d102
movapd -0xa0(%rbp), %xmm0
mulsd -0x50(%rbp), %xmm0
mulsd 0x5a49(%rip), %xmm0     # 0x25070
mulsd -0x38(%rbp), %xmm0
movsd %xmm0, (%rax)
movslq 0x34(%rbx), %rax
movq %r13, %r12
cmpq %rax, %r13
jl 0x1f364
testl %eax, %eax
js 0x1f865
leaq 0x70(%rbx), %rax
movq %rax, -0x38(%rbp)
leaq 0xa0(%rbx), %rax
movq %rax, -0xe0(%rbp)
leaq 0x88(%rbx), %rax
movq %rax, -0xa8(%rbp)
leaq 0xb8(%rbx), %rax
movq %rax, -0x1a0(%rbp)
movq $-0x1, %r14
leaq -0x29(%rbp), %r13
movq %rbx, -0x1b0(%rbp)
incq %r14
leaq -0x1e8(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
leaq -0x188(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq -0x170(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
leaq -0xf8(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x58(%rbp)
leaq -0xc8(%rbp), %rbx
movq %rbx, %rdi
callq 0x533c
movl $0x4, %edx
leaq -0x90(%rbp), %rdi
leaq -0x70(%rbp), %r12
movq %r12, %rsi
movq %rbx, %rcx
callq 0x1841c
movq %rbx, %rdi
callq 0x5a80
xorps %xmm0, %xmm0
leaq -0x90(%rbp), %rdi
callq 0x20e6e
movsd %xmm0, -0xa0(%rbp)
movsd %xmm1, -0x50(%rbp)
movq -0x38(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, (%rax)
movq -0xe0(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
leaq -0x158(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x70(%rbp)
leaq -0x140(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq -0x128(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
leaq -0x110(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0x58(%rbp)
movq %r13, %rdi
callq 0x533c
movl $0x4, %edx
movq %rbx, %rdi
movq %r12, %rsi
movq %r13, %rcx
callq 0x1841c
movq %r13, %rdi
callq 0x5a80
xorps %xmm0, %xmm0
movq %rbx, %rdi
callq 0x20e6e
movsd %xmm0, -0xa0(%rbp)
movsd %xmm1, -0x50(%rbp)
movq -0xa8(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, (%rax)
movq -0x1a0(%rbp), %rdi
movq %r14, %rsi
callq 0x539c
movsd -0x50(%rbp), %xmm0
movsd %xmm0, (%rax)
movq %rbx, %rdi
callq 0x53c6
leaq -0x90(%rbp), %rdi
callq 0x53c6
movq -0x1b0(%rbp), %rbx
movslq 0x34(%rbx), %r12
cmpq %r12, %r14
jl 0x1f68c
jmp 0x1f868
movslq %eax, %r12
leaq -0x70(%rbp), %r14
movq $0x0, (%r14)
leaq -0xc8(%rbp), %r15
movq %r15, %rdi
callq 0x533c
leaq -0x90(%rbp), %rdi
movq %r12, %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x1802a
leaq -0xc8(%rbp), %rdi
callq 0x5a80
leaq -0x29(%rbp), %r14
movq %r14, %rdi
callq 0x4540
leaq 0x3f2e(%rip), %rsi      # 0x237e4
leaq -0x70(%rbp), %rdi
movq %r14, %rdx
callq 0x4160
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0xd17e
leaq -0xc8(%rbp), %rdi
movq %rax, %rsi
callq 0xd174
leaq -0x70(%rbp), %rdi
callq 0x41a0
leaq -0x29(%rbp), %rdi
callq 0x58c6
cmpl $0x0, 0x34(%rbx)
jle 0x1f9d7
xorl %r14d, %r14d
leaq -0x1e8(%rbp), %r12
leaq -0xf8(%rbp), %r13
leaq -0x90(%rbp), %r15
leaq -0xc8(%rbp), %rdi
callq 0x53ae
movq %rax, %rdi
movl %r14d, %esi
movsd -0xb0(%rbp), %xmm0
movsd -0x78(%rbp), %xmm1
callq 0x11312
mulsd 0x573b(%rip), %xmm0     # 0x25078
movsd %xmm0, -0x50(%rbp)
movq %r12, %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movsd %xmm0, -0xa0(%rbp)
movq %r13, %rdi
movq %r14, %rsi
callq 0x539c
movsd -0xa0(%rbp), %xmm0
addsd (%rax), %xmm0
mulsd -0x50(%rbp), %xmm0
addsd 0x60(%rbx), %xmm0
movsd %xmm0, 0x60(%rbx)
movq %r12, %rdi
movq %r14, %rsi
callq 0x539c
movsd (%rax), %xmm0
movaps %xmm0, -0x50(%rbp)
movq %r13, %rdi
movq %r14, %rsi
callq 0x539c
movapd -0x50(%rbp), %xmm0
addsd (%rax), %xmm0
xorpd 0x56e2(%rip), %xmm0     # 0x25090
movapd %xmm0, -0x50(%rbp)
movq %r15, %rdi
movq %r14, %rsi
callq 0x539c
movapd -0x50(%rbp), %xmm0
movlpd %xmm0, (%rax)
incq %r14
movslq 0x34(%rbx), %rax
cmpq %rax, %r14
jl 0x1f911
leaq -0x90(%rbp), %r14
xorpd %xmm0, %xmm0
movq %r14, %rdi
callq 0x20e6e
addsd %xmm0, %xmm1
movsd %xmm1, 0xd0(%rbx)
leaq -0xc8(%rbp), %rdi
callq 0x53b8
movq %r14, %rdi
callq 0x53c6
leaq -0x1c0(%rbp), %rdi
callq 0x53b8
leaq -0x1d0(%rbp), %rdi
callq 0x53b8
leaq -0x110(%rbp), %rdi
callq 0x53c6
leaq -0x128(%rbp), %rdi
callq 0x53c6
leaq -0x140(%rbp), %rdi
callq 0x53c6
leaq -0x158(%rbp), %rdi
callq 0x53c6
leaq -0xf8(%rbp), %rdi
callq 0x53c6
leaq -0x170(%rbp), %rdi
callq 0x53c6
leaq -0x188(%rbp), %rdi
callq 0x53c6
leaq -0x1e8(%rbp), %rdi
callq 0x53c6
addq $0x1c8, %rsp            # imm = 0x1C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x41a0
jmp 0x1faa5
movq %rax, %rbx
leaq -0x29(%rbp), %rdi
callq 0x58c6
jmp 0x1fbce
jmp 0x1fbb1
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x41a0
jmp 0x1fac9
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x58c6
jmp 0x1fbeb
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x41a0
jmp 0x1faeb
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x58c6
jmp 0x1fbf7
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x5a80
jmp 0x1fc03
movq %rax, %rbx
leaq -0x110(%rbp), %rdi
callq 0x5a80
jmp 0x1fc0f
movq %rax, %rbx
leaq -0x128(%rbp), %rdi
callq 0x5a80
jmp 0x1fc1b
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x5a80
jmp 0x1fc27
movq %rax, %rbx
leaq -0x158(%rbp), %rdi
callq 0x5a80
jmp 0x1fc33
movq %rax, %rbx
leaq -0xf8(%rbp), %rdi
callq 0x5a80
jmp 0x1fc3f
movq %rax, %rbx
leaq -0x170(%rbp), %rdi
callq 0x5a80
jmp 0x1fc4b
movq %rax, %rbx
leaq -0x188(%rbp), %rdi
callq 0x5a80
jmp 0x1fc57
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
callq 0x53b8
jmp 0x1fbce
jmp 0x1fbdc
jmp 0x1fbdc
movq %rax, %rbx
leaq -0xc8(%rbp), %rdi
callq 0x5a80
jmp 0x1fbdf
movq %rax, %rbx
leaq -0x29(%rbp), %rdi
callq 0x5a80
leaq -0x90(%rbp), %rdi
callq 0x53c6
jmp 0x1fbdf
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
callq 0x53b8
leaq -0x1d0(%rbp), %rdi
callq 0x53b8
leaq -0x110(%rbp), %rdi
callq 0x53c6
leaq -0x128(%rbp), %rdi
callq 0x53c6
leaq -0x140(%rbp), %rdi
callq 0x53c6
leaq -0x158(%rbp), %rdi
callq 0x53c6
leaq -0xf8(%rbp), %rdi
callq 0x53c6
leaq -0x170(%rbp), %rdi
callq 0x53c6
leaq -0x188(%rbp), %rdi
callq 0x53c6
leaq -0x1e8(%rbp), %rdi
callq 0x53c6
movq %rbx, %rdi
callq 0x45a0
nop