// File: /workspace/github_cpp_makefile_star2_O1/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 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xb0b(%rip), %rdx       # 0x1aee2
movq %rdx, 0x28(%rsp)
leaq 0xbab(%rip), %rsi       # 0x1af8e
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a421
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x46, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xb66(%rip), %rdx       # 0x1afa6
movq %rdx, 0x28(%rsp)
leaq 0xc06(%rip), %rsi       # 0x1b052
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a48a
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x52, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xbc1(%rip), %rdx       # 0x1b06a
movq %rdx, 0x28(%rsp)
leaq 0xc61(%rip), %rsi       # 0x1b116
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a4f3
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x4d, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xc1c(%rip), %rdx       # 0x1b12e
movq %rdx, 0x28(%rsp)
leaq 0xcbc(%rip), %rsi       # 0x1b1da
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a55c
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x44, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xc77(%rip), %rdx       # 0x1b1f2
movq %rdx, 0x28(%rsp)
leaq 0xd47(%rip), %rsi       # 0x1b2ce
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a5c5
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x45, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xd02(%rip), %rdx       # 0x1b2e6
movq %rdx, 0x28(%rsp)
leaq 0xdd2(%rip), %rsi       # 0x1b3c2
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a62e
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x4e, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xd8d(%rip), %rdx       # 0x1b3da
movq %rdx, 0x28(%rsp)
leaq 0xe5d(%rip), %rsi       # 0x1b4b6
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a697
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
leaq 0xf(%rsp), %rsi
movb $0x58, (%rsi)
movq %rbx, %rdi
callq 0x1b9be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
leaq 0xe18(%rip), %rdx       # 0x1b4ce
movq %rdx, 0x28(%rsp)
leaq 0xe1c(%rip), %rsi       # 0x1b4de
movq %rsi, 0x20(%rsp)
movups (%rax), %xmm1
movaps %xmm1, 0x10(%rsp)
movups %xmm0, (%rax)
movq 0x10(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq %rsi, 0x10(%rax)
movq 0x18(%rax), %rsi
movq %rsi, 0x28(%rsp)
movq %rdx, 0x18(%rax)
testq %rcx, %rcx
je 0x1a700
leaq 0x10(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rcx
addq $0x38, %rsp
popq %rbx
popq %r14
retq
jmp 0x1a716
jmp 0x1a716
jmp 0x1a716
jmp 0x1a716
jmp 0x1a716
jmp 0x1a716
jmp 0x1a716
movq %rax, %rdi
callq 0xadcc
jmp 0x1a72c
jmp 0x1a72c
jmp 0x1a72c
jmp 0x1a72c
jmp 0x1a72c
jmp 0x1a72c
jmp 0x1a72c
movq %rax, %r14
movq %rbx, %rdi
callq 0x14e68
movq %r14, %rdi
callq 0x6460
nop