StringCchPrintfExW
VOID __fastcall StringCchPrintfExW(_EX_PUSH_LOCK *a1, INT64 a2){
WCHAR **v2;
unsigned __int64 *v3;
unsigned __int64 *v6;
int v7;
wchar_t *v8;
unsigned __int64 v9;
const wchar_t *v10;
int v11;
HRESULT v12;
size_t v13;
STRSAFE_LPWSTR ppszDestEnd;
size_t pcchNewDestLength[2];
WCHAR **v16;
DWORD dwFlags;
STRSAFE_LPCWSTR pszFormat;
char argList;
v16 = v2;
v6 = v3;
v7 = 0;
if( (dwFlags & 0x100) != 0 )
{
if( !a1 && a2 || (unsigned __int64)a2 > 0x7FFFFFFF )
v7 = -2147024809;
}
else if( (unsigned __int64)(a2 - 1) > 0x7FFFFFFE )
{
v7 = -2147024809;
}
if( v7 < 0 )
{
if( a2 )
*(_WORD *)&a1->0 = 0;
}
else
{
ppszDestEnd = (STRSAFE_LPWSTR)a1;
v8 = (wchar_t *)a1;
pcchNewDestLength[0] = a2;
v9 = a2;
if( (dwFlags & 0x100) != 0 )
{
v10 = &word_14001B020;
if( pszFormat )
v10 = pszFormat;
}
else
{
v10 = pszFormat;
}
if( (dwFlags & 0xFFFFE000) != 0 )
{
v11 = -2147024809;
if( a2 )
*(_WORD *)&a1->0 = 0;
}
else if( a2 )
{
pcchNewDestLength[0] = 0i64;
v12 = StringVPrintfWorkerW((STRSAFE_LPWSTR)a1, a2, pcchNewDestLength, v10, &argList);
v13 = pcchNewDestLength[0];
v11 = v12;
v9 = a2 - pcchNewDestLength[0];
pcchNewDestLength[0] = a2 - pcchNewDestLength[0];
v8 = (wchar_t *)a1 + v13;
ppszDestEnd = v8;
if( v12 >= 0 )
{
if( (dwFlags & 0x200) != 0 && v9 > 1 && 2 * v9 > 2 )
memset((INT64)(v8 + 1), (unsigned __int8)dwFlags);
goto LABEL_22;
}
}
else
{
if( !*v10 )
{
LABEL_22:
if( v16 )
*v16 = v8;
if( v6 )
*v6 = v9;
return;
}
v11 = a1 != 0i64 ? -2147024774 : -2147024809;
}
if( (dwFlags & 0x1C00) != 0 && a2 )
{
StringExHandleOtherFlagsW((WCHAR *)a1, 2 * a2, v2, (UINT64 *)&ppszDestEnd, (UINT64)pcchNewDestLength);
v8 = ppszDestEnd;
v9 = pcchNewDestLength[0];
}
if( (int)(v11 + 0x80000000) < 0 || v11 == -2147024774 )
goto LABEL_22;
}
}Referenced by:
AdtpBuildAccessReasonAuditStringInternal
AdtpBuildStagingReasonAuditStringInternal