VfXdvExcludeParseRegistryString

VOID __stdcall VfXdvExcludeParseRegistryString(){
  __int64 *v0; 
  __int64 *v1; 
  __int64 v2; 
  unsigned __int64 v3; 
  __int64 *v4; 
  unsigned __int64 v5; 
  int v6; 
  INT64 v7; 
  INT64 v8; 
  char *Entry; 
  INT64 v10; 
  char **v11; 
  __int128 v12; 
  v12 = 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(v12) = 2 * (((char *)v4 - (char *)v0) >> 1);
            WORD1(v12) = v6 + 2;
            if( (unsigned __int16)(v6 + 2) < (unsigned __int16)v6 )
              return;
            *((_QWORD *)&v12 + 1) = v0;
            Entry = VfSuspectExcludedDriversAllocateEntry((unsigned __int16 *)&v12, 0x45586656u);
            if( Entry )
            {
              VfDriverLock(v8, v7, v10);
              v11 = (char **)qword_140C1C9E8;
              if( *(__int64 **)qword_140C1C9E8 != &VfXdvExcludedDriversList )
                __fastfail(3u);
              *(_QWORD *)Entry = &VfXdvExcludedDriversList;
              *((_QWORD *)Entry + 1) = v11;
              *v11 = Entry;
              qword_140C1C9E8 = (__int64)Entry;
              VfDriverUnlock();
            }
          }
        }
        v0 = (__int64 *)((char *)v4 + 2);
      }
      while( (__int64 *)((char *)v4 + 2) < v1 );
    }
  }
}

Referenced by:

VfInitBootDriversLoaded