PiDrvDbFindSystemFilePathToken
CHAR *__fastcall PiDrvDbFindSystemFilePathToken(__m128i *rcx0, UINT16 *a2){
CHAR *v2;
_WORD *v5;
__int16 v6;
CHAR *UnicodeSubstring;
CHAR *v8;
__int64 v9;
wint_t v10;
wint_t v11;
_WORD *v12;
__int16 v13;
__m128i a1;
v2 = 0i64;
a1 = *rcx0;
v5 = (_WORD *)_mm_srli_si128(a1, 8).m128i_u64[0];
a1.m128i_i64[1] = (__int64)v5;
if( *v5 )
{
v6 = a1.m128i_i16[0];
do
{
UnicodeSubstring = RtlFindUnicodeSubstring((UINT16 *)&a1, a2, 1);
v8 = UnicodeSubstring;
if( !UnicodeSubstring )
return v2;
v9 = *a2 >> 1;
if( (unsigned __int64)UnicodeSubstring > rcx0->m128i_i64[1] )
{
v10 = *((_WORD *)UnicodeSubstring - 1);
v11 = **((_WORD **)a2 + 1);
if( v11 == 92 )
{
if( (unsigned int)iswalnum(v10) || v10 == 92 )
goto LABEL_17;
}
else if( (unsigned int)iswalpha(v11) && (unsigned int)iswalnum(v10) )
{
goto LABEL_17;
}
}
if( v6 == *a2 && !*(_WORD *)&v8[2 * v9] )
return v8;
v12 = (_WORD *)*((_QWORD *)a2 + 1);
v13 = v12[(unsigned int)(v9 - 1)];
if( v13 == 92 || *(_WORD *)&v8[2 * v9] == 92 || v13 == 37 && *v12 == 37 )
return v8;
LABEL_17:
v6 -= *a2;
v5 += v9;
a1.m128i_i64[1] = (__int64)v5;
a1.m128i_i16[0] = v6;
}
while( *v5 );
}
return v2;
}Referenced by:
PiDrvDbResolveSystemFilePath