Normalization__AppendDecomposedChar
NTSTATUS __stdcall Normalization__AppendDecomposedChar(
_RTL_NORMALIZATION *pNormalization,
INT64 cDecompose,
_RTL_NORM_BUFFER *pNormBuffer){
__int16 v3;
unsigned __int16 v6;
__int64 v7;
unsigned __int16 i;
__int16 v9;
int v10;
unsigned __int16 v11;
__int64 v12;
int v13;
INT64 v14;
NTSTATUS result;
v3 = cDecompose;
v6 = *(_WORD *)(*((_QWORD *)pNormalization + 8) + 2i64 * ((int)cDecompose % pNormalization[14]));
if( (v6 & 0xE000) == 0 )
{
v7 = *((_QWORD *)pNormalization + 9);
for( i = 2 * v6; ; i += 2 )
{
v9 = *(_WORD *)(v7 + 2i64 * i);
if( !v9 || v9 == v3 )
break;
}
v6 = *(_WORD *)(v7 + 2i64 * i + 2);
}
v10 = v6 >> 13;
if( v10 == 7 )
v10 = 100;
v11 = v6 & 0x1FFF;
if( v10 )
{
do
{
v12 = *((_QWORD *)pNormalization + 10);
v13 = *(unsigned __int16 *)(v12 + 2i64 * v11);
if( !(_WORD)v13 )
break;
v14 = *(unsigned __int16 *)(v12 + 2i64 * v11);
if( (unsigned int)(v13 - 55296) <= 0x7FF )
{
++v11;
--v10;
v14 = ((v13 - 55287) << 10) + (unsigned int)*(unsigned __int16 *)(v12 + 2i64 * v11);
}
result = Normalization__NormalizeCharacter(
pNormalization,
v14,
*(_BYTE *)(((__int64)(int)v14 >> 7) + *((_QWORD *)pNormalization + 4)),
pNormBuffer);
if( result )
return result;
--v10;
++v11;
}
while( v10 > 0 );
}
return 0;
}Referenced by:
Normalization__NormalizeCharacter