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