I don't know what I am doing wrong but calling some vtable funcs crash my game.

Example:
Code:
bool GetBonePosition(CBaseEntity* pPlayer, Vector& Hitbox, int Bone)
{
	matrix3x4_t MatrixArray[128];

	float Time = Interfaces.Engine->GetLastTimeStamp();
	if (Time < 0.001f)
		return false;

	if (!pPlayer->SetupBones(&MatrixArray[0], 128, 0x00000100, Time))
		return false;

	matrix3x4_t HitboxMatrix = MatrixArray[Bone];
	Hitbox = Vector(HitboxMatrix[0][3], HitboxMatrix[1][3], HitboxMatrix[2][3]);

	return true;
}

// CALLED WITH 

Vector vHead(0,0,0);
if (!GetBonePosition(Enemy,vHead,6))
      continue;


Setup Bone Code:
Code:
bool SetupBones(matrix3x4_t *pBoneToWorldOut, int nMaxBones, int boneMask, float currentTime)
{
	void *pRenderable = (void*)(this + 0x4);
	typedef bool(__thiscall* OriginalFn)(PVOID, matrix3x4_t*, int, int, float);
	return ((OriginalFn)VMT.GetFunction(pRenderable, 16))(pRenderable, pBoneToWorldOut, nMaxBones, boneMask, currentTime);
}

The offset I use for GetLastTimeStamp is:

GetLastTimeStamp = 14;


Anything wrong here?