MiMakeSystemLeavesNonZero

CHAR __fastcall MiMakeSystemLeavesNonZero(INT64 a1, INT64 a2, INT64 a3){
  int v3; 
  _MMPTE *PteBase; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  __int64 v8; 
  _QWORD *v9; 
  unsigned __int64 v10; 
  _ETHREAD *CurrentThread; 
  unsigned __int64 v12; 
  int i; 
  unsigned __int64 v14; 
  int v15; 
  bool v16; 
  v3 = a3;
  PteBase = MmGetPteBase();
  v5 = *(_QWORD *)(a1 + 32);
  v6 = *(_QWORD *)(a1 + 40);
  v7 = ((a2 << 25) - ((_QWORD)PteBase << 25)) >> 16;
  if( v3 > 0 )
  {
    v8 = (unsigned int)v3;
    do
    {
      v5 = (unsigned __int64)PteBase + ((v5 >> 9) & 0x7FFFFFFFF8i64);
      v6 = (unsigned __int64)PteBase + ((v6 >> 9) & 0x7FFFFFFFF8i64);
      --v8;
    }
    while( v8 );
  }
  v9 = (_QWORD *)v7;
  v10 = v7 + 4088;
  if( v5 >= v7 )
    v9 = (_QWORD *)v5;
  if( v6 < v7 + 4096 )
    v10 = v6;
  CurrentThread = (_ETHREAD *)MiSwizzleInvalidPte(768i64);
  v12 = (unsigned __int64)CurrentThread;
  for( i = ((__int64)(v10 - (_QWORD)v9) >> 3) + 1; i; --i )
  {
    v14 = v12;
    v15 = 0;
    LODWORD(CurrentThread) = MiPteInShadowRange((UINT64)v9);
    if( (_DWORD)CurrentThread )
    {
      LODWORD(CurrentThread) = MiPteHasShadow();
      if( (_DWORD)CurrentThread )
      {
        v15 = 1;
        if( !HIBYTE(word_140C4DD48) )
        {
          v16 = (v12 & 1) == 0;
          goto LABEL_19;
        }
      }
      else
      {
        CurrentThread = (_ETHREAD *)KeGetCurrentThread();
        if( (*(_DWORD *)(*((_QWORD *)CurrentThread + 23) + 2172i64) & 0x1000) != 0 )
        {
          v16 = (v12 & 1) == 0;
LABEL_19:
          if( !v16 )
            v14 = v12 | 0x8000000000000000ui64;
        }
      }
    }
    *v9 = v14;
    if( v15 )
      LOBYTE(CurrentThread) = MiWritePteShadow();
    ++v9;
  }
  return(char)CurrentThread;
}

Referenced by:

MiComputePxeWalkAction
MiCreateSystemPageTable