// File: 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
subq $0xae0, %rsp            # imm = 0xAE0
movq %r9, -0xa98(%rbp)
movq %r8, -0xa90(%rbp)
movq %rcx, -0xa88(%rbp)
movq %rdx, -0xa80(%rbp)
movq %rsi, -0xa78(%rbp)
movq %rdi, %rax
movq %rax, -0xa70(%rbp)
movq 0x30(%rbp), %rdi
movq %rdi, -0xa68(%rbp)
movq 0x28(%rbp), %rdi
movq %rdi, -0xa50(%rbp)
movq 0x20(%rbp), %rdi
movq %rdi, -0xa48(%rbp)
movq 0x18(%rbp), %r10
movq %r10, -0xa60(%rbp)
movq 0x10(%rbp), %r10
movq %r10, -0xa58(%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 -0xa48(%rbp), %rdi
movq %rax, -0x38(%rbp)
callq 0xe110
movq -0xa48(%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 0x15195(%rip), %rcx     # 0x29fb8
callq 0x18600
movq -0xa50(%rbp), %rdi
movq %rax, -0x50(%rbp)
callq 0xe200
movq -0xa50(%rbp), %rdi
movq %rax, -0x58(%rbp)
callq 0xe110
movq -0xa50(%rbp), %rdi
movq %rax, -0x60(%rbp)
callq 0xe200
movq %rax, -0x68(%rbp)
movq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq 0x15169(%rip), %rcx     # 0x29fd8
callq 0x18600
movq -0xa48(%rbp), %rdi
movq %rax, -0x70(%rbp)
leaq 0xc19f(%rip), %rsi      # 0x21025
callq 0x18e00
testb $0x1, %al
jne 0x14eab
movq -0xa48(%rbp), %rdi
leaq 0xc190(%rip), %rsi      # 0x2102d
callq 0x18e00
testb $0x1, %al
jne 0x14eab
jmp 0x150c0
leaq -0x270(%rbp), %rdi
movq %rdi, -0xaa0(%rbp)
callq 0xe350
movq -0xaa0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x14ed8
movq -0xa70(%rbp), %rdi
callq 0x18680
movq %rax, -0x288(%rbp)
movq -0xa70(%rbp), %rdi
callq 0x186e0
movq %rax, -0x290(%rbp)
leaq -0x288(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x186b0
testb $0x1, %al
jne 0x14f1a
jmp 0x14fce
leaq -0x288(%rbp), %rdi
callq 0x18ec0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x2b0(%rbp), %rdi
callq 0xe2b0
jmp 0x14f3b
movq -0xa50(%rbp), %rsi
leaq -0x2b0(%rbp), %rdi
callq 0x18e30
movb %al, -0xaa1(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0xe150
movb -0xaa1(%rbp), %al
testb $0x1, %al
jne 0x14f6c
jmp 0x14fb2
leaq -0x288(%rbp), %rdi
callq 0x18710
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x270(%rbp), %rdi
callq 0xe1e0
jmp 0x14f8d
jmp 0x14fb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0xe320
jmp 0x157a2
jmp 0x14fb4
leaq -0x288(%rbp), %rdi
xorl %esi, %esi
callq 0x18730
movq %rax, -0x2b8(%rbp)
jmp 0x14eeb
movq -0xa78(%rbp), %rdi
callq 0x18770
movq %rax, -0x2c0(%rbp)
movq -0xa78(%rbp), %rdi
callq 0x187d0
movq %rax, -0x2c8(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x187a0
testb $0x1, %al
jne 0x15010
jmp 0x150a1
leaq -0x2c0(%rbp), %rdi
callq 0x18ee0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x2e8(%rbp), %rdi
callq 0xe2b0
jmp 0x15031
movq -0xa50(%rbp), %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x18e30
movb %al, -0xaa2(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0xe150
movb -0xaa2(%rbp), %al
testb $0x1, %al
jne 0x15062
jmp 0x15085
leaq -0x2c0(%rbp), %rdi
callq 0x18800
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x270(%rbp), %rdi
callq 0xe360
jmp 0x15083
jmp 0x15085
jmp 0x15087
leaq -0x2c0(%rbp), %rdi
xorl %esi, %esi
callq 0x18820
movq %rax, -0x2f0(%rbp)
jmp 0x14fe1
leaq -0x270(%rbp), %rdi
callq 0xe300
jmp 0x150af
leaq -0x270(%rbp), %rdi
callq 0xe320
jmp 0x15799
movq -0xa48(%rbp), %rdi
leaq 0xbf68(%rip), %rsi      # 0x21036
callq 0x18e00
testb $0x1, %al
jne 0x150f3
movq -0xa48(%rbp), %rdi
leaq 0xbf5a(%rip), %rsi      # 0x2103f
callq 0x18e00
testb $0x1, %al
jne 0x150f3
jmp 0x15308
leaq -0x4f0(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0xe350
movq -0xab0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x15120
movq -0xa80(%rbp), %rdi
callq 0x18860
movq %rax, -0x4f8(%rbp)
movq -0xa80(%rbp), %rdi
callq 0x188c0
movq %rax, -0x500(%rbp)
leaq -0x4f8(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x18890
testb $0x1, %al
jne 0x15162
jmp 0x15216
leaq -0x4f8(%rbp), %rdi
callq 0x18f00
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x520(%rbp), %rdi
callq 0xe2b0
jmp 0x15183
movq -0xa50(%rbp), %rsi
leaq -0x520(%rbp), %rdi
callq 0x18e30
movb %al, -0xab1(%rbp)
leaq -0x520(%rbp), %rdi
callq 0xe150
movb -0xab1(%rbp), %al
testb $0x1, %al
jne 0x151b4
jmp 0x151fa
leaq -0x4f8(%rbp), %rdi
callq 0x188f0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x4f0(%rbp), %rdi
callq 0xe2f0
jmp 0x151d5
jmp 0x151fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0xe320
jmp 0x157a2
jmp 0x151fc
leaq -0x4f8(%rbp), %rdi
xorl %esi, %esi
callq 0x18910
movq %rax, -0x528(%rbp)
jmp 0x15133
movq -0xa88(%rbp), %rdi
callq 0x18950
movq %rax, -0x530(%rbp)
movq -0xa88(%rbp), %rdi
callq 0x189b0
movq %rax, -0x538(%rbp)
leaq -0x530(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x18980
testb $0x1, %al
jne 0x15258
jmp 0x152e9
leaq -0x530(%rbp), %rdi
callq 0x18f20
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x558(%rbp), %rdi
callq 0xe2b0
jmp 0x15279
movq -0xa50(%rbp), %rsi
leaq -0x558(%rbp), %rdi
callq 0x18e30
movb %al, -0xab2(%rbp)
leaq -0x558(%rbp), %rdi
callq 0xe150
movb -0xab2(%rbp), %al
testb $0x1, %al
jne 0x152aa
jmp 0x152cd
leaq -0x530(%rbp), %rdi
callq 0x189e0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x4f0(%rbp), %rdi
callq 0xe100
jmp 0x152cb
jmp 0x152cd
jmp 0x152cf
leaq -0x530(%rbp), %rdi
xorl %esi, %esi
callq 0x18a00
movq %rax, -0x560(%rbp)
jmp 0x15229
leaq -0x4f0(%rbp), %rdi
callq 0xe300
jmp 0x152f7
leaq -0x4f0(%rbp), %rdi
callq 0xe320
jmp 0x15797
movq -0xa48(%rbp), %rdi
leaq 0xbd32(%rip), %rsi      # 0x21048
callq 0x18e00
testb $0x1, %al
jne 0x1533b
movq -0xa48(%rbp), %rdi
leaq 0xbd22(%rip), %rsi      # 0x2104f
callq 0x18e00
testb $0x1, %al
jne 0x1533b
jmp 0x15550
leaq -0x760(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0xe350
movq -0xac0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x15368
movq -0xa90(%rbp), %rdi
callq 0x18a40
movq %rax, -0x768(%rbp)
movq -0xa90(%rbp), %rdi
callq 0x18aa0
movq %rax, -0x770(%rbp)
leaq -0x768(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x18a70
testb $0x1, %al
jne 0x153aa
jmp 0x1545e
leaq -0x768(%rbp), %rdi
callq 0x18f40
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x790(%rbp), %rdi
callq 0xe2b0
jmp 0x153cb
movq -0xa50(%rbp), %rsi
leaq -0x790(%rbp), %rdi
callq 0x18e30
movb %al, -0xac1(%rbp)
leaq -0x790(%rbp), %rdi
callq 0xe150
movb -0xac1(%rbp), %al
testb $0x1, %al
jne 0x153fc
jmp 0x15442
leaq -0x768(%rbp), %rdi
callq 0x18ad0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x760(%rbp), %rdi
callq 0xe080
jmp 0x1541d
jmp 0x15442
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x760(%rbp), %rdi
callq 0xe320
jmp 0x157a2
jmp 0x15444
leaq -0x768(%rbp), %rdi
xorl %esi, %esi
callq 0x18af0
movq %rax, -0x798(%rbp)
jmp 0x1537b
movq -0xa98(%rbp), %rdi
callq 0x18b30
movq %rax, -0x7a0(%rbp)
movq -0xa98(%rbp), %rdi
callq 0x18b90
movq %rax, -0x7a8(%rbp)
leaq -0x7a0(%rbp), %rdi
leaq -0x7a8(%rbp), %rsi
callq 0x18b60
testb $0x1, %al
jne 0x154a0
jmp 0x15531
leaq -0x7a0(%rbp), %rdi
callq 0x18f60
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x7c8(%rbp), %rdi
callq 0xe2b0
jmp 0x154c1
movq -0xa50(%rbp), %rsi
leaq -0x7c8(%rbp), %rdi
callq 0x18e30
movb %al, -0xac2(%rbp)
leaq -0x7c8(%rbp), %rdi
callq 0xe150
movb -0xac2(%rbp), %al
testb $0x1, %al
jne 0x154f2
jmp 0x15515
leaq -0x7a0(%rbp), %rdi
callq 0x18bc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x760(%rbp), %rdi
callq 0xe140
jmp 0x15513
jmp 0x15515
jmp 0x15517
leaq -0x7a0(%rbp), %rdi
xorl %esi, %esi
callq 0x18be0
movq %rax, -0x7d0(%rbp)
jmp 0x15471
leaq -0x760(%rbp), %rdi
callq 0xe300
jmp 0x1553f
leaq -0x760(%rbp), %rdi
callq 0xe320
jmp 0x15795
movq -0xa48(%rbp), %rdi
leaq 0xbafa(%rip), %rsi      # 0x21058
callq 0x18e00
testb $0x1, %al
jne 0x15583
movq -0xa48(%rbp), %rdi
leaq 0xbae7(%rip), %rsi      # 0x2105c
callq 0x18e00
testb $0x1, %al
jne 0x15583
jmp 0x15793
leaq -0x9d0(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0xe350
movq -0xad0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x155b0
movq -0xa58(%rbp), %rdi
callq 0x18c20
movq %rax, -0x9d8(%rbp)
movq -0xa58(%rbp), %rdi
callq 0x18c80
movq %rax, -0x9e0(%rbp)
leaq -0x9d8(%rbp), %rdi
leaq -0x9e0(%rbp), %rsi
callq 0x18c50
testb $0x1, %al
jne 0x155f2
jmp 0x156a6
leaq -0x9d8(%rbp), %rdi
callq 0x18f80
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xa00(%rbp), %rdi
callq 0xe2b0
jmp 0x15613
movq -0xa50(%rbp), %rsi
leaq -0xa00(%rbp), %rdi
callq 0x18e30
movb %al, -0xad1(%rbp)
leaq -0xa00(%rbp), %rdi
callq 0xe150
movb -0xad1(%rbp), %al
testb $0x1, %al
jne 0x15644
jmp 0x1568a
leaq -0x9d8(%rbp), %rdi
callq 0x18cb0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x9d0(%rbp), %rdi
callq 0xe2e0
jmp 0x15665
jmp 0x1568a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x9d0(%rbp), %rdi
callq 0xe320
jmp 0x157a2
jmp 0x1568c
leaq -0x9d8(%rbp), %rdi
xorl %esi, %esi
callq 0x18cd0
movq %rax, -0xa08(%rbp)
jmp 0x155c3
movq -0xa60(%rbp), %rdi
callq 0x18d10
movq %rax, -0xa10(%rbp)
movq -0xa60(%rbp), %rdi
callq 0x18d70
movq %rax, -0xa18(%rbp)
leaq -0xa10(%rbp), %rdi
leaq -0xa18(%rbp), %rsi
callq 0x18d40
testb $0x1, %al
jne 0x156e8
jmp 0x15779
leaq -0xa10(%rbp), %rdi
callq 0x18fa0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xa38(%rbp), %rdi
callq 0xe2b0
jmp 0x15709
movq -0xa50(%rbp), %rsi
leaq -0xa38(%rbp), %rdi
callq 0x18e30
movb %al, -0xad2(%rbp)
leaq -0xa38(%rbp), %rdi
callq 0xe150
movb -0xad2(%rbp), %al
testb $0x1, %al
jne 0x1573a
jmp 0x1575d
leaq -0xa10(%rbp), %rdi
callq 0x18da0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x9d0(%rbp), %rdi
callq 0xe270
jmp 0x1575b
jmp 0x1575d
jmp 0x1575f
leaq -0xa10(%rbp), %rdi
xorl %esi, %esi
callq 0x18dc0
movq %rax, -0xa40(%rbp)
jmp 0x156b9
leaq -0x9d0(%rbp), %rdi
callq 0xe300
jmp 0x15787
leaq -0x9d0(%rbp), %rdi
callq 0xe320
jmp 0x15795
jmp 0x15797
jmp 0x15799
addq $0xae0, %rsp            # imm = 0xAE0
popq %rbp
retq
movq -0x278(%rbp), %rdi
callq 0xe370
nop