RtlpValidateAsciiStd3AndLength

UINT8 __stdcall RtlpValidateAsciiStd3AndLength(WCHAR *pUnicode, INT64 count, UINT8 bAllowEmail, UINT8 bUseStd3Rules){
  WCHAR *v4; 
  UINT8 v6; 
  unsigned int v8; 
  WCHAR *v9; 
  WCHAR *v10; 
  WCHAR *i; 
  v4 = pUnicode - 1;
  v6 = bAllowEmail;
  LOWORD(v8) = 46;
  v9 = &pUnicode[(int)count];
  if( bAllowEmail )
    v10 = &pUnicode[FindEmailAt(pUnicode, count)];
  else
    v10 = pUnicode - 1;
  if( v10 == v9 || (int)count <= 0 )
    return 0;
  for( i = pUnicode; i != v9; ++i )
  {
    v8 = *i;
    if( v8 >= 0x7F )
      return 0;
    if( v8 == (v6 != 0 ? 64 : 46) )
    {
      if( v6 )
      {
        if( i == pUnicode )
          return 0;
        if( i == v10 - 1 )
          v6 = 0;
      }
      else if( i == v4 + 1
             || (__int64)(((char *)i - (char *)v4) & 0xFFFFFFFFFFFFFFFEui64) > 128
             || bUseStd3Rules && i > pUnicode && *(i - 1) == 45 )
      {
        return 0;
      }
      v4 = i;
    }
    else if( v6 )
    {
      if( !(_WORD)v8 )
        return 0;
    }
    else if( bUseStd3Rules && (v8 == 45 && i == v4 + 1 || !ValidateStd3Range(v8)) || v8 < 0x20 )
    {
      return 0;
    }
  }
  return v6
      || (__int64)(((char *)v9 - (char *)v4) & 0xFFFFFFFFFFFFFFFEui64) <= 128
      && v9 - v10 <= 256i64 - ((_WORD)v8 != 46)
      && (!bUseStd3Rules || (_WORD)v8 != 45);
}

Referenced by:

RtlpNameprepAsciiRealWorker