VrpComparePath

NTSTATUS __stdcall VrpComparePath(UNICODE_STRING *Path1, UNICODE_STRING *Path2, UINT64 *MatchedTokens){
  UINT64 v3; 
  int v4; 
  int v8; 
  unsigned int v9; 
  wchar_t *Str2[2]; 
  wchar_t *Str1[2]; 
  UINT64 Position; 
  UINT64 v14; 
  Position = 0i64;
  *(_OWORD *)Str1 = 0i64;
  v3 = 0i64;
  v4 = 0;
  *(_OWORD *)Str2 = 0i64;
  v14 = 0i64;
  while( 1 )
  {
    VrpGetNextToken(Path1, &Position, (UNICODE_STRING *)Str1);
    VrpGetNextToken(Path2, &v14, (UNICODE_STRING *)Str2);
    v8 = LOWORD(Str1[0]);
    if( !LOWORD(Str1[0]) && !LOWORD(Str2[0]) )
      break;
    v9 = LOWORD(Str1[0]);
    if( LOWORD(Str1[0]) >= LOWORD(Str2[0]) )
      v9 = LOWORD(Str2[0]);
    v4 = wcsnicmp(Str1[1], Str2[1], (unsigned __int64)v9 >> 1);
    if( v4 )
      goto LABEL_8;
    v4 = v8 - LOWORD(Str2[0]);
    if( v8 != LOWORD(Str2[0]) )
    {
      if( !(_WORD)v8 || LOWORD(Str2[0]) )
      {
LABEL_8:
        v3 = 0i64;
        break;
      }
      break;
    }
    ++v3;
  }
  if( MatchedTokens )
    *MatchedTokens = v3;
  return v4;
}

Referenced by:

VrpFindNamespaceNode