I'm simulating the behaviour of an algorithm using z3 python package, however I'm encountering problems using a bitwise XOR.
At first I define
class State:
def __init__(self):
self.state = [0] * 0x270
self.index = 0
def mag(i):
return z3.If(i == 0, 0x0, 0x9908b0df)
seed = z3.BitVec('seed', 32)
s= State()
And the script goes on, however when I run the Solver I get a z3.z3types.Z3Exception: sort mismatch caused by trying to execute the __xor__ in the line
s.state[i] = s.state[i + 0x18d] ^ ((s.state[i + 1] & 0x7fffffff | s.state[i] & 0x80000000) >> 1) ^ mag((s.state[1] & 1) *8)
Here every entry in s.state depends on the symbolic value of the seed.
I'm a beginner with these kind of solver and I'm not sure what exactly causes the issue.