// File: /workspace/github_cpp_makefile_star2_O1/CK7[P]abawaca/src/abawaca.cpp
// Function: main
int main(int argc, const char** argv) 
{
	cerr << "abawaca " << VERSION << endl << endl;

	Prog_params&		params = *Prog_params::Instance();

	ofstream		log;
	ofstream		summary;
	ofstream		ofs_dp2cluster;
	ofstream		ofs_scaf2cluster;
	char 			line[1024] = {};

	if(params.read_params(argc, argv))
		return -1;

	Semaphore		thread_semphore(params.ncpus);

	sprintf(line, "%s/log", params.root_dir.c_str());
	log.open(line);
	sprintf(line, "%s/summary.txt", params.root_dir.c_str());
	summary.open(line);
	sprintf(line, "%s/dp2cluster.txt", params.root_dir.c_str());
	ofs_dp2cluster.open(line);
	sprintf(line, "%s/scaf2cluster.txt", params.root_dir.c_str());
	ofs_scaf2cluster.open(line);

	cerr << '[' << get_time() << ']' << " Starting" << endl;
	cerr << '[' << get_time() << ']' << " Creating databases based on " << params.names_file << " and " << params.lrn_file << endl;
	log << "abawaca " << VERSION << endl << endl;
	log << '[' << get_time() << ']' << " Starting" << endl;
	log << '[' << get_time() << ']' << " Creatinf databases based on " << params.names_file << " and " << params.lrn_file << endl;
	ScafDpData			scaf_db(params.names_file, params.fasta_file, params.info_file);
	ClusterData			clustering_db(params.lrn_file, scaf_db);
	SCGdb				scg_db(scaf_db, params.gene2scg_file, params.scg_list_file);
	map<size_t, Cluster*>		clusters;
	size_t				total_iterations = 1;
	map<size_t, size_t>		dp2cluster;
	map<size_t, size_t>		scaf2cluster;

	summary << "Cluster\t# scafs\t# dps\t# bps\t%G+C\tStdev\tCvg\tstdev\t#SCG" << '/' << scg_db.get_total_num_scgs() << "\tAvg" << endl;

	clusters[total_iterations++] = init_cluster(scaf_db);

	// We will keep iterating over all items in clustering_dbs until it is empty.
	while(clusters.size() > 0) {
		map<size_t, Cluster*>::iterator 	mit = clusters.begin();
		Cluster* 				curr_cluster = mit->second;
		ClusterData&    			curr_clustering_db = *(new ClusterData(clustering_db, curr_cluster->get_dps()));
		size_t 					iteration = mit->first;

		clusters.erase(mit);

		cerr << endl << '[' << get_time() << ']' << " Checking cluster " << iteration << " (" << curr_cluster->ndps() << " datapoints)" << endl;
		log << endl << '[' << get_time() << ']' << " Checking cluster " << iteration << " (" << curr_cluster->ndps() << " datapoints)" << endl;

		ClusterSeparatorBySensitivitySpecificity separator(scaf_db, scg_db, curr_clustering_db, thread_semphore);
//		ClusterSeparatorSplitScafs separator(scaf_db, scg_db, curr_clustering_db, thread_semphore);

		separator.separate();

		cerr << '[' << get_time() << ']' << " ";
		separator.print_separation_params(cerr);
		cerr << endl;
		log << '[' << get_time() << ']' << " ";
		separator.print_separation_params(log);
		log << endl;

		ClusterQuality cq(scaf_db, scg_db);
		double	nunique_scgs, avg_ncopies_scgs;
		double	avg_gc, stdev_gc;
		double	avg_cvg=-1, stdev_cvg=-1;

		if((separator.get_cluster1() == NULL)/* || (!cq.is_split_better(*(separator.get_cluster1()), *(separator.get_cluster2())))*/) {
			if(separator.get_cluster1() == NULL) {
				cerr << '[' << get_time() << ']' << " Cluster " << iteration << " is a terminal cluster" << endl;
				log << '[' << get_time() << ']' << " Cluster " << iteration << " is a terminal cluster" << endl;
			}
			else {
				cerr << '[' << get_time() << ']' << " Cluster " << iteration << " will not be split further (terminal cluster)" << endl;
				log << '[' << get_time() << ']' << " Cluster " << iteration << " will not be split further (terminal cluster)" << endl;
			}
			for(auto sit = curr_cluster->dps_begin(); sit != curr_cluster->dps_end(); sit++)
				dp2cluster[*sit] = iteration;
			for(auto sit = curr_cluster->assigned_scafs_begin(); sit != curr_cluster->assigned_scafs_end(); sit++)
				scaf2cluster[*sit] = iteration;
			char fasta_out[1024];

			sprintf(fasta_out, "%s/%lu.fasta", params.fasta_dir.c_str(), iteration);
			size_t total_bps = get_fasta(curr_cluster->get_assigned_scafs(), scaf_db, fasta_out);

			total_bps = cq.total_size(*curr_cluster);
			size_t	nscaffolds = cq.num_scaffolds(*curr_cluster);
			cq.scg(*curr_cluster, nunique_scgs, avg_ncopies_scgs);
			cq.gc(*curr_cluster,  avg_gc, stdev_gc);
			cq.cvg(*curr_cluster,  avg_cvg, stdev_cvg);

			summary << iteration << '\t' << nscaffolds << '\t' << curr_cluster->ndps() << '\t' << total_bps << '\t'
				<< int(1000*avg_gc)/10.0 << '\t' << int(1000*stdev_gc)/100.0 << '\t' << int(10*avg_cvg)/10.0
				<< '\t' << int(10*stdev_cvg)/10.0 << '\t' << nunique_scgs << '\t' << int(100*avg_ncopies_scgs)/100.0 << endl;

		}
		else {
			cerr << '[' << get_time() << ']' << separator << endl;
			cerr << '[' << get_time() << ']' << " Cluster " << iteration << " will be separated to the following two clusters" << endl;
			log << '[' << get_time() << ']' << separator << endl;
			log << '[' << get_time() << ']' << " Cluster " << iteration << " will be separated to the following two clusters" << endl;

			ClusterEsomWriter writer(params.cluster_dir, scaf_db);
			char new_cluster_name[128];

			sprintf(new_cluster_name, "%lu", total_iterations);
			ClusterData cluster1(curr_clustering_db, separator.get_cluster1()->get_dps());
			writer.write(cluster1, separator.get_cluster1()->get_assigned_scafs(), separator.get_raw_dps_cluster1(), new_cluster_name);

			cq.scg(*(separator.get_cluster1()), nunique_scgs, avg_ncopies_scgs);
			cq.gc(*(separator.get_cluster1()), avg_gc, stdev_gc);
			cq.cvg(*(separator.get_cluster1()), avg_cvg, stdev_cvg);

			cerr 	<< '[' << get_time() << ']' << " Cluster " << total_iterations << ", " << cluster1.ndps() << " datapoints, "
				<< nunique_scgs << " unique SCGs (" << avg_ncopies_scgs << " copies), %G+C=" << avg_gc << ", coverage=" << avg_cvg << endl;
			log 	<< '[' << get_time() << ']' << " Cluster " << total_iterations << ", " << cluster1.ndps() << " datapoints, "
				<< nunique_scgs << " unique SCGs (" << avg_ncopies_scgs << " copies), %G+C=" << avg_gc << ", coverage=" << avg_cvg << endl;
//			clustering_dbs.insert(pair<size_t, ClusterData*>(total_iterations++, cluster1));
			clusters.insert(pair<size_t, Cluster*>(total_iterations++, separator.get_cluster1()));

			sprintf(new_cluster_name, "%lu", total_iterations);
//			ClusterData* cluster2 = new ClusterData(clustering_db, separator.get_cluster2()->get_dps());
			ClusterData cluster2(curr_clustering_db, separator.get_cluster2()->get_dps());
			writer.write(cluster2, separator.get_cluster2()->get_assigned_scafs(), separator.get_raw_dps_cluster2(), new_cluster_name);

			cq.scg(*(separator.get_cluster2()), nunique_scgs, avg_ncopies_scgs);
			cq.gc(*(separator.get_cluster2()), avg_gc, stdev_gc);
			cq.cvg(*(separator.get_cluster2()), avg_cvg, stdev_cvg);

			cerr 	<< '[' << get_time() << ']' << " Cluster " << total_iterations << ", " << cluster2.ndps() << " datapoints, "
				<< nunique_scgs << " unique SCGs (" << avg_ncopies_scgs << " copies), %G+C=" << avg_gc << ", coverage=" << avg_cvg << endl;
			log 	<< '[' << get_time() << ']' << " Cluster " << total_iterations << ", " << cluster2.ndps() << " datapoints, "
				<< nunique_scgs << " unique SCGs (" << avg_ncopies_scgs << " copies), %G+C=" << avg_gc << ", coverage=" << avg_cvg << endl;
//			clustering_dbs.insert(pair<size_t, ClusterData*>(total_iterations++, cluster2));
			clusters.insert(pair<size_t, Cluster*>(total_iterations++, separator.get_cluster2()));
		}
		delete(&curr_clustering_db);
		delete(curr_cluster);
	}

	for(size_t i=0; i<=scaf_db.ndps(); i++) {
		if(dp2cluster.find(i) == dp2cluster.end())
			ofs_dp2cluster << i << "\t0" << endl;
		else
			ofs_dp2cluster << i << "\t" << dp2cluster[i] << endl;
	}
	for(size_t i=1; i<=scaf_db.nscafs(); i++) {
		if(scaf2cluster.find(i) == scaf2cluster.end())
			ofs_scaf2cluster << scaf_db.scaf_id2name(i) << "\t0" << endl;
		else
			ofs_scaf2cluster << scaf_db.scaf_id2name(i) << "\t" << scaf2cluster[i] << endl;
	}

	ofs_dp2cluster.close();
	ofs_scaf2cluster.close();

	cerr << '[' << get_time() << ']' << " Finished successfully" << endl << endl;
	log << '[' << get_time() << ']' << " Finished successfully" << endl << endl;
	log.close();
	summary.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1568, %rsp           # imm = 0x1568
movq %rsi, %rbx
movl %edi, %r14d
movq 0x1d33b(%rip), %r15     # 0x22fe8
leaq 0x1436c(%rip), %rsi     # 0x1a020
movl $0x8, %edx
movq %r15, %rdi
callq 0x5420
leaq 0x14361(%rip), %rsi     # 0x1a029
movl $0x5, %edx
movq %r15, %rdi
callq 0x5420
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %r15, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %r15, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
callq 0x82a4
movq %rax, %r12
leaq -0x6e0(%rbp), %r13
movq %r13, %rdi
callq 0x5640
leaq -0xd90(%rbp), %rdi
callq 0x5640
leaq -0x1190(%rbp), %rdi
callq 0x5640
leaq -0xf90(%rbp), %rdi
callq 0x5640
leaq -0x1590(%rbp), %rdi
movl $0x400, %edx            # imm = 0x400
xorl %esi, %esi
callq 0x51f0
movq %r12, %rdi
movl %r14d, %esi
movq %rbx, %rdx
callq 0x82f0
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testl %eax, %eax
jne 0x7f7d
movl 0x160(%r12), %r14d
leaq -0xb90(%rbp), %rbx
movq %rbx, %rdi
callq 0x5520
movl %r14d, 0x30(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x38(%rbx)
movupd %xmm0, 0x48(%rbx)
movq $0x0, 0x58(%rbx)
movq 0xa0(%r12), %rdx
leaq 0x14260(%rip), %rsi     # 0x1a02f
leaq -0x1590(%rbp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x5090
leaq -0x6e0(%rbp), %rdi
movq %rbx, %rsi
movl $0x10, %edx
callq 0x5060
movq 0xa0(%r12), %rdx
leaq 0x14233(%rip), %rsi     # 0x1a036
movq %rbx, %rdi
xorl %eax, %eax
callq 0x5090
leaq -0xd90(%rbp), %rdi
movq %rbx, %rsi
movl $0x10, %edx
callq 0x5060
movq 0xa0(%r12), %rdx
leaq 0x14215(%rip), %rsi     # 0x1a045
movq %rbx, %rdi
xorl %eax, %eax
callq 0x5090
leaq -0x1190(%rbp), %rdi
movq %rbx, %rsi
movl $0x10, %edx
callq 0x5060
movq 0xa0(%r12), %rdx
leaq 0x141fa(%rip), %rsi     # 0x1a057
movq %rbx, %rdi
xorl %eax, %eax
callq 0x5090
leaq -0xf90(%rbp), %rdi
movq %rbx, %rsi
movl $0x10, %edx
callq 0x5060
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
movq 0x1d15c(%rip), %rdi     # 0x22fe8
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x5ebe
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x5ed7
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x14173(%rip), %rsi     # 0x1a06b
movl $0x9, %edx
movq %rax, %rdi
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
movq 0x1d0ab(%rip), %rdi     # 0x22fe8
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x5f6f
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x5f88
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x140cc(%rip), %rsi     # 0x1a075
movl $0x1d, %edx
movq %rax, %rdi
callq 0x5420
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x140c1(%rip), %rsi     # 0x1a093
movl $0x5, %edx
movq %rax, %rdi
callq 0x5420
movq (%r12), %rsi
movq 0x8(%r12), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x13fff(%rip), %rsi     # 0x1a020
leaq -0x6e0(%rbp), %rdi
movl $0x8, %edx
callq 0x5420
leaq 0x13ff0(%rip), %rsi     # 0x1a029
leaq -0x6e0(%rbp), %rbx
movl $0x5, %edx
movq %rbx, %rdi
callq 0x5420
movq -0x6e0(%rbp), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
leaq -0x6e0(%rbp), %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
leaq -0x6e0(%rbp), %rdi
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x60e9
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6102
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x13f48(%rip), %rsi     # 0x1a06b
movl $0x9, %edx
movq %rax, %rdi
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
leaq -0x6e0(%rbp), %rdi
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x619a
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x61b3
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x13ec5(%rip), %rsi     # 0x1a099
movl $0x1d, %edx
movq %rax, %rdi
callq 0x5420
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x13e96(%rip), %rsi     # 0x1a093
movl $0x5, %edx
movq %rax, %rdi
callq 0x5420
movq (%r12), %rsi
movq 0x8(%r12), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0x2d8(%rbp), %r14
movq %r14, -0x10(%r14)
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
addq %rsi, %rdx
leaq -0x2e8(%rbp), %rdi
callq 0xb27a
leaq -0x2b8(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0x80(%r12), %rsi
movq 0x88(%r12), %rdx
addq %rsi, %rdx
leaq -0x2c8(%rbp), %rdi
callq 0xb27a
movq %r12, %rax
leaq -0x298(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x40(%rax), %rsi
movq %rax, -0x90(%rbp)
movq 0x48(%rax), %rdx
addq %rsi, %rdx
leaq -0x2a8(%rbp), %rdi
callq 0xb27a
leaq -0x460(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
leaq -0x2c8(%rbp), %rdx
leaq -0x2a8(%rbp), %rcx
callq 0xbe20
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x62f2
callq 0x5340
movq -0x2c8(%rbp), %rdi
cmpq %r15, %rdi
movq -0x90(%rbp), %rbx
je 0x630a
callq 0x5340
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x631b
callq 0x5340
leaq -0x278(%rbp), %r14
movq %r14, -0x10(%r14)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x288(%rbp), %rdi
callq 0xb27a
leaq -0x730(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x460(%rbp), %rdx
callq 0x100ce
movq -0x288(%rbp), %rdi
cmpq %r14, %rdi
je 0x6367
callq 0x5340
leaq -0x258(%rbp), %r14
movq %r14, -0x10(%r14)
movq 0xc0(%rbx), %rsi
movq 0xc8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x268(%rbp), %rdi
callq 0xb27a
leaq -0x238(%rbp), %r15
movq %r15, -0x10(%r15)
movq 0xe0(%rbx), %rsi
movq 0xe8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x248(%rbp), %rdi
callq 0xb27a
leaq -0x4e0(%rbp), %rdi
leaq -0x460(%rbp), %rsi
leaq -0x268(%rbp), %rdx
leaq -0x248(%rbp), %rcx
callq 0x90f8
movq -0x248(%rbp), %rdi
cmpq %r15, %rdi
je 0x63e9
callq 0x5340
movq -0x268(%rbp), %rdi
cmpq %r14, %rdi
je 0x63fa
callq 0x5340
leaq -0x140(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq -0x220(%rbp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq -0x1f0(%rbp), %rax
movl %ecx, (%rax)
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x13c69(%rip), %rsi     # 0x1a0b7
leaq -0xd90(%rbp), %rdi
movl $0x35, %edx
callq 0x5420
leaq -0xb30(%rbp), %rsi
movb $0x2f, (%rsi)
leaq -0xd90(%rbp), %rdi
movl $0x1, %edx
callq 0x5420
movslq -0x470(%rbp), %rsi
movq %rax, %rdi
callq 0x5240
movq %rax, %rbx
leaq 0x13c5a(%rip), %rsi     # 0x1a0ed
movl $0x4, %edx
movq %rax, %rdi
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0x460(%rbp), %rdi
callq 0x8ddb
movq %rax, %rbx
leaq -0xb30(%rbp), %rsi
movq $0x1, (%rsi)
leaq -0x148(%rbp), %rdi
callq 0x91ac
movq %rbx, (%rax)
cmpq $0x0, -0x120(%rbp)
je 0x7a10
movl $0x2, %eax
movq %rax, -0x50(%rbp)
leaq -0xb30(%rbp), %r12
leaq 0x1c608(%rip), %rax     # 0x22b20
addq $0x10, %rax
movq %rax, -0xa0(%rbp)
movq -0x130(%rbp), %rbx
movq 0x28(%rbx), %r13
movl $0x50, %edi
callq 0x53a0
leaq 0x38(%r13), %rdx
movq %rax, -0x58(%rbp)
movq %rax, %rdi
leaq -0x730(%rbp), %rsi
movq %rdx, -0xf8(%rbp)
callq 0xfe58
movq 0x20(%rbx), %r15
leaq -0x148(%rbp), %rdi
movq %rbx, %rsi
callq 0xb5c2
movq 0x1ca78(%rip), %rcx     # 0x22fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq 0x1ca5a(%rip), %rdi     # 0x22fe8
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x65da
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x65f3
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x12, %edx
movq %rax, %rdi
leaq 0x13ad6(%rip), %rsi     # 0x1a0f2
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x148ff(%rip), %rsi     # 0x1af3d
callq 0x5420
movq 0x50(%r13), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xc, %edx
movq %rax, %rdi
leaq 0x13aa4(%rip), %rsi     # 0x1a105
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0x6e0(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x6e0(%rbp), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
leaq -0x6e0(%rbp), %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6702
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x671b
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x12, %edx
movq %rax, %rdi
leaq 0x139ae(%rip), %rsi     # 0x1a0f2
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x147d7(%rip), %rsi     # 0x1af3d
callq 0x5420
movq 0x50(%r13), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xc, %edx
movq %rax, %rdi
leaq 0x1397c(%rip), %rsi     # 0x1a105
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0x3d0(%rbp), %rbx
movq %rbx, %rdi
leaq -0x460(%rbp), %rsi
leaq -0x4e0(%rbp), %rdx
movq -0x58(%rbp), %rcx
leaq -0xb90(%rbp), %r8
callq 0x9216
movq %rbx, %rdi
callq 0x12cae
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq 0x1c7f0(%rip), %rdi     # 0x22fe8
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6828
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6841
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movl $0x1, %edx
movq %rax, %rdi
leaq 0x14873(%rip), %rsi     # 0x1b0da
callq 0x5420
movq -0x328(%rbp), %rdi
movq (%rdi), %rax
movq 0x1c76b(%rip), %rsi     # 0x22fe8
callq *0x20(%rax)
movq 0x1c761(%rip), %rcx     # 0x22fe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq 0x1c743(%rip), %rdi     # 0x22fe8
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x68f5
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x690e
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movl $0x1, %edx
movq %rax, %rdi
leaq 0x147a6(%rip), %rsi     # 0x1b0da
callq 0x5420
movq -0x328(%rbp), %rdi
movq (%rdi), %rax
leaq -0x6e0(%rbp), %rsi
callq *0x20(%rax)
movq -0x6e0(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x6e0(%rbp), %rax
addq %rax, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
leaq -0x6e0(%rbp), %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq 0x1bec6(%rip), %rax     # 0x22850
movq %rax, -0x88(%rbp)
leaq -0x460(%rbp), %rax
movq %rax, -0x80(%rbp)
leaq -0x4e0(%rbp), %rax
movq %rax, -0x78(%rbp)
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x30(%rbp)
movq %rax, -0x70(%rbp)
cmpq $0x0, -0x3a8(%rbp)
je 0x6a06
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq 0x1c612(%rip), %rdi     # 0x22fe8
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6a50
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6a69
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq 0x1c5cf(%rip), %rdi     # 0x22fe8
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x7534
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x754d
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x13656
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
movq 0x1c51c(%rip), %rdi     # 0x22fe8
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6afc
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6b15
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x135d4(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x30, %edx
movq %rax, %rdi
leaq 0x135e0(%rip), %rsi     # 0x1a140
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6bcf
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6be8
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x13656
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6c7b
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6c94
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x13455(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x30, %edx
movq %rax, %rdi
leaq 0x13461(%rip), %rsi     # 0x1a140
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x90(%rbp), %rax
movq 0x120(%rax), %rsi
movq 0x128(%rax), %rdx
addq %rsi, %rdx
leaq -0x118(%rbp), %rbx
movq %rbx, %rdi
callq 0xb27a
leaq -0x1c8(%rbp), %rdi
movq %rbx, %rsi
leaq -0x460(%rbp), %rdx
callq 0x9326
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x6d6e
callq 0x5340
movq %r12, %rdi
leaq 0x13c7b(%rip), %rsi     # 0x1a9f3
movq -0x50(%rbp), %rdx
xorl %eax, %eax
callq 0x5090
movq -0x3a8(%rbp), %rdx
addq $0x38, %rdx
leaq -0xf0(%rbp), %rbx
movq %rbx, %rdi
movq -0x58(%rbp), %rsi
callq 0xfe58
movq -0x3a8(%rbp), %rdx
addq $0x70, %rdx
leaq -0x1c8(%rbp), %rdi
movq %rbx, %rsi
leaq -0x398(%rbp), %rcx
movq %r12, %r8
callq 0x119e4
movq -0x3a8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0x1841e
movq -0x3a8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x38(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x18486
movq -0x3a8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x30(%rbp), %rdx
leaq -0x70(%rbp), %rcx
callq 0x185b6
movb $0x5b, -0x198(%rbp)
movl $0x1, %edx
movq 0x1c1bc(%rip), %rdi     # 0x22fe8
leaq -0x198(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6e60
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6e79
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0x198(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x1326c(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq -0x50(%rbp), %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x14210(%rip), %rsi     # 0x1b0d9
callq 0x5420
movq -0xc0(%rbp), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x13282(%rip), %rsi     # 0x1a171
callq 0x5420
movsd -0x48(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x1326c(%rip), %rsi     # 0x1a17f
callq 0x5420
movsd -0x40(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x13257(%rip), %rsi     # 0x1a18e
callq 0x5420
movsd -0x38(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xb, %edx
movq %rax, %rdi
leaq 0x13243(%rip), %rsi     # 0x1a19e
callq 0x5420
movsd -0x30(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0x198(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x6fde
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x6ff7
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0x198(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x130ee(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq -0x50(%rbp), %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x14092(%rip), %rsi     # 0x1b0d9
callq 0x5420
movq -0xc0(%rbp), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x13104(%rip), %rsi     # 0x1a171
callq 0x5420
movsd -0x48(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x130ee(%rip), %rsi     # 0x1a17f
callq 0x5420
movsd -0x40(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x130d9(%rip), %rsi     # 0x1a18e
callq 0x5420
movsd -0x38(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xb, %edx
movq %rax, %rdi
leaq 0x130c5(%rip), %rsi     # 0x1a19e
callq 0x5420
movsd -0x30(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0x3a8(%rbp), %rax
movq -0x50(%rbp), %rbx
movq %rbx, -0x198(%rbp)
movq %rax, -0x190(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x198(%rbp), %r14
movq %r14, %rsi
callq 0xb818
leaq 0x1(%rbx), %r15
movq %r12, %rdi
leaq 0x138a1(%rip), %rsi     # 0x1a9f3
movq %r15, %rdx
xorl %eax, %eax
callq 0x5090
movq -0x3a0(%rbp), %rdx
addq $0x38, %rdx
movq %r14, %rdi
movq -0x58(%rbp), %rsi
callq 0xfe58
movq -0x3a0(%rbp), %rdx
addq $0x70, %rdx
leaq -0x1c8(%rbp), %rdi
movq %r14, %rsi
leaq -0x360(%rbp), %rcx
movq %r12, %r8
callq 0x119e4
movq -0x3a0(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x48(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0x1841e
movq -0x3a0(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x38(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x18486
movq -0x3a0(%rbp), %rsi
leaq -0x88(%rbp), %rdi
leaq -0x30(%rbp), %rdx
leaq -0x70(%rbp), %rcx
callq 0x185b6
movb $0x5b, -0x68(%rbp)
movl $0x1, %edx
movq 0x1bded(%rip), %rdi     # 0x22fe8
leaq -0x68(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x722c
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x7245
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0x68(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
leaq -0x68(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x12ea6(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x13e4b(%rip), %rsi     # 0x1b0d9
callq 0x5420
movq -0x168(%rbp), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x12ebd(%rip), %rsi     # 0x1a171
callq 0x5420
movsd -0x48(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x12ea7(%rip), %rsi     # 0x1a17f
callq 0x5420
movsd -0x40(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x12e92(%rip), %rsi     # 0x1a18e
callq 0x5420
movsd -0x38(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xb, %edx
movq %rax, %rdi
leaq 0x12e7e(%rip), %rsi     # 0x1a19e
callq 0x5420
movsd -0x30(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0x68(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x739d
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x73b6
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0x68(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
leaq -0x68(%rbp), %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x12d35(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x2, %edx
movq %rax, %rdi
leaq 0x13cda(%rip), %rsi     # 0x1b0d9
callq 0x5420
movq -0x168(%rbp), %rsi
movq %rbx, %rdi
callq 0x5240
movq %rax, %rbx
movl $0xd, %edx
movq %rax, %rdi
leaq 0x12d4c(%rip), %rsi     # 0x1a171
callq 0x5420
movsd -0x48(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xe, %edx
movq %rax, %rdi
leaq 0x12d36(%rip), %rsi     # 0x1a17f
callq 0x5420
movsd -0x40(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xf, %edx
movq %rax, %rdi
leaq 0x12d21(%rip), %rsi     # 0x1a18e
callq 0x5420
movsd -0x38(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movl $0xb, %edx
movq %rax, %rdi
leaq 0x12d0d(%rip), %rsi     # 0x1a19e
callq 0x5420
movsd -0x30(%rbp), %xmm0
movq %rbx, %rdi
callq 0x55f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0x3a0(%rbp), %rax
movq %r15, -0x68(%rbp)
movq %rax, -0x60(%rbp)
leaq -0x148(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xb818
leaq -0x198(%rbp), %rdi
callq 0x10040
leaq -0xf0(%rbp), %rdi
callq 0x10040
leaq 0x1b375(%rip), %rax     # 0x22880
movq %rax, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x752a
callq 0x5340
addq $0x2, -0x50(%rbp)
jmp 0x79a2
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x12b9c(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x16, %edx
movq %rax, %rdi
leaq 0x12b84(%rip), %rsi     # 0x1a11c
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movb $0x5b, -0xb30(%rbp)
movl $0x1, %edx
leaq -0x6e0(%rbp), %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x7607
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x7620
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
movb $0x5d, -0xb30(%rbp)
movl $0x1, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x5420
movq %rax, %rbx
movl $0x9, %edx
movq %rax, %rdi
leaq 0x12ac9(%rip), %rsi     # 0x1a112
callq 0x5420
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5240
movq %rax, %rbx
movl $0x16, %edx
movq %rax, %rdi
leaq 0x12ab1(%rip), %rsi     # 0x1a11c
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq 0x48(%r13), %rbx
testq %rbx, %rbx
je 0x76b8
leaq 0x8(%rbx), %rsi
leaq -0x228(%rbp), %rdi
callq 0x92bc
movq %r15, (%rax)
movq (%rbx), %rbx
jmp 0x769b
movq 0x88(%r13), %rbx
leaq 0x78(%r13), %r14
cmpq %r14, %rbx
je 0x76eb
leaq 0x20(%rbx), %rsi
leaq -0x1f8(%rbp), %rdi
callq 0x92bc
movq %r15, (%rax)
movq %rbx, %rdi
callq 0x5430
movq %rax, %rbx
cmpq %r14, %rax
jne 0x76c8
movq -0x90(%rbp), %rax
movq 0x140(%rax), %rdx
movq %r12, %rdi
leaq 0x12a30(%rip), %rsi     # 0x1a133
movq %r15, %rcx
xorl %eax, %eax
callq 0x5090
leaq 0x70(%r13), %rdi
leaq -0x460(%rbp), %rsi
movq %r12, %rdx
callq 0x8f0b
leaq -0x88(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
callq 0x186e6
movq %rax, %rbx
movq %r14, %rdi
movq %r13, %rsi
callq 0x18776
movq %rax, %r14
leaq -0x88(%rbp), %rdi
movq %r13, %rsi
leaq -0x48(%rbp), %rdx
leaq -0x40(%rbp), %rcx
callq 0x1841e
leaq -0x88(%rbp), %rdi
movq %r13, %rsi
leaq -0x38(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x18486
leaq -0x88(%rbp), %rdi
movq %r13, %rsi
leaq -0x30(%rbp), %rdx
leaq -0x70(%rbp), %rcx
callq 0x185b6
leaq -0xd90(%rbp), %rdi
movq %r15, %rsi
callq 0x5240
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movq %rax, %rdi
movq %r14, %rsi
callq 0x5240
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movq 0x50(%r13), %rsi
movq %rax, %rdi
callq 0x5240
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movq %rax, %rdi
movq %rbx, %rsi
callq 0x5240
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x38(%rbp), %xmm0
mulsd 0x127d3(%rip), %xmm0    # 0x1a008
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd 0x127cb(%rip), %xmm0    # 0x1a010
movq %rax, %rdi
callq 0x55f0
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x98(%rbp), %xmm0
mulsd 0x12790(%rip), %xmm0    # 0x1a008
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd 0x12790(%rip), %xmm0    # 0x1a018
movq %rax, %rdi
callq 0x55f0
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x30(%rbp), %xmm0
movsd 0x12758(%rip), %xmm1    # 0x1a010
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x55f0
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x70(%rbp), %xmm0
movsd 0x12718(%rip), %xmm1    # 0x1a010
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x55f0
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x48(%rbp), %xmm0
movq %rax, %rdi
callq 0x55f0
movb $0x9, -0xf0(%rbp)
movl $0x1, %edx
movq %rax, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x5420
movsd -0x40(%rbp), %xmm0
movsd 0x126b8(%rip), %xmm1    # 0x1a018
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
movq %rax, %rdi
callq 0x55f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0x58(%rbp), %rbx
movq %rbx, %rdi
callq 0x10040
movq %rbx, %rdi
callq 0x5340
leaq 0x70(%r13), %rdi
callq 0x9c80
movq -0xf8(%rbp), %rdi
callq 0x9cd8
leaq 0x8(%r13), %rdi
callq 0x9d4e
movq %r13, %rdi
callq 0x5340
movq -0xa0(%rbp), %rax
movq %rax, -0x3d0(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x9cd8
leaq -0x398(%rbp), %rdi
callq 0x9cd8
cmpq $0x0, -0x120(%rbp)
jne 0x6523
leaq -0xb30(%rbp), %rbx
movq $0x0, (%rbx)
xorl %esi, %esi
leaq -0x1190(%rbp), %r14
movabsq $-0x5555555555555555, %r12 # imm = 0xAAAAAAAAAAAAAAAB
leaq -0x228(%rbp), %r13
movq -0x218(%rbp), %rcx
leaq -0x220(%rbp), %rax
testq %rcx, %rcx
je 0x7a5f
xorl %edx, %edx
cmpq %rsi, 0x20(%rcx)
setb %dl
cmovaeq %rcx, %rax
movq 0x10(%rcx,%rdx,8), %rcx
jmp 0x7a46
leaq -0x220(%rbp), %rdx
movq %rdx, %rcx
cmpq %rdx, %rax
je 0x7a79
cmpq 0x20(%rax), %rsi
cmovbq %rdx, %rax
movq %rax, %rcx
cmpq %rdx, %rcx
je 0x7acc
movq %r14, %rdi
callq 0x5240
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x137d1(%rip), %rsi     # 0x1b269
callq 0x5420
movq %r13, %rdi
movq %rbx, %rsi
callq 0x92bc
movq (%rax), %rsi
movq %r15, %rdi
callq 0x5240
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5360
jmp 0x7aff
movq %r14, %rdi
callq 0x5240
movq %rax, %r15
movl $0x2, %edx
movq %rax, %rdi
leaq 0x126c4(%rip), %rsi     # 0x1a1aa
callq 0x5420
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %r15, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0xb30(%rbp), %rsi
incq %rsi
movq %rsi, -0xb30(%rbp)
movq -0x3f8(%rbp), %rax
subq -0x400(%rbp), %rax
sarq $0x4, %rax
imulq %r12, %rax
decq %rax
cmpq %rax, %rsi
jbe 0x7a38
movq $0x1, -0x3d0(%rbp)
movq -0x3e0(%rbp), %rax
subq -0x3e8(%rbp), %rax
cmpq $0x48, %rax
leaq -0x1f0(%rbp), %rdi
je 0x7d0d
movl $0x1, %edx
leaq -0xb30(%rbp), %rbx
leaq -0x460(%rbp), %r14
leaq -0xf90(%rbp), %r15
movabsq $-0x71c71c71c71c71c7, %r13 # imm = 0x8E38E38E38E38E39
movq -0x1e8(%rbp), %rcx
movq %rdi, %rax
testq %rcx, %rcx
je 0x7bbd
movq %rdi, %rax
xorl %esi, %esi
cmpq %rdx, 0x20(%rcx)
setb %sil
cmovaeq %rcx, %rax
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0x7ba5
movq %rdi, %rcx
cmpq %rdi, %rax
je 0x7bd0
cmpq 0x20(%rax), %rdx
cmovbq %rdi, %rax
movq %rax, %rcx
cmpq %rdi, %rcx
je 0x7c5b
movq %rbx, %rdi
movq %r14, %rsi
callq 0xce74
movq -0xb30(%rbp), %rsi
movq -0xb28(%rbp), %rdx
movq %r15, %rdi
callq 0x5420
movq %rax, %r12
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1365d(%rip), %rsi     # 0x1b269
callq 0x5420
leaq -0x1f8(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x92bc
movq (%rax), %rsi
movq %r12, %rdi
callq 0x5240
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %r12, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
jmp 0x7cbb
movq %rbx, %rdi
movq %r14, %rsi
callq 0xce74
movq -0xb30(%rbp), %rsi
movq -0xb28(%rbp), %rdx
movq %r15, %rdi
callq 0x5420
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
leaq 0x1251c(%rip), %rsi     # 0x1a1aa
callq 0x5420
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %r12, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq -0xb30(%rbp), %rdi
leaq -0xb20(%rbp), %rax
cmpq %rax, %rdi
je 0x7cd3
callq 0x5340
leaq -0x1f0(%rbp), %rdi
movq -0x3d0(%rbp), %rdx
incq %rdx
movq %rdx, -0x3d0(%rbp)
movq -0x3e0(%rbp), %rax
subq -0x3e8(%rbp), %rax
sarq $0x3, %rax
imulq %r13, %rax
decq %rax
cmpq %rax, %rdx
jbe 0x7b93
leaq -0x1190(%rbp), %rdi
callq 0x5530
leaq -0x6e0(%rbp), %r13
leaq -0xf90(%rbp), %rdi
callq 0x5530
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
movq 0x1b2ab(%rip), %rdi     # 0x22fe8
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x7d6f
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x7d88
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x12404(%rip), %rsi     # 0x1a1ad
movl $0x16, %edx
movq %rax, %rdi
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0xb30(%rbp), %rsi
movb $0x5b, (%rsi)
leaq -0x6e0(%rbp), %rdi
movl $0x1, %edx
callq 0x5420
movq %rax, %rbx
callq 0x126b4
movq %rax, %r14
testq %rax, %rax
je 0x7e4a
movq %r14, %rdi
callq 0x5180
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x5420
jmp 0x7e63
movq (%rbx), %rax
movq -0x18(%rax), %rax
movq %rbx, %rdi
addq %rax, %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x5630
leaq -0xb30(%rbp), %rsi
movb $0x5d, (%rsi)
movl $0x1, %edx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rbx
leaq 0x12329(%rip), %rsi     # 0x1a1ad
movl $0x16, %edx
movq %rax, %rdi
callq 0x5420
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5360
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5040
movq %rax, %rdi
callq 0x5250
leaq -0x6e0(%rbp), %rdi
callq 0x5530
leaq -0xd90(%rbp), %rdi
callq 0x5530
leaq -0x1f8(%rbp), %rdi
callq 0x9d4e
leaq -0x228(%rbp), %rdi
callq 0x9d4e
leaq -0x148(%rbp), %rdi
callq 0x9da6
leaq -0x4a0(%rbp), %rbx
movq %rbx, %rdi
callq 0x98a8
movq -0x20(%rbx), %rdi
leaq -0x4b0(%rbp), %rax
cmpq %rax, %rdi
je 0x7f42
callq 0x5340
leaq -0x4d0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x7f57
callq 0x5340
leaq -0x730(%rbp), %rdi
callq 0x10040
leaq -0x460(%rbp), %rdi
callq 0x940c
leaq -0xb90(%rbp), %rdi
callq 0x56d0
xorl %ebx, %ebx
movq 0x1b01c(%rip), %rax     # 0x22fa0
movq (%rax), %r14
movq 0x18(%rax), %r15
leaq -0xf88(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0xf90(%rbp,%rax)
callq 0x52d0
movl $0xf8, %r12d
leaq -0xf90(%rbp), %rdi
addq %r12, %rdi
callq 0x5130
leaq -0x1188(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0x1190(%rbp,%rax)
callq 0x52d0
leaq -0x1190(%rbp), %rdi
addq %r12, %rdi
callq 0x5130
leaq -0xd88(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0xd90(%rbp,%rax)
callq 0x52d0
leaq -0xd90(%rbp), %rdi
addq %r12, %rdi
callq 0x5130
leaq -0x6d8(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0x6e0(%rbp,%rax)
callq 0x52d0
addq %r12, %r13
movq %r13, %rdi
callq 0x5130
movl %ebx, %eax
addq $0x1568, %rsp           # imm = 0x1568
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8215
movq %rax, %rbx
movq -0x248(%rbp), %rdi
cmpq %r15, %rdi
je 0x806b
callq 0x5340
jmp 0x806b
movq %rax, %rbx
movq -0x268(%rbp), %rdi
cmpq %r14, %rdi
je 0x8248
callq 0x5340
jmp 0x8248
movq %rax, %rbx
jmp 0x8248
movq %rax, %rbx
movq -0x288(%rbp), %rdi
cmpq %r14, %rdi
je 0x8254
callq 0x5340
jmp 0x8254
movq %rax, %rbx
jmp 0x8254
movq %rax, %rbx
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x80cb
callq 0x5340
jmp 0x80cb
movq %rax, %rbx
movq -0x2c8(%rbp), %rdi
cmpq %r15, %rdi
je 0x80e1
callq 0x5340
jmp 0x80e1
movq %rax, %rbx
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x8260
callq 0x5340
jmp 0x8260
jmp 0x8172
movq %rax, %rbx
jmp 0x826c
movq %rax, %rbx
jmp 0x8278
movq %rax, %rbx
jmp 0x8284
movq %rax, %rbx
jmp 0x8290
jmp 0x8215
jmp 0x8215
jmp 0x81b6
jmp 0x81b6
jmp 0x81a5
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
jmp 0x81e1
jmp 0x81ed
movq %rax, %rbx
jmp 0x81c5
jmp 0x81ed
jmp 0x8215
movq %rax, %rbx
movq -0x58(%rbp), %rdi
jmp 0x8194
jmp 0x8215
jmp 0x817a
jmp 0x8215
movq %rax, %rbx
jmp 0x8260
movq %rax, %rbx
movq -0xb30(%rbp), %rdi
leaq -0xb20(%rbp), %rax
cmpq %rax, %rdi
je 0x8218
callq 0x5340
jmp 0x8218
jmp 0x81ed
jmp 0x81ed
jmp 0x81ed
jmp 0x8215
jmp 0x81ed
movq %rax, %rbx
leaq -0x198(%rbp), %rdi
callq 0x10040
jmp 0x81b9
movq %rax, %rbx
leaq -0xf0(%rbp), %rdi
callq 0x10040
leaq 0x1a6b4(%rip), %rax     # 0x22880
movq %rax, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0x81f0
callq 0x5340
jmp 0x81f0
movq %rax, %rbx
leaq -0x360(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq %rax, -0x70(%rdi)
callq 0x9cd8
leaq -0x398(%rbp), %rdi
callq 0x9cd8
jmp 0x8218
movq %rax, %rbx
leaq -0x1f8(%rbp), %rdi
callq 0x9d4e
leaq -0x228(%rbp), %rdi
callq 0x9d4e
leaq -0x148(%rbp), %rdi
callq 0x9da6
leaq -0x4e0(%rbp), %rdi
callq 0x93ce
leaq -0x730(%rbp), %rdi
callq 0x10040
leaq -0x460(%rbp), %rdi
callq 0x940c
leaq -0xb90(%rbp), %rdi
callq 0x56d0
leaq -0xf90(%rbp), %rdi
callq 0x5570
leaq -0x1190(%rbp), %rdi
callq 0x5570
leaq -0xd90(%rbp), %rdi
callq 0x5570
leaq -0x6e0(%rbp), %rdi
callq 0x5570
movq %rbx, %rdi
callq 0x56a0