// File: nataly-enne[P]pet-fera/pet_fera_cadastrar.cpp
// Function: cadastrar(std::map<int, ANFIBIO_NATIVO, std::less<int>, std::allocator<std::pair<int const, ANFIBIO_NATIVO>>>&, std::map<int, ANFIBIO_EXOTICO, std::less<int>, std::allocator<std::pair<int const, ANFIBIO_EXOTICO>>>&, std::map<int, VETERINARIO, std::less<int>, std::allocator<std::pair<int const, VETERINARIO>>>, std::map<int, TRATADOR, std::less<int>, std::allocator<std::pair<int const, TRATADOR>>>)
void cadastrar(map <int, ANFIBIO_NATIVO> &anfibios_nat, map <int, ANFIBIO_EXOTICO> &anfibios_ex, map <int, VETERINARIO> vets, map <int, TRATADOR> tratadores){
	int id, total_mudas;
	string classe, nome_cientifico, dieta, veterinario, tratador, nome_batismo, autorizacao, autorizacao_IBAMA, origem, ultima_muda, nome, id_string, tamanho_string, sexo_string, total_mudas_string;
	bool check;
	char sexo, tipo_animal, continuar, sucesso, tipo = 'a';
	double tamanho;
	unsigned int old_size;
	ofstream nativos;
	ofstream exoticos;

	do{
		cout << "Deseja cadastrar um ANFIBIO NATIVO ou ANNFIBIO EXÓTICO? \n n - NATIVO\n e - EXÓTICO" << endl;
		cin >> tipo_animal;
		if(tipo_animal != 'n' && tipo_animal != 'e'){
			cout << "Tipo invalido, tente novamente!" << endl;
			continuar = 's';
			continue;
		}
		else{
			// Recebe o ID e verifica se é valido.
			do{
				cout << "Digite o id:" << endl;
				cin >> id_string;
				if(!verifica_ID(anfibios_nat, anfibios_ex, tipo_animal, id_string, sucesso)){
					cout << "O ID deve conter apenas inteiros ou ID já cadastrado!" << endl << endl;
				}
				else{
					stringstream ss(id_string); // Converte string para int.
					ss >> id;
				}

			}while(sucesso == 'n');
			
			// Classe dos anfibios.
			classe = "Amphibia";

			// Recebe o nome e verifica se é valido.
			do{
				cout << "Digite o nome:" << endl;
				cin.ignore();
				getline(cin, nome);
				if(!verifica_nome(nome, sucesso)){
					cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
				}
				else{
					transform(nome.begin(), nome.end(), nome.begin(), ::tolower); // Converte a string nome para caracteres maiúsculos.
				}
			}while(sucesso == 'n');

	
			// Recebe o nome cientifico e verifica se é valido.
			do{
				cout << "Digite o nome científico:" << endl;
				getline(cin, nome_cientifico);
				if(!verifica_nome_cient(nome_cientifico, sucesso)){
					cout << "ERRO: só pode ser inserido letra, espaço ou traço!" << endl << endl;
				}
			}while(sucesso == 'n');

			// Recebe a dieta e verifica se não possui caracteres proibidos.
			do{
				cout << "Digite a dieta: " << endl;
				getline(cin, dieta);
				if(!verifica_dieta(dieta, sucesso)){
					cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
				}
			}while(sucesso == 'n');
			
			// Recebe o nome do veterinario e verifica se não possui caracteres proibidos.
			do{
				cout << "Digite o nome do veterinario: " << endl;
				getline(cin, veterinario);
				
				if(!verifica_nome(veterinario, sucesso)){
					cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
				}
				check = check_vet(vets, veterinario);
				if(!check){
					cout << endl;
					cout << "ERRO: Veterinario não cadastrado!" << endl;
					sucesso = 'n';
				}
			}while(sucesso == 'n');
			
			// Recebe o nome do tratador e verifica se não possui caracteres proibido, se já foi cadastrado ou se possui nivel de segurança adequado.
			do{
				cout << "Digite o nome do tratador: " << endl;
				getline(cin, tratador);
				if(!verifica_nome(tratador, sucesso)){
					cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
				}
				check = check_tratador(0, tratadores, tratador, tipo);
				if(!check){
					cout << endl;
					cout << "ERRO: Tratador não cadastrado ou não se adequa!" << endl << endl;
					sucesso = 'n';
				}
			}while(sucesso == 'n');

			
			// Recebe o nome e verifica se é valido.
			do{
				cout << "Digite o nome de batismo: " << endl;
				getline(cin, nome_batismo);
				if(!verifica_nome(nome_batismo, sucesso)){
					cout << "ERRO: só pode ser inserido letra ou espaço!" << endl << endl;
				}
				transform(nome_batismo.begin(), nome_batismo.end(), nome_batismo.begin(), ::tolower); // Converte a string nome para caracteres minusculos.
			}while(sucesso == 'n');

			// Recebe o sexo do animal e verifica se é F ou M.
			do{
				cout << "Digite o sexo do animal: " << endl;
				getline(cin, sexo_string);
				transform(sexo_string.begin(), sexo_string.end(), sexo_string.begin(), ::toupper); // Converte a string nome para caracteres maiúsculos.
				if(sexo_string != "F" && sexo_string != "M" ){
					sucesso = 'n';
					cout << "ERRO: só são permitidos F ou M!" << endl << endl;
				}
				else{
					sexo = (char)sexo_string[0];
					sucesso = 's';
				}

			}while(sucesso == 'n');
			
			// Recebe o tamanho do animal e verifica se não há caracteres proibidos.
			do{
				cout << "Digite o tamanho do animal: " << endl;
				getline(cin, tamanho_string);
				if(!verifica_tamanho(tamanho_string, sucesso)){
					cout << "ERRO: o tamanho do animal tem que ter apenas um '.' " << endl << endl;
				}
				tamanho = stod(tamanho_string);
			}while(sucesso == 'n');
			
			// Recebe o total de mudas e verifica se é um inteiro positivo.
			do{
				cout << "Insira o total de mudas:" << endl;
				getline(cin, total_mudas_string);
				if(!verifica_inteiro(total_mudas_string, sucesso)){
					cout << "ERRO: O total de mudas deve conter apenas inteiros positivos!" << endl << endl;
				}
				else{
					stringstream ss(total_mudas_string);
					ss >> total_mudas;
				}
			}while(sucesso == 'n');
			
			// Recebe a ultima muda e verifica se está no formato correto.
			do{
				cout << "Insira a data da última muda(dd-mm-aaaa)" << endl;
				getline(cin, ultima_muda);
				if(!verifica_data(ultima_muda, sucesso)){
					cout << "ERRO: A ultima muda deve ser nesse formato ex.: 12-03-2019" << endl << endl;
				}
			}while(sucesso == 'n');

			// Verifica se a autorizacao está no formato correto.
			do{
				cout << "Insira a autorizacao do IBAMA: " << endl;
				getline(cin, autorizacao_IBAMA);
				if(!verifica_autorizacao(autorizacao_IBAMA, sucesso)){
					cout << "ERRO: A autorizacao deve conter letras, numeros e '-'" << endl << endl;
				}
			}while(sucesso == 'n');
			
			
			if(tipo_animal == 'n'){
				old_size = anfibios_nat.size();
				// Verifica se foi passado uma string.
				do{
					cout << "Digite a UF de origem: " << endl;
					getline(cin, origem);
					if(!verifica_origem(origem, sucesso)){
						cout << "ERRO: Deve-se colocar apenas letras!" << endl << endl;
					}
				}while(sucesso == 'n');
				
				// Verifica se a autorizacao está no formato correto.
				do{
					cout << "Insira a autorizacao do animal: " << endl;
					getline(cin, autorizacao);
					if(!verifica_autorizacao(autorizacao, sucesso)){
						cout << "ERRO: A autorizacao deve conter letras, numeros e '-'" << endl << endl;
					}
				}while(sucesso == 'n');
				

				// Armazenando valores no map para tipo anfíbio nativo passados pelo usuário.
				anfibios_nat.insert(pair <int, ANFIBIO_NATIVO> (id, ANFIBIO_NATIVO(id, classe, nome, nome_cientifico, sexo, tamanho, dieta, veterinario, tratador, nome_batismo, total_mudas, ultima_muda, autorizacao_IBAMA, origem, autorizacao)));

				if (anfibios_nat.size() == old_size){
					cout << "Falha no cadastro do animal! Tente novamente!" << endl << endl;
					continuar = 's';
					continue;
				}
		
			}
			else{
				old_size = anfibios_ex.size();
				// Verifica se foi passado uma string.
				do{
					cout << "Digite o País de origem: " << endl;
					getline(cin, origem);
					if(!verifica_origem(origem, sucesso)){
						cout << "ERRO: Deve-se colocar apenas letras!" << endl << endl;
					}
				}while(sucesso == 'n');

				// Verifica se a autorizacao está no formato correto.
				do{
					cout << "Insira a autorizacao do animal: " << endl;
					getline(cin, autorizacao);
					if(!verifica_autorizacao(autorizacao, sucesso)){
						cout << "ERRO: A autorizacao deve conter letras, numeros e '-'" << endl;
					}
				}while(sucesso == 'n');

				// Armazenando valores no map para tipo anfíbio exótico passados pelo usuário.
				anfibios_ex.insert(pair <int, ANFIBIO_EXOTICO> (id, ANFIBIO_EXOTICO(id, classe, nome, nome_cientifico,sexo, tamanho, dieta,veterinario, tratador, nome_batismo, total_mudas, ultima_muda, autorizacao_IBAMA, origem, autorizacao)));
							
				if (anfibios_ex.size() == old_size){
					cout << "Falha no cadastro do animal! Tente novamente!" << endl;
					continuar = 's';
					continue;
				}		
			}
		}
		cout << "\nAnimal cadastrado com sucesso!" << endl << endl;
		cout << "Deseja cadastrar um novo animal? s/n" << endl;
		cin >> continuar;
	}while(continuar == 's');
					
	if(!anfibios_nat.empty()){
		nativos.open("anfibios_nat.txt");
		for(auto it = anfibios_nat.begin(); it != anfibios_nat.end(); it++){
			nativos << (*it).second;
		}
		nativos.close();
	}
	if(!anfibios_ex.empty()){
		exoticos.open("anfibios_ex.txt");
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			exoticos << (*it).second;
		}
		exoticos.close();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1750, %rsp           # imm = 0x1750
movq %rdx, -0x13d0(%rbp)
movq %rcx, -0x13c8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3300
leaq -0x68(%rbp), %rdi
callq 0x3300
leaq -0x88(%rbp), %rdi
callq 0x3300
leaq -0xa8(%rbp), %rdi
callq 0x3300
leaq -0xc8(%rbp), %rdi
callq 0x3300
leaq -0xe8(%rbp), %rdi
callq 0x3300
leaq -0x108(%rbp), %rdi
callq 0x3300
leaq -0x128(%rbp), %rdi
callq 0x3300
leaq -0x148(%rbp), %rdi
callq 0x3300
leaq -0x168(%rbp), %rdi
callq 0x3300
leaq -0x188(%rbp), %rdi
callq 0x3300
leaq -0x1a8(%rbp), %rdi
callq 0x3300
leaq -0x1c8(%rbp), %rdi
callq 0x3300
leaq -0x1e8(%rbp), %rdi
callq 0x3300
leaq -0x208(%rbp), %rdi
callq 0x3300
movb $0x61, -0x20e(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x33b0
jmp 0x1703c
leaq -0x630(%rbp), %rdi
callq 0x33b0
jmp 0x1704a
jmp 0x1704c
movq 0x39f65(%rip), %rdi     # 0x50fb8
leaq 0x2aa3f(%rip), %rsi     # 0x41a99
callq 0x3240
movq %rax, -0x13d8(%rbp)
jmp 0x17068
movq -0x13d8(%rbp), %rdi
movq 0x39f2a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1707d
movq 0x39f54(%rip), %rdi     # 0x50fd8
leaq -0x20b(%rbp), %rsi
callq 0x32e0
jmp 0x17092
movsbl -0x20b(%rbp), %eax
cmpl $0x6e, %eax
je 0x17134
movsbl -0x20b(%rbp), %eax
cmpl $0x65, %eax
je 0x17134
movq 0x39eff(%rip), %rdi     # 0x50fb8
leaq 0x2aa2d(%rip), %rsi     # 0x41aed
callq 0x3240
movq %rax, -0x13e0(%rbp)
jmp 0x170ce
movq -0x13e0(%rbp), %rdi
movq 0x39ec4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x170e3
movb $0x73, -0x20c(%rbp)
jmp 0x18ea5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x190f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x190ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x190e0
jmp 0x17136
movq 0x39e7b(%rip), %rdi     # 0x50fb8
leaq 0x2a5bb(%rip), %rsi     # 0x416ff
callq 0x3240
movq %rax, -0x13e8(%rbp)
jmp 0x17152
movq -0x13e8(%rbp), %rdi
movq 0x39e40(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17167
movq 0x39e6a(%rip), %rdi     # 0x50fd8
leaq -0x1a8(%rbp), %rsi
callq 0x32c0
jmp 0x1717c
movq -0x8(%rbp), %rax
movq %rax, -0x1400(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x13f8(%rbp)
movb -0x20b(%rbp), %al
movb %al, -0x13e9(%rbp)
leaq -0x650(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3100
jmp 0x171b3
movq -0x13f8(%rbp), %rsi
movq -0x1400(%rbp), %rdi
movb -0x13e9(%rbp), %al
movsbl %al, %edx
leaq -0x650(%rbp), %rcx
leaq -0x20d(%rbp), %r8
callq 0x3e290
movb %al, -0x1401(%rbp)
jmp 0x171e5
movb -0x1401(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1402(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x3180
movb -0x1402(%rbp), %al
testb $0x1, %al
jne 0x1720b
jmp 0x17280
movq 0x39da6(%rip), %rdi     # 0x50fb8
leaq 0x2a4f3(%rip), %rsi     # 0x4170c
callq 0x3240
movq %rax, -0x1410(%rbp)
jmp 0x17227
movq -0x1410(%rbp), %rdi
movq 0x39d6b(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1418(%rbp)
jmp 0x17243
movq -0x1418(%rbp), %rdi
movq 0x39d4f(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17258
jmp 0x172f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x3180
jmp 0x190e0
movl $0x10, %edi
movl $0x8, %esi
callq 0x13c90
movl %eax, -0x141c(%rbp)
jmp 0x17297
movl -0x141c(%rbp), %edx
leaq -0x7d8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3370
jmp 0x172b2
leaq -0x7d8(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0x3170
jmp 0x172c4
leaq -0x7d8(%rbp), %rdi
callq 0x31b0
jmp 0x172f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x7d8(%rbp), %rdi
callq 0x31b0
jmp 0x190e0
jmp 0x172f7
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17136
leaq 0x2a7ff(%rip), %rsi     # 0x41b0d
leaq -0x48(%rbp), %rdi
callq 0x32f0
jmp 0x17319
jmp 0x1731b
movq 0x39c96(%rip), %rdi     # 0x50fb8
leaq 0x2a41a(%rip), %rsi     # 0x41743
callq 0x3240
movq %rax, -0x1428(%rbp)
jmp 0x17337
movq -0x1428(%rbp), %rdi
movq 0x39c5b(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1734c
movq 0x39c85(%rip), %rdi     # 0x50fd8
callq 0x33f0
jmp 0x1735a
movq 0x39c77(%rip), %rdi     # 0x50fd8
leaq -0x188(%rbp), %rsi
callq 0x3070
jmp 0x1736f
leaq -0x188(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f480
movb %al, -0x1429(%rbp)
jmp 0x1738a
movb -0x1429(%rbp), %al
testb $0x1, %al
jne 0x173e5
jmp 0x17396
movq 0x39c1b(%rip), %rdi     # 0x50fb8
leaq 0x2a3ae(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1438(%rbp)
jmp 0x173b2
movq -0x1438(%rbp), %rdi
movq 0x39be0(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1440(%rbp)
jmp 0x173ce
movq -0x1440(%rbp), %rdi
movq 0x39bc4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x173e3
jmp 0x1745d
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1450(%rbp)
callq 0x31e0
movq -0x1450(%rbp), %rdi
movq %rax, -0x7e0(%rbp)
callq 0x3120
movq -0x1450(%rbp), %rdi
movq %rax, -0x7e8(%rbp)
callq 0x31e0
movq %rax, -0x7f0(%rbp)
movq -0x7e0(%rbp), %rdi
movq -0x7e8(%rbp), %rsi
movq -0x7f0(%rbp), %rdx
movq 0x39b87(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0x1448(%rbp)
jmp 0x1744f
movq -0x1448(%rbp), %rax
movq %rax, -0x7f8(%rbp)
jmp 0x1745f
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1731b
jmp 0x17471
movq 0x39b40(%rip), %rdi     # 0x50fb8
leaq 0x2a697(%rip), %rsi     # 0x41b16
callq 0x3240
movq %rax, -0x1458(%rbp)
jmp 0x1748d
movq -0x1458(%rbp), %rdi
movq 0x39b05(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x174a2
movq 0x39b2f(%rip), %rdi     # 0x50fd8
leaq -0x68(%rbp), %rsi
callq 0x3070
jmp 0x174b4
leaq -0x68(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f5c0
movb %al, -0x1459(%rbp)
jmp 0x174cc
movb -0x1459(%rbp), %al
testb $0x1, %al
jne 0x17527
jmp 0x174d8
movq 0x39ad9(%rip), %rdi     # 0x50fb8
leaq 0x2a64b(%rip), %rsi     # 0x41b31
callq 0x3240
movq %rax, -0x1468(%rbp)
jmp 0x174f4
movq -0x1468(%rbp), %rdi
movq 0x39a9e(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1470(%rbp)
jmp 0x17510
movq -0x1470(%rbp), %rdi
movq 0x39a82(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17525
jmp 0x17527
jmp 0x17529
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17471
jmp 0x1753b
movq 0x39a76(%rip), %rdi     # 0x50fb8
leaq 0x2a61e(%rip), %rsi     # 0x41b67
callq 0x3240
movq %rax, -0x1478(%rbp)
jmp 0x17557
movq -0x1478(%rbp), %rdi
movq 0x39a3b(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1756c
movq 0x39a65(%rip), %rdi     # 0x50fd8
leaq -0x88(%rbp), %rsi
callq 0x3070
jmp 0x17581
leaq -0x88(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40170
movb %al, -0x1479(%rbp)
jmp 0x1759c
movb -0x1479(%rbp), %al
testb $0x1, %al
jne 0x175f7
jmp 0x175a8
movq 0x39a09(%rip), %rdi     # 0x50fb8
leaq 0x2a19c(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1488(%rbp)
jmp 0x175c4
movq -0x1488(%rbp), %rdi
movq 0x399ce(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1490(%rbp)
jmp 0x175e0
movq -0x1490(%rbp), %rdi
movq 0x399b2(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x175f5
jmp 0x175f7
jmp 0x175f9
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1753b
jmp 0x1760b
movq 0x399a6(%rip), %rdi     # 0x50fb8
leaq 0x2a55f(%rip), %rsi     # 0x41b78
callq 0x3240
movq %rax, -0x1498(%rbp)
jmp 0x17627
movq -0x1498(%rbp), %rdi
movq 0x3996b(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1763c
movq 0x39995(%rip), %rdi     # 0x50fd8
leaq -0xa8(%rbp), %rsi
callq 0x3070
jmp 0x17651
leaq -0xa8(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f480
movb %al, -0x1499(%rbp)
jmp 0x1766c
movb -0x1499(%rbp), %al
testb $0x1, %al
jne 0x176c7
jmp 0x17678
movq 0x39939(%rip), %rdi     # 0x50fb8
leaq 0x2a0cc(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x14a8(%rbp)
jmp 0x17694
movq -0x14a8(%rbp), %rdi
movq 0x398fe(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x14b0(%rbp)
jmp 0x176b0
movq -0x14b0(%rbp), %rdi
movq 0x398e2(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x176c5
jmp 0x176c7
leaq -0x818(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x176dc
movq -0x13d0(%rbp), %rdi
leaq -0x818(%rbp), %rsi
callq 0x3d7a0
movb %al, -0x14b1(%rbp)
jmp 0x176f7
movb -0x14b1(%rbp), %al
andb $0x1, %al
movb %al, -0x209(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x3180
testb $0x1, -0x209(%rbp)
jne 0x1778c
movq 0x39897(%rip), %rdi     # 0x50fb8
movq 0x39878(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1772f
movq 0x39882(%rip), %rdi     # 0x50fb8
leaq 0x2a45a(%rip), %rsi     # 0x41b97
callq 0x3240
movq %rax, -0x14c0(%rbp)
jmp 0x1774b
movq -0x14c0(%rbp), %rdi
movq 0x39847(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17760
movb $0x6e, -0x20d(%rbp)
jmp 0x1778c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x3180
jmp 0x190e0
jmp 0x1778e
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1760b
jmp 0x177a0
movq 0x39811(%rip), %rdi     # 0x50fb8
leaq 0x2a40c(%rip), %rsi     # 0x41bba
callq 0x3240
movq %rax, -0x14c8(%rbp)
jmp 0x177bc
movq -0x14c8(%rbp), %rdi
movq 0x397d6(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x177d1
movq 0x39800(%rip), %rdi     # 0x50fd8
leaq -0xc8(%rbp), %rsi
callq 0x3070
jmp 0x177e6
leaq -0xc8(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f480
movb %al, -0x14c9(%rbp)
jmp 0x17801
movb -0x14c9(%rbp), %al
testb $0x1, %al
jne 0x1785c
jmp 0x1780d
movq 0x397a4(%rip), %rdi     # 0x50fb8
leaq 0x29f37(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x14d8(%rbp)
jmp 0x17829
movq -0x14d8(%rbp), %rdi
movq 0x39769(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x14e0(%rbp)
jmp 0x17845
movq -0x14e0(%rbp), %rdi
movq 0x3974d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1785a
jmp 0x1785c
leaq -0x838(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x17871
movq -0x13c8(%rbp), %rsi
movsbl -0x20e(%rbp), %ecx
xorl %edi, %edi
leaq -0x838(%rbp), %rdx
callq 0x3d850
movb %al, -0x14e1(%rbp)
jmp 0x17895
movb -0x14e1(%rbp), %al
andb $0x1, %al
movb %al, -0x209(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x3180
testb $0x1, -0x209(%rbp)
jne 0x1794a
movq 0x396f5(%rip), %rdi     # 0x50fb8
movq 0x396d6(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x178d1
movq 0x396e0(%rip), %rdi     # 0x50fb8
leaq 0x2a2f7(%rip), %rsi     # 0x41bd6
callq 0x3240
movq %rax, -0x14f0(%rbp)
jmp 0x178ed
movq -0x14f0(%rbp), %rdi
movq 0x396a5(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x14f8(%rbp)
jmp 0x17909
movq -0x14f8(%rbp), %rdi
movq 0x39689(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1791e
movb $0x6e, -0x20d(%rbp)
jmp 0x1794a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x3180
jmp 0x190e0
jmp 0x1794c
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x177a0
jmp 0x1795e
movq 0x39653(%rip), %rdi     # 0x50fb8
leaq 0x2a29c(%rip), %rsi     # 0x41c08
callq 0x3240
movq %rax, -0x1500(%rbp)
jmp 0x1797a
movq -0x1500(%rbp), %rdi
movq 0x39618(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1798f
movq 0x39642(%rip), %rdi     # 0x50fd8
leaq -0xe8(%rbp), %rsi
callq 0x3070
jmp 0x179a4
leaq -0xe8(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f480
movb %al, -0x1501(%rbp)
jmp 0x179bf
movb -0x1501(%rbp), %al
testb $0x1, %al
jne 0x17a1a
jmp 0x179cb
movq 0x395e6(%rip), %rdi     # 0x50fb8
leaq 0x29d79(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1510(%rbp)
jmp 0x179e7
movq -0x1510(%rbp), %rdi
movq 0x395ab(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1518(%rbp)
jmp 0x17a03
movq -0x1518(%rbp), %rdi
movq 0x3958f(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17a18
jmp 0x17a1a
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x1528(%rbp)
callq 0x31e0
movq -0x1528(%rbp), %rdi
movq %rax, -0x840(%rbp)
callq 0x3120
movq -0x1528(%rbp), %rdi
movq %rax, -0x848(%rbp)
callq 0x31e0
movq %rax, -0x850(%rbp)
movq -0x840(%rbp), %rdi
movq -0x848(%rbp), %rsi
movq -0x850(%rbp), %rdx
movq 0x39552(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0x1520(%rbp)
jmp 0x17a84
movq -0x1520(%rbp), %rax
movq %rax, -0x858(%rbp)
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1795e
jmp 0x17aa4
movq 0x3950d(%rip), %rdi     # 0x50fb8
leaq 0x2a171(%rip), %rsi     # 0x41c23
callq 0x3240
movq %rax, -0x1530(%rbp)
jmp 0x17ac0
movq -0x1530(%rbp), %rdi
movq 0x394d2(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17ad5
movq 0x394fc(%rip), %rdi     # 0x50fd8
leaq -0x1e8(%rbp), %rsi
callq 0x3070
jmp 0x17aea
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x1540(%rbp)
callq 0x31e0
movq -0x1540(%rbp), %rdi
movq %rax, -0x860(%rbp)
callq 0x3120
movq -0x1540(%rbp), %rdi
movq %rax, -0x868(%rbp)
callq 0x31e0
movq %rax, -0x870(%rbp)
movq -0x860(%rbp), %rdi
movq -0x868(%rbp), %rsi
movq -0x870(%rbp), %rdx
movq 0x3949a(%rip), %rcx     # 0x50fe0
callq 0x1f5a0
movq %rax, -0x1538(%rbp)
jmp 0x17b54
movq -0x1538(%rbp), %rax
movq %rax, -0x878(%rbp)
leaq 0x2a0d4(%rip), %rsi     # 0x41c3d
leaq -0x1e8(%rbp), %rdi
callq 0x13c60
movb %al, -0x1541(%rbp)
jmp 0x17b7d
movb -0x1541(%rbp), %al
testb $0x1, %al
jne 0x17b89
jmp 0x17c06
leaq 0x2a0af(%rip), %rsi     # 0x41c3f
leaq -0x1e8(%rbp), %rdi
callq 0x13c60
movb %al, -0x1542(%rbp)
jmp 0x17ba4
movb -0x1542(%rbp), %al
testb $0x1, %al
jne 0x17bb0
jmp 0x17c06
movb $0x6e, -0x20d(%rbp)
movq 0x393fa(%rip), %rdi     # 0x50fb8
leaq 0x2a07c(%rip), %rsi     # 0x41c41
callq 0x3240
movq %rax, -0x1550(%rbp)
jmp 0x17bd3
movq -0x1550(%rbp), %rdi
movq 0x393bf(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1558(%rbp)
jmp 0x17bef
movq -0x1558(%rbp), %rdi
movq 0x393a3(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17c04
jmp 0x17c35
xorl %eax, %eax
movl %eax, %esi
leaq -0x1e8(%rbp), %rdi
callq 0x3430
movq %rax, -0x1560(%rbp)
jmp 0x17c1f
movq -0x1560(%rbp), %rax
movb (%rax), %al
movb %al, -0x20a(%rbp)
movb $0x73, -0x20d(%rbp)
jmp 0x17c37
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17aa4
jmp 0x17c49
movq 0x39368(%rip), %rdi     # 0x50fb8
leaq 0x2a00c(%rip), %rsi     # 0x41c63
callq 0x3240
movq %rax, -0x1568(%rbp)
jmp 0x17c65
movq -0x1568(%rbp), %rdi
movq 0x3932d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17c7a
movq 0x39357(%rip), %rdi     # 0x50fd8
leaq -0x1c8(%rbp), %rsi
callq 0x3070
jmp 0x17c8f
leaq -0x898(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x3100
jmp 0x17ca4
leaq -0x898(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40310
movb %al, -0x1569(%rbp)
jmp 0x17cbf
movb -0x1569(%rbp), %al
xorb $-0x1, %al
movb %al, -0x156a(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x3180
movb -0x156a(%rbp), %al
testb $0x1, %al
jne 0x17ce5
jmp 0x17d57
movq 0x392cc(%rip), %rdi     # 0x50fb8
leaq 0x29f8d(%rip), %rsi     # 0x41c80
callq 0x3240
movq %rax, -0x1578(%rbp)
jmp 0x17d01
movq -0x1578(%rbp), %rdi
movq 0x39291(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1580(%rbp)
jmp 0x17d1d
movq -0x1580(%rbp), %rdi
movq 0x39275(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17d32
jmp 0x17d57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x898(%rbp), %rdi
callq 0x3180
jmp 0x190e0
xorl %eax, %eax
movl %eax, %esi
leaq -0x1c8(%rbp), %rdi
callq 0x1f9a0
movsd %xmm0, -0x1588(%rbp)
jmp 0x17d71
movsd -0x1588(%rbp), %xmm0
movsd %xmm0, -0x218(%rbp)
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17c49
jmp 0x17d93
movq 0x3921e(%rip), %rdi     # 0x50fb8
leaq 0x29f14(%rip), %rsi     # 0x41cb5
callq 0x3240
movq %rax, -0x1590(%rbp)
jmp 0x17daf
movq -0x1590(%rbp), %rdi
movq 0x391e3(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17dc4
movq 0x3920d(%rip), %rdi     # 0x50fd8
leaq -0x208(%rbp), %rsi
callq 0x3070
jmp 0x17dd9
leaq -0x8b8(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3100
jmp 0x17dee
leaq -0x8b8(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x3f960
movb %al, -0x1591(%rbp)
jmp 0x17e09
movb -0x1591(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1592(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0x3180
movb -0x1592(%rbp), %al
testb $0x1, %al
jne 0x17e2f
jmp 0x17ea4
movq 0x39182(%rip), %rdi     # 0x50fb8
leaq 0x29e91(%rip), %rsi     # 0x41cce
callq 0x3240
movq %rax, -0x15a0(%rbp)
jmp 0x17e4b
movq -0x15a0(%rbp), %rdi
movq 0x39147(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x15a8(%rbp)
jmp 0x17e67
movq -0x15a8(%rbp), %rdi
movq 0x3912b(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17e7c
jmp 0x17f19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0x3180
jmp 0x190e0
movl $0x10, %edi
movl $0x8, %esi
callq 0x13c90
movl %eax, -0x15ac(%rbp)
jmp 0x17ebb
movl -0x15ac(%rbp), %edx
leaq -0xa40(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0x3370
jmp 0x17ed6
leaq -0xa40(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x3170
jmp 0x17ee8
leaq -0xa40(%rbp), %rdi
callq 0x31b0
jmp 0x17f19
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0xa40(%rbp), %rdi
callq 0x31b0
jmp 0x190e0
jmp 0x17f1b
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17d93
jmp 0x17f2d
movq 0x39084(%rip), %rdi     # 0x50fb8
leaq 0x29dd1(%rip), %rsi     # 0x41d0c
callq 0x3240
movq %rax, -0x15b8(%rbp)
jmp 0x17f49
movq -0x15b8(%rbp), %rdi
movq 0x39049(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x17f5e
movq 0x39073(%rip), %rdi     # 0x50fd8
leaq -0x168(%rbp), %rsi
callq 0x3070
jmp 0x17f73
leaq -0xa60(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3100
jmp 0x17f88
leaq -0xa60(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40430
movb %al, -0x15b9(%rbp)
jmp 0x17fa3
movb -0x15b9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x15ba(%rbp)
leaq -0xa60(%rbp), %rdi
callq 0x3180
movb -0x15ba(%rbp), %al
testb $0x1, %al
jne 0x17fc9
jmp 0x1803b
movq 0x38fe8(%rip), %rdi     # 0x50fb8
leaq 0x29d5f(%rip), %rsi     # 0x41d36
callq 0x3240
movq %rax, -0x15c8(%rbp)
jmp 0x17fe5
movq -0x15c8(%rbp), %rdi
movq 0x38fad(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x15d0(%rbp)
jmp 0x18001
movq -0x15d0(%rbp), %rdi
movq 0x38f91(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18016
jmp 0x1803b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0xa60(%rbp), %rdi
callq 0x3180
jmp 0x190e0
jmp 0x1803d
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x17f2d
jmp 0x1804f
movq 0x38f62(%rip), %rdi     # 0x50fb8
leaq 0x29d14(%rip), %rsi     # 0x41d71
callq 0x3240
movq %rax, -0x15d8(%rbp)
jmp 0x1806b
movq -0x15d8(%rbp), %rdi
movq 0x38f27(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18080
movq 0x38f51(%rip), %rdi     # 0x50fd8
leaq -0x128(%rbp), %rsi
callq 0x3070
jmp 0x18095
leaq -0x128(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40550
movb %al, -0x15d9(%rbp)
jmp 0x180b0
movb -0x15d9(%rbp), %al
testb $0x1, %al
jne 0x1810b
jmp 0x180bc
movq 0x38ef5(%rip), %rdi     # 0x50fb8
leaq 0x29cc7(%rip), %rsi     # 0x41d91
callq 0x3240
movq %rax, -0x15e8(%rbp)
jmp 0x180d8
movq -0x15e8(%rbp), %rdi
movq 0x38eba(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x15f0(%rbp)
jmp 0x180f4
movq -0x15f0(%rbp), %rdi
movq 0x38e9e(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18109
jmp 0x1810b
jmp 0x1810d
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1804f
movsbl -0x20b(%rbp), %eax
cmpl $0x6e, %eax
jne 0x187bb
movq -0x8(%rbp), %rdi
callq 0x1f9e0
movl %eax, -0x21c(%rbp)
movq 0x38e75(%rip), %rdi     # 0x50fb8
leaq 0x29c7d(%rip), %rsi     # 0x41dc7
callq 0x3240
movq %rax, -0x15f8(%rbp)
jmp 0x18158
movq -0x15f8(%rbp), %rdi
movq 0x38e3a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1816d
movq 0x38e64(%rip), %rdi     # 0x50fd8
leaq -0x148(%rbp), %rsi
callq 0x3070
jmp 0x18182
leaq -0x148(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40700
movb %al, -0x15f9(%rbp)
jmp 0x1819d
movb -0x15f9(%rbp), %al
testb $0x1, %al
jne 0x181f8
jmp 0x181a9
movq 0x38e08(%rip), %rdi     # 0x50fb8
leaq 0x29c28(%rip), %rsi     # 0x41ddf
callq 0x3240
movq %rax, -0x1608(%rbp)
jmp 0x181c5
movq -0x1608(%rbp), %rdi
movq 0x38dcd(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1610(%rbp)
jmp 0x181e1
movq -0x1610(%rbp), %rdi
movq 0x38db1(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x181f6
jmp 0x181f8
jmp 0x181fa
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1813c
jmp 0x1820c
movq 0x38da5(%rip), %rdi     # 0x50fb8
leaq 0x29bea(%rip), %rsi     # 0x41e04
callq 0x3240
movq %rax, -0x1618(%rbp)
jmp 0x18228
movq -0x1618(%rbp), %rdi
movq 0x38d6a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1823d
movq 0x38d94(%rip), %rdi     # 0x50fd8
leaq -0x108(%rbp), %rsi
callq 0x3070
jmp 0x18252
leaq -0x108(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40550
movb %al, -0x1619(%rbp)
jmp 0x1826d
movb -0x1619(%rbp), %al
testb $0x1, %al
jne 0x182c8
jmp 0x18279
movq 0x38d38(%rip), %rdi     # 0x50fb8
leaq 0x29b0a(%rip), %rsi     # 0x41d91
callq 0x3240
movq %rax, -0x1628(%rbp)
jmp 0x18295
movq -0x1628(%rbp), %rdi
movq 0x38cfd(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1630(%rbp)
jmp 0x182b1
movq -0x1630(%rbp), %rdi
movq 0x38ce1(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x182c6
jmp 0x182c8
jmp 0x182ca
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1820c
movq -0x8(%rbp), %rax
movq %rax, -0x1640(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x1634(%rbp)
leaq -0xda8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3100
jmp 0x18300
leaq -0xdc8(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x3100
jmp 0x18315
leaq -0xde8(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3100
jmp 0x18327
movb -0x20a(%rbp), %al
movb %al, -0x1649(%rbp)
movsd -0x218(%rbp), %xmm0
movsd %xmm0, -0x1648(%rbp)
leaq -0xe08(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3100
jmp 0x18358
leaq -0xe28(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x1836d
leaq -0xe48(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x18382
leaq -0xe68(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3100
jmp 0x18397
movl -0x28(%rbp), %eax
movl %eax, -0x1650(%rbp)
leaq -0xe88(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3100
jmp 0x183b5
leaq -0xea8(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x3100
jmp 0x183ca
leaq -0xec8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x3100
jmp 0x183df
leaq -0xee8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x3100
jmp 0x183f4
movsd -0x1648(%rbp), %xmm0
movl -0x1634(%rbp), %esi
movb -0x1649(%rbp), %al
movl -0x1650(%rbp), %edx
movq %rsp, %rcx
movq %rcx, -0x1658(%rbp)
leaq -0xee8(%rbp), %rdi
movq %rdi, 0x40(%rcx)
leaq -0xec8(%rbp), %rdi
movq %rdi, 0x38(%rcx)
leaq -0xea8(%rbp), %rdi
movq %rdi, 0x30(%rcx)
leaq -0xe88(%rbp), %rdi
movq %rdi, 0x28(%rcx)
movl %edx, 0x20(%rcx)
leaq -0xe68(%rbp), %rdx
movq %rdx, 0x18(%rcx)
leaq -0xe48(%rbp), %rdx
movq %rdx, 0x10(%rcx)
leaq -0xe28(%rbp), %rdx
movq %rdx, 0x8(%rcx)
leaq -0xe08(%rbp), %rdx
movq %rdx, (%rcx)
movsbl %al, %r9d
leaq -0xd88(%rbp), %rdi
leaq -0xda8(%rbp), %rdx
leaq -0xdc8(%rbp), %rcx
leaq -0xde8(%rbp), %r8
callq 0x8c70
jmp 0x18499
leaq -0xbf8(%rbp), %rdi
leaq -0x24(%rbp), %rsi
leaq -0xd88(%rbp), %rdx
callq 0x1fa40
jmp 0x184b2
movq -0x1640(%rbp), %rdi
leaq -0xbf8(%rbp), %rsi
callq 0x1fa00
movb %dl, -0x1661(%rbp)
movq %rax, -0x1660(%rbp)
jmp 0x184d4
movb -0x1661(%rbp), %al
movq -0x1660(%rbp), %rcx
movq %rcx, -0xef8(%rbp)
movb %al, -0xef0(%rbp)
leaq -0xbf8(%rbp), %rdi
callq 0x1fa80
leaq -0xd88(%rbp), %rdi
callq 0x9160
leaq -0xee8(%rbp), %rdi
callq 0x3180
leaq -0xec8(%rbp), %rdi
callq 0x3180
leaq -0xea8(%rbp), %rdi
callq 0x3180
leaq -0xe88(%rbp), %rdi
callq 0x3180
leaq -0xe68(%rbp), %rdi
callq 0x3180
leaq -0xe48(%rbp), %rdi
callq 0x3180
leaq -0xe28(%rbp), %rdi
callq 0x3180
leaq -0xe08(%rbp), %rdi
callq 0x3180
leaq -0xde8(%rbp), %rdi
callq 0x3180
leaq -0xdc8(%rbp), %rdi
callq 0x3180
leaq -0xda8(%rbp), %rdi
callq 0x3180
movq -0x8(%rbp), %rdi
callq 0x1f9e0
movl -0x21c(%rbp), %ecx
cmpq %rcx, %rax
jne 0x187b6
movq 0x38a0f(%rip), %rdi     # 0x50fb8
leaq 0x29875(%rip), %rsi     # 0x41e25
callq 0x3240
movq %rax, -0x1670(%rbp)
jmp 0x185be
movq -0x1670(%rbp), %rdi
movq 0x389d4(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1678(%rbp)
jmp 0x185da
movq -0x1678(%rbp), %rdi
movq 0x389b8(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x185ef
movb $0x73, -0x20c(%rbp)
jmp 0x18ea5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x187a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18799
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x1878d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18781
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18775
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18769
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x1875d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18751
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18745
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18739
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x1872d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18721
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0xbf8(%rbp), %rdi
callq 0x1fa80
leaq -0xd88(%rbp), %rdi
callq 0x9160
leaq -0xee8(%rbp), %rdi
callq 0x3180
leaq -0xec8(%rbp), %rdi
callq 0x3180
leaq -0xea8(%rbp), %rdi
callq 0x3180
leaq -0xe88(%rbp), %rdi
callq 0x3180
leaq -0xe68(%rbp), %rdi
callq 0x3180
leaq -0xe48(%rbp), %rdi
callq 0x3180
leaq -0xe28(%rbp), %rdi
callq 0x3180
leaq -0xe08(%rbp), %rdi
callq 0x3180
leaq -0xde8(%rbp), %rdi
callq 0x3180
leaq -0xdc8(%rbp), %rdi
callq 0x3180
leaq -0xda8(%rbp), %rdi
callq 0x3180
jmp 0x190e0
jmp 0x18e0e
movq -0x10(%rbp), %rdi
callq 0x1faa0
movl %eax, -0x21c(%rbp)
movq 0x387e7(%rip), %rdi     # 0x50fb8
leaq 0x2967b(%rip), %rsi     # 0x41e53
callq 0x3240
movq %rax, -0x1680(%rbp)
jmp 0x187e6
movq -0x1680(%rbp), %rdi
movq 0x387ac(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x187fb
movq 0x387d6(%rip), %rdi     # 0x50fd8
leaq -0x148(%rbp), %rsi
callq 0x3070
jmp 0x18810
leaq -0x148(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40700
movb %al, -0x1681(%rbp)
jmp 0x1882b
movb -0x1681(%rbp), %al
testb $0x1, %al
jne 0x18886
jmp 0x18837
movq 0x3877a(%rip), %rdi     # 0x50fb8
leaq 0x2959a(%rip), %rsi     # 0x41ddf
callq 0x3240
movq %rax, -0x1690(%rbp)
jmp 0x18853
movq -0x1690(%rbp), %rdi
movq 0x3873f(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1698(%rbp)
jmp 0x1886f
movq -0x1698(%rbp), %rdi
movq 0x38723(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18884
jmp 0x18886
jmp 0x18888
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x187ca
jmp 0x1889a
movq 0x38717(%rip), %rdi     # 0x50fb8
leaq 0x2955c(%rip), %rsi     # 0x41e04
callq 0x3240
movq %rax, -0x16a0(%rbp)
jmp 0x188b6
movq -0x16a0(%rbp), %rdi
movq 0x386dc(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x188cb
movq 0x38706(%rip), %rdi     # 0x50fd8
leaq -0x108(%rbp), %rsi
callq 0x3070
jmp 0x188e0
leaq -0x108(%rbp), %rdi
leaq -0x20d(%rbp), %rsi
callq 0x40550
movb %al, -0x16a1(%rbp)
jmp 0x188fb
movb -0x16a1(%rbp), %al
testb $0x1, %al
jne 0x1893a
jmp 0x18907
movq 0x386aa(%rip), %rdi     # 0x50fb8
leaq 0x2947c(%rip), %rsi     # 0x41d91
callq 0x3240
movq %rax, -0x16b0(%rbp)
jmp 0x18923
movq -0x16b0(%rbp), %rdi
movq 0x3866f(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18938
jmp 0x1893a
jmp 0x1893c
movsbl -0x20d(%rbp), %eax
cmpl $0x6e, %eax
je 0x1889a
movq -0x10(%rbp), %rax
movq %rax, -0x16c0(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x16b4(%rbp)
leaq -0x1240(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3100
jmp 0x18972
leaq -0x1260(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x3100
jmp 0x18987
leaq -0x1280(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3100
jmp 0x18999
movb -0x20a(%rbp), %al
movb %al, -0x16c9(%rbp)
movsd -0x218(%rbp), %xmm0
movsd %xmm0, -0x16c8(%rbp)
leaq -0x12a0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3100
jmp 0x189ca
leaq -0x12c0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x189df
leaq -0x12e0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x189f4
leaq -0x1300(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3100
jmp 0x18a09
movl -0x28(%rbp), %eax
movl %eax, -0x16d0(%rbp)
leaq -0x1320(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3100
jmp 0x18a27
leaq -0x1340(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x3100
jmp 0x18a3c
leaq -0x1360(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x3100
jmp 0x18a51
leaq -0x1380(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x3100
jmp 0x18a66
movsd -0x16c8(%rbp), %xmm0
movl -0x16b4(%rbp), %esi
movb -0x16c9(%rbp), %al
movl -0x16d0(%rbp), %edx
movq %rsp, %rcx
movq %rcx, -0x16d8(%rbp)
leaq -0x1380(%rbp), %rdi
movq %rdi, 0x40(%rcx)
leaq -0x1360(%rbp), %rdi
movq %rdi, 0x38(%rcx)
leaq -0x1340(%rbp), %rdi
movq %rdi, 0x30(%rcx)
leaq -0x1320(%rbp), %rdi
movq %rdi, 0x28(%rcx)
movl %edx, 0x20(%rcx)
leaq -0x1300(%rbp), %rdx
movq %rdx, 0x18(%rcx)
leaq -0x12e0(%rbp), %rdx
movq %rdx, 0x10(%rcx)
leaq -0x12c0(%rbp), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x12a0(%rbp), %rdx
movq %rdx, (%rcx)
movsbl %al, %r9d
leaq -0x1220(%rbp), %rdi
leaq -0x1240(%rbp), %rdx
leaq -0x1260(%rbp), %rcx
leaq -0x1280(%rbp), %r8
callq 0x91d0
jmp 0x18b0b
leaq -0x1090(%rbp), %rdi
leaq -0x24(%rbp), %rsi
leaq -0x1220(%rbp), %rdx
callq 0x1fb00
jmp 0x18b24
movq -0x16c0(%rbp), %rdi
leaq -0x1090(%rbp), %rsi
callq 0x1fac0
movb %dl, -0x16e1(%rbp)
movq %rax, -0x16e0(%rbp)
jmp 0x18b46
movb -0x16e1(%rbp), %al
movq -0x16e0(%rbp), %rcx
movq %rcx, -0x1390(%rbp)
movb %al, -0x1388(%rbp)
leaq -0x1090(%rbp), %rdi
callq 0x1fb40
leaq -0x1220(%rbp), %rdi
callq 0x9ad0
leaq -0x1380(%rbp), %rdi
callq 0x3180
leaq -0x1360(%rbp), %rdi
callq 0x3180
leaq -0x1340(%rbp), %rdi
callq 0x3180
leaq -0x1320(%rbp), %rdi
callq 0x3180
leaq -0x1300(%rbp), %rdi
callq 0x3180
leaq -0x12e0(%rbp), %rdi
callq 0x3180
leaq -0x12c0(%rbp), %rdi
callq 0x3180
leaq -0x12a0(%rbp), %rdi
callq 0x3180
leaq -0x1280(%rbp), %rdi
callq 0x3180
leaq -0x1260(%rbp), %rdi
callq 0x3180
leaq -0x1240(%rbp), %rdi
callq 0x3180
movq -0x10(%rbp), %rdi
callq 0x1faa0
movl -0x21c(%rbp), %ecx
cmpq %rcx, %rax
jne 0x18e0c
movq 0x3839d(%rip), %rdi     # 0x50fb8
leaq 0x29203(%rip), %rsi     # 0x41e25
callq 0x3240
movq %rax, -0x16f0(%rbp)
jmp 0x18c30
movq -0x16f0(%rbp), %rdi
movq 0x38362(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18c45
movb $0x73, -0x20c(%rbp)
jmp 0x18ea5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18dfb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18def
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18de3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18dd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18dcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18dbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18db3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18da7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18d9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18d8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18d83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
jmp 0x18d77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x428(%rbp)
movl %eax, -0x42c(%rbp)
leaq -0x1090(%rbp), %rdi
callq 0x1fb40
leaq -0x1220(%rbp), %rdi
callq 0x9ad0
leaq -0x1380(%rbp), %rdi
callq 0x3180
leaq -0x1360(%rbp), %rdi
callq 0x3180
leaq -0x1340(%rbp), %rdi
callq 0x3180
leaq -0x1320(%rbp), %rdi
callq 0x3180
leaq -0x1300(%rbp), %rdi
callq 0x3180
leaq -0x12e0(%rbp), %rdi
callq 0x3180
leaq -0x12c0(%rbp), %rdi
callq 0x3180
leaq -0x12a0(%rbp), %rdi
callq 0x3180
leaq -0x1280(%rbp), %rdi
callq 0x3180
leaq -0x1260(%rbp), %rdi
callq 0x3180
leaq -0x1240(%rbp), %rdi
callq 0x3180
jmp 0x190e0
jmp 0x18e0e
jmp 0x18e10
movq 0x381a1(%rip), %rdi     # 0x50fb8
leaq 0x29050(%rip), %rsi     # 0x41e6e
callq 0x3240
movq %rax, -0x16f8(%rbp)
jmp 0x18e2c
movq -0x16f8(%rbp), %rdi
movq 0x38166(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1700(%rbp)
jmp 0x18e48
movq -0x1700(%rbp), %rdi
movq 0x3814a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18e5d
movq 0x38154(%rip), %rdi     # 0x50fb8
leaq 0x29023(%rip), %rsi     # 0x41e8e
callq 0x3240
movq %rax, -0x1708(%rbp)
jmp 0x18e79
movq -0x1708(%rbp), %rdi
movq 0x38119(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x18e8e
movq 0x38143(%rip), %rdi     # 0x50fd8
leaq -0x20c(%rbp), %rsi
callq 0x32e0
jmp 0x18ea3
jmp 0x18ea5
movsbl -0x20c(%rbp), %eax
cmpl $0x73, %eax
je 0x1704c
movq -0x8(%rbp), %rdi
callq 0x1fb60
testb $0x1, %al
jne 0x18f63
leaq 0x28fe6(%rip), %rsi     # 0x41eb3
leaq -0x420(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
jmp 0x18ee0
movq -0x8(%rbp), %rdi
callq 0x13cb0
movq %rax, -0x1398(%rbp)
movq -0x8(%rbp), %rdi
callq 0x13d10
movq %rax, -0x13a0(%rbp)
leaq -0x1398(%rbp), %rdi
leaq -0x13a0(%rbp), %rsi
callq 0x13ce0
testb $0x1, %al
jne 0x18f19
jmp 0x18f53
leaq -0x1398(%rbp), %rdi
callq 0x1fb80
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x420(%rbp), %rdi
callq 0xc850
jmp 0x18f3a
jmp 0x18f3c
leaq -0x1398(%rbp), %rdi
xorl %esi, %esi
callq 0x13d70
movq %rax, -0x13a8(%rbp)
jmp 0x18ef0
leaq -0x420(%rbp), %rdi
callq 0x3310
jmp 0x18f61
jmp 0x18f63
movq -0x10(%rbp), %rdi
callq 0x1fba0
testb $0x1, %al
jne 0x19011
leaq 0x28f49(%rip), %rsi     # 0x41ec4
leaq -0x630(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
jmp 0x18f8e
movq -0x10(%rbp), %rdi
callq 0x13db0
movq %rax, -0x13b0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x13e10
movq %rax, -0x13b8(%rbp)
leaq -0x13b0(%rbp), %rdi
leaq -0x13b8(%rbp), %rsi
callq 0x13de0
testb $0x1, %al
jne 0x18fc7
jmp 0x19001
leaq -0x13b0(%rbp), %rdi
callq 0x1fbc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x630(%rbp), %rdi
callq 0xce50
jmp 0x18fe8
jmp 0x18fea
leaq -0x13b0(%rbp), %rdi
xorl %esi, %esi
callq 0x13e70
movq %rax, -0x13c0(%rbp)
jmp 0x18f9e
leaq -0x630(%rbp), %rdi
callq 0x3310
jmp 0x1900f
jmp 0x19011
leaq -0x630(%rbp), %rdi
callq 0x3340
leaq -0x420(%rbp), %rdi
callq 0x3340
leaq -0x208(%rbp), %rdi
callq 0x3180
leaq -0x1e8(%rbp), %rdi
callq 0x3180
leaq -0x1c8(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x3180
leaq -0x188(%rbp), %rdi
callq 0x3180
leaq -0x168(%rbp), %rdi
callq 0x3180
leaq -0x148(%rbp), %rdi
callq 0x3180
leaq -0x128(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x3180
leaq -0xc8(%rbp), %rdi
callq 0x3180
leaq -0xa8(%rbp), %rdi
callq 0x3180
leaq -0x88(%rbp), %rdi
callq 0x3180
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
addq $0x1750, %rsp           # imm = 0x1750
popq %rbp
retq
leaq -0x630(%rbp), %rdi
callq 0x3340
leaq -0x420(%rbp), %rdi
callq 0x3340
leaq -0x208(%rbp), %rdi
callq 0x3180
leaq -0x1e8(%rbp), %rdi
callq 0x3180
leaq -0x1c8(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x3180
leaq -0x188(%rbp), %rdi
callq 0x3180
leaq -0x168(%rbp), %rdi
callq 0x3180
leaq -0x148(%rbp), %rdi
callq 0x3180
leaq -0x128(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x3180
leaq -0xc8(%rbp), %rdi
callq 0x3180
leaq -0xa8(%rbp), %rdi
callq 0x3180
leaq -0x88(%rbp), %rdi
callq 0x3180
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
movq -0x428(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)