ViThunkFindNextSpecialTable

VOID **__fastcall ViThunkFindNextSpecialTable(INT64 a1, UINT64 a2, VOID **a3){
  VOID **v3; 
  unsigned int v5; 
  v3 = 0i64;
  if( !a3 )
    a3 = (VOID **)ViVerifierDriverAddedSpecialThunkListHead;
  while( a3 != &ViVerifierDriverAddedSpecialThunkListHead )
  {
    v5 = 0;
    if( (_DWORD)a2 )
    {
      while( *(VOID **)(a1 + 8i64 * v5) != a3[2] )
      {
        if( ++v5 >= (unsigned int)a2 )
          goto LABEL_7;
      }
      return a3;
    }
LABEL_7:
    a3 = (VOID **)*a3;
  }
  return v3;
}

Referenced by:

VfThunkAddSpecialDriverThunks
ViThunkFindAllSpecialTables