MiReturnCrossPartitionCharges

VOID __fastcall MiReturnCrossPartitionCharges(_MI_CROSS_PARTITION_CHARGES *ChargeInfo, UINT64 NumberOfPages){
  char v2; 
  __int64 v3; 
  _MI_CROSS_PARTITION_CHARGES *v4; 
  __int64 v6; 
  __int64 v7; 
  char v8; 
  _KEVENT *v9; 
  unsigned __int8 v10; 
  unsigned __int64 v11; 
  unsigned __int64 ChargeFailures; 
  int v13; 
  unsigned __int64 *p_ChargeFailures; 
  __int64 i; 

  v4 = ChargeInfo + 42;
  v6 = (int)NumberOfPages;
  v7 = v3;
  v8 = v2;
  v9 = 0i64;
  v10 = ExAcquireSpinLockExclusive((INT64 *)&ChargeInfo[42]);
  ChargeInfo[v6 + 59].ChargeFailures -= v7;
  v11 = v10;
  ChargeFailures = ChargeInfo[v6 + 59].ChargeFailures;
  if( (v8 & 1) != 0 )
    ChargeInfo[v6 + 60].ChargeFailures -= v7;
  if( !ChargeFailures && (ChargeInfo->CurrentCharges & 0x100000000i64) != 0 )
  {
    v13 = 0;
    p_ChargeFailures = &ChargeInfo[59].ChargeFailures;
    for( i = 0i64; i < 7; ++i )
    {
      if( *p_ChargeFailures )
        break;
      ++v13;
      p_ChargeFailures += 4;
    }
    if( v13 == 7 )
      v9 = (_KEVENT *)ChargeInfo[66].ChargeFailures;
  }
  ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v4);
  __writecr8(v11);
  if( v9 )
    KeSetEvent(v9, 1, 0);
}

Referenced by:

MiCreateLargePfnList
MiFreeLargePageCrossPartitionCharges
MiGetSubsectionCharges
MiReturnCrossPartitionCloneCharges
MiReturnCrossPartitionCombineCharges
MiReturnCrossPartitionSectionCharges