// File: brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::setClasse[abi:cxx11]()
string Animal::setClasse() {
    string s;
    cout << endl << "O animal pertence a que classe?..." << endl;
    cout <<         "A - ave"       << endl;
    cout <<         "F - anfíbio"   << endl;
    cout <<         "R - réptil"    << endl;
    cout <<         "M - mamífero"  << endl;
    getline(cin, s);

    if(s.size() == 0)
        return {};
    else
        switch(toupper(s[0])) {
            case 'A':
                return "ave";
                break;
            case 'F':
                return "anf";
                break;
            case 'R':
                return "rep";
                break;
            case 'M':
                return "mam";
                break;
        }

    return {}; // Não retornou nada (falhou), retorne vazio
    // {} é mais rápido que "", já que não chama o construtor de std::string
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x60(%rbp)
movq %rdi, %rax
movq %rax, -0x58(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6480
movq 0x3878a(%rip), %rdi     # 0x62fc8
movq 0x3875b(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x50(%rbp)
jmp 0x2a850
movq -0x50(%rbp), %rdi
leaq 0x178f4(%rip), %rsi     # 0x4214f
callq 0x6310
movq %rax, -0x68(%rbp)
jmp 0x2a866
movq -0x68(%rbp), %rdi
movq 0x3872f(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a878
movq 0x38749(%rip), %rdi     # 0x62fc8
leaq 0x178ec(%rip), %rsi     # 0x42172
callq 0x6310
movq %rax, -0x70(%rbp)
jmp 0x2a891
movq -0x70(%rbp), %rdi
movq 0x38704(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a8a3
movq 0x3871e(%rip), %rdi     # 0x62fc8
leaq 0x178c9(%rip), %rsi     # 0x4217a
callq 0x6310
movq %rax, -0x78(%rbp)
jmp 0x2a8bc
movq -0x78(%rbp), %rdi
movq 0x386d9(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a8ce
movq 0x386f3(%rip), %rdi     # 0x62fc8
leaq 0x178ab(%rip), %rsi     # 0x42187
callq 0x6310
movq %rax, -0x80(%rbp)
jmp 0x2a8e7
movq -0x80(%rbp), %rdi
movq 0x386ae(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a8f9
movq 0x386c8(%rip), %rdi     # 0x62fc8
leaq 0x1788c(%rip), %rsi     # 0x42193
callq 0x6310
movq %rax, -0x88(%rbp)
jmp 0x2a915
movq -0x88(%rbp), %rdi
movq 0x3867d(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a92a
movq 0x386af(%rip), %rdi     # 0x62fe0
leaq -0x30(%rbp), %rsi
callq 0x6090
jmp 0x2a93c
leaq -0x30(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
jne 0x2a971
movq -0x60(%rbp), %rdi
callq 0x6480
movl $0x1, -0x40(%rbp)
jmp 0x2ab28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2ab3e
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x6660
movq %rax, -0x90(%rbp)
jmp 0x2a987
movq -0x90(%rbp), %rax
movsbl (%rax), %edi
callq 0x6600
addl $-0x41, %eax
movl %eax, %ecx
movq %rcx, -0x98(%rbp)
subl $0x11, %eax
ja 0x2ab16
movq -0x98(%rbp), %rax
leaq 0x1767f(%rip), %rcx     # 0x42038
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x41(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x17792(%rip), %rsi     # 0x42176
callq 0xc1d0
jmp 0x2a9eb
leaq -0x41(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2ab28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x6380
jmp 0x2ab3e
leaq -0x42(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x1565c(%rip), %rsi     # 0x40098
callq 0xc1d0
jmp 0x2aa43
leaq -0x42(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2ab28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x6380
jmp 0x2ab3e
leaq -0x43(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x1560c(%rip), %rsi     # 0x400a0
callq 0xc1d0
jmp 0x2aa9b
leaq -0x43(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2ab28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x43(%rbp), %rdi
callq 0x6380
jmp 0x2ab3e
leaq -0x44(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x155b6(%rip), %rsi     # 0x4009c
callq 0xc1d0
jmp 0x2aaed
leaq -0x44(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2ab28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x44(%rbp), %rdi
callq 0x6380
jmp 0x2ab3e
jmp 0x2ab18
movq -0x60(%rbp), %rdi
callq 0x6480
movl $0x1, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6678
movq -0x58(%rbp), %rax
addq $0xc0, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x6678
movq -0x38(%rbp), %rdi
callq 0x6590