RtlSuffixUnicodeString

UINT8 __stdcall RtlSuffixUnicodeString(
        const _UNICODE_STRING *String1,
        const _UNICODE_STRING *String2,
        UINT8 CaseInSensitive){
  unsigned __int64 Length; 
  wchar_t *Buffer; 
  wchar_t *v5; 
  wchar_t *v6; 
  unsigned __int64 v7; 
  signed __int64 v8; 
  UINT16 *v9; 
  UINT16 v10; 
  __int64 v11; 
  unsigned __int64 v12; 
  __int16 v13; 
  signed __int64 v14; 

  Length = String1->Length;
  if( String2->Length >= (unsigned __int16)Length )
  {
    Buffer = String1->Buffer;
    v5 = &Buffer[Length >> 1];
    if( Buffer >= v5 )
      return 1;
    v6 = String2->Buffer;
    v7 = (String2->Length - (unsigned __int64)String1->Length) >> 1;
    if( CaseInSensitive )
    {
      v8 = (char *)&v6[v7] - (char *)Buffer;
      while( 1 )
      {
        NLS_UPCASE(*(wchar_t *)((char *)Buffer + v8));
        v10 = NLS_UPCASE(*v9);
        if( v10 != v13 )
          break;
        Buffer = (wchar_t *)(v11 + 2);
        if( (unsigned __int64)Buffer >= v12 )
          return 1;
      }
    }
    else
    {
      v14 = (char *)&v6[v7] - (char *)Buffer;
      while( *Buffer == *(wchar_t *)((char *)Buffer + v14) )
      {
        if( ++Buffer >= v5 )
          return 1;
      }
    }
  }
  return 0;
}

Referenced by:

PiDrvDbSetupNodeHive