// File: ChnMasterOG[P]KmerGO2/kmergo/kmer_counting.cpp
// Function: kmer_counting(KmerGO_parameters&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
short kmer_counting(KmerGO_parameters& p, std::string& loginfo)
{
	std::vector<std::string> suffix{ ".fasta", ".fa", ".fna", ".fasta.gz", ".fa.gz", ".fna.gz", ".fastq", ".fq", ".fastq.gz", ".fq.gz" };
	std::vector<std::string> kmc_ftype{ "-fm", "-fm", "-fm", "-fm", "-fm", "-fm", "-fq", "-fq", "-fq", "-fq" };

	std::string current_path, cmd, file_type = "?";
	std::vector<std::string> kmer_files, ap_kmer_files;
	uint32 r, i, j;

	current_path = getCWD();
	getFiles(p.samples_path, kmer_files, false);
	getFiles(p.samples_path, ap_kmer_files, true);

	for (i = 0; i < kmer_files.size(); i++)
	{
		std::cout << kmer_files[i] << std::endl;
		for (j = 0; j < suffix.size(); j++)
		{
			if (!suffix[j].compare(0, suffix[j].length(), kmer_files[i], kmer_files[i].length() - suffix[j].length(), suffix[j].length()))
			{
				file_type = kmc_ftype[j];
				break;
			}
		}
		if (file_type.compare("?") == 0) continue;	// skip illegal files
		cmd = joinPath(current_path, "bin/kmc -k") + std::to_string(p.k_value) + " -ci" + std::to_string(p.ci_value) +
			" -cs" + std::to_string(p.cs_value) + " " + file_type + " " + ap_kmer_files[i] + " " + 
			joinPath(p.kmercountings_path, kmer_files[i]) + " " + p.temp_path;
		r = system(cmd.c_str());
		if (r)
		{
			loginfo = "Running kmc error.";
			return 2;
		}
		cmd = joinPath(current_path, "bin/kmc_tools transform ") + joinPath(p.kmercountings_path, kmer_files[i]) + " sort " +
			joinPath(p.kmercountings_path, kmer_files[i]) + "_sort";
		r = system(cmd.c_str());
		if (r)
		{
			loginfo = "Running kmc_tools error.";
			return 3;
		}
		cmd = "mv " + joinPath(p.kmercountings_path, kmer_files[i]) + "_sort.kmc_suf " + 
			joinPath(p.kmercountings_path, kmer_files[i]) + ".kmc_suf";
		r = system(cmd.c_str());
		if (r)
		{
			loginfo = "Moving k-mer database error.";
			return 4;
		}
		cmd = "mv " + joinPath(p.kmercountings_path, kmer_files[i]) + "_sort.kmc_pre " + 
			joinPath(p.kmercountings_path, kmer_files[i]) + ".kmc_pre";
		r = system(cmd.c_str());
		if (r)
		{
			loginfo = "Moving k-mer database error.";
			return 4;
		}
	}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xdd0, %rsp            # imm = 0xDD0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movb $0x1, -0x1a6(%rbp)
leaq -0x180(%rbp), %rax
movq %rax, -0xb38(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x189(%rbp), %rdi
movq %rdi, -0xb30(%rbp)
callq 0x42ffd0
movq -0xb38(%rbp), %rdi
movq -0xb30(%rbp), %rdx
leaq 0x1b142d(%rip), %rsi    # 0x5b6004
callq 0x406db0
jmp 0x404bde
leaq -0x160(%rbp), %rax
movq %rax, -0xb48(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x19d(%rbp), %rdi
movq %rdi, -0xb40(%rbp)
callq 0x42ffd0
movq -0xb48(%rbp), %rdi
movq -0xb40(%rbp), %rdx
leaq 0x1b1a60(%rip), %rsi    # 0x5b667b
callq 0x406db0
jmp 0x404c22
leaq -0x140(%rbp), %rax
movq %rax, -0xb58(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x19e(%rbp), %rdi
movq %rdi, -0xb50(%rbp)
callq 0x42ffd0
movq -0xb58(%rbp), %rdi
movq -0xb50(%rbp), %rdx
leaq 0x1b13ac(%rip), %rsi    # 0x5b600b
callq 0x406db0
jmp 0x404c66
leaq -0x120(%rbp), %rax
movq %rax, -0xb68(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x19f(%rbp), %rdi
movq %rdi, -0xb60(%rbp)
callq 0x42ffd0
movq -0xb68(%rbp), %rdi
movq -0xb60(%rbp), %rdx
leaq 0x1b136d(%rip), %rsi    # 0x5b6010
callq 0x406db0
jmp 0x404caa
leaq -0x100(%rbp), %rax
movq %rax, -0xb78(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
callq 0x42ffd0
movq -0xb78(%rbp), %rdi
movq -0xb70(%rbp), %rdx
leaq 0x1b1333(%rip), %rsi    # 0x5b601a
callq 0x406db0
jmp 0x404cee
leaq -0xe0(%rbp), %rax
movq %rax, -0xb88(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a1(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0x42ffd0
movq -0xb88(%rbp), %rdi
movq -0xb80(%rbp), %rdx
leaq 0x1b12f6(%rip), %rsi    # 0x5b6021
callq 0x406db0
jmp 0x404d32
leaq -0xc0(%rbp), %rax
movq %rax, -0xb98(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a2(%rbp), %rdi
movq %rdi, -0xb90(%rbp)
callq 0x42ffd0
movq -0xb98(%rbp), %rdi
movq -0xb90(%rbp), %rdx
leaq 0x1b12ba(%rip), %rsi    # 0x5b6029
callq 0x406db0
jmp 0x404d76
leaq -0xa0(%rbp), %rax
movq %rax, -0xba8(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a3(%rbp), %rdi
movq %rdi, -0xba0(%rbp)
callq 0x42ffd0
movq -0xba8(%rbp), %rdi
movq -0xba0(%rbp), %rdx
leaq 0x1b127d(%rip), %rsi    # 0x5b6030
callq 0x406db0
jmp 0x404dba
leaq -0x80(%rbp), %rax
movq %rax, -0xbb8(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a4(%rbp), %rdi
movq %rdi, -0xbb0(%rbp)
callq 0x42ffd0
movq -0xbb8(%rbp), %rdi
movq -0xbb0(%rbp), %rdx
leaq 0x1b1240(%rip), %rsi    # 0x5b6034
callq 0x406db0
jmp 0x404dfb
leaq -0x60(%rbp), %rax
movq %rax, -0xbc8(%rbp)
movq %rax, -0x188(%rbp)
leaq -0x1a5(%rbp), %rdi
movq %rdi, -0xbc0(%rbp)
callq 0x42ffd0
movq -0xbc8(%rbp), %rdi
movq -0xbc0(%rbp), %rdx
leaq 0x1b1209(%rip), %rsi    # 0x5b603e
callq 0x406db0
jmp 0x404e3c
movb $0x0, -0x1a6(%rbp)
leaq -0x180(%rbp), %rax
movq %rax, -0x40(%rbp)
movq $0xa, -0x38(%rbp)
leaq -0x1a7(%rbp), %rdi
movq %rdi, -0xbd0(%rbp)
callq 0x406e60
movq -0xbd0(%rbp), %rcx
movq -0x40(%rbp), %rsi
movq -0x38(%rbp), %rdx
leaq -0x30(%rbp), %rdi
callq 0x406e80
jmp 0x404e83
leaq -0x1a7(%rbp), %rdi
callq 0x406f00
leaq -0x180(%rbp), %rax
movq %rax, -0xbe0(%rbp)
addq $0x140, %rax            # imm = 0x140
movq %rax, -0xbd8(%rbp)
movq -0xbd8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xbe8(%rbp)
callq 0x49efd0
movq -0xbe0(%rbp), %rcx
movq -0xbe8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xbd8(%rbp)
jne 0x404eaa
leaq -0x1a5(%rbp), %rdi
callq 0x42fff0
leaq -0x1a4(%rbp), %rdi
callq 0x42fff0
leaq -0x1a3(%rbp), %rdi
callq 0x42fff0
leaq -0x1a2(%rbp), %rdi
callq 0x42fff0
leaq -0x1a1(%rbp), %rdi
callq 0x42fff0
leaq -0x1a0(%rbp), %rdi
callq 0x42fff0
leaq -0x19f(%rbp), %rdi
callq 0x42fff0
leaq -0x19e(%rbp), %rdi
callq 0x42fff0
leaq -0x19d(%rbp), %rdi
callq 0x42fff0
leaq -0x189(%rbp), %rdi
callq 0x42fff0
movb $0x1, -0x323(%rbp)
leaq -0x310(%rbp), %rax
movq %rax, -0xbf8(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x319(%rbp), %rdi
movq %rdi, -0xbf0(%rbp)
callq 0x42ffd0
movq -0xbf8(%rbp), %rdi
movq -0xbf0(%rbp), %rdx
leaq 0x1b10ae(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x404f9e
leaq -0x2f0(%rbp), %rax
movq %rax, -0xc08(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31a(%rbp), %rdi
movq %rdi, -0xc00(%rbp)
callq 0x42ffd0
movq -0xc08(%rbp), %rdi
movq -0xc00(%rbp), %rdx
leaq 0x1b106a(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x404fe2
leaq -0x2d0(%rbp), %rax
movq %rax, -0xc18(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31b(%rbp), %rdi
movq %rdi, -0xc10(%rbp)
callq 0x42ffd0
movq -0xc18(%rbp), %rdi
movq -0xc10(%rbp), %rdx
leaq 0x1b1026(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x405026
leaq -0x2b0(%rbp), %rax
movq %rax, -0xc28(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31c(%rbp), %rdi
movq %rdi, -0xc20(%rbp)
callq 0x42ffd0
movq -0xc28(%rbp), %rdi
movq -0xc20(%rbp), %rdx
leaq 0x1b0fe2(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x40506a
leaq -0x290(%rbp), %rax
movq %rax, -0xc38(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31d(%rbp), %rdi
movq %rdi, -0xc30(%rbp)
callq 0x42ffd0
movq -0xc38(%rbp), %rdi
movq -0xc30(%rbp), %rdx
leaq 0x1b0f9e(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x4050ae
leaq -0x270(%rbp), %rax
movq %rax, -0xc48(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31e(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x42ffd0
movq -0xc48(%rbp), %rdi
movq -0xc40(%rbp), %rdx
leaq 0x1b0f5a(%rip), %rsi    # 0x5b6045
callq 0x406db0
jmp 0x4050f2
leaq -0x250(%rbp), %rax
movq %rax, -0xc58(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x31f(%rbp), %rdi
movq %rdi, -0xc50(%rbp)
callq 0x42ffd0
movq -0xc58(%rbp), %rdi
movq -0xc50(%rbp), %rdx
leaq 0x1b0f1a(%rip), %rsi    # 0x5b6049
callq 0x406db0
jmp 0x405136
leaq -0x230(%rbp), %rax
movq %rax, -0xc68(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x320(%rbp), %rdi
movq %rdi, -0xc60(%rbp)
callq 0x42ffd0
movq -0xc68(%rbp), %rdi
movq -0xc60(%rbp), %rdx
leaq 0x1b0ed6(%rip), %rsi    # 0x5b6049
callq 0x406db0
jmp 0x40517a
leaq -0x210(%rbp), %rax
movq %rax, -0xc78(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x321(%rbp), %rdi
movq %rdi, -0xc70(%rbp)
callq 0x42ffd0
movq -0xc78(%rbp), %rdi
movq -0xc70(%rbp), %rdx
leaq 0x1b0e92(%rip), %rsi    # 0x5b6049
callq 0x406db0
jmp 0x4051be
leaq -0x1f0(%rbp), %rax
movq %rax, -0xc88(%rbp)
movq %rax, -0x318(%rbp)
leaq -0x322(%rbp), %rdi
movq %rdi, -0xc80(%rbp)
callq 0x42ffd0
movq -0xc88(%rbp), %rdi
movq -0xc80(%rbp), %rdx
leaq 0x1b0e4e(%rip), %rsi    # 0x5b6049
callq 0x406db0
jmp 0x405202
movb $0x0, -0x323(%rbp)
leaq -0x310(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq $0xa, -0x1c8(%rbp)
leaq -0x324(%rbp), %rdi
movq %rdi, -0xc90(%rbp)
callq 0x406e60
movq -0xc90(%rbp), %rcx
movq -0x1d0(%rbp), %rsi
movq -0x1c8(%rbp), %rdx
leaq -0x1c0(%rbp), %rdi
callq 0x406e80
jmp 0x405258
leaq -0x324(%rbp), %rdi
callq 0x406f00
leaq -0x310(%rbp), %rax
movq %rax, -0xca0(%rbp)
addq $0x140, %rax            # imm = 0x140
movq %rax, -0xc98(%rbp)
movq -0xc98(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xca8(%rbp)
callq 0x49efd0
movq -0xca0(%rbp), %rcx
movq -0xca8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xc98(%rbp)
jne 0x40527f
leaq -0x322(%rbp), %rdi
callq 0x42fff0
leaq -0x321(%rbp), %rdi
callq 0x42fff0
leaq -0x320(%rbp), %rdi
callq 0x42fff0
leaq -0x31f(%rbp), %rdi
callq 0x42fff0
leaq -0x31e(%rbp), %rdi
callq 0x42fff0
leaq -0x31d(%rbp), %rdi
callq 0x42fff0
leaq -0x31c(%rbp), %rdi
callq 0x42fff0
leaq -0x31b(%rbp), %rdi
callq 0x42fff0
leaq -0x31a(%rbp), %rdi
callq 0x42fff0
leaq -0x319(%rbp), %rdi
callq 0x42fff0
leaq -0x348(%rbp), %rdi
callq 0x49eec0
leaq -0x368(%rbp), %rdi
callq 0x49eec0
leaq -0x389(%rbp), %rdi
movq %rdi, -0xcb0(%rbp)
callq 0x42ffd0
movq -0xcb0(%rbp), %rdx
leaq 0x1b0cec(%rip), %rsi    # 0x5b604d
leaq -0x388(%rbp), %rdi
callq 0x406db0
jmp 0x40536f
leaq -0x389(%rbp), %rdi
callq 0x42fff0
leaq -0x3a8(%rbp), %rdi
callq 0x406f20
leaq -0x3c0(%rbp), %rdi
callq 0x406f20
leaq -0x3f0(%rbp), %rdi
callq 0x406f40
jmp 0x4053a1
leaq -0x348(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
movq %rsi, -0xcb8(%rbp)
callq 0x49f020
movq -0xcb8(%rbp), %rdi
callq 0x49efd0
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
leaq -0x410(%rbp), %rdi
callq 0x4a15e0
jmp 0x4053dd
leaq -0x410(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
xorl %edx, %edx
callq 0x406fc0
jmp 0x4053f4
leaq -0x410(%rbp), %rdi
callq 0x49efd0
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
leaq -0x430(%rbp), %rdi
callq 0x4a15e0
jmp 0x405416
leaq -0x430(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
movl $0x1, %edx
callq 0x406fc0
jmp 0x405430
leaq -0x430(%rbp), %rdi
callq 0x49efd0
movl $0x0, -0x3c8(%rbp)
movl -0x3c8(%rbp), %eax
movq %rax, -0xcc0(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x4072c0
movq %rax, %rcx
movq -0xcc0(%rbp), %rax
cmpq %rcx, %rax
jae 0x406ce4
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
movq $0x1b90900, %rdi        # imm = 0x1B90900
callq 0x4a1880
movq %rax, -0xcc8(%rbp)
jmp 0x40549e
movq -0xcc8(%rbp), %rdi
movq $0x4984e0, %rsi         # imm = 0x4984E0
callq 0x4976f0
jmp 0x4054b3
movl $0x0, -0x3cc(%rbp)
movl -0x3cc(%rbp), %eax
movq %rax, -0xcd0(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4072c0
movq %rax, %rcx
movq -0xcd0(%rbp), %rax
cmpq %rcx, %rax
jae 0x405b00
movl -0x3cc(%rbp), %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
movq %rdi, -0xd08(%rbp)
callq 0x4072e0
movq -0xd08(%rbp), %rdi
movq %rax, -0xcf8(%rbp)
movl -0x3cc(%rbp), %eax
movl %eax, %esi
callq 0x4072e0
movq %rax, %rdi
callq 0x49f200
movq %rax, -0xcf0(%rbp)
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
movq %rdi, -0xd10(%rbp)
callq 0x4072e0
movq -0xd10(%rbp), %rdi
movq %rax, -0xce8(%rbp)
movl -0x3c8(%rbp), %eax
movl %eax, %esi
callq 0x4072e0
movq %rax, %rdi
callq 0x49f200
movq -0xd08(%rbp), %rdi
movq %rax, -0xd00(%rbp)
movl -0x3cc(%rbp), %eax
movl %eax, %esi
callq 0x4072e0
movq %rax, %rdi
callq 0x49f200
movq -0xd08(%rbp), %rdi
movq %rax, %rcx
movq -0xd00(%rbp), %rax
subq %rcx, %rax
movq %rax, -0xce0(%rbp)
movl -0x3cc(%rbp), %eax
movl %eax, %esi
callq 0x4072e0
movq %rax, %rdi
callq 0x49f200
movq -0xcf8(%rbp), %rdi
movq -0xcf0(%rbp), %rdx
movq -0xce8(%rbp), %rcx
movq -0xce0(%rbp), %r8
movq %rax, %r9
xorl %eax, %eax
movl %eax, %esi
callq 0x4a1120
movl %eax, -0xcd4(%rbp)
jmp 0x4055e9
movl -0xcd4(%rbp), %eax
cmpl $0x0, %eax
jne 0x405aea
movl -0x3cc(%rbp), %eax
movl %eax, %esi
leaq -0x1c0(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x388(%rbp), %rdi
callq 0x49f000
jmp 0x40561d
jmp 0x405b00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4057a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x405795
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x405789
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40577d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x405771
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x1a7(%rbp), %rdi
callq 0x406f00
leaq -0x180(%rbp), %rax
movq %rax, -0xd20(%rbp)
addq $0x140, %rax            # imm = 0x140
movq %rax, -0xd18(%rbp)
movq -0xd18(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xd28(%rbp)
callq 0x49efd0
movq -0xd20(%rbp), %rcx
movq -0xd28(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xd18(%rbp)
jne 0x40573e
jmp 0x405771
leaq -0x1a5(%rbp), %rdi
callq 0x42fff0
leaq -0x1a4(%rbp), %rdi
callq 0x42fff0
leaq -0x1a3(%rbp), %rdi
callq 0x42fff0
leaq -0x1a2(%rbp), %rdi
callq 0x42fff0
leaq -0x1a1(%rbp), %rdi
callq 0x42fff0
leaq -0x1a0(%rbp), %rdi
callq 0x42fff0
leaq -0x19f(%rbp), %rdi
callq 0x42fff0
leaq -0x19e(%rbp), %rdi
callq 0x42fff0
leaq -0x19d(%rbp), %rdi
callq 0x42fff0
leaq -0x189(%rbp), %rdi
callq 0x42fff0
testb $0x1, -0x1a6(%rbp)
jne 0x4057f4
jmp 0x405841
movq -0x188(%rbp), %rax
leaq -0x180(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0xd30(%rbp)
je 0x40583f
movq -0xd30(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xd38(%rbp)
callq 0x49efd0
movq -0xd38(%rbp), %rax
leaq -0x180(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0xd30(%rbp)
jne 0x40580e
jmp 0x405841
jmp 0x406da3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x405a01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4059a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x405995
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x324(%rbp), %rdi
callq 0x406f00
leaq -0x310(%rbp), %rax
movq %rax, -0xd48(%rbp)
addq $0x140, %rax            # imm = 0x140
movq %rax, -0xd40(%rbp)
movq -0xd40(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xd50(%rbp)
callq 0x49efd0
movq -0xd48(%rbp), %rcx
movq -0xd50(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0xd40(%rbp)
jne 0x405962
jmp 0x405995
leaq -0x322(%rbp), %rdi
callq 0x42fff0
leaq -0x321(%rbp), %rdi
callq 0x42fff0
leaq -0x320(%rbp), %rdi
callq 0x42fff0
leaq -0x31f(%rbp), %rdi
callq 0x42fff0
leaq -0x31e(%rbp), %rdi
callq 0x42fff0
leaq -0x31d(%rbp), %rdi
callq 0x42fff0
leaq -0x31c(%rbp), %rdi
callq 0x42fff0
leaq -0x31b(%rbp), %rdi
callq 0x42fff0
leaq -0x31a(%rbp), %rdi
callq 0x42fff0
leaq -0x319(%rbp), %rdi
callq 0x42fff0
testb $0x1, -0x323(%rbp)
jne 0x405a18
jmp 0x405a65
movq -0x318(%rbp), %rax
leaq -0x310(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0xd58(%rbp)
je 0x405a63
movq -0xd58(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0xd60(%rbp)
callq 0x49efd0
movq -0xd60(%rbp), %rax
leaq -0x310(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0xd58(%rbp)
jne 0x405a32
jmp 0x405a65
jmp 0x406d9a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x389(%rbp), %rdi
callq 0x42fff0
jmp 0x406d76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406d52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
jmp 0x405aec
movl -0x3cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3cc(%rbp)
jmp 0x4054bd
leaq -0x388(%rbp), %rdi
leaq 0x1b053f(%rip), %rsi    # 0x5b604d
callq 0x4a11e0
cmpl $0x0, %eax
jne 0x405b1d
jmp 0x406cd0
leaq -0x610(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x4a15e0
jmp 0x405b32
leaq -0x631(%rbp), %rdi
movq %rdi, -0xd68(%rbp)
callq 0x42ffd0
movq -0xd68(%rbp), %rdx
leaq 0x1b04fc(%rip), %rsi    # 0x5b604f
leaq -0x630(%rbp), %rdi
callq 0x406db0
jmp 0x405b61
leaq -0x5f0(%rbp), %rdi
leaq -0x610(%rbp), %rsi
leaq -0x630(%rbp), %rdx
callq 0x407470
jmp 0x405b7d
movq -0x10(%rbp), %rax
movzwl (%rax), %esi
leaq -0x658(%rbp), %rdi
callq 0x4075b0
jmp 0x405b92
leaq -0x5d0(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
leaq -0x658(%rbp), %rdx
callq 0x4073a0
jmp 0x405bae
leaq 0x1b04a5(%rip), %rdx    # 0x5b605a
leaq -0x5b0(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x407350
jmp 0x405bca
movq -0x10(%rbp), %rax
movl 0x4(%rax), %esi
leaq -0x678(%rbp), %rdi
callq 0x4076d0
jmp 0x405bdf
leaq -0x590(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
leaq -0x678(%rbp), %rdx
callq 0x4073a0
jmp 0x405bfb
leaq 0x1b045d(%rip), %rdx    # 0x5b605f
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x407350
jmp 0x405c17
movq -0x10(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x698(%rbp), %rdi
callq 0x4076d0
jmp 0x405c2c
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rsi
leaq -0x698(%rbp), %rdx
callq 0x4073a0
jmp 0x405c48
leaq 0x1b0761(%rip), %rdx    # 0x5b63b0
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x407350
jmp 0x405c64
leaq -0x510(%rbp), %rdi
leaq -0x530(%rbp), %rsi
leaq -0x388(%rbp), %rdx
callq 0x407300
jmp 0x405c80
leaq 0x1b0729(%rip), %rdx    # 0x5b63b0
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x407350
jmp 0x405c9c
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3c0(%rbp), %rdi
callq 0x4072e0
movq %rax, %rdx
leaq -0x4d0(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x407300
jmp 0x405cc8
leaq 0x1b06e1(%rip), %rdx    # 0x5b63b0
leaq -0x4b0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x407350
jmp 0x405ce4
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0x6d8(%rbp), %rdi
callq 0x4a15e0
jmp 0x405cfa
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x6f8(%rbp), %rdi
callq 0x4a15e0
jmp 0x405d1f
leaq -0x6b8(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
leaq -0x6f8(%rbp), %rdx
callq 0x407470
jmp 0x405d3b
leaq -0x490(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
leaq -0x6b8(%rbp), %rdx
callq 0x4073a0
jmp 0x405d57
leaq 0x1b0652(%rip), %rdx    # 0x5b63b0
leaq -0x470(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0x407350
jmp 0x405d73
movq -0x10(%rbp), %rdx
addq $0xc0, %rdx
leaq -0x450(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x407300
jmp 0x405d93
leaq -0x368(%rbp), %rdi
movq %rdi, -0xd78(%rbp)
leaq -0x450(%rbp), %rsi
movq %rsi, -0xd80(%rbp)
callq 0x49f020
movq -0xd80(%rbp), %rdi
callq 0x49efd0
leaq -0x470(%rbp), %rdi
callq 0x49efd0
leaq -0x490(%rbp), %rdi
callq 0x49efd0
leaq -0x6b8(%rbp), %rdi
callq 0x49efd0
leaq -0x6f8(%rbp), %rdi
callq 0x49efd0
leaq -0x6d8(%rbp), %rdi
callq 0x49efd0
leaq -0x4b0(%rbp), %rdi
callq 0x49efd0
leaq -0x4d0(%rbp), %rdi
callq 0x49efd0
leaq -0x4f0(%rbp), %rdi
callq 0x49efd0
leaq -0x510(%rbp), %rdi
callq 0x49efd0
leaq -0x530(%rbp), %rdi
callq 0x49efd0
leaq -0x550(%rbp), %rdi
callq 0x49efd0
leaq -0x698(%rbp), %rdi
callq 0x49efd0
leaq -0x570(%rbp), %rdi
callq 0x49efd0
leaq -0x590(%rbp), %rdi
callq 0x49efd0
leaq -0x678(%rbp), %rdi
callq 0x49efd0
leaq -0x5b0(%rbp), %rdi
callq 0x49efd0
leaq -0x5d0(%rbp), %rdi
callq 0x49efd0
leaq -0x658(%rbp), %rdi
callq 0x49efd0
leaq -0x5f0(%rbp), %rdi
callq 0x49efd0
leaq -0x630(%rbp), %rdi
callq 0x49efd0
leaq -0x631(%rbp), %rdi
callq 0x42fff0
leaq -0x610(%rbp), %rdi
callq 0x49efd0
movq -0xd78(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0xd6c(%rbp)
jmp 0x405ee4
movl -0xd6c(%rbp), %eax
movl %eax, -0x3c4(%rbp)
cmpl $0x0, -0x3c4(%rbp)
je 0x406203
movq -0x18(%rbp), %rdi
leaq 0x1b015c(%rip), %rsi    # 0x5b6064
callq 0x4a0020
jmp 0x405f0f
movw $0x2, -0x2(%rbp)
movl $0x1, -0x6fc(%rbp)
jmp 0x406cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4061aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40619e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406192
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406186
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40617a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40616e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406162
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406156
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40614a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40613e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406132
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406126
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40611a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40610e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406102
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x49efd0
leaq -0x490(%rbp), %rdi
callq 0x49efd0
leaq -0x6b8(%rbp), %rdi
callq 0x49efd0
leaq -0x6f8(%rbp), %rdi
callq 0x49efd0
leaq -0x6d8(%rbp), %rdi
callq 0x49efd0
leaq -0x4b0(%rbp), %rdi
callq 0x49efd0
leaq -0x4d0(%rbp), %rdi
callq 0x49efd0
leaq -0x4f0(%rbp), %rdi
callq 0x49efd0
leaq -0x510(%rbp), %rdi
callq 0x49efd0
leaq -0x530(%rbp), %rdi
callq 0x49efd0
leaq -0x550(%rbp), %rdi
callq 0x49efd0
leaq -0x698(%rbp), %rdi
callq 0x49efd0
leaq -0x570(%rbp), %rdi
callq 0x49efd0
leaq -0x590(%rbp), %rdi
callq 0x49efd0
leaq -0x678(%rbp), %rdi
callq 0x49efd0
leaq -0x5b0(%rbp), %rdi
callq 0x49efd0
leaq -0x5d0(%rbp), %rdi
callq 0x49efd0
leaq -0x658(%rbp), %rdi
callq 0x49efd0
leaq -0x5f0(%rbp), %rdi
callq 0x49efd0
leaq -0x630(%rbp), %rdi
callq 0x49efd0
leaq -0x631(%rbp), %rdi
callq 0x42fff0
leaq -0x610(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
leaq -0x7c0(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x4a15e0
jmp 0x406218
leaq -0x7e1(%rbp), %rdi
movq %rdi, -0xd88(%rbp)
callq 0x42ffd0
movq -0xd88(%rbp), %rdx
leaq 0x1afe3e(%rip), %rsi    # 0x5b6077
leaq -0x7e0(%rbp), %rdi
callq 0x406db0
jmp 0x406247
leaq -0x7a0(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
leaq -0x7e0(%rbp), %rdx
callq 0x407470
jmp 0x406263
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0x828(%rbp), %rdi
callq 0x4a15e0
jmp 0x406279
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x848(%rbp), %rdi
callq 0x4a15e0
jmp 0x40629e
leaq -0x808(%rbp), %rdi
leaq -0x828(%rbp), %rsi
leaq -0x848(%rbp), %rdx
callq 0x407470
jmp 0x4062ba
leaq -0x780(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
leaq -0x808(%rbp), %rdx
callq 0x4073a0
jmp 0x4062d6
leaq 0x1afdb3(%rip), %rdx    # 0x5b6090
leaq -0x760(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x407350
jmp 0x4062f2
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0x888(%rbp), %rdi
callq 0x4a15e0
jmp 0x406308
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x8a8(%rbp), %rdi
callq 0x4a15e0
jmp 0x40632d
leaq -0x868(%rbp), %rdi
leaq -0x888(%rbp), %rsi
leaq -0x8a8(%rbp), %rdx
callq 0x407470
jmp 0x406349
leaq -0x740(%rbp), %rdi
leaq -0x760(%rbp), %rsi
leaq -0x868(%rbp), %rdx
callq 0x4073a0
jmp 0x406365
leaq 0x1afd2b(%rip), %rdx    # 0x5b6097
leaq -0x720(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0x407350
jmp 0x406381
leaq -0x368(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
leaq -0x720(%rbp), %rsi
movq %rsi, -0xda0(%rbp)
callq 0x49f020
movq -0xda0(%rbp), %rdi
callq 0x49efd0
leaq -0x740(%rbp), %rdi
callq 0x49efd0
leaq -0x868(%rbp), %rdi
callq 0x49efd0
leaq -0x8a8(%rbp), %rdi
callq 0x49efd0
leaq -0x888(%rbp), %rdi
callq 0x49efd0
leaq -0x760(%rbp), %rdi
callq 0x49efd0
leaq -0x780(%rbp), %rdi
callq 0x49efd0
leaq -0x808(%rbp), %rdi
callq 0x49efd0
leaq -0x848(%rbp), %rdi
callq 0x49efd0
leaq -0x828(%rbp), %rdi
callq 0x49efd0
leaq -0x7a0(%rbp), %rdi
callq 0x49efd0
leaq -0x7e0(%rbp), %rdi
callq 0x49efd0
leaq -0x7e1(%rbp), %rdi
callq 0x42fff0
leaq -0x7c0(%rbp), %rdi
callq 0x49efd0
movq -0xd98(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0xd8c(%rbp)
jmp 0x406466
movl -0xd8c(%rbp), %eax
movl %eax, -0x3c4(%rbp)
cmpl $0x0, -0x3c4(%rbp)
je 0x40664a
movq -0x18(%rbp), %rdi
leaq 0x1afc13(%rip), %rsi    # 0x5b609d
callq 0x4a0020
jmp 0x406491
movw $0x3, -0x2(%rbp)
movl $0x1, -0x6fc(%rbp)
jmp 0x406cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40662d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406621
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406615
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406609
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x4065b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x740(%rbp), %rdi
callq 0x49efd0
leaq -0x868(%rbp), %rdi
callq 0x49efd0
leaq -0x8a8(%rbp), %rdi
callq 0x49efd0
leaq -0x888(%rbp), %rdi
callq 0x49efd0
leaq -0x760(%rbp), %rdi
callq 0x49efd0
leaq -0x780(%rbp), %rdi
callq 0x49efd0
leaq -0x808(%rbp), %rdi
callq 0x49efd0
leaq -0x848(%rbp), %rdi
callq 0x49efd0
leaq -0x828(%rbp), %rdi
callq 0x49efd0
leaq -0x7a0(%rbp), %rdi
callq 0x49efd0
leaq -0x7e0(%rbp), %rdi
callq 0x49efd0
leaq -0x7e1(%rbp), %rdi
callq 0x42fff0
leaq -0x7c0(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0x968(%rbp), %rdi
callq 0x4a15e0
jmp 0x406660
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x988(%rbp), %rdi
callq 0x4a15e0
jmp 0x406685
leaq -0x948(%rbp), %rdi
leaq -0x968(%rbp), %rsi
leaq -0x988(%rbp), %rdx
callq 0x407470
jmp 0x4066a1
leaq 0x1afa0e(%rip), %rsi    # 0x5b60b6
leaq -0x928(%rbp), %rdi
leaq -0x948(%rbp), %rdx
callq 0x4077b0
jmp 0x4066bd
leaq 0x1af9f6(%rip), %rdx    # 0x5b60ba
leaq -0x908(%rbp), %rdi
leaq -0x928(%rbp), %rsi
callq 0x407350
jmp 0x4066d9
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0x9c8(%rbp), %rdi
callq 0x4a15e0
jmp 0x4066ef
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0x9e8(%rbp), %rdi
callq 0x4a15e0
jmp 0x406714
leaq -0x9a8(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
leaq -0x9e8(%rbp), %rdx
callq 0x407470
jmp 0x406730
leaq -0x8e8(%rbp), %rdi
leaq -0x908(%rbp), %rsi
leaq -0x9a8(%rbp), %rdx
callq 0x4073a0
jmp 0x40674c
leaq 0x1af976(%rip), %rdx    # 0x5b60c9
leaq -0x8c8(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
callq 0x407350
jmp 0x406768
leaq -0x368(%rbp), %rdi
movq %rdi, -0xdb0(%rbp)
leaq -0x8c8(%rbp), %rsi
movq %rsi, -0xdb8(%rbp)
callq 0x49f020
movq -0xdb8(%rbp), %rdi
callq 0x49efd0
leaq -0x8e8(%rbp), %rdi
callq 0x49efd0
leaq -0x9a8(%rbp), %rdi
callq 0x49efd0
leaq -0x9e8(%rbp), %rdi
callq 0x49efd0
leaq -0x9c8(%rbp), %rdi
callq 0x49efd0
leaq -0x908(%rbp), %rdi
callq 0x49efd0
leaq -0x928(%rbp), %rdi
callq 0x49efd0
leaq -0x948(%rbp), %rdi
callq 0x49efd0
leaq -0x988(%rbp), %rdi
callq 0x49efd0
leaq -0x968(%rbp), %rdi
callq 0x49efd0
movq -0xdb0(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0xda4(%rbp)
jmp 0x40681d
movl -0xda4(%rbp), %eax
movl %eax, -0x3c4(%rbp)
cmpl $0x0, -0x3c4(%rbp)
je 0x40698c
movq -0x18(%rbp), %rdi
leaq 0x1af891(%rip), %rsi    # 0x5b60d2
callq 0x4a0020
jmp 0x406848
movw $0x4, -0x2(%rbp)
movl $0x1, -0x6fc(%rbp)
jmp 0x406cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40697b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40696f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406963
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406957
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40694b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x40693f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406933
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406927
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0x8e8(%rbp), %rdi
callq 0x49efd0
leaq -0x9a8(%rbp), %rdi
callq 0x49efd0
leaq -0x9e8(%rbp), %rdi
callq 0x49efd0
leaq -0x9c8(%rbp), %rdi
callq 0x49efd0
leaq -0x908(%rbp), %rdi
callq 0x49efd0
leaq -0x928(%rbp), %rdi
callq 0x49efd0
leaq -0x948(%rbp), %rdi
callq 0x49efd0
leaq -0x988(%rbp), %rdi
callq 0x49efd0
leaq -0x968(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0xaa8(%rbp), %rdi
callq 0x4a15e0
jmp 0x4069a2
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0xac8(%rbp), %rdi
callq 0x4a15e0
jmp 0x4069c7
leaq -0xa88(%rbp), %rdi
leaq -0xaa8(%rbp), %rsi
leaq -0xac8(%rbp), %rdx
callq 0x407470
jmp 0x4069e3
leaq 0x1af6cc(%rip), %rsi    # 0x5b60b6
leaq -0xa68(%rbp), %rdi
leaq -0xa88(%rbp), %rdx
callq 0x4077b0
jmp 0x4069ff
leaq 0x1af6e9(%rip), %rdx    # 0x5b60ef
leaq -0xa48(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0x407350
jmp 0x406a1b
movq -0x10(%rbp), %rsi
addq $0x40, %rsi
leaq -0xb08(%rbp), %rdi
callq 0x4a15e0
jmp 0x406a31
movl -0x3c8(%rbp), %eax
movl %eax, %esi
leaq -0x3a8(%rbp), %rdi
callq 0x4072e0
movq %rax, %rsi
leaq -0xb28(%rbp), %rdi
callq 0x4a15e0
jmp 0x406a56
leaq -0xae8(%rbp), %rdi
leaq -0xb08(%rbp), %rsi
leaq -0xb28(%rbp), %rdx
callq 0x407470
jmp 0x406a72
leaq -0xa28(%rbp), %rdi
leaq -0xa48(%rbp), %rsi
leaq -0xae8(%rbp), %rdx
callq 0x4073a0
jmp 0x406a8e
leaq 0x1af669(%rip), %rdx    # 0x5b60fe
leaq -0xa08(%rbp), %rdi
leaq -0xa28(%rbp), %rsi
callq 0x407350
jmp 0x406aaa
leaq -0x368(%rbp), %rdi
movq %rdi, -0xdc8(%rbp)
leaq -0xa08(%rbp), %rsi
movq %rsi, -0xdd0(%rbp)
callq 0x49f020
movq -0xdd0(%rbp), %rdi
callq 0x49efd0
leaq -0xa28(%rbp), %rdi
callq 0x49efd0
leaq -0xae8(%rbp), %rdi
callq 0x49efd0
leaq -0xb28(%rbp), %rdi
callq 0x49efd0
leaq -0xb08(%rbp), %rdi
callq 0x49efd0
leaq -0xa48(%rbp), %rdi
callq 0x49efd0
leaq -0xa68(%rbp), %rdi
callq 0x49efd0
leaq -0xa88(%rbp), %rdi
callq 0x49efd0
leaq -0xac8(%rbp), %rdi
callq 0x49efd0
leaq -0xaa8(%rbp), %rdi
callq 0x49efd0
movq -0xdc8(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0xdbc(%rbp)
jmp 0x406b5f
movl -0xdbc(%rbp), %eax
movl %eax, -0x3c4(%rbp)
cmpl $0x0, -0x3c4(%rbp)
je 0x406cce
movq -0x18(%rbp), %rdi
leaq 0x1af54f(%rip), %rsi    # 0x5b60d2
callq 0x4a0020
jmp 0x406b8a
movw $0x4, -0x2(%rbp)
movl $0x1, -0x6fc(%rbp)
jmp 0x406cf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406cb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406ca5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406c99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406c8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406c81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406c75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
jmp 0x406c69
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x198(%rbp)
movl %eax, -0x19c(%rbp)
leaq -0xa28(%rbp), %rdi
callq 0x49efd0
leaq -0xae8(%rbp), %rdi
callq 0x49efd0
leaq -0xb28(%rbp), %rdi
callq 0x49efd0
leaq -0xb08(%rbp), %rdi
callq 0x49efd0
leaq -0xa48(%rbp), %rdi
callq 0x49efd0
leaq -0xa68(%rbp), %rdi
callq 0x49efd0
leaq -0xa88(%rbp), %rdi
callq 0x49efd0
leaq -0xac8(%rbp), %rdi
callq 0x49efd0
leaq -0xaa8(%rbp), %rdi
callq 0x49efd0
jmp 0x406d52
jmp 0x406cd0
movl -0x3c8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c8(%rbp)
jmp 0x405446
movw $0x0, -0x2(%rbp)
movl $0x1, -0x6fc(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x407800
leaq -0x3a8(%rbp), %rdi
callq 0x407800
leaq -0x388(%rbp), %rdi
callq 0x49efd0
leaq -0x368(%rbp), %rdi
callq 0x49efd0
leaq -0x348(%rbp), %rdi
callq 0x49efd0
leaq -0x1c0(%rbp), %rdi
callq 0x407800
leaq -0x30(%rbp), %rdi
callq 0x407800
movw -0x2(%rbp), %ax
addq $0xdd0, %rsp            # imm = 0xDD0
popq %rbp
retq
leaq -0x3c0(%rbp), %rdi
callq 0x407800
leaq -0x3a8(%rbp), %rdi
callq 0x407800
leaq -0x388(%rbp), %rdi
callq 0x49efd0
leaq -0x368(%rbp), %rdi
callq 0x49efd0
leaq -0x348(%rbp), %rdi
callq 0x49efd0
leaq -0x1c0(%rbp), %rdi
callq 0x407800
leaq -0x30(%rbp), %rdi
callq 0x407800
movq -0x198(%rbp), %rdi
callq 0x4d3c10
nop