PspCaptureAndValidateUnicodeString

NTSTATUS __stdcall PspCaptureAndValidateUnicodeString(_UNICODE_STRING *SourceString, _UNICODE_STRING *DestString){
  __int64 Length; 
  wchar_t *Buffer; 
  unsigned __int64 v4; 

  *DestString = *SourceString;
  Length = DestString->Length;
  if( (Length & 1) != 0 )
    return -1073741811;
  Buffer = DestString->Buffer;
  if( Buffer )
  {
    DestString->MaximumLength = Length + 2;
    if( (unsigned __int16)(Length + 2) >= (unsigned __int16)Length )
      goto LABEL_4;
    return -1073741811;
  }
  if( (_WORD)Length )
    return -1073741811;
  DestString->MaximumLength = 0;
LABEL_4:
  if( (_WORD)Length )
  {
    v4 = (unsigned __int64)Buffer + Length;
    if( v4 > 0x7FFFFFFF0000i64 || v4 < (unsigned __int64)Buffer )
      MEMORY[0x7FFFFFFF0000] = 0;
  }
  return 0;
}

Referenced by:

PspCaptureUserProcessParameters