// File: nwieder[P]SSTS/src/System/Gillespie_Sys.cpp
// Function: nw::Gillespie_Sys::go(long)
void Gillespie_Sys::go(long n_it)
{
	try{

// 		build path to output files. n_it represents the current simulation run.

//		data files containing molecular numbers
		data_path << output_dir_path << "data_" << n_it << ".e";
// 		open/close log for channel dynamics
		oc_path << output_dir_path << "oc_log_" << n_it << ".e";
//		independent result log of every simulation run
		info_path << output_dir_path << "sim_res.e";

		const string &tmp_data = data_path.str();
		const string &tmp_info = info_path.str();
		const string &tmp_oclog = oc_path.str();

//		connect streams to output file
		data_output_file.open(tmp_data.c_str());
		oc_log_file.open(tmp_oclog.c_str());
		oc_log_file << std::setprecision(10);

//		reconnect to existing file (adding text)
		if (n_it == 1){
			info_output_file.open(tmp_info.c_str());
		}else{
			info_output_file.open(tmp_info.c_str(), ios::in | ios::ate);
		}

//		console output: indicate simulation start
		info_output_file<< "###### Run: " << n_it << " ######" << endl;
		cout << "--SIMULATION BEGIN-- \n" << endl;
		info_output_file << "--SIMULATION RESULTS-- \n" << endl;

//		print the initial system state
		print_system_state();

//		###############################
//		## START THE SIMULATION LOOP ##
//		###############################

//		set times
		double tau = 0, begin, end;
		begin = time(0);

//		check exit conditions
		for (size_t i = 0; i < n_steps; ++i) {
			if (curr_time <= max_Sim_Time) {

				long nextIndex = 0;
				double minTau = INFINITY;

//				event update procedure
				for (size_t j = 0; j < evt_vec->size(); ++j) {
					double actTau = evt_vec->at(j)->update(tau);
//					determine next Event Index
					if (actTau < minTau) {
						minTau = actTau;
						nextIndex = j;
					}
				}

//				update system times
				tau = minTau;
				rec_time += tau;
				curr_time += tau;

//				update event counter
				evt_cntr[nextIndex]++;

//				execute next Event
				evt_vec->at(nextIndex)->execute();

//				print system state if necessary
				system_output();

			} else{
				n_steps = i;
				break;
			}
		}

//		############################
//		## END OF SIMULATION LOOP ##
//		############################

		end = time(0);

//		output of event distribution in info_output_file
		cout << "Event distribution:\t";
		info_output_file << "Event distribution:\t";
		for (long p = 0; p < (long)evt_cntr.size(); p++){
			cout << evt_cntr.at(p) << ",";
			info_output_file << evt_cntr.at(p) << ",";
		}
		cout << endl;
		info_output_file << endl;

//		system information output to info_output_file.
		cout << "Simulated time:\t\t" << curr_time << " ms" << endl;
		info_output_file << "Simulated time:\t\t" << curr_time << " ms" << endl;
		cout << "Number of steps: \t" << n_steps << endl;
		info_output_file << "Number of steps: \t" << n_steps << endl;
		cout << "Computation time:\t" << end - begin << " s" << endl;
		info_output_file << "Computation time:\t" << end - begin << " s" << endl;

//		console output: indicate simulation end
		print_system_state();
		cout << "\n--SIMULATION END--" << endl;
		info_output_file << "\n--SIMULATION END--" << endl << endl << endl;

// 		disconnect stream from output file
		data_output_file.close();
		info_output_file.close();
		oc_log_file.close();
	}

	catch(exception& e){
		cout << "System::go(): " << e.what() << endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2a0, %rsp            # imm = 0x2A0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rsi
movq %rsi, -0x100(%rbp)
movq %rsi, %rdi
subq $-0x80, %rdi
addq $0x50, %rsi
callq 0x52c0
movq %rax, -0xf8(%rbp)
jmp 0x1a2d7
movq -0xf8(%rbp), %rdi
leaq 0x2b6d9(%rip), %rsi     # 0x459be
callq 0x5300
movq %rax, -0x108(%rbp)
jmp 0x1a2f3
movq -0x108(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x56a0
movq %rax, -0x110(%rbp)
jmp 0x1a30c
movq -0x110(%rbp), %rdi
leaq 0x2b6b9(%rip), %rsi     # 0x459d3
callq 0x5300
jmp 0x1a321
movq -0x100(%rbp), %rsi
movq %rsi, %rdi
addq $0x390, %rdi            # imm = 0x390
addq $0x50, %rsi
callq 0x52c0
movq %rax, -0x118(%rbp)
jmp 0x1a344
movq -0x118(%rbp), %rdi
leaq 0x2b672(%rip), %rsi     # 0x459c4
callq 0x5300
movq %rax, -0x120(%rbp)
jmp 0x1a360
movq -0x120(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x56a0
movq %rax, -0x128(%rbp)
jmp 0x1a379
movq -0x128(%rbp), %rdi
leaq 0x2b64c(%rip), %rsi     # 0x459d3
callq 0x5300
jmp 0x1a38e
movq -0x100(%rbp), %rsi
movq %rsi, %rdi
addq $0x208, %rdi            # imm = 0x208
addq $0x50, %rsi
callq 0x52c0
movq %rax, -0x130(%rbp)
jmp 0x1a3b1
movq -0x130(%rbp), %rdi
leaq 0x2b60d(%rip), %rsi     # 0x459cc
callq 0x5300
jmp 0x1a3c6
movq -0x100(%rbp), %rsi
addq $0x70, %rsi
leaq -0x48(%rbp), %rdi
callq 0x52f0
jmp 0x1a3dc
movq -0x100(%rbp), %rsi
leaq -0x48(%rbp), %rax
movq %rax, -0x28(%rbp)
addq $0x1f8, %rsi            # imm = 0x1F8
leaq -0x70(%rbp), %rdi
callq 0x52f0
jmp 0x1a3fd
movq -0x100(%rbp), %rsi
leaq -0x70(%rbp), %rax
movq %rax, -0x50(%rbp)
addq $0x380, %rsi            # imm = 0x380
leaq -0x98(%rbp), %rdi
callq 0x52f0
jmp 0x1a421
movq -0x100(%rbp), %rax
leaq -0x98(%rbp), %rcx
movq %rcx, -0x78(%rbp)
addq $0x690, %rax            # imm = 0x690
movq %rax, -0x138(%rbp)
movq -0x28(%rbp), %rdi
callq 0x5120
movq -0x138(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0x5060
jmp 0x1a45f
movq -0x100(%rbp), %rax
addq $0xa90, %rax            # imm = 0xA90
movq %rax, -0x140(%rbp)
movq -0x78(%rbp), %rdi
callq 0x5120
movq -0x140(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0x5060
jmp 0x1a492
movq -0x100(%rbp), %rax
addq $0xa90, %rax            # imm = 0xA90
movq %rax, -0x150(%rbp)
movl $0xa, %edi
callq 0x1b120
movl %eax, -0x144(%rbp)
jmp 0x1a4b8
movq -0x150(%rbp), %rdi
movl -0x144(%rbp), %eax
movl %eax, -0x9c(%rbp)
movl -0x9c(%rbp), %esi
callq 0x55a0
jmp 0x1a4d8
cmpq $0x1, -0x10(%rbp)
jne 0x1a56b
movq -0x100(%rbp), %rax
addq $0x890, %rax            # imm = 0x890
movq %rax, -0x158(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5120
movq -0x158(%rbp), %rdi
movq %rax, %rsi
movl $0x10, %edx
callq 0x5060
jmp 0x1a516
jmp 0x1a5c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1ae0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1ae03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1adfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x5768
jmp 0x1adfa
movq -0x100(%rbp), %rax
addq $0x890, %rax            # imm = 0x890
movq %rax, -0x170(%rbp)
movq -0x50(%rbp), %rdi
callq 0x5120
movq %rax, -0x168(%rbp)
movl $0x8, %edi
movl $0x2, %esi
callq 0x1b140
movl %eax, -0x15c(%rbp)
jmp 0x1a5a6
movl -0x15c(%rbp), %edx
movq -0x168(%rbp), %rsi
movq -0x170(%rbp), %rdi
callq 0x5060
jmp 0x1a5c1
jmp 0x1a5c3
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2b3fe(%rip), %rsi     # 0x459d6
callq 0x5300
movq %rax, -0x178(%rbp)
jmp 0x1a5e6
movq -0x178(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x56a0
movq %rax, -0x180(%rbp)
jmp 0x1a5ff
movq -0x180(%rbp), %rdi
leaq 0x2b3d6(%rip), %rsi     # 0x459e3
callq 0x5300
movq %rax, -0x188(%rbp)
jmp 0x1a61b
movq -0x188(%rbp), %rdi
movq 0x43977(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1a630
movq 0x43999(%rip), %rdi     # 0x5dfd0
leaq 0x2b3ad(%rip), %rsi     # 0x459eb
callq 0x5300
movq %rax, -0x190(%rbp)
jmp 0x1a64c
movq -0x190(%rbp), %rdi
movq 0x43946(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1a661
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2b38c(%rip), %rsi     # 0x45a02
callq 0x5300
movq %rax, -0x198(%rbp)
jmp 0x1a684
movq -0x198(%rbp), %rdi
movq 0x4390e(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1a699
movq -0x100(%rbp), %rdi
callq 0x1aec0
jmp 0x1a6a7
xorps %xmm0, %xmm0
movsd %xmm0, -0xa8(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x52d0
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0xb0(%rbp)
movq $0x0, -0xc0(%rbp)
movq -0x100(%rbp), %rcx
movq -0xc0(%rbp), %rax
cmpq 0x10(%rcx), %rax
jae 0x1a8dc
movq -0x100(%rbp), %rax
movsd 0x38(%rax), %xmm1
movsd 0x28(%rax), %xmm0
ucomisd %xmm1, %xmm0
jb 0x1a8af
movq $0x0, -0xc8(%rbp)
movsd 0x2a8ef(%rip), %xmm0    # 0x45008
movsd %xmm0, -0xd0(%rbp)
movq $0x0, -0xd8(%rbp)
movq -0x100(%rbp), %rax
movq -0xd8(%rbp), %rcx
movq %rcx, -0x1a0(%rbp)
movq 0xef0(%rax), %rdi
callq 0x7b50
movq %rax, %rcx
movq -0x1a0(%rbp), %rax
cmpq %rcx, %rax
jae 0x1a805
movq -0x100(%rbp), %rax
movq 0xef0(%rax), %rdi
movq -0xd8(%rbp), %rsi
callq 0x102d0
movq %rax, -0x1a8(%rbp)
jmp 0x1a783
movq -0x1a8(%rbp), %rax
movq (%rax), %rdi
movsd -0xa8(%rbp), %xmm0
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movsd %xmm0, -0x1b0(%rbp)
jmp 0x1a7a8
movsd -0x1b0(%rbp), %xmm0
movsd %xmm0, -0xe0(%rbp)
movsd -0xe0(%rbp), %xmm1
movsd -0xd0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x1a7ec
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd0(%rbp)
movq -0xd8(%rbp), %rax
movq %rax, -0xc8(%rbp)
jmp 0x1a7ee
movq -0xd8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xd8(%rbp)
jmp 0x1a72c
movq -0x100(%rbp), %rdi
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0xa8(%rbp), %xmm1
movsd 0x40(%rdi), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x40(%rdi)
movsd -0xa8(%rbp), %xmm1
movsd 0x38(%rdi), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x38(%rdi)
addq $0xe90, %rdi            # imm = 0xE90
movq -0xc8(%rbp), %rsi
callq 0x70f0
movq %rax, %rcx
movq -0x100(%rbp), %rax
movq (%rcx), %rdx
incq %rdx
movq %rdx, (%rcx)
movq 0xef0(%rax), %rdi
movq -0xc8(%rbp), %rsi
callq 0x102d0
movq %rax, -0x1b8(%rbp)
jmp 0x1a88a
movq -0x1b8(%rbp), %rax
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
jmp 0x1a89f
movq -0x100(%rbp), %rdi
callq 0x1b160
jmp 0x1a8ad
jmp 0x1a8c3
movq -0x100(%rbp), %rax
movq -0xc0(%rbp), %rcx
movq %rcx, 0x10(%rax)
jmp 0x1a8dc
jmp 0x1a8c5
movq -0xc0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
jmp 0x1a6d3
xorl %eax, %eax
movl %eax, %edi
callq 0x52d0
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0xb8(%rbp)
movq 0x436d7(%rip), %rdi     # 0x5dfd0
leaq 0x2b11b(%rip), %rsi     # 0x45a1b
callq 0x5300
jmp 0x1a907
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2b0ff(%rip), %rsi     # 0x45a1b
callq 0x5300
jmp 0x1a923
movq $0x0, -0xe8(%rbp)
movq -0x100(%rbp), %rdi
movq -0xe8(%rbp), %rax
movq %rax, -0x1c0(%rbp)
addq $0xe90, %rdi            # imm = 0xE90
callq 0x6d10
movq %rax, %rcx
movq -0x1c0(%rbp), %rax
cmpq %rcx, %rax
jge 0x1aa39
movq -0x100(%rbp), %rdi
addq $0xe90, %rdi            # imm = 0xE90
movq -0xe8(%rbp), %rsi
callq 0x60d0
movq %rax, -0x1c8(%rbp)
jmp 0x1a985
movq -0x1c8(%rbp), %rax
movq (%rax), %rsi
movq 0x4363a(%rip), %rdi     # 0x5dfd0
callq 0x56a0
movq %rax, -0x1d0(%rbp)
jmp 0x1a9a4
movq -0x1d0(%rbp), %rdi
leaq 0x2aa1a(%rip), %rsi     # 0x453cc
callq 0x5300
jmp 0x1a9b9
movq -0x100(%rbp), %rdi
movq %rdi, %rax
addq $0x890, %rax            # imm = 0x890
movq %rax, -0x1e0(%rbp)
addq $0xe90, %rdi            # imm = 0xE90
movq -0xe8(%rbp), %rsi
callq 0x60d0
movq %rax, -0x1d8(%rbp)
jmp 0x1a9ec
movq -0x1e0(%rbp), %rdi
movq -0x1d8(%rbp), %rax
movq (%rax), %rsi
callq 0x56a0
movq %rax, -0x1e8(%rbp)
jmp 0x1aa0b
movq -0x1e8(%rbp), %rdi
leaq 0x2a9b3(%rip), %rsi     # 0x453cc
callq 0x5300
jmp 0x1aa20
jmp 0x1aa22
movq -0xe8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xe8(%rbp)
jmp 0x1a92e
movq 0x43590(%rip), %rdi     # 0x5dfd0
movq 0x43559(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1aa4e
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
movq 0x4353d(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1aa6a
movq 0x4355f(%rip), %rdi     # 0x5dfd0
leaq 0x2afb8(%rip), %rsi     # 0x45a30
callq 0x5300
movq %rax, -0x1f0(%rbp)
jmp 0x1aa86
movq -0x1f0(%rbp), %rdi
movq -0x100(%rbp), %rax
movsd 0x38(%rax), %xmm0
callq 0x5700
movq %rax, -0x1f8(%rbp)
jmp 0x1aaa7
movq -0x1f8(%rbp), %rdi
leaq 0x2af8d(%rip), %rsi     # 0x45a42
callq 0x5300
movq %rax, -0x200(%rbp)
jmp 0x1aac3
movq -0x200(%rbp), %rdi
movq 0x434cf(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1aad8
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2af43(%rip), %rsi     # 0x45a30
callq 0x5300
movq %rax, -0x208(%rbp)
jmp 0x1aafb
movq -0x208(%rbp), %rdi
movq -0x100(%rbp), %rax
movsd 0x38(%rax), %xmm0
callq 0x5700
movq %rax, -0x210(%rbp)
jmp 0x1ab1c
movq -0x210(%rbp), %rdi
leaq 0x2af18(%rip), %rsi     # 0x45a42
callq 0x5300
movq %rax, -0x218(%rbp)
jmp 0x1ab38
movq -0x218(%rbp), %rdi
movq 0x4345a(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ab4d
movq 0x4347c(%rip), %rdi     # 0x5dfd0
leaq 0x2aeeb(%rip), %rsi     # 0x45a46
callq 0x5300
movq %rax, -0x220(%rbp)
jmp 0x1ab69
movq -0x220(%rbp), %rdi
movq -0x100(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50b0
movq %rax, -0x228(%rbp)
jmp 0x1ab89
movq -0x228(%rbp), %rdi
movq 0x43409(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ab9e
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2ae93(%rip), %rsi     # 0x45a46
callq 0x5300
movq %rax, -0x230(%rbp)
jmp 0x1abc1
movq -0x230(%rbp), %rdi
movq -0x100(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x50b0
movq %rax, -0x238(%rbp)
jmp 0x1abe1
movq -0x238(%rbp), %rdi
movq 0x433b1(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1abf6
movq 0x433d3(%rip), %rdi     # 0x5dfd0
leaq 0x2ae55(%rip), %rsi     # 0x45a59
callq 0x5300
movq %rax, -0x240(%rbp)
jmp 0x1ac12
movq -0x240(%rbp), %rdi
movsd -0xb8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
subsd %xmm1, %xmm0
callq 0x5700
movq %rax, -0x248(%rbp)
jmp 0x1ac3b
movq -0x248(%rbp), %rdi
leaq 0x2cfaf(%rip), %rsi     # 0x47bf8
callq 0x5300
movq %rax, -0x250(%rbp)
jmp 0x1ac57
movq -0x250(%rbp), %rdi
movq 0x4333b(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ac6c
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2add8(%rip), %rsi     # 0x45a59
callq 0x5300
movq %rax, -0x258(%rbp)
jmp 0x1ac8f
movq -0x258(%rbp), %rdi
movsd -0xb8(%rbp), %xmm0
movsd -0xb0(%rbp), %xmm1
subsd %xmm1, %xmm0
callq 0x5700
movq %rax, -0x260(%rbp)
jmp 0x1acb8
movq -0x260(%rbp), %rdi
leaq 0x2cf32(%rip), %rsi     # 0x47bf8
callq 0x5300
movq %rax, -0x268(%rbp)
jmp 0x1acd4
movq -0x268(%rbp), %rdi
movq 0x432be(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ace9
movq -0x100(%rbp), %rdi
callq 0x1aec0
jmp 0x1acf7
movq 0x432d2(%rip), %rdi     # 0x5dfd0
leaq 0x2ad67(%rip), %rsi     # 0x45a6c
callq 0x5300
movq %rax, -0x270(%rbp)
jmp 0x1ad13
movq -0x270(%rbp), %rdi
movq 0x4327f(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ad28
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
leaq 0x2ad2f(%rip), %rsi     # 0x45a6c
callq 0x5300
movq %rax, -0x278(%rbp)
jmp 0x1ad4b
movq -0x278(%rbp), %rdi
movq 0x43247(%rip), %rsi     # 0x5dfa0
callq 0x5340
movq %rax, -0x280(%rbp)
jmp 0x1ad67
movq -0x280(%rbp), %rdi
movq 0x4322b(%rip), %rsi     # 0x5dfa0
callq 0x5340
movq %rax, -0x288(%rbp)
jmp 0x1ad83
movq -0x288(%rbp), %rdi
movq 0x4320f(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ad98
movq -0x100(%rbp), %rdi
addq $0x690, %rdi            # imm = 0x690
callq 0x5510
jmp 0x1adad
movq -0x100(%rbp), %rdi
addq $0x890, %rdi            # imm = 0x890
callq 0x5510
jmp 0x1adc2
movq -0x100(%rbp), %rdi
addq $0xa90, %rdi            # imm = 0xA90
callq 0x5510
jmp 0x1add7
leaq -0x98(%rbp), %rdi
callq 0x5768
leaq -0x70(%rbp), %rdi
callq 0x5768
leaq -0x48(%rbp), %rdi
callq 0x5768
jmp 0x1ae8a
leaq -0x70(%rbp), %rdi
callq 0x5768
leaq -0x48(%rbp), %rdi
callq 0x5768
movl -0x1c(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x1aea8
movq -0x18(%rbp), %rdi
callq 0x5110
movq %rax, -0xf0(%rbp)
movq 0x4319d(%rip), %rdi     # 0x5dfd0
leaq 0x2ac46(%rip), %rsi     # 0x45a80
callq 0x5300
movq %rax, -0x290(%rbp)
jmp 0x1ae48
movq -0xf0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x290(%rbp), %rdi
movq %rax, %rsi
callq 0x5300
movq %rax, -0x298(%rbp)
jmp 0x1ae70
movq -0x298(%rbp), %rdi
movq 0x43122(%rip), %rsi     # 0x5dfa0
callq 0x5340
jmp 0x1ae85
callq 0x55d0
addq $0x2a0, %rsp            # imm = 0x2A0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0x55d0
jmp 0x1aea6
jmp 0x1aea8
movq -0x18(%rbp), %rdi
callq 0x5650
movq %rax, %rdi
callq 0x6240
nopl (%rax)