// File: 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
subq $0x2030, %rsp           # imm = 0x2030
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq 0x472d8(%rip), %rdi     # 0x4cfe8
leaq 0x2f325(%rip), %rsi     # 0x3503c
callq 0x53f0
movq %rax, %rdi
leaq 0x2f31f(%rip), %rsi     # 0x35045
callq 0x53f0
movq %rax, %rdi
movq 0x4725b(%rip), %rsi     # 0x4cf90
movq %rsi, -0x1748(%rbp)
callq 0x5440
movq -0x1748(%rbp), %rsi
movq %rax, %rdi
callq 0x5440
callq 0x8a80
movq %rax, -0x18(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x56e0
leaq -0x418(%rbp), %rdi
callq 0x56e0
jmp 0x5d73
leaq -0x628(%rbp), %rdi
callq 0x56e0
jmp 0x5d81
leaq -0x828(%rbp), %rdi
callq 0x56e0
jmp 0x5d8f
leaq -0xc30(%rbp), %rdi
xorl %esi, %esi
movl $0x400, %edx            # imm = 0x400
callq 0x5210
movq -0x18(%rbp), %rdi
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
callq 0x8af0
movl %eax, -0x174c(%rbp)
jmp 0x5dba
movl -0x174c(%rbp), %eax
cmpl $0x0, %eax
je 0x5e37
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0xc34(%rbp)
jmp 0x89b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a42
movq -0x18(%rbp), %rax
movl 0x160(%rax), %esi
leaq -0xc98(%rbp), %rdi
callq 0x9d10
jmp 0x5e4f
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
callq 0x5190
movq %rax, %rdx
leaq 0x2f1e2(%rip), %rsi     # 0x3504b
xorl %eax, %eax
leaq -0xc30(%rbp), %rdi
movq %rdi, -0x1758(%rbp)
callq 0x50b0
movq -0x1758(%rbp), %rsi
leaq -0x218(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0x5e98
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
callq 0x5190
movq %rax, %rdx
leaq 0x2f1a0(%rip), %rsi     # 0x35052
xorl %eax, %eax
leaq -0xc30(%rbp), %rdi
movq %rdi, -0x1760(%rbp)
callq 0x50b0
movq -0x1760(%rbp), %rsi
leaq -0x418(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0x5ee1
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
callq 0x5190
movq %rax, %rdx
leaq 0x2f166(%rip), %rsi     # 0x35061
xorl %eax, %eax
leaq -0xc30(%rbp), %rdi
movq %rdi, -0x1768(%rbp)
callq 0x50b0
movq -0x1768(%rbp), %rsi
leaq -0x628(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0x5f2a
movq -0x18(%rbp), %rdi
addq $0xa0, %rdi
callq 0x5190
movq %rax, %rdx
leaq 0x2f12f(%rip), %rsi     # 0x35073
xorl %eax, %eax
leaq -0xc30(%rbp), %rdi
movq %rdi, -0x1770(%rbp)
callq 0x50b0
movq -0x1770(%rbp), %rsi
leaq -0x828(%rbp), %rdi
movl $0x10, %edx
callq 0x5080
jmp 0x5f73
movq 0x4706e(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1778(%rbp)
jmp 0x5f8d
callq 0x25110
movq %rax, -0x1780(%rbp)
jmp 0x5f9b
movq -0x1780(%rbp), %rsi
movq -0x1778(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1788(%rbp)
jmp 0x5fb7
movq -0x1788(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1790(%rbp)
jmp 0x5fd1
movq -0x1790(%rbp), %rdi
leaq 0x2f0a8(%rip), %rsi     # 0x35087
callq 0x53f0
movq %rax, -0x1798(%rbp)
jmp 0x5fed
movq -0x1798(%rbp), %rdi
movq 0x46f95(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6002
movq 0x46fdf(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x17a0(%rbp)
jmp 0x601c
callq 0x25110
movq %rax, -0x17a8(%rbp)
jmp 0x602a
movq -0x17a8(%rbp), %rsi
movq -0x17a0(%rbp), %rdi
callq 0x53f0
movq %rax, -0x17b0(%rbp)
jmp 0x6046
movq -0x17b0(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x17b8(%rbp)
jmp 0x6060
movq -0x17b8(%rbp), %rdi
leaq 0x2f023(%rip), %rsi     # 0x35091
callq 0x53f0
movq %rax, -0x17c0(%rbp)
jmp 0x607c
movq -0x17c0(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
callq 0x5360
movq %rax, -0x17c8(%rbp)
jmp 0x6099
movq -0x17c8(%rbp), %rdi
leaq 0x2f008(%rip), %rsi     # 0x350af
callq 0x53f0
movq %rax, -0x17d0(%rbp)
jmp 0x60b5
movq -0x17d0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5360
movq %rax, -0x17d8(%rbp)
jmp 0x60ce
movq -0x17d8(%rbp), %rdi
movq 0x46eb4(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x60e3
leaq 0x2ef52(%rip), %rsi     # 0x3503c
leaq -0x218(%rbp), %rdi
callq 0x53f0
movq %rax, -0x17e0(%rbp)
jmp 0x60ff
movq -0x17e0(%rbp), %rdi
leaq 0x2ef38(%rip), %rsi     # 0x35045
callq 0x53f0
movq %rax, -0x17e8(%rbp)
jmp 0x611b
movq -0x17e8(%rbp), %rdi
movq 0x46e67(%rip), %rsi     # 0x4cf90
callq 0x5440
movq %rax, -0x17f0(%rbp)
jmp 0x6137
movq -0x17f0(%rbp), %rdi
movq 0x46e4b(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x614c
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x17f8(%rbp)
jmp 0x6166
callq 0x25110
movq %rax, -0x1800(%rbp)
jmp 0x6174
movq -0x1800(%rbp), %rsi
movq -0x17f8(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1808(%rbp)
jmp 0x6190
movq -0x1808(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1810(%rbp)
jmp 0x61aa
movq -0x1810(%rbp), %rdi
leaq 0x2eecf(%rip), %rsi     # 0x35087
callq 0x53f0
movq %rax, -0x1818(%rbp)
jmp 0x61c6
movq -0x1818(%rbp), %rdi
movq 0x46dbc(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x61db
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1820(%rbp)
jmp 0x61f5
callq 0x25110
movq %rax, -0x1828(%rbp)
jmp 0x6203
movq -0x1828(%rbp), %rsi
movq -0x1820(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1830(%rbp)
jmp 0x621f
movq -0x1830(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1838(%rbp)
jmp 0x6239
movq -0x1838(%rbp), %rdi
leaq 0x2ee6e(%rip), %rsi     # 0x350b5
callq 0x53f0
movq %rax, -0x1840(%rbp)
jmp 0x6255
movq -0x1840(%rbp), %rdi
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
callq 0x5360
movq %rax, -0x1848(%rbp)
jmp 0x6272
movq -0x1848(%rbp), %rdi
leaq 0x2ee2f(%rip), %rsi     # 0x350af
callq 0x53f0
movq %rax, -0x1850(%rbp)
jmp 0x628e
movq -0x1850(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x5360
movq %rax, -0x1858(%rbp)
jmp 0x62a7
movq -0x1858(%rbp), %rdi
movq 0x46cdb(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x62bc
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
leaq -0xd48(%rbp), %rdi
callq 0x51a0
jmp 0x62d2
movq -0x18(%rbp), %rsi
subq $-0x80, %rsi
leaq -0xd68(%rbp), %rdi
callq 0x51a0
jmp 0x62e8
movq -0x18(%rbp), %rsi
addq $0x40, %rsi
leaq -0xd88(%rbp), %rdi
callq 0x51a0
jmp 0x62fe
leaq -0xd28(%rbp), %rdi
leaq -0xd48(%rbp), %rsi
leaq -0xd68(%rbp), %rdx
leaq -0xd88(%rbp), %rcx
callq 0x12400
jmp 0x6321
leaq -0xd88(%rbp), %rdi
callq 0x5250
leaq -0xd68(%rbp), %rdi
callq 0x5250
leaq -0xd48(%rbp), %rdi
callq 0x5250
movq -0x18(%rbp), %rsi
leaq -0xdf8(%rbp), %rdi
callq 0x51a0
jmp 0x6357
leaq -0xdd8(%rbp), %rdi
leaq -0xdf8(%rbp), %rsi
leaq -0xd28(%rbp), %rdx
callq 0x1ebb0
jmp 0x6373
leaq -0xdf8(%rbp), %rdi
callq 0x5250
movq -0x18(%rbp), %rsi
addq $0xc0, %rsi
leaq -0xe98(%rbp), %rdi
callq 0x51a0
jmp 0x6398
movq -0x18(%rbp), %rsi
addq $0xe0, %rsi
leaq -0xeb8(%rbp), %rdi
callq 0x51a0
jmp 0x63b1
leaq -0xe78(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
leaq -0xe98(%rbp), %rdx
leaq -0xeb8(%rbp), %rcx
callq 0x9d50
jmp 0x63d4
leaq -0xeb8(%rbp), %rdi
callq 0x5250
leaq -0xe98(%rbp), %rdi
callq 0x5250
leaq -0xee8(%rbp), %rdi
callq 0x9e20
movq $0x1, -0xef0(%rbp)
leaq -0xf20(%rbp), %rdi
callq 0x9e40
leaq -0xf50(%rbp), %rdi
callq 0x9e40
leaq 0x2ecb1(%rip), %rsi     # 0x350d3
leaq -0x418(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1860(%rbp)
jmp 0x6437
movq -0x1860(%rbp), %rdi
movl $0x2f, %esi
callq 0x54a0
movq %rax, -0x1868(%rbp)
jmp 0x6451
leaq -0xe78(%rbp), %rdi
callq 0x9e60
movq %rax, -0x1870(%rbp)
jmp 0x6466
movq -0x1870(%rbp), %rsi
movq -0x1868(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1878(%rbp)
jmp 0x6482
movq -0x1878(%rbp), %rdi
leaq 0x2ec79(%rip), %rsi     # 0x35109
callq 0x53f0
movq %rax, -0x1880(%rbp)
jmp 0x649e
movq -0x1880(%rbp), %rdi
movq 0x46ae4(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x64b3
leaq -0xd28(%rbp), %rdi
callq 0x98c0
movq %rax, -0x1888(%rbp)
jmp 0x64c8
movq -0xef0(%rbp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, -0xef0(%rbp)
movq %rax, -0xf58(%rbp)
leaq -0xee8(%rbp), %rdi
leaq -0xf58(%rbp), %rsi
callq 0x9e80
movq %rax, -0x1890(%rbp)
jmp 0x64ff
movq -0x1890(%rbp), %rax
movq -0x1888(%rbp), %rcx
movq %rcx, (%rax)
leaq -0xee8(%rbp), %rdi
callq 0x9f60
cmpq $0x0, %rax
jbe 0x840d
leaq -0xee8(%rbp), %rdi
callq 0x9f80
movq %rax, -0xf60(%rbp)
leaq -0xf60(%rbp), %rdi
callq 0x9fb0
movq 0x8(%rax), %rax
movq %rax, -0xf68(%rbp)
movl $0x50, %edi
callq 0x5410
movq %rax, -0x1898(%rbp)
jmp 0x6563
movq -0xf68(%rbp), %rdi
callq 0x9fd0
movq %rax, -0x18a0(%rbp)
jmp 0x6578
movq -0x18a0(%rbp), %rdx
movq -0x1898(%rbp), %rdi
leaq -0xdd8(%rbp), %rsi
callq 0x1e880
jmp 0x6594
movq -0x1898(%rbp), %rax
movq %rax, -0xf70(%rbp)
leaq -0xf60(%rbp), %rdi
callq 0x9fb0
movq (%rax), %rax
movq %rax, -0xf78(%rbp)
movq -0xf60(%rbp), %rax
movq %rax, -0xf80(%rbp)
movq -0xf80(%rbp), %rsi
leaq -0xee8(%rbp), %rdi
callq 0x9ff0
movq %rax, -0x18a8(%rbp)
jmp 0x65e2
movq -0x18a8(%rbp), %rax
movq %rax, -0xf88(%rbp)
movq 0x469f1(%rip), %rdi     # 0x4cfe8
movq 0x46992(%rip), %rsi     # 0x4cf90
callq 0x5440
movq %rax, -0x18b0(%rbp)
jmp 0x660c
movq -0x18b0(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x18b8(%rbp)
jmp 0x6626
callq 0x25110
movq %rax, -0x18c0(%rbp)
jmp 0x6634
movq -0x18c0(%rbp), %rsi
movq -0x18b8(%rbp), %rdi
callq 0x53f0
movq %rax, -0x18c8(%rbp)
jmp 0x6650
movq -0x18c8(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x18d0(%rbp)
jmp 0x666a
movq -0x18d0(%rbp), %rdi
leaq 0x2ea96(%rip), %rsi     # 0x3510e
callq 0x53f0
movq %rax, -0x18d8(%rbp)
jmp 0x6686
movq -0x18d8(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x18e0(%rbp)
jmp 0x66a2
movq -0x18e0(%rbp), %rdi
leaq 0x2f875(%rip), %rsi     # 0x35f25
callq 0x53f0
movq %rax, -0x18e8(%rbp)
jmp 0x66be
movq -0xf68(%rbp), %rdi
callq 0xa030
movq %rax, -0x18f0(%rbp)
jmp 0x66d3
movq -0x18f0(%rbp), %rsi
movq -0x18e8(%rbp), %rdi
callq 0x50f0
movq %rax, -0x18f8(%rbp)
jmp 0x66ef
movq -0x18f8(%rbp), %rdi
leaq 0x2ea24(%rip), %rsi     # 0x35121
callq 0x53f0
movq %rax, -0x1900(%rbp)
jmp 0x670b
movq -0x1900(%rbp), %rdi
movq 0x46877(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6720
movq 0x46869(%rip), %rsi     # 0x4cf90
leaq -0x218(%rbp), %rdi
callq 0x5440
movq %rax, -0x1908(%rbp)
jmp 0x673c
movq -0x1908(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1910(%rbp)
jmp 0x6756
callq 0x25110
movq %rax, -0x1918(%rbp)
jmp 0x6764
movq -0x1918(%rbp), %rsi
movq -0x1910(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1920(%rbp)
jmp 0x6780
movq -0x1920(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1928(%rbp)
jmp 0x679a
movq -0x1928(%rbp), %rdi
leaq 0x2e966(%rip), %rsi     # 0x3510e
callq 0x53f0
movq %rax, -0x1930(%rbp)
jmp 0x67b6
movq -0x1930(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1938(%rbp)
jmp 0x67d2
movq -0x1938(%rbp), %rdi
leaq 0x2f745(%rip), %rsi     # 0x35f25
callq 0x53f0
movq %rax, -0x1940(%rbp)
jmp 0x67ee
movq -0xf68(%rbp), %rdi
callq 0xa030
movq %rax, -0x1948(%rbp)
jmp 0x6803
movq -0x1948(%rbp), %rsi
movq -0x1940(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1950(%rbp)
jmp 0x681f
movq -0x1950(%rbp), %rdi
leaq 0x2e8f4(%rip), %rsi     # 0x35121
callq 0x53f0
movq %rax, -0x1958(%rbp)
jmp 0x683b
movq -0x1958(%rbp), %rdi
movq 0x46747(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6850
movq -0xf70(%rbp), %rcx
leaq -0x1070(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
leaq -0xe78(%rbp), %rdx
leaq -0xc98(%rbp), %r8
callq 0xa050
jmp 0x687a
leaq -0x1070(%rbp), %rdi
callq 0x25ad0
jmp 0x6888
movq 0x46759(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1960(%rbp)
jmp 0x68a2
callq 0x25110
movq %rax, -0x1968(%rbp)
jmp 0x68b0
movq -0x1968(%rbp), %rsi
movq -0x1960(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1970(%rbp)
jmp 0x68cc
movq -0x1970(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1978(%rbp)
jmp 0x68e6
movq -0x1978(%rbp), %rdi
leaq 0x2f7ce(%rip), %rsi     # 0x360c2
callq 0x53f0
jmp 0x68fb
movq 0x466e6(%rip), %rsi     # 0x4cfe8
leaq -0x1070(%rbp), %rdi
callq 0xa110
jmp 0x6910
movq 0x466d1(%rip), %rdi     # 0x4cfe8
movq 0x46672(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6925
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1980(%rbp)
jmp 0x693f
callq 0x25110
movq %rax, -0x1988(%rbp)
jmp 0x694d
movq -0x1988(%rbp), %rsi
movq -0x1980(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1990(%rbp)
jmp 0x6969
movq -0x1990(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1998(%rbp)
jmp 0x6983
movq -0x1998(%rbp), %rdi
leaq 0x2f731(%rip), %rsi     # 0x360c2
callq 0x53f0
jmp 0x6998
leaq -0x1070(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0xa110
jmp 0x69ad
movq 0x465dc(%rip), %rsi     # 0x4cf90
leaq -0x218(%rbp), %rdi
callq 0x5440
jmp 0x69c2
leaq -0x1088(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
leaq -0xe78(%rbp), %rdx
callq 0xa140
jmp 0x69de
movabsq $-0x4010000000000000, %rax # imm = 0xBFF0000000000000
movq %rax, -0x10b0(%rbp)
movq %rax, -0x10b8(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x19a0(%rbp)
jmp 0x6a0b
movq -0x19a0(%rbp), %rax
cmpq $0x0, %rax
jne 0x7444
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x19a8(%rbp)
jmp 0x6a31
movq -0x19a8(%rbp), %rax
cmpq $0x0, %rax
jne 0x6d4b
movq 0x4659f(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x19b0(%rbp)
jmp 0x6a5c
callq 0x25110
movq %rax, -0x19b8(%rbp)
jmp 0x6a6a
movq -0x19b8(%rbp), %rsi
movq -0x19b0(%rbp), %rdi
callq 0x53f0
movq %rax, -0x19c0(%rbp)
jmp 0x6a86
movq -0x19c0(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x19c8(%rbp)
jmp 0x6aa0
movq -0x19c8(%rbp), %rdi
leaq 0x2e680(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x19d0(%rbp)
jmp 0x6abc
movq -0x19d0(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x19d8(%rbp)
jmp 0x6ad8
movq -0x19d8(%rbp), %rdi
leaq 0x2e652(%rip), %rsi     # 0x35138
callq 0x53f0
movq %rax, -0x19e0(%rbp)
jmp 0x6af4
movq -0x19e0(%rbp), %rdi
movq 0x4648e(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6b09
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x19e8(%rbp)
jmp 0x6b23
callq 0x25110
movq %rax, -0x19f0(%rbp)
jmp 0x6b31
movq -0x19f0(%rbp), %rsi
movq -0x19e8(%rbp), %rdi
callq 0x53f0
movq %rax, -0x19f8(%rbp)
jmp 0x6b4d
movq -0x19f8(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1a00(%rbp)
jmp 0x6b67
movq -0x1a00(%rbp), %rdi
leaq 0x2e5b9(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1a08(%rbp)
jmp 0x6b83
movq -0x1a08(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1a10(%rbp)
jmp 0x6b9f
movq -0x1a10(%rbp), %rdi
leaq 0x2e58b(%rip), %rsi     # 0x35138
callq 0x53f0
movq %rax, -0x1a18(%rbp)
jmp 0x6bbb
movq -0x1a18(%rbp), %rdi
movq 0x463c7(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6bd0
jmp 0x6edb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x6c3e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x6c32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0xd88(%rbp), %rdi
callq 0x5250
leaq -0xd68(%rbp), %rdi
callq 0x5250
leaq -0xd48(%rbp), %rdi
callq 0x5250
jmp 0x8a36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0xdf8(%rbp), %rdi
callq 0x5250
jmp 0x8a2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8a1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x6cd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0xeb8(%rbp), %rdi
callq 0x5250
leaq -0xe98(%rbp), %rdi
callq 0x5250
jmp 0x8a1e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x89ee
movq -0x1898(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
callq 0x53a0
jmp 0x89ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x83fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x83f0
movq 0x46296(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1a20(%rbp)
jmp 0x6d65
callq 0x25110
movq %rax, -0x1a28(%rbp)
jmp 0x6d73
movq -0x1a28(%rbp), %rsi
movq -0x1a20(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1a30(%rbp)
jmp 0x6d8f
movq -0x1a30(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1a38(%rbp)
jmp 0x6da9
movq -0x1a38(%rbp), %rdi
leaq 0x2e377(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1a40(%rbp)
jmp 0x6dc5
movq -0x1a40(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1a48(%rbp)
jmp 0x6de1
movq -0x1a48(%rbp), %rdi
leaq 0x2e360(%rip), %rsi     # 0x3514f
callq 0x53f0
movq %rax, -0x1a50(%rbp)
jmp 0x6dfd
movq -0x1a50(%rbp), %rdi
movq 0x46185(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6e12
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1a58(%rbp)
jmp 0x6e2c
callq 0x25110
movq %rax, -0x1a60(%rbp)
jmp 0x6e3a
movq -0x1a60(%rbp), %rsi
movq -0x1a58(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1a68(%rbp)
jmp 0x6e56
movq -0x1a68(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1a70(%rbp)
jmp 0x6e70
movq -0x1a70(%rbp), %rdi
leaq 0x2e2b0(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1a78(%rbp)
jmp 0x6e8c
movq -0x1a78(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1a80(%rbp)
jmp 0x6ea8
movq -0x1a80(%rbp), %rdi
leaq 0x2e299(%rip), %rsi     # 0x3514f
callq 0x53f0
movq %rax, -0x1a88(%rbp)
jmp 0x6ec4
movq -0x1a88(%rbp), %rdi
movq 0x460be(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x6ed9
jmp 0x6edb
movq -0xf68(%rbp), %rdi
callq 0xa1a0
movq %rax, -0x1a90(%rbp)
jmp 0x6ef0
movq -0x1a90(%rbp), %rax
movq %rax, -0x10c0(%rbp)
movq -0xf68(%rbp), %rdi
callq 0xa200
movq %rax, -0x1a98(%rbp)
jmp 0x6f13
movq -0x1a98(%rbp), %rax
movq %rax, -0x10c8(%rbp)
leaq -0x10c0(%rbp), %rdi
leaq -0x10c8(%rbp), %rsi
callq 0xa1d0
testb $0x1, %al
jne 0x6f3a
jmp 0x6f97
movq -0xf78(%rbp), %rax
movq %rax, -0x1aa8(%rbp)
leaq -0x10c0(%rbp), %rdi
callq 0xa310
movq %rax, %rsi
leaq -0xf20(%rbp), %rdi
callq 0xa230
movq %rax, -0x1aa0(%rbp)
jmp 0x6f6c
movq -0x1aa0(%rbp), %rax
movq -0x1aa8(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x10c0(%rbp), %rdi
xorl %esi, %esi
callq 0xa340
movq %rax, -0x10d0(%rbp)
jmp 0x6efe
movq -0xf68(%rbp), %rdi
callq 0xa370
movq %rax, -0x1ab0(%rbp)
jmp 0x6fac
movq -0x1ab0(%rbp), %rax
movq %rax, -0x10d8(%rbp)
movq -0xf68(%rbp), %rdi
callq 0xa3d0
movq %rax, -0x1ab8(%rbp)
jmp 0x6fcf
movq -0x1ab8(%rbp), %rax
movq %rax, -0x10e0(%rbp)
leaq -0x10d8(%rbp), %rdi
leaq -0x10e0(%rbp), %rsi
callq 0xa3a0
testb $0x1, %al
jne 0x6ff6
jmp 0x7053
movq -0xf78(%rbp), %rax
movq %rax, -0x1ac8(%rbp)
leaq -0x10d8(%rbp), %rdi
callq 0xa400
movq %rax, %rsi
leaq -0xf50(%rbp), %rdi
callq 0xa230
movq %rax, -0x1ac0(%rbp)
jmp 0x7028
movq -0x1ac0(%rbp), %rax
movq -0x1ac8(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x10d8(%rbp), %rdi
xorl %esi, %esi
callq 0xa420
movq %rax, -0x10e8(%rbp)
jmp 0x6fba
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
callq 0x5190
movq %rax, %rdx
movq -0xf78(%rbp), %rcx
leaq 0x2e109(%rip), %rsi     # 0x3517d
xorl %eax, %eax
leaq -0x14f0(%rbp), %rdi
callq 0x50b0
movq -0xf68(%rbp), %rdi
callq 0xa460
movq %rax, -0x1ad0(%rbp)
jmp 0x7097
movq -0x1ad0(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
leaq -0x14f0(%rbp), %rdx
callq 0x99a0
movq %rax, -0x1ad8(%rbp)
jmp 0x70ba
movq -0x1ad8(%rbp), %rax
movq %rax, -0x14f8(%rbp)
movq -0xf68(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
callq 0x32af0
movq %rax, -0x1ae0(%rbp)
jmp 0x70e4
movq -0x1ae0(%rbp), %rax
movq %rax, -0x14f8(%rbp)
movq -0xf68(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
callq 0x32bb0
movq %rax, -0x1ae8(%rbp)
jmp 0x710e
movq -0x1ae8(%rbp), %rax
movq %rax, -0x1500(%rbp)
movq -0xf68(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x1090(%rbp), %rdx
leaq -0x1098(%rbp), %rcx
callq 0x326b0
jmp 0x713f
movq -0xf68(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10a0(%rbp), %rdx
leaq -0x10a8(%rbp), %rcx
callq 0x32750
jmp 0x7162
movq -0xf68(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10b0(%rbp), %rdx
leaq -0x10b8(%rbp), %rcx
callq 0x32920
jmp 0x7185
movq -0xf78(%rbp), %rsi
leaq -0x418(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1af0(%rbp)
jmp 0x71a1
movq -0x1af0(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1af8(%rbp)
jmp 0x71bb
movq -0x1af8(%rbp), %rdi
movq -0x1500(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1b00(%rbp)
jmp 0x71d7
movq -0x1b00(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b08(%rbp)
jmp 0x71f1
movq -0xf68(%rbp), %rdi
callq 0xa030
movq %rax, -0x1b10(%rbp)
jmp 0x7206
movq -0x1b10(%rbp), %rsi
movq -0x1b08(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1b18(%rbp)
jmp 0x7222
movq -0x1b18(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b20(%rbp)
jmp 0x723c
movq -0x1b20(%rbp), %rdi
movq -0x14f8(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1b28(%rbp)
jmp 0x7258
movq -0x1b28(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b30(%rbp)
jmp 0x7272
movq -0x1b30(%rbp), %rdi
movsd -0x10a0(%rbp), %xmm0
movsd 0x2dd7f(%rip), %xmm1    # 0x35008
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
movsd 0x2dd73(%rip), %xmm1    # 0x35010
divsd %xmm1, %xmm0
callq 0x5800
movq %rax, -0x1b38(%rbp)
jmp 0x72af
movq -0x1b38(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b40(%rbp)
jmp 0x72c9
movq -0x1b40(%rbp), %rdi
movsd -0x10a8(%rbp), %xmm0
movsd 0x2dd28(%rip), %xmm1    # 0x35008
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
movsd 0x2dd24(%rip), %xmm1    # 0x35018
divsd %xmm1, %xmm0
callq 0x5800
movq %rax, -0x1b48(%rbp)
jmp 0x7306
movq -0x1b48(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b50(%rbp)
jmp 0x7320
movq -0x1b50(%rbp), %rdi
movsd -0x10b0(%rbp), %xmm0
movsd 0x2dcd9(%rip), %xmm1    # 0x35010
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
callq 0x5800
movq %rax, -0x1b58(%rbp)
jmp 0x7355
movq -0x1b58(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b60(%rbp)
jmp 0x736f
movq -0x1b60(%rbp), %rdi
movsd -0x10b8(%rbp), %xmm0
movsd 0x2dc8a(%rip), %xmm1    # 0x35010
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
callq 0x5800
movq %rax, -0x1b68(%rbp)
jmp 0x73a4
movq -0x1b68(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b70(%rbp)
jmp 0x73be
movq -0x1b70(%rbp), %rdi
movsd -0x1090(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1b78(%rbp)
jmp 0x73db
movq -0x1b78(%rbp), %rdi
movl $0x9, %esi
callq 0x54a0
movq %rax, -0x1b80(%rbp)
jmp 0x73f5
movq -0x1b80(%rbp), %rdi
movsd -0x1098(%rbp), %xmm0
movsd 0x2dc0c(%rip), %xmm1    # 0x35018
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
divsd %xmm1, %xmm0
callq 0x5800
movq %rax, -0x1b88(%rbp)
jmp 0x742a
movq -0x1b88(%rbp), %rdi
movq 0x45b58(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x743f
jmp 0x837b
movq 0x45b9d(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1b90(%rbp)
jmp 0x745e
callq 0x25110
movq %rax, -0x1b98(%rbp)
jmp 0x746c
movq -0x1b98(%rbp), %rsi
movq -0x1b90(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1ba0(%rbp)
jmp 0x7488
movq -0x1ba0(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1ba8(%rbp)
jmp 0x74a2
movq -0x1ba8(%rbp), %rdi
leaq -0x1070(%rbp), %rsi
callq 0x27810
movq %rax, -0x1bb0(%rbp)
jmp 0x74be
movq -0x1bb0(%rbp), %rdi
movq 0x45ac4(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x74d3
movq 0x45b0e(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1bb8(%rbp)
jmp 0x74ed
callq 0x25110
movq %rax, -0x1bc0(%rbp)
jmp 0x74fb
movq -0x1bc0(%rbp), %rsi
movq -0x1bb8(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1bc8(%rbp)
jmp 0x7517
movq -0x1bc8(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1bd0(%rbp)
jmp 0x7531
movq -0x1bd0(%rbp), %rdi
leaq 0x2dbef(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1bd8(%rbp)
jmp 0x754d
movq -0x1bd8(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1be0(%rbp)
jmp 0x7569
movq -0x1be0(%rbp), %rdi
leaq 0x2dc13(%rip), %rsi     # 0x3518a
callq 0x53f0
movq %rax, -0x1be8(%rbp)
jmp 0x7585
movq -0x1be8(%rbp), %rdi
movq 0x459fd(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x759a
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1bf0(%rbp)
jmp 0x75b4
callq 0x25110
movq %rax, -0x1bf8(%rbp)
jmp 0x75c2
movq -0x1bf8(%rbp), %rsi
movq -0x1bf0(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1c00(%rbp)
jmp 0x75de
movq -0x1c00(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1c08(%rbp)
jmp 0x75f8
movq -0x1c08(%rbp), %rdi
leaq -0x1070(%rbp), %rsi
callq 0x27810
movq %rax, -0x1c10(%rbp)
jmp 0x7614
movq -0x1c10(%rbp), %rdi
movq 0x4596e(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x7629
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1c18(%rbp)
jmp 0x7643
callq 0x25110
movq %rax, -0x1c20(%rbp)
jmp 0x7651
movq -0x1c20(%rbp), %rsi
movq -0x1c18(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1c28(%rbp)
jmp 0x766d
movq -0x1c28(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1c30(%rbp)
jmp 0x7687
movq -0x1c30(%rbp), %rdi
leaq 0x2da99(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1c38(%rbp)
jmp 0x76a3
movq -0x1c38(%rbp), %rdi
movq -0xf78(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1c40(%rbp)
jmp 0x76bf
movq -0x1c40(%rbp), %rdi
leaq 0x2dabd(%rip), %rsi     # 0x3518a
callq 0x53f0
movq %rax, -0x1c48(%rbp)
jmp 0x76db
movq -0x1c48(%rbp), %rdi
movq 0x458a7(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x76f0
movq -0x18(%rbp), %rsi
addq $0x120, %rsi            # imm = 0x120
leaq -0x1550(%rbp), %rdi
callq 0x51a0
jmp 0x7709
leaq -0x1530(%rbp), %rdi
leaq -0x1550(%rbp), %rsi
leaq -0xd28(%rbp), %rdx
callq 0xa480
jmp 0x7725
leaq -0x1550(%rbp), %rdi
callq 0x5250
movq -0xef0(%rbp), %rdx
leaq 0x2e2ab(%rip), %rsi     # 0x359ea
xorl %eax, %eax
leaq -0x15d0(%rbp), %rdi
callq 0x50b0
movq -0xf70(%rbp), %rax
movq %rax, -0x1c58(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1c50(%rbp)
jmp 0x7770
movq -0x1c50(%rbp), %rdi
callq 0x9fd0
movq %rax, -0x1c60(%rbp)
jmp 0x7785
movq -0x1c60(%rbp), %rdx
movq -0x1c58(%rbp), %rsi
leaq -0x1620(%rbp), %rdi
callq 0x1e880
jmp 0x77a1
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1c68(%rbp)
jmp 0x77b6
movq -0x1c68(%rbp), %rdi
callq 0xa460
movq %rax, -0x1c70(%rbp)
jmp 0x77cb
leaq -0x1070(%rbp), %rdi
callq 0xa500
movq %rax, -0x1c78(%rbp)
jmp 0x77e0
movq -0x1c78(%rbp), %rcx
movq -0x1c70(%rbp), %rdx
leaq -0x1530(%rbp), %rdi
leaq -0x1620(%rbp), %rsi
leaq -0x15d0(%rbp), %r8
callq 0x23710
jmp 0x780a
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1c80(%rbp)
jmp 0x781f
movq -0x1c80(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x1090(%rbp), %rdx
leaq -0x1098(%rbp), %rcx
callq 0x326b0
jmp 0x7842
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1c88(%rbp)
jmp 0x7857
movq -0x1c88(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10a0(%rbp), %rdx
leaq -0x10a8(%rbp), %rcx
callq 0x32750
jmp 0x787a
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1c90(%rbp)
jmp 0x788f
movq -0x1c90(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10b0(%rbp), %rdx
leaq -0x10b8(%rbp), %rcx
callq 0x32920
jmp 0x78b2
movq 0x4572f(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1c98(%rbp)
jmp 0x78cc
callq 0x25110
movq %rax, -0x1ca0(%rbp)
jmp 0x78da
movq -0x1ca0(%rbp), %rsi
movq -0x1c98(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1ca8(%rbp)
jmp 0x78f6
movq -0x1ca8(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1cb0(%rbp)
jmp 0x7910
movq -0x1cb0(%rbp), %rdi
leaq 0x2d810(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1cb8(%rbp)
jmp 0x792c
movq -0x1cb8(%rbp), %rdi
movq -0xef0(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1cc0(%rbp)
jmp 0x7948
movq -0x1cc0(%rbp), %rdi
leaq 0x2e76b(%rip), %rsi     # 0x360c1
callq 0x53f0
movq %rax, -0x1cc8(%rbp)
jmp 0x7964
leaq -0x1620(%rbp), %rdi
callq 0xa520
movq %rax, -0x1cd0(%rbp)
jmp 0x7979
movq -0x1cd0(%rbp), %rsi
movq -0x1cc8(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1cd8(%rbp)
jmp 0x7995
movq -0x1cd8(%rbp), %rdi
leaq 0x2d818(%rip), %rsi     # 0x351bb
callq 0x53f0
movq %rax, -0x1ce0(%rbp)
jmp 0x79b1
movq -0x1ce0(%rbp), %rdi
movsd -0x1090(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1ce8(%rbp)
jmp 0x79ce
movq -0x1ce8(%rbp), %rdi
leaq 0x2d7ed(%rip), %rsi     # 0x351c9
callq 0x53f0
movq %rax, -0x1cf0(%rbp)
jmp 0x79ea
movq -0x1cf0(%rbp), %rdi
movsd -0x1098(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1cf8(%rbp)
jmp 0x7a07
movq -0x1cf8(%rbp), %rdi
leaq 0x2d7c3(%rip), %rsi     # 0x351d8
callq 0x53f0
movq %rax, -0x1d00(%rbp)
jmp 0x7a23
movq -0x1d00(%rbp), %rdi
movsd -0x10a0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1d08(%rbp)
jmp 0x7a40
movq -0x1d08(%rbp), %rdi
leaq 0x2d79a(%rip), %rsi     # 0x351e8
callq 0x53f0
movq %rax, -0x1d10(%rbp)
jmp 0x7a5c
movq -0x1d10(%rbp), %rdi
movsd -0x10b0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1d18(%rbp)
jmp 0x7a79
movq -0x1d18(%rbp), %rdi
movq 0x45509(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x7a8e
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1d20(%rbp)
jmp 0x7aa8
callq 0x25110
movq %rax, -0x1d28(%rbp)
jmp 0x7ab6
movq -0x1d28(%rbp), %rsi
movq -0x1d20(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1d30(%rbp)
jmp 0x7ad2
movq -0x1d30(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1d38(%rbp)
jmp 0x7aec
movq -0x1d38(%rbp), %rdi
leaq 0x2d634(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1d40(%rbp)
jmp 0x7b08
movq -0x1d40(%rbp), %rdi
movq -0xef0(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1d48(%rbp)
jmp 0x7b24
movq -0x1d48(%rbp), %rdi
leaq 0x2e58f(%rip), %rsi     # 0x360c1
callq 0x53f0
movq %rax, -0x1d50(%rbp)
jmp 0x7b40
leaq -0x1620(%rbp), %rdi
callq 0xa520
movq %rax, -0x1d58(%rbp)
jmp 0x7b55
movq -0x1d58(%rbp), %rsi
movq -0x1d50(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1d60(%rbp)
jmp 0x7b71
movq -0x1d60(%rbp), %rdi
leaq 0x2d63c(%rip), %rsi     # 0x351bb
callq 0x53f0
movq %rax, -0x1d68(%rbp)
jmp 0x7b8d
movq -0x1d68(%rbp), %rdi
movsd -0x1090(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1d70(%rbp)
jmp 0x7baa
movq -0x1d70(%rbp), %rdi
leaq 0x2d611(%rip), %rsi     # 0x351c9
callq 0x53f0
movq %rax, -0x1d78(%rbp)
jmp 0x7bc6
movq -0x1d78(%rbp), %rdi
movsd -0x1098(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1d80(%rbp)
jmp 0x7be3
movq -0x1d80(%rbp), %rdi
leaq 0x2d5e7(%rip), %rsi     # 0x351d8
callq 0x53f0
movq %rax, -0x1d88(%rbp)
jmp 0x7bff
movq -0x1d88(%rbp), %rdi
movsd -0x10a0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1d90(%rbp)
jmp 0x7c1c
movq -0x1d90(%rbp), %rdi
leaq 0x2d5be(%rip), %rsi     # 0x351e8
callq 0x53f0
movq %rax, -0x1d98(%rbp)
jmp 0x7c38
movq -0x1d98(%rbp), %rdi
movsd -0x10b0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1da0(%rbp)
jmp 0x7c55
movq -0x1da0(%rbp), %rdi
movq 0x4532d(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x7c6a
movq -0xef0(%rbp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, -0xef0(%rbp)
movq %rax, -0x1638(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xa180
movq %rax, -0x1da8(%rbp)
jmp 0x7c9a
movq -0x1da8(%rbp), %rax
movq %rax, -0x1640(%rbp)
leaq -0x1630(%rbp), %rdi
leaq -0x1638(%rbp), %rsi
leaq -0x1640(%rbp), %rdx
callq 0xa580
jmp 0x7cc4
leaq -0xee8(%rbp), %rdi
leaq -0x1630(%rbp), %rsi
callq 0xa540
movb %dl, -0x1db1(%rbp)
movq %rax, -0x1db0(%rbp)
jmp 0x7ce6
movb -0x1db1(%rbp), %al
movq -0x1db0(%rbp), %rcx
movq %rcx, -0x1650(%rbp)
movb %al, -0x1648(%rbp)
movq -0xef0(%rbp), %rdx
leaq 0x2dcdc(%rip), %rsi     # 0x359ea
xorl %eax, %eax
leaq -0x15d0(%rbp), %rdi
callq 0x50b0
movq -0xf70(%rbp), %rax
movq %rax, -0x1dc8(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1dc0(%rbp)
jmp 0x7d3f
movq -0x1dc0(%rbp), %rdi
callq 0x9fd0
movq %rax, -0x1dd0(%rbp)
jmp 0x7d54
movq -0x1dd0(%rbp), %rdx
movq -0x1dc8(%rbp), %rsi
leaq -0x16a0(%rbp), %rdi
callq 0x1e880
jmp 0x7d70
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1dd8(%rbp)
jmp 0x7d85
movq -0x1dd8(%rbp), %rdi
callq 0xa460
movq %rax, -0x1de0(%rbp)
jmp 0x7d9a
leaq -0x1070(%rbp), %rdi
callq 0xa5d0
movq %rax, -0x1de8(%rbp)
jmp 0x7daf
movq -0x1de8(%rbp), %rcx
movq -0x1de0(%rbp), %rdx
leaq -0x1530(%rbp), %rdi
leaq -0x16a0(%rbp), %rsi
leaq -0x15d0(%rbp), %r8
callq 0x23710
jmp 0x7dd9
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1df0(%rbp)
jmp 0x7dee
movq -0x1df0(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x1090(%rbp), %rdx
leaq -0x1098(%rbp), %rcx
callq 0x326b0
jmp 0x7e11
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1df8(%rbp)
jmp 0x7e26
movq -0x1df8(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10a0(%rbp), %rdx
leaq -0x10a8(%rbp), %rcx
callq 0x32750
jmp 0x7e49
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1e00(%rbp)
jmp 0x7e5e
movq -0x1e00(%rbp), %rsi
leaq -0x1088(%rbp), %rdi
leaq -0x10b0(%rbp), %rdx
leaq -0x10b8(%rbp), %rcx
callq 0x32920
jmp 0x7e81
movq 0x45160(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1e08(%rbp)
jmp 0x7e9b
callq 0x25110
movq %rax, -0x1e10(%rbp)
jmp 0x7ea9
movq -0x1e10(%rbp), %rsi
movq -0x1e08(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1e18(%rbp)
jmp 0x7ec5
movq -0x1e18(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1e20(%rbp)
jmp 0x7edf
movq -0x1e20(%rbp), %rdi
leaq 0x2d241(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1e28(%rbp)
jmp 0x7efb
movq -0x1e28(%rbp), %rdi
movq -0xef0(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1e30(%rbp)
jmp 0x7f17
movq -0x1e30(%rbp), %rdi
leaq 0x2e19c(%rip), %rsi     # 0x360c1
callq 0x53f0
movq %rax, -0x1e38(%rbp)
jmp 0x7f33
leaq -0x16a0(%rbp), %rdi
callq 0xa520
movq %rax, -0x1e40(%rbp)
jmp 0x7f48
movq -0x1e40(%rbp), %rsi
movq -0x1e38(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1e48(%rbp)
jmp 0x7f64
movq -0x1e48(%rbp), %rdi
leaq 0x2d249(%rip), %rsi     # 0x351bb
callq 0x53f0
movq %rax, -0x1e50(%rbp)
jmp 0x7f80
movq -0x1e50(%rbp), %rdi
movsd -0x1090(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1e58(%rbp)
jmp 0x7f9d
movq -0x1e58(%rbp), %rdi
leaq 0x2d21e(%rip), %rsi     # 0x351c9
callq 0x53f0
movq %rax, -0x1e60(%rbp)
jmp 0x7fb9
movq -0x1e60(%rbp), %rdi
movsd -0x1098(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1e68(%rbp)
jmp 0x7fd6
movq -0x1e68(%rbp), %rdi
leaq 0x2d1f4(%rip), %rsi     # 0x351d8
callq 0x53f0
movq %rax, -0x1e70(%rbp)
jmp 0x7ff2
movq -0x1e70(%rbp), %rdi
movsd -0x10a0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1e78(%rbp)
jmp 0x800f
movq -0x1e78(%rbp), %rdi
leaq 0x2d1cb(%rip), %rsi     # 0x351e8
callq 0x53f0
movq %rax, -0x1e80(%rbp)
jmp 0x802b
movq -0x1e80(%rbp), %rdi
movsd -0x10b0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1e88(%rbp)
jmp 0x8048
movq -0x1e88(%rbp), %rdi
movq 0x44f3a(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x805d
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1e90(%rbp)
jmp 0x8077
callq 0x25110
movq %rax, -0x1e98(%rbp)
jmp 0x8085
movq -0x1e98(%rbp), %rsi
movq -0x1e90(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1ea0(%rbp)
jmp 0x80a1
movq -0x1ea0(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1ea8(%rbp)
jmp 0x80bb
movq -0x1ea8(%rbp), %rdi
leaq 0x2d065(%rip), %rsi     # 0x3512e
callq 0x53f0
movq %rax, -0x1eb0(%rbp)
jmp 0x80d7
movq -0x1eb0(%rbp), %rdi
movq -0xef0(%rbp), %rsi
callq 0x50f0
movq %rax, -0x1eb8(%rbp)
jmp 0x80f3
movq -0x1eb8(%rbp), %rdi
leaq 0x2dfc0(%rip), %rsi     # 0x360c1
callq 0x53f0
movq %rax, -0x1ec0(%rbp)
jmp 0x810f
leaq -0x16a0(%rbp), %rdi
callq 0xa520
movq %rax, -0x1ec8(%rbp)
jmp 0x8124
movq -0x1ec8(%rbp), %rsi
movq -0x1ec0(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1ed0(%rbp)
jmp 0x8140
movq -0x1ed0(%rbp), %rdi
leaq 0x2d06d(%rip), %rsi     # 0x351bb
callq 0x53f0
movq %rax, -0x1ed8(%rbp)
jmp 0x815c
movq -0x1ed8(%rbp), %rdi
movsd -0x1090(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1ee0(%rbp)
jmp 0x8179
movq -0x1ee0(%rbp), %rdi
leaq 0x2d042(%rip), %rsi     # 0x351c9
callq 0x53f0
movq %rax, -0x1ee8(%rbp)
jmp 0x8195
movq -0x1ee8(%rbp), %rdi
movsd -0x1098(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1ef0(%rbp)
jmp 0x81b2
movq -0x1ef0(%rbp), %rdi
leaq 0x2d018(%rip), %rsi     # 0x351d8
callq 0x53f0
movq %rax, -0x1ef8(%rbp)
jmp 0x81ce
movq -0x1ef8(%rbp), %rdi
movsd -0x10a0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1f00(%rbp)
jmp 0x81eb
movq -0x1f00(%rbp), %rdi
leaq 0x2cfef(%rip), %rsi     # 0x351e8
callq 0x53f0
movq %rax, -0x1f08(%rbp)
jmp 0x8207
movq -0x1f08(%rbp), %rdi
movsd -0x10b0(%rbp), %xmm0
callq 0x5800
movq %rax, -0x1f10(%rbp)
jmp 0x8224
movq -0x1f10(%rbp), %rdi
movq 0x44d5e(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x8239
movq -0xef0(%rbp), %rax
movq %rax, %rcx
incq %rcx
movq %rcx, -0xef0(%rbp)
movq %rax, -0x16b8(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xa5b0
movq %rax, -0x1f18(%rbp)
jmp 0x8269
movq -0x1f18(%rbp), %rax
movq %rax, -0x16c0(%rbp)
leaq -0x16b0(%rbp), %rdi
leaq -0x16b8(%rbp), %rsi
leaq -0x16c0(%rbp), %rdx
callq 0xa580
jmp 0x8293
leaq -0xee8(%rbp), %rdi
leaq -0x16b0(%rbp), %rsi
callq 0xa540
movb %dl, -0x1f21(%rbp)
movq %rax, -0x1f20(%rbp)
jmp 0x82b5
movb -0x1f21(%rbp), %al
movq -0x1f20(%rbp), %rcx
movq %rcx, -0x16d0(%rbp)
movb %al, -0x16c8(%rbp)
leaq -0x16a0(%rbp), %rdi
callq 0x1eb00
leaq -0x1620(%rbp), %rdi
callq 0x1eb00
leaq -0x1530(%rbp), %rdi
callq 0xa5f0
jmp 0x837b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0x1550(%rbp), %rdi
callq 0x5250
jmp 0x83f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x836d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
jmp 0x8361
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0x16a0(%rbp), %rdi
callq 0x1eb00
leaq -0x1620(%rbp), %rdi
callq 0x1eb00
leaq -0x1530(%rbp), %rdi
callq 0xa5f0
jmp 0x83f0
movq -0xf70(%rbp), %rax
movq %rax, -0x1f30(%rbp)
cmpq $0x0, %rax
je 0x83a7
movq -0x1f30(%rbp), %rdi
callq 0x1eb00
movq -0x1f30(%rbp), %rdi
callq 0x53a0
movq -0xf68(%rbp), %rax
movq %rax, -0x1f38(%rbp)
cmpq $0x0, %rax
je 0x83d3
movq -0x1f38(%rbp), %rdi
callq 0xa610
movq -0x1f38(%rbp), %rdi
callq 0x53a0
leaq -0x1088(%rbp), %rdi
callq 0xa650
leaq -0x1070(%rbp), %rdi
callq 0xa660
jmp 0x6510
leaq -0x1088(%rbp), %rdi
callq 0xa650
leaq -0x1070(%rbp), %rdi
callq 0xa660
jmp 0x89ee
movq $0x0, -0x16d8(%rbp)
movq -0x16d8(%rbp), %rax
movq %rax, -0x1f48(%rbp)
leaq -0xd28(%rbp), %rdi
callq 0xa680
movq %rax, -0x1f40(%rbp)
jmp 0x843b
movq -0x1f48(%rbp), %rax
movq -0x1f40(%rbp), %rcx
cmpq %rcx, %rax
ja 0x859d
leaq -0xf20(%rbp), %rdi
leaq -0x16d8(%rbp), %rsi
callq 0xa6e0
movq %rax, -0x1f50(%rbp)
jmp 0x846e
movq -0x1f50(%rbp), %rax
movq %rax, -0x16e0(%rbp)
leaq -0xf20(%rbp), %rdi
callq 0xa710
movq %rax, -0x16e8(%rbp)
leaq -0x16e0(%rbp), %rdi
leaq -0x16e8(%rbp), %rsi
callq 0xa6b0
testb $0x1, %al
jne 0x84a8
jmp 0x84fa
movq -0x16d8(%rbp), %rsi
leaq -0x628(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1f58(%rbp)
jmp 0x84c4
movq -0x1f58(%rbp), %rdi
leaq 0x2cd22(%rip), %rsi     # 0x351f4
callq 0x53f0
movq %rax, -0x1f60(%rbp)
jmp 0x84e0
movq -0x1f60(%rbp), %rdi
movq 0x44aa2(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x84f5
jmp 0x8584
movq -0x16d8(%rbp), %rsi
leaq -0x628(%rbp), %rdi
callq 0x50f0
movq %rax, -0x1f68(%rbp)
jmp 0x8516
movq -0x1f68(%rbp), %rdi
leaq 0x2dd48(%rip), %rsi     # 0x3626c
callq 0x53f0
movq %rax, -0x1f70(%rbp)
jmp 0x8532
leaq -0xf20(%rbp), %rdi
leaq -0x16d8(%rbp), %rsi
callq 0xa230
movq %rax, -0x1f78(%rbp)
jmp 0x854e
movq -0x1f70(%rbp), %rdi
movq -0x1f78(%rbp), %rax
movq (%rax), %rsi
callq 0x50f0
movq %rax, -0x1f80(%rbp)
jmp 0x856d
movq -0x1f80(%rbp), %rdi
movq 0x44a15(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x8582
jmp 0x8584
jmp 0x8586
movq -0x16d8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x16d8(%rbp)
jmp 0x8418
movq $0x1, -0x16f0(%rbp)
movq -0x16f0(%rbp), %rax
movq %rax, -0x1f90(%rbp)
leaq -0xd28(%rbp), %rdi
callq 0xa740
movq %rax, -0x1f88(%rbp)
jmp 0x85cb
movq -0x1f90(%rbp), %rax
movq -0x1f88(%rbp), %rcx
cmpq %rcx, %rax
ja 0x87c6
leaq -0xf50(%rbp), %rdi
leaq -0x16f0(%rbp), %rsi
callq 0xa6e0
movq %rax, -0x1f98(%rbp)
jmp 0x85fe
movq -0x1f98(%rbp), %rax
movq %rax, -0x16f8(%rbp)
leaq -0xf50(%rbp), %rdi
callq 0xa710
movq %rax, -0x1700(%rbp)
leaq -0x16f8(%rbp), %rdi
leaq -0x1700(%rbp), %rsi
callq 0xa6b0
testb $0x1, %al
jne 0x863b
jmp 0x86d8
movq -0x16f0(%rbp), %rdx
leaq -0x1720(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
callq 0x13c70
jmp 0x8657
leaq -0x828(%rbp), %rdi
leaq -0x1720(%rbp), %rsi
callq 0x5360
movq %rax, -0x1fa0(%rbp)
jmp 0x8673
movq -0x1fa0(%rbp), %rdi
leaq 0x2cb73(%rip), %rsi     # 0x351f4
callq 0x53f0
movq %rax, -0x1fa8(%rbp)
jmp 0x868f
movq -0x1fa8(%rbp), %rdi
movq 0x448f3(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x86a4
leaq -0x1720(%rbp), %rdi
callq 0x5250
jmp 0x87ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0x1720(%rbp), %rdi
callq 0x5250
jmp 0x89ee
movq -0x16f0(%rbp), %rdx
leaq -0x1740(%rbp), %rdi
leaq -0xd28(%rbp), %rsi
callq 0x13c70
jmp 0x86f4
leaq -0x828(%rbp), %rdi
leaq -0x1740(%rbp), %rsi
callq 0x5360
movq %rax, -0x1fb0(%rbp)
jmp 0x8710
movq -0x1fb0(%rbp), %rdi
leaq 0x2db4e(%rip), %rsi     # 0x3626c
callq 0x53f0
movq %rax, -0x1fb8(%rbp)
jmp 0x872c
leaq -0xf50(%rbp), %rdi
leaq -0x16f0(%rbp), %rsi
callq 0xa230
movq %rax, -0x1fc0(%rbp)
jmp 0x8748
movq -0x1fb8(%rbp), %rdi
movq -0x1fc0(%rbp), %rax
movq (%rax), %rsi
callq 0x50f0
movq %rax, -0x1fc8(%rbp)
jmp 0x8767
movq -0x1fc8(%rbp), %rdi
movq 0x4481b(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x877c
leaq -0x1740(%rbp), %rdi
callq 0x5250
jmp 0x87ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x420(%rbp)
movl %eax, -0x424(%rbp)
leaq -0x1740(%rbp), %rdi
callq 0x5250
jmp 0x89ee
jmp 0x87af
movq -0x16f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x16f0(%rbp)
jmp 0x85a8
leaq -0x628(%rbp), %rdi
callq 0x5600
jmp 0x87d4
leaq -0x828(%rbp), %rdi
callq 0x5600
jmp 0x87e2
movq 0x447ff(%rip), %rdi     # 0x4cfe8
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x1fd0(%rbp)
jmp 0x87fc
callq 0x25110
movq %rax, -0x1fd8(%rbp)
jmp 0x880a
movq -0x1fd8(%rbp), %rsi
movq -0x1fd0(%rbp), %rdi
callq 0x53f0
movq %rax, -0x1fe0(%rbp)
jmp 0x8826
movq -0x1fe0(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x1fe8(%rbp)
jmp 0x8840
movq -0x1fe8(%rbp), %rdi
leaq 0x2c9a9(%rip), %rsi     # 0x351f7
callq 0x53f0
movq %rax, -0x1ff0(%rbp)
jmp 0x885c
movq -0x1ff0(%rbp), %rdi
movq 0x44726(%rip), %rsi     # 0x4cf90
callq 0x5440
movq %rax, -0x1ff8(%rbp)
jmp 0x8878
movq -0x1ff8(%rbp), %rdi
movq 0x4470a(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x888d
leaq -0x218(%rbp), %rdi
movl $0x5b, %esi
callq 0x54a0
movq %rax, -0x2000(%rbp)
jmp 0x88a7
callq 0x25110
movq %rax, -0x2008(%rbp)
jmp 0x88b5
movq -0x2008(%rbp), %rsi
movq -0x2000(%rbp), %rdi
callq 0x53f0
movq %rax, -0x2010(%rbp)
jmp 0x88d1
movq -0x2010(%rbp), %rdi
movl $0x5d, %esi
callq 0x54a0
movq %rax, -0x2018(%rbp)
jmp 0x88eb
movq -0x2018(%rbp), %rdi
leaq 0x2c8fe(%rip), %rsi     # 0x351f7
callq 0x53f0
movq %rax, -0x2020(%rbp)
jmp 0x8907
movq -0x2020(%rbp), %rdi
movq 0x4467b(%rip), %rsi     # 0x4cf90
callq 0x5440
movq %rax, -0x2028(%rbp)
jmp 0x8923
movq -0x2028(%rbp), %rdi
movq 0x4465f(%rip), %rsi     # 0x4cf90
callq 0x5440
jmp 0x8938
leaq -0x218(%rbp), %rdi
callq 0x5600
jmp 0x8946
leaq -0x418(%rbp), %rdi
callq 0x5600
jmp 0x8954
leaq -0xf50(%rbp), %rdi
callq 0xa770
leaq -0xf20(%rbp), %rdi
callq 0xa770
leaq -0xee8(%rbp), %rdi
callq 0xa790
leaq -0xe78(%rbp), %rdi
callq 0xa7b0
leaq -0xdd8(%rbp), %rdi
callq 0x1eb00
leaq -0xd28(%rbp), %rdi
callq 0xa7f0
leaq -0xc98(%rbp), %rdi
callq 0xa840
movl $0x0, -0xc34(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x5640
leaq -0x628(%rbp), %rdi
callq 0x5640
leaq -0x418(%rbp), %rdi
callq 0x5640
leaq -0x218(%rbp), %rdi
callq 0x5640
movl -0x4(%rbp), %eax
addq $0x2030, %rsp           # imm = 0x2030
popq %rbp
retq
leaq -0xf50(%rbp), %rdi
callq 0xa770
leaq -0xf20(%rbp), %rdi
callq 0xa770
leaq -0xee8(%rbp), %rdi
callq 0xa790
leaq -0xe78(%rbp), %rdi
callq 0xa7b0
leaq -0xdd8(%rbp), %rdi
callq 0x1eb00
leaq -0xd28(%rbp), %rdi
callq 0xa7f0
leaq -0xc98(%rbp), %rdi
callq 0xa840
leaq -0x828(%rbp), %rdi
callq 0x5640
leaq -0x628(%rbp), %rdi
callq 0x5640
leaq -0x418(%rbp), %rdi
callq 0x5640
leaq -0x218(%rbp), %rdi
callq 0x5640
movq -0x420(%rbp), %rdi
callq 0x5750
nop