// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x5f8, %rsp            # imm = 0x5F8
movq %rsi, %r15
movl %edi, %r13d
leaq 0x158(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x180(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, 0x70(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
leaq 0x1c8(%rsp), %rcx
movl $0x0, (%rcx)
movq %rax, 0x8(%rcx)
movq %rcx, 0x10(%rcx)
movq %rcx, 0x18(%rcx)
movq %rax, 0x20(%rcx)
leaq 0x3a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x78b1(%rip), %rsi      # 0xa078
leaq 0x78ac(%rip), %rdx      # 0xa07a
leaq 0x390(%rsp), %rdi
callq 0x5b9c
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x56e6
leaq 0x4f79(%rip), %rcx      # 0x7770
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x281f
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7842(%rip), %rsi      # 0xa07b
leaq 0x783f(%rip), %rdx      # 0xa07f
callq 0x5b9c
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x56e6
leaq 0x5563(%rip), %rcx      # 0x7dc4
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x2889
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x77dd(%rip), %rsi      # 0xa080
leaq 0x77da(%rip), %rdx      # 0xa084
callq 0x5b9c
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x56e6
leaq 0x623d(%rip), %rcx      # 0x8b08
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x28f3
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7778(%rip), %rsi      # 0xa085
leaq 0x7775(%rip), %rdx      # 0xa089
callq 0x5b9c
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x56e6
leaq 0x64d3(%rip), %rcx      # 0x8e08
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x295d
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
callq 0x2070
movq %rax, 0xc8(%rsp)
cmpl $0x2, %r13d
setge %r12b
jl 0x3a62
movl $0x1, %ebp
movl $0x1, %eax
movq %rax, 0x80(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0xe0(%rsp)
movl $0x3e8, %eax            # imm = 0x3E8
movq %rax, 0xf8(%rsp)
movl $0x100, %eax            # imm = 0x100
movq %rax, 0xd0(%rsp)
movl $0x10, %eax
movq %rax, 0xd8(%rsp)
movq $0x0, 0x8(%rsp)
leaq 0x390(%rsp), %rbx
leaq 0x10(%rsp), %r14
movl $0x800, %eax            # imm = 0x800
movq %rax, 0x88(%rsp)
movl %r13d, 0x38(%rsp)
movq %r15, 0x140(%rsp)
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %rbx, %rdi
movq %r14, %rdx
callq 0x5762
movq %rbx, %rdi
leaq 0x7d07(%rip), %rsi      # 0xa711
callq 0x20b0
testl %eax, %eax
je 0x2b84
movq %rbx, %rdi
leaq 0x7690(%rip), %rsi      # 0xa0b1
callq 0x20b0
testl %eax, %eax
je 0x2bf0
movq %rbx, %rdi
leaq 0x76b5(%rip), %rsi      # 0xa0ed
callq 0x20b0
testl %eax, %eax
je 0x2cf4
movq %rbx, %rdi
leaq 0x76ed(%rip), %rsi      # 0xa13c
callq 0x20b0
testl %eax, %eax
je 0x2e04
movq %rbx, %rdi
leaq 0x7725(%rip), %rsi      # 0xa18b
callq 0x20b0
testl %eax, %eax
je 0x2f96
movq %rbx, %rdi
leaq 0x775f(%rip), %rsi      # 0xa1dc
callq 0x20b0
testl %eax, %eax
je 0x3316
movq %rbx, %rdi
leaq 0x7799(%rip), %rsi      # 0xa22d
callq 0x20b0
testl %eax, %eax
je 0x34d6
movq %rbx, %rdi
leaq 0x77d3(%rip), %rsi      # 0xa27e
callq 0x20b0
testl %eax, %eax
je 0x3668
movq %rbx, %rdi
leaq 0x7802(%rip), %rsi      # 0xa2c4
callq 0x20b0
testl %eax, %eax
je 0x37e1
movq %rbx, %rdi
leaq 0x7835(%rip), %rsi      # 0xa30e
callq 0x20b0
testl %eax, %eax
je 0x38cb
leaq 0x1c0(%rsp), %rdi
movq %rbx, %rsi
callq 0x5f4c
leaq 0x1c8(%rsp), %rcx
cmpq %rcx, %rax
je 0x39bd
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
leaq 0x390(%rsp), %rdx
callq 0x5fd5
cmpq 0x68(%rsp), %rax
je 0x3a48
movl $0x17, %edx
movq 0xc4bb(%rip), %rdi      # 0xeff0
leaq 0x781c(%rip), %rsi      # 0xa358
callq 0x2270
movq 0x390(%rsp), %rsi
movq 0x398(%rsp), %rdx
movq 0xc498(%rip), %rdi      # 0xeff0
callq 0x2270
movq %rax, %rbx
movl $0x12, %edx
movq %rax, %rdi
leaq 0x7801(%rip), %rsi      # 0xa370
callq 0x2270
movb $0x1, %r14b
movq %rbx, %rdi
callq 0x2120
jmp 0x32c7
cmpl $0x2, %r13d
jne 0x2c5b
cmpl $0x1, %ebp
jne 0x2c5b
movq (%r15), %rsi
leaq 0x370(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x5099
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x2bda
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x2240
xorl %r14d, %r14d
movl $0x1, %ebp
movq $0x0, 0x8(%rsp)
jmp 0x32c7
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x315e
movl %r12d, %r13d
movslq %ebp, %r14
movq %r15, %r12
movq (%r15,%r14,8), %rsi
leaq 0x5d8(%rsp), %r15
movq %r15, %rdi
leaq 0x9f(%rsp), %rdx
callq 0x5762
xorl %ebx, %ebx
movl $0xa, %ecx
movq %r15, %rdi
leaq 0x8246(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x314e
movq %r12, %r15
movq (%r12,%r14,8), %rax
cmpb $0x2d, (%rax)
setne %bl
leaq 0x10(%rsp), %r14
jmp 0x3156
movl $0x26, %edx
movq 0xc389(%rip), %rdi      # 0xeff0
leaq 0x741c(%rip), %rsi      # 0xa08a
callq 0x2270
movq 0xc376(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc358(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x350(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x2cea
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x1, %eax
jmp 0x3224
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x2d39
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x5b8(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9e(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x814e(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x2d63
movq 0x5b8(%rsp), %rdi
leaq 0x5c8(%rsp), %rax
cmpq %rax, %rdi
je 0x2d63
movq 0x5c8(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x2f14
movl $0x47, %edx
movq 0xc279(%rip), %rdi      # 0xeff0
leaq 0x7376(%rip), %rsi      # 0xa0f4
callq 0x2270
movq 0xc266(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc248(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x310(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x2dfa
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x4, %eax
jmp 0x3224
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x2e49
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x598(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9d(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x803e(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x2e73
movq 0x598(%rsp), %rdi
leaq 0x5a8(%rsp), %rax
cmpq %rax, %rdi
je 0x2e73
movq 0x5a8(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x30a6
movl $0x47, %edx
movq 0xc169(%rip), %rdi      # 0xeff0
leaq 0x72b5(%rip), %rsi      # 0xa143
callq 0x2270
movq 0xc156(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc138(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x2f0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x2f0a
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x5, %eax
jmp 0x3224
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %rbx
callq 0x2060
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %rbx, 0xa0(%rsp)
je 0x4ab9
movq %rax, 0xd8(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4aad
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x3123
jmp 0x4aad
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x2fdb
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x578(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9c(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x7eac(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x3005
movq 0x578(%rsp), %rdi
leaq 0x588(%rsp), %rax
cmpq %rax, %rdi
je 0x3005
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x3426
movl $0x47, %edx
movq 0xbfd7(%rip), %rdi      # 0xeff0
leaq 0x7174(%rip), %rsi      # 0xa194
callq 0x2270
movq 0xbfc4(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbfa6(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x2d0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x309c
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x6, %eax
jmp 0x3224
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %rbx
callq 0x2060
movq %rax, %r14
movl (%rax), %r13d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %rbx, 0xa0(%rsp)
je 0x4add
movq %rax, 0xd0(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4ad1
movl (%r14), %eax
cmpl $0x22, %eax
je 0x4ad1
testl %eax, %eax
jne 0x312a
movl %r13d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3146
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movb $0x1, %r14b
jmp 0x32c2
leaq 0x10(%rsp), %r14
movq %r12, %r15
movl %r13d, %r12d
movl 0x38(%rsp), %r13d
cmpl %r13d, %ebp
je 0x3188
movq 0x5d8(%rsp), %rdi
leaq 0x5e8(%rsp), %rax
cmpq %rax, %rdi
je 0x3188
movq 0x5e8(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x3231
movl $0x34, %edx
movq 0xbe54(%rip), %rdi      # 0xeff0
leaq 0x6f15(%rip), %rsi      # 0xa0b8
callq 0x2270
movq 0xbe41(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbe23(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x330(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x321f
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x3, %eax
movq %rax, 0x8(%rsp)
xorl %r14d, %r14d
jmp 0x32c7
movslq %ebp, %rax
movq %r15, %r13
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %rbx
callq 0x2060
movq %rax, %r14
movl (%rax), %r15d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
movq %rax, 0xc8(%rsp)
cmpq %rbx, 0xa0(%rsp)
je 0x4aa1
movl (%r14), %eax
testl %eax, %eax
je 0x329d
cmpl $0x22, %eax
jne 0x32a0
jmp 0x4ac5
movl %r15d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x32bc
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movb $0x1, %r14b
movq %r13, %r15
movl 0x38(%rsp), %r13d
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x32ec
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
testb %r14b, %r14b
je 0x3ab9
incl %ebp
cmpl %r13d, %ebp
setl %r12b
leaq 0x390(%rsp), %rbx
leaq 0x10(%rsp), %r14
jl 0x29ee
jmp 0x3ab9
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x335b
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x558(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9b(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x7b2c(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x3385
movq 0x558(%rsp), %rdi
leaq 0x568(%rsp), %rax
cmpq %rax, %rdi
je 0x3385
movq 0x568(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x35e6
movl $0x4b, %edx
movq 0xbc57(%rip), %rdi      # 0xeff0
leaq 0x6e41(%rip), %rsi      # 0xa1e1
callq 0x2270
movq 0xbc44(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbc26(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x2b0(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x341c
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x7, %eax
jmp 0x3224
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %r13
callq 0x2060
movq %rax, %r14
movl (%rax), %r15d
movl $0x0, (%rax)
movq %r13, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r13, 0xa0(%rsp)
je 0x4af5
movq %rax, %rbx
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4ae9
movl (%r14), %eax
cmpl $0x22, %eax
je 0x4ae9
testl %eax, %eax
jne 0x34a5
movl %r15d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
movl 0x38(%rsp), %r13d
je 0x34c6
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movslq %ebx, %rax
movq %rax, 0xf8(%rsp)
jmp 0x3738
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x351b
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x538(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9a(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x796c(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x3545
movq 0x538(%rsp), %rdi
leaq 0x548(%rsp), %rax
cmpq %rax, %rdi
je 0x3545
movq 0x548(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x3698
movl $0x4b, %edx
movq 0xba97(%rip), %rdi      # 0xeff0
leaq 0x6cd2(%rip), %rsi      # 0xa232
callq 0x2270
movq 0xba84(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xba66(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x290(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x35dc
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x8, %eax
jmp 0x3224
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %rbx
callq 0x2060
movq %rax, %r14
movl (%rax), %r15d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %rbx, 0xa0(%rsp)
je 0x4b01
movq %rax, 0xe0(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4b0d
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x3715
jmp 0x4b0d
incl %ebp
cmpl %r13d, %ebp
je 0x3748
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
cmpb $0x0, (%rsi)
je 0x3748
movb $0x1, %r14b
leaq 0x148(%rsp), %rdi
callq 0x2290
jmp 0x32c7
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0x100(%rsp), %rdx
callq 0x5762
movq 0x10(%rsp), %rbx
callq 0x2060
movq %rax, %r14
movl (%rax), %r15d
movl $0x0, (%rax)
movq %rbx, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %rbx, 0xa0(%rsp)
je 0x4b19
movq %rax, 0x88(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4b25
movl (%r14), %eax
cmpl $0x22, %eax
je 0x4b25
testl %eax, %eax
jne 0x371c
movl %r15d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3738
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movb $0x1, %r14b
movq 0x140(%rsp), %r15
jmp 0x32c7
movl $0x3c, %edx
movq 0xb89c(%rip), %rdi      # 0xeff0
leaq 0x6b2c(%rip), %rsi      # 0xa287
callq 0x2270
movq 0xb889(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb86b(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r15), %rsi
leaq 0x270(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x37d7
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x9, %eax
jmp 0x3224
incl %ebp
movb $0x1, %bl
cmpl %r13d, %ebp
je 0x3826
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
leaq 0x518(%rsp), %rbx
movq %rbx, %rdi
leaq 0x99(%rsp), %rdx
callq 0x5762
movl $0xa, %ecx
movq %rbx, %rdi
leaq 0x7661(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
setne %bl
cmpl %r13d, %ebp
je 0x3850
movq 0x518(%rsp), %rdi
leaq 0x528(%rsp), %rax
cmpq %rax, %rdi
je 0x3850
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x2240
testb %bl, %bl
je 0x38f3
movl $0x41, %edx
movq 0xb78c(%rip), %rdi      # 0xeff0
leaq 0x6a61(%rip), %rsi      # 0xa2cc
callq 0x2270
movq 0xb779(%rip), %rdi      # 0xeff0
callq 0x2120
movq (%r15), %rsi
leaq 0x250(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x38c1
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xa, %eax
jmp 0x3224
incl %ebp
cmpl %r13d, %ebp
je 0x394a
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
cmpb $0x0, (%rsi)
je 0x394a
movb $0x1, %r14b
leaq 0x170(%rsp), %rdi
callq 0x2290
jmp 0x32c7
movslq %ebp, %rax
movq (%r15,%rax,8), %rsi
movq %r14, %rdi
leaq 0xa0(%rsp), %rdx
callq 0x5762
movq %r14, %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0x579f
movl %eax, %ebx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3937
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movslq %ebx, %rax
movq %rax, 0x80(%rsp)
movb $0x1, %r14b
jmp 0x32c7
movl $0x3c, %edx
movq 0xb69a(%rip), %rdi      # 0xeff0
leaq 0x69be(%rip), %rsi      # 0xa31b
callq 0x2270
movq 0xb687(%rip), %rdi      # 0xeff0
callq 0x2120
movq (%r15), %rsi
leaq 0x230(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x39b3
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xb, %eax
jmp 0x3224
movl $0x2c, %edx
movq 0xb627(%rip), %rdi      # 0xeff0
leaq 0x69b3(%rip), %rsi      # 0xa383
callq 0x2270
movq 0x390(%rsp), %rsi
movq 0x398(%rsp), %rdx
movq 0xb604(%rip), %rdi      # 0xeff0
callq 0x2270
movq %rax, %rdi
callq 0x2120
movq (%r15), %rsi
leaq 0x210(%rsp), %rbx
movq %rbx, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5762
movq %rbx, %rdi
callq 0x55a1
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x3a3e
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xc, %eax
jmp 0x3224
movb $0x1, %r14b
leaq 0x60(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x5832
jmp 0x32c7
movq $0x0, 0x8(%rsp)
movl $0x10, %eax
movq %rax, 0xd8(%rsp)
movl $0x100, %eax            # imm = 0x100
movq %rax, 0xd0(%rsp)
movl $0x3e8, %eax            # imm = 0x3E8
movq %rax, 0xf8(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0x88(%rsp)
movl $0x1, %eax
movq %rax, 0x80(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0xe0(%rsp)
testb $0x1, %r12b
movq 0x8(%rsp), %rbx
jne 0x4a2c
movq 0xd8(%rsp), %r14
testl %r14d, %r14d
movq 0xe0(%rsp), %rax
movq 0x88(%rsp), %rcx
movq 0xd0(%rsp), %r12
je 0x3b6b
testl %r12d, %r12d
je 0x3b6b
testl %eax, %eax
je 0x3b6b
testl %ecx, %ecx
je 0x3b6b
cmpl %eax, %r12d
ja 0x3bbb
cmpl %ecx, %r12d
ja 0x3bbb
cmpl %r12d, %r14d
jbe 0x3c0b
movq 0xb4d4(%rip), %rbx      # 0xeff0
leaq 0x6913(%rip), %rsi      # 0xa436
movl $0x69, %edx
movq %rbx, %rdi
callq 0x2270
leaq 0x1c8(%rsp), %r15
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb49a(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl %r14d, %ebp
jmp 0x3c19
movq 0xb47e(%rip), %rbx      # 0xeff0
leaq 0x6837(%rip), %rsi      # 0xa3b0
movl $0x30, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb44c(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x14, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x4a2c
movq 0xb42e(%rip), %rbx      # 0xeff0
leaq 0x6818(%rip), %rsi      # 0xa3e1
movl $0x54, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb3fc(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x15, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x4a2c
movl %r12d, %ebp
movl %r14d, %r12d
leaq 0x1c8(%rsp), %r15
cmpq $0x0, 0x80(%rsp)
je 0x3fe8
cmpq $0x0, 0xf8(%rsp)
je 0x4038
movq 0x60(%rsp), %rax
cmpq 0x68(%rsp), %rax
setne %al
movq 0x1d8(%rsp), %rbx
cmpq %r15, %rbx
sete %cl
orb %al, %cl
jne 0x3c77
leaq 0x60(%rsp), %r14
leaq 0x20(%rbx), %rsi
movq %r14, %rdi
callq 0x5832
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x3c5b
movq 0xb352(%rip), %rbx      # 0xefd0
leaq 0x6880(%rip), %rsi      # 0xa505
movl $0x10, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb320(%rip), %rdi      # 0xefd0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq 0xb30c(%rip), %rdi      # 0xefd0
leaq 0x684b(%rip), %rsi      # 0xa516
movl $0x13, %edx
callq 0x2270
movq 0xb2f4(%rip), %rdi      # 0xefd0
movq 0xc8(%rsp), %rsi
callq 0x2210
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
cmpq $0x0, 0x150(%rsp)
jne 0x3db3
leaq 0x390(%rsp), %rdi
callq 0x2190
leaq 0x3a0(%rsp), %rbx
movq %rbx, %rdi
movq 0xc8(%rsp), %rsi
callq 0x2210
leaq 0x67dc(%rip), %rsi      # 0xa52a
movl $0x1, %edx
movq %rax, %rdi
callq 0x2270
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
subq %rax, %rcx
cmpq $0x20, %rcx
jne 0x3d7d
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
leaq 0x390(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0x2280
movq 0xb217(%rip), %rsi      # 0xefb0
leaq 0x390(%rsp), %rdi
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
movabsq $0x200000005, %rcx      # imm = 0x200000005
movq 0xc8(%rsp), %rsi
movq %rsi, %rax
mulq %rcx
movq %rsi, %rax
subq %rdx, %rax
shrq %rax
addq %rdx, %rax
shrq $0x1e, %rax
movq %rax, %rcx
shlq $0x1f, %rcx
subq %rcx, %rax
leaq (%rsi,%rax), %rcx
cmpq $0x1, %rcx
adcq %rsi, %rax
movq %rax, 0x168(%rsp)
movl %r12d, 0x198(%rsp)
movl %ebp, 0x19c(%rsp)
movabsq $0xffffff00000000, %rax # imm = 0xFFFFFF00000000
movq %rax, 0x190(%rsp)
cmpq $0x1, 0x80(%rsp)
jne 0x4088
movq 0x68(%rsp), %rax
subq 0x60(%rsp), %rax
cmpq $0x21, %rax
leaq 0x66ef(%rip), %rax      # 0xa52c
leaq 0x6730(%rip), %rsi      # 0xa574
cmovaeq %rax, %rsi
movl $0x47, %eax
movl $0x2e, %edx
cmovaeq %rax, %rdx
movq 0xb173(%rip), %rdi      # 0xefd0
callq 0x2270
movq 0xb167(%rip), %rdi      # 0xefd0
callq 0x2120
xorps %xmm0, %xmm0
leaq 0x100(%rsp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq 0xf8(%rsp), %r13
cmpq $0x1, %r13
adcq $0x0, %r13
leaq 0x168(%rsp), %r14
leaq 0x198(%rsp), %r15
leaq 0x190(%rsp), %r12
movq %r15, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x634e
movl %eax, %ebp
movq %r15, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x634e
movl %eax, %ebx
movq %r12, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x634e
leaq 0x390(%rsp), %rdi
movl %ebp, %esi
movl %ebx, %edx
movl %eax, %ecx
callq 0x7432
movq 0x108(%rsp), %rsi
cmpq 0x110(%rsp), %rsi
je 0x3f1f
movl 0x3a0(%rsp), %eax
movl %eax, 0x10(%rsi)
movups 0x390(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x14, 0x108(%rsp)
jmp 0x3f34
leaq 0x100(%rsp), %rdi
leaq 0x390(%rsp), %rdx
callq 0x64d4
decq %r13
jne 0x3eac
cmpq $0x0, 0x178(%rsp)
je 0x3f84
movq 0xb081(%rip), %rdi      # 0xefd0
leaq 0x664d(%rip), %rsi      # 0xa5a3
movl $0x33, %edx
callq 0x2270
movq 0x170(%rsp), %rsi
movq 0x178(%rsp), %rdx
movq 0xb059(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rdi
callq 0x2120
movq 0x68(%rsp), %rax
subq 0x60(%rsp), %rax
cmpq $0x21, %rax
jb 0x466e
movq 0xb031(%rip), %rdi      # 0xefd0
leaq 0x6631(%rip), %rsi      # 0xa5d7
movl $0x1b, %edx
callq 0x2270
movq 0x148(%rsp), %rsi
movq 0x150(%rsp), %rdx
movq 0xb009(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbx
leaq 0x661d(%rip), %rsi      # 0xa5f3
movl $0xa, %edx
movq %rax, %rdi
callq 0x2270
jmp 0x46a5
movq 0xb001(%rip), %rbx      # 0xeff0
leaq 0x64aa(%rip), %rsi      # 0xa4a0
movl $0x33, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xafcf(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x16, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x4a2c
movq 0xafb1(%rip), %rbx      # 0xeff0
leaq 0x648e(%rip), %rsi      # 0xa4d4
movl $0x30, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xaf7f(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x17, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x4a2c
cmpq $0x0, 0x178(%rsp)
je 0x40b7
movq 0xaf56(%rip), %rdi      # 0xeff0
leaq 0x65a5(%rip), %rsi      # 0xa646
movl $0x51, %edx
callq 0x2270
movq 0xaf3e(%rip), %rdi      # 0xeff0
callq 0x2120
movq 0xaf12(%rip), %rdi      # 0xefd0
leaq 0x65d3(%rip), %rsi      # 0xa698
movl $0xe, %edx
callq 0x2270
movq 0xaefa(%rip), %rdi      # 0xefd0
movq 0x80(%rsp), %rsi
callq 0x2160
movq %rax, %rbx
leaq 0x65ba(%rip), %rsi      # 0xa6a7
movl $0x2e, %edx
movq %rax, %rdi
callq 0x2270
movq 0x68(%rsp), %rsi
subq 0x60(%rsp), %rsi
sarq $0x5, %rsi
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
leaq 0x6766(%rip), %rsi      # 0xa880
movl $0xe, %edx
movq %rax, %rdi
callq 0x2270
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movaps %xmm0, 0x20(%rsp)
movq $0x14, 0x10(%rsp)
movq $0x28, 0x18(%rsp)
movq $0x3c, 0x20(%rsp)
movq $0x50, 0x28(%rsp)
movq $0x64, 0x30(%rsp)
movw $0x900, 0x97(%rsp)      # imm = 0x900
movaps 0x5e77(%rip), %xmm0     # 0xa010
movaps %xmm0, 0xa0(%rsp)
movaps 0x5e78(%rip), %xmm0     # 0xa020
movaps %xmm0, 0xb0(%rsp)
movapd 0x5e78(%rip), %xmm1     # 0xa030
movapd %xmm1, 0x100(%rsp)
movaps %xmm0, 0x110(%rsp)
leaq 0x398(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
movq 0x60(%rsp), %r15
movq 0x68(%rsp), %r13
cmpq %r13, %r15
je 0x4253
leaq 0x50(%rsp), %r12
leaq 0x40(%rsp), %rbx
leaq 0x390(%rsp), %r14
movq %r12, 0x40(%rsp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x5b0c
movq %r14, %rdi
movq %rbx, %rsi
callq 0x593a
movq $0x0, (%rax)
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
je 0x424a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r15
cmpq %r13, %r15
jne 0x420a
movq 0x80(%rsp), %rax
cmpq $0x1, %rax
adcq $0x0, %rax
movq %rax, 0xc8(%rsp)
xorl %eax, %eax
leaq 0x40(%rsp), %rbx
leaq 0x168(%rsp), %r14
movq %rax, 0xd0(%rsp)
movq 0x10(%rsp,%rax,8), %rbp
xorl %eax, %eax
movq %rbp, 0xd8(%rsp)
movzbl %al, %ecx
movq %rcx, 0x88(%rsp)
xorl %r15d, %r15d
movq %rax, 0x38(%rsp)
movq %r15, 0x8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x120(%rsp)
movq $0x0, 0x130(%rsp)
testq %rbp, %rbp
je 0x43ab
xorl %r13d, %r13d
leaq 0x97(%rsp), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x6ad0
movq 0x88(%rsp), %rdx
leal (%rax,%rdx), %ecx
andb $0x3, %cl
xorb $0x2, %cl
cmpb $0x7, %al
movzbl %cl, %eax
cmovbl %edx, %eax
movzbl %al, %r12d
leaq 0xa0(%rsp,%r12,8), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x634e
movl %eax, %r15d
leaq (%rsp,%r12,8), %rdi
addq $0x100, %rdi            # imm = 0x100
movq %r14, %rsi
movq %rdi, %rdx
callq 0x634e
movl %eax, %r12d
leaq 0x190(%rsp), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x634e
movq %rbx, %rdi
movl %r15d, %esi
movl %r12d, %edx
movl %eax, %ecx
callq 0x7432
movq 0x128(%rsp), %rsi
cmpq 0x130(%rsp), %rsi
je 0x437a
movl 0x50(%rsp), %eax
movl %eax, 0x10(%rsi)
movups 0x40(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x14, 0x128(%rsp)
jmp 0x438a
leaq 0x120(%rsp), %rdi
movq %rbx, %rdx
callq 0x64d4
imull %r15d, %r12d
movslq %r12d, %rax
addq %rax, %r13
decq %rbp
jne 0x42cc
xorps %xmm0, %xmm0
cvtsi2ss %r13, %xmm0
cvtss2sd %xmm0, %xmm0
jmp 0x43ae
xorps %xmm0, %xmm0
movq 0x60(%rsp), %r15
movq 0x68(%rsp), %rax
movq %rax, 0xe0(%rsp)
cmpq %rax, %r15
je 0x44b0
divsd 0x5c9f(%rip), %xmm0     # 0xa070
callq 0x2090
cvttsd2si %xmm0, %r13
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x5b0c
movq %r14, %r12
xorpd %xmm0, %xmm0
movapd %xmm0, 0x1a0(%rsp)
movq $0x0, 0x1b0(%rsp)
leaq 0x1c0(%rsp), %rdi
movq %rbx, %r14
movq %rbx, %rsi
callq 0x5870
leaq 0x120(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
movl $0x64, %edx
movl $0x64, %ecx
callq *(%rax)
movq 0x1a0(%rsp), %rbx
movq 0x1a8(%rsp), %rbp
leaq 0x390(%rsp), %rdi
movq %r14, %rsi
callq 0x593a
subq %rbx, %rbp
sarq $0x5, %rbp
subq %r13, %rbp
addq %rbp, (%rax)
leaq 0x1a0(%rsp), %rdi
callq 0x58ec
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4498
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r15
cmpq 0xe0(%rsp), %r15
movq %r14, %rbx
movq %r12, %r14
jne 0x43db
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
movq 0x8(%rsp), %r15
je 0x44d2
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
incq %r15
cmpq 0xc8(%rsp), %r15
movq 0xd8(%rsp), %rbp
movq 0x38(%rsp), %rax
jne 0x42a4
incq %rax
cmpq $0x4, %rax
jne 0x4291
movq 0xd0(%rsp), %rax
incq %rax
cmpq $0x5, %rax
jne 0x427a
movq 0x60(%rsp), %r14
movq 0x68(%rsp), %r15
cmpq %r15, %r14
je 0x465c
movq 0x80(%rsp), %rax
shlq $0x2, %rax
leaq (%rax,%rax,4), %rax
movq %rax, %xmm0
punpckldq 0x5afe(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x5b06(%rip), %xmm0     # 0xa050
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, 0xe0(%rsp)
leaq 0x40(%rsp), %rbx
leaq 0x390(%rsp), %r12
leaq 0x6163(%rip), %r13      # 0xa6d6
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x5b0c
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0xaa30(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
leaq 0x5f6f(%rip), %rsi      # 0xa526
callq 0x2270
movq %r12, %rdi
movq %rbx, %rsi
callq 0x593a
movq (%rax), %rsi
movq %rbp, %rdi
callq 0x2210
movq %rax, %rbp
movl $0x2a, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x2270
movq %r12, %rdi
movq %rbx, %rsi
callq 0x593a
xorps %xmm0, %xmm0
cvtsi2sdq (%rax), %xmm0
divsd 0xe0(%rsp), %xmm0
movq %rbp, %rdi
callq 0x2310
movq %rax, %rbp
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %rbp, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x464f
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r14
cmpq %r15, %r14
jne 0x4573
leaq 0x390(%rsp), %rdi
callq 0x5a1c
jmp 0x4a2a
movq 0xa95b(%rip), %rdi      # 0xefd0
leaq 0x5f5b(%rip), %rsi      # 0xa5d7
movl $0x1b, %edx
callq 0x2270
movq 0x148(%rsp), %rsi
movq 0x150(%rsp), %rdx
movq 0xa933(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2120
movq 0x60(%rsp), %rcx
movq 0x68(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq %rax, %rcx
je 0x4a0d
leaq 0x390(%rsp), %rbp
leaq 0x120(%rsp), %r15
leaq 0x1f0(%rsp), %r12
leaq 0x20(%rsp), %rax
movq %rax, 0x10(%rsp)
movq (%rcx), %rsi
movq %rcx, 0x8(%rsp)
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x5b0c
movl $0x1b, %edx
movq 0xa8c4(%rip), %rdi      # 0xefd0
leaq 0x5eeb(%rip), %rsi      # 0xa5fe
callq 0x2270
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xa8a7(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
leaq 0x1c0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x5870
leaq 0x100(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movq 0xe0(%rsp), %rdx
movq 0x88(%rsp), %rcx
callq *(%rax)
movl $0xa, %edx
movq 0xa82a(%rip), %rdi      # 0xefd0
leaq 0x5e6d(%rip), %rsi      # 0xa61a
callq 0x2270
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x5, %rsi
movq 0xa809(%rip), %rdi      # 0xefd0
callq 0x2160
movq %rax, %r14
movl $0x13, %edx
movq %rax, %rdi
leaq 0x5e47(%rip), %rsi      # 0xa625
callq 0x2270
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2170
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x148(%rsp), %rsi
movq 0x150(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa0(%rsp), %rdi
callq 0x5b0c
movq 0x68(%rsp), %rax
subq 0x60(%rsp), %rax
cmpq $0x21, %rax
jb 0x4861
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
leaq 0xa0(%rsp), %rdi
callq 0x20c0
movq 0xa0(%rsp), %rdi
movl $0x1ff, %esi            # imm = 0x1FF
callq 0x2110
testl %eax, %eax
jne 0x49fc
movq 0x48(%rsp), %rax
cmpq 0x40(%rsp), %rax
je 0x499b
xorl %r13d, %r13d
xorl %r14d, %r14d
movq %rbp, %rdi
callq 0x2190
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq 0x3a0(%rsp), %rdi
callq 0x2270
movq %rax, %rbx
movl $0x1, %edx
movq %rax, %rdi
leaq 0x5d77(%rip), %rsi      # 0xa63f
callq 0x2270
incq %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2160
movl $0x4, %edx
movq %rax, %rdi
leaq 0x5d57(%rip), %rsi      # 0xa641
callq 0x2270
movq %r15, %rdi
movq 0xe0(%rsp), %rsi
movq 0x88(%rsp), %rdx
movl $0xffffff, %ecx         # imm = 0xFFFFFF
callq 0x6c0c
movq 0x40(%rsp), %rdi
addq %r13, %rdi
movq %r15, %rsi
callq 0x773e
movq %r12, %rdi
leaq 0x3a8(%rsp), %rsi
callq 0x2300
movq %r15, %rdi
movq %r12, %rsi
callq 0x6cfc
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x495c
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x2240
movq %r15, %rdi
callq 0x6c68
movq %rbp, %rdi
movq 0xa642(%rip), %rsi      # 0xefb0
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x5, %rax
addq $0x20, %r13
cmpq %rax, %r14
jb 0x4891
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x49c0
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x40(%rsp), %rdi
callq 0x58ec
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x49e6
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x8(%rsp), %rcx
addq $0x20, %rcx
cmpq 0x38(%rsp), %rcx
jne 0x46dd
jmp 0x4a0d
leaq 0x5c36(%rip), %rdi      # 0xa639
callq 0x21e0
jmp 0x487b
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x4a2a
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
xorl %ebx, %ebx
leaq 0x1c0(%rsp), %rdi
callq 0x5a94
leaq 0x60(%rsp), %rdi
callq 0x59b6
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x4a68
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x4a8d
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x2240
movl %ebx, %eax
addq $0x5f8, %rsp            # imm = 0x5F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x63dc(%rip), %rdi      # 0xae84
callq 0x2140
leaq 0x63d5(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x63c9(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x63b8(%rip), %rdi      # 0xae84
callq 0x22b0
leaq 0x63b1(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x63a5(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x6399(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x638d(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x6381(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x6375(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x6369(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x635d(%rip), %rdi      # 0xae89
callq 0x22b0
jmp 0x4ec1
movq %rax, %rbx
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x220(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
movq %rax, %rbx
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x240(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
movq %rax, %rbx
jmp 0x4e36
jmp 0x4efa
movq %rax, %rbx
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x260(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
movq %rax, %rbx
movq 0xa3cf(%rip), %rsi      # 0xefb0
leaq 0x390(%rsp), %rdi
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
jmp 0x4ffb
jmp 0x4d52
movq %rax, %rbx
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x280(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
movq %rax, %rbx
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x2a0(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4eb1
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x2c0(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4e2a
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x2e0(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4ef3
jmp 0x4ec1
jmp 0x4ec1
jmp 0x4e2a
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x300(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4e2a
jmp 0x4eb1
jmp 0x4eb9
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
jne 0x4da8
jmp 0x4fee
movq %rax, %rbx
jmp 0x4fee
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x320(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4fee
movq 0x50(%rsp), %rsi
incq %rsi
jmp 0x4fe9
jmp 0x4e1c
jmp 0x4ec1
movq %rax, %rbx
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x340(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4efa
jmp 0x4ec1
jmp 0x4efa
jmp 0x4ec1
jmp 0x4efa
jmp 0x4ec1
jmp 0x4efa
jmp 0x4ec1
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x4e36
movl %r13d, (%r14)
jmp 0x4e36
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x4e36
movl %r15d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x20(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x380(%rsp), %rsi
jmp 0x4e9d
jmp 0x4efa
movq %rax, %rbx
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x4efd
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4efd
jmp 0x4ec1
movq %rax, %rbx
jmp 0x4f8b
movq %rax, %rbx
jmp 0x4fa7
movq %rax, %rbx
jmp 0x4f81
movq %rax, %rbx
jmp 0x4ffb
movq %rax, %rbx
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x4f29
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4f29
movq %rax, %rbx
jmp 0x4f5c
jmp 0x4f38
movq %rax, %rbx
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4ffb
movq 0x3a0(%rsp), %rsi
incq %rsi
jmp 0x4fbf
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0x6c68
jmp 0x4f3b
movq %rax, %rbx
movq 0xa06e(%rip), %rsi      # 0xefb0
leaq 0x390(%rsp), %rdi
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x4f81
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x40(%rsp), %rdi
callq 0x58ec
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4fa7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x100(%rsp), %rdi
testq %rdi, %rdi
je 0x4ffb
movq 0x110(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
jmp 0x4ffb
jmp 0x4fce
jmp 0x4fce
jmp 0x4fce
jmp 0x4fce
movq %rax, %rbx
movq 0x120(%rsp), %rdi
testq %rdi, %rdi
je 0x4fee
movq 0x130(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
callq 0x5a1c
leaq 0x1c0(%rsp), %rdi
callq 0x5a94
leaq 0x60(%rsp), %rdi
callq 0x59b6
movq 0x170(%rsp), %rdi
leaq 0x180(%rsp), %rax
cmpq %rax, %rdi
je 0x5037
movq 0x180(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0x505c
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x2240
movq %rbx, %rdi
callq 0x2360
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x58ec
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4fd1
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4fd1