// File: /workspace/github_cpp_makefile_star2_O2/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
andl $0x0, 0x8(%rdi)
andq $0x0, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
andq $0x0, 0x28(%rdi)
leaq 0xf(%rsp), %rsi
movb $0x41, (%rsi)
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x81b(%rip), %rcx       # 0x129d0
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x7ac(%rip), %rcx       # 0x12974
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x46, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x843(%rip), %rcx       # 0x12a44
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x7d4(%rip), %rcx       # 0x129e8
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x52, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x86b(%rip), %rcx       # 0x12ab8
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x7fc(%rip), %rcx       # 0x12a5c
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x4d, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x893(%rip), %rcx       # 0x12b2c
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x824(%rip), %rcx       # 0x12ad0
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x44, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x8bb(%rip), %rcx       # 0x12ba0
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x84c(%rip), %rcx       # 0x12b44
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x45, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x8e3(%rip), %rcx       # 0x12c14
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x874(%rip), %rcx       # 0x12bb8
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x4e, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x90b(%rip), %rcx       # 0x12c88
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x89c(%rip), %rcx       # 0x12c2c
movq %rcx, 0x18(%rax)
callq 0x844a
leaq 0xf(%rsp), %rsi
movb $0x58, (%rsi)
movq %rbx, %rdi
callq 0x13078
movups (%rax), %xmm0
leaq 0x10(%rsp), %rdi
movaps %xmm0, (%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x10(%rdi)
leaq 0x907(%rip), %rcx       # 0x12cd0
movq %rcx, 0x10(%rax)
movq 0x18(%rax), %rcx
movq %rcx, 0x18(%rdi)
leaq 0x8c4(%rip), %rcx       # 0x12ca0
movq %rcx, 0x18(%rax)
callq 0x844a
addq $0x38, %rsp
popq %rbx
popq %r14
retq
jmp 0x123fb
jmp 0x123fb
jmp 0x123fb
jmp 0x123fb
jmp 0x123fb
jmp 0x123fb
jmp 0x123fb
movq %rax, %r14
movq %rbx, %rdi
callq 0xec26
movq %r14, %rdi
callq 0x5430