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