Ambiguous stack references in low level software instructions can be
resolved when raising a representation of low level software
instructions, such as native code. The number of parameters passed to a
function can be determined by heuristics, including direct call and
indirect call heuristics. Indirect call heuristics can include
dataflow-to-target-function, dataflow-to-target-type, import name, and
cleanup instructions heuristics. A control flow heuristic can use an
alternating direction propagation of seed points to determine the stack
height at basic block boundaries. Interpolation can be used within the
basic blocks as needed. The raised representation can be used for static
analysis of the low level software instructions.