MiMakeSystemCachePteValid

VOID __stdcall MiMakeSystemCachePteValid(POHANDLE *ptr32, HANDLE PointerPte, INT8 a4){
  char v3; 
  char v5; 
  unsigned __int64 v6; 
  _QWORD *v8; 
  int v9; 
  UINT64 v10; 
  char *v11; 
  UINT64 ValidPte; 
  __int64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 
  int Wsle; 
  __int64 v17; 
  _CONTROL_AREA *v18; 
  _FILE_OBJECT *v19; 
  unsigned __int64 v20; 
  __int64 v21; 
  UINT8 v22; 
  UINT64 v23; 
  UINT64 v24; 
  BYTE v25; 
  UINT64 v26; 
  v26 = a4;
  v25 = 0;
  v5 = v3;
  v6 = a4;
  MiPteInShadowRange((UINT64)&v26);
  v8 = (_QWORD *)((char *)MmGetPfnDb() + 48 * ((v6 >> 12) & 0xFFFFFFFFFi64));
  v9 = 0;
  v23 = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + (((unsigned __int64)PointerPte >> 9) & 0x7FFFFFFFF8i64));
  v10 = v23;
  MiPteInShadowRange((UINT64)&v23);
  v11 = (char *)MmGetPfnDb() + 48 * ((v10 >> 12) & 0xFFFFFFFFFi64);
  v22 = MiLockPageInline((INT64)v11);
  *((_QWORD *)v11 + 3) ^= (*((_QWORD *)v11 + 3) ^ (*((_QWORD *)v11 + 3) + 1i64)) & 0x3FFFFFFFFFFFFFFFi64;
  _InterlockedAnd64((volatile signed __int64 *)v11 + 3, 0x7FFFFFFFFFFFFFFFui64);
  v24 = (UINT64)MiLockWorkingSetOptimal((INT64)ptr32, (UINT64)PointerPte, &v25);
  v23 = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  if( (v23 & 1) != 0 )
  {
    Wsle = 0;
    v15 = 0i64;
    v14 = 0i64;
    goto LABEL_7;
  }
  ValidPte = v26;
  if( (v23 & 8) != 0 )
    ValidPte = MiMakeValidPte((UINT64)PointerPte, (v26 >> 12) & 0xFFFFFFFFFi64, 536870913i64);
  v13 = ValidPte & 0xFFFFFFFFFFFFFEFBui64 | ((unsigned __int64)(word_140C4DD48 & 1) << 8);
  if( (v5 & 8) != 0 && MiIsPfnFileOnly((INT64)v8) )
    v13 &= 0xFFFFFFFFFFFFFFBDui64;
  LODWORD(v21) = 0;
  v14 = v8[2];
  v15 = v8[1] | 0x8000000000000000ui64;
  Wsle = MiAllocateWsle((__int64)ptr32, (unsigned __int64)PointerPte, v8, 0, v13, v21, 0i64);
  if( Wsle )
  {
    if( PfSnNumActiveTraces && (v14 & 0x400) != 0 )
      v9 = 1;
LABEL_7:
    if( Wsle )
      goto LABEL_8;
  }
  MiLockAndDecrementShareCount((UINT64)v8, 0);
  MiLockAndDecrementShareCount((UINT64)v11, 0);
LABEL_8:
  MiUnlockPageTableInternal((INT64)ptr32, v24);
  MiUnlockWorkingSetShared((INT64)ptr32, v22);
  if( v9 )
  {
    if( qword_140C4DC80 )
    {
      if( (v14 & 0x10) == 0 )
        v14 &= ~qword_140C4DC80;
    }
    v17 = v14 >> 16;
    v18 = *(_CONTROL_AREA **)v17;
    v19 = MiReferenceControlAreaFile(*(_CONTROL_AREA **)v17);
    v20 = MiStartingOffset(v17, v15, 0xFFFFFFFF);
    PfSnLogPageFault(v19, v20, 4ui64);
    MiDereferenceControlAreaFile((__int64)v18, (unsigned __int64)v19);
  }
}

Referenced by:

MmCopyToCachedPage