RtlpDidUnicodeToOemWork
UINT8 __fastcall RtlpDidUnicodeToOemWork(const _STRING *OemString, const _UNICODE_STRING *UnicodeString){
UINT8 v3;
unsigned int Length;
int v6;
unsigned int v8;
int v9;
char *Buffer;
__int64 v11;
__int64 v12;
bool v13;
v3 = 1;
if( !RtlpIsUtf8Process(1) )
{
Length = OemString->Length;
if( (_BYTE)NlsMbOemCodePageTag )
{
v8 = 0;
v9 = 0;
if( !OemString->Length )
return v3;
Buffer = OemString->Buffer;
while( 1 )
{
v11 = (unsigned __int8)Buffer[v8];
if( *((_WORD *)&NlsOemLeadByteInfoTable + v11) && (v12 = v8 + 1, (unsigned int)v12 < Length) )
{
++v8;
v13 = ((char)v11 << 8) + (unsigned __int8)Buffer[v12] == OemDefaultChar;
}
else
{
v13 = (char)v11 == (unsigned __int8)OemDefaultChar;
}
if( v13 && UnicodeString->Buffer[v9] != OemTransUniDefaultChar )
break;
++v8;
++v9;
if( v8 >= Length )
return v3;
}
return 0;
}
v6 = 0;
if( OemString->Length )
{
while( OemString->Buffer[v6] != (unsigned __int8)OemDefaultChar
|| UnicodeString->Buffer[v6] == OemTransUniDefaultChar )
{
if( ++v6 >= Length )
return v3;
}
return 0;
}
}
return v3;
}Referenced by:
RtlUnicodeStringToCountedOemString
RtlUpcaseUnicodeStringToCountedOemString
RtlUpcaseUnicodeStringToOemString