IopFindMatchingComponentsLengthR

UINT16 __stdcall IopFindMatchingComponentsLengthR(UNICODE_STRING *S1, UNICODE_STRING *S2){
  wchar_t *Buffer; 
  wchar_t *v3; 
  wchar_t *v4; 
  wchar_t *v5; 
  wchar_t *v6; 
  wchar_t *v7; 
  Buffer = S1->Buffer;
  v3 = 0i64;
  v4 = S2->Buffer;
  v5 = (wchar_t *)((char *)Buffer + S1->Length);
  v6 = v5;
  if( v5 < Buffer )
    return 0;
  v7 = (wchar_t *)((char *)v4 + S2->Length);
  do
  {
    if( v7 < v4 || *v6 != *v7 )
      break;
    if( *v6 == 92 )
      v3 = v6;
    --v6;
    --v7;
  }
  while( v6 >= Buffer );
  if( v3 )
    return v5 - v3;
  else
    return 0;
}

Referenced by:

IopSymlinkProcessReparse