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