MiChargeForLockedPage

INT64 __fastcall MiChargeForLockedPage(INT64 a1, CHAR a2){
  UINT8 v2; 
  WCHAR *v3; 
  int v4; 
  INT64 v5; 
  int v6; 
  INT64 v7; 
  unsigned int v8; 
  char v9; 
  int IsPfnCommitNotCharged; 
  char v11; 
  __int64 v12; 
  ULONG_PTR *v13; 
  INT64 result; 
  struct _KPRCB *CurrentPrcb; 
  signed __int32 v16; 
  signed __int32 v17; 
  unsigned int v18; 
  v4 = a2 & 1;
  v5 = (unsigned int)-(v4 != 0);
  LOBYTE(v6) = MI_PFN_IS_PROTO((UNICODE_STRING *)a1, (UNICODE_STRING *)(v4 ^ 1u), v2, v3);
  if( v6 && (*(_DWORD *)(v7 + 16) & 0x400i64) != 0 )
  {
    v9 = 1;
  }
  else
  {
    IsPfnCommitNotCharged = MiIsPfnCommitNotCharged(v7);
    v9 = v11;
    if( IsPfnCommitNotCharged )
      v9 = 1;
  }
  v12 = (*(_QWORD *)(v7 + 40) >> 39) & 0x3FFi64;
  v13 = *(ULONG_PTR **)(qword_140C4E388 + 8 * v12);
  if( !v9 || (result = MiChargeCommit(*(_MI_PARTITION **)(qword_140C4E388 + 8 * v12), 1ui64, v8), (_DWORD)result) )
  {
    if( v13 == &MiSystemPartition )
    {
      CurrentPrcb = KeGetCurrentPrcb();
      v16 = *((_DWORD *)CurrentPrcb + 8391);
      if( v16 )
      {
        while( v16 != -1 )
        {
          v17 = v16;
          v16 = _InterlockedCompareExchange((volatile signed __int32 *)CurrentPrcb + 8391, v16 - 1, v16);
          if( v17 == v16 )
            return 1;
          if( !v16 )
            break;
        }
      }
    }
    v18 = MiChargePartitionResidentAvailable((INT64)v13, 1ui64, v5);
    if( !v18 )
    {
      if( v9 )
        MiReturnCommit((_MI_PARTITION *)v13, 1ui64);
    }
    return v18;
  }
  return result;
}

Referenced by:

MiAddLockedPageCharge
MiCheckProtoPtePageState
MiLockProtoPoolPage
MiMigratePfn
MiWalkEntireImage