// File: nataly-enne[P]pet-fera/pet_fera_auxiliar.cpp
// Function: exportacao_classe(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_classe(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 saida){
	ofstream anfibios;
	ofstream mamiferos;
	ofstream repteis;
	ofstream aves;

	transform(classe.begin(), classe.end(), classe.begin(), ::tolower);

	if(classe == "anfibio" || classe == "amphibia"){
		anfibios.open(saida);
		for(auto it = anfibios_nat.begin(); it != anfibios_nat.end(); it++){
			anfibios << (*it).second;	
		}
		for(auto it = anfibios_ex.begin(); it != anfibios_ex.end(); it++){
			anfibios << (*it).second;
		}
		anfibios.close();
	}
	else if(classe == "mamifero" || classe == "mamallia"){
		mamiferos.open(saida);
		for(auto it = mamiferos_nat.begin(); it != mamiferos_nat.end(); it++){
			mamiferos << (*it).second;
		}
		for(auto it = mamiferos_ex.begin(); it != mamiferos_ex.end(); it++){
			mamiferos << (*it).second;	
		}
		mamiferos.close();
	}
	else if(classe == "reptil" || classe == "reptilia"){
		repteis.open(saida);
		for(auto it = repteis_nat.begin(); it != repteis_nat.end(); it++){
			repteis << (*it).second;
		}
		for(auto it = repteis_ex.begin(); it != repteis_ex.end(); it++){
			repteis << (*it).second;	
		}
		repteis.close();
	}
	else if(classe == "ave" || classe == "aves"){
		aves.open(saida);
		for(auto it = aves_nat.begin(); it != aves_nat.end(); it++){
			aves << (*it).second;
		}
		for(auto it = aves_ex.begin(); it != aves_ex.end(); it++){
			aves << (*it).second;
		}
		aves.close();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x980, %rsp            # imm = 0x980
movq %r9, -0x970(%rbp)
movq %r8, -0x968(%rbp)
movq %rcx, -0x960(%rbp)
movq %rdx, -0x958(%rbp)
movq %rsi, -0x950(%rbp)
movq %rdi, -0x948(%rbp)
movq 0x28(%rbp), %rax
movq %rax, -0x940(%rbp)
movq 0x20(%rbp), %rax
movq %rax, -0x938(%rbp)
movq 0x18(%rbp), %rax
movq %rax, -0x930(%rbp)
movq 0x10(%rbp), %rax
movq %rax, -0x928(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
leaq -0x230(%rbp), %rdi
callq 0xe350
leaq -0x430(%rbp), %rdi
callq 0xe350
jmp 0x17503
leaq -0x640(%rbp), %rdi
callq 0xe350
jmp 0x17511
leaq -0x840(%rbp), %rdi
callq 0xe350
jmp 0x1751f
movq -0x938(%rbp), %rdi
callq 0xe200
movq -0x938(%rbp), %rdi
movq %rax, -0x848(%rbp)
callq 0xe110
movq -0x938(%rbp), %rdi
movq %rax, -0x850(%rbp)
callq 0xe200
movq %rax, -0x858(%rbp)
movq -0x848(%rbp), %rdi
movq -0x850(%rbp), %rsi
movq -0x858(%rbp), %rdx
movq 0x12a44(%rip), %rcx     # 0x29fb8
callq 0x18600
movq %rax, -0x978(%rbp)
jmp 0x17582
movq -0x938(%rbp), %rdi
movq -0x978(%rbp), %rax
movq %rax, -0x860(%rbp)
leaq 0x9a87(%rip), %rsi      # 0x21025
callq 0x18e00
movb %al, -0x979(%rbp)
jmp 0x175ab
movb -0x979(%rbp), %al
testb $0x1, %al
jne 0x175e1
jmp 0x175b7
movq -0x938(%rbp), %rdi
leaq 0x9a68(%rip), %rsi      # 0x2102d
callq 0x18e00
movb %al, -0x97a(%rbp)
jmp 0x175d2
movb -0x97a(%rbp), %al
testb $0x1, %al
jne 0x175e1
jmp 0x1776b
movq -0x940(%rbp), %rsi
leaq -0x230(%rbp), %rdi
movl $0x10, %edx
callq 0xe0e0
jmp 0x175fb
movq -0x948(%rbp), %rdi
callq 0x18680
movq %rax, -0x868(%rbp)
movq -0x948(%rbp), %rdi
callq 0x186e0
movq %rax, -0x870(%rbp)
leaq -0x868(%rbp), %rdi
leaq -0x870(%rbp), %rsi
callq 0x186b0
testb $0x1, %al
jne 0x1763d
jmp 0x176df
leaq -0x868(%rbp), %rdi
callq 0x18710
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x230(%rbp), %rdi
callq 0xe1e0
jmp 0x1765e
jmp 0x17660
leaq -0x868(%rbp), %rdi
xorl %esi, %esi
callq 0x18730
movq %rax, -0x878(%rbp)
jmp 0x1760e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x438(%rbp)
movl %eax, -0x43c(%rbp)
jmp 0x17c0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x438(%rbp)
movl %eax, -0x43c(%rbp)
jmp 0x17c03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x438(%rbp)
movl %eax, -0x43c(%rbp)
jmp 0x17bf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x438(%rbp)
movl %eax, -0x43c(%rbp)
leaq -0x840(%rbp), %rdi
callq 0xe320
jmp 0x17bf7
movq -0x950(%rbp), %rdi
callq 0x18770
movq %rax, -0x880(%rbp)
movq -0x950(%rbp), %rdi
callq 0x187d0
movq %rax, -0x888(%rbp)
leaq -0x880(%rbp), %rdi
leaq -0x888(%rbp), %rsi
callq 0x187a0
testb $0x1, %al
jne 0x1771e
jmp 0x17758
leaq -0x880(%rbp), %rdi
callq 0x18800
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x230(%rbp), %rdi
callq 0xe360
jmp 0x1773f
jmp 0x17741
leaq -0x880(%rbp), %rdi
xorl %esi, %esi
callq 0x18820
movq %rax, -0x890(%rbp)
jmp 0x176f2
leaq -0x230(%rbp), %rdi
callq 0xe300
jmp 0x17766
jmp 0x17bbe
movq -0x938(%rbp), %rdi
leaq 0x98bd(%rip), %rsi      # 0x21036
callq 0x18e00
movb %al, -0x97b(%rbp)
jmp 0x17786
movb -0x97b(%rbp), %al
testb $0x1, %al
jne 0x177bc
jmp 0x17792
movq -0x938(%rbp), %rdi
leaq 0x989f(%rip), %rsi      # 0x2103f
callq 0x18e00
movb %al, -0x97c(%rbp)
jmp 0x177ad
movb -0x97c(%rbp), %al
testb $0x1, %al
jne 0x177bc
jmp 0x178db
movq -0x940(%rbp), %rsi
leaq -0x430(%rbp), %rdi
movl $0x10, %edx
callq 0xe0e0
jmp 0x177d6
movq -0x958(%rbp), %rdi
callq 0x18860
movq %rax, -0x898(%rbp)
movq -0x958(%rbp), %rdi
callq 0x188c0
movq %rax, -0x8a0(%rbp)
leaq -0x898(%rbp), %rdi
leaq -0x8a0(%rbp), %rsi
callq 0x18890
testb $0x1, %al
jne 0x17815
jmp 0x1784f
leaq -0x898(%rbp), %rdi
callq 0x188f0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x430(%rbp), %rdi
callq 0xe2f0
jmp 0x17836
jmp 0x17838
leaq -0x898(%rbp), %rdi
xorl %esi, %esi
callq 0x18910
movq %rax, -0x8a8(%rbp)
jmp 0x177e9
movq -0x960(%rbp), %rdi
callq 0x18950
movq %rax, -0x8b0(%rbp)
movq -0x960(%rbp), %rdi
callq 0x189b0
movq %rax, -0x8b8(%rbp)
leaq -0x8b0(%rbp), %rdi
leaq -0x8b8(%rbp), %rsi
callq 0x18980
testb $0x1, %al
jne 0x1788e
jmp 0x178c8
leaq -0x8b0(%rbp), %rdi
callq 0x189e0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x430(%rbp), %rdi
callq 0xe100
jmp 0x178af
jmp 0x178b1
leaq -0x8b0(%rbp), %rdi
xorl %esi, %esi
callq 0x18a00
movq %rax, -0x8c0(%rbp)
jmp 0x17862
leaq -0x430(%rbp), %rdi
callq 0xe300
jmp 0x178d6
jmp 0x17bbc
movq -0x938(%rbp), %rdi
leaq 0x975f(%rip), %rsi      # 0x21048
callq 0x18e00
movb %al, -0x97d(%rbp)
jmp 0x178f6
movb -0x97d(%rbp), %al
testb $0x1, %al
jne 0x1792c
jmp 0x17902
movq -0x938(%rbp), %rdi
leaq 0x973f(%rip), %rsi      # 0x2104f
callq 0x18e00
movb %al, -0x97e(%rbp)
jmp 0x1791d
movb -0x97e(%rbp), %al
testb $0x1, %al
jne 0x1792c
jmp 0x17a4b
movq -0x940(%rbp), %rsi
leaq -0x640(%rbp), %rdi
movl $0x10, %edx
callq 0xe0e0
jmp 0x17946
movq -0x968(%rbp), %rdi
callq 0x18a40
movq %rax, -0x8c8(%rbp)
movq -0x968(%rbp), %rdi
callq 0x18aa0
movq %rax, -0x8d0(%rbp)
leaq -0x8c8(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x18a70
testb $0x1, %al
jne 0x17985
jmp 0x179bf
leaq -0x8c8(%rbp), %rdi
callq 0x18ad0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x640(%rbp), %rdi
callq 0xe080
jmp 0x179a6
jmp 0x179a8
leaq -0x8c8(%rbp), %rdi
xorl %esi, %esi
callq 0x18af0
movq %rax, -0x8d8(%rbp)
jmp 0x17959
movq -0x970(%rbp), %rdi
callq 0x18b30
movq %rax, -0x8e0(%rbp)
movq -0x970(%rbp), %rdi
callq 0x18b90
movq %rax, -0x8e8(%rbp)
leaq -0x8e0(%rbp), %rdi
leaq -0x8e8(%rbp), %rsi
callq 0x18b60
testb $0x1, %al
jne 0x179fe
jmp 0x17a38
leaq -0x8e0(%rbp), %rdi
callq 0x18bc0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x640(%rbp), %rdi
callq 0xe140
jmp 0x17a1f
jmp 0x17a21
leaq -0x8e0(%rbp), %rdi
xorl %esi, %esi
callq 0x18be0
movq %rax, -0x8f0(%rbp)
jmp 0x179d2
leaq -0x640(%rbp), %rdi
callq 0xe300
jmp 0x17a46
jmp 0x17bba
movq -0x938(%rbp), %rdi
leaq 0x95ff(%rip), %rsi      # 0x21058
callq 0x18e00
movb %al, -0x97f(%rbp)
jmp 0x17a66
movb -0x97f(%rbp), %al
testb $0x1, %al
jne 0x17a9c
jmp 0x17a72
movq -0x938(%rbp), %rdi
leaq 0x95dc(%rip), %rsi      # 0x2105c
callq 0x18e00
movb %al, -0x980(%rbp)
jmp 0x17a8d
movb -0x980(%rbp), %al
testb $0x1, %al
jne 0x17a9c
jmp 0x17bb8
movq -0x940(%rbp), %rsi
leaq -0x840(%rbp), %rdi
movl $0x10, %edx
callq 0xe0e0
jmp 0x17ab6
movq -0x928(%rbp), %rdi
callq 0x18c20
movq %rax, -0x8f8(%rbp)
movq -0x928(%rbp), %rdi
callq 0x18c80
movq %rax, -0x900(%rbp)
leaq -0x8f8(%rbp), %rdi
leaq -0x900(%rbp), %rsi
callq 0x18c50
testb $0x1, %al
jne 0x17af5
jmp 0x17b2f
leaq -0x8f8(%rbp), %rdi
callq 0x18cb0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x840(%rbp), %rdi
callq 0xe2e0
jmp 0x17b16
jmp 0x17b18
leaq -0x8f8(%rbp), %rdi
xorl %esi, %esi
callq 0x18cd0
movq %rax, -0x908(%rbp)
jmp 0x17ac9
movq -0x930(%rbp), %rdi
callq 0x18d10
movq %rax, -0x910(%rbp)
movq -0x930(%rbp), %rdi
callq 0x18d70
movq %rax, -0x918(%rbp)
leaq -0x910(%rbp), %rdi
leaq -0x918(%rbp), %rsi
callq 0x18d40
testb $0x1, %al
jne 0x17b6e
jmp 0x17ba8
leaq -0x910(%rbp), %rdi
callq 0x18da0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x840(%rbp), %rdi
callq 0xe270
jmp 0x17b8f
jmp 0x17b91
leaq -0x910(%rbp), %rdi
xorl %esi, %esi
callq 0x18dc0
movq %rax, -0x920(%rbp)
jmp 0x17b42
leaq -0x840(%rbp), %rdi
callq 0xe300
jmp 0x17bb6
jmp 0x17bb8
jmp 0x17bba
jmp 0x17bbc
jmp 0x17bbe
leaq -0x840(%rbp), %rdi
callq 0xe320
leaq -0x640(%rbp), %rdi
callq 0xe320
leaq -0x430(%rbp), %rdi
callq 0xe320
leaq -0x230(%rbp), %rdi
callq 0xe320
addq $0x980, %rsp            # imm = 0x980
popq %rbp
retq
leaq -0x640(%rbp), %rdi
callq 0xe320
leaq -0x430(%rbp), %rdi
callq 0xe320
leaq -0x230(%rbp), %rdi
callq 0xe320
movq -0x438(%rbp), %rdi
callq 0xe370
nopw (%rax,%rax)