Normalization__GetSecondAndThirdDecomposedCharPlane0

__int64 __fastcall Normalization__GetSecondAndThirdDecomposedCharPlane0(__int64 a1, int a2, _DWORD *a3, _DWORD *a4){
  int v5; 
  __int64 v6; 
  unsigned __int16 v9; 
  __int64 result; 
  __int64 v11; 
  unsigned __int16 i; 
  unsigned __int16 v13; 
  unsigned int v14; 
  __int64 v15; 
  unsigned __int16 v16; 
  v5 = a2 % *(_DWORD *)(a1 + 56);
  v6 = *(_QWORD *)(a1 + 64);
  *a4 = 0;
  *a3 = 0;
  v9 = *(_WORD *)(v6 + 2i64 * v5);
  result = 57344i64;
  if( (v9 & 0xE000) == 0 )
  {
    v11 = *(_QWORD *)(a1 + 72);
    for( i = 2 * v9; ; i += 2 )
    {
      v13 = *(_WORD *)(v11 + 2i64 * i);
      if( !v13 || v13 == a2 )
        break;
    }
    result = i;
    v9 = *(_WORD *)(v11 + 2i64 * i + 2);
  }
  v14 = v9 >> 13;
  if( v14 > 1 )
  {
    v15 = *(_QWORD *)(a1 + 80);
    v16 = (v9 & 0x1FFF) + 1;
    result = v16;
    *a3 = *(unsigned __int16 *)(v15 + 2i64 * v16);
    if( v14 != 2 )
    {
      result = (unsigned __int16)(v16 + 1);
      *a4 = *(unsigned __int16 *)(v15 + 2 * result);
    }
  }
  return result;
}

Referenced by:

NormBuffer__ReplaceLastStartBase