ViThunkReplaceImportEntry

UINT64 __stdcall ViThunkReplaceImportEntry(_LIST_ENTRY *ThunkListHead, UINT64 *ImportEntry){
  _LIST_ENTRY *Flink; 
  UINT64 result; 
  unsigned int Blink; 
  _LIST_ENTRY *v7; 
  int v8; 

  Flink = ThunkListHead->Flink;
  for( result = 0i64; Flink != ThunkListHead; Flink = Flink->Flink )
  {
    Blink = (unsigned int)Flink[1].Blink;
    v7 = Flink + 2;
    v8 = 0;
    if( Blink )
    {
      while( (_LIST_ENTRY *)*ImportEntry != v7->Flink )
      {
        ++v7;
        if( ++v8 >= Blink )
          goto LABEL_7;
      }
      MmReplaceImportEntry(ImportEntry, (UINT64)v7->Blink);
      result = 1i64;
    }
LABEL_7:
    if( (_DWORD)result == 1 )
      break;
  }
  return result;
}

Referenced by:

VfThunkApplyDriverAddedThunks
ViThunkReplaceAllThunkedImports