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

	transform(classe.begin(), classe.end(), classe.begin(), ::tolower);
	transform(saida.begin(), saida.end(), saida.begin(), ::tolower);
	transform(veterinario.begin(), veterinario.end(), veterinario.begin(), ::toupper);
	transform(tratador.begin(), tratador.end(), tratador.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 && it->second.getTratador() == tratador){
				anfibios << (*it).second;
			}
		}
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
				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 && it->second.getTratador() == tratador){
				mamiferos << (*it).second;
			}
		}
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
				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 && it->second.getTratador() == tratador){
				repteis << (*it).second;
			}
		}
		for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
				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 && it->second.getTratador() == tratador){
				aves << (*it).second;
			}
		}
		for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
				aves << (*it).second;
			}
		}
		aves.close();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x268, %rsp            # imm = 0x268
movq %r9, -0x30(%rbp)
movq %r8, -0x60(%rbp)
movq %rcx, -0x68(%rbp)
movq %rdx, -0x70(%rbp)
movq %rsi, -0x38(%rbp)
movq %rdi, %r13
movq 0x20(%rbp), %rax
movq (%rax), %rbx
movq %rax, %r12
movq 0x8(%rax), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x879d
movsbl (%rbx,%r15), %edi
callq 0x52b0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x8785
movq 0x38(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x87c3
movsbl (%rbx,%r15), %edi
callq 0x52b0
movb %al, (%rbx,%r15)
incq %r15
jmp 0x87ab
movq 0x28(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x87e9
movsbl (%rbx,%r15), %edi
callq 0x5330
movb %al, (%rbx,%r15)
incq %r15
jmp 0x87d1
movq 0x30(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
xorl %r15d, %r15d
cmpq %r15, %r14
je 0x880f
movsbl (%rbx,%r15), %edi
callq 0x5330
movb %al, (%rbx,%r15)
incq %r15
jmp 0x87f7
leaq 0x4833(%rip), %rsi      # 0xd049
movq %r12, %rdi
callq 0xabbb
testb %al, %al
jne 0x8839
leaq 0x4828(%rip), %rsi      # 0xd051
movq %r12, %rdi
callq 0xabbb
testb %al, %al
je 0x89a2
leaq -0x290(%rbp), %r14
movq %r14, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %r14, %rdi
movq 0x38(%rbp), %rsi
callq 0x50e0
movq %r13, %rbx
movq 0x18(%r13), %r15
addq $0x8, %rbx
leaq -0x58(%rbp), %r12
leaq -0x90(%rbp), %r14
cmpq %rbx, %r15
je 0x88e7
leaq 0x28(%r15), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x88d2
movq %r14, %rdi
movq %r13, %rsi
callq 0x5260
movq %r14, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r14, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x88da
leaq -0x290(%rbp), %rdi
movq %r13, %rsi
callq 0x51b0
jmp 0x88da
movq %r12, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x5160
movq %rax, %r15
jmp 0x886d
movq -0x38(%rbp), %r14
movq 0x18(%r14), %rbx
addq $0x8, %r14
leaq -0x58(%rbp), %r15
leaq -0x90(%rbp), %r12
cmpq %r14, %rbx
je 0x8978
leaq 0x28(%rbx), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8963
movq %r12, %rdi
movq %r13, %rsi
callq 0x5260
movq %r12, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r12, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x896b
leaq -0x290(%rbp), %rdi
movq %r13, %rsi
callq 0x5310
jmp 0x896b
movq %r15, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x88fe
leaq -0x290(%rbp), %rdi
callq 0x52a0
leaq -0x290(%rbp), %rdi
callq 0x52d0
addq $0x268, %rsp            # imm = 0x268
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x46b1(%rip), %rsi      # 0xd05a
movq %r12, %rdi
callq 0xabbb
testb %al, %al
jne 0x89cc
leaq 0x46a7(%rip), %rsi      # 0xd063
movq %r12, %rdi
callq 0xabbb
testb %al, %al
je 0x8b1e
leaq -0x290(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x38(%rbp), %rsi
callq 0x50e0
movq -0x70(%rbp), %r15
movq 0x18(%r15), %rbx
addq $0x8, %r15
leaq -0x58(%rbp), %r13
leaq -0x90(%rbp), %r12
cmpq %r15, %rbx
je 0x8a7b
leaq 0x28(%rbx), %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0x5140
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8a66
movq %r12, %rdi
movq %r14, %rsi
callq 0x5260
movq %r12, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r12, %rdi
callq 0x50d0
movq %r13, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x8a6e
leaq -0x290(%rbp), %rdi
movq %r14, %rsi
callq 0x5290
jmp 0x8a6e
movq %r13, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8a01
movq -0x68(%rbp), %r12
movq 0x18(%r12), %rbx
addq $0x8, %r12
leaq -0x58(%rbp), %r15
leaq -0x90(%rbp), %r13
cmpq %r12, %rbx
je 0x8b0d
leaq 0x28(%rbx), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8af8
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r13, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x8b00
leaq -0x290(%rbp), %rdi
movq %r14, %rsi
callq 0x5110
jmp 0x8b00
movq %r15, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8a93
leaq -0x290(%rbp), %rdi
callq 0x52a0
jmp 0x8984
leaq 0x4547(%rip), %rsi      # 0xd06c
movq %r12, %rdi
callq 0xabbb
testb %al, %al
jne 0x8b48
leaq 0x453b(%rip), %rsi      # 0xd073
movq %r12, %rdi
callq 0xabbb
testb %al, %al
je 0x8c9d
leaq -0x290(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x38(%rbp), %rsi
callq 0x50e0
movq -0x60(%rbp), %r14
movq 0x18(%r14), %rbx
addq $0x8, %r14
leaq -0x58(%rbp), %r15
leaq -0x90(%rbp), %r12
cmpq %r14, %rbx
je 0x8bf7
leaq 0x28(%rbx), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8be2
movq %r12, %rdi
movq %r13, %rsi
callq 0x5260
movq %r12, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x38(%rbp)
movq %r12, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x38(%rbp)
je 0x8bea
leaq -0x290(%rbp), %rdi
movq %r13, %rsi
callq 0x5080
jmp 0x8bea
movq %r15, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8b7d
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x30(%rbp)
leaq -0x58(%rbp), %r12
leaq -0x90(%rbp), %r13
cmpq -0x30(%rbp), %rbx
je 0x8c8c
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8c77
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x8c7f
leaq -0x290(%rbp), %rdi
movq %r14, %rsi
callq 0x5130
jmp 0x8c7f
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8c12
leaq -0x290(%rbp), %rdi
callq 0x52a0
jmp 0x8984
leaq 0x43d8(%rip), %rsi      # 0xd07c
movq %r12, %rdi
callq 0xabbb
testb %al, %al
jne 0x8cc7
leaq 0x43c9(%rip), %rsi      # 0xd080
movq %r12, %rdi
callq 0xabbb
testb %al, %al
je 0x8990
leaq -0x290(%rbp), %rbx
movq %rbx, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %rbx, %rdi
movq 0x38(%rbp), %rsi
callq 0x50e0
movq 0x10(%rbp), %r12
movq 0x18(%r12), %rbx
addq $0x8, %r12
leaq -0x58(%rbp), %r15
leaq -0x90(%rbp), %r14
cmpq %r12, %rbx
je 0x8d77
leaq 0x28(%rbx), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8d62
movq %r14, %rdi
movq %r13, %rsi
callq 0x5260
movq %r14, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r14, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x8d6a
leaq -0x290(%rbp), %rdi
movq %r13, %rsi
callq 0x5280
jmp 0x8d6a
movq %r15, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8cfd
movq 0x18(%rbp), %r12
movq 0x18(%r12), %rbx
addq $0x8, %r12
leaq -0x58(%rbp), %r15
leaq -0x90(%rbp), %r13
cmpq %r12, %rbx
je 0x8e09
leaq 0x28(%rbx), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x8df4
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x30(%rbp), %rsi
callq 0xabcb
movb %al, -0x30(%rbp)
movq %r13, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x30(%rbp)
je 0x8dfc
leaq -0x290(%rbp), %rdi
movq %r14, %rsi
callq 0x5220
jmp 0x8dfc
movq %r15, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x8d8f
leaq -0x290(%rbp), %rdi
callq 0x52a0
jmp 0x8984
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e4c
jmp 0x8e4c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e4c
jmp 0x8e4c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e4c
jmp 0x8e4c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e5c
jmp 0x8e4c
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x50d0
jmp 0x8e5f
jmp 0x8e5c
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x52d0
movq %rbx, %rdi
callq 0x5320