// File: /workspace/github_cpp_makefile_star2_O3/brashi[P]PetFera/src/animal/mapeador_animal.cpp
// Function: FiltroAnimal::FiltroAnimal()
FiltroAnimal::FiltroAnimal() {
     filtro['A'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Ave> checar = dynamic_pointer_cast<Ave>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['F'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Anfibio> checar = dynamic_pointer_cast<Anfibio>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['R'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Reptil> checar = dynamic_pointer_cast<Reptil>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['M'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Mamifero> checar = dynamic_pointer_cast<Mamifero>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['D'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Domestico> checar = dynamic_pointer_cast<Domestico>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['E'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Exotico> checar = dynamic_pointer_cast<Exotico>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['N'] = [](shared_ptr<Animal> animal) {
         shared_ptr<Nativo> checar = dynamic_pointer_cast<Nativo>(animal);
         return dynamic_pointer_cast<Animal>(checar);
     };

     filtro['X'] = [](shared_ptr<Animal> animal) {
         //Mamifero* checar = dynamic_cast<Mamifero*>(animal);
         return animal;
     };
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
leaq 0x8(%rdi), %rax
movl $0x0, 0x8(%rdi)
xorl %ecx, %ecx
movq %rcx, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rcx, 0x28(%rdi)
leaq 0xf(%rsp), %rsi
movb $0x41, (%rsi)
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xa6e(%rip), %rdx       # 0x19934
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0x9b0(%rip), %rdx       # 0x1988a
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x18ef2
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x46, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xad6(%rip), %rdx       # 0x199f6
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xa18(%rip), %rdx       # 0x1994c
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x18f4c
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x52, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xb3e(%rip), %rdx       # 0x19ab8
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xa80(%rip), %rdx       # 0x19a0e
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x18fa6
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x4d, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xba6(%rip), %rdx       # 0x19b7a
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xae8(%rip), %rdx       # 0x19ad0
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x19000
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x44, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xc32(%rip), %rdx       # 0x19c60
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xb50(%rip), %rdx       # 0x19b92
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1905a
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x45, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xcbe(%rip), %rdx       # 0x19d46
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xbdc(%rip), %rdx       # 0x19c78
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x190b4
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x4e, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xd4a(%rip), %rdx       # 0x19e2c
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xc68(%rip), %rdx       # 0x19d5e
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1910e
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x58, (%rsi)
movq %rbx, %rdi
callq 0x1a3a4
movups (%rax), %xmm0
movaps %xmm0, 0x10(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
leaq 0xd18(%rip), %rdx       # 0x19e54
movq %rdx, 0x10(%rax)
movq 0x18(%rax), %rdx
movq %rdx, 0x28(%rsp)
leaq 0xcf4(%rip), %rdx       # 0x19e44
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x19168
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
addq $0x38, %rsp
popq %rbx
popq %r14
retq
jmp 0x1917e
jmp 0x1917e
jmp 0x1917e
jmp 0x1917e
jmp 0x1917e
jmp 0x1917e
jmp 0x1917e
movq %rax, %rdi
callq 0x9d78
jmp 0x19194
jmp 0x19194
jmp 0x19194
jmp 0x19194
jmp 0x19194
jmp 0x19194
jmp 0x19194
movq %rax, %r14
movq %rbx, %rdi
callq 0x13c76
movq %r14, %rdi
callq 0x5460
nop