// File: /workspace/github_cpp_makefile_star2_O3/nataly-enne[P]pet-fera/pet_fera_cadastrar.cpp
// Function: cadastrar(std::map<int, MAMIFERO_NATIVO, std::less<int>, std::allocator<std::pair<int const, MAMIFERO_NATIVO>>>&, std::map<int, MAMIFERO_EXOTICO, std::less<int>, std::allocator<std::pair<int const, MAMIFERO_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, MAMIFERO_NATIVO> &mamiferos_nat, map <int, MAMIFERO_EXOTICO> &mamiferos_ex, map <int, VETERINARIO> vets, map <int, TRATADOR> tratadores){
	int id;
	string classe, nome_cientifico, dieta, veterinario, tratador, nome_batismo, autorizacao, autorizacao_IBAMA, origem, cor, nome, id_string, sexo_string, tamanho_string;
	char sexo, tipo_animal, continuar = 's', sucesso, tipo = 'm';
	double tamanho;
	bool check;
	unsigned int old_size;
	ofstream nativos;
	ofstream exoticos;

	do{
		cout << "Deseja cadastrar um MAMIFERO NATIVO ou MAMIFERO 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(mamiferos_nat, mamiferos_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 = "Mammalia";

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

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

			do{
				cout << "Digite a cor do pelo: " << endl;
				getline(cin, cor);
				if(!verifica_cor(cor, sucesso)){
					cout << "ERRO: a cor do animal deve conter letras, espaço ou '-'" << 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 ou '-'" << endl << endl;
				}
			}while(sucesso == 'n');
			

			if(tipo_animal == 'n'){
				old_size = mamiferos_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 no map dados do tipo mamífero nativo passados pelo usuário.
				mamiferos_nat.insert(pair <int, MAMIFERO_NATIVO> (id, MAMIFERO_NATIVO(id, classe, nome, nome_cientifico,sexo, tamanho, dieta, veterinario, tratador, nome_batismo, cor, autorizacao_IBAMA, origem, autorizacao)));
				
				if (mamiferos_nat.size() == old_size){
					cout << "Falha no cadastro do animal! Tente novamente!" << endl;
					continuar = 's';
					continue;
				}
			}
			else{
				old_size = mamiferos_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 << endl;
					}
				}while(sucesso == 'n');

				// Armazenando no map dados do tipo mamífero exótico passados pelo usuário.
				mamiferos_ex.insert(pair <int, MAMIFERO_EXOTICO> (id, MAMIFERO_EXOTICO(id, classe, nome, nome_cientifico,sexo, tamanho, dieta,veterinario, tratador, nome_batismo, cor, autorizacao_IBAMA, origem, autorizacao)));
				
				if (mamiferos_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(!mamiferos_nat.empty()){
		nativos.open("mamiferos_nat.txt");
		for(auto it = mamiferos_nat.begin(); it != mamiferos_nat.end(); it++){
			nativos << (*it).second;
		}
		nativos.close();
	}
	if(!mamiferos_ex.empty()){
		exoticos.open("mamiferos_ex.txt");
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			exoticos << (*it).second;
		}
		exoticos.close();
	}	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc58, %rsp            # imm = 0xC58
movq %rcx, -0x220(%rbp)
movq %rdx, -0x228(%rbp)
movq %rsi, -0x48(%rbp)
movq %rdi, -0x40(%rbp)
leaq -0x1a8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x188(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x168(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x100(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xe0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xc0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xa0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x148(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x80(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x128(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x60(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x208(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x1c8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x1e8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movb $0x73, -0x2a(%rbp)
leaq -0xaf8(%rbp), %rdi
callq 0x3360
leaq -0x8f8(%rbp), %rdi
callq 0x3360
movq 0x321e2(%rip), %r15     # 0x47fd0
movq 0x321eb(%rip), %rbx     # 0x47fe0
leaq -0x29(%rbp), %r12
movl $0x54, %edx
movq %r15, %rdi
leaq 0x2510c(%rip), %rsi     # 0x3af14
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rbx, %rdi
leaq -0x2b(%rbp), %rsi
callq 0x3280
movzbl -0x2b(%rbp), %eax
cmpl $0x6e, %eax
je 0x15e92
cmpl $0x65, %eax
je 0x15e92
movl $0x1f, %edx
movq %r15, %rdi
leaq 0x24cd0(%rip), %rsi     # 0x3ab2d
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movb $0x73, -0x2a(%rbp)
jmp 0x15df9
movl $0xc, %edx
movq %r15, %rdi
leaq 0x2489e(%rip), %rsi     # 0x3a73f
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rbx, %rdi
leaq -0x218(%rbp), %rsi
callq 0x3270
movb -0x2b(%rbp), %r14b
leaq -0x518(%rbp), %rax
movq %rax, -0x528(%rbp)
movq -0x218(%rbp), %rsi
movq -0x210(%rbp), %rdx
addq %rsi, %rdx
leaq -0x528(%rbp), %rdi
callq 0x4574
movsbl %r14b, %edx
movq -0x40(%rbp), %rdi
movq -0x48(%rbp), %rsi
leaq -0x528(%rbp), %rcx
movq %r12, %r8
callq 0x37796
movl %eax, %r13d
movq -0x528(%rbp), %rdi
leaq -0x518(%rbp), %rax
cmpq %rax, %rdi
je 0x15f41
callq 0x31d0
testb %r13b, %r13b
je 0x15f8a
leaq -0x6f8(%rbp), %r14
movq %r14, %rdi
leaq -0x218(%rbp), %rsi
movl $0x18, %edx
callq 0x3310
movq %r14, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3120
movq %r14, %rdi
movq 0x32039(%rip), %rsi     # 0x47fb0
callq 0x3160
leaq -0x678(%rbp), %rdi
callq 0x30d0
jmp 0x15fef
movl $0x36, %edx
movq %r15, %rdi
leaq 0x247b3(%rip), %rsi     # 0x3a74c
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x15e92
movq -0x1b0(%rbp), %rdx
movl $0x8, %r8d
leaq -0x1b8(%rbp), %rdi
xorl %esi, %esi
leaq 0x24f53(%rip), %rcx     # 0x3af69
callq 0x3300
movl $0xe, %edx
movq %r15, %rdi
leaq 0x24759(%rip), %rsi     # 0x3a783
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rbx, %rdi
callq 0x33a0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x70(%rbp), %rsi
callq 0x33c0
leaq -0x70(%rbp), %rdi
movq %r12, %rsi
callq 0x3821c
testb %al, %al
jne 0x160f6
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x246f2(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq -0x68(%rbp), %r14
testq %r14, %r14
je 0x1611c
movq -0x70(%rbp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %edi
callq 0x32c0
movb %al, (%r12,%r13)
incq %r13
cmpq %r13, %r14
jne 0x16106
cmpb $0x6e, -0x29(%rbp)
leaq -0x29(%rbp), %r12
je 0x1601b
movl $0x1a, %edx
movq %r15, %rdi
leaq 0x24a1d(%rip), %rsi     # 0x3ab56
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x198(%rbp), %rsi
callq 0x33c0
leaq -0x198(%rbp), %rdi
movq %r12, %rsi
callq 0x38318
testb %al, %al
jne 0x16203
movl $0x35, %edx
movq %r15, %rdi
leaq 0x249c4(%rip), %rsi     # 0x3ab71
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x1612a
movl $0x10, %edx
movq %r15, %rdi
leaq 0x2498b(%rip), %rsi     # 0x3aba7
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x178(%rbp), %rsi
callq 0x33c0
leaq -0x178(%rbp), %rdi
movq %r12, %rsi
callq 0x38bdf
testb %al, %al
jne 0x162e6
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x24502(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x1620d
jmp 0x16358
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x22, %edx
movq %r15, %rdi
leaq 0x248af(%rip), %rsi     # 0x3abd7
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movb $0x6e, -0x29(%rbp)
movl $0x1e, %edx
movq %r15, %rdi
leaq 0x24851(%rip), %rsi     # 0x3abb8
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x110(%rbp), %rsi
callq 0x33c0
leaq -0x110(%rbp), %rdi
movq %r12, %rsi
callq 0x3821c
testb %al, %al
jne 0x16431
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x243b7(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq -0x4f8(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
addq %rsi, %rdx
leaq -0x508(%rbp), %rdi
callq 0x4574
movq -0x228(%rbp), %rdi
leaq -0x508(%rbp), %rsi
callq 0x36d35
movl %eax, %r13d
movq -0x508(%rbp), %rdi
leaq -0x4f8(%rbp), %rax
cmpq %rax, %rdi
je 0x1648a
callq 0x31d0
testb %r13b, %r13b
je 0x162f2
cmpb $0x6e, -0x29(%rbp)
je 0x16358
movl $0x1b, %edx
movq %r15, %rdi
leaq 0x2474e(%rip), %rsi     # 0x3abfa
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0xf0(%rbp), %rsi
callq 0x33c0
leaq -0xf0(%rbp), %rdi
movq %r12, %rsi
callq 0x3821c
testb %al, %al
jne 0x16576
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x24272(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
leaq -0x4d8(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4e8(%rbp), %rdi
callq 0x4574
xorl %edi, %edi
movq -0x220(%rbp), %rsi
leaq -0x4e8(%rbp), %rdx
movl $0x6d, %ecx
callq 0x36dd5
movl %eax, %r13d
movq -0x4e8(%rbp), %rdi
leaq -0x4d8(%rbp), %rax
cmpq %rax, %rdi
je 0x165d6
callq 0x31d0
testb %r13b, %r13b
je 0x165ea
cmpb $0x6e, -0x29(%rbp)
je 0x1649d
jmp 0x1667f
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x31, %edx
movq %r15, %rdi
leaq 0x245f6(%rip), %rsi     # 0x3ac16
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movb $0x6e, -0x29(%rbp)
jmp 0x1649d
movl $0x1a, %edx
movq %r15, %rdi
leaq 0x245ba(%rip), %rsi     # 0x3ac48
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0xd0(%rbp), %rsi
callq 0x33c0
leaq -0xd0(%rbp), %rdi
movq %r12, %rsi
callq 0x3821c
testb %al, %al
jne 0x16758
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x24090(%rip), %rsi     # 0x3a792
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq -0xc8(%rbp), %r14
testq %r14, %r14
je 0x16784
movq -0xd0(%rbp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %edi
callq 0x32c0
movb %al, (%r12,%r13)
incq %r13
cmpq %r13, %r14
jne 0x1676e
cmpb $0x6e, -0x29(%rbp)
leaq -0x29(%rbp), %r12
je 0x1667f
movl $0x19, %edx
movq %r15, %rdi
leaq 0x244c2(%rip), %rsi     # 0x3ac63
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x33c0
movq -0x1d0(%rbp), %r14
testq %r14, %r14
je 0x1681f
movq -0x1d8(%rbp), %r12
xorl %r13d, %r13d
movsbl (%r12,%r13), %edi
callq 0x33d0
movb %al, (%r12,%r13)
incq %r13
cmpq %r13, %r14
jne 0x16809
leaq -0x1d8(%rbp), %r14
movq %r14, %rdi
leaq 0x2444d(%rip), %rsi     # 0x3ac7d
callq 0x30c0
testl %eax, %eax
je 0x168c9
movq %r14, %rdi
leaq 0x24438(%rip), %rsi     # 0x3ac7f
callq 0x30c0
testl %eax, %eax
je 0x168c9
movb $0x6e, -0x29(%rbp)
movl $0x21, %edx
movq %r15, %rdi
leaq 0x2441e(%rip), %rsi     # 0x3ac81
callq 0x3250
leaq -0x29(%rbp), %r12
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x16792
jmp 0x168dd
movq -0x1d8(%rbp), %rax
movb (%rax), %al
movb %al, -0x2c(%rbp)
movb $0x73, -0x29(%rbp)
leaq -0x29(%rbp), %r12
movl $0x1c, %edx
movq %r15, %rdi
leaq 0x243b7(%rip), %rsi     # 0x3aca3
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x33c0
leaq -0x4b8(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq -0x1f8(%rbp), %rsi
movq -0x1f0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4c8(%rbp), %rdi
callq 0x4574
leaq -0x4c8(%rbp), %rdi
movq %r12, %rsi
callq 0x38d29
movl %eax, %r13d
movq -0x4c8(%rbp), %rdi
leaq -0x4b8(%rbp), %rax
cmpq %rax, %rdi
je 0x16993
callq 0x31d0
testb %r13b, %r13b
jne 0x169fd
movl $0x34, %edx
movq %r15, %rdi
leaq 0x24319(%rip), %rsi     # 0x3acc0
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq -0x1f8(%rbp), %r14
callq 0x3040
movq %rax, %r13
movl (%rax), %r12d
movl $0x0, (%rax)
movq %r14, %rdi
leaq -0x6f8(%rbp), %rsi
callq 0x3170
movsd %xmm0, -0x118(%rbp)
cmpq %r14, -0x6f8(%rbp)
je 0x17ad8
movl (%r13), %eax
testl %eax, %eax
je 0x16a4b
cmpl $0x22, %eax
jne 0x16a4f
jmp 0x17ae4
movl %r12d, (%r13)
cmpb $0x6e, -0x29(%rbp)
leaq -0x29(%rbp), %r12
je 0x168dd
movl $0x16, %edx
movq %r15, %rdi
leaq 0x24506(%rip), %rsi     # 0x3af72
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x138(%rbp), %rsi
callq 0x33c0
leaq -0x138(%rbp), %rdi
movq %r12, %rsi
callq 0x3917a
testb %al, %al
jne 0x16b36
movl $0x38, %edx
movq %r15, %rdi
leaq 0x244a9(%rip), %rsi     # 0x3af89
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x16a5d
movl $0x1f, %edx
movq %r15, %rdi
leaq 0x24262(%rip), %rsi     # 0x3adb1
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x158(%rbp), %rsi
callq 0x33c0
leaq -0x158(%rbp), %rdi
movq %r12, %rsi
callq 0x38ed7
testb %al, %al
jne 0x16c19
movl $0x36, %edx
movq %r15, %rdi
leaq 0x243ff(%rip), %rsi     # 0x3afc2
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x16b40
cmpb $0x6e, -0x2b(%rbp)
jne 0x171e2
movq -0x40(%rbp), %rax
movl 0x28(%rax), %eax
movq %rax, -0x50(%rbp)
movl $0x17, %edx
movq %r15, %rdi
leaq 0x241c0(%rip), %rsi     # 0x3ae07
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x90(%rbp), %rsi
callq 0x33c0
leaq -0x90(%rbp), %rdi
movq %r12, %rsi
callq 0x39038
testb %al, %al
jne 0x16d11
movl $0x24, %edx
movq %r15, %rdi
leaq 0x24164(%rip), %rsi     # 0x3ae1f
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x16c38
movl $0x20, %edx
movq %r15, %rdi
leaq 0x2411a(%rip), %rsi     # 0x3ae44
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x33c0
leaq -0xb0(%rbp), %rdi
movq %r12, %rsi
callq 0x38ed7
testb %al, %al
jne 0x16df4
movl $0x35, %edx
movq %r15, %rdi
leaq 0x24033(%rip), %rsi     # 0x3add1
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x16d1b
movl -0x30(%rbp), %r14d
leaq -0x498(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movq -0x1b8(%rbp), %rsi
movq -0x1b0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4a8(%rbp), %rdi
callq 0x4574
leaq -0x478(%rbp), %rax
movq %rax, -0x488(%rbp)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0x488(%rbp), %rdi
callq 0x4574
leaq -0x458(%rbp), %rax
movq %rax, -0x468(%rbp)
movq -0x198(%rbp), %rsi
movq -0x190(%rbp), %rdx
addq %rsi, %rdx
leaq -0x468(%rbp), %rdi
callq 0x4574
leaq -0x438(%rbp), %rax
movq %rax, -0x448(%rbp)
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
addq %rsi, %rdx
leaq -0x448(%rbp), %rdi
callq 0x4574
leaq -0x418(%rbp), %rax
movq %rax, -0x428(%rbp)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
addq %rsi, %rdx
leaq -0x428(%rbp), %rdi
callq 0x4574
leaq -0x3f8(%rbp), %rax
movq %rax, -0x408(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x408(%rbp), %rdi
callq 0x4574
leaq -0x3d8(%rbp), %rax
movq %rax, -0x3e8(%rbp)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3e8(%rbp), %rdi
callq 0x4574
leaq -0x3b8(%rbp), %rax
movq %rax, -0x3c8(%rbp)
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3c8(%rbp), %rdi
callq 0x4574
leaq -0x398(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq -0x158(%rbp), %rsi
movq -0x150(%rbp), %rdx
addq %rsi, %rdx
leaq -0x3a8(%rbp), %rdi
callq 0x4574
leaq -0x378(%rbp), %rax
movq %rax, -0x388(%rbp)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
leaq -0x388(%rbp), %rdi
callq 0x4574
movl %r14d, -0x34(%rbp)
leaq -0x558(%rbp), %rax
movq %rax, -0x568(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x568(%rbp), %r13
movq %r13, %rdi
callq 0x4574
movsbl -0x2c(%rbp), %r9d
leaq -0xc80(%rbp), %r14
movq %r14, %rdi
movl -0x34(%rbp), %esi
leaq -0x4a8(%rbp), %rdx
leaq -0x488(%rbp), %rcx
leaq -0x468(%rbp), %r8
movsd -0x118(%rbp), %xmm0
pushq %r13
leaq -0x388(%rbp), %rax
pushq %rax
leaq -0x3a8(%rbp), %rax
pushq %rax
leaq -0x3c8(%rbp), %rax
pushq %rax
leaq -0x3e8(%rbp), %rax
pushq %rax
leaq -0x408(%rbp), %rax
pushq %rax
leaq -0x428(%rbp), %rax
pushq %rax
leaq -0x448(%rbp), %rax
pushq %rax
callq 0x663c
addq $0x40, %rsp
leaq -0x6f8(%rbp), %r13
movq %r13, %rdi
leaq -0x30(%rbp), %rsi
movq %r14, %rdx
callq 0x1cf00
movq -0x40(%rbp), %rdi
movq %r13, %rsi
callq 0x1deda
leaq -0x6f0(%rbp), %rdi
callq 0x6afc
leaq -0xc80(%rbp), %rdi
callq 0x6afc
movq -0x568(%rbp), %rdi
leaq -0x558(%rbp), %rax
cmpq %rax, %rdi
je 0x170a0
callq 0x31d0
movq -0x388(%rbp), %rdi
leaq -0x378(%rbp), %rax
cmpq %rax, %rdi
je 0x170b8
callq 0x31d0
movq -0x3a8(%rbp), %rdi
leaq -0x398(%rbp), %rax
cmpq %rax, %rdi
je 0x170d0
callq 0x31d0
movq -0x3c8(%rbp), %rdi
leaq -0x3b8(%rbp), %rax
cmpq %rax, %rdi
je 0x170e8
callq 0x31d0
movq -0x3e8(%rbp), %rdi
leaq -0x3d8(%rbp), %rax
cmpq %rax, %rdi
je 0x17100
callq 0x31d0
movq -0x408(%rbp), %rdi
leaq -0x3f8(%rbp), %rax
cmpq %rax, %rdi
je 0x17118
callq 0x31d0
movq -0x428(%rbp), %rdi
leaq -0x418(%rbp), %rax
cmpq %rax, %rdi
je 0x17130
callq 0x31d0
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x17148
callq 0x31d0
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x17160
callq 0x31d0
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x17178
callq 0x31d0
movq -0x4a8(%rbp), %rdi
leaq -0x498(%rbp), %rax
cmpq %rax, %rdi
je 0x17190
callq 0x31d0
movq -0x40(%rbp), %rax
movq -0x50(%rbp), %rcx
cmpq %rcx, 0x28(%rax)
jne 0x17793
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x23cb4(%rip), %rsi     # 0x3ae65
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
jmp 0x15e89
movq -0x48(%rbp), %rax
movl 0x28(%rax), %eax
movq %rax, -0x50(%rbp)
movl $0x1a, %edx
movq %r15, %rdi
leaq 0x23c97(%rip), %rsi     # 0x3ae93
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0x90(%rbp), %rsi
callq 0x33c0
leaq -0x90(%rbp), %rdi
movq %r12, %rsi
callq 0x39038
testb %al, %al
jne 0x172c6
movl $0x24, %edx
movq %r15, %rdi
leaq 0x23baf(%rip), %rsi     # 0x3ae1f
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x171ed
movl $0x20, %edx
movq %r15, %rdi
leaq 0x23b65(%rip), %rsi     # 0x3ae44
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %edx
movq %rbx, %rdi
leaq -0xb0(%rbp), %rsi
callq 0x33c0
leaq -0xb0(%rbp), %rdi
movq %r12, %rsi
callq 0x38ed7
testb %al, %al
jne 0x173a9
movl $0x35, %edx
movq %r15, %rdi
leaq 0x23a7e(%rip), %rsi     # 0x3add1
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
cmpb $0x6e, -0x29(%rbp)
je 0x172d0
movl -0x30(%rbp), %r14d
leaq -0x358(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x1b8(%rbp), %rsi
movq -0x1b0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x368(%rbp), %rdi
callq 0x4574
leaq -0x338(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
addq %rsi, %rdx
leaq -0x348(%rbp), %rdi
callq 0x4574
leaq -0x318(%rbp), %rax
movq %rax, -0x328(%rbp)
movq -0x198(%rbp), %rsi
movq -0x190(%rbp), %rdx
addq %rsi, %rdx
leaq -0x328(%rbp), %rdi
callq 0x4574
leaq -0x2f8(%rbp), %rax
movq %rax, -0x308(%rbp)
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
addq %rsi, %rdx
leaq -0x308(%rbp), %rdi
callq 0x4574
leaq -0x2d8(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x110(%rbp), %rsi
movq -0x108(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2e8(%rbp), %rdi
callq 0x4574
leaq -0x2b8(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2c8(%rbp), %rdi
callq 0x4574
leaq -0x298(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2a8(%rbp), %rdi
callq 0x4574
leaq -0x278(%rbp), %rax
movq %rax, -0x288(%rbp)
movq -0x138(%rbp), %rsi
movq -0x130(%rbp), %rdx
addq %rsi, %rdx
leaq -0x288(%rbp), %rdi
callq 0x4574
leaq -0x258(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x158(%rbp), %rsi
movq -0x150(%rbp), %rdx
addq %rsi, %rdx
leaq -0x268(%rbp), %rdi
callq 0x4574
leaq -0x238(%rbp), %rax
movq %rax, -0x248(%rbp)
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
addq %rsi, %rdx
leaq -0x248(%rbp), %rdi
callq 0x4574
movl %r14d, -0x34(%rbp)
leaq -0x538(%rbp), %rax
movq %rax, -0x548(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x548(%rbp), %r13
movq %r13, %rdi
callq 0x4574
movsbl -0x2c(%rbp), %r9d
leaq -0xc80(%rbp), %r14
movq %r14, %rdi
movl -0x34(%rbp), %esi
leaq -0x368(%rbp), %rdx
leaq -0x348(%rbp), %rcx
leaq -0x328(%rbp), %r8
movsd -0x118(%rbp), %xmm0
pushq %r13
leaq -0x248(%rbp), %rax
pushq %rax
leaq -0x268(%rbp), %rax
pushq %rax
leaq -0x288(%rbp), %rax
pushq %rax
leaq -0x2a8(%rbp), %rax
pushq %rax
leaq -0x2c8(%rbp), %rax
pushq %rax
leaq -0x2e8(%rbp), %rax
pushq %rax
leaq -0x308(%rbp), %rax
pushq %rax
callq 0x6b52
addq $0x40, %rsp
leaq -0x6f8(%rbp), %r13
movq %r13, %rdi
leaq -0x30(%rbp), %rsi
movq %r14, %rdx
callq 0x1cf86
movq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x1e10a
leaq -0x6f0(%rbp), %rdi
callq 0x6fca
leaq -0xc80(%rbp), %rdi
callq 0x6fca
movq -0x548(%rbp), %rdi
leaq -0x538(%rbp), %rax
cmpq %rax, %rdi
je 0x17655
callq 0x31d0
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x1766d
callq 0x31d0
movq -0x268(%rbp), %rdi
leaq -0x258(%rbp), %rax
cmpq %rax, %rdi
je 0x17685
callq 0x31d0
movq -0x288(%rbp), %rdi
leaq -0x278(%rbp), %rax
cmpq %rax, %rdi
je 0x1769d
callq 0x31d0
movq -0x2a8(%rbp), %rdi
leaq -0x298(%rbp), %rax
cmpq %rax, %rdi
je 0x176b5
callq 0x31d0
movq -0x2c8(%rbp), %rdi
leaq -0x2b8(%rbp), %rax
cmpq %rax, %rdi
je 0x176cd
callq 0x31d0
movq -0x2e8(%rbp), %rdi
leaq -0x2d8(%rbp), %rax
cmpq %rax, %rdi
je 0x176e5
callq 0x31d0
movq -0x308(%rbp), %rdi
leaq -0x2f8(%rbp), %rax
cmpq %rax, %rdi
je 0x176fd
callq 0x31d0
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x17715
callq 0x31d0
movq -0x348(%rbp), %rdi
leaq -0x338(%rbp), %rax
cmpq %rax, %rdi
je 0x1772d
callq 0x31d0
movq -0x368(%rbp), %rdi
leaq -0x358(%rbp), %rax
cmpq %rax, %rdi
je 0x17745
callq 0x31d0
movq -0x48(%rbp), %rax
movq -0x50(%rbp), %rcx
cmpq %rcx, 0x28(%rax)
jne 0x17793
movl $0x2d, %edx
movq %r15, %rdi
leaq 0x23703(%rip), %rsi     # 0x3ae65
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
jmp 0x15e89
movl $0x1f, %edx
movq %r15, %rdi
leaq 0x2370c(%rip), %rsi     # 0x3aeae
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movl $0x24, %edx
movq %r15, %rdi
leaq 0x236c7(%rip), %rsi     # 0x3aece
callq 0x3250
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31f0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3130
movq %rbx, %rdi
leaq -0x2a(%rbp), %rsi
callq 0x3280
cmpb $0x73, -0x2a(%rbp)
je 0x15df9
movq -0x40(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x178af
leaq 0x2379e(%rip), %rsi     # 0x3aff9
leaq -0xaf8(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x178a3
movq %rax, %r15
leaq -0xaf8(%rbp), %r14
leaq 0x28(%rbx), %rsi
movq %r14, %rdi
callq 0xad98
movq %rbx, %rdi
callq 0x3140
movq %rax, %rbx
cmpq %r15, %rax
jne 0x17887
leaq -0xaf8(%rbp), %rdi
callq 0x32a0
movq -0x48(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x17915
leaq 0x2374a(%rip), %rsi     # 0x3b00b
leaq -0x8f8(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x17909
movq %rax, %r15
leaq -0x8f8(%rbp), %r14
leaq 0x28(%rbx), %rsi
movq %r14, %rdi
callq 0xb3eb
movq %rbx, %rdi
callq 0x3140
movq %rax, %rbx
cmpq %r15, %rax
jne 0x178ed
leaq -0x8f8(%rbp), %rdi
callq 0x32a0
movq 0x306ac(%rip), %rax     # 0x47fc8
movq (%rax), %rbx
movq 0x18(%rax), %r14
leaq -0x8f0(%rbp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, -0x8f8(%rbp,%rax)
callq 0x3190
movl $0xf8, %r15d
leaq -0x8f8(%rbp), %rdi
addq %r15, %rdi
callq 0x30d0
leaq -0xaf0(%rbp), %rdi
movq %rbx, -0x8(%rdi)
movq -0x18(%rbx), %rax
movq %r14, -0xaf8(%rbp,%rax)
callq 0x3190
leaq -0xaf8(%rbp), %rdi
addq %r15, %rdi
callq 0x30d0
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x17997
callq 0x31d0
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x179af
callq 0x31d0
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0x179c7
callq 0x31d0
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x179d9
callq 0x31d0
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x179f1
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x17a06
callq 0x31d0
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x17a1e
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x17a36
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x17a4e
callq 0x31d0
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x17a66
callq 0x31d0
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x17a7e
callq 0x31d0
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x17a96
callq 0x31d0
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x17aae
callq 0x31d0
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x17ac6
callq 0x31d0
addq $0xc58, %rsp            # imm = 0xC58
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x236d3(%rip), %rdi     # 0x3b1b2
callq 0x3110
leaq 0x236c7(%rip), %rdi     # 0x3b1b2
callq 0x32b0
movq %rax, %rbx
movq 0x304ce(%rip), %rax     # 0x47fc8
movq (%rax), %r14
movq 0x18(%rax), %r15
jmp 0x17f1e
movq %rax, %rbx
jmp 0x17f46
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
movq %rax, %rbx
jmp 0x17e01
movq %rax, %rbx
jmp 0x17b39
movq %rax, %rbx
leaq -0x6f0(%rbp), %rdi
callq 0x6fca
leaq -0xc80(%rbp), %rdi
callq 0x6fca
jmp 0x17d11
movq %rax, %rbx
jmp 0x17de9
movq %rax, %rbx
jmp 0x17dd1
movq %rax, %rbx
jmp 0x17db9
movq %rax, %rbx
jmp 0x17da1
movq %rax, %rbx
jmp 0x17d89
jmp 0x17ee5
movq %rax, %rbx
jmp 0x17ce3
movq %rax, %rbx
jmp 0x17d71
movq %rax, %rbx
jmp 0x17ccb
movq %rax, %rbx
jmp 0x17cb3
movq %rax, %rbx
jmp 0x17c9b
movq %rax, %rbx
jmp 0x17c83
movq %rax, %rbx
jmp 0x17c6b
movq %rax, %rbx
jmp 0x17c53
movq %rax, %rbx
jmp 0x17c3b
movq %rax, %rbx
jmp 0x17c23
movq %rax, %rbx
jmp 0x17d59
movq %rax, %rbx
jmp 0x17c0b
movq %rax, %rbx
jmp 0x17bf3
movq %rax, %rbx
jmp 0x17be7
movq %rax, %rbx
leaq -0x6f0(%rbp), %rdi
callq 0x6afc
leaq -0xc80(%rbp), %rdi
callq 0x6afc
movq -0x568(%rbp), %rdi
leaq -0x558(%rbp), %rax
cmpq %rax, %rdi
je 0x17c0b
callq 0x31d0
movq -0x388(%rbp), %rdi
leaq -0x378(%rbp), %rax
cmpq %rax, %rdi
je 0x17c23
callq 0x31d0
movq -0x3a8(%rbp), %rdi
leaq -0x398(%rbp), %rax
cmpq %rax, %rdi
je 0x17c3b
callq 0x31d0
movq -0x3c8(%rbp), %rdi
leaq -0x3b8(%rbp), %rax
cmpq %rax, %rdi
je 0x17c53
callq 0x31d0
movq -0x3e8(%rbp), %rdi
leaq -0x3d8(%rbp), %rax
cmpq %rax, %rdi
je 0x17c6b
callq 0x31d0
movq -0x408(%rbp), %rdi
leaq -0x3f8(%rbp), %rax
cmpq %rax, %rdi
je 0x17c83
callq 0x31d0
movq -0x428(%rbp), %rdi
leaq -0x418(%rbp), %rax
cmpq %rax, %rdi
je 0x17c9b
callq 0x31d0
movq -0x448(%rbp), %rdi
leaq -0x438(%rbp), %rax
cmpq %rax, %rdi
je 0x17cb3
callq 0x31d0
movq -0x468(%rbp), %rdi
leaq -0x458(%rbp), %rax
cmpq %rax, %rdi
je 0x17ccb
callq 0x31d0
movq -0x488(%rbp), %rdi
leaq -0x478(%rbp), %rax
cmpq %rax, %rdi
je 0x17ce3
callq 0x31d0
movq -0x4a8(%rbp), %rdi
leaq -0x498(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
jmp 0x17ec0
movq %rax, %rbx
jmp 0x17d41
movq %rax, %rbx
jmp 0x17d29
jmp 0x17ee5
movq %rax, %rbx
movq -0x548(%rbp), %rdi
leaq -0x538(%rbp), %rax
cmpq %rax, %rdi
je 0x17d29
callq 0x31d0
movq -0x248(%rbp), %rdi
leaq -0x238(%rbp), %rax
cmpq %rax, %rdi
je 0x17d41
callq 0x31d0
movq -0x268(%rbp), %rdi
leaq -0x258(%rbp), %rax
cmpq %rax, %rdi
je 0x17d59
callq 0x31d0
movq -0x288(%rbp), %rdi
leaq -0x278(%rbp), %rax
cmpq %rax, %rdi
je 0x17d71
callq 0x31d0
movq -0x2a8(%rbp), %rdi
leaq -0x298(%rbp), %rax
cmpq %rax, %rdi
je 0x17d89
callq 0x31d0
movq -0x2c8(%rbp), %rdi
leaq -0x2b8(%rbp), %rax
cmpq %rax, %rdi
je 0x17da1
callq 0x31d0
movq -0x2e8(%rbp), %rdi
leaq -0x2d8(%rbp), %rax
cmpq %rax, %rdi
je 0x17db9
callq 0x31d0
movq -0x308(%rbp), %rdi
leaq -0x2f8(%rbp), %rax
cmpq %rax, %rdi
je 0x17dd1
callq 0x31d0
movq -0x328(%rbp), %rdi
leaq -0x318(%rbp), %rax
cmpq %rax, %rdi
je 0x17de9
callq 0x31d0
movq -0x348(%rbp), %rdi
leaq -0x338(%rbp), %rax
cmpq %rax, %rdi
je 0x17e01
callq 0x31d0
movq -0x368(%rbp), %rdi
leaq -0x358(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
jmp 0x17ec0
jmp 0x17ee5
jmp 0x17ee5
movq %rax, %rbx
movq 0x3017f(%rip), %rsi     # 0x47fb0
leaq -0x6f8(%rbp), %rdi
callq 0x3160
leaq -0x678(%rbp), %rdi
callq 0x30d0
jmp 0x17ee8
movq %rax, %rbx
movq -0x4c8(%rbp), %rdi
leaq -0x4b8(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
jmp 0x17ec0
movq %rax, %rbx
movq -0x528(%rbp), %rdi
leaq -0x518(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
jmp 0x17ec0
movq %rax, %rbx
cmpl $0x0, (%r13)
jne 0x17ee8
movl %r12d, (%r13)
jmp 0x17ee8
movq %rax, %rbx
movq -0x4e8(%rbp), %rdi
leaq -0x4d8(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
jmp 0x17ec0
movq %rax, %rbx
movq -0x508(%rbp), %rdi
leaq -0x4f8(%rbp), %rax
cmpq %rax, %rdi
je 0x17ee8
callq 0x31d0
jmp 0x17ee8
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
jmp 0x17ee5
movq %rax, %rbx
movq 0x300d9(%rip), %rax     # 0x47fc8
movq (%rax), %r14
movq 0x18(%rax), %r15
leaq -0x8f0(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0x8f8(%rbp,%rax)
callq 0x3190
leaq -0x800(%rbp), %rdi
callq 0x30d0
leaq -0xaf0(%rbp), %rdi
movq %r14, -0x8(%rdi)
movq -0x18(%r14), %rax
movq %r15, -0xaf8(%rbp,%rax)
callq 0x3190
leaq -0xa00(%rbp), %rdi
callq 0x30d0
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x17f5e
callq 0x31d0
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x17f76
callq 0x31d0
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0x17f8e
callq 0x31d0
movq -0x70(%rbp), %rdi
leaq -0x60(%rbp), %rax
cmpq %rax, %rdi
je 0x17fa0
callq 0x31d0
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x17fb8
callq 0x31d0
movq -0x90(%rbp), %rdi
leaq -0x80(%rbp), %rax
cmpq %rax, %rdi
je 0x17fcd
callq 0x31d0
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x17fe5
callq 0x31d0
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x17ffd
callq 0x31d0
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x18015
callq 0x31d0
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x1802d
callq 0x31d0
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x18045
callq 0x31d0
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x1805d
callq 0x31d0
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x18075
callq 0x31d0
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x1808d
callq 0x31d0
movq %rbx, %rdi
callq 0x3380