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