RtlStringCopyWorkerW
NTSTATUS __stdcall RtlStringCopyWorkerW(
_NTSTRSAFE_PWSTR pszDest,
size_t cchDest,
size_t *pcchNewDestLength,
STRSAFE_PCNZWCH pszSrc,
size_t cchToCopy){
_WORD *v5;
__int64 v6;
__int64 v7;
char *v8;
__int16 v9;
_WORD *v10;
NTSTATUS result;
__int64 v12;
v5 = *(_WORD **)&pszDest;
v6 = 0i64;
if( *(_QWORD *)&cchDest )
{
v7 = 2147483646i64;
v8 = (char *)pszSrc - *(_QWORD *)&pszDest;
do
{
if( !v7 )
break;
v9 = *(_WORD *)((char *)v5 + (_QWORD)v8);
if( !v9 )
break;
*v5 = v9;
--v7;
++v5;
++v6;
--*(_QWORD *)&cchDest;
}
while( *(_QWORD *)&cchDest );
}
v10 = v5 - 1;
result = *(_QWORD *)&cchDest == 0i64 ? 0x80000005 : 0;
if( *(_QWORD *)&cchDest )
v10 = v5;
*v10 = 0;
if( pcchNewDestLength )
{
v12 = v6 - 1;
if( *(_QWORD *)&cchDest )
v12 = v6;
*(_QWORD *)pcchNewDestLength = v12;
}
return result;
}Referenced by:
RtlStringCbCopyExW
RtlStringCchCatExW
RtlStringCchCopyExW