StringCopyWorkerW_0

HRESULT __stdcall StringCopyWorkerW_0(
        STRSAFE_LPWSTR pszDest,
        size_t cchDest,
        size_t *pcchNewDestLength,
        STRSAFE_PCNZWCH pszSrc,
        size_t cchToCopy){
  STRSAFE_LPWSTR v5; 
  __int64 v6; 
  signed __int64 v7; 
  wchar_t v8; 
  STRSAFE_LPWSTR v9; 
  HRESULT result; 

  v5 = pszDest;
  if( *(_QWORD *)&cchDest )
  {
    v6 = *(_QWORD *)&cchToCopy;
    v7 = (char *)pszSrc - (char *)pszDest;
    do
    {
      if( !v6 )
        break;
      v8 = *(STRSAFE_LPWSTR)((char *)v5 + v7);
      if( !v8 )
        break;
      *v5 = v8;
      --v6;
      ++v5;
      --*(_QWORD *)&cchDest;
    }
    while( *(_QWORD *)&cchDest );
  }
  v9 = v5 - 1;
  result = *(_QWORD *)&cchDest == 0i64 ? 0x8007007A : 0;
  if( *(_QWORD *)&cchDest )
    v9 = v5;
  *v9 = 0;
  return result;
}

Referenced by:

StringCbCatW
StringCbCopyNW