ST_STORE::StReleaseRegion

void __fastcall ST_STORE::StReleaseRegion(UINT64 StoreId, UINT64 RegionIndex, UINT64 a3){
  __int64 v3; 
  __int64 v5; 
  int v6; 
  VOID *v7; 
  unsigned int v8; 
  __int64 v9; 
  void *v10; 
  INT64 Status; 
  int v12; 

  v3 = (unsigned int)RegionIndex;
  v12 = 0;
  if( *(_BYTE *)(StoreId + 776) )
  {
    *(_BYTE *)((unsigned int)RegionIndex + *(_QWORD *)(StoreId + 1048)) = 0;
  }
  else
  {
    v5 = *(_QWORD *)(StoreId + 800);
    if( (*(_BYTE *)(v5 + 6021) & 4) != 0 )
    {
      v6 = SMKM_STORE::SmStReleaseVirtualRegion(*(_QWORD *)(StoreId + 800), RegionIndex, 0);
    }
    else
    {
      v9 = *(_QWORD *)(v5 + 6216);
      v10 = (void *)(*(_QWORD *)(v9 + 8i64 * (unsigned int)RegionIndex) & 0xFFFFFFFFFFFFFFF8ui64);
      MiFreePagesFromMdl(v10, 0i64, a3);
      ExFreePoolWithTag(v10, 0);
      v6 = 0;
      *(_QWORD *)(v9 + 8 * v3) = 0i64;
    }
    if( v6 == -1073741650 )
      ST_STORE::StDmUpdateRegionLazyCleanup(StoreId, v3, 1);
    v7 = SmEtwEnabled(SmEtwKeywordStoreOps);
    if( v7 )
    {
      LODWORD(Status) = 0;
      SmEtwLogRegionOp(
        v7,
        5ui64,
        StoreId,
        (unsigned int)v3,
        Status,
        *(_WORD *)(*(_QWORD *)(StoreId + 1032) + 2 * v3) & 0x1FFF,
        0);
    }
    if( (unsigned int)v3 < *(_DWORD *)(StoreId + 1092) )
      *(_DWORD *)(StoreId + 1092) = v3;
  }
  if( *(_BYTE *)(StoreId + 776) )
    v8 = 0;
  else
    v8 = *(unsigned __int16 *)(*(_QWORD *)(StoreId + 1032) + 2 * v3) >> 13;
  --*(_DWORD *)(StoreId + 8i64 * v8 + 1824);
  if( !*(_BYTE *)(StoreId + 776) )
    *(_WORD *)(*(_QWORD *)(StoreId + 1032) + 2 * v3) &= 0x1FFFu;
  if( (*(_DWORD *)(StoreId + 832) & 4) != 0 )
  {
    ST_STORE::StDmGetSpaceStats(StoreId, &v12, 0i64);
    if( (unsigned int)(*(_DWORD *)(StoreId + 856) - v12) >= 8 && (*(_DWORD *)(StoreId + 2232) & 1) == 0 )
    {
      *(_DWORD *)(StoreId + 2216) = 0;
      *(_DWORD *)(StoreId + 2232) |= 1u;
      SMKM_STORE::SmStWorkItemQueue(*(_QWORD *)(StoreId + 800), StoreId + 2200, 6);
    }
  }
}

Referenced by:

No references.