// File: nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_classe_vet(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_vet(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 veterinario, string saida){

	transform(classe.begin(), classe.end(), classe.begin(), ::tolower);
	transform(veterinario.begin(), veterinario.end(), veterinario.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.getVeterinario() == veterinario){
				anfibios << (*it).second;
			}
		}
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				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.getVeterinario() == veterinario){
				mamiferos << (*it).second;
			}
		}
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				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.getVeterinario() == veterinario){
				repteis << (*it).second;
			}
		}
		for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				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.getVeterinario() == veterinario){
				aves << (*it).second;
			}
		}
		for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
			if(it->second.getVeterinario() == veterinario){
				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 0x15be5(%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 0x15bb9(%rip), %rcx     # 0x29fd8
callq 0x18600
movq -0xa48(%rbp), %rdi
movq %rax, -0x70(%rbp)
leaq 0xcbef(%rip), %rsi      # 0x21025
callq 0x18e00
testb $0x1, %al
jne 0x1445b
movq -0xa48(%rbp), %rdi
leaq 0xcbe0(%rip), %rsi      # 0x2102d
callq 0x18e00
testb $0x1, %al
jne 0x1445b
jmp 0x14670
leaq -0x270(%rbp), %rdi
movq %rdi, -0xaa0(%rbp)
callq 0xe350
movq -0xaa0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x14488
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 0x144ca
jmp 0x1457e
leaq -0x288(%rbp), %rdi
callq 0x18ec0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x2b0(%rbp), %rdi
callq 0xe160
jmp 0x144eb
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 0x1451c
jmp 0x14562
leaq -0x288(%rbp), %rdi
callq 0x18710
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x270(%rbp), %rdi
callq 0xe1e0
jmp 0x1453d
jmp 0x14562
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x270(%rbp), %rdi
callq 0xe320
jmp 0x14d52
jmp 0x14564
leaq -0x288(%rbp), %rdi
xorl %esi, %esi
callq 0x18730
movq %rax, -0x2b8(%rbp)
jmp 0x1449b
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 0x145c0
jmp 0x14651
leaq -0x2c0(%rbp), %rdi
callq 0x18ee0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x2e8(%rbp), %rdi
callq 0xe160
jmp 0x145e1
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 0x14612
jmp 0x14635
leaq -0x2c0(%rbp), %rdi
callq 0x18800
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x270(%rbp), %rdi
callq 0xe360
jmp 0x14633
jmp 0x14635
jmp 0x14637
leaq -0x2c0(%rbp), %rdi
xorl %esi, %esi
callq 0x18820
movq %rax, -0x2f0(%rbp)
jmp 0x14591
leaq -0x270(%rbp), %rdi
callq 0xe300
jmp 0x1465f
leaq -0x270(%rbp), %rdi
callq 0xe320
jmp 0x14d49
movq -0xa48(%rbp), %rdi
leaq 0xc9b8(%rip), %rsi      # 0x21036
callq 0x18e00
testb $0x1, %al
jne 0x146a3
movq -0xa48(%rbp), %rdi
leaq 0xc9aa(%rip), %rsi      # 0x2103f
callq 0x18e00
testb $0x1, %al
jne 0x146a3
jmp 0x148b8
leaq -0x4f0(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0xe350
movq -0xab0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x146d0
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 0x14712
jmp 0x147c6
leaq -0x4f8(%rbp), %rdi
callq 0x18f00
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x520(%rbp), %rdi
callq 0xe160
jmp 0x14733
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 0x14764
jmp 0x147aa
leaq -0x4f8(%rbp), %rdi
callq 0x188f0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x4f0(%rbp), %rdi
callq 0xe2f0
jmp 0x14785
jmp 0x147aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0xe320
jmp 0x14d52
jmp 0x147ac
leaq -0x4f8(%rbp), %rdi
xorl %esi, %esi
callq 0x18910
movq %rax, -0x528(%rbp)
jmp 0x146e3
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 0x14808
jmp 0x14899
leaq -0x530(%rbp), %rdi
callq 0x18f20
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x558(%rbp), %rdi
callq 0xe160
jmp 0x14829
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 0x1485a
jmp 0x1487d
leaq -0x530(%rbp), %rdi
callq 0x189e0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x4f0(%rbp), %rdi
callq 0xe100
jmp 0x1487b
jmp 0x1487d
jmp 0x1487f
leaq -0x530(%rbp), %rdi
xorl %esi, %esi
callq 0x18a00
movq %rax, -0x560(%rbp)
jmp 0x147d9
leaq -0x4f0(%rbp), %rdi
callq 0xe300
jmp 0x148a7
leaq -0x4f0(%rbp), %rdi
callq 0xe320
jmp 0x14d47
movq -0xa48(%rbp), %rdi
leaq 0xc782(%rip), %rsi      # 0x21048
callq 0x18e00
testb $0x1, %al
jne 0x148eb
movq -0xa48(%rbp), %rdi
leaq 0xc772(%rip), %rsi      # 0x2104f
callq 0x18e00
testb $0x1, %al
jne 0x148eb
jmp 0x14b00
leaq -0x760(%rbp), %rdi
movq %rdi, -0xac0(%rbp)
callq 0xe350
movq -0xac0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x14918
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 0x1495a
jmp 0x14a0e
leaq -0x768(%rbp), %rdi
callq 0x18f40
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x790(%rbp), %rdi
callq 0xe160
jmp 0x1497b
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 0x149ac
jmp 0x149f2
leaq -0x768(%rbp), %rdi
callq 0x18ad0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x760(%rbp), %rdi
callq 0xe080
jmp 0x149cd
jmp 0x149f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x760(%rbp), %rdi
callq 0xe320
jmp 0x14d52
jmp 0x149f4
leaq -0x768(%rbp), %rdi
xorl %esi, %esi
callq 0x18af0
movq %rax, -0x798(%rbp)
jmp 0x1492b
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 0x14a50
jmp 0x14ae1
leaq -0x7a0(%rbp), %rdi
callq 0x18f60
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x7c8(%rbp), %rdi
callq 0xe160
jmp 0x14a71
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 0x14aa2
jmp 0x14ac5
leaq -0x7a0(%rbp), %rdi
callq 0x18bc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x760(%rbp), %rdi
callq 0xe140
jmp 0x14ac3
jmp 0x14ac5
jmp 0x14ac7
leaq -0x7a0(%rbp), %rdi
xorl %esi, %esi
callq 0x18be0
movq %rax, -0x7d0(%rbp)
jmp 0x14a21
leaq -0x760(%rbp), %rdi
callq 0xe300
jmp 0x14aef
leaq -0x760(%rbp), %rdi
callq 0xe320
jmp 0x14d45
movq -0xa48(%rbp), %rdi
leaq 0xc54a(%rip), %rsi      # 0x21058
callq 0x18e00
testb $0x1, %al
jne 0x14b33
movq -0xa48(%rbp), %rdi
leaq 0xc537(%rip), %rsi      # 0x2105c
callq 0x18e00
testb $0x1, %al
jne 0x14b33
jmp 0x14d43
leaq -0x9d0(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0xe350
movq -0xad0(%rbp), %rdi
movq -0xa68(%rbp), %rsi
movl $0x10, %edx
callq 0xe0e0
jmp 0x14b60
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 0x14ba2
jmp 0x14c56
leaq -0x9d8(%rbp), %rdi
callq 0x18f80
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xa00(%rbp), %rdi
callq 0xe160
jmp 0x14bc3
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 0x14bf4
jmp 0x14c3a
leaq -0x9d8(%rbp), %rdi
callq 0x18cb0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x9d0(%rbp), %rdi
callq 0xe2e0
jmp 0x14c15
jmp 0x14c3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x278(%rbp)
movl %eax, -0x27c(%rbp)
leaq -0x9d0(%rbp), %rdi
callq 0xe320
jmp 0x14d52
jmp 0x14c3c
leaq -0x9d8(%rbp), %rdi
xorl %esi, %esi
callq 0x18cd0
movq %rax, -0xa08(%rbp)
jmp 0x14b73
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 0x14c98
jmp 0x14d29
leaq -0xa10(%rbp), %rdi
callq 0x18fa0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0xa38(%rbp), %rdi
callq 0xe160
jmp 0x14cb9
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 0x14cea
jmp 0x14d0d
leaq -0xa10(%rbp), %rdi
callq 0x18da0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x9d0(%rbp), %rdi
callq 0xe270
jmp 0x14d0b
jmp 0x14d0d
jmp 0x14d0f
leaq -0xa10(%rbp), %rdi
xorl %esi, %esi
callq 0x18dc0
movq %rax, -0xa40(%rbp)
jmp 0x14c69
leaq -0x9d0(%rbp), %rdi
callq 0xe300
jmp 0x14d37
leaq -0x9d0(%rbp), %rdi
callq 0xe320
jmp 0x14d45
jmp 0x14d47
jmp 0x14d49
addq $0xae0, %rsp            # imm = 0xAE0
popq %rbp
retq
movq -0x278(%rbp), %rdi
callq 0xe370
nop