// File: /workspace/github_cpp_makefile_star2_O2/nataly-enne[P]pet-fera/pet_fera_editar.cpp
// Function: editar(std::map<int, REPTIL_NATIVO, std::less<int>, std::allocator<std::pair<int const, REPTIL_NATIVO>>>&, std::map<int, REPTIL_EXOTICO, std::less<int>, std::allocator<std::pair<int const, REPTIL_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, REPTIL_NATIVO> &repteis_nat, map <int, REPTIL_EXOTICO> &repteis_ex, map <int, VETERINARIO> vets, map <int, TRATADOR> tratadores){
	char resp, op, sucesso, sexo, tipo_animal, tipo = 'r';;
	int id_buscado;
	double tamanho;
	bool venenoso, check;
	string classe, nome_cientifico, dieta, veterinario, tratador, nome_batismo, autorizacao, autorizacao_IBAMA, origem, tipo_veneno, nome, id_string, sexo_string, tamanho_string, venenoso_string;
	ofstream nativos;
	ofstream exoticos;
			
	do{
		cout << "É nativo ou exotico? \n n - NATIVO\n e - EXOTICO" << endl;
		cin >> tipo_animal;
		if(tipo_animal != 'n' && tipo_animal != '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(tipo_animal == 'n'){
				cout << "Insira o ID buscado: " << endl;
				cin >> id_buscado;

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

					classe = "Reptilia";

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


					do{
						cout << "Digite 0 - não venenoso / 1 - venenoso: " << endl;
						cin >> venenoso_string;
						if(!verifica_venenoso(venenoso_string,sucesso)){
							cout << "ERRO: Digite apenas 0 para não venenoso OU 1 para venenoso!" << endl << endl;
						}
						else{
							stringstream ss(venenoso_string);
							ss >> venenoso;
							sucesso = 's';
							if(venenoso){
								cout << "Digite o tipo do veneno: " << endl;
								cin.ignore();
								getline(cin, tipo_veneno); 
							}
						}
					}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(venenoso, 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_batismo 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 sexo 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');

					
					
					// 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 ou '-'" << 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 = REPTIL_NATIVO(id_buscado, classe, nome, nome_cientifico, sexo, tamanho, dieta, veterinario, tratador, nome_batismo, venenoso, tipo_veneno, autorizacao_IBAMA, origem, autorizacao);
					sucesso = 's';
				}
				else{
					cout << "Animal não cadastrado!!" << endl;
					sucesso = 'n';
				}
				if(sucesso == 's'){
					nativos.open("repteis_nat.txt");
					for(auto it = repteis_nat.begin(); it != repteis_nat.end(); it++){
						nativos << (*it).second;
					}
					nativos.close();
				}

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

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

					classe = "Reptillia";

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


					do{
						cout << "Digite 0 - não venenoso / 1 - venenoso: " << endl;
						cin >> venenoso_string;
						if(!verifica_venenoso(venenoso_string,sucesso)){
							cout << "ERRO: Digite apenas 0 para não venenoso OU 1 para venenoso!" << endl << endl;
						}
						else{
							stringstream ss(venenoso_string);
							ss >> venenoso;
							sucesso = 's';
							if(venenoso){
								cout << "Digite o tipo do veneno: " << endl;
								cin.ignore();
								getline(cin, tipo_veneno); 
							}
						}
					}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(venenoso, 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_batismo 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 sexo 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');

					
					
					// 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 ou '-'" << 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 = REPTIL_EXOTICO(id_buscado, classe, nome, nome_cientifico, sexo, tamanho, dieta, veterinario, tratador, nome_batismo, venenoso, tipo_veneno, autorizacao_IBAMA, origem, autorizacao);
					sucesso = 's';
				}
				else{
					cout << "Animal não cadastrado!!" << endl;
					sucesso = 'n';
				}
				if(sucesso == 's'){
					exoticos.open("repteis_ex.txt");
					for(auto it = repteis_ex.begin(); it != repteis_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 $0xb88, %rsp            # imm = 0xB88
movq %rcx, %rbx
movq %rdx, %r14
leaq -0x228(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movq %rsi, -0x50(%rbp)
movq %rdi, -0x48(%rbp)
xorl %eax, %eax
leaq -0x1e8(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x1c8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x108(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0xe8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0xa8(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x1a8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x188(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x168(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x208(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x88(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x608(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x68(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0x148(%rbp), %rdx
movq %rdx, -0x10(%rdx)
andq $0x0, -0x8(%rdx)
movb %al, (%rcx)
movb %al, (%rdx)
leaq -0x128(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xba8(%rbp), %rdi
callq 0x3350
leaq -0x9a8(%rbp), %rdi
callq 0x3350
movq -0x50(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xd0(%rbp)
movq -0x48(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xc8(%rbp)
movq 0x16b8c(%rip), %r13     # 0x30fc8
movq 0x16b9d(%rip), %r12     # 0x30fe0
movq %rbx, -0xd8(%rbp)
movq %r14, -0xc0(%rbp)
movq %r13, %rdi
leaq 0x9d9c(%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 0x1aa5f
cmpl $0x6e, %eax
je 0x1a4e1
movq %r13, %rdi
leaq 0x9d41(%rip), %rsi      # 0x241d1
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0x9129(%rip), %rsi      # 0x235d8
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2e(%rbp), %rsi
callq 0x3280
cmpb $0x73, -0x2e(%rbp)
je 0x1b874
cmpb $0x73, -0x2c(%rbp)
je 0x1a451
jmp 0x1b874
movq %r13, %rdi
leaq 0x9d3c(%rip), %rsi      # 0x24227
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x34(%rbp), %rsi
callq 0x3150
movq -0x48(%rbp), %rdi
leaq -0x34(%rbp), %rsi
callq 0x1e4f0
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0xc8(%rbp), %rax
je 0x1b7ee
movq %r13, %rdi
leaq 0x9d0d(%rip), %rsi      # 0x2423d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
leaq -0x238(%rbp), %rdi
leaq 0x9ae2(%rip), %rsi      # 0x2402d
callq 0x33b0
movq %r13, %rdi
leaq 0x91e9(%rip), %rsi      # 0x23743
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0x98(%rbp), %rsi
callq 0x3060
leaq -0x98(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1a5b1
movq %r13, %rdi
leaq 0x91b6(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0x98(%rbp), %rbx
movq -0x90(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1a5da
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1a5c2
cmpb $0x6e, -0x29(%rbp)
je 0x1a550
movq -0xc0(%rbp), %r15
movq %r13, %rdi
leaq 0x9521(%rip), %rsi      # 0x23b16
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3060
leaq -0x1f8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21bd2
testb %al, %al
jne 0x1a644
movq %r13, %rdi
leaq 0x9502(%rip), %rsi      # 0x23b31
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1a5eb
movq %r13, %rdi
leaq 0x9513(%rip), %rsi      # 0x23b67
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3060
leaq -0x1d8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22195
testb %al, %al
jne 0x1a6a3
movq %r13, %rdi
leaq 0x90c4(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1a64a
movq %r13, %rdi
leaq 0x9983(%rip), %rsi      # 0x24036
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x138(%rbp), %rsi
callq 0x3260
leaq -0x5f8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x3290
leaq -0x5f8(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22634
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1a76e
leaq -0x7a8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x138(%rbp), %rsi
pushq $0x18
popq %rdx
callq 0x3300
movq %rbx, %rdi
leaq -0x2a(%rbp), %rsi
callq 0x31a0
movb $0x73, -0x29(%rbp)
cmpb $0x1, -0x2a(%rbp)
jne 0x1a760
movq %r13, %rdi
leaq 0x9961(%rip), %rsi      # 0x2409d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0x218(%rbp), %rsi
callq 0x3060
leaq -0x7a8(%rbp), %rdi
callq 0x3170
jmp 0x1a78d
movq %r13, %rdi
leaq 0x98e8(%rip), %rsi      # 0x24060
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1a6a9
jmp 0x1a7bc
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0x93ec(%rip), %rsi      # 0x23b97
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x93b2(%rip), %rsi      # 0x23b78
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x118(%rbp), %rsi
callq 0x3060
leaq -0x118(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1a815
movq %r13, %rdi
leaq 0x8f52(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x5d8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3290
movq %r15, %rdi
leaq -0x5d8(%rbp), %r14
movq %r14, %rsi
callq 0x20e46
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1a799
cmpb $0x6e, -0x29(%rbp)
je 0x1a7bc
movq %r13, %rdi
leaq 0x935a(%rip), %rsi      # 0x23bba
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3060
leaq -0xf8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1a8af
movq %r13, %rdi
leaq 0x8eb8(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb -0x2a(%rbp), %bl
leaq -0x5b8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3290
movzbl %bl, %edi
movq -0xd8(%rbp), %rsi
leaq -0x5b8(%rbp), %r14
movq %r14, %rdx
pushq $0x72
popq %rcx
callq 0x20eb7
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1a8fb
cmpb $0x6e, -0x29(%rbp)
je 0x1a856
jmp 0x1a92b
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0x92c9(%rip), %rsi      # 0x23bd6
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
jmp 0x1a856
movq %r13, %rdi
leaq 0x92d3(%rip), %rsi      # 0x23c08
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3060
leaq -0xb8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1a984
movq %r13, %rdi
leaq 0x8de3(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0xb8(%rbp), %rbx
movq -0xb0(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1a9ad
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1a995
cmpb $0x6e, -0x29(%rbp)
je 0x1a92b
movq %r13, %rdi
leaq 0x9262(%rip), %rsi      # 0x23c23
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x78(%rbp), %rsi
callq 0x3060
movq -0x78(%rbp), %rbx
movq -0x70(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1a9fd
movsbl (%rbx,%r15), %edi
callq 0x33a0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1a9e5
leaq -0x78(%rbp), %rdi
leaq 0x9235(%rip), %rsi      # 0x23c3d
callq 0xb86b
testb %al, %al
je 0x1afdd
leaq -0x78(%rbp), %rdi
leaq 0x921f(%rip), %rsi      # 0x23c3f
callq 0xb86b
testb %al, %al
je 0x1afdd
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x9206(%rip), %rsi      # 0x23c41
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1a9b7
jmp 0x1afea
movq %r13, %rdi
leaq 0x97be(%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 0x1e548
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq -0xd0(%rbp), %rax
je 0x1b831
movq %r13, %rdi
leaq 0x978f(%rip), %rsi      # 0x2423d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
leaq -0x238(%rbp), %rdi
leaq 0x97d6(%rip), %rsi      # 0x2429f
callq 0x33b0
movq %r13, %rdi
leaq 0x8c6b(%rip), %rsi      # 0x23743
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0x98(%rbp), %rsi
callq 0x3060
leaq -0x98(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1ab2f
movq %r13, %rdi
leaq 0x8c38(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0x98(%rbp), %rbx
movq -0x90(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1ab58
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1ab40
cmpb $0x6e, -0x29(%rbp)
je 0x1aace
movq -0xc0(%rbp), %r15
movq %r13, %rdi
leaq 0x8fa3(%rip), %rsi      # 0x23b16
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3060
leaq -0x1f8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21bd2
testb %al, %al
jne 0x1abc2
movq %r13, %rdi
leaq 0x8f84(%rip), %rsi      # 0x23b31
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1ab69
movq %r13, %rdi
leaq 0x8f95(%rip), %rsi      # 0x23b67
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3060
leaq -0x1d8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22195
testb %al, %al
jne 0x1ac21
movq %r13, %rdi
leaq 0x8b46(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1abc8
movq %r13, %rdi
leaq 0x9405(%rip), %rsi      # 0x24036
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x138(%rbp), %rsi
callq 0x3260
leaq -0x558(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x3290
leaq -0x558(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22634
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1acec
leaq -0x7a8(%rbp), %rbx
movq %rbx, %rdi
leaq -0x138(%rbp), %rsi
pushq $0x18
popq %rdx
callq 0x3300
movq %rbx, %rdi
leaq -0x2a(%rbp), %rsi
callq 0x31a0
movb $0x73, -0x29(%rbp)
cmpb $0x1, -0x2a(%rbp)
jne 0x1acde
movq %r13, %rdi
leaq 0x93e3(%rip), %rsi      # 0x2409d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
callq 0x3380
movq %r12, %rdi
leaq -0x218(%rbp), %rsi
callq 0x3060
leaq -0x7a8(%rbp), %rdi
callq 0x3170
jmp 0x1ad0b
movq %r13, %rdi
leaq 0x936a(%rip), %rsi      # 0x24060
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1ac27
jmp 0x1ad3a
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0x8e6e(%rip), %rsi      # 0x23b97
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8e34(%rip), %rsi      # 0x23b78
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x118(%rbp), %rsi
callq 0x3060
leaq -0x118(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1ad93
movq %r13, %rdi
leaq 0x89d4(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x538(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3290
movq %r15, %rdi
leaq -0x538(%rbp), %r14
movq %r14, %rsi
callq 0x20e46
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1ad17
cmpb $0x6e, -0x29(%rbp)
je 0x1ad3a
movq %r13, %rdi
leaq 0x8ddc(%rip), %rsi      # 0x23bba
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3060
leaq -0xf8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1ae2d
movq %r13, %rdi
leaq 0x893a(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb -0x2a(%rbp), %bl
leaq -0x518(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3290
movzbl %bl, %edi
movq -0xd8(%rbp), %rsi
leaq -0x518(%rbp), %r14
movq %r14, %rdx
pushq $0x72
popq %rcx
callq 0x20eb7
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
je 0x1ae79
cmpb $0x6e, -0x29(%rbp)
je 0x1add4
jmp 0x1aea9
movq %r13, %rdi
callq 0x3110
movq %r13, %rdi
leaq 0x8d4b(%rip), %rsi      # 0x23bd6
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
jmp 0x1add4
movq %r13, %rdi
leaq 0x8d55(%rip), %rsi      # 0x23c08
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3060
leaq -0xb8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x21b16
testb %al, %al
jne 0x1af02
movq %r13, %rdi
leaq 0x8865(%rip), %rsi      # 0x23752
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
movq -0xb8(%rbp), %rbx
movq -0xb0(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1af2b
movsbl (%rbx,%r15), %edi
callq 0x32c0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1af13
cmpb $0x6e, -0x29(%rbp)
je 0x1aea9
movq %r13, %rdi
leaq 0x8ce4(%rip), %rsi      # 0x23c23
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x78(%rbp), %rsi
callq 0x3060
movq -0x78(%rbp), %rbx
movq -0x70(%rbp), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x1af7b
movsbl (%rbx,%r15), %edi
callq 0x33a0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x1af63
leaq -0x78(%rbp), %rdi
leaq 0x8cb7(%rip), %rsi      # 0x23c3d
callq 0xb86b
testb %al, %al
je 0x1b3e7
leaq -0x78(%rbp), %rdi
leaq 0x8ca1(%rip), %rsi      # 0x23c3f
callq 0xb86b
testb %al, %al
je 0x1b3e7
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8c88(%rip), %rsi      # 0x23c41
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1af35
jmp 0x1b3f4
movq -0x78(%rbp), %rax
movb (%rax), %al
movb %al, -0x2b(%rbp)
movb $0x73, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8c6f(%rip), %rsi      # 0x23c63
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x158(%rbp), %rsi
callq 0x3060
leaq -0x598(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x3290
leaq -0x598(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22273
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x1b063
movq %r13, %rdi
leaq 0x8c32(%rip), %rsi      # 0x23c80
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x158(%rbp), %rdi
xorl %esi, %esi
callq 0x11e17
movsd %xmm0, -0x58(%rbp)
cmpb $0x6e, -0x29(%rbp)
je 0x1afea
movq %r13, %rdi
leaq 0x8ce7(%rip), %rsi      # 0x23d71
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3060
leaq -0x198(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x1b0d9
movq %r13, %rdi
leaq 0x8ebe(%rip), %rsi      # 0x23f82
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b080
movq %r13, %rdi
leaq 0x8cde(%rip), %rsi      # 0x23dc7
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x178(%rbp), %rsi
callq 0x3060
leaq -0x178(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22480
testb %al, %al
jne 0x1b138
movq %r13, %rdi
leaq 0x8cbc(%rip), %rsi      # 0x23ddf
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b0df
movq %r13, %rdi
leaq 0x8cbc(%rip), %rsi      # 0x23e04
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3060
leaq -0x1b8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x1b197
movq %r13, %rdi
leaq 0x8c0f(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b13e
movl -0x34(%rbp), %r15d
leaq -0x4b8(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x3290
leaq -0x498(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x3290
leaq -0x478(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3290
leaq -0x458(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3290
leaq -0x438(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3290
leaq -0x418(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3290
leaq -0x3f8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3290
movb -0x2a(%rbp), %bl
leaq -0x3d8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x3290
leaq -0x3b8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3290
leaq -0x398(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x3290
leaq -0x578(%rbp), %r14
movq %r14, %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3290
subq $0x8, %rsp
movzbl %bl, %eax
movsbl -0x2b(%rbp), %r9d
leaq -0x7a8(%rbp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
leaq -0x4b8(%rbp), %rdx
leaq -0x498(%rbp), %rcx
leaq -0x478(%rbp), %r8
movsd -0x58(%rbp), %xmm0
pushq %r14
leaq -0x398(%rbp), %r10
pushq %r10
leaq -0x3b8(%rbp), %r10
pushq %r10
leaq -0x3d8(%rbp), %r10
pushq %r10
pushq %rax
leaq -0x3f8(%rbp), %rax
pushq %rax
leaq -0x418(%rbp), %rax
pushq %rax
leaq -0x438(%rbp), %rax
pushq %rax
leaq -0x458(%rbp), %rax
pushq %rax
callq 0x6048
addq $0x50, %rsp
movq -0x40(%rbp), %rdi
addq $0x28, %rdi
movq %rbx, %rsi
callq 0x1e0b4
movq %rbx, %rdi
callq 0x6340
leaq -0x578(%rbp), %rdi
callq 0x3100
leaq -0x398(%rbp), %rdi
callq 0x3100
leaq -0x3b8(%rbp), %rdi
callq 0x3100
leaq -0x3d8(%rbp), %rdi
callq 0x3100
leaq -0x3f8(%rbp), %rdi
callq 0x3100
leaq -0x418(%rbp), %rdi
callq 0x3100
leaq -0x438(%rbp), %rdi
callq 0x3100
leaq -0x458(%rbp), %rdi
callq 0x3100
leaq -0x478(%rbp), %rdi
callq 0x3100
leaq -0x498(%rbp), %rdi
callq 0x3100
leaq -0x4b8(%rbp), %rdi
callq 0x3100
movb $0x73, -0x29(%rbp)
leaq -0xba8(%rbp), %rdi
leaq 0x8d17(%rip), %rsi      # 0x240b7
pushq $0x10
popq %rdx
callq 0x3040
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rbx
cmpq -0xc8(%rbp), %rbx
je 0x1b3d6
leaq 0x28(%rbx), %rsi
leaq -0xba8(%rbp), %rdi
callq 0x9266
movq %rbx, %rdi
callq 0x3160
movq %rax, %rbx
jmp 0x1b3b0
leaq -0xba8(%rbp), %rdi
callq 0x32a0
jmp 0x1b809
movq -0x78(%rbp), %rax
movb (%rax), %al
movb %al, -0x2b(%rbp)
movb $0x73, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8865(%rip), %rsi      # 0x23c63
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x158(%rbp), %rsi
callq 0x3060
leaq -0x4f8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x3290
leaq -0x4f8(%rbp), %r14
movq %r14, %rdi
leaq -0x29(%rbp), %rsi
callq 0x22273
movl %eax, %ebx
movq %r14, %rdi
callq 0x3100
testb %bl, %bl
jne 0x1b46d
movq %r13, %rdi
leaq 0x8828(%rip), %rsi      # 0x23c80
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
leaq -0x158(%rbp), %rdi
xorl %esi, %esi
callq 0x11e17
movsd %xmm0, -0x58(%rbp)
cmpb $0x6e, -0x29(%rbp)
je 0x1b3f4
movq %r13, %rdi
leaq 0x88dd(%rip), %rsi      # 0x23d71
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x198(%rbp), %rsi
callq 0x3060
leaq -0x198(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x1b4e3
movq %r13, %rdi
leaq 0x8ab4(%rip), %rsi      # 0x23f82
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b48a
movq %r13, %rdi
leaq 0x8960(%rip), %rsi      # 0x23e53
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x178(%rbp), %rsi
callq 0x3060
leaq -0x178(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x22480
testb %al, %al
jne 0x1b542
movq %r13, %rdi
leaq 0x88b2(%rip), %rsi      # 0x23ddf
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b4e9
movq %r13, %rdi
leaq 0x88b2(%rip), %rsi      # 0x23e04
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3060
leaq -0x1b8(%rbp), %rdi
leaq -0x29(%rbp), %rsi
callq 0x2238b
testb %al, %al
jne 0x1b5a1
movq %r13, %rdi
leaq 0x8805(%rip), %rsi      # 0x23d91
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %rax, %rdi
callq 0x3110
cmpb $0x6e, -0x29(%rbp)
je 0x1b548
movl -0x34(%rbp), %r15d
leaq -0x378(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x3290
leaq -0x358(%rbp), %rdi
leaq -0x98(%rbp), %rsi
callq 0x3290
leaq -0x338(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x3290
leaq -0x318(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3290
leaq -0x2f8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3290
leaq -0x2d8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3290
leaq -0x2b8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x3290
movb -0x2a(%rbp), %bl
leaq -0x298(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x3290
leaq -0x278(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x3290
leaq -0x258(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x3290
leaq -0x4d8(%rbp), %r14
movq %r14, %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3290
subq $0x8, %rsp
movzbl %bl, %eax
movsbl -0x2b(%rbp), %r9d
leaq -0x7a8(%rbp), %rbx
movq %rbx, %rdi
movl %r15d, %esi
leaq -0x378(%rbp), %rdx
leaq -0x358(%rbp), %rcx
leaq -0x338(%rbp), %r8
movsd -0x58(%rbp), %xmm0
pushq %r14
leaq -0x258(%rbp), %r10
pushq %r10
leaq -0x278(%rbp), %r10
pushq %r10
leaq -0x298(%rbp), %r10
pushq %r10
pushq %rax
leaq -0x2b8(%rbp), %rax
pushq %rax
leaq -0x2d8(%rbp), %rax
pushq %rax
leaq -0x2f8(%rbp), %rax
pushq %rax
leaq -0x318(%rbp), %rax
pushq %rax
callq 0x637c
addq $0x50, %rsp
movq -0x40(%rbp), %rdi
addq $0x28, %rdi
movq %rbx, %rsi
callq 0x1e0e2
movq %rbx, %rdi
callq 0x6632
leaq -0x4d8(%rbp), %rdi
callq 0x3100
leaq -0x258(%rbp), %rdi
callq 0x3100
leaq -0x278(%rbp), %rdi
callq 0x3100
leaq -0x298(%rbp), %rdi
callq 0x3100
leaq -0x2b8(%rbp), %rdi
callq 0x3100
leaq -0x2d8(%rbp), %rdi
callq 0x3100
leaq -0x2f8(%rbp), %rdi
callq 0x3100
leaq -0x318(%rbp), %rdi
callq 0x3100
leaq -0x338(%rbp), %rdi
callq 0x3100
leaq -0x358(%rbp), %rdi
callq 0x3100
leaq -0x378(%rbp), %rdi
callq 0x3100
movb $0x73, -0x29(%rbp)
leaq -0x9a8(%rbp), %rdi
leaq 0x891d(%rip), %rsi      # 0x240c7
pushq $0x10
popq %rdx
callq 0x3040
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
cmpq -0xd0(%rbp), %rbx
je 0x1b7e0
leaq 0x28(%rbx), %rsi
leaq -0x9a8(%rbp), %rdi
callq 0x967f
movq %rbx, %rdi
callq 0x3160
movq %rax, %rbx
jmp 0x1b7ba
leaq -0x9a8(%rbp), %rdi
callq 0x32a0
jmp 0x1b84c
movq %r13, %rdi
leaq 0x8a50(%rip), %rsi      # 0x24248
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8a4f(%rip), %rsi      # 0x24262
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2c(%rbp), %rsi
callq 0x3280
jmp 0x1a4d2
movq %r13, %rdi
leaq 0x8a0d(%rip), %rsi      # 0x24248
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movb $0x6e, -0x29(%rbp)
movq %r13, %rdi
leaq 0x8a0b(%rip), %rsi      # 0x24261
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq %r12, %rdi
leaq -0x2c(%rbp), %rsi
callq 0x3280
jmp 0x1a4d2
leaq -0x9a8(%rbp), %rdi
callq 0x32e0
leaq -0xba8(%rbp), %rdi
callq 0x32e0
leaq -0x138(%rbp), %rdi
callq 0x3100
leaq -0x158(%rbp), %rdi
callq 0x3100
leaq -0x78(%rbp), %rdi
callq 0x3100
leaq -0x618(%rbp), %rdi
callq 0x3100
leaq -0x98(%rbp), %rdi
callq 0x3100
leaq -0x218(%rbp), %rdi
callq 0x3100
leaq -0x178(%rbp), %rdi
callq 0x3100
leaq -0x198(%rbp), %rdi
callq 0x3100
leaq -0x1b8(%rbp), %rdi
callq 0x3100
leaq -0xb8(%rbp), %rdi
callq 0x3100
leaq -0xf8(%rbp), %rdi
callq 0x3100
leaq -0x118(%rbp), %rdi
callq 0x3100
leaq -0x1d8(%rbp), %rdi
callq 0x3100
leaq -0x1f8(%rbp), %rdi
callq 0x3100
leaq -0x238(%rbp), %rdi
callq 0x3100
addq $0xb88, %rsp            # imm = 0xB88
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x7a8(%rbp), %rdi
callq 0x6632
jmp 0x1b963
movq %rax, %rbx
leaq -0x4d8(%rbp), %rdi
callq 0x3100
jmp 0x1b974
movq %rax, %rbx
leaq -0x258(%rbp), %rdi
callq 0x3100
jmp 0x1b985
movq %rax, %rbx
leaq -0x278(%rbp), %rdi
callq 0x3100
jmp 0x1b996
movq %rax, %rbx
leaq -0x298(%rbp), %rdi
callq 0x3100
leaq -0x2b8(%rbp), %rdi
callq 0x3100
leaq -0x2d8(%rbp), %rdi
callq 0x3100
leaq -0x2f8(%rbp), %rdi
callq 0x3100
leaq -0x318(%rbp), %rdi
callq 0x3100
leaq -0x338(%rbp), %rdi
callq 0x3100
leaq -0x358(%rbp), %rdi
callq 0x3100
leaq -0x378(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
jmp 0x1b9a2
movq %rax, %rbx
jmp 0x1b9ae
movq %rax, %rbx
jmp 0x1b9ba
movq %rax, %rbx
jmp 0x1b9c6
movq %rax, %rbx
jmp 0x1b9d2
movq %rax, %rbx
jmp 0x1b9de
movq %rax, %rbx
jmp 0x1b9ea
jmp 0x1bbc8
movq %rax, %rbx
leaq -0x7a8(%rbp), %rdi
callq 0x6340
jmp 0x1ba32
movq %rax, %rbx
leaq -0x578(%rbp), %rdi
callq 0x3100
jmp 0x1ba43
movq %rax, %rbx
leaq -0x398(%rbp), %rdi
callq 0x3100
jmp 0x1ba54
movq %rax, %rbx
leaq -0x3b8(%rbp), %rdi
callq 0x3100
jmp 0x1ba65
movq %rax, %rbx
leaq -0x3d8(%rbp), %rdi
callq 0x3100
leaq -0x3f8(%rbp), %rdi
callq 0x3100
leaq -0x418(%rbp), %rdi
callq 0x3100
leaq -0x438(%rbp), %rdi
callq 0x3100
leaq -0x458(%rbp), %rdi
callq 0x3100
leaq -0x478(%rbp), %rdi
callq 0x3100
leaq -0x498(%rbp), %rdi
callq 0x3100
leaq -0x4b8(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
jmp 0x1ba71
movq %rax, %rbx
jmp 0x1ba7d
movq %rax, %rbx
jmp 0x1ba89
movq %rax, %rbx
jmp 0x1ba95
movq %rax, %rbx
jmp 0x1baa1
movq %rax, %rbx
jmp 0x1baad
movq %rax, %rbx
jmp 0x1bab9
jmp 0x1bbc8
movq %rax, %rbx
jmp 0x1bbd7
movq %rax, %rbx
jmp 0x1bbe3
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
movq %rax, %rbx
leaq -0x598(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x4f8(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x5f8(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x558(%rbp), %rdi
jmp 0x1bb91
jmp 0x1bb52
movq %rax, %rbx
leaq -0x7a8(%rbp), %rdi
callq 0x3170
jmp 0x1bbcb
movq %rax, %rbx
leaq -0x5b8(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x518(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x5d8(%rbp), %rdi
jmp 0x1bb91
movq %rax, %rbx
leaq -0x538(%rbp), %rdi
callq 0x3100
jmp 0x1bbcb
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
jmp 0x1bbc8
movq %rax, %rbx
leaq -0x9a8(%rbp), %rdi
callq 0x32e0
leaq -0xba8(%rbp), %rdi
callq 0x32e0
leaq -0x138(%rbp), %rdi
callq 0x3100
leaq -0x158(%rbp), %rdi
callq 0x3100
leaq -0x78(%rbp), %rdi
callq 0x3100
leaq -0x618(%rbp), %rdi
callq 0x3100
leaq -0x98(%rbp), %rdi
callq 0x3100
leaq -0x218(%rbp), %rdi
callq 0x3100
leaq -0x178(%rbp), %rdi
callq 0x3100
leaq -0x198(%rbp), %rdi
callq 0x3100
leaq -0x1b8(%rbp), %rdi
callq 0x3100
leaq -0xb8(%rbp), %rdi
callq 0x3100
leaq -0xf8(%rbp), %rdi
callq 0x3100
leaq -0x118(%rbp), %rdi
callq 0x3100
leaq -0x1d8(%rbp), %rdi
callq 0x3100
leaq -0x1f8(%rbp), %rdi
callq 0x3100
leaq -0x238(%rbp), %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3370