>> + movb %cl, %al >> + shrl $2, %ecx >> + andb $3, %al >> + rep movsl >> + movb %al, %cl >> rep movsb > >I guess we don't care that this movs 256 bytes extra when al & 3 = 0. No, it doesn't. "rep movs" doesn't do anything if (e)cx = 0. Regards, Jens