May be little help: freeze in this cycle
Code:
while (queue.Count > 0)
{
int nextAddr = queue.Dequeue();
if (hashSet.Contains(nextAddr))
continue;
hashSet.Add(nextAddr);
if (nextAddr != num && nextAddr != 0)
{
int key = M.ReadInt(nextAddr + 0x14, 0x14);
if (!list.ContainsKey(key))
{
int address = M.ReadInt(nextAddr + 0x14);
var entity = GetObject<Entity>(address);
list.Add(key, entity);
}
queue.Enqueue(M.ReadInt(nextAddr));
queue.Enqueue(M.ReadInt(nextAddr + 8));
}
}
Unfortunely may be infinity cycle because
queue.Count never less or equal 0.