// File: brashi[P]PetFera/src/animal/mapeador_animal.cpp
// Function: MapeadorAnimal::MapeadorAnimal()
MapeadorAnimal::MapeadorAnimal() {
    aMap["aveD"] = []() { 
        return make_shared<AveDomestica>(); 
    };

    aMap["aveN"] = []() { 
        return make_shared<AveNativa>(); 
    };

    aMap["aveE"] = []() { 
        return make_shared<AveExotica>(); 
    };


    aMap["anfD"] = []() { 
        return make_shared<AnfibioDomestico>(); 
    };

    aMap["anfN"] = []() { 
        return make_shared<AnfibioNativo>(); 
    };

    aMap["anfE"] = []() { 
        return make_shared<AnfibioExotico>(); 
    };

    
    aMap["repD"] = []() { 
        return make_shared<ReptilDomestico>(); 
    };

    aMap["repN"] = []() { 
        return make_shared<ReptilNativo>(); 
    };

    aMap["repE"] = []() { 
        return make_shared<ReptilExotico>(); 
    };


    aMap["mamD"] = []() { 
        return make_shared<MamiferoDomestico>(); 
    };

    aMap["mamN"] = []() { 
        return make_shared<MamiferoNativo>(); 
    };

    aMap["mamE"] = []() { 
        return make_shared<MamiferoExotico>(); 
    };
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x330, %rsp            # imm = 0x330
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x220(%rbp)
movq %rdi, %rax
movq %rax, -0x218(%rbp)
movq %rdi, %rax
movq %rax, -0x210(%rbp)
callq 0x32a40
leaq -0x31(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x65a0
movq -0x208(%rbp), %rdx
leaq 0x15d95(%rip), %rsi     # 0x426b6
leaq -0x30(%rbp), %rdi
callq 0xc1d0
jmp 0x2c92c
movq -0x220(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xbe80
movq %rax, -0x228(%rbp)
jmp 0x2c945
movq -0x228(%rbp), %rdi
leaq -0x9(%rbp), %rsi
callq 0x2d1a0
leaq -0x30(%rbp), %rdi
callq 0x6678
leaq -0x31(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x238(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x65a0
movq -0x230(%rbp), %rdx
leaq 0x15d28(%rip), %rsi     # 0x426bb
leaq -0x68(%rbp), %rdi
callq 0xc1d0
jmp 0x2c99e
movq -0x238(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xbe80
movq %rax, -0x240(%rbp)
jmp 0x2c9b7
movq -0x240(%rbp), %rdi
leaq -0x45(%rbp), %rsi
callq 0x2d1f0
leaq -0x68(%rbp), %rdi
callq 0x6678
leaq -0x69(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x250(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x248(%rbp)
callq 0x65a0
movq -0x248(%rbp), %rdx
leaq 0x15cb8(%rip), %rsi     # 0x426c0
leaq -0x90(%rbp), %rdi
callq 0xc1d0
jmp 0x2ca16
movq -0x250(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xbe80
movq %rax, -0x258(%rbp)
jmp 0x2ca32
movq -0x258(%rbp), %rdi
leaq -0x6a(%rbp), %rsi
callq 0x2d240
leaq -0x90(%rbp), %rdi
callq 0x6678
leaq -0x91(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x268(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x65a0
movq -0x260(%rbp), %rdx
leaq 0x15c3c(%rip), %rsi     # 0x426c5
leaq -0xb8(%rbp), %rdi
callq 0xc1d0
jmp 0x2ca97
movq -0x268(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xbe80
movq %rax, -0x270(%rbp)
jmp 0x2cab3
movq -0x270(%rbp), %rdi
leaq -0x92(%rbp), %rsi
callq 0x2d290
leaq -0xb8(%rbp), %rdi
callq 0x6678
leaq -0xb9(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x280(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0x65a0
movq -0x278(%rbp), %rdx
leaq 0x15bbd(%rip), %rsi     # 0x426ca
leaq -0xe0(%rbp), %rdi
callq 0xc1d0
jmp 0x2cb1b
movq -0x280(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xbe80
movq %rax, -0x288(%rbp)
jmp 0x2cb37
movq -0x288(%rbp), %rdi
leaq -0xba(%rbp), %rsi
callq 0x2d2e0
leaq -0xe0(%rbp), %rdi
callq 0x6678
leaq -0xe1(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x298(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x65a0
movq -0x290(%rbp), %rdx
leaq 0x15b3e(%rip), %rsi     # 0x426cf
leaq -0x108(%rbp), %rdi
callq 0xc1d0
jmp 0x2cb9f
movq -0x298(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xbe80
movq %rax, -0x2a0(%rbp)
jmp 0x2cbbb
movq -0x2a0(%rbp), %rdi
leaq -0xe2(%rbp), %rsi
callq 0x2d330
leaq -0x108(%rbp), %rdi
callq 0x6678
leaq -0x109(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x2b0(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x65a0
movq -0x2a8(%rbp), %rdx
leaq 0x15abf(%rip), %rsi     # 0x426d4
leaq -0x130(%rbp), %rdi
callq 0xc1d0
jmp 0x2cc23
movq -0x2b0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xbe80
movq %rax, -0x2b8(%rbp)
jmp 0x2cc3f
movq -0x2b8(%rbp), %rdi
leaq -0x10a(%rbp), %rsi
callq 0x2d380
leaq -0x130(%rbp), %rdi
callq 0x6678
leaq -0x131(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x159(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x65a0
movq -0x2c0(%rbp), %rdx
leaq 0x15a40(%rip), %rsi     # 0x426d9
leaq -0x158(%rbp), %rdi
callq 0xc1d0
jmp 0x2cca7
movq -0x2c8(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xbe80
movq %rax, -0x2d0(%rbp)
jmp 0x2ccc3
movq -0x2d0(%rbp), %rdi
leaq -0x132(%rbp), %rsi
callq 0x2d3d0
leaq -0x158(%rbp), %rdi
callq 0x6678
leaq -0x159(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x2e0(%rbp)
leaq -0x181(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x65a0
movq -0x2d8(%rbp), %rdx
leaq 0x159c1(%rip), %rsi     # 0x426de
leaq -0x180(%rbp), %rdi
callq 0xc1d0
jmp 0x2cd2b
movq -0x2e0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xbe80
movq %rax, -0x2e8(%rbp)
jmp 0x2cd47
movq -0x2e8(%rbp), %rdi
leaq -0x15a(%rbp), %rsi
callq 0x2d420
leaq -0x180(%rbp), %rdi
callq 0x6678
leaq -0x181(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x65a0
movq -0x2f0(%rbp), %rdx
leaq 0x15942(%rip), %rsi     # 0x426e3
leaq -0x1a8(%rbp), %rdi
callq 0xc1d0
jmp 0x2cdaf
movq -0x2f8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xbe80
movq %rax, -0x300(%rbp)
jmp 0x2cdcb
movq -0x300(%rbp), %rdi
leaq -0x182(%rbp), %rsi
callq 0x2d470
leaq -0x1a8(%rbp), %rdi
callq 0x6678
leaq -0x1a9(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x310(%rbp)
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x65a0
movq -0x308(%rbp), %rdx
leaq 0x158c3(%rip), %rsi     # 0x426e8
leaq -0x1d0(%rbp), %rdi
callq 0xc1d0
jmp 0x2ce33
movq -0x310(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xbe80
movq %rax, -0x318(%rbp)
jmp 0x2ce4f
movq -0x318(%rbp), %rdi
leaq -0x1aa(%rbp), %rsi
callq 0x2d4c0
leaq -0x1d0(%rbp), %rdi
callq 0x6678
leaq -0x1d1(%rbp), %rdi
callq 0x6380
movq -0x218(%rbp), %rax
movq %rax, -0x328(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x65a0
movq -0x320(%rbp), %rdx
leaq 0x15844(%rip), %rsi     # 0x426ed
leaq -0x1f8(%rbp), %rdi
callq 0xc1d0
jmp 0x2ceb7
movq -0x328(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0xbe80
movq %rax, -0x330(%rbp)
jmp 0x2ced3
movq -0x330(%rbp), %rdi
leaq -0x1d2(%rbp), %rsi
callq 0x2d510
leaq -0x1f8(%rbp), %rdi
callq 0x6678
leaq -0x1f9(%rbp), %rdi
callq 0x6380
addq $0x330, %rsp            # imm = 0x330
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cf2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6678
leaq -0x31(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cf5b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x6678
leaq -0x69(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cf8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x6678
leaq -0x91(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cfc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x6678
leaq -0xb9(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2cffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x6678
leaq -0xe1(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d034
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x6678
leaq -0x109(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d06b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x6678
leaq -0x131(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d0a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x6678
leaq -0x159(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d0d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x180(%rbp), %rdi
callq 0x6678
leaq -0x181(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d110
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x6678
leaq -0x1a9(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d144
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x6678
leaq -0x1d1(%rbp), %rdi
callq 0x6380
jmp 0x2d184
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2d178
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x6678
leaq -0x1f9(%rbp), %rdi
callq 0x6380
movq -0x210(%rbp), %rdi
callq 0xcd00
movq -0x40(%rbp), %rdi
callq 0x6590
nopl (%rax)