UpcaseUnicodeToMultiByteNHelper
__int64 __fastcall UpcaseUnicodeToMultiByteNHelper(
int a1,
unsigned int a2,
_DWORD *a3,
unsigned __int16 *a4,
unsigned int a5){
unsigned int v5;
unsigned int v8;
_BYTE *v9;
__int64 v11;
__int64 v12;
unsigned __int16 v13;
__int64 v14;
__int64 v15;
__int64 v16;
__int16 v17;
unsigned int v18;
v5 = a5;
v8 = a2;
for( LODWORD(v9) = a1; v5; --v5 )
{
if( !v8 )
break;
v11 = *a4;
v12 = NlsUnicodeToMbAnsiData;
++a4;
v13 = *(_WORD *)(NlsUnicodeToMbAnsiData + 2 * v11);
v14 = (unsigned __int16)NlsLeadByteInfoTable[(unsigned __int64)v13 >> 8];
if( (_WORD)v14 )
{
v15 = (unsigned __int8)v13 + v14;
v16 = NlsMbAnsiCodePageTables;
}
else
{
v16 = NlsAnsiToUnicodeData;
v15 = (unsigned __int8)v13;
}
v17 = *(_WORD *)(v12 + 2i64 * NLS_UPCASE(*(_WORD *)(v16 + 2 * v15)));
if( HIBYTE(v17) )
{
v18 = v8--;
if( v18 < 2 )
break;
*v9++ = HIBYTE(v17);
}
*v9 = v17;
--v8;
LODWORD(v9) = (_DWORD)v9 + 1;
}
if( a3 )
*a3 = (_DWORD)v9 - a1;
return v8 < v5 ? 0x80000005 : 0;
}Referenced by:
RtlUpcaseUnicodeToMultiByteN
RtlUpcaseUnicodeToOemN