// File: Slexis-Works[P]texture-packing/texture-packing.cpp
// Function: main
int main (int argc, char *argv[]) {

	// Paramètres et valeurs par défaut
	coord minSize(16);
	coord maxSize(256);
	size_t nbRects(1000);
	coord texWidth(2048);
	coord texHeight(2048);
	std::string outputFolder;
	std::string outputRect;
	size_t nbTests(1);
	std::vector<std::string> algosChoisis;
	std::map<std::string, funcAlgo> algosDispos;
	algosDispos["FF"] = algoFF;
	algosDispos["FFDH"] = algoFFDH;
	algosDispos["NFDH"] = algoNFDH;
	algosDispos["BFDH"] = algoBFDH;
	//algosDispos.push_back("AD");
	//algosDispos.push_back("Harmonic");
	//algosDispos.push("");

	// http://www.cplusplus.com/reference/random/
	auto seed = std::chrono::system_clock::now().time_since_epoch().count();


	// Traitement des arguments

	for (int an=1 ; an<argc ; ++an) {
		std::string arg(argv[an]);

		if (arg == "--help") {
			if (an == 1 && argc == 2) {
				showHelp(argv[0]);
				return 0;
			} else {
				std::cerr << "Erreur : --help doit apparaître seul." << std::endl;
				showUsage(argv[0]);
				return 1;
			}
		} else if (arg == "--seed") {
			++an;
			if (an == argc || (isBadInt(argv[an]) && argv[an][0] != '-')) {
				std::cerr << "Erreur : --seed doit être suivi de la graine voulue" << std::endl;
				showUsage(argv[0]);
				return 3;
			}
			seed = std::stol(argv[an]);
		} else if (arg == "--tmin") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --tmin doit être suivi de la taille minimale voulue en pixels" << std::endl;
				showUsage(argv[0]);
				return 4;
			}
			minSize = std::stoi(argv[an]);
		} else if (arg == "--tmax") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --tmax doit être suivi de la taille maximale voulue en pixels" << std::endl;
				showUsage(argv[0]);
				return 5;
			}
			maxSize = std::stoi(argv[an]);
		} else if (arg == "--nbrect") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --nbrect doit être suivi du nombre de rectangles à générer" << std::endl;
				showUsage(argv[0]);
				return 6;
			}
			nbRects = std::stoi(argv[an]);
		} else if (arg == "--lt") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --lt doit être suivi de la largeur de la texture voulue en pixels" << std::endl;
				showUsage(argv[0]);
				return 7;
			}
			texWidth = std::stoi(argv[an]);
		} else if (arg == "--ht") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --ht doit être suivi de la hauteur de la texture voulue en pixels" << std::endl;
				showUsage(argv[0]);
				return 8;
			}
			texHeight = std::stoi(argv[an]);
		} else if (arg == "--sortie") {
			++an;
			if (an == argc || !*(argv[an])) {
				std::cerr << "Erreur : le nom du dossier des résultats ne peut être vide" << std::endl;
				showUsage(argv[0]);
				return 9;
			}
			outputFolder = argv[an];
		} else if (arg == "--tests") {
			++an;
			if (an == argc || isBadInt(argv[an])) {
				std::cerr << "Erreur : --tests doit être suivi du nombre de tests à effectuer" << std::endl;
				showUsage(argv[0]);
				return 10;
			}
			nbTests = std::stoi(argv[an]);
		} else if (arg == "--rectangles") {
			++an;
			if (an == argc || !*(argv[an])) {
				std::cerr << "Erreur : le nom du dossier des rectangles ne peut être vide" << std::endl;
				showUsage(argv[0]);
				return 11;
			}
			outputRect = argv[an];
		} else if (algosDispos.count(arg) == 1) {
			if (std::find(algosChoisis.begin(), algosChoisis.end(), arg) != algosChoisis.end()) {
				std::cerr << "Attention : algorithme " << arg << " déjà spécifié" << std::endl;
			} else {
				algosChoisis.push_back(arg);
			}
		} else {
			std::cerr << "Erreur : paramètre ou algorithme inconnu : " << arg << std::endl;
			showUsage(argv[0]);
			return 12;
		}

	}

	// Vérification des paramètres
	if (minSize == 0 || maxSize == 0 || texWidth == 0 || texHeight == 0) {
		std::cerr << "Erreur : aucune taille ne peut être égale à 0" << std::endl;
		return 20;
	}

	if (maxSize > texWidth || maxSize > texHeight) {
		std::cerr << "Erreur : la taille maximale des rectangles ne peut dépasser la taille de la texture" << std::endl;
		return 21;
	}

	if (minSize > maxSize) {
		coord tmp = minSize;
		minSize = maxSize;
		maxSize = tmp;
		std::cerr << "Attention : les tailles minimale et maximale des rectangles ont été interverties pour être cohérentes" << std::endl;
	}

	if (nbTests == 0) {
		std::cerr << "Erreur : il faut au moins un test pour ce programme" << std::endl;
		return 22;
	}

	if (nbRects == 0) {
		std::cerr << "Erreur : il faut générer au moins un rectangle" << std::endl;
		return 23;
	}

	if (algosChoisis.empty()) {
		for (std::map<std::string, funcAlgo>::iterator it=algosDispos.begin(), end=algosDispos.end() ; it != end ; ++it) {
			algosChoisis.push_back(it->first);
		}
	}

	// Démarrage du programme

	std::cout << "Configuration OK" << std::endl;
	std::cout << "Graine utilisée : " << seed << std::endl;
	//std::cout << nbTests << " tests par algorithme" << std::endl;
	if (outputFolder.empty()) {
		std::stringstream seedConv;
		seedConv << seed << "_";
		if (algosChoisis.size() == 1)
			seedConv << algosChoisis[0];
		seedConv >> outputFolder;
	}

	std::default_random_engine randGen(seed);
	std::uniform_int_distribution<coord> distriSize(minSize, maxSize);
	std::uniform_int_distribution<coord> distriColor(0, 0xFFFFFF);

	if (nbTests == 1) {
		if (algosChoisis.size() > 1) {
			std::cout << "Les algorithmes ne seront traités qu'une fois avec les mêmes données" << std::endl;
		} else {
			std::cout << "L'algorithme ne sera traité qu'une seule fois" << std::endl;
		}
		std::vector<Rectangle> rects;
		for (size_t i=0 ; i<nbRects ; ++i) {
			rects.push_back(Rectangle(
				distriSize(randGen),
				distriSize(randGen),
				distriColor(randGen)
			));
		}
		if (!outputRect.empty()) {
			std::cout << "Les rectangles générés n'ont pas été mis dans " << outputRect << std::endl;
		}
		if (algosChoisis.size() > 1) {
			std::cout << "Les résultats seront dans " << outputFolder << "*nom algo*" << std::endl;
		} else {
			std::cout << "Les résultats seront dans " << outputFolder << std::endl;
		}
		for (std::string alg : algosChoisis) {
			std::cout << "Traitement de l'algorithme " << alg << std::endl;
			std::vector<Bin> res;
			algosDispos[alg](rects, res, texWidth, texHeight);

			std::cout << "Terminé. " << res.size() << " boîtes utilisées" << std::endl;
			std::string currentOutputF = outputFolder;
			if (algosChoisis.size() > 1) {
				currentOutputF += alg;
			}
			if (mkdir(currentOutputF.c_str(), 0777)) {
				perror("mkdir");
			}

			for (size_t i = 0 ; i < res.size() ; ++i) {
				std::stringstream binPath;
				binPath << currentOutputF << "/" << (i+1) << ".ppm";
				PPMImage curBinImg(texWidth, texHeight);
				res[i].drawOn(curBinImg);
				curBinImg.saveImage(binPath.str());
			}
		}
	} else {
		if (!outputRect.empty()) {
			std::cerr << "Attention : les rectangles ne peuvent être enregistrés s'il y a plusieurs tests" << std::endl;
		}

		std::cout << "Démarrage de " << nbTests << " tests par classe et par nombre de blocs pour " << algosChoisis.size() << " algorithme(s)" << std::endl;
		size_t nbBlocsParTest[] = {20, 40, 60, 80, 100};

		std::uniform_int_distribution<unsigned char> probaType(0, 9);
		std::uniform_int_distribution<coord> typesDistriL[] = {
			std::uniform_int_distribution<coord>(100*2/3, 100),
			std::uniform_int_distribution<coord>(1, 100/2),
			std::uniform_int_distribution<coord>(100/2, 100),
			std::uniform_int_distribution<coord>(1, 100/2)
		};
		std::uniform_int_distribution<coord> typesDistriH[] = {
			std::uniform_int_distribution<coord>(1, 100/2),
			std::uniform_int_distribution<coord>(100*2/3, 100),
			std::uniform_int_distribution<coord>(100/2, 100),
			std::uniform_int_distribution<coord>(1, 100/2)
		};

		std::map<std::string, long> scoresAlgos;
		for (std::string alg : algosChoisis) {
			scoresAlgos[alg] = 0;
		}
		for (size_t nbBI = 0 ; nbBI < 5 ; ++nbBI) {
			for (size_t classe = 0 ; classe < 4 ; ++classe) {
				for (size_t t = 0 ; t < nbTests ; ++t) {
					std::vector<Rectangle> rects;
					long lowerBound = 0;
					for (size_t r = 0 ; r < nbBlocsParTest[nbBI] ; ++r) {
						unsigned char resProba, type;
						resProba = probaType(randGen);
						if (resProba < 7) {
							type = classe;
						} else {
							type = (classe + resProba - 6)%4;
						}
						int rL = typesDistriL[type](randGen);
						int rH = typesDistriH[type](randGen);
						rects.push_back(Rectangle(rL, rH, distriColor(randGen)));
						lowerBound += rL * rH;
					}
					lowerBound = ceil(((float)lowerBound)/10000.0);
					//std::cout << "LowerBound pour ces rectangles : " << lowerBound << std::endl;
					for (std::string alg : algosChoisis) {
						std::vector<Bin> res;
						algosDispos[alg](rects, res, 100, 100);
						scoresAlgos[alg] += res.size() - lowerBound;
						//std::cout << "Résultat " << t << " pour algo " << alg << " avec " << rects.size() << " blocs pour la classe " << classe << " : " << res.size() << " boîtes (" << (res.size() - lowerBound) << ")" << std::endl;
					}
				}
			}
		}
		for (std::string alg : algosChoisis) {
			std::cout << alg << " : " << scoresAlgos[alg] << " blocs de différence pour une moyenne de " << ((double)scoresAlgos[alg])/(double)(nbTests*20) << std::endl;
		}
	}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1090, %rsp           # imm = 0x1090
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x10, -0x14(%rbp)
movl $0x100, -0x18(%rbp)     # imm = 0x100
movq $0x3e8, -0x20(%rbp)     # imm = 0x3E8
movl $0x800, -0x24(%rbp)     # imm = 0x800
movl $0x800, -0x28(%rbp)     # imm = 0x800
leaq -0x48(%rbp), %rdi
callq 0x3370
leaq -0x68(%rbp), %rdi
callq 0x3370
movq $0x1, -0x70(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x7180
leaq -0xb8(%rbp), %rdi
callq 0x71a0
leaq -0xd9(%rbp), %rdi
movq %rdi, -0xbd8(%rbp)
callq 0x3430
movq -0xbd8(%rbp), %rdx
leaq 0xf7e8(%rip), %rsi      # 0x13048
leaq -0xd8(%rbp), %rdi
callq 0x72a0
jmp 0x386e
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x71c0
movq %rax, -0xbe0(%rbp)
jmp 0x388a
movq -0xbe0(%rbp), %rax
leaq 0xae68(%rip), %rcx      # 0xe700
movq %rcx, (%rax)
leaq -0xd8(%rbp), %rdi
callq 0x3180
leaq -0xd9(%rbp), %rdi
callq 0x32d0
leaq -0x111(%rbp), %rdi
movq %rdi, -0xbe8(%rbp)
callq 0x3430
movq -0xbe8(%rbp), %rdx
leaq 0xf777(%rip), %rsi      # 0x1304b
leaq -0x110(%rbp), %rdi
callq 0x72a0
jmp 0x38e2
leaq -0xb8(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x71c0
movq %rax, -0xbf0(%rbp)
jmp 0x38fe
movq -0xbf0(%rbp), %rax
leaq 0xc7d4(%rip), %rcx      # 0x100e0
movq %rcx, (%rax)
leaq -0x110(%rbp), %rdi
callq 0x3180
leaq -0x111(%rbp), %rdi
callq 0x32d0
leaq -0x139(%rbp), %rdi
movq %rdi, -0xbf8(%rbp)
callq 0x3430
movq -0xbf8(%rbp), %rdx
leaq 0xf708(%rip), %rsi      # 0x13050
leaq -0x138(%rbp), %rdi
callq 0x72a0
jmp 0x3956
leaq -0xb8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x71c0
movq %rax, -0xc00(%rbp)
jmp 0x3972
movq -0xc00(%rbp), %rax
leaq 0xe530(%rip), %rcx      # 0x11eb0
movq %rcx, (%rax)
leaq -0x138(%rbp), %rdi
callq 0x3180
leaq -0x139(%rbp), %rdi
callq 0x32d0
leaq -0x161(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x3430
movq -0xc08(%rbp), %rdx
leaq 0xf699(%rip), %rsi      # 0x13055
leaq -0x160(%rbp), %rdi
callq 0x72a0
jmp 0x39ca
leaq -0xb8(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x71c0
movq %rax, -0xc10(%rbp)
jmp 0x39e6
movq -0xc10(%rbp), %rax
leaq 0xea0c(%rip), %rcx      # 0x12400
movq %rcx, (%rax)
leaq -0x160(%rbp), %rdi
callq 0x3180
leaq -0x161(%rbp), %rdi
callq 0x32d0
callq 0x3060
movq %rax, -0x180(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x7350
movq %rax, -0xc18(%rbp)
jmp 0x3a30
movq -0xc18(%rbp), %rax
movq %rax, -0x178(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x7370
movq %rax, -0xc20(%rbp)
jmp 0x3a53
movq -0xc20(%rbp), %rax
movq %rax, -0x170(%rbp)
movl $0x1, -0x184(%rbp)
movl -0x184(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x5a00
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc30(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
callq 0x3430
movq -0xc30(%rbp), %rsi
movq -0xc28(%rbp), %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x72a0
jmp 0x3abf
leaq -0x1a9(%rbp), %rdi
callq 0x32d0
leaq 0xfc0f(%rip), %rsi      # 0x136e1
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xc31(%rbp)
jmp 0x3ae6
movb -0xc31(%rbp), %al
testb $0x1, %al
jne 0x3af5
jmp 0x3e12
cmpl $0x1, -0x184(%rbp)
jne 0x3d25
cmpl $0x2, -0x8(%rbp)
jne 0x3d25
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc48(%rbp)
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0xc40(%rbp)
callq 0x3430
movq -0xc48(%rbp), %rsi
movq -0xc40(%rbp), %rdx
leaq -0x1d0(%rbp), %rdi
callq 0x72a0
jmp 0x3b49
leaq -0x1d0(%rbp), %rdi
callq 0x6e10
jmp 0x3b57
leaq -0x1d0(%rbp), %rdi
callq 0x3180
leaq -0x1d1(%rbp), %rdi
callq 0x32d0
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3bb7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x3180
leaq -0xd9(%rbp), %rdi
callq 0x32d0
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3bfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x3180
leaq -0x111(%rbp), %rdi
callq 0x32d0
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3c3d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x3180
leaq -0x139(%rbp), %rdi
callq 0x32d0
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x3180
leaq -0x161(%rbp), %rdi
callq 0x32d0
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1a9(%rbp), %rdi
callq 0x32d0
jmp 0x6dd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3d14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x3180
leaq -0x1d1(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq 0x182c4(%rip), %rdi     # 0x1bff0
leaq 0xf327(%rip), %rsi      # 0x1305a
callq 0x3270
movq %rax, -0xc50(%rbp)
jmp 0x3d41
movq -0xc50(%rbp), %rdi
movq 0x18269(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x3d56
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc60(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0xc58(%rbp)
callq 0x3430
movq -0xc60(%rbp), %rsi
movq -0xc58(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x72a0
jmp 0x3d93
leaq -0x1f8(%rbp), %rdi
callq 0x70a0
jmp 0x3da1
leaq -0x1f8(%rbp), %rdi
callq 0x3180
leaq -0x1f9(%rbp), %rdi
callq 0x32d0
movl $0x1, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x3e01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x3180
leaq -0x1f9(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xf268(%rip), %rsi      # 0x13081
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xc61(%rbp)
jmp 0x3e2d
movb -0xc61(%rbp), %al
testb $0x1, %al
jne 0x3e3c
jmp 0x417a
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x222(%rbp)
movb $0x0, -0x223(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xc62(%rbp)
je 0x3f18
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xc78(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0xc70(%rbp)
callq 0x3430
movq -0xc78(%rbp), %rsi
movq -0xc70(%rbp), %rdx
movb $0x1, -0x222(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x72a0
jmp 0x3ebe
movb $0x1, -0x223(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x7150
movb %al, -0xc79(%rbp)
jmp 0x3ed9
movb -0xc79(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xc7a(%rbp)
jne 0x3eee
jmp 0x3f0c
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
setne %al
movb %al, -0xc7a(%rbp)
movb -0xc7a(%rbp), %al
movb %al, -0xc62(%rbp)
movb -0xc62(%rbp), %al
movb %al, -0xc7b(%rbp)
testb $0x1, -0x223(%rbp)
jne 0x3f2f
jmp 0x3f3b
leaq -0x220(%rbp), %rdi
callq 0x3180
testb $0x1, -0x222(%rbp)
jne 0x3f46
jmp 0x3f52
leaq -0x221(%rbp), %rdi
callq 0x32d0
movb -0xc7b(%rbp), %al
testb $0x1, %al
jne 0x3f61
jmp 0x40a9
movq 0x18088(%rip), %rdi     # 0x1bff0
leaq 0xf119(%rip), %rsi      # 0x13088
callq 0x3270
movq %rax, -0xc88(%rbp)
jmp 0x3f7d
movq -0xc88(%rbp), %rdi
movq 0x1802d(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x3f92
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xc98(%rbp)
leaq -0x249(%rbp), %rdi
movq %rdi, -0xc90(%rbp)
callq 0x3430
movq -0xc98(%rbp), %rsi
movq -0xc90(%rbp), %rdx
leaq -0x248(%rbp), %rdi
callq 0x72a0
jmp 0x3fcf
leaq -0x248(%rbp), %rdi
callq 0x70a0
jmp 0x3fdd
leaq -0x248(%rbp), %rdi
callq 0x3180
leaq -0x249(%rbp), %rdi
callq 0x32d0
movl $0x3, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x404a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x223(%rbp)
jne 0x403c
jmp 0x4048
leaq -0x220(%rbp), %rdi
callq 0x3180
jmp 0x404a
testb $0x1, -0x222(%rbp)
jne 0x4055
jmp 0x4061
leaq -0x221(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4098
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x3180
leaq -0x249(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xca8(%rbp)
leaq -0x271(%rbp), %rdi
movq %rdi, -0xca0(%rbp)
callq 0x3430
movq -0xca8(%rbp), %rsi
movq -0xca0(%rbp), %rdx
leaq -0x270(%rbp), %rdi
callq 0x72a0
jmp 0x40ee
xorl %eax, %eax
movl %eax, %esi
leaq -0x270(%rbp), %rdi
movl $0xa, %edx
callq 0x73c0
movq %rax, -0xcb0(%rbp)
jmp 0x410c
movq -0xcb0(%rbp), %rax
movq %rax, -0x170(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x3180
leaq -0x271(%rbp), %rdi
callq 0x32d0
jmp 0x59b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4169
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x3180
leaq -0x271(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xef3c(%rip), %rsi      # 0x130bd
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xcb1(%rbp)
jmp 0x4195
movb -0xcb1(%rbp), %al
testb $0x1, %al
jne 0x41a4
jmp 0x44a7
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x29a(%rbp)
movb $0x0, -0x29b(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xcb2(%rbp)
je 0x424b
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xcc8(%rbp)
leaq -0x299(%rbp), %rdi
movq %rdi, -0xcc0(%rbp)
callq 0x3430
movq -0xcc8(%rbp), %rsi
movq -0xcc0(%rbp), %rdx
movb $0x1, -0x29a(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x72a0
jmp 0x4222
movb $0x1, -0x29b(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x7150
movb %al, -0xcc9(%rbp)
jmp 0x423d
movb -0xcc9(%rbp), %al
movb %al, -0xcb2(%rbp)
jmp 0x424b
movb -0xcb2(%rbp), %al
movb %al, -0xcca(%rbp)
testb $0x1, -0x29b(%rbp)
jne 0x4262
jmp 0x426e
leaq -0x298(%rbp), %rdi
callq 0x3180
testb $0x1, -0x29a(%rbp)
jne 0x4279
jmp 0x4285
leaq -0x299(%rbp), %rdi
callq 0x32d0
movb -0xcca(%rbp), %al
testb $0x1, %al
jne 0x4294
jmp 0x43dc
movq 0x17d55(%rip), %rdi     # 0x1bff0
leaq 0xee22(%rip), %rsi      # 0x130c4
callq 0x3270
movq %rax, -0xcd8(%rbp)
jmp 0x42b0
movq -0xcd8(%rbp), %rdi
movq 0x17cfa(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x42c5
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xce8(%rbp)
leaq -0x2c1(%rbp), %rdi
movq %rdi, -0xce0(%rbp)
callq 0x3430
movq -0xce8(%rbp), %rsi
movq -0xce0(%rbp), %rdx
leaq -0x2c0(%rbp), %rdi
callq 0x72a0
jmp 0x4302
leaq -0x2c0(%rbp), %rdi
callq 0x70a0
jmp 0x4310
leaq -0x2c0(%rbp), %rdi
callq 0x3180
leaq -0x2c1(%rbp), %rdi
callq 0x32d0
movl $0x4, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x437d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x29b(%rbp)
jne 0x436f
jmp 0x437b
leaq -0x298(%rbp), %rdi
callq 0x3180
jmp 0x437d
testb $0x1, -0x29a(%rbp)
jne 0x4388
jmp 0x4394
leaq -0x299(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x43cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x3180
leaq -0x2c1(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xcf8(%rbp)
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0xcf0(%rbp)
callq 0x3430
movq -0xcf8(%rbp), %rsi
movq -0xcf0(%rbp), %rdx
leaq -0x2e8(%rbp), %rdi
callq 0x72a0
jmp 0x4421
xorl %eax, %eax
movl %eax, %esi
leaq -0x2e8(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xcfc(%rbp)
jmp 0x443e
movl -0xcfc(%rbp), %eax
movl %eax, -0x14(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x3180
leaq -0x2e9(%rbp), %rdi
callq 0x32d0
jmp 0x59af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4496
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x3180
leaq -0x2e9(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xec5e(%rip), %rsi      # 0x1310c
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xcfd(%rbp)
jmp 0x44c2
movb -0xcfd(%rbp), %al
testb $0x1, %al
jne 0x44d1
jmp 0x47d4
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x312(%rbp)
movb $0x0, -0x313(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xcfe(%rbp)
je 0x4578
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd10(%rbp)
leaq -0x311(%rbp), %rdi
movq %rdi, -0xd08(%rbp)
callq 0x3430
movq -0xd10(%rbp), %rsi
movq -0xd08(%rbp), %rdx
movb $0x1, -0x312(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x72a0
jmp 0x454f
movb $0x1, -0x313(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x7150
movb %al, -0xd11(%rbp)
jmp 0x456a
movb -0xd11(%rbp), %al
movb %al, -0xcfe(%rbp)
jmp 0x4578
movb -0xcfe(%rbp), %al
movb %al, -0xd12(%rbp)
testb $0x1, -0x313(%rbp)
jne 0x458f
jmp 0x459b
leaq -0x310(%rbp), %rdi
callq 0x3180
testb $0x1, -0x312(%rbp)
jne 0x45a6
jmp 0x45b2
leaq -0x311(%rbp), %rdi
callq 0x32d0
movb -0xd12(%rbp), %al
testb $0x1, %al
jne 0x45c1
jmp 0x4709
movq 0x17a28(%rip), %rdi     # 0x1bff0
leaq 0xeb44(%rip), %rsi      # 0x13113
callq 0x3270
movq %rax, -0xd20(%rbp)
jmp 0x45dd
movq -0xd20(%rbp), %rdi
movq 0x179cd(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x45f2
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xd30(%rbp)
leaq -0x339(%rbp), %rdi
movq %rdi, -0xd28(%rbp)
callq 0x3430
movq -0xd30(%rbp), %rsi
movq -0xd28(%rbp), %rdx
leaq -0x338(%rbp), %rdi
callq 0x72a0
jmp 0x462f
leaq -0x338(%rbp), %rdi
callq 0x70a0
jmp 0x463d
leaq -0x338(%rbp), %rdi
callq 0x3180
leaq -0x339(%rbp), %rdi
callq 0x32d0
movl $0x5, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x46aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x313(%rbp)
jne 0x469c
jmp 0x46a8
leaq -0x310(%rbp), %rdi
callq 0x3180
jmp 0x46aa
testb $0x1, -0x312(%rbp)
jne 0x46b5
jmp 0x46c1
leaq -0x311(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x46f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x3180
leaq -0x339(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd40(%rbp)
leaq -0x361(%rbp), %rdi
movq %rdi, -0xd38(%rbp)
callq 0x3430
movq -0xd40(%rbp), %rsi
movq -0xd38(%rbp), %rdx
leaq -0x360(%rbp), %rdi
callq 0x72a0
jmp 0x474e
xorl %eax, %eax
movl %eax, %esi
leaq -0x360(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xd44(%rbp)
jmp 0x476b
movl -0xd44(%rbp), %eax
movl %eax, -0x18(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x3180
leaq -0x361(%rbp), %rdi
callq 0x32d0
jmp 0x59ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x47c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x3180
leaq -0x361(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xe980(%rip), %rsi      # 0x1315b
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xd45(%rbp)
jmp 0x47ef
movb -0xd45(%rbp), %al
testb $0x1, %al
jne 0x47fe
jmp 0x4b04
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x38a(%rbp)
movb $0x0, -0x38b(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xd46(%rbp)
je 0x48a5
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd58(%rbp)
leaq -0x389(%rbp), %rdi
movq %rdi, -0xd50(%rbp)
callq 0x3430
movq -0xd58(%rbp), %rsi
movq -0xd50(%rbp), %rdx
movb $0x1, -0x38a(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x72a0
jmp 0x487c
movb $0x1, -0x38b(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x7150
movb %al, -0xd59(%rbp)
jmp 0x4897
movb -0xd59(%rbp), %al
movb %al, -0xd46(%rbp)
jmp 0x48a5
movb -0xd46(%rbp), %al
movb %al, -0xd5a(%rbp)
testb $0x1, -0x38b(%rbp)
jne 0x48bc
jmp 0x48c8
leaq -0x388(%rbp), %rdi
callq 0x3180
testb $0x1, -0x38a(%rbp)
jne 0x48d3
jmp 0x48df
leaq -0x389(%rbp), %rdi
callq 0x32d0
movb -0xd5a(%rbp), %al
testb $0x1, %al
jne 0x48ee
jmp 0x4a36
movq 0x176fb(%rip), %rdi     # 0x1bff0
leaq 0xe868(%rip), %rsi      # 0x13164
callq 0x3270
movq %rax, -0xd68(%rbp)
jmp 0x490a
movq -0xd68(%rbp), %rdi
movq 0x176a0(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x491f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xd78(%rbp)
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0xd70(%rbp)
callq 0x3430
movq -0xd78(%rbp), %rsi
movq -0xd70(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x72a0
jmp 0x495c
leaq -0x3b0(%rbp), %rdi
callq 0x70a0
jmp 0x496a
leaq -0x3b0(%rbp), %rdi
callq 0x3180
leaq -0x3b1(%rbp), %rdi
callq 0x32d0
movl $0x6, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x49d7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x38b(%rbp)
jne 0x49c9
jmp 0x49d5
leaq -0x388(%rbp), %rdi
callq 0x3180
jmp 0x49d7
testb $0x1, -0x38a(%rbp)
jne 0x49e2
jmp 0x49ee
leaq -0x389(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4a25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x3180
leaq -0x3b1(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xd88(%rbp)
leaq -0x3d9(%rbp), %rdi
movq %rdi, -0xd80(%rbp)
callq 0x3430
movq -0xd88(%rbp), %rsi
movq -0xd80(%rbp), %rdx
leaq -0x3d8(%rbp), %rdi
callq 0x72a0
jmp 0x4a7b
xorl %eax, %eax
movl %eax, %esi
leaq -0x3d8(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xd8c(%rbp)
jmp 0x4a98
movl -0xd8c(%rbp), %eax
cltq
movq %rax, -0x20(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x3180
leaq -0x3d9(%rbp), %rdi
callq 0x32d0
jmp 0x59ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4af3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x3180
leaq -0x3d9(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xe6a1(%rip), %rsi      # 0x131ac
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xd8d(%rbp)
jmp 0x4b1f
movb -0xd8d(%rbp), %al
testb $0x1, %al
jne 0x4b2e
jmp 0x4e31
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x402(%rbp)
movb $0x0, -0x403(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xd8e(%rbp)
je 0x4bd5
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xda0(%rbp)
leaq -0x401(%rbp), %rdi
movq %rdi, -0xd98(%rbp)
callq 0x3430
movq -0xda0(%rbp), %rsi
movq -0xd98(%rbp), %rdx
movb $0x1, -0x402(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x72a0
jmp 0x4bac
movb $0x1, -0x403(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x7150
movb %al, -0xda1(%rbp)
jmp 0x4bc7
movb -0xda1(%rbp), %al
movb %al, -0xd8e(%rbp)
jmp 0x4bd5
movb -0xd8e(%rbp), %al
movb %al, -0xda2(%rbp)
testb $0x1, -0x403(%rbp)
jne 0x4bec
jmp 0x4bf8
leaq -0x400(%rbp), %rdi
callq 0x3180
testb $0x1, -0x402(%rbp)
jne 0x4c03
jmp 0x4c0f
leaq -0x401(%rbp), %rdi
callq 0x32d0
movb -0xda2(%rbp), %al
testb $0x1, %al
jne 0x4c1e
jmp 0x4d66
movq 0x173cb(%rip), %rdi     # 0x1bff0
leaq 0xe585(%rip), %rsi      # 0x131b1
callq 0x3270
movq %rax, -0xdb0(%rbp)
jmp 0x4c3a
movq -0xdb0(%rbp), %rdi
movq 0x17370(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x4c4f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xdc0(%rbp)
leaq -0x429(%rbp), %rdi
movq %rdi, -0xdb8(%rbp)
callq 0x3430
movq -0xdc0(%rbp), %rsi
movq -0xdb8(%rbp), %rdx
leaq -0x428(%rbp), %rdi
callq 0x72a0
jmp 0x4c8c
leaq -0x428(%rbp), %rdi
callq 0x70a0
jmp 0x4c9a
leaq -0x428(%rbp), %rdi
callq 0x3180
leaq -0x429(%rbp), %rdi
callq 0x32d0
movl $0x7, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4d07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x403(%rbp)
jne 0x4cf9
jmp 0x4d05
leaq -0x400(%rbp), %rdi
callq 0x3180
jmp 0x4d07
testb $0x1, -0x402(%rbp)
jne 0x4d12
jmp 0x4d1e
leaq -0x401(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4d55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x3180
leaq -0x429(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xdd0(%rbp)
leaq -0x451(%rbp), %rdi
movq %rdi, -0xdc8(%rbp)
callq 0x3430
movq -0xdd0(%rbp), %rsi
movq -0xdc8(%rbp), %rdx
leaq -0x450(%rbp), %rdi
callq 0x72a0
jmp 0x4dab
xorl %eax, %eax
movl %eax, %esi
leaq -0x450(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xdd4(%rbp)
jmp 0x4dc8
movl -0xdd4(%rbp), %eax
movl %eax, -0x24(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x3180
leaq -0x451(%rbp), %rdi
callq 0x32d0
jmp 0x59a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x4e20
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x3180
leaq -0x451(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xe3c5(%rip), %rsi      # 0x131fd
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xdd5(%rbp)
jmp 0x4e4c
movb -0xdd5(%rbp), %al
testb $0x1, %al
jne 0x4e5b
jmp 0x515e
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x47a(%rbp)
movb $0x0, -0x47b(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xdd6(%rbp)
je 0x4f02
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xde8(%rbp)
leaq -0x479(%rbp), %rdi
movq %rdi, -0xde0(%rbp)
callq 0x3430
movq -0xde8(%rbp), %rsi
movq -0xde0(%rbp), %rdx
movb $0x1, -0x47a(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x72a0
jmp 0x4ed9
movb $0x1, -0x47b(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x7150
movb %al, -0xde9(%rbp)
jmp 0x4ef4
movb -0xde9(%rbp), %al
movb %al, -0xdd6(%rbp)
jmp 0x4f02
movb -0xdd6(%rbp), %al
movb %al, -0xdea(%rbp)
testb $0x1, -0x47b(%rbp)
jne 0x4f19
jmp 0x4f25
leaq -0x478(%rbp), %rdi
callq 0x3180
testb $0x1, -0x47a(%rbp)
jne 0x4f30
jmp 0x4f3c
leaq -0x479(%rbp), %rdi
callq 0x32d0
movb -0xdea(%rbp), %al
testb $0x1, %al
jne 0x4f4b
jmp 0x5093
movq 0x1709e(%rip), %rdi     # 0x1bff0
leaq 0xe2a9(%rip), %rsi      # 0x13202
callq 0x3270
movq %rax, -0xdf8(%rbp)
jmp 0x4f67
movq -0xdf8(%rbp), %rdi
movq 0x17043(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x4f7c
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe08(%rbp)
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0xe00(%rbp)
callq 0x3430
movq -0xe08(%rbp), %rsi
movq -0xe00(%rbp), %rdx
leaq -0x4a0(%rbp), %rdi
callq 0x72a0
jmp 0x4fb9
leaq -0x4a0(%rbp), %rdi
callq 0x70a0
jmp 0x4fc7
leaq -0x4a0(%rbp), %rdi
callq 0x3180
leaq -0x4a1(%rbp), %rdi
callq 0x32d0
movl $0x8, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x5034
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x47b(%rbp)
jne 0x5026
jmp 0x5032
leaq -0x478(%rbp), %rdi
callq 0x3180
jmp 0x5034
testb $0x1, -0x47a(%rbp)
jne 0x503f
jmp 0x504b
leaq -0x479(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x5082
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x3180
leaq -0x4a1(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe18(%rbp)
leaq -0x4c9(%rbp), %rdi
movq %rdi, -0xe10(%rbp)
callq 0x3430
movq -0xe18(%rbp), %rsi
movq -0xe10(%rbp), %rdx
leaq -0x4c8(%rbp), %rdi
callq 0x72a0
jmp 0x50d8
xorl %eax, %eax
movl %eax, %esi
leaq -0x4c8(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xe1c(%rbp)
jmp 0x50f5
movl -0xe1c(%rbp), %eax
movl %eax, -0x28(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x3180
leaq -0x4c9(%rbp), %rdi
callq 0x32d0
jmp 0x59a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x514d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x3180
leaq -0x4c9(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xe0e9(%rip), %rsi      # 0x1324e
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xe1d(%rbp)
jmp 0x5179
movb -0xe1d(%rbp), %al
testb $0x1, %al
jne 0x5188
jmp 0x52c6
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %eax
cmpl -0x8(%rbp), %eax
je 0x51ba
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x0, (%rax)
jne 0x52a7
movq 0x16e2f(%rip), %rdi     # 0x1bff0
leaq 0xe08f(%rip), %rsi      # 0x13257
callq 0x3270
movq %rax, -0xe28(%rbp)
jmp 0x51d6
movq -0xe28(%rbp), %rdi
movq 0x16dd4(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x51eb
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe38(%rbp)
leaq -0x4f1(%rbp), %rdi
movq %rdi, -0xe30(%rbp)
callq 0x3430
movq -0xe38(%rbp), %rsi
movq -0xe30(%rbp), %rdx
leaq -0x4f0(%rbp), %rdi
callq 0x72a0
jmp 0x5228
leaq -0x4f0(%rbp), %rdi
callq 0x70a0
jmp 0x5236
leaq -0x4f0(%rbp), %rdi
callq 0x3180
leaq -0x4f1(%rbp), %rdi
callq 0x32d0
movl $0x9, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x5296
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x3180
leaq -0x4f1(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x48(%rbp), %rdi
callq 0x3360
jmp 0x52c1
jmp 0x59a5
leaq 0xdfc7(%rip), %rsi      # 0x13294
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xe39(%rbp)
jmp 0x52e1
movb -0xe39(%rbp), %al
testb $0x1, %al
jne 0x52f0
jmp 0x55f6
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %ecx
movl -0x8(%rbp), %edx
movb $0x0, -0x51a(%rbp)
movb $0x0, -0x51b(%rbp)
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0xe3a(%rbp)
je 0x5397
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe50(%rbp)
leaq -0x519(%rbp), %rdi
movq %rdi, -0xe48(%rbp)
callq 0x3430
movq -0xe50(%rbp), %rsi
movq -0xe48(%rbp), %rdx
movb $0x1, -0x51a(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x72a0
jmp 0x536e
movb $0x1, -0x51b(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x7150
movb %al, -0xe51(%rbp)
jmp 0x5389
movb -0xe51(%rbp), %al
movb %al, -0xe3a(%rbp)
jmp 0x5397
movb -0xe3a(%rbp), %al
movb %al, -0xe52(%rbp)
testb $0x1, -0x51b(%rbp)
jne 0x53ae
jmp 0x53ba
leaq -0x518(%rbp), %rdi
callq 0x3180
testb $0x1, -0x51a(%rbp)
jne 0x53c5
jmp 0x53d1
leaq -0x519(%rbp), %rdi
callq 0x32d0
movb -0xe52(%rbp), %al
testb $0x1, %al
jne 0x53e0
jmp 0x5528
movq 0x16c09(%rip), %rdi     # 0x1bff0
leaq 0xdeae(%rip), %rsi      # 0x1329c
callq 0x3270
movq %rax, -0xe60(%rbp)
jmp 0x53fc
movq -0xe60(%rbp), %rdi
movq 0x16bae(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5411
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xe70(%rbp)
leaq -0x541(%rbp), %rdi
movq %rdi, -0xe68(%rbp)
callq 0x3430
movq -0xe70(%rbp), %rsi
movq -0xe68(%rbp), %rdx
leaq -0x540(%rbp), %rdi
callq 0x72a0
jmp 0x544e
leaq -0x540(%rbp), %rdi
callq 0x70a0
jmp 0x545c
leaq -0x540(%rbp), %rdi
callq 0x3180
leaq -0x541(%rbp), %rdi
callq 0x32d0
movl $0xa, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x54c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
testb $0x1, -0x51b(%rbp)
jne 0x54bb
jmp 0x54c7
leaq -0x518(%rbp), %rdi
callq 0x3180
jmp 0x54c9
testb $0x1, -0x51a(%rbp)
jne 0x54d4
jmp 0x54e0
leaq -0x519(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x5517
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x3180
leaq -0x541(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0xe80(%rbp)
leaq -0x569(%rbp), %rdi
movq %rdi, -0xe78(%rbp)
callq 0x3430
movq -0xe80(%rbp), %rsi
movq -0xe78(%rbp), %rdx
leaq -0x568(%rbp), %rdi
callq 0x72a0
jmp 0x556d
xorl %eax, %eax
movl %eax, %esi
leaq -0x568(%rbp), %rdi
movl $0xa, %edx
callq 0x7400
movl %eax, -0xe84(%rbp)
jmp 0x558a
movl -0xe84(%rbp), %eax
cltq
movq %rax, -0x70(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x3180
leaq -0x569(%rbp), %rdi
callq 0x32d0
jmp 0x59a3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x55e5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x3180
leaq -0x569(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
leaq 0xdce1(%rip), %rsi      # 0x132de
leaq -0x1a8(%rbp), %rdi
callq 0x7390
movb %al, -0xe85(%rbp)
jmp 0x5611
movb -0xe85(%rbp), %al
testb $0x1, %al
jne 0x5620
jmp 0x575e
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
movl -0x184(%rbp), %eax
cmpl -0x8(%rbp), %eax
je 0x5652
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x0, (%rax)
jne 0x573f
movq 0x16997(%rip), %rdi     # 0x1bff0
leaq 0xdc8b(%rip), %rsi      # 0x132eb
callq 0x3270
movq %rax, -0xe90(%rbp)
jmp 0x566e
movq -0xe90(%rbp), %rdi
movq 0x1693c(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5683
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xea0(%rbp)
leaq -0x591(%rbp), %rdi
movq %rdi, -0xe98(%rbp)
callq 0x3430
movq -0xea0(%rbp), %rsi
movq -0xe98(%rbp), %rdx
leaq -0x590(%rbp), %rdi
callq 0x72a0
jmp 0x56c0
leaq -0x590(%rbp), %rdi
callq 0x70a0
jmp 0x56ce
leaq -0x590(%rbp), %rdi
callq 0x3180
leaq -0x591(%rbp), %rdi
callq 0x32d0
movl $0xb, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x572e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x3180
leaq -0x591(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
movq -0x10(%rbp), %rax
movslq -0x184(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x68(%rbp), %rdi
callq 0x3360
jmp 0x5759
jmp 0x59a1
leaq -0xb8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x7440
movq %rax, -0xea8(%rbp)
jmp 0x577a
movq -0xea8(%rbp), %rax
cmpq $0x1, %rax
jne 0x589c
leaq -0x88(%rbp), %rdi
movq %rdi, -0xeb8(%rbp)
callq 0x7530
movq -0xeb8(%rbp), %rdi
movq %rax, -0x5a8(%rbp)
callq 0x7560
movq %rax, -0x5b0(%rbp)
movq -0x5a8(%rbp), %rdi
movq -0x5b0(%rbp), %rsi
leaq -0x1a8(%rbp), %rdx
callq 0x74e0
movq %rax, -0xeb0(%rbp)
jmp 0x57db
movq -0xeb0(%rbp), %rax
movq %rax, -0x5a0(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x7560
movq %rax, -0x5b8(%rbp)
leaq -0x5a0(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x74a0
testb $0x1, %al
jne 0x5815
jmp 0x5880
movq 0x167d4(%rip), %rdi     # 0x1bff0
leaq 0xdb05(%rip), %rsi      # 0x13328
callq 0x3270
movq %rax, -0xec0(%rbp)
jmp 0x5831
movq -0xec0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3250
movq %rax, -0xec8(%rbp)
jmp 0x584d
movq -0xec8(%rbp), %rdi
leaq 0xdae5(%rip), %rsi      # 0x13340
callq 0x3270
movq %rax, -0xed0(%rbp)
jmp 0x5869
movq -0xed0(%rbp), %rdi
movq 0x16741(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x587e
jmp 0x5897
leaq -0x88(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x7590
jmp 0x5895
jmp 0x5897
jmp 0x599f
movq 0x1674d(%rip), %rdi     # 0x1bff0
leaq 0xdaa9(%rip), %rsi      # 0x13353
callq 0x3270
movq %rax, -0xed8(%rbp)
jmp 0x58b8
movq -0xed8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3250
movq %rax, -0xee0(%rbp)
jmp 0x58d4
movq -0xee0(%rbp), %rdi
movq 0x166d6(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x58e9
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0xef0(%rbp)
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0xee8(%rbp)
callq 0x3430
movq -0xef0(%rbp), %rsi
movq -0xee8(%rbp), %rdx
leaq -0x5d8(%rbp), %rdi
callq 0x72a0
jmp 0x5926
leaq -0x5d8(%rbp), %rdi
callq 0x70a0
jmp 0x5934
leaq -0x5d8(%rbp), %rdi
callq 0x3180
leaq -0x5d9(%rbp), %rdi
callq 0x32d0
movl $0xc, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x59bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x5991
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x3180
leaq -0x5d9(%rbp), %rdi
callq 0x32d0
jmp 0x59ef
jmp 0x59a1
jmp 0x59a3
jmp 0x59a5
jmp 0x59a7
jmp 0x59a9
jmp 0x59ab
jmp 0x59ad
jmp 0x59af
jmp 0x59b1
jmp 0x59b3
movl $0x0, -0x1d8(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x3180
movl -0x1d8(%rbp), %eax
testl %eax, %eax
jne 0x6da3
jmp 0x59d9
jmp 0x59db
movl -0x184(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x184(%rbp)
jmp 0x3a6b
leaq -0x1a8(%rbp), %rdi
callq 0x3180
jmp 0x6dd9
cmpl $0x0, -0x14(%rbp)
je 0x5a18
cmpl $0x0, -0x18(%rbp)
je 0x5a18
cmpl $0x0, -0x24(%rbp)
je 0x5a18
cmpl $0x0, -0x28(%rbp)
jne 0x5a5f
movq 0x165d1(%rip), %rdi     # 0x1bff0
leaq 0xd95a(%rip), %rsi      # 0x13380
callq 0x3270
movq %rax, -0xef8(%rbp)
jmp 0x5a34
movq -0xef8(%rbp), %rdi
movq 0x16576(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5a49
movl $0x14, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x6da3
movl -0x18(%rbp), %eax
cmpl -0x24(%rbp), %eax
ja 0x5a6f
movl -0x18(%rbp), %eax
cmpl -0x28(%rbp), %eax
jbe 0x5ab6
movq 0x1657a(%rip), %rdi     # 0x1bff0
leaq 0xd934(%rip), %rsi      # 0x133b1
callq 0x3270
movq %rax, -0xf00(%rbp)
jmp 0x5a8b
movq -0xf00(%rbp), %rdi
movq 0x1651f(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5aa0
movl $0x15, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x6da3
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jbe 0x5b09
movl -0x14(%rbp), %eax
movl %eax, -0x5e0(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x5e0(%rbp), %eax
movl %eax, -0x18(%rbp)
movq 0x16513(%rip), %rdi     # 0x1bff0
leaq 0xd922(%rip), %rsi      # 0x13406
callq 0x3270
movq %rax, -0xf08(%rbp)
jmp 0x5af2
movq -0xf08(%rbp), %rdi
movq 0x164b8(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5b07
jmp 0x5b09
cmpq $0x0, -0x70(%rbp)
jne 0x5b57
movq 0x164d9(%rip), %rdi     # 0x1bff0
leaq 0xd952(%rip), %rsi      # 0x13470
callq 0x3270
movq %rax, -0xf10(%rbp)
jmp 0x5b2c
movq -0xf10(%rbp), %rdi
movq 0x1647e(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5b41
movl $0x16, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x6da3
cmpq $0x0, -0x20(%rbp)
jne 0x5ba5
movq 0x1648b(%rip), %rdi     # 0x1bff0
leaq 0xd938(%rip), %rsi      # 0x134a4
callq 0x3270
movq %rax, -0xf18(%rbp)
jmp 0x5b7a
movq -0xf18(%rbp), %rdi
movq 0x16430(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5b8f
movl $0x17, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
jmp 0x6da3
leaq -0x88(%rbp), %rdi
callq 0x7600
testb $0x1, %al
jne 0x5bb7
jmp 0x5c25
leaq -0xb8(%rbp), %rdi
callq 0x7640
movq %rax, -0x5e8(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x7670
movq %rax, -0x5f0(%rbp)
leaq -0x5e8(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0x76a0
testb $0x1, %al
jne 0x5bf6
jmp 0x5c23
leaq -0x5e8(%rbp), %rdi
callq 0x76d0
movq %rax, %rsi
leaq -0x88(%rbp), %rdi
callq 0x7590
jmp 0x5c13
jmp 0x5c15
leaq -0x5e8(%rbp), %rdi
callq 0x76f0
jmp 0x5bdd
jmp 0x5c25
movq 0x1639c(%rip), %rdi     # 0x1bfc8
leaq 0xd8a2(%rip), %rsi      # 0x134d5
callq 0x3270
movq %rax, -0xf20(%rbp)
jmp 0x5c41
movq -0xf20(%rbp), %rdi
movq 0x16369(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5c56
movq 0x1636b(%rip), %rdi     # 0x1bfc8
leaq 0xd882(%rip), %rsi      # 0x134e6
callq 0x3270
movq %rax, -0xf28(%rbp)
jmp 0x5c72
movq -0xf28(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0x3450
movq %rax, -0xf30(%rbp)
jmp 0x5c8e
movq -0xf30(%rbp), %rdi
movq 0x1631c(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5ca3
leaq -0x48(%rbp), %rdi
callq 0x3400
testb $0x1, %al
jne 0x5cb5
jmp 0x5d78
leaq -0x778(%rbp), %rdi
callq 0x31d0
jmp 0x5cc3
leaq -0x768(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0x3450
movq %rax, -0xf38(%rbp)
jmp 0x5cdf
movq -0xf38(%rbp), %rdi
leaq 0xd80d(%rip), %rsi      # 0x134fa
callq 0x3270
jmp 0x5cf4
leaq -0x88(%rbp), %rdi
callq 0x7720
cmpq $0x1, %rax
jne 0x5d5a
leaq -0x768(%rbp), %rax
movq %rax, -0xf40(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x88(%rbp), %rdi
callq 0x7740
movq -0xf40(%rbp), %rdi
movq %rax, %rsi
callq 0x3250
jmp 0x5d35
jmp 0x5d5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x31f0
jmp 0x6dd9
leaq -0x778(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3320
jmp 0x5d6c
leaq -0x778(%rbp), %rdi
callq 0x31f0
movq -0x170(%rbp), %rsi
leaq -0x780(%rbp), %rdi
callq 0x7760
jmp 0x5d8d
movl -0x14(%rbp), %esi
movl -0x18(%rbp), %edx
leaq -0x788(%rbp), %rdi
callq 0x7790
jmp 0x5da1
leaq -0x790(%rbp), %rdi
xorl %esi, %esi
movl $0xffffff, %edx         # imm = 0xFFFFFF
callq 0x7790
jmp 0x5db6
cmpq $0x1, -0x70(%rbp)
jne 0x64c7
leaq -0x88(%rbp), %rdi
callq 0x7720
cmpq $0x1, %rax
jbe 0x5e06
movq 0x161ee(%rip), %rdi     # 0x1bfc8
leaq 0xd71b(%rip), %rsi      # 0x134fc
callq 0x3270
movq %rax, -0xf48(%rbp)
jmp 0x5def
movq -0xf48(%rbp), %rdi
movq 0x161bb(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5e04
jmp 0x5e39
movq 0x161bb(%rip), %rdi     # 0x1bfc8
leaq 0xd730(%rip), %rsi      # 0x13544
callq 0x3270
movq %rax, -0xf50(%rbp)
jmp 0x5e22
movq -0xf50(%rbp), %rdi
movq 0x16188(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5e37
jmp 0x5e39
leaq -0x7a8(%rbp), %rdi
callq 0x77c0
movq $0x0, -0x7b0(%rbp)
movq -0x7b0(%rbp), %rax
cmpq -0x20(%rbp), %rax
jae 0x5f17
leaq -0x788(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0xf54(%rbp)
jmp 0x5e7c
leaq -0x788(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0xf58(%rbp)
jmp 0x5e97
leaq -0x790(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0xf5c(%rbp)
jmp 0x5eb2
movl -0xf5c(%rbp), %ecx
movl -0xf58(%rbp), %edx
movl -0xf54(%rbp), %esi
leaq -0x7c4(%rbp), %rdi
callq 0xdd60
jmp 0x5ed2
leaq -0x7a8(%rbp), %rdi
leaq -0x7c4(%rbp), %rsi
callq 0x77e0
jmp 0x5ee7
jmp 0x5ee9
movq -0x7b0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x7b0(%rbp)
jmp 0x5e50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x64b6
leaq -0x68(%rbp), %rdi
callq 0x3400
testb $0x1, %al
jne 0x5f70
movq 0x1609d(%rip), %rdi     # 0x1bfc8
leaq 0xd641(%rip), %rsi      # 0x13573
callq 0x3270
movq %rax, -0xf68(%rbp)
jmp 0x5f40
movq -0xf68(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3250
movq %rax, -0xf70(%rbp)
jmp 0x5f59
movq -0xf70(%rbp), %rdi
movq 0x16051(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5f6e
jmp 0x5f70
leaq -0x88(%rbp), %rdi
callq 0x7720
cmpq $0x1, %rax
jbe 0x5fea
movq 0x1603f(%rip), %rdi     # 0x1bfc8
leaq 0xd617(%rip), %rsi      # 0x135a7
callq 0x3270
movq %rax, -0xf78(%rbp)
jmp 0x5f9e
movq -0xf78(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3250
movq %rax, -0xf80(%rbp)
jmp 0x5fb7
movq -0xf80(%rbp), %rdi
leaq 0xd5fe(%rip), %rsi      # 0x135c3
callq 0x3270
movq %rax, -0xf88(%rbp)
jmp 0x5fd3
movq -0xf88(%rbp), %rdi
movq 0x15fd7(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x5fe8
jmp 0x6036
movq 0x15fd7(%rip), %rdi     # 0x1bfc8
leaq 0xd5af(%rip), %rsi      # 0x135a7
callq 0x3270
movq %rax, -0xf90(%rbp)
jmp 0x6006
movq -0xf90(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3250
movq %rax, -0xf98(%rbp)
jmp 0x601f
movq -0xf98(%rbp), %rdi
movq 0x15f8b(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x6034
jmp 0x6036
leaq -0x88(%rbp), %rax
movq %rax, -0x7d0(%rbp)
movq -0x7d0(%rbp), %rdi
callq 0x7530
movq %rax, -0x7d8(%rbp)
movq -0x7d0(%rbp), %rdi
callq 0x7560
movq %rax, -0x7e0(%rbp)
leaq -0x7d8(%rbp), %rdi
leaq -0x7e0(%rbp), %rsi
callq 0x74a0
testb $0x1, %al
jne 0x6086
jmp 0x64a5
leaq -0x7d8(%rbp), %rdi
callq 0x7840
movq %rax, %rsi
leaq -0x800(%rbp), %rdi
callq 0x3100
jmp 0x60a3
movq 0x15f1e(%rip), %rdi     # 0x1bfc8
leaq 0xd51d(%rip), %rsi      # 0x135ce
callq 0x3270
movq %rax, -0xfa0(%rbp)
jmp 0x60bf
movq -0xfa0(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x3250
movq %rax, -0xfa8(%rbp)
jmp 0x60db
movq -0xfa8(%rbp), %rdi
movq 0x15ecf(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x60f0
leaq -0x818(%rbp), %rdi
callq 0x7860
leaq -0xb8(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x7880
movq %rax, -0xfb0(%rbp)
jmp 0x6118
movq -0xfb0(%rbp), %rax
movq (%rax), %rax
movl -0x24(%rbp), %edx
movl -0x28(%rbp), %ecx
leaq -0x7a8(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq *%rax
jmp 0x613a
movq 0x15e87(%rip), %rdi     # 0x1bfc8
leaq 0xd4a2(%rip), %rsi      # 0x135ea
callq 0x3270
movq %rax, -0xfb8(%rbp)
jmp 0x6156
leaq -0x818(%rbp), %rdi
callq 0x7960
movq -0xfb8(%rbp), %rdi
movq %rax, %rsi
callq 0x30a0
movq %rax, -0xfc0(%rbp)
jmp 0x617a
movq -0xfc0(%rbp), %rdi
leaq 0xd46d(%rip), %rsi      # 0x135f5
callq 0x3270
movq %rax, -0xfc8(%rbp)
jmp 0x6196
movq -0xfc8(%rbp), %rdi
movq 0x15e14(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x61ab
leaq -0x838(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3100
jmp 0x61bd
leaq -0x88(%rbp), %rdi
callq 0x7720
cmpq $0x1, %rax
jbe 0x622b
leaq -0x838(%rbp), %rdi
leaq -0x800(%rbp), %rsi
callq 0x3330
jmp 0x61e4
jmp 0x622b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x6497
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x648b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x647f
leaq -0x838(%rbp), %rdi
callq 0x30f0
movq %rax, %rdi
movl $0x1ff, %esi            # imm = 0x1FF
callq 0x3130
cmpl $0x0, %eax
je 0x6259
leaq 0xd3b9(%rip), %rdi      # 0x13609
callq 0x3220
jmp 0x6257
jmp 0x6259
movq $0x0, -0x840(%rbp)
movq -0x840(%rbp), %rax
movq %rax, -0xfd0(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x7960
movq %rax, %rcx
movq -0xfd0(%rbp), %rax
cmpq %rcx, %rax
jae 0x644a
leaq -0x9c8(%rbp), %rdi
callq 0x31d0
jmp 0x629f
leaq -0x9b8(%rbp), %rdi
leaq -0x838(%rbp), %rsi
callq 0x3250
movq %rax, -0xfd8(%rbp)
jmp 0x62bb
movq -0xfd8(%rbp), %rdi
leaq 0xd346(%rip), %rsi      # 0x1360f
callq 0x3270
movq %rax, -0xfe0(%rbp)
jmp 0x62d7
movq -0xfe0(%rbp), %rdi
movq -0x840(%rbp), %rsi
incq %rsi
callq 0x30a0
movq %rax, -0xfe8(%rbp)
jmp 0x62f6
movq -0xfe8(%rbp), %rdi
leaq 0xd30d(%rip), %rsi      # 0x13611
callq 0x3270
jmp 0x630b
movl -0x24(%rbp), %esi
movl -0x28(%rbp), %edx
movb $-0x1, -0x9e3(%rbp)
movb $-0x1, -0x9e2(%rbp)
movb $-0x1, -0x9e1(%rbp)
movb -0x9e1(%rbp), %al
movb %al, -0x9e6(%rbp)
movw -0x9e3(%rbp), %ax
movw %ax, -0x9e8(%rbp)
movzbl -0x9e6(%rbp), %eax
shll $0x10, %eax
movzwl -0x9e8(%rbp), %ecx
orl %eax, %ecx
leaq -0x9e0(%rbp), %rdi
callq 0xd200
jmp 0x6361
movq -0x840(%rbp), %rsi
leaq -0x818(%rbp), %rdi
callq 0x7980
movq %rax, %rdi
leaq -0x9e0(%rbp), %rsi
callq 0xe5e0
jmp 0x6385
leaq -0xa08(%rbp), %rdi
leaq -0x9c8(%rbp), %rsi
callq 0x3260
jmp 0x639a
leaq -0x9e0(%rbp), %rdi
leaq -0xa08(%rbp), %rsi
callq 0xd460
jmp 0x63af
leaq -0xa08(%rbp), %rdi
callq 0x3180
leaq -0x9e0(%rbp), %rdi
callq 0xd2f0
leaq -0x9c8(%rbp), %rdi
callq 0x31f0
movq -0x840(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x840(%rbp)
jmp 0x6264
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x643c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x6430
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x3180
leaq -0x9e0(%rbp), %rdi
callq 0xd2f0
leaq -0x9c8(%rbp), %rdi
callq 0x31f0
jmp 0x647f
leaq -0x838(%rbp), %rdi
callq 0x3180
leaq -0x818(%rbp), %rdi
callq 0x79a0
leaq -0x800(%rbp), %rdi
callq 0x3180
leaq -0x7d8(%rbp), %rdi
callq 0x7a00
jmp 0x606a
leaq -0x838(%rbp), %rdi
callq 0x3180
leaq -0x818(%rbp), %rdi
callq 0x79a0
leaq -0x800(%rbp), %rdi
callq 0x3180
jmp 0x64b6
leaq -0x7a8(%rbp), %rdi
callq 0x7a20
jmp 0x6d92
leaq -0x7a8(%rbp), %rdi
callq 0x7a20
jmp 0x6dd9
leaq -0x68(%rbp), %rdi
callq 0x3400
testb $0x1, %al
jne 0x6507
movq 0x15b15(%rip), %rdi     # 0x1bff0
leaq 0xd134(%rip), %rsi      # 0x13616
callq 0x3270
movq %rax, -0xff0(%rbp)
jmp 0x64f0
movq -0xff0(%rbp), %rdi
movq 0x15aba(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x6505
jmp 0x6507
movq 0x15aba(%rip), %rdi     # 0x1bfc8
leaq 0xd153(%rip), %rsi      # 0x13668
callq 0x3270
movq %rax, -0xff8(%rbp)
jmp 0x6523
movq -0xff8(%rbp), %rdi
movq -0x70(%rbp), %rsi
callq 0x30a0
movq %rax, -0x1000(%rbp)
jmp 0x653c
movq -0x1000(%rbp), %rdi
leaq 0xd12d(%rip), %rsi      # 0x13677
callq 0x3270
movq %rax, -0x1008(%rbp)
jmp 0x6558
leaq -0x88(%rbp), %rdi
callq 0x7720
movq -0x1008(%rbp), %rdi
movq %rax, %rsi
callq 0x30a0
movq %rax, -0x1010(%rbp)
jmp 0x657c
movq -0x1010(%rbp), %rdi
leaq 0xd2c6(%rip), %rsi      # 0x13850
callq 0x3270
movq %rax, -0x1018(%rbp)
jmp 0x6598
movq -0x1018(%rbp), %rdi
movq 0x15a12(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x65ad
xorps %xmm0, %xmm0
movaps %xmm0, -0xa20(%rbp)
movaps %xmm0, -0xa30(%rbp)
movq $0x0, -0xa10(%rbp)
movq $0x14, -0xa30(%rbp)
movq $0x28, -0xa28(%rbp)
movq $0x3c, -0xa20(%rbp)
movq $0x50, -0xa18(%rbp)
movq $0x64, -0xa10(%rbp)
leaq -0xa32(%rbp), %rdi
xorl %esi, %esi
movl $0x9, %edx
callq 0x7a80
jmp 0x6615
leaq -0xa60(%rbp), %rdi
movl $0x42, %esi
movl $0x64, %edx
callq 0x7790
jmp 0x662d
leaq -0xa58(%rbp), %rdi
movl $0x1, %esi
movl $0x32, %edx
callq 0x7790
jmp 0x6645
leaq -0xa50(%rbp), %rdi
movl $0x32, %esi
movl $0x64, %edx
callq 0x7790
jmp 0x665d
leaq -0xa48(%rbp), %rdi
movl $0x1, %esi
movl $0x32, %edx
callq 0x7790
jmp 0x6675
leaq -0xa80(%rbp), %rdi
movl $0x1, %esi
movl $0x32, %edx
callq 0x7790
jmp 0x668d
leaq -0xa78(%rbp), %rdi
movl $0x42, %esi
movl $0x64, %edx
callq 0x7790
jmp 0x66a5
leaq -0xa70(%rbp), %rdi
movl $0x32, %esi
movl $0x64, %edx
callq 0x7790
jmp 0x66bd
leaq -0xa68(%rbp), %rdi
movl $0x1, %esi
movl $0x32, %edx
callq 0x7790
jmp 0x66d5
leaq -0xab0(%rbp), %rdi
callq 0x7ab0
leaq -0x88(%rbp), %rax
movq %rax, -0xab8(%rbp)
movq -0xab8(%rbp), %rdi
callq 0x7530
movq %rax, -0xac0(%rbp)
movq -0xab8(%rbp), %rdi
callq 0x7560
movq %rax, -0xac8(%rbp)
leaq -0xac0(%rbp), %rdi
leaq -0xac8(%rbp), %rsi
callq 0x74a0
testb $0x1, %al
jne 0x6731
jmp 0x67cc
leaq -0xac0(%rbp), %rdi
callq 0x7840
movq %rax, %rsi
leaq -0xae8(%rbp), %rdi
callq 0x3100
jmp 0x674e
leaq -0xab0(%rbp), %rdi
leaq -0xae8(%rbp), %rsi
callq 0x7ad0
movq %rax, -0x1020(%rbp)
jmp 0x676a
movq -0x1020(%rbp), %rax
movq $0x0, (%rax)
leaq -0xae8(%rbp), %rdi
callq 0x3180
leaq -0xac0(%rbp), %rdi
callq 0x7a00
jmp 0x6715
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x6d84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xae8(%rbp), %rdi
callq 0x3180
jmp 0x6d84
movq $0x0, -0xaf0(%rbp)
cmpq $0x5, -0xaf0(%rbp)
jae 0x6bb4
movq $0x0, -0xaf8(%rbp)
cmpq $0x4, -0xaf8(%rbp)
jae 0x6b9b
movq $0x0, -0xb00(%rbp)
movq -0xb00(%rbp), %rax
cmpq -0x70(%rbp), %rax
jae 0x6b82
leaq -0xb18(%rbp), %rdi
callq 0x77c0
movq $0x0, -0xb20(%rbp)
movq $0x0, -0xb28(%rbp)
movq -0xb28(%rbp), %rax
movq -0xaf0(%rbp), %rcx
cmpq -0xa30(%rbp,%rcx,8), %rax
jae 0x69ca
leaq -0xa32(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7bb0
movb %al, -0x1021(%rbp)
jmp 0x6873
movb -0x1021(%rbp), %al
movb %al, -0xb29(%rbp)
movzbl -0xb29(%rbp), %eax
cmpl $0x7, %eax
jge 0x68b1
movq -0xaf8(%rbp), %rax
movb %al, -0xb2a(%rbp)
jmp 0x68d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
jmp 0x6b71
movq -0xaf8(%rbp), %rax
movzbl -0xb29(%rbp), %ecx
addq %rcx, %rax
subq $0x6, %rax
andq $0x3, %rax
movb %al, -0xb2a(%rbp)
movzbl -0xb2a(%rbp), %eax
leaq -0xa60(%rbp,%rax,8), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0x1028(%rbp)
jmp 0x68f3
movl -0x1028(%rbp), %eax
movl %eax, -0xb30(%rbp)
movzbl -0xb2a(%rbp), %eax
leaq -0xa80(%rbp,%rax,8), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0x102c(%rbp)
jmp 0x6922
movl -0x102c(%rbp), %eax
movl %eax, -0xb34(%rbp)
movl -0xb30(%rbp), %eax
movl %eax, -0x1038(%rbp)
movl -0xb34(%rbp), %eax
movl %eax, -0x1034(%rbp)
leaq -0x790(%rbp), %rdi
leaq -0x780(%rbp), %rsi
callq 0x7810
movl %eax, -0x1030(%rbp)
jmp 0x6961
movl -0x1030(%rbp), %ecx
movl -0x1034(%rbp), %edx
movl -0x1038(%rbp), %esi
leaq -0xb48(%rbp), %rdi
callq 0xdd60
jmp 0x6981
leaq -0xb18(%rbp), %rdi
leaq -0xb48(%rbp), %rsi
callq 0x77e0
jmp 0x6996
movl -0xb30(%rbp), %eax
imull -0xb34(%rbp), %eax
cltq
addq -0xb20(%rbp), %rax
movq %rax, -0xb20(%rbp)
movq -0xb28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb28(%rbp)
jmp 0x683c
cvtsi2ssq -0xb20(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
movsd 0xc651(%rip), %xmm1     # 0x13030
divsd %xmm1, %xmm0
callq 0x3080
cvttsd2si %xmm0, %rax
movq %rax, -0xb20(%rbp)
leaq -0x88(%rbp), %rax
movq %rax, -0xb50(%rbp)
movq -0xb50(%rbp), %rdi
callq 0x7530
movq %rax, -0xb58(%rbp)
movq -0xb50(%rbp), %rdi
callq 0x7560
movq %rax, -0xb60(%rbp)
leaq -0xb58(%rbp), %rdi
leaq -0xb60(%rbp), %rsi
callq 0x74a0
testb $0x1, %al
jne 0x6a44
jmp 0x6b4e
leaq -0xb58(%rbp), %rdi
callq 0x7840
movq %rax, %rsi
leaq -0xb80(%rbp), %rdi
callq 0x3100
jmp 0x6a61
leaq -0xb98(%rbp), %rdi
callq 0x7860
leaq -0xb8(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x7880
movq %rax, -0x1040(%rbp)
jmp 0x6a89
movq -0x1040(%rbp), %rax
movq (%rax), %rax
leaq -0xb18(%rbp), %rdi
leaq -0xb98(%rbp), %rsi
movl $0x64, %ecx
movl %ecx, %edx
callq *%rax
jmp 0x6aac
leaq -0xb98(%rbp), %rdi
callq 0x7960
movq -0xb20(%rbp), %rcx
subq %rcx, %rax
movq %rax, -0x1050(%rbp)
leaq -0xab0(%rbp), %rdi
leaq -0xb80(%rbp), %rsi
callq 0x7ad0
movq %rax, -0x1048(%rbp)
jmp 0x6ae5
movq -0x1048(%rbp), %rax
movq -0x1050(%rbp), %rcx
addq (%rax), %rcx
movq %rcx, (%rax)
leaq -0xb98(%rbp), %rdi
callq 0x79a0
leaq -0xb80(%rbp), %rdi
callq 0x3180
leaq -0xb58(%rbp), %rdi
callq 0x7a00
jmp 0x6a28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xb98(%rbp), %rdi
callq 0x79a0
leaq -0xb80(%rbp), %rdi
callq 0x3180
jmp 0x6b71
leaq -0xb18(%rbp), %rdi
callq 0x7a20
movq -0xb00(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb00(%rbp)
jmp 0x6809
leaq -0xb18(%rbp), %rdi
callq 0x7a20
jmp 0x6d84
jmp 0x6b84
movq -0xaf8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xaf8(%rbp)
jmp 0x67f0
jmp 0x6b9d
movq -0xaf0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xaf0(%rbp)
jmp 0x67d7
leaq -0x88(%rbp), %rax
movq %rax, -0xba0(%rbp)
movq -0xba0(%rbp), %rdi
callq 0x7530
movq %rax, -0xba8(%rbp)
movq -0xba0(%rbp), %rdi
callq 0x7560
movq %rax, -0xbb0(%rbp)
leaq -0xba8(%rbp), %rdi
leaq -0xbb0(%rbp), %rsi
callq 0x74a0
testb $0x1, %al
jne 0x6c04
jmp 0x6d76
leaq -0xba8(%rbp), %rdi
callq 0x7840
movq %rax, %rsi
leaq -0xbd0(%rbp), %rdi
callq 0x3100
jmp 0x6c21
movq 0x153a0(%rip), %rdi     # 0x1bfc8
leaq -0xbd0(%rbp), %rsi
callq 0x3250
movq %rax, -0x1058(%rbp)
jmp 0x6c3d
movq -0x1058(%rbp), %rdi
leaq 0xc8ab(%rip), %rsi      # 0x134f6
callq 0x3270
movq %rax, -0x1060(%rbp)
jmp 0x6c59
leaq -0xab0(%rbp), %rdi
leaq -0xbd0(%rbp), %rsi
callq 0x7ad0
movq %rax, -0x1068(%rbp)
jmp 0x6c75
movq -0x1060(%rbp), %rdi
movq -0x1068(%rbp), %rax
movq (%rax), %rsi
callq 0x3450
movq %rax, -0x1070(%rbp)
jmp 0x6c94
movq -0x1070(%rbp), %rdi
leaq 0xca04(%rip), %rsi      # 0x136a6
callq 0x3270
movq %rax, -0x1078(%rbp)
jmp 0x6cb0
leaq -0xab0(%rbp), %rdi
leaq -0xbd0(%rbp), %rsi
callq 0x7ad0
movq %rax, -0x1080(%rbp)
jmp 0x6ccc
movq -0x1078(%rbp), %rdi
movq -0x1080(%rbp), %rax
cvtsi2sdq (%rax), %xmm0
movq -0x70(%rbp), %rax
shlq $0x2, %rax
leaq (%rax,%rax,4), %rax
movq %rax, %xmm1
movaps 0xc319(%rip), %xmm2     # 0x13010
punpckldq %xmm2, %xmm1    # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
movapd 0xc31d(%rip), %xmm2     # 0x13020
subpd %xmm2, %xmm1
movaps %xmm1, %xmm2
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
callq 0x3460
movq %rax, -0x1088(%rbp)
jmp 0x6d24
movq -0x1088(%rbp), %rdi
movq 0x15286(%rip), %rsi     # 0x1bfb8
callq 0x32b0
jmp 0x6d39
leaq -0xbd0(%rbp), %rdi
callq 0x3180
leaq -0xba8(%rbp), %rdi
callq 0x7a00
jmp 0x6be8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe8(%rbp)
movl %eax, -0xec(%rbp)
leaq -0xbd0(%rbp), %rdi
callq 0x3180
jmp 0x6d84
leaq -0xab0(%rbp), %rdi
callq 0x7be0
jmp 0x6d92
leaq -0xab0(%rbp), %rdi
callq 0x7be0
jmp 0x6dd9
movl $0x0, -0x4(%rbp)
movl $0x1, -0x1d8(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x7c00
leaq -0x88(%rbp), %rdi
callq 0x7c20
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
movl -0x4(%rbp), %eax
addq $0x1090, %rsp           # imm = 0x1090
popq %rbp
retq
leaq -0xb8(%rbp), %rdi
callq 0x7c00
leaq -0x88(%rbp), %rdi
callq 0x7c20
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
movq -0xe8(%rbp), %rdi
callq 0x3420
nop