NormBuffer__GetLastChar
INT64 __fastcall NormBuffer__GetLastChar(INT64 a1){
INT64 v1;
unsigned __int16 *v2;
unsigned int v3;
INT64 v4;
CHAR v5;
CHAR v6;
INT64 v7;
CHAR v8;
char v9;
char v10;
v1 = a1;
v2 = (unsigned __int16 *)(*(_QWORD *)(a1 + 40) - 2i64);
if( *(unsigned __int16 **)(v1 + 64) != v2 )
{
v3 = *v2;
*(_QWORD *)(v1 + 64) = v2;
v4 = v3;
*(_DWORD *)(v1 + 56) = v3;
if( v3 > 0xDC00 && v3 <= 0xDFFF )
{
v4 = v3 + ((*(v2 - 1) - 55287) << 10);
*(_DWORD *)(v1 + 56) = v4;
}
v5 = Normalization__PageLookup(*(_QWORD *)(v1 + 112), v4);
if( (unsigned __int8)(v5 - 1) > 0xF9u )
{
v9 = 0;
v10 = 0;
}
else
{
v8 = Normalization__TableLookup(v7, v6, v5);
v9 = v8 & 0xC0;
v10 = v8 & 0x3F;
}
*(_BYTE *)(v1 + 72) = v10;
*(_BYTE *)(v1 + 73) = v9;
}
return *(unsigned int *)(v1 + 56);
}Referenced by:
Normalization__NormalizeCharacter