private Procedure EnsureProcedure(Address addr, string procedureName)
{
Procedure proc;
if (program.Procedures.TryGetValue(addr, out proc))
return proc;
ImageSymbol sym;
if (procedureName == null && program.ImageSymbols.TryGetValue(addr, out sym))
{
procedureName = sym.Name;
}
proc = Procedure.Create(procedureName, addr, program.Architecture.CreateFrame());
program.Procedures.Add(addr, proc);
program.CallGraph.AddProcedure(proc);
return proc;
}