public uint GetUIPtr(string uiHandle) { uint id = ProcessUtils.HashLowerCase(uiHandle); uint index = id & 0x7FF; uint uiPtrArray = ReadUInt(ReadUInt(pUI) + Offsets.UI_ARRAY_PTR_OFFSET); uint lastAddr = ReadUInt(uiPtrArray + (index * 4)); while (true) { if (lastAddr == 0) { return(Offsets.INVALID); } uint nextAddr = ReadUInt(ReadUInt(lastAddr + Offsets.UI_OBJ_PTR_OFFSET) + Offsets.UI_2_OFFSET); if (nextAddr == id) { return(ReadUInt(lastAddr + Offsets.UI_OBJ_PTR_OFFSET)); } lastAddr = ReadUInt(lastAddr); } }