// File: /workspace/github_cpp_makefile_star2_O3/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 0xa063
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x4300
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0xa04d
movq 0x28(%rbp), %rax
movq 0x8(%rax), %r14
testq %r14, %r14
je 0xa08c
movq (%rax), %r15
xorl %r12d, %r12d
movsbl (%r15,%r12), %edi
callq 0x43a0
movb %al, (%r15,%r12)
incq %r12
cmpq %r12, %r14
jne 0xa076
movq 0x30(%rbp), %r15
leaq 0x3fca(%rip), %rsi      # 0xe061
movq 0x20(%rbp), %r14
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa29c
leaq 0x3fb7(%rip), %rsi      # 0xe069
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa29c
leaq 0x3fa9(%rip), %rsi      # 0xe072
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa3e3
leaq 0x3f9b(%rip), %rsi      # 0xe07b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa3e3
leaq 0x3f8d(%rip), %rsi      # 0xe084
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa52a
leaq 0x3f7d(%rip), %rsi      # 0xe08b
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa52a
leaq 0x3f6f(%rip), %rsi      # 0xe094
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
je 0xa148
leaq 0x3f60(%rip), %rsi      # 0xe098
movq %r14, %rdi
callq 0x4080
testl %eax, %eax
jne 0xa6a9
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 0xa1f3
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa1b2
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0xa1bb
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0xa1be
movq -0x48(%rbp), %r13
xorl %r14d, %r14d
jmp 0xa1be
movb $0x1, %r14b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0xa1cf
movq %r13, %rdi
callq 0x4220
testb %r14b, %r14b
je 0xa1e3
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42d0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0xa178
movq 0x18(%rbp), %r15
movq 0x18(%r15), %rbx
addq $0x8, %r15
cmpq %r15, %rbx
je 0xa27f
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa23e
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0xa247
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r14b
jmp 0xa24a
movq -0x48(%rbp), %r13
xorl %r14d, %r14d
jmp 0xa24a
movb $0x1, %r14b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0xa25b
movq %r13, %rdi
callq 0x4220
testb %r14b, %r14b
je 0xa26f
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4270
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0xa204
leaq -0x268(%rbp), %rdi
callq 0x42f0
leaq -0x268(%rbp), %rdi
callq 0x4320
jmp 0xa6a9
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 0xa343
leaq 0x28(%r14), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa302
movq -0x48(%rbp), %r15
testq %rdx, %rdx
je 0xa30b
movq (%rax), %rsi
movq %r15, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0xa30e
movq -0x48(%rbp), %r15
xorl %r12d, %r12d
jmp 0xa30e
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r15
je 0xa31f
movq %r15, %rdi
callq 0x4220
testb %r12b, %r12b
je 0xa333
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x41f0
movq %r14, %rdi
callq 0x4180
movq %rax, %r14
cmpq %rbx, %rax
jne 0xa2c8
movq -0x68(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa3d2
movq %rax, %r14
leaq 0x28(%rbx), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa391
movq -0x48(%rbp), %r15
testq %rdx, %rdx
je 0xa39a
movq (%rax), %rsi
movq %r15, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0xa39d
movq -0x48(%rbp), %r15
xorl %r12d, %r12d
jmp 0xa39d
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r15
je 0xa3ae
movq %r15, %rdi
callq 0x4220
testb %r12b, %r12b
je 0xa3c2
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4370
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0xa357
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0xa673
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 0xa48a
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa449
movq -0x48(%rbp), %r14
testq %rdx, %rdx
je 0xa452
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa455
movq -0x48(%rbp), %r14
xorl %r15d, %r15d
jmp 0xa455
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r14
je 0xa466
movq %r14, %rdi
callq 0x4220
testb %r15b, %r15b
je 0xa47a
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x42e0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r13, %rax
jne 0xa40f
movq -0x60(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa519
movq %rax, %r15
leaq 0x28(%rbx), %r13
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa4d8
movq -0x48(%rbp), %r14
testq %rdx, %rdx
je 0xa4e1
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4260
testl %eax, %eax
sete %r12b
jmp 0xa4e4
movq -0x48(%rbp), %r14
xorl %r12d, %r12d
jmp 0xa4e4
movb $0x1, %r12b
leaq -0x38(%rbp), %rax
cmpq %rax, %r14
je 0xa4f5
movq %r14, %rdi
callq 0x4220
testb %r12b, %r12b
je 0xa509
leaq -0x268(%rbp), %rdi
movq %r13, %rsi
callq 0x4120
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r15, %rax
jne 0xa49e
leaq -0x268(%rbp), %rdi
callq 0x42f0
jmp 0xa673
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 0xa5d8
movq %rax, %r14
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa597
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0xa5a0
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa5a3
movq -0x48(%rbp), %r13
xorl %r15d, %r15d
jmp 0xa5a3
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0xa5b4
movq %r13, %rdi
callq 0x4220
testb %r15b, %r15b
je 0xa5c8
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x40a0
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0xa55d
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
cmpq %rax, %rbx
je 0xa667
movq %rax, %r14
leaq 0x28(%rbx), %r12
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
callq 0x42b0
movq -0x40(%rbp), %rdx
movq 0x28(%rbp), %rax
cmpq 0x8(%rax), %rdx
jne 0xa626
movq -0x48(%rbp), %r13
testq %rdx, %rdx
je 0xa62f
movq (%rax), %rsi
movq %r13, %rdi
callq 0x4260
testl %eax, %eax
sete %r15b
jmp 0xa632
movq -0x48(%rbp), %r13
xorl %r15d, %r15d
jmp 0xa632
movb $0x1, %r15b
leaq -0x38(%rbp), %rax
cmpq %rax, %r13
je 0xa643
movq %r13, %rdi
callq 0x4220
testb %r15b, %r15b
je 0xa657
leaq -0x268(%rbp), %rdi
movq %r12, %rsi
callq 0x4140
movq %rbx, %rdi
callq 0x4180
movq %rax, %rbx
cmpq %r14, %rax
jne 0xa5ec
leaq -0x268(%rbp), %rdi
callq 0x42f0
movq 0x7926(%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 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
jmp 0xa6e1
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x4380