MiApplyImportOptimizationToBootDrivers
NTSTATUS __stdcall MiApplyImportOptimizationToBootDrivers(INT64 a1){
unsigned int v1;
INT64 v2;
__int64 *v3;
unsigned int(*v4)(void);
char *v5;
INT64 a4;
int updated;
INT64 v9[14];
v1 = ((unsigned int)dword_140C4C9F0 >> 12) + ((dword_140C4C9F0 & 0xFFF) != 0);
if( (KiSpeculationFeatures & 0x4000000) != 0 )
{
v2 = a1 + 16;
v3 = *(__int64 **)(a1 + 16);
v4 = (unsigned int(*)(void))((unsigned __int64)MiIsTargetFullyRetpolined & -(__int64)((KiSpeculationFeatures & 0x2000000) != 0));
while( v3 != (__int64 *)v2 )
{
v5 = (char *)v3[6];
if( v5 != (char *)PsNtosImageBase && v5 != PsHalImageBase && !MI_IS_PHYSICAL_ADDRESS((VOID *)v3[6]) )
{
if( (KiSpeculationFeatures & 0x2000000) != 0 )
a4 = v3[6] + *((_DWORD *)v3 + 16) + (v1 << 12);
else
a4 = 0i64;
if( (MiFlags & 0x10000) != 0 )
{
memset(v9, 0i64, 0x68u);
v9[1] = (INT64)v5;
updated = VslpEnterIumSecureMode(2u, 222, 0i64, (INT64)v9);
}
else
{
updated = RtlUpdateImportRelocationsInImage(
v5,
(INT64)v5,
*((unsigned int *)v3 + 16),
v4,
a4,
qword_140C4C9A8,
0,
(KiSpeculationFeatures & 0x2000000) == 0);
}
if( updated >= 0 )
*((_DWORD *)v3 + 26) |= 0x80u;
}
v3 = (__int64 *)*v3;
}
}
return 0;
}Referenced by:
MiReloadBootLoadedDrivers