static int getFunctionDiffs(Function func1, Function func2) {
		int diffs = 0;
		if (func1 == null && func2 == null) {
			return 0;
		}
		if (func1 == null || func2 == null) {
			return FUNC_DETAIL_MASK;
		}
		StackFrame stack1 = func1.getStackFrame();
		StackFrame stack2 = func2.getStackFrame();

		if (!SystemUtilities.isEqual(func1.getName(), func2.getName())) {
			diffs |= FUNC_NAME;
		}
//		if (!SystemUtilities.isEqual(func1.getReturnType(), func2.getReturnType())) {
//			diffs |= FUNC_RETURN_TYPE;
//		}
		if (stack1.getReturnAddressOffset() != stack2.getReturnAddressOffset()) {
			diffs |= FUNC_RETURN_ADDRESS_OFFSET;
		}
// For now, we are not allowing you to set the parameter offset or local size outright.
//		if (stack1.getParameterOffset() != stack2.getParameterOffset()) {
//			diffs |= FUNC_PARAMETER_OFFSET;
//		}
//		if (stack1.getLocalSize() != stack2.getLocalSize()) {
//			diffs |= FUNC_LOCAL_SIZE;
//		}
		if (func1.getStackPurgeSize() != func2.getStackPurgeSize()) {
			diffs |= FUNC_STACK_PURGE_SIZE;
		}
		if (func1.isInline() != func2.isInline()) {
			diffs |= FUNC_INLINE;
		}
		if (func1.hasNoReturn() != func2.hasNoReturn()) {
			diffs |= FUNC_NO_RETURN;
		}
		if (!func1.getCallingConventionName().equals(func2.getCallingConventionName())) {
			diffs |= FUNC_CALLING_CONVENTION;
		}
		if (func1.getSignatureSource() != func2.getSignatureSource()) {
			diffs |= FUNC_SIGNATURE_SOURCE;
		}
		return diffs;
	}
Compares the two functions and determines where the function information 
differs (name, return type, return address offset, parameter offset, 
local size, stack purge size). Sets bits within the int value indicating 
which info differs between the two functions.
@param func1 the first function
@param func2 the second function
@return an int with bits set indicating where the two functions differ.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/AbstractFunctionMerger.java