// File: /workspace/github_cpp_makefile_star2_O2/nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_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>>)
void exportacao_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 veterinario, string tratador, string saida){
	transform(veterinario.begin(), veterinario.end(), veterinario.begin(), ::toupper);
	transform(tratador.begin(), tratador.end(), tratador.begin(), ::toupper);

	ofstream animais;
	animais.open(saida);

	for(auto it = anfibios_nat.begin(); it != anfibios_nat.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}		
	}
	for(auto it = mamiferos_nat.begin(); it != mamiferos_nat.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}
	}
	for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = repteis_nat.begin(); it != repteis_nat.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}
	}
	for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = aves_nat.begin(); it != aves_nat.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
		if(it->second.getVeterinario() == veterinario && it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	animais.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x278, %rsp            # imm = 0x278
movq %r9, -0x40(%rbp)
movq %r8, -0x48(%rbp)
movq %rcx, -0x38(%rbp)
movq %rdx, %r13
movq %rsi, -0x78(%rbp)
movq %rdi, %r15
movq 0x20(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
xorl %r12d, %r12d
cmpq %r12, %r14
je 0x98ed
movsbl (%rbx,%r12), %edi
callq 0x5330
movb %al, (%rbx,%r12)
incq %r12
jmp 0x98d5
movq 0x28(%rbp), %rax
movq (%rax), %rbx
movq 0x8(%rax), %r14
xorl %r12d, %r12d
cmpq %r12, %r14
je 0x9913
movsbl (%rbx,%r12), %edi
callq 0x5330
movb %al, (%rbx,%r12)
incq %r12
jmp 0x98fb
movq %r13, -0x70(%rbp)
leaq -0x298(%rbp), %r14
movq %r14, %rdi
callq 0x5300
pushq $0x10
popq %rdx
movq %r14, %rdi
movq 0x30(%rbp), %rsi
callq 0x50e0
movq %r15, %rbx
movq 0x18(%r15), %r13
addq $0x8, %rbx
leaq -0x68(%rbp), %r15
leaq -0x98(%rbp), %r12
cmpq %rbx, %r13
je 0x99c5
leaq 0x28(%r13), %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x5140
movq %r15, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x99b0
movq %r12, %rdi
movq %r14, %rsi
callq 0x5260
movq %r12, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movb %al, -0x29(%rbp)
movq %r12, %rdi
callq 0x50d0
movq %r15, %rdi
callq 0x50d0
cmpb $0x0, -0x29(%rbp)
je 0x99b8
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x51b0
jmp 0x99b8
movq %r15, %rdi
callq 0x50d0
movq %r13, %rdi
callq 0x5160
movq %rax, %r13
jmp 0x994b
movq -0x78(%rbp), %r12
movq 0x18(%r12), %rbx
addq $0x8, %r12
leaq -0x68(%rbp), %r13
leaq -0x98(%rbp), %r15
cmpq %r12, %rbx
je 0x9a57
leaq 0x28(%rbx), %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0x5140
movq %r13, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9a42
movq %r15, %rdi
movq %r14, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movb %al, -0x29(%rbp)
movq %r15, %rdi
callq 0x50d0
movq %r13, %rdi
callq 0x50d0
cmpb $0x0, -0x29(%rbp)
je 0x9a4a
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5310
jmp 0x9a4a
movq %r13, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x99dd
movq -0x70(%rbp), %r13
movq 0x18(%r13), %rbx
addq $0x8, %r13
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r15
cmpq %r13, %rbx
je 0x9ae8
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9ad3
movq %r15, %rdi
movq %r14, %rsi
callq 0x5260
movq %r15, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movb %al, -0x29(%rbp)
movq %r15, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
cmpb $0x0, -0x29(%rbp)
je 0x9adb
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5290
jmp 0x9adb
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9a6e
movq -0x38(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x38(%rbp)
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r13
cmpq -0x38(%rbp), %rbx
je 0x9b7d
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9b68
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9b70
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5110
jmp 0x9b70
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9b03
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x48(%rbp)
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r13
cmpq -0x48(%rbp), %rbx
je 0x9c12
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9bfd
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9c05
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5080
jmp 0x9c05
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9b98
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x40(%rbp)
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r13
cmpq -0x40(%rbp), %rbx
je 0x9ca7
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9c92
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9c9a
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5130
jmp 0x9c9a
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9c2d
movq 0x10(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x38(%rbp)
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r13
cmpq -0x38(%rbp), %rbx
je 0x9d3c
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9d27
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9d2f
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5280
jmp 0x9d2f
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9cc2
movq 0x18(%rbp), %rax
movq 0x18(%rax), %rbx
addq $0x8, %rax
movq %rax, -0x38(%rbp)
leaq -0x68(%rbp), %r12
leaq -0x98(%rbp), %r13
cmpq -0x38(%rbp), %rbx
je 0x9dd1
leaq 0x28(%rbx), %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x5140
movq %r12, %rdi
movq 0x20(%rbp), %rsi
callq 0xabcb
testb %al, %al
je 0x9dbc
movq %r13, %rdi
movq %r14, %rsi
callq 0x5260
movq %r13, %rdi
movq 0x28(%rbp), %rsi
callq 0xabcb
movl %eax, %r15d
movq %r13, %rdi
callq 0x50d0
movq %r12, %rdi
callq 0x50d0
testb %r15b, %r15b
je 0x9dc4
leaq -0x298(%rbp), %rdi
movq %r14, %rsi
callq 0x5220
jmp 0x9dc4
movq %r12, %rdi
callq 0x50d0
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
jmp 0x9d57
leaq -0x298(%rbp), %rdi
callq 0x52a0
leaq -0x298(%rbp), %rdi
callq 0x52d0
addq $0x278, %rsp            # imm = 0x278
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e1b
jmp 0x9e1b
jmp 0x9e1b
jmp 0x9e1b
jmp 0x9e1b
jmp 0x9e1b
jmp 0x9e1b
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x50d0
jmp 0x9e3a
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
jmp 0x9e37
movq %rax, %rbx
leaq -0x298(%rbp), %rdi
callq 0x52d0
movq %rbx, %rdi
callq 0x5320