Gratuitous use of inline assembly ...
static unsigned long nibble_pivot(unsigned long value)
{
__asm
{
mov eax, value
rol eax, 16
mov edx, eax
and eax, 0xFF00FFUL
and edx, 0xFF00FF00UL
shr edx, 8
shl eax, 8
or eax, edx
mov edx, eax
and eax, 0xF0F0F0FUL
and edx, 0xF0F0F0F0UL
shr edx, 4
shl eax, 4
or eax, edx
mov value, eax
}
return value;
}