please help me , why crash warface ESP\aimBot func;

I used this code:

Code:
template <class _I> class _smart_ptr 
{
private:
	_I* p;
public:
	_smart_ptr() : p(NULL) {}
#if defined(LINUX64)
	_smart_ptr(typeof(__null)) : p(NULL) {}
#endif
	_smart_ptr(int Null) : p(NULL) {}
	_smart_ptr(_I* p_)
	{
		p = p_;
		if (p)
			p->AddRef();
	}

	_smart_ptr(const _smart_ptr &p_)
	{
		p = p_.p;
		if (p)
			p->AddRef();
	}
	~_smart_ptr()
	{
		if (p)
			p->Release();
	}
	operator _I*() const { return p; } 
	_I& operator*() const { return *p; }
	_I* operator->() const { return p; }
	_I* operator+() const { return p; }
	_I* get() const { return p; }
	_smart_ptr&  operator=(_I* newp)
	{
		if (newp)
			newp->AddRef();
		if (p)
			p->Release();
		p = newp;
		return *this;
	}

	void reset()
	{
		_smart_ptr<_I>().swap(*this);
	}

	void reset(_I* p)
	{
		_smart_ptr<_I>(p).swap(*this);
	}

	_smart_ptr&  operator=(const _smart_ptr &newp)
	{
		if (newp.p)
			newp.p->AddRef();
		if (p)
			p->Release();
		p = newp.p;
		return *this;
	}
	bool operator !() const 
	{
		return p == NULL;
	};
};
typedef _smart_ptr<IActorIterator> IActorIteratorPtr;
Code:
 class IActorSystem
{
public:
	virtual void Function00();
	virtual void Function01(); //
	virtual void Function02(); //
	virtual IActorIteratorPtr  CreateActorIterator ()=0 ;
I make super check , but all time crash!
Code:
void ESP()
{

SSystemGlobalEnvironment* m_SSystemGlobalEnvironment = GetSSystemGlobalEnvironment();

if (m_SSystemGlobalEnvironment!=NULL)
{
IGame* Game = m_SSystemGlobalEnvironment->GetIGame;
if(Game!=NULL)
{
IGameFramework* GameFram = Game->getIGameFramework;
if(GameFram!=NULL)
{
IActor* MyActor = GameFram->GetClientActor();
if(MyActor) 
{
IActorSystem* actSys = GameFram->GetIActorSystem();
if(actSys!=NULL)
{
IGameRulesSystem* GameRules = GameFram->GetIGameRulesSystem();
if(GameRules!=NULL)
{
IEntity* Ient = MyActor->getIEntity();
if(Ient!=NULL)
{
ICharacterInstance* bones = Ient->GetCharacter(0);
if(bones!=NULL)
{
ISkeletonPose* bone_pos = bones->GetISkeletonPose();
if(bone_pos!=NULL)
{
IActorIteratorPtr iterPl = actSys->CreateActorIterator();
if(iterPl.get()->Count()>1)
{
for(;IActor* Player = iterPl.get()->Next();)
{
DrawESP().........