/* Compose two values, using a bitmask as decision value This is equivalent to (a & mask) | (b & ~mask)  */
static unsigned long comp(unsigned long a, unsigned long b, unsigned long mask)
/* Compose two values, using a bitmask as decision value This is equivalent to (a & mask) | (b & ~mask)  */
static unsigned long comp(unsigned long a, unsigned long b, unsigned long mask)
{
	return ((a ^ b) & mask) ^ b;
}