[X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9] becomes [Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9] #### void swapBufferHalves( U8 *buf, U32 start, U32 length ) { register U64 *p1 = (U64*)&buf[ start ]; register U64 *p2 = (U64*)&buf[ start + ( length >> 1 ) ]; const U64 *pend = (U64*)(start + length); register U64 temp; assert( !( length & 1 ) ); assert( ( (U64)buf & 7ull ) == 0 ); while( p1 < pend ) { temp = *p1; *p1++ = *p2; *p2++ = temp; } return; } #### [X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7] becomes [Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 X0 X1 X2 X3 X4 X5 X6 X7 X8 X9]