// File: /workspace/github_cpp_makefile_star2_O1/CK7[P]abawaca/src/abawaca-build.cpp
// Function: main
int main(int argc, const char* argv[])
{
	size_t	window_size = 2000;
	size_t	max_snps = 15;

	if(argc < 5) {
		usage(argv[0]);
		return -1;
	}

	string	assembly_file;
	string	out_directory;
	string	sam_glob;
	string	this_sample_str;

	for(auto i=1; i<argc; i+=2) {
		if(!strcmp(argv[i], "-f"))
			assembly_file = argv[i+1];
		else if(!strcmp(argv[i], "-o"))
			out_directory = argv[i+1];
		else if(!strcmp(argv[i], "-s"))
			sam_glob = argv[i+1];
		else if(!strcmp(argv[i], "-c"))
			this_sample_str = argv[i+1];
		else {
			cerr << endl << "Unknown option " << argv[i] << endl << endl;
			return -1;
		}
	}

	if(assembly_file.size() == 0) {
		cerr << endl << "Error: assembly file was not specified (-f)" << endl << endl;
		return -1;
	}
	if(out_directory.size() == 0) {
		cerr << endl << "Error: output directory was not specified (-o)" << endl << endl;
		return -1;
	}
	if(sam_glob.size() == 0) {
		cerr << endl << "Error: glob path for sam files was not specified (-s)" << endl << endl;
		return -1;
	}
	if(this_sample_str.size() == 0) {
		cerr << endl << "Error: path for sam file for the assembly\'s reads was not specified (-f)" << endl << endl;
		return -1;
	}

	cerr << time_since_epoch() << "Reading assembly file (" << assembly_file << ")" << endl;
	map<string, Scaf*>			scafs;
	Bio::SeqIORead_fasta<Bio::DNASequence>  in(assembly_file);
	Bio::DNASequence*                       seq = NULL;
	size_t ndps = 0;
	while((seq = in.next_seq()) != NULL) {
		Scaf*	s = new Scaf(*seq, window_size);
 		scafs.insert(pair<string, Scaf*>(seq->display_id(), s));
		ndps += s->ndps();
	}

	char names_file[1024], lrn_file[1024], info_file[1024], links_file[1024];

	sprintf(names_file, "%s/abawaca.names", out_directory.c_str());
	sprintf(lrn_file, "%s/abawaca.lrn", out_directory.c_str());
	sprintf(info_file, "%s/abawaca.info", out_directory.c_str());
	sprintf(links_file, "%s/abawaca.links", out_directory.c_str());

	cerr << time_since_epoch() << "Creating .lrn (" << lrn_file << ") and .names (" << names_file << ") files" << endl;

	if(!directory_exists(out_directory.c_str())) {
		char	cmd[1024];
		sprintf(cmd, "mkdir %s", out_directory.c_str());
		system(cmd);
	}

	if(sam_glob.size() > 0) {
		vector<string>	sam_files = glob(sam_glob);
		for(auto vit=sam_files.begin(); vit!=sam_files.end(); vit++) {
			cerr  << time_since_epoch() << "Reading SAM file " << *vit << endl;
			dimension2index.insert(pair<string, size_t>(*vit, dimension_order.size()));
			dimension_order.push_back(*vit);

			size_t dimension = dimension2index[*vit];

			if(this_sample_str == *vit)
				this_sample = dimension;

			size_t 					insert_size = calc_insert_size(*vit);
			cerr  << time_since_epoch() << "Insert size is " << insert_size << endl;

			Bio::SAMReader  			reader(*vit);
			unordered_map<string, Bio::ReadMappingPtr>	reads;
			Links					links(insert_size, scafs);
			while(reader.good()) {
				Bio::ReadMappingPtr mapping(reader.next_mapping());
				if(mapping == NULL) {
					break;
				}

				if(dimension == this_sample) {
					string insert_name = mapping->read_name();
					size_t	p = insert_name.find_last_of('/');
					if(p != string::npos)
						insert_name.resize(p);
					auto rit = reads.find(insert_name);
					if(rit == reads.end()) {
						reads.insert(pair<string, Bio::ReadMappingPtr>(insert_name, mapping));
					}
					else {
						Bio::ReadMappingPtr mapping_other = rit->second;
						reads.erase(rit);
						links.add_pair(mapping, mapping_other);
					}
				}
				if(mapping->unmapped() || (mapping->num_snps() > max_snps) || mapping->multiple_hits()) {
					continue;
				}
				auto mit = scafs.find(mapping->ref_name());
				if(mit != scafs.end())
					mit->second->add_mapped_read(*mapping, dimension);
			}
			if(dimension == this_sample) {
				ofstream	oslinks(links_file);
				links.write_connections(oslinks);
				oslinks.close();
			}
		}
	}

	FILE* fout = fopen(names_file, "w");
	FILE* flrn = fopen(lrn_file, "w");
	FILE* finfo = fopen(info_file, "w");

	if(fout == NULL) {
		cerr << "Could not write to " << names_file << endl << endl;
		return -1;
	}
	if(flrn == NULL) {
		cerr << "Could not write to " << lrn_file << endl << endl;
		return -1;
	}
	if(finfo == NULL) {
		cerr << "Could not write to " << info_file << endl << endl;
		return -1;
	}

	fprintf(fout, "%c %lu\n", '%', ndps);
	fprintf(flrn, "%c %lu\n", '%', ndps);

	// We do not output the frequency of A/T
	fprintf(flrn, "%c %lu\n", '%', dimension_order.size());
	fprintf(flrn, "%c 9", '%');
	for(auto it=dimension_order.begin(); it!=dimension_order.end(); it++)
		if(*it != string("A"))
			fprintf(flrn, "\t1");
	fprintf(flrn, "\n");

	fprintf(flrn, "%c Key", '%');
	for(auto it=dimension_order.begin(); it!=dimension_order.end(); it++)
		if(*it != string("A"))
			fprintf(flrn, "\t%s", it->c_str());
	fprintf(flrn, "\n");

	int i=0;
	for(auto it=scafs.begin(); it!=scafs.end(); it++) {
		fprintf(finfo, "%s\t%lu\t%.3lf\t%.3lf\t%lu\n", it->second->get_display_id().c_str(), it->second->get_seq().size(), int(1000.0*it->second->cvg())/1000.0, int(1000.0*it->second->gc())/1000.0, it->second->Ns());
		for(auto sit=it->second->begin(); sit!=it->second->end(); sit++) {
			fprintf(fout, "%d\t%s\t%s\n", ++i, (*sit)->get_display_id().c_str(), (*sit)->get_desc().c_str());
			fprintf(flrn, "%d", i);
			for(auto mit=dimension_order.begin(); mit!=dimension_order.end(); mit++) {
				if(*mit != string("A"))
					fprintf(flrn, "\t%.3lf", int(1000.0*(*sit)->get_dimension(*mit))/1000.0);
			}
			fprintf(flrn, "\n");
		}
	}

	fclose(fout);
	fclose(flrn);
	fclose(finfo);

	cerr << time_since_epoch() << "Predicting genes and SCGs" << endl;
	string scg_file = prepare_scgs(assembly_file, out_directory);
	char data[2048];
	sprintf(data, "%s/data.txt", out_directory.c_str());
	FILE* fp = fopen(data, "w");

	if(fp == NULL) {
		cerr << "Could not write to " << data << endl << endl;
		return -1;
	}

	fprintf(fp, "SCG\t%s\n", scg_file.c_str());
	fprintf(fp, "Links\t%s\n", links_file);
	fprintf(fp, "Info\t%s\n", info_file);
	fprintf(fp, "Names\t%s\n", names_file);
	fprintf(fp, "Lrn\t%s\n", lrn_file);
	fprintf(fp, "Assembly\t%s\n", assembly_file.c_str());
	fclose(fp);

	cerr << time_since_epoch() << "Finished successfully" << endl;
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1ae8, %rsp           # imm = 0x1AE8
movq %rsi, %rbx
movl %edi, -0x30(%rbp)
cmpl $0x4, %edi
jg 0xa0e2
movq (%rbx), %rdi
callq 0x9c88
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
jmp 0xb6be
leaq -0x90(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x40(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xf0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xd0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movb $0x1, %r15b
movl $0x1, %r14d
movq (%rbx,%r14,8), %r13
movq %r13, %rdi
leaq 0x7656(%rip), %rsi      # 0x11792
callq 0x43d0
leaq -0xa0(%rbp), %r12
testl %eax, %eax
je 0xa19b
movq %r13, %rdi
leaq 0x763f(%rip), %rsi      # 0x11795
callq 0x43d0
leaq -0x50(%rbp), %r12
testl %eax, %eax
je 0xa19b
movq %r13, %rdi
leaq 0x762b(%rip), %rsi      # 0x11798
callq 0x43d0
leaq -0x100(%rbp), %r12
testl %eax, %eax
je 0xa19b
movq %r13, %rdi
leaq 0x7614(%rip), %rsi      # 0x1179b
callq 0x43d0
leaq -0xe0(%rbp), %r12
testl %eax, %eax
jne 0xa3cb
movq 0x8(%rbx,%r14,8), %r13
movq 0x8(%r12), %r15
movq %r13, %rdi
callq 0x4130
movq %r12, %rdi
xorl %esi, %esi
movq %r15, %rdx
movq %r13, %rcx
movq %rax, %r8
callq 0x4440
addq $0x2, %r14
cmpl -0x30(%rbp), %r14d
setl %r15b
jl 0xa12e
xorl %ebx, %ebx
testb $0x1, %r15b
jne 0xb664
cmpq $0x0, -0x98(%rbp)
je 0xa439
cmpq $0x0, -0x48(%rbp)
je 0xa4c2
cmpq $0x0, -0xf8(%rbp)
je 0xb53f
cmpq $0x0, -0xd8(%rbp)
je 0xb5c8
leaq -0xb10(%rbp), %rdi
callq 0xf020
movq -0xb10(%rbp), %rsi
movq -0xb08(%rbp), %rdx
movq 0xddbc(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %rbx
leaq 0x7645(%rip), %rsi      # 0x11888
movl $0x17, %edx
movq %rax, %rdi
callq 0x4320
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
movq %rbx, %rdi
callq 0x4320
movq %rax, %rbx
leaq 0x7148(%rip), %rsi      # 0x113b8
movl $0x1, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
leaq -0xb00(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xa2b9
callq 0x4280
leaq -0x240(%rbp), %rcx
movl $0x0, (%rcx)
xorl %eax, %eax
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq -0x290(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2a0(%rbp), %rdi
callq 0x63a2
leaq -0x310(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0xbdb6
movq -0x2a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xa324
callq 0x4280
xorl %r13d, %r13d
leaq -0x310(%rbp), %rbx
leaq -0xb10(%rbp), %r14
movq %rbx, %rdi
callq 0xbe48
movq %rax, %r12
testq %rax, %rax
je 0xa54b
movl $0x80, %edi
callq 0x42b0
movq %rax, %r15
movl $0x7d0, %edx            # imm = 0x7D0
movq %rax, %rdi
movq %r12, %rsi
callq 0x8dc2
leaq -0xb00(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq 0x8(%r12), %rsi
movq 0x10(%r12), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x63a2
movq %r15, -0xaf0(%rbp)
leaq -0x248(%rbp), %rdi
movq %r14, %rsi
callq 0xe5f8
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xa3b7
callq 0x4280
movq 0x68(%r15), %rax
subq 0x60(%r15), %rax
sarq $0x3, %rax
addq %rax, %r13
jmp 0xa335
movq 0xdc1e(%rip), %rdi      # 0x17ff0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq 0xdc03(%rip), %rdi      # 0x17ff0
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %r12
leaq 0x739a(%rip), %rsi      # 0x1179e
movl $0xf, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx,%r14,8), %rbx
testq %rbx, %rbx
je 0xb4c8
movq %rbx, %rdi
callq 0x4130
movq %r12, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x4320
jmp 0xb4e3
movq 0xdbb0(%rip), %rdi      # 0x17ff0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq 0xdb95(%rip), %rdi      # 0x17ff0
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
leaq 0x733c(%rip), %rsi      # 0x117ae
movl $0x2b, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
jmp 0xb64c
movq 0xdb27(%rip), %rdi      # 0x17ff0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq 0xdb0c(%rip), %rdi      # 0x17ff0
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
leaq 0x72df(%rip), %rsi      # 0x117da
movl $0x2e, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
jmp 0xb64c
movq -0x50(%rbp), %rdx
leaq 0x734a(%rip), %rsi      # 0x118a0
leaq -0x1710(%rbp), %rdi
xorl %eax, %eax
callq 0x4070
movq -0x50(%rbp), %rdx
leaq 0x7342(%rip), %rsi      # 0x118b1
leaq -0xf10(%rbp), %rdi
xorl %eax, %eax
callq 0x4070
movq -0x50(%rbp), %rdx
leaq 0x7338(%rip), %rsi      # 0x118c0
leaq -0x1310(%rbp), %rdi
xorl %eax, %eax
callq 0x4070
movq -0x50(%rbp), %rdx
leaq 0x732f(%rip), %rsi      # 0x118d0
leaq -0x1b10(%rbp), %rdi
xorl %eax, %eax
callq 0x4070
leaq -0xb10(%rbp), %rdi
callq 0xf020
movq -0xb10(%rbp), %rsi
movq -0xb08(%rbp), %rdx
movq 0xda20(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %rbx
leaq 0x7302(%rip), %rsi      # 0x118e1
movl $0xf, %edx
movq %rax, %rdi
callq 0x4320
leaq -0xf10(%rbp), %r14
movq %r14, %rdi
callq 0x4130
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4320
leaq 0x72e1(%rip), %rsi      # 0x118f1
movl $0xe, %edx
movq %rbx, %rdi
callq 0x4320
leaq -0x1710(%rbp), %r14
movq %r14, %rdi
callq 0x4130
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x4320
leaq 0x72bf(%rip), %rsi      # 0x11900
movl $0x7, %edx
movq %rbx, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xa68d
callq 0x4280
movq -0x50(%rbp), %rdi
callq 0xf454
testl %eax, %eax
jne 0xa6be
movq -0x50(%rbp), %rdx
leaq 0x7263(%rip), %rsi      # 0x11908
leaq -0xb10(%rbp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4070
movq %rbx, %rdi
callq 0x4230
cmpq $0x0, -0xf8(%rbp)
je 0xad1a
leaq -0x178(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xf7d3
movq -0x178(%rbp), %r15
cmpq -0x170(%rbp), %r15
je 0xad0e
movq 0xd8ce(%rip), %rax      # 0x17fc8
movq (%rax), %rcx
movq %rcx, -0x58(%rbp)
movq 0x18(%rax), %rax
movq %rax, -0x80(%rbp)
leaq -0xb10(%rbp), %rbx
movq %r13, -0x30(%rbp)
movq %rbx, %rdi
callq 0xf020
movq -0xb10(%rbp), %rsi
movq -0xb08(%rbp), %rdx
movq 0xd8bf(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %r14
movl $0x11, %edx
movq %rax, %rdi
leaq 0x71c9(%rip), %rsi      # 0x11911
callq 0x4320
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %r14, %rdi
callq 0x4320
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %r12, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xa79e
callq 0x4280
movq 0xdbc3(%rip), %rbx      # 0x18368
movq 0xdbb4(%rip), %r14      # 0x18360
leaq -0xb00(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0xb10(%rbp), %r12
movq %r12, %rdi
callq 0x63a2
subq %r14, %rbx
sarq $0x5, %rbx
movq %rbx, -0xaf0(%rbp)
leaq 0xdb48(%rip), %rdi      # 0x18330
movq %r12, %rsi
callq 0xd004
movq %r12, %r14
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
leaq -0x60(%rbp), %rbx
je 0xa80f
callq 0x4280
leaq 0xdb4a(%rip), %rdi      # 0x18360
movq %r15, %rsi
callq 0xbab2
leaq 0xdb0b(%rip), %rdi      # 0x18330
movq %r15, %rsi
callq 0xc36c
movq (%rax), %r13
movq -0xd8(%rbp), %rdx
cmpq 0x8(%r15), %rdx
jne 0xa85c
testq %rdx, %rdx
je 0xa855
movq (%r15), %rsi
movq -0xe0(%rbp), %rdi
callq 0x42c0
testl %eax, %eax
jne 0xa85c
movq %r13, 0xdb1c(%rip)      # 0x18378
leaq -0x208(%rbp), %rax
movq %rax, -0x218(%rbp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x218(%rbp), %r12
movq %r12, %rdi
callq 0x63a2
movq %r12, %rdi
callq 0x9d76
movq %rax, %r12
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0xa8a6
callq 0x4280
movq %r14, %rdi
callq 0xf020
movq -0xb10(%rbp), %rsi
movq -0xb08(%rbp), %rdx
movq 0xd72d(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %r14
movl $0xf, %edx
movq %rax, %rdi
leaq 0x7049(%rip), %rsi      # 0x11923
callq 0x4320
movq %r14, %rdi
movq %r12, %rsi
callq 0x41b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %r14, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xa92c
callq 0x4280
leaq -0x1a8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x1b8(%rbp), %r14
movq %r14, %rdi
callq 0x63a2
leaq -0x1f8(%rbp), %rdi
movq %r14, %rsi
callq 0xbd24
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0xa97a
callq 0x4280
leaq -0x250(%rbp), %rax
movq %rax, -0x280(%rbp)
movq $0x1, -0x278(%rbp)
xorpd %xmm0, %xmm0
movupd %xmm0, -0x20(%rax)
movl $0x3f800000, -0x260(%rbp) # imm = 0x3F800000
movupd %xmm0, -0x8(%rax)
movq %r12, -0x140(%rbp)
movl $0x0, -0x130(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x128(%rbp)
leaq -0x130(%rbp), %rax
movq %rax, -0x120(%rbp)
movq %rax, -0x118(%rbp)
movq %rcx, -0x110(%rbp)
leaq -0x248(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x1f0(%rbp), %rdi
callq 0x4450
testl %eax, %eax
jne 0xac67
leaq -0x1f8(%rbp), %rdi
callq 0x6b18
movq %rax, -0x68(%rbp)
movq %rbx, %rdi
movq %rax, %rsi
callq 0xe182
movq -0x68(%rbp), %r14
testq %r14, %r14
je 0xac50
cmpq 0xd946(%rip), %r13      # 0x18378
jne 0xabec
leaq -0x150(%rbp), %rax
movq %rax, -0x160(%rbp)
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
addq %rsi, %rdx
leaq -0x160(%rbp), %r12
movq %r12, %rdi
callq 0x63a2
movq %r12, %rdi
movl $0x2f, %esi
movq $-0x1, %rdx
callq 0x4590
cmpq $-0x1, %rax
je 0xaa87
movq %r12, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x40c0
leaq -0x280(%rbp), %rdi
movq %r12, %rsi
callq 0xea2c
testq %rax, %rax
je 0xaabb
movq 0x28(%rax), %rbx
movq 0x30(%rax), %r12
testq %r12, %r12
je 0xab1c
movq 0xd521(%rip), %rcx      # 0x17fd0
cmpb $0x0, (%rcx)
je 0xab16
incl 0x8(%r12)
jmp 0xab1c
leaq -0xb10(%rbp), %r12
movq %r12, %rdi
leaq -0x160(%rbp), %rsi
leaq -0x68(%rbp), %rdx
callq 0xc3ec
leaq -0x280(%rbp), %rdi
movq %r12, %rsi
callq 0xeb58
movq -0xae8(%rbp), %rdi
testq %rdi, %rdi
je 0xaaf5
callq 0xc936
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xabd4
callq 0x4280
jmp 0xabd4
lock
incl 0x8(%r12)
leaq -0x280(%rbp), %rdi
movq %rax, %rsi
callq 0xee9e
movq -0x68(%rbp), %rcx
movq -0x60(%rbp), %rax
movq %rcx, -0xc0(%rbp)
movq %rax, -0xb8(%rbp)
testq %rax, %rax
je 0xab5b
movq 0xd483(%rip), %rcx      # 0x17fd0
cmpb $0x0, (%rcx)
je 0xab57
incl 0x8(%rax)
jmp 0xab5b
lock
incl 0x8(%rax)
movq %rbx, -0xb0(%rbp)
movq %r12, -0xa8(%rbp)
testq %r12, %r12
leaq -0x60(%rbp), %rbx
je 0xab8b
movq 0xd457(%rip), %rax      # 0x17fd0
cmpb $0x0, (%rax)
je 0xab85
incl 0x8(%r12)
jmp 0xab8b
lock
incl 0x8(%r12)
leaq -0x140(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x956e
movq -0xa8(%rbp), %rdi
testq %rdi, %rdi
je 0xabb6
callq 0xc936
movq -0xb8(%rbp), %rdi
testq %rdi, %rdi
je 0xabc7
callq 0xc936
testq %r12, %r12
je 0xabd4
movq %r12, %rdi
callq 0xc936
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0xabec
callq 0x4280
movq -0x68(%rbp), %rsi
movq 0x28(%rsi), %rax
testb $0x4, %al
jne 0xac50
btl $0x8, %eax
jb 0xac50
movq 0xd8(%rsi), %rax
subq 0xd0(%rsi), %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
cmpq $0xf, %rax
ja 0xac50
addq $0x30, %rsi
leaq -0x248(%rbp), %rdi
callq 0xef80
leaq -0x240(%rbp), %rcx
cmpq %rcx, %rax
je 0xac50
movq 0x40(%rax), %rdi
movq -0x68(%rbp), %rsi
movq %r13, %rdx
callq 0x9224
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0xac5e
callq 0xc936
testq %r14, %r14
jne 0xa9ef
cmpq 0xd70a(%rip), %r13      # 0x18378
movq -0x30(%rbp), %r13
leaq -0xb10(%rbp), %rbx
jne 0xacd9
movq %rbx, %rdi
leaq -0x1b10(%rbp), %rsi
movl $0x10, %edx
callq 0x4300
leaq -0x140(%rbp), %rdi
movq %rbx, %rsi
callq 0x93c4
movq %rbx, %rdi
callq 0x43e0
movq -0x58(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq -0x18(%rax), %rax
movq -0x80(%rbp), %rcx
movq %rcx, -0xb10(%rbp,%rax)
leaq -0xb08(%rbp), %rdi
callq 0x4220
leaq -0xa18(%rbp), %rdi
callq 0x40e0
leaq -0x140(%rbp), %rdi
callq 0x92c6
leaq -0x280(%rbp), %rdi
callq 0xc9a2
leaq -0x1f8(%rbp), %rdi
callq 0x80d4
addq $0x20, %r15
cmpq -0x170(%rbp), %r15
jne 0xa714
leaq -0x178(%rbp), %rdi
callq 0x5a9a
leaq 0x6c12(%rip), %r14      # 0x11933
leaq -0x1710(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4340
movq %rax, %r15
leaq -0xf10(%rbp), %rdi
movq %r14, %rsi
callq 0x4340
movq %rax, %r12
leaq -0x1310(%rbp), %rdi
movq %r14, %rsi
callq 0x4340
movq %rax, -0x70(%rbp)
movq %r15, -0x78(%rbp)
testq %r15, %r15
je 0xb6d2
testq %r12, %r12
je 0xb6ec
cmpq $0x0, -0x70(%rbp)
je 0xb70d
leaq 0x6bc6(%rip), %rbx      # 0x11949
movq -0x78(%rbp), %rdi
movq %rbx, %rsi
movl $0x25, %edx
movq %r13, %rcx
xorl %eax, %eax
callq 0x43f0
movq %r12, %rdi
movq %rbx, %rsi
movl $0x25, %edx
movq %r13, %rcx
xorl %eax, %eax
callq 0x43f0
movq 0xd5b3(%rip), %rcx      # 0x18368
subq 0xd5a4(%rip), %rcx      # 0x18360
sarq $0x5, %rcx
movq %r12, %rdi
movq %rbx, %rsi
movl $0x25, %edx
xorl %eax, %eax
callq 0x43f0
leaq 0x6b78(%rip), %rsi      # 0x11951
movq %r12, -0x30(%rbp)
movq %r12, %rdi
movl $0x25, %edx
xorl %eax, %eax
callq 0x43f0
movq 0xd56d(%rip), %r14      # 0x18360
cmpq 0xd56e(%rip), %r14      # 0x18368
je 0xaea8
leaq 0x6b4f(%rip), %rbx      # 0x11956
leaq 0x6b49(%rip), %r15      # 0x11957
leaq -0xb10(%rbp), %r12
leaq -0xb00(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x643c
movq 0x8(%r14), %rdx
movb $0x1, %r13b
cmpq -0xb08(%rbp), %rdx
jne 0xae60
testq %rdx, %rdx
je 0xae5d
movq -0xb10(%rbp), %rsi
movq (%r14), %rdi
callq 0x42c0
testl %eax, %eax
setne %r13b
jmp 0xae60
xorl %r13d, %r13d
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xae78
callq 0x4280
testb %r13b, %r13b
je 0xae97
movl $0x2, %esi
movl $0x1, %edx
leaq 0x6aca(%rip), %rdi      # 0x11958
movq -0x30(%rbp), %rcx
callq 0x4580
addq $0x20, %r14
cmpq 0xd4c6(%rip), %r14      # 0x18368
jne 0xae15
movl $0xa, %edi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
callq 0x4390
leaq 0x6a9b(%rip), %rsi      # 0x1195b
movq %rbx, %rdi
movl $0x25, %edx
xorl %eax, %eax
callq 0x43f0
movq 0xd48a(%rip), %r14      # 0x18360
cmpq 0xd48b(%rip), %r14      # 0x18368
je 0xaf86
leaq 0x6a6c(%rip), %rbx      # 0x11956
leaq 0x6a66(%rip), %r15      # 0x11957
leaq -0xb10(%rbp), %r12
leaq -0xb00(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq %r12, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x643c
movq 0x8(%r14), %rdx
movb $0x1, %r13b
cmpq -0xb08(%rbp), %rdx
jne 0xaf43
testq %rdx, %rdx
je 0xaf40
movq -0xb10(%rbp), %rsi
movq (%r14), %rdi
callq 0x42c0
testl %eax, %eax
setne %r13b
jmp 0xaf43
xorl %r13d, %r13d
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xaf5b
callq 0x4280
testb %r13b, %r13b
je 0xaf75
movq (%r14), %rdx
movq -0x30(%rbp), %rdi
leaq 0x69f4(%rip), %rsi      # 0x11962
xorl %eax, %eax
callq 0x43f0
addq $0x20, %r14
cmpq 0xd3e8(%rip), %r14      # 0x18368
jne 0xaef8
movl $0xa, %edi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
callq 0x4390
movq -0x230(%rbp), %r14
leaq -0x240(%rbp), %rax
cmpq %rax, %r14
je 0xb30a
leaq -0xb10(%rbp), %r13
movl $0x0, -0x58(%rbp)
movq 0x40(%r14), %rax
leaq -0xb00(%rbp), %rcx
movq %rcx, -0xb10(%rbp)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
movq %r13, %rdi
callq 0x63a2
movq -0xb10(%rbp), %r15
movq 0x40(%r14), %rax
leaq 0x28(%rax), %rdi
movq 0x30(%rax), %r12
movsd 0x78(%rax), %xmm0
movaps %xmm0, -0x2b0(%rbp)
callq 0xff99
movaps %xmm0, -0x2c0(%rbp)
movq 0x40(%r14), %rdi
addq $0x28, %rdi
callq 0x10033
movsd 0x631f(%rip), %xmm2     # 0x11340
movapd -0x2b0(%rbp), %xmm1
unpcklps %xmm2, %xmm1            # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0x631c(%rip), %xmm3     # 0x11350
subpd %xmm3, %xmm1
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
movq %r12, %xmm1
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
subpd %xmm3, %xmm1
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
divsd %xmm2, %xmm0
movsd 0x62cf(%rip), %xmm2     # 0x11338
mulsd %xmm2, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
movapd -0x2c0(%rbp), %xmm1
mulsd %xmm2, %xmm1
cvttpd2dq %xmm1, %xmm1
divsd %xmm2, %xmm0
cvtdq2pd %xmm1, %xmm1
divsd %xmm2, %xmm1
movq -0x70(%rbp), %rdi
leaq 0x68ca(%rip), %rsi      # 0x11966
movq %r15, %rdx
movq %r12, %rcx
movq %rax, %r8
movb $0x2, %al
callq 0x43f0
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xb0c4
callq 0x4280
movq 0x40(%r14), %rax
movq 0x60(%rax), %r15
cmpq 0x68(%rax), %r15
movq %r14, -0x80(%rbp)
je 0xb2ef
movq %r13, %rdi
movq %rbx, %r12
movq (%r15), %rax
leaq -0xb00(%rbp), %rcx
movq %rcx, -0xb10(%rbp)
movq 0x8(%rax), %rsi
movq 0x10(%rax), %rdx
addq %rsi, %rdx
callq 0x63a2
movq -0xb10(%rbp), %r14
movq (%r15), %rax
leaq -0x1e8(%rbp), %rbx
movq %rbx, -0x1f8(%rbp)
movq 0x58(%rax), %rsi
movq 0x60(%rax), %rdx
addq %rsi, %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x63a2
movl -0x58(%rbp), %edx
incl %edx
movq -0x1f8(%rbp), %r8
movq -0x78(%rbp), %rdi
leaq 0x6837(%rip), %rsi      # 0x1197e
movl %edx, -0x58(%rbp)
movq %r14, %rcx
xorl %eax, %eax
callq 0x43f0
movq -0x1f8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xb165
callq 0x4280
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xb17d
callq 0x4280
movq %r12, %rdi
leaq 0x6801(%rip), %rsi      # 0x11988
movl -0x58(%rbp), %edx
xorl %eax, %eax
callq 0x43f0
movq 0xd1c8(%rip), %r14      # 0x18360
cmpq 0xd1c9(%rip), %r14      # 0x18368
leaq -0x198(%rbp), %r12
je 0xb2c8
leaq -0xb00(%rbp), %rax
movq %rax, -0xb10(%rbp)
movq %r13, %rdi
leaq 0x6792(%rip), %rsi      # 0x11956
leaq 0x678c(%rip), %rdx      # 0x11957
callq 0x643c
movq 0x8(%r14), %rdx
movb $0x1, %bl
cmpq -0xb08(%rbp), %rdx
jne 0xb1fc
testq %rdx, %rdx
je 0xb1fa
movq -0xb10(%rbp), %rsi
movq (%r14), %rdi
callq 0x42c0
testl %eax, %eax
setne %bl
jmp 0xb1fc
xorl %ebx, %ebx
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xb214
callq 0x4280
testb %bl, %bl
je 0xb2b7
movq (%r15), %rbx
leaq -0x188(%rbp), %rax
movq %rax, -0x198(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x63a2
leaq 0xd0ea(%rip), %rdi      # 0x18330
movq %r12, %rsi
callq 0xcf66
leaq 0xd0e3(%rip), %rcx      # 0x18338
cmpq %rcx, %rax
je 0xb27d
movq 0x40(%rax), %rax
movq 0x78(%rbx), %rcx
movsd (%rcx,%rax,8), %xmm0
movsd 0x60c9(%rip), %xmm1     # 0x11338
mulsd %xmm1, %xmm0
cvttpd2dq %xmm0, %xmm0
cvtdq2pd %xmm0, %xmm0
jmp 0xb289
xorpd %xmm0, %xmm0
movsd 0x60af(%rip), %xmm1     # 0x11338
divsd %xmm1, %xmm0
movq -0x30(%rbp), %rdi
leaq 0x66f3(%rip), %rsi      # 0x1198b
movb $0x1, %al
callq 0x43f0
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0xb2b7
callq 0x4280
addq $0x20, %r14
cmpq 0xd0a6(%rip), %r14      # 0x18368
jne 0xb1ac
movl $0xa, %edi
movq -0x30(%rbp), %rbx
movq %rbx, %rsi
callq 0x4390
addq $0x8, %r15
movq -0x80(%rbp), %r14
movq 0x40(%r14), %rax
cmpq 0x68(%rax), %r15
jne 0xb0da
movq %r14, %rdi
callq 0x41d0
movq %rax, %r14
leaq -0x240(%rbp), %rax
cmpq %rax, %r14
jne 0xafbc
movq -0x78(%rbp), %rdi
callq 0x42a0
movq %rbx, %rdi
callq 0x42a0
movq -0x70(%rbp), %rdi
callq 0x42a0
leaq -0xb10(%rbp), %rdi
callq 0xf020
movq -0xb10(%rbp), %rsi
movq -0xb08(%rbp), %rdx
movq 0xccab(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %rbx
leaq 0x663e(%rip), %rsi      # 0x11992
movl $0x19, %edx
movq %rax, %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4140
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xb381
callq 0x4280
leaq -0x1f8(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x9e9f
movq -0x50(%rbp), %rdx
leaq 0x6609(%rip), %rsi      # 0x119ac
leaq -0xb10(%rbp), %rbx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x4070
leaq 0x6578(%rip), %rsi      # 0x11933
movq %rbx, %rdi
callq 0x4340
testq %rax, %rax
je 0xb77c
movq %rax, %rbx
movq -0x1f8(%rbp), %rdx
leaq 0x65db(%rip), %rsi      # 0x119b8
movq %rax, %rdi
xorl %eax, %eax
callq 0x43f0
leaq 0x65d2(%rip), %rsi      # 0x119c0
leaq -0x1b10(%rbp), %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x43f0
leaq 0x65c4(%rip), %rsi      # 0x119ca
leaq -0x1310(%rbp), %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x43f0
leaq 0x65b5(%rip), %rsi      # 0x119d3
leaq -0x1710(%rbp), %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x43f0
leaq 0x65a7(%rip), %rsi      # 0x119dd
leaq -0xf10(%rbp), %rdx
movq %rbx, %rdi
xorl %eax, %eax
callq 0x43f0
movq -0xa0(%rbp), %rdx
leaq 0x6590(%rip), %rsi      # 0x119e5
movq %rbx, %rdi
xorl %eax, %eax
callq 0x43f0
movq %rbx, %rdi
callq 0x42a0
leaq -0x140(%rbp), %rdi
callq 0xf020
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
movq 0xcb68(%rip), %rdi      # 0x17ff0
callq 0x4320
movq %rax, %rbx
leaq 0x655b(%rip), %rsi      # 0x119f2
movl $0x15, %edx
movq %rax, %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4140
leaq -0x130(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb4c1
callq 0x4280
xorl %ebx, %ebx
jmp 0xb7c7
movq (%r12), %rax
movq -0x18(%rax), %rax
movq %r12, %rdi
addq %rax, %rdi
movl 0x20(%r12,%rax), %esi
orl $0x1, %esi
callq 0x44c0
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %r12, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x41c0
jmp 0xa1d4
movq 0xcaaa(%rip), %rdi      # 0x17ff0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq 0xca8f(%rip), %rdi      # 0x17ff0
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
leaq 0x6291(%rip), %rsi      # 0x11809
movl $0x35, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
jmp 0xb64c
movq 0xca21(%rip), %rdi      # 0x17ff0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq 0xca06(%rip), %rdi      # 0x17ff0
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
leaq 0x623e(%rip), %rsi      # 0x1183f
movl $0x48, %edx
movq %rax, %rdi
callq 0x4320
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x41c0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x4290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x41c0
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
leaq -0x40(%rbp), %r14
je 0xb680
callq 0x4280
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0xb698
callq 0x4280
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0xb6a6
callq 0x4280
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xb6be
callq 0x4280
movl %ebx, %eax
addq $0x1ae8, %rsp           # imm = 0x1AE8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xc917(%rip), %rdi      # 0x17ff0
leaq 0x6255(%rip), %rsi      # 0x11935
movl $0x13, %edx
callq 0x4320
jmp 0xb72c
movq 0xc8fd(%rip), %rdi      # 0x17ff0
leaq 0x623b(%rip), %rsi      # 0x11935
movl $0x13, %edx
callq 0x4320
leaq -0xf10(%rbp), %rbx
jmp 0xb72c
movq 0xc8dc(%rip), %rdi      # 0x17ff0
leaq 0x621a(%rip), %rsi      # 0x11935
movl $0x13, %edx
callq 0x4320
leaq -0x1310(%rbp), %rbx
movq %rbx, %rdi
callq 0x4130
movq 0xc8b5(%rip), %rdi      # 0x17ff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x4320
movq 0xc8a3(%rip), %rdi      # 0x17ff0
callq 0x4140
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x4140
leaq -0x310(%rbp), %rdi
callq 0xca7a
leaq -0x248(%rbp), %rdi
callq 0xced2
jmp 0xb664
movq 0xc86d(%rip), %rdi      # 0x17ff0
leaq 0x61ab(%rip), %rsi      # 0x11935
movl $0x13, %edx
callq 0x4320
movq %rbx, %rdi
callq 0x4130
movq 0xc84d(%rip), %rdi      # 0x17ff0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x4320
movq 0xc83b(%rip), %rdi      # 0x17ff0
callq 0x4140
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movq %rax, %rdi
callq 0x4140
leaq -0x1e8(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb75f
callq 0x4280
jmp 0xb75f
jmp 0xb7ea
jmp 0xba2b
jmp 0xba2b
movq %rax, %rbx
jmp 0xb80c
jmp 0xba2b
movq %rax, %rbx
leaq -0x130(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb80c
callq 0x4280
leaq -0x1e8(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0xba1f
jmp 0xba2b
jmp 0xb9b9
jmp 0xba2b
jmp 0xba2b
movq %rax, %rbx
movq -0x2a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xb849
callq 0x4280
jmp 0xb849
movq %rax, %rbx
leaq -0x40(%rbp), %r14
jmp 0xba3e
jmp 0xb9ce
jmp 0xba2b
jmp 0xba2b
jmp 0xba2b
jmp 0xba2b
jmp 0xb9d7
movq %rax, %rbx
leaq -0xb00(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xb9d1
callq 0x4280
jmp 0xb9d1
jmp 0xb9b9
jmp 0xb9b9
movq %rax, %rbx
leaq -0xb10(%rbp), %rdi
callq 0x4410
jmp 0xb9da
jmp 0xb8ec
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
jmp 0xb9ad
jmp 0xb8ec
jmp 0xb8ec
jmp 0xb99c
jmp 0xb8ec
jmp 0xb8ec
jmp 0xb8ec
movq %rax, %rbx
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
jmp 0xb9ad
movq %rax, %rbx
jmp 0xb9fe
movq %rax, %rbx
leaq -0xb10(%rbp), %rdi
callq 0xc440
jmp 0xb96d
jmp 0xb96a
jmp 0xb9ce
movq %rax, %rbx
movq %r15, %rdi
jmp 0xba24
jmp 0xba2b
jmp 0xb9b9
jmp 0xba2b
jmp 0xba2b
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
testq %rdi, %rdi
je 0xb93f
callq 0xc936
movq -0xb8(%rbp), %rdi
testq %rdi, %rdi
je 0xb955
callq 0xc936
jmp 0xb955
movq %rax, %rbx
testq %r12, %r12
je 0xb96d
movq %r12, %rdi
callq 0xc936
jmp 0xb96d
jmp 0xb96a
jmp 0xb987
jmp 0xb9ce
movq %rax, %rbx
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0xb98a
callq 0x4280
jmp 0xb98a
movq %rax, %rbx
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0xb9da
callq 0xc936
jmp 0xb9da
jmp 0xb99c
movq %rax, %rbx
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
cmpq %rax, %rdi
je 0xb9fe
callq 0x4280
jmp 0xb9fe
movq %rax, %rbx
movq -0xb10(%rbp), %rdi
leaq -0xb00(%rbp), %rax
jmp 0xba1f
jmp 0xba2b
movq %rax, %rbx
leaq -0x40(%rbp), %r14
jmp 0xba4a
movq %rax, %rbx
leaq -0x140(%rbp), %rdi
callq 0x92c6
leaq -0x280(%rbp), %rdi
callq 0xc9a2
leaq -0x1f8(%rbp), %rdi
callq 0x80d4
leaq -0x178(%rbp), %rdi
callq 0x5a9a
jmp 0xba2e
jmp 0xba2b
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0xba2e
callq 0x4280
jmp 0xba2e
movq %rax, %rbx
leaq -0x40(%rbp), %r14
leaq -0x310(%rbp), %rdi
callq 0xca7a
leaq -0x248(%rbp), %rdi
callq 0xced2
movq -0xe0(%rbp), %rdi
leaq -0xd0(%rbp), %rax
cmpq %rax, %rdi
je 0xba62
callq 0x4280
movq -0x100(%rbp), %rdi
leaq -0xf0(%rbp), %rax
cmpq %rax, %rdi
je 0xba7a
callq 0x4280
movq -0x50(%rbp), %rdi
cmpq %r14, %rdi
je 0xba88
callq 0x4280
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0xbaa0
callq 0x4280
movq %rbx, %rdi
callq 0x4500