SMKM_STORE_MGR::SmStoreTerminate
__int64 __fastcall SMKM_STORE_MGR::SmStoreTerminate(_SMKM_STORE_LIST *StoreMgr, __int64 a2, int a3, int a4){
VOID **PoolWithTag;
unsigned int v9;
int v10;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x40ui64, 1834249587i64);
if( PoolWithTag )
{
if( SmKmStoreReference(StoreMgr, *(unsigned int *)(a2 + 6016)) )
{
PoolWithTag[1] = 0i64;
PoolWithTag[6] = 0i64;
PoolWithTag[7] = 0i64;
*PoolWithTag = 0i64;
PoolWithTag[2] = SmKmStoreTerminateWorker;
PoolWithTag[3] = PoolWithTag;
PoolWithTag[5] = (VOID *)(a2 + 6216);
PoolWithTag[4] = StoreMgr;
*((_DWORD *)PoolWithTag + 12) = *(_DWORD *)(a2 + 6016);
v10 = StoreMgr[460] & 1;
*((_DWORD *)PoolWithTag + 14) = a3;
*((_DWORD *)PoolWithTag + 13) = v10;
*((_DWORD *)PoolWithTag + 15) = a4;
ExQueueWorkItem((PWORK_QUEUE_ITEM)PoolWithTag, CriticalWorkQueue);
PoolWithTag = 0i64;
v9 = 0;
}
else
{
v9 = -1073741431;
}
if( PoolWithTag )
ExFreePoolWithTag(PoolWithTag, 0);
}
else
{
return(unsigned int)-1073741670;
}
return v9;
}
Referenced by:
No references.