// File: /workspace/github_cpp_makefile_star2_O3/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 0x997b
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x4300
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x9965
movq 0x28(%rbp), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x99a4
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x43a0
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x998e
movq 0x30(%rbp), %r15
leaq 0x46b2(%rip), %rsi      # 0xe061
movq 0x20(%rbp), %r14
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9bb4
leaq 0x469f(%rip), %rsi      # 0xe069
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9bb4
leaq 0x4691(%rip), %rsi      # 0xe072
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9cfb
leaq 0x4683(%rip), %rsi      # 0xe07b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9cfb
leaq 0x4675(%rip), %rsi      # 0xe084
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9e42
leaq 0x4665(%rip), %rsi      # 0xe08b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9e42
leaq 0x4657(%rip), %rsi      # 0xe094
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0x9a60
leaq 0x4648(%rip), %rsi      # 0xe098
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
jne 0x9fc1
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x4360
movq %rbx, %rdi
movq %r15, %rsi
movl $0x10, %edx
callq 0x40f0
movq 0x10(%rbp), %r15
movq 0x18(%r15), %rbx
addq $0x8, %r15
cmpq %r15, %rbx
je 0x9b0b
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9aca
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0x9ad3
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0x9ad6
movq -0x48(%rbp), %r13
xorl %r14d, %r14d
jmp 0x9ad6
movb $0x1, %r14b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0x9ae7
movq %r13, %rdi
callq 0x4220
testb %r14b, %r14b
je 0x9afb
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x9a90
movq 0x18(%rbp), %r15
movq 0x18(%r15), %rbx
addq $0x8, %r15
cmpq %r15, %rbx
je 0x9b97
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9b56
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0x9b5f
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0x9b62
movq -0x48(%rbp), %r13
xorl %r14d, %r14d
jmp 0x9b62
movb $0x1, %r14b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0x9b73
movq %r13, %rdi
callq 0x4220
testb %r14b, %r14b
je 0x9b87
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4270
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x9b1c
leaq -0x268(%rbp), %rdi
callq 0x42f0
leaq -0x268(%rbp), %rdi
callq 0x4320
jmp 0x9fc1
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 0x9c5b
leaq 0x28(%r14), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9c1a
movq -0x48(%rbp), %r15
testq %rdx, %rdx
je 0x9c23
movq (%rax), %rsi
movq %r15, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0x9c26
movq -0x48(%rbp), %r15
xorl %r12d, %r12d
jmp 0x9c26
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r15
je 0x9c37
movq %r15, %rdi
callq 0x4220
testb %r12b, %r12b
je 0x9c4b
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x41f0
movq %r14, %rdi
callq 0x4180
movq %rax, %r14
cmpq %rbx, %rax
jne 0x9be0
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9cea
movq %rax, %r14
leaq 0x28(%rbx), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9ca9
movq -0x48(%rbp), %r15
testq %rdx, %rdx
je 0x9cb2
movq (%rax), %rsi
movq %r15, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0x9cb5
movq -0x48(%rbp), %r15
xorl %r12d, %r12d
jmp 0x9cb5
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r15
je 0x9cc6
movq %r15, %rdi
callq 0x4220
testb %r12b, %r12b
je 0x9cda
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4370
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0x9c6f
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0x9f8b
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 0x9da2
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9d61
movq -0x48(%rbp), %r14
testq %rdx, %rdx
je 0x9d6a
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9d6d
movq -0x48(%rbp), %r14
xorl %r15d, %r15d
jmp 0x9d6d
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r14
je 0x9d7e
movq %r14, %rdi
callq 0x4220
testb %r15b, %r15b
je 0x9d92
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42e0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0x9d27
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9e31
movq %rax, %r15
leaq 0x28(%rbx), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9df0
movq -0x48(%rbp), %r14
testq %rdx, %rdx
je 0x9df9
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0x9dfc
movq -0x48(%rbp), %r14
xorl %r12d, %r12d
jmp 0x9dfc
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r14
je 0x9e0d
movq %r14, %rdi
callq 0x4220
testb %r12b, %r12b
je 0x9e21
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4120
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0x9db6
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0x9f8b
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 0x9ef0
movq %rax, %r14
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9eaf
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0x9eb8
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9ebb
movq -0x48(%rbp), %r13
xorl %r15d, %r15d
jmp 0x9ebb
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0x9ecc
movq %r13, %rdi
callq 0x4220
testb %r15b, %r15b
je 0x9ee0
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x40a0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0x9e75
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0x9f7f
movq %rax, %r14
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x4150
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0x9f3e
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0x9f47
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0x9f4a
movq -0x48(%rbp), %r13
xorl %r15d, %r15d
jmp 0x9f4a
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0x9f5b
movq %r13, %rdi
callq 0x4220
testb %r15b, %r15b
je 0x9f6f
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4140
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0x9f04
leaq -0x268(%rbp), %rdi
callq 0x42f0
movq 0x800e(%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 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
jmp 0x9ff9
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4380