// File: nataly-enne[P]pet-fera/pet_fera_cadastrar.cpp
// Function: cadastrar_animal(std::map<int, ANFIBIO_NATIVO, std::less<int>, std::allocator<std::pair<int const, ANFIBIO_NATIVO>>>&, std::map<int, ANFIBIO_EXOTICO, std::less<int>, std::allocator<std::pair<int const, ANFIBIO_EXOTICO>>>&, std::map<int, 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, 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, AVE_NATIVO, std::less<int>, std::allocator<std::pair<int const, AVE_NATIVO>>>&, std::map<int, AVE_EXOTICO, std::less<int>, std::allocator<std::pair<int const, AVE_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_animal(map <int, ANFIBIO_NATIVO> &anfibios_nat, map <int, ANFIBIO_EXOTICO> &anfibios_ex, map <int, MAMIFERO_NATIVO> &mamiferos_nat, map <int, MAMIFERO_EXOTICO> &mamiferos_ex, map <int, REPTIL_NATIVO> &repteis_nat, map <int, REPTIL_EXOTICO> &repteis_ex, map <int, AVE_NATIVO> &aves_nat, map <int, AVE_EXOTICO> &aves_ex, map <int, VETERINARIO> vets, map <int, TRATADOR> tratadores){
	char tipo_func;
	char continuar = 'n', resp;

	do{
		cout << "Qual animal a ser cadastrado? \n a - anfíbio\n m - mamífero \n r - repteis \n v - aves" << endl;
		cin >> tipo_func;
		if(tipo_func != 'a' && tipo_func != 'm' && tipo_func != 'r' && tipo_func != 'v'){
			cout << "Tipo de animal incorreto!! Tente novamente!\n" << endl;
			cout << endl;
			cout << "Deseja sair? s/n" << endl;
			cin >> resp;
			if(resp == 's'){
				continuar = 'n';;
				break;
			}
			continuar = 's';
			continue;
		}
		else{
			if(tipo_func == 'a'){
				cadastrar(anfibios_nat, anfibios_ex, vets, tratadores);
			}
			else if(tipo_func == 'm'){
				cadastrar(mamiferos_nat, mamiferos_ex, vets, tratadores);
			}
			else if(tipo_func == 'r'){
				cadastrar(repteis_nat, repteis_ex, vets, tratadores);
			}		
			else{
				cadastrar(aves_nat, aves_ex, vets, tratadores);
			}
		}
	}while (continuar == 's');	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x220, %rsp            # imm = 0x220
movq 0x28(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq 0x18(%rbp), %rax
movq 0x10(%rbp), %rax
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movb $0x6e, -0x32(%rbp)
movq 0x3a48c(%rip), %rdi     # 0x50fb8
leaq 0x2aee4(%rip), %rsi     # 0x41a17
callq 0x3240
movq %rax, %rdi
movq 0x3a45e(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x3a48a(%rip), %rdi     # 0x50fd8
leaq -0x31(%rbp), %rsi
callq 0x32e0
movsbl -0x31(%rbp), %eax
cmpl $0x61, %eax
je 0x16c0d
movsbl -0x31(%rbp), %eax
cmpl $0x6d, %eax
je 0x16c0d
movsbl -0x31(%rbp), %eax
cmpl $0x72, %eax
je 0x16c0d
movsbl -0x31(%rbp), %eax
cmpl $0x76, %eax
je 0x16c0d
movq 0x3a426(%rip), %rdi     # 0x50fb8
leaq 0x2aed3(%rip), %rsi     # 0x41a6c
callq 0x3240
movq %rax, %rdi
movq 0x3a3f8(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x3a404(%rip), %rdi     # 0x50fb8
movq 0x3a3e5(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x3a3f1(%rip), %rdi     # 0x50fb8
leaq 0x2aa0a(%rip), %rsi     # 0x415d8
callq 0x3240
movq %rax, %rdi
movq 0x3a3c3(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x3a3ef(%rip), %rdi     # 0x50fd8
leaq -0x33(%rbp), %rsi
callq 0x32e0
movsbl -0x33(%rbp), %eax
cmpl $0x73, %eax
jne 0x16c04
movb $0x6e, -0x32(%rbp)
jmp 0x16f3b
movb $0x73, -0x32(%rbp)
jmp 0x16f2e
movsbl -0x31(%rbp), %eax
cmpl $0x61, %eax
jne 0x16ccf
movq -0x1d0(%rbp), %rsi
movq -0x8(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x4500
movq -0x1d8(%rbp), %rsi
leaq -0x98(%rbp), %rdi
callq 0x4530
jmp 0x16c55
movq -0x1e0(%rbp), %rsi
movq -0x1e8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x16f50
jmp 0x16c75
leaq -0x98(%rbp), %rdi
callq 0x4560
leaq -0x68(%rbp), %rdi
callq 0x4580
jmp 0x16f2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x16cc1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x4560
leaq -0x68(%rbp), %rdi
callq 0x4580
jmp 0x16f44
movsbl -0x31(%rbp), %eax
cmpl $0x6d, %eax
jne 0x16d9d
movq -0x1d0(%rbp), %rsi
movq -0x18(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x4500
movq -0x1d8(%rbp), %rsi
leaq -0x108(%rbp), %rdi
callq 0x4530
jmp 0x16d1a
movq -0x1f0(%rbp), %rsi
movq -0x1f8(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
leaq -0x108(%rbp), %rcx
callq 0x191c0
jmp 0x16d3d
leaq -0x108(%rbp), %rdi
callq 0x4560
leaq -0xd8(%rbp), %rdi
callq 0x4580
jmp 0x16f28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x16d8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x4560
leaq -0xd8(%rbp), %rdi
callq 0x4580
jmp 0x16f44
movsbl -0x31(%rbp), %eax
cmpl $0x72, %eax
jne 0x16e6b
movq -0x1d0(%rbp), %rsi
movq -0x28(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x200(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x4500
movq -0x1d8(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0x4530
jmp 0x16de8
movq -0x200(%rbp), %rsi
movq -0x208(%rbp), %rdi
leaq -0x138(%rbp), %rdx
leaq -0x168(%rbp), %rcx
callq 0x1b200
jmp 0x16e0b
leaq -0x168(%rbp), %rdi
callq 0x4560
leaq -0x138(%rbp), %rdi
callq 0x4580
jmp 0x16f26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x16e5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x4560
leaq -0x138(%rbp), %rdi
callq 0x4580
jmp 0x16f44
movq -0x1d0(%rbp), %rsi
movq 0x10(%rbp), %rax
movq %rax, -0x218(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x4500
movq -0x1d8(%rbp), %rsi
leaq -0x1c8(%rbp), %rdi
callq 0x4530
jmp 0x16ea9
movq -0x210(%rbp), %rsi
movq -0x218(%rbp), %rdi
leaq -0x198(%rbp), %rdx
leaq -0x1c8(%rbp), %rcx
callq 0x1d3d0
jmp 0x16ecc
leaq -0x1c8(%rbp), %rdi
callq 0x4560
leaq -0x198(%rbp), %rdi
callq 0x4580
jmp 0x16f26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x16f18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x4560
leaq -0x198(%rbp), %rdi
callq 0x4580
jmp 0x16f44
jmp 0x16f28
jmp 0x16f2a
jmp 0x16f2c
jmp 0x16f2e
movsbl -0x32(%rbp), %eax
cmpl $0x73, %eax
je 0x16b25
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0x33d0