public void EnqueueUserProcedure(Address addr, FunctionType sig) { if (program.Procedures.ContainsKey(addr)) return; // Already scanned. Do nothing. var proc = EnsureProcedure(addr, null); proc.Signature = sig; queue.Enqueue(PriorityEntryPoint, new ProcedureWorkItem(this, program, addr, proc.Name)); }
private void DoRewriteCore() { Project project = LoadProject(); project.Programs.Add(prog); scanner = new Scanner(prog, new Dictionary<Address, ProcedureSignature>(), new ImportResolver(project), new FakeDecompilerEventListener()); EntryPoint ep = new EntryPoint(baseAddress, prog.Architecture.CreateProcessorState()); scanner.EnqueueEntryPoint(ep); var program = project.Programs[0]; foreach (Procedure_v1 sp in program.UserProcedures.Values) { scanner.EnqueueUserProcedure(sp); } scanner.ScanImage(); }