SMKM_STORE_MGR::SmStoreContentsRundown

__int64 __fastcall SMKM_STORE_MGR::SmStoreContentsRundown(__int64 a1, __int64 a2){
  VOID **PoolWithTag; 
  __int64 v5; 
  VOID **v6; 
  int LowPart; 
  _EX_RUNDOWN_REF *v8; 
  _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].anonymous_0.LowPart = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(0x200ui64, 0x28ui64, 1683451251i64);
  v6 = PoolWithTag;
  if( PoolWithTag )
  {
    *(_OWORD *)PoolWithTag = 0i64;
    *((_OWORD *)PoolWithTag + 1) = 0i64;
    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((UINT64)&Object, 0, 0, 0, 0i64);
      LowPart = v10[0].anonymous_0.LowPart;
      a2 = 0i64;
      v6 = 0i64;
    }
    if( v6 )
      ExFreePoolWithTag(v6, 0);
  }
  else
  {
    LowPart = -1073741670;
  }
  if( a2 )
  {
    v8 = (_EX_RUNDOWN_REF *)SmKmStoreRefFromStoreIndex(a1, *(_DWORD *)(a2 + 6016) & 0x3FF);
    ExReleaseRundownProtection(v8 + 1);
  }
  return(unsigned int)LowPart;
}

Referenced by:

No references.