73 mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool):
79 sp = asm_symbol_pool()
81 ir_arch.add_bloc(cur_bloc)
83 ir_blocs = ir_arch.blocs.values()
91 if e.dst == ir_arch.pc:
97 if not isinstance(pc_val, ExprMem):
99 assert(pc_val.size == 32)
104 res =
MatchExpr(ad, jra + jrb, set([jra, jrb]))
106 raise NotImplementedError(
'not fully functional')
108 if not isinstance(res[jrb], ExprInt):
109 raise NotImplementedError(
'not fully functional')
110 base_ad = int(res[jrb].arg)
114 max_table_entry = 10000
115 max_diff_addr = 0x100000
116 while i < max_table_entry:
119 ad =
upck32(pool_bin.getbytes(base_ad + 4 * i, 4))
122 if abs(ad - base_ad) > max_diff_addr:
125 print [hex(x)
for x
in addrs]
128 offsets_to_dis.add(ad)
129 l = symbol_pool.getby_offset_create(ad)
130 c = asm_constraint_to(l)