in rtl/inc/karray.h [442:498]
PAGED void moveElements(ULONG from, ULONG to, ULONG number)
{
if (from == to || number == 0)
{
return;
}
else if constexpr(__is_trivially_copyable(T))
{
memmove(_p + to, _p + from, number * sizeof(T));
}
else if (from < to)
{
WIN_ASSERT(m_numElements == from + number);
ULONG delta = to - from;
ULONG i;
for (i = to + number; i - 1 >= m_numElements; i--)
{
new (wistd::addressof(_p[i - 1])) T(wistd::move(_p[i - delta - 1]));
}
for (; i > to; i--)
{
_p[i - 1].~T();
new (wistd::addressof(_p[i - 1])) T(wistd::move(_p[i - delta - 1]));
}
for (; i > from; i--)
{
_p[i - 1].~T();
}
}
else
{
WIN_ASSERT(m_numElements == from + number);
ULONG delta = from - to;
ULONG i;
for (i = to; i < from; i++)
{
new (wistd::addressof(_p[i])) T(wistd::move(_p[i + delta]));
}
for (; i < to + number; i++)
{
_p[i].~T();
new (wistd::addressof(_p[i])) T(wistd::move(_p[i + delta]));
}
for (; i < from + number; i++)
{
_p[i].~T();
}
}
}