ViXdvBindXdvDriverEntryWrappers

UINT8 __stdcall ViXdvBindXdvDriverEntryWrappers(UINT64 *FuncAddr){
  UINT8 v1; 
  _DWORD *v3; 
  unsigned int i; 
  unsigned int v5; 
  char v6; 
  char **j; 
  int v8; 
  char *v9; 

  v1 = 0;
  ViXdvEPThunksNoXdvEntry = 0;
  ViXdvEPBound = 0;
  if( !FuncAddr )
    return 0;
  v3 = (_DWORD *)((__int64(*)(void))FuncAddr)();
  if( v3 )
  {
    if( *v3 == 5 )
    {
      for( i = 0; i < v3[1]; ++i )
      {
        if( *(_QWORD *)&v3[2 * i + 2] )
        {
          v5 = 0;
          v6 = 0;
          for( j = &VfXdvIoCallbackThunks; ; j = &(&VfXdvIoCallbackThunks)[4 * v5] )
          {
            v8 = *((_DWORD *)j + 6);
            if( v8 == 268435489 || v6 )
              break;
            if( v8 == i + 0x10000000 )
            {
              v6 = 1;
              v9 = j[2];
              if( v9 )
              {
                *(_QWORD *)v9 = *(_QWORD *)&v3[2 * i + 2];
                ++ViXdvEPBound;
              }
            }
            ++v5;
          }
        }
        else
        {
          ++ViXdvEPThunksNoXdvEntry;
        }
      }
      return 1;
    }
    else
    {
      VfUtilDbgPrint((INT8 *)"XDV entry point version mismatch: kernel version %d   driver version %d\n");
    }
  }
  return v1;
}

Referenced by:

ViXdvDriverLoadImage