// File: 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
subq $0x1520, %rsp           # imm = 0x1520
movq %rdx, -0x11c8(%rbp)
movq %rcx, -0x11c0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3300
leaq -0x68(%rbp), %rdi
callq 0x3300
leaq -0x88(%rbp), %rdi
callq 0x3300
leaq -0xa8(%rbp), %rdi
callq 0x3300
leaq -0xc8(%rbp), %rdi
callq 0x3300
leaq -0xe8(%rbp), %rdi
callq 0x3300
leaq -0x108(%rbp), %rdi
callq 0x3300
leaq -0x128(%rbp), %rdi
callq 0x3300
leaq -0x148(%rbp), %rdi
callq 0x3300
leaq -0x168(%rbp), %rdi
callq 0x3300
leaq -0x188(%rbp), %rdi
callq 0x3300
leaq -0x1a8(%rbp), %rdi
callq 0x3300
leaq -0x1c8(%rbp), %rdi
callq 0x3300
leaq -0x1e8(%rbp), %rdi
callq 0x3300
movb $0x73, -0x1eb(%rbp)
movb $0x6d, -0x1ed(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x33b0
jmp 0x192a7
leaq -0x610(%rbp), %rdi
callq 0x33b0
jmp 0x192b5
jmp 0x192b7
movq 0x37cfa(%rip), %rdi     # 0x50fb8
leaq 0x28c0f(%rip), %rsi     # 0x41ed4
callq 0x3240
movq %rax, -0x11d0(%rbp)
jmp 0x192d3
movq -0x11d0(%rbp), %rdi
movq 0x37cbf(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x192e8
movq 0x37ce9(%rip), %rdi     # 0x50fd8
leaq -0x1ea(%rbp), %rsi
callq 0x32e0
jmp 0x192fd
movsbl -0x1ea(%rbp), %eax
cmpl $0x6e, %eax
je 0x1939f
movsbl -0x1ea(%rbp), %eax
cmpl $0x65, %eax
je 0x1939f
movq 0x37c94(%rip), %rdi     # 0x50fb8
leaq 0x287c2(%rip), %rsi     # 0x41aed
callq 0x3240
movq %rax, -0x11d8(%rbp)
jmp 0x19339
movq -0x11d8(%rbp), %rdi
movq 0x37c59(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1934e
movb $0x73, -0x1eb(%rbp)
jmp 0x1aefe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1b145
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1b139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1b12d
jmp 0x193a1
movq 0x37c10(%rip), %rdi     # 0x50fb8
leaq 0x28350(%rip), %rsi     # 0x416ff
callq 0x3240
movq %rax, -0x11e0(%rbp)
jmp 0x193bd
movq -0x11e0(%rbp), %rdi
movq 0x37bd5(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x193d2
movq 0x37bff(%rip), %rdi     # 0x50fd8
leaq -0x1a8(%rbp), %rsi
callq 0x32c0
jmp 0x193e7
movq -0x8(%rbp), %rax
movq %rax, -0x11f8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x11f0(%rbp)
movb -0x1ea(%rbp), %al
movb %al, -0x11e1(%rbp)
leaq -0x630(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3100
jmp 0x1941e
movq -0x11f0(%rbp), %rsi
movq -0x11f8(%rbp), %rdi
movb -0x11e1(%rbp), %al
movsbl %al, %edx
leaq -0x630(%rbp), %rcx
leaq -0x1ec(%rbp), %r8
callq 0x3e6b0
movb %al, -0x11f9(%rbp)
jmp 0x19450
movb -0x11f9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x11fa(%rbp)
leaq -0x630(%rbp), %rdi
callq 0x3180
movb -0x11fa(%rbp), %al
testb $0x1, %al
jne 0x19476
jmp 0x194eb
movq 0x37b3b(%rip), %rdi     # 0x50fb8
leaq 0x28288(%rip), %rsi     # 0x4170c
callq 0x3240
movq %rax, -0x1208(%rbp)
jmp 0x19492
movq -0x1208(%rbp), %rdi
movq 0x37b00(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1210(%rbp)
jmp 0x194ae
movq -0x1210(%rbp), %rdi
movq 0x37ae4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x194c3
jmp 0x19560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0x630(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
movl $0x10, %edi
movl $0x8, %esi
callq 0x13c90
movl %eax, -0x1214(%rbp)
jmp 0x19502
movl -0x1214(%rbp), %edx
leaq -0x7b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3370
jmp 0x1951d
leaq -0x7b8(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0x3170
jmp 0x1952f
leaq -0x7b8(%rbp), %rdi
callq 0x31b0
jmp 0x19560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0x7b8(%rbp), %rdi
callq 0x31b0
jmp 0x1b12d
jmp 0x19562
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x193a1
leaq 0x289b0(%rip), %rsi     # 0x41f29
leaq -0x48(%rbp), %rdi
callq 0x32f0
jmp 0x19584
jmp 0x19586
movq 0x37a2b(%rip), %rdi     # 0x50fb8
leaq 0x281af(%rip), %rsi     # 0x41743
callq 0x3240
movq %rax, -0x1220(%rbp)
jmp 0x195a2
movq -0x1220(%rbp), %rdi
movq 0x379f0(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x195b7
movq 0x37a1a(%rip), %rdi     # 0x50fd8
callq 0x33f0
jmp 0x195c5
movq 0x37a0c(%rip), %rdi     # 0x50fd8
leaq -0x188(%rbp), %rsi
callq 0x3070
jmp 0x195da
leaq -0x188(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x3f480
movb %al, -0x1221(%rbp)
jmp 0x195f5
movb -0x1221(%rbp), %al
testb $0x1, %al
jne 0x19650
jmp 0x19601
movq 0x379b0(%rip), %rdi     # 0x50fb8
leaq 0x28143(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1230(%rbp)
jmp 0x1961d
movq -0x1230(%rbp), %rdi
movq 0x37975(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1238(%rbp)
jmp 0x19639
movq -0x1238(%rbp), %rdi
movq 0x37959(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1964e
jmp 0x19650
leaq -0x188(%rbp), %rdi
movq %rdi, -0x1248(%rbp)
callq 0x31e0
movq -0x1248(%rbp), %rdi
movq %rax, -0x7c0(%rbp)
callq 0x3120
movq -0x1248(%rbp), %rdi
movq %rax, -0x7c8(%rbp)
callq 0x31e0
movq %rax, -0x7d0(%rbp)
movq -0x7c0(%rbp), %rdi
movq -0x7c8(%rbp), %rsi
movq -0x7d0(%rbp), %rdx
movq 0x3791c(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0x1240(%rbp)
jmp 0x196ba
movq -0x1240(%rbp), %rax
movq %rax, -0x7d8(%rbp)
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19586
jmp 0x196da
movq 0x378d7(%rip), %rdi     # 0x50fb8
leaq 0x2842e(%rip), %rsi     # 0x41b16
callq 0x3240
movq %rax, -0x1250(%rbp)
jmp 0x196f6
movq -0x1250(%rbp), %rdi
movq 0x3789c(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1970b
movq 0x378c6(%rip), %rdi     # 0x50fd8
leaq -0x68(%rbp), %rsi
callq 0x3070
jmp 0x1971d
leaq -0x68(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x3f5c0
movb %al, -0x1251(%rbp)
jmp 0x19735
movb -0x1251(%rbp), %al
testb $0x1, %al
jne 0x19790
jmp 0x19741
movq 0x37870(%rip), %rdi     # 0x50fb8
leaq 0x283e2(%rip), %rsi     # 0x41b31
callq 0x3240
movq %rax, -0x1260(%rbp)
jmp 0x1975d
movq -0x1260(%rbp), %rdi
movq 0x37835(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1268(%rbp)
jmp 0x19779
movq -0x1268(%rbp), %rdi
movq 0x37819(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1978e
jmp 0x19790
jmp 0x19792
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x196da
jmp 0x197a4
movq 0x3780d(%rip), %rdi     # 0x50fb8
leaq 0x283b5(%rip), %rsi     # 0x41b67
callq 0x3240
movq %rax, -0x1270(%rbp)
jmp 0x197c0
movq -0x1270(%rbp), %rdi
movq 0x377d2(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x197d5
movq 0x377fc(%rip), %rdi     # 0x50fd8
leaq -0x88(%rbp), %rsi
callq 0x3070
jmp 0x197ea
leaq -0x88(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40170
movb %al, -0x1271(%rbp)
jmp 0x19805
movb -0x1271(%rbp), %al
testb $0x1, %al
jne 0x19860
jmp 0x19811
movq 0x377a0(%rip), %rdi     # 0x50fb8
leaq 0x27f33(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1280(%rbp)
jmp 0x1982d
movq -0x1280(%rbp), %rdi
movq 0x37765(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1288(%rbp)
jmp 0x19849
movq -0x1288(%rbp), %rdi
movq 0x37749(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1985e
jmp 0x19860
jmp 0x19862
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x197a4
jmp 0x19874
movq 0x3773d(%rip), %rdi     # 0x50fb8
leaq 0x282f6(%rip), %rsi     # 0x41b78
callq 0x3240
movq %rax, -0x1290(%rbp)
jmp 0x19890
movq -0x1290(%rbp), %rdi
movq 0x37702(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x198a5
movq 0x3772c(%rip), %rdi     # 0x50fd8
leaq -0xa8(%rbp), %rsi
callq 0x3070
jmp 0x198ba
leaq -0xa8(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x3f480
movb %al, -0x1291(%rbp)
jmp 0x198d5
movb -0x1291(%rbp), %al
testb $0x1, %al
jne 0x19930
jmp 0x198e1
movq 0x376d0(%rip), %rdi     # 0x50fb8
leaq 0x27e63(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x12a0(%rbp)
jmp 0x198fd
movq -0x12a0(%rbp), %rdi
movq 0x37695(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x12a8(%rbp)
jmp 0x19919
movq -0x12a8(%rbp), %rdi
movq 0x37679(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1992e
jmp 0x19930
leaq -0x7f8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x19945
movq -0x11c8(%rbp), %rdi
leaq -0x7f8(%rbp), %rsi
callq 0x3d7a0
movb %al, -0x12a9(%rbp)
jmp 0x19960
movb -0x12a9(%rbp), %al
andb $0x1, %al
movb %al, -0x1f9(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x3180
testb $0x1, -0x1f9(%rbp)
jne 0x199f5
movq 0x3762e(%rip), %rdi     # 0x50fb8
movq 0x3760f(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19998
movq 0x37619(%rip), %rdi     # 0x50fb8
leaq 0x281f1(%rip), %rsi     # 0x41b97
callq 0x3240
movq %rax, -0x12b8(%rbp)
jmp 0x199b4
movq -0x12b8(%rbp), %rdi
movq 0x375de(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x199c9
movb $0x6e, -0x1ec(%rbp)
jmp 0x199f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
jmp 0x199f7
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19874
jmp 0x19a09
movq 0x375a8(%rip), %rdi     # 0x50fb8
leaq 0x281a3(%rip), %rsi     # 0x41bba
callq 0x3240
movq %rax, -0x12c0(%rbp)
jmp 0x19a25
movq -0x12c0(%rbp), %rdi
movq 0x3756d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19a3a
movq 0x37597(%rip), %rdi     # 0x50fd8
leaq -0xc8(%rbp), %rsi
callq 0x3070
jmp 0x19a4f
leaq -0xc8(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x3f480
movb %al, -0x12c1(%rbp)
jmp 0x19a6a
movb -0x12c1(%rbp), %al
testb $0x1, %al
jne 0x19ac5
jmp 0x19a76
movq 0x3753b(%rip), %rdi     # 0x50fb8
leaq 0x27cce(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x12d0(%rbp)
jmp 0x19a92
movq -0x12d0(%rbp), %rdi
movq 0x37500(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x12d8(%rbp)
jmp 0x19aae
movq -0x12d8(%rbp), %rdi
movq 0x374e4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19ac3
jmp 0x19ac5
leaq -0x818(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x19ada
movq -0x11c0(%rbp), %rsi
movsbl -0x1ed(%rbp), %ecx
xorl %edi, %edi
leaq -0x818(%rbp), %rdx
callq 0x3d850
movb %al, -0x12d9(%rbp)
jmp 0x19afe
movb -0x12d9(%rbp), %al
andb $0x1, %al
movb %al, -0x1f9(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x3180
testb $0x1, -0x1f9(%rbp)
jne 0x19bb3
movq 0x3748c(%rip), %rdi     # 0x50fb8
movq 0x3746d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19b3a
movq 0x37477(%rip), %rdi     # 0x50fb8
leaq 0x2808e(%rip), %rsi     # 0x41bd6
callq 0x3240
movq %rax, -0x12e8(%rbp)
jmp 0x19b56
movq -0x12e8(%rbp), %rdi
movq 0x3743c(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x12f0(%rbp)
jmp 0x19b72
movq -0x12f0(%rbp), %rdi
movq 0x37420(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19b87
movb $0x6e, -0x1ec(%rbp)
jmp 0x19bb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
jmp 0x19bb5
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19a09
jmp 0x19bc7
movq 0x373ea(%rip), %rdi     # 0x50fb8
leaq 0x28033(%rip), %rsi     # 0x41c08
callq 0x3240
movq %rax, -0x12f8(%rbp)
jmp 0x19be3
movq -0x12f8(%rbp), %rdi
movq 0x373af(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19bf8
movq 0x373d9(%rip), %rdi     # 0x50fd8
leaq -0xe8(%rbp), %rsi
callq 0x3070
jmp 0x19c0d
leaq -0xe8(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x3f480
movb %al, -0x12f9(%rbp)
jmp 0x19c28
movb -0x12f9(%rbp), %al
testb $0x1, %al
jne 0x19c83
jmp 0x19c34
movq 0x3737d(%rip), %rdi     # 0x50fb8
leaq 0x27b10(%rip), %rsi     # 0x41752
callq 0x3240
movq %rax, -0x1308(%rbp)
jmp 0x19c50
movq -0x1308(%rbp), %rdi
movq 0x37342(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1310(%rbp)
jmp 0x19c6c
movq -0x1310(%rbp), %rdi
movq 0x37326(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19c81
jmp 0x19c83
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x1320(%rbp)
callq 0x31e0
movq -0x1320(%rbp), %rdi
movq %rax, -0x820(%rbp)
callq 0x3120
movq -0x1320(%rbp), %rdi
movq %rax, -0x828(%rbp)
callq 0x31e0
movq %rax, -0x830(%rbp)
movq -0x820(%rbp), %rdi
movq -0x828(%rbp), %rsi
movq -0x830(%rbp), %rdx
movq 0x372e9(%rip), %rcx     # 0x50fc8
callq 0x1f5a0
movq %rax, -0x1318(%rbp)
jmp 0x19ced
movq -0x1318(%rbp), %rax
movq %rax, -0x838(%rbp)
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19bc7
jmp 0x19d0d
movq 0x372a4(%rip), %rdi     # 0x50fb8
leaq 0x27f08(%rip), %rsi     # 0x41c23
callq 0x3240
movq %rax, -0x1328(%rbp)
jmp 0x19d29
movq -0x1328(%rbp), %rdi
movq 0x37269(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19d3e
movq 0x37293(%rip), %rdi     # 0x50fd8
leaq -0x1c8(%rbp), %rsi
callq 0x3070
jmp 0x19d53
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x1338(%rbp)
callq 0x31e0
movq -0x1338(%rbp), %rdi
movq %rax, -0x840(%rbp)
callq 0x3120
movq -0x1338(%rbp), %rdi
movq %rax, -0x848(%rbp)
callq 0x31e0
movq %rax, -0x850(%rbp)
movq -0x840(%rbp), %rdi
movq -0x848(%rbp), %rsi
movq -0x850(%rbp), %rdx
movq 0x37231(%rip), %rcx     # 0x50fe0
callq 0x1f5a0
movq %rax, -0x1330(%rbp)
jmp 0x19dbd
movq -0x1330(%rbp), %rax
movq %rax, -0x858(%rbp)
leaq 0x27e6b(%rip), %rsi     # 0x41c3d
leaq -0x1c8(%rbp), %rdi
callq 0x13c60
movb %al, -0x1339(%rbp)
jmp 0x19de6
movb -0x1339(%rbp), %al
testb $0x1, %al
jne 0x19df2
jmp 0x19e6f
leaq 0x27e46(%rip), %rsi     # 0x41c3f
leaq -0x1c8(%rbp), %rdi
callq 0x13c60
movb %al, -0x133a(%rbp)
jmp 0x19e0d
movb -0x133a(%rbp), %al
testb $0x1, %al
jne 0x19e19
jmp 0x19e6f
movb $0x6e, -0x1ec(%rbp)
movq 0x37191(%rip), %rdi     # 0x50fb8
leaq 0x27e13(%rip), %rsi     # 0x41c41
callq 0x3240
movq %rax, -0x1348(%rbp)
jmp 0x19e3c
movq -0x1348(%rbp), %rdi
movq 0x37156(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1350(%rbp)
jmp 0x19e58
movq -0x1350(%rbp), %rdi
movq 0x3713a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19e6d
jmp 0x19e9e
xorl %eax, %eax
movl %eax, %esi
leaq -0x1c8(%rbp), %rdi
callq 0x3430
movq %rax, -0x1358(%rbp)
jmp 0x19e88
movq -0x1358(%rbp), %rax
movb (%rax), %al
movb %al, -0x1e9(%rbp)
movb $0x73, -0x1ec(%rbp)
jmp 0x19ea0
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19d0d
jmp 0x19eb2
movq 0x370ff(%rip), %rdi     # 0x50fb8
leaq 0x27da3(%rip), %rsi     # 0x41c63
callq 0x3240
movq %rax, -0x1360(%rbp)
jmp 0x19ece
movq -0x1360(%rbp), %rdi
movq 0x370c4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19ee3
movq 0x370ee(%rip), %rdi     # 0x50fd8
leaq -0x1e8(%rbp), %rsi
callq 0x3070
jmp 0x19ef8
leaq -0x878(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x3100
jmp 0x19f0d
leaq -0x878(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40310
movb %al, -0x1361(%rbp)
jmp 0x19f28
movb -0x1361(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1362(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x3180
movb -0x1362(%rbp), %al
testb $0x1, %al
jne 0x19f4e
jmp 0x19fc0
movq 0x37063(%rip), %rdi     # 0x50fb8
leaq 0x27d24(%rip), %rsi     # 0x41c80
callq 0x3240
movq %rax, -0x1370(%rbp)
jmp 0x19f6a
movq -0x1370(%rbp), %rdi
movq 0x37028(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1378(%rbp)
jmp 0x19f86
movq -0x1378(%rbp), %rdi
movq 0x3700c(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x19f9b
jmp 0x19fc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
xorl %eax, %eax
movl %eax, %esi
leaq -0x1e8(%rbp), %rdi
callq 0x1f9a0
movsd %xmm0, -0x1380(%rbp)
jmp 0x19fda
movsd -0x1380(%rbp), %xmm0
movsd %xmm0, -0x1f8(%rbp)
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19eb2
jmp 0x19ffc
movq 0x36fb5(%rip), %rdi     # 0x50fb8
leaq 0x27f28(%rip), %rsi     # 0x41f32
callq 0x3240
movq %rax, -0x1388(%rbp)
jmp 0x1a018
movq -0x1388(%rbp), %rdi
movq 0x36f7a(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a02d
movq 0x36fa4(%rip), %rdi     # 0x50fd8
leaq -0x168(%rbp), %rsi
callq 0x3070
jmp 0x1a042
leaq -0x168(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40890
movb %al, -0x1389(%rbp)
jmp 0x1a05d
movb -0x1389(%rbp), %al
testb $0x1, %al
jne 0x1a0b8
jmp 0x1a069
movq 0x36f48(%rip), %rdi     # 0x50fb8
leaq 0x27ed2(%rip), %rsi     # 0x41f49
callq 0x3240
movq %rax, -0x1398(%rbp)
jmp 0x1a085
movq -0x1398(%rbp), %rdi
movq 0x36f0d(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x13a0(%rbp)
jmp 0x1a0a1
movq -0x13a0(%rbp), %rdi
movq 0x36ef1(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a0b6
jmp 0x1a0b8
jmp 0x1a0ba
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x19ffc
jmp 0x1a0cc
movq 0x36ee5(%rip), %rdi     # 0x50fb8
leaq 0x27c97(%rip), %rsi     # 0x41d71
callq 0x3240
movq %rax, -0x13a8(%rbp)
jmp 0x1a0e8
movq -0x13a8(%rbp), %rdi
movq 0x36eaa(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a0fd
movq 0x36ed4(%rip), %rdi     # 0x50fd8
leaq -0x128(%rbp), %rsi
callq 0x3070
jmp 0x1a112
leaq -0x128(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40550
movb %al, -0x13a9(%rbp)
jmp 0x1a12d
movb -0x13a9(%rbp), %al
testb $0x1, %al
jne 0x1a188
jmp 0x1a139
movq 0x36e78(%rip), %rdi     # 0x50fb8
leaq 0x27e3b(%rip), %rsi     # 0x41f82
callq 0x3240
movq %rax, -0x13b8(%rbp)
jmp 0x1a155
movq -0x13b8(%rbp), %rdi
movq 0x36e3d(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x13c0(%rbp)
jmp 0x1a171
movq -0x13c0(%rbp), %rdi
movq 0x36e21(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a186
jmp 0x1a188
jmp 0x1a18a
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x1a0cc
movsbl -0x1ea(%rbp), %eax
cmpl $0x6e, %eax
jne 0x1a80a
movq -0x8(%rbp), %rdi
callq 0x1fbe0
movl %eax, -0x200(%rbp)
movq 0x36df8(%rip), %rdi     # 0x50fb8
leaq 0x27c00(%rip), %rsi     # 0x41dc7
callq 0x3240
movq %rax, -0x13c8(%rbp)
jmp 0x1a1d5
movq -0x13c8(%rbp), %rdi
movq 0x36dbd(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a1ea
movq 0x36de7(%rip), %rdi     # 0x50fd8
leaq -0x148(%rbp), %rsi
callq 0x3070
jmp 0x1a1ff
leaq -0x148(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40700
movb %al, -0x13c9(%rbp)
jmp 0x1a21a
movb -0x13c9(%rbp), %al
testb $0x1, %al
jne 0x1a275
jmp 0x1a226
movq 0x36d8b(%rip), %rdi     # 0x50fb8
leaq 0x27bab(%rip), %rsi     # 0x41ddf
callq 0x3240
movq %rax, -0x13d8(%rbp)
jmp 0x1a242
movq -0x13d8(%rbp), %rdi
movq 0x36d50(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x13e0(%rbp)
jmp 0x1a25e
movq -0x13e0(%rbp), %rdi
movq 0x36d34(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a273
jmp 0x1a275
jmp 0x1a277
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x1a1b9
jmp 0x1a289
movq 0x36d28(%rip), %rdi     # 0x50fb8
leaq 0x27b6d(%rip), %rsi     # 0x41e04
callq 0x3240
movq %rax, -0x13e8(%rbp)
jmp 0x1a2a5
movq -0x13e8(%rbp), %rdi
movq 0x36ced(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a2ba
movq 0x36d17(%rip), %rdi     # 0x50fd8
leaq -0x108(%rbp), %rsi
callq 0x3070
jmp 0x1a2cf
leaq -0x108(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40550
movb %al, -0x13e9(%rbp)
jmp 0x1a2ea
movb -0x13e9(%rbp), %al
testb $0x1, %al
jne 0x1a345
jmp 0x1a2f6
movq 0x36cbb(%rip), %rdi     # 0x50fb8
leaq 0x27a8d(%rip), %rsi     # 0x41d91
callq 0x3240
movq %rax, -0x13f8(%rbp)
jmp 0x1a312
movq -0x13f8(%rbp), %rdi
movq 0x36c80(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1400(%rbp)
jmp 0x1a32e
movq -0x1400(%rbp), %rdi
movq 0x36c64(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a343
jmp 0x1a345
jmp 0x1a347
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x1a289
movq -0x8(%rbp), %rax
movq %rax, -0x1410(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x1404(%rbp)
leaq -0xbb0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3100
jmp 0x1a37d
leaq -0xbd0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x3100
jmp 0x1a392
leaq -0xbf0(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3100
jmp 0x1a3a4
movb -0x1e9(%rbp), %al
movb %al, -0x1419(%rbp)
movsd -0x1f8(%rbp), %xmm0
movsd %xmm0, -0x1418(%rbp)
leaq -0xc10(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3100
jmp 0x1a3d5
leaq -0xc30(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x1a3ea
leaq -0xc50(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x1a3ff
leaq -0xc70(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3100
jmp 0x1a414
leaq -0xc90(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3100
jmp 0x1a429
leaq -0xcb0(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x3100
jmp 0x1a43e
leaq -0xcd0(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x3100
jmp 0x1a453
leaq -0xcf0(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x3100
jmp 0x1a468
movsd -0x1418(%rbp), %xmm0
movl -0x1404(%rbp), %esi
movb -0x1419(%rbp), %al
movq %rsp, %rcx
movq %rcx, -0x1428(%rbp)
leaq -0xcf0(%rbp), %rdx
movq %rdx, 0x38(%rcx)
leaq -0xcd0(%rbp), %rdx
movq %rdx, 0x30(%rcx)
leaq -0xcb0(%rbp), %rdx
movq %rdx, 0x28(%rcx)
leaq -0xc90(%rbp), %rdx
movq %rdx, 0x20(%rcx)
leaq -0xc70(%rbp), %rdx
movq %rdx, 0x18(%rcx)
leaq -0xc50(%rbp), %rdx
movq %rdx, 0x10(%rcx)
leaq -0xc30(%rbp), %rdx
movq %rdx, 0x8(%rcx)
leaq -0xc10(%rbp), %rdx
movq %rdx, (%rcx)
movsbl %al, %r9d
leaq -0xb90(%rbp), %rdi
leaq -0xbb0(%rbp), %rdx
leaq -0xbd0(%rbp), %rcx
leaq -0xbf0(%rbp), %r8
callq 0x9b20
jmp 0x1a504
leaq -0xa08(%rbp), %rdi
leaq -0x24(%rbp), %rsi
leaq -0xb90(%rbp), %rdx
callq 0x1fc40
jmp 0x1a51d
movq -0x1410(%rbp), %rdi
leaq -0xa08(%rbp), %rsi
callq 0x1fc00
movb %dl, -0x1431(%rbp)
movq %rax, -0x1430(%rbp)
jmp 0x1a53f
movb -0x1431(%rbp), %al
movq -0x1430(%rbp), %rcx
movq %rcx, -0xd00(%rbp)
movb %al, -0xcf8(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x1fc80
leaq -0xb90(%rbp), %rdi
callq 0x9ff0
leaq -0xcf0(%rbp), %rdi
callq 0x3180
leaq -0xcd0(%rbp), %rdi
callq 0x3180
leaq -0xcb0(%rbp), %rdi
callq 0x3180
leaq -0xc90(%rbp), %rdi
callq 0x3180
leaq -0xc70(%rbp), %rdi
callq 0x3180
leaq -0xc50(%rbp), %rdi
callq 0x3180
leaq -0xc30(%rbp), %rdi
callq 0x3180
leaq -0xc10(%rbp), %rdi
callq 0x3180
leaq -0xbf0(%rbp), %rdi
callq 0x3180
leaq -0xbd0(%rbp), %rdi
callq 0x3180
leaq -0xbb0(%rbp), %rdi
callq 0x3180
movq -0x8(%rbp), %rdi
callq 0x1fbe0
movl -0x200(%rbp), %ecx
cmpq %rcx, %rax
jne 0x1a805
movq 0x369a4(%rip), %rdi     # 0x50fb8
leaq 0x2780a(%rip), %rsi     # 0x41e25
callq 0x3240
movq %rax, -0x1440(%rbp)
jmp 0x1a629
movq -0x1440(%rbp), %rdi
movq 0x36969(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a63e
movb $0x73, -0x1eb(%rbp)
jmp 0x1aefe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a7a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a794
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a788
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a77c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1a770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x1fc80
leaq -0xb90(%rbp), %rdi
callq 0x9ff0
leaq -0xcf0(%rbp), %rdi
callq 0x3180
leaq -0xcd0(%rbp), %rdi
callq 0x3180
leaq -0xcb0(%rbp), %rdi
callq 0x3180
leaq -0xc90(%rbp), %rdi
callq 0x3180
leaq -0xc70(%rbp), %rdi
callq 0x3180
leaq -0xc50(%rbp), %rdi
callq 0x3180
leaq -0xc30(%rbp), %rdi
callq 0x3180
leaq -0xc10(%rbp), %rdi
callq 0x3180
leaq -0xbf0(%rbp), %rdi
callq 0x3180
leaq -0xbd0(%rbp), %rdi
callq 0x3180
leaq -0xbb0(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
jmp 0x1ae67
movq -0x10(%rbp), %rdi
callq 0x1fca0
movl %eax, -0x200(%rbp)
movq 0x36798(%rip), %rdi     # 0x50fb8
leaq 0x2762c(%rip), %rsi     # 0x41e53
callq 0x3240
movq %rax, -0x1448(%rbp)
jmp 0x1a835
movq -0x1448(%rbp), %rdi
movq 0x3675d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a84a
movq 0x36787(%rip), %rdi     # 0x50fd8
leaq -0x148(%rbp), %rsi
callq 0x3070
jmp 0x1a85f
leaq -0x148(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40700
movb %al, -0x1449(%rbp)
jmp 0x1a87a
movb -0x1449(%rbp), %al
testb $0x1, %al
jne 0x1a8d5
jmp 0x1a886
movq 0x3672b(%rip), %rdi     # 0x50fb8
leaq 0x2754b(%rip), %rsi     # 0x41ddf
callq 0x3240
movq %rax, -0x1458(%rbp)
jmp 0x1a8a2
movq -0x1458(%rbp), %rdi
movq 0x366f0(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1460(%rbp)
jmp 0x1a8be
movq -0x1460(%rbp), %rdi
movq 0x366d4(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a8d3
jmp 0x1a8d5
jmp 0x1a8d7
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x1a819
jmp 0x1a8e9
movq 0x366c8(%rip), %rdi     # 0x50fb8
leaq 0x2750d(%rip), %rsi     # 0x41e04
callq 0x3240
movq %rax, -0x1468(%rbp)
jmp 0x1a905
movq -0x1468(%rbp), %rdi
movq 0x3668d(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a91a
movq 0x366b7(%rip), %rdi     # 0x50fd8
leaq -0x108(%rbp), %rsi
callq 0x3070
jmp 0x1a92f
leaq -0x108(%rbp), %rdi
leaq -0x1ec(%rbp), %rsi
callq 0x40550
movb %al, -0x1469(%rbp)
jmp 0x1a94a
movb -0x1469(%rbp), %al
testb $0x1, %al
jne 0x1a9a5
jmp 0x1a956
movq 0x3665b(%rip), %rdi     # 0x50fb8
leaq 0x2742d(%rip), %rsi     # 0x41d91
callq 0x3240
movq %rax, -0x1478(%rbp)
jmp 0x1a972
movq -0x1478(%rbp), %rdi
movq 0x36620(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x1480(%rbp)
jmp 0x1a98e
movq -0x1480(%rbp), %rdi
movq 0x36604(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1a9a3
jmp 0x1a9a5
jmp 0x1a9a7
movsbl -0x1ec(%rbp), %eax
cmpl $0x6e, %eax
je 0x1a8e9
movq -0x10(%rbp), %rax
movq %rax, -0x1490(%rbp)
movl -0x24(%rbp), %eax
movl %eax, -0x1484(%rbp)
leaq -0x1038(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3100
jmp 0x1a9dd
leaq -0x1058(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x3100
jmp 0x1a9f2
leaq -0x1078(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3100
jmp 0x1aa04
movb -0x1e9(%rbp), %al
movb %al, -0x1499(%rbp)
movsd -0x1f8(%rbp), %xmm0
movsd %xmm0, -0x1498(%rbp)
leaq -0x1098(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3100
jmp 0x1aa35
leaq -0x10b8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x3100
jmp 0x1aa4a
leaq -0x10d8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3100
jmp 0x1aa5f
leaq -0x10f8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3100
jmp 0x1aa74
leaq -0x1118(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x3100
jmp 0x1aa89
leaq -0x1138(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x3100
jmp 0x1aa9e
leaq -0x1158(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x3100
jmp 0x1aab3
leaq -0x1178(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x3100
jmp 0x1aac8
movsd -0x1498(%rbp), %xmm0
movl -0x1484(%rbp), %esi
movb -0x1499(%rbp), %al
movq %rsp, %rcx
movq %rcx, -0x14a8(%rbp)
leaq -0x1178(%rbp), %rdx
movq %rdx, 0x38(%rcx)
leaq -0x1158(%rbp), %rdx
movq %rdx, 0x30(%rcx)
leaq -0x1138(%rbp), %rdx
movq %rdx, 0x28(%rcx)
leaq -0x1118(%rbp), %rdx
movq %rdx, 0x20(%rcx)
leaq -0x10f8(%rbp), %rdx
movq %rdx, 0x18(%rcx)
leaq -0x10d8(%rbp), %rdx
movq %rdx, 0x10(%rcx)
leaq -0x10b8(%rbp), %rdx
movq %rdx, 0x8(%rcx)
leaq -0x1098(%rbp), %rdx
movq %rdx, (%rcx)
movsbl %al, %r9d
leaq -0x1018(%rbp), %rdi
leaq -0x1038(%rbp), %rdx
leaq -0x1058(%rbp), %rcx
leaq -0x1078(%rbp), %r8
callq 0xa060
jmp 0x1ab64
leaq -0xe90(%rbp), %rdi
leaq -0x24(%rbp), %rsi
leaq -0x1018(%rbp), %rdx
callq 0x1fd00
jmp 0x1ab7d
movq -0x1490(%rbp), %rdi
leaq -0xe90(%rbp), %rsi
callq 0x1fcc0
movb %dl, -0x14b1(%rbp)
movq %rax, -0x14b0(%rbp)
jmp 0x1ab9f
movb -0x14b1(%rbp), %al
movq -0x14b0(%rbp), %rcx
movq %rcx, -0x1188(%rbp)
movb %al, -0x1180(%rbp)
leaq -0xe90(%rbp), %rdi
callq 0x1fd40
leaq -0x1018(%rbp), %rdi
callq 0xa4d0
leaq -0x1178(%rbp), %rdi
callq 0x3180
leaq -0x1158(%rbp), %rdi
callq 0x3180
leaq -0x1138(%rbp), %rdi
callq 0x3180
leaq -0x1118(%rbp), %rdi
callq 0x3180
leaq -0x10f8(%rbp), %rdi
callq 0x3180
leaq -0x10d8(%rbp), %rdi
callq 0x3180
leaq -0x10b8(%rbp), %rdi
callq 0x3180
leaq -0x1098(%rbp), %rdi
callq 0x3180
leaq -0x1078(%rbp), %rdi
callq 0x3180
leaq -0x1058(%rbp), %rdi
callq 0x3180
leaq -0x1038(%rbp), %rdi
callq 0x3180
movq -0x10(%rbp), %rdi
callq 0x1fca0
movl -0x200(%rbp), %ecx
cmpq %rcx, %rax
jne 0x1ae65
movq 0x36344(%rip), %rdi     # 0x50fb8
leaq 0x271aa(%rip), %rsi     # 0x41e25
callq 0x3240
movq %rax, -0x14c0(%rbp)
jmp 0x1ac89
movq -0x14c0(%rbp), %rdi
movq 0x36309(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1ac9e
movb $0x73, -0x1eb(%rbp)
jmp 0x1aefe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae48
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae3c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae24
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ae00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1adf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1ade8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1addc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
jmp 0x1add0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x408(%rbp)
movl %eax, -0x40c(%rbp)
leaq -0xe90(%rbp), %rdi
callq 0x1fd40
leaq -0x1018(%rbp), %rdi
callq 0xa4d0
leaq -0x1178(%rbp), %rdi
callq 0x3180
leaq -0x1158(%rbp), %rdi
callq 0x3180
leaq -0x1138(%rbp), %rdi
callq 0x3180
leaq -0x1118(%rbp), %rdi
callq 0x3180
leaq -0x10f8(%rbp), %rdi
callq 0x3180
leaq -0x10d8(%rbp), %rdi
callq 0x3180
leaq -0x10b8(%rbp), %rdi
callq 0x3180
leaq -0x1098(%rbp), %rdi
callq 0x3180
leaq -0x1078(%rbp), %rdi
callq 0x3180
leaq -0x1058(%rbp), %rdi
callq 0x3180
leaq -0x1038(%rbp), %rdi
callq 0x3180
jmp 0x1b12d
jmp 0x1ae67
jmp 0x1ae69
movq 0x36148(%rip), %rdi     # 0x50fb8
leaq 0x26ff7(%rip), %rsi     # 0x41e6e
callq 0x3240
movq %rax, -0x14c8(%rbp)
jmp 0x1ae85
movq -0x14c8(%rbp), %rdi
movq 0x3610d(%rip), %rsi     # 0x50fa0
callq 0x3280
movq %rax, -0x14d0(%rbp)
jmp 0x1aea1
movq -0x14d0(%rbp), %rdi
movq 0x360f1(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1aeb6
movq 0x360fb(%rip), %rdi     # 0x50fb8
leaq 0x26fca(%rip), %rsi     # 0x41e8e
callq 0x3240
movq %rax, -0x14d8(%rbp)
jmp 0x1aed2
movq -0x14d8(%rbp), %rdi
movq 0x360c0(%rip), %rsi     # 0x50fa0
callq 0x3280
jmp 0x1aee7
movq 0x360ea(%rip), %rdi     # 0x50fd8
leaq -0x1eb(%rbp), %rsi
callq 0x32e0
jmp 0x1aefc
jmp 0x1aefe
movsbl -0x1eb(%rbp), %eax
cmpl $0x73, %eax
je 0x192b7
movq -0x8(%rbp), %rdi
callq 0x1fd60
testb $0x1, %al
jne 0x1afbc
leaq 0x27093(%rip), %rsi     # 0x41fb9
leaq -0x400(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
jmp 0x1af39
movq -0x8(%rbp), %rdi
callq 0x13eb0
movq %rax, -0x1190(%rbp)
movq -0x8(%rbp), %rdi
callq 0x13f10
movq %rax, -0x1198(%rbp)
leaq -0x1190(%rbp), %rdi
leaq -0x1198(%rbp), %rsi
callq 0x13ee0
testb $0x1, %al
jne 0x1af72
jmp 0x1afac
leaq -0x1190(%rbp), %rdi
callq 0x1fd80
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x400(%rbp), %rdi
callq 0xe2a0
jmp 0x1af93
jmp 0x1af95
leaq -0x1190(%rbp), %rdi
xorl %esi, %esi
callq 0x13f70
movq %rax, -0x11a0(%rbp)
jmp 0x1af49
leaq -0x400(%rbp), %rdi
callq 0x3310
jmp 0x1afba
jmp 0x1afbc
movq -0x10(%rbp), %rdi
callq 0x1fda0
testb $0x1, %al
jne 0x1b06a
leaq 0x26ff7(%rip), %rsi     # 0x41fcb
leaq -0x610(%rbp), %rdi
movl $0x10, %edx
callq 0x3050
jmp 0x1afe7
movq -0x10(%rbp), %rdi
callq 0x13fb0
movq %rax, -0x11a8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x14010
movq %rax, -0x11b0(%rbp)
leaq -0x11a8(%rbp), %rdi
leaq -0x11b0(%rbp), %rsi
callq 0x13fe0
testb $0x1, %al
jne 0x1b020
jmp 0x1b05a
leaq -0x11a8(%rbp), %rdi
callq 0x1fdc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x610(%rbp), %rdi
callq 0xe860
jmp 0x1b041
jmp 0x1b043
leaq -0x11a8(%rbp), %rdi
xorl %esi, %esi
callq 0x14070
movq %rax, -0x11b8(%rbp)
jmp 0x1aff7
leaq -0x610(%rbp), %rdi
callq 0x3310
jmp 0x1b068
jmp 0x1b06a
leaq -0x610(%rbp), %rdi
callq 0x3340
leaq -0x400(%rbp), %rdi
callq 0x3340
leaq -0x1e8(%rbp), %rdi
callq 0x3180
leaq -0x1c8(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x3180
leaq -0x188(%rbp), %rdi
callq 0x3180
leaq -0x168(%rbp), %rdi
callq 0x3180
leaq -0x148(%rbp), %rdi
callq 0x3180
leaq -0x128(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x3180
leaq -0xc8(%rbp), %rdi
callq 0x3180
leaq -0xa8(%rbp), %rdi
callq 0x3180
leaq -0x88(%rbp), %rdi
callq 0x3180
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
addq $0x1520, %rsp           # imm = 0x1520
popq %rbp
retq
leaq -0x610(%rbp), %rdi
callq 0x3340
leaq -0x400(%rbp), %rdi
callq 0x3340
leaq -0x1e8(%rbp), %rdi
callq 0x3180
leaq -0x1c8(%rbp), %rdi
callq 0x3180
leaq -0x1a8(%rbp), %rdi
callq 0x3180
leaq -0x188(%rbp), %rdi
callq 0x3180
leaq -0x168(%rbp), %rdi
callq 0x3180
leaq -0x148(%rbp), %rdi
callq 0x3180
leaq -0x128(%rbp), %rdi
callq 0x3180
leaq -0x108(%rbp), %rdi
callq 0x3180
leaq -0xe8(%rbp), %rdi
callq 0x3180
leaq -0xc8(%rbp), %rdi
callq 0x3180
leaq -0xa8(%rbp), %rdi
callq 0x3180
leaq -0x88(%rbp), %rdi
callq 0x3180
leaq -0x68(%rbp), %rdi
callq 0x3180
leaq -0x48(%rbp), %rdi
callq 0x3180
movq -0x408(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)