uint mask =
Memory.WowMemory.Memory.ReadUInt(Memory.WowProcess.WowModule + (uint) Addresses.PlayerNameStore.nameStorePtr + (uint) Addresses.PlayerNameStore.nameMaskOffset);
uint baseAddresse =
Memory.WowMemory.Memory.ReadUInt(Memory.WowProcess.WowModule + (uint) Addresses.PlayerNameStore.nameStorePtr + (uint) Addresses.PlayerNameStore.nameBaseOffset);
UInt128 shortGUID = guid & 0xffffffff;
if (mask == 0xffffffff)
return "";
uint offset = 12*(uint) (mask & shortGUID);
uint current = Memory.WowMemory.Memory.ReadUInt(baseAddresse + offset +

;
offset = Memory.WowMemory.Memory.ReadUInt(baseAddresse + offset);
if (current == 0 || (current & 0x1) == 0x1)
return "";
uint testGUID = Memory.WowMemory.Memory.ReadUInt(current);
while (testGUID != shortGUID)
{
current = Memory.WowMemory.Memory.ReadUInt(current + offset + 4);
if (current == 0 || (current & 0x1) == 0x1)
return "";
testGUID = Memory.WowMemory.Memory.ReadUInt(current);
Thread.Sleep(5);
}
return Memory.WowMemory.Memory.ReadUTF8String(current + (uint) Addresses.PlayerNameStore.nameStringOffset);