public static void SetEncryptedPosition(int pEntity, Vector3 T)
{
var keyXAddr = Mem.ReadMemory<int>(pEntity + 0x14);
var keyYAddr2 = Mem.ReadMemory<int>(pEntity + 0x1C);
var keyZAddr3 = Mem.ReadMemory<int>(pEntity + 0x24);
var a1 = Mem.ReadMemory<UInt32>(keyXAddr);
var a2 = Mem.ReadMemory<UInt32>(keyYAddr2);
var a3 = Mem.ReadMemory<UInt32>(keyZAddr3);
uint xKey = BitConverter.ToUInt32(BitConverter.GetBytes(a1), 0);
uint yKey = BitConverter.ToUInt32(BitConverter.GetBytes(a2), 0);
uint zKey = BitConverter.ToUInt32(BitConverter.GetBytes(a3), 0);
var xDec = BitConverter.ToUInt32(BitConverter.GetBytes(T.X), 0);
var yDec = BitConverter.ToUInt32(BitConverter.GetBytes(T.Y), 0);
var zDec = BitConverter.ToUInt32(BitConverter.GetBytes(T.Z), 0);
var xEnc = xDec ^ xKey;
var yEnc = yDec ^ yKey;
var zEnc = zDec ^ zKey;
var xPos = BitConverter.ToSingle(BitConverter.GetBytes(xEnc), 0);
var yPos = BitConverter.ToSingle(BitConverter.GetBytes(yEnc), 0);
var zPos = BitConverter.ToSingle(BitConverter.GetBytes(zEnc), 0);
Mem.WriteMemory<float>(pEntity + 0x10, xPos);
Mem.WriteMemory<float>(pEntity + 0x18, yPos);
Mem.WriteMemory<float>(pEntity + 0x20, zPos);
}