private synchronized void writeToManager(Function func, int[] hash, List<CallRecord> callrecs,
			int flags) {
		FunctionDescription fdesc = manager.newFunctionDescription(func.getName(true),
			func.getEntryPoint().getOffset(), exerec);
		manager.setFunctionDescriptionFlags(fdesc, flags);
		if (hash != null) {
			LSHVector vec = vectorFactory.buildVector(hash);
			SignatureRecord sigrec = manager.newSignature(vec, 0);
			manager.attachSignature(fdesc, sigrec);
		}
		for (CallRecord callRecord : callrecs) {
			FunctionDescription destfunc = manager.newFunctionDescription(callRecord.funcname,
				callRecord.address, callRecord.exerec);
			manager.makeCallgraphLink(fdesc, destfunc, 0);
		}
	}
Return true if the address corresponds to a normal function body
@param addr is the entry point of the function
@return true if it has a body
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/GenSignatures.java