def test_widened_guy(): w = claripy.widen(claripy.BVV(1, 32), claripy.BVV(0, 32)) s,r = claripy.balancer.Balancer(claripy.backends.vsa, w <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max(r[0][1]) == 1 # used to be 39, but that was a bug in the VSA widening s,r = claripy.balancer.Balancer(claripy.backends.vsa, w + 1 <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max(r[0][1]) == 1 # used to be 38, but that was a bug in the VSA widening
def test_widened_guy(): w = claripy.widen(claripy.BVV(1, 32), claripy.BVV(0, 32)) s,r = claripy.balancer.Balancer(claripy.backends.vsa, w <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max(r[0][1]) == 1 # used to be 39, but that was a bug in the VSA widening s,r = claripy.balancer.Balancer(claripy.backends.vsa, w + 1 <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 all_vals = r[0][1]._model_vsa.eval(1000) assert set(all_vals) == set([4294967295, 0, 1])
def test_complex_guy(): guy_wide = claripy.widen( claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ), claripy.union( claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ), claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ) ) guy_inc = guy_wide + claripy.BVV(1, 32) guy_zx = claripy.ZeroExt(32, guy_inc) s,r = claripy.balancer.Balancer(claripy.backends.vsa, guy_inc <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert set(claripy.backends.vsa.eval(r[0][1], 1000)) == set([4294967295] + range(39)) s,r = claripy.balancer.Balancer(claripy.backends.vsa, guy_zx <= claripy.BVV(39, 64)).compat_ret assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert set(claripy.backends.vsa.eval(r[0][1], 1000)) == set([4294967295] + range(39))
def test_complex_guy(): guy_wide = claripy.widen( claripy.union( claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)), claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)) + claripy.BVV(1, 32)), claripy.union( claripy.union( claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)), claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)) + claripy.BVV(1, 32)), claripy.union( claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)), claripy.union( claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32)) + claripy.BVV(1, 32)) + claripy.BVV(1, 32))) guy_inc = guy_wide + claripy.BVV(1, 32) guy_zx = claripy.ZeroExt(32, guy_inc) s, r = claripy.balancer.Balancer(claripy.backends.vsa, guy_inc <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert set(claripy.backends.vsa.eval( r[0][1], 1000)) == set([4294967295] + list(range(39))) s, r = claripy.balancer.Balancer(claripy.backends.vsa, guy_zx <= claripy.BVV(39, 64)).compat_ret assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert set(claripy.backends.vsa.eval( r[0][1], 1000)) == set([4294967295] + list(range(39)))
def test_complex_guy(): guy_wide = claripy.widen( claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ), claripy.union( claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ), claripy.union( claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ), claripy.union( claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)), claripy.union(claripy.BVV(0L, 32), claripy.BVV(1, 32)) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ) + claripy.BVV(1, 32) ) ) guy_inc = guy_wide + claripy.BVV(1, 32) guy_zx = claripy.ZeroExt(32, guy_inc) s,r = claripy.balancer.Balancer(claripy.backends.vsa, guy_inc <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max(r[0][1]) == 38 s,r = claripy.balancer.Balancer(claripy.backends.vsa, guy_zx <= claripy.BVV(39, 64)).compat_ret assert r[0][0] is guy_wide assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max(r[0][1]) == 38
def test_widened_guy(): w = claripy.widen(claripy.BVV(1, 32), claripy.BVV(0, 32)) s, r = claripy.balancer.Balancer(claripy.backends.vsa, w <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max( r[0][1]) == 1 # used to be 39, but that was a bug in the VSA widening s, r = claripy.balancer.Balancer(claripy.backends.vsa, w + 1 <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 all_vals = r[0][1]._model_vsa.eval(1000) assert set(all_vals) == set([4294967295, 0, 1])
def test_widened_guy(): w = claripy.widen(claripy.BVV(1, 32), claripy.BVV(0, 32)) s, r = claripy.balancer.Balancer(claripy.backends.vsa, w <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max( r[0][1]) == 1 # used to be 39, but that was a bug in the VSA widening s, r = claripy.balancer.Balancer(claripy.backends.vsa, w + 1 <= claripy.BVV(39, 32)).compat_ret assert s assert r[0][0] is w assert claripy.backends.vsa.min(r[0][1]) == 0 assert claripy.backends.vsa.max( r[0][1]) == 1 # used to be 38, but that was a bug in the VSA widening