// File: nataly-enne[P]pet-fera/pet_fera_editar.cpp
// Function: editar_animais(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 editar_animais(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_animal;
	char resp, op = 'n';

	do{  
		cout << "Qual animal deseja editar? \n a - anfíbio\n m - mamífero \n r - reptil \n v - ave" << endl;
		cin >> tipo_animal;
		if(tipo_animal != 'a' && tipo_animal != 'm' && tipo_animal != 'r' && tipo_animal != 'v' ){
			cout << "Opção inválida!! Tente novamente!\n" << endl;
			cout << endl;
			cout << "Deseja sair? s/n" << endl;
			cin >> resp;
				if(resp == 's'){
					break;
				}
		}
		else{
			if(tipo_animal == 'a'){
				editar(anfibios_nat, anfibios_ex, vets, tratadores);
			}
			else if(tipo_animal == 'm'){
				editar(mamiferos_nat, mamiferos_ex, vets, tratadores);
			}
			else if(tipo_animal == 'r'){
				editar(repteis_nat, repteis_ex, vets, tratadores);
			}
			else{
				editar(aves_nat, aves_ex, vets, tratadores);
			}	

		} // Primeiro else.
	}while(op == '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, -0x33(%rbp)
movq 0x2600c(%rip), %rdi     # 0x50fb8
leaq 0x171ce(%rip), %rsi     # 0x42181
callq 0x3240
movq %rax, %rdi
movq 0x25fde(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x2600a(%rip), %rdi     # 0x50fd8
leaq -0x31(%rbp), %rsi
callq 0x32e0
movsbl -0x31(%rbp), %eax
cmpl $0x61, %eax
je 0x2b081
movsbl -0x31(%rbp), %eax
cmpl $0x6d, %eax
je 0x2b081
movsbl -0x31(%rbp), %eax
cmpl $0x72, %eax
je 0x2b081
movsbl -0x31(%rbp), %eax
cmpl $0x76, %eax
je 0x2b081
movq 0x25faa(%rip), %rdi     # 0x50fb8
leaq 0x171bc(%rip), %rsi     # 0x421d1
callq 0x3240
movq %rax, %rdi
movq 0x25f7c(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x25f88(%rip), %rdi     # 0x50fb8
movq 0x25f69(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x25f75(%rip), %rdi     # 0x50fb8
leaq 0x1658e(%rip), %rsi     # 0x415d8
callq 0x3240
movq %rax, %rdi
movq 0x25f47(%rip), %rsi     # 0x50fa0
callq 0x3280
movq 0x25f73(%rip), %rdi     # 0x50fd8
leaq -0x32(%rbp), %rsi
callq 0x32e0
movsbl -0x32(%rbp), %eax
cmpl $0x73, %eax
jne 0x2b07c
jmp 0x2b3af
jmp 0x2b3a0
movsbl -0x31(%rbp), %eax
cmpl $0x61, %eax
jne 0x2b143
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 0x2b0c9
movq -0x1e0(%rbp), %rsi
movq -0x1e8(%rbp), %rdi
leaq -0x68(%rbp), %rdx
leaq -0x98(%rbp), %rcx
callq 0x2b3d0
jmp 0x2b0e9
leaq -0x98(%rbp), %rdi
callq 0x4560
leaq -0x68(%rbp), %rdi
callq 0x4580
jmp 0x2b39e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2b135
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 0x2b3b8
movsbl -0x31(%rbp), %eax
cmpl $0x6d, %eax
jne 0x2b211
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 0x2b18e
movq -0x1f0(%rbp), %rsi
movq -0x1f8(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
leaq -0x108(%rbp), %rcx
callq 0x2e260
jmp 0x2b1b1
leaq -0x108(%rbp), %rdi
callq 0x4560
leaq -0xd8(%rbp), %rdi
callq 0x4580
jmp 0x2b39c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2b200
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 0x2b3b8
movsbl -0x31(%rbp), %eax
cmpl $0x72, %eax
jne 0x2b2df
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 0x2b25c
movq -0x200(%rbp), %rsi
movq -0x208(%rbp), %rdi
leaq -0x138(%rbp), %rdx
leaq -0x168(%rbp), %rcx
callq 0x30cd0
jmp 0x2b27f
leaq -0x168(%rbp), %rdi
callq 0x4560
leaq -0x138(%rbp), %rdi
callq 0x4580
jmp 0x2b39a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2b2ce
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 0x2b3b8
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 0x2b31d
movq -0x210(%rbp), %rsi
movq -0x218(%rbp), %rdi
leaq -0x198(%rbp), %rdx
leaq -0x1c8(%rbp), %rcx
callq 0x339e0
jmp 0x2b340
leaq -0x1c8(%rbp), %rdi
callq 0x4560
leaq -0x198(%rbp), %rdi
callq 0x4580
jmp 0x2b39a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa0(%rbp)
movl %eax, -0xa4(%rbp)
jmp 0x2b38c
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 0x2b3b8
jmp 0x2b39c
jmp 0x2b39e
jmp 0x2b3a0
jmp 0x2b3a2
movsbl -0x33(%rbp), %eax
cmpl $0x73, %eax
je 0x2afa5
addq $0x220, %rsp            # imm = 0x220
popq %rbp
retq
movq -0xa0(%rbp), %rdi
callq 0x33d0
nopw %cs:(%rax,%rax)