RtlpDidUnicodeToOemWork

UINT8 __stdcall RtlpDidUnicodeToOemWork(
        _STRING *OemString,
        _UNICODE_STRING *UnicodeString,
        INT64 a3,
        INT64 a4,
        WCHAR *a5,
        UINT64 a6,
        UINT64 *a7,
        UINT64 a8){
  UINT8 v9; 
  unsigned int Length; 
  int v12; 
  unsigned int v14; 
  int v15; 
  char *Buffer; 
  __int64 v17; 
  __int64 v18; 
  bool v19; 

  v9 = 1;
  if( !RtlpIsUtf8Process(1) )
  {
    Length = OemString->Length;
    if( (_BYTE)NlsMbOemCodePageTag )
    {
      v14 = 0;
      v15 = 0;
      if( !OemString->Length )
        return v9;
      Buffer = OemString->Buffer;
      while( 1 )
      {
        v17 = (unsigned __int8)Buffer[v14];
        if( NlsOemLeadByteInfoTable[v17] && (v18 = v14 + 1, (unsigned int)v18 < Length) )
        {
          ++v14;
          v19 = ((char)v17 << 8) + (unsigned __int8)Buffer[v18] == OemDefaultChar;
        }
        else
        {
          v19 = (char)v17 == (unsigned __int8)OemDefaultChar;
        }
        if( v19 && UnicodeString->Buffer[v15] != OemTransUniDefaultChar )
          break;
        ++v14;
        ++v15;
        if( v14 >= Length )
          return v9;
      }
      return 0;
    }
    v12 = 0;
    if( OemString->Length )
    {
      while( OemString->Buffer[v12] != (unsigned __int8)OemDefaultChar
           || UnicodeString->Buffer[v12] == OemTransUniDefaultChar )
      {
        if( ++v12 >= Length )
          return v9;
      }
      return 0;
    }
  }
  return v9;
}

Referenced by:

RtlUnicodeStringToCountedOemString
RtlUpcaseUnicodeStringToCountedOemString
RtlUpcaseUnicodeStringToOemString