VrpComparePath

NTSTATUS __stdcall VrpComparePath(_UNICODE_STRING *Path1, _UNICODE_STRING *Path2, UINT64 *MatchedTokens){
  UINT64 v3; 
  int v4; 
  int Length; 
  unsigned int v9; 
  _UNICODE_STRING v11; 
  _UNICODE_STRING PathToken; 
  UINT64 Position; 
  UINT64 v14; 

  Position = 0i64;
  PathToken = 0i64;
  v3 = 0i64;
  v4 = 0;
  v11 = 0i64;
  v14 = 0i64;
  while( 1 )
  {
    VrpGetNextToken(Path1, &Position, &PathToken);
    VrpGetNextToken(Path2, &v14, &v11);
    Length = PathToken.Length;
    if( !PathToken.Length && !v11.Length )
      break;
    v9 = PathToken.Length;
    if( PathToken.Length >= v11.Length )
      v9 = v11.Length;
    v4 = wcsnicmp(PathToken.Buffer, v11.Buffer, v9 >> 1);
    if( v4 )
      goto LABEL_8;
    v4 = Length - v11.Length;
    if( Length != v11.Length )
    {
      if( !(_WORD)Length || v11.Length )
      {
LABEL_8:
        v3 = 0i64;
        break;
      }
      break;
    }
    ++v3;
  }
  if( MatchedTokens )
    *MatchedTokens = v3;
  return v4;
}

Referenced by:

VrpFindNamespaceNode