// File: /workspace/github_cpp_makefile_star2_O2/nataly-enne[P]pet-fera/pet_fera_remover.cpp
// Function: remover(std::map<int, VETERINARIO, std::less<int>, std::allocator<std::pair<int const, VETERINARIO>>>&)
void remover(map <int, VETERINARIO> &vets){
	char  c, sucesso = 'n';
	string id_buscado_string, op;
	int id_buscado, verificacao, cont = 0;
	ofstream veterinario;

	do{
		do{
			cout << "Insira o ID buscado: " << endl;
			if(!cont){
				cin.ignore();
				cont++;
			}
			getline(cin, id_buscado_string);
			for(int i=0; i<(int)id_buscado_string.size(); i++){
				c = id_buscado_string[i];
				verificacao = isdigit(c);
			}
			if(!verificacao){
				cout << "ERRO: apenas numeros inteiros positivos são permitidos!"<< endl << endl;
				sucesso = 'n';
			}else{
				stringstream ss(id_buscado_string);
		 		ss >> id_buscado;
				sucesso = 's';
			}
		}while(sucesso == 'n');

		auto result = vets.find(id_buscado);
					
		if(result != vets.end()){
			cout << "ID existe!" << endl;
			vets.erase(result);

			/* A condição do map não ser vazio para escrever no arquivo foi removido, para que mesmo quando o map estiver vazio escreva no arquivo
			senão, quando o arquivo só tiver uma linha e o usuário for apagar essa linha, mesmo assim o arquivo permacerá com essa linha. */
			veterinario.open("veterinarios.txt");
			for(auto it = vets.begin(); it != vets.end(); it++){
				veterinario << (*it).second;
			}
			veterinario.close();
					
		}
		else{
			cout << "Funcionario não cadastrado!" << endl;
		}
		cout << "Deseja remover outro? s/n" << endl;
		getline(cin, op);
	}while(op == "s");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3d8, %rsp            # imm = 0x3D8
movq %rdi, %rbx
leaq -0x48(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq -0x68(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq -0x278(%rbp), %rdi
callq 0x3350
movq %rbx, -0x30(%rbp)
leaq 0x8(%rbx), %r12
movb $0x1, %r15b
leaq -0x278(%rbp), %r13
movq 0x116b6(%rip), %rdi     # 0x30fc8
leaq 0x490e(%rip), %rsi      # 0x24227
callq 0x31f0
movq %rax, %rdi
callq 0x3110
testb $0x1, %r15b
je 0x1f938
movq 0x116ad(%rip), %rdi     # 0x30fe0
callq 0x3380
movq 0x116a1(%rip), %rdi     # 0x30fe0
leaq -0x58(%rbp), %rsi
callq 0x3060
movl -0x50(%rbp), %eax
movq -0x58(%rbp), %rcx
testl %eax, %eax
movl $0x0, %edx
cmovlel %edx, %eax
xorl %edx, %edx
leaq -0x400(%rbp), %r15
cmpq %rdx, %rax
je 0x1f97d
movsbl (%rcx,%rdx), %esi
addl $-0x30, %esi
xorl %r14d, %r14d
cmpl $0xa, %esi
setb %r14b
incq %rdx
jmp 0x1f962
testl %r14d, %r14d
je 0x1fa2d
movq %r15, %rdi
leaq -0x58(%rbp), %rsi
pushq $0x18
popq %rdx
callq 0x3300
movq %r15, %rdi
leaq -0x34(%rbp), %rbx
movq %rbx, %rsi
callq 0x3150
movq %r15, %rdi
callq 0x3170
movq -0x30(%rbp), %rdi
movq %rbx, %rsi
callq 0x1e650
movq %rax, %r15
cmpq %r12, %rax
je 0x1fa5b
movq 0x115fd(%rip), %rdi     # 0x30fc8
leaq 0x486b(%rip), %rsi      # 0x2423d
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x200bc
movq %r13, %rdi
leaq 0x3f5b(%rip), %rsi      # 0x23950
pushq $0x10
popq %rdx
callq 0x3040
movq -0x30(%rbp), %rax
movq 0x18(%rax), %r15
cmpq %r12, %r15
je 0x1fa23
leaq 0x28(%r15), %rsi
movq %r13, %rdi
callq 0xad8a
movq %r15, %rdi
callq 0x3160
movq %rax, %r15
jmp 0x1fa05
movq %r13, %rdi
callq 0x32a0
jmp 0x1fa76
movq 0x11594(%rip), %rdi     # 0x30fc8
leaq 0x49ce(%rip), %rsi      # 0x24409
callq 0x31f0
movq %rax, %rdi
callq 0x3110
xorl %r15d, %r15d
movq %rax, %rdi
callq 0x3110
xorl %r14d, %r14d
jmp 0x1f90b
movq 0x11566(%rip), %rdi     # 0x30fc8
leaq 0x4a4c(%rip), %rsi      # 0x244b5
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq 0x1154b(%rip), %rdi     # 0x30fc8
leaq 0x49d6(%rip), %rsi      # 0x2445a
callq 0x31f0
movq %rax, %rdi
callq 0x3110
movq 0x11548(%rip), %rdi     # 0x30fe0
leaq -0x78(%rbp), %rsi
callq 0x3060
leaq -0x78(%rbp), %rdi
leaq 0x3b05(%rip), %rsi      # 0x235b1
callq 0xb878
xorl %r15d, %r15d
testb %al, %al
jne 0x1f90b
leaq -0x278(%rbp), %rdi
callq 0x32e0
leaq -0x78(%rbp), %rdi
callq 0x3100
leaq -0x58(%rbp), %rdi
callq 0x3100
addq $0x3d8, %rsp            # imm = 0x3D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1fb17
jmp 0x1fb08
movq %rax, %rbx
leaq -0x400(%rbp), %rdi
callq 0x3170
jmp 0x1fb0b
jmp 0x1fb08
jmp 0x1fb08
movq %rax, %rbx
leaq -0x278(%rbp), %rdi
callq 0x32e0
leaq -0x78(%rbp), %rdi
callq 0x3100
leaq -0x58(%rbp), %rdi
callq 0x3100
movq %rbx, %rdi
callq 0x3370