MiInitializeBootLoadedDriverPfns

VOID __stdcall MiInitializeBootLoadedDriverPfns(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  _LIST_ENTRY *p_LoadOrderListHead; 
  _LIST_ENTRY *Flink; 
  UINT64 v3; 
  _MMPFN *v4; 
  int v5; 
  int v6; 
  char *v7; 
  __int64 v8; 
  unsigned __int64 v9; 
  __int64 v10; 
  char *v11; 
  UINT64 v12; 
  int v13; 
  UINT64 v14; 
  __int64 v15; 
  _LIST_ENTRY *v16; 

  v14 = 0i64;
  p_LoadOrderListHead = &LoaderBlock->LoadOrderListHead;
  Flink = LoaderBlock->LoadOrderListHead.Flink;
  v16 = &LoaderBlock->LoadOrderListHead;
  while( Flink != p_LoadOrderListHead )
  {
    v9 = (unsigned __int64)Flink[3].Flink;
    v7 = (char *)MmGetPteBase() + ((v9 >> 9) & 0x7FFFFFFFF8i64);
    if( MI_IS_PHYSICAL_ADDRESS((VOID *)v9) )
    {
      if( (MiFlags & 0x10000) != 0 )
        MiActOnLargeKernelHalPages(
          v9,
          (__int64(__fastcall *)(unsigned __int64, unsigned __int64))MiValidateKernelHalLargePageRange);
    }
    else
    {
      v10 = ((unsigned int)dword_140C4C9F0 >> 12)
          + (unsigned int)(((unsigned __int64)LODWORD(Flink[4].Flink) + 4095) >> 12);
      if( (PVOID)v9 != PsHalImageBase && v9 != PsNtosImageBase )
        v10 = (unsigned int)(dword_140C4C98C + v10);
      v11 = &v7[8 * v10];
      v8 = (unsigned int)v10;
      v12 = 0i64;
      v15 = (unsigned int)v10;
      if( v7 < v11 )
      {
        MiPteInShadowRange((UINT64)&v14);
        do
        {
          LODWORD(v3) = MI_READ_PTE_LOCK_FREE((INT64)v7);
          v14 = v3;
          v4 = &MmGetPfnDb()[(v3 >> 12) & 0xFFFFFFFFFi64];
          LOBYTE(v5) = MiIsPfnFromSlabAllocation((INT64)v4);
          if( v5 )
            ++v12;
          if( (v14 & 0x8000000000000000ui64) == 0i64 )
          {
            v6 = BYTE2(MiFlags) & 1;
            v4->OriginalPte.u.Long = v4->OriginalPte.u.Long & 0xFFFFFFFFFFFFFC1Fui64 | ((-(__int64)(v6 != 0) & 0xFFFFFFFFFFFFFFA0ui64)
                                                                                      + 192);
            if( v6 )
            {
              if( (((unsigned __int64)v4->u4._bf_0 >> 60) & 7) != 3 )
                MiMarkPfnVerified(v4, 0i64);
            }
          }
          *((_BYTE *)&v4->u3 + 3) |= 8u;
          v7 += 8;
        }
        while( v7 < v11 );
        p_LoadOrderListHead = v16;
        if( v12 )
        {
          MiAcquireNonPagedResources(&Irp, v12);
          if( v13 < 0 )
            return;
          *(&stru_140C4DB30 + 568) += v12;
        }
        v8 = v15;
      }
      if( (PVOID)v9 != PsHalImageBase && v9 != PsNtosImageBase )
      {
        _InterlockedExchangeAdd((_DWORD *)&stru_140C4DB30 + 1144, v10);
        *(&stru_140C4DB30 + 568) -= v8;
      }
    }
    Flink = Flink->Flink;
  }
  MiFlags |= 0x1000u;
}

Referenced by:

MiInitializeDriverImages