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.