// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rdi, %rbx
movq (%rsi), %r15
testq %r15, %r15
je 0x17187
movq %rsi, %r14
leaq 0x12df8(%rip), %rsi     # 0x29e88
leaq 0x12e31(%rip), %rdx     # 0x29ec8
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x5300
testq %rax, %rax
je 0x170c1
movq 0x8(%r14), %r14
testq %r14, %r14
je 0x17109
movq 0x13f12(%rip), %rax     # 0x2afc8
cmpb $0x0, (%rax)
je 0x17104
incl 0x8(%r14)
jmp 0x17109
leaq 0x12dc0(%rip), %rsi     # 0x29e88
leaq 0x12e11(%rip), %rdx     # 0x29ee0
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x5300
testq %rax, %rax
je 0x1714b
movq 0x8(%r14), %r14
testq %r14, %r14
je 0x171c3
movq 0x13ed6(%rip), %rax     # 0x2afc8
cmpb $0x0, (%rax)
je 0x171be
incl 0x8(%r14)
jmp 0x171c3
lock
incl 0x8(%r14)
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
testb %bpl, %bpl
je 0x17130
leaq 0x9e91(%rip), %rsi      # 0x20fad
leaq 0x9e8d(%rip), %rdx      # 0x20fb0
movq %rbx, %rdi
callq 0x9d84
jmp 0x1723e
leaq 0x9e42(%rip), %rsi      # 0x20f79
leaq 0x9e3e(%rip), %rdx      # 0x20f7c
movq %rbx, %rdi
callq 0x9d84
jmp 0x1723e
leaq 0x12d36(%rip), %rsi     # 0x29e88
leaq 0x12d9f(%rip), %rdx     # 0x29ef8
movq %r15, %rdi
xorl %ecx, %ecx
callq 0x5300
testq %rax, %rax
je 0x17187
movq 0x8(%r14), %r14
testq %r14, %r14
je 0x17204
movq 0x13e4c(%rip), %rax     # 0x2afc8
cmpb $0x0, (%rax)
je 0x171ff
incl 0x8(%r14)
jmp 0x17204
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
testb %bpl, %bpl
je 0x171a3
leaq 0x7e8a(%rip), %rsi      # 0x1f024
leaq 0x7e86(%rip), %rdx      # 0x1f027
jmp 0x171b1
leaq 0x950f(%rip), %rsi      # 0x206b9
leaq 0x9511(%rip), %rdx      # 0x206c2
movq %rbx, %rdi
callq 0x9d84
jmp 0x1724b
lock
incl 0x8(%r14)
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
testb %bpl, %bpl
je 0x171e7
leaq 0x7e4a(%rip), %rsi      # 0x1f020
leaq 0x7e46(%rip), %rdx      # 0x1f023
movq %rbx, %rdi
callq 0x9d84
jmp 0x1723e
leaq 0x9d8f(%rip), %rsi      # 0x20f7d
leaq 0x9d90(%rip), %rdx      # 0x20f85
movq %rbx, %rdi
callq 0x9d84
jmp 0x1723e
lock
incl 0x8(%r14)
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
testb %bpl, %bpl
je 0x17228
leaq 0x7e11(%rip), %rsi      # 0x1f028
leaq 0x7e0d(%rip), %rdx      # 0x1f02b
movq %rbx, %rdi
callq 0x9d84
jmp 0x1723e
leaq 0x9482(%rip), %rsi      # 0x206b1
leaq 0x9482(%rip), %rdx      # 0x206b8
movq %rbx, %rdi
callq 0x9d84
testq %r14, %r14
je 0x1724b
movq %r14, %rdi
callq 0x9f52
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
jmp 0x17263
jmp 0x17263
jmp 0x17263
jmp 0x17263
jmp 0x17263
movq %rax, %rbx
testq %r14, %r14
je 0x17273
movq %r14, %rdi
callq 0x9f52
movq %rbx, %rdi
callq 0x5460
nop