// File: /workspace/github_cpp_makefile_star2_O2/nataly-enne[P]pet-fera/pet_fera_editar.cpp
// Function: editar(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 editar(map <int, ANFIBIO_NATIVO> &anfibios_nat, map <int, ANFIBIO_EXOTICO> &anfibios_ex, map <int, VETERINARIO> vets, map <int, TRATADOR> tratadores){
	char opcao, resp, op, sucesso, sexo, tipo = 'a';
	int total_mudas, id_buscado;;
	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;
	double tamanho;
	ofstream nativos;
	ofstream exoticos;
			
	do{
		cout << "É nativo ou exotico? \n n - NATIVO\n e - EXOTICO" << endl;
		cin >> opcao;
		if(opcao != 'n' && opcao != 'e'){
			cout << "Opção inválida!! Tente novamente!\n" << endl;
			cout << endl;
			cout << "Deseja sair? s/n" << endl;
			cin >> resp;
			if(resp == 's'){
				break;
			}	
		}
		else{ 
			if(opcao == 'n'){
				cout << "Insira o ID buscado: " << endl;
				cin >> id_buscado;

				auto result = anfibios_nat.find(id_buscado);
			
				if(result != anfibios_nat.end()){
					cout << "ID existe!" << endl;

					//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 minusculos.
						}
					}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 maiúsculos.
					}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 caracteres pproibidos.
					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');


					//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');

					(*result).second = ANFIBIO_NATIVO(id_buscado, classe, nome, nome_cientifico, sexo, tamanho, dieta, veterinario, tratador, nome_batismo, total_mudas, ultima_muda, autorizacao_IBAMA, origem, autorizacao);
					sucesso = 's';
				}
				else{
					cout << "Animal não cadastrado!!" << endl;
					sucesso = 'n';
				}
				if(sucesso == 's'){
					nativos.open("anfibios_nat.txt");
					for(auto it = anfibios_nat.begin(); it != anfibios_nat.end(); it++){
						nativos << (*it).second;
					}
					nativos.close();
				}

				cout << "\nDeseja editar outro? s/n" << endl;
				cin >> op;
				
			}
			else{
				cout << "Insira o ID buscado: " << endl;
				cin >> id_buscado;

				auto result = anfibios_ex.find(id_buscado);
			
				if(result != anfibios_ex.end()){
					cout << "ID existe!" << endl;

					//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 minusculos.
						}
					}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 maiúsculos.
					}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 caracteres pproibidos.
					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');


					//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 << endl;
						}
					}while(sucesso == 'n');

					(*result).second = ANFIBIO_EXOTICO(id_buscado, classe,nome, nome_cientifico, sexo, tamanho, dieta, veterinario, tratador, nome_batismo, total_mudas, ultima_muda, autorizacao_IBAMA, origem, autorizacao);
					sucesso = 's';
				}
				else{
					cout << "Animal não cadastrado!!" << endl;
					sucesso = 'n';
				}
				if(sucesso == 's'){
					exoticos.open("anfibios_ex.txt");
					for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
						exoticos << (*it).second;
					}
					exoticos.close();
				}

				cout << "\nDeseja editar outro? s/n" << endl;
				cin >> op;
			}	
		} // Primeiro else.
	}while(op == 's');
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xbc8, %rsp            # imm = 0xBC8
movq %rcx, %rbx
movq %rdx, %r14
leaq -0x230(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movq %rsi, -0x58(%rbp)
movq %rdi, -0x50(%rbp)
xorl %eax, %eax
leaq -0x210(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x1f0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x110(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0xf0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0xb0(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x1d0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x1b0(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x190(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x170(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x90(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x650(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x150(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x70(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x130(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xbf0(%rbp), %rdi
callq 0x3350
leaq -0x9f0(%rbp), %rdi
callq 0x3350
movq -0x58(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xd8(%rbp)
movq -0x50(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xd0(%rbp)
movq 0x19e17(%rip), %r13     # 0x30fc8
movq 0x19e28(%rip), %r12     # 0x30fe0
movq %rbx, -0xe0(%rbp)
movq %r14, -0xc8(%rbp)
movq %r13, %rdi
leaq 0xd027(%rip), %rsi      # 0x241f7
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2d(%rbp), %rsi
callq 0x3280
movzbl -0x2d(%rbp), %eax
cmpl $0x65, %eax
je 0x176e2
cmpl $0x6e, %eax
je 0x17256
movq %r13, %rdi
leaq 0xcfcc(%rip), %rsi      # 0x241d1
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0xc3b4(%rip), %rsi      # 0x235d8
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2c(%rbp), %rsi
callq 0x3280
cmpb $0x73, -0x2c(%rbp)
je 0x18665
cmpb $0x73, -0x2b(%rbp)
je 0x171c6
jmp 0x18665
movq %r13, %rdi
leaq 0xcfc7(%rip), %rsi      # 0x24227
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3150
movq -0x50(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x1e390
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0xd0(%rbp), %rax
je 0x185df
movq %r13, %rdi
leaq 0xcf98(%rip), %rsi      # 0x2423d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
leaq -0x240(%rbp), %rdi
leaq 0xc84d(%rip), %rsi      # 0x23b0d
callq 0x33b0
movq %r13, %rdi
leaq 0xc474(%rip), %rsi      # 0x23743
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3060
leaq -0xa0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
je 0x17330
movq -0xa0(%rbp), %rbx
movq -0x98(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1734f
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x17318
movq %r13, %rdi
leaq 0xc418(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x172c5
movq -0xc8(%rbp), %r15
movq %r13, %rdi
leaq 0xc7ac(%rip), %rsi      # 0x23b16
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x220(%rbp), %rsi
callq 0x3060
leaq -0x220(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21bd2
testb %al, %al
jne 0x173b9
movq %r13, %rdi
leaq 0xc78d(%rip), %rsi      # 0x23b31
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17360
movq %r13, %rdi
leaq 0xc79e(%rip), %rsi      # 0x23b67
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x200(%rbp), %rsi
callq 0x3060
leaq -0x200(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22195
testb %al, %al
jne 0x17418
movq %r13, %rdi
leaq 0xc34f(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x173bf
jmp 0x17443
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0xc765(%rip), %rsi      # 0x23b97
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xc72b(%rip), %rsi      # 0x23b78
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x120(%rbp), %rsi
callq 0x3060
leaq -0x120(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1749c
movq %r13, %rdi
leaq 0xc2cb(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x640(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3290
movq %r15, %rdi
leaq -0x640(%rbp), %r14
movq %r14, %rsi
callq 0x20e46
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x17420
cmpb $0x6e, -0x29(%rbp)
je 0x17443
movq %r13, %rdi
leaq 0xc6d3(%rip), %rsi      # 0x23bba
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x100(%rbp), %rsi
callq 0x3060
leaq -0x100(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x17536
movq %r13, %rdi
leaq 0xc231(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x620(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3290
xorl %edi, %edi
movq -0xe0(%rbp), %rsi
leaq -0x620(%rbp), %r14
movq %r14, %rdx
pushq $0x61
popq %rcx
callq 0x20eb7
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1757e
cmpb $0x6e, -0x29(%rbp)
je 0x174dd
jmp 0x175ae
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0xc646(%rip), %rsi      # 0x23bd6
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
jmp 0x174dd
movq %r13, %rdi
leaq 0xc650(%rip), %rsi      # 0x23c08
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3060
leaq -0xc0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x17607
movq %r13, %rdi
leaq 0xc160(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0xc0(%rbp), %rbx
movq -0xb8(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x17630
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x17618
cmpb $0x6e, -0x29(%rbp)
je 0x175ae
movq %r13, %rdi
leaq 0xc5df(%rip), %rsi      # 0x23c23
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x80(%rbp), %rsi
callq 0x3060
movq -0x80(%rbp), %rbx
movq -0x78(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x17680
movsbl (%rbx,%r15), %edi
callq 0x33a0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x17668
leaq -0x80(%rbp), %rdi
leaq 0xc5b2(%rip), %rsi      # 0x23c3d
callq 0xb86b
testb %al, %al
je 0x17b6e
leaq -0x80(%rbp), %rdi
leaq 0xc59c(%rip), %rsi      # 0x23c3f
callq 0xb86b
testb %al, %al
je 0x17b6e
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xc583(%rip), %rsi      # 0x23c41
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1763a
jmp 0x17b7b
movq %r13, %rdi
leaq 0xcb3b(%rip), %rsi      # 0x24227
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3150
movq -0x58(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x1e3e8
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0xd8(%rbp), %rax
je 0x18622
movq %r13, %rdi
leaq 0xcb0c(%rip), %rsi      # 0x2423d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
leaq -0x240(%rbp), %rdi
leaq 0xc3c1(%rip), %rsi      # 0x23b0d
callq 0x33b0
movq %r13, %rdi
leaq 0xbfe8(%rip), %rsi      # 0x23743
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3060
leaq -0xa0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
je 0x177bc
movq -0xa0(%rbp), %rbx
movq -0x98(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x177db
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x177a4
movq %r13, %rdi
leaq 0xbf8c(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17751
movq -0xc8(%rbp), %r15
movq %r13, %rdi
leaq 0xc320(%rip), %rsi      # 0x23b16
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x220(%rbp), %rsi
callq 0x3060
leaq -0x220(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21bd2
testb %al, %al
jne 0x17845
movq %r13, %rdi
leaq 0xc301(%rip), %rsi      # 0x23b31
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x177ec
movq %r13, %rdi
leaq 0xc312(%rip), %rsi      # 0x23b67
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x200(%rbp), %rsi
callq 0x3060
leaq -0x200(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22195
testb %al, %al
jne 0x178a4
movq %r13, %rdi
leaq 0xbec3(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1784b
jmp 0x178cf
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0xc2d9(%rip), %rsi      # 0x23b97
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xc29f(%rip), %rsi      # 0x23b78
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x120(%rbp), %rsi
callq 0x3060
leaq -0x120(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x17928
movq %r13, %rdi
leaq 0xbe3f(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x580(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3290
movq %r15, %rdi
leaq -0x580(%rbp), %r14
movq %r14, %rsi
callq 0x20e46
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x178ac
cmpb $0x6e, -0x29(%rbp)
je 0x178cf
movq %r13, %rdi
leaq 0xc247(%rip), %rsi      # 0x23bba
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x100(%rbp), %rsi
callq 0x3060
leaq -0x100(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x179c2
movq %r13, %rdi
leaq 0xbda5(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x560(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3290
xorl %edi, %edi
movq -0xe0(%rbp), %rsi
leaq -0x560(%rbp), %r14
movq %r14, %rdx
pushq $0x61
popq %rcx
callq 0x20eb7
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x17a0a
cmpb $0x6e, -0x29(%rbp)
je 0x17969
jmp 0x17a3a
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0xc1ba(%rip), %rsi      # 0x23bd6
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
jmp 0x17969
movq %r13, %rdi
leaq 0xc1c4(%rip), %rsi      # 0x23c08
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3060
leaq -0xc0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x17a93
movq %r13, %rdi
leaq 0xbcd4(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0xc0(%rbp), %rbx
movq -0xb8(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x17abc
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x17aa4
cmpb $0x6e, -0x29(%rbp)
je 0x17a3a
movq %r13, %rdi
leaq 0xc153(%rip), %rsi      # 0x23c23
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x80(%rbp), %rsi
callq 0x3060
movq -0x80(%rbp), %rbx
movq -0x78(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x17b0c
movsbl (%rbx,%r15), %edi
callq 0x33a0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x17af4
leaq -0x80(%rbp), %rdi
leaq 0xc126(%rip), %rsi      # 0x23c3d
callq 0xb86b
testb %al, %al
je 0x180a8
leaq -0x80(%rbp), %rdi
leaq 0xc110(%rip), %rsi      # 0x23c3f
callq 0xb86b
testb %al, %al
je 0x180a8
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xc0f7(%rip), %rsi      # 0x23c41
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17ac6
jmp 0x180b5
movq -0x80(%rbp), %rax
movb (%rax), %al
movb %al, -0x2a(%rbp)
movb $0x73, -0x29(%rbp)
movq %r13, %rdi
leaq 0xc0de(%rip), %rsi      # 0x23c63
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x160(%rbp), %rsi
callq 0x3060
leaq -0x600(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x3290
leaq -0x600(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22273
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x17bf4
movq %r13, %rdi
leaq 0xc0a1(%rip), %rsi      # 0x23c80
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x160(%rbp), %rdi
xorl %esi, %esi
callq 0x11e17
movsd %xmm0, -0x60(%rbp)
cmpb $0x6e, -0x29(%rbp)
je 0x17b7b
movq %r13, %rdi
leaq 0xc09a(%rip), %rsi      # 0x23cb5
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x140(%rbp), %rsi
callq 0x3060
leaq -0x5e0(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3290
leaq -0x5e0(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x21d78
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x17c9a
leaq -0x7f0(%rbp), %rbx
movq %rbx, %rdi
leaq -0x140(%rbp), %rsi
pushq $0x18
popq %rdx
callq 0x3300
movq %rbx, %rdi
leaq -0x38(%rbp), %rsi
callq 0x3150
movq %rbx, %rdi
callq 0x3170
jmp 0x17cb9
movq %r13, %rdi
leaq 0xc02a(%rip), %rsi      # 0x23cce
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17c11
movq %r13, %rdi
leaq 0xc03f(%rip), %rsi      # 0x23d0c
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x180(%rbp), %rsi
callq 0x3060
leaq -0x5c0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3290
leaq -0x5c0(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x222ff
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x17d3c
movq %r13, %rdi
leaq 0xc00f(%rip), %rsi      # 0x23d36
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17cc3
movq %r13, %rdi
leaq 0xc025(%rip), %rsi      # 0x23d71
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3060
leaq -0x1c0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x17d9b
movq %r13, %rdi
leaq 0xc00b(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17d42
movq %r13, %rdi
leaq 0xc01c(%rip), %rsi      # 0x23dc7
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3060
leaq -0x1a0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22480
testb %al, %al
jne 0x17dfa
movq %r13, %rdi
leaq 0xbffa(%rip), %rsi      # 0x23ddf
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17da1
movq %r13, %rdi
leaq 0xbffa(%rip), %rsi      # 0x23e04
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x3060
leaq -0x1e0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x17e59
movq %r13, %rdi
leaq 0xbf4d(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x17e00
movl -0x34(%rbp), %ebx
leaq -0x4c0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3290
leaq -0x4a0(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3290
leaq -0x480(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x3290
leaq -0x460(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x3290
leaq -0x440(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3290
leaq -0x420(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3290
leaq -0x400(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3290
movl -0x38(%rbp), %r14d
leaq -0x3e0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3290
leaq -0x3c0(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3290
leaq -0x3a0(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3290
movq %r14, -0x48(%rbp)
leaq -0x5a0(%rbp), %r15
movq %r15, %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x3290
subq $0x8, %rsp
movsbl -0x2a(%rbp), %r9d
leaq -0x7f0(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
leaq -0x4c0(%rbp), %rdx
leaq -0x4a0(%rbp), %rcx
leaq -0x480(%rbp), %r8
movsd -0x60(%rbp), %xmm0
pushq %r15
leaq -0x3a0(%rbp), %rax
pushq %rax
leaq -0x3c0(%rbp), %rax
pushq %rax
leaq -0x3e0(%rbp), %rax
pushq %rax
pushq -0x48(%rbp)
leaq -0x400(%rbp), %rax
pushq %rax
leaq -0x420(%rbp), %rax
pushq %rax
leaq -0x440(%rbp), %rax
pushq %rax
leaq -0x460(%rbp), %rax
pushq %rax
callq 0x5146
addq $0x50, %rsp
movq -0x40(%rbp), %rdi
addq $0x28, %rdi
movq %r14, %rsi
callq 0x1dffc
movq %r14, %rdi
callq 0x543c
leaq -0x5a0(%rbp), %rdi
callq 0x3100
leaq -0x3a0(%rbp), %rdi
callq 0x3100
leaq -0x3c0(%rbp), %rdi
callq 0x3100
leaq -0x3e0(%rbp), %rdi
callq 0x3100
leaq -0x400(%rbp), %rdi
callq 0x3100
leaq -0x420(%rbp), %rdi
callq 0x3100
leaq -0x440(%rbp), %rdi
callq 0x3100
leaq -0x460(%rbp), %rdi
callq 0x3100
leaq -0x480(%rbp), %rdi
callq 0x3100
leaq -0x4a0(%rbp), %rdi
callq 0x3100
leaq -0x4c0(%rbp), %rdi
callq 0x3100
movb $0x73, -0x29(%rbp)
leaq -0xbf0(%rbp), %rdi
leaq 0xbe52(%rip), %rsi      # 0x23eb3
pushq $0x10
popq %rdx
callq 0x3040
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
cmpq -0xd0(%rbp), %rbx
je 0x18097
leaq 0x28(%rbx), %rsi
leaq -0xbf0(%rbp), %rdi
callq 0x7354
movq %rbx, %rdi
callq 0x3160
movq %rax, %rbx
jmp 0x18071
leaq -0xbf0(%rbp), %rdi
callq 0x32a0
jmp 0x185fa
movq -0x80(%rbp), %rax
movb (%rax), %al
movb %al, -0x2a(%rbp)
movb $0x73, -0x29(%rbp)
movq %r13, %rdi
leaq 0xbba4(%rip), %rsi      # 0x23c63
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x160(%rbp), %rsi
callq 0x3060
leaq -0x540(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x3290
leaq -0x540(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22273
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x1812e
movq %r13, %rdi
leaq 0xbb67(%rip), %rsi      # 0x23c80
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x160(%rbp), %rdi
xorl %esi, %esi
callq 0x11e17
movsd %xmm0, -0x60(%rbp)
cmpb $0x6e, -0x29(%rbp)
je 0x180b5
movq %r13, %rdi
leaq 0xbb60(%rip), %rsi      # 0x23cb5
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x140(%rbp), %rsi
callq 0x3060
leaq -0x520(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3290
leaq -0x520(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x21d78
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x181d4
leaq -0x7f0(%rbp), %rbx
movq %rbx, %rdi
leaq -0x140(%rbp), %rsi
pushq $0x18
popq %rdx
callq 0x3300
movq %rbx, %rdi
leaq -0x38(%rbp), %rsi
callq 0x3150
movq %rbx, %rdi
callq 0x3170
jmp 0x181f3
movq %r13, %rdi
leaq 0xbaf0(%rip), %rsi      # 0x23cce
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1814b
movq %r13, %rdi
leaq 0xbb05(%rip), %rsi      # 0x23d0c
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x180(%rbp), %rsi
callq 0x3060
leaq -0x500(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3290
leaq -0x500(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x222ff
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x18276
movq %r13, %rdi
leaq 0xbad5(%rip), %rsi      # 0x23d36
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x181fd
movq %r13, %rdi
leaq 0xbaeb(%rip), %rsi      # 0x23d71
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3060
leaq -0x1c0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x182d5
movq %r13, %rdi
leaq 0xbad1(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1827c
movq %r13, %rdi
leaq 0xbb6e(%rip), %rsi      # 0x23e53
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3060
leaq -0x1a0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22480
testb %al, %al
jne 0x18334
movq %r13, %rdi
leaq 0xbac0(%rip), %rsi      # 0x23ddf
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x182db
movq %r13, %rdi
leaq 0xbac0(%rip), %rsi      # 0x23e04
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x3060
leaq -0x1e0(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x18393
movq %r13, %rdi
leaq 0xba13(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1833a
movl -0x34(%rbp), %ebx
leaq -0x380(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x3290
leaq -0x360(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3290
leaq -0x340(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x3290
leaq -0x320(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x3290
leaq -0x300(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x3290
leaq -0x2e0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x3290
leaq -0x2c0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x3290
movl -0x38(%rbp), %r14d
leaq -0x2a0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3290
leaq -0x280(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x3290
leaq -0x260(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x3290
movq %r14, -0x48(%rbp)
leaq -0x4e0(%rbp), %r15
movq %r15, %rdi
leaq -0x1e0(%rbp), %rsi
callq 0x3290
subq $0x8, %rsp
movsbl -0x2a(%rbp), %r9d
leaq -0x7f0(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
leaq -0x380(%rbp), %rdx
leaq -0x360(%rbp), %rcx
leaq -0x340(%rbp), %r8
movsd -0x60(%rbp), %xmm0
pushq %r15
leaq -0x260(%rbp), %rax
pushq %rax
leaq -0x280(%rbp), %rax
pushq %rax
leaq -0x2a0(%rbp), %rax
pushq %rax
pushq -0x48(%rbp)
leaq -0x2c0(%rbp), %rax
pushq %rax
leaq -0x2e0(%rbp), %rax
pushq %rax
leaq -0x300(%rbp), %rax
pushq %rax
leaq -0x320(%rbp), %rax
pushq %rax
callq 0x5478
addq $0x50, %rsp
movq -0x40(%rbp), %rdi
addq $0x28, %rdi
movq %r14, %rsi
callq 0x1e02a
movq %r14, %rdi
callq 0x5a18
leaq -0x4e0(%rbp), %rdi
callq 0x3100
leaq -0x260(%rbp), %rdi
callq 0x3100
leaq -0x280(%rbp), %rdi
callq 0x3100
leaq -0x2a0(%rbp), %rdi
callq 0x3100
leaq -0x2c0(%rbp), %rdi
callq 0x3100
leaq -0x2e0(%rbp), %rdi
callq 0x3100
leaq -0x300(%rbp), %rdi
callq 0x3100
leaq -0x320(%rbp), %rdi
callq 0x3100
leaq -0x340(%rbp), %rdi
callq 0x3100
leaq -0x360(%rbp), %rdi
callq 0x3100
leaq -0x380(%rbp), %rdi
callq 0x3100
movb $0x73, -0x29(%rbp)
leaq -0x9f0(%rbp), %rdi
leaq 0xb929(%rip), %rsi      # 0x23ec4
pushq $0x10
popq %rdx
callq 0x3040
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rbx
cmpq -0xd8(%rbp), %rbx
je 0x185d1
leaq 0x28(%rbx), %rsi
leaq -0x9f0(%rbp), %rdi
callq 0x776c
movq %rbx, %rdi
callq 0x3160
movq %rax, %rbx
jmp 0x185ab
leaq -0x9f0(%rbp), %rdi
callq 0x32a0
jmp 0x1863d
movq %r13, %rdi
leaq 0xbc5f(%rip), %rsi      # 0x24248
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xbc5d(%rip), %rsi      # 0x24261
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2b(%rbp), %rsi
callq 0x3280
jmp 0x17247
movq %r13, %rdi
leaq 0xbc1c(%rip), %rsi      # 0x24248
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0xbc1a(%rip), %rsi      # 0x24261
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2b(%rbp), %rsi
callq 0x3280
jmp 0x17247
leaq -0x9f0(%rbp), %rdi
callq 0x32e0
leaq -0xbf0(%rbp), %rdi
callq 0x32e0
leaq -0x140(%rbp), %rdi
callq 0x3100
leaq -0x80(%rbp), %rdi
callq 0x3100
leaq -0x160(%rbp), %rdi
callq 0x3100
leaq -0x660(%rbp), %rdi
callq 0x3100
leaq -0xa0(%rbp), %rdi
callq 0x3100
leaq -0x180(%rbp), %rdi
callq 0x3100
leaq -0x1a0(%rbp), %rdi
callq 0x3100
leaq -0x1c0(%rbp), %rdi
callq 0x3100
leaq -0x1e0(%rbp), %rdi
callq 0x3100
leaq -0xc0(%rbp), %rdi
callq 0x3100
leaq -0x100(%rbp), %rdi
callq 0x3100
leaq -0x120(%rbp), %rdi
callq 0x3100
leaq -0x200(%rbp), %rdi
callq 0x3100
leaq -0x220(%rbp), %rdi
callq 0x3100
leaq -0x240(%rbp), %rdi
callq 0x3100
addq $0xbc8, %rsp            # imm = 0xBC8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x7f0(%rbp), %rdi
callq 0x5a18
jmp 0x18754
movq %rax, %rbx
leaq -0x4e0(%rbp), %rdi
callq 0x3100
jmp 0x18765
movq %rax, %rbx
leaq -0x260(%rbp), %rdi
callq 0x3100
jmp 0x18776
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
callq 0x3100
jmp 0x18787
movq %rax, %rbx
leaq -0x2a0(%rbp), %rdi
callq 0x3100
leaq -0x2c0(%rbp), %rdi
callq 0x3100
leaq -0x2e0(%rbp), %rdi
callq 0x3100
leaq -0x300(%rbp), %rdi
callq 0x3100
leaq -0x320(%rbp), %rdi
callq 0x3100
leaq -0x340(%rbp), %rdi
callq 0x3100
leaq -0x360(%rbp), %rdi
callq 0x3100
leaq -0x380(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
jmp 0x18793
movq %rax, %rbx
jmp 0x1879f
movq %rax, %rbx
jmp 0x187ab
movq %rax, %rbx
jmp 0x187b7
movq %rax, %rbx
jmp 0x187c3
movq %rax, %rbx
jmp 0x187cf
movq %rax, %rbx
jmp 0x187db
jmp 0x189d8
movq %rax, %rbx
leaq -0x7f0(%rbp), %rdi
callq 0x543c
jmp 0x18823
movq %rax, %rbx
leaq -0x5a0(%rbp), %rdi
callq 0x3100
jmp 0x18834
movq %rax, %rbx
leaq -0x3a0(%rbp), %rdi
callq 0x3100
jmp 0x18845
movq %rax, %rbx
leaq -0x3c0(%rbp), %rdi
callq 0x3100
jmp 0x18856
movq %rax, %rbx
leaq -0x3e0(%rbp), %rdi
callq 0x3100
leaq -0x400(%rbp), %rdi
callq 0x3100
leaq -0x420(%rbp), %rdi
callq 0x3100
leaq -0x440(%rbp), %rdi
callq 0x3100
leaq -0x460(%rbp), %rdi
callq 0x3100
leaq -0x480(%rbp), %rdi
callq 0x3100
leaq -0x4a0(%rbp), %rdi
callq 0x3100
leaq -0x4c0(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
jmp 0x18862
movq %rax, %rbx
jmp 0x1886e
movq %rax, %rbx
jmp 0x1887a
movq %rax, %rbx
jmp 0x18886
movq %rax, %rbx
jmp 0x18892
movq %rax, %rbx
jmp 0x1889e
movq %rax, %rbx
jmp 0x188aa
jmp 0x189d8
movq %rax, %rbx
jmp 0x189e7
movq %rax, %rbx
jmp 0x189f3
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x18904
jmp 0x189d8
movq %rax, %rbx
leaq -0x7f0(%rbp), %rdi
callq 0x3170
jmp 0x189db
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
movq %rax, %rbx
leaq -0x5c0(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x500(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x5e0(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x520(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x600(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x540(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x620(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x560(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x640(%rbp), %rdi
jmp 0x1899d
movq %rax, %rbx
leaq -0x580(%rbp), %rdi
callq 0x3100
jmp 0x189db
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
jmp 0x189d8
movq %rax, %rbx
leaq -0x9f0(%rbp), %rdi
callq 0x32e0
leaq -0xbf0(%rbp), %rdi
callq 0x32e0
leaq -0x140(%rbp), %rdi
callq 0x3100
leaq -0x80(%rbp), %rdi
callq 0x3100
leaq -0x160(%rbp), %rdi
callq 0x3100
leaq -0x660(%rbp), %rdi
callq 0x3100
leaq -0xa0(%rbp), %rdi
callq 0x3100
leaq -0x180(%rbp), %rdi
callq 0x3100
leaq -0x1a0(%rbp), %rdi
callq 0x3100
leaq -0x1c0(%rbp), %rdi
callq 0x3100
leaq -0x1e0(%rbp), %rdi
callq 0x3100
leaq -0xc0(%rbp), %rdi
callq 0x3100
leaq -0x100(%rbp), %rdi
callq 0x3100
leaq -0x120(%rbp), %rdi
callq 0x3100
leaq -0x200(%rbp), %rdi
callq 0x3100
leaq -0x220(%rbp), %rdi
callq 0x3100
leaq -0x240(%rbp), %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3370