MiUnlinkUnusedControlArea

_QWORD *__fastcall MiUnlinkUnusedControlArea(INT64 a1){
  __int64 v2; 
  INT64 v3; 
  _QWORD *result; 
  _QWORD *v5; 
  _QWORD **v6; 
  v2 = *(_QWORD *)(qword_140C4E388 + 8i64 * (*(_WORD *)(a1 + 60) & 0x3FF));
  v3 = MiComputePagedPoolSegmentBytes(a1);
  if( (*(_DWORD *)(a1 + 56) & 0x40000) != 0 && (*(_DWORD *)(v2 + 1348))-- == 1 )
  {
    KeCancelTimer((PKTIMER)(v2 + 1616));
    *(_BYTE *)(v2 + 1680) = 0;
  }
  result = (_QWORD *)(a1 + 8);
  v5 = *(_QWORD **)(a1 + 8);
  if( v5[1] != a1 + 8 || (v6 = *(_QWORD ***)(a1 + 16), *v6 != result) )
    __fastfail(3u);
  *v6 = v5;
  v5[1] = v6;
  *(_DWORD *)(a1 + 56) &= ~0x8000000u;
  *(_QWORD *)(a1 + 16) = a1 + 8;
  *result = result;
  *(_QWORD *)(v2 + 1696) -= v3;
  _InterlockedExchangeAdd64(&qword_140C4C6D8, -v3);
  return result;
}

Referenced by:

MiDeleteCachedSegment
MiMakeUnusedSegmentDeleteOnClose
MiProcessDeleteOnClose
MiRemoveUnusedSegment