@Override
	public boolean applyTo(Program p, TaskMonitor monitor) {
		program = p;
		
		isX86 = checkForX86(p);

		int count = 0;
		long numAddresses = entryPoints.getNumAddresses();
		int numRanges = entryPoints.getNumAddressRanges();
		// is this a bigger set, or individual function locations
		if (numRanges != numAddresses) {
			numAddresses = program.getFunctionManager().getFunctionCount();
		}

		monitor.initialize(numAddresses);
		FunctionIterator functions = program.getFunctionManager().getFunctions(entryPoints, true);
		while (functions.hasNext()) {
			if (monitor.isCancelled()) {
				break;
			}

			Function func = functions.next();
			monitor.setProgress(++count);

			monitor.setMessage("Stack " + func.getName());

			try {
				if (!analyzeFunction(func, monitor)) {
					setStatusMsg("Function overlaps an existing function body");
				}
			}
			catch (CancelledException e) {
				//
			}
		}
		if (monitor.isCancelled()) {
			setStatusMsg("Function Stack analysis cancelled");
			return false;
		}
		return true;
	}
@param entries
@param createStackParams
@param createLocalStackVars
@param forceProcessing
Ghidra/Features/Base/src/main/java/ghidra/app/cmd/function/NewFunctionStackAnalysisCmd.java