// File: /workspace/github_cpp_makefile_star2_O3/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 $0x5d8, %rsp            # imm = 0x5D8
movq %rsi, %r13
movl %edi, %ebp
leaq 0x138(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x160(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq %rax, 0x80(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x70(%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 0x78af(%rip), %rsi      # 0xa078
leaq 0x78aa(%rip), %rdx      # 0xa07a
leaq 0x390(%rsp), %rdi
callq 0x5a82
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x55bc
leaq 0x4f33(%rip), %rcx      # 0x772c
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x2821
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7840(%rip), %rsi      # 0xa07b
leaq 0x783d(%rip), %rdx      # 0xa07f
callq 0x5a82
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x55bc
leaq 0x54c5(%rip), %rcx      # 0x7d28
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x288b
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x77db(%rip), %rsi      # 0xa080
leaq 0x77d8(%rip), %rdx      # 0xa084
callq 0x5a82
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x55bc
leaq 0x6167(%rip), %rcx      # 0x8a34
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x28f5
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
movq %rax, (%rdi)
leaq 0x7776(%rip), %rsi      # 0xa085
leaq 0x7773(%rip), %rdx      # 0xa089
callq 0x5a82
leaq 0x1c0(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x55bc
leaq 0x63f5(%rip), %rcx      # 0x8d2c
movq %rcx, (%rax)
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x295f
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
callq 0x2070
movq %rax, 0xe8(%rsp)
cmpl $0x2, %ebp
jl 0x3974
movl $0x1, %ebx
movl $0x1, %eax
movq %rax, 0x88(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0xd0(%rsp)
movl $0x3e8, %eax            # imm = 0x3E8
movq %rax, 0x68(%rsp)
movl $0x100, %eax            # imm = 0x100
movq %rax, 0xc0(%rsp)
movl $0x10, %eax
movq %rax, 0xc8(%rsp)
movq $0x0, 0x8(%rsp)
leaq 0x10(%rsp), %r15
leaq 0x180(%rsp), %r12
movl $0x800, %eax            # imm = 0x800
movq %rax, 0x90(%rsp)
movslq %ebx, %rax
movq (%r13,%rax,8), %rsi
leaq 0x390(%rsp), %r14
movq %r14, %rdi
movq %r15, %rdx
callq 0x5638
movq %r14, %rdi
leaq 0x7d11(%rip), %rsi      # 0xa711
callq 0x20b0
testl %eax, %eax
je 0x2b7a
movq %r14, %rdi
leaq 0x769a(%rip), %rsi      # 0xa0b1
callq 0x20b0
testl %eax, %eax
je 0x2be6
movq %r14, %rdi
leaq 0x76bf(%rip), %rsi      # 0xa0ed
callq 0x20b0
testl %eax, %eax
je 0x2db2
movq %r14, %rdi
leaq 0x76f7(%rip), %rsi      # 0xa13c
callq 0x20b0
testl %eax, %eax
je 0x2eaf
movq %r14, %rdi
leaq 0x772f(%rip), %rsi      # 0xa18b
callq 0x20b0
testl %eax, %eax
je 0x3020
movq %r14, %rdi
leaq 0x7769(%rip), %rsi      # 0xa1dc
callq 0x20b0
testl %eax, %eax
je 0x3125
movq %r14, %rdi
leaq 0x77a3(%rip), %rsi      # 0xa22d
callq 0x20b0
testl %eax, %eax
je 0x32ac
movq %r14, %rdi
leaq 0x77dd(%rip), %rsi      # 0xa27e
callq 0x20b0
testl %eax, %eax
je 0x3433
movq %r14, %rdi
leaq 0x780c(%rip), %rsi      # 0xa2c4
callq 0x20b0
testl %eax, %eax
je 0x357c
movq %r14, %rdi
leaq 0x783f(%rip), %rsi      # 0xa30e
callq 0x20b0
testl %eax, %eax
je 0x36dd
leaq 0x1c0(%rsp), %rdi
movq %r14, %rsi
callq 0x5e38
leaq 0x1c8(%rsp), %rcx
cmpq %rcx, %rax
je 0x3831
movq 0x70(%rsp), %rdi
movq 0x78(%rsp), %rsi
leaq 0x390(%rsp), %rdx
callq 0x5ec1
cmpq 0x78(%rsp), %rax
je 0x3902
movl $0x17, %edx
movq 0xc4c5(%rip), %rdi      # 0xeff0
leaq 0x7826(%rip), %rsi      # 0xa358
callq 0x2270
movq 0x390(%rsp), %rsi
movq 0x398(%rsp), %rdx
movq 0xc4a2(%rip), %rdi      # 0xeff0
callq 0x2270
movq %rax, %r14
movl $0x12, %edx
movq %rax, %rdi
leaq 0x780b(%rip), %rsi      # 0xa370
callq 0x2270
movb $0x1, %r15b
movq %r14, %rdi
callq 0x2120
jmp 0x38c0
cmpl $0x2, %ebp
jne 0x2d18
cmpl $0x1, %ebx
jne 0x2d18
movq (%r13), %rsi
leaq 0x370(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rdx
callq 0x5638
movq %rbx, %rdi
callq 0x4f6e
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x2bd0
movq 0x380(%rsp), %rsi
incq %rsi
callq 0x2240
xorl %r15d, %r15d
movl $0x1, %ebx
movq $0x0, 0x8(%rsp)
jmp 0x38c0
incl %ebx
cmpl %ebp, %ebx
je 0x2c7e
movq %r13, %rax
movl %ebp, %r13d
movslq %ebx, %r14
movq %rax, %r12
movq (%rax,%r14,8), %rsi
leaq 0x5b8(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rdx
callq 0x5638
xorl %r15d, %r15d
movl $0xa, %ecx
movq %rbp, %rdi
leaq 0x8254(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
cmpq $-0x1, %rax
je 0x2c3d
movq (%r12,%r14,8), %rax
cmpb $0x2d, (%rax)
setne %r15b
movl %r13d, %ebp
movq 0x5b8(%rsp), %rdi
leaq 0x5c8(%rsp), %rax
cmpq %rax, %rdi
je 0x2c65
movq 0x5c8(%rsp), %rsi
incq %rsi
callq 0x2240
testb %r15b, %r15b
leaq 0x10(%rsp), %rdi
movq %r12, %r13
leaq 0x180(%rsp), %r12
je 0x2fb4
movl $0x34, %edx
movq 0xc366(%rip), %rdi      # 0xeff0
leaq 0x7427(%rip), %rsi      # 0xa0b8
callq 0x2270
movq 0xc353(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc335(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x330(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x2d0e
movq 0x340(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x3, %eax
jmp 0x38b8
movl $0x26, %edx
movq 0xc2cc(%rip), %rdi      # 0xeff0
leaq 0x735f(%rip), %rsi      # 0xa08a
callq 0x2270
movq 0xc2b9(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc29b(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x350(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x2da8
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x1, %eax
jmp 0x38b8
incl %ebx
cmpl %ebp, %ebx
je 0x2e15
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
movq %r12, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r12, %rdi
leaq 0x809d(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x2e0b
movq 0x190(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x322a
movl $0x47, %edx
movq 0xc1cf(%rip), %rdi      # 0xeff0
leaq 0x72cc(%rip), %rsi      # 0xa0f4
callq 0x2270
movq 0xc1bc(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc19e(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x310(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x2ea5
movq 0x320(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x4, %eax
jmp 0x38b8
incl %ebx
cmpl %ebp, %ebx
je 0x2f1a
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
leaq 0x598(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r14, %rdi
leaq 0x7f98(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x598(%rsp), %rdi
leaq 0x5a8(%rsp), %rax
cmpq %rax, %rdi
je 0x2f10
movq 0x5a8(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x33b1
movl $0x47, %edx
movq 0xc0ca(%rip), %rdi      # 0xeff0
leaq 0x7216(%rip), %rsi      # 0xa143
callq 0x2270
movq 0xc0b7(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xc099(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x2f0(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x2faa
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x5, %eax
jmp 0x38b8
movq (%r13,%r14,8), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
movq %rax, 0xe8(%rsp)
cmpq %r15, 0xa0(%rsp)
je 0x4982
movl (%r14), %eax
testl %eax, %eax
je 0x378e
cmpl $0x22, %eax
jne 0x3791
jmp 0x498e
incl %ebx
cmpl %ebp, %ebx
je 0x308b
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
leaq 0x578(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r14, %rdi
leaq 0x7e27(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x578(%rsp), %rdi
leaq 0x588(%rsp), %rax
cmpq %rax, %rdi
je 0x3081
movq 0x588(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x3463
movl $0x47, %edx
movq 0xbf59(%rip), %rdi      # 0xeff0
leaq 0x70f6(%rip), %rsi      # 0xa194
callq 0x2270
movq 0xbf46(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbf28(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x2d0(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x311b
movq 0x2e0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x6, %eax
jmp 0x38b8
incl %ebx
cmpl %ebp, %ebx
je 0x3190
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
leaq 0x558(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r14, %rdi
leaq 0x7d22(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x558(%rsp), %rdi
leaq 0x568(%rsp), %rax
cmpq %rax, %rdi
je 0x3186
movq 0x568(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x365b
movl $0x4b, %edx
movq 0xbe54(%rip), %rdi      # 0xeff0
leaq 0x703e(%rip), %rsi      # 0xa1e1
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 (%r13), %rsi
leaq 0x2b0(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x3220
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x7, %eax
jmp 0x38b8
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r15, 0xa0(%rsp)
je 0x499a
movq %rax, 0xc8(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x49a6
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x378a
jmp 0x49a6
incl %ebx
cmpl %ebp, %ebx
je 0x3317
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
leaq 0x538(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r14, %rdi
leaq 0x7b9b(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x538(%rsp), %rdi
leaq 0x548(%rsp), %rax
cmpq %rax, %rdi
je 0x330d
movq 0x548(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x370d
movl $0x4b, %edx
movq 0xbccd(%rip), %rdi      # 0xeff0
leaq 0x6f08(%rip), %rsi      # 0xa232
callq 0x2270
movq 0xbcba(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbc9c(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x290(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x33a7
movq 0x2a0(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x8, %eax
jmp 0x38b8
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r15, 0xa0(%rsp)
je 0x49b2
movq %rax, 0xc0(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x49be
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x378a
jmp 0x49be
incl %ebx
cmpl %ebp, %ebx
je 0x34e2
movslq %ebx, %rax
movq (%r13,%rax,8), %rsi
cmpb $0x0, (%rsi)
je 0x34e2
movb $0x1, %r15b
leaq 0x128(%rsp), %rdi
callq 0x2290
jmp 0x38c0
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r15, 0xa0(%rsp)
je 0x49ca
movq %rax, 0x68(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x49d6
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x378a
jmp 0x49d6
movl $0x3c, %edx
movq 0xbb02(%rip), %rdi      # 0xeff0
leaq 0x6d92(%rip), %rsi      # 0xa287
callq 0x2270
movq 0xbaef(%rip), %rcx      # 0xeff0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xbad1(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq (%r13), %rsi
leaq 0x270(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x3572
movq 0x280(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0x9, %eax
jmp 0x38b8
incl %ebx
cmpl %ebp, %ebx
je 0x35e7
movslq %ebx, %r15
movq (%r13,%r15,8), %rsi
leaq 0x518(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movl $0xa, %ecx
movq %r14, %rdi
leaq 0x78cb(%rip), %rsi      # 0xae79
xorl %edx, %edx
callq 0x2340
movq %rax, %r14
movq 0x518(%rsp), %rdi
leaq 0x528(%rsp), %rax
cmpq %rax, %rdi
je 0x35dd
movq 0x528(%rsp), %rsi
incq %rsi
callq 0x2240
cmpq $-0x1, %r14
je 0x3919
movl $0x41, %edx
movq 0xb9fd(%rip), %rdi      # 0xeff0
leaq 0x6cd2(%rip), %rsi      # 0xa2cc
callq 0x2270
movq 0xb9ea(%rip), %rdi      # 0xeff0
callq 0x2120
movq (%r13), %rsi
leaq 0x250(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x3651
movq 0x260(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xa, %eax
jmp 0x38b8
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r15, 0xa0(%rsp)
je 0x49e2
movq %rax, 0xd0(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x49ee
movl (%r14), %eax
cmpl $0x22, %eax
jne 0x378a
jmp 0x49ee
incl %ebx
cmpl %ebp, %ebx
je 0x37bd
movslq %ebx, %rax
movq (%r13,%rax,8), %rsi
cmpb $0x0, (%rsi)
je 0x37bd
movb $0x1, %r15b
leaq 0x150(%rsp), %rdi
callq 0x2290
jmp 0x38c0
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x5638
movq 0x10(%rsp), %r15
callq 0x2060
movq %rax, %r14
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r15, %rdi
leaq 0xa0(%rsp), %rsi
movl $0xa, %edx
callq 0x22a0
cmpq %r15, 0xa0(%rsp)
je 0x49fa
movq %rax, 0x90(%rsp)
addq $-0x80000000, %rax      # imm = 0x80000000
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
cmpq %rcx, %rax
jb 0x4a06
movl (%r14), %eax
cmpl $0x22, %eax
je 0x4a06
testl %eax, %eax
jne 0x3791
movl %r12d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x37ad
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movb $0x1, %r15b
leaq 0x180(%rsp), %r12
jmp 0x38c0
movl $0x3c, %edx
movq 0xb827(%rip), %rdi      # 0xeff0
leaq 0x6b4b(%rip), %rsi      # 0xa31b
callq 0x2270
movq 0xb814(%rip), %rdi      # 0xeff0
callq 0x2120
movq (%r13), %rsi
leaq 0x230(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x3827
movq 0x240(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xb, %eax
jmp 0x38b8
movl $0x2c, %edx
movq 0xb7b3(%rip), %rdi      # 0xeff0
leaq 0x6b3f(%rip), %rsi      # 0xa383
callq 0x2270
movq 0x390(%rsp), %rsi
movq 0x398(%rsp), %rdx
movq 0xb790(%rip), %rdi      # 0xeff0
callq 0x2270
movq %rax, %rdi
callq 0x2120
movq (%r13), %rsi
leaq 0x210(%rsp), %r14
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
callq 0x5476
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x38b3
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x2240
movl $0xc, %eax
movq %rax, 0x8(%rsp)
xorl %r15d, %r15d
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x38e5
movq 0x3a0(%rsp), %rsi
incq %rsi
callq 0x2240
testb %r15b, %r15b
je 0x3abb
incl %ebx
cmpl %ebp, %ebx
leaq 0x10(%rsp), %r15
jl 0x29db
jmp 0x39bf
movb $0x1, %r15b
leaq 0x70(%rsp), %rdi
leaq 0x390(%rsp), %rsi
callq 0x5708
jmp 0x38c0
movq (%r13,%r15,8), %rsi
leaq 0x10(%rsp), %r14
movq %r14, %rdi
leaq 0xa0(%rsp), %rdx
callq 0x5638
movq %r14, %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0x5675
movl %eax, %r14d
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x3961
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movslq %r14d, %rax
movq %rax, 0x88(%rsp)
movb $0x1, %r15b
jmp 0x38c0
movl $0x10, %eax
movq %rax, 0xc8(%rsp)
movl $0x100, %eax            # imm = 0x100
movq %rax, 0xc0(%rsp)
movl $0x3e8, %eax            # imm = 0x3E8
movq %rax, 0x68(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0x90(%rsp)
movl $0x1, %eax
movq %rax, 0x88(%rsp)
movl $0x800, %eax            # imm = 0x800
movq %rax, 0xd0(%rsp)
movq 0xc8(%rsp), %r13
testl %r13d, %r13d
movq 0xd0(%rsp), %rax
movq 0x90(%rsp), %rcx
movq 0xc0(%rsp), %r12
je 0x3a6b
testl %r12d, %r12d
je 0x3a6b
testl %eax, %eax
je 0x3a6b
testl %ecx, %ecx
je 0x3a6b
cmpl %eax, %r12d
ja 0x3ac5
cmpl %ecx, %r12d
ja 0x3ac5
cmpl %r12d, %r13d
jbe 0x3b15
movq 0xb5d9(%rip), %rbx      # 0xeff0
leaq 0x6a18(%rip), %rsi      # 0xa436
movl $0x69, %edx
movq %rbx, %rdi
callq 0x2270
movq 0x68(%rsp), %r14
leaq 0x1c8(%rsp), %r15
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2220
movsbl %al, %esi
movq 0xb59a(%rip), %rdi      # 0xeff0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movl %r13d, %ebp
jmp 0x3b28
movq 0xb57e(%rip), %rbx      # 0xeff0
leaq 0x6937(%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 0xb54c(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x14, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x490d
movq 0x8(%rsp), %rbx
jmp 0x490d
movq 0xb524(%rip), %rbx      # 0xeff0
leaq 0x690e(%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 0xb4f2(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x15, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x490d
movl %r12d, %ebp
movl %r13d, %r12d
movq 0x68(%rsp), %r14
leaq 0x1c8(%rsp), %r15
cmpq $0x0, 0x88(%rsp)
je 0x3ee1
testq %r14, %r14
je 0x3f31
movq 0x70(%rsp), %rax
cmpq 0x78(%rsp), %rax
setne %al
movq 0x1d8(%rsp), %rbx
cmpq %r15, %rbx
sete %cl
orb %al, %cl
jne 0x3b80
leaq 0x70(%rsp), %r14
leaq 0x20(%rbx), %rsi
movq %r14, %rdi
callq 0x5708
movq %rbx, %rdi
callq 0x2180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x3b64
movq 0xb449(%rip), %rbx      # 0xefd0
leaq 0x6977(%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 0xb417(%rip), %rdi      # 0xefd0
callq 0x2040
movq %rax, %rdi
callq 0x2170
movq 0xb403(%rip), %rdi      # 0xefd0
leaq 0x6942(%rip), %rsi      # 0xa516
movl $0x13, %edx
callq 0x2270
movq 0xb3eb(%rip), %rdi      # 0xefd0
movq 0xe8(%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, 0x130(%rsp)
jne 0x3cbc
leaq 0x390(%rsp), %rdi
callq 0x2190
leaq 0x3a0(%rsp), %rbx
movq %rbx, %rdi
movq 0xe8(%rsp), %rsi
callq 0x2210
leaq 0x68d3(%rip), %rsi      # 0xa52a
movl $0x1, %edx
movq %rax, %rdi
callq 0x2270
movq 0x70(%rsp), %rax
movq 0x78(%rsp), %rcx
subq %rax, %rcx
cmpq $0x20, %rcx
jne 0x3c86
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
leaq 0x390(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x2280
movq 0xb30e(%rip), %rsi      # 0xefb0
leaq 0x390(%rsp), %rdi
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
movabsq $0x200000005, %rcx      # imm = 0x200000005
movq 0xe8(%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, 0x148(%rsp)
movl %r12d, 0x178(%rsp)
movl %ebp, 0x17c(%rsp)
movabsq $0xffffff00000000, %rax # imm = 0xFFFFFF00000000
movq %rax, 0x170(%rsp)
cmpq $0x1, 0x88(%rsp)
jne 0x3f81
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
cmpq $0x21, %rax
leaq 0x67e6(%rip), %rax      # 0xa52c
leaq 0x6827(%rip), %rsi      # 0xa574
cmovaeq %rax, %rsi
movl $0x47, %eax
movl $0x2e, %edx
cmovaeq %rax, %rdx
movq 0xb26a(%rip), %rdi      # 0xefd0
callq 0x2270
movq 0xb25e(%rip), %rdi      # 0xefd0
callq 0x2120
xorps %xmm0, %xmm0
leaq 0xf0(%rsp), %rax
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x148(%rsp), %r14
leaq 0x178(%rsp), %r15
leaq 0x170(%rsp), %r12
leaq 0x390(%rsp), %r13
movq %r15, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x61f4
movl %eax, %ebp
movq %r15, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x61f4
movl %eax, %ebx
movq %r12, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x61f4
movq %r13, %rdi
movl %ebp, %esi
movl %ebx, %edx
movl %eax, %ecx
callq 0x72e6
movq 0xf8(%rsp), %rsi
cmpq 0x100(%rsp), %rsi
je 0x3e1b
movl 0x3a0(%rsp), %eax
movl %eax, 0x10(%rsi)
movups 0x390(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x14, 0xf8(%rsp)
jmp 0x3e2b
leaq 0xf0(%rsp), %rdi
movq %r13, %rdx
callq 0x637a
decq 0x68(%rsp)
jne 0x3dad
cmpq $0x0, 0x158(%rsp)
je 0x3e7d
movq 0xb188(%rip), %rdi      # 0xefd0
leaq 0x6754(%rip), %rsi      # 0xa5a3
movl $0x33, %edx
callq 0x2270
movq 0x150(%rsp), %rsi
movq 0x158(%rsp), %rdx
movq 0xb160(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rdi
callq 0x2120
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
cmpq $0x21, %rax
jb 0x454f
movq 0xb138(%rip), %rdi      # 0xefd0
leaq 0x6738(%rip), %rsi      # 0xa5d7
movl $0x1b, %edx
callq 0x2270
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
movq 0xb110(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbx
leaq 0x6724(%rip), %rsi      # 0xa5f3
movl $0xa, %edx
movq %rax, %rdi
callq 0x2270
jmp 0x4586
movq 0xb108(%rip), %rbx      # 0xeff0
leaq 0x65b1(%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 0xb0d6(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x16, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x490d
movq 0xb0b8(%rip), %rbx      # 0xeff0
leaq 0x6595(%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 0xb086(%rip), %rdi      # 0xeff0
callq 0x2040
movl $0x17, %ebx
movq %rax, %rdi
callq 0x2170
jmp 0x490d
cmpq $0x0, 0x158(%rsp)
je 0x3fb0
movq 0xb05d(%rip), %rdi      # 0xeff0
leaq 0x66ac(%rip), %rsi      # 0xa646
movl $0x51, %edx
callq 0x2270
movq 0xb045(%rip), %rdi      # 0xeff0
callq 0x2120
movq 0xb019(%rip), %rdi      # 0xefd0
leaq 0x66da(%rip), %rsi      # 0xa698
movl $0xe, %edx
callq 0x2270
movq 0xb001(%rip), %rdi      # 0xefd0
movq 0x88(%rsp), %rsi
callq 0x2160
movq %rax, %rbx
leaq 0x66c1(%rip), %rsi      # 0xa6a7
movl $0x2e, %edx
movq %rax, %rdi
callq 0x2270
movq 0x78(%rsp), %rsi
subq 0x70(%rsp), %rsi
sarq $0x5, %rsi
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
leaq 0x686d(%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
movq $0x14, 0x10(%rsp)
movq $0x28, 0x18(%rsp)
movq $0x3c, 0x20(%rsp)
movq $0x50, 0x28(%rsp)
movq $0x64, 0x30(%rsp)
movw $0x900, 0x9e(%rsp)      # imm = 0x900
movaps 0x5f8b(%rip), %xmm0     # 0xa010
movaps %xmm0, 0xa0(%rsp)
movaps 0x5f8c(%rip), %xmm0     # 0xa020
movaps %xmm0, 0xb0(%rsp)
movapd 0x5f8c(%rip), %xmm1     # 0xa030
movapd %xmm1, 0xf0(%rsp)
movaps %xmm0, 0x100(%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 0x70(%rsp), %r15
movq 0x78(%rsp), %r13
cmpq %r13, %r15
je 0x413f
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 0x59ec
movq %r14, %rdi
movq %rbx, %rsi
callq 0x5816
movq $0x0, (%rax)
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
je 0x4136
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r15
cmpq %r13, %r15
jne 0x40f6
xorl %eax, %eax
leaq 0x40(%rsp), %rbx
leaq 0x148(%rsp), %r14
movq %rax, 0xc0(%rsp)
movq 0x10(%rsp,%rax,8), %r15
xorl %r12d, %r12d
movq %r15, 0xc8(%rsp)
movzbl %r12b, %eax
movq %rax, 0x68(%rsp)
xorl %ebp, %ebp
movq %r12, 0x8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x110(%rsp)
movq $0x0, 0x120(%rsp)
testq %r15, %r15
movq %rbp, 0xd0(%rsp)
je 0x4289
xorl %ebp, %ebp
leaq 0x9e(%rsp), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x6976
movq 0x68(%rsp), %rdx
leal (%rax,%rdx), %ecx
andb $0x3, %cl
xorb $0x2, %cl
cmpb $0x7, %al
movzbl %cl, %eax
cmovbl %edx, %eax
movzbl %al, %r13d
leaq 0xa0(%rsp,%r13,8), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x61f4
movl %eax, %r12d
leaq (%rsp,%r13,8), %rdi
addq $0xf0, %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x61f4
movl %eax, %r13d
leaq 0x170(%rsp), %rdi
movq %r14, %rsi
movq %rdi, %rdx
callq 0x61f4
movq %rbx, %rdi
movl %r12d, %esi
movl %r13d, %edx
movl %eax, %ecx
callq 0x72e6
movq 0x118(%rsp), %rsi
cmpq 0x120(%rsp), %rsi
je 0x424b
movl 0x50(%rsp), %eax
movl %eax, 0x10(%rsi)
movups 0x40(%rsp), %xmm0
movups %xmm0, (%rsi)
addq $0x14, 0x118(%rsp)
jmp 0x425b
leaq 0x110(%rsp), %rdi
movq %rbx, %rdx
callq 0x637a
imull %r12d, %r13d
movslq %r13d, %rax
addq %rax, %rbp
decq %r15
jne 0x41a0
xorps %xmm0, %xmm0
cvtsi2ss %rbp, %xmm0
cvtss2sd %xmm0, %xmm0
movq 0x8(%rsp), %r12
movq 0xd0(%rsp), %rbp
jmp 0x428c
xorps %xmm0, %xmm0
movq 0x70(%rsp), %r15
movq 0x78(%rsp), %rax
movq %rax, 0x90(%rsp)
cmpq %rax, %r15
je 0x439b
divsd 0x5dc1(%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 0x59ec
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 0x5746
leaq 0x110(%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 0x5816
subq %rbx, %rbp
sarq $0x5, %rbp
subq %r13, %rbp
addq %rbp, (%rax)
leaq 0x1a0(%rsp), %rdi
callq 0x57c2
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4376
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r15
cmpq 0x90(%rsp), %r15
movq %r14, %rbx
movq %r12, %r14
movq 0x8(%rsp), %r12
movq 0xd0(%rsp), %rbp
jne 0x42b9
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
movq 0xc8(%rsp), %r15
je 0x43c0
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
incq %rbp
cmpq 0x88(%rsp), %rbp
jne 0x4176
incq %r12
cmpq $0x4, %r12
jne 0x4166
movq 0xc0(%rsp), %rax
incq %rax
cmpq $0x5, %rax
jne 0x414e
movq 0x70(%rsp), %r14
movq 0x78(%rsp), %r15
cmpq %r15, %r14
je 0x453d
movq 0x88(%rsp), %rax
shlq $0x2, %rax
leaq (%rax,%rax,4), %rax
movq %rax, %xmm0
punpckldq 0x5c1d(%rip), %xmm0 # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1]
subpd 0x5c25(%rip), %xmm0     # 0xa050
movapd %xmm0, %xmm1
unpckhpd %xmm0, %xmm1            # xmm1 = xmm1[1],xmm0[1]
addsd %xmm0, %xmm1
movapd %xmm1, 0xd0(%rsp)
leaq 0x40(%rsp), %rbx
leaq 0x390(%rsp), %r12
leaq 0x6282(%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 0x59ec
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq 0xab4f(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbp
movl $0x3, %edx
movq %rax, %rdi
leaq 0x608e(%rip), %rsi      # 0xa526
callq 0x2270
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5816
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 0x5816
xorps %xmm0, %xmm0
cvtsi2sdq (%rax), %xmm0
divsd 0xd0(%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 0x4530
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
addq $0x20, %r14
cmpq %r15, %r14
jne 0x4454
leaq 0x390(%rsp), %rdi
callq 0x58fc
jmp 0x490b
movq 0xaa7a(%rip), %rdi      # 0xefd0
leaq 0x607a(%rip), %rsi      # 0xa5d7
movl $0x1b, %edx
callq 0x2270
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
movq 0xaa52(%rip), %rdi      # 0xefd0
callq 0x2270
movq %rax, %rbx
movq %rbx, %rdi
callq 0x2120
movq 0x70(%rsp), %rcx
movq 0x78(%rsp), %rax
movq %rax, 0x68(%rsp)
cmpq %rax, %rcx
je 0x48ee
leaq 0x390(%rsp), %r13
leaq 0x110(%rsp), %r15
leaq 0x1f0(%rsp), %rbx
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 0x59ec
movl $0x1b, %edx
movq 0xa9e3(%rip), %rdi      # 0xefd0
leaq 0x600a(%rip), %rsi      # 0xa5fe
callq 0x2270
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0xa9c6(%rip), %rdi      # 0xefd0
callq 0x2270
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
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
leaq 0x1c0(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x5746
leaq 0xf0(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq 0x90(%rsp), %rcx
callq *(%rax)
movl $0xa, %edx
movq 0xa949(%rip), %rdi      # 0xefd0
leaq 0x5f8c(%rip), %rsi      # 0xa61a
callq 0x2270
movq 0x48(%rsp), %rsi
subq 0x40(%rsp), %rsi
sarq $0x5, %rsi
movq 0xa928(%rip), %rdi      # 0xefd0
callq 0x2160
movq %rax, %rbp
movl $0x13, %edx
movq %rax, %rdi
leaq 0x5f66(%rip), %rsi      # 0xa625
callq 0x2270
movq (%rbp), %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
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0xa0(%rsp), %rdi
callq 0x59ec
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
cmpq $0x21, %rax
jb 0x4743
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 0x48dd
movq 0x48(%rsp), %rax
cmpq 0x40(%rsp), %rax
je 0x487c
xorl %r12d, %r12d
xorl %ebp, %ebp
movq %r13, %rdi
callq 0x2190
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
leaq 0x3a0(%rsp), %rdi
callq 0x2270
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x5e96(%rip), %rsi      # 0xa63f
callq 0x2270
incq %rbp
movq %r14, %rdi
movq %rbp, %rsi
callq 0x2160
movl $0x4, %edx
movq %rax, %rdi
leaq 0x5e76(%rip), %rsi      # 0xa641
callq 0x2270
movq %r15, %rdi
movq 0xd0(%rsp), %rsi
movq 0x90(%rsp), %rdx
movl $0xffffff, %ecx         # imm = 0xFFFFFF
callq 0x6ab4
movq 0x40(%rsp), %rdi
addq %r12, %rdi
movq %r15, %rsi
callq 0x76fa
movq %rbx, %rdi
leaq 0x3a8(%rsp), %rsi
callq 0x2300
movq %r15, %rdi
movq %rbx, %rsi
callq 0x6b9e
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x483d
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x2240
movq %r15, %rdi
callq 0x6b10
movq %r13, %rdi
movq 0xa761(%rip), %rsi      # 0xefb0
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
movq 0x48(%rsp), %rax
subq 0x40(%rsp), %rax
sarq $0x5, %rax
addq $0x20, %r12
cmpq %rax, %rbp
jb 0x4772
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x48a1
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x40(%rsp), %rdi
callq 0x57c2
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x48c7
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x8(%rsp), %rcx
addq $0x20, %rcx
cmpq 0x68(%rsp), %rcx
jne 0x45be
jmp 0x48ee
leaq 0x5d55(%rip), %rdi      # 0xa639
callq 0x21e0
jmp 0x475d
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x490b
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
xorl %ebx, %ebx
leaq 0x1c0(%rsp), %rdi
callq 0x5974
leaq 0x70(%rsp), %rdi
callq 0x5892
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x4949
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x496e
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2240
movl %ebx, %eax
addq $0x5d8, %rsp            # imm = 0x5D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x64fb(%rip), %rdi      # 0xae84
callq 0x2140
leaq 0x64ef(%rip), %rdi      # 0xae84
callq 0x22b0
leaq 0x64e8(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x64dc(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x64d0(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x64c4(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x64b8(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x64ac(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x64a0(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x6494(%rip), %rdi      # 0xae89
callq 0x22b0
leaq 0x6488(%rip), %rdi      # 0xae89
callq 0x2140
leaq 0x647c(%rip), %rdi      # 0xae89
callq 0x22b0
movq %rax, %rbx
jmp 0x4c36
jmp 0x4dcf
jmp 0x4d96
movq %rax, %rbx
movq 0x210(%rsp), %rdi
leaq 0x220(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x220(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
movq %rax, %rbx
movq 0x230(%rsp), %rdi
leaq 0x240(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x240(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4dcf
jmp 0x4dcf
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0x250(%rsp), %rdi
leaq 0x260(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x260(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4c2a
movq %rax, %rbx
movq 0x270(%rsp), %rdi
leaq 0x280(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x280(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0xa4a7(%rip), %rsi      # 0xefb0
leaq 0x390(%rsp), %rdi
callq 0x21b0
leaq 0x410(%rsp), %rdi
callq 0x20d0
jmp 0x4ed0
jmp 0x4c6f
jmp 0x4c2a
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0x290(%rsp), %rdi
leaq 0x2a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x2a0(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4c2a
jmp 0x4d86
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0x2b0(%rsp), %rdi
leaq 0x2c0(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x2c0(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4c2a
jmp 0x4dc8
jmp 0x4dcf
jmp 0x4d96
movq %rax, %rbx
movq 0x2d0(%rsp), %rdi
leaq 0x2e0(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x2e0(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4d96
jmp 0x4c2a
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0x2f0(%rsp), %rdi
leaq 0x300(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x300(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
movq %rax, %rbx
cmpl $0x0, (%r14)
jne 0x4c36
movl %r12d, (%r14)
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x20(%rsp), %rsi
jmp 0x4d72
jmp 0x4d86
jmp 0x4d8e
movq %rax, %rbx
movq 0x40(%rsp), %rdi
cmpq %r12, %rdi
jne 0x4ce8
jmp 0x4ec3
movq %rax, %rbx
jmp 0x4ec3
jmp 0x4dcf
movq %rax, %rbx
movq 0x310(%rsp), %rdi
leaq 0x320(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x320(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4dcf
jmp 0x4d96
jmp 0x4dcf
jmp 0x4d96
jmp 0x4dcf
jmp 0x4d96
jmp 0x4dcf
jmp 0x4d96
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4ec3
movq 0x50(%rsp), %rsi
incq %rsi
jmp 0x4ebe
jmp 0x4d96
movq %rax, %rbx
movq 0x330(%rsp), %rdi
leaq 0x340(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x340(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
jmp 0x4dcf
movq %rax, %rbx
movq 0x370(%rsp), %rdi
leaq 0x380(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x380(%rsp), %rsi
jmp 0x4d72
jmp 0x4dcf
movq %rax, %rbx
movq 0x350(%rsp), %rdi
leaq 0x360(%rsp), %rax
cmpq %rax, %rdi
je 0x4dd2
movq 0x360(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4dd2
jmp 0x4d96
movq %rax, %rbx
jmp 0x4e60
movq %rax, %rbx
jmp 0x4e7c
movq %rax, %rbx
jmp 0x4e56
movq %rax, %rbx
jmp 0x4ed0
movq %rax, %rbx
movq 0x1f0(%rsp), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x4dfe
movq 0x200(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4dfe
movq %rax, %rbx
jmp 0x4e31
jmp 0x4e0d
movq %rax, %rbx
movq 0x390(%rsp), %rdi
leaq 0x3a0(%rsp), %rax
cmpq %rax, %rdi
je 0x4ed0
movq 0x3a0(%rsp), %rsi
incq %rsi
jmp 0x4e94
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x6b10
jmp 0x4e10
movq %rax, %rbx
movq 0xa199(%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 0x4e56
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x2240
leaq 0x40(%rsp), %rdi
callq 0x57c2
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x4e7c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0xf0(%rsp), %rdi
testq %rdi, %rdi
je 0x4ed0
movq 0x100(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
jmp 0x4ed0
jmp 0x4ea3
jmp 0x4ea3
jmp 0x4ea3
jmp 0x4ea3
movq %rax, %rbx
movq 0x110(%rsp), %rdi
testq %rdi, %rdi
je 0x4ec3
movq 0x120(%rsp), %rsi
subq %rdi, %rsi
callq 0x2240
leaq 0x390(%rsp), %rdi
callq 0x58fc
leaq 0x1c0(%rsp), %rdi
callq 0x5974
leaq 0x70(%rsp), %rdi
callq 0x5892
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x4f0c
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x2240
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x4f31
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x2240
movq %rbx, %rdi
callq 0x2360
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x57c2
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x4ea6
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2240
jmp 0x4ea6