NormBuffer__RecheckStartCombinations
VOID __fastcall NormBuffer__RecheckStartCombinations(_RTL_NORM_BUFFER *pNormBuffer){
bool v1;
_RTL_NORM_BUFFER *v2;
__int64 v3;
_RTL_NORM_BUFFER *v4;
UINT8 v5;
_RTL_NORMALIZATION *v6;
unsigned int CurrentOutputChar;
unsigned int CanCombinableCharactersCombine;
unsigned int v9;
UINT8 v10;
unsigned __int64 v11;
_RTL_NORM_BUFFER *v12;
_RTL_NORM_BUFFER *v13;
char *v14;
__int64 v15;
UINT8 pbClass;
UINT8 pbFlags;
__int64 v18;
v1 = *((_BYTE *)pNormBuffer + 93) == 64;
v2 = pNormBuffer;
v3 = *((_QWORD *)pNormBuffer + 10);
v18 = v3;
if( v1 )
{
v4 = (_RTL_NORM_BUFFER *)*((_QWORD *)pNormBuffer + 5);
v5 = 0;
if( (_RTL_NORM_BUFFER *)v3 != v4 )
{
v6 = (_RTL_NORMALIZATION *)*((_QWORD *)pNormBuffer + 14);
while( 1 )
{
pbClass = 0;
pbFlags = 0;
CurrentOutputChar = NormBuffer__GetCurrentOutputChar((WCHAR **)pNormBuffer);
Normalization__GetCharacterInfo(v6, CurrentOutputChar, &pbClass, &pbFlags);
if( pbClass == v5 )
goto LABEL_17;
if( pbFlags != 0xC0 )
break;
CanCombinableCharactersCombine = Normalization__CanCombinableCharactersCombine(
v6,
(unsigned int)v2[22],
CurrentOutputChar);
v9 = CanCombinableCharactersCombine;
if( !CanCombinableCharactersCombine )
break;
Normalization__GetCharacterInfo(v6, CanCombinableCharactersCombine, &pbClass, &pbFlags);
v10 = pbFlags;
v4 = (_RTL_NORM_BUFFER *)(*((_QWORD *)v2 + 5) - 2i64);
v11 = v18;
*((_BYTE *)v2 + 92) = pbClass;
v12 = (_RTL_NORM_BUFFER *)v11;
v13 = (_RTL_NORM_BUFFER *)*((_QWORD *)v2 + 8);
*(_WORD *)(v3 - 2) = v9;
v2[22] = v9;
*((_BYTE *)v2 + 93) = v10;
*((_QWORD *)v2 + 5) = v4;
if( v13 == v4 )
{
if( v11 >= (unsigned __int64)v13 )
{
v15 = *((_QWORD *)v2 + 3);
v2[14] = 0;
v14 = (char *)(v15 - 2);
*((_WORD *)v2 + 36) = 0;
}
else
{
v14 = (char *)v13 - 2;
}
*((_QWORD *)v2 + 8) = v14;
}
if( (_RTL_NORM_BUFFER *)v11 != v4 )
{
do
{
pNormBuffer = (_RTL_NORM_BUFFER *)((char *)v12 + 2);
*(_WORD *)v12 = *((_WORD *)v12 + 1);
v12 = pNormBuffer;
}
while( pNormBuffer != v4 );
}
if( v10 != 64 )
return;
LABEL_18:
if( (_RTL_NORM_BUFFER *)v11 == v4 )
return;
}
v5 = pbClass;
LABEL_17:
v11 = v18 + 2;
v18 += 2i64;
goto LABEL_18;
}
}
}Referenced by:
Normalization__NormalizeCharacter