KsepStringTransform

NTSTATUS __stdcall KsepStringTransform(_UNICODE_STRING *TargetString, PWCHAR SourceString){
  unsigned __int16 v2; 
  NTSTATUS result; 
  unsigned __int16 i; 
  wchar_t *Buffer; 
  __int64 v8; 
  __int64 v9; 

  v2 = 0;
  if( !TargetString )
  {
    v8 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v8 + 1] = -1073740768;
    KsepHistoryErrors[2 * v8] = 197405;
    if( (KsepDebugFlag & 4) != 0 )
      RtlAssert("TargetString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 797i64, 0i64);
  }
  if( !SourceString )
  {
    v9 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v9 + 1] = -1073740768;
    KsepHistoryErrors[2 * v9] = 197406;
    if( (KsepDebugFlag & 4) != 0 )
      RtlAssert("SourceString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 798i64, 0i64);
  }
  result = KsepStringDuplicate(TargetString, SourceString);
  if( result >= 0 )
  {
    for( i = TargetString->Length & 0xFFFE; v2 < i; i = TargetString->Length >> 1 )
    {
      Buffer = TargetString->Buffer;
      if( Buffer[v2] == 92 )
        Buffer[v2] = 33;
      ++v2;
    }
    return 0;
  }
  return result;
}

Referenced by:

KseSetDeviceFlags
KsepDbQueryRegistryDeviceData
KsepDbQueryRegistryDeviceDataList