LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/TooruAkagi[P]GCIS_Index/gcis_nep_locate.cpp
// Function: queryload()
int queryload(){
    //load[qname] file and put it in array [m]
    char qname[] = "query.txt";
    char chr;
    FILE *fp;
    long long int qsize = 400;
    qsize = std::filesystem::file_size(qname);
    fp = fopen(qname, "r"); // open file or return null
    if(fp == NULL) {
        printf("%s such file doesn't exist!\n", qname);
        return -1;
    }
    int i = 0;
    for(i=0;i<qsize;i++) {
        chr = fgetc(fp);
        m[i] = chr;
        if(chr<0){m[i]=chr + 256;}
        //printf("\n%d(%d)",m[i],i);
    }
    return (int)qsize;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x40, %rsp
movabsq $0x78742e7972657571, %rax # imm = 0x78742E7972657571
leaq 0x8(%rsp), %rsi
movq %rax, (%rsi)
movw $0x74, 0x8(%rsi)
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %edx
callq 0x4fd8
movq %rbx, %rdi
callq 0x1170
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x5060
leaq 0x1ffe(%rip), %rsi      # 0x607b
leaq 0x8(%rsp), %rdi
callq 0x1130
testq %rax, %rax
je 0x40b7
testq %rbx, %rbx
jle 0x40cf
movq %rax, %r14
xorl %r15d, %r15d
movq %r14, %rdi
callq 0x11b0
movzbl %al, %eax
movq 0x6667(%rip), %rcx      # 0xa710
movl %eax, (%rcx,%r15,4)
incq %r15
cmpq %r15, %rbx
jne 0x4097
jmp 0x40cf
leaq 0x1fbf(%rip), %rdi      # 0x607d
leaq 0x8(%rsp), %rsi
xorl %eax, %eax
callq 0x1030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movl %ebx, %eax
addq $0x40, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x5060
movq %rbx, %rdi
callq 0x11c0
// File: /workspace/github_cpp_makefile_star2_O1/TooruAkagi[P]GCIS_Index/gcis_nep_locate.cpp
// Function: qrmload(int, int, int*)
int qrmload(int c,int jo,int *anst){ //mの中に，english.001.2 の中からc文字をランダムに選択して保存する
    char chr;FILE *fp;
    long long int qsize = std::filesystem::file_size(qname); //qsizeには，ファイルのサイズが書かれているはず
    fp = fopen(qname, "r"); // open file or return null
    if(fp == NULL) {
        printf("%s such file doesn't exist!\n", qname);
        return -1;
    }
    int i = 0;
    jswt = 0;
    int rlen = rand()%(qsize-c);
    if(runmode==2){rlen = qstart;}
    anst[jo] = rlen;
    fseek(fp,rlen,SEEK_SET); //指定したシークまで移動する
    printf("\nquery%d : [%lld]rlen[%d]から[%d]文字(%lld)\n[",jo,qsize,rlen,c,qsize);
    if(CHECKFLAG == 1){checkpz[0]=rlen;checkpz[1]=c;}
    for(i=0;i<c;i++) { //c文字
        chr = fgetc(fp);
        m[i] = chr;
        if(chr<0){m[i]=chr + 256;}
        if(m[i]==10){jswt=1;}
        if(DEBUGFLAG==1){printf("%c",chr);}
    }
    printf("]");
    return c;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r12
movl %esi, %ebp
movl %edi, %ebx
leaq 0x4e92(%rip), %rsi      # 0x9170
movq %rsp, %r14
movq %r14, %rdi
movl $0x2, %edx
callq 0x5098
movq %r14, %rdi
callq 0x1170
movq %rax, %r15
movq %rsp, %rdi
callq 0x5060
movq 0x4e68(%rip), %rdi      # 0x9170
leaq 0x1d6c(%rip), %rsi      # 0x607b
callq 0x1130
testq %rax, %rax
je 0x43c5
movq %rax, %r14
movl $0x0, 0x63de(%rip)      # 0xa708
callq 0x1060
cltq
movslq %ebx, %rcx
movq %r15, %rsi
subq %rcx, %rsi
cqto
idivq %rsi
cmpl $0x2, 0x4dea(%rip)      # 0x9130
jne 0x434e
movl 0x4dee(%rip), %edx      # 0x913c
movslq %ebp, %r13
movl %edx, (%r12,%r13,4)
movslq %edx, %r12
movq %r14, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq 0x1120
leaq 0x1e18(%rip), %rdi      # 0x6184
movl %r13d, %esi
movq %r15, %rdx
movl %r12d, %ecx
movl %ebx, %r8d
movq %r15, %r9
xorl %eax, %eax
callq 0x1030
testl %ebx, %ebx
jle 0x43b9
movl %ebx, %r15d
xorl %r12d, %r12d
movq %r14, %rdi
callq 0x11b0
movzbl %al, %eax
movq 0x6372(%rip), %rcx      # 0xa710
movl %eax, (%rcx,%r12,4)
cmpl $0xa, %eax
jne 0x43b1
movl $0x1, 0x6357(%rip)      # 0xa708
incq %r12
cmpq %r12, %r15
jne 0x438c
movl $0x5d, %edi
callq 0x1180
jmp 0x43df
movq 0x4da4(%rip), %rsi      # 0x9170
leaq 0x1caa(%rip), %rdi      # 0x607d
xorl %eax, %eax
callq 0x1030
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x5060
movq %rbx, %rdi
callq 0x11c0
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./banco_dados.cpp
// Function: BancoDados::salvarDados()
void BancoDados::salvarDados() {
    try {
        salvarFuncionarios();
        salvarAnimais();
    } catch(char const* msg) {
        cout << "Erro: " << msg << endl;
    }
    
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
callq 0x7008
movq %rbx, %rdi
callq 0x764a
popq %rbx
retq
movq %rax, %rbx
cmpl $0x1, %edx
jne 0x6fff
movq %rbx, %rdi
callq 0x6130
movq %rax, %rbx
movq 0x27007(%rip), %rdi     # 0x2dfd0
leaq 0x1a093(%rip), %rsi     # 0x21063
movl $0x6, %edx
callq 0x6310
movq 0x26fef(%rip), %rdi     # 0x2dfd0
movq %rbx, %rsi
callq 0x6290
movq %rax, %rdi
callq 0x6160
popq %rbx
jmp 0x6420
movq %rax, %rbx
callq 0x6420
movq %rbx, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./banco_dados.cpp
// Function: BancoDados::lerDados()
void BancoDados::lerDados() {
    try {
        lerFuncionarios();
        lerAnimais();
    } catch(char const* msg) {
        cout << "Erro: " << msg << endl << "Caso os arquivos existam,"
         << endl << "Verifique a integridade deles na pasta " << diretorio << endl;
    }
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x8560
movq %rbx, %rdi
callq 0x8d10
addq $0x8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %r14
cmpl $0x1, %edx
jne 0x8558
movq %r14, %rdi
callq 0x6130
movq %rax, %r14
movq 0x25b02(%rip), %rdi     # 0x2dfd0
leaq 0x18b8e(%rip), %rsi     # 0x21063
movl $0x6, %edx
callq 0x6310
movq 0x25aea(%rip), %rdi     # 0x2dfd0
movq %r14, %rsi
callq 0x6290
movq %rax, %rdi
callq 0x6160
movq %rax, %r14
leaq 0x18c34(%rip), %rsi     # 0x21134
movl $0x19, %edx
movq %rax, %rdi
callq 0x6310
movq %r14, %rdi
callq 0x6160
movq %rax, %r14
leaq 0x18c2f(%rip), %rsi     # 0x2114e
movl $0x27, %edx
movq %rax, %rdi
callq 0x6310
movq 0x50(%rbx), %rsi
movq 0x58(%rbx), %rdx
movq %r14, %rdi
callq 0x6310
movq %rax, %rdi
callq 0x6160
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x6420
movq %rax, %r14
callq 0x6420
movq %r14, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::findVeterinario(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
shared_ptr<Veterinario> Petshop::findVeterinario(string nome) {
    for(auto& vet : this->veterinarios) {
        if(vet->getNome() == nome) {
            return vet;
        }
    }
    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, (%rsp)
movq (%rsi), %r12
movq 0x8(%rsi), %r13
cmpq %r13, %r12
sete %bpl
je 0xe3a7
movq %rdx, %r14
leaq 0x8(%rsp), %r15
movq (%r12), %rsi
movq %r15, %rdi
callq 0x159d2
movq 0x10(%rsp), %rdx
cmpq 0x8(%r14), %rdx
jne 0xe33e
testq %rdx, %rdx
je 0xe342
movq (%r14), %rsi
movq 0x8(%rsp), %rdi
callq 0x62c0
testl %eax, %eax
sete %bl
jmp 0xe344
xorl %ebx, %ebx
jmp 0xe344
movb $0x1, %bl
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe360
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x62b0
testb %bl, %bl
jne 0xe373
addq $0x10, %r12
cmpq %r13, %r12
sete %bpl
jne 0xe30e
jmp 0xe3a7
movq (%r12), %rax
movq (%rsp), %rcx
movq %rax, (%rcx)
movq 0x8(%r12), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0xe3a1
movq 0x1fc35(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0xe39d
incl 0x8(%rax)
jmp 0xe3a1
lock
incl 0x8(%rax)
testb $0x1, %bpl
je 0xe3b1
xorps %xmm0, %xmm0
movq (%rsp), %rax
movups %xmm0, (%rax)
movq (%rsp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::findTratador(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
shared_ptr<Tratador> Petshop::findTratador(string nome) {
    for(auto& trata : this->tratadores) {
        if(trata->getNome() == nome) {
            return trata;
        }
    }
    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, (%rsp)
movq 0x18(%rsi), %r12
movq 0x20(%rsi), %r13
cmpq %r13, %r12
sete %bpl
je 0xe75e
movq %rdx, %r14
leaq 0x8(%rsp), %r15
movq (%r12), %rsi
movq %r15, %rdi
callq 0x159d2
movq 0x10(%rsp), %rdx
cmpq 0x8(%r14), %rdx
jne 0xe6f5
testq %rdx, %rdx
je 0xe6f9
movq (%r14), %rsi
movq 0x8(%rsp), %rdi
callq 0x62c0
testl %eax, %eax
sete %bl
jmp 0xe6fb
xorl %ebx, %ebx
jmp 0xe6fb
movb $0x1, %bl
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xe717
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x62b0
testb %bl, %bl
jne 0xe72a
addq $0x10, %r12
cmpq %r13, %r12
sete %bpl
jne 0xe6c5
jmp 0xe75e
movq (%r12), %rax
movq (%rsp), %rcx
movq %rax, (%rcx)
movq 0x8(%r12), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0xe758
movq 0x1f87e(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0xe754
incl 0x8(%rax)
jmp 0xe758
lock
incl 0x8(%rax)
testb $0x1, %bpl
je 0xe768
xorps %xmm0, %xmm0
movq (%rsp), %rax
movups %xmm0, (%rax)
movq (%rsp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::findAnimal(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
shared_ptr<Animal> Petshop::findAnimal(string nome, string especie) {
    for(auto& animal : this->animais) {
        if(animal->getNome() == nome && animal->getEspecie() == especie) {
            return animal;
        }
    }
    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rcx, 0x10(%rsp)
movq %rdi, 0x8(%rsp)
movq 0x30(%rsi), %rbx
movq 0x38(%rsi), %r13
cmpq %r13, %rbx
sete %bpl
je 0xf8f7
movq %rdx, %r15
movq (%rbx), %rsi
leaq 0x18(%rsp), %rdi
callq 0x17a2a
movq 0x20(%rsp), %rdx
cmpq 0x8(%r15), %rdx
jne 0xf81e
testq %rdx, %rdx
je 0xf823
movq (%r15), %rsi
movq 0x18(%rsp), %rdi
callq 0x62c0
testl %eax, %eax
sete %r12b
jmp 0xf826
xorl %r12d, %r12d
jmp 0xf826
movb $0x1, %r12b
testb %r12b, %r12b
je 0xf867
movq (%rbx), %rsi
leaq 0x38(%rsp), %rdi
callq 0x17baa
movq 0x40(%rsp), %rdx
movq 0x10(%rsp), %rax
cmpq 0x8(%rax), %rdx
jne 0xf867
testq %rdx, %rdx
je 0xf8bf
movq 0x10(%rsp), %rax
movq (%rax), %rsi
movq 0x38(%rsp), %rdi
callq 0x62c0
testl %eax, %eax
sete %r14b
jmp 0xf86a
xorl %r14d, %r14d
testb %r12b, %r12b
je 0xf88b
movq 0x38(%rsp), %rdi
leaq 0x48(%rsp), %rax
cmpq %rax, %rdi
je 0xf88b
movq 0x48(%rsp), %rsi
incq %rsi
callq 0x62b0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xf8a7
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x62b0
testb %r14b, %r14b
jne 0xf8c4
addq $0x10, %rbx
cmpq %r13, %rbx
sete %bpl
jne 0xf7ec
jmp 0xf8f7
movb $0x1, %r14b
jmp 0xf86a
movq (%rbx), %rax
movq 0x8(%rsp), %rcx
movq %rax, (%rcx)
movq 0x8(%rbx), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0xf8f1
movq 0x1e6e5(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0xf8ed
incl 0x8(%rax)
jmp 0xf8f1
lock
incl 0x8(%rax)
testb $0x1, %bpl
je 0xf902
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
movq 0x8(%rsp), %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0xf935
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::excluirAnimal(std::shared_ptr<Animal>)
shared_ptr<Animal> Petshop::excluirAnimal(shared_ptr<Animal> removido) {
    int index = 0;

    for(auto& animal : this->animais) {
        if(animal == removido) {
            shared_ptr<Animal> ptr_removido = animal;
            this->animais.erase(this->animais.begin() + index);
            Debug("Animal: " << ptr_removido->getNome() << " removido do registro.");
            return ptr_removido;
        }
        index++;
    }

    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x30(%rsi), %r12
movq %rsi, 0x10(%rsp)
movq 0x38(%rsi), %r13
cmpq %r13, %r12
je 0x136b5
movq %rdx, %r15
addq $0x30, 0x10(%rsp)
xorl %ebp, %ebp
movq (%r12), %rbx
movq (%r15), %r14
cmpq %r14, %rbx
je 0x13668
incl %ebp
jmp 0x136a7
movq 0x8(%rsp), %rcx
movq %rbx, (%rcx)
movq 0x8(%r12), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0x13693
movq 0x1a943(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x1368f
incl 0x8(%rax)
jmp 0x13693
lock
incl 0x8(%rax)
movslq %ebp, %rsi
shlq $0x4, %rsi
movq 0x10(%rsp), %rdi
addq (%rdi), %rsi
callq 0x15604
cmpq %r14, %rbx
je 0x136c2
addq $0x10, %r12
cmpq %r13, %r12
jne 0x13658
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
jmp 0x136c7
movq 0x8(%rsp), %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x136ec
callq 0xafa0
movq %r14, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::excluirVeterinario(std::shared_ptr<Veterinario>)
shared_ptr<Veterinario> Petshop::excluirVeterinario(shared_ptr<Veterinario> removido) {
    int index = 0;

    for(auto& vet : this->veterinarios) {
        if(vet == removido) {
            shared_ptr<Veterinario> ptr_removido = vet;
            this->veterinarios.erase(this->veterinarios.begin() + index);
            Debug("Veterinario: " << ptr_removido->getNome() << " removido do registro.");
            return ptr_removido;
        }
        index++;
    }

    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq (%rsi), %r12
movq %rsi, 0x10(%rsp)
movq 0x8(%rsi), %r13
cmpq %r13, %r12
je 0x13ea6
movq %rdx, %r14
xorl %ebp, %ebp
movq (%r12), %rbx
movq (%r14), %r15
cmpq %r15, %rbx
je 0x13e59
incl %ebp
jmp 0x13e98
movq 0x8(%rsp), %rcx
movq %rbx, (%rcx)
movq 0x8(%r12), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0x13e84
movq 0x1a152(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x13e80
incl 0x8(%rax)
jmp 0x13e84
lock
incl 0x8(%rax)
movslq %ebp, %rsi
shlq $0x4, %rsi
movq 0x10(%rsp), %rdi
addq (%rdi), %rsi
callq 0x154d4
cmpq %r15, %rbx
je 0x13eb3
addq $0x10, %r12
cmpq %r13, %r12
jne 0x13e49
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
jmp 0x13eb8
movq 0x8(%rsp), %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x13edd
callq 0xafa0
movq %r14, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/./petshop.cpp
// Function: Petshop::excluirTratador(std::shared_ptr<Tratador>)
shared_ptr<Tratador> Petshop::excluirTratador(shared_ptr<Tratador> removido) {
    int index = 0;

    for(auto& tratador : this->tratadores) {
        if(tratador == removido) {
            shared_ptr<Tratador> ptr_removido = tratador;
            this->tratadores.erase(this->tratadores.begin() + index);
            Debug("Tratador: " << ptr_removido->getNome() << " removido do registro.");
            return ptr_removido;
        }
        index++;
    }

    return nullptr;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, 0x8(%rsp)
movq 0x18(%rsi), %r12
movq %rsi, 0x10(%rsp)
movq 0x20(%rsi), %r13
cmpq %r13, %r12
je 0x146a1
movq %rdx, %r15
addq $0x18, 0x10(%rsp)
xorl %ebp, %ebp
movq (%r12), %rbx
movq (%r15), %r14
cmpq %r14, %rbx
je 0x14654
incl %ebp
jmp 0x14693
movq 0x8(%rsp), %rcx
movq %rbx, (%rcx)
movq 0x8(%r12), %rax
movq %rax, 0x8(%rcx)
testq %rax, %rax
je 0x1467f
movq 0x19957(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x1467b
incl 0x8(%rax)
jmp 0x1467f
lock
incl 0x8(%rax)
movslq %ebp, %rsi
shlq $0x4, %rsi
movq 0x10(%rsp), %rdi
addq (%rdi), %rsi
callq 0x1556c
cmpq %r14, %rbx
je 0x146ae
addq $0x10, %r12
cmpq %r13, %r12
jne 0x14644
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
jmp 0x146b3
movq 0x8(%rsp), %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rdi
testq %rdi, %rdi
je 0x146d8
callq 0xafa0
movq %r14, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/funcionarios/pessoa.cpp
// Function: Pessoa::setNome()
bool Pessoa::setNome() {
    string s;
    cout << endl << "Nome: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->nome = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x185b2(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x18597(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xd3a9(%rip), %rsi      # 0x22df9
movl $0x6, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x18555(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1853a(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x15b02
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x15adc
addq $0x8, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15af2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xd2ed(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x18493(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15b40
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/funcionarios/pessoa.cpp
// Function: Pessoa::setTelefone()
bool Pessoa::setTelefone() {
    string s;
    cout << endl << "Telefone: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->telefone = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x18432(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x18417(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xd25c(%rip), %rsi      # 0x22e2c
movl $0xa, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x183d5(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x183ba(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x15c82
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x15c5c
addq $0x28, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15c72
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xd16d(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x18313(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15cc0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/funcionarios/pessoa.cpp
// Function: Pessoa::setEmail()
bool Pessoa::setEmail() {
    string s;
    cout << endl << "E-mail: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->email = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x182b2(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x18297(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xd0e7(%rip), %rsi      # 0x22e37
movl $0x8, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x18255(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1823a(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x15e02
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x15ddc
addq $0x48, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15df2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xcfed(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x18193(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x15e40
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/funcionarios/tratador.cpp
// Function: Tratador::setUniforme()
bool Tratador::setUniforme() {
    string s;
    cout << endl << "Nível de segurança do tratador: " << endl;
    cout << "V - verde" << endl;
    cout << "A - azul" << endl;
    cout << "M - vermelho" << endl;
    getline(cin, s);

    switch(toupper(s[0])) {
        case 'V':
            this->uniforme = Verde;
            break;
        case 'A':
            this->uniforme = Azul;
            break;
        case 'M':
            this->uniforme = Vermelho;
            break;
        default:
            return false;
            break;
    }

    return true;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x17ecf(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x17eb4(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xcd15(%rip), %rsi      # 0x22e48
movl $0x22, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x17e62(%rip), %r14     # 0x2dfd0
leaq 0xccf6(%rip), %rsi      # 0x22e6b
movl $0x9, %edx
movq %r14, %rdi
callq 0x6310
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x17e30(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x17e1c(%rip), %r14     # 0x2dfd0
leaq 0xccba(%rip), %rsi      # 0x22e75
movl $0x8, %edx
movq %r14, %rdi
callq 0x6310
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x17dea(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x17dd6(%rip), %r14     # 0x2dfd0
leaq 0xcc7d(%rip), %rsi      # 0x22e7e
movl $0xc, %edx
movq %r14, %rdi
callq 0x6310
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x17da4(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x17da0(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x17d85(%rip), %rdi     # 0x2dfe0
leaq 0x8(%rsp), %rsi
callq 0x6480
movq 0x8(%rsp), %r14
movsbl (%r14), %edi
callq 0x6490
cmpl $0x41, %eax
je 0x1628d
cmpl $0x4d, %eax
je 0x16286
xorl %ebp, %ebp
cmpl $0x56, %eax
je 0x16292
jmp 0x16298
movl $0x2, %ebp
jmp 0x16292
movl $0x1, %ebp
movl %ebp, 0x68(%rbx)
movb $0x1, %bpl
cmpq %r15, %r14
je 0x162ad
movq 0x18(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x62b0
movl %ebp, %eax
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x162d4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/funcionarios/veterinario.cpp
// Function: Veterinario::setCRMV()
bool Veterinario::setCRMV() {
    string s;
    cout << endl << "CRMV: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->CRMV = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x172da(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x172bf(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xc319(%rip), %rsi      # 0x23041
movl $0x6, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1727d(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x17262(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x16dda
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x16db4
addq $0x68, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x16dca
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xc015(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x171bb(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x16e18
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::setEspecie()
bool Animal::setEspecie() {
    string s;
    cout << endl << "Espécie: " << endl;
    getline(cin, s);
    
    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->especie = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x163da(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x163bf(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xb28f(%rip), %rsi      # 0x22eb7
movl $0xa, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1637d(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x16362(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x17cda
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x17cb4
addq $0x28, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x17cca
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xb115(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x162bb(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x17d18
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::setAmeacadoPor()
bool Animal::setAmeacadoPor() {
    string s;
    cout << endl << "Animal ameaçado de extinção por?: " << endl;
    getline(cin, s);
    
    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->ameacadoPor = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x1625a(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x1623f(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0xb11a(%rip), %rsi      # 0x22ec2
movl $0x25, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x161fd(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x161e2(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x17e5a
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x17e34
addq $0x48, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x17e4a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0xaf95(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x1613b(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x17e98
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/animal.cpp
// Function: Animal::setPerigoso()
bool Animal::setPerigoso() {
    string s;
    cout << endl << "É perigoso? (S/N): ";
    getline(cin, s);
    
    if(toupper(s[0]) == 'S')
        this->perigoso = true;
    else if(toupper(s[0]) == 'N')
        this->perigoso = false;
    else
        return false;

    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x16072(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x16057(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
leaq 0xaf5b(%rip), %rsi      # 0x22ee8
movl $0x14, %edx
movq %rax, %rdi
callq 0x6310
movq 0x1603f(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x16024(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq (%rsp), %r14
movsbl (%r14), %edi
callq 0x6490
cmpl $0x4e, %eax
je 0x17fe1
movb $0x1, %cl
cmpl $0x53, %eax
je 0x17fe3
xorl %ebx, %ebx
jmp 0x17feb
xorl %ecx, %ecx
movb %cl, 0x88(%rbx)
movb $0x1, %bl
cmpq %r15, %r14
je 0x18000
movq 0x10(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x62b0
movl %ebx, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x18025
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %rbx
movq (%rsi), %rdi
testq %rdi, %rdi
je 0x18071
leaq 0x14dfb(%rip), %rsi     # 0x2ce50
leaq 0x14e14(%rip), %rdx     # 0x2ce70
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
setne %r12b
jmp 0x18074
xorl %r12d, %r12d
testb %r12b, %r12b
je 0x18098
movq 0x8(%r15), %r14
testq %r14, %r14
je 0x1809b
movq 0x15f3f(%rip), %rax     # 0x2dfc8
cmpb $0x0, (%rax)
je 0x18140
incl 0x8(%r14)
jmp 0x1809b
xorl %r14d, %r14d
testb %r12b, %r12b
je 0x180da
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
testb %bpl, %bpl
je 0x180c4
leaq 0xb0e5(%rip), %rsi      # 0x23198
leaq 0xb0df(%rip), %rdx      # 0x23199
movq %rbx, %rdi
callq 0xadd8
jmp 0x180da
leaq 0xae32(%rip), %rsi      # 0x22efd
leaq 0xae3d(%rip), %rdx      # 0x22f0f
movq %rbx, %rdi
callq 0xadd8
testq %r14, %r14
je 0x180e7
movq %r14, %rdi
callq 0xafa0
testb %r12b, %r12b
jne 0x181cf
movq (%r15), %rdi
testq %rdi, %rdi
je 0x1811a
leaq 0x14d51(%rip), %rsi     # 0x2ce50
leaq 0x14d7a(%rip), %rdx     # 0x2ce80
movq $-0x2, %rcx
callq 0x6300
testq %rax, %rax
sete %al
jmp 0x1811c
movb $0x1, %al
testb %al, %al
je 0x18125
xorl %r14d, %r14d
jmp 0x1814f
movq 0x8(%r15), %r14
testq %r14, %r14
je 0x1814f
movq 0x15e93(%rip), %rcx     # 0x2dfc8
cmpb $0x0, (%rcx)
je 0x1814a
incl 0x8(%r14)
jmp 0x1814f
lock
incl 0x8(%r14)
jmp 0x1809b
lock
incl 0x8(%r14)
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
testb %al, %al
je 0x18177
testb %bpl, %bpl
je 0x18194
leaq 0xa93e(%rip), %rsi      # 0x22aa4
leaq 0xa938(%rip), %rdx      # 0x22aa5
movq %rbx, %rdi
callq 0xadd8
jmp 0x181c2
testb %bpl, %bpl
je 0x181ac
leaq 0xb010(%rip), %rsi      # 0x23193
leaq 0xb00a(%rip), %rdx      # 0x23194
movq %rbx, %rdi
callq 0xadd8
jmp 0x181c2
leaq 0xad86(%rip), %rsi      # 0x22f21
leaq 0xad89(%rip), %rdx      # 0x22f2b
movq %rbx, %rdi
callq 0xadd8
jmp 0x181c2
leaq 0xad5d(%rip), %rsi      # 0x22f10
leaq 0xad66(%rip), %rdx      # 0x22f20
movq %rbx, %rdi
callq 0xadd8
testq %r14, %r14
je 0x181cf
movq %r14, %rdi
callq 0xafa0
movq %rbx, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x181e5
jmp 0x181e5
jmp 0x181e5
jmp 0x181e5
jmp 0x181e5
movq %rax, %rbx
testq %r14, %r14
je 0x181f5
movq %r14, %rdi
callq 0xafa0
movq %rbx, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/domestico.cpp
// Function: Domestico::setAdestrado()
bool Domestico::setAdestrado() {
    string s;
    cout << endl << "Animal é adestrado? (S/N): " << endl;
    getline(cin, s);

    if(toupper(s[0]) == 'S')
        this->adestrado = true;
    else if(toupper(s[0]) == 'N')
        this->adestrado = false;
    else
        return false;

    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x13f0c(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x13ef1(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x9064(%rip), %rsi      # 0x2315a
movl $0x1c, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x13eaf(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x13e94(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq (%rsp), %r14
movsbl (%r14), %edi
callq 0x6490
cmpl $0x4e, %eax
je 0x1a171
movb $0x1, %cl
cmpl $0x53, %eax
je 0x1a173
xorl %ebx, %ebx
jmp 0x1a178
xorl %ecx, %ecx
movb %cl, 0x8(%rbx)
movb $0x1, %bl
cmpq %r15, %r14
je 0x1a18d
movq 0x10(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x62b0
movl %ebx, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1a1b2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/exotico.cpp
// Function: Exotico::setLocal()
bool Exotico::setLocal() {
    string s;
    cout << endl << "Habitat do animal: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->local = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x13d70(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x13d55(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x8ee5(%rip), %rsi      # 0x23177
movl $0x13, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x13d13(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x13cf8(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x1a344
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x1a31e
addq $0x8, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1a334
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0x8aab(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x13c51(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1a382
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/nativo.cpp
// Function: Nativo::setLicenca()
bool Nativo::setLicenca() {
    string s;
    cout << endl << "Licença de transporte IBAMA: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->licenca = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x1161a(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x115ff(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x6dd0(%rip), %rsi      # 0x237b8
movl $0x1e, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x115bd(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x115a2(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x1ca9a
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x1ca74
addq $0x28, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1ca8a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0x6355(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x114fb(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1cad8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/nativo.cpp
// Function: Nativo::setRegiao()
bool Nativo::setRegiao() {
    string s;
    cout << endl << "Região do animal: " << endl;
    getline(cin, s);

    if(s.find(';') != std::string::npos)
        throw "O caractere (Ponto e vírgula) é proibido.";
    if(s.size() == 0)
        return false;
    else
        this->regiao = s;
    
    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x1149a(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x1147f(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x6c6f(%rip), %rsi      # 0x237d7
movl $0x13, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x1143d(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x11422(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq %rsp, %rdi
movl $0x3b, %esi
xorl %edx, %edx
callq 0x6350
cmpq $-0x1, %rax
jne 0x1cc1a
movq 0x8(%rsp), %r14
testq %r14, %r14
je 0x1cbf4
addq $0x8, %rbx
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6190
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1cc0a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
testq %r14, %r14
setne %al
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movl $0x8, %edi
callq 0x6170
leaq 0x61d5(%rip), %rcx      # 0x22e00
movq %rcx, (%rax)
movq 0x1137b(%rip), %rsi     # 0x2dfb0
movq %rax, %rdi
xorl %edx, %edx
callq 0x6440
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1cc58
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/ave/ave.cpp
// Function: Ave::setVoa()
bool Ave::setVoa() {
    string s;
    cout << endl << "Ave voa? (S/N): " << endl;
    getline(cin, s);

    if(toupper(s[0]) == 'S')
        this->voa = true;
    else if(toupper(s[0]) == 'N')
        this->voa = false;
    else
        return false;

    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x11126(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x1110b(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x690f(%rip), %rsi      # 0x237eb
movl $0x10, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x110c9(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x110ae(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq (%rsp), %r14
movsbl (%r14), %edi
callq 0x6490
cmpl $0x4e, %eax
je 0x1cf57
movb $0x1, %cl
cmpl $0x53, %eax
je 0x1cf59
xorl %ebx, %ebx
jmp 0x1cf61
xorl %ecx, %ecx
movb %cl, 0x89(%rbx)
movb $0x1, %bl
cmpq %r15, %r14
je 0x1cf76
movq 0x10(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x62b0
movl %ebx, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1cf9b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
nop
// File: /workspace/github_cpp_makefile_star2_O1/brashi[P]PetFera/src/animal/mamifero/mamifero.cpp
// Function: Mamifero::setGestacao()
bool Mamifero::setGestacao() {
    string s;
    cout << endl << "Mamífero possui gestação? (S/N): " << endl;
    getline(cin, s);

    if(toupper(s[0]) == 'S')
        this->gestacao = true;
    else if(toupper(s[0]) == 'N')
        this->gestacao = false;
    else
        return false;

    return true;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x104a2(%rip), %rdi     # 0x2dfd0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq 0x10487(%rip), %rdi     # 0x2dfd0
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq %rax, %r14
leaq 0x5cc3(%rip), %rsi      # 0x23823
movl $0x24, %edx
movq %rax, %rdi
callq 0x6310
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x61c0
movq 0x10445(%rip), %rdi     # 0x2dfe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x6280
movsbl %al, %edx
movq 0x1042a(%rip), %rdi     # 0x2dfe0
movq %rsp, %rsi
callq 0x6480
movq (%rsp), %r14
movsbl (%r14), %edi
callq 0x6490
cmpl $0x4e, %eax
je 0x1dbdb
movb $0x1, %cl
cmpl $0x53, %eax
je 0x1dbdd
xorl %ebx, %ebx
jmp 0x1dbe5
xorl %ecx, %ecx
movb %cl, 0x89(%rbx)
movb $0x1, %bl
cmpq %r15, %r14
je 0x1dbfa
movq 0x10(%rsp), %rsi
incq %rsi
movq %r14, %rdi
callq 0x62b0
movl %ebx, %eax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x1dc1f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x62b0
movq %rbx, %rdi
callq 0x6460
nop