RtlUnicodeStringCat

INT64 __stdcall RtlUnicodeStringCat(_UNICODE_STRING *DestinationString, const _UNICODE_STRING *SourceString){
  ULONG v2; 
  unsigned int v3; 
  __int64 v5; 
  INT64 result; 
  unsigned __int16 *v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  unsigned __int64 Length; 
  wchar_t *Buffer; 
  unsigned __int64 v13; 
  int v14; 
  unsigned __int16 MaximumLength; 
  __int16 v16; 
  unsigned __int64 v17; 
  __int64 v18; 
  v3 = 0;
  v5 = 0i64;
  LODWORD(result) = RtlUnicodeStringValidateWorker(DestinationString, (const size_t)SourceString, v2);
  if( (int)result >= 0 )
  {
    if( v8 )
    {
      v5 = *((_QWORD *)v8 + 1);
      v9 = (unsigned __int64)v8[1] >> 1;
      v10 = (unsigned __int64)*v8 >> 1;
    }
    Length = SourceString->Length;
    Buffer = 0i64;
    v13 = 0i64;
    v14 = 0;
    if( (Length & 1) != 0
      || (MaximumLength = SourceString->MaximumLength, (MaximumLength & 1) != 0)
      || (unsigned __int16)Length > MaximumLength
      || MaximumLength == 0xFFFF
      || !SourceString->Buffer && ((_WORD)Length || MaximumLength) )
    {
      v14 = -1073741811;
    }
    else
    {
      Buffer = SourceString->Buffer;
      v13 = Length >> 1;
    }
    if( v14 < 0 )
    {
      return(unsigned int)v14;
    }
    else
    {
      v16 = 0;
      v17 = v9 - v10;
      if( v17 )
      {
        v18 = v5 + 2 * v10 - (_QWORD)Buffer;
        while( v13 )
        {
          --v13;
          *(wchar_t *)((char *)Buffer + v18) = *Buffer;
          ++v16;
          ++Buffer;
          if( !--v17 )
            goto LABEL_15;
        }
      }
      else
      {
LABEL_15:
        if( v13 )
          v3 = -2147483643;
      }
      result = v3;
      DestinationString->Length = 2 * (v16 + v10);
    }
  }
  return result;
}

Referenced by:

CmpDoWritethroughReparse
CmpGetSymbolicLinkTarget
CmpLogTransactionAbortedWithChildName
CmpVEExecuteVirtualStoreParseLogic
PopGenerateDeviceFriendlyName
PopIdleWakeGenerateDescriptionString
SshpGenerateDeviceFriendlyName