// File: brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::setClassificacao[abi:cxx11]()
string Animal::setClassificacao() {
    string s;
    cout << endl << "A que categoria o animal pertence?..." << endl;
    cout <<         "D - doméstico" << endl;
    cout <<         "E - exótico"   << endl;
    cout <<         "N - nativo"    << endl;
    getline(cin, s);

    if(s.size() == 0)
        return {};
    else
        switch(toupper(s[0])) {
            case 'D':
                return "D";
                break;
            case 'E':
                return "E";
                break;
            case 'N':
                return "N";
                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 $0xb0, %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 0x38e3a(%rip), %rdi     # 0x62fc8
movq 0x38e0b(%rip), %rsi     # 0x62fa0
callq 0x6360
movq %rax, -0x50(%rbp)
jmp 0x2a1a0
movq -0x50(%rbp), %rdi
leaq 0x17f4a(%rip), %rsi     # 0x420f5
callq 0x6310
movq %rax, -0x68(%rbp)
jmp 0x2a1b6
movq -0x68(%rbp), %rdi
movq 0x38ddf(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a1c8
movq 0x38df9(%rip), %rdi     # 0x62fc8
leaq 0x17f45(%rip), %rsi     # 0x4211b
callq 0x6310
movq %rax, -0x70(%rbp)
jmp 0x2a1e1
movq -0x70(%rbp), %rdi
movq 0x38db4(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a1f3
movq 0x38dce(%rip), %rdi     # 0x62fc8
leaq 0x17f29(%rip), %rsi     # 0x4212a
callq 0x6310
movq %rax, -0x78(%rbp)
jmp 0x2a20c
movq -0x78(%rbp), %rdi
movq 0x38d89(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a21e
movq 0x38da3(%rip), %rdi     # 0x62fc8
leaq 0x17f0b(%rip), %rsi     # 0x42137
callq 0x6310
movq %rax, -0x80(%rbp)
jmp 0x2a237
movq -0x80(%rbp), %rdi
movq 0x38d5e(%rip), %rsi     # 0x62fa0
callq 0x6360
jmp 0x2a249
movq 0x38d90(%rip), %rdi     # 0x62fe0
leaq -0x30(%rbp), %rsi
callq 0x6090
jmp 0x2a25b
leaq -0x30(%rbp), %rdi
callq 0x6250
cmpq $0x0, %rax
jne 0x2a290
movq -0x60(%rbp), %rdi
callq 0x6480
movl $0x1, -0x40(%rbp)
jmp 0x2a3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2a409
xorl %eax, %eax
movl %eax, %esi
leaq -0x30(%rbp), %rdi
callq 0x6660
movq %rax, -0x88(%rbp)
jmp 0x2a2a6
movq -0x88(%rbp), %rax
movsbl (%rax), %edi
callq 0x6600
movl %eax, %ecx
movl %ecx, -0x8c(%rbp)
subl $0x44, %eax
je 0x2a2e5
jmp 0x2a2c4
movl -0x8c(%rbp), %eax
subl $0x45, %eax
je 0x2a33d
jmp 0x2a2d1
movl -0x8c(%rbp), %eax
subl $0x4e, %eax
je 0x2a38f
jmp 0x2a3e1
leaq -0x41(%rbp), %rdi
movq %rdi, -0x98(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0x98(%rbp), %rdx
leaq 0x17920(%rip), %rsi     # 0x41c27
callq 0xc1d0
jmp 0x2a30e
leaq -0x41(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x6380
jmp 0x2a409
leaq -0x42(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xa0(%rbp), %rdx
leaq 0x18364(%rip), %rsi     # 0x426c3
callq 0xc1d0
jmp 0x2a366
leaq -0x42(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x42(%rbp), %rdi
callq 0x6380
jmp 0x2a409
leaq -0x43(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0x65a0
movq -0x60(%rbp), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x1830d(%rip), %rsi     # 0x426be
callq 0xc1d0
jmp 0x2a3b8
leaq -0x43(%rbp), %rdi
callq 0x6380
movl $0x1, -0x40(%rbp)
jmp 0x2a3f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x43(%rbp), %rdi
callq 0x6380
jmp 0x2a409
jmp 0x2a3e3
movq -0x60(%rbp), %rdi
callq 0x6480
movl $0x1, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6678
movq -0x58(%rbp), %rax
addq $0xb0, %rsp
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x6678
movq -0x38(%rbp), %rdi
callq 0x6590
nopl (%rax,%rax)