MiMakeSystemCachePteValid

VOID __stdcall MiMakeSystemCachePteValid(POHANDLE *ptr32, _HANDLE PointerPte, INT8 a4){
  char v3; 
  char v5; 
  unsigned __int64 v6; 
  UINT64 v7; 
  _MMPFN *v8; 
  int v9; 
  UINT64 v10; 
  UINT64 v11; 
  _MMPFN *v12; 
  UINT64 v13; 
  UINT64 v14; 
  unsigned __int64 PteContents; 
  __int64 bf_0; 
  _MMPTE *v17; 
  NTSTATUS Wsle; 
  UINT64 v19; 
  __int64 v20; 
  _CONTROL_AREA *v21; 
  _FILE_OBJECT *v22; 
  UINT64 v23; 
  UINT64 v24; 
  int v25; 
  _MI_FAULT_VA_LIST *v26; 
  UINT8 WsIrql; 
  UINT64 v28; 
  UINT64 v29; 
  char v30; 
  UINT64 v31; 

  v31 = a4;
  v30 = 0;
  v5 = v3;
  v6 = a4;
  v7 = *(_QWORD *)&PointerPte;
  MiPteInShadowRange((UINT64)&v31);
  v8 = &MmGetPfnDb()[(v6 >> 12) & 0xFFFFFFFFFi64];
  v9 = 0;
  LODWORD(v10) = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + ((v7 >> 9) & 0x7FFFFFFFF8i64));
  v28 = v10;
  v11 = v10;
  MiPteInShadowRange((UINT64)&v28);
  v12 = &MmGetPfnDb()[(v11 >> 12) & 0xFFFFFFFFFi64];
  WsIrql = MiLockPageInline(v12);
  v12->u2._bf_0 ^= (v12->u2._bf_0 ^ (v12->u2._bf_0 + 1)) & 0x3FFFFFFFFFFFFFFFi64;
  _InterlockedAnd64(&v12->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
  v29 = (UINT64)MiLockWorkingSetOptimal((INT64)ptr32, v7, &v30);
  LODWORD(v13) = MI_READ_PTE_LOCK_FREE(v7);
  v28 = v13;
  if( (v13 & 1) != 0 )
  {
    Wsle = 0;
    v17 = 0i64;
    bf_0 = 0i64;
    goto LABEL_7;
  }
  v14 = v31;
  if( (v28 & 8) != 0 )
  {
    LODWORD(v24) = MiMakeValidPte((_XSTATE_CONFIGURATION *)v7, (v31 >> 12) & 0xFFFFFFFFFi64, 536870913i64);
    v14 = v24;
  }
  PteContents = v14 & 0xFFFFFFFFFFFFFEFBui64 | ((unsigned __int64)(*(&stru_140C4DB30 + 536) & 1) << 8);
  if( (v5 & 8) != 0 )
  {
    LOBYTE(v25) = MiIsPfnFileOnly((INT64)v8);
    if( v25 )
      PteContents &= 0xFFFFFFFFFFFFFFBDui64;
  }
  LODWORD(v26) = 0;
  bf_0 = v8->OriginalPte.u.Hard.$976DF529DAC3D73085C9E386D94B91E6::$E228DCF3D8940E384DBC5EFCA756D8B6::_bf_0;
  v17 = (_MMPTE *)(v8->PteLong | 0x8000000000000000ui64);
  Wsle = MiAllocateWsle((_MMSUPPORT_INSTANCE *)ptr32, (_MMPTE *)v7, v8, 0i64, (_MMPTE)PteContents, v26);
  if( Wsle )
  {
    if( PfSnNumActiveTraces && (bf_0 & 0x400) != 0 )
      v9 = 1;
LABEL_7:
    if( Wsle )
      goto LABEL_8;
  }
  MiLockAndDecrementShareCount(v8, 0i64);
  MiLockAndDecrementShareCount(v12, 0i64);
LABEL_8:
  MiUnlockPageTableInternal((INT64)ptr32, v29);
  LOBYTE(v19) = WsIrql;
  MiUnlockWorkingSetShared((_MMSUPPORT_INSTANCE *)ptr32, v19);
  if( v9 )
  {
    if( *(&stru_140C4DB30 + 42) )
    {
      if( (bf_0 & 0x10) == 0 )
        bf_0 &= ~*(&stru_140C4DB30 + 42);
    }
    v20 = bf_0 >> 16;
    v21 = *(_CONTROL_AREA **)v20;
    v22 = MiReferenceControlAreaFile(*(_CONTROL_AREA **)v20);
    LODWORD(v23) = MiStartingOffset((_SUBSECTION *)v20, v17, 0xFFFFFFFFui64);
    PfSnLogPageFault(v22, v23, 4ui64);
    MiDereferenceControlAreaFile(v21, v22);
  }
}

Referenced by:

MmCopyToCachedPage