MiInitializeDriverImages

UINT64 __fastcall MiInitializeDriverImages(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  unsigned __int64 v1; 
  INT64 *v3; 
  _MMPTE *PteBase; 
  unsigned __int64 v5; 
  char *v6; 
  __int64 v7; 
  char *v8; 
  _DWORD *v9; 
  UINT64 i; 
  INT64 *v11; 
  PVOID v12; 
  int v13; 
  int v14; 
  UINT64 result; 
  __int64 *v16; 
  unsigned __int16 *v17; 
  __int64 v18; 
  unsigned __int64 v19; 
  __int64 *j; 
  unsigned __int64 v21; 
  __int64 v22; 
  __int16 v23; 
  __int64 *v24; 
  char v25[8]; 
  char v26; 
  v1 = *(_QWORD *)PagesPerBit;
  v3 = MiSystemVaToDynamicBitmap(12i64);
  if( !MiBuildDynamicRegion((RTL_BITMAP *)v3, (PVOID)v1, 0x8000000000ui64) )
    return 0i64;
  PteBase = MmGetPteBase();
  v5 = v1 + 0x7FFFFFFFFFi64;
  v6 = &v26;
  v7 = 4i64;
  do
  {
    v1 = (unsigned __int64)PteBase + ((v1 >> 9) & 0x7FFFFFFFF8i64);
    v5 = (unsigned __int64)PteBase + ((v5 >> 9) & 0x7FFFFFFFF8i64);
    *((_QWORD *)v6 - 1) = v1;
    *(_QWORD *)v6 = v5;
    v6 += 16;
    --v7;
  }
  while( v7 );
  MxMarkActiveDriverBits((unsigned __int64 *)&qword_140C4DE20, v1, v5, (__int64)v25, 3);
  v8 = (char *)NextBuffer;
  v9 = (_DWORD *)((char *)PteBase + (((unsigned __int64)NextBuffer >> 9) & 0x7FFFFFFFF8i64));
  for( i = 0i64; i < qword_140C4DE20; i += 0x8000i64 )
  {
    if( (*v9 & 0x800i64) == 0 )
    {
      if( !(unsigned int)MiSplitBitmapPages(5i64, v8, 8ui64) )
        return 0i64;
      RtlClearBitsEx((INT64)&qword_140C4DE20, i, 0x8000ui64);
    }
    v8 += 4096;
    v9 += 2;
  }
  qword_140C4DE20 = i;
  v11 = MiSystemVaToDynamicBitmap(11i64);
  if( !MiBuildDynamicRegion((RTL_BITMAP *)v11, v12, 0x2000000000ui64) )
    return 0i64;
  HighestPfn = -1i64;
  qword_140C4CA68 = 0i64;
  qword_140C4CA40 = (__int64)&qword_140C4CA38;
  qword_140C4CA38 = (__int64)&qword_140C4CA38;
  if( MmLargePageDriverBufferLength != -1 )
  {
    v16 = MmLargePageDriverBuffer;
    v17 = (unsigned __int16 *)MmLargePageDriverBuffer
        + (((unsigned __int64)(unsigned int)MmLargePageDriverBufferLength - 2) >> 1);
    if( MmLargePageDriverBuffer < (__int64 *)v17 )
    {
      v18 = 0x100002601i64;
      do
      {
        v19 = *(unsigned __int16 *)v16;
        if( (unsigned __int16)v19 <= 0x20u && _bittest64(&v18, v19) || (_WORD)v19 == 12288 )
        {
          j = v16;
        }
        else
        {
          if( (_DWORD)v19 == 42 )
          {
            byte_140C4CA29 = 1;
            break;
          }
          for( j = v16; j < (__int64 *)v17; j = (__int64 *)((char *)j + 2) )
          {
            v21 = *(unsigned __int16 *)j;
            if( (unsigned __int16)v21 <= 0x20u && _bittest64(&v18, v21) )
              break;
            if( (_WORD)v21 == 12288 )
              break;
          }
          LODWORD(v22) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
          if( !v22 )
            break;
          v23 = 2 * (((char *)j - (char *)v16) >> 1);
          *(_QWORD *)(v22 + 24) = v16;
          *(_WORD *)(v22 + 16) = v23;
          *(_WORD *)(v22 + 18) = v23;
          v24 = (__int64 *)qword_140C4CA40;
          if( *(__int64 **)qword_140C4CA40 != &qword_140C4CA38 )
            __fastfail(3u);
          *(_QWORD *)v22 = &qword_140C4CA38;
          *(_QWORD *)(v22 + 8) = v24;
          v18 = 0x100002601i64;
          *v24 = v22;
          qword_140C4CA40 = v22;
        }
        v16 = (__int64 *)((char *)j + 2);
      }
      while( (char *)j + 2 < (char *)v17 );
    }
  }
  qword_140C4CAA0 = 0i64;
  MiInitializeBootLoadedDriverPfns(LoaderBlock);
  if( !v13 )
    return 0i64;
  if( !(unsigned int)MiInitializeDriverPtes((INT64)LoaderBlock) )
    return 0i64;
  MiFreeKernelPadSections(
    *(_QWORD **)(qword_140C4CA58 + 48),
    *(_QWORD *)(qword_140C4CA58 + 48) + *(_DWORD *)(qword_140C4CA58 + 64));
  MiReloadBootLoadedDrivers(LoaderBlock);
  if( !v14 || !MiCreateInitialSystemWsles() )
    return 0i64;
  VfInitBootDriversLoaded(LoaderBlock);
  result = 1i64;
  qword_140C4CA50 = (__int64)&qword_140C4CA48;
  qword_140C4CA48 = &qword_140C4CA48;
  return result;
}

Referenced by:

MiInitSystem