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