static void addptr(RList *ret, const char *name, ut64 addr, const ut8 *b, int len) { if (b && rjmp (b)) { addsym (ret, sdb_fmt ("vector.%s", name), addr); ut64 ptr_addr = rjmp_dest (addr, b + addr); addsym (ret, sdb_fmt ("syscall.%s", name), ptr_addr); } }
static bool check_bytes_rjmp(const ut8 *b, ut64 length) { CHECK3INSTR (b, rjmp, 4); ut64 dst = rjmp_dest (0, b); if (dst < 1 || dst > length) { return false; } tmp_entry = dst; return true; }
static int check_bytes(const ut8 *b, ut64 length) { if (length < 32) { return false; } if (!rjmp (b)) return false; if (!rjmp (b + 2)) return false; if (!rjmp (b + 4)) return false; if (!rjmp (b + 8)) return false; ut64 dst = rjmp_dest (0, b); if (dst < 1 || dst > length) { return false; } if (!rjmp (b + dst - 2)) { return false; } tmp_entry = dst; return true; }