Normalization__CanCombinableCharactersCombine
INT64 __fastcall Normalization__CanCombinableCharactersCombine(INT64 a1, INT64 a2, INT64 a3){
unsigned int v3;
int v5;
__int64 v6;
__int64 v7;
unsigned __int16 v8;
unsigned __int16 v9;
__int64 v10;
unsigned int v11;
v3 = a3;
if( ((a2 & 0x1F0000) == 0) != ((a3 & 0x1F0000) == 0) )
return 0i64;
v5 = *(_DWORD *)(a1 + 88);
if( !v5 )
return 0i64;
v6 = *(_QWORD *)(a1 + 96);
v7 = (unsigned __int16)((int)(a2 + 12541 * v3) % v5);
v8 = *(_WORD *)(v6 + 2 * v7);
v9 = *(_WORD *)(v6 + 2 * v7 + 2);
if( v8 >= v9 )
return 0i64;
v10 = *(_QWORD *)(a1 + 104);
while( 1 )
{
v11 = *(unsigned __int16 *)(v10 + 2i64 * v8);
if( __PAIR64__(v3, a2) == __PAIR64__(*(unsigned __int16 *)(v10 + 2i64 * v8 + 2), v11) )
return *(unsigned __int16 *)(v10 + 2i64 * v8 + 4);
if( (unsigned __int16)(v11 + 10240) <= 0x7FFu )
break;
LABEL_13:
v8 += 3;
if( v8 >= v9 )
return 0i64;
}
if( (int)a2 <= 0xFFFF
|| (_WORD)v11 != (unsigned __int16)(((int)a2 - 0x10000) / 1024) - 10240
|| *(_DWORD *)(v10 + 2i64 * v8 + 2) != __PAIR32__(
(int)(v3 - 0x10000) / 1024 - 10240,
((int)a2 - 0x10000) % 1024 - 9216)
|| *(_WORD *)(v10 + 2i64 * v8 + 6) != (unsigned __int16)((int)(v3 - 0x10000) % 1024) - 9216 )
{
v8 += 3;
goto LABEL_13;
}
return *(unsigned __int16 *)(v10 + 2i64 * v8 + 10)
+ (((unsigned int)*(unsigned __int16 *)(v10 + 2i64 * v8 + 8) - 55287) << 10);
}Referenced by:
NormBuffer__LastStartBasePair
NormBuffer__RecheckStartCombinations
Normalization__CanCombineWithStartBase
Normalization__CanCombineWithStartFirstPair
Normalization__IsNormalized
Normalization__NormalizeCharacter