// File: /workspace/github_cpp_makefile_star2_O1/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, -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 0x9f36
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x4300
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x9f20
movq 0x28(%rbp), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
je 0x9f5f
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x43a0
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0x9f49
movq 0x30(%rbp), %r15
leaq 0x40d7(%rip), %rsi      # 0xe041
movq 0x20(%rbp), %r14
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa169
leaq 0x40c4(%rip), %rsi      # 0xe049
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa169
leaq 0x40b6(%rip), %rsi      # 0xe052
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa2aa
leaq 0x40a8(%rip), %rsi      # 0xe05b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa2aa
leaq 0x409a(%rip), %rsi      # 0xe064
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa3eb
leaq 0x408a(%rip), %rsi      # 0xe06b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa3eb
leaq 0x407c(%rip), %rsi      # 0xe074
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa01b
leaq 0x406d(%rip), %rsi      # 0xe078
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
jne 0xa564
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 0xa0c3
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa085
testq %rdx, %rdx
je 0xa08a
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa08d
xorl %r15d, %r15d
jmp 0xa08d
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa09f
callq 0x4220
testb %r15b, %r15b
je 0xa0b3
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa04f
movq 0x18(%rbp), %r13
movq 0x18(%r13), %rbx
addq $0x8, %r13
cmpq %r13, %rbx
je 0xa14c
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa10e
testq %rdx, %rdx
je 0xa113
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa116
xorl %r15d, %r15d
jmp 0xa116
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa128
callq 0x4220
testb %r15b, %r15b
je 0xa13c
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4270
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa0d8
leaq -0x268(%rbp), %rdi
callq 0x42f0
leaq -0x268(%rbp), %rdi
callq 0x4320
jmp 0xa564
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 0xa20d
leaq -0x48(%rbp), %r12
leaq 0x28(%r14), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa1cf
testq %rdx, %rdx
je 0xa1d4
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa1d7
xorl %r15d, %r15d
jmp 0xa1d7
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa1e9
callq 0x4220
testb %r15b, %r15b
je 0xa1fd
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x41f0
movq %r14, %rdi
callq 0x4180
movq %rax, %r14
cmpq %rbx, %rax
jne 0xa199
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa299
movq %rax, %r15
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r13
movq %r14, %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa25b
testq %rdx, %rdx
je 0xa260
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0xa263
xorl %r12d, %r12d
jmp 0xa263
movb $0x1, %r12b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa275
callq 0x4220
testb %r12b, %r12b
je 0xa289
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4370
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0xa225
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0xa52e
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 0xa34e
leaq -0x48(%rbp), %r15
leaq 0x28(%rbx), %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa310
testq %rdx, %rdx
je 0xa315
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0xa318
xorl %r14d, %r14d
jmp 0xa318
movb $0x1, %r14b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa32a
callq 0x4220
testb %r14b, %r14b
je 0xa33e
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42e0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa2da
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa3da
movq %rax, %r14
leaq -0x48(%rbp), %r15
leaq 0x28(%rbx), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa39c
testq %rdx, %rdx
je 0xa3a1
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0xa3a4
xorl %r12d, %r12d
jmp 0xa3a4
movb $0x1, %r12b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa3b6
callq 0x4220
testb %r12b, %r12b
je 0xa3ca
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4120
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0xa366
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0xa52e
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 0xa496
movq %rax, %r13
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa458
testq %rdx, %rdx
je 0xa45d
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa460
xorl %r15d, %r15d
jmp 0xa460
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa472
callq 0x4220
testb %r15b, %r15b
je 0xa486
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x40a0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa422
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa522
movq %rax, %r13
leaq -0x48(%rbp), %r14
leaq 0x28(%rbx), %r12
movq %r14, %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa4e4
testq %rdx, %rdx
je 0xa4e9
movq (%rax), %rsi
movq -0x48(%rbp), %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa4ec
xorl %r15d, %r15d
jmp 0xa4ec
movb $0x1, %r15b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xa4fe
callq 0x4220
testb %r15b, %r15b
je 0xa512
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4140
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa4ae
leaq -0x268(%rbp), %rdi
callq 0x42f0
movq 0x7a6b(%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 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
jmp 0xa59c
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4380