
<   for (i = 3; i < size / 2; i *= 2)
<       memcpy (r + i, r, i);
---
>   i = 3;
>   do {
>       if (i * 2 > size) break;
>       memcpy (r + i, r, i);
>       i *= 2;
>   } while (i < size / 2);
