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,
                 (INT64)Base,
                 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, (INT64)Base, v8, v11, v12, v5);
      v8 = (UINT64 *)((char *)v8 + 4);
    }
  }
  return result;
}

Referenced by:

MiUpdateImagePfnImportRelocations