MiApplyImportOptimizationToBootDrivers
INT64 __fastcall MiApplyImportOptimizationToBootDrivers(INT64 a1){
unsigned int v1;
INT64 v2;
__int64 *v3;
unsigned int(*v4)(void);
PVOID v5;
__int64 v6;
int updated;
INT64 result[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 = (PVOID)v3[6];
if( v5 != (PVOID)PsNtosImageBase && v5 != PsHalImageBase && !(unsigned int)MI_IS_PHYSICAL_ADDRESS((PVOID)v3[6]) )
{
if( (KiSpeculationFeatures & 0x2000000) != 0 )
v6 = v3[6] + *((_DWORD *)v3 + 16) + (v1 << 12);
else
v6 = 0i64;
if( (MiFlags & 0x10000) != 0 )
{
memset((INT64)result, 0i64);
result[1] = (INT64)v5;
updated = VslpEnterIumSecureMode(2u, 222, 0i64, (INT64)result);
}
else
{
updated = RtlUpdateImportRelocationsInImage(
v5,
(__int64)v5,
*((unsigned int *)v3 + 16),
v4,
v6,
(__int64)Base,
0,
(KiSpeculationFeatures & 0x2000000) == 0);
}
if( updated >= 0 )
*((_DWORD *)v3 + 26) |= 0x80u;
}
v3 = (__int64 *)*v3;
}
}
return 0i64;
}Referenced by:
MiReloadBootLoadedDrivers