// File: brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::getClassificacao[abi:cxx11](std::shared_ptr<Animal>, bool)
string Animal::getClassificacao(shared_ptr<Animal> animal, bool simplificado) {
    if(shared_ptr<Exotico> teste = dynamic_pointer_cast< Exotico >(animal)) {
        if(simplificado)
            return "E";
        else
            return "Silvestre Exótico";
    } if(shared_ptr<Nativo> teste = dynamic_pointer_cast< Nativo >(animal)) {
        if(simplificado)
            return "N";
        else
            return "Silvestre Nativo";
    } else {
        if(simplificado)
            return "D";
        else
            return "Doméstico";
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb0, %rsp
movq %rsi, -0x78(%rbp)
movq %rdi, -0x70(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x68(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xb5e0
leaq -0x28(%rbp), %rdi
callq 0x2c080
testb $0x1, %al
jne 0x29ed4
jmp 0x29f7e
testb $0x1, -0x11(%rbp)
je 0x29f29
leaq -0x29(%rbp), %rdi
movq %rdi, -0x80(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0x80(%rbp), %rdx
leaq 0x187cd(%rip), %rsi     # 0x426c3
callq 0xc1d0
jmp 0x29efd
leaq -0x29(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x29f85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x29(%rbp), %rdi
callq 0x6380
jmp 0x29fff
leaq -0x41(%rbp), %rdi
movq %rdi, -0x88(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x1817b(%rip), %rsi     # 0x420c6
callq 0xc1d0
jmp 0x29f52
leaq -0x41(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x29f85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x6380
jmp 0x29fff
movl $0x0, -0x40(%rbp)
leaq -0x28(%rbp), %rdi
callq 0xb690
movl -0x40(%rbp), %eax
testl %eax, %eax
je 0x29f9c
jmp 0x29f97
jmp 0x2a13f
movq -0x78(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0xb6b0
leaq -0x58(%rbp), %rdi
callq 0x2c0a0
testb $0x1, %al
jne 0x29fbb
jmp 0x2a07f
testb $0x1, -0x11(%rbp)
je 0x2a027
leaq -0x59(%rbp), %rdi
movq %rdi, -0x90(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0x90(%rbp), %rdx
leaq 0x186db(%rip), %rsi     # 0x426be
callq 0xc1d0
jmp 0x29fea
leaq -0x59(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a129
leaq -0x28(%rbp), %rdi
callq 0xb690
jmp 0x2a14c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x59(%rbp), %rdi
callq 0x6380
jmp 0x2a134
leaq -0x5a(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x18090(%rip), %rsi     # 0x420d9
callq 0xc1d0
jmp 0x2a050
leaq -0x5a(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a129
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5a(%rbp), %rdi
callq 0x6380
jmp 0x2a134
testb $0x1, -0x11(%rbp)
je 0x2a0d7
leaq -0x5b(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x17b80(%rip), %rsi     # 0x41c27
callq 0xc1d0
jmp 0x2a0ae
leaq -0x5b(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a129
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5b(%rbp), %rdi
callq 0x6380
jmp 0x2a134
leaq -0x5c(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x65a0
movq -0x70(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x17ff1(%rip), %rsi     # 0x420ea
callq 0xc1d0
jmp 0x2a100
leaq -0x5c(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a129
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x5c(%rbp), %rdi
callq 0x6380
jmp 0x2a134
leaq -0x58(%rbp), %rdi
callq 0xb760
jmp 0x2a13f
leaq -0x58(%rbp), %rdi
callq 0xb760
jmp 0x2a14c
movq -0x68(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x6590
nopw %cs:(%rax,%rax)