MiUpdateRetpolineImportFixups
_BYTE *__fastcall MiUpdateRetpolineImportFixups(UINT64 a1, INT64 a2, UINT64 a3){
bool v5;
UINT64 *v6;
unsigned int v7;
UINT64 *v8;
unsigned __int64 v9;
_BYTE *result;
INT64 v11;
INT64 v12;
v5 = (KiSpeculationFeatures & 0x2000000) == 0;
v6 = *(UINT64 **)(a2 + 8i64 * (unsigned int)a3 + 56);
if( v6 )
{
v7 = (_DWORD)a3 << 12;
if( *((_WORD *)v6 + 3) == 3 )
{
LODWORD(v12) = 1;
LODWORD(v11) = 1;
result = RtlApplyImportRelocationToPage(
a1,
v7,
a2,
qword_140C4C9A8,
v6 + 1,
v11,
v12,
(KiSpeculationFeatures & 0x2000000) == 0);
}
v8 = (UINT64 *)((char *)v6 + 12);
v9 = (unsigned __int64)v6 + *(unsigned __int16 *)v6 + 12;
while( (unsigned __int64)v8 < v9 )
{
LODWORD(v12) = 0;
LODWORD(v11) = 1;
result = RtlApplyImportRelocationToPage(a1, v7, a2, qword_140C4C9A8, v8, v11, v12, v5);
v8 = (UINT64 *)((char *)v8 + 4);
}
}
return result;
}Referenced by:
MiUpdateImagePfnImportRelocations