PipInitializeDriverDependentDLLs
void __fastcall PipInitializeDriverDependentDLLs(int a1, _LIST_ENTRY *a2){
_LIST_ENTRY *v4;
_LIST_ENTRY *Flink;
bool v6;
_LIST_ENTRY *v7;
int Flink_high;
char v9;
_QWORD v10[14];
int v11;
memset(v10, 0i64, 0x68u);
v11 = 0;
v4 = a2 + 1;
Flink = v4->Flink;
while( Flink != v4 )
{
v7 = Flink;
Flink = Flink->Flink;
if( ((__int64)v7[6].Blink & 0x4000000) != 0 )
{
Flink_high = HIDWORD(v7[14].Flink);
if( a1 )
{
if( a1 == 1 )
{
v6 = (HIDWORD(v7[14].Flink) & 2) != 0;
LABEL_3:
if( v6 )
{
if( a1 )
{
v11 = 0;
LODWORD(v10[0]) = 0;
*(_LIST_ENTRY *)&v10[1] = *(_LIST_ENTRY *)((char *)v7 + 72);
HIDWORD(v10[0]) = (__int64)v7[14].Flink & 1;
LODWORD(v10[11]) = v7[13].Flink;
LODWORD(v10[12]) = v7[13].Blink;
v10[9] = v7[12].Flink;
HIDWORD(v10[11]) = HIDWORD(v7[13].Flink);
HIDWORD(v10[12]) = HIDWORD(v7[13].Blink);
v10[10] = v7[12].Blink;
v10[4] = &word_140A76040;
v10[3] = 0x20000i64;
*(_LIST_ENTRY *)&v10[7] = v7[11];
*(_LIST_ENTRY *)&v10[5] = v7[10];
PnpNotifyEarlyLaunchImageLoad((__int64)v10, (__int64)&v11);
v9 = PnpDoPolicyCheck(v11, a1 != 1);
}
else
{
v9 = 1;
}
if( v9 )
MmCallDllInitialize((_KLDR_DATA_TABLE_ENTRY *)v7, v4);
}
}
else if( a1 == 2 )
{
v6 = (Flink_high & 3) == 0;
goto LABEL_3;
}
}
else if( (Flink_high & 1) != 0 )
{
v6 = 1;
goto LABEL_3;
}
}
}
}Referenced by:
IopInitializeBootDrivers