MxZeroPageTablePfns

INT64 __stdcall MxZeroPageTablePfns(WCHAR *ServiceName, UINT8 *BootStart, UINT64 *PnpFlags){
  INT64 result; 
  int v4; 
  unsigned __int64 v6; 
  unsigned __int64 v7; 
  _OWORD *v8; 
  UINT64 v9; 
  __int64 v10; 
  __int64 v11; 
  UINT64 v12; 
  UINT64 v13; 
  if( ServiceName <= (WCHAR *)BootStart )
  {
    v4 = (int)PnpFlags;
    v6 = (unsigned __int64)ServiceName;
    do
    {
      result = MI_READ_PTE_LOCK_FREE(v6);
      v12 = result;
      v7 = result;
      if( (result & 1) != 0 )
      {
        MiPteInShadowRange((UINT64)&v12);
        v8 = (_OWORD *)((char *)MmGetPfnDb() + 48 * ((v7 >> 12) & 0xFFFFFFFFFi64));
        v13 = MI_READ_PTE_LOCK_FREE((INT64)MmGetPteBase() + ((v6 >> 9) & 0x7FFFFFFFF8i64));
        v9 = v13;
        MiPteInShadowRange((UINT64)&v13);
        result = (INT64)MmGetPfnDb();
        v10 = 6 * ((v9 >> 12) & 0xFFFFFFFFFi64);
        *(_OWORD *)(result + 8 * v10) = 0i64;
        *(_OWORD *)(result + 8 * v10 + 16) = 0i64;
        *(_OWORD *)(result + 8 * v10 + 32) = 0i64;
        if( !v4 || (v12 & 0x80u) == 0i64 )
        {
          *v8 = 0i64;
          v8[1] = 0i64;
          v8[2] = 0i64;
          result = (INT64)MmGetPxeSelfRef();
          if( v4 > 1 && v6 != result )
          {
            v11 = (__int64)((v6 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
            result = MxZeroPageTablePfns((WCHAR *)v11, (UINT8 *)(v11 + 4088), (UINT64 *)(unsigned int)(v4 - 1));
          }
        }
      }
      v6 += 8i64;
    }
    while( v6 <= (unsigned __int64)BootStart );
  }
  return result;
}

Referenced by:

MiInitializePfnsForValidMappings
MxZeroPageTablePfns