MiGetCrossPartitionCombineCharges

NTSTATUS __fastcall MiGetCrossPartitionCombineCharges(volatile INT64 *a1, INT64 a2){
  int v2; 
  unsigned __int64 v4; 
  struct _KPRCB *CurrentPrcb; 
  __int64 v6; 
  bool v7; 
  signed __int32 v8; 
  v2 = a2;
  v4 = 1i64;
  if( (_DWORD)a2 && (MiAcquireNonPagedResources((_MI_PARTITION *)a1, 1ui64) & 0x80000000) != 0i64 )
    return 0;
  if( (int)MiGetCrossPartitionCharges((INT64)a1, 2i64, 1, 1i64) < 0 )
  {
    if( v2 )
    {
      MiReturnCommit((_MI_PARTITION *)a1, 1ui64);
      if( a1 != (volatile INT64 *)&MiSystemPartition )
        goto LABEL_16;
      CurrentPrcb = KeGetCurrentPrcb();
      v6 = *((int *)CurrentPrcb + 8391);
      if( (_DWORD)v6 == -1 )
        goto LABEL_16;
      if( (unsigned __int64)(v6 + 1) <= 0x100 )
      {
        do
        {
          v8 = _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, v6 + 1, v6);
          v7 = (_DWORD)v6 == v8;
          LODWORD(v6) = v8;
          if( v7 )
            return 0;
        }
        while( v8 != -1 && (unsigned __int64)(v8 + 1i64) <= 0x100 );
      }
      if( (int)v6 > 192
        && (_DWORD)v6 != -1
        && (_DWORD)v6 == _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, 192, v6) )
      {
        v4 = (int)v6 - 192 + 1i64;
      }
      if( v4 )
LABEL_16:
        _InterlockedExchangeAdd64(a1 + 896, v4);
    }
    return 0;
  }
  return 1;
}

Referenced by:

MiConvertPrivateToProto
MiConvertStandbyToProto
MiIncrementCombinedPte