// File: auton1[P]viterbi/viterbi.cpp
// Function: main
int main(int argc, char *argv[])
{
	time_t start,end;
	time(&start);

	// The following turns off sync between C and C++ streams.
	// Apparently it's faster to turn sync off, and as I don't use C streams, it's okay to turn off.
	ios_base::sync_with_stdio(false);

	parameters params(argc, argv);
	params.print_help();
	params.read_parameters();
	params.max_alleles = 2;	// Only use biallelic sites

	LOG.open(params.stream_out, params.stream_err, params.output_prefix);
	LOG.printLOG("\nViterbi - " + VCFTOOLS_VERSION + "\n");
	LOG.printLOG("(C) Adam Auton 2014\n\n");

	params.print_params();

	vector<vector<bool> > input_haplotypes;
	vector<unsigned int> positions;
	vector<string> alleles;
	vector<string> haplotype_names;
	
	// Read input haplotypes from VCF
	for (unsigned int ui=0; ui<params.vcf_filenames.size(); ui++)
	{
		LOG.printLOG("Reading " + params.vcf_filenames[ui] + "\n");
		variant_file *vf;
		if (params.vcf_format[ui])
			vf = new vcf_file(params, params.vcf_filenames[ui], ui);
		else
			vf = new bcf_file(params, params.vcf_filenames[ui], ui);

		vf->apply_filters(params);
		LOG.printLOG("After filtering, kept " + output_log::int2str(vf->N_kept_individuals()) + " out of " + output_log::int2str(vf->meta_data.N_indv) + " Individuals\n");

		if (ui==0)
		{
			vf->read_file(params, input_haplotypes, positions, haplotype_names, alleles);
			LOG.printLOG("After filtering, kept " + header::int2str(positions.size()) + " out of a possible " + header::int2str(vf->N_total_sites()) + " Sites\n");
		}
		else
		{
			int passed_sites = vf->add_file(params, input_haplotypes, positions, haplotype_names, alleles);
			LOG.printLOG("After filtering, kept " + header::int2str(passed_sites) + " out of a possible " + header::int2str(vf->N_total_sites()) + " Sites\n");
		}

		if (vf->N_total_sites() <= 0)
			LOG.warning("File does not contain any sites");
		else if (vf->N_kept_sites() <= 0)
			LOG.warning("No data left for analysis!");
		delete vf;
	}
	
	vector<vector<bool> > new_haplotypes;
	vector<unsigned int> new_positions;
	new_haplotypes.resize(haplotype_names.size());
	
	for (unsigned int ui=0; ui<positions.size(); ui++)
	{
		int allele_count = 0;
		for (unsigned int uj=0; uj<haplotype_names.size(); uj++)
			if (input_haplotypes[uj][ui])
				allele_count++;

		if (allele_count > 1 && allele_count < (haplotype_names.size()-1))
		{
			new_positions.push_back(positions[ui]);

			for (unsigned int uj=0; uj<haplotype_names.size(); uj++)
				new_haplotypes[uj].push_back(input_haplotypes[uj][ui]);
		}
		else
			LOG.one_off_warning("\tWarning: Skipping singletons.");
	}
	
	positions = new_positions;
	input_haplotypes = new_haplotypes;

	if (params.vcf_filenames.size() > 1)
		LOG.printLOG("Kept "+ header::int2str(positions.size()) + " sites that are contained in all files\n");
	if (positions.size() == 0)
		LOG.error("No data left for analysis!");
	
	string CHROM = *(params.chrs_to_keep.begin());

	vector<int> alt_allele_counts;
	alt_allele_counts.resize(input_haplotypes[0].size(), 0);
	for (unsigned int uj=0; uj<input_haplotypes[0].size(); uj++)
	{
		for (unsigned int uk=0; uk<input_haplotypes.size(); uk++)
			alt_allele_counts[uj] += input_haplotypes[uk][uj];
//		cout << positions[uj] << " " << alt_allele_counts[uj] << endl;
	}

	vector<double> map;
	if (params.map_filename == "")
	{
		set_genetic_map_at_positions(positions, params.recomb_rate, map);
	}
	else
	{
		read_genetic_map_at_positions(params.map_filename, positions, map);
	}

	if (params.run_viterbi == true)
	{
		cout << "#HAP\tCOPY\tCHR\tSTART\tEND\tN_SNPS\tMIN_ALLELE_COUNT\tMIN_ALLELE_POS\tEXACT_HAP_COUNT\tHAP_COUNT_1_PRCT_MISMATCH" << endl;
		for (int i=0; i<input_haplotypes.size(); i++)
		{
			string indv = haplotype_names[i].substr(0, haplotype_names[i].size()-2);
			if ((params.viterbi_indv.size() > 0) && (params.viterbi_indv.find(indv) == params.viterbi_indv.end()))
			{
				continue;
			}

			LOG.printLOG("Running Viterbi on " + haplotype_names[i] + "\n");
			vector<int> viterbi_path;
			viterbi(input_haplotypes, map, i, params, viterbi_path);

			// Process the viterbi path
			int N_exact_match;
			int N_one_prct_mismatch;
			int min_pos = positions[0];
			int max_pos = positions[0];
			int start_idx = 0;
			int current_haplotype = viterbi_path[0];
			int N_SNPs = 1;
			int min_freq = numeric_limits<int>::max();
			int min_freq_idx = 0;
			if (input_haplotypes[i][0] == 1)
				min_freq = alt_allele_counts[0];
			else
				min_freq = (int)input_haplotypes.size() - alt_allele_counts[0];

			for (int j=1; j<viterbi_path.size(); j++)
			{
				if (viterbi_path[j] != current_haplotype)
				{	// Output haplotype

					// Get haplotype frequency
					get_haplotype_count(input_haplotypes, i, start_idx, j-1, N_exact_match, N_one_prct_mismatch);

					cout << haplotype_names[i] << "\t" << haplotype_names[current_haplotype];
					cout << "\t" << CHROM;
					cout << "\t" << min_pos << "\t" << max_pos << "\t" << N_SNPs;
					cout << "\t" << min_freq << "\t" << positions[min_freq_idx];
					cout << "\t" << N_exact_match << "\t" << N_one_prct_mismatch << endl;
					// Reset
					min_pos = positions[j];	// Haplotype is left shifted
					max_pos = positions[j];
					start_idx = j;
					current_haplotype = viterbi_path[j];
					N_SNPs = 1;
					min_freq = numeric_limits<int>::max();
					min_freq_idx = j;
					if (input_haplotypes[i][j] == 1)
						min_freq = alt_allele_counts[j];
					else
						min_freq = (int)input_haplotypes.size() - alt_allele_counts[j];
				}
				else
				{
					max_pos = positions[j];
					N_SNPs++;
					if (input_haplotypes[i][j] == 1)
					{
						if (alt_allele_counts[j] < min_freq)
						{
							min_freq = alt_allele_counts[j];
							min_freq_idx = j;
						}
					}
					else
					{
						if (((int)input_haplotypes.size() - alt_allele_counts[j]) < min_freq)
						{
							min_freq = (int)input_haplotypes.size() - alt_allele_counts[j];
							min_freq_idx = j;
						}
					}

				}
			}
			// Output last haplotype
			get_haplotype_count(input_haplotypes, i, start_idx, viterbi_path.size()-1, N_exact_match, N_one_prct_mismatch);
			cout << haplotype_names[i] << "\t" << haplotype_names[viterbi_path[viterbi_path.size()-1]];
			cout << "\t" << CHROM;
			cout << "\t" << min_pos << "\t" << max_pos << "\t" << N_SNPs;
			cout << "\t" << min_freq << "\t" << positions[min_freq_idx];
			cout << "\t" << N_exact_match << "\t" << N_one_prct_mismatch << endl;
		}
	}
	else
	{
		cout << "#HAP\tCOPY\tCHR\tPOS\tPROB" << endl;
		for (int i=0; i<input_haplotypes.size(); i++)
		{
			string indv = haplotype_names[i].substr(0, haplotype_names[i].size()-2);
			if ((params.viterbi_indv.size() > 0) && (params.viterbi_indv.find(indv) == params.viterbi_indv.end()))
			{
				continue;
			}

			LOG.printLOG("Running Forward-backward on " + haplotype_names[i] + "\n");
			vector<int> post_path;
			vector<double> post_prob;
			fwdbck(input_haplotypes, map, i, params, post_path, post_prob);

			for (int j=0; j<positions.size(); j++)
			{
				cout << haplotype_names[i] << "\t" << haplotype_names[post_path[j]];
				cout << "\t" << CHROM << "\t" << positions[j] << "\t" << post_prob[j];
				cout << endl;
			}
		}
	}

	time(&end);
	double running_time = difftime(end,start);
	LOG.printLOG("Run Time = " + output_log::dbl2str_fixed(running_time, 2) + " seconds\n");
	LOG.close();
	return 0;
}

// Assembly:
subq $0x1008, %rsp           # imm = 0x1008
movl $0x0, 0x1004(%rsp)
movl %edi, 0x1000(%rsp)
movq %rsi, 0xff8(%rsp)
leaq 0xff0(%rsp), %rdi
callq 0x64d0
xorl %edi, %edi
callq 0x61b0
movl 0x1000(%rsp), %esi
movq 0xff8(%rsp), %rdx
leaq 0xa98(%rsp), %rdi
movq %rdi, 0x320(%rsp)
callq 0x67120
movq 0x320(%rsp), %rdi
callq 0x70680
jmp 0xbda8
leaq 0xa98(%rsp), %rdi
callq 0x67a90
jmp 0xbdb7
movl $0x2, 0xca0(%rsp)
leaq 0xd28(%rsp), %rcx
movzbl 0xecc(%rsp), %edx
movzbl 0xecd(%rsp), %esi
andl $0x1, %esi
andl $0x1, %edx
leaq 0x87819(%rip), %rdi     # 0x93600
callq 0x71180
jmp 0xbdee
leaq 0x682d6(%rip), %rsi     # 0x740cb
leaq 0x877e4(%rip), %rdx     # 0x935e0
leaq 0xa48(%rsp), %rdi
callq 0xe8d0
jmp 0xbe0b
leaq 0x682d9(%rip), %rdx     # 0x740eb
leaq 0xa68(%rsp), %rdi
leaq 0xa48(%rsp), %rsi
callq 0xf4a0
jmp 0xbe29
leaq 0x877d0(%rip), %rdi     # 0x93600
leaq 0xa68(%rsp), %rsi
callq 0x71280
jmp 0xbe3f
leaq 0xa68(%rsp), %rdi
callq 0x6b50
leaq 0xa48(%rsp), %rdi
callq 0x6b50
leaq 0xa27(%rsp), %rdi
movq %rdi, 0x318(%rsp)
callq 0x69f0
movq 0x318(%rsp), %rdx
leaq 0x6825a(%rip), %rsi     # 0x740d7
leaq 0xa28(%rsp), %rdi
callq 0x67c0
jmp 0xbe8c
leaq 0x8776d(%rip), %rdi     # 0x93600
leaq 0xa28(%rsp), %rsi
callq 0x71280
jmp 0xbea2
leaq 0xa28(%rsp), %rdi
callq 0x6b50
leaq 0xa27(%rsp), %rdi
callq 0x65f0
leaq 0xa98(%rsp), %rdi
callq 0x6b9d0
jmp 0xbecb
leaq 0xa08(%rsp), %rdi
callq 0x10240
leaq 0x9f0(%rsp), %rdi
callq 0x10250
leaq 0x9d8(%rsp), %rdi
callq 0x10260
leaq 0x9c0(%rsp), %rdi
callq 0x10260
movl $0x0, 0x9bc(%rsp)
movl 0x9bc(%rsp), %eax
movq %rax, 0x310(%rsp)
leaq 0xa98(%rsp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x10270
movq %rax, %rcx
movq 0x310(%rsp), %rax
cmpq %rcx, %rax
jae 0xcade
leaq 0xef0(%rsp), %rdi
movl 0x9bc(%rsp), %eax
movl %eax, %esi
callq 0x10290
movq %rax, %rdx
leaq 0x6818c(%rip), %rsi     # 0x740ed
leaq 0x978(%rsp), %rdi
callq 0xe8d0
jmp 0xbf70
leaq 0x68174(%rip), %rdx     # 0x740eb
leaq 0x998(%rsp), %rdi
leaq 0x978(%rsp), %rsi
callq 0xf4a0
jmp 0xbf8e
leaq 0x8766b(%rip), %rdi     # 0x93600
leaq 0x998(%rsp), %rsi
callq 0x71280
jmp 0xbfa4
leaq 0x998(%rsp), %rdi
callq 0x6b50
leaq 0x978(%rsp), %rdi
callq 0x6b50
leaq 0xf08(%rsp), %rdi
movl 0x9bc(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x300(%rsp)
movq %rax, 0x308(%rsp)
jmp 0xbfe6
movq 0x300(%rsp), %rax
movq 0x308(%rsp), %rcx
movq %rcx, 0x960(%rsp)
movq %rax, 0x968(%rsp)
leaq 0x960(%rsp), %rdi
callq 0x10310
testb $0x1, %al
jne 0xc01c
jmp 0xc1af
movl $0x470, %edi            # imm = 0x470
callq 0x6560
movq %rax, 0x2f8(%rsp)
jmp 0xc030
leaq 0xef0(%rsp), %rdi
movl 0x9bc(%rsp), %eax
movl %eax, %esi
callq 0x10290
movq 0x2f8(%rsp), %rdi
movq %rax, %rdx
movl 0x9bc(%rsp), %ecx
leaq 0xa98(%rsp), %rsi
callq 0x25410
jmp 0xc067
movq 0x2f8(%rsp), %rax
movq %rax, 0x970(%rsp)
jmp 0xc232
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe768
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc0cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0xa68(%rsp), %rdi
callq 0x6b50
leaq 0xa48(%rsp), %rdi
callq 0x6b50
jmp 0xe768
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc115
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0xa28(%rsp), %rdi
callq 0x6b50
leaq 0xa27(%rsp), %rdi
callq 0x65f0
jmp 0xe768
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc177
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x998(%rsp), %rdi
callq 0x6b50
leaq 0x978(%rsp), %rdi
callq 0x6b50
jmp 0xe734
movq 0x2f8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
callq 0x64e0
jmp 0xe734
movl $0x468, %edi            # imm = 0x468
callq 0x6560
movq %rax, 0x2f0(%rsp)
jmp 0xc1c3
leaq 0xef0(%rsp), %rdi
movl 0x9bc(%rsp), %eax
movl %eax, %esi
callq 0x10290
movq 0x2f0(%rsp), %rdi
movq %rax, %rdx
movl 0x9bc(%rsp), %ecx
leaq 0xa98(%rsp), %rsi
callq 0x1f450
jmp 0xc1fa
movq 0x2f0(%rsp), %rax
movq %rax, 0x970(%rsp)
jmp 0xc232
movq 0x2f0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
callq 0x64e0
jmp 0xe734
movq 0x970(%rsp), %rdi
leaq 0xa98(%rsp), %rsi
callq 0x658a0
jmp 0xc249
movq 0x970(%rsp), %rdi
callq 0x27690
movl %eax, 0x2ec(%rsp)
jmp 0xc25f
movl 0x2ec(%rsp), %esi
leaq 0x8c0(%rsp), %rdi
callq 0x71730
jmp 0xc275
leaq 0x67e7a(%rip), %rsi     # 0x740f6
leaq 0x8e0(%rsp), %rdi
leaq 0x8c0(%rsp), %rdx
callq 0xf4f0
jmp 0xc293
leaq 0x67e73(%rip), %rdx     # 0x7410d
leaq 0x900(%rsp), %rdi
leaq 0x8e0(%rsp), %rsi
callq 0xf4a0
jmp 0xc2b1
movq 0x970(%rsp), %rax
movl 0x2a8(%rax), %esi
leaq 0x8a0(%rsp), %rdi
callq 0x71730
jmp 0xc2ce
leaq 0x920(%rsp), %rdi
leaq 0x900(%rsp), %rsi
leaq 0x8a0(%rsp), %rdx
callq 0xffb0
jmp 0xc2ed
leaq 0x67e22(%rip), %rdx     # 0x74116
leaq 0x940(%rsp), %rdi
leaq 0x920(%rsp), %rsi
callq 0xf4a0
jmp 0xc30b
leaq 0x872ee(%rip), %rdi     # 0x93600
leaq 0x940(%rsp), %rsi
callq 0x71280
jmp 0xc321
leaq 0x940(%rsp), %rdi
callq 0x6b50
leaq 0x920(%rsp), %rdi
callq 0x6b50
leaq 0x8a0(%rsp), %rdi
callq 0x6b50
leaq 0x900(%rsp), %rdi
callq 0x6b50
leaq 0x8e0(%rsp), %rdi
callq 0x6b50
leaq 0x8c0(%rsp), %rdi
callq 0x6b50
cmpl $0x0, 0x9bc(%rsp)
jne 0xc6a0
movq 0x970(%rsp), %rdi
leaq 0xa98(%rsp), %rsi
leaq 0xa08(%rsp), %rdx
leaq 0x9f0(%rsp), %rcx
leaq 0x9c0(%rsp), %r8
leaq 0x9d8(%rsp), %r9
callq 0x28090
jmp 0xc3b4
leaq 0x9f0(%rsp), %rdi
callq 0xe850
movl %eax, %esi
leaq 0x800(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0xc3d7
leaq 0x67d18(%rip), %rsi     # 0x740f6
leaq 0x820(%rsp), %rdi
leaq 0x800(%rsp), %rdx
callq 0xf4f0
jmp 0xc3f5
leaq 0x67d28(%rip), %rdx     # 0x74124
leaq 0x840(%rsp), %rdi
leaq 0x820(%rsp), %rsi
callq 0xf4a0
jmp 0xc413
movq 0x970(%rsp), %rdi
callq 0x27740
movl %eax, 0x2e8(%rsp)
jmp 0xc429
movl 0x2e8(%rsp), %esi
leaq 0x7e0(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0xc444
leaq 0x860(%rsp), %rdi
leaq 0x840(%rsp), %rsi
leaq 0x7e0(%rsp), %rdx
callq 0xffb0
jmp 0xc463
leaq 0x67cce(%rip), %rdx     # 0x74138
leaq 0x880(%rsp), %rdi
leaq 0x860(%rsp), %rsi
callq 0xf4a0
jmp 0xc481
leaq 0x87178(%rip), %rdi     # 0x93600
leaq 0x880(%rsp), %rsi
callq 0x71280
jmp 0xc497
leaq 0x880(%rsp), %rdi
callq 0x6b50
leaq 0x860(%rsp), %rdi
callq 0x6b50
leaq 0x7e0(%rsp), %rdi
callq 0x6b50
leaq 0x840(%rsp), %rdi
callq 0x6b50
leaq 0x820(%rsp), %rdi
callq 0x6b50
leaq 0x800(%rsp), %rdi
callq 0x6b50
jmp 0xc8f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc5b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc5a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc599
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc58c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc57f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x940(%rsp), %rdi
callq 0x6b50
leaq 0x920(%rsp), %rdi
callq 0x6b50
leaq 0x8a0(%rsp), %rdi
callq 0x6b50
leaq 0x900(%rsp), %rdi
callq 0x6b50
leaq 0x8e0(%rsp), %rdi
callq 0x6b50
leaq 0x8c0(%rsp), %rdi
callq 0x6b50
jmp 0xe734
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc68e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc681
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc667
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc65a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x880(%rsp), %rdi
callq 0x6b50
leaq 0x860(%rsp), %rdi
callq 0x6b50
leaq 0x7e0(%rsp), %rdi
callq 0x6b50
leaq 0x840(%rsp), %rdi
callq 0x6b50
leaq 0x820(%rsp), %rdi
callq 0x6b50
leaq 0x800(%rsp), %rdi
callq 0x6b50
jmp 0xe734
movq 0x970(%rsp), %rdi
leaq 0xa98(%rsp), %rsi
leaq 0xa08(%rsp), %rdx
leaq 0x9f0(%rsp), %rcx
leaq 0x9c0(%rsp), %r8
leaq 0x9d8(%rsp), %r9
callq 0x28dd0
movl %eax, 0x2e4(%rsp)
jmp 0xc6de
movl 0x2e4(%rsp), %eax
movl %eax, 0x7dc(%rsp)
movl 0x7dc(%rsp), %esi
leaq 0x738(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0xc707
leaq 0x679e8(%rip), %rsi     # 0x740f6
leaq 0x758(%rsp), %rdi
leaq 0x738(%rsp), %rdx
callq 0xf4f0
jmp 0xc725
leaq 0x679f8(%rip), %rdx     # 0x74124
leaq 0x778(%rsp), %rdi
leaq 0x758(%rsp), %rsi
callq 0xf4a0
jmp 0xc743
movq 0x970(%rsp), %rdi
callq 0x27740
movl %eax, 0x2e0(%rsp)
jmp 0xc759
movl 0x2e0(%rsp), %esi
leaq 0x718(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0xc774
leaq 0x798(%rsp), %rdi
leaq 0x778(%rsp), %rsi
leaq 0x718(%rsp), %rdx
callq 0xffb0
jmp 0xc793
leaq 0x6799e(%rip), %rdx     # 0x74138
leaq 0x7b8(%rsp), %rdi
leaq 0x798(%rsp), %rsi
callq 0xf4a0
jmp 0xc7b1
leaq 0x86e48(%rip), %rdi     # 0x93600
leaq 0x7b8(%rsp), %rsi
callq 0x71280
jmp 0xc7c7
leaq 0x7b8(%rsp), %rdi
callq 0x6b50
leaq 0x798(%rsp), %rdi
callq 0x6b50
leaq 0x718(%rsp), %rdi
callq 0x6b50
leaq 0x778(%rsp), %rdi
callq 0x6b50
leaq 0x758(%rsp), %rdi
callq 0x6b50
leaq 0x738(%rsp), %rdi
callq 0x6b50
jmp 0xc8f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc8e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc8d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc8c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc8bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc8af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x7b8(%rsp), %rdi
callq 0x6b50
leaq 0x798(%rsp), %rdi
callq 0x6b50
leaq 0x718(%rsp), %rdi
callq 0x6b50
leaq 0x778(%rsp), %rdi
callq 0x6b50
leaq 0x758(%rsp), %rdi
callq 0x6b50
leaq 0x738(%rsp), %rdi
callq 0x6b50
jmp 0xe734
movq 0x970(%rsp), %rdi
callq 0x27740
movl %eax, 0x2dc(%rsp)
jmp 0xc90b
movl 0x2dc(%rsp), %eax
cmpl $0x0, %eax
jg 0xc9cc
leaq 0x6f7(%rsp), %rdi
movq %rdi, 0x2d0(%rsp)
callq 0x69f0
movq 0x2d0(%rsp), %rdx
leaq 0x67801(%rip), %rsi     # 0x74140
leaq 0x6f8(%rsp), %rdi
callq 0x67c0
jmp 0xc94e
leaq 0x86cab(%rip), %rdi     # 0x93600
leaq 0x6f8(%rsp), %rsi
callq 0x715a0
jmp 0xc964
leaq 0x6f8(%rsp), %rdi
callq 0x6b50
leaq 0x6f7(%rsp), %rdi
callq 0x65f0
jmp 0xcaa2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xc9ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x6f8(%rsp), %rdi
callq 0x6b50
leaq 0x6f7(%rsp), %rdi
callq 0x65f0
jmp 0xe734
movq 0x970(%rsp), %rdi
callq 0x27720
movl %eax, 0x2cc(%rsp)
jmp 0xc9e2
movl 0x2cc(%rsp), %eax
cmpl $0x0, %eax
jg 0xcaa0
leaq 0x6cf(%rsp), %rdi
movq %rdi, 0x2c0(%rsp)
callq 0x69f0
movq 0x2c0(%rsp), %rdx
leaq 0x6774a(%rip), %rsi     # 0x74160
leaq 0x6d0(%rsp), %rdi
callq 0x67c0
jmp 0xca25
leaq 0x86bd4(%rip), %rdi     # 0x93600
leaq 0x6d0(%rsp), %rsi
callq 0x715a0
jmp 0xca3b
leaq 0x6d0(%rsp), %rdi
callq 0x6b50
leaq 0x6cf(%rsp), %rdi
callq 0x65f0
jmp 0xcaa0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xca8e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x6d0(%rsp), %rdi
callq 0x6b50
leaq 0x6cf(%rsp), %rdi
callq 0x65f0
jmp 0xe734
jmp 0xcaa2
movq 0x970(%rsp), %rax
movq %rax, 0x2b8(%rsp)
cmpq $0x0, %rax
je 0xcac6
movq 0x2b8(%rsp), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
jmp 0xcac8
movl 0x9bc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x9bc(%rsp)
jmp 0xbf0a
leaq 0x6b0(%rsp), %rdi
movq %rdi, 0x2b0(%rsp)
callq 0x10240
leaq 0x698(%rsp), %rdi
callq 0x10250
leaq 0x9c0(%rsp), %rdi
callq 0x10270
movq 0x2b0(%rsp), %rdi
movq %rax, %rsi
callq 0x10340
jmp 0xcb1f
movl $0x0, 0x694(%rsp)
movl 0x694(%rsp), %eax
movq %rax, 0x2a8(%rsp)
leaq 0x9f0(%rsp), %rdi
callq 0xe850
movq %rax, %rcx
movq 0x2a8(%rsp), %rax
cmpq %rcx, %rax
jae 0xce6f
movl $0x0, 0x690(%rsp)
movl $0x0, 0x68c(%rsp)
movl 0x68c(%rsp), %eax
movq %rax, 0x2a0(%rsp)
leaq 0x9c0(%rsp), %rdi
callq 0x10270
movq %rax, %rcx
movq 0x2a0(%rsp), %rax
cmpq %rcx, %rax
jae 0xcc50
movl 0x68c(%rsp), %eax
movl %eax, %esi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
movl 0x694(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x290(%rsp)
movq %rax, 0x298(%rsp)
jmp 0xcbd9
movq 0x290(%rsp), %rax
movq 0x298(%rsp), %rcx
movq %rcx, 0x678(%rsp)
movq %rax, 0x680(%rsp)
leaq 0x678(%rsp), %rdi
callq 0x10310
testb $0x1, %al
jne 0xcc0c
jmp 0xcc38
movl 0x690(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x690(%rsp)
jmp 0xcc38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe71a
jmp 0xcc3a
movl 0x68c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x68c(%rsp)
jmp 0xcb70
cmpl $0x1, 0x690(%rsp)
jle 0xcda9
movslq 0x690(%rsp), %rax
movq %rax, 0x288(%rsp)
leaq 0x9c0(%rsp), %rdi
callq 0x10270
movq %rax, %rcx
movq 0x288(%rsp), %rax
subq $0x1, %rcx
cmpq %rcx, %rax
jae 0xcda9
movl 0x694(%rsp), %eax
movl %eax, %esi
leaq 0x9f0(%rsp), %rdi
callq 0xe8b0
movq %rax, %rsi
leaq 0x698(%rsp), %rdi
callq 0x10400
jmp 0xccbb
movl $0x0, 0x674(%rsp)
movl 0x674(%rsp), %eax
movq %rax, 0x280(%rsp)
leaq 0x9c0(%rsp), %rdi
callq 0x10270
movq %rax, %rcx
movq 0x280(%rsp), %rax
cmpq %rcx, %rax
jae 0xcda4
movl 0x674(%rsp), %eax
movl %eax, %esi
leaq 0x6b0(%rsp), %rdi
callq 0x103e0
movq %rax, 0x268(%rsp)
movl 0x674(%rsp), %eax
movl %eax, %esi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
movl 0x694(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x270(%rsp)
movq %rax, 0x278(%rsp)
jmp 0xcd4d
movq 0x270(%rsp), %rax
movq 0x278(%rsp), %rcx
movq %rcx, 0x660(%rsp)
movq %rax, 0x668(%rsp)
leaq 0x660(%rsp), %rdi
callq 0x10310
movq 0x268(%rsp), %rdi
movzbl %al, %esi
callq 0x10470
jmp 0xcd8c
jmp 0xcd8e
movl 0x674(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x674(%rsp)
jmp 0xccc6
jmp 0xce57
leaq 0x63f(%rsp), %rdi
movq %rdi, 0x260(%rsp)
callq 0x69f0
movq 0x260(%rsp), %rdx
leaq 0x673ae(%rip), %rsi     # 0x7417b
leaq 0x640(%rsp), %rdi
callq 0x67c0
jmp 0xcddc
leaq 0x8681d(%rip), %rdi     # 0x93600
leaq 0x640(%rsp), %rsi
callq 0x71610
jmp 0xcdf2
leaq 0x640(%rsp), %rdi
callq 0x6b50
leaq 0x63f(%rsp), %rdi
callq 0x65f0
jmp 0xce57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xce45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x640(%rsp), %rdi
callq 0x6b50
leaq 0x63f(%rsp), %rdi
callq 0x65f0
jmp 0xe71a
jmp 0xce59
movl 0x694(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x694(%rsp)
jmp 0xcb2a
leaq 0x9f0(%rsp), %rdi
leaq 0x698(%rsp), %rsi
callq 0x10550
jmp 0xce86
leaq 0xa08(%rsp), %rdi
leaq 0x6b0(%rsp), %rsi
callq 0x10810
jmp 0xce9d
leaq 0xa98(%rsp), %rdi
addq $0x458, %rdi            # imm = 0x458
callq 0x10270
cmpq $0x1, %rax
jbe 0xcfc5
leaq 0x9f0(%rsp), %rdi
callq 0xe850
movl %eax, %esi
leaq 0x5d8(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x30500
jmp 0xcede
leaq 0x672b5(%rip), %rsi     # 0x7419a
leaq 0x5f8(%rsp), %rdi
leaq 0x5d8(%rsp), %rdx
callq 0xf4f0
jmp 0xcefc
leaq 0x6729d(%rip), %rdx     # 0x741a0
leaq 0x618(%rsp), %rdi
leaq 0x5f8(%rsp), %rsi
callq 0xf4a0
jmp 0xcf1a
leaq 0x866df(%rip), %rdi     # 0x93600
leaq 0x618(%rsp), %rsi
callq 0x71280
jmp 0xcf30
leaq 0x618(%rsp), %rdi
callq 0x6b50
leaq 0x5f8(%rsp), %rdi
callq 0x6b50
leaq 0x5d8(%rsp), %rdi
callq 0x6b50
jmp 0xcfc5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xcfb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xcfa6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x618(%rsp), %rdi
callq 0x6b50
leaq 0x5f8(%rsp), %rdi
callq 0x6b50
leaq 0x5d8(%rsp), %rdi
callq 0x6b50
jmp 0xe71a
leaq 0x9f0(%rsp), %rdi
callq 0xe850
cmpq $0x0, %rax
jne 0xd08f
leaq 0x5b7(%rsp), %rdi
movq %rdi, 0x258(%rsp)
callq 0x69f0
movq 0x258(%rsp), %rdx
leaq 0x67160(%rip), %rsi     # 0x74160
leaq 0x5b8(%rsp), %rdi
callq 0x67c0
jmp 0xd00f
leaq 0x865ea(%rip), %rdi     # 0x93600
leaq 0x5b8(%rsp), %rsi
movl $0x1, %edx
callq 0x712f0
jmp 0xd02a
leaq 0x5b8(%rsp), %rdi
callq 0x6b50
leaq 0x5b7(%rsp), %rdi
callq 0x65f0
jmp 0xd08f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xd07d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x5b8(%rsp), %rdi
callq 0x6b50
leaq 0x5b7(%rsp), %rdi
callq 0x65f0
jmp 0xe71a
leaq 0xaf0(%rsp), %rdi
callq 0x10ad0
movq %rax, 0x588(%rsp)
leaq 0x588(%rsp), %rdi
callq 0x10b00
movq %rax, %rsi
leaq 0x590(%rsp), %rdi
callq 0x61c0
jmp 0xd0c3
leaq 0x570(%rsp), %rdi
movq %rdi, 0x250(%rsp)
callq 0xea00
xorl %eax, %eax
movl %eax, %esi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
callq 0xf1d0
movq 0x250(%rsp), %rdi
movq %rax, %rsi
movl $0x0, 0x56c(%rsp)
leaq 0x56c(%rsp), %rdx
callq 0xf540
jmp 0xd116
movl $0x0, 0x568(%rsp)
movl 0x568(%rsp), %eax
movq %rax, 0x248(%rsp)
leaq 0xa08(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x103e0
movq %rax, %rdi
callq 0xf1d0
movq %rax, %rcx
movq 0x248(%rsp), %rax
cmpq %rcx, %rax
jae 0xd272
movl $0x0, 0x564(%rsp)
movl 0x564(%rsp), %eax
movq %rax, 0x240(%rsp)
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movq %rax, %rcx
movq 0x240(%rsp), %rax
cmpq %rcx, %rax
jae 0xd25a
movl 0x564(%rsp), %eax
movl %eax, %esi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
movl 0x568(%rsp), %eax
movl %eax, %esi
callq 0x102b0
movq %rdx, 0x230(%rsp)
movq %rax, 0x238(%rsp)
jmp 0xd1d1
movq 0x230(%rsp), %rax
movq 0x238(%rsp), %rcx
movq %rcx, 0x550(%rsp)
movq %rax, 0x558(%rsp)
leaq 0x550(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x22c(%rsp)
movl 0x568(%rsp), %eax
movl %eax, %esi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movl 0x22c(%rsp), %ecx
addl (%rax), %ecx
movl %ecx, (%rax)
movl 0x564(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x564(%rsp)
jmp 0xd168
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe700
jmp 0xd25c
movl 0x568(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x568(%rsp)
jmp 0xd121
leaq 0x538(%rsp), %rdi
callq 0xea10
leaq 0xf90(%rsp), %rdi
leaq 0x68a9b(%rip), %rsi     # 0x75d29
callq 0xea20
movb %al, 0x22b(%rsp)
jmp 0xd29c
movb 0x22b(%rsp), %al
testb $0x1, %al
jne 0xd2a9
jmp 0xd2e4
movsd 0xfb0(%rsp), %xmm0
leaq 0x9f0(%rsp), %rdi
leaq 0x538(%rsp), %rsi
callq 0x79e0
jmp 0xd2c9
jmp 0xd305
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe6f3
leaq 0xf90(%rsp), %rdi
leaq 0x9f0(%rsp), %rsi
leaq 0x538(%rsp), %rdx
callq 0x7b10
jmp 0xd303
jmp 0xd305
movb 0xfc4(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xe061
movq 0x85c9f(%rip), %rdi     # 0x92fc0
leaq 0x66ea0(%rip), %rsi     # 0x741c8
callq 0x6540
movq %rax, 0x220(%rsp)
jmp 0xd337
movq 0x220(%rsp), %rdi
movq 0x85c52(%rip), %rsi     # 0x92f98
callq 0x65a0
jmp 0xd34d
movl $0x0, 0x534(%rsp)
movslq 0x534(%rsp), %rax
movq %rax, 0x218(%rsp)
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movq %rax, %rcx
movq 0x218(%rsp), %rax
cmpq %rcx, %rax
jae 0xe05c
movslq 0x534(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
movq %rdi, 0x208(%rsp)
callq 0x10290
movq 0x208(%rsp), %rdi
movq %rax, 0x210(%rsp)
movslq 0x534(%rsp), %rsi
callq 0x10290
movq %rax, %rdi
callq 0x6350
movq 0x210(%rsp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x510(%rsp), %rdi
callq 0x6580
jmp 0xd3ed
leaq 0xa98(%rsp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
callq 0x10b30
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, 0x207(%rsp)
jbe 0xd47a
leaq 0xf58(%rsp), %rdi
leaq 0x510(%rsp), %rsi
callq 0x10b60
movq %rax, 0x1f8(%rsp)
jmp 0xd432
movq 0x1f8(%rsp), %rax
movq %rax, 0x508(%rsp)
leaq 0xa98(%rsp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
callq 0x10ba0
movq %rax, 0x500(%rsp)
leaq 0x508(%rsp), %rdi
leaq 0x500(%rsp), %rsi
callq 0x10b40
movb %al, 0x207(%rsp)
movb 0x207(%rsp), %al
testb $0x1, %al
jne 0xd487
jmp 0xd4b0
movl $0x16, 0x4fc(%rsp)
jmp 0xe016
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe04a
movslq 0x534(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq %rax, %rdx
leaq 0x66d62(%rip), %rsi     # 0x74231
leaq 0x4b8(%rsp), %rdi
callq 0xe8d0
jmp 0xd4de
leaq 0x66c06(%rip), %rdx     # 0x740eb
leaq 0x4d8(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
callq 0xf4a0
jmp 0xd4fc
leaq 0x860fd(%rip), %rdi     # 0x93600
leaq 0x4d8(%rsp), %rsi
callq 0x71280
jmp 0xd512
leaq 0x4d8(%rsp), %rdi
callq 0x6b50
leaq 0x4b8(%rsp), %rdi
callq 0x6b50
leaq 0x4a0(%rsp), %rdi
movq %rdi, 0x1f0(%rsp)
callq 0xea00
movq 0x1f0(%rsp), %r8
movl 0x534(%rsp), %edx
leaq 0xa08(%rsp), %rdi
leaq 0x538(%rsp), %rsi
leaq 0xa98(%rsp), %rcx
callq 0xa7c0
jmp 0xd56f
xorl %eax, %eax
movl %eax, %esi
movq %rsi, 0x1d8(%rsp)
leaq 0x9f0(%rsp), %rdi
movq %rdi, 0x1d0(%rsp)
callq 0xe8b0
movq 0x1d0(%rsp), %rdi
movq 0x1d8(%rsp), %rsi
movl (%rax), %eax
movl %eax, 0x494(%rsp)
callq 0xe8b0
movq 0x1d8(%rsp), %rsi
movl (%rax), %eax
movl %eax, 0x490(%rsp)
movl $0x0, 0x48c(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
movl %eax, 0x488(%rsp)
movl $0x1, 0x484(%rsp)
callq 0x10bd0
movl %eax, 0x480(%rsp)
movl $0x0, 0x47c(%rsp)
movslq 0x534(%rsp), %rsi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq 0x1d8(%rsp), %rsi
movq %rax, %rdi
callq 0x102b0
movq %rdx, 0x1e0(%rsp)
movq %rax, 0x1e8(%rsp)
jmp 0xd639
movq 0x1e0(%rsp), %rax
movq 0x1e8(%rsp), %rcx
movq %rcx, 0x468(%rsp)
movq %rax, 0x470(%rsp)
leaq 0x468(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xd702
leaq 0x570(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xecf0
movl (%rax), %eax
movl %eax, 0x480(%rsp)
jmp 0xd73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xd6ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x4d8(%rsp), %rdi
callq 0x6b50
leaq 0x4b8(%rsp), %rdi
callq 0x6b50
jmp 0xe04a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0xed70
jmp 0xe04a
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movl %eax, 0x1cc(%rsp)
leaq 0x570(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xecf0
movq %rax, %rcx
movl 0x1cc(%rsp), %eax
subl (%rcx), %eax
movl %eax, 0x480(%rsp)
movl $0x1, 0x464(%rsp)
movslq 0x464(%rsp), %rax
movq %rax, 0x1c0(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x10be0
movq %rax, %rcx
movq 0x1c0(%rsp), %rax
cmpq %rcx, %rax
jae 0xdd23
movslq 0x464(%rsp), %rsi
leaq 0x4a0(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
cmpl 0x488(%rsp), %eax
je 0xdb92
movl 0x534(%rsp), %esi
movl 0x48c(%rsp), %edx
movl 0x464(%rsp), %ecx
decl %ecx
leaq 0xa08(%rsp), %rdi
leaq 0x49c(%rsp), %r8
leaq 0x498(%rsp), %r9
callq 0xbbb0
jmp 0xd7d0
movslq 0x534(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq %rax, %rsi
movq 0x857d1(%rip), %rdi     # 0x92fc0
callq 0x64a0
movq %rax, 0x1b8(%rsp)
jmp 0xd7fe
movq 0x1b8(%rsp), %rdi
leaq 0x6851b(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x1b0(%rsp)
jmp 0xd81c
movslq 0x488(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq 0x1b0(%rsp), %rdi
movq %rax, %rsi
callq 0x64a0
jmp 0xd843
movq 0x85776(%rip), %rdi     # 0x92fc0
leaq 0x684d7(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x1a8(%rsp)
jmp 0xd860
movq 0x1a8(%rsp), %rdi
leaq 0x590(%rsp), %rsi
callq 0x64a0
jmp 0xd877
movq 0x85742(%rip), %rdi     # 0x92fc0
leaq 0x684a3(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x1a0(%rsp)
jmp 0xd894
movq 0x1a0(%rsp), %rdi
movl 0x494(%rsp), %esi
callq 0x69c0
movq %rax, 0x198(%rsp)
jmp 0xd8b2
movq 0x198(%rsp), %rdi
leaq 0x68467(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x190(%rsp)
jmp 0xd8d0
movq 0x190(%rsp), %rdi
movl 0x490(%rsp), %esi
callq 0x69c0
movq %rax, 0x188(%rsp)
jmp 0xd8ee
movq 0x188(%rsp), %rdi
leaq 0x6842b(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x180(%rsp)
jmp 0xd90c
movq 0x180(%rsp), %rdi
movl 0x484(%rsp), %esi
callq 0x69c0
jmp 0xd922
movq 0x85697(%rip), %rdi     # 0x92fc0
leaq 0x683f8(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x178(%rsp)
jmp 0xd93f
movq 0x178(%rsp), %rdi
movl 0x480(%rsp), %esi
callq 0x69c0
movq %rax, 0x170(%rsp)
jmp 0xd95d
movq 0x170(%rsp), %rdi
leaq 0x683bc(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x168(%rsp)
jmp 0xd97b
movslq 0x47c(%rsp), %rsi
leaq 0x9f0(%rsp), %rdi
callq 0xe8b0
movq 0x168(%rsp), %rdi
movl (%rax), %esi
callq 0x6790
jmp 0xd9a1
movq 0x85618(%rip), %rdi     # 0x92fc0
leaq 0x68379(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x160(%rsp)
jmp 0xd9be
movq 0x160(%rsp), %rdi
movl 0x49c(%rsp), %esi
callq 0x69c0
movq %rax, 0x158(%rsp)
jmp 0xd9dc
movq 0x158(%rsp), %rdi
leaq 0x6833d(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x150(%rsp)
jmp 0xd9fa
movq 0x150(%rsp), %rdi
movl 0x498(%rsp), %esi
callq 0x69c0
movq %rax, 0x148(%rsp)
jmp 0xda18
movq 0x148(%rsp), %rdi
movq 0x85571(%rip), %rsi     # 0x92f98
callq 0x65a0
jmp 0xda2e
movslq 0x464(%rsp), %rsi
leaq 0x9f0(%rsp), %rdi
movq %rdi, 0x130(%rsp)
callq 0xe8b0
movq 0x130(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x494(%rsp)
movslq 0x464(%rsp), %rsi
callq 0xe8b0
movl (%rax), %eax
movl %eax, 0x490(%rsp)
movl 0x464(%rsp), %eax
movl %eax, 0x48c(%rsp)
movslq 0x464(%rsp), %rsi
leaq 0x4a0(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
movl %eax, 0x488(%rsp)
movl $0x1, 0x484(%rsp)
callq 0x10bd0
movl %eax, 0x480(%rsp)
movl 0x464(%rsp), %eax
movl %eax, 0x47c(%rsp)
movslq 0x534(%rsp), %rsi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
movslq 0x464(%rsp), %rsi
callq 0x102b0
movq %rdx, 0x138(%rsp)
movq %rax, 0x140(%rsp)
jmp 0xdafa
movq 0x138(%rsp), %rax
movq 0x140(%rsp), %rcx
movq %rcx, 0x450(%rsp)
movq %rax, 0x458(%rsp)
leaq 0x450(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xdb51
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
movl %eax, 0x480(%rsp)
jmp 0xdb8d
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movl %eax, 0x12c(%rsp)
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movq %rax, %rcx
movl 0x12c(%rsp), %eax
subl (%rcx), %eax
movl %eax, 0x480(%rsp)
jmp 0xdd0b
movslq 0x464(%rsp), %rsi
leaq 0x9f0(%rsp), %rdi
callq 0xe8b0
movl (%rax), %eax
movl %eax, 0x490(%rsp)
movl 0x484(%rsp), %eax
incl %eax
movl %eax, 0x484(%rsp)
movslq 0x534(%rsp), %rsi
leaq 0xa08(%rsp), %rdi
callq 0x103e0
movq %rax, %rdi
movslq 0x464(%rsp), %rsi
callq 0x102b0
movq %rdx, 0x118(%rsp)
movq %rax, 0x120(%rsp)
jmp 0xdbf7
movq 0x118(%rsp), %rax
movq 0x120(%rsp), %rcx
movq %rcx, 0x440(%rsp)
movq %rax, 0x448(%rsp)
leaq 0x440(%rsp), %rdi
callq 0x10310
andb $0x1, %al
movzbl %al, %eax
cmpl $0x1, %eax
jne 0xdc7f
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
cmpl 0x480(%rsp), %eax
jge 0xdc7a
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movl (%rax), %eax
movl %eax, 0x480(%rsp)
movl 0x464(%rsp), %eax
movl %eax, 0x47c(%rsp)
jmp 0xdd09
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movl %eax, 0x114(%rsp)
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movq %rax, %rcx
movl 0x114(%rsp), %eax
subl (%rcx), %eax
cmpl 0x480(%rsp), %eax
jge 0xdd07
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movl %eax, 0x110(%rsp)
movslq 0x464(%rsp), %rsi
leaq 0x570(%rsp), %rdi
callq 0xecf0
movq %rax, %rcx
movl 0x110(%rsp), %eax
subl (%rcx), %eax
movl %eax, 0x480(%rsp)
movl 0x464(%rsp), %eax
movl %eax, 0x47c(%rsp)
jmp 0xdd09
jmp 0xdd0b
jmp 0xdd0d
movl 0x464(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x464(%rsp)
jmp 0xd745
movl 0x534(%rsp), %eax
movl %eax, 0x108(%rsp)
movl 0x48c(%rsp), %eax
movl %eax, 0x10c(%rsp)
leaq 0x4a0(%rsp), %rdi
callq 0x10be0
movl 0x108(%rsp), %esi
movl 0x10c(%rsp), %edx
movl %eax, %ecx
decl %ecx
leaq 0xa08(%rsp), %rdi
leaq 0x49c(%rsp), %r8
leaq 0x498(%rsp), %r9
callq 0xbbb0
jmp 0xdd7d
movslq 0x534(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq %rax, %rsi
movq 0x85224(%rip), %rdi     # 0x92fc0
callq 0x64a0
movq %rax, 0x100(%rsp)
jmp 0xddab
movq 0x100(%rsp), %rdi
leaq 0x67f6e(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xf8(%rsp)
jmp 0xddc9
leaq 0x4a0(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x10be0
movq 0xf0(%rsp), %rdi
movq %rax, %rsi
decq %rsi
callq 0xecf0
movslq (%rax), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq 0xf8(%rsp), %rdi
movq %rax, %rsi
callq 0x64a0
jmp 0xde13
movq 0x851a6(%rip), %rdi     # 0x92fc0
leaq 0x67f07(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xe8(%rsp)
jmp 0xde30
movq 0xe8(%rsp), %rdi
leaq 0x590(%rsp), %rsi
callq 0x64a0
jmp 0xde47
movq 0x85172(%rip), %rdi     # 0x92fc0
leaq 0x67ed3(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xe0(%rsp)
jmp 0xde64
movq 0xe0(%rsp), %rdi
movl 0x494(%rsp), %esi
callq 0x69c0
movq %rax, 0xd8(%rsp)
jmp 0xde82
movq 0xd8(%rsp), %rdi
leaq 0x67e97(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xd0(%rsp)
jmp 0xdea0
movq 0xd0(%rsp), %rdi
movl 0x490(%rsp), %esi
callq 0x69c0
movq %rax, 0xc8(%rsp)
jmp 0xdebe
movq 0xc8(%rsp), %rdi
leaq 0x67e5b(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xc0(%rsp)
jmp 0xdedc
movq 0xc0(%rsp), %rdi
movl 0x484(%rsp), %esi
callq 0x69c0
jmp 0xdef2
movq 0x850c7(%rip), %rdi     # 0x92fc0
leaq 0x67e28(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xb8(%rsp)
jmp 0xdf0f
movq 0xb8(%rsp), %rdi
movl 0x480(%rsp), %esi
callq 0x69c0
movq %rax, 0xb0(%rsp)
jmp 0xdf2d
movq 0xb0(%rsp), %rdi
leaq 0x67dec(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xa8(%rsp)
jmp 0xdf4b
movslq 0x47c(%rsp), %rsi
leaq 0x9f0(%rsp), %rdi
callq 0xe8b0
movq 0xa8(%rsp), %rdi
movl (%rax), %esi
callq 0x6790
jmp 0xdf71
movq 0x85048(%rip), %rdi     # 0x92fc0
leaq 0x67da9(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0xa0(%rsp)
jmp 0xdf8e
movq 0xa0(%rsp), %rdi
movl 0x49c(%rsp), %esi
callq 0x69c0
movq %rax, 0x98(%rsp)
jmp 0xdfac
movq 0x98(%rsp), %rdi
leaq 0x67d6d(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x90(%rsp)
jmp 0xdfca
movq 0x90(%rsp), %rdi
movl 0x498(%rsp), %esi
callq 0x69c0
movq %rax, 0x88(%rsp)
jmp 0xdfe8
movq 0x88(%rsp), %rdi
movq 0x84fa1(%rip), %rsi     # 0x92f98
callq 0x65a0
jmp 0xdffe
leaq 0x4a0(%rsp), %rdi
callq 0xed70
movl $0x0, 0x4fc(%rsp)
leaq 0x510(%rsp), %rdi
callq 0x6b50
movl 0x4fc(%rsp), %eax
testl %eax, %eax
je 0xe032
jmp 0xe030
jmp 0xe034
jmp 0xe034
movl 0x534(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x534(%rsp)
jmp 0xd358
leaq 0x510(%rsp), %rdi
callq 0x6b50
jmp 0xe6f3
jmp 0xe516
movq 0x84f58(%rip), %rdi     # 0x92fc0
leaq 0x661d6(%rip), %rsi     # 0x74245
callq 0x6540
movq %rax, 0x80(%rsp)
jmp 0xe07e
movq 0x80(%rsp), %rdi
movq 0x84f0b(%rip), %rsi     # 0x92f98
callq 0x65a0
jmp 0xe094
movl $0x0, 0x43c(%rsp)
movslq 0x43c(%rsp), %rax
movq %rax, 0x78(%rsp)
leaq 0xa08(%rsp), %rdi
callq 0xf1b0
movq %rax, %rcx
movq 0x78(%rsp), %rax
cmpq %rcx, %rax
jae 0xe514
movslq 0x43c(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x10290
movq 0x68(%rsp), %rdi
movq %rax, 0x70(%rsp)
movslq 0x43c(%rsp), %rsi
callq 0x10290
movq %rax, %rdi
callq 0x6350
movq 0x70(%rsp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
xorl %eax, %eax
movl %eax, %edx
leaq 0x418(%rsp), %rdi
callq 0x6580
jmp 0xe122
leaq 0xa98(%rsp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
callq 0x10b30
movq %rax, %rcx
xorl %eax, %eax
cmpq $0x0, %rcx
movb %al, 0x67(%rsp)
jbe 0xe1a3
leaq 0xf58(%rsp), %rdi
leaq 0x418(%rsp), %rsi
callq 0x10b60
movq %rax, 0x58(%rsp)
jmp 0xe161
movq 0x58(%rsp), %rax
movq %rax, 0x410(%rsp)
leaq 0xa98(%rsp), %rdi
addq $0x4c0, %rdi            # imm = 0x4C0
callq 0x10ba0
movq %rax, 0x408(%rsp)
leaq 0x410(%rsp), %rdi
leaq 0x408(%rsp), %rsi
callq 0x10b40
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0xe1ad
jmp 0xe1d6
movl $0x1c, 0x4fc(%rsp)
jmp 0xe4ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe502
movslq 0x43c(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq %rax, %rdx
leaq 0x66067(%rip), %rsi     # 0x7425c
leaq 0x3c8(%rsp), %rdi
callq 0xe8d0
jmp 0xe204
leaq 0x65ee0(%rip), %rdx     # 0x740eb
leaq 0x3e8(%rsp), %rdi
leaq 0x3c8(%rsp), %rsi
callq 0xf4a0
jmp 0xe222
leaq 0x853d7(%rip), %rdi     # 0x93600
leaq 0x3e8(%rsp), %rsi
callq 0x71280
jmp 0xe238
leaq 0x3e8(%rsp), %rdi
callq 0x6b50
leaq 0x3c8(%rsp), %rdi
callq 0x6b50
leaq 0x3b0(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0xea00
leaq 0x398(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0xea10
movq 0x48(%rsp), %r8
movq 0x50(%rsp), %r9
movl 0x43c(%rsp), %edx
leaq 0xa08(%rsp), %rdi
leaq 0x538(%rsp), %rsi
leaq 0xa98(%rsp), %rcx
callq 0x87f0
jmp 0xe2a6
movl $0x0, 0x394(%rsp)
movslq 0x394(%rsp), %rax
movq %rax, 0x40(%rsp)
leaq 0x9f0(%rsp), %rdi
callq 0xe850
movq %rax, %rcx
movq 0x40(%rsp), %rax
cmpq %rcx, %rax
jae 0xe4a9
movslq 0x43c(%rsp), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq %rax, %rsi
movq 0x84cc5(%rip), %rdi     # 0x92fc0
callq 0x64a0
movq %rax, 0x38(%rsp)
jmp 0xe307
movq 0x38(%rsp), %rdi
leaq 0x67a15(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x30(%rsp)
jmp 0xe31f
movslq 0x394(%rsp), %rsi
leaq 0x3b0(%rsp), %rdi
callq 0xecf0
movslq (%rax), %rsi
leaq 0x9c0(%rsp), %rdi
callq 0x10290
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0x64a0
jmp 0xe353
movq 0x84c66(%rip), %rdi     # 0x92fc0
leaq 0x679c7(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x28(%rsp)
jmp 0xe36d
movq 0x28(%rsp), %rdi
leaq 0x590(%rsp), %rsi
callq 0x64a0
movq %rax, 0x20(%rsp)
jmp 0xe386
movq 0x20(%rsp), %rdi
leaq 0x67996(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x18(%rsp)
jmp 0xe39e
movslq 0x394(%rsp), %rsi
leaq 0x9f0(%rsp), %rdi
callq 0xe8b0
movq 0x18(%rsp), %rdi
movl (%rax), %esi
callq 0x6790
movq %rax, 0x10(%rsp)
jmp 0xe3c6
movq 0x10(%rsp), %rdi
leaq 0x67956(%rip), %rsi     # 0x75d28
callq 0x6540
movq %rax, 0x8(%rsp)
jmp 0xe3de
movslq 0x394(%rsp), %rsi
leaq 0x398(%rsp), %rdi
callq 0xe870
movq 0x8(%rsp), %rdi
movsd (%rax), %xmm0
callq 0x6ab0
jmp 0xe403
movq 0x84bb6(%rip), %rdi     # 0x92fc0
movq 0x84b87(%rip), %rsi     # 0x92f98
callq 0x65a0
jmp 0xe418
jmp 0xe41a
movl 0x394(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x394(%rsp)
jmp 0xe2b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe467
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x3e8(%rsp), %rdi
callq 0x6b50
leaq 0x3c8(%rsp), %rdi
callq 0x6b50
jmp 0xe502
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x398(%rsp), %rdi
callq 0xed10
leaq 0x3b0(%rsp), %rdi
callq 0xed70
jmp 0xe502
leaq 0x398(%rsp), %rdi
callq 0xed10
leaq 0x3b0(%rsp), %rdi
callq 0xed70
movl $0x0, 0x4fc(%rsp)
leaq 0x418(%rsp), %rdi
callq 0x6b50
movl 0x4fc(%rsp), %eax
testl %eax, %eax
je 0xe4ea
jmp 0xe4e8
jmp 0xe4ec
jmp 0xe4ec
movl 0x43c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x43c(%rsp)
jmp 0xe09f
leaq 0x418(%rsp), %rdi
callq 0x6b50
jmp 0xe6f3
jmp 0xe516
leaq 0xfe8(%rsp), %rdi
callq 0x64d0
movq 0xfe8(%rsp), %rdi
movq 0xff0(%rsp), %rsi
callq 0x6220
movsd %xmm0, 0x388(%rsp)
movsd 0x388(%rsp), %xmm0
leaq 0x328(%rsp), %rdi
movl $0x2, %esi
callq 0x71930
jmp 0xe55e
leaq 0x65d14(%rip), %rsi     # 0x74279
leaq 0x348(%rsp), %rdi
leaq 0x328(%rsp), %rdx
callq 0xf4f0
jmp 0xe57c
leaq 0x65b2d(%rip), %rdx     # 0x740b0
leaq 0x368(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0xf4a0
jmp 0xe59a
leaq 0x8505f(%rip), %rdi     # 0x93600
leaq 0x368(%rsp), %rsi
callq 0x71280
jmp 0xe5b0
leaq 0x368(%rsp), %rdi
callq 0x6b50
leaq 0x348(%rsp), %rdi
callq 0x6b50
leaq 0x328(%rsp), %rdi
callq 0x6b50
leaq 0x85022(%rip), %rdi     # 0x93600
callq 0x71260
jmp 0xe5e5
movl $0x0, 0x1004(%rsp)
movl $0x1, 0x4fc(%rsp)
leaq 0x538(%rsp), %rdi
callq 0xed10
leaq 0x570(%rsp), %rdi
callq 0xed70
leaq 0x590(%rsp), %rdi
callq 0x6b50
leaq 0x698(%rsp), %rdi
callq 0x10c00
leaq 0x6b0(%rsp), %rdi
callq 0x10c60
leaq 0x9c0(%rsp), %rdi
callq 0x10cc0
leaq 0x9d8(%rsp), %rdi
callq 0x10cc0
leaq 0x9f0(%rsp), %rdi
callq 0x10c00
leaq 0xa08(%rsp), %rdi
callq 0x10c60
leaq 0xa98(%rsp), %rdi
callq 0x10d20
movl 0x1004(%rsp), %eax
addq $0x1008, %rsp           # imm = 0x1008
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe6e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
jmp 0xe6d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa90(%rsp)
movl %eax, 0xa8c(%rsp)
leaq 0x368(%rsp), %rdi
callq 0x6b50
leaq 0x348(%rsp), %rdi
callq 0x6b50
leaq 0x328(%rsp), %rdi
callq 0x6b50
leaq 0x538(%rsp), %rdi
callq 0xed10
leaq 0x570(%rsp), %rdi
callq 0xed70
leaq 0x590(%rsp), %rdi
callq 0x6b50
leaq 0x698(%rsp), %rdi
callq 0x10c00
leaq 0x6b0(%rsp), %rdi
callq 0x10c60
leaq 0x9c0(%rsp), %rdi
callq 0x10cc0
leaq 0x9d8(%rsp), %rdi
callq 0x10cc0
leaq 0x9f0(%rsp), %rdi
callq 0x10c00
leaq 0xa08(%rsp), %rdi
callq 0x10c60
leaq 0xa98(%rsp), %rdi
callq 0x10d20
movq 0xa90(%rsp), %rdi
callq 0x69e0
nopw %cs:(%rax,%rax)
nopl (%rax)