MiSplitReducedCommitClonePage

__int64 __fastcall MiSplitReducedCommitClonePage(unsigned __int64 *a1){
  int v3; 
  _ETHREAD *CurrentThread; 
  INT64 *v5; 
  unsigned __int64 v6; 
  INT64 *v7; 
  int v8; 
  INT64 **v9; 
  unsigned __int64 v10; 
  INT64 *v11; 
  INT64 **v12; 
  MMPTE *v13; 
  INT64 v14; 
  unsigned __int64 v15; 
  UNICODE_STRING *v16; 
  UINT8 v17; 
  PWCHAR v18; 
  int v19; 
  __int64 v20; 
  _QWORD *CloneAddress; 
  __int64 v22; 
  unsigned __int64 v23; 
  INT64 v24; 
  INT64 v25; 
  v24 = 0i64;
  if( !MiProcessCommitIntact() )
    return 3221225477i64;
  MiUnlockProbePacketWorkingSet((INT64)a1);
  v3 = 1;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v5 = (INT64 *)((char *)MmGetPteBase() + ((*a1 >> 9) & 0x7FFFFFFFF8i64));
  v6 = a1[10];
  --*((_WORD *)CurrentThread + 243);
  ExAcquirePushLockExclusiveEx(v6 + 1232, 0i64);
  v8 = MiChargeFullProcessCommitment(a1[10], 1ui64);
  if( v8 >= 0 )
  {
    MiLockProbePacketWorkingSet((INT64)a1, v7, v9);
    v13 = MiLockLowestValidPageTable(a1[12], v5, (INT64 **)&v24);
    v14 = v24;
    a1[4] = (unsigned __int64)v13;
    if( (INT64 *)v14 == v5 )
    {
      v25 = MI_READ_PTE_LOCK_FREE(v14);
      if( (v25 & 1) != 0 )
      {
        v15 = MI_READ_PTE_LOCK_FREE((INT64)&v25);
        LOBYTE(v19) = MI_PFN_IS_PROTO(
                        (UNICODE_STRING *)MmGetPfnDb() + 3 * ((v15 >> 12) & 0xFFFFFFFFFi64),
                        v16,
                        v17,
                        v18);
        if( v19 )
        {
          if( (*(_QWORD *)(v20 + 40) & 0x1000000000i64) != 0 || *(__int64 *)(v20 + 8) <= 0 )
          {
            CloneAddress = MiLocateCloneAddress(a1[10], *(_QWORD *)(v20 + 8) | 0x8000000000000000ui64);
            if( CloneAddress )
            {
              if( *(_QWORD *)(*(_QWORD *)(v22 + 1680) + 360i64) > CloneAddress[12] )
              {
                v8 = MiCopyOnWrite(*a1, (UINT64 *)v5, -1i64, 0i64);
                if( v8 >= 0 )
                  v3 = 0;
              }
            }
          }
        }
      }
    }
    MiUnlockProbePacketWorkingSet((INT64)a1);
    if( v3 )
      MiReturnFullProcessCommitment(a1[10], 1ui64);
    v23 = a1[10];
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)(v23 + 1232), 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)(v23 + 1232));
    KeAbPostRelease((PVOID)(v23 + 1232));
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
    if( v8 < 0 )
      MiCopyOnWriteCheckConditions(a1[12], (unsigned int)v8);
    v8 = 0;
  }
  else
  {
    v10 = a1[10];
    if( (_InterlockedExchangeAdd64((volatile signed __int64 *)(v10 + 1232), 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock((volatile INT64 *)(v10 + 1232));
    KeAbPostRelease((PVOID)(v10 + 1232));
    KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
  }
  MiLockProbePacketWorkingSet((INT64)a1, v11, v12);
  return(unsigned int)v8;
}

Referenced by:

MiProbeLeafPteAccess