// File: /workspace/github_cpp_makefile_star2_O2/dtsaras[P]GCW/option.cpp
// Function: OptionParser::setPara(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, float&, float&, int&, int&, int&, int&, int&, float&, int&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, int&, int&, bool&, bool&, bool&, bool&, bool&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, bool&, bool&, float&, float&)
void OptionParser::setPara(std::string &algorithms, std::string &dataset, std::string &usersLocationsFile, std::string &eventsLocationsFile, std::string &similarities_file, std::string &dt_type, float &epsilon, float &delta, int &budget, int &P, int &num_of_monte_carlo_iterations, int &monte_carlo_iterations_tsim, int &t, float &percent, int &reps, std::string &variable, std::string &cond, int &rounds, int &m, bool &exp1, bool &exp2, bool &exp3, bool &exp4, bool &exp5, std::string &fileName, std::string &ris_alg, bool &sim, bool &rand_edges, float &mu, float &sigma){
	// Algorith (EG, CG, RG, NN, RD)
	char *  algorithm = getPara("-alg");
	if (algorithm == NULL){
		algorithms = "EG";
	}
	else if (strcmp(algorithm, "all") == 0){
		algorithms = "EGNANNRD";
	}
	else {
		algorithms = algorithm;
	}

	
	// Dataset // 0: Foursquare, 1: Gowalla
	char *  dt = getPara("-dt");
	char * prob = getPara("-pr");
	char * com = getPara("-clust");
	char * box = getPara("-box");
	std::string path = "./data/";
	if (dt == NULL || strcmp(dt, "Gowalla") == 0 || strcmp(dt, "G") == 0 || strcmp(dt, "g") == 0){
		path += "Gowalla/";
		if (com == NULL || strcmp(com, "original") == 0){
			path += "original/";
		}
		else if(strcmp(com, "kmeans") == 0 || strcmp(com, "Kmeans") == 0 || strcmp(com, "k-means") == 0){
			path += "kmeans/";
		}
		else if(strcmp(com, "dgcd") == 0 || strcmp(com, "dgcd") == 0){
			path += "dgcd/";
		}
		dataset = path + "gowalla.bin";
		usersLocationsFile = path + "users_locations_gowalla.txt";
		eventsLocationsFile = "./data/Gowalla/events_locations_gowalla.txt";
		if (box != NULL && (strcmp(box, "T") == 0 || strcmp(box, "True") == 0 || strcmp(box, "true") == 0)){
			eventsLocationsFile = "./data/Gowalla/box_events_locations_gowalla.txt";
		}
		dt_type = "gsn";
	}
	else if (strcmp(dt, "Foursquare") == 0 || strcmp(dt, "F") == 0 || strcmp(dt, "f") == 0){
		path += "Foursquare/";
		if (com == NULL || strcmp(com, "original") == 0){
			path += "original/";
		}
		else if(strcmp(com, "kmeans") == 0 || strcmp(com, "Kmeans") == 0 || strcmp(com, "k-means") == 0){
			path += "kmeans/";
		}
		else if(strcmp(com, "dgcd") == 0 || strcmp(com, "DGCD") == 0){
			path += "dgcd/";
		}
		else if(strcmp(com, "forrest_fire") == 0 || strcmp(com, "ff") == 0){
			path += "ff/";
		}
		dataset = path + "foursquare.bin";
		usersLocationsFile = path + "users_locations_foursquare.txt";
		eventsLocationsFile = "./data/Foursquare/events_locations_foursquare.txt";

		if (box != NULL && (strcmp(box, "T") == 0 || strcmp(box, "True") == 0 || strcmp(box, "true") == 0)){
            eventsLocationsFile = "./data/Foursquare/box_events_locations_foursquare.txt";
        }
        dt_type = "gsn";
	}
	else if (dt == NULL || strcmp(dt, "Flixster") == 0 || strcmp(dt, "X") == 0 || strcmp(dt, "x") == 0){
		path += "Flixster/";
		if (com == NULL || strcmp(com, "original") == 0){
			path += "original/";
		}
		dataset = path + "flixster.bin";
		similarities_file = path + "flixster_similarities.txt";
		dt_type = "social";
		usersLocationsFile = "";
		eventsLocationsFile = "";
	}
	else if (dt == NULL || strcmp(dt, "Lastfm") == 0 || strcmp(dt, "L") == 0 || strcmp(dt, "l") == 0){
		path += "Lastfm/";
		if (com == NULL || strcmp(com, "original") == 0){
			path += "original/";
		}
		dataset = path + "lastfm.bin";
		similarities_file = path + "lastfm_similarities.txt";
		dt_type = "social";
		usersLocationsFile = "";
		eventsLocationsFile = "";
	}
	else if (strcmp(dt, "Dallas") == 0){
		path += "Dallas/";
		dataset = "./data/Dallas/dallas.bin";
		usersLocationsFile = "./data/Dallas/dallas_users_locations.txt";
		eventsLocationsFile = "./data/Dallas/dallas_events_locations.txt";
		dt_type = "gsn";
	}
	else if (strcmp(dt, "test") == 0){
		path += "Test/";
		dataset = "./data/Test/test.bin";
		usersLocationsFile = "./data/Test/test_users_locations.txt";
		eventsLocationsFile = "./data/Test/test_events_locations.txt";
		dt_type = "gsn";
	}

	// Epsilon
	char *  eps = getPara("-e");
	if (eps == NULL){
		epsilon = 0.1;
	}
	else{
		epsilon = std::stof(eps);
	}

	// Delta
	char *  del = getPara("-d");
	if (del == NULL){
		delta = 0.01;
	}
	else{
		delta = atof(del);
	}

	// Budget
	char *  bud = getPara("-k");
	if (bud == NULL){
		budget = 10;
	}
	else{
		budget = atoi(bud);
	}

	// Number of Events
	char *  ev = getPara("-c");
	if (ev == NULL){
		P = 16;
	}
	else{
		P = atoi(ev);
	}

	// Monte Carlo iterations for updating AP tables
	char *  MC_its = getPara("-mc1");
	if (MC_its == NULL){
		num_of_monte_carlo_iterations = 100;
	}
	else{
		num_of_monte_carlo_iterations = atoi(MC_its);
	}

	// Monte Carlo iterations for calculating total similarity
	char * MC_its_tsim = getPara("-mc2");
	if (MC_its_tsim == NULL){
		monte_carlo_iterations_tsim = 100;
	}
	else{
		monte_carlo_iterations_tsim = atoi(MC_its_tsim);
	}

	// Number of threads
	char * num_threads = getPara("-t");
	if (num_threads == NULL){
		t = 1;
	}
	else{
		t = atoi(num_threads);
	}

	// Quality Percent
	char * perc = getPara("-p");
	if (perc == NULL){
		percent = 0.03;
	}
	else{
		percent = atof(perc);
	}

	// Variable in the experiments
	char * var = getPara("-v");
	if (var == NULL){
		variable = "";
	}
	else{
		variable = var;
	}

	// Repetitions (number of different experments)
	char * repetitions = getPara("-r");
	if (repetitions == NULL){
		if (variable == "")
			reps = 1;
		else if (variable == "c")
			reps = 5;
		else if (variable == "k")
			reps = 5;
	}
	else{
		reps = atoi(repetitions);
	}

	// Which condition to stop the reps
	char * c = getPara("-cnd");
	if (c == NULL){
		cond = "rounds";
	}
	else{
		cond = c;
	}

	// If the condition is rounds, how many till it stops
	char * rnd = getPara("-rnd");
	if (rnd == NULL){
		rounds = 1;
	}
	else{
		rounds = atoi(rnd);
	}

	// Select model (IC or LT)
	char * mod = getPara("-m");
	if (mod == NULL || atoi(mod) == 1){
		m = 1;
	}
	else{
		m = 0;
	}

	// Select what experiment to run (exp1: quality (similarity, time, memory), exp2: similarity in each round, exp3: basic utility)
	char * exper = getPara("-exp");
	if (exper == NULL){
		exp1 = true;
		exp2 = false;
		exp3 = false;
		exp4 = false;
		exp5 = false;
	}
	else if (strcmp(exper, "1") == 0){
		exp1 = true;
		exp2 = false;
		exp3 = false;
		exp4 = false;
		exp5 = false;
	}
	else if (strcmp(exper, "2") == 0){
		exp1 = false;
		exp2 = true;
		exp3 = false;
		exp4 = false;
		exp5 = false;
	}
	else if (strcmp(exper, "3") == 0){
		exp1 = false;
		exp2 = false;
		exp3 = true;
		exp4 = false;
		exp5 = false;
	}
	else if (strcmp(exper, "4") == 0){
		exp1 = false;
		exp2 = false;
		exp3 = false;
		exp4 = true;
		exp5 = false;
	}
	else if (strcmp(exper, "5") == 0){
		exp1 = false;
		exp2 = false;
		exp3 = false;
		exp4 = false;
		exp5 = true;
	}


	
	// else{
	// 	pr = atof(prob);
	// }


	char *  ris_algorithm = getPara("-ris_alg");
	if (ris_algorithm == NULL){
		ris_alg = "DSSA";
	}
	else {
		ris_alg = ris_algorithm;
	}

	char * similarity = getPara("-sim");
	if (similarity == NULL){
		sim = true;
	}
	else if (strcmp(similarity, "no") == 0 || strcmp(similarity, "n") == 0 || strcmp(similarity, "no_sim") == 0){
		sim = false;
	}
	else if (strcmp(similarity, "yes") == 0 || strcmp(similarity, "y") == 0 || strcmp(similarity, "yes_sim") == 0){
		sim = true;
	}

	char * re = getPara("-rand_edges");
	if (re == NULL){
		rand_edges = false;
	}
	else if (strcmp(re, "t") == 0 || strcmp(re, "T") == 0 || strcmp(re, "true") == 0){
		rand_edges = true;
	}
	else if (strcmp(re, "f") == 0 || strcmp(re, "F") == 0 || strcmp(re, "false") == 0){
		rand_edges = false;
	}

	char * mean = getPara("-mu");
	if (mean == NULL){
		mu = 0.1;
	}
	else{
		mu = atof(mean);
	}

	char * sig = getPara("-sigma");
	if (sig == NULL){
		sigma = 0.1;
	}
	else{
		sigma = atof(sig);
	}

	// Defaults the name of the file
	char * outFile = getPara("-o");
	if (outFile != NULL && strcmp(outFile, "def") == 0){
		fileName += "results/";
		if (com == NULL || strcmp(com, "original") == 0){
			fileName += "original/";
		}
		else if(strcmp(com, "kmeans") == 0 || strcmp(com, "Kmeans") == 0 || strcmp(com, "k-means") == 0){
			fileName += "kmeans/";
		}
		else if(strcmp(com, "dgcd") == 0 || strcmp(com, "dgcd") == 0){
			fileName += "dgcd/";
		}
		else if(strcmp(com, "forrest_fire") == 0 || strcmp(com, "ff") == 0){
			fileName += "ff/";
		}
		if (dt == NULL || strcmp(dt, "Gowalla") == 0 || strcmp(dt, "G") == 0 || strcmp(dt, "g") == 0)
			fileName += "g";
		else if (strcmp(dt, "Foursquare") == 0 || strcmp(dt, "F") == 0 || strcmp(dt, "f") == 0)
			fileName += "f";
		else
			fileName += dt;
		if (m == 1)
			fileName += "_ic";
		else
			fileName += "_lt";
		if (sim)
			fileName += "_ysim";
		else
			fileName += "_nsim";
		if (rand_edges)
			fileName += "_rand_" + (std::string) mean + "_" + (std::string) sig;
		if (var != NULL)
			fileName += "_" + variable;
		if (exp1)
			fileName += ".dat";
		else if (exp2)
			fileName += "_rounds.dat";
		else if (exp3)
			fileName += "_utility.dat";
		else if (exp4)
			fileName += "_mult_rounds.dat";
		else if (exp5)
			fileName = "tmp_clust_exper.dat";
		std::cout << fileName << std::endl;
	}
	else if (outFile != NULL){
		fileName = std::string(outFile);
	}

	// // Output file
	// std::ofstream file;
	// char * outFile = getPara("-o");
	// if (outFile == NULL){
	// 	output = &std::cout;
	// }
	// else{
	// 	file.open(outFile);
	// 	output = &file;
	// }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
movq %r9, %rbx
movq %r8, %r12
movq %rcx, 0x40(%rsp)
movq %rdx, %r13
movq %rsi, %r14
movq %rdi, %r15
leaq 0x2ca6(%rip), %rsi      # 0x137a0
callq 0x10a68
testq %rax, %rax
je 0x10b25
movq %rax, %rbp
leaq 0x2c97(%rip), %rsi      # 0x137a5
movq %rax, %rdi
callq 0x3440
testl %eax, %eax
leaq 0x2c8a(%rip), %rsi      # 0x137a9
cmovneq %rbp, %rsi
jmp 0x10b2c
leaq 0x258f(%rip), %rsi      # 0x130bb
movq %r14, %rdi
callq 0x3610
leaq 0x2c77(%rip), %rsi      # 0x137b2
movq %r15, %rdi
callq 0x10a68
movq %rax, %rbp
leaq 0x2c69(%rip), %rsi      # 0x137b6
movq %r15, %rdi
callq 0x10a68
leaq 0x2c5e(%rip), %rsi      # 0x137ba
movq %r15, %rdi
callq 0x10a68
movq %rax, 0x10(%rsp)
leaq 0x2c51(%rip), %rsi      # 0x137c1
movq %r15, %rdi
callq 0x10a68
movq %rax, %r14
leaq 0x2c44(%rip), %rsi      # 0x137c6
leaq 0x48(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x3130
testq %rbp, %rbp
movq %rbp, 0x8(%rsp)
je 0x10cdb
leaq 0x2c28(%rip), %rsi      # 0x137ce
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10cdb
movzbl (%rbp), %ebp
cmpl $0x67, %ebp
je 0x10bcb
cmpl $0x47, %ebp
movq 0x8(%rsp), %rdi
je 0x10bd0
jmp 0x10bda
movq 0x8(%rsp), %rdi
cmpb $0x0, 0x1(%rdi)
je 0x10cdb
leaq 0x2cc8(%rip), %rsi      # 0x138a9
callq 0x3440
testl %eax, %eax
je 0x10e15
cmpl $0x66, %ebp
je 0x10bf8
cmpl $0x46, %ebp
jne 0x10c07
movq 0x8(%rsp), %rax
cmpb $0x0, 0x1(%rax)
je 0x10e15
leaq 0x2d5e(%rip), %rsi      # 0x1396c
movq 0x8(%rsp), %rdi
callq 0x3440
testl %eax, %eax
je 0x1164d
cmpl $0x78, %ebp
je 0x10c2a
cmpl $0x58, %ebp
jne 0x10c39
movq 0x8(%rsp), %rax
cmpb $0x0, 0x1(%rax)
je 0x1164d
leaq 0x2d66(%rip), %rsi      # 0x139a6
movq 0x8(%rsp), %rdi
callq 0x3440
testl %eax, %eax
je 0x116d2
cmpl $0x6c, %ebp
je 0x10c5c
cmpl $0x4c, %ebp
jne 0x10c6b
movq 0x8(%rsp), %rax
cmpb $0x0, 0x1(%rax)
je 0x116d2
leaq 0x2d66(%rip), %rsi      # 0x139d8
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
je 0x11797
leaq 0x2dc5(%rip), %rsi      # 0x13a53
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
jne 0x10fcd
leaq 0x2db3(%rip), %rsi      # 0x13a58
leaq 0x48(%rsp), %rdi
callq 0x3600
leaq 0x2da8(%rip), %rsi      # 0x13a5e
movq %r13, %rdi
callq 0x3610
leaq 0x2dae(%rip), %rsi      # 0x13a73
movq 0x40(%rsp), %rdi
callq 0x3610
leaq 0x2dc2(%rip), %r13      # 0x13a98
jmp 0x10fa8
leaq 0x2af4(%rip), %rsi      # 0x137d6
leaq 0x48(%rsp), %rdi
callq 0x3600
movq 0x10(%rsp), %rbp
leaq 0x2af0(%rip), %rbx      # 0x137e8
testq %rbp, %rbp
je 0x10d6a
leaq 0x2adb(%rip), %rsi      # 0x137df
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10d6a
leaq 0x2adb(%rip), %rsi      # 0x137f2
movq %rbp, %rdi
callq 0x3440
leaq 0x2ae2(%rip), %rbx      # 0x13808
testl %eax, %eax
je 0x10d6a
leaq 0x2ac8(%rip), %rsi      # 0x137f9
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10d6a
leaq 0x2abc(%rip), %rsi      # 0x13800
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10d6a
leaq 0x2ab9(%rip), %rsi      # 0x13810
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
jne 0x10d77
leaq 0x2aab(%rip), %rbx      # 0x13815
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x3600
leaq 0x2a9d(%rip), %rdx      # 0x1381b
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x33c0
movq %rbx, %rdi
callq 0x3160
leaq 0x2a7b(%rip), %rdx      # 0x13827
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %rbx
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x33c0
movq %rbx, %rdi
callq 0x3160
leaq 0x2a67(%rip), %rsi      # 0x13843
movq %r12, %rdi
callq 0x3610
leaq 0x240f(%rip), %rbx      # 0x131fa
testq %r14, %r14
je 0x10fba
cmpb $0x54, (%r14)
leaq 0x2a7a(%rip), %r13      # 0x13879
jne 0x10f82
cmpb $0x0, 0x1(%r14)
jne 0x10f82
jmp 0x10fa8
leaq 0x2a98(%rip), %rsi      # 0x138b4
leaq 0x48(%rsp), %rdi
callq 0x3600
movq 0x10(%rsp), %rbp
leaq 0x29b6(%rip), %rbx      # 0x137e8
testq %rbp, %rbp
je 0x10eeb
leaq 0x299d(%rip), %rsi      # 0x137df
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10eeb
leaq 0x2999(%rip), %rsi      # 0x137f2
movq %rbp, %rdi
callq 0x3440
leaq 0x29a0(%rip), %rbx      # 0x13808
testl %eax, %eax
je 0x10eeb
leaq 0x2986(%rip), %rsi      # 0x137f9
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10eeb
leaq 0x297a(%rip), %rsi      # 0x13800
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10eeb
leaq 0x2977(%rip), %rsi      # 0x13810
movq %rbp, %rdi
callq 0x3440
leaq 0x296d(%rip), %rbx      # 0x13815
testl %eax, %eax
je 0x10eeb
leaq 0x2a0d(%rip), %rsi      # 0x138c0
movq %rbp, %rdi
callq 0x3440
testl %eax, %eax
je 0x10eeb
leaq 0x29ff(%rip), %rsi      # 0x138c5
movq %rbp, %rdi
callq 0x3440
leaq 0x29fd(%rip), %rbx      # 0x138d2
testl %eax, %eax
je 0x10eeb
cmpb $0x66, (%rbp)
jne 0x10ef8
cmpb $0x66, 0x1(%rbp)
jne 0x10ef8
cmpb $0x0, 0x2(%rbp)
jne 0x10ef8
leaq 0x48(%rsp), %rdi
movq %rbx, %rsi
callq 0x3600
leaq 0x29d7(%rip), %rdx      # 0x138d6
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x33c0
movq %rbx, %rdi
callq 0x3160
leaq 0x29b8(%rip), %rdx      # 0x138e5
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %rbx
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x33c0
movq %rbx, %rdi
callq 0x3160
leaq 0x29a7(%rip), %rsi      # 0x13904
movq %r12, %rdi
callq 0x3610
leaq 0x228e(%rip), %rbx      # 0x131fa
testq %r14, %r14
je 0x10fba
cmpb $0x54, (%r14)
leaq 0x29ba(%rip), %r13      # 0x13936
je 0x10e05
leaq 0x28e6(%rip), %rsi      # 0x1386f
movq %r14, %rdi
callq 0x3440
testl %eax, %eax
je 0x10fa8
leaq 0x28d8(%rip), %rsi      # 0x13874
movq %r14, %rdi
callq 0x3440
testl %eax, %eax
jne 0x10fba
movq %r12, %rdi
movq %r13, %rsi
callq 0x3610
leaq 0x2240(%rip), %rbx      # 0x131fa
movq 0x120(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x3610
leaq 0x2aea(%rip), %rsi      # 0x13abe
movq %r15, %rdi
callq 0x10a68
movq 0x128(%rsp), %rbx
testq %rax, %rax
movq 0x8(%rsp), %r12
je 0x1101c
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rdx
movq %rax, %rsi
callq 0x3130
leaq 0x20(%rsp), %rdi
xorl %esi, %esi
callq 0x11b2e
movss %xmm0, (%rbx)
leaq 0x20(%rsp), %rdi
callq 0x3160
jmp 0x11022
movl $0x3dcccccd, (%rbx)     # imm = 0x3DCCCCCD
leaq 0x2a98(%rip), %rsi      # 0x13ac1
movq %r15, %rdi
callq 0x10a68
movq 0x130(%rsp), %rbx
testq %rax, %rax
je 0x1104c
movq %rax, %rdi
callq 0x33d0
cvtsd2ss %xmm0, %xmm0
jmp 0x11054
movss 0x272c(%rip), %xmm0     # 0x13780
movss %xmm0, (%rbx)
leaq 0x2a65(%rip), %rsi      # 0x13ac4
movq %r15, %rdi
callq 0x10a68
movq 0x138(%rsp), %rbx
testq %rax, %rax
je 0x1107e
movq %rax, %rdi
callq 0x34b0
jmp 0x11081
pushq $0xa
popq %rax
movl %eax, (%rbx)
leaq 0x2a3d(%rip), %rsi      # 0x13ac7
movq %r15, %rdi
callq 0x10a68
movq 0x140(%rsp), %rbx
testq %rax, %rax
je 0x110a9
movq %rax, %rdi
callq 0x34b0
jmp 0x110ac
pushq $0x10
popq %rax
movl %eax, (%rbx)
leaq 0x2a15(%rip), %rsi      # 0x13aca
movq %r15, %rdi
callq 0x10a68
movq 0x148(%rsp), %rbx
testq %rax, %rax
je 0x110d4
movq %rax, %rdi
callq 0x34b0
jmp 0x110d7
pushq $0x64
popq %rax
movl %eax, (%rbx)
leaq 0x29ef(%rip), %rsi      # 0x13acf
movq %r15, %rdi
callq 0x10a68
movq 0x150(%rsp), %rbx
testq %rax, %rax
je 0x110ff
movq %rax, %rdi
callq 0x34b0
jmp 0x11102
pushq $0x64
popq %rax
movl %eax, (%rbx)
leaq 0x29c9(%rip), %rsi      # 0x13ad4
movq %r15, %rdi
callq 0x10a68
movq 0x158(%rsp), %rbx
testq %rax, %rax
je 0x1112a
movq %rax, %rdi
callq 0x34b0
jmp 0x1112d
pushq $0x1
popq %rax
movl %eax, (%rbx)
leaq 0x29a1(%rip), %rsi      # 0x13ad7
movq %r15, %rdi
callq 0x10a68
movq 0x160(%rsp), %rbx
testq %rax, %rax
je 0x11159
movq %rax, %rdi
callq 0x33d0
cvtsd2ss %xmm0, %xmm0
jmp 0x11161
movss 0x2623(%rip), %xmm0     # 0x13784
movss %xmm0, (%rbx)
leaq 0x296e(%rip), %rsi      # 0x13ada
movq %r15, %rdi
callq 0x10a68
movq %rax, %r13
movq 0x170(%rsp), %r14
testq %rax, %rax
leaq 0x1f3a(%rip), %rsi      # 0x130c3
cmovneq %rax, %rsi
movq %r14, %rdi
callq 0x3610
leaq 0x2941(%rip), %rsi      # 0x13add
movq %r15, %rdi
callq 0x10a68
testq %rax, %rax
je 0x111b5
movq %rax, %rdi
callq 0x34b0
movl %eax, %ebx
jmp 0x111f6
leaq 0x1f07(%rip), %rsi      # 0x130c3
movq %r14, %rdi
callq 0x8830
testb %al, %al
je 0x111cd
pushq $0x1
popq %rbx
jmp 0x111f6
leaq 0x28f4(%rip), %rsi      # 0x13ac8
movq %r14, %rdi
callq 0x8830
pushq $0x5
popq %rbx
testb %al, %al
jne 0x111f6
leaq 0x28db(%rip), %rsi      # 0x13ac5
movq %r14, %rdi
callq 0x8830
testb %al, %al
je 0x11200
movq 0x168(%rsp), %rax
movl %ebx, (%rax)
leaq 0x28d9(%rip), %rsi      # 0x13ae0
movq %r15, %rdi
callq 0x10a68
movq 0x178(%rsp), %rdi
testq %rax, %rax
leaq 0x2092(%rip), %rsi      # 0x132b3
cmovneq %rax, %rsi
callq 0x3610
leaq 0x28b4(%rip), %rsi      # 0x13ae5
movq %r15, %rdi
callq 0x10a68
movq 0x180(%rsp), %rbx
testq %rax, %rax
je 0x11250
movq %rax, %rdi
callq 0x34b0
jmp 0x11253
pushq $0x1
popq %rax
movl %eax, (%rbx)
leaq 0x288e(%rip), %rsi      # 0x13aea
movq %r15, %rdi
callq 0x10a68
movq 0x188(%rsp), %rbx
testq %rax, %rax
je 0x11283
movq %rax, %rdi
callq 0x34b0
xorl %ecx, %ecx
cmpl $0x1, %eax
sete %cl
jmp 0x11286
pushq $0x1
popq %rcx
movl %ecx, (%rbx)
leaq 0x285e(%rip), %rsi      # 0x13aed
movq %r15, %rdi
callq 0x10a68
movb $0x1, %cl
testq %rax, %rax
je 0x112bf
movzbl (%rax), %edx
addl $-0x31, %edx
cmpl $0x4, %edx
ja 0x112fc
leaq 0x24dc(%rip), %rsi      # 0x1378c
movslq (%rsi,%rdx,4), %rdx
addq %rsi, %rdx
jmpq *%rdx
cmpb $0x0, 0x1(%rax)
jne 0x112fc
xorl %eax, %eax
xorl %edx, %edx
xorl %esi, %esi
xorl %edi, %edi
movq 0x190(%rsp), %r8
movb %cl, (%r8)
movq 0x198(%rsp), %rcx
movb %al, (%rcx)
movq 0x1a0(%rsp), %rax
movb %dl, (%rax)
movq 0x1a8(%rsp), %rax
movb %sil, (%rax)
movq 0x1b0(%rsp), %rax
movb %dil, (%rax)
leaq 0x27ef(%rip), %rsi      # 0x13af2
movq %r15, %rdi
callq 0x10a68
movq 0x1c0(%rsp), %rdi
testq %rax, %rax
leaq 0x1f5b(%rip), %rsi      # 0x13278
cmovneq %rax, %rsi
callq 0x3610
leaq 0x27ce(%rip), %rsi      # 0x13afb
movq %r15, %rdi
callq 0x10a68
movq %rax, %rbx
movb $0x1, %bpl
testq %rax, %rax
je 0x113a4
movb (%rbx), %r14b
cmpb $0x6e, %r14b
jne 0x1135b
cmpb $0x6f, 0x1(%rbx)
jne 0x11355
cmpb $0x0, 0x2(%rbx)
je 0x113a2
cmpb $0x0, 0x1(%rbx)
je 0x113a2
leaq 0x279e(%rip), %rsi      # 0x13b00
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
je 0x113a2
leaq 0x2792(%rip), %rsi      # 0x13b07
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
je 0x113a4
cmpb $0x79, %r14b
jne 0x1138d
cmpb $0x0, 0x1(%rbx)
je 0x113a4
leaq 0x2777(%rip), %rsi      # 0x13b0b
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
jne 0x113af
jmp 0x113a4
xorl %ebp, %ebp
movq 0x1c8(%rsp), %rax
movb %bpl, (%rax)
leaq 0x275d(%rip), %rsi      # 0x13b13
movq %r15, %rdi
callq 0x10a68
movq %rax, %rbx
movq 0x1d0(%rsp), %r14
testq %rax, %rax
je 0x11417
movzbl (%rbx), %ebp
cmpl $0x54, %ebp
je 0x113db
cmpl $0x74, %ebp
jne 0x113e1
cmpb $0x0, 0x1(%rbx)
je 0x1141b
leaq 0x248c(%rip), %rsi      # 0x13874
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
je 0x1141b
cmpl $0x46, %ebp
je 0x113fe
cmpl $0x66, %ebp
jne 0x11404
cmpb $0x0, 0x1(%rbx)
je 0x11417
leaq 0x2714(%rip), %rsi      # 0x13b1f
movq %rbx, %rdi
callq 0x3440
testl %eax, %eax
jne 0x11420
xorl %eax, %eax
jmp 0x1141d
movb $0x1, %al
movb %al, (%r14)
leaq 0x26fe(%rip), %rsi      # 0x13b25
movq %r15, %rdi
callq 0x10a68
movq %rax, %rbp
movq 0x1d8(%rsp), %rbx
testq %rax, %rax
je 0x1144d
movq %rbp, %rdi
callq 0x33d0
cvtsd2ss %xmm0, %xmm0
jmp 0x11455
movss 0x2333(%rip), %xmm0     # 0x13788
movss %xmm0, (%rbx)
leaq 0x26c9(%rip), %rsi      # 0x13b29
movq %r15, %rdi
callq 0x10a68
movq %rax, %rbx
movq 0x1e0(%rsp), %r14
testq %rax, %rax
je 0x11486
movq %rbx, %rdi
callq 0x33d0
cvtsd2ss %xmm0, %xmm0
jmp 0x1148e
movss 0x22fa(%rip), %xmm0     # 0x13788
movss %xmm0, (%r14)
leaq 0x1cfc(%rip), %rsi      # 0x13196
movq %r15, %rdi
callq 0x10a68
movq %rax, %r15
testq %rax, %rax
je 0x11a33
movq 0x1b8(%rsp), %r14
leaq 0x2673(%rip), %rsi      # 0x13b30
movq %r15, %rdi
callq 0x3440
testl %eax, %eax
je 0x114f8
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rdx
movq %r15, %rsi
callq 0x3130
leaq 0x20(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x33c0
movq %rbx, %rdi
callq 0x3160
jmp 0x11a33
leaq 0x2635(%rip), %rsi      # 0x13b34
movq %r14, %rdi
callq 0x3600
leaq 0x22da(%rip), %r15      # 0x137e8
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x117e0
leaq 0x22bc(%rip), %rsi      # 0x137df
callq 0x3440
testl %eax, %eax
je 0x117e0
leaq 0x22bb(%rip), %rsi      # 0x137f2
movq 0x10(%rsp), %r12
movq %r12, %rdi
callq 0x3440
leaq 0x22bd(%rip), %r15      # 0x13808
testl %eax, %eax
je 0x117db
leaq 0x229f(%rip), %rsi      # 0x137f9
movq %r12, %rdi
callq 0x3440
testl %eax, %eax
je 0x117db
leaq 0x228f(%rip), %rsi      # 0x13800
movq %r12, %rdi
callq 0x3440
testl %eax, %eax
movq 0x8(%rsp), %r12
je 0x117e0
leaq 0x2283(%rip), %rsi      # 0x13810
movq 0x10(%rsp), %r12
movq %r12, %rdi
callq 0x3440
testl %eax, %eax
je 0x117d4
leaq 0x231c(%rip), %rsi      # 0x138c5
movq %r12, %rdi
callq 0x3440
leaq 0x231a(%rip), %r15      # 0x138d2
testl %eax, %eax
je 0x117db
cmpb $0x66, (%r12)
movq 0x8(%rsp), %r12
jne 0x117eb
movq 0x10(%rsp), %rax
cmpb $0x66, 0x1(%rax)
jne 0x117eb
movq 0x10(%rsp), %rax
cmpb $0x0, 0x2(%rax)
jne 0x117eb
jmp 0x117e0
cmpb $0x0, 0x1(%rax)
jne 0x112fc
movb $0x1, %dil
xorl %ecx, %ecx
xorl %eax, %eax
xorl %edx, %edx
xorl %esi, %esi
jmp 0x112c7
cmpb $0x0, 0x1(%rax)
jne 0x112fc
movb $0x1, %dl
xorl %ecx, %ecx
xorl %eax, %eax
jmp 0x112c3
cmpb $0x0, 0x1(%rax)
jne 0x112fc
movb $0x1, %sil
xorl %ecx, %ecx
xorl %eax, %eax
xorl %edx, %edx
jmp 0x112c5
cmpb $0x0, 0x1(%rax)
jne 0x112fc
movb $0x1, %al
xorl %ecx, %ecx
jmp 0x112c1
leaq 0x2321(%rip), %rsi      # 0x13975
leaq 0x48(%rsp), %rdi
callq 0x3600
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x11678
leaq 0x2170(%rip), %rsi      # 0x137df
callq 0x3440
testl %eax, %eax
jne 0x11689
leaq 0x2169(%rip), %rsi      # 0x137e8
leaq 0x48(%rsp), %rdi
callq 0x3600
leaq 0x22ef(%rip), %rdx      # 0x1397f
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0x33c0
movq %r14, %rdi
callq 0x3160
leaq 0x22ce(%rip), %rdx      # 0x1398c
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
jmp 0x11752
leaq 0x22d4(%rip), %rsi      # 0x139ad
leaq 0x48(%rsp), %rdi
callq 0x3600
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x116fd
leaq 0x20eb(%rip), %rsi      # 0x137df
callq 0x3440
testl %eax, %eax
jne 0x1170e
leaq 0x20e4(%rip), %rsi      # 0x137e8
leaq 0x48(%rsp), %rdi
callq 0x3600
leaq 0x22a0(%rip), %rdx      # 0x139b5
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0x33c0
movq %r14, %rdi
callq 0x3160
leaq 0x227d(%rip), %rdx      # 0x139c0
leaq 0x20(%rsp), %rdi
leaq 0x48(%rsp), %rsi
callq 0x897f
leaq 0x20(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x33c0
movq %r14, %rdi
callq 0x3160
leaq 0x1a9e(%rip), %rsi      # 0x1320f
movq 0x120(%rsp), %rdi
callq 0x3610
leaq 0x193e(%rip), %rbx      # 0x130c3
movq 0x40(%rsp), %rdi
movq %rbx, %rsi
callq 0x3610
jmp 0x10fc2
leaq 0x2241(%rip), %rsi      # 0x139df
leaq 0x48(%rsp), %rdi
callq 0x3600
leaq 0x2238(%rip), %rsi      # 0x139e7
movq %r13, %rdi
callq 0x3610
leaq 0x2242(%rip), %rsi      # 0x13a00
movq 0x40(%rsp), %rdi
callq 0x3610
leaq 0x225a(%rip), %r13      # 0x13a29
jmp 0x10fa8
leaq 0x203a(%rip), %r15      # 0x13815
movq 0x8(%rsp), %r12
movq %r14, %rdi
movq %r15, %rsi
callq 0x3600
leaq 0x1fb1(%rip), %r15      # 0x137a3
testq %r12, %r12
je 0x11865
leaq 0x1fd0(%rip), %rsi      # 0x137ce
movq %r12, %rdi
callq 0x3440
testl %eax, %eax
je 0x11865
movzbl (%r12), %r12d
cmpl $0x67, %r12d
je 0x11822
cmpl $0x47, %r12d
movq 0x8(%rsp), %rdi
je 0x11827
jmp 0x1182d
movq 0x8(%rsp), %rdi
cmpb $0x0, 0x1(%rdi)
je 0x11865
leaq 0x2075(%rip), %rsi      # 0x138a9
callq 0x3440
leaq 0x22f2(%rip), %r15      # 0x13b32
testl %eax, %eax
je 0x11865
cmpl $0x66, %r12d
je 0x11857
cmpl $0x46, %r12d
movq 0x8(%rsp), %rax
je 0x1185c
jmp 0x11862
movq 0x8(%rsp), %rax
cmpb $0x0, 0x1(%rax)
je 0x11865
movq %rax, %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x3600
movq 0x188(%rsp), %rax
cmpl $0x1, (%rax)
leaq 0x22bb(%rip), %rax      # 0x13b3d
leaq 0x22b8(%rip), %rsi      # 0x13b41
cmoveq %rax, %rsi
movq %r14, %rdi
callq 0x3600
leaq 0x22a9(%rip), %rax      # 0x13b45
leaq 0x22a8(%rip), %rsi      # 0x13b4b
movq 0x1c8(%rsp), %rcx
cmpb $0x0, (%rcx)
cmovneq %rax, %rsi
movq %r14, %rdi
callq 0x3600
movq 0x1d0(%rsp), %rax
cmpb $0x1, (%rax)
jne 0x11989
leaq 0xa8(%rsp), %rdi
leaq 0x1f(%rsp), %rdx
movq %rbp, %rsi
callq 0x3130
leaq 0x226a(%rip), %rsi      # 0x13b51
leaq 0xc8(%rsp), %rdi
leaq 0xa8(%rsp), %rdx
callq 0x8878
leaq 0x2253(%rip), %rdx      # 0x13b56
leaq 0x68(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0xee6f
leaq 0x88(%rsp), %rdi
leaq 0x1e(%rsp), %rdx
movq %rbx, %rsi
callq 0x3130
leaq 0x20(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x8918
leaq 0x20(%rsp), %rsi
movq %r14, %rdi
callq 0x3630
leaq 0x20(%rsp), %rdi
callq 0x3160
leaq 0x88(%rsp), %rdi
callq 0x3160
leaq 0x68(%rsp), %rdi
callq 0x3160
leaq 0xc8(%rsp), %rdi
callq 0x3160
leaq 0xa8(%rsp), %rdi
callq 0x3160
testq %r13, %r13
je 0x119be
leaq 0x21c1(%rip), %rsi      # 0x13b56
leaq 0x20(%rsp), %rdi
movq 0x170(%rsp), %rdx
callq 0x11b47
leaq 0x20(%rsp), %rsi
movq %r14, %rdi
callq 0x3630
leaq 0x20(%rsp), %rdi
callq 0x3160
movq 0x190(%rsp), %rax
cmpb $0x0, (%rax)
je 0x119d4
leaq 0x21b3(%rip), %rsi      # 0x13b85
jmp 0x11a14
movq 0x198(%rsp), %rax
cmpb $0x0, (%rax)
je 0x119ea
leaq 0x2182(%rip), %rsi      # 0x13b6a
jmp 0x11a14
movq 0x1a0(%rsp), %rax
cmpb $0x0, (%rax)
je 0x11a00
leaq 0x215a(%rip), %rsi      # 0x13b58
jmp 0x11a14
movq 0x1a8(%rsp), %rax
cmpb $0x1, (%rax)
jne 0x11a4f
leaq 0x2151(%rip), %rsi      # 0x13b65
movq %r14, %rdi
callq 0x3600
movq 0xa5a5(%rip), %rdi      # 0x1bfc8
movq %r14, %rsi
callq 0x3310
movq %rax, %rdi
callq 0x3190
leaq 0x48(%rsp), %rdi
callq 0x3160
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x1b0(%rsp), %rax
cmpb $0x1, (%rax)
jne 0x11a1c
leaq 0x2113(%rip), %rsi      # 0x13b76
movq %r14, %rdi
callq 0x3610
jmp 0x11a1c
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3160
jmp 0x11a93
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x3160
jmp 0x11aa5
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x3160
jmp 0x11ab4
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
callq 0x3160
jmp 0x11ac6
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
jmp 0x11ae4
jmp 0x11b19
jmp 0x11adc
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3160
jmp 0x11b1c
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
jmp 0x11b19
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x3160
movq %rbx, %rdi
callq 0x3590