NormBuffer__SortBeforeSameClass

VOID __stdcall NormBuffer__SortBeforeSameClass(_RTL_NORM_BUFFER *pNormBuffer, UINT8 bTestClass){
  __int64 v2; 
  __int64 v4; 
  __int64 v5; 
  INT64 CurrentOutputChar; 
  __int64 v7; 
  __int64 v8; 
  __int64 v9; 
  _RTL_NORMALIZATION *v10; 
  INT64 v11; 
  INT64 v12; 
  _RTL_NORMALIZATION *v13; 
  WCHAR **v14; 
  __int64 v15; 
  __int64 v16; 
  __int64 v17; 
  __int64 v18; 

  v2 = *((_QWORD *)pNormBuffer + 5);
  v4 = *((_QWORD *)pNormBuffer + 10);
  *((_QWORD *)pNormBuffer + 13) = v2;
  if( v2 != v4 )
  {
    v17 = v2 - 2;
    v5 = -4i64;
    CurrentOutputChar = (unsigned int)NormBuffer__GetCurrentOutputChar((WCHAR **)pNormBuffer);
    if( *(int *)(v7 + 88) <= 0xFFFF )
      v5 = -2i64;
    v9 = v8 + v5;
    if( v17 != v9 )
    {
      v10 = *(_RTL_NORMALIZATION **)(v7 + 112);
      do
      {
        LOBYTE(v11) = Normalization__PageLookup(v10, CurrentOutputChar);
        if( (unsigned __int8)(Normalization__TableLookup(v13, v12, v11) & 0x3F) < bTestClass )
          break;
        *(_QWORD *)(v15 + 104) = v16;
        v18 = v16 - 2;
        CurrentOutputChar = (unsigned int)NormBuffer__GetCurrentOutputChar(v14);
      }
      while( v18 != v9 );
    }
  }
}

Referenced by:

NormBuffer__AppendAndSortDecomposed