RtlStringCchCopyNExW

NTSTATUS __stdcall RtlStringCchCopyNExW(
        WCHAR *pszDest,
        UINT64 cchDest,
        WCHAR *pszSrc,
        UINT64 cchToCopy,
        WCHAR **ppszDestEnd,
        UINT64 *pcchRemaining,
        UINT64 dwFlags){
  NTSTATUS v9; 
  WCHAR *v10; 
  UINT64 v11; 
  NTSTATUS v12; 
  UINT64 v13; 
  UINT64 v15; 
  size_t pcchNewDestLength[2]; 

  v9 = 0;
  if( (dwFlags & 0x100) != 0 )
  {
    if( !pszDest && cchDest || cchDest > 0x7FFFFFFF )
      v9 = -1073741811;
  }
  else if( cchDest - 1 > 0x7FFFFFFE )
  {
    v9 = -1073741811;
  }
  if( v9 < 0 )
  {
    if( cchDest )
      *pszDest = 0;
    return v9;
  }
  v15 = (UINT64)pszDest;
  v10 = pszDest;
  *(_QWORD *)pcchNewDestLength = cchDest;
  v11 = cchDest;
  if( cchToCopy >= 0x7FFFFFFF )
  {
    v9 = -1073741811;
    if( cchDest )
      *pszDest = 0;
LABEL_11:
    if( v9 >= 0 )
    {
LABEL_12:
      if( ppszDestEnd )
        *ppszDestEnd = v10;
      if( pcchRemaining )
        *pcchRemaining = v11;
      return v9;
    }
    goto LABEL_28;
  }
  if( (dwFlags & 0x100) != 0 && !pszSrc )
  {
    pszSrc = (WCHAR *)&::ppszDestEnd;
    cchToCopy = 0i64;
  }
  v9 = 0;
  if( (dwFlags & 0xFFFFE000) != 0 )
  {
    v9 = -1073741811;
    if( cchDest )
      *pszDest = 0;
  }
  else if( cchDest )
  {
    *(_QWORD *)pcchNewDestLength = 0i64;
    v12 = RtlStringCopyWorkerW_1(pszDest, cchDest, pcchNewDestLength, pszSrc, cchToCopy);
    v13 = *(_QWORD *)pcchNewDestLength;
    v9 = v12;
    v11 = cchDest - *(_QWORD *)pcchNewDestLength;
    *(_QWORD *)pcchNewDestLength = cchDest - *(_QWORD *)pcchNewDestLength;
    v10 = &pszDest[v13];
    v15 = (UINT64)v10;
    if( v12 >= 0 )
    {
      if( (dwFlags & 0x200) != 0 && v11 > 1 )
      {
        pszSrc = (WCHAR *)(2 * v11);
        if( 2 * v11 > 2 )
          memset(v10 + 1, (unsigned __int8)dwFlags, (_DWORD)pszSrc - 2);
      }
      goto LABEL_11;
    }
  }
  else
  {
    if( !cchToCopy || !*pszSrc )
      goto LABEL_12;
    v9 = pszDest != 0i64 ? -2147483643 : -1073741811;
  }
LABEL_28:
  if( (dwFlags & 0x1C00) != 0 && cchDest )
  {
    StringExHandleOtherFlagsW(pszDest, 2 * cchDest, (WCHAR **)pszSrc, &v15, (UINT64)pcchNewDestLength);
    v10 = (WCHAR *)v15;
    v11 = *(_QWORD *)pcchNewDestLength;
  }
  if( (int)(v9 + 0x80000000) < 0 || v9 == -2147483643 )
    goto LABEL_12;
  return v9;
}

Referenced by:

CmGetDeviceInterfaceSubkeyPath
CmGetDeviceInterfaceSymbolicLinkName
CmSplitDevicePanelId
CmValidateDeviceInterfaceName
DrvDbSplitDeviceIdDriverInfMatch
punycode_encode