// File: /workspace/github_cpp_makefile_star2_O2/nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_classe_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>>)
void exportacao_classe_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 tratador, string saida){

	transform(classe.begin(), classe.end(), classe.begin(), ::tolower);
	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.getTratador() == tratador){
				anfibios << (*it).second;
			}
		}
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			if(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.getTratador() == tratador){
				mamiferos << (*it).second;
			}
		}
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			if(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.getTratador() == tratador){
				repteis << (*it).second;
			}
		}
		for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
			if(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.getTratador() == tratador){
				aves << (*it).second;
			}
		}
		for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
			if(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 $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 0x93d8
movsbl (%rbx,%r12), %edi
callq 0x52b0
movb %al, (%rbx,%r12)
incq %r12
jmp 0x93c0
movq 0x28(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r15
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x93fe
movsbl (%rbx,%r12), %edi
callq 0x5330
movb %al, (%rbx,%r12)
incq %r12
jmp 0x93e6
leaq 0x3c44(%rip), %rsi      # 0xd049
movq 0x20(%rbp), %rbx
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x942c
leaq 0x3c35(%rip), %rsi      # 0xd051
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9528
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 0x94a2
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r12d
movq %r15, %rdi
callq 0x50d0
testb %r12b, %r12b
je 0x9495
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x51b0
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x9456
movq -0x30(%rbp), %r13
movq 0x18(%r13), %r14
addq $0x8, %r13
leaq -0x68(%rbp), %r15
cmpq %r13, %r14
je 0x94fe
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r12d
movq %r15, %rdi
callq 0x50d0
testb %r12b, %r12b
je 0x94f1
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5310
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x94b2
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 0x3b2b(%rip), %rsi      # 0xd05a
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x9552
leaq 0x3b21(%rip), %rsi      # 0xd063
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9636
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 0x95c9
leaq 0x28(%r12), %rbx
movq %r13, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x95bc
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5290
movq %r12, %rdi
callq 0x5160
movq %rax, %r12
jmp 0x957c
movq -0x48(%rbp), %r13
movq 0x18(%r13), %r14
addq $0x8, %r13
leaq -0x68(%rbp), %r12
cmpq %r13, %r14
je 0x9625
leaq 0x28(%r14), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r12, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9618
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5110
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x95d9
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x950a
leaq 0x3a2f(%rip), %rsi      # 0xd06c
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x9660
leaq 0x3a23(%rip), %rsi      # 0xd073
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9749
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 0x96db
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x96ce
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5080
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x968f
movq -0x38(%rbp), %r12
movq 0x18(%r12), %r14
addq $0x8, %r12
leaq -0x68(%rbp), %r15
cmpq %r12, %r14
je 0x9738
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x972b
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5130
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x96ec
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x950a
leaq 0x392c(%rip), %rsi      # 0xd07c
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
jne 0x9773
leaq 0x391d(%rip), %rsi      # 0xd080
movq %rbx, %rdi
callq 0xabbb
testb %al, %al
je 0x9516
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 0x97f6
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x97e9
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5280
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x97a9
movq 0x18(%r12), %r14
addq $0x8, %r12
leaq -0x68(%rbp), %r15
cmpq %r12, %r14
je 0x984f
leaq 0x28(%r14), %rbx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r13d
movq %r15, %rdi
callq 0x50d0
testb %r13b, %r13b
je 0x9842
leaq -0x268(%rbp), %rdi
movq %rbx, %rsi
callq 0x5220
movq %r14, %rdi
callq 0x5160
movq %rax, %r14
jmp 0x9803
leaq -0x268(%rbp), %rdi
callq 0x52a0
jmp 0x950a
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
jmp 0x9886
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x52d0
movq %rbx, %rdi
callq 0x5320