Base globals
inline static constexpr uintptr_t il2cpphandle = 0x11DB2E30; // rust-free handle TABLE
inline static constexpr uintptr_t il2cpp_gchandle_get_target = 0x87BF40; // export
inline static constexpr uintptr_t StringPool = 0x11934108;
struct rust_globals {
inline static constexpr uintptr_t il2cpphandle = 0x11DB2E30; // GameAssembly.dll RVA, handle TABLE
inline static constexpr uintptr_t gchandle_get_target = 0x87BF40; // il2cpp export
inline static constexpr uintptr_t base_networkable_static = 0x118D4020;
inline static constexpr uintptr_t main_camera_c = 0x118B4098;
inline static constexpr uintptr_t convar_graphics = 0x118B0BB8;
inline static constexpr uintptr_t local_player_static = 0x118D5308;
};
GameAssembly
namespace GameAssembly {
inline static constexpr uintptr_t il2cpp_resolve_icall = 0x87AAD0;
inline static constexpr uintptr_t il2cpp_array_new = 0x87AAF0;
inline static constexpr uintptr_t il2cpp_class_from_name = 0x864CE0;
inline static constexpr uintptr_t il2cpp_class_get_type = 0x75AF20;
inline static constexpr uintptr_t il2cpp_domain_get = 0x87B810;
inline static constexpr uintptr_t il2cpp_domain_get_assemblies = 0x87B830;
inline static constexpr uintptr_t il2cpp_gchandle_get_target = 0x87BF40;
inline static constexpr uintptr_t il2cpp_gchandle_new = 0x87BEF0;
inline static constexpr uintptr_t il2cpp_gchandle_free = 0x87BFE0;
inline static constexpr uintptr_t il2cpp_object_new = 0x87C880;
inline static constexpr uintptr_t il2cpp_type_get_object = 0x87D960;
inline static constexpr uintptr_t il2cpp_string_new = 0x87C9A0;
}
il2cpp exports
struct il2cpp_api {
inline static constexpr uintptr_t domain_get = 0x87B810;
inline static constexpr uintptr_t domain_get_assemblies = 0x87B830;
inline static constexpr uintptr_t domain_assembly_open = 0x87B820;
inline static constexpr uintptr_t class_from_name = 0x864CE0;
inline static constexpr uintptr_t image_get_class_count = 0x12640;
inline static constexpr uintptr_t image_get_class = 0x87DC40;
inline static constexpr uintptr_t class_get_methods = 0x87AE60;
inline static constexpr uintptr_t class_get_fields = 0x87AC10;
inline static constexpr uintptr_t class_get_nested_types = 0x87AC90;
inline static constexpr uintptr_t class_get_type = 0x75AF20;
inline static constexpr uintptr_t class_get_parent = 0x22F70;
inline static constexpr uintptr_t class_get_flags = 0x87AF40;
inline static constexpr uintptr_t class_from_il2cpp_type = 0x87ABF0;
inline static constexpr uintptr_t type_get_object = 0x87D960;
inline static constexpr uintptr_t type_get_name = 0x87D9B0;
inline static constexpr uintptr_t method_get_param_count = 0x87C4B0;
inline static constexpr uintptr_t method_get_param = 0x87C4C0;
inline static constexpr uintptr_t method_get_flags = 0x87C570;
inline static constexpr uintptr_t field_get_offset = 0x80A9C0;
inline static constexpr uintptr_t field_get_type = 0x4744F0;
inline static constexpr uintptr_t field_get_flags = 0x87BAB0;
inline static constexpr uintptr_t field_static_get_value = 0x87BC10;
inline static constexpr uintptr_t object_new = 0x87C880;
inline static constexpr uintptr_t resolve_icall = 0x87AAD0;
inline static constexpr uintptr_t gchandle_get_target = 0x87BF40;
inline static constexpr uintptr_t gchandle_new = 0x87BEF0;
inline static constexpr uintptr_t gchandle_free = 0x87BFE0;
inline static constexpr uintptr_t array_new = 0x87AAF0;
inline static constexpr uintptr_t string_new = 0x87C9A0;
};
klass layout
namespace klass_layout {
inline static constexpr uintptr_t name_ptr = 0x10;
inline static constexpr uintptr_t static_fields = 0xB8;
}
base networkable
namespace base_networkable {
inline static constexpr uintptr_t base_networkable = 0x118D4020;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t wrapper_class_ptr = 0x8;
inline static constexpr uintptr_t parent_static_fields = 0x10;
inline static constexpr uintptr_t hv_offset = 0x18;
inline static constexpr uintptr_t entity_list = 0x10; // EntityRealm.entityList
inline static constexpr uintptr_t entities = 0x10; // BufferList.buffer
inline static constexpr uintptr_t buffer_list_array = 0x10;
inline static constexpr uintptr_t buffer_list_size = 0x18;
inline static constexpr uintptr_t list_dictionary_vals = 0x20;
inline static constexpr uintptr_t entity = 0x10;
inline static constexpr uintptr_t buffer = 0x10;
inline static constexpr uintptr_t prefabID = 0x54;
inline static constexpr uintptr_t parentEntity = 0x38;
inline static constexpr uintptr_t children = 0x70;
inline static constexpr uintptr_t net = 0x70;
}
camera
namespace camera {
inline static constexpr uintptr_t main_camera = 0x118B4098;
inline static constexpr uintptr_t camera_static = 0xB8;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t camera_object = 0x8;
inline static constexpr uintptr_t instance = 0x8;
inline static constexpr uintptr_t buffer = 0x8;
inline static constexpr uintptr_t entity = 0x10;
inline static constexpr uintptr_t position = 0x444;
inline static constexpr uintptr_t viewMatrix = 0x2FC;
inline static constexpr uintptr_t fieldOfView = 0x170;
inline static constexpr uintptr_t aspect = 0x130;
inline static constexpr uintptr_t worldToCameraMatrix = 0x70;
inline static constexpr uintptr_t cullingMask = 0x104;
inline static constexpr uintptr_t main_camera_c = 0x118B4098;
inline static constexpr uintptr_t view_matrix = 0x2FC;
inline static constexpr uintptr_t field_of_view = 0x170;
}
BasePlayer
namespace BasePlayer {
inline static constexpr uintptr_t clActiveItem = 0x588;
inline static constexpr uintptr_t PlayerEyes = 0x7A0;
inline static constexpr uintptr_t PlayerInventory = 0x7A8;
inline static constexpr uintptr_t current_team = 0x558;
inline static constexpr uintptr_t movement = 0x540;
inline static constexpr uintptr_t player_model = 0x5B8;
inline static constexpr uintptr_t playerFlags = 0x6D8;
inline static constexpr uintptr_t userID = 0x720;
inline static constexpr uintptr_t userIDString = 0x3F8;
inline static constexpr uintptr_t display_name = 0x300;
inline static constexpr uintptr_t player_input = 0x518;
inline static constexpr uintptr_t modelState = 0x4B0;
inline static constexpr uintptr_t mounted = 0x5E0;
inline static constexpr uintptr_t Belt = 0x438;
inline static constexpr uintptr_t _lookingAt = 0x400;
inline static constexpr uintptr_t weaponMoveSpeedScale = 0x7B8;
inline static constexpr uintptr_t clothingBlocksAiming = 0x7BC;
inline static constexpr uintptr_t clothingMoveSpeedReduction = 0x7C0;
inline static constexpr uintptr_t clothingWaterSpeedBonus = 0x7C4;
inline static constexpr uintptr_t player_rigidbody = 0x650;
inline static constexpr uintptr_t frozen = 0x398;
inline static constexpr uintptr_t currentGesture = 0x308;
inline static constexpr uintptr_t lastSentTick = 0x5C8;
inline static constexpr uintptr_t lastSentTickTime = 0x698;
inline static constexpr uintptr_t metabolism = 0x710;
inline static constexpr uintptr_t blueprints = 0x708;
inline static constexpr uintptr_t cl_active_item = 0x588;
inline static constexpr uintptr_t player_eyes = 0x7A0;
inline static constexpr uintptr_t player_inventory = 0x7A8;
inline static constexpr uintptr_t player_flags = 0x6D8;
inline static constexpr uintptr_t model_state = 0x4B0;
inline static constexpr uintptr_t base_movement = 0x540;
}
BaseCombatEntity
namespace BaseCombatEntity {
inline static constexpr uintptr_t skeletonProperties = 0x230;
inline static constexpr uintptr_t baseProtection = 0x238;
inline static constexpr uintptr_t lifestate = 0x2A8;
inline static constexpr uintptr_t markAttackerHostile = 0x2AE;
inline static constexpr uintptr_t model = 0x1B8;
inline static constexpr uintptr_t startHealth = 0x240;
inline static constexpr uintptr_t _health = 0x2B4;
inline static constexpr uintptr_t _maxHealth = 0x2B8;
}
BaseEntity
namespace BaseEntity {
inline static constexpr uintptr_t bounds = 0x18C;
inline static constexpr uintptr_t model = 0x1B8;
inline static constexpr uintptr_t flags = 0x1C0;
inline static constexpr uintptr_t triggers = 0x138;
inline static constexpr uintptr_t positionLerp = 0xE8;
}
BaseEntityFlags
namespace BaseEntityFlags {
inline static constexpr uintptr_t Placeholder = 0x1;
inline static constexpr uintptr_t On = 0x2;
inline static constexpr uintptr_t OnFire = 0x4;
inline static constexpr uintptr_t Open = 0x8;
inline static constexpr uintptr_t Locked = 0x10;
inline static constexpr uintptr_t Debugging = 0x20;
inline static constexpr uintptr_t Disabled = 0x40;
inline static constexpr uintptr_t Reserved1 = 0x80;
inline static constexpr uintptr_t Reserved2 = 0x100;
inline static constexpr uintptr_t Reserved3 = 0x200;
inline static constexpr uintptr_t Reserved4 = 0x400;
inline static constexpr uintptr_t Reserved5 = 0x800;
}
base player flags
namespace base_player_flags {
inline static constexpr uintptr_t Unused1 = 0x1;
inline static constexpr uintptr_t Unused2 = 0x2;
inline static constexpr uintptr_t IsAdmin = 0x4;
inline static constexpr uintptr_t ReceivingSnapshot = 0x8;
inline static constexpr uintptr_t Sleeping = 0x10;
inline static constexpr uintptr_t Spectating = 0x20;
inline static constexpr uintptr_t Wounded = 0x40;
inline static constexpr uintptr_t IsDeveloper = 0x80;
inline static constexpr uintptr_t Connected = 0x100;
inline static constexpr uintptr_t ThirdPersonViewmode = 0x400;
}
ModelState
namespace ModelState {
inline static constexpr uintptr_t flags = 0x1C;
inline static constexpr uintptr_t waterLevel = 0x40;
inline static constexpr uintptr_t lookDir = 0x60;
}
modelstate flags
namespace modelstate_flags {
inline static constexpr uintptr_t ducked = 0x1;
inline static constexpr uintptr_t jumped = 0x2;
inline static constexpr uintptr_t sprinting = 0x10;
inline static constexpr uintptr_t onLadder = 0x20;
inline static constexpr uintptr_t aiming = 0x80;
inline static constexpr uintptr_t crawling = 0x1000;
inline static constexpr uintptr_t hasParachute = 0x8000;
inline static constexpr uintptr_t Flying = 0x40;
inline static constexpr uintptr_t Sleeping = 0x8;
inline static constexpr uintptr_t Mounted = 0x200;
inline static constexpr uintptr_t OnGround = 0x4;
}
ItemContainer
namespace ItemContainer {
inline static constexpr uintptr_t ItemList = 0x68;
inline static constexpr uintptr_t itemCount = 0x18;
inline static constexpr uintptr_t flags = 0x74;
inline static constexpr uintptr_t uid = 0x48;
}
ItemDefinition
namespace ItemDefinition {
inline static constexpr uintptr_t itemid = 0x20;
inline static constexpr uintptr_t shortname = 0x28;
inline static constexpr uintptr_t displayName = 0x40;
inline static constexpr uintptr_t category = 0x58;
inline static constexpr uintptr_t stackable = 0x78;
inline static constexpr uintptr_t iconSprite = 0x50;
inline static constexpr uintptr_t rarity = 0x94;
inline static constexpr uintptr_t condition = 0xB8;
}
item
namespace item {
inline static constexpr uintptr_t info = 0x28;
inline static constexpr uintptr_t amount = 0x8C;
inline static constexpr uintptr_t uid = 0xD0;
inline static constexpr uintptr_t heldEntity = 0x90;
inline static constexpr uintptr_t worldEnt = 0x38;
inline static constexpr uintptr_t parent = 0x70;
inline static constexpr uintptr_t contents = 0xA0;
inline static constexpr uintptr_t position = 0xD8;
inline static constexpr uintptr_t clientAmmoCount = 0xB8;
}
AttackEntity
namespace AttackEntity {
inline static constexpr uintptr_t deployDelay = 0x2E8;
inline static constexpr uintptr_t repeatDelay = 0x2EC;
inline static constexpr uintptr_t animationDelay = 0x2F0;
inline static constexpr uintptr_t nextAttackTime = 0x340;
inline static constexpr uintptr_t timeSinceDeploy = 0x358;
}
BaseProjectile
namespace BaseProjectile {
inline static constexpr uintptr_t projectileVelocityScale = 0x394;
inline static constexpr uintptr_t automatic = 0x398;
inline static constexpr uintptr_t reloadTime = 0x3D8;
inline static constexpr uintptr_t primaryMagazine = 0x3E0;
inline static constexpr uintptr_t aimSway = 0x400;
inline static constexpr uintptr_t aimSwaySpeed = 0x404;
inline static constexpr uintptr_t recoil = 0x408;
inline static constexpr uintptr_t aimCone = 0x418;
inline static constexpr uintptr_t hipAimCone = 0x41C;
inline static constexpr uintptr_t aimConePenaltyPerShot = 0x420;
inline static constexpr uintptr_t aimconePenaltyMax = 0x424;
inline static constexpr uintptr_t stancePenaltyScale = 0x430;
inline static constexpr uintptr_t hasADS = 0x434;
inline static constexpr uintptr_t isBurstWeapon = 0x43F;
inline static constexpr uintptr_t canChangeFireModes = 0x440;
inline static constexpr uintptr_t stancePenalty = 0x458;
inline static constexpr uintptr_t aimconePenalty = 0x460;
}
projectile
namespace projectile {
inline static constexpr uintptr_t initialVelocity = 0x28;
inline static constexpr uintptr_t drag = 0x34;
inline static constexpr uintptr_t gravityModifier = 0x38;
inline static constexpr uintptr_t thickness = 0x3C;
inline static constexpr uintptr_t initialDistance = 0x44;
inline static constexpr uintptr_t owner = 0x110;
inline static constexpr uintptr_t currentVelocity = 0x188;
inline static constexpr uintptr_t sentPosition = 0x164;
inline static constexpr uintptr_t previousPosition = 0x170;
}
RecoilProperties
namespace RecoilProperties {
inline static constexpr uintptr_t recoilYawMin = 0x18;
inline static constexpr uintptr_t recoilYawMax = 0x1C;
inline static constexpr uintptr_t recoilPitchMin = 0x20;
inline static constexpr uintptr_t recoilPitchMax = 0x24;
inline static constexpr uintptr_t newRecoilOverride = 0x80;
}
FlintStrikeWeapon
namespace FlintStrikeWeapon {
inline static constexpr uintptr_t successFraction = 0x4C0;
inline static constexpr uintptr_t _didSparkThisFrame = 0x4D0;
inline static constexpr uintptr_t strikes = 0x4D4;
}
PlayerEyes
namespace PlayerEyes {
inline static constexpr uintptr_t viewOffset = 0x40;
inline static constexpr uintptr_t bodyRotation = 0x50;
inline static constexpr uintptr_t worldPosition = 0x60;
inline static constexpr uintptr_t eyeRotation = 0x6C;
}
PlayerInput
namespace PlayerInput {
inline static constexpr uintptr_t state = 0x28;
inline static constexpr uintptr_t bodyAngles = 0x44;
}
PlayerModel
namespace PlayerModel {
inline static constexpr uintptr_t _multiMesh = 0x398;
inline static constexpr uintptr_t collision = 0xD0;
inline static constexpr uintptr_t fullMask = 0x208;
inline static constexpr uintptr_t position = 0x2F8;
inline static constexpr uintptr_t newVelocity = 0x31C;
inline static constexpr uintptr_t isNpc = 0x4CC;
inline static constexpr uintptr_t headBone = 0xF8;
}
SkinnedMultiMesh
namespace SkinnedMultiMesh {
inline static constexpr uintptr_t RendererList = 0x50;
inline static constexpr uintptr_t Renderers = 0x50;
}
chams
namespace chams {
inline static constexpr uintptr_t player_model_multi_mesh = 0x398;
inline static constexpr uintptr_t multi_mesh_renderer_list = 0x50;
}
PlayerInventory
namespace PlayerInventory {
inline static constexpr uintptr_t loot = 0x48;
inline static constexpr uintptr_t containerBelt = 0x28;
inline static constexpr uintptr_t containerMain = 0x58;
inline static constexpr uintptr_t containerWear = 0x78;
inline static constexpr uintptr_t container_belt = 0x28;
inline static constexpr uintptr_t container_wear = 0x78;
inline static constexpr uintptr_t container_main = 0x58;
}
movement
namespace movement {
inline static constexpr uintptr_t Owner = 0x30;
}
PlayerWalkMovement
namespace PlayerWalkMovement {
inline static constexpr uintptr_t Grounded = 0x1C4;
inline static constexpr uintptr_t Jumping = 0x1EC;
inline static constexpr uintptr_t Swimming = 0x1DC;
inline static constexpr uintptr_t Flying = 0x20C;
inline static constexpr uintptr_t Velocity = 0x130;
}
HeldEntity
namespace HeldEntity {
inline static constexpr uintptr_t viewModel = 0x200;
inline static constexpr uintptr_t worldModelAnimation = 0x218;
inline static constexpr uintptr_t holdInfo = 0x270;
inline static constexpr uintptr_t isBuildingTool = 0x28C;
inline static constexpr uintptr_t forcedOwner = 0x290;
inline static constexpr uintptr_t hostileScore = 0x2AC;
inline static constexpr uintptr_t itemOwner = 0x250;
inline static constexpr uintptr_t ownerItemUID = 0x2E0;
inline static constexpr uintptr_t _punches = 0x2D8;
}
ItemIcon
namespace ItemIcon {
inline static constexpr uintptr_t item_icon_c = 0x1191EF08;
inline static constexpr uintptr_t type_info = 0x1191EF08;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t backgroundImage = 0xE8;
}
local_player_static
namespace local_player_static {
inline static constexpr uintptr_t type_info = 0x118D5308;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t entity = 0x40; // HV<BasePlayer>
}
magazine
namespace magazine {
inline static constexpr uintptr_t definition = 0x10;
inline static constexpr uintptr_t capacity = 0x18;
inline static constexpr uintptr_t contents = 0x1C;
inline static constexpr uintptr_t ammoType = 0x20;
}
BaseMelee
namespace BaseMelee {
inline static constexpr uintptr_t maxDistance = 0x3A0;
inline static constexpr uintptr_t attackRadius = 0x3A4;
inline static constexpr uintptr_t blockSprintOnAttack = 0x3A9;
inline static constexpr uintptr_t gathering = 0x3E0;
}
ItemModProjectile
namespace ItemModProjectile {
inline static constexpr uintptr_t projectileObject = 0x20;
inline static constexpr uintptr_t projectileVelocity = 0x40;
inline static constexpr uintptr_t projectileVelocitySpread = 0x44;
inline static constexpr uintptr_t projectileSpread = 0x3C;
inline static constexpr uintptr_t numProjectiles = 0x38;
}
model
namespace model {
inline static constexpr uintptr_t rootBone = 0x28;
inline static constexpr uintptr_t headBone = 0x30;
inline static constexpr uintptr_t boneTransforms = 0x50;
inline static constexpr uintptr_t boneNames = 0x58;
}
TOD_Sky
namespace TOD_Sky_Static {
inline static constexpr uintptr_t type_info = 0x11912EB0;
inline static constexpr uintptr_t instances = 0x18;
}
PhysX
namespace PhysX {
inline static constexpr uintptr_t m_Instance = 0x217F8E8;
inline static constexpr uintptr_t rigidActors = 0x23D8;
}
convar_graphics
namespace convar_graphics {
inline static constexpr uintptr_t type_info = 0x118B0BB8;
inline static constexpr uintptr_t static_fields = 0xB8;
inline static constexpr uintptr_t fov = 0x168;
}
il2cpp list / array
namespace il2cpp_list {
inline static constexpr uintptr_t items = 0x10;
inline static constexpr uintptr_t count = 0x18;
}
namespace il2cpp_array {
inline static constexpr uintptr_t max_length = 0x18;
inline static constexpr uintptr_t first_element = 0x20; // Unity 6 some T[] at +0x28
}
hashed klasses (25214240)
BaseNetworkableStatic %ddd3d5e1e2c2981fa24e8e1866bdf858e54b99eb
EntityRealm %45c74cdeff443339077ebb34ea15ef9b1d36dbbf
ListDictionary %b61ab02f3efd07c0e159bf8550ec7884e2d1a49b
BufferList %02d7c19210903524636779e31392ef3997c0d2d6
Decryption routines
HV: read cipher at wrapper+0x18. +0x10 is 0x1<<32 | accessCount on this build (not a 0/1 byte). Then il2cpp_gchandle_get_target (8 KB page handle).
uintptr_t decryption::client_entities(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx ^ 0xCC2B1C5C;
ecx = ecx - 0x196BCA9E;
ecx = ecx ^ 0x1A846030;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::visiblePlayerList(uint64_t a1)
{
return decryption::client_entities(a1);
}
uintptr_t decryption::entity_list(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx ^ 0x2573BC7C;
eax = ecx;
ecx = ecx << 0x8;
eax = eax >> 0x18;
ecx = ecx | eax;
ecx = ecx ^ 0xB2F825D8;
ecx = ecx + 0x617F688B;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::clActiveItem(uint64_t a1)
{
uint32_t* rdx = (uint32_t*)&a1;
uint32_t r9d = 0x2;
uint32_t edx, eax;
do {
edx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
edx = edx ^ 0x537C2A57;
edx = edx + 0xE00025B3;
eax = edx;
edx = edx >> 0xE;
eax = eax << 0x12;
edx = edx | eax;
*(rdx - 1) = edx;
--r9d;
} while (r9d);
return a1;
}
uintptr_t decryption::PlayerInventory(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx + 0xF4BDEEB6;
eax = ecx;
ecx = ecx >> 0x5;
eax = eax << 0x1B;
ecx = ecx | eax;
ecx = ecx + 0x4056D625;
eax = ecx;
ecx = ecx >> 0x4;
eax = eax << 0x1C;
ecx = ecx | eax;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::PlayerEyes(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
ecx = ecx - 0x30;
eax = ecx;
ecx = ecx << 0x4;
eax = eax >> 0x1C;
ecx = ecx | eax;
ecx = ecx - 0x78E8CE69;
ecx = ecx ^ 0x7A0A52A;
eax = ecx;
ecx = ecx >> 0xC;
eax = eax << 0x14;
ecx = ecx | eax;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
uintptr_t decryption::LocalPlayer(uint64_t a1)
{
uintptr_t rax = driver.read<uintptr_t>(a1 + 0x18);
uint32_t* rdx = (uint32_t*)&rax;
uint32_t r8d = 0x2;
uint32_t eax, ecx;
do {
ecx = *rdx;
rdx = (uint32_t*)((uint8_t*)rdx + 0x4);
eax = ecx;
ecx = ecx << 0xB;
eax = eax >> 0x15;
ecx = ecx | eax;
ecx = ecx ^ 0x30B6FF08;
ecx = ecx + 0xCC937BB;
ecx = ecx ^ 0xFD26C1F4;
*(rdx - 1) = ecx;
--r8d;
} while (r8d);
return il2cpp_get_handle(rax);
}
inline uint32_t decryption::decrypt_fov(uint32_t val)
{
val = (val << 0x11) | (val >> 0xF);
val ^= 0x41AA1423;
val += 0xBDD8296;
val = (val << 0xC) | (val >> 0x14);
return val;
}
inline uint32_t decryption::encrypt_fov(uint32_t val)
{
val = (val >> 0xC) | (val << 0x14);
val -= 0xBDD8296;
val ^= 0x41AA1423;
val = (val >> 0x11) | (val << 0xF);
return val;
}
