+.newx:
+
+ addl 24(%ebp), %ebx # x += x_step
+/*
+ * Load current component values into mm0 (src0) and mm2 (src1)
+ */
+ movq %mm1, %mm0
+ movq %mm3, %mm2
+
+/*
+ * Load next component values into mm1 (src0) and mm3 (src1)
+ */
+ movl %ebx, %eax # x_scaled
+ sarl $15, %eax
+ andl $0xfffffffe, %eax
+ movl %eax, %edx # x_aligned
+ andl $0xfffffffc, %edx
+
+ movl 16(%ebp), %edi # get src0
+ movl (%edi,%eax), %ecx # get y
+ andl $0x00ff00ff, %ecx # mask off y
+ movl (%edi,%edx), %eax # get uv
+ andl $0xff00ff00, %eax # mask off uv
+ orl %eax, %ecx # composite y, uv
+ movd %ecx, %mm1 # move to mmx1
+ punpcklbw %mm4, %mm1
+
+ movl 20(%ebp), %edi # get src1
+ movl (%edi,%edx), %ecx # get y
+ andl $0x00ff00ff, %ecx # mask off y
+ movl (%edi,%edx), %eax # get uv
+ andl $0xff00ff00, %eax # mask off uv
+ orl %eax, %ecx # composite y, uv
+ movd %ecx, %mm3 # move to mmx3
+ punpcklbw %mm4, %mm3
+