bitwise53 {
var %hi = 2147483648 , %a = $calc($1 // %hi) , %b = $calc($1 % %hi)
if ($prop == isbit) {
if ($2 <= 31) { return $isbit(%b,$2) }
else { return $isbit(%a,$calc($2 - 31)) }
}
elseif ($istok(biton bitoff,$prop,32)) {
if ($2 <= 31) {
if ($prop == biton) { var %b = $biton(%b,$2) }
else { var %b = $bitoff(%b,$2) }
}
else {
if ($prop == biton) { var %a = $biton(%a,$calc($2 - 31)) }
else { var %a = $bitoff(%a,$calc($2 - 31)) }
}
return $calc(%a * %hi + %b)
}
elseif ($istok(and or xor not,$prop,32)) {
var %c = $calc($2 // %hi) , %d = $calc($2 % %hi)
if ($prop == and) { return $calc($and(%a,%c) * %hi + $and(%b,%d)) }
if ($prop == or) { return $calc($or(%a,%c) * %hi + $or(%b,%d)) }
if ($prop == xor) { return $calc($xor(%a,%c) * %hi + $xor(%b,%d)) }
if ($prop == not) { return $calc($not(%a,%c) * %hi + $not(%b,%d)) }
}
}