rendered paste bodyunsigned int __thiscall CPed_SerializeForSaveInner(CPedSerializedData *this, CPed *ped)
{
float *v2; // eax@1
CPed *v3; // esi@1
VECTOR *v4; // eax@2
unsigned int result; // eax@4
int v6; // edx@5
unsigned int v7; // eax@8
signed int v8; // edx@8
v3 = ped;
v2 = (float *)ped->Physical.Entity.Placeable.Matrix;
if ( v2 )
v4 = (VECTOR *)(v2 + 12);
else
v4 = (VECTOR *)&ped->Physical.Entity.Placeable.PositionX;
this->X = v4->X;
this->Y = v4->Y;
this->Z = v4->Z;
this->Health = v3->fHealth;
this->Armour = v3->fArmour;
this->ActorRef = v3->ActorRef;
this->CurrentWeapon = v3->CurrentWeapon;
this->ActiveInterior = v3->Physical.Entity.ActiveInterior;
this->FightingStyle = v3->FightingStyle;
this->FightingStyleType = v3->FightingStyleType;
this->EnterExitIndex = -1;
result = v3->EnterExitPoolItem;
if ( result )
{
v6 = v3->EnterExitPoolItem;
if ( *(_DWORD *)(result + 56) ) // must be pointing to some sub item
v6 = *(_DWORD *)(result + 56);
if ( *(_BYTE *)(v6 + 50) )
{
v7 = result - *(_DWORD *)CPool_CEnterExit;
v8 = (signed int)(v7 + ((unsigned __int64)(-2004318071i64 * (signed int)v7) >> 32)) >> 5;
result = (unsigned int)(v7 + ((unsigned __int64)(-2004318071i64 * (signed int)v7) >> 32)) >> 31;
this->EnterExitIndex = result + v8; // calculates and stores some CEnterExit index
}
}
memcpy((char *)this + 20, (char *)v3 + 1440, 0x16Cu); // Copy the weapon slots
return result;
}