MiInitializeLoadedModuleList

NTSTATUS __stdcall MiInitializeLoadedModuleList(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  bool v2; 
  _KLDR_DATA_TABLE_ENTRY **p_LoadOrderListHead; 
  _KLDR_DATA_TABLE_ENTRY *Flink; 
  _KLDR_DATA_TABLE_ENTRY *v5; 
  _KLDR_DATA_TABLE_ENTRY *v6; 
  NTSTATUS v7; 
  UINT64 SharePages; 
  _KLDR_DATA_TABLE_ENTRY *DataTableEntry; 

  DataTableEntry = 0i64;
  qword_140C4CA08 = (__int64)&qword_140C4CA00;
  qword_140C4CA00 = (__int64)&qword_140C4CA00;
  v2 = (KiSpeculationFeatures & 0x2000000) != 0 || (KiSpeculationFeatures & 0x4000000) != 0;
  ExInitializeResourceLite((INT64)&PsLoadedModuleResource);
  *(&WheapDeferredInternalLogsEventLock + 86) = 0i64;
  *(&PsLoadedModuleList + 1) = (INT64)&PsLoadedModuleList;
  PsLoadedModuleList = (INT64)&PsLoadedModuleList;
  *(&WheapDeferredInternalLogsEventLock + 85) = (char *)&WheapDeferredInternalLogsEventLock + 672;
  *(&WheapDeferredInternalLogsEventLock + 84) = (char *)&WheapDeferredInternalLogsEventLock + 672;
  NtSetDebugFilterState(0x7Eui64, 0i64, 1u);
  p_LoadOrderListHead = (_KLDR_DATA_TABLE_ENTRY **)&LoaderBlock->LoadOrderListHead;
  Flink = *p_LoadOrderListHead;
  MiLocateKernelSections(*p_LoadOrderListHead);
  if( Flink == (_KLDR_DATA_TABLE_ENTRY *)p_LoadOrderListHead )
  {
LABEL_11:
    MiBuildImportsForBootDrivers();
    return 1;
  }
  else
  {
    while( 1 )
    {
      LODWORD(SharePages) = 1;
      if( MiConstructLoaderEntry(Flink, &Flink->BaseDllName, &Flink->FullDllName, 0i64, SharePages, &DataTableEntry) < 0 )
        return 0;
      v5 = DataTableEntry;
      v6 = DataTableEntry + 1;
      if( DataTableEntry->DllBase == (void *)PsNtosImageBase && (MiFlags & 0x80000) == 0 )
      {
        RtlCreateInvertedFunctionTableCacheEntry(DataTableEntry->DllBase, DataTableEntry->SizeOfImage);
        v5 = DataTableEntry;
      }
      MiLockdownSections(v5);
      if( v2 && (DataTableEntry->Flags & 0x800000) == 0 )
      {
        v7 = MiCaptureBootDriverRetpolineInfo(
               DataTableEntry->DllBase,
               DataTableEntry->SizeOfImage,
               (UINT64 *)&v6->LoadedImports);
        if( ((v7 + 0x80000000) & 0x80000000) == 0 && v7 != -1073741637 )
          return 0;
      }
      Flink = (_KLDR_DATA_TABLE_ENTRY *)Flink->InLoadOrderLinks.Flink;
      if( Flink == (_KLDR_DATA_TABLE_ENTRY *)p_LoadOrderListHead )
        goto LABEL_11;
    }
  }
}

Referenced by:

MiInitSystem