// File: brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::getClasse[abi:cxx11](std::shared_ptr<Animal>, bool)
string Animal::getClasse(shared_ptr<Animal> animal, bool simplificado) {
    if(shared_ptr<Ave> teste = dynamic_pointer_cast< Ave >(animal)) {
        if(simplificado)
            return "ave";
        else
            return "Ave";
    } if(shared_ptr<Anfibio> teste = dynamic_pointer_cast< Anfibio >(animal)) {
        if(simplificado)
            return "anf";
        else
            return "Anfíbio";
    } if(shared_ptr<Reptil> teste = dynamic_pointer_cast< Reptil >(animal)) {
        if(simplificado)
            return "rep";
        else
            return "Réptil";
    } else {
        if(simplificado)
            return "mam";
        else
            return "Mamífero";
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rsi, -0x90(%rbp)
movq %rdi, -0x88(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x80(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xb780
leaq -0x28(%rbp), %rdi
callq 0x2c0c0
testb $0x1, %al
jne 0x2a46a
jmp 0x2a520
testb $0x1, -0x11(%rbp)
je 0x2a4c8
leaq -0x29(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x17ce1(%rip), %rsi     # 0x42176
callq 0xc1d0
jmp 0x2a49c
leaq -0x29(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a527
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x6380
jmp 0x2a5a7
leaq -0x41(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x17c55(%rip), %rsi     # 0x42142
callq 0xc1d0
jmp 0x2a4f4
leaq -0x41(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a527
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x6380
jmp 0x2a5a7
movl $0x0, -0x40(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xb830
movl -0x40(%rbp), %eax
testl %eax, %eax
je 0x2a53e
jmp 0x2a539
jmp 0x2a7f7
movq -0x90(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0xb850
leaq -0x58(%rbp), %rdi
callq 0x2c0e0
testb $0x1, %al
jne 0x2a560
jmp 0x2a627
testb $0x1, -0x11(%rbp)
je 0x2a5cf
leaq -0x59(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x15b0d(%rip), %rsi     # 0x40098
callq 0xc1d0
jmp 0x2a592
leaq -0x59(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a62e
leaq -0x28(%rbp), %rdi
callq 0xb830
jmp 0x2a804
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x6380
jmp 0x2a6ae
leaq -0x5a(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x17b52(%rip), %rsi     # 0x42146
callq 0xc1d0
jmp 0x2a5fb
leaq -0x5a(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a62e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5a(%rbp), %rdi
callq 0x6380
jmp 0x2a6ae
movl $0x0, -0x40(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xb900
movl -0x40(%rbp), %eax
testl %eax, %eax
je 0x2a645
jmp 0x2a640
jmp 0x2a7f7
movq -0x90(%rbp), %rsi
leaq -0x70(%rbp), %rdi
callq 0xb920
leaq -0x70(%rbp), %rdi
callq 0x2c100
testb $0x1, %al
jne 0x2a667
jmp 0x2a731
testb $0x1, -0x11(%rbp)
je 0x2a6d6
leaq -0x71(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x15a0e(%rip), %rsi     # 0x400a0
callq 0xc1d0
jmp 0x2a699
leaq -0x71(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a7e1
leaq -0x58(%rbp), %rdi
callq 0xb900
jmp 0x2a804
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x6380
jmp 0x2a7ec
leaq -0x72(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x17139(%rip), %rsi     # 0x41834
callq 0xc1d0
jmp 0x2a702
leaq -0x72(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a7e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x72(%rbp), %rdi
callq 0x6380
jmp 0x2a7ec
testb $0x1, -0x11(%rbp)
je 0x2a78c
leaq -0x73(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x15940(%rip), %rsi     # 0x4009c
callq 0xc1d0
jmp 0x2a763
leaq -0x73(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a7e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x73(%rbp), %rdi
callq 0x6380
jmp 0x2a7ec
leaq -0x74(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x65a0
movq -0x88(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0x1708b(%rip), %rsi     # 0x4183c
callq 0xc1d0
jmp 0x2a7b8
leaq -0x74(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a7e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x74(%rbp), %rdi
callq 0x6380
jmp 0x2a7ec
leaq -0x70(%rbp), %rdi
callq 0xb9d0
jmp 0x2a7f7
leaq -0x70(%rbp), %rdi
callq 0xb9d0
jmp 0x2a804
movq -0x80(%rbp), %rax
addq $0xd0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x6590
nopl (%rax)