// File: /workspace/github_cpp_makefile_star2_O1/nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_classe_vet(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::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void exportacao_classe_vet(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, string classe, string veterinario, string saida){

	transform(classe.begin(), classe.end(), classe.begin(), ::tolower);
	transform(veterinario.begin(), veterinario.end(), veterinario.begin(), ::toupper);

	if(classe == "anfibio" || classe == "amphibia"){
		ofstream anfibios;
		anfibios.open(saida);
		for(auto it = anfibios_nat.begin(); it != anfibios_nat.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				anfibios << (*it).second;
			}
		}
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				anfibios << (*it).second;
			}
		}
		anfibios.close();
	}
	else if(classe == "mamifero" || classe == "mamallia"){
		ofstream mamiferos;
		mamiferos.open(saida);
		for(auto it = mamiferos_nat.begin(); it != mamiferos_nat.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				mamiferos << (*it).second;
			}
		}
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				mamiferos << (*it).second;
			}
		}
		mamiferos.close();
	}
	else if(classe == "reptil" || classe == "reptilia"){
		ofstream repteis;
		repteis.open(saida);
		for(auto it = repteis_nat.begin(); it != repteis_nat.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				repteis << (*it).second;
			}
		}
		for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				repteis << (*it).second;
			}
		}
		repteis.close();
	}
	else if(classe == "ave" || classe == "aves"){
		ofstream aves;
		aves.open(saida);
		for(auto it = aves_nat.begin(); it != aves_nat.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				aves << (*it).second;
			}
		}
		for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				aves << (*it).second;
			}
		}
		aves.close();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
movq %r9, -0x50(%rbp)
movq %r8, -0x58(%rbp)
movq %rcx, -0x60(%rbp)
movq %rdx, %r13
movq %rsi, -0x68(%rbp)
movq %rdi, %rbx
movq 0x20(%rbp), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x9866
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x4300
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x9850
movq 0x28(%rbp), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x988f
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x43a0
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x9879
movq 0x30(%rbp), %r15
leaq 0x47a7(%rip), %rsi      # 0xe041
movq 0x20(%rbp), %r14
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9a99
leaq 0x4794(%rip), %rsi      # 0xe049
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9a99
leaq 0x4786(%rip), %rsi      # 0xe052
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9bda
leaq 0x4778(%rip), %rsi      # 0xe05b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9bda
leaq 0x476a(%rip), %rsi      # 0xe064
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9d1b
leaq 0x475a(%rip), %rsi      # 0xe06b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9d1b
leaq 0x474c(%rip), %rsi      # 0xe074
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x994b
leaq 0x473d(%rip), %rsi      # 0xe078
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
jne 0x9e94
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x4360
movq %rbx, %rdi
movq %r15, %rsi
movl $0x10, %edx
callq 0x40f0
movq 0x10(%rbp), %r13
movq 0x18(%r13), %rbx
addq $0x8, %r13
cmpq %r13, %rbx
je 0x99f3
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x99b5
testq %rdx, %rdx
je 0x99ba
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x99bd
xorl %r15d, %r15d
jmp 0x99bd
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x99cf
callq 0x4220
testb %r15b, %r15b
je 0x99e3
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x997f
movq 0x18(%rbp), %r13
movq 0x18(%r13), %rbx
addq $0x8, %r13
cmpq %r13, %rbx
je 0x9a7c
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9a3e
testq %rdx, %rdx
je 0x9a43
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9a46
xorl %r15d, %r15d
jmp 0x9a46
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9a58
callq 0x4220
testb %r15b, %r15b
je 0x9a6c
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4270
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x9a08
leaq -0x268(%rbp), %rdi
callq 0x42f0
leaq -0x268(%rbp), %rdi
callq 0x4320
jmp 0x9e94
leaq -0x268(%rbp), %r14
movq %r14, %rdi
callq 0x4360
movq %r14, %rdi
movq %r15, %rsi
movl $0x10, %edx
callq 0x40f0
movq 0x18(%rbx), %r14
addq $0x8, %rbx
cmpq %rbx, %r14
je 0x9b3d
leaq -0x48(%rbp), %r12
leaq 0x28(%r14), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9aff
testq %rdx, %rdx
je 0x9b04
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9b07
xorl %r15d, %r15d
jmp 0x9b07
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9b19
callq 0x4220
testb %r15b, %r15b
je 0x9b2d
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x41f0
movq %r14, %rdi
callq 0x4180
movq %rax, %r14
cmpq %rbx, %rax
jne 0x9ac9
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9bc9
movq %rax, %r15
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r13
movq %r14, %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9b8b
testq %rdx, %rdx
je 0x9b90
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0x9b93
xorl %r12d, %r12d
jmp 0x9b93
movb $0x1, %r12b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9ba5
callq 0x4220
testb %r12b, %r12b
je 0x9bb9
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4370
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x9b55
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0x9e5e
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x4360
movq %rbx, %rdi
movq %r15, %rsi
movl $0x10, %edx
callq 0x40f0
movq 0x18(%r13), %rbx
addq $0x8, %r13
cmpq %r13, %rbx
je 0x9c7e
leaq -0x48(%rbp), %r15
leaq 0x28(%rbx), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9c40
testq %rdx, %rdx
je 0x9c45
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0x9c48
xorl %r14d, %r14d
jmp 0x9c48
movb $0x1, %r14b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9c5a
callq 0x4220
testb %r14b, %r14b
je 0x9c6e
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42e0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x9c0a
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9d0a
movq %rax, %r14
leaq -0x48(%rbp), %r15
leaq 0x28(%rbx), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9ccc
testq %rdx, %rdx
je 0x9cd1
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0x9cd4
xorl %r12d, %r12d
jmp 0x9cd4
movb $0x1, %r12b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9ce6
callq 0x4220
testb %r12b, %r12b
je 0x9cfa
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4120
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0x9c96
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0x9e5e
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x4360
movq %rbx, %rdi
movq %r15, %rsi
movl $0x10, %edx
callq 0x40f0
movq -0x58(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9dc6
movq %rax, %r13
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9d88
testq %rdx, %rdx
je 0x9d8d
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9d90
xorl %r15d, %r15d
jmp 0x9d90
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9da2
callq 0x4220
testb %r15b, %r15b
je 0x9db6
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x40a0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x9d52
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9e52
movq %rax, %r13
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9e14
testq %rdx, %rdx
je 0x9e19
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9e1c
xorl %r15d, %r15d
jmp 0x9e1c
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9e2e
callq 0x4220
testb %r15b, %r15b
je 0x9e42
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4140
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x9dde
leaq -0x268(%rbp), %rdi
callq 0x42f0
movq 0x813b(%rip), %rax      # 0x11fa0
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x260(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x268(%rbp,%rcx)
callq 0x41e0
leaq -0x170(%rbp), %rdi
callq 0x40b0
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
jmp 0x9ecc
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4380