Normalization__GetLastChar

NTSTATUS __stdcall Normalization__GetLastChar(
        _RTL_NORMALIZATION *pNormalization,
        WCHAR *pszString,
        WCHAR **ppszLast,
        INT64 *pcLastTest,
        UINT8 *pbLastClass,
        UINT8 *pbLastFlags,
        WCHAR *a7,
        UINT64 a8){
  WCHAR *v8; 
  NTSTATUS v12; 
  __int64 v13; 
  UINT8 v14; 
  UINT8 v15; 
  char v16; 
  NTSTATUS result; 

  v8 = pszString - 1;
  if( *ppszLast == v8 )
    return *(_DWORD *)pcLastTest;
  if( (unsigned __int16)(*v8 + 10240) <= 0x7FFu && *ppszLast == --v8 )
    return *(_DWORD *)pcLastTest;
  v12 = *v8;
  if( (unsigned int)(v12 - 55296) <= 0x7FF )
    v12 += (*(v8 - 1) - 55287) << 10;
  v13 = *(unsigned __int8 *)(((__int64)v12 >> 7) + *((_QWORD *)pNormalization + 4));
  v14 = 0;
  if( (_BYTE)v13 )
  {
    v16 = *(_BYTE *)((v12 & 0x7F) + (v13 << 7) + *((_QWORD *)pNormalization + 5) - 128);
    v14 = v16 & 0x3F;
    v15 = v16 & 0xC0;
  }
  else
  {
    v15 = 0;
  }
  *pbLastFlags = v15;
  *pbLastClass = v14;
  result = v12;
  *ppszLast = v8;
  *(_DWORD *)pcLastTest = v12;
  return result;
}

Referenced by:

Normalization__IsNormalized