VfSuspectDriversParseRegistryString

VOID __stdcall VfSuspectDriversParseRegistryString(){
  wchar_t *v0; 
  BOOL v1; 
  UINT8 *v2; 
  __int64 v3; 
  unsigned __int64 v4; 
  wchar_t *v5; 
  unsigned __int64 v6; 
  int v7; 
  INT64 v8; 
  INT64 v9; 
  _VF_SUSPECT_DRIVER_ENTRY *v10; 
  INT64 v11; 
  INT64 v12; 
  INT64 v13; 
  char *Entry; 
  INT64 v15; 
  char **v16; 
  _UNICODE_STRING ImageFileName; 
  v0 = (wchar_t *)&MmVerifyDriverBuffer;
  ImageFileName = 0i64;
  v1 = (VfOptionFlags & 1) == 0;
  v2 = &MmVerifyDriverBuffer + 2 * (((unsigned __int64)(unsigned int)MmVerifyDriverBufferLength - 2) >> 1);
  if( &MmVerifyDriverBuffer < v2 )
  {
    v3 = 0x100002601i64;
    while( 1 )
    {
      v4 = *v0;
      if( (unsigned int)v4 <= 0x20 && _bittest64(&v3, v4) || (_WORD)v4 == 12288 )
      {
        v5 = v0;
        goto LABEL_30;
      }
      if( (_DWORD)v4 == 42 && v1 )
      {
        LODWORD(ViVerifyAllDrivers) = 1;
        return;
      }
      v5 = v0 + 1;
      if( (_DWORD)v4 == 34 )
      {
        ++v0;
        if( ++v5 >= (wchar_t *)v2 )
          return;
        do
        {
          if( *v5 == 34 )
            break;
          ++v5;
        }
        while( v5 < (wchar_t *)v2 );
        if( v5 >= (wchar_t *)v2 )
          return;
      }
      else
      {
        while( v5 < (wchar_t *)v2 )
        {
          v6 = *v5;
          if( (unsigned int)v6 <= 0x20 )
          {
            if( _bittest64(&v3, v6) )
              break;
          }
          if( (_WORD)v6 == 12288 )
            break;
          ++v5;
        }
      }
      v7 = 2 * (v5 - v0);
      if( v7 )
        break;
LABEL_30:
      v0 = v5 + 1;
      if( v5 + 1 >= (wchar_t *)v2 )
        return;
    }
    ImageFileName.Length = 2 * (v5 - v0);
    ImageFileName.MaximumLength = v7 + 2;
    if( (unsigned __int16)(v7 + 2) < (unsigned __int16)v7 )
      return;
    ImageFileName.Buffer = v0;
    if( v1 )
    {
      v10 = VfSuspectDriversAllocateEntry(&ImageFileName);
      if( v10 )
      {
        VfDriverLock(v9, v8, v11);
        VfSuspectDriversInsert(v10);
LABEL_27:
        VfDriverUnlock();
      }
    }
    else
    {
      Entry = VfSuspectExcludedDriversAllocateEntry(&ImageFileName.Length, 0x44456656u);
      if( Entry )
      {
        VfDriverLock(v13, v12, v15);
        v16 = (char **)qword_140C1C9F8;
        if( *(__int64 **)qword_140C1C9F8 != &VfExcludedDriversList )
          __fastfail(3u);
        *(_QWORD *)Entry = &VfExcludedDriversList;
        *((_QWORD *)Entry + 1) = v16;
        *v16 = Entry;
        qword_140C1C9F8 = (__int64)Entry;
        goto LABEL_27;
      }
    }
    v3 = 0x100002601i64;
    goto LABEL_30;
  }
}

Referenced by:

VfInitBootDriversLoaded