SmHpChunkHeapCleanup

VOID __fastcall SmHpChunkHeapCleanup(INT64 a1){
  unsigned int v1; 
  INT64 i; 
  __int64 v3; 
  __int64 v4; 
  _WORD *v5; 
  v1 = 1;
  for( i = a1; v1 < *(_DWORD *)(i + 256); ++v1 )
  {
    _BitScanReverse((unsigned int *)&v4, v1);
    v5 = (_WORD *)(*(_QWORD *)(i + 8 * v4) + 16 * (v1 ^ (unsigned __int64)(unsigned int)(1 << v4)));
    if( *(_QWORD *)v5 )
      SmHpBufferCleanup(i, v5);
  }
  v3 = 32i64;
  do
  {
    if( *(_QWORD *)i )
      ExFreePoolWithTag(*(PVOID *)i, 0);
    i += 8i64;
    --v3;
  }
  while( v3 );
}

Referenced by:

ST_STORE::StDmCleanup
ST_STORE::StDmStart