public static String generateMangledSignature(FunctionDefinitionDataType functionDefinition) {

		DataType returnType = functionDefinition.getReturnType();
		ParameterDefinition[] parameters = functionDefinition.getArguments();

		StringBuilder sb = new StringBuilder(ANONYMOUS_FUNCTION_DEF_PREFIX);

		if (functionDefinition.hasNoReturn()) {
			sb.append("_").append(FunctionSignature.NORETURN_DISPLAY_STRING);
		}

		String convention = functionDefinition.getCallingConventionName();
		if (!Function.UNKNOWN_CALLING_CONVENTION_STRING.equals(convention)) {
			sb.append("_").append(convention);
		}

		sb.append("_");
		sb.append(mangleDTName(returnType));
		for (ParameterDefinition p : parameters) {
			sb.append("_").append(mangleDTName(p.getDataType()));
		}

		if (functionDefinition.hasVarArgs()) {
			sb.append("_").append("varargs");
		}

		String name = sb.toString();
		if (!DataUtilities.isValidDataTypeName(name)) {
			// Note that we created the name.  An invalid name is a programming error on our part.
			throw new AssertionError("Unexpected bad name: " + name);
		}
		return name;
	}
Generate a simple mangled function signature.  Generated string will start with
{@code _func}.
@param functionDefinition function definition is used for generating the name
@return generated name
Ghidra/Features/Base/src/main/java/ghidra/app/util/DataTypeNamingUtil.java