MiMakeUnusedSegmentDeleteOnClose

NTSTATUS __stdcall MiMakeUnusedSegmentDeleteOnClose(INT64 a1){
  INT64 *v1; 
  unsigned __int8 v3; 
  _QWORD *v4; 
  unsigned __int8 v5; 
  _QWORD *v6; 
  _CONTROL_AREA *v7; 
  INT64 *v8; 
  UINT64 v9; 
  UINT64 v10; 
  NTSTATUS result; 

  v1 = (INT64 *)(a1 + 1344);
  v3 = ExAcquireSpinLockExclusive((INT64 *)(a1 + 1344));
  v4 = (_QWORD *)(a1 + 1704);
  while( 1 )
  {
    v5 = v3;
    v6 = (_QWORD *)*v4;
    if( (_QWORD *)*v4 == v4 )
      break;
    v7 = (_CONTROL_AREA *)(v6 - 1);
    v8 = v6 + 8;
    if( (unsigned int)ExTryAcquireSpinLockExclusiveAtDpcLevel(v8) )
    {
      MiUnlinkUnusedControlArea((INT64)v7);
      ExReleaseSpinLockExclusiveFromDpcLevel(v1);
      MiInsertUnusedSegment(v7);
      v10 = v9;
      ExReleaseSpinLockExclusiveFromDpcLevel(v8);
      __writecr8(v5);
      if( v10 )
        MiReturnCrossPartitionSectionCharges((_MI_CROSS_PARTITION_CHARGES *)a1, 1i64, v10);
    }
    else
    {
      ExReleaseSpinLockExclusiveFromDpcLevel(v1);
      __writecr8(v5);
    }
    v3 = ExAcquireSpinLockExclusive(v1);
  }
  ExReleaseSpinLockExclusiveFromDpcLevel(v1);
  result = v5;
  __writecr8(v5);
  return result;
}

Referenced by:

MiDrainCrossPartitionUsage