public void Load(string path, long baseAddr) { BaseAddress = baseAddr; asm = WindowsAssembly.FromFile(path); entryMethod = this.CreateMethodFromRVA(asm.NtHeaders.OptionalHeader.AddressOfEntrypoint); methods[entryMethod.Address] = entryMethod; entryMethod.Initialize(); while (pendingAddresses.Count > 0) { var emu = pendingAddresses.GetEnumerator(); emu.MoveNext(); long addr = emu.Current; var method = this.CreateMethodFromAddress(addr); methods[addr] = method; method.Initialize(); pendingAddresses.Remove(addr); } }