NormBuffer__GetLastChar
NTSTATUS __stdcall NormBuffer__GetLastChar(INT64 a1){
INT64 v1;
unsigned __int16 *v2;
unsigned int v3;
INT64 v4;
NTSTATUS v5;
INT64 v6;
_RTL_NORMALIZATION *v7;
INT64 v8;
char v9;
char v10;
char v11;
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(*(_RTL_NORMALIZATION **)(v1 + 112), v4);
v8 = (unsigned int)(v5 - 1);
if( (unsigned __int8)(v5 - 1) > 0xF9u )
{
v10 = 0;
v11 = 0;
}
else
{
LOBYTE(v8) = v5;
v9 = Normalization__TableLookup(v7, v6, v8);
v10 = v9 & 0xC0;
v11 = v9 & 0x3F;
}
*(_BYTE *)(v1 + 72) = v11;
*(_BYTE *)(v1 + 73) = v10;
}
return *(_DWORD *)(v1 + 56);
}Referenced by:
Normalization__NormalizeCharacter