// File: nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_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>>)
void exportacao_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 tratador, string saida){
	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.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}		
	}
	for(auto it = mamiferos_nat.begin(); it != mamiferos_nat.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}
	}
	for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = repteis_nat.begin(); it != repteis_nat.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}
	}
	for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = aves_nat.begin(); it != aves_nat.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
		if(it->second.getTratador() == tratador){
			animais << (*it).second;
		}	
	}
	animais.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x480, %rsp            # imm = 0x480
movq %r9, -0x478(%rbp)
movq %r8, -0x470(%rbp)
movq %rcx, -0x468(%rbp)
movq %rdx, -0x460(%rbp)
movq %rsi, -0x458(%rbp)
movq %rdi, %rax
movq %rax, -0x450(%rbp)
movq 0x28(%rbp), %rdi
movq %rdi, -0x428(%rbp)
movq 0x20(%rbp), %rdi
movq %rdi, -0x438(%rbp)
movq 0x18(%rbp), %r10
movq %r10, -0x448(%rbp)
movq 0x10(%rbp), %r10
movq %r10, -0x440(%rbp)
movq %rax, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
callq 0xe200
movq -0x438(%rbp), %rdi
movq %rax, -0x38(%rbp)
callq 0xe110
movq -0x438(%rbp), %rdi
movq %rax, -0x40(%rbp)
callq 0xe200
movq %rax, -0x48(%rbp)
movq -0x38(%rbp), %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq 0x13290(%rip), %rcx     # 0x29fd8
callq 0x18600
movq %rax, -0x50(%rbp)
leaq -0x250(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0xe350
movq -0x430(%rbp), %rdi
movq -0x428(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x16d7e
movq -0x450(%rbp), %rdi
callq 0x18680
movq %rax, -0x268(%rbp)
movq -0x450(%rbp), %rdi
callq 0x186e0
movq %rax, -0x270(%rbp)
leaq -0x268(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x186b0
testb $0x1, %al
jne 0x16dc0
jmp 0x16e74
leaq -0x268(%rbp), %rdi
callq 0x18ec0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x290(%rbp), %rdi
callq 0xe2b0
jmp 0x16de1
movq -0x438(%rbp), %rsi
leaq -0x290(%rbp), %rdi
callq 0x18e30
movb %al, -0x479(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xe150
movb -0x479(%rbp), %al
testb $0x1, %al
jne 0x16e12
jmp 0x16e58
leaq -0x268(%rbp), %rdi
callq 0x18710
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe1e0
jmp 0x16e33
jmp 0x16e58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x258(%rbp)
movl %eax, -0x25c(%rbp)
leaq -0x250(%rbp), %rdi
callq 0xe320
jmp 0x1745c
jmp 0x16e5a
leaq -0x268(%rbp), %rdi
xorl %esi, %esi
callq 0x18730
movq %rax, -0x298(%rbp)
jmp 0x16d91
movq -0x458(%rbp), %rdi
callq 0x18770
movq %rax, -0x2a0(%rbp)
movq -0x458(%rbp), %rdi
callq 0x187d0
movq %rax, -0x2a8(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x187a0
testb $0x1, %al
jne 0x16eb6
jmp 0x16f47
leaq -0x2a0(%rbp), %rdi
callq 0x18ee0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x2c8(%rbp), %rdi
callq 0xe2b0
jmp 0x16ed7
movq -0x438(%rbp), %rsi
leaq -0x2c8(%rbp), %rdi
callq 0x18e30
movb %al, -0x47a(%rbp)
leaq -0x2c8(%rbp), %rdi
callq 0xe150
movb -0x47a(%rbp), %al
testb $0x1, %al
jne 0x16f08
jmp 0x16f2b
leaq -0x2a0(%rbp), %rdi
callq 0x18800
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe360
jmp 0x16f29
jmp 0x16f2b
jmp 0x16f2d
leaq -0x2a0(%rbp), %rdi
xorl %esi, %esi
callq 0x18820
movq %rax, -0x2d0(%rbp)
jmp 0x16e87
movq -0x460(%rbp), %rdi
callq 0x18860
movq %rax, -0x2d8(%rbp)
movq -0x460(%rbp), %rdi
callq 0x188c0
movq %rax, -0x2e0(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x18890
testb $0x1, %al
jne 0x16f89
jmp 0x1701a
leaq -0x2d8(%rbp), %rdi
callq 0x18f00
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x300(%rbp), %rdi
callq 0xe2b0
jmp 0x16faa
movq -0x438(%rbp), %rsi
leaq -0x300(%rbp), %rdi
callq 0x18e30
movb %al, -0x47b(%rbp)
leaq -0x300(%rbp), %rdi
callq 0xe150
movb -0x47b(%rbp), %al
testb $0x1, %al
jne 0x16fdb
jmp 0x16ffe
leaq -0x2d8(%rbp), %rdi
callq 0x188f0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe2f0
jmp 0x16ffc
jmp 0x16ffe
jmp 0x17000
leaq -0x2d8(%rbp), %rdi
xorl %esi, %esi
callq 0x18910
movq %rax, -0x308(%rbp)
jmp 0x16f5a
movq -0x468(%rbp), %rdi
callq 0x18950
movq %rax, -0x310(%rbp)
movq -0x468(%rbp), %rdi
callq 0x189b0
movq %rax, -0x318(%rbp)
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x18980
testb $0x1, %al
jne 0x1705c
jmp 0x170ed
leaq -0x310(%rbp), %rdi
callq 0x18f20
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x338(%rbp), %rdi
callq 0xe2b0
jmp 0x1707d
movq -0x438(%rbp), %rsi
leaq -0x338(%rbp), %rdi
callq 0x18e30
movb %al, -0x47c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0xe150
movb -0x47c(%rbp), %al
testb $0x1, %al
jne 0x170ae
jmp 0x170d1
leaq -0x310(%rbp), %rdi
callq 0x189e0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe100
jmp 0x170cf
jmp 0x170d1
jmp 0x170d3
leaq -0x310(%rbp), %rdi
xorl %esi, %esi
callq 0x18a00
movq %rax, -0x340(%rbp)
jmp 0x1702d
movq -0x470(%rbp), %rdi
callq 0x18a40
movq %rax, -0x348(%rbp)
movq -0x470(%rbp), %rdi
callq 0x18aa0
movq %rax, -0x350(%rbp)
leaq -0x348(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x18a70
testb $0x1, %al
jne 0x1712f
jmp 0x171c0
leaq -0x348(%rbp), %rdi
callq 0x18f40
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x370(%rbp), %rdi
callq 0xe2b0
jmp 0x17150
movq -0x438(%rbp), %rsi
leaq -0x370(%rbp), %rdi
callq 0x18e30
movb %al, -0x47d(%rbp)
leaq -0x370(%rbp), %rdi
callq 0xe150
movb -0x47d(%rbp), %al
testb $0x1, %al
jne 0x17181
jmp 0x171a4
leaq -0x348(%rbp), %rdi
callq 0x18ad0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe080
jmp 0x171a2
jmp 0x171a4
jmp 0x171a6
leaq -0x348(%rbp), %rdi
xorl %esi, %esi
callq 0x18af0
movq %rax, -0x378(%rbp)
jmp 0x17100
movq -0x478(%rbp), %rdi
callq 0x18b30
movq %rax, -0x380(%rbp)
movq -0x478(%rbp), %rdi
callq 0x18b90
movq %rax, -0x388(%rbp)
leaq -0x380(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x18b60
testb $0x1, %al
jne 0x17202
jmp 0x17293
leaq -0x380(%rbp), %rdi
callq 0x18f60
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x3a8(%rbp), %rdi
callq 0xe2b0
jmp 0x17223
movq -0x438(%rbp), %rsi
leaq -0x3a8(%rbp), %rdi
callq 0x18e30
movb %al, -0x47e(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0xe150
movb -0x47e(%rbp), %al
testb $0x1, %al
jne 0x17254
jmp 0x17277
leaq -0x380(%rbp), %rdi
callq 0x18bc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe140
jmp 0x17275
jmp 0x17277
jmp 0x17279
leaq -0x380(%rbp), %rdi
xorl %esi, %esi
callq 0x18be0
movq %rax, -0x3b0(%rbp)
jmp 0x171d3
movq -0x440(%rbp), %rdi
callq 0x18c20
movq %rax, -0x3b8(%rbp)
movq -0x440(%rbp), %rdi
callq 0x18c80
movq %rax, -0x3c0(%rbp)
leaq -0x3b8(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x18c50
testb $0x1, %al
jne 0x172d5
jmp 0x17366
leaq -0x3b8(%rbp), %rdi
callq 0x18f80
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x3e0(%rbp), %rdi
callq 0xe2b0
jmp 0x172f6
movq -0x438(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x18e30
movb %al, -0x47f(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0xe150
movb -0x47f(%rbp), %al
testb $0x1, %al
jne 0x17327
jmp 0x1734a
leaq -0x3b8(%rbp), %rdi
callq 0x18cb0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe2e0
jmp 0x17348
jmp 0x1734a
jmp 0x1734c
leaq -0x3b8(%rbp), %rdi
xorl %esi, %esi
callq 0x18cd0
movq %rax, -0x3e8(%rbp)
jmp 0x172a6
movq -0x448(%rbp), %rdi
callq 0x18d10
movq %rax, -0x3f0(%rbp)
movq -0x448(%rbp), %rdi
callq 0x18d70
movq %rax, -0x3f8(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x18d40
testb $0x1, %al
jne 0x173a8
jmp 0x17439
leaq -0x3f0(%rbp), %rdi
callq 0x18fa0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x418(%rbp), %rdi
callq 0xe2b0
jmp 0x173c9
movq -0x438(%rbp), %rsi
leaq -0x418(%rbp), %rdi
callq 0x18e30
movb %al, -0x480(%rbp)
leaq -0x418(%rbp), %rdi
callq 0xe150
movb -0x480(%rbp), %al
testb $0x1, %al
jne 0x173fa
jmp 0x1741d
leaq -0x3f0(%rbp), %rdi
callq 0x18da0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x250(%rbp), %rdi
callq 0xe270
jmp 0x1741b
jmp 0x1741d
jmp 0x1741f
leaq -0x3f0(%rbp), %rdi
xorl %esi, %esi
callq 0x18dc0
movq %rax, -0x420(%rbp)
jmp 0x17379
leaq -0x250(%rbp), %rdi
callq 0xe300
jmp 0x17447
leaq -0x250(%rbp), %rdi
callq 0xe320
addq $0x480, %rsp            # imm = 0x480
popq %rbp
retq
movq -0x258(%rbp), %rdi
callq 0xe370
nopl (%rax,%rax)