public static boolean isGoodFunctionStart(Program program, Address addr) {
		// check location starts with an instruction
		if (program.getListing().getInstructionAt(addr) == null) {
			return false;
		}

		Address addrBefore = addr.previous();
		if (addrBefore == null) {
			return true;
		}
		
		// check if instruction before, falls into this one.
		// other code is responsible for creating functions from references
		Instruction instr = program.getListing().getInstructionContaining(addrBefore);
		if (instr != null && addr.equals(instr.getFallThrough())) {
			return false;
		}

		// didn't find anything that would indicate is a bad function start
		return true;
	}
Check if address is a good function start.
Instruction exists at the location.
No instruction falls through to this one.

@param program the program
@param addr address to check if is a good function start
@return true if would be a good function start, false otherwise
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/function/ExternalEntryFunctionAnalyzer.java