LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::cadastrarFuncionario()
void Petfera::cadastrarFuncionario()
{
	short escolha;
	string escolha_str;

	cout << "\nOpcao Escolhida: Cadastrar funcionario\n"
			 << endl;
	cout << "Escolha abaixo o tipo de funcionario para cadastro: \n"
			 << endl;
	cout << " 1 - Funcionario Tratador" << endl;
	cout << " 2 - Funcionario Veterinario" << endl;
	cout << " 3 - Voltar para o menu" << endl;

	cin >> escolha_str;
	stringstream ss;
	ss << escolha_str;
	ss >> escolha;

	switch (escolha)
	{
	case 1:
		cout << "Vamos cadastrar um Funcionario Tratador" << endl;
		cadastrarTratador();
		break;
	case 2:
		cout << "Vamos cadastrar um Funcionario Tratador" << endl;
		cadastrarVeterinario();
		break;
	case 3:

		inicio();

		break;
	default:

		cout << "\033[1;33m"
				 << "Nao temos essa Opcao, Escolha de 1-3"
				 << "\033[0m"
				 << "\n";
		cadastrarFuncionario();

		break;
	}

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x1b8, %rsp            # imm = 0x1B8
movq %rdi, %rbx
leaq -0x20(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x23a84(%rip), %rdi     # 0x2efc8
leaq 0x154a3(%rip), %rsi     # 0x209ee
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x23a69(%rip), %rdi     # 0x2efc8
leaq 0x154b1(%rip), %rsi     # 0x20a17
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x23a4e(%rip), %rdi     # 0x2efc8
leaq 0x154cc(%rip), %rsi     # 0x20a4d
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x23a33(%rip), %rdi     # 0x2efc8
leaq 0x154cb(%rip), %rsi     # 0x20a67
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x23a18(%rip), %rdi     # 0x2efc8
leaq 0x154cd(%rip), %rsi     # 0x20a84
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x23a15(%rip), %rdi     # 0x2efe0
leaq -0x30(%rbp), %rsi
callq 0x41f0
leaq -0x1b8(%rbp), %rdi
callq 0x4140
leaq -0x1a8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4190
leaq -0x1b8(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x4040
movzwl -0xa(%rbp), %eax
cmpl $0x1, %eax
je 0xb645
cmpl $0x2, %eax
je 0xb620
cmpl $0x3, %eax
jne 0xb66a
movq %rbx, %rdi
callq 0xadc2
jmp 0xb6b2
movq 0x239a1(%rip), %rdi     # 0x2efc8
leaq 0x1546e(%rip), %rsi     # 0x20a9c
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq %rbx, %rdi
callq 0x12284
jmp 0xb6b2
movq 0x2397c(%rip), %rdi     # 0x2efc8
leaq 0x15449(%rip), %rsi     # 0x20a9c
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq %rbx, %rdi
callq 0x12032
jmp 0xb6b2
movq 0x23957(%rip), %rdi     # 0x2efc8
leaq 0x14688(%rip), %rsi     # 0x1fd00
callq 0x41a0
leaq 0x15440(%rip), %rsi     # 0x20ac4
movq %rax, %rdi
callq 0x41a0
leaq 0x1469b(%rip), %rsi     # 0x1fd2e
movq %rax, %rdi
callq 0x41a0
leaq 0x1436f(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xb51e
leaq -0x1b8(%rbp), %rdi
callq 0x4150
leaq -0x30(%rbp), %rdi
callq 0x40e0
addq $0x1b8, %rsp            # imm = 0x1B8
popq %rbx
popq %rbp
retq
jmp 0xb6e4
movq %rax, %rbx
leaq -0x1b8(%rbp), %rdi
callq 0x4150
jmp 0xb6e7
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x40e0
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::removerAnimal()
void Petfera::removerAnimal()
{
	int id;

	cout << "Voce escolheu: Remover Animal.\n"
			 << endl;

	listarTodosAnimais();

	cout << "Numero de identificacao (id) do animal: ";
	cin >> id;
	int index = 0;

	for (auto &animal : this->animalStore)
	{
		if (animal->getId() == id)
		{
			this->animalStore.erase(this->animalStore.begin() + index);
		}

		index++;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq 0x238b7(%rip), %r14     # 0x2efc8
leaq 0x155a4(%rip), %rsi     # 0x20cbc
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq %rbx, %rdi
callq 0xc1ea
leaq 0x155a5(%rip), %rsi     # 0x20cdc
movq %r14, %rdi
callq 0x41a0
movq 0x2389a(%rip), %rdi     # 0x2efe0
leaq -0x24(%rbp), %rsi
callq 0x4130
movq (%rbx), %r14
movq 0x8(%rbx), %r15
xorl %r12d, %r12d
leaq (%r14,%r12), %rax
cmpq %r15, %rax
je 0xb783
movq (%rax), %rdi
callq 0x6236
cmpl -0x24(%rbp), %eax
jne 0xb77d
movq (%rbx), %rsi
addq %r12, %rsi
movq %rbx, %rdi
callq 0x13f94
addq $0x10, %r12
jmp 0xb759
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::removerFuncionario()
void Petfera::removerFuncionario()
{
	int id;

	cout << "Voce escolheu: Remover funcionario.\n"
			 << endl;

	listarTodosFuncaionarios();

	cout << "Numero de identificacao (id) do funcionario: ";
	cin >> id;

	int index = 0;

	for (auto &funcionario : this->funcionarioStore)
	{
		if (funcionario->getId() == id)
		{
			this->funcionarioStore.erase(this->funcionarioStore.begin() + index);
		}

		index++;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r14
movq 0x2381f(%rip), %rbx     # 0x2efc8
leaq 0x15555(%rip), %rsi     # 0x20d05
movq %rbx, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq %r14, %rdi
callq 0xbb26
leaq 0x1555b(%rip), %rsi     # 0x20d2a
movq %rbx, %rdi
callq 0x41a0
movq 0x23802(%rip), %rdi     # 0x2efe0
leaq -0x24(%rbp), %rsi
callq 0x4130
leaq 0x20(%r14), %rbx
movq 0x20(%r14), %r15
movq 0x28(%r14), %r14
xorl %r12d, %r12d
leaq (%r15,%r12), %rax
cmpq %r14, %rax
je 0xb820
movq (%rax), %rdi
callq 0x84a8
cmpl -0x24(%rbp), %eax
jne 0xb81a
movq (%rbx), %rsi
addq %r12, %rsi
movq %rbx, %rdi
callq 0x13f9e
addq $0x10, %r12
jmp 0xb7f6
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::atualizar_dados_animal()
bool Petfera::atualizar_dados_animal()
{
	int id_animal;

	listarTodosAnimais();

	cout << "ID do animal a ser atualizado: ";
	cin >> id_animal;

	for (auto &animal : this->animalStore)
	{
		if (id_animal == animal->getId())
		{
			atualizar_animal(animal);
		}
		else
		{
			cout << "ID nao encontrado, retornando...";
		}
	}

	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r14
callq 0xc1ea
movq 0x2377a(%rip), %rdi     # 0x2efc8
leaq 0x15401(%rip), %rsi     # 0x20c56
callq 0x41a0
movq 0x2377f(%rip), %rdi     # 0x2efe0
leaq -0x2c(%rbp), %rsi
callq 0x4130
movq (%r14), %r15
movq 0x8(%r14), %rbx
leaq -0x40(%rbp), %r12
leaq 0x153fa(%rip), %r13     # 0x20c76
cmpq %rbx, %r15
je 0xb8c5
movl -0x2c(%rbp), %r14d
movq (%r15), %rdi
callq 0x6236
cmpl %eax, %r14d
jne 0xb8b0
movq %r12, %rdi
movq %r15, %rsi
callq 0x14260
movq %r12, %rsi
callq 0x125c6
leaq -0x38(%rbp), %rdi
callq 0x4c0e
jmp 0xb8bf
movq 0x23711(%rip), %rdi     # 0x2efc8
movq %r13, %rsi
callq 0x41a0
addq $0x10, %r15
jmp 0xb87c
movb $0x1, %al
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x4c0e
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::listarAnimaisPorFunca()
void Petfera::listarAnimaisPorFunca()
{
	int id;
	listarTodosFuncaionarios();
	cout << "Por favor escolha o id do funcionario que voce quer listar os animais atribuidos a ele"
			 << "\n";
	cin >> id;
	for (auto &&animal : this->animalStore)
	{
		if (animal->getVeterinario()->getId() == id)
		{
			cout << *(animal) << "\n";
		}
		if (animal->getTratador()->getId() == id)
		{
			cout << *(animal) << "\n";
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
callq 0xbb26
movq 0x236be(%rip), %rdi     # 0x2efc8
leaq 0x145c0(%rip), %rsi     # 0x1fed1
callq 0x41a0
leaq 0x140f4(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x236b4(%rip), %rdi     # 0x2efe0
leaq -0x2c(%rbp), %rsi
callq 0x4130
movq (%rbx), %r14
movq 0x8(%rbx), %r15
leaq -0x40(%rbp), %r13
cmpq %r15, %r14
je 0xb9de
movq (%r14), %rsi
movq %r13, %rdi
callq 0x6282
movq -0x40(%rbp), %rdi
callq 0x84a8
movl %eax, %ebx
movl -0x2c(%rbp), %r12d
leaq -0x38(%rbp), %rdi
callq 0x4c0e
cmpl %r12d, %ebx
jne 0xb98f
movq (%r14), %rsi
movq 0x2364d(%rip), %rdi     # 0x2efc8
callq 0x63b9
movq %rax, %rdi
leaq 0x14087(%rip), %rsi     # 0x1fa11
callq 0x41a0
movq (%r14), %rsi
movq %r13, %rdi
callq 0x629e
movq -0x40(%rbp), %rdi
callq 0x84a8
movl %eax, %ebx
movl -0x2c(%rbp), %r12d
leaq -0x38(%rbp), %rdi
callq 0x4c0e
cmpl %r12d, %ebx
jne 0xb9d5
movq (%r14), %rsi
movq 0x23607(%rip), %rdi     # 0x2efc8
callq 0x63b9
movq %rax, %rdi
leaq 0x14041(%rip), %rsi     # 0x1fa11
callq 0x41a0
addq $0x10, %r14
jmp 0xb940
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xb9ef
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x4c0e
movq %rbx, %rdi
callq 0x42c0
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::listarAnimaisPorClasse()
void Petfera::listarAnimaisPorClasse()
{
	int escolha;

	if (animalStore.size() == 0)
	{
		cout << "Sem animais cadastrados"
				 << "\n";
	};

	cout << "# Escolha uma das classes"
			 << "\n"
			 << "0 --> Mamiferos"
			 << "\n"
			 << "1 --> Aves"
			 << "\n"
			 << "2 --> Anfibios"
			 << "\n"
			 << "3 --> Repteis"
			 << "\n";

	cin >> escolha;

	for (auto &animal : animalStore)
	{
		if (animal->getFamilia() == escolha)
		{
			cout << *(animal) << "\n";
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movq %rdi, %r15
movq 0x8(%rdi), %rax
cmpq (%rdi), %rax
jne 0xba41
movq 0x235a2(%rip), %rdi     # 0x2efc8
leaq 0x1443a(%rip), %rsi     # 0x1fe67
callq 0x41a0
leaq 0x13fd8(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x23580(%rip), %rbx     # 0x2efc8
leaq 0x14430(%rip), %rsi     # 0x1fe7f
movq %rbx, %rdi
callq 0x41a0
leaq 0x13fb3(%rip), %r14     # 0x1fa11
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0x14429(%rip), %rsi     # 0x1fe99
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0x1441f(%rip), %rsi     # 0x1fea9
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0x14410(%rip), %rsi     # 0x1feb4
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0x14405(%rip), %rsi     # 0x1fec3
movq %rax, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
movq 0x23508(%rip), %rdi     # 0x2efe0
leaq -0x24(%rbp), %rsi
callq 0x4130
movq (%r15), %r12
movq 0x8(%r15), %r15
cmpq %r15, %r12
je 0xbb18
movq (%r12), %rdi
callq 0x6342
cmpl -0x24(%rbp), %eax
jne 0xbb12
movq (%r12), %rsi
movq %rbx, %rdi
callq 0x63b9
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
addq $0x10, %r12
jmp 0xbae8
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::listarTodosFuncaionarios()
void Petfera::listarTodosFuncaionarios()
{

	ofstream arqCache_funcio("cache_funcio.dat");
	cout << "Aqui estao todo os Funcionários do Petfera"
			 << "\n\n";

	if (funcionarioStore.size() == 0)
	{
		cout << "Não temos nenhum funcionario em nosso Banco de dados, por favor, cadastre um funcionario"
				 << "\n"
				 << "retornando"
				 << "\n";

		inicio();
	}
	for (auto &novo : this->funcionarioStore)
	{
		cout << (*novo) << endl;
		arqCache_funcio << (*novo) << endl;
	}
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x200, %rsp            # imm = 0x200
movq %rdi, %rbx
leaq 0x143e6(%rip), %rsi     # 0x1ff28
leaq -0x220(%rbp), %rdi
pushq $0x10
popq %rdx
callq 0x41d0
movq 0x23470(%rip), %rdi     # 0x2efc8
leaq 0x143da(%rip), %rsi     # 0x1ff39
callq 0x41a0
leaq 0x13ea5(%rip), %rsi     # 0x1fa10
movq %rax, %rdi
callq 0x41a0
movq 0x20(%rbx), %r15
movq 0x28(%rbx), %r12
cmpq %r15, %r12
jne 0xbbd0
movq 0x23441(%rip), %rdi     # 0x2efc8
leaq 0x143d7(%rip), %rsi     # 0x1ff65
callq 0x41a0
leaq 0x13e77(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
leaq 0x14416(%rip), %rsi     # 0x1ffbf
movq %rax, %rdi
callq 0x41a0
leaq 0x13e59(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xadc2
movq 0x20(%rbx), %r15
movq 0x28(%rbx), %r12
movq 0x233f1(%rip), %rbx     # 0x2efc8
leaq -0x220(%rbp), %r14
cmpq %r12, %r15
je 0xbc0f
movq (%r15), %rsi
movq %rbx, %rdi
callq 0x856e
movq %rax, %rdi
callq 0x40f0
movq (%r15), %rsi
movq %r14, %rdi
callq 0x856e
movq %rax, %rdi
callq 0x40f0
addq $0x10, %r15
jmp 0xbbde
leaq -0x220(%rbp), %rdi
callq 0x4250
addq $0x200, %rsp            # imm = 0x200
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xbc2d
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x4250
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::atualizar_dados_funcionario()
bool Petfera::atualizar_dados_funcionario()
{
	int id_funcionario;

	listarTodosFuncaionarios();

	cout << "ID do funcionario a ser atualizado: ";
	cin >> id_funcionario;

	for (auto &funcionario : this->funcionarioStore)
	{
		if (id_funcionario == funcionario->getId())
		{
			atualizar_funcionario(funcionario);
			break;
		}
		else
		{
			cout << "ID nao encontrado, retornando...";
		}
	}

	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r15
callq 0xbb26
movq 0x22e78(%rip), %rbx     # 0x2efc8
leaq 0x14b40(%rip), %rsi     # 0x20c97
movq %rbx, %rdi
callq 0x41a0
movq 0x22e7a(%rip), %rdi     # 0x2efe0
leaq -0x2c(%rbp), %rsi
callq 0x4130
movq 0x20(%r15), %r14
movq 0x28(%r15), %r12
leaq 0x14af8(%rip), %r15     # 0x20c76
cmpq %r12, %r14
je 0xc1c5
movl -0x2c(%rbp), %r13d
movq (%r14), %rdi
callq 0x84a8
cmpl %eax, %r13d
je 0xc1a5
movq %rbx, %rdi
movq %r15, %rsi
callq 0x41a0
addq $0x10, %r14
jmp 0xc17e
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4bd0
movq %rbx, %rsi
callq 0x12e3e
leaq -0x38(%rbp), %rdi
callq 0x4c0e
movb $0x1, %al
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x38(%rbp), %rdi
callq 0x4c0e
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::listarTodosAnimais()
void Petfera::listarTodosAnimais()
{

	ofstream arqCache_animais("cache_animais.dat");

	cout << "Aqui estao todo os animais na Petfera"
			 << "\n\n";

	if (animalStore.size() == 0)
	{
		cout << "Não temos nenhum animal em nosso Banco de dados, por favor, cadastre um animal"
				 << "\n"
				 << "retornando"
				 << "\n";

		inicio();
	}
	for (auto &novo : this->animalStore)
	{
		cout << (*novo) << endl;
		arqCache_animais << (*novo) << endl;
	}
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x200, %rsp            # imm = 0x200
movq %rdi, %rbx
leaq 0x13dc4(%rip), %rsi     # 0x1ffca
leaq -0x220(%rbp), %rdi
pushq $0x10
popq %rdx
callq 0x41d0
movq 0x22dac(%rip), %rdi     # 0x2efc8
leaq 0x13db9(%rip), %rsi     # 0x1ffdc
callq 0x41a0
leaq 0x137e1(%rip), %rsi     # 0x1fa10
movq %rax, %rdi
callq 0x41a0
movq (%rbx), %r15
movq 0x8(%rbx), %r12
cmpq %r15, %r12
jne 0xc292
movq 0x22d7e(%rip), %rdi     # 0x2efc8
leaq 0x13db1(%rip), %rsi     # 0x20002
callq 0x41a0
leaq 0x137b4(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
leaq 0x13d53(%rip), %rsi     # 0x1ffbf
movq %rax, %rdi
callq 0x41a0
leaq 0x13796(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xadc2
movq (%rbx), %r15
movq 0x8(%rbx), %r12
movq 0x22d2f(%rip), %rbx     # 0x2efc8
leaq -0x220(%rbp), %r14
cmpq %r12, %r15
je 0xc2d1
movq (%r15), %rsi
movq %rbx, %rdi
callq 0x63b9
movq %rax, %rdi
callq 0x40f0
movq (%r15), %rsi
movq %r14, %rdi
callq 0x63b9
movq %rax, %rdi
callq 0x40f0
addq $0x10, %r15
jmp 0xc2a0
leaq -0x220(%rbp), %rdi
callq 0x4250
addq $0x200, %rsp            # imm = 0x200
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xc2ef
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
callq 0x4250
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::pegarVeterinario()
std::shared_ptr<Funcionario> Petfera::pegarVeterinario()
{
	std::shared_ptr<Funcionario> novo;

	int id;
	cout << "O IBAMA nos obriga a escolher um veterinario para cuidar do animal"
			 << "\n";

	cout << "Para continuar o cadastro escolha pelo ID um dos tratadores que temos na loja"
			 << "\n";

	for (auto &funcionario : funcionarioStore)
	{
		if (funcionario->getClassicicacao() == Veterinario)
		{
			cout << *(funcionario) << "\n";
		}
	}

	cout << "Escolha um veterinario (Utilizando o ID por favor)"
			 << "\n";

	cin >> id;

	for (auto &funcionario : funcionarioStore)
	{
		if (funcionario->getId() == id)
		{
			novo = funcionario;
		}
	}
	return novo;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq 0x224c4(%rip), %rdi     # 0x2efc8
leaq 0x13228(%rip), %rsi     # 0x1fd33
callq 0x41a0
leaq 0x12efa(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x224a2(%rip), %rdi     # 0x2efc8
leaq 0x13249(%rip), %rsi     # 0x1fd76
callq 0x41a0
leaq 0x12ed8(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x20(%r14), %r13
movq %r14, -0x38(%rbp)
movq 0x28(%r14), %r14
movq 0x22474(%rip), %r15     # 0x2efc8
leaq 0x12eb6(%rip), %r12     # 0x1fa11
cmpq %r14, %r13
je 0xcb8a
movq (%r13), %rdi
callq 0x84ea
testl %eax, %eax
jne 0xcb84
movq (%r13), %rsi
movq %r15, %rdi
callq 0x856e
movq %rax, %rdi
movq %r12, %rsi
callq 0x41a0
addq $0x10, %r13
jmp 0xcb5b
movq 0x22437(%rip), %rdi     # 0x2efc8
leaq 0x1322c(%rip), %rsi     # 0x1fdc4
callq 0x41a0
movq -0x38(%rbp), %r14
leaq 0x12e69(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x22429(%rip), %rdi     # 0x2efe0
leaq -0x2c(%rbp), %rsi
callq 0x4130
movq 0x20(%r14), %r15
movq 0x28(%r14), %r14
cmpq %r14, %r15
je 0xcbeb
movq (%r15), %rdi
callq 0x84a8
cmpl -0x2c(%rbp), %eax
jne 0xcbe5
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6510
addq $0x10, %r15
jmp 0xcbc8
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xcc01
jmp 0xcc01
movq %rax, %r14
addq $0x8, %rbx
movq %rbx, %rdi
callq 0x4c0e
movq %r14, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::pegarTratador()
std::shared_ptr<Funcionario> Petfera::pegarTratador()
{
	std::shared_ptr<Funcionario> novo;

	int id;
	cout << "O IBAMA nos obriga a escolher um tratador para cuidar do animal"
			 << "\n";

	cout << "Para continuar o cadastro escolha pelo ID um dos tratadores que temos na loja"
			 << "\n";

	for (auto &funcionario : funcionarioStore)
	{
		if (funcionario->getClassicicacao() == Tratador)
		{
			cout << *(funcionario) << "\n";
		}
	}

	cout << "Escolha um tratador (Utilizando o ID por favor)"
			 << "\n";

	cin >> id;

	for (auto &funcionario : funcionarioStore)
	{
		if (funcionario->getId() == id)
		{
			novo = funcionario;
		}
	}
	return novo;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq 0x2238c(%rip), %rdi     # 0x2efc8
leaq 0x131b4(%rip), %rsi     # 0x1fdf7
callq 0x41a0
leaq 0x12dc2(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x2236a(%rip), %rdi     # 0x2efc8
leaq 0x13111(%rip), %rsi     # 0x1fd76
callq 0x41a0
leaq 0x12da0(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x20(%r14), %r13
movq %r14, -0x38(%rbp)
movq 0x28(%r14), %r14
movq 0x2233c(%rip), %r15     # 0x2efc8
leaq 0x12d7e(%rip), %r12     # 0x1fa11
cmpq %r14, %r13
je 0xccc3
movq (%r13), %rdi
callq 0x84ea
cmpl $0x1, %eax
jne 0xccbd
movq (%r13), %rsi
movq %r15, %rdi
callq 0x856e
movq %rax, %rdi
movq %r12, %rsi
callq 0x41a0
addq $0x10, %r13
jmp 0xcc93
movq 0x222fe(%rip), %rdi     # 0x2efc8
leaq 0x13166(%rip), %rsi     # 0x1fe37
callq 0x41a0
movq -0x38(%rbp), %r14
leaq 0x12d30(%rip), %rsi     # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq 0x222f0(%rip), %rdi     # 0x2efe0
leaq -0x2c(%rbp), %rsi
callq 0x4130
movq 0x20(%r14), %r15
movq 0x28(%r14), %r14
cmpq %r14, %r15
je 0xcd24
movq (%r15), %rdi
callq 0x84a8
cmpl -0x2c(%rbp), %eax
jne 0xcd1e
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6510
addq $0x10, %r15
jmp 0xcd01
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xcd3a
jmp 0xcd3a
movq %rax, %r14
addq $0x8, %rbx
movq %rbx, %rdi
callq 0x4c0e
movq %r14, %rdi
callq 0x42c0
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::leString(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string Petfera::leString(string str_prompt)
{
	string var;
	cout << str_prompt;
	cin >> var;
	// getline(cin, var);
	return var;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
leaq 0x10(%rdi), %rax
movq %rax, (%rdi)
andq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
movq 0x21cc9(%rip), %rdi     # 0x2efc8
movq %rdx, %rsi
callq 0x4190
movq 0x21cd2(%rip), %rdi     # 0x2efe0
movq %rbx, %rsi
callq 0x41f0
movq %rbx, %rax
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x40e0
movq %r14, %rdi
callq 0x42c0
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::leGenero(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
t_genero Petfera::leGenero(string str_prompt)
{
	string genero_string;
	t_genero genero;

	do
	{
		cout << str_prompt;
		cin >> genero_string;

		if (genero_string == "F" || genero_string == "f" || genero_string == "Femea")
		{
			genero = F;
			genero_string = "F";
			break;
		}
		else if (genero_string == "M" || genero_string == "m" || genero_string == "Macho")
		{
			genero = M;
			genero_string = "M";
			break;
		}

	} while (true);

	return genero;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rsi, %rbx
movb $0x0, (%rax)
movq 0x21c83(%rip), %r15     # 0x2efe0
leaq -0x48(%rbp), %r12
leaq 0x138c9(%rip), %r13     # 0x20c31
leaq 0x1404a(%rip), %r14     # 0x213b9
movq 0x21c52(%rip), %rdi     # 0x2efc8
movq %rbx, %rsi
callq 0x4190
movq %r15, %rdi
movq %r12, %rsi
callq 0x41f0
movq %r12, %rdi
movq %r13, %rsi
callq 0x132c9
testb %al, %al
jne 0xd40b
movq %r12, %rdi
movq %r14, %rsi
callq 0x132c9
testb %al, %al
jne 0xd40b
movq %r12, %rdi
leaq 0x11d3b(%rip), %rsi     # 0x1f0ec
callq 0x132c9
testb %al, %al
jne 0xd40b
movq %r12, %rdi
leaq 0x1386f(%rip), %rsi     # 0x20c33
callq 0x132c9
testb %al, %al
jne 0xd3f7
movq %r12, %rdi
leaq 0x1295a(%rip), %rsi     # 0x1fd31
callq 0x132c9
testb %al, %al
jne 0xd3f7
movq %r12, %rdi
leaq 0x11d08(%rip), %rsi     # 0x1f0f2
callq 0x132c9
testb %al, %al
je 0xd36f
leaq 0x13835(%rip), %rsi     # 0x20c33
leaq -0x48(%rbp), %rdi
callq 0x42f0
pushq $0xa
jmp 0xd41d
leaq 0x1381f(%rip), %rsi     # 0x20c31
leaq -0x48(%rbp), %rdi
callq 0x42f0
pushq $0xb
popq %rbx
leaq -0x48(%rbp), %rdi
callq 0x40e0
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xd43a
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x40e0
movq %rbx, %rdi
callq 0x42c0
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::leBool(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool Petfera::leBool(string str_prompt)
{
	string resposta;
	do
	{
		cout << str_prompt;
		cin >> resposta;
	} while ((resposta != "S" && resposta != "s" && resposta != "sim") && (resposta != "N" && resposta != "n" && resposta != "nao"));
	if (resposta == "S" || resposta == "s" || resposta == "sim")
	{
		return true;
	}
	else
	{
		return false;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rsi, %rbx
movb $0x0, (%rax)
movq 0x21b67(%rip), %r15     # 0x2efe0
leaq -0x48(%rbp), %r12
leaq 0x137b1(%rip), %r13     # 0x20c35
leaq 0x13dfa(%rip), %r14     # 0x21285
movq 0x21b36(%rip), %rdi     # 0x2efc8
movq %rbx, %rsi
callq 0x4190
movq %r15, %rdi
movq %r12, %rsi
callq 0x41f0
movq %r12, %rdi
movq %r13, %rsi
callq 0x13f87
testb %al, %al
je 0xd513
movq %r12, %rdi
movq %r14, %rsi
callq 0x13f87
testb %al, %al
je 0xd513
movq %r12, %rdi
leaq 0x11c79(%rip), %rsi     # 0x1f146
callq 0x13f87
testb %al, %al
je 0xd513
movq %r12, %rdi
leaq 0x13757(%rip), %rsi     # 0x20c37
callq 0x13f87
testb %al, %al
je 0xd513
movq %r12, %rdi
leaq 0x13746(%rip), %rsi     # 0x20c39
callq 0x13f87
testb %al, %al
je 0xd513
movq %r12, %rdi
leaq 0x11c44(%rip), %rsi     # 0x1f14a
callq 0x13f87
testb %al, %al
jne 0xd48b
leaq 0x1371b(%rip), %rsi     # 0x20c35
leaq -0x48(%rbp), %rdi
callq 0x132c9
movb $0x1, %bl
testb %al, %al
jne 0xd54f
leaq 0x13d55(%rip), %rsi     # 0x21285
leaq -0x48(%rbp), %rdi
callq 0x132c9
testb %al, %al
jne 0xd54f
leaq 0x11c02(%rip), %rsi     # 0x1f146
leaq -0x48(%rbp), %rdi
callq 0x132c9
movl %eax, %ebx
leaq -0x48(%rbp), %rdi
callq 0x40e0
movl %ebx, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x48(%rbp), %rdi
callq 0x40e0
movq %rbx, %rdi
callq 0x42c0
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::cadastrarMamifero()
void Petfera::cadastrarMamifero()
{
	short escolhaSilvestre;

	cout << "Opcao Escolhida: Mamifero" << endl;
	cout << "Escolha abaixo o tipo de Mamifero para cadastro: " << endl;
	cout << " 1 - Cadastrar Mamifero Domestico" << endl;
	cout << " 2 - Cadastrar Mamifero Exotico" << endl;
	cout << " 3 - Cadastrar Mamifero Nativo" << endl;
	cout << " 4 - voltar para cadastro de animal" << endl;

	cin >> escolhaSilvestre;

	switch (escolhaSilvestre)
	{
	case 1:
		cout << "Salvando Mamifero Domestico"
				 << "\n";
		cadastrarMamiferoDomestico();
		break;
	case 2:
		cout << "Salvando Mamifero Exotico"
				 << "\n";
		cadastrarMamiferoExotico();
		break;
	case 3:
		cout << "Salvando Mamifero Nativo"
				 << "\n";
		cadastrarMamiferoNativo();
		break;

	case 4:

		cadastrarAnimal();

		break;

	default:

		cout << "\033[1;33m"
				 << "Nao temos essa Opcao, Escolha de 1-4"
				 << "\033[0m"
				 << "\n";
		cadastrarMamifero();

		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq 0x1d525(%rip), %r14     # 0x2efc8
leaq 0xed5b(%rip), %rsi      # 0x20805
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xed5e(%rip), %rsi      # 0x2081f
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xed79(%rip), %rsi      # 0x20851
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xed84(%rip), %rsi      # 0x20873
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xed8d(%rip), %rsi      # 0x20893
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xeb6a(%rip), %rsi      # 0x20687
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x1d4ac(%rip), %rdi     # 0x2efe0
leaq -0x12(%rbp), %r14
movq %r14, %rsi
callq 0x4040
movzwl (%r14), %eax
decl %eax
cmpl $0x3, %eax
ja 0x11bf0
leaq 0xdce6(%rip), %rcx      # 0x1f83c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x1d462(%rip), %rdi     # 0x2efc8
leaq 0xed45(%rip), %rsi      # 0x208b2
callq 0x41a0
leaq 0xde98(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0x10426
jmp 0x11c38
movq 0x1d433(%rip), %rdi     # 0x2efc8
leaq 0xed4c(%rip), %rsi      # 0x208e8
callq 0x41a0
leaq 0xde69(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0x111c6
jmp 0x11c38
movq %rbx, %rdi
callq 0xb296
jmp 0x11c38
movq 0x1d3fd(%rip), %rdi     # 0x2efc8
leaq 0xecfc(%rip), %rsi      # 0x208ce
callq 0x41a0
leaq 0xde33(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0x10ab8
jmp 0x11c38
movq 0x1d3d1(%rip), %rdi     # 0x2efc8
leaq 0xe102(%rip), %rsi      # 0x1fd00
callq 0x41a0
leaq 0xeaf6(%rip), %rsi      # 0x20700
movq %rax, %rdi
callq 0x41a0
leaq 0xe115(%rip), %rsi      # 0x1fd2e
movq %rax, %rdi
callq 0x41a0
leaq 0xdde9(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0x11a8e
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::cadastrarReptil()
void Petfera::cadastrarReptil()
{
	short escolhaSilvestre;

	cout << "Opcaoo Escolhida: Reptil" << endl;
	cout << "Escolha abaixo o tipo de Reptil para cadastro: " << endl;
	cout << " 1 - Cadastrar Reptil Domestico" << endl;
	cout << " 2 - Cadastrar Reptil Exotico" << endl;
	cout << " 3 - Cadastrar Reptil Nativo" << endl;
	cout << " 4 - voltar para cadastro de animal" << endl;

	cin >> escolhaSilvestre;

	switch (escolhaSilvestre)
	{
	case 1:
		cout << "Salvando Reptil Domestico"
				 << "\n";
		cadastrarReptilDomestico();
		break;
	case 2:
		cout << "Salvando Reptil Exotico"
				 << "\n";
		cadastrarReptilExotico();
		break;
	case 3:
		cout << "Salvando Reptil Nativo"
				 << "\n";
		cadastrarReptilNativo();
		break;
	case 4:

		cadastrarAnimal();

		break;

	default:

		cout << "\033[1;33m"
				 << "Nao temos essa Opcao, Escolha de 1-4"
				 << "\033[0m"
				 << "\n";
		cadastrarReptil();

		break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rdi, %rbx
movq 0x1d135(%rip), %r14     # 0x2efc8
leaq 0xea67(%rip), %rsi      # 0x20901
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xea69(%rip), %rsi      # 0x2091a
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xea82(%rip), %rsi      # 0x2094a
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xea8b(%rip), %rsi      # 0x2096a
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xea92(%rip), %rsi      # 0x20988
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
leaq 0xe77a(%rip), %rsi      # 0x20687
movq %r14, %rdi
callq 0x41a0
movq %rax, %rdi
callq 0x40f0
movq 0x1d0bc(%rip), %rdi     # 0x2efe0
leaq -0x12(%rbp), %r14
movq %r14, %rsi
callq 0x4040
movzwl (%r14), %eax
decl %eax
cmpl $0x3, %eax
ja 0x11fe0
leaq 0xd916(%rip), %rcx      # 0x1f85c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x1d072(%rip), %rdi     # 0x2efc8
leaq 0xea48(%rip), %rsi      # 0x209a5
callq 0x41a0
leaq 0xdaa8(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xf32e
jmp 0x12028
movq 0x1d043(%rip), %rdi     # 0x2efc8
leaq 0xea4b(%rip), %rsi      # 0x209d7
callq 0x41a0
leaq 0xda79(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xfe86
jmp 0x12028
movq %rbx, %rdi
callq 0xb296
jmp 0x12028
movq 0x1d00d(%rip), %rdi     # 0x2efc8
leaq 0xe9fd(%rip), %rsi      # 0x209bf
callq 0x41a0
leaq 0xda43(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0xf86c
jmp 0x12028
movq 0x1cfe1(%rip), %rdi     # 0x2efc8
leaq 0xdd12(%rip), %rsi      # 0x1fd00
callq 0x41a0
leaq 0xe706(%rip), %rsi      # 0x20700
movq %rax, %rdi
callq 0x41a0
leaq 0xdd25(%rip), %rsi      # 0x1fd2e
movq %rax, %rdi
callq 0x41a0
leaq 0xd9f9(%rip), %rsi      # 0x1fa11
movq %rax, %rdi
callq 0x41a0
movq %rbx, %rdi
callq 0x11e7e
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/viniciu21[P]PetLolja/./src/PetFera.cpp
// Function: Petfera::leNivelDeSeguranca()
nivelDeSeguranca Petfera::leNivelDeSeguranca()
{
	nivelDeSeguranca nivel;
	short escolha;
	cout << "Escolha o nivel de segurança para seu tratador"
			 << "\n";

	cout << "5 --> Nivel verde"
			 << "\n";
	cout << "6 --> Nivel azul"
			 << "\n";
	cout << "7 --> Nivel vermelho"
			 << "\n";

	cin >> escolha;
	if (escolha == 5)
		nivel = Verde;
	if (escolha == 6)
		nivel = Azul;
	if (escolha == 7)
		nivel = Vermelho;

	return nivel;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq 0x1caa6(%rip), %rbx     # 0x2efc8
leaq 0xe68b(%rip), %rsi      # 0x20bb4
movq %rbx, %rdi
callq 0x41a0
leaq 0xd4d9(%rip), %r14      # 0x1fa11
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0xe69a(%rip), %rsi      # 0x20be4
movq %rbx, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0xe692(%rip), %rsi      # 0x20bf6
movq %rbx, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
leaq 0xe689(%rip), %rsi      # 0x20c07
movq %rbx, %rdi
callq 0x41a0
movq %rax, %rdi
movq %r14, %rsi
callq 0x41a0
movq 0x1ca48(%rip), %rdi     # 0x2efe0
leaq -0x12(%rbp), %rbx
movq %rbx, %rsi
callq 0x4040
movzwl (%rbx), %eax
xorl %ecx, %ecx
cmpw $0x6, %ax
sete %cl
addl $0x5, %ecx
cmpw $0x7, %ax
pushq $0x7
popq %rax
cmovnel %ecx, %eax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/shancheng[P]shancheng/src/sudoku.cpp
// Function: (anonymous namespace)::Cell::SetFlag(unsigned int)
void SetFlag(uint32_t value) {
    uint32_t bitval = 0x01 << value; 
    *rowflag |= bitval;
    *colflag |= bitval;
    *blockflag |= bitval;
  }

// Assembly:
movl %esi, %ecx
pushq $0x1
popq %rax
shll %cl, %eax
movq 0x10(%rdi), %rcx
orl %eax, (%rcx)
movq 0x18(%rdi), %rcx
orl %eax, (%rcx)
movq 0x20(%rdi), %rcx
orl %eax, (%rcx)
retq
// File: /workspace/github_cpp_makefile_star2_O2/shancheng[P]shancheng/src/sudoku.cpp
// Function: (anonymous namespace)::Sudoku::Print(std::ostream&)
void Print(ostream& os) {
    for (uint32_t row = 0; row < options.opt_size; ++row) {
      for (uint32_t col = 0; col < options.opt_size; ++col) {
        os << setw(2) << cells_[row][col].value << " ";
      }
      os << "\n";
    }
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
addq $0x8, %rbx
xorl %r13d, %r13d
movq 0xaece(%rip), %r14      # 0x10fb8
leaq 0x4fc9(%rip), %r15      # 0xb0ba
movl 0xb1d1(%rip), %eax      # 0x112c8
cmpq %rax, %r13
jae 0x6159
movq %rbx, %rbp
xorl %r12d, %r12d
movl %eax, %eax
cmpq %rax, %r12
jae 0x613e
movq (%r14), %rax
movq -0x18(%rax), %rax
movq $0x2, 0x10(%r14,%rax)
movl (%rbp), %esi
movq %r14, %rdi
callq 0x5180
movq %rax, %rdi
movq %r15, %rsi
callq 0x5230
incq %r12
movl 0xb190(%rip), %eax      # 0x112c8
addq $0x48, %rbp
jmp 0x6102
movq %r14, %rdi
leaq 0x4f24(%rip), %rsi      # 0xb06c
callq 0x5230
incq %r13
addq $0x708, %rbx            # imm = 0x708
jmp 0x60f1
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O2/shancheng[P]shancheng/src/sudoku.cpp
// Function: (anonymous namespace)::operator<<(std::ostream&, (anonymous namespace)::Cell const&)
ostream& operator<<(ostream& os, const Cell& cell) {
  os << '(' << (cell.row + 1) << ',' << (cell.col + 1) << ',' << cell.value << ',';
  for (auto it = cell.candidates.begin(); it != cell.candidates.end(); ++it) {
    os << *it << " ";
  }
  os << ')' << "\n";
  return os;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq 0xae3e(%rip), %r14      # 0x10fb8
pushq $0x28
popq %rsi
movq %r14, %rdi
callq 0x52a0
movl (%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x5180
pushq $0x2c
popq %rbp
movq %rax, %rdi
movl %ebp, %esi
callq 0x52a0
movl 0x4(%rbx), %esi
incl %esi
movq %rax, %rdi
callq 0x5180
movq %rax, %rdi
movl %ebp, %esi
callq 0x52a0
movl 0x8(%rbx), %esi
movq %rax, %rdi
callq 0x5180
movq %rax, %rdi
movl %ebp, %esi
callq 0x52a0
movq 0x28(%rbx), %r12
leaq 0x4ee5(%rip), %r15      # 0xb0ba
cmpq 0x30(%rbx), %r12
je 0x61f8
movl (%r12), %esi
movq %r14, %rdi
callq 0x5410
movq %rax, %rdi
movq %r15, %rsi
callq 0x5230
addq $0x4, %r12
jmp 0x61d5
movq 0xadb9(%rip), %rdi      # 0x10fb8
pushq $0x29
popq %rsi
callq 0x52a0
leaq 0x4e5e(%rip), %rsi      # 0xb06c
movq %rax, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x5230
// File: /workspace/github_cpp_makefile_star2_O2/shancheng[P]shancheng/src/sudoku.cpp
// Function: (anonymous namespace)::Sudoku::Solve(unsigned long)
bool Solve(size_t index) {
    if (found_) {
      return true;
    }
    if (index == vec_.size()) {
      cout << "\nSolution:\n";
      cout << "-----------------------------------------------------------\n";
      Print(cout);
      return true;
    }
    Cell& cell = *vec_[index];
    auto endit = cell.candidates.end();
    for (auto it = cell.candidates.begin(); it != endit; ++it) {
      if (IsOk(cell, *it)) {
        cell.value = *it;
        cell.SetFlag(*it);
        if (Solve(index + 1)) {
          return true;
        }
        cell.ClearFlag(*it);
      }
    }
    return false;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movb $0x1, %bpl
cmpb $0x0, 0xb110(%rdi)
jne 0x6518
movq %rsi, %r14
movq %rdi, %rbx
movq 0xb0f8(%rdi), %rax
movq 0xb100(%rdi), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %rsi, %rcx
jne 0x6529
movq 0xaac6(%rip), %r14      # 0x10fb8
leaq 0x4c28(%rip), %rsi      # 0xb121
movq %r14, %rdi
callq 0x5230
leaq 0x4b6a(%rip), %rsi      # 0xb072
movq %r14, %rdi
callq 0x5230
movq %rbx, %rdi
callq 0x60ce
movl %ebp, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rax,%r14,8), %r15
movq 0x28(%r15), %r12
movq 0x30(%r15), %r13
incq %r14
cmpq %r13, %r12
setne %bpl
je 0x6518
movl (%r12), %eax
movq 0x10(%r15), %rcx
movq 0x18(%r15), %rdx
movl (%rdx), %edx
orl (%rcx), %edx
movq 0x20(%r15), %rcx
orl (%rcx), %edx
btl %eax, %edx
jb 0x6596
movl %eax, 0x8(%r15)
movl (%r12), %esi
movq %r15, %rdi
callq 0x60b4
movq %rbx, %rdi
movq %r14, %rsi
callq 0x64b4
testb %al, %al
jne 0x6518
movb (%r12), %cl
pushq $-0x2
popq %rax
roll %cl, %eax
movq 0x10(%r15), %rcx
andl %eax, (%rcx)
movq 0x18(%r15), %rcx
andl %eax, (%rcx)
movq 0x20(%r15), %rcx
andl %eax, (%rcx)
addq $0x4, %r12
jmp 0x6538
// File: /workspace/github_cpp_makefile_star2_O2/t0mm4rx[P]piscine_cpp/day03/ex02/ClapTrap.cpp
// Function: ClapTrap::ClapTrap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
ClapTrap::ClapTrap(std::string name)
{
	this->hitPoints = 100;
	this->maxHit = 100;
	this->energyPoints = 100;
	this->maxEnergyPoints = 100;
	this->meleeAttackDamage = 30;
	this->rangedAttackDamage = 20;
	this->armorDamageReduction = 5;
	this->level = 1.0;
	std::cout << "ClapTrap " << name << " spawned." << std::endl;
	this->name = name;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
leaq 0x398b(%rip), %rax      # 0x5cf8
movq %rax, (%rdi)
leaq 0x30(%rdi), %rax
movq %rax, 0x20(%rdi)
andq $0x0, 0x28(%rdi)
leaq 0x20(%rdi), %rbx
movb $0x0, 0x30(%rdi)
movaps 0x1c84(%rip), %xmm0     # 0x4010
movups %xmm0, 0x8(%rdi)
movabsq $0x140000001e, %rax     # imm = 0x140000001E
movq %rax, 0x40(%rdi)
movl $0x5, 0x48(%rdi)
movl $0x3f800000, 0x18(%rdi) # imm = 0x3F800000
movq 0x3c25(%rip), %rdi      # 0x5fd8
leaq 0x1c66(%rip), %rsi      # 0x4020
callq 0x2110
movq %rax, %rdi
movq %r14, %rsi
callq 0x20e0
leaq 0x1c59(%rip), %rsi      # 0x402a
movq %rax, %rdi
callq 0x2110
movq %rax, %rdi
callq 0x2080
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2090
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2070
movq %r14, %rdi
callq 0x2160
// File: /workspace/github_cpp_makefile_star2_O2/t0mm4rx[P]piscine_cpp/day03/ex02/FragTrap.cpp
// Function: FragTrap::FragTrap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
FragTrap::FragTrap(std::string name) : ClapTrap(name)
{
	this->energyPoints = 100;
	this->maxEnergyPoints = 100;
	this->meleeAttackDamage = 30;
	this->rangedAttackDamage = 20;
	this->armorDamageReduction = 5;
	this->level = 1.0;
	std::cout << this->name << ": Hi ! I'm ready !" << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq -0x30(%rbp), %r14
movq %r14, %rdi
callq 0x2130
movq %rbx, %rdi
movq %r14, %rsi
callq 0x235c
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x35e7(%rip), %rax      # 0x5d38
movq %rax, (%rbx)
movabsq $0x6400000064, %rax     # imm = 0x6400000064
movq %rax, 0x10(%rbx)
movabsq $0x140000001e, %rax     # imm = 0x140000001E
movq %rax, 0x40(%rbx)
movl $0x5, 0x48(%rbx)
movl $0x3f800000, 0x18(%rbx) # imm = 0x3F800000
leaq 0x20(%rbx), %rsi
movq 0x384f(%rip), %rdi      # 0x5fd8
callq 0x20e0
leaq 0x1935(%rip), %rsi      # 0x40ca
movq %rax, %rdi
callq 0x2110
movq %rax, %rdi
callq 0x2080
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0x30(%rbp), %rdi
callq 0x2070
jmp 0x27c7
movq %rax, %r14
movq %rbx, %rdi
callq 0x24ec
movq %r14, %rdi
callq 0x2160
nop
// File: /workspace/github_cpp_makefile_star2_O2/t0mm4rx[P]piscine_cpp/day03/ex02/ScavTrap.cpp
// Function: ScavTrap::ScavTrap(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
ScavTrap::ScavTrap(std::string name) : ClapTrap(name)
{
	this->energyPoints = 50;
	this->maxEnergyPoints = 50;
	this->meleeAttackDamage = 20;
	this->rangedAttackDamage = 15;
	this->armorDamageReduction = 3;
	this->level = 1.0;
	std::cout << this->name << ": Hey ! At your service." << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
leaq -0x30(%rbp), %r14
movq %r14, %rdi
callq 0x2130
movq %rbx, %rdi
movq %r14, %rsi
callq 0x235c
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x32ab(%rip), %rax      # 0x5d80
movq %rax, (%rbx)
movabsq $0x3200000032, %rax     # imm = 0x3200000032
movq %rax, 0x10(%rbx)
movabsq $0xf00000014, %rax      # imm = 0xF00000014
movq %rax, 0x40(%rbx)
movl $0x3, 0x48(%rbx)
movl $0x3f800000, 0x18(%rbx) # imm = 0x3F800000
leaq 0x20(%rbx), %rsi
movq 0x34cb(%rip), %rdi      # 0x5fd8
callq 0x20e0
leaq 0x16bb(%rip), %rsi      # 0x41d4
movq %rax, %rdi
callq 0x2110
movq %rax, %rdi
callq 0x2080
addq $0x20, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0x30(%rbp), %rdi
callq 0x2070
jmp 0x2b4b
movq %rax, %r14
movq %rbx, %rdi
callq 0x24ec
movq %r14, %rdi
callq 0x2160
nop
// File: /workspace/github_cpp_makefile_star2_O2/t0mm4rx[P]piscine_cpp/day03/ex02/main.cpp
// Function: main
int main(void)
{
	srand(time(0));
	ScavTrap rose("Rose");
	FragTrap john("John");
	FragTrap john2 = john;
	ScavTrap rose2(rose);

	rose.challengeNewcomer();
	rose2.meleeAttack("Micheal");
	rose.rangedAttack("John");
	john.meleeAttack("Rose");
	john2.rangedAttack("Micheal");
	john.vaulthunter_dot_exe("Rose");

	return (0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
xorl %edi, %edi
callq 0x20f0
movl %eax, %edi
callq 0x2100
leaq 0x14ef(%rip), %rsi      # 0x42e0
leaq -0x70(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x3024
leaq -0x110(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x2aa0
leaq -0x70(%rbp), %rdi
callq 0x2070
leaq 0x14c4(%rip), %rsi      # 0x42e5
leaq -0x50(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0x3024
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x271c
leaq -0x50(%rbp), %rdi
callq 0x2070
leaq -0x160(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x27d0
leaq -0x1b0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x2b54
leaq -0x110(%rbp), %rdi
callq 0x2c56
leaq 0x1467(%rip), %rsi      # 0x42ea
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x3024
leaq -0x1b0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2d62
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x1435(%rip), %rsi      # 0x42e5
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x3024
leaq -0x110(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2cf6
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x1403(%rip), %rsi      # 0x42e0
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x3024
leaq -0xc0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x2a32
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x13e0(%rip), %rsi      # 0x42ea
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x3024
leaq -0x160(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x29c6
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq 0x13a9(%rip), %rsi      # 0x42e0
leaq -0x30(%rbp), %rdi
leaq -0x9(%rbp), %rdx
callq 0x3024
leaq -0xc0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x28d2
leaq -0x30(%rbp), %rdi
callq 0x2070
leaq -0x1b0(%rbp), %rdi
callq 0x2be6
leaq -0x160(%rbp), %rdi
callq 0x2862
leaq -0xc0(%rbp), %rdi
callq 0x2862
leaq -0x110(%rbp), %rdi
callq 0x2be6
xorl %eax, %eax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %rbp
retq
jmp 0x2fa9
jmp 0x2fb9
jmp 0x2fa9
jmp 0x2fb9
jmp 0x2fa9
jmp 0x2fb9
jmp 0x2fa9
jmp 0x2fb9
movq %rax, %rbx
leaq -0x30(%rbp), %rdi
callq 0x2070
jmp 0x2fbc
jmp 0x2fb9
movq %rax, %rbx
leaq -0x1b0(%rbp), %rdi
callq 0x2be6
leaq -0x160(%rbp), %rdi
callq 0x2862
leaq -0xc0(%rbp), %rdi
callq 0x2862
leaq -0x110(%rbp), %rdi
callq 0x2be6
movq %rbx, %rdi
callq 0x2160
movq %rax, %rbx
jmp 0x2fc8
movq %rax, %rbx
jmp 0x2fd4
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x2070
jmp 0x2fe0
movq %rax, %rbx
jmp 0x2fe0
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x2070
jmp 0x2fec
movq %rax, %rbx
jmp 0x2fec
// File: /workspace/github_cpp_makefile_star2_O2/PrarabdhJoshi[P]DatabaseImplementation/Record.cc
// Function: Record::CopyBits(char*, int)
void Record :: CopyBits(char *bits, int b_len) {

	delete [] this->bits;

	this->bits = new (std::nothrow) char[b_len];
	if (this->bits == NULL)
	{
		cout << "ERROR : Not enough memory. EXIT !!!\n";
		exit(1);
	}

	memcpy (this->bits, bits, b_len);
	
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rdi), %rdi
testq %rdi, %rdi
je 0x2814
callq 0x21e0
movslq %ebp, %r15
movq 0x8782(%rip), %rsi      # 0xafa0
movq %r15, %rdi
callq 0x22a0
movq %rax, (%r14)
testq %rax, %rax
je 0x2846
movq %rax, %rdi
movq %rbx, %rsi
movq %r15, %rdx
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x2110
movq 0x8773(%rip), %rdi      # 0xafc0
leaq 0x47b0(%rip), %rsi      # 0x7004
callq 0x2140
pushq $0x1
popq %rdi
callq 0x21c0
nop
// File: /workspace/github_cpp_makefile_star2_O2/PrarabdhJoshi[P]DatabaseImplementation/Record.cc
// Function: Record::Copy(Record*)
void Record :: Copy (Record *copyMe) {
	// this is a deep copy, so allocate the bits and move them over!
	delete [] bits;
	bits = new (std::nothrow) char[((int *) copyMe->bits)[0]];
	if (bits == NULL)
	{
		cout << "ERROR : Not enough memory. EXIT !!!\n";
		exit(1);
	}

	memcpy (bits, copyMe->bits, ((int *) copyMe->bits)[0]);

}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
movq (%rdi), %rdi
testq %rdi, %rdi
je 0x28a3
callq 0x21e0
movq (%rbx), %rax
movslq (%rax), %rdi
movq 0x86f0(%rip), %rsi      # 0xafa0
callq 0x22a0
movq %rax, (%r14)
testq %rax, %rax
je 0x28d2
movq (%rbx), %rsi
movslq (%rsi), %rdx
movq %rax, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x2110
movq 0x86e7(%rip), %rdi      # 0xafc0
leaq 0x4724(%rip), %rsi      # 0x7004
callq 0x2140
pushq $0x1
popq %rdi
callq 0x21c0
nop