VfXdvExcludeParseRegistryString

VOID __stdcall VfXdvExcludeParseRegistryString(){
  __int64 *v0; 
  __int64 *v1; 
  __int64 v2; 
  unsigned __int64 v3; 
  __int64 *v4; 
  unsigned __int64 v5; 
  int v6; 
  VOID **Entry; 
  VOID ***v8; 
  __int128 v9; 

  v9 = 0i64;
  if( VfXdvSuppressDriversBufferLength == -1 )
  {
    VfXdvSuppressDriversBufferLength = 0;
  }
  else
  {
    v0 = VfXdvSuppressDriversBuffer;
    v1 = (__int64 *)((char *)VfXdvSuppressDriversBuffer
                   + 2 * (((unsigned __int64)(unsigned int)VfXdvSuppressDriversBufferLength - 2) >> 1));
    if( VfXdvSuppressDriversBuffer < v1 )
    {
      v2 = 0x100002601i64;
      do
      {
        v3 = *(unsigned __int16 *)v0;
        if( (unsigned int)v3 <= 0x20 && _bittest64(&v2, v3) || (_WORD)v3 == 12288 )
        {
          v4 = v0;
        }
        else
        {
          v4 = (__int64 *)((char *)v0 + 2);
          if( (_DWORD)v3 == 34 )
          {
            v0 = (__int64 *)((char *)v0 + 2);
            v4 = (__int64 *)((char *)v4 + 2);
            if( v4 >= v1 )
              return;
            do
            {
              if( *(_WORD *)v4 == 34 )
                break;
              v4 = (__int64 *)((char *)v4 + 2);
            }
            while( v4 < v1 );
            if( v4 >= v1 )
              return;
          }
          else
          {
            while( v4 < v1 )
            {
              v5 = *(unsigned __int16 *)v4;
              if( (unsigned int)v5 <= 0x20 )
              {
                if( _bittest64(&v2, v5) )
                  break;
              }
              if( (_WORD)v5 == 12288 )
                break;
              v4 = (__int64 *)((char *)v4 + 2);
            }
          }
          v6 = 2 * (((char *)v4 - (char *)v0) >> 1);
          if( v6 )
          {
            LOWORD(v9) = 2 * (((char *)v4 - (char *)v0) >> 1);
            WORD1(v9) = v6 + 2;
            if( (unsigned __int16)(v6 + 2) < (unsigned __int16)v6 )
              return;
            *((_QWORD *)&v9 + 1) = v0;
            Entry = VfSuspectExcludedDriversAllocateEntry((unsigned __int16 *)&v9, 0x45586656u);
            if( Entry )
            {
              VfDriverLock();
              v8 = (VOID ***)qword_140C1C9E8;
              if( *(__int64 **)qword_140C1C9E8 != &VfXdvExcludedDriversList )
                __fastfail(3u);
              *Entry = &VfXdvExcludedDriversList;
              Entry[1] = v8;
              *v8 = Entry;
              qword_140C1C9E8 = (__int64)Entry;
              VfDriverUnlock();
            }
          }
        }
        v0 = (__int64 *)((char *)v4 + 2);
      }
      while( (__int64 *)((char *)v4 + 2) < v1 );
    }
  }
}

Referenced by:

No references.