// File: ChnMasterOG[P]KmerGO2/kmergo/KmerGO.cpp
// Function: main
int main(int argc, char* argv[])
{

	if (argc <= 2 || help_or_version(argc, argv))
	{
		print_info();
		return EXIT_FAILURE;
	}

	int32 i;
	char char_temp[1024];
	std::string input_path = "No select", output_path = "No select";

	//------------------------------------------------------------
	// Parse input parameters
	//------------------------------------------------------------

	if (strncmp(argv[1], "kmc3", 4) == 0)
		tool = KMC3;
	else if (strncmp(argv[1], "union", 5) == 0)
		tool = UNION;
	else if (strncmp(argv[1], "filtering", 9) == 0)
		tool = FILTERING;
	else if (strncmp(argv[1], "cap3", 4) == 0)
		tool = CAP3;
	else if (strncmp(argv[1], "all", 3) == 0)
	{
		param.single_step = false;
		tool = ALL;
	}

	if (tool == NO_SELECTED)
	{
		std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
			<< "Error! <tool> is required and is one of {kmc3,union,filtering,cap3,all}.\n";
		return EXIT_FAILURE;
	}

	for (i = 2; i < argc; ++i)
	{
		if (argv[i][0] == '-')
		{
			if (strncmp(argv[i], "-m", 2) == 0)
				param.mode = atoi(&argv[i][3]);
			else if (strncmp(argv[i], "-k", 2) == 0)
				param.k_value = atoi(&argv[i][3]);
			else if (strncmp(argv[i], "-ci", 3) == 0)
				param.ci_value = atoi(&argv[i][4]);
			else if (strncmp(argv[i], "-cs", 3) == 0)
				param.cs_value = atoi(&argv[i][4]);
			else if (strncmp(argv[i], "-n", 2) == 0)
				param.process_number = atoi(&argv[i][3]);
			else if (strncmp(argv[i], "-p", 2) == 0)
				param.p_value = atof(&argv[i][3]);
			else if (strncmp(argv[i], "-assl", 5) == 0)
				param.assl = atof(&argv[i][6]);
			else if (strncmp(argv[i], "-assn", 5) == 0)
				param.assn = atof(&argv[i][6]);
			else if (strncmp(argv[i], "-corr", 5) == 0)
				param.corr_vaule = atof(&argv[i][6]);
			else if (strncmp(argv[i], "-i", 2) == 0)
			{
				strcpy(char_temp, &argv[i][3]);
				input_path = char_temp;
				//if (input_path.compare(input_path.length() - 1, 1, "/", 0, 1) != 0) input_path = input_path + "/";
			}
			else if (strncmp(argv[i], "-o", 2) == 0)
			{
				strcpy(char_temp, &argv[i][3]);
				output_path = char_temp;
				//if (output_path.compare(output_path.length() - 1, 1, "/", 0, 1) != 0) output_path = output_path + "/";
			}
			else if (strncmp(argv[i], "-t", 2) == 0)
			{
				strcpy(char_temp, &argv[i][3]);
				param.csv_path = char_temp;
			}
			else if (strncmp(argv[i], "-e", 2) == 0)
			{
				strcpy(char_temp, &argv[i][3]);
				param.temp_path = char_temp;
				//if (param.temp_path.compare(param.temp_path.length() - 1, 1, "/", 0, 1) != 0) param.temp_path = param.temp_path + "/";
			}
			else
			{
				std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
					<< "Error! Can not read some parameters.\n";
				return EXIT_FAILURE;
			}
		}
	}

	if (input_path == "No select" or output_path == "No select")
	{
		std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
			<< "Error! input files path and output files path are required.\n";
		return EXIT_FAILURE;
	}

	switch (tool)
	{
	case KMC3:
		param.samples_path = input_path;
		param.kmercountings_path = output_path;
		break;
	case UNION:
		param.kmercountings_path = input_path;
		param.matrixes_path = output_path;
		break;
	case FILTERING:
		param.matrixes_path = input_path;
		param.features_path = output_path;
		break;
	case CAP3:
		param.features_path = input_path;
		param.results_path = output_path;
		break;
	case ALL:
		param.samples_path = input_path;
		param.kmercountings_path = joinPath(param.temp_path, "kmer_countings/");
		param.matrixes_path = joinPath(param.temp_path, "kmer_matrixes/");
		param.features_path = joinPath(param.temp_path, "kmer_features/");
		param.results_path = output_path;
		// create folder
		if (system(("mkdir " + param.kmercountings_path).c_str()))
		{
			std::cout << "Error: mkdir" << std::endl;
		}
		if (system(("mkdir " + param.matrixes_path).c_str()))
		{
			std::cout << "Error: mkdir" << std::endl;
		}
		if (system(("mkdir " + param.features_path).c_str()))
		{
			std::cout << "Error: mkdir" << std::endl;
		}
	case NO_SELECTED:
		;
	}

	//------------------------------------------------------------
	// Read CSV
	//------------------------------------------------------------

	bool csv_err = false;
	if (tool == FILTERING || tool == ALL)
	{
		std::cout << "read CSV..." << "\n";
		csv_err = !Read_CSV(param.csv_path, param.trait_information_map);
		if (csv_err)
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "Error! Can't not read the csv file.\n";
			return EXIT_FAILURE;
		}
		if (param.trait_information_map.size() <= 1)
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "Error! Sample number is too small.\n";
			return EXIT_FAILURE;
		}
		if (param.mode == 1)
		{
			param.groupA_name = "";
			param.groupA_number = param.trait_information_map.size();
		}
		else
		{
			param.groupA_name = param.trait_information_map.begin()->second;
			param.groupB_name = "";
			std::map<std::string, std::string>::iterator it;
			for (it = param.trait_information_map.begin(); it != param.trait_information_map.end(); it++) {
				if (!param.groupA_name.compare(it->second)) param.groupA_number++;
				else if (param.groupB_name.compare(it->second) && param.groupB_name.empty())
				{
					param.groupB_name = it->second;
					param.groupB_number++;
				}
				else if (!param.groupB_name.compare(it->second)) param.groupB_number++;
				else 
				{
					std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
						<< "Error! More than 2 groups of data.\n";
					return EXIT_FAILURE;
				}
			}
		}
	}

	//------------------------------------------------------------
	// Run KmerGO
	//------------------------------------------------------------

	///////////////////////////////////////////////////////
	////////////////////////Module 1///////////////////////
	//////////////////////////KMC3/////////////////////////
	///////////////////////////////////////////////////////
	if (tool == KMC3 || tool == ALL)
	{
		std::cout << "runing KMC3..." << "\n";
		if (kmer_counting(param, loginfo))
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "KMC3 step error! \n" << loginfo << "\n";
			return EXIT_FAILURE;
		}
	}

	///////////////////////////////////////////////////////
	////////////////////////Module 2///////////////////////
	/////////////////////////Union/////////////////////////
	///////////////////////////////////////////////////////
	if (tool == UNION || tool == ALL)
	{
		std::cout << "runing UNION..." << "\n";
		if (kmer_union(param, loginfo))
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "Union step error! \n" << loginfo << "\n";
			return EXIT_FAILURE;
		}
	}

	////////////////////////Module 5///////////////////////
	/////////////////Add PCA function here/////////////////
	/////////Read k-mer matrix and calculate PCA///////////
	/* Add code here. */

	///////////////////////////////////////////////////////
	////////////////////////Module 3///////////////////////
	///////////////////////Filtering///////////////////////
	///////////////////////////////////////////////////////
	if (tool == FILTERING || tool == ALL)
	{
		std::cout << "runing FILTERING..." << "\n";
		if (kmer_filtering(param, loginfo))
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "Filtering step error! \n" << loginfo << "\n";
			return EXIT_FAILURE;
		}
	}

	///////////////////////////////////////////////////////
	////////////////////////Module 4///////////////////////
	//////////////////////////CAP3/////////////////////////
	///////////////////////////////////////////////////////
	if (tool == CAP3 || tool == ALL)
	{
		std::cout << "runing CAP3..." << "\n";
		if (kmer_assembly(param, loginfo))
		{
			std::cout << "KmerGO ver. " << KMERGO_VER << " (" << KMERGO_DATE << ")\n"
				<< "CAP3 step error! \n" << loginfo << "\n";
			return EXIT_FAILURE;
		}
	}

	return EXIT_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x940, %rsp            # imm = 0x940
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpl $0x2, -0x8(%rbp)
jle 0x421511
movl -0x8(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x421200
testb $0x1, %al
jne 0x421511
jmp 0x421522
callq 0x421380
movl $0x1, -0x4(%rbp)
jmp 0x422e97
leaq -0x441(%rbp), %rdi
movq %rdi, -0x670(%rbp)
callq 0x42ffd0
movq -0x670(%rbp), %rdx
leaq 0x1956d1(%rip), %rsi    # 0x5b6c14
leaq -0x440(%rbp), %rdi
callq 0x406db0
jmp 0x421551
leaq -0x441(%rbp), %rdi
callq 0x42fff0
leaq -0x479(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x42ffd0
movq -0x678(%rbp), %rdx
leaq 0x195696(%rip), %rsi    # 0x5b6c14
leaq -0x478(%rbp), %rdi
callq 0x406db0
jmp 0x42158c
leaq -0x479(%rbp), %rdi
callq 0x42fff0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x195677(%rip), %rsi    # 0x5b6c1e
movl $0x4, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x42160b
movl $0x1, 0x21913c(%rip)    # 0x63a6fc
jmp 0x4216c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x441(%rbp), %rdi
callq 0x42fff0
jmp 0x422ea3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x479(%rbp), %rdi
callq 0x42fff0
jmp 0x422e89
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x195609(%rip), %rsi    # 0x5b6c23
movl $0x5, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421638
movl $0x2, 0x2190c9(%rip)    # 0x63a6fc
jmp 0x4216c1
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x1955e2(%rip), %rsi    # 0x5b6c29
movl $0x9, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421662
movl $0x3, 0x21909c(%rip)    # 0x63a6fc
jmp 0x4216bf
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x1955c2(%rip), %rsi    # 0x5b6c33
movl $0x4, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x42168c
movl $0x4, 0x219072(%rip)    # 0x63a6fc
jmp 0x4216bd
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x1a39b5(%rip), %rsi    # 0x5c5050
movl $0x3, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x4216bb
movb $0x0, 0x21914f(%rip)    # 0x63a800
movl $0x5, 0x219041(%rip)    # 0x63a6fc
jmp 0x4216bd
jmp 0x4216bf
jmp 0x4216c1
jmp 0x4216c3
cmpl $0x0, 0x219032(%rip)    # 0x63a6fc
jne 0x42179e
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x19511f(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x680(%rbp)
jmp 0x4216ec
movq -0x680(%rbp), %rdi
leaq 0x195110(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x688(%rbp)
jmp 0x421708
movq -0x688(%rbp), %rdi
leaq 0x199393(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x690(%rbp)
jmp 0x421724
movq -0x690(%rbp), %rdi
leaq 0x1950de(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x698(%rbp)
jmp 0x421740
movq -0x698(%rbp), %rdi
leaq 0x195228(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x6a0(%rbp)
jmp 0x42175c
movq -0x6a0(%rbp), %rdi
leaq 0x1954ce(%rip), %rsi    # 0x5b6c38
callq 0x498c00
jmp 0x421771
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
jmp 0x422e7d
movl $0x2, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x421c92
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x421c82
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1954a7(%rip), %rsi    # 0x5b6c83
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x42180b
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x3, %rdi
callq 0x4ee970
movb %al, 0x218f08(%rip)     # 0x63a70e
jmp 0x421c80
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x194839(%rip), %rsi    # 0x5b6057
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x42184e
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x3, %rdi
callq 0x4ee970
movw %ax, 0x218eb7(%rip)     # 0x63a700
jmp 0x421c7e
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1947fa(%rip), %rsi    # 0x5b605b
movl $0x3, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421890
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x4, %rdi
callq 0x4ee970
movl %eax, 0x218e79(%rip)    # 0x63a704
jmp 0x421c7c
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1947bd(%rip), %rsi    # 0x5b6060
movl $0x3, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x4218d2
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x4, %rdi
callq 0x4ee970
movl %eax, 0x218e3b(%rip)    # 0x63a708
jmp 0x421c7a
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1953a1(%rip), %rsi    # 0x5b6c86
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421915
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x3, %rdi
callq 0x4ee970
movw %ax, 0x218dfc(%rip)     # 0x63a70c
jmp 0x421c78
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x195361(%rip), %rsi    # 0x5b6c89
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x42195d
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x3, %rdi
callq 0x4ee960
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x218dbc(%rip)   # 0x63a714
jmp 0x421c76
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x19531c(%rip), %rsi    # 0x5b6c8c
movl $0x5, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x4219a5
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x6, %rdi
callq 0x4ee960
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x218d70(%rip)   # 0x63a710
jmp 0x421c74
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1952da(%rip), %rsi    # 0x5b6c92
movl $0x5, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x4219ed
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x6, %rdi
callq 0x4ee960
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x218d30(%rip)   # 0x63a718
jmp 0x421c72
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x195298(%rip), %rsi    # 0x5b6c98
movl $0x5, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421a35
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
addq $0x6, %rdi
callq 0x4ee960
cvtsd2ss %xmm0, %xmm0
movss %xmm0, 0x218cec(%rip)   # 0x63a71c
jmp 0x421c70
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x195256(%rip), %rsi    # 0x5b6c9e
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421a94
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x3, %rsi
leaq -0x420(%rbp), %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x4010a0
movq -0x6a8(%rbp), %rsi
leaq -0x440(%rbp), %rdi
callq 0x4a0020
jmp 0x421a8f
jmp 0x421c6e
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x1951fa(%rip), %rsi    # 0x5b6ca1
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421af3
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x3, %rsi
leaq -0x420(%rbp), %rdi
movq %rdi, -0x6b0(%rbp)
callq 0x4010a0
movq -0x6b0(%rbp), %rsi
leaq -0x478(%rbp), %rdi
callq 0x4a0020
jmp 0x421aee
jmp 0x421c6c
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x19519e(%rip), %rsi    # 0x5b6ca4
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421b52
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x3, %rsi
leaq -0x420(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x4010a0
movq -0x6b8(%rbp), %rsi
leaq 0x218c9a(%rip), %rdi    # 0x63a7e0
callq 0x4a0020
jmp 0x421b4d
jmp 0x421c6a
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
leaq 0x195142(%rip), %rsi    # 0x5b6ca7
movl $0x2, %edx
callq 0x401048
cmpl $0x0, %eax
jne 0x421bb1
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
addq $0x3, %rsi
leaq -0x420(%rbp), %rdi
movq %rdi, -0x6c0(%rbp)
callq 0x4010a0
movq -0x6c0(%rbp), %rsi
leaq 0x218c1b(%rip), %rdi    # 0x63a7c0
callq 0x4a0020
jmp 0x421bac
jmp 0x421c68
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194c3e(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x6c8(%rbp)
jmp 0x421bcd
movq -0x6c8(%rbp), %rdi
leaq 0x194c2f(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x6d0(%rbp)
jmp 0x421be9
movq -0x6d0(%rbp), %rdi
leaq 0x198eb2(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x6d8(%rbp)
jmp 0x421c05
movq -0x6d8(%rbp), %rdi
leaq 0x194bfd(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x6e0(%rbp)
jmp 0x421c21
movq -0x6e0(%rbp), %rdi
leaq 0x194d47(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x6e8(%rbp)
jmp 0x421c3d
movq -0x6e8(%rbp), %rdi
leaq 0x19505f(%rip), %rsi    # 0x5b6caa
callq 0x498c00
jmp 0x421c52
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x421c6a
jmp 0x421c6c
jmp 0x421c6e
jmp 0x421c70
jmp 0x421c72
jmp 0x421c74
jmp 0x421c76
jmp 0x421c78
jmp 0x421c7a
jmp 0x421c7c
jmp 0x421c7e
jmp 0x421c80
jmp 0x421c82
jmp 0x421c84
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x4217a5
leaq 0x194f7b(%rip), %rsi    # 0x5b6c14
leaq -0x440(%rbp), %rdi
callq 0x423200
movb %al, -0x6e9(%rbp)
jmp 0x421cad
movb -0x6e9(%rbp), %al
testb $0x1, %al
jne 0x421ce3
jmp 0x421cb9
leaq 0x194f54(%rip), %rsi    # 0x5b6c14
leaq -0x478(%rbp), %rdi
callq 0x423200
movb %al, -0x6ea(%rbp)
jmp 0x421cd4
movb -0x6ea(%rbp), %al
testb $0x1, %al
jne 0x421ce3
jmp 0x421d9a
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194b0c(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x6f8(%rbp)
jmp 0x421cff
movq -0x6f8(%rbp), %rdi
leaq 0x194afd(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x700(%rbp)
jmp 0x421d1b
movq -0x700(%rbp), %rdi
leaq 0x198d80(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x708(%rbp)
jmp 0x421d37
movq -0x708(%rbp), %rdi
leaq 0x194acb(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x710(%rbp)
jmp 0x421d53
movq -0x710(%rbp), %rdi
leaq 0x194c15(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x718(%rbp)
jmp 0x421d6f
movq -0x718(%rbp), %rdi
leaq 0x194f53(%rip), %rsi    # 0x5b6cd0
callq 0x498c00
jmp 0x421d84
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
movl 0x21895c(%rip), %eax    # 0x63a6fc
movq %rax, -0x720(%rbp)
subq $0x5, %rax
ja 0x422393
movq -0x720(%rbp), %rax
leaq 0x194a15(%rip), %rcx    # 0x5b67d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x218951(%rip), %rdi    # 0x63a720
leaq -0x440(%rbp), %rsi
callq 0x49f000
jmp 0x421ddd
leaq 0x21895c(%rip), %rdi    # 0x63a740
leaq -0x478(%rbp), %rsi
callq 0x49f000
jmp 0x421df2
jmp 0x422393
leaq 0x218942(%rip), %rdi    # 0x63a740
leaq -0x440(%rbp), %rsi
callq 0x49f000
jmp 0x421e0c
leaq 0x21894d(%rip), %rdi    # 0x63a760
leaq -0x478(%rbp), %rsi
callq 0x49f000
jmp 0x421e21
jmp 0x422393
leaq 0x218933(%rip), %rdi    # 0x63a760
leaq -0x440(%rbp), %rsi
callq 0x49f000
jmp 0x421e3b
leaq 0x21893e(%rip), %rdi    # 0x63a780
leaq -0x478(%rbp), %rsi
callq 0x49f000
jmp 0x421e50
jmp 0x422393
leaq 0x218924(%rip), %rdi    # 0x63a780
leaq -0x440(%rbp), %rsi
callq 0x49f000
jmp 0x421e6a
leaq 0x21892f(%rip), %rdi    # 0x63a7a0
leaq -0x478(%rbp), %rsi
callq 0x49f000
jmp 0x421e7f
jmp 0x422393
leaq 0x218895(%rip), %rdi    # 0x63a720
leaq -0x440(%rbp), %rsi
callq 0x49f000
jmp 0x421e99
leaq 0x218920(%rip), %rsi    # 0x63a7c0
leaq -0x4c0(%rbp), %rdi
callq 0x4a15e0
jmp 0x421eae
leaq -0x4e1(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x42ffd0
movq -0x728(%rbp), %rdx
leaq 0x194e3e(%rip), %rsi    # 0x5b6d0d
leaq -0x4e0(%rbp), %rdi
callq 0x406db0
jmp 0x421edd
leaq -0x4a0(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
leaq -0x4e0(%rbp), %rdx
callq 0x407470
jmp 0x421ef9
leaq 0x218840(%rip), %rdi    # 0x63a740
leaq -0x4a0(%rbp), %rsi
movq %rsi, -0x730(%rbp)
callq 0x49f020
movq -0x730(%rbp), %rdi
callq 0x49efd0
leaq -0x4e0(%rbp), %rdi
callq 0x49efd0
leaq -0x4e1(%rbp), %rdi
callq 0x42fff0
leaq -0x4c0(%rbp), %rdi
callq 0x49efd0
leaq 0x218876(%rip), %rsi    # 0x63a7c0
leaq -0x528(%rbp), %rdi
callq 0x4a15e0
jmp 0x421f58
leaq -0x549(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0x42ffd0
movq -0x738(%rbp), %rdx
leaq 0x194da4(%rip), %rsi    # 0x5b6d1d
leaq -0x548(%rbp), %rdi
callq 0x406db0
jmp 0x421f87
leaq -0x508(%rbp), %rdi
leaq -0x528(%rbp), %rsi
leaq -0x548(%rbp), %rdx
callq 0x407470
jmp 0x421fa3
leaq 0x2187b6(%rip), %rdi    # 0x63a760
leaq -0x508(%rbp), %rsi
movq %rsi, -0x740(%rbp)
callq 0x49f020
movq -0x740(%rbp), %rdi
callq 0x49efd0
leaq -0x548(%rbp), %rdi
callq 0x49efd0
leaq -0x549(%rbp), %rdi
callq 0x42fff0
leaq -0x528(%rbp), %rdi
callq 0x49efd0
leaq 0x2187cc(%rip), %rsi    # 0x63a7c0
leaq -0x590(%rbp), %rdi
callq 0x4a15e0
jmp 0x422002
leaq -0x5b1(%rbp), %rdi
movq %rdi, -0x748(%rbp)
callq 0x42ffd0
movq -0x748(%rbp), %rdx
leaq 0x194d09(%rip), %rsi    # 0x5b6d2c
leaq -0x5b0(%rbp), %rdi
callq 0x406db0
jmp 0x422031
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rsi
leaq -0x5b0(%rbp), %rdx
callq 0x407470
jmp 0x42204d
leaq 0x21872c(%rip), %rdi    # 0x63a780
leaq -0x570(%rbp), %rsi
movq %rsi, -0x750(%rbp)
callq 0x49f020
movq -0x750(%rbp), %rdi
callq 0x49efd0
leaq -0x5b0(%rbp), %rdi
callq 0x49efd0
leaq -0x5b1(%rbp), %rdi
callq 0x42fff0
leaq -0x590(%rbp), %rdi
callq 0x49efd0
leaq 0x218702(%rip), %rdi    # 0x63a7a0
leaq -0x478(%rbp), %rsi
callq 0x49f000
jmp 0x4220ac
leaq 0x194c88(%rip), %rsi    # 0x5b6d3b
leaq 0x218686(%rip), %rdx    # 0x63a740
leaq -0x5d8(%rbp), %rdi
callq 0x40bd30
jmp 0x4220c8
leaq -0x5d8(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0x754(%rbp)
jmp 0x4220e4
leaq -0x5d8(%rbp), %rdi
callq 0x49efd0
movl -0x754(%rbp), %eax
cmpl $0x0, %eax
je 0x422245
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194c35(%rip), %rsi    # 0x5b6d42
callq 0x498c00
movq %rax, -0x760(%rbp)
jmp 0x42211b
movq -0x760(%rbp), %rdi
movq $0x4984e0, %rsi         # imm = 0x4984E0
callq 0x4976f0
jmp 0x422130
jmp 0x422245
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
jmp 0x422167
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x49efd0
leaq -0x4e1(%rbp), %rdi
callq 0x42fff0
leaq -0x4c0(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
jmp 0x4221b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x49efd0
leaq -0x549(%rbp), %rdi
callq 0x42fff0
leaq -0x528(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
jmp 0x422205
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x5b0(%rbp), %rdi
callq 0x49efd0
leaq -0x5b1(%rbp), %rdi
callq 0x42fff0
leaq -0x590(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
leaq 0x194aef(%rip), %rsi    # 0x5b6d3b
leaq 0x21850d(%rip), %rdx    # 0x63a760
leaq -0x5f8(%rbp), %rdi
callq 0x40bd30
jmp 0x422261
leaq -0x5f8(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0x764(%rbp)
jmp 0x42227d
leaq -0x5f8(%rbp), %rdi
callq 0x49efd0
movl -0x764(%rbp), %eax
cmpl $0x0, %eax
je 0x4222ea
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194aa0(%rip), %rsi    # 0x5b6d42
callq 0x498c00
movq %rax, -0x770(%rbp)
jmp 0x4222b0
movq -0x770(%rbp), %rdi
movq $0x4984e0, %rsi         # imm = 0x4984E0
callq 0x4976f0
jmp 0x4222c5
jmp 0x4222ea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
leaq 0x194a4a(%rip), %rsi    # 0x5b6d3b
leaq 0x218488(%rip), %rdx    # 0x63a780
leaq -0x618(%rbp), %rdi
callq 0x40bd30
jmp 0x422306
leaq -0x618(%rbp), %rdi
callq 0x4a0a10
movq %rax, %rdi
callq 0x4f9050
movl %eax, -0x774(%rbp)
jmp 0x422322
leaq -0x618(%rbp), %rdi
callq 0x49efd0
movl -0x774(%rbp), %eax
cmpl $0x0, %eax
je 0x42238f
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x1949fb(%rip), %rsi    # 0x5b6d42
callq 0x498c00
movq %rax, -0x780(%rbp)
jmp 0x422355
movq -0x780(%rbp), %rdi
movq $0x4984e0, %rsi         # imm = 0x4984E0
callq 0x4976f0
jmp 0x42236a
jmp 0x42238f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x618(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
jmp 0x422391
jmp 0x422393
movb $0x0, -0x619(%rbp)
cmpl $0x3, 0x21835b(%rip)    # 0x63a6fc
je 0x4223b0
cmpl $0x5, 0x218352(%rip)    # 0x63a6fc
jne 0x4228c1
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194991(%rip), %rsi    # 0x5b6d4f
callq 0x498c00
movq %rax, -0x788(%rbp)
jmp 0x4223cc
movq -0x788(%rbp), %rdi
leaq 0x19e110(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x4223e1
leaq 0x2183f8(%rip), %rsi    # 0x63a7e0
leaq -0x640(%rbp), %rdi
callq 0x4a15e0
jmp 0x4223f6
leaq 0x21845b(%rip), %rsi    # 0x63a858
leaq -0x640(%rbp), %rdi
callq 0x41eb50
movb %al, -0x789(%rbp)
jmp 0x422411
movb -0x789(%rbp), %al
xorb $-0x1, %al
andb $0x1, %al
movb %al, -0x619(%rbp)
leaq -0x640(%rbp), %rdi
callq 0x49efd0
testb $0x1, -0x619(%rbp)
je 0x422514
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x1943b5(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x798(%rbp)
jmp 0x422456
movq -0x798(%rbp), %rdi
leaq 0x1943a6(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x7a0(%rbp)
jmp 0x422472
movq -0x7a0(%rbp), %rdi
leaq 0x198629(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x7a8(%rbp)
jmp 0x42248e
movq -0x7a8(%rbp), %rdi
leaq 0x194374(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x7b0(%rbp)
jmp 0x4224aa
movq -0x7b0(%rbp), %rdi
leaq 0x1944be(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x7b8(%rbp)
jmp 0x4224c6
movq -0x7b8(%rbp), %rdi
leaq 0x194887(%rip), %rsi    # 0x5b6d5b
callq 0x498c00
jmp 0x4224db
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x450(%rbp)
movl %eax, -0x454(%rbp)
leaq -0x640(%rbp), %rdi
callq 0x49efd0
jmp 0x422e7d
leaq 0x2181e5(%rip), %rdi    # 0x63a700
addq $0x158, %rdi            # imm = 0x158
callq 0x423230
cmpq $0x1, %rax
ja 0x4225e8
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x1942be(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x7c0(%rbp)
jmp 0x42254d
movq -0x7c0(%rbp), %rdi
leaq 0x1942af(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x7c8(%rbp)
jmp 0x422569
movq -0x7c8(%rbp), %rdi
leaq 0x198532(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x7d0(%rbp)
jmp 0x422585
movq -0x7d0(%rbp), %rdi
leaq 0x19427d(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x7d8(%rbp)
jmp 0x4225a1
movq -0x7d8(%rbp), %rdi
leaq 0x1943c7(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x7e0(%rbp)
jmp 0x4225bd
movq -0x7e0(%rbp), %rdi
leaq 0x1947b5(%rip), %rsi    # 0x5b6d80
callq 0x498c00
jmp 0x4225d2
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
movzbl 0x21811f(%rip), %eax    # 0x63a70e
cmpl $0x1, %eax
jne 0x422627
leaq 0x21820d(%rip), %rdi    # 0x63a808
leaq 0x1b7900(%rip), %rsi    # 0x5d9f02
callq 0x4a0020
jmp 0x422609
leaq 0x2180f0(%rip), %rdi    # 0x63a700
addq $0x158, %rdi            # imm = 0x158
callq 0x423230
movl %eax, 0x218206(%rip)    # 0x63a828
jmp 0x4228bf
leaq 0x21822a(%rip), %rdi    # 0x63a858
callq 0x423250
movq %rax, -0x648(%rbp)
leaq -0x648(%rbp), %rdi
callq 0x423280
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x2181b4(%rip), %rdi    # 0x63a808
callq 0x49f000
jmp 0x42265b
leaq 0x2181ce(%rip), %rdi    # 0x63a830
leaq 0x1b7899(%rip), %rsi    # 0x5d9f02
callq 0x4a0020
jmp 0x422670
leaq -0x650(%rbp), %rdi
callq 0x4232a0
leaq 0x21807d(%rip), %rdi    # 0x63a700
addq $0x158, %rdi            # imm = 0x158
callq 0x423250
movq %rax, -0x658(%rbp)
movq -0x658(%rbp), %rax
movq %rax, -0x650(%rbp)
leaq 0x218055(%rip), %rdi    # 0x63a700
addq $0x158, %rdi            # imm = 0x158
callq 0x40d970
movq %rax, -0x660(%rbp)
leaq -0x650(%rbp), %rdi
leaq -0x660(%rbp), %rsi
callq 0x416150
testb $0x1, %al
jne 0x4226da
jmp 0x4228bd
leaq -0x650(%rbp), %rdi
callq 0x423280
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x218114(%rip), %rdi    # 0x63a808
callq 0x4a1030
movl %eax, -0x7e4(%rbp)
jmp 0x422701
movl -0x7e4(%rbp), %eax
cmpl $0x0, %eax
jne 0x422720
movl 0x218116(%rip), %eax    # 0x63a828
addl $0x1, %eax
movl %eax, 0x21810d(%rip)    # 0x63a828
jmp 0x4228a1
leaq -0x650(%rbp), %rdi
callq 0x423280
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x2180f6(%rip), %rdi    # 0x63a830
callq 0x4a1030
movl %eax, -0x7e8(%rbp)
jmp 0x422747
movl -0x7e8(%rbp), %eax
cmpl $0x0, %eax
je 0x4227a0
leaq 0x217fa7(%rip), %rdi    # 0x63a700
addq $0x130, %rdi            # imm = 0x130
callq 0x49f4f0
testb $0x1, %al
jne 0x42276b
jmp 0x4227a0
leaq -0x650(%rbp), %rdi
callq 0x423280
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x2180ab(%rip), %rdi    # 0x63a830
callq 0x49f000
jmp 0x42278c
movl 0x2180be(%rip), %eax    # 0x63a850
addl $0x1, %eax
movl %eax, 0x2180b5(%rip)    # 0x63a850
jmp 0x42289f
leaq -0x650(%rbp), %rdi
callq 0x423280
movq %rax, %rsi
addq $0x20, %rsi
leaq 0x218076(%rip), %rdi    # 0x63a830
callq 0x4a1030
movl %eax, -0x7ec(%rbp)
jmp 0x4227c7
movl -0x7ec(%rbp), %eax
cmpl $0x0, %eax
jne 0x4227e6
movl 0x218078(%rip), %eax    # 0x63a850
addl $0x1, %eax
movl %eax, 0x21806f(%rip)    # 0x63a850
jmp 0x42289d
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194009(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x7f8(%rbp)
jmp 0x422802
movq -0x7f8(%rbp), %rdi
leaq 0x193ffa(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x800(%rbp)
jmp 0x42281e
movq -0x800(%rbp), %rdi
leaq 0x19827d(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x808(%rbp)
jmp 0x42283a
movq -0x808(%rbp), %rdi
leaq 0x193fc8(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x810(%rbp)
jmp 0x422856
movq -0x810(%rbp), %rdi
leaq 0x194112(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x818(%rbp)
jmp 0x422872
movq -0x818(%rbp), %rdi
leaq 0x194524(%rip), %rsi    # 0x5b6da4
callq 0x498c00
jmp 0x422887
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x42289f
jmp 0x4228a1
jmp 0x4228a3
leaq -0x650(%rbp), %rdi
xorl %esi, %esi
callq 0x4232c0
movq %rax, -0x668(%rbp)
jmp 0x4226a4
jmp 0x4228bf
jmp 0x4228c1
cmpl $0x1, 0x217e34(%rip)    # 0x63a6fc
je 0x4228d7
cmpl $0x5, 0x217e2b(%rip)    # 0x63a6fc
jne 0x422a26
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x1944e3(%rip), %rsi    # 0x5b6dc8
callq 0x498c00
movq %rax, -0x820(%rbp)
jmp 0x4228f3
movq -0x820(%rbp), %rdi
leaq 0x19dbe9(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422908
leaq 0x217df1(%rip), %rdi    # 0x63a700
leaq 0x217f72(%rip), %rsi    # 0x63a888
callq 0x404b80
movw %ax, -0x822(%rbp)
jmp 0x422924
movw -0x822(%rbp), %ax
cmpw $0x0, %ax
je 0x422a24
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x193eba(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x830(%rbp)
jmp 0x422951
movq -0x830(%rbp), %rdi
leaq 0x193eab(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x838(%rbp)
jmp 0x42296d
movq -0x838(%rbp), %rdi
leaq 0x19812e(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x840(%rbp)
jmp 0x422989
movq -0x840(%rbp), %rdi
leaq 0x193e79(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x848(%rbp)
jmp 0x4229a5
movq -0x848(%rbp), %rdi
leaq 0x193fc3(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x850(%rbp)
jmp 0x4229c1
movq -0x850(%rbp), %rdi
leaq 0x194408(%rip), %rsi    # 0x5b6dd7
callq 0x498c00
movq %rax, -0x858(%rbp)
jmp 0x4229dd
movq -0x858(%rbp), %rdi
leaq 0x217e9d(%rip), %rsi    # 0x63a888
callq 0x4a1880
movq %rax, -0x860(%rbp)
jmp 0x4229f9
movq -0x860(%rbp), %rdi
leaq 0x19dae3(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422a0e
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x422a26
cmpl $0x2, 0x217ccf(%rip)    # 0x63a6fc
je 0x422a3c
cmpl $0x5, 0x217cc6(%rip)    # 0x63a6fc
jne 0x422b8b
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x1943a0(%rip), %rsi    # 0x5b6dea
callq 0x498c00
movq %rax, -0x868(%rbp)
jmp 0x422a58
movq -0x868(%rbp), %rdi
leaq 0x19da84(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422a6d
leaq 0x217c8c(%rip), %rdi    # 0x63a700
leaq 0x217e0d(%rip), %rsi    # 0x63a888
callq 0x40a600
movw %ax, -0x86a(%rbp)
jmp 0x422a89
movw -0x86a(%rbp), %ax
cmpw $0x0, %ax
je 0x422b89
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x193d55(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x878(%rbp)
jmp 0x422ab6
movq -0x878(%rbp), %rdi
leaq 0x193d46(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x880(%rbp)
jmp 0x422ad2
movq -0x880(%rbp), %rdi
leaq 0x197fc9(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x888(%rbp)
jmp 0x422aee
movq -0x888(%rbp), %rdi
leaq 0x193d14(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x890(%rbp)
jmp 0x422b0a
movq -0x890(%rbp), %rdi
leaq 0x193e5e(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x898(%rbp)
jmp 0x422b26
movq -0x898(%rbp), %rdi
leaq 0x1942c6(%rip), %rsi    # 0x5b6dfa
callq 0x498c00
movq %rax, -0x8a0(%rbp)
jmp 0x422b42
movq -0x8a0(%rbp), %rdi
leaq 0x217d38(%rip), %rsi    # 0x63a888
callq 0x4a1880
movq %rax, -0x8a8(%rbp)
jmp 0x422b5e
movq -0x8a8(%rbp), %rdi
leaq 0x19d97e(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422b73
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x422b8b
cmpl $0x3, 0x217b6a(%rip)    # 0x63a6fc
je 0x422ba1
cmpl $0x5, 0x217b61(%rip)    # 0x63a6fc
jne 0x422cf0
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x19425f(%rip), %rsi    # 0x5b6e0e
callq 0x498c00
movq %rax, -0x8b0(%rbp)
jmp 0x422bbd
movq -0x8b0(%rbp), %rdi
leaq 0x19d91f(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422bd2
leaq 0x217b27(%rip), %rdi    # 0x63a700
leaq 0x217ca8(%rip), %rsi    # 0x63a888
callq 0x415c30
movw %ax, -0x8b2(%rbp)
jmp 0x422bee
movw -0x8b2(%rbp), %ax
cmpw $0x0, %ax
je 0x422cee
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x193bf0(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x8c0(%rbp)
jmp 0x422c1b
movq -0x8c0(%rbp), %rdi
leaq 0x193be1(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x8c8(%rbp)
jmp 0x422c37
movq -0x8c8(%rbp), %rdi
leaq 0x197e64(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x8d0(%rbp)
jmp 0x422c53
movq -0x8d0(%rbp), %rdi
leaq 0x193baf(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x8d8(%rbp)
jmp 0x422c6f
movq -0x8d8(%rbp), %rdi
leaq 0x193cf9(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x8e0(%rbp)
jmp 0x422c8b
movq -0x8e0(%rbp), %rdi
leaq 0x194189(%rip), %rsi    # 0x5b6e22
callq 0x498c00
movq %rax, -0x8e8(%rbp)
jmp 0x422ca7
movq -0x8e8(%rbp), %rdi
leaq 0x217bd3(%rip), %rsi    # 0x63a888
callq 0x4a1880
movq %rax, -0x8f0(%rbp)
jmp 0x422cc3
movq -0x8f0(%rbp), %rdi
leaq 0x19d819(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422cd8
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x422cf0
cmpl $0x4, 0x217a05(%rip)    # 0x63a6fc
je 0x422d06
cmpl $0x5, 0x2179fc(%rip)    # 0x63a6fc
jne 0x422e52
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x194126(%rip), %rsi    # 0x5b6e3a
callq 0x498c00
movq %rax, -0x8f8(%rbp)
jmp 0x422d22
movq -0x8f8(%rbp), %rdi
leaq 0x19d7ba(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422d37
leaq 0x2179c2(%rip), %rdi    # 0x63a700
leaq 0x217b43(%rip), %rsi    # 0x63a888
callq 0x41c900
movw %ax, -0x8fa(%rbp)
jmp 0x422d53
movw -0x8fa(%rbp), %ax
cmpw $0x0, %ax
je 0x422e50
movq $0x1b90900, %rdi        # imm = 0x1B90900
leaq 0x193a8b(%rip), %rsi    # 0x5b67fd
callq 0x498c00
movq %rax, -0x908(%rbp)
jmp 0x422d80
movq -0x908(%rbp), %rdi
leaq 0x193a7c(%rip), %rsi    # 0x5b680a
callq 0x498c00
movq %rax, -0x910(%rbp)
jmp 0x422d9c
movq -0x910(%rbp), %rdi
leaq 0x197cff(%rip), %rsi    # 0x5baaa9
callq 0x498c00
movq %rax, -0x918(%rbp)
jmp 0x422db8
movq -0x918(%rbp), %rdi
leaq 0x193a4a(%rip), %rsi    # 0x5b6810
callq 0x498c00
movq %rax, -0x920(%rbp)
jmp 0x422dd4
movq -0x920(%rbp), %rdi
leaq 0x193b94(%rip), %rsi    # 0x5b6976
callq 0x498c00
movq %rax, -0x928(%rbp)
jmp 0x422df0
movq -0x928(%rbp), %rdi
leaq 0x19404b(%rip), %rsi    # 0x5b6e49
callq 0x498c00
movq %rax, -0x930(%rbp)
jmp 0x422e0c
movq -0x930(%rbp), %rdi
leaq 0x217a6e(%rip), %rsi    # 0x63a888
callq 0x4a1880
movq %rax, -0x938(%rbp)
jmp 0x422e28
movq -0x938(%rbp), %rdi
leaq 0x19d6b4(%rip), %rsi    # 0x5c04ea
callq 0x498c00
jmp 0x422e3d
movl $0x1, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
jmp 0x422e63
jmp 0x422e52
movl $0x0, -0x4(%rbp)
movl $0x1, -0x480(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x49efd0
leaq -0x440(%rbp), %rdi
callq 0x49efd0
jmp 0x422e97
leaq -0x478(%rbp), %rdi
callq 0x49efd0
leaq -0x440(%rbp), %rdi
callq 0x49efd0
jmp 0x422ea3
movl -0x4(%rbp), %eax
addq $0x940, %rsp            # imm = 0x940
popq %rbp
retq
movq -0x450(%rbp), %rdi
callq 0x4d3c10
nop