Normalization__Normalize
__int64 __fastcall Normalization__Normalize(__int64 a1, __int64 a2, int a3, __int64 a4, unsigned int a5, _DWORD *a6){
__int64 v7;
unsigned int v10;
unsigned int v11;
INT64 v12;
UINT8 v13;
unsigned int v14;
__int64 v15;
int v16;
int v17;
int v18;
int v19;
INT64 result;
__int64 v22;
__int64 v23;
__int64 v24;
__int64 v25;
__int64 v26;
unsigned int v27;
int v28;
int v29;
__int64 v30;
__int16 v31;
__int64 v32;
int v33;
__int16 v34;
__int64 v35;
v7 = a3;
memset((INT64)&result, 0i64);
if( !a2 || !a4 || !a6 )
return 3221225485i64;
v29 = 0;
v31 = 0;
v33 = 0;
v34 = 0;
*a6 = 0;
v22 = a2 + 2 * v7;
v10 = 0;
v27 = a5;
result = a2;
v30 = a4 - 2;
v28 = v7;
v24 = a4;
v25 = a4 + 2i64 * (int)a5;
v26 = a4;
v23 = a2;
v32 = a4;
v35 = a1;
while( a2 != v22 )
{
if( v10 )
goto LABEL_17;
v11 = *(unsigned __int16 *)a2;
v12 = *(unsigned __int16 *)a2;
v23 = a2 + 2;
if( (signed int)v11 < *(_DWORD *)(a1 + 28)
|| (v13 = *(_BYTE *)(((unsigned __int64)v11 >> 7) + *(_QWORD *)(a1 + 32))) == 0
|| v13 == 0xFB && *(_BYTE *)(a1 + 113) )
{
if( !NormBuffer__Append((INT64)&result, v12) )
{
a2 = v23;
v10 = -1073741789;
break;
}
}
else
{
v10 = Normalization__NormalizeCharacter(a1, v12, v13, (INT64)&result);
}
a2 = v23;
}
if( !v10 )
{
a2 = (v26 - v24) >> 1;
goto LABEL_24;
}
LABEL_17:
if( v10 == -1073741789 )
{
v14 = ((v22 - a2) >> 1) + 1;
v15 = (a2 - result) >> 1;
if( !(_DWORD)v15 )
LODWORD(v15) = 1;
v16 = Normalization__GuessCharCountBySize(a1, v14);
v19 = v18 * v17 / (int)v15;
if( v19 <= v16 )
v19 = v16;
LODWORD(a2) = v17 + v19 + (v19 >> 3);
}
else
{
LODWORD(a2) = ((a2 - result) >> 1) - 1;
}
LABEL_24:
*a6 = a2;
return v10;
}Referenced by:
RtlpNormalizeStringWorker