// File: /workspace/github_cpp_makefile_star2_O2/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, -0x38(%rbp)
movq %r8, -0x40(%rbp)
movq %rcx, -0x48(%rbp)
movq %rdx, %r14
movq %rsi, -0x30(%rbp)
movq %rdi, %r13
movq 0x20(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r15
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x8ec3
movsbl (%rbx,%r12), %edi
callq 0x52b0
movb %al, (%rbx,%r12)
incq %r12
jmp 0x8eab
movq 0x28(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r15
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x8ee9
movsbl (%rbx,%r12), %edi
callq 0x5330
movb %al, (%rbx,%r12)
incq %r12
jmp 0x8ed1
leaq 0x4159(%rip), %rsi      # 0xd049
movq 0x20(%rbp), %rbx
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x8f17
leaq 0x414a(%rip), %rsi      # 0xd051
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9013
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x30(%rbp), %rsi
callq 0x50e0
movq 0x18(%r13), %r14
addq $0x8, %r13
leaq -0x68(%rbp), %r15
cmpq %r13, %r14
je 0x8f8d
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r12d
movq %r15, %rdi
callq 0x50d0
testb %r12b, %r12b
je 0x8f80
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x51b0
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x8f41
movq -0x30(%rbp), %r13
movq 0x18(%r13), %r14
addq $0x8, %r13
leaq -0x68(%rbp), %r15
cmpq %r13, %r14
je 0x8fe9
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r12d
movq %r15, %rdi
callq 0x50d0
testb %r12b, %r12b
je 0x8fdc
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5310
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x8f9d
leaq -0x268(%rbp), %rdi
callq 0x52a0
leaq -0x268(%rbp), %rdi
callq 0x52d0
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4040(%rip), %rsi      # 0xd05a
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x903d
leaq 0x4036(%rip), %rsi      # 0xd063
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9121
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x30(%rbp), %rsi
callq 0x50e0
movq 0x18(%r14), %r12
addq $0x8, %r14
leaq -0x68(%rbp), %r13
cmpq %r14, %r12
je 0x90b4
leaq 0x28(%r12), %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x90a7
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5290
movq %r12, %rdi
callq 0x5160
movq %rax, %r12
jmp 0x9067
movq -0x48(%rbp), %r13
movq 0x18(%r13), %r14
addq $0x8, %r13
leaq -0x68(%rbp), %r12
cmpq %r13, %r14
je 0x9110
leaq 0x28(%r14), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9103
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5110
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x90c4
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x8ff5
leaq 0x3f44(%rip), %rsi      # 0xd06c
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x914b
leaq 0x3f38(%rip), %rsi      # 0xd073
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9234
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x30(%rbp), %rsi
callq 0x50e0
movq -0x40(%rbp), %r12
movq 0x18(%r12), %r14
addq $0x8, %r12
leaq -0x68(%rbp), %r15
cmpq %r12, %r14
je 0x91c6
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x91b9
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5080
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x917a
movq -0x38(%rbp), %r12
movq 0x18(%r12), %r14
addq $0x8, %r12
leaq -0x68(%rbp), %r15
cmpq %r12, %r14
je 0x9223
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x9216
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5130
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x91d7
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x8ff5
leaq 0x3e41(%rip), %rsi      # 0xd07c
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x925e
leaq 0x3e32(%rip), %rsi      # 0xd080
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9001
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x30(%rbp), %rsi
callq 0x50e0
movq 0x10(%rbp), %rax
movq 0x18(%rax), %r14
addq $0x8, %rax
movq %rax, -0x30(%rbp)
leaq -0x68(%rbp), %r15
movq 0x18(%rbp), %r12
cmpq -0x30(%rbp), %r14
je 0x92e1
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x92d4
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5280
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x9294
movq 0x18(%r12), %r14
addq $0x8, %r12
leaq -0x68(%rbp), %r15
cmpq %r12, %r14
je 0x933a
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x932d
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5220
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x92ee
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x8ff5
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
jmp 0x9371
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x52d0
movq %rbx, %rdi
callq 0x5320