KsepStringDuplicate

NTSTATUS __stdcall KsepStringDuplicate(_UNICODE_STRING *TargetString, PWCHAR SourceString){
  __int64 v4; 
  unsigned __int64 v5; 
  wchar_t *Paged; 
  wchar_t *v7; 
  NTSTATUS result; 
  __int64 v9; 

  if( !SourceString )
  {
    v9 = ((unsigned __int8)_InterlockedExchangeAdd(&KsepHistoryErrorsIndex, 1u) + 1) & 0x3F;
    KsepHistoryErrors[2 * v9 + 1] = -1073740768;
    KsepHistoryErrors[2 * v9] = 197202;
    if( (KsepDebugFlag & 4) != 0 )
      RtlAssert("SourceString != NULL", "minkernel\\ntos\\kshim\\ksemisc.c", 594i64, 0i64);
  }
  v4 = -1i64;
  *TargetString = 0i64;
  do
    ++v4;
  while( SourceString[v4] );
  v5 = 2 * v4 + 2;
  if( v5 > 0xFFFE )
    return -1073741306;
  Paged = (wchar_t *)KsepPoolAllocatePaged(v5);
  v7 = Paged;
  if( !Paged )
    return -1073741801;
  memmove(Paged, SourceString, v5);
  TargetString->Buffer = v7;
  TargetString->Length = v5 - 2;
  result = 0;
  TargetString->MaximumLength = v5;
  return result;
}

Referenced by:

KseAddHardwareId
KsepCacheDeviceInsertData
KsepDbCacheReadDevice
KsepDbGetSdbString
KsepEngineGetShimsFromRegistry
KsepRegistryCreateKey
KsepRegistryOpenKey
KsepStringSplitMultiString
KsepStringTransform