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; }