← back rust · 2418117
Fresh Rust dump. Standard IL2CPP layout, two rotating-XOR variants for `base_networkable` (paste both — auto-detect fallback picks the right one). PlayerModel position/velocity are heuristic-scanned Vector3 pairs — verify against a known-alive player.

## Engine

```cpp
inline static constexpr uintptr_t il2cpp_handle = 0x10088B40;
```

## BasePlayer

```cpp
struct base_player {
    inline static constexpr uintptr_t player_input     = 0x2D0;
    inline static constexpr uintptr_t player_eyes      = 0x380;
    inline static constexpr uintptr_t display_name     = 0x3E0;
    inline static constexpr uintptr_t base_movement    = 0x4F8;
    inline static constexpr uintptr_t current_team     = 0x538;
    inline static constexpr uintptr_t player_inventory = 0x548;
    inline static constexpr uintptr_t cl_active_item   = 0x568;
    inline static constexpr uintptr_t player_flags     = 0x6B8;
    inline static constexpr uintptr_t player_model     = 0x6D8;
};
```

## BaseCombatEntity / BaseEntity

```cpp
struct base_combat_entity {
    inline static constexpr uintptr_t model      = 0x1A8;
    inline static constexpr uintptr_t lifestate  = 0x298;
    inline static constexpr uintptr_t _health    = 0x2A4;
    inline static constexpr uintptr_t _maxHealth = 0x2A8;
};

struct base_entity {
    inline static constexpr uintptr_t flags = 0x1B0;
};
```

## Player sub-objects

```cpp
struct player_eyes {
    inline static constexpr uintptr_t worldPosition = 0x00;
    inline static constexpr uintptr_t bodyRotation  = 0x50;
    inline static constexpr uintptr_t viewOffset    = 0x60;
};

struct player_input {
    inline static constexpr uintptr_t bodyAngles = 0x44;
};

struct player_walk_movement {
    inline static constexpr uintptr_t GroundAngle       = 0x70;    // hardcoded — reverify
    inline static constexpr uintptr_t GroundAngleNew    = 0x78;    // hardcoded — reverify
    inline static constexpr uintptr_t GroundTime        = 0x80;    // hardcoded — reverify
    inline static constexpr uintptr_t JumpTime          = 0x88;    // hardcoded — reverify
    inline static constexpr uintptr_t LandTime          = 0x90;    // hardcoded — reverify
    inline static constexpr uintptr_t GravityMultiplier = 0x98;    // hardcoded — reverify
    inline static constexpr uintptr_t TargetMovement    = 0x128;   // hardcoded — reverify
};

struct player_model {
    inline static constexpr uintptr_t jawBone          = 0xE8;
    inline static constexpr uintptr_t neckBone         = 0xF0;
    inline static constexpr uintptr_t headBone         = 0xF8;
    inline static constexpr uintptr_t skinnedMultiMesh = 0x3D0;

    inline static constexpr uintptr_t position         = 0x498;    // heuristic — last-pair Vector3
    inline static constexpr uintptr_t velocity         = 0x4FC;    // heuristic — last-pair Vector3
};

struct model {
    inline static constexpr uintptr_t collision      = 0x20;
    inline static constexpr uintptr_t rootBone       = 0x28;
    inline static constexpr uintptr_t headBone       = 0x30;
    inline static constexpr uintptr_t eyeBone        = 0x38;
    inline static constexpr uintptr_t animator       = 0x40;
    inline static constexpr uintptr_t skeleton       = 0x48;
    inline static constexpr uintptr_t boneTransforms = 0x50;
    inline static constexpr uintptr_t boneNames      = 0x58;
};
```

## Held entity / world item

```cpp
struct held_entity {
    inline static constexpr uintptr_t item_owner         = 0x1F0;
    inline static constexpr uintptr_t worldModelAnimator = 0x208;
    inline static constexpr uintptr_t viewModel          = 0x240;
    inline static constexpr uintptr_t handBone           = 0x250;
    inline static constexpr uintptr_t holdInfo           = 0x260;
    inline static constexpr uintptr_t isBuildingTool     = 0x27C;
    inline static constexpr uintptr_t forcedOwner        = 0x280;
    inline static constexpr uintptr_t hostileScore       = 0x29C;
    inline static constexpr uintptr_t ownerItemUID       = 0x2D0;
};

struct world_item {
    inline static constexpr uintptr_t allowPickup = 0x1F0;
    inline static constexpr uintptr_t item        = 0x1F8;
};
```

## Weapons

```cpp
struct base_projectile {
    inline static constexpr uintptr_t projectileVelocityScale    = 0x37C;
    inline static constexpr uintptr_t automatic                  = 0x380;
    inline static constexpr uintptr_t reloadTime                 = 0x3C0;
    inline static constexpr uintptr_t canUnloadAmmo              = 0x3C4;
    inline static constexpr uintptr_t primaryMagazine            = 0x3C8;
    inline static constexpr uintptr_t fractionalReload           = 0x3D0;
    inline static constexpr uintptr_t aimSway                    = 0x3E8;
    inline static constexpr uintptr_t aimSwaySpeed               = 0x3EC;
    inline static constexpr uintptr_t recoil                     = 0x3F0;
    inline static constexpr uintptr_t aimCone                    = 0x400;
    inline static constexpr uintptr_t hipAimCone                 = 0x404;
    inline static constexpr uintptr_t aimconePenaltyPerShot      = 0x408;
    inline static constexpr uintptr_t stancePenaltyScale         = 0x418;
    inline static constexpr uintptr_t hasADS                     = 0x41C;
    inline static constexpr uintptr_t isBurstWeapon              = 0x427;
    inline static constexpr uintptr_t canChangeFireModes         = 0x428;
    inline static constexpr uintptr_t internalBurstFireRateScale = 0x430;
    inline static constexpr uintptr_t internalBurstAimConeScale  = 0x434;
};

struct recoil_properties {
    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 timeToTakeMin             = 0x28;
    inline static constexpr uintptr_t timeToTakeMax             = 0x2C;
    inline static constexpr uintptr_t ADSScale                  = 0x30;
    inline static constexpr uintptr_t movementPenalty           = 0x34;
    inline static constexpr uintptr_t clampPitch                = 0x38;
    inline static constexpr uintptr_t pitchCurve                = 0x40;
    inline static constexpr uintptr_t yawCurve                  = 0x48;
    inline static constexpr uintptr_t useCurves                 = 0x50;
    inline static constexpr uintptr_t shotsUntilMax             = 0x54;
    inline static constexpr uintptr_t maxRecoilRadius           = 0x58;
    inline static constexpr uintptr_t overrideAimconeWithCurve  = 0x5C;
    inline static constexpr uintptr_t aimconeCurveScale         = 0x60;
    inline static constexpr uintptr_t aimconeCurve              = 0x68;
    inline static constexpr uintptr_t aimconeProbabilityCurve   = 0x70;
    inline static constexpr uintptr_t newRecoilOverride         = 0x80;
};
```

## Inventory / items

```cpp
struct player_inventory {
    inline static constexpr uintptr_t wear = 0x30;
    inline static constexpr uintptr_t main = 0x38;
    inline static constexpr uintptr_t belt = 0x58;
};

struct item_container {
    inline static constexpr uintptr_t item_list = 0x48;
};

struct item {
    inline static constexpr uintptr_t held_entity = 0x00;
    inline static constexpr uintptr_t uid         = 0xA0;
    inline static constexpr uintptr_t definition  = 0xB0;
    inline static constexpr uintptr_t amount      = 0xE0;
};

struct item_definition {
    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 iconSprite  = 0x50;
    inline static constexpr uintptr_t category    = 0x58;
    inline static constexpr uintptr_t stackable   = 0x78;
    inline static constexpr uintptr_t rarity      = 0x94;
    inline static constexpr uintptr_t condition   = 0xB8;
};
```

## BaseNetworkable

```cpp
struct base_networkable {
    inline static constexpr uintptr_t base_networkable     = 0xFB71410;
    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 entities             = 0x10;
    inline static constexpr uintptr_t hv_offset            = 0x18;
};
```

## Camera

```cpp
struct camera {
    inline static constexpr uintptr_t main_camera_c = 0xFBE49A0;
    inline static constexpr uintptr_t camera_static = 0xB8;
    inline static constexpr uintptr_t camera_object = 0x38;
    inline static constexpr uintptr_t entity        = 0x10;

    inline static constexpr uintptr_t view_matrix   = 0x2FC;   // unity native
    inline static constexpr uintptr_t position      = 0x444;   // unity native
    inline static constexpr uintptr_t field_of_view = 0x170;   // unity native
    inline static constexpr uintptr_t culling_mask  = 0x3E8;   // unity native
};

struct convar_graphics {
    inline static constexpr uintptr_t type_info     = 0x0;
    inline static constexpr uintptr_t static_fields = 0xB8;
    inline static constexpr uintptr_t fov           = 0x0;
};
```

## Decryption

Two rotating-XOR variants for `base_networkable`. Whichever your target caller resolves to — the auto-detect fallback in `resolve_handle` will try both.

```cpp
uintptr_t decryption::base_networkable_0(uint64_t a1) {
    std::uintptr_t rax = driver.read<std::uintptr_t>(a1 + 0x18);
    std::uint32_t* rdx = (std::uint32_t*)&rax;
    std::uint32_t r8d = 0x2;
    std::uint32_t eax, ecx;
    do {
        ecx = *(std::uint32_t*)(rdx);
        eax = *(std::uint32_t*)(rdx);
        rdx = (std::uint32_t*)((std::uint8_t*)rdx + 0x4);
        eax = ecx;
        ecx = ecx << 0x15;
        eax = eax >> 0xB;
        ecx = ecx | eax;
        ecx = ecx ^ 0xDA053B90;
        ecx = ecx - 0x4D1B2722;
        *((std::uint32_t*)rdx - 1) = ecx;
        --r8d;
    } while (r8d);
    return il2cpp_get_handle(rax);
}

uintptr_t decryption::base_networkable_1(uint64_t a1) {
    std::uintptr_t rax = driver.read<std::uintptr_t>(a1 + 0x18);
    std::uint32_t* rdx = (std::uint32_t*)&rax;
    std::uint32_t r8d = 0x2;
    std::uint32_t eax, ecx;
    do {
        ecx = *(std::uint32_t*)(rdx);
        eax = *(std::uint32_t*)(rdx);
        rdx = (std::uint32_t*)((std::uint8_t*)rdx + 0x4);
        eax = ecx;
        ecx = ecx << 0x6;
        eax = eax >> 0x1A;
        ecx = ecx | eax;
        ecx = ecx + 0xC52F0932;
        eax = ecx;
        ecx = ecx << 0x16;
        eax = eax >> 0xA;
        ecx = ecx | eax;
        *((std::uint32_t*)rdx - 1) = ecx;
        --r8d;
    } while (r8d);
    return il2cpp_get_handle(rax);
}
```