SMKM_STORE_MGR::SmStoreContentsRundown

__int64 __fastcall SMKM_STORE_MGR::SmStoreContentsRundown(__int64 a1, __int64 a2){
  _OWORD *PoolWithTag; 
  __int64 v5; 
  void *v6; 
  int LowPart; 
  struct _EX_RUNDOWN_REF *v8; 
  union _LARGE_INTEGER v10[2]; 
  __int16 Object; 
  char v12; 
  int v13; 
  __int64 v14[3]; 
  Object = 0;
  v13 = 0;
  v14[1] = (__int64)v14;
  v12 = 6;
  v14[0] = (__int64)v14;
  *(_OWORD *)&v10[0].LowPart = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, 0x28ui64, 0x64576D73ui64);
  v6 = PoolWithTag;
  if( PoolWithTag )
  {
    *PoolWithTag = 0i64;
    PoolWithTag[1] = 0i64;
    *((_QWORD *)PoolWithTag + 4) = 0i64;
    *((_DWORD *)PoolWithTag + 2) = -1;
    *(_DWORD *)PoolWithTag = 3;
    LowPart = SMKM_STORE_MGR::SmStoreRequestEx(v5, a2, (__int64)PoolWithTag, (__int64)&Object, (_QWORD *)v10);
    if( LowPart >= 0 )
    {
      KeWaitForSingleObject(&Object, Executive, 0, 0, 0i64);
      LowPart = v10[0].LowPart;
      a2 = 0i64;
      v6 = 0i64;
    }
    if( v6 )
      ExFreePoolWithTag(v6, 0);
  }
  else
  {
    LowPart = -1073741670;
  }
  if( a2 )
  {
    v8 = (struct _EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex(a1, *(_DWORD *)(a2 + 6016) & 0x3FF);
    ExReleaseRundownProtection(v8 + 1);
  }
  return(unsigned int)LowPart;
}

Referenced by:

No references.