MiInitializeDriverImages

NTSTATUS __stdcall MiInitializeDriverImages(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  unsigned __int64 v1; 
  _RTL_BITMAP *v3; 
  _MMPTE *PteBase; 
  _MMPTE *v5; 
  char *v6; 
  __int64 v7; 
  char *v8; 
  _DWORD *v9; 
  UINT64 i; 
  _RTL_BITMAP *v11; 
  VOID *v12; 
  int v13; 
  _SUBSECTION *v14; 
  UINT64 v15; 
  INT64 v16; 
  int v17; 
  int v18; 
  NTSTATUS result; 
  unsigned __int16 *v20; 
  unsigned __int16 *v21; 
  __int64 v22; 
  unsigned __int64 v23; 
  unsigned __int16 *j; 
  unsigned __int64 v25; 
  _QWORD *Pool; 
  __int16 v27; 
  _QWORD *v28; 
  UINT64 PagingLevel; 
  _MI_PTE_RANGE PteHierarchy; 
  char v31; 

  v1 = *(&stru_140C4DB30 + 947);
  v3 = (_RTL_BITMAP *)MiSystemVaToDynamicBitmap(12i64);
  if( !MiBuildDynamicRegion(v3, (VOID *)v1, 0x8000000000ui64) )
    return 0;
  PteBase = MmGetPteBase();
  v5 = (_MMPTE *)(v1 + 0x7FFFFFFFFFi64);
  v6 = &v31;
  v7 = 4i64;
  do
  {
    v1 = (unsigned __int64)PteBase + ((v1 >> 9) & 0x7FFFFFFFF8i64);
    v5 = (_MMPTE *)((char *)PteBase + (((unsigned __int64)v5 >> 9) & 0x7FFFFFFFF8i64));
    *((_QWORD *)v6 - 1) = v1;
    *(_QWORD *)v6 = v5;
    v6 += 16;
    --v7;
  }
  while( v7 );
  LODWORD(PagingLevel) = 3;
  MxMarkActiveDriverBits(
    (_MI_DYNAMIC_BITMAP *)((char *)&stru_140C4DB30 + 752),
    (_MMPTE *)v1,
    v5,
    &PteHierarchy,
    PagingLevel);
  v8 = (char *)*(&stru_140C4DB30 + 95);
  v9 = (_DWORD *)((char *)PteBase + ((*(&stru_140C4DB30 + 95) >> 9) & 0x7FFFFFFFF8i64));
  for( i = 0i64; i < *(&stru_140C4DB30 + 94); i += 0x8000i64 )
  {
    if( (*v9 & 0x800i64) == 0 )
    {
      if( !MiSplitBitmapPages(MiVaNonPagedPool, v8, 8ui64) )
        return 0;
      RtlClearBitsEx((_RTL_BITMAP_EX *)&stru_140C4DB30 + 47, i, 0x8000ui64);
    }
    v8 += 4096;
    v9 += 2;
  }
  *(&stru_140C4DB30 + 94) = i;
  v11 = (_RTL_BITMAP *)MiSystemVaToDynamicBitmap(11i64);
  if( !MiBuildDynamicRegion(v11, v12, 0x2000000000ui64) )
    return 0;
  HighestPfn = -1i64;
  qword_140C4CA68 = 0i64;
  qword_140C4CA40 = (__int64)&qword_140C4CA38;
  qword_140C4CA38 = (__int64)&qword_140C4CA38;
  if( MmLargePageDriverBufferLength != -1 )
  {
    v20 = (unsigned __int16 *)&MmLargePageDriverBuffer;
    v21 = (unsigned __int16 *)((char *)&MmLargePageDriverBuffer
                             + 2 * (((unsigned __int64)(unsigned int)MmLargePageDriverBufferLength - 2) >> 1));
    if( &MmLargePageDriverBuffer < (_UNKNOWN *)v21 )
    {
      v22 = 0x100002601i64;
      do
      {
        v23 = *v20;
        if( (unsigned __int16)v23 <= 0x20u && _bittest64(&v22, v23) || (_WORD)v23 == 12288 )
        {
          j = v20;
        }
        else
        {
          if( (_DWORD)v23 == 42 )
          {
            byte_140C4CA29 = 1;
            break;
          }
          for( j = v20; j < v21; ++j )
          {
            v25 = *j;
            if( (unsigned __int16)v25 <= 0x20u && _bittest64(&v22, v25) )
              break;
            if( (_WORD)v25 == 12288 )
              break;
          }
          Pool = MiAllocatePool(64i64, 0x20ui64, 0x704C6D4Dui64);
          if( !Pool )
            break;
          v27 = 2 * (j - v20);
          Pool[3] = v20;
          *((_WORD *)Pool + 8) = v27;
          *((_WORD *)Pool + 9) = v27;
          v28 = (_QWORD *)qword_140C4CA40;
          if( *(__int64 **)qword_140C4CA40 != &qword_140C4CA38 )
            __fastfail(3u);
          *Pool = &qword_140C4CA38;
          Pool[1] = v28;
          v22 = 0x100002601i64;
          *v28 = Pool;
          qword_140C4CA40 = (__int64)Pool;
        }
        v20 = j + 1;
      }
      while( j + 1 < v21 );
    }
  }
  BugCheckParameter3 = 0i64;
  MiInitializeBootLoadedDriverPfns(LoaderBlock);
  if( !v13 )
    return 0;
  if( !MiInitializeDriverPtes((INT64)LoaderBlock) )
    return 0;
  MiFreeKernelPadSections(
    *(_KLDR_DATA_TABLE_ENTRY **)(qword_140C4CA58 + 48),
    *(_QWORD *)(qword_140C4CA58 + 48) + *(unsigned int *)(qword_140C4CA58 + 64));
  MiReloadBootLoadedDrivers(LoaderBlock, v14, v15, v16);
  if( !v17 )
    return 0;
  LOBYTE(v18) = MiCreateInitialSystemWsles();
  if( !v18 )
    return 0;
  VfInitBootDriversLoaded(LoaderBlock);
  result = 1;
  qword_140C4CA50 = (__int64)&qword_140C4CA48;
  qword_140C4CA48 = &qword_140C4CA48;
  return result;
}

Referenced by:

MiInitSystem