RtlUnicodeStringCchCopyStringN

NTSTATUS __stdcall RtlUnicodeStringCchCopyStringN(
        PUNICODE_STRING DestinationString,
        NTSTRSAFE_PCWSTR pszSrc,
        size_t cchToCopy){
  __int16 v3; 
  unsigned __int16 Length; 
  wchar_t *Buffer; 
  size_t v8; 
  int v9; 
  unsigned __int64 MaximumLength; 
  size_t pcchNewDestLength; 
  v3 = 0;
  Length = DestinationString->Length;
  Buffer = 0i64;
  v8 = 0i64;
  v9 = 0;
  if( (Length & 1) != 0 )
    return -1073741811;
  MaximumLength = DestinationString->MaximumLength;
  if( (MaximumLength & 1) != 0 || Length > (unsigned __int16)MaximumLength || (_WORD)MaximumLength == 0xFFFF )
    return -1073741811;
  if( !DestinationString->Buffer && (Length || (_WORD)MaximumLength) )
  {
    v9 = -1073741811;
  }
  else
  {
    Buffer = DestinationString->Buffer;
    v8 = MaximumLength >> 1;
  }
  if( v9 >= 0 )
  {
    pcchNewDestLength = 0i64;
    if( cchToCopy <= 0x7FFF )
    {
      v9 = RtlWideCharArrayCopyStringWorker(Buffer, v8, &pcchNewDestLength, pszSrc, cchToCopy);
      v3 = pcchNewDestLength;
    }
    else
    {
      v9 = -1073741811;
    }
    DestinationString->Length = 2 * v3;
  }
  return v9;
}

Referenced by:

PopPlInitWString