234#pragma warning(disable:4062)
235#pragma warning(disable:4265)
258class control_graph_t;
293#define MAX_SUPPORTED_STACK_SIZE 0x100000
298#define HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {}
299#define HEXRAYS_MEMORY_ALLOCATION_FUNCS() \
300 void *operator new (size_t _s) { return hexrays_alloc(_s); } \
301 void *operator new[](size_t _s) { return hexrays_alloc(_s); } \
302 void *operator new(size_t , void *_v) { return _v; } \
303 void operator delete (void *_blk) { hexrays_free(_blk); } \
304 void operator delete[](void *_blk) { hexrays_free(_blk); } \
305 HEXRAYS_PLACEMENT_DELETE
367 return cmpop ==
CMP_A
383#define VLR_RANGE 0x03
384#define VLR_SRANGE 0x04
388#define VLR_UNION 0x07
453 const char *hexapi
dstr()
const;
693 return mcode ==
m_add
706 return mcode ==
m_shl
795struct operand_locator_t
799 operand_locator_t() {}
805 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
820#define NF_NEGDONE 0x02
821#define NF_BINVDONE 0x04
822#define NF_NEGATE 0x08
823#define NF_BITNOT 0x10
859 return (
props & (NF_NEGATE|NF_BITNOT)) != 0
860 && (
props & (NF_NEGDONE|NF_BINVDONE)) == 0;
871 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
892 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
904 virtual bool idaapi
oneliner() const newapi {
return false; }
990 return type.is_decl_complex() && !
type.is_typeref();
1109 int reg1()
const {
return atype() ==
ALOC_REG2 ? argloc_t::reg1() : get_reginfo(); }
1124 const char *hexapi
dstr(
int width=0)
const;
1178 const
char *hexapi
dstr() const;
1189#define CVAR_USED 0x00000001
1190#define CVAR_TYPE 0x00000002
1191#define CVAR_NAME 0x00000004
1192#define CVAR_MREG 0x00000008
1193#define CVAR_NOWD 0x00000010
1194#define CVAR_UNAME 0x00000020
1195#define CVAR_UTYPE 0x00000040
1196#define CVAR_RESULT 0x00000080
1197#define CVAR_ARG 0x00000100
1198#define CVAR_FAKE 0x00000200
1199#define CVAR_OVER 0x00000400
1200#define CVAR_FLOAT 0x00000800
1201#define CVAR_SPOILED 0x00001000
1202#define CVAR_MAPDST 0x00002000
1203#define CVAR_PARTIAL 0x00004000
1204#define CVAR_THISARG 0x00008000
1205#define CVAR_SPLIT 0x00010000
1207#define CVAR_REGNAME 0x00020000
1209#define CVAR_NOPTR 0x00040000
1210#define CVAR_DUMMY 0x00080000
1212#define CVAR_NOTARG 0x00100000
1213#define CVAR_AUTOMAP 0x00200000
1214#define CVAR_BYREF 0x00400000
1215#define CVAR_INASM 0x00800000
1217#define CVAR_UNUSED 0x01000000
1219#define CVAR_SHARED 0x02000000
1220#define CVAR_SCARG 0x04000000
1241 const char *hexapi
dstr()
const;
1244 bool used()
const {
return (flags & CVAR_USED) != 0; }
1246 bool typed()
const {
return (flags & CVAR_TYPE) != 0; }
1256 return (flags & (CVAR_UNAME|CVAR_UTYPE|CVAR_NOPTR|CVAR_UNUSED)) != 0
1268 bool hexapi is_promoted_arg()
const;
1290 bool in_asm()
const {
return (flags & CVAR_INASM) != 0; }
1294 bool is_notarg()
const {
return (flags & CVAR_NOTARG) != 0; }
1302 bool is_shared()
const {
return (flags & CVAR_SHARED) != 0; }
1369 bool hexapi accepts_type(
const tinfo_t &
t,
bool may_change_thisarg=
false);
1380 bool hexapi set_lvar_type(
const tinfo_t &
t,
bool may_fail=
false);
1395 bool hexapi set_width(
int w,
int svw_flags=0);
1397#define SVW_FLOAT 0x01
1398#define SVW_SOFT 0x02
1405 void hexapi append_list(
const mba_t *mba,
mlist_t *lst,
bool pad_if_scattered=
false)
const;
1444 int hexapi find_stkvar(
sval_t spoff,
int width);
1458 int hexapi find_lvar(
const vdloc_t &location,
int width,
int defblk=-1)
const;
1473#define LVINF_KEEP 0x0001
1479#define LVINF_SPLIT 0x0002
1482#define LVINF_NOPTR 0x0004
1483#define LVINF_NOMAP 0x0008
1484#define LVINF_UNUSED 0x0010
1488 return !
name.empty()
1542#define ULV_PRECISE_DEFEA 0x0001
1563 return lvvec.empty()
1574 if ( p->ll == vloc )
1634#define MLI_NAME 0x01
1635#define MLI_TYPE 0x02
1637#define MLI_SET_FLAGS 0x08
1638#define MLI_CLR_FLAGS 0x10
1653 const char *varname);
1666 const char *oldname,
1667 const char *newname)
1672 info.
name = newname;
1770 void hexapi cleanup();
1775 bool hexapi
init(
const char *decl);
1778 bool empty()
const {
return udc.empty(); }
1803 std::swap(bitmap, r.bitmap);
1804 std::swap(high, r.high);
1808 bool hexapi add(
int bit);
1809 bool hexapi add(
int bit,
int width);
1810 bool hexapi add(
const bitset_t &ml);
1811 bool hexapi sub(
int bit);
1812 bool hexapi sub(
int bit,
int width);
1813 bool hexapi sub(
const bitset_t &ml);
1814 bool hexapi cut_at(
int maxbit);
1816 bool hexapi has(
int bit)
const;
1817 bool hexapi has_all(
int bit,
int width)
const;
1818 bool hexapi has_any(
int bit,
int width)
const;
1821 int (*get_bit_name)(
qstring *out,
int bit,
int width,
void *ud)=
nullptr,
1822 void *ud=
nullptr)
const;
1823 const char *hexapi
dstr()
const;
1824 bool hexapi
empty()
const;
1825 int hexapi
count()
const;
1826 int hexapi
count(
int bit)
const;
1827 int hexapi
last()
const;
1829 void hexapi fill_with_ones(
int maxbit);
1830 bool hexapi fill_gaps(
int total_nbits);
1831 bool hexapi has_common(
const bitset_t &ml)
const;
1832 bool hexapi intersect(
const bitset_t &ml);
1833 bool hexapi is_subset_of(
const bitset_t &ml)
const;
1843 iterator(
int n=-1) : i(
n) {}
1844 bool operator==(
const iterator &
n)
const {
return i ==
n.i; }
1845 bool operator!=(
const iterator &
n)
const {
return i !=
n.i; }
1846 int operator*()
const {
return i; }
1849 iterator
itat(
int n)
const {
return iterator(goup(
n)); }
1851 iterator
end()
const {
return iterator(high); }
1854 void inc(iterator &p,
int n=1)
const { p.i = goup(p.i+
n); }
1856 int hexapi goup(
int reg)
const;
1886 DEFINE_MEMORY_ALLOCATION_FUNCS()
1901 const char *hexapi
dstr()
const;
1906 bool changed =
false;
1912 if ( new_end < r.
end() )
1925 if ( new_end > r.
end() )
1927 if ( new_off < new_end )
1956#define ALLMEM ivl_t::allmem
1967 DEFINE_MEMORY_ALLOCATION_FUNCS()
1971template <
class Ivl,
class T>
2023 bool hexapi add(
const ivl_t &ivl);
2025 bool hexapi add(
const ivlset_t &ivs);
2026 bool hexapi addmasked(
const ivlset_t &ivs,
const ivl_t &mask);
2027 bool hexapi sub(
const ivl_t &ivl);
2029 bool hexapi sub(
const ivlset_t &ivs);
2030 bool hexapi has_common(
const ivl_t &ivl,
bool strict=
false)
const;
2031 void hexapi print(
qstring *vout)
const;
2032 const char *hexapi
dstr()
const;
2034 bool hexapi has_common(
const ivlset_t &ivs)
const;
2035 bool hexapi contains(
uval_t off)
const;
2036 bool hexapi includes(
const ivlset_t &ivs)
const;
2037 bool hexapi intersect(
const ivlset_t &ivs);
2056 const char *hexapi
dstr()
const;
2078 bool changed =
reg.add(lst.
reg);
2087 bool changed =
reg.sub(lst.
reg);
2093 void hexapi print(
qstring *vout)
const;
2094 const char *hexapi
dstr()
const;
2106 bool changed =
reg.intersect(lst.
reg);
2107 if (
mem.intersect(lst.
mem) )
2114 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
2235 virtual
bool ignore_edge(
int ,
int ) const
newapi {
return false; }
2238 void hexapi compute_immediate_dominators(
2241 bool post=
false)
const;
2264 iterator(
int n) : i(
n) {}
2275 virtual int hexapi goup(
int node)
const newapi;
2297 mba_t *_mba=
nullptr,
2303 bool really_alloc() const;
2312 mba_t *_mba=
nullptr,
2329 mba_t *_mba=
nullptr,
2412 std::swap(
off, r.off);
2413 std::swap(
idx, r.idx);
2415 lvar_t &hexapi var()
const;
2437 std::swap(
off, r.off);
2491 if (
value < r.value )
2493 if (
value > r.value )
2514 void hexapi print(
qstring *vout)
const;
2515 const char *hexapi
dstr()
const;
2536#define SHINS_NUMADDR 0x01
2537#define SHINS_VALNUM 0x02
2538#define SHINS_SHORT 0x04
2539#define SHINS_LDXEA 0x08
2565 void hexapi copy(
const mop_t &rop);
2572#define OPROP_IMPDONE 0x01
2573#define OPROP_UDT 0x02
2574#define OPROP_FLOAT 0x04
2575#define OPROP_CCFLAGS 0x08
2578#define OPROP_UDEFVAL 0x10
2579#define OPROP_LOWADDR 0x20
2580#define OPROP_ABI 0x40
2630 return (
oprops & OPROP_CCFLAGS) != 0
2653 void hexapi swap(
mop_t &rop);
2654 void hexapi erase();
2657 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
2658 const char *hexapi
dstr()
const;
2689 void hexapi create_from_vdloc(
mba_t *mba,
const vdloc_t &loc,
int _size);
2700 void hexapi create_from_scattered_vdloc(
2711 void hexapi create_from_insn(
const minsn_t *m);
2718 void hexapi make_number(
uint64 _value,
int _size,
ea_t _ea=BADADDR,
int opnum=0);
2725 bool hexapi make_fpnum(
const void *bytes,
size_t _size);
2762 void hexapi _make_gvar(
ea_t ea);
2764 void hexapi make_gvar(
ea_t ea);
2782 void hexapi make_reg_pair(
int loreg,
int hireg,
int halfsize);
2789 void _make_insn(
minsn_t *ins);
2808 void hexapi make_helper(
const char *name);
2871 static bool hexapi is_bit_reg(
mreg_t reg);
2882 bool is_glbaddr()
const;
2884 bool is_glbaddr(
ea_t ea)
const;
2886 bool is_stkaddr()
const;
2893 bool has_side_effects(
bool include_ldx_and_divs=
false)
const;
2895 bool hexapi may_use_aliased_memory()
const;
2900 bool hexapi is01()
const;
2907 bool hexapi is_sign_extended_from(
int nbytes)
const;
2914 bool hexapi is_zero_extended_from(
int nbytes)
const;
2932 bool hexapi equal_mops(
const mop_t &rop,
int eqflags)
const;
2950 int hexapi for_all_ops(
2953 bool is_target=
false);
2980 bool hexapi is_constant(
uint64 *out=
nullptr,
bool is_signed=
true)
const;
3009 return s->get_stkvar(udm, p_idaoff);
3017 bool hexapi get_stkoff(
sval_t *p_vdoff)
const;
3036 bool hexapi make_low_half(
int width);
3042 bool hexapi make_high_half(
int width);
3048 bool hexapi make_first_half(
int width);
3054 bool hexapi make_second_half(
int width);
3065 bool hexapi shift_mop(
int offset);
3091 bool hexapi preserve_side_effects(
3094 bool *moved_calls=
nullptr);
3102 void hexapi apply_ld_mcode(
mcode_t mcode,
ea_t ea,
int newsize);
3114 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
3161 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3162 const char *hexapi
dstr()
const;
3163 void hexapi set_regarg(
mreg_t mr,
int sz,
const tinfo_t &tif);
3237#define FUNC_NAME_MEMCPY "memcpy"
3238#define FUNC_NAME_WMEMCPY "wmemcpy"
3239#define FUNC_NAME_MEMSET "memset"
3240#define FUNC_NAME_WMEMSET "wmemset"
3241#define FUNC_NAME_MEMSET32 "memset32"
3242#define FUNC_NAME_MEMSET64 "memset64"
3243#define FUNC_NAME_STRCPY "strcpy"
3244#define FUNC_NAME_WCSCPY "wcscpy"
3245#define FUNC_NAME_STRLEN "strlen"
3246#define FUNC_NAME_WCSLEN "wcslen"
3247#define FUNC_NAME_STRCAT "strcat"
3248#define FUNC_NAME_WCSCAT "wcscat"
3249#define FUNC_NAME_TAIL "tail"
3250#define FUNC_NAME_VA_ARG "va_arg"
3251#define FUNC_NAME_EMPTY "$empty"
3252#define FUNC_NAME_PRESENT "$present"
3253#define FUNC_NAME_CONTAINING_RECORD "CONTAINING_RECORD"
3254#define FUNC_NAME_MORESTACK "runtime_morestack"
3260#define MAX_FUNC_ARGS 64
3290#define FCI_PROP 0x001
3291#define FCI_DEAD 0x002
3292#define FCI_FINAL 0x004
3293#define FCI_NORET 0x008
3294#define FCI_PURE 0x010
3295#define FCI_NOSIDE 0x020
3296#define FCI_SPLOK 0x040
3301#define FCI_HASCALL 0x080
3304#define FCI_HASFMT 0x100
3306#define FCI_EXPLOCS 0x400
3320 void hexapi print(
qstring *vout,
int size=-1,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3321 const char *hexapi
dstr()
const;
3337 void hexapi print(
qstring *vout)
const;
3338 const char *hexapi
dstr()
const;
3399 bool hexapi extend_to_cover(
const vivl_t &r);
3428 int code = voff_t::compare(r);
3435 void hexapi print(
qstring *vout)
const;
3436 const char *hexapi
dstr()
const;
3454#define CHF_INITED 0x01
3455#define CHF_REPLACED 0x02
3456#define CHF_OVER 0x04
3457#define CHF_FAKE 0x08
3458#define CHF_PASSTHRU 0x10
3459#define CHF_TERM 0x20
3491 void hexapi print(
qstring *vout)
const;
3492 const char *hexapi
dstr()
const;
3494 void hexapi append_list(
const mba_t *mba,
mlist_t *list)
const;
3501# define SIZEOF_BLOCK_CHAINS 32
3503# define SIZEOF_BLOCK_CHAINS 24
3505#elif defined(__MAC__)
3506# define SIZEOF_BLOCK_CHAINS 32
3508# define SIZEOF_BLOCK_CHAINS 56
3519 size_t body[SIZEOF_BLOCK_CHAINS/
sizeof(size_t)];
3551 void hexapi print(
qstring *vout)
const;
3552 const char *hexapi
dstr()
const;
3553 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
3579#define GCA_EMPTY 0x01
3580#define GCA_SPEC 0x02
3581#define GCA_ALLOC 0x04
3582#define GCA_NALLOC 0x08
3583#define GCA_OFIRST 0x10
3584#define GCA_OLAST 0x20
3594 void hexapi release();
3598 std::swap(lock, r.lock);
3605 void hexapi init(
ea_t _ea);
3606 void hexapi copy(
const minsn_t &m);
3620#define IPROP_OPTIONAL 0x0001
3621#define IPROP_PERSIST 0x0002
3622#define IPROP_WILDMATCH 0x0004
3625#define IPROP_CLNPOP 0x0008
3627#define IPROP_FPINSN 0x0010
3628#define IPROP_FARCALL 0x0020
3629#define IPROP_TAILCALL 0x0040
3630#define IPROP_ASSERT 0x0080
3635#define IPROP_SPLIT 0x0700
3636#define IPROP_SPLIT1 0x0100
3637#define IPROP_SPLIT2 0x0200
3638#define IPROP_SPLIT4 0x0300
3639#define IPROP_SPLIT8 0x0400
3640#define IPROP_COMBINED 0x0800
3641#define IPROP_EXTSTX 0x1000
3642#define IPROP_IGNLOWSRC 0x2000
3645#define IPROP_INV_JX 0x4000
3646#define IPROP_WAS_NORET 0x8000
3647#define IPROP_MULTI_MOV 0x10000
3651#define IPROP_DONT_PROP 0x20000
3652#define IPROP_DONT_COMB 0x40000
3653#define IPROP_MBARRIER 0x80000
3655#define IPROP_UNMERGED 0x100000
3656#define IPROP_UNPAIRED 0x200000
3681 void hexapi set_combined();
3709 iprops |= (s == 1 ? IPROP_SPLIT1
3710 : s == 2 ? IPROP_SPLIT2
3711 : s == 4 ? IPROP_SPLIT4
3712 : s == 8 ? IPROP_SPLIT8 : 0);
3716 int cnt = (
iprops & IPROP_SPLIT) >> 8;
3717 return cnt == 0 ? 0 : 1 << (cnt-1);
3735 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3738 const char *hexapi
dstr()
const;
3742 void hexapi setaddr(
ea_t new_ea);
3754#define OPTI_ADDREXPRS 0x0001
3755#define OPTI_MINSTKREF 0x0002
3756#define OPTI_COMBINSNS 0x0004
3757#define OPTI_NO_LDXOPT 0x0008
3760#define OPTI_NO_VALRNG 0x0010
3765 int hexapi optimize_subtree(
3769 ea_t *converted_call,
3770 int optflags=OPTI_MINSTKREF);
3788 void hexapi _make_nop();
3794 bool hexapi equal_insns(
const minsn_t &m,
int eqflags)
const;
3797#define EQ_IGNSIZE 0x0001
3798#define EQ_IGNCODE 0x0002
3799#define EQ_CMPDEST 0x0004
3800#define EQ_OPTINSN 0x0008
3813 bool hexapi is_noret_call(
int flags=0);
3814#define NORET_IGNORE_WAS_NORET_ICALL 0x01
3815#define NORET_FORBID_ANALYSIS 0x02
3828 bool hexapi is_helper(
const char *name)
const;
3833 minsn_t *hexapi find_call(
bool with_helpers=
false)
const;
3842 bool hexapi has_side_effects(
bool include_ldx_and_divs=
false)
const;
3879 const mop_t *hexapi find_num_op(
const mop_t **other)
const;
3887 bool hexapi modifies_d()
const;
3895 bool hexapi is_between(
const minsn_t *m1,
const minsn_t *m2)
const;
3902 bool hexapi may_use_aliased_memory()
const;
3907 int hexapi serialize(
bytevec_t *b)
const;
3914 bool hexapi deserialize(
const uchar *bytes,
size_t nbytes,
int format_version);
3946 return !(*
this == o);
3959 QASSERT(52899, target_sz >=
size);
3966 QASSERT(52900, target_sz >=
size);
3973 QASSERT(52901, target_sz <=
size);
3980 QASSERT(52902, target_sz <=
size);
3981 int bytes_to_remove =
size - target_sz;
3988 check_size_equal(o);
3995 check_size_equal(o);
4002 check_size_equal(o);
4009 check_size_equal(o);
4011 throw "division by zero occurred when emulating instruction";
4018 check_size_equal(o);
4020 throw "division by zero occurred when emulating instruction";
4026 case 1: res =
int8(l) /
int8(r);
break;
4030 default: INTERR(30666);
4039 check_size_equal(o);
4041 throw "division by zero occurred when emulating instruction";
4047 check_size_equal(o);
4049 throw "division by zero occurred when emulating instruction";
4055 case 1: res =
int8(l) %
int8(r);
break;
4059 default: INTERR(52903);
4086 check_size_equal(o);
4093 check_size_equal(o);
4100 check_size_equal(o);
4126 QASSERT(52904, w == 1 || w == 2 || w == 4 || w == 8);
4130 void check_size_equal(
const intval64_t &o)
const
4175#define MAXRANGE bitrange_t(0, USHRT_MAX)
4194#define MBL_PRIV 0x0001
4196#define MBL_NONFAKE 0x0000
4197#define MBL_FAKE 0x0002
4198#define MBL_GOTO 0x0004
4199#define MBL_TCAL 0x0008
4200#define MBL_PUSH 0x0010
4201#define MBL_DMT64 0x0020
4202#define MBL_COMB 0x0040
4203#define MBL_PROP 0x0080
4204#define MBL_DEAD 0x0100
4205#define MBL_LIST 0x0200
4206#define MBL_INCONST 0x0400
4207#define MBL_CALL 0x0800
4208#define MBL_BACKPROP 0x1000
4209#define MBL_NORET 0x2000
4210#define MBL_DSLOT 0x4000
4211#define MBL_VALRANGES 0x8000
4212#define MBL_KEEP 0x10000
4213#define MBL_INLINED 0x20000
4214#define MBL_EXTFRAME 0x40000
4273 bool empty()
const {
return head ==
nullptr; }
4283 void hexapi dump()
const;
4467 CONST_CAST(
const minsn_t*)(i1),
4496 const minsn_t *hexapi find_redefinition(
4508 CONST_CAST(
const minsn_t*)(i1),
4543#define FD_BACKWARD 0x0000
4544#define FD_FORWARD 0x0001
4545#define FD_USE 0x0000
4546#define FD_DEF 0x0002
4547#define FD_DIRTY 0x0004
4573 bool hexapi get_valranges(
4583 bool hexapi get_valranges(
4591#define VR_AT_START 0x0000
4593#define VR_AT_END 0x0001
4596#define VR_EXACT 0x0002
4608 size_t hexapi get_reginsn_qty()
const;
4618 &&
tail->l.is_mblock();
4709 return strcmp(
text.c_str(), r.text.c_str());
4755 bool hexapi range_contains(
ea_t ea)
const;
4758 int n_frags =
ranges.size();
4759 if (
pfn !=
nullptr )
4760 n_frags +=
pfn->tailqty + 1;
4785 if ( mbr.
pfn !=
nullptr )
4800 ok =
fii.next_code();
4805 ok =
rii.next_code();
4857 DECLARE_UNCOPYABLE(
mba_t)
4863#define MBA_PRCDEFS 0x00000001
4864#define MBA_NOFUNC 0x00000002
4865#define MBA_PATTERN 0x00000004
4866#define MBA_LOADED 0x00000008
4867#define MBA_RETFP 0x00000010
4868#define MBA_SPLINFO 0x00000020
4869#define MBA_PASSREGS 0x00000040
4870#define MBA_THUNK 0x00000080
4871#define MBA_CMNSTK 0x00000100
4874#define MBA_PREOPT 0x00000200
4875#define MBA_CMBBLK 0x00000400
4876#define MBA_ASRTOK 0x00000800
4877#define MBA_CALLS 0x00001000
4878#define MBA_ASRPROP 0x00002000
4879#define MBA_SAVRST 0x00004000
4880#define MBA_RETREF 0x00008000
4881#define MBA_GLBOPT 0x00010000
4882#define MBA_LVARS0 0x00040000
4883#define MBA_LVARS1 0x00080000
4884#define MBA_DELPAIRS 0x00100000
4885#define MBA_CHVARS 0x00200000
4888#define MBA_SHORT 0x00400000
4889#define MBA_COLGDL 0x00800000
4890#define MBA_INSGDL 0x01000000
4891#define MBA_NICE 0x02000000
4892#define MBA_REFINE 0x04000000
4893#define MBA_WINGR32 0x10000000
4894#define MBA_NUMADDR 0x20000000
4895#define MBA_VALNUM 0x40000000
4897#define MBA_INITIAL_FLAGS (MBA_INSGDL|MBA_NICE|MBA_CMBBLK|MBA_REFINE\
4898 |MBA_PRCDEFS|MBA_WINGR32|MBA_VALNUM)
4900#define MBA2_LVARNAMES_OK 0x00000001
4901#define MBA2_LVARS_RENAMED 0x00000002
4902#define MBA2_OVER_CHAINS 0x00000004
4903#define MBA2_VALRNG_DONE 0x00000008
4904#define MBA2_IS_CTR 0x00000010
4905#define MBA2_IS_DTR 0x00000020
4906#define MBA2_ARGIDX_OK 0x00000040
4907#define MBA2_NO_DUP_CALLS 0x00000080
4908#define MBA2_NO_DUP_LVARS 0x00000100
4909#define MBA2_UNDEF_RETVAR 0x00000200
4910#define MBA2_ARGIDX_SORTED 0x00000400
4912#define MBA2_CODE16_BIT 0x00000800
4913#define MBA2_STACK_RETVAL 0x00001000
4914#define MBA2_HAS_OUTLINES 0x00002000
4915#define MBA2_NO_FRAME 0x00004000
4916#define MBA2_PROP_COMPLEX 0x00008000
4918#define MBA2_DONT_VERIFY 0x80000000
4922#define MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED)
4924#define MBA2_ALL_FLAGS 0x0001FFFF
4927 bool optimized()
const {
return (flags & MBA_GLBOPT) != 0; }
4939 bool is_thunk()
const {
return (flags & MBA_THUNK) != 0; }
4955 bool argidx_ok()
const {
return (flags2 & MBA2_ARGIDX_OK) != 0; }
4960 bool is_ctr()
const {
return (flags2 & MBA2_IS_CTR) != 0; }
4961 bool is_dtr()
const {
return (flags2 & MBA2_IS_DTR) != 0; }
4962 bool is_cdtr()
const {
return (flags2 & (MBA2_IS_CTR|MBA2_IS_DTR)) != 0; }
4970 void clr_cdtr() { flags2 &= ~(MBA2_IS_CTR|MBA2_IS_DTR); }
4973 int shins_flags = 0;
4975 shins_flags |= SHINS_SHORT;
4977 shins_flags |= SHINS_VALNUM;
4979 shins_flags |= SHINS_NUMADDR;
5045 uval_t *p_idaoff=
nullptr,
5046 tinfo_t *p_frame=
nullptr)
const;
5155 int hexapi optimize_local(
int locopt_bits);
5158#define LOCOPT_ALL 0x0001
5160#define LOCOPT_REFINE 0x0002
5161#define LOCOPT_REFINE2 0x0004
5179 int hexapi analyze_calls(
int acflags);
5182#define ACFL_LOCOPT 0x01
5183#define ACFL_BLKOPT 0x02
5184#define ACFL_GLBPROP 0x04
5185#define ACFL_GLBDEL 0x08
5186#define ACFL_GUESS 0x10
5201 void hexapi alloc_lvars();
5206 void hexapi dump()
const;
5248 mblock_t *hexapi insert_block(
int bblk);
5260 bool hexapi remove_block(
mblock_t *blk);
5261 bool hexapi remove_blocks(
int start_blk,
int end_blk);
5270 mblock_t *hexapi copy_block(
mblock_t *blk,
int new_serial,
int cpblk_flags=3);
5273#define CPBLK_FAST 0x0000
5274#define CPBLK_MINREF 0x0001
5275#define CPBLK_OPTJMP 0x0002
5281 bool hexapi remove_empty_and_unreachable_blocks();
5287 bool hexapi merge_blocks();
5327 minsn_t *hexapi create_helper_call(
5330 const tinfo_t *rettype=
nullptr,
5332 const mop_t *out=
nullptr);
5341 void hexapi get_func_output_lists(
5345 ea_t call_ea=BADADDR,
5346 bool tail_call=
false);
5374 ea_t hexapi alloc_fict_ea(
ea_t real_ea);
5380 ea_t hexapi map_fict_ea(
ea_t fict_ea)
const;
5385 const ivl_t &get_lvars_region()
const;
5386 const ivl_t &get_shadow_region()
const;
5387 const ivl_t &get_args_region()
const;
5388 ivl_t get_stack_region()
const;
5391 void hexapi serialize(
bytevec_t &vout)
const;
5397 WARN_UNUSED_RESULT
static mba_t *hexapi deserialize(
const uchar *bytes,
size_t nbytes);
5400 void hexapi save_snapshot(
const char *description);
5407 mreg_t hexapi alloc_kreg(
size_t size,
bool check_size=
true);
5413 void hexapi free_kreg(
mreg_t reg,
size_t size);
5417#define INLINE_EXTFRAME 0x0001
5418#define INLINE_DONTCOPY 0x0002
5436 int inline_flags=0);
5442 bool hexapi set_lvar_name(
lvar_t &v,
const char *name,
int flagbits);
5465 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
5485 int chain_stamp = 0;
5487 bool exclude_never_jumping_edges =
true;
5504 bool hexapi is_accessed_globally(
5510 access_type_t access_type,
5512 int get_ud_gc_idx(
gctype_t gctype)
const {
return (gctype << 1); }
5513 int get_du_gc_idx(
gctype_t gctype)
const {
return (gctype << 1)+1; }
5514 int get_ud_dirty_bit(
gctype_t gctype) {
return 1 << get_ud_gc_idx(gctype); }
5515 int get_du_dirty_bit(
gctype_t gctype) {
return 1 << get_du_gc_idx(gctype); }
5521 int bit = get_ud_dirty_bit(gctype);
5522 return (dirty & bit) != 0;
5528 int bit = get_du_dirty_bit(gctype);
5529 return (dirty & bit) != 0;
5541 {
return is_accessed_globally(list, b1, b2, m1, m2, WRITE_ACCESS, maymust); }
5545 {
return is_accessed_globally(list, b1, b2, m1, m2, READ_ACCESS, maymust); }
5597 void hexapi clear();
5606 const class bitset_t &reachable) = 0;
5705 return is_insn() &&
d->has_side_effects(include_ldx_and_divs);
5729 return t ==
mop_a &&
a->is_glbvar();
5739 return t ==
mop_a &&
a->is_stkvar();
5743 :
voff_t(ch.key().
type, ch.is_reg() ? ch.get_reg() : ch.get_stkoff()),
5793#define OPF_REUSE 0x00
5794#define OPF_NEW_WINDOW 0x01
5795#define OPF_REUSE_ACTIVE 0x02
5797#define OPF_NO_WAIT 0x08
5800#define OPF_WINDOW_MGMT_MASK 0x07
5828#define VDRUN_NEWFILE 0x00000000
5829#define VDRUN_APPEND 0x00000001
5830#define VDRUN_ONLYNEW 0x00000002
5831#define VDRUN_SILENT 0x00000004
5832#define VDRUN_SENDIDB 0x00000008
5833#define VDRUN_MAYSTOP 0x00000010
5834#define VDRUN_CMDLINE 0x00000020
5835#define VDRUN_STATS 0x00000040
5836#define VDRUN_LUMINA 0x00000080
5837#define VDRUN_PERF 0x00200000
5861 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
5874 virtual const char *
what() const noexcept
override {
return "decompilation failure"; }
5879 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
5909#define GCO_STK 0x0000
5910#define GCO_REG 0x0001
5911#define GCO_USE 0x0002
5912#define GCO_DEF 0x0004
6167 const citem_t *parent=
nullptr,
6168 bool *nice_stroff=
nullptr)
const;
6267 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6305 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6351 std::swap(
ea, r.
ea);
6352 std::swap(
op, r.
op);
6358 bool hexapi contains_expr(
const cexpr_t *
e)
const;
6360 bool hexapi contains_label()
const;
6374 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6421#define EXFL_CPADONE 0x0001
6422#define EXFL_LVALUE 0x0002
6423#define EXFL_FPOP 0x0004
6424#define EXFL_ALONE 0x0008
6425#define EXFL_CSTR 0x0010
6426#define EXFL_PARTIAL 0x0020
6427#define EXFL_UNDEF 0x0040
6428#define EXFL_JUMPOUT 0x0080
6429#define EXFL_VFTABLE 0x0100
6430#define EXFL_ALL 0x01FF
6477 void hexapi replace_by(
cexpr_t *r);
6481 void hexapi cleanup();
6499 void hexapi calc_type(
bool recursive);
6506 bool hexapi equal_effect(
const cexpr_t &r)
const;
6511 bool hexapi is_child_of(
const citem_t *parent)
const;
6517 bool hexapi contains_operator(
ctype_t needed_op,
int times=1)
const;
6550 int hexapi get_low_nbit_bound()
const;
6554 bool hexapi requires_lvalue(
const cexpr_t *child)
const;
6557 bool hexapi has_side_effects()
const;
6569 return n->value(
type);
6602 if ( out !=
nullptr )
6609 bool hexapi maybe_ptr()
const;
6614 if (
x->type.is_ptr_or_array() )
6616 if (
y->type.is_ptr_or_array() )
6650 const char *hexapi
dstr()
const;
6659 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6729 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6778 void hexapi replace_by(
cinsn_t *r);
6782 void hexapi cleanup();
6811 bool hexapi is_ordinary_flow()
const;
6817 bool hexapi contains_insn(
ctype_t type,
int times=1)
const;
6835 bool hexapi collect_free_continues(
cinsnptrvec_t *continues);
6842 const char *hexapi
dstr()
const;
6866 return cexpr_t::compare(r);
6876#define CFL_FINAL 0x0001
6877#define CFL_HELPER 0x0002
6878#define CFL_NORET 0x0004
6991 cblock_t::iterator
p;
7010#define CV_FAST 0x0000
7011#define CV_PRUNE 0x0001
7012#define CV_PARENTS 0x0002
7013#define CV_POST 0x0004
7014#define CV_RESTART 0x0008
7015#define CV_INSNS 0x0010
7078 return item !=
nullptr && item->
is_expr() ? (
cexpr_t *)item :
nullptr;
7085 return item !=
nullptr && !item->
is_expr() ? (
cinsn_t *)item :
nullptr;
7123 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7139 bool hexapi recalc_parent_types();
7166#define ANCHOR_INDEX 0x1FFFFFFF
7167#define ANCHOR_MASK 0xC0000000
7168#define ANCHOR_CITEM 0x00000000
7169#define ANCHOR_LVAR 0x40000000
7170#define ANCHOR_ITP 0x80000000
7171#define ANCHOR_BLKCMT 0x20000000
7220 uint64 *p_offset=
nullptr)
const;
7252#define GLN_CURRENT 0x01
7253#define GLN_GOTO_TARGET 0x02
7260 void hexapi print(
qstring *vout)
const;
7261 const char *hexapi
dstr()
const;
7262 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7369cexpr_t *hexapi
dereference(cexpr_t *
e,
int ptrsize,
bool is_flt=
false);
7456#define INS_EPILOG ((cinsn_t *)1)
7477#define CIT_COLLAPSED 0x0001
7482#define CFS_BOUNDS 0x0001
7483#define CFS_TEXT 0x0002
7484#define CFS_LVARS_HIDDEN 0x0004
7485#define CFS_LOCKED 0x0008
7503 void hexapi build_c_tree();
7653 void hexapi cleanup();
7660#define DECOMP_NO_WAIT 0x0001
7661#define DECOMP_NO_CACHE 0x0002
7662#define DECOMP_NO_FRAME 0x0004
7663#define DECOMP_WARNINGS 0x0008
7664#define DECOMP_ALL_BLKS 0x0010
7665#define DECOMP_NO_HIDE 0x0020
7666#define DECOMP_GXREFS_DEFLT 0x0000
7670#define DECOMP_GXREFS_NOUPD 0x0040
7671#define DECOMP_GXREFS_FORCE 0x0080
7672#define DECOMP_VOID_MBA 0x0100
7673#define DECOMP_OUTLINE 0x80000000
7692 int decomp_flags=0);
7709 return decompile(mbr, hf, decomp_flags);
7726 return decompile(mbr, hf, decomp_flags);
7739 const mba_ranges_t &mbr,
7740 hexrays_failure_t *hf=
nullptr,
7741 const mlist_t *retlist=
nullptr,
7792 ((
cexpr_t*)
this)->print1(vout, func);
7794 ((
cinsn_t*)
this)->print1(vout, func);
7825 :
ea(i != nullptr ? i->
ea : BADADDR),
7924 hxe_resolve_stkaddrs,
7961 hxe_collect_warnings,
7969 hxe_open_pseudocode=100,
7973 hxe_switch_pseudocode,
7978 hxe_refresh_pseudocode,
7983 hxe_close_pseudocode,
8020 hxe_populating_popup,
8025 lxe_lvar_name_changed,
8033 lxe_lvar_type_changed,
8040 lxe_lvar_cmt_changed,
8047 lxe_lvar_mapping_changed,
8118 if (
lnnum < r.lnnum )
return -1;
8119 if (
lnnum > r.lnnum )
return 1;
8120 if (
x < r.x )
return -1;
8121 if (
x > r.x )
return 1;
8125 :
lnnum(_lnnum),
x(_x),
y(_y) {}
8164#define VDUI_VISIBLE 0x0001
8165#define VDUI_VALID 0x0002
8243 void hexapi
clear();
10274inline int valrng_t::compare(
const valrng_t &r)
const
10434 return (
const char *)HEXDSP(
hx_dstr, tif);
10534inline int vdloc_t::compare(
const vdloc_t &r)
const
10558inline int lvar_locator_t::compare(
const lvar_locator_t &r)
const
10564inline const char *lvar_locator_t::dstr()
const
10680 auto hrdsp = HEXDSP;
10841inline int bitset_t::compare(
const bitset_t &r)
const
10847inline int bitset_t::goup(
int reg)
const
10859inline int ivl_t::compare(
const ivl_t &r)
const
10945inline int ivlset_t::compare(
const ivlset_t &r)
const
10981inline int mlist_t::compare(
const mlist_t &r)
const
11007 return (
int)(size_t)HEXDSP(
hx_mreg2reg, reg, width);
11025 auto hrdsp = HEXDSP;
11038 auto hrdsp = HEXDSP;
11073inline int lvar_ref_t::compare(
const lvar_ref_t &r)
const
11085inline int stkvar_ref_t::compare(
const stkvar_ref_t &r)
const
11109inline void mop_t::copy(
const mop_t &rop)
11343inline int mcallinfo_t::lexcompare(
const mcallinfo_t &f)
const
11375inline int mcases_t::compare(
const mcases_t &r)
const
11467inline void minsn_t::init(
ea_t _ea)
11473inline void minsn_t::copy(
const minsn_t &m)
11485inline void minsn_t::swap(
minsn_t &m)
11645inline void mblock_t::init()
11847inline void mba_t::term()
12079inline bool mbl_graph_t::is_accessed_globally(
const mlist_t &list,
int b1,
int b2,
const minsn_t *m1,
const minsn_t *m2, access_type_t access_type,
maymust_t maymust)
const
12239inline int cnumber_t::compare(
const cnumber_t &r)
const
12245inline int var_ref_t::compare(
const var_ref_t &r)
const
12287inline int cexpr_t::compare(
const cexpr_t &r)
const
12385inline int cif_t::compare(
const cif_t &r)
const
12397inline int cfor_t::compare(
const cfor_t &r)
const
12403inline int cwhile_t::compare(
const cwhile_t &r)
const
12409inline int cdo_t::compare(
const cdo_t &r)
const
12415inline int creturn_t::compare(
const creturn_t &r)
const
12421inline int cgoto_t::compare(
const cgoto_t &r)
const
12427inline int casm_t::compare(
const casm_t &r)
const
12439inline int cinsn_t::compare(
const cinsn_t &r)
const
12511inline int cblock_t::compare(
const cblock_t &r)
const
12517inline int carglist_t::compare(
const carglist_t &r)
const
12523inline int ccase_t::compare(
const ccase_t &r)
const
12529inline int ccases_t::compare(
const ccases_t &r)
const
12535inline int cswitch_t::compare(
const cswitch_t &r)
const
12541inline int catchexpr_t::compare(
const catchexpr_t &r)
const
12547inline int ccatch_t::compare(
const ccatch_t &r)
const
12553inline int ctry_t::compare(
const ctry_t &r)
const
12559inline int cthrow_t::compare(
const cthrow_t &r)
const
12735inline void cfunc_t::build_c_tree()
12923inline void cfunc_t::cleanup()
12993 auto hrdsp = HEXDSP;
13238#pragma warning(pop)
DECLARE_TYPE_AS_MOVABLE(compiled_binpat_t)
qchar * extract(void)
Extract C string from _qstring. Must qfree() it.
Definition pro.h:3297
Describes an argument location.
Definition typeinf.hpp:1101
Definition hexrays.hpp:1871
This class manages the offset and size of a value that occupies a number of contiguous bits within so...
Definition bitrange.hpp:16
Bit set class. See https://en.wikipedia.org/wiki/Bit_array.
Definition hexrays.hpp:1789
bool hexapi empty() const
Definition hexrays.hpp:10787
DECLARE_COMPARISONS(bitset_t)
int hexapi count() const
Definition hexrays.hpp:10793
bool includes(const bitset_t &ml) const
Definition hexrays.hpp:1834
void print(qstring *vout, int(*get_bit_name)(qstring *out, int bit, int width, void *ud)=nullptr, void *ud=nullptr) const
bool hexapi sub(int bit)
Definition hexrays.hpp:10733
void hexapi shift_down(int shift)
Definition hexrays.hpp:10757
bool hexapi fill_gaps(int total_nbits)
Definition hexrays.hpp:10817
bool hexapi add(int bit)
Definition hexrays.hpp:10715
void inc(iterator &p, int n=1) const
Definition hexrays.hpp:1854
bool hexapi has_any(int bit, int width) const
Definition hexrays.hpp:10775
bool hexapi has_all(int bit, int width) const
Definition hexrays.hpp:10769
bitset_t()
Definition hexrays.hpp:1794
iterator end() const
Definition hexrays.hpp:1851
int front() const
Definition hexrays.hpp:1852
iterator const_iterator
Definition hexrays.hpp:1848
int back() const
Definition hexrays.hpp:1853
HEXRAYS_MEMORY_ALLOCATION_FUNCS() class iterator
Definition hexrays.hpp:1837
bool hexapi has(int bit) const
Definition hexrays.hpp:10763
~bitset_t()
Definition hexrays.hpp:1796
void swap(bitset_t &r)
Definition hexrays.hpp:1801
void hexapi fill_with_ones(int maxbit)
Definition hexrays.hpp:10811
bool hexapi cut_at(int maxbit)
Definition hexrays.hpp:10751
int hexapi last() const
Definition hexrays.hpp:10805
void clear()
Definition hexrays.hpp:1828
iterator begin() const
Definition hexrays.hpp:1850
bitset_t & operator=(const bitset_t &m)
Definition hexrays.hpp:1806
const char *hexapi dstr() const
Definition hexrays.hpp:10781
bool hexapi is_subset_of(const bitset_t &ml) const
Definition hexrays.hpp:10835
void extract(intvec_t &out) const
bool hexapi has_common(const bitset_t &ml) const
Definition hexrays.hpp:10823
bool hexapi intersect(const bitset_t &ml)
Definition hexrays.hpp:10829
bitset_t &hexapi copy(const bitset_t &m)
Definition hexrays.hpp:10709
iterator itat(int n) const
Definition hexrays.hpp:1849
Chains of one block.
Definition hexrays.hpp:3518
const chain_t * get_stk_chain(sval_t off, int width=1) const
Get chain for the specified stack offset.
Definition hexrays.hpp:3532
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11443
const chain_t * get_reg_chain(mreg_t reg, int width=1) const
Get chain for the specified register.
Definition hexrays.hpp:3524
const chain_t * get_chain(const voff_t &k, int width=1) const
Get chain for the specified value offset.
Definition hexrays.hpp:3540
chain_t * get_reg_chain(mreg_t reg, int width=1)
Definition hexrays.hpp:3526
chain_t * get_stk_chain(sval_t off, int width=1)
Definition hexrays.hpp:3534
chain_t * get_chain(const voff_t &k, int width=1)
Definition hexrays.hpp:3542
const char *hexapi dstr() const
Definition hexrays.hpp:11449
chain_t * get_chain(const chain_t &ch)
Definition hexrays.hpp:3548
Vector of bytes (use for dynamic memory)
Definition pro.h:3773
~chain_keeper_t()
Definition hexrays.hpp:5456
block_chains_t & back()
Definition hexrays.hpp:5462
int for_all_chains(chain_visitor_t &cv, int gca)
Definition hexrays.hpp:5464
chain_keeper_t(graph_chains_t *_gc)
Definition hexrays.hpp:5455
block_chains_t & operator[](size_t idx)
Definition hexrays.hpp:5460
block_chains_t & front()
Definition hexrays.hpp:5461
ud (use->def) and du (def->use) chain.
Definition hexrays.hpp:3444
const char *hexapi dstr() const
Definition hexrays.hpp:11425
sval_t get_stkoff() const
Definition hexrays.hpp:3482
void set_inited(bool b)
Definition hexrays.hpp:3477
bool includes(const chain_t &r) const
Definition hexrays.hpp:3485
bool operator<(const chain_t &r) const
Definition hexrays.hpp:3489
bool is_term() const
Definition hexrays.hpp:3476
void hexapi append_list(const mba_t *mba, mlist_t *list) const
Append the contents of the chain to the specified list of locations.
Definition hexrays.hpp:11431
int width
size of the value in bytes
Definition hexrays.hpp:3449
bool is_stkoff() const
Definition hexrays.hpp:3471
chain_t()
Definition hexrays.hpp:3461
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11419
bool is_replaced() const
Definition hexrays.hpp:3472
bool is_overlapped() const
Definition hexrays.hpp:3473
void set_value(const chain_t &r)
Definition hexrays.hpp:3466
bool overlap(const chain_t &r) const
Definition hexrays.hpp:3483
void set_term(bool b)
Definition hexrays.hpp:3480
uchar flags
combination Chain properties bits
Definition hexrays.hpp:3451
bool is_inited() const
Definition hexrays.hpp:3469
bool is_fake() const
Definition hexrays.hpp:3474
int varnum
allocated variable index (-1 - not allocated yet)
Definition hexrays.hpp:3450
bool is_reg() const
Definition hexrays.hpp:3470
bool is_passreg() const
Definition hexrays.hpp:3475
mreg_t get_reg() const
Definition hexrays.hpp:3481
chain_t(mopt_t t, sval_t off, int w=1, int v=-1)
Definition hexrays.hpp:3462
void clear_varnum()
Definition hexrays.hpp:3495
const voff_t & key() const
Definition hexrays.hpp:3468
const voff_t endoff() const
Definition hexrays.hpp:3487
void set_replaced(bool b)
Definition hexrays.hpp:3478
void set_overlapped(bool b)
Definition hexrays.hpp:3479
chain_t(const voff_t &_k, int w=1)
Definition hexrays.hpp:3464
Helper class to generate the initial microcode.
Definition hexrays.hpp:5583
virtual bool idaapi store_operand(int n, const mop_t &mop, int flags=0, minsn_t **outins=nullptr)
Generate microcode to store an operand.
virtual mreg_t idaapi load_effective_address(int n, int flags=0)=0
Generate microcode to calculate the address of a memory operand.
cdg_insn_iterator_t ii
Definition hexrays.hpp:5589
virtual ~codegen_t()
Definition hexrays.hpp:5593
char ignore_micro
Definition hexrays.hpp:5588
virtual mreg_t idaapi load_operand(int opnum, int flags=0)=0
Generate microcode to load one operand.
minsn_t *idaapi emit_micro_mvm(mcode_t code, op_dtype_t dtype, uval_t l, uval_t r, uval_t d, int offsize)
Emit one microinstruction.
Definition hexrays.hpp:5672
virtual merror_t idaapi gen_micro()=0
Generate microcode for one instruction.
void hexapi clear()
Definition hexrays.hpp:12103
virtual void idaapi microgen_completed()
This method is called when the microcode generation is done.
Definition hexrays.hpp:5623
virtual merror_t idaapi analyze_prolog(const class qflow_chart_t &fc, const class bitset_t &reachable)=0
Analyze prolog/epilog of the function to decompile.
mblock_t * mb
Definition hexrays.hpp:5586
minsn_t *hexapi emit(mcode_t code, int width, uval_t l, uval_t r, uval_t d, int offsize)
Emit one microinstruction.
Definition hexrays.hpp:12109
virtual merror_t idaapi prepare_gen_micro()
Setup internal data to handle new instruction.
Definition hexrays.hpp:5632
insn_t insn
Definition hexrays.hpp:5587
mba_t * mba
Definition hexrays.hpp:5585
size_t reserved[4]
Definition hexrays.hpp:5590
Class to enumerate all function instructions and data sorted by addresses.
Definition funcs.hpp:784
A function is a set of continuous ranges of addresses with characteristics.
Definition funcs.hpp:85
Class to enumerate all function tails sorted by addresses.
Definition funcs.hpp:713
gdl graph interface - includes only functions required to draw it
Definition gdl.hpp:248
Definition hexrays.hpp:3569
void hexapi release()
Unlock the chains.
Definition hexrays.hpp:11461
bool is_locked() const
Are the chains locked?
Definition hexrays.hpp:3590
~graph_chains_t()
Definition hexrays.hpp:3572
int hexapi for_all_chains(chain_visitor_t &cv, int gca_flags)
Visit all chains.
Definition hexrays.hpp:11455
void swap(graph_chains_t &r)
Definition hexrays.hpp:3595
void acquire()
Lock the chains.
Definition hexrays.hpp:3592
Definition hexrays.hpp:4143
intval64_t hexapi mop_value(const mop_t &mop)
Definition hexrays.hpp:11629
virtual intval64_t get_mop_value(const mop_t &mop)=0
intval64_t hexapi minsn_value(const minsn_t &insn)
Definition hexrays.hpp:11637
virtual ~int64_emulator_t()
Definition hexrays.hpp:4145
Definition hexrays.hpp:3927
intval64_t smod(const intval64_t &o) const
Definition hexrays.hpp:4045
void print(qstring *vout) const
Definition hexrays.hpp:3935
intval64_t sar(const intval64_t &o) const
Definition hexrays.hpp:4078
intval64_t sdiv(const intval64_t &o) const
Definition hexrays.hpp:4016
intval64_t operator!() const
Definition hexrays.hpp:4111
intval64_t high(int target_sz) const
Definition hexrays.hpp:3978
intval64_t sext(int target_sz) const
Definition hexrays.hpp:3957
intval64_t operator|(const intval64_t &o) const
Definition hexrays.hpp:4084
intval64_t operator^(const intval64_t &o) const
Definition hexrays.hpp:4098
intval64_t operator&(const intval64_t &o) const
Definition hexrays.hpp:4091
intval64_t operator~() const
Definition hexrays.hpp:4117
intval64_t operator+(const intval64_t &o) const
Definition hexrays.hpp:3986
intval64_t operator*(const intval64_t &o) const
Definition hexrays.hpp:4000
bool operator!=(const intval64_t &o) const
Definition hexrays.hpp:3944
intval64_t operator<<(const intval64_t &o) const
Definition hexrays.hpp:4066
intval64_t operator>>(const intval64_t &o) const
Definition hexrays.hpp:4072
uint64 uval() const
Definition hexrays.hpp:3934
int64 sval() const
Definition hexrays.hpp:3933
intval64_t operator-(const intval64_t &o) const
Definition hexrays.hpp:3993
intval64_t zext(int target_sz) const
Definition hexrays.hpp:3964
bool operator<(const intval64_t &o) const
Definition hexrays.hpp:3950
intval64_t(uint64 v=0, int _s=1)
Definition hexrays.hpp:3932
uint64 val
Definition hexrays.hpp:3929
bool operator==(const intval64_t &o) const
Definition hexrays.hpp:3938
intval64_t low(int target_sz) const
Definition hexrays.hpp:3971
intval64_t operator%(const intval64_t &o) const
Definition hexrays.hpp:4037
int size
Definition hexrays.hpp:3930
intval64_t operator/(const intval64_t &o) const
Definition hexrays.hpp:4007
intval64_t operator-() const
Definition hexrays.hpp:4105
Definition hexrays.hpp:1973
DEFINE_MEMORY_ALLOCATION_FUNCS() void swap(ivlset_tpl &r)
Definition hexrays.hpp:1987
void set_all_values()
Definition hexrays.hpp:1997
bag_t bag
Definition hexrays.hpp:1978
bool single_value() const
Definition hexrays.hpp:1998
const_iterator begin() const
Definition hexrays.hpp:2006
void qclear()
Definition hexrays.hpp:1995
void clear()
Definition hexrays.hpp:1994
bool operator!=(const Ivl &v) const
Definition hexrays.hpp:2002
const_iterator end() const
Definition hexrays.hpp:2007
const Ivl & lastivl() const
Definition hexrays.hpp:1991
ivlset_tpl()
Definition hexrays.hpp:1985
size_t nivls() const
Definition hexrays.hpp:1992
bag_t::iterator iterator
Definition hexrays.hpp:2004
static bool ivl_all_values(const Ivl &ivl)
Definition hexrays.hpp:1982
qvector< Ivl > bag_t
Definition hexrays.hpp:1975
iterator begin()
Definition hexrays.hpp:2008
bool all_values() const
Definition hexrays.hpp:1996
ivlset_tpl(const Ivl &ivl)
Definition hexrays.hpp:1986
bool single_value(T v) const
Definition hexrays.hpp:1999
const Ivl & getivl(int idx) const
Definition hexrays.hpp:1990
bool empty() const
Definition hexrays.hpp:1993
bool operator==(const Ivl &v) const
Definition hexrays.hpp:2001
iterator end()
Definition hexrays.hpp:2009
bag_t::const_iterator const_iterator
Definition hexrays.hpp:2005
Definition of a local variable (register or stack) var lvar.
Definition hexrays.hpp:1183
void set_arg_var()
Definition hexrays.hpp:1318
bool is_spoiled_var() const
Is spoiled var? (meaningful only during lvar allocation)
Definition hexrays.hpp:1276
void set_shared()
Definition hexrays.hpp:1348
void set_mreg_done()
Definition hexrays.hpp:1314
void set_decl_unused()
Definition hexrays.hpp:1346
void set_non_typed()
Definition hexrays.hpp:1308
void clr_used_byref()
Definition hexrays.hpp:1345
uint64 divisor
max known divisor of the variable
Definition hexrays.hpp:1233
void clr_shared()
Definition hexrays.hpp:1349
void clr_fake_var()
Definition hexrays.hpp:1321
bool is_arg_var() const
Is the function argument?
Definition hexrays.hpp:1266
bool typed() const
Has the variable a type?
Definition hexrays.hpp:1246
void clr_overlapped_var()
Definition hexrays.hpp:1323
tinfo_t tif
variable type
Definition hexrays.hpp:1229
void set_used()
Definition hexrays.hpp:1305
friend class mba_t
Definition hexrays.hpp:1184
void clr_mreg_done()
Definition hexrays.hpp:1315
void clr_arg_var()
Definition hexrays.hpp:1319
bool is_partialy_typed() const
Variable type should be handled as a partial one.
Definition hexrays.hpp:1278
bool is_shared() const
Is lvar mapped to several chains.
Definition hexrays.hpp:1302
int defblk
first block defining the variable.
Definition hexrays.hpp:1231
void set_automapped()
Definition hexrays.hpp:1342
void clr_mapdst_var()
Definition hexrays.hpp:1329
bool is_aliasable(const mba_t *mba) const
Is the variable aliasable?
Definition hexrays.hpp:1410
void set_spoiled_var()
Definition hexrays.hpp:1326
void set_typed()
Definition hexrays.hpp:1307
void clr_notarg()
Definition hexrays.hpp:1341
qstring cmt
variable comment string
Definition hexrays.hpp:1228
void clr_user_type()
Definition hexrays.hpp:1312
void set_dummy_arg()
Definition hexrays.hpp:1338
void clr_automapped()
Definition hexrays.hpp:1343
void hexapi append_list(const mba_t *mba, mlist_t *lst, bool pad_if_scattered=false) const
Append local variable to mlist.
Definition hexrays.hpp:10600
lvar_t(const qstring &n, const vdloc_t &l, ea_t e, const tinfo_t &t, int w, int db)
Definition hexrays.hpp:1236
void set_noptr_var()
Definition hexrays.hpp:1332
bool hexapi set_lvar_type(const tinfo_t &t, bool may_fail=false)
Set variable type Note: this function does not modify the idb, only the lvar instance in the memory.
Definition hexrays.hpp:10588
bool hexapi is_promoted_arg() const
Is the promoted function argument?
Definition hexrays.hpp:10576
bool was_scattered_arg() const
Was lvar transformed from a scattered argument?
Definition hexrays.hpp:1304
void clr_spoiled_var()
Definition hexrays.hpp:1327
bool is_automapped() const
Was the variable automatically mapped to another variable?
Definition hexrays.hpp:1296
bool has_common_bit(const vdloc_t &loc, asize_t width2) const
Does the variable overlap with the specified location?
Definition hexrays.hpp:1359
bool has_regname() const
Has a register name? (like _RAX)
Definition hexrays.hpp:1288
bool mreg_done() const
Have corresponding microregs been replaced by references to this variable?
Definition hexrays.hpp:1248
bool is_used_byref() const
Was the address of the variable taken?
Definition hexrays.hpp:1298
bool has_common(const lvar_t &v) const
Do variables overlap?
Definition hexrays.hpp:1354
bool used() const
Is the variable used in the code?
Definition hexrays.hpp:1244
bool has_user_type() const
Has user-defined type?
Definition hexrays.hpp:1262
bool is_decl_unused() const
Was declared as __unused by the user? See CVAR_UNUSED.
Definition hexrays.hpp:1300
void set_partialy_typed()
Definition hexrays.hpp:1330
void clr_floating_var()
Definition hexrays.hpp:1325
void set_floating_var()
Definition hexrays.hpp:1324
bool is_fake_var() const
Is fake return variable?
Definition hexrays.hpp:1270
void clear_used()
Definition hexrays.hpp:1306
void set_overlapped_var()
Definition hexrays.hpp:1322
qstring name
variable name.
Definition hexrays.hpp:1225
lvar_t()
Definition hexrays.hpp:1235
bool hexapi set_width(int w, int svw_flags=0)
Change the variable width.
Definition hexrays.hpp:10594
void set_split_var()
Definition hexrays.hpp:1336
void clr_decl_unused()
Definition hexrays.hpp:1347
const char *hexapi dstr() const
Definition hexrays.hpp:10570
void clr_user_info()
Definition hexrays.hpp:1309
void set_user_name()
Definition hexrays.hpp:1310
bool is_dummy_arg() const
Is a dummy argument (added to fill a hole in the argument list)
Definition hexrays.hpp:1292
void clr_unknown_width()
Definition hexrays.hpp:1317
bool is_unknown_width() const
Do we know the width of the variable?
Definition hexrays.hpp:1252
void clr_noptr_var()
Definition hexrays.hpp:1333
void clr_dummy_arg()
Definition hexrays.hpp:1339
void set_thisarg()
Definition hexrays.hpp:1334
bool in_asm() const
Is variable used in an instruction translated into __asm?
Definition hexrays.hpp:1290
void set_scattered_arg()
Definition hexrays.hpp:1350
bool is_overlapped_var() const
Is overlapped variable?
Definition hexrays.hpp:1272
bool hexapi accepts_type(const tinfo_t &t, bool may_change_thisarg=false)
Check if the variable accept the specified type.
Definition hexrays.hpp:10582
void clr_thisarg()
Definition hexrays.hpp:1335
bool has_user_name() const
Has user-defined name?
Definition hexrays.hpp:1260
void set_unknown_width()
Definition hexrays.hpp:1316
void set_fake_var()
Definition hexrays.hpp:1320
void set_used_byref()
Definition hexrays.hpp:1344
bool has_user_info() const
Has any user-defined information?
Definition hexrays.hpp:1254
bool is_floating_var() const
Used by a fpu insn?
Definition hexrays.hpp:1274
void set_mapdst_var()
Definition hexrays.hpp:1328
bool is_notarg() const
Is a local variable? (local variable cannot be an input argument)
Definition hexrays.hpp:1294
bool has_nice_name() const
Does the variable have a nice name?
Definition hexrays.hpp:1250
void set_notarg()
Definition hexrays.hpp:1340
void clr_scattered_arg()
Definition hexrays.hpp:1351
void clr_user_name()
Definition hexrays.hpp:1313
void clr_split_var()
Definition hexrays.hpp:1337
void set_user_type()
Definition hexrays.hpp:1311
bool is_thisarg() const
Is 'this' argument of a C++ member function?
Definition hexrays.hpp:1284
bool is_result_var() const
Is the function result?
Definition hexrays.hpp:1264
void clr_partialy_typed()
Definition hexrays.hpp:1331
bool is_split_var() const
Is a split variable?
Definition hexrays.hpp:1286
int width
variable size in bytes
Definition hexrays.hpp:1230
bool is_noptr_var() const
Variable type should not be a pointer.
Definition hexrays.hpp:1280
const tinfo_t & type() const
Get variable type.
Definition hexrays.hpp:1364
bool is_mapdst_var() const
Other variable(s) map to this var?
Definition hexrays.hpp:1282
tinfo_t & type()
Definition hexrays.hpp:1365
void set_final_lvar_type(const tinfo_t &t)
Set final variable type.
Definition hexrays.hpp:1383
Array of micro blocks representing microcode for a decompiled function.
Definition hexrays.hpp:4856
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all operands of all instructions.
Definition hexrays.hpp:11973
merror_t hexapi set_maturity(mba_maturity_t mat)
Set maturity level.
Definition hexrays.hpp:11859
mblock_t *hexapi copy_block(mblock_t *blk, int new_serial, int cpblk_flags=3)
Make a copy of a block.
Definition hexrays.hpp:11955
void hexapi dump() const
Dump microcode to a file.
Definition hexrays.hpp:11901
bool use_frame() const
Definition hexrays.hpp:5139
ea_t entry_ea
Definition hexrays.hpp:5053
mreg_t hexapi alloc_kreg(size_t size, bool check_size=true)
Allocate a kernel register.
Definition hexrays.hpp:12049
bool graph_insns() const
Definition hexrays.hpp:4930
int pfn_flags
copy of func_t::flags
Definition hexrays.hpp:5064
mblock_t ** natural
natural order of blocks
Definition hexrays.hpp:5107
bool lvars_allocated() const
Definition hexrays.hpp:4943
mblock_t * blocks
double linked list of blocks
Definition hexrays.hpp:5106
bool rtype_refined() const
Definition hexrays.hpp:4933
static argloc_t hexapi vd2idaloc(const vdloc_t &loc, int width, sval_t spd)
Definition hexrays.hpp:11831
bool has_over_chains() const
Definition hexrays.hpp:4953
bool generated_asserts() const
Definition hexrays.hpp:4947
sval_t minstkref
The lowest stack location whose address was taken.
Definition hexrays.hpp:5074
mbl_graph_t *hexapi get_graph()
Get control graph.
Definition hexrays.hpp:11877
bool chain_varnums_ok() const
Definition hexrays.hpp:4944
qstring error_strarg
Definition hexrays.hpp:5104
bool lvars_renamed() const
Definition hexrays.hpp:4952
bool is_pattern() const
Definition hexrays.hpp:4938
bool hexapi set_lvar_name(lvar_t &v, const char *name, int flagbits)
Definition hexrays.hpp:12073
argloc_t get_ida_argloc(const lvar_t &v) const
Definition hexrays.hpp:5048
void set_mba_flags(int f)
Definition hexrays.hpp:4966
bool argidx_sorted() const
Definition hexrays.hpp:4956
ivlset_t aliased_memory
aliased_memory+restricted_memory=ALLMEM
Definition hexrays.hpp:5082
static vdloc_t hexapi idaloc2vd(const argloc_t &loc, int width, sval_t spd)
Definition hexrays.hpp:11815
ea_t hexapi map_fict_ea(ea_t fict_ea) const
Resolve a fictional address.
Definition hexrays.hpp:12023
bool hexapi remove_empty_and_unreachable_blocks()
Delete all empty and unreachable blocks.
Definition hexrays.hpp:11961
const char va_list va const
Definition hexrays.hpp:5207
ea_t hexapi alloc_fict_ea(ea_t real_ea)
Allocate a fictional address.
Definition hexrays.hpp:12015
bool short_display() const
Definition hexrays.hpp:4928
merror_t hexapi optimize_global()
Optimize microcode globally.
Definition hexrays.hpp:11889
bool display_valnums() const
Definition hexrays.hpp:4937
int get_mba_flags() const
Definition hexrays.hpp:4964
bool write_to_const_detected() const
Definition hexrays.hpp:5115
vdump_mba(_verify, title, va)
bool prop_complex() const
Definition hexrays.hpp:4963
sval_t stacksize
The maximal size of the function stack including bytes allocated for outgoing call arguments (up to r...
Definition hexrays.hpp:5068
const ivl_t & get_lvars_region() const
Definition hexrays.hpp:5763
mba_ranges_t mbr
Definition hexrays.hpp:5052
void hexapi print(vd_printer_t &vp) const
Print microcode to any destination.
const mblock_t * get_mblock(uint n) const
Get basic block by its serial number.
Definition hexrays.hpp:5238
mlist_t spoiled_list
MBA_SPLINFO && !final_type: info in vd format.
Definition hexrays.hpp:5092
sval_t frregs
size of saved registers range in the stack frame
Definition hexrays.hpp:5062
void set_mba_flags2(int f)
Definition hexrays.hpp:4968
bool use_wingraph32() const
Definition hexrays.hpp:4935
int hexapi for_all_topinsns(minsn_visitor_t &mv)
Visit all top level instructions.
Definition hexrays.hpp:11985
bool deleted_pairs() const
Definition hexrays.hpp:4949
void clr_mba_flags(int f)
Definition hexrays.hpp:4967
int calc_shins_flags() const
Definition hexrays.hpp:4971
sval_t minargref
The lowest stack argument location whose address was taken This location and locations above it can b...
Definition hexrays.hpp:5076
lvars_t vars
local variables
Definition hexrays.hpp:5098
reginfovec_t idb_spoiled
MBA_SPLINFO && final_type: info in ida format.
Definition hexrays.hpp:5091
sval_t frsize
size of local stkvars range in the stack frame
Definition hexrays.hpp:5061
ivl_with_name_t std_ivls[6]
we treat memory as consisting of 6 parts see memreg_index_t
Definition hexrays.hpp:5109
void hexapi get_func_output_lists(mlist_t *return_regs, mlist_t *spoiled, const tinfo_t &type, ea_t call_ea=BADADDR, bool tail_call=false)
Prepare the lists of registers & memory that are defined/killed by a function.
Definition hexrays.hpp:12003
int retvaridx
index of variable holding the return value -1 means none
Definition hexrays.hpp:5100
int fti_flags
FTI_... constants for the current function.
Definition hexrays.hpp:5093
sval_t fullsize
Full stack size including incoming args.
Definition hexrays.hpp:5067
char reserved[]
Definition hexrays.hpp:5133
bool set_nice_lvar_name(lvar_t &v, const char *name)
Definition hexrays.hpp:5443
bool range_contains(ea_t ea) const
Definition hexrays.hpp:5140
bool regargs_is_not_aligned() const
Definition hexrays.hpp:5123
int get_mba_flags2() const
Definition hexrays.hpp:4965
mba_maturity_t maturity
current maturity level
Definition hexrays.hpp:5086
const char * title
Definition hexrays.hpp:5207
sval_t hexapi stkoff_vd2ida(sval_t off) const
Definition hexrays.hpp:11799
int hexapi optimize_local(int locopt_bits)
Optimize each basic block locally.
Definition hexrays.hpp:11865
void hexapi alloc_lvars()
Allocate local variables.
Definition hexrays.hpp:11895
bool is_thunk() const
Definition hexrays.hpp:4939
void hexapi free_kreg(mreg_t reg, size_t size)
Free a kernel register.
Definition hexrays.hpp:12055
const stkpnt_t *hexapi locate_stkpnt(ea_t ea) const
Definition hexrays.hpp:12067
bool is_dtr() const
Definition hexrays.hpp:4961
const ivl_t & get_args_region() const
Definition hexrays.hpp:5773
mba_maturity_t reqmat
required maturity level
Definition hexrays.hpp:5087
bool is_ctr() const
Definition hexrays.hpp:4960
sval_t fpd
frame pointer delta
Definition hexrays.hpp:5063
bool set_user_lvar_name(lvar_t &v, const char *name)
Definition hexrays.hpp:5444
bool valranges_done() const
Definition hexrays.hpp:4954
uchar occurred_warns[32]
Definition hexrays.hpp:5113
bool saverest_done() const
Definition hexrays.hpp:4940
const ivl_t & get_shadow_region() const
Definition hexrays.hpp:5768
const lvar_t & arg(int n) const
Definition hexrays.hpp:5351
bool should_beautify() const
Definition hexrays.hpp:4932
qstring label
name of the function or pattern (colored)
Definition hexrays.hpp:5097
bool has_outlines() const
Definition hexrays.hpp:4959
void hexapi verify(bool always) const
Verify microcode consistency.
rlist_t consumed_argregs
registers converted into stack arguments, should not be used as arguments
Definition hexrays.hpp:5084
void hexapi save_snapshot(const char *description)
Create and save microcode snapshot.
Definition hexrays.hpp:12043
bool hexapi remove_blocks(int start_blk, int end_blk)
Definition hexrays.hpp:11949
bool lvar_names_ok() const
Definition hexrays.hpp:4951
const ivl_t & get_std_region(memreg_index_t idx) const
Get information about various memory regions.
Definition hexrays.hpp:5758
bool has_stack_retval() const
Definition hexrays.hpp:4958
bool optimized() const
Definition hexrays.hpp:4927
AS_PRINTF(3, 0) void hexapi vdump_mba(bool _verify
sval_t tmpstk_size
size of the temporary stack part (which dynamically changes with push/pops)
Definition hexrays.hpp:5059
void clr_mba_flags2(int f)
Definition hexrays.hpp:4969
bool hexapi remove_block(mblock_t *blk)
Delete a block.
Definition hexrays.hpp:11943
void hexapi mark_chains_dirty()
Mark the microcode use-def chains dirty.
tinfo_t idb_type
function type as retrieved from the database
Definition hexrays.hpp:5090
mblock_t * get_mblock(uint n)
Definition hexrays.hpp:5239
bool final_type
is the function type final? (specified by the user)
Definition hexrays.hpp:5089
sval_t spd_adjust
If sp>0, the max positive sp value.
Definition hexrays.hpp:5079
bool code16_bit_removed() const
Definition hexrays.hpp:4957
bool precise_defeas() const
Definition hexrays.hpp:4926
int npurged
-1 - unknown
Definition hexrays.hpp:5057
ea_t error_ea
during microcode generation holds ins.ea
Definition hexrays.hpp:5103
int qty
number of basic blocks
Definition hexrays.hpp:5056
hexwarns_t notes
Definition hexrays.hpp:5112
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void hexapi term()
ivl_t get_stack_region() const
Definition hexrays.hpp:5778
~mba_t()
Definition hexrays.hpp:5135
bool show_reduction() const
Definition hexrays.hpp:4929
func_t *hexapi get_curfunc() const
Definition hexrays.hpp:11853
merror_t hexapi build_graph()
Build control flow graph.
Definition hexrays.hpp:11871
bool bad_call_sp_detected() const
Definition hexrays.hpp:5119
int shadow_args
size of shadow argument area
Definition hexrays.hpp:5066
ea_t last_prolog_ea
Definition hexrays.hpp:5054
callcnv_t cc
calling convention
Definition hexrays.hpp:5058
minsn_t *hexapi create_helper_call(ea_t ea, const char *helper, const tinfo_t *rettype=nullptr, const mcallargs_t *callargs=nullptr, const mop_t *out=nullptr)
Create a call of a helper function.
Definition hexrays.hpp:11997
bool may_refine_rettype() const
Definition hexrays.hpp:4934
mblock_t *hexapi split_block(mblock_t *blk, minsn_t *start_insn)
Split a block: insert a new one after the block, move some instructions to new block.
Definition hexrays.hpp:11937
sval_t argbase() const
Definition hexrays.hpp:5028
bool hexapi merge_blocks()
Merge blocks.
Definition hexrays.hpp:11967
bool common_stkvars_stkargs() const
Definition hexrays.hpp:4950
bool really_alloc() const
Definition hexrays.hpp:4942
bool is_stkarg(const lvar_t &v) const
Definition hexrays.hpp:5038
intvec_t argidx
input arguments (indexes into 'vars')
Definition hexrays.hpp:5099
ssize_t get_stkvar(udm_t *udm, sval_t vd_stkoff, uval_t *p_idaoff=nullptr, tinfo_t *p_frame=nullptr) const
static WARN_UNUSED_RESULT mba_t *hexapi deserialize(const uchar *bytes, size_t nbytes)
Deserialize a byte sequence into mbl array.
Definition hexrays.hpp:12037
bool loaded_gdl() const
Definition hexrays.hpp:4931
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:11979
bool is_snippet() const
Definition hexrays.hpp:5141
int retsize
size of return address in the stack frame
Definition hexrays.hpp:5065
bool returns_fpval() const
Definition hexrays.hpp:4945
bool callinfo_built() const
Definition hexrays.hpp:4941
bool display_numaddrs() const
Definition hexrays.hpp:4936
int hexapi analyze_calls(int acflags)
Analyze calls and determine calling conventions.
Definition hexrays.hpp:11883
merror_t hexapi inline_func(codegen_t &cdg, int blknum, mba_ranges_t &ranges, int decomp_flags=0, int inline_flags=0)
Inline a range.
Definition hexrays.hpp:12061
bool argidx_ok() const
Definition hexrays.hpp:4955
mblock_t *hexapi insert_block(int bblk)
Insert a block in the middle of the mbl array.
Definition hexrays.hpp:11931
void hexapi serialize(bytevec_t &vout) const
Serialize mbl array into a sequence of bytes.
Definition hexrays.hpp:12031
bool propagated_asserts() const
Definition hexrays.hpp:4948
bool is_cdtr() const
Definition hexrays.hpp:4962
mlist_t nodel_memory
global dead elimination may not delete references to this area
Definition hexrays.hpp:5083
sval_t inargoff
offset of the first stack argument; after fix_scattered_movs() INARGOFF may be less than STACKSIZE
Definition hexrays.hpp:5071
void clr_cdtr()
Definition hexrays.hpp:4970
sval_t hexapi stkoff_ida2vd(sval_t off) const
Definition hexrays.hpp:11807
mop_t *hexapi find_mop(op_parent_info_t *ctx, ea_t ea, bool is_dest, const mlist_t &list)
Find an operand in the microcode.
Definition hexrays.hpp:11991
ivlset_t gotoff_stkvars
stkvars that hold .got offsets. considered to be unaliasable
Definition hexrays.hpp:5080
bool has_bad_sp() const
Definition hexrays.hpp:5127
ea_t first_epilog_ea
Definition hexrays.hpp:5055
lvar_t &hexapi arg(int n)
Get input argument of the decompiled function.
Definition hexrays.hpp:12009
bool has_passregs() const
Definition hexrays.hpp:4946
ea_t minstkref_ea
address with lowest minstkref (for debugging)
Definition hexrays.hpp:5075
ivlset_t restricted_memory
Definition hexrays.hpp:5081
Control flow graph of microcode.
Definition hexrays.hpp:5482
int get_chain_stamp() const
Definition hexrays.hpp:5531
bool is_redefined_globally(const mlist_t &list, int b1, int b2, const minsn_t *m1, const minsn_t *m2, maymust_t maymust=MAY_ACCESS) const
Is LIST redefined in the graph?
Definition hexrays.hpp:5540
graph_chains_t *hexapi get_ud(gctype_t gctype)
Get use-def chains.
Definition hexrays.hpp:12085
graph_chains_t *hexapi get_du(gctype_t gctype)
Get def-use chains.
Definition hexrays.hpp:12091
bool is_ud_chain_dirty(gctype_t gctype)
Is the use-def chain of the specified kind dirty?
Definition hexrays.hpp:5519
bool is_used_globally(const mlist_t &list, int b1, int b2, const minsn_t *m1, const minsn_t *m2, maymust_t maymust=MAY_ACCESS) const
Is LIST used in the graph?
Definition hexrays.hpp:5544
bool is_du_chain_dirty(gctype_t gctype)
Is the def-use chain of the specified kind dirty?
Definition hexrays.hpp:5526
mblock_t * get_mblock(int n) const
Definition hexrays.hpp:5547
Microcode of one basic block.
Definition hexrays.hpp:4184
ea_t end
end address note: we cannot rely on start/end addresses very much because instructions are propagated...
Definition hexrays.hpp:4217
mlist_t dnu
data that is defined but not used in the block
Definition hexrays.hpp:4232
bool lists_ready() const
Definition hexrays.hpp:4253
sval_t minbargref
the same for arguments
Definition hexrays.hpp:4238
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool empty() const
Definition hexrays.hpp:4272
void mark_lists_dirty()
Definition hexrays.hpp:4248
minsn_t * head
pointer to the first instruction of the block
Definition hexrays.hpp:4221
void hexapi append_use_list(mlist_t *list, const mop_t &op, maymust_t maymust, bitrange_t mask=MAXRANGE) const
Append use-list of an operand.
Definition hexrays.hpp:11723
minsn_t * tail
pointer to the last instruction of the block
Definition hexrays.hpp:4222
minsn_t *hexapi insert_into_block(minsn_t *nm, minsn_t *om)
Insert instruction into the doubly linked list.
friend class codegen_t
Definition hexrays.hpp:4185
mblock_type_t type
block type (BLT_NONE - not computed yet)
Definition hexrays.hpp:4225
int serial
block number
Definition hexrays.hpp:4224
intvec_t succset
control flow graph: list of our successors use nsucc() and succ() to access it
Definition hexrays.hpp:4242
void hexapi print(vd_printer_t &vp) const
Print block contents.
Definition hexrays.hpp:11651
void hexapi dump() const
Dump block info.
Definition hexrays.hpp:11657
const minsn_t *hexapi find_redefinition(const mlist_t &list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Find the first insn that redefines any part of the list in the insn range.
Definition hexrays.hpp:11757
bool is_branch() const
Definition hexrays.hpp:4613
int hexapi optimize_insn(minsn_t *m, int optflags=OPTI_MINSTKREF|OPTI_COMBINSNS)
Optimize one instruction in the context of the block.
Definition hexrays.hpp:11699
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all operands.
Definition hexrays.hpp:11687
bool is_used(mlist_t *list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Is the list used by the specified instruction range?
Definition hexrays.hpp:4449
minsn_t * find_def(const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
Definition hexrays.hpp:4552
bool is_simple_goto_block() const
Definition hexrays.hpp:4614
const minsn_t *hexapi find_first_use(mlist_t *list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Find the first insn that uses the specified list in the insn range.
Definition hexrays.hpp:11751
bool is_nway() const
Definition hexrays.hpp:4612
void request_demote64()
Definition hexrays.hpp:4251
mblock_t * prevb
previous block in the doubly linked list
Definition hexrays.hpp:4190
mlist_t mustbuse
data that must be used by the block
Definition hexrays.hpp:4228
AS_PRINTF(2, 0) void hexapi vdump_block(const char *title
intvec_t predset
control flow graph: list of our predecessors use npred() and pred() to access it
Definition hexrays.hpp:4240
minsn_t *hexapi find_access(const mop_t &op, minsn_t **parent, const minsn_t *mend, int fdflags) const
Find the instruction that accesses the specified operand.
Definition hexrays.hpp:11769
mlist_t maybuse
data that may be used by the block
Definition hexrays.hpp:4229
bool is_simple_jcnd_block() const
Definition hexrays.hpp:4620
bool hexapi is_rhs_redefined(const minsn_t *ins, const minsn_t *i1, const minsn_t *i2) const
Is the right hand side of the instruction redefined the insn range?
Definition hexrays.hpp:11763
mlist_t hexapi build_def_list(const minsn_t &ins, maymust_t maymust) const
Build def-list of an instruction.
Definition hexrays.hpp:11743
mlist_t maybdef
data that may be defined by the block
Definition hexrays.hpp:4231
int make_lists_ready()
Definition hexrays.hpp:4254
int npred() const
Get number of block predecessors.
Definition hexrays.hpp:4262
mlist_t dead_at_start
data that is dead at the block entry
Definition hexrays.hpp:4227
int hexapi optimize_useless_jump()
Remove a jump at the end of the block if it is useless.
Definition hexrays.hpp:11717
bool hexapi get_valranges(valrng_t *res, const vivl_t &vivl, int vrflags) const
Find possible values for a block.
Definition hexrays.hpp:11775
char reserved[]
Definition hexrays.hpp:4246
mlist_t mustbdef
data that must be defined by the block
Definition hexrays.hpp:4230
bool is_unknown_call() const
Definition hexrays.hpp:4611
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:11681
int pred(int n) const
Definition hexrays.hpp:4266
sval_t maxbsp
maximal sp value in the block (0...stacksize)
Definition hexrays.hpp:4234
minsn_t * find_first_use(mlist_t *list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Definition hexrays.hpp:4464
uint32 flags
combination of Basic block properties bits
Definition hexrays.hpp:4191
bool is_redefined(const mlist_t &list, const minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Is the list redefined by the specified instructions?
Definition hexrays.hpp:4479
minsn_t * find_redefinition(const mlist_t &list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Definition hexrays.hpp:4501
void hexapi append_def_list(mlist_t *list, const mop_t &op, maymust_t maymust) const
Append def-list of an operand.
Definition hexrays.hpp:11729
bool needs_propagation() const
Definition hexrays.hpp:4250
int nsucc() const
Get number of block successors.
Definition hexrays.hpp:4264
void make_nop(minsn_t *m)
Erase the instruction (convert it to nop) and mark the lists dirty.
Definition hexrays.hpp:4603
int hexapi optimize_block()
Optimize a basic block.
Definition hexrays.hpp:11705
sval_t minbstkref
lowest stack location accessible with indirect addressing (offset from the stack bottom) initially it...
Definition hexrays.hpp:4235
mba_t * mba
the parent micro block array
Definition hexrays.hpp:4223
minsn_t *hexapi remove_from_block(minsn_t *m)
Remove instruction from the doubly linked list.
Definition hexrays.hpp:11675
bool lists_dirty() const
Definition hexrays.hpp:4252
va_list va const
Definition hexrays.hpp:4284
minsn_t * find_use(const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
Definition hexrays.hpp:4560
bool is_call_block() const
Definition hexrays.hpp:4610
mblock_t * nextb
next block in the doubly linked list
Definition hexrays.hpp:4189
int hexapi build_lists(bool kill_deads)
Build def-use lists and eliminate deads.
Definition hexrays.hpp:11711
mlist_t hexapi build_use_list(const minsn_t &ins, maymust_t maymust) const
Build use-list of an instruction.
Definition hexrays.hpp:11735
int succ(int n) const
Definition hexrays.hpp:4268
int hexapi for_all_uses(mlist_t *list, minsn_t *i1, minsn_t *i2, mlist_mop_visitor_t &mmv)
Visit all operands that use LIST.
Definition hexrays.hpp:11693
size_t hexapi get_reginsn_qty() const
Calculate number of regular instructions in the block.
Definition hexrays.hpp:11787
void request_propagation()
Definition hexrays.hpp:4249
A call argument.
Definition hexrays.hpp:3149
const char *hexapi dstr() const
Definition hexrays.hpp:11331
void set_regarg(mreg_t mr, char dt, type_sign_t sign=type_unsigned)
Definition hexrays.hpp:3168
uint32 flags
FAI_...
Definition hexrays.hpp:3156
void make_uint(int val, ea_t val_ea, int opno=0)
Definition hexrays.hpp:3178
void copy_mop(const mop_t &op)
Definition hexrays.hpp:3160
void set_regarg(mreg_t mr, const tinfo_t &tif)
Definition hexrays.hpp:3164
void hexapi set_regarg(mreg_t mr, int sz, const tinfo_t &tif)
Definition hexrays.hpp:11337
tinfo_t type
formal argument type
Definition hexrays.hpp:3153
argloc_t argloc
ida argloc
Definition hexrays.hpp:3155
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:11325
ea_t ea
address where the argument was initialized.
Definition hexrays.hpp:3151
void make_int(int val, ea_t val_ea, int opno=0)
Definition hexrays.hpp:3173
mcallarg_t()
Definition hexrays.hpp:3158
qstring name
formal argument name
Definition hexrays.hpp:3154
mcallarg_t(const mop_t &rarg)
Definition hexrays.hpp:3159
Information about a call.
Definition hexrays.hpp:3264
mcallargs_t args
call arguments
Definition hexrays.hpp:3272
mcallinfo_t(ea_t _callee=BADADDR, int _sargs=0)
Definition hexrays.hpp:3311
int flags
combination of Call properties... bits
Definition hexrays.hpp:3287
int call_spd
sp value at call insn
Definition hexrays.hpp:3269
mlist_t return_regs
list of values returned by the function
Definition hexrays.hpp:3278
void hexapi print(qstring *vout, int size=-1, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:11363
ivlset_t visible_memory
what memory is visible to the call?
Definition hexrays.hpp:3282
HEXRAYS_MEMORY_ALLOCATION_FUNCS() int hexapi lexcompare(const mcallinfo_t &f) const
const char *hexapi dstr() const
Definition hexrays.hpp:11369
mlist_t spoiled
list of spoiled locations (includes return_regs)
Definition hexrays.hpp:3279
ea_t callee
address of the called function, if known
Definition hexrays.hpp:3266
type_attrs_t fti_attrs
extended function attributes
Definition hexrays.hpp:3309
mlist_t dead_regs
registers defined by the function but never used.
Definition hexrays.hpp:3283
mopvec_t retregs
return register(s) (e.g., AX, AX:DX, etc.) this vector is built from return_regs
Definition hexrays.hpp:3273
bool is_vararg() const
Definition hexrays.hpp:3319
funcrole_t role
function role
Definition hexrays.hpp:3308
tinfo_t return_type
type of the returned value
Definition hexrays.hpp:3275
int stkargs_top
first offset past stack arguments
Definition hexrays.hpp:3270
callcnv_t cc
calling convention
Definition hexrays.hpp:3271
argloc_t return_argloc
location of the returned value
Definition hexrays.hpp:3276
int solid_args
number of solid args.
Definition hexrays.hpp:3267
tinfo_t hexapi get_type() const
Definition hexrays.hpp:11355
mlist_t pass_regs
passthrough registers: registers that depend on input values (subset of spoiled)
Definition hexrays.hpp:3280
bool hexapi set_type(const tinfo_t &type)
Definition hexrays.hpp:11349
List of switch cases and targets.
Definition hexrays.hpp:3326
size_t size() const
Definition hexrays.hpp:3335
void resize(int s)
Definition hexrays.hpp:3336
casevec_t values
expression values for each target
Definition hexrays.hpp:3328
DECLARE_COMPARISONS(mcases_t)
intvec_t targets
target block numbers
Definition hexrays.hpp:3329
void swap(mcases_t &r)
Definition hexrays.hpp:3331
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool empty() const
Definition hexrays.hpp:3333
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11381
const char *hexapi dstr() const
Definition hexrays.hpp:11387
Microinstruction class insn.
Definition hexrays.hpp:3604
void set_wild_match()
Definition hexrays.hpp:3693
bool is_ignlowsrc() const
Definition hexrays.hpp:3670
minsn_t * find_ins_op(mop_t **other, mcode_t op=m_nop)
Definition hexrays.hpp:3872
void hexapi set_combined()
Definition hexrays.hpp:11479
bool is_tailcall() const
Definition hexrays.hpp:3664
int hexapi optimize_subtree(mblock_t *blk, minsn_t *top, minsn_t *parent, ea_t *converted_call, int optflags=OPTI_MINSTKREF)
Optimize instruction in its context.
Definition hexrays.hpp:11509
bool is_wild_match() const
Definition hexrays.hpp:3668
bool was_split() const
Definition hexrays.hpp:3675
void set_farcall()
Definition hexrays.hpp:3683
bool is_propagatable() const
Definition hexrays.hpp:3669
void set_assert()
Definition hexrays.hpp:3690
void set_ignlowsrc()
Definition hexrays.hpp:3695
void clr_ignlowsrc()
Definition hexrays.hpp:3696
mop_t r
right operand
Definition hexrays.hpp:3614
minsn_t * prev
prev insn in doubly linked list. check also previ()
Definition hexrays.hpp:3611
bool hexapi is_noret_call(int flags=0)
Is a non-returing call?
Definition hexrays.hpp:11545
void set_split_size(int s)
Definition hexrays.hpp:3706
void set_noret_icall()
Definition hexrays.hpp:3698
void set_combinable()
Definition hexrays.hpp:3702
bool hexapi may_use_aliased_memory() const
Is it possible for the instruction to use aliased memory?
Definition hexrays.hpp:11599
bool contains_opcode(mcode_t mcode) const
Does the instruction have the specified opcode?
Definition hexrays.hpp:3858
minsn_t * next
next insn in doubly linked list. check also nexti()
Definition hexrays.hpp:3610
bool modifies_pair_mop() const
Definition hexrays.hpp:3888
bool is_multimov() const
Definition hexrays.hpp:3673
int hexapi lexcompare(const minsn_t &ri) const
Definition hexrays.hpp:11539
void set_extstx()
Definition hexrays.hpp:3685
bool contains_call(bool with_helpers=false) const
Does the instruction contain a call?
Definition hexrays.hpp:3836
bool is_combined() const
Definition hexrays.hpp:3660
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:11521
bool hexapi has_side_effects(bool include_ldx_and_divs=false) const
Does the instruction have a side effect?
Definition hexrays.hpp:11563
funcrole_t get_role() const
Get the function role of a call.
Definition hexrays.hpp:3845
void set_unmerged()
Definition hexrays.hpp:3705
const minsn_t *hexapi find_ins_op(const mop_t **other, mcode_t op=m_nop) const
Find an operand that is a subinsruction with the specified opcode.
Definition hexrays.hpp:11575
int get_split_size() const
Definition hexrays.hpp:3714
void clr_noret_icall()
Definition hexrays.hpp:3699
bool is_mbarrier() const
Definition hexrays.hpp:3676
void clr_propagatable()
Definition hexrays.hpp:3694
void clr_fpinsn()
Definition hexrays.hpp:3689
void hexapi setaddr(ea_t new_ea)
Change the instruction address.
Definition hexrays.hpp:11503
bool is_farcall() const
Definition hexrays.hpp:3661
ea_t ea
instruction address
Definition hexrays.hpp:3612
bool is_memcpy() const
Definition hexrays.hpp:3846
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Generate insn text into the buffer.
Definition hexrays.hpp:11491
bool is_readflags() const
Definition hexrays.hpp:3850
bool hexapi modifies_d() const
Does the instruction modify its 'd' operand?
Definition hexrays.hpp:11587
bool is_inverted_jx() const
Definition hexrays.hpp:3671
bool is_persistent() const
Definition hexrays.hpp:3667
minsn_t(ea_t _ea)
Constructor.
Definition hexrays.hpp:3721
mop_t l
left operand
Definition hexrays.hpp:3613
bool is_like_move() const
Definition hexrays.hpp:3883
int optimize_solo(int optflags=0)
Optimize one instruction without context.
Definition hexrays.hpp:3751
bool was_noret_icall() const
Definition hexrays.hpp:3672
bool is_cleaning_pop() const
Definition hexrays.hpp:3662
void set_fpinsn()
Definition hexrays.hpp:3688
void clr_combined()
Definition hexrays.hpp:3682
bool hexapi is_between(const minsn_t *m1, const minsn_t *m2) const
Is the instruction in the specified range of instructions?
Definition hexrays.hpp:11593
bool was_unmerged() const
Definition hexrays.hpp:3677
void set_persistent()
Definition hexrays.hpp:3692
const mop_t *hexapi find_num_op(const mop_t **other) const
Find a numeric operand of the current instruction.
Definition hexrays.hpp:11581
HEXRAYS_MEMORY_ALLOCATION_FUNCS() minsn_t &operator
Assignment operator. It does not copy prev/next fields.
void set_tailcall()
Definition hexrays.hpp:3686
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all instruction operands.
Definition hexrays.hpp:11515
bool is_alloca() const
Definition hexrays.hpp:3848
bool is_fpinsn() const
Definition hexrays.hpp:3665
minsn_t(const minsn_t &m)
Definition hexrays.hpp:3722
bool is_after(const minsn_t *m) const
Is the instruction after the specified one?
Definition hexrays.hpp:3899
bool is_memset() const
Definition hexrays.hpp:3847
int hexapi serialize(bytevec_t *b) const
Serialize an instruction.
Definition hexrays.hpp:11605
void clr_multimov()
Definition hexrays.hpp:3701
mop_t d
destination operand
Definition hexrays.hpp:3615
bool is_unknown_call() const
Is an unknown call?
Definition hexrays.hpp:3822
void clr_tailcall()
Definition hexrays.hpp:3687
bool is_extstx() const
Definition hexrays.hpp:3663
minsn_t *hexapi find_call(bool with_helpers=false) const
Find a call instruction.
Definition hexrays.hpp:11557
bool is_assert() const
Definition hexrays.hpp:3666
bool hexapi equal_insns(const minsn_t &m, int eqflags) const
Compare instructions.
Definition hexrays.hpp:11533
bool was_unpaired() const
Definition hexrays.hpp:3678
void set_cleaning_pop()
Definition hexrays.hpp:3684
const minsn_t * find_opcode(mcode_t mcode) const
Find a (sub)insruction with the specified opcode.
Definition hexrays.hpp:3862
mop_t * find_num_op(mop_t **other)
Definition hexrays.hpp:3880
const char *hexapi dstr() const
Get displayable text without tags in a static buffer.
Definition hexrays.hpp:11497
bool is_bswap() const
Definition hexrays.hpp:3849
bool is_combinable() const
Definition hexrays.hpp:3674
void set_multimov()
Definition hexrays.hpp:3700
void set_optional()
Definition hexrays.hpp:3680
bool hexapi is_helper(const char *name) const
Is a helper call with the specified name?
Definition hexrays.hpp:11551
void hexapi _make_nop()
Convert instruction to nop.
Definition hexrays.hpp:11527
void set_mbarrier()
Definition hexrays.hpp:3704
bool is_optional() const
Definition hexrays.hpp:3659
void clr_combinable()
Definition hexrays.hpp:3703
mcode_t opcode
instruction opcode
Definition hexrays.hpp:3608
void clr_assert()
Definition hexrays.hpp:3691
bool is_mov() const
Definition hexrays.hpp:3882
bool hexapi deserialize(const uchar *bytes, size_t nbytes, int format_version)
Deserialize an instruction.
Definition hexrays.hpp:11611
int iprops
combination of instruction property bits bits
Definition hexrays.hpp:3609
void set_inverted_jx()
Definition hexrays.hpp:3697
Address of an operand (mop_l, mop_v, mop_S, mop_r)
Definition hexrays.hpp:3119
mop_addr_t(const mop_addr_t &ra)
Definition hexrays.hpp:3125
mop_addr_t & operator=(const mop_addr_t &rop)
Definition hexrays.hpp:3130
int lexcompare(const mop_addr_t &ra) const
Definition hexrays.hpp:3137
int outsize
Definition hexrays.hpp:3122
mop_addr_t()
Definition hexrays.hpp:3124
mop_addr_t(const mop_t &ra, int isz, int osz)
Definition hexrays.hpp:3127
int insize
Definition hexrays.hpp:3121
Pair of operands.
Definition hexrays.hpp:3110
mop_t lop
low operand
Definition hexrays.hpp:3112
mop_t hop
high operand
Definition hexrays.hpp:3113
A microinstruction operand.
Definition hexrays.hpp:2564
int64 signed_value() const
Definition hexrays.hpp:2969
bool is_one() const
Definition hexrays.hpp:2988
void hexapi _make_gvar(ea_t ea)
Create a global variable operand without erasing previous data.
Definition hexrays.hpp:11187
bool double_size(side_effect_t sideff=WITH_SIDEFF)
Definition hexrays.hpp:3076
bool is_for_abi() const
Definition hexrays.hpp:2627
friend int lexcompare(const mop_t &a, const mop_t &b)
Definition hexrays.hpp:2939
int b
Definition hexrays.hpp:2604
bool is_negative_constant() const
Definition hexrays.hpp:2994
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void zero()
Definition hexrays.hpp:2651
bool has_side_effects(bool include_ldx_and_divs=false) const
Has any side effects?
Definition hexrays.hpp:5703
uint8 oprops
Operand properties.
Definition hexrays.hpp:2571
bool is_insn() const
Is a sub-instruction?
Definition hexrays.hpp:2888
int hexapi for_all_ops(mop_visitor_t &mv, const tinfo_t *type=nullptr, bool is_target=false)
Visit the operand and all its sub-operands.
Definition hexrays.hpp:11253
void make_reg(mreg_t reg, int _size)
Definition hexrays.hpp:2744
bool hexapi is_constant(uint64 *out=nullptr, bool is_signed=true) const
Retrieve value of a constant integer operand.
Definition hexrays.hpp:11265
uint64 unsigned_value() const
Definition hexrays.hpp:2970
bool hexapi is_zero_extended_from(int nbytes) const
Does the high part of the operand consist of zero bytes?
Definition hexrays.hpp:11235
mopt_t t
Operand type.
Definition hexrays.hpp:2568
bool is_reg() const
Is a register operand?
Definition hexrays.hpp:2860
void hexapi create_from_insn(const minsn_t *m)
Create operand from an instruction.
Definition hexrays.hpp:11169
~mop_t()
Definition hexrays.hpp:2647
bool hexapi create_from_mlist(mba_t *mba, const mlist_t &lst, sval_t fullsize)
Create operand from mlist_t.
Definition hexrays.hpp:11145
void hexapi make_reg_pair(int loreg, int hireg, int halfsize)
Create pair of registers.
Definition hexrays.hpp:11199
bool is_mblock() const
Is a block reference?
Definition hexrays.hpp:2876
bool is_glbaddr_from_fixup() const
Definition hexrays.hpp:2637
bool is_lowaddr() const
Definition hexrays.hpp:2626
void _make_lvar(mba_t *mba, int idx, sval_t off=0)
Create a local variable operand.
Definition hexrays.hpp:2752
bool is_pcval() const
Definition hexrays.hpp:2633
bool hexapi make_low_half(int width)
Make the low part of the operand.
Definition hexrays.hpp:11277
bool hexapi get_stkoff(sval_t *p_vdoff) const
Get the referenced stack offset.
Definition hexrays.hpp:11271
uint16 valnum
Value number.
Definition hexrays.hpp:2587
bool empty() const
Definition hexrays.hpp:2853
void set_udt()
Definition hexrays.hpp:2618
ssize_t get_stkvar(udm_t *udm=nullptr, uval_t *p_idaoff=nullptr) const
Retrieve the referenced stack variable.
Definition hexrays.hpp:3007
void _make_blkref(int blknum)
Create a block reference operand without erasing previous data.
Definition hexrays.hpp:2797
int size
Operand size.
Definition hexrays.hpp:2591
bool hexapi preserve_side_effects(mblock_t *blk, minsn_t *top, bool *moved_calls=nullptr)
Move subinstructions with side effects out of the operand.
Definition hexrays.hpp:11313
bool is_glbvar() const
Is a global variable?
Definition hexrays.hpp:2855
bool hexapi equal_mops(const mop_t &rop, int eqflags) const
Compare operands.
Definition hexrays.hpp:11241
mop_addr_t * a
Definition hexrays.hpp:2607
char * helper
Definition hexrays.hpp:2608
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:11133
bool hexapi change_size(int nsize, side_effect_t sideff=WITH_SIDEFF)
Change the operand size.
Definition hexrays.hpp:11307
bool is_reg(mreg_t _r) const
Is the specified register?
Definition hexrays.hpp:2862
const minsn_t * get_insn(mcode_t code) const
Get subinstruction of the operand.
Definition hexrays.hpp:5717
mnumber_t * nnn
Definition hexrays.hpp:2600
mcases_t * c
Definition hexrays.hpp:2610
bool hexapi make_fpnum(const void *bytes, size_t _size)
Create a floating point constant operand.
Definition hexrays.hpp:11181
void _make_cases(mcases_t *_cases)
Create a 'switch cases' operand without erasing previous data.
Definition hexrays.hpp:2835
void set_lowaddr()
Definition hexrays.hpp:2620
void make_insn(minsn_t *ins)
Create a nested instruction.
Definition hexrays.hpp:2791
scif_t * scif
Definition hexrays.hpp:2613
void hexapi make_number(uint64 _value, int _size, ea_t _ea=BADADDR, int opnum=0)
Create an integer constant operand.
Definition hexrays.hpp:11175
bool is_arglist() const
Is a list of arguments?
Definition hexrays.hpp:2866
bool is_impptr_done() const
Definition hexrays.hpp:2622
bool is_equal_to(uint64 n, bool is_signed=true) const
Definition hexrays.hpp:2982
mop_t(const mop_t &rop)
Definition hexrays.hpp:2643
bool hexapi make_first_half(int width)
Make the first part of the operand.
Definition hexrays.hpp:11289
bool is_stkvar() const
Is a stack variable?
Definition hexrays.hpp:2857
void make_stkvar(mba_t *mba, sval_t off)
Definition hexrays.hpp:2776
void set_impptr_done()
Definition hexrays.hpp:2617
bool hexapi is_sign_extended_from(int nbytes) const
Does the high part of the operand consist of the sign bytes?
Definition hexrays.hpp:11229
void set_for_abi()
Definition hexrays.hpp:2621
bool hexapi make_high_half(int width)
Make the high part of the operand.
Definition hexrays.hpp:11283
const char *hexapi dstr() const
Definition hexrays.hpp:11139
bool operator!=(const mop_t &rop) const
Definition hexrays.hpp:2934
uint64 value(bool is_signed) const
Retrieve value of a constant integer operand.
Definition hexrays.hpp:2968
void apply_xds(ea_t ea, int newsize)
Definition hexrays.hpp:3104
bool is_undef_val() const
Definition hexrays.hpp:2625
bool is_glbaddr() const
Is address of a global memory cell?
Definition hexrays.hpp:5727
void _make_reg(mreg_t reg)
Create a register operand without erasing previous data.
Definition hexrays.hpp:2731
mcallinfo_t * f
Definition hexrays.hpp:2605
bool is_scattered() const
Is a scattered operand?
Definition hexrays.hpp:2880
void hexapi erase()
Definition hexrays.hpp:11127
void _make_insn(minsn_t *ins)
Create a nested instruction without erasing previous data.
Definition hexrays.hpp:5697
void _make_strlit(const char *str)
Create a constant string operand.
Definition hexrays.hpp:2811
mop_t & operator=(const mop_t &rop)
Definition hexrays.hpp:2645
bool is_kreg() const
Is a kernel register?
Definition hexrays.hpp:5708
bool is_cc() const
Is a condition code?
Definition hexrays.hpp:2868
bool is_reg(mreg_t _r, int _size) const
Is the specified register of the specified size?
Definition hexrays.hpp:2864
void hexapi swap(mop_t &rop)
Definition hexrays.hpp:11121
int hexapi for_all_scattered_submops(scif_visitor_t &sv) const
Visit all sub-operands of a scattered operand.
Definition hexrays.hpp:11259
bool is_bit_reg() const
Definition hexrays.hpp:2872
bool is_zero() const
Definition hexrays.hpp:2987
bool hexapi create_from_ivlset(mba_t *mba, const ivlset_t &ivs, sval_t fullsize)
Create operand from ivlset_t.
Definition hexrays.hpp:11151
void make_reg(mreg_t reg)
Create a register operand.
Definition hexrays.hpp:2743
bool is_extended_from(int nbytes, bool is_signed) const
Does the high part of the operand consist of zero or sign bytes?
Definition hexrays.hpp:2917
bool hexapi shift_mop(int offset)
Shift the operand.
Definition hexrays.hpp:11301
mop_t &hexapi assign(const mop_t &rop)
Definition hexrays.hpp:11115
bool is_positive_constant() const
Definition hexrays.hpp:2989
bool is_udt() const
Definition hexrays.hpp:2623
mop_pair_t * pair
Definition hexrays.hpp:2612
mreg_t r
Definition hexrays.hpp:2599
void _make_stkvar(mba_t *mba, sval_t off)
Create a stack variable operand.
Definition hexrays.hpp:2771
bool is_stkaddr() const
Is address of a stack variable?
Definition hexrays.hpp:5737
mop_t(mreg_t _r, int _s)
Definition hexrays.hpp:2644
bool hexapi is01() const
Are the possible values of the operand only 0 and 1?
Definition hexrays.hpp:11223
void set_undef_val()
Definition hexrays.hpp:2619
fnumber_t * fpc
Definition hexrays.hpp:2611
ea_t g
Definition hexrays.hpp:2603
mop_t()
Definition hexrays.hpp:2642
void _make_strlit(qstring *str)
Definition hexrays.hpp:2816
bool operator==(const mop_t &rop) const
Definition hexrays.hpp:2933
bool is_ccflags() const
Definition hexrays.hpp:2628
char * cstr
Definition hexrays.hpp:2609
void hexapi make_helper(const char *name)
Create a helper operand.
Definition hexrays.hpp:11205
minsn_t * d
Definition hexrays.hpp:2601
void hexapi create_from_vdloc(mba_t *mba, const vdloc_t &loc, int _size)
Create operand from vdloc_t.
Definition hexrays.hpp:11157
void make_blkref(int blknum)
Create a global variable operand.
Definition hexrays.hpp:2803
void _make_callinfo(mcallinfo_t *fi)
Create a call info operand without erasing previous data.
Definition hexrays.hpp:2826
stkvar_ref_t * s
Definition hexrays.hpp:2602
void _make_reg(mreg_t reg, int _size)
Definition hexrays.hpp:2736
bool hexapi make_second_half(int width)
Make the second part of the operand.
Definition hexrays.hpp:11295
void erase_but_keep_size()
Definition hexrays.hpp:2655
lvar_ref_t * l
Definition hexrays.hpp:2606
bool probably_floating() const
Definition hexrays.hpp:2624
void hexapi create_from_scattered_vdloc(mba_t *mba, const char *name, tinfo_t type, const vdloc_t &loc)
Create operand from scattered vdloc_t.
Definition hexrays.hpp:11163
void hexapi apply_ld_mcode(mcode_t mcode, ea_t ea, int newsize)
Apply a unary opcode to the operand.
Definition hexrays.hpp:11319
void update_numop_value(uint64 val)
Definition hexrays.hpp:2971
void hexapi make_gvar(ea_t ea)
Create a global variable operand.
Definition hexrays.hpp:11193
bool is_mblock(int serial) const
Is a block reference to the specified block?
Definition hexrays.hpp:2878
void apply_xdu(ea_t ea, int newsize)
Definition hexrays.hpp:3103
void _make_pair(mop_pair_t *_pair)
Create a pair operand without erasing previous data.
Definition hexrays.hpp:2844
bool hexapi may_use_aliased_memory() const
Is it possible for the operand to use aliased memory?
Definition hexrays.hpp:11217
Definition hexrays.hpp:1864
node_bitset_t(int node)
Definition hexrays.hpp:1867
node_bitset_t()
Definition hexrays.hpp:1866
Node ordering in a graph.
Definition gdl.hpp:142
A flow chart for a function, or a set of address ranges.
Definition gdl.hpp:443
Linked list Note: linked list is not movable!
Definition pro.h:4038
Smart pointer to objects derived from qrefcnt_obj_t.
Definition pro.h:2920
Reimplementation of stack class from STL.
Definition pro.h:2774
Reimplementation of vector class from STL.
Definition pro.h:2250
const Ivl * const_iterator
Definition pro.h:2607
void swap(qvector< T > &r) noexcept
Replace all attributes of this qvector with that of 'r', and vice versa.
Definition pro.h:2560
iterator end(void)
Get an iterator that points to the end of the qvector (NOT the last element)
Definition pro.h:2610
qvector(void)
Definition pro.h:2328
lvar_saved_info_t * iterator
Definition pro.h:2606
iterator begin(void)
Get an iterator that points to the first element in the qvector.
Definition pro.h:2609
void push_back(ea_t &&x)
Definition pro.h:2361
Definition hexrays.hpp:2048
const char *hexapi dstr() const
Definition hexrays.hpp:10957
rlist_t & operator=(const rlist_t &)=default
rlist_t(mreg_t reg, int width)
Definition hexrays.hpp:2052
rlist_t()
Definition hexrays.hpp:2050
rlist_t(const rlist_t &m)
Definition hexrays.hpp:2051
void hexapi print(qstring *vout) const
Definition hexrays.hpp:10951
~rlist_t()
Definition hexrays.hpp:2053
Used to manage arguments that are described by multiple locations (also see ALOC_DIST)
Definition typeinf.hpp:1343
Definition hexrays.hpp:2261
friend class simple_graph_t
Definition hexrays.hpp:2262
bool operator==(const iterator &n) const
Definition hexrays.hpp:2266
bool operator!=(const iterator &n) const
Definition hexrays.hpp:2267
int operator*() const
Definition hexrays.hpp:2268
Definition hexrays.hpp:2222
void calc_outgoing_edges(const intvec_t &sub, edgevec_t &el) const
int front() const
Definition hexrays.hpp:2273
void inc(iterator &p, int n=1) const
Definition hexrays.hpp:2274
void hexapi compute_dominators(array_of_node_bitset_t &domin, bool post=false) const
Definition hexrays.hpp:11043
void find_reaching_nodes(int n, node_bitset_t &reaching) const
bool colored_gdl_edges
Definition hexrays.hpp:2231
void hexapi compute_immediate_dominators(const array_of_node_bitset_t &domin, intvec_t &idomin, bool post=false) const
Definition hexrays.hpp:11049
void depth_first_postorder(node_ordering_t *post, edge_mapper_t *et) const
iterator begin() const
Definition hexrays.hpp:2271
bool path_exists(int m, int n) const
bool path_back(const array_of_node_bitset_t &domin, int m, int n) const
void compute_dominator_info(struct dominator_info_t &di)
intvec_t find_dead_nodes() const
iterator const_iterator
Definition hexrays.hpp:2270
bool path_back(const edge_mapper_t &et, int m, int n) const
int const newapi
Definition hexrays.hpp:2235
void depth_first_postorder_for_all_entries(node_ordering_t *post) const
int hexapi depth_first_preorder(node_ordering_t *pre) const
Definition hexrays.hpp:11055
bool is_connected_without(const edge_t &forbidden_edge, const intvec_t &dead_nodes) const
qstring title
Definition hexrays.hpp:2230
int hexapi depth_first_postorder(node_ordering_t *post) const
Definition hexrays.hpp:11061
virtual int hexapi goup(int node) const newapi
Definition hexrays.hpp:11067
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual bool ignore_edge(int
iterator end() const
Definition hexrays.hpp:2272
Primary mechanism for managing type information.
Definition typeinf.hpp:3046
bool create_typedef(const typedef_type_data_t &p, type_t decl_type=BTF_TYPEDEF, bool try_ordinal=true)
Definition typeinf.hpp:3893
void swap(tinfo_t &r)
Assign this = r and r = this.
Definition typeinf.hpp:3195
size_t get_size(uint32 *p_effalign=nullptr, int gts_code=0) const
Get the type size in bytes.
Definition typeinf.hpp:3317
Abstract class: User-defined call generator derived classes should implement method 'match'.
Definition hexrays.hpp:1762
~udc_filter_t()
Definition hexrays.hpp:1766
virtual bool match(codegen_t &cdg) override=0
return true if the filter object should be applied to given instruction
bool hexapi init(const char *decl)
Definition hexrays.hpp:10691
void hexapi cleanup()
Cleanup the filter This function properly clears type information associated to this filter.
Definition hexrays.hpp:10685
bool empty() const
Definition hexrays.hpp:1778
virtual merror_t hexapi apply(codegen_t &cdg) override
generate microcode for an instruction
Definition hexrays.hpp:10697
Definition hexrays.hpp:376
void set_unk()
Definition hexrays.hpp:428
void hexapi set_cmp(cmpop_t cmp, uvlr_t _value)
Definition hexrays.hpp:10286
DEFINE_MEMORY_ALLOCATION_FUNCS() void set_none()
Definition hexrays.hpp:424
const char *hexapi dstr() const
Definition hexrays.hpp:10328
uvlr_t max_svalue() const
Definition hexrays.hpp:461
valrng_t(int size_=MAX_VLR_SIZE)
Definition hexrays.hpp:417
bool hexapi cvt_to_single_value(uvlr_t *v) const
Definition hexrays.hpp:10334
bool is_unknown() const
Definition hexrays.hpp:449
bool empty() const
Definition hexrays.hpp:447
char reserved[sizeof(qvector< int >)]
Definition hexrays.hpp:409
uvlr_t zeroes
Definition hexrays.hpp:406
bool hexapi unite_with(const valrng_t &r)
Definition hexrays.hpp:10304
void hexapi set_eq(uvlr_t v)
Definition hexrays.hpp:10280
void hexapi copy(const valrng_t &r)
Definition hexrays.hpp:10262
void swap(valrng_t &r)
Definition hexrays.hpp:422
int size
Definition hexrays.hpp:392
int flags
Definition hexrays.hpp:378
bool hexapi has(uvlr_t v) const
Definition hexrays.hpp:10316
uvlr_t value
Definition hexrays.hpp:399
DECLARE_COMPARISONS(valrng_t)
valrng_t(const valrng_t &r)
Definition hexrays.hpp:419
void set_all()
Definition hexrays.hpp:427
int get_size() const
Definition hexrays.hpp:458
void hexapi print(qstring *vout) const
Definition hexrays.hpp:10322
bool all_values() const
Definition hexrays.hpp:448
valrng_t & operator=(const valrng_t &r)
Definition hexrays.hpp:421
bool hexapi cvt_to_cmp(cmpop_t *cmp, uvlr_t *val) const
Definition hexrays.hpp:10340
bool hexapi reduce_size(int new_size)
Definition hexrays.hpp:10292
svlr_t stride
Definition hexrays.hpp:402
void hexapi inverse()
Definition hexrays.hpp:10310
valrng_t &hexapi assign(const valrng_t &r)
Definition hexrays.hpp:10268
uvlr_t min_svalue() const
Definition hexrays.hpp:460
uvlr_t ones
Definition hexrays.hpp:407
uvlr_t limit
Definition hexrays.hpp:400
void hexapi clear()
Definition hexrays.hpp:10256
~valrng_t()
Definition hexrays.hpp:420
bool hexapi intersect_with(const valrng_t &r)
Definition hexrays.hpp:10298
uvlr_t max_value() const
Definition hexrays.hpp:459
Definition hexrays.hpp:1103
int reg1() const
Definition hexrays.hpp:1109
void _set_reg1(int r1)
Definition hexrays.hpp:1114
bool hexapi is_aliasable(const mba_t *mb, int size) const
Definition hexrays.hpp:10540
const char *hexapi dstr(int width=0) const
Definition hexrays.hpp:10528
void set_reg1(int r1)
Definition hexrays.hpp:1117
DECLARE_COMPARISONS(vdloc_t)
System independent counterparts of FILE* related functions from Clib.
Low level graph drawing operations.
constexpr THREAD_SAFE bool is_vararg_cc(callcnv_t cc)
Does the calling convention use ellipsis?
Definition typeinf.hpp:1466
const argloc_type_t ALOC_REG2
register pair
Definition typeinf.hpp:957
const callcnv_t CM_CC_INVALID
this value is invalid
Definition typeinf.hpp:878
const callcnv_t CM_CC_UNKNOWN
unknown calling convention
Definition typeinf.hpp:879
merror_t
Definition hexrays.hpp:513
@ MERR_ONLY32
only 32-bit functions can be decompiled for the current database
Definition hexrays.hpp:539
@ MERR_LICENSE
no license available
Definition hexrays.hpp:538
@ MERR_CANCELED
decompilation has been cancelled
Definition hexrays.hpp:533
@ MERR_UNKTYPE
undefined type s (currently unused error code)
Definition hexrays.hpp:529
@ MERR_BADFRAME
function frame is wrong
Definition hexrays.hpp:528
@ MERR_BUSY
already decompiling a function
Definition hexrays.hpp:541
@ MERR_HUGESTACK
stack frame is too big
Definition hexrays.hpp:524
@ MERR_BADBLK
bad block found
Definition hexrays.hpp:519
@ MERR_BADIDB
inconsistent database information
Definition hexrays.hpp:530
@ MERR_CLOUD
cloud: s
Definition hexrays.hpp:549
@ MERR_EXCEPTION
exception analysis failed
Definition hexrays.hpp:523
@ MERR_BLOCK
no error, switch to new block
Definition hexrays.hpp:515
@ MERR_FUNCSIZE
too big function
Definition hexrays.hpp:544
@ MERR_PARTINIT
partially initialized variable s
Definition hexrays.hpp:536
@ MERR_BADRANGES
bad input ranges
Definition hexrays.hpp:545
@ MERR_DSLOT
bad instruction in the delay slot
Definition hexrays.hpp:547
@ MERR_OK
ok
Definition hexrays.hpp:514
@ MERR_INSN
cannot convert to microcode
Definition hexrays.hpp:517
@ MERR_COMPLEX
too complex function
Definition hexrays.hpp:537
@ MERR_BADARCH
current architecture is not supported
Definition hexrays.hpp:546
@ MERR_ONLY64
only 64-bit functions can be decompiled for the current database
Definition hexrays.hpp:540
@ MERR_RECDEPTH
max recursion depth reached during lvar allocation
Definition hexrays.hpp:534
@ MERR_FARPTR
far memory model is supported only for pc
Definition hexrays.hpp:542
@ MERR_STOP
no error, stop the analysis
Definition hexrays.hpp:548
@ MERR_BADCALL
could not determine call arguments
Definition hexrays.hpp:527
@ MERR_EMULATOR
emulator: s
Definition hexrays.hpp:550
@ MERR_SIZEOF
wrong basic type sizes in compiler settings
Definition hexrays.hpp:531
@ MERR_EXTERN
special segments cannot be decompiled
Definition hexrays.hpp:543
@ MERR_BITNESS
16-bit functions cannot be decompiled
Definition hexrays.hpp:526
@ MERR_LOOP
internal code: redo last loop (never reported)
Definition hexrays.hpp:552
@ MERR_REDO
redecompilation has been requested
Definition hexrays.hpp:532
@ MERR_PROLOG
prolog analysis failed
Definition hexrays.hpp:521
@ MERR_LVARS
local variable allocation failed
Definition hexrays.hpp:525
@ MERR_INTERR
internal error
Definition hexrays.hpp:516
@ MERR_OVERLAP
variables would overlap: s
Definition hexrays.hpp:535
@ MERR_BADSP
positive sp value has been found
Definition hexrays.hpp:520
@ MERR_SWITCH
wrong switch idiom
Definition hexrays.hpp:522
@ MERR_MAX_ERR
Definition hexrays.hpp:551
@ MERR_MEM
not enough memory
Definition hexrays.hpp:518
idaman THREAD_SAFE va_list va
See qsscanf()
Definition err.h:21
idaman THREAD_SAFE const char * format
Definition fpro.h:78
idaman THREAD_SAFE AS_PRINTF(1, 0) void ida_export vqperror(const char *format
Print error message to stderr (analog of perror)
idaman const char * end
Definition pro.h:1001
int code
Definition fpro.h:88
idaman size_t n
Definition pro.h:997
const type_sign_t type_unsigned
unsigned type
Definition typeinf.hpp:675
qvector< type_attr_t > type_attrs_t
this vector must be sorted by keys
Definition typeinf.hpp:669
int type_sign_t
type signedness
Definition typeinf.hpp:671
const type_sign_t no_sign
no sign, or unknown
Definition typeinf.hpp:673
const type_t BTF_UINT
unsigned int
Definition typeinf.hpp:411
const type_t BTF_INT
int, unknown signedness
Definition typeinf.hpp:410
tinfo_t hexapi dummy_ptrtype(int ptrsize, bool isfp)
Generate a dummy pointer type.
Definition hexrays.hpp:10492
bool hexapi get_type(uval_t id, tinfo_t *tif, type_source_t guess)
Get a global type.
Definition hexrays.hpp:10516
bool hexapi set_type(uval_t id, const tinfo_t &tif, type_source_t source, bool force=false)
Set a global type.
Definition hexrays.hpp:10522
bool hexapi is_type_correct(const type_t *ptr)
Verify a type string.
Definition hexrays.hpp:10438
int hexapi partial_type_num(const tinfo_t &type)
Calculate number of partial subtypes.
Definition hexrays.hpp:10462
bool hexapi is_small_udt(const tinfo_t &tif)
Is a small structure or union?
Definition hexrays.hpp:10444
THREAD_SAFE bool is_inplace_def(const tinfo_t &type)
Is struct/union/enum definition (not declaration)?
Definition hexrays.hpp:988
type_source_t
Type source (where the type information comes from)
Definition hexrays.hpp:1059
bool hexapi is_bool_type(const tinfo_t &type)
Is a boolean type?
Definition hexrays.hpp:10456
bool hexapi is_nonbool_type(const tinfo_t &type)
Is definitely a non-boolean type?
Definition hexrays.hpp:10450
tinfo_t hexapi get_int_type_by_width_and_sign(int srcwidth, type_sign_t sign)
Create a type info by width and sign.
Definition hexrays.hpp:10476
THREAD_SAFE bool is_ptr_or_array(type_t t)
Is a pointer or array type?
Definition hexrays.hpp:976
tinfo_t hexapi create_typedef(const char *name)
Create a reference to a named type.
Definition hexrays.hpp:10508
const char *hexapi dstr(const tinfo_t *tif)
Print the specified type info.
Definition hexrays.hpp:10432
tinfo_t hexapi get_unk_type(int size)
Create a partial type info by width.
Definition hexrays.hpp:10484
THREAD_SAFE bool is_paf(type_t t)
Is a pointer, array, or function type?
Definition hexrays.hpp:982
tinfo_t hexapi make_pointer(const tinfo_t &type)
Create a pointer type.
Definition hexrays.hpp:10500
tinfo_t hexapi get_float_type(int width)
Get a type of a floating point value with the specified width.
Definition hexrays.hpp:10468
@ TS_DONTREF
Definition hexrays.hpp:1066
@ GUESSED_WEAK
Definition hexrays.hpp:1061
@ GUESSED_DATA
Definition hexrays.hpp:1063
@ TS_SHRINK
Definition hexrays.hpp:1065
@ GUESSED_FUNC
Definition hexrays.hpp:1062
@ TS_NOELL
Definition hexrays.hpp:1064
@ GUESSED_NONE
Definition hexrays.hpp:1060
@ TS_MASK
Definition hexrays.hpp:1067
input_device_t
Type of the input device.
Definition hexrays.hpp:8099
@ USE_MOUSE
Mouse.
Definition hexrays.hpp:8101
@ USE_KEYBOARD
Keyboard.
Definition hexrays.hpp:8100
bool is_break_consumer(ctype_t op)
Does a break statement influence the specified statement code?
Definition hexrays.hpp:6125
operand_locator_t const & user_numforms_first(user_numforms_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9170
const maymust_t MAYMUST_ACCESS_MASK
Definition hexrays.hpp:479
void udcall_map_free(udcall_map_t *map)
Delete udcall_map_t instance.
Definition hexrays.hpp:9475
int hexapi select_udt_by_offset(const qvector< tinfo_t > *udts, const ui_stroff_ops_t &ops, ui_stroff_applicator_t &applicator)
Select UDT.
Definition hexrays.hpp:13232
cursor_item_type_t
Type of the cursor item.
Definition hexrays.hpp:7183
@ VDI_FUNC
the function itself (the very first line with the function prototype)
Definition hexrays.hpp:7187
@ VDI_TAIL
cursor is at (beyond) the line end (commentable line)
Definition hexrays.hpp:7188
@ VDI_LVAR
declaration of local variable
Definition hexrays.hpp:7186
@ VDI_NONE
undefined
Definition hexrays.hpp:7184
@ VDI_EXPR
c-tree item
Definition hexrays.hpp:7185
boundaries_iterator_t boundaries_end(const boundaries_t *map)
Get iterator pointing to the end of boundaries_t.
Definition hexrays.hpp:10083
size_t iterator_word
Definition hexrays.hpp:9140
THREAD_SAFE mcode_t jcnd2set(mcode_t code)
Definition hexrays.hpp:730
user_cmts_iterator_t user_cmts_prev(user_cmts_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9555
size_t user_numforms_size(user_numforms_t *map)
Get size of user_numforms_t.
Definition hexrays.hpp:9250
boundaries_iterator_t boundaries_find(const boundaries_t *map, const cinsn_t *&key)
Find the specified key in boundaries_t.
Definition hexrays.hpp:10056
void user_cmts_clear(user_cmts_t *map)
Clear user_cmts_t.
Definition hexrays.hpp:9570
const cmt_type_t CMT_FUNC
Function comment.
Definition hexrays.hpp:8153
memreg_index_t
< memory region types
Definition hexrays.hpp:4733
@ MMIDX_SHADOW
stack: shadow arguments
Definition hexrays.hpp:4737
@ MMIDX_GLBLOW
global memory: low part
Definition hexrays.hpp:4734
@ MMIDX_GLBHIGH
global memory: high part
Definition hexrays.hpp:4739
@ MMIDX_ARGS
stack: regular stack arguments
Definition hexrays.hpp:4738
@ MMIDX_RETADDR
stack: return address
Definition hexrays.hpp:4736
@ MMIDX_LVARS
stack: local variables
Definition hexrays.hpp:4735
const maymust_t EXCLUDE_PASS_REGS
Definition hexrays.hpp:486
bool is_unary(ctype_t op)
Is unary operator?
Definition hexrays.hpp:6060
user_iflags_iterator_t user_iflags_insert(user_iflags_t *map, const citem_locator_t &key, const int32 &val)
Insert new (citem_locator_t, int32) pair into user_iflags_t.
Definition hexrays.hpp:9629
THREAD_SAFE mcode_t hexapi get_unsigned_mcode(mcode_t code)
Definition hexrays.hpp:10384
THREAD_SAFE bool is_unsigned_mcode(mcode_t code)
Definition hexrays.hpp:766
const mopt_t mop_d
result of another instruction
Definition hexrays.hpp:2371
const cmt_type_t CMT_BLOCK2
Posterior block comment.
Definition hexrays.hpp:8151
const minsn_t *hexapi getb_reginsn(const minsn_t *ins)
Skip assertions backward.
Definition hexrays.hpp:11623
void user_labels_clear(user_labels_t *map)
Clear user_labels_t.
Definition hexrays.hpp:9897
bool hexapi arglocs_overlap(const vdloc_t &loc1, size_t w1, const vdloc_t &loc2, size_t w2)
Do two arglocs overlap?
Definition hexrays.hpp:10552
enum hexrays_event_t ENUM_SIZE(int)
Decompiler events.
Definition hexrays.hpp:7839
user_cmts_iterator_t user_cmts_end(const user_cmts_t *map)
Get iterator pointing to the end of user_cmts_t.
Definition hexrays.hpp:9538
const size_t bitset_shift
Definition hexrays.hpp:1785
void * hexdsp_t(int code,...)
Hex-Rays decompiler dispatcher.
Definition hexrays.hpp:7832
THREAD_SAFE bool hexapi must_mcode_close_block(mcode_t mcode, bool including_calls)
Must an instruction with the given opcode be the last one in a block?
Definition hexrays.hpp:10354
size_t user_unions_size(user_unions_t *map)
Get size of user_unions_t.
Definition hexrays.hpp:9795
user_labels_t *hexapi restore_user_labels(ea_t func_ea, const cfunc_t *func=nullptr)
Restore user defined labels from the database.
Definition hexrays.hpp:12705
bool is_relational(ctype_t op)
Is comparison operator?
Definition hexrays.hpp:6062
uvlr_t max_vlr_value(int size)
Definition hexrays.hpp:318
const mreg_t mr_sf
Definition hexrays.hpp:783
bool is_signed_cmpop(cmpop_t cmpop)
Definition hexrays.hpp:354
bool init_hexrays_plugin(int flags=0)
Check that your plugin is compatible with hex-rays decompiler.
Definition hexrays.hpp:9147
qvector< mlist_t > mlistvec_t
Definition hexrays.hpp:2117
void lvar_mapping_clear(lvar_mapping_t *map)
Clear lvar_mapping_t.
Definition hexrays.hpp:9352
merror_t hexapi convert_to_user_call(const udcall_t &udc, codegen_t &cdg)
try to generate user-defined call for an instruction
Definition hexrays.hpp:10672
item_preciser_t
Comment item preciser.
Definition hexrays.hpp:6228
@ ITP_ASM
__asm-line
Definition hexrays.hpp:6236
@ ITP_CASE
bit for switch cases
Definition hexrays.hpp:6248
@ ITP_BLOCK2
closing block comment.
Definition hexrays.hpp:6246
@ ITP_SEMI
semicolon
Definition hexrays.hpp:6239
@ ITP_INNER_LAST
Definition hexrays.hpp:6234
@ ITP_CURLY2
}
Definition hexrays.hpp:6241
@ ITP_SIGN
if this bit is set too, then we have a negative case value
Definition hexrays.hpp:6249
@ ITP_EMPTY
nothing
Definition hexrays.hpp:6230
@ ITP_COLON
: (label)
Definition hexrays.hpp:6243
@ ITP_ELSE
else-line
Definition hexrays.hpp:6237
@ ITP_DO
do-line
Definition hexrays.hpp:6238
@ ITP_ARG64
Definition hexrays.hpp:6232
@ ITP_CURLY1
{
Definition hexrays.hpp:6240
@ ITP_BRACE1
Definition hexrays.hpp:6233
@ ITP_ARG1
, (64 entries are reserved for 64 call arguments)
Definition hexrays.hpp:6231
@ ITP_BRACE2
)
Definition hexrays.hpp:6242
@ ITP_TRY
C++ try statement.
Definition hexrays.hpp:6247
@ ITP_BLOCK1
opening block comment.
Definition hexrays.hpp:6244
user_unions_iterator_t user_unions_prev(user_unions_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9773
int mreg_t
Micro register.
Definition hexrays.hpp:267
std::set< ea_t > easet_t
Definition hexrays.hpp:281
bool is_bitop(ctype_t op)
Is bit related operator?
Definition hexrays.hpp:6101
ivl_tpl< uval_t > uval_ivl_t
Definition hexrays.hpp:1890
user_unions_iterator_t user_unions_next(user_unions_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9765
const svlr_t MIN_VLR_SVALUE
Definition hexrays.hpp:315
user_numforms_iterator_t user_numforms_find(const user_numforms_t *map, const operand_locator_t &key)
Find the specified key in user_numforms_t.
Definition hexrays.hpp:9184
void user_cmts_free(user_cmts_t *map)
Delete user_cmts_t instance.
Definition hexrays.hpp:9584
udcall_map_iterator_t udcall_map_insert(udcall_map_t *map, const ea_t &key, const udcall_t &val)
Insert new (ea_t, udcall_t) pair into udcall_map_t.
Definition hexrays.hpp:9411
const maymust_t INCLUDE_DEAD_RETREGS
Definition hexrays.hpp:497
size_t mbitmap_t
Definition hexrays.hpp:1782
const mopt_t mop_l
local variable
Definition hexrays.hpp:2376
user_iflags_iterator_t user_iflags_next(user_iflags_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9656
void hexapi remitem(const citem_t *e)
Definition hexrays.hpp:12183
const maymust_t CALL_SPOILS_ONLY_ARGS
Definition hexrays.hpp:500
void user_iflags_clear(user_iflags_t *map)
Clear user_iflags_t.
Definition hexrays.hpp:9679
const int64 HEXRAYS_API_MAGIC
Definition hexrays.hpp:7833
bool hexapi has_cached_cfunc(ea_t ea)
Do we have a cached decompilation result for 'ea'?
Definition hexrays.hpp:12965
udcall_map_iterator_t udcall_map_end(const udcall_map_t *map)
Get iterator pointing to the end of udcall_map_t.
Definition hexrays.hpp:9429
cexpr_t *hexapi lnot(cexpr_t *e)
Logically negate the specified expression.
Definition hexrays.hpp:12633
bool hexapi mark_cfunc_dirty(ea_t ea, bool close_views=false)
Flush the cached decompilation results.
Definition hexrays.hpp:12953
eamap_iterator_t eamap_prev(eamap_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9991
const cmt_type_t CMT_TAIL
Indented comment.
Definition hexrays.hpp:8149
boundaries_iterator_t boundaries_begin(const boundaries_t *map)
Get iterator pointing to the beginning of boundaries_t.
Definition hexrays.hpp:10074
bool is_additive(ctype_t op)
Is additive operator?
Definition hexrays.hpp:6083
vdui_t *hexapi open_pseudocode(ea_t ea, int flags)
Open pseudocode window.
Definition hexrays.hpp:12133
const tinfo_t const char va_list va
Definition hexrays.hpp:7301
intvec_t & user_unions_second(user_unions_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9722
int hexapi get_mreg_name(qstring *out, mreg_t reg, int width, void *ud=nullptr)
Get the microregister name.
Definition hexrays.hpp:11011
std::map< cinsn_t *, rangeset_t > boundaries_t
Definition hexrays.hpp:7455
void hexapi save_user_labels(ea_t func_ea, const user_labels_t *user_labels, const cfunc_t *func=nullptr)
Save user defined labels into the database.
Definition hexrays.hpp:12675
rangeset_t & boundaries_second(boundaries_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10049
ssize_t idaapi hexrays_cb_t(void *ud, hexrays_event_t event, va_list va)
Handler of decompiler events.
Definition hexrays.hpp:8073
qvector< ui_stroff_op_t > ui_stroff_ops_t
Definition hexrays.hpp:8478
cmt_retrieval_type_t
Comment retrieval type.
Definition hexrays.hpp:6277
@ RETRIEVE_ALWAYS
Retrieve comment even if it has been used.
Definition hexrays.hpp:6279
@ RETRIEVE_ONCE
Retrieve comment if it has not been used yet.
Definition hexrays.hpp:6278
uvlr_t max_vlr_svalue(int size)
Definition hexrays.hpp:330
bool hexapi modify_user_lvar_info(ea_t func_ea, uint mli_flags, const lvar_saved_info_t &info)
Modify saved local variable settings of one variable.
Definition hexrays.hpp:10642
size_t user_cmts_size(user_cmts_t *map)
Get size of user_cmts_t.
Definition hexrays.hpp:9577
user_numforms_iterator_t user_numforms_begin(const user_numforms_t *map)
Get iterator pointing to the beginning of user_numforms_t.
Definition hexrays.hpp:9202
void hexapi print_vdloc(qstring *vout, const vdloc_t &loc, int nbytes)
Print vdloc.
Definition hexrays.hpp:10546
void user_cmts_erase(user_cmts_t *map, user_cmts_iterator_t p)
Erase current element from user_cmts_t.
Definition hexrays.hpp:9563
eamap_iterator_t eamap_find(const eamap_t *map, const ea_t &key)
Find the specified key in eamap_t.
Definition hexrays.hpp:9947
bool op_uses_z(ctype_t op)
Does operator use the 'z' field of cexpr_t?
Definition hexrays.hpp:6056
THREAD_SAFE bool is_mcode_convertible_to_jmp(mcode_t mcode)
Definition hexrays.hpp:683
void hexapi clear_cached_cfuncs()
Flush all cached decompilation results.
Definition hexrays.hpp:12959
ea_t const & user_unions_first(user_unions_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9715
lvar_mapping_iterator_t lvar_mapping_end(const lvar_mapping_t *map)
Get iterator pointing to the end of lvar_mapping_t.
Definition hexrays.hpp:9320
lvar_locator_t & lvar_mapping_second(lvar_mapping_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9286
size_t udcall_map_size(udcall_map_t *map)
Get size of udcall_map_t.
Definition hexrays.hpp:9468
void hexapi save_user_iflags(ea_t func_ea, const user_iflags_t *iflags)
Save user defined citem iflags into the database.
Definition hexrays.hpp:12693
bool accepts_small_udts(ctype_t op)
Is the operator allowed on small structure or union?
Definition hexrays.hpp:6142
const minsn_t *hexapi getf_reginsn(const minsn_t *ins)
Skip assertions forward.
Definition hexrays.hpp:11617
udcall_map_iterator_t udcall_map_begin(const udcall_map_t *map)
Get iterator pointing to the beginning of udcall_map_t.
Definition hexrays.hpp:9420
const cmt_type_t CMT_LVAR
Local variable comment.
Definition hexrays.hpp:8152
user_numforms_iterator_t user_numforms_prev(user_numforms_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9228
std::map< ea_t, udcall_t > udcall_map_t
Definition hexrays.hpp:1694
bool hexapi change_hexrays_config(const char *directive)
Parse DIRECTIVE and update the current configuration variables.
Definition hexrays.hpp:12121
void block_chains_free(block_chains_t *set)
Delete block_chains_t instance.
Definition hexrays.hpp:10231
qvector< mop_t > mopvec_t
Definition hexrays.hpp:286
cfuncptr_t decompile_snippet(const rangevec_t &ranges, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a snippet.
Definition hexrays.hpp:7720
qvector< bitset_t > array_of_bitsets
Definition hexrays.hpp:1859
eamap_iterator_t eamap_next(eamap_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9983
udcall_map_iterator_t udcall_map_next(udcall_map_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9438
bool is_commutative(ctype_t op)
Is commutative operator?
Definition hexrays.hpp:6070
const maymust_t MAY_ACCESS
Definition hexrays.hpp:477
udcall_map_iterator_t udcall_map_prev(udcall_map_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9446
void user_numforms_erase(user_numforms_t *map, user_numforms_iterator_t p)
Erase current element from user_numforms_t.
Definition hexrays.hpp:9236
std::map< treeloc_t, citem_cmt_t > user_cmts_t
Definition hexrays.hpp:6292
const mlist_t &hexapi get_temp_regs()
Get list of temporary registers.
Definition hexrays.hpp:10987
void hexapi save_user_cmts(ea_t func_ea, const user_cmts_t *user_cmts)
Save user defined comments into the database.
Definition hexrays.hpp:12681
std::map< lvar_locator_t, lvar_locator_t > lvar_mapping_t
Local variable mapping (is used to merge variables)
Definition hexrays.hpp:1523
const tinfo_t const char va_start(va, format)
user_numforms_iterator_t user_numforms_next(user_numforms_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9220
eamap_iterator_t eamap_begin(const eamap_t *map)
Get iterator pointing to the beginning of eamap_t.
Definition hexrays.hpp:9965
ea_t hexapi get_merror_desc(qstring *out, merror_t code, mba_t *mba)
Get textual description of an error code.
Definition hexrays.hpp:10346
const mopt_t mop_b
micro basic block (mblock_t)
Definition hexrays.hpp:2374
std::set< voff_t > voff_set_t
Definition hexrays.hpp:265
block_chains_iterator_t block_chains_next(block_chains_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10194
mcode_t
Definition hexrays.hpp:573
@ m_stx
Definition hexrays.hpp:575
@ m_ofadd
Definition hexrays.hpp:600
@ m_setbe
Definition hexrays.hpp:611
@ m_fdiv
Definition hexrays.hpp:646
@ m_call
Definition hexrays.hpp:630
@ m_jbe
Definition hexrays.hpp:622
@ m_low
Definition hexrays.hpp:584
@ m_und
Definition hexrays.hpp:635
@ m_ldx
Definition hexrays.hpp:576
@ m_setb
Definition hexrays.hpp:609
@ m_bnot
Definition hexrays.hpp:581
@ m_and
Definition hexrays.hpp:594
@ m_push
Definition hexrays.hpp:633
@ m_xdu
Definition hexrays.hpp:583
@ m_fsub
Definition hexrays.hpp:644
@ m_setg
Definition hexrays.hpp:612
@ m_fadd
Definition hexrays.hpp:643
@ m_jae
Definition hexrays.hpp:619
@ m_i2f
Definition hexrays.hpp:639
@ m_sdiv
Definition hexrays.hpp:590
@ m_seta
Definition hexrays.hpp:610
@ m_cfadd
Definition hexrays.hpp:599
@ m_mul
Definition hexrays.hpp:588
@ m_ja
Definition hexrays.hpp:621
@ m_seto
Definition hexrays.hpp:604
@ m_jz
Definition hexrays.hpp:618
@ m_or
Definition hexrays.hpp:593
@ m_shl
Definition hexrays.hpp:596
@ m_setae
Definition hexrays.hpp:608
@ m_ldc
Definition hexrays.hpp:577
@ m_udiv
Definition hexrays.hpp:589
@ m_neg
Definition hexrays.hpp:579
@ m_setge
Definition hexrays.hpp:613
@ m_setnz
Definition hexrays.hpp:606
@ m_cfshr
Definition hexrays.hpp:602
@ m_setz
Definition hexrays.hpp:607
@ m_jle
Definition hexrays.hpp:626
@ m_jcnd
Definition hexrays.hpp:616
@ m_shr
Definition hexrays.hpp:597
@ m_setp
Definition hexrays.hpp:605
@ m_sar
Definition hexrays.hpp:598
@ m_fmul
Definition hexrays.hpp:645
@ m_ret
Definition hexrays.hpp:632
@ m_add
Definition hexrays.hpp:586
@ m_lnot
Definition hexrays.hpp:580
@ m_sets
Definition hexrays.hpp:603
@ m_cfshl
Definition hexrays.hpp:601
@ m_nop
Definition hexrays.hpp:574
@ m_smod
Definition hexrays.hpp:592
@ m_fneg
Definition hexrays.hpp:642
@ m_pop
Definition hexrays.hpp:634
@ m_setl
Definition hexrays.hpp:614
@ m_goto
Definition hexrays.hpp:629
@ m_setle
Definition hexrays.hpp:615
@ m_xor
Definition hexrays.hpp:595
@ m_jtbl
Definition hexrays.hpp:627
@ m_ext
Definition hexrays.hpp:636
@ m_icall
Definition hexrays.hpp:631
@ m_sub
Definition hexrays.hpp:587
@ m_jnz
Definition hexrays.hpp:617
@ m_umod
Definition hexrays.hpp:591
@ m_f2i
Definition hexrays.hpp:637
@ m_jb
Definition hexrays.hpp:620
@ m_f2f
Definition hexrays.hpp:641
@ m_ijmp
Definition hexrays.hpp:628
@ m_f2u
Definition hexrays.hpp:638
@ m_jge
Definition hexrays.hpp:624
@ m_u2f
Definition hexrays.hpp:640
@ m_jg
Definition hexrays.hpp:623
@ m_high
Definition hexrays.hpp:585
@ m_jl
Definition hexrays.hpp:625
@ m_mov
Definition hexrays.hpp:578
@ m_xds
Definition hexrays.hpp:582
const mopt_t mop_S
local stack variable (they exist until MMAT_LVARS)
Definition hexrays.hpp:2372
int32 & user_iflags_second(user_iflags_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9613
user_unions_t * user_unions_new()
Create a new user_unions_t instance.
Definition hexrays.hpp:9809
size_t boundaries_size(boundaries_t *map)
Get size of boundaries_t.
Definition hexrays.hpp:10122
void eamap_erase(eamap_t *map, eamap_iterator_t p)
Erase current element from eamap_t.
Definition hexrays.hpp:9999
const mopt_t mop_sc
scattered
Definition hexrays.hpp:2382
THREAD_SAFE mcode_t hexapi swap_mcode_relation(mcode_t code)
Definition hexrays.hpp:10372
const int NOSIZE
wrong or unexisting operand size
Definition hexrays.hpp:2384
bool hexapi get_current_operand(gco_info_t *out)
Get the instruction operand under the cursor.
Definition hexrays.hpp:12177
size_t eamap_size(eamap_t *map)
Get size of eamap_t.
Definition hexrays.hpp:10013
void block_chains_clear(block_chains_t *set)
Clear block_chains_t.
Definition hexrays.hpp:10217
chain_t & block_chains_get(block_chains_iterator_t p)
Get reference to the current set value.
Definition hexrays.hpp:10151
bool op_uses_y(ctype_t op)
Does operator use the 'y' field of cexpr_t?
Definition hexrays.hpp:6054
allow_unused_labels_t
Unused label disposition.
Definition hexrays.hpp:7267
@ ALLOW_UNUSED_LABELS
Unused labels are permitted.
Definition hexrays.hpp:7269
@ FORBID_UNUSED_LABELS
Unused labels cause interr.
Definition hexrays.hpp:7268
const size_t bitset_width
Definition hexrays.hpp:1783
user_labels_iterator_t user_labels_begin(const user_labels_t *map)
Get iterator pointing to the beginning of user_labels_t.
Definition hexrays.hpp:9856
THREAD_SAFE bool is_signed_mcode(mcode_t code)
Definition hexrays.hpp:764
int const & user_labels_first(user_labels_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9824
THREAD_SAFE bool is_mcode_commutative(mcode_t mcode)
Definition hexrays.hpp:691
const mreg_t mr_pf
Definition hexrays.hpp:785
qlist< cinsn_t > cinsn_list_t
Definition hexrays.hpp:6846
qstring hexapi create_field_name(const tinfo_t &type, uval_t offset=BADADDR)
Definition hexrays.hpp:12977
cexpr_t *hexapi dereference(cexpr_t *e, int ptrsize, bool is_flt=false)
Dereference a pointer.
Definition hexrays.hpp:12669
const mopt_t mop_z
none
Definition hexrays.hpp:2367
boundaries_iterator_t boundaries_prev(boundaries_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10100
lvar_mapping_iterator_t lvar_mapping_prev(lvar_mapping_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9337
const mreg_t mr_cf
Definition hexrays.hpp:781
const mopt_t mop_fn
floating point constant
Definition hexrays.hpp:2380
void *hexapi hexrays_alloc(size_t size)
Definition hexrays.hpp:10244
user_labels_iterator_t user_labels_find(const user_labels_t *map, const int &key)
Find the specified key in user_labels_t.
Definition hexrays.hpp:9838
bool is_lvalue(ctype_t op)
Is Lvalue operator?
Definition hexrays.hpp:6131
const mreg_t mr_zf
Definition hexrays.hpp:782
bool hexapi parse_user_call(udcall_t *udc, const char *decl, bool silent)
Convert function type declaration into internal structure.
Definition hexrays.hpp:10666
THREAD_SAFE bool hexapi is_mcode_propagatable(mcode_t mcode)
May opcode be propagated?
Definition hexrays.hpp:10360
user_labels_iterator_t user_labels_insert(user_labels_t *map, const int &key, const qstring &val)
Insert new (int, qstring) pair into user_labels_t.
Definition hexrays.hpp:9847
THREAD_SAFE bool is_mcode_shift(mcode_t mcode)
Definition hexrays.hpp:704
user_unions_iterator_t user_unions_end(const user_unions_t *map)
Get iterator pointing to the end of user_unions_t.
Definition hexrays.hpp:9756
cinsn_t *const & boundaries_first(boundaries_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10042
user_cmts_iterator_t user_cmts_begin(const user_cmts_t *map)
Get iterator pointing to the beginning of user_cmts_t.
Definition hexrays.hpp:9529
const cmt_type_t CMT_NONE
No comment is possible.
Definition hexrays.hpp:8148
cexpr_t *hexapi make_num(uint64 n, cfunc_t *func=nullptr, ea_t ea=BADADDR, int opnum=0, type_sign_t sign=no_sign, int size=0)
Create a number expression.
Definition hexrays.hpp:12657
const maymust_t INCLUDE_RESTRICTED
Definition hexrays.hpp:499
const char *hexapi get_ctype_name(ctype_t op)
Definition hexrays.hpp:12971
block_chains_iterator_t block_chains_find(const block_chains_t *set, const chain_t &val)
Find the specified key in set block_chains_t.
Definition hexrays.hpp:10158
user_cmts_iterator_t user_cmts_insert(user_cmts_t *map, const treeloc_t &key, const citem_cmt_t &val)
Insert new (treeloc_t, citem_cmt_t) pair into user_cmts_t.
Definition hexrays.hpp:9520
qvector< cfuncptr_t > cfuncptrs_t
Definition hexrays.hpp:7656
user_numforms_iterator_t user_numforms_insert(user_numforms_t *map, const operand_locator_t &key, const number_format_t &val)
Insert new (operand_locator_t, number_format_t) pair into user_numforms_t.
Definition hexrays.hpp:9193
THREAD_SAFE bool is_mcode_jcond(mcode_t mcode)
Definition hexrays.hpp:681
qstack< history_item_t > history_t
Navigation history.
Definition hexrays.hpp:8143
uint64 uvlr_t
Definition hexrays.hpp:310
void user_iflags_erase(user_iflags_t *map, user_iflags_iterator_t p)
Erase current element from user_iflags_t.
Definition hexrays.hpp:9672
const mopt_t mop_r
register (they exist until MMAT_LVARS)
Definition hexrays.hpp:2368
const maymust_t INCLUDE_SPOILED_REGS
Definition hexrays.hpp:484
qvector< citem_t * > citem_pointers_t
Vector of parents.
Definition hexrays.hpp:6196
cinsnptrvec_t & eamap_second(eamap_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9940
void boundaries_free(boundaries_t *map)
Delete boundaries_t instance.
Definition hexrays.hpp:10129
std::map< ea_t, intvec_t > user_unions_t
Definition hexrays.hpp:6315
eamap_iterator_t eamap_end(const eamap_t *map)
Get iterator pointing to the end of eamap_t.
Definition hexrays.hpp:9974
void udcall_map_clear(udcall_map_t *map)
Clear udcall_map_t.
Definition hexrays.hpp:9461
user_cmts_iterator_t user_cmts_next(user_cmts_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9547
bool hexapi modify_user_lvars(ea_t entry_ea, user_lvar_modifier_t &mlv)
Modify saved local variable settings.
Definition hexrays.hpp:10636
ea_t const & eamap_first(eamap_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9933
const mopt_t mop_a
mop_addr_t: address of operand (mop_l, mop_v, mop_S, mop_r)
Definition hexrays.hpp:2377
const cmt_type_t CMT_BLOCK1
Anterioir block comment.
Definition hexrays.hpp:8150
const mopt_t mop_str
immediate string constant (user representation)
Definition hexrays.hpp:2370
bool accepts_udts(ctype_t op)
Definition hexrays.hpp:6066
bool is_prepost(ctype_t op)
Is pre/post increment/decrement operator?
Definition hexrays.hpp:6068
uint8 mopt_t
Instruction operand types.
Definition hexrays.hpp:2365
void eamap_clear(eamap_t *map)
Clear eamap_t.
Definition hexrays.hpp:10006
gctype_t
Kind of use-def and def-use chains.
Definition hexrays.hpp:5471
@ GC_DIRTY_ALL
bitmask to represent all chains
Definition hexrays.hpp:5476
@ GC_ASR
all the above and assertions
Definition hexrays.hpp:5473
@ GC_END
number of chain types
Definition hexrays.hpp:5475
@ GC_REGS_AND_STKVARS
registers and stkvars (restricted memory only)
Definition hexrays.hpp:5472
@ GC_XDSU
only registers calculated with FULL_XDSU
Definition hexrays.hpp:5474
user_iflags_t *hexapi restore_user_iflags(ea_t func_ea)
Restore user defined citem iflags from the database.
Definition hexrays.hpp:12723
ctree_maturity_t
Ctree maturity level.
Definition hexrays.hpp:6202
@ CMAT_CPA
corrected pointer arithmetic
Definition hexrays.hpp:6208
@ CMAT_FINAL
ready-to-use
Definition hexrays.hpp:6211
@ CMAT_CASTED
added necessary casts
Definition hexrays.hpp:6210
@ CMAT_BUILT
just generated
Definition hexrays.hpp:6204
@ CMAT_NICE
nicefied expressions
Definition hexrays.hpp:6206
@ CMAT_TRANS2
applied second wave of transformations
Definition hexrays.hpp:6207
@ CMAT_TRANS3
applied third wave of transformations
Definition hexrays.hpp:6209
@ CMAT_TRANS1
applied first wave of transformations
Definition hexrays.hpp:6205
@ CMAT_ZERO
does not exist
Definition hexrays.hpp:6203
const mreg_t mr_first
Definition hexrays.hpp:788
DECLARE_TYPE_AS_MOVABLE(valrng_t)
bool is_loop(ctype_t op)
Is loop statement code?
Definition hexrays.hpp:6118
type_sign_t hexapi get_op_signness(ctype_t op)
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv.
Definition hexrays.hpp:12201
qvector< uint64 > uint64vec_t
Definition hexrays.hpp:287
user_unions_t *hexapi restore_user_unions(ea_t func_ea)
Restore user defined union field selections from the database.
Definition hexrays.hpp:12729
const maymust_t FULL_XDSU
Definition hexrays.hpp:488
qvector< block_chains_t > block_chains_vec_t
Graph chains.
Definition hexrays.hpp:3567
block_chains_iterator_t block_chains_insert(block_chains_t *set, const chain_t &val)
Insert new (chain_t) into set block_chains_t.
Definition hexrays.hpp:10167
uvlr_t min_vlr_svalue(int size)
Definition hexrays.hpp:324
cfuncptr_t hexapi create_cfunc(mba_t *mba)
Create a new cfunc_t object.
Definition hexrays.hpp:12947
ctype_t hexapi negated_relation(ctype_t op)
Negate a comparison operator. For example, cot_sge becomes cot_slt.
Definition hexrays.hpp:12189
THREAD_SAFE bool is_mcode_xdsu(mcode_t mcode)
Definition hexrays.hpp:673
THREAD_SAFE bool is_mcode_fpu(mcode_t mcode)
Definition hexrays.hpp:689
qvector< mreg_t > mregvec_t
Definition hexrays.hpp:288
user_numforms_iterator_t user_numforms_end(const user_numforms_t *map)
Get iterator pointing to the end of user_numforms_t.
Definition hexrays.hpp:9211
THREAD_SAFE mcode_t set2jcnd(mcode_t code)
Definition hexrays.hpp:723
int hexapi mreg2reg(mreg_t reg, int width)
Map a microregister to a processor register.
Definition hexrays.hpp:11005
const mopt_t mop_p
operand pair
Definition hexrays.hpp:2381
size_t user_iflags_size(user_iflags_t *map)
Get size of user_iflags_t.
Definition hexrays.hpp:9686
mreg_t hexapi reg2mreg(int reg)
Map a processor register to a microregister.
Definition hexrays.hpp:10999
@ MAX_VLR_SIZE
Definition hexrays.hpp:312
THREAD_SAFE bool is_mcode_addsub(mcode_t mcode)
Definition hexrays.hpp:671
qvector< catchexpr_t > catchexprs_t
Definition hexrays.hpp:6930
cexpr_t * e
Definition hexrays.hpp:7308
ctype_t hexapi swapped_relation(ctype_t op)
Swap a comparison operator. For example, cot_sge becomes cot_sle.
Definition hexrays.hpp:12195
int cmt_type_t
Comment types.
Definition hexrays.hpp:8146
qvector< mcallarg_t > mcallargs_t
Definition hexrays.hpp:3185
use_curly_t
Should curly braces be printed?
Definition hexrays.hpp:6665
@ USE_CURLY_BRACES
print curly braces without any checks
Definition hexrays.hpp:6668
@ CALC_CURLY_BRACES
print curly braces if necessary
Definition hexrays.hpp:6666
@ NO_CURLY_BRACES
don't print curly braces
Definition hexrays.hpp:6667
udcall_map_iterator_t udcall_map_find(const udcall_map_t *map, const ea_t &key)
Find the specified key in udcall_map_t.
Definition hexrays.hpp:9402
void user_numforms_clear(user_numforms_t *map)
Clear user_numforms_t.
Definition hexrays.hpp:9243
ctype_t
Ctree item code.
Definition hexrays.hpp:5950
@ cot_asgxor
x ^= y
Definition hexrays.hpp:5955
@ cot_call
x(...)
Definition hexrays.hpp:6008
@ cot_ule
x <= y unsigned
Definition hexrays.hpp:5978
@ cot_asgsdiv
x /= y signed
Definition hexrays.hpp:5963
@ cit_break
break-statement
Definition hexrays.hpp:6030
@ cot_cast
(type)x
Definition hexrays.hpp:5999
@ cot_sgt
x > y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5979
@ cit_throw
C++ throw-statement.
Definition hexrays.hpp:6036
@ cot_sdiv
x / y signed
Definition hexrays.hpp:5989
@ cit_do
do-statement
Definition hexrays.hpp:6028
@ cot_insn
instruction in expression, internal representation only
Definition hexrays.hpp:6017
@ cot_lor
x || y
Definition hexrays.hpp:5968
@ cot_tern
x ? y : z
Definition hexrays.hpp:5967
@ cot_asgbor
x |= y
Definition hexrays.hpp:5954
@ cit_block
block-statement: { ... }
Definition hexrays.hpp:6023
@ cit_continue
continue-statement
Definition hexrays.hpp:6031
@ cot_lnot
!x
Definition hexrays.hpp:6000
@ cot_last
Definition hexrays.hpp:6021
@ cot_asgshl
x <<= y
Definition hexrays.hpp:5962
@ cot_ptr
*x, access size in 'ptrsize'
Definition hexrays.hpp:6002
@ cot_preinc
++x
Definition hexrays.hpp:6006
@ cot_shl
x << y
Definition hexrays.hpp:5985
@ cot_obj
obj_ea
Definition hexrays.hpp:6015
@ cot_neg
-x
Definition hexrays.hpp:5998
@ cot_xor
x ^ y
Definition hexrays.hpp:5971
@ cot_add
x + y
Definition hexrays.hpp:5986
@ cot_sshr
x >> y signed
Definition hexrays.hpp:5983
@ cit_try
C++ try-statement.
Definition hexrays.hpp:6035
@ cot_asg
x = y
Definition hexrays.hpp:5953
@ cot_type
arbitrary type
Definition hexrays.hpp:6020
@ cot_sub
x - y
Definition hexrays.hpp:5987
@ cot_slt
x < y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5981
@ cot_mul
x * y
Definition hexrays.hpp:5988
@ cot_udiv
x / y unsigned
Definition hexrays.hpp:5990
@ cot_asgsshr
x >>= y signed
Definition hexrays.hpp:5960
@ cot_eq
x == y int or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5973
@ cit_return
return-statement
Definition hexrays.hpp:6032
@ cot_asgadd
x += y
Definition hexrays.hpp:5957
@ cot_ref
&x
Definition hexrays.hpp:6003
@ cot_ne
x != y int or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5974
@ cit_empty
instruction types start here
Definition hexrays.hpp:6022
@ cit_asm
asm-statement
Definition hexrays.hpp:6034
@ cot_predec
–x
Definition hexrays.hpp:6007
@ cot_asgmul
x *= y
Definition hexrays.hpp:5959
@ cot_helper
arbitrary name
Definition hexrays.hpp:6019
@ cot_fneg
-x fp
Definition hexrays.hpp:5997
@ cot_ult
x < y unsigned
Definition hexrays.hpp:5982
@ cot_uge
x >= y unsigned
Definition hexrays.hpp:5976
@ cot_fadd
x + y fp
Definition hexrays.hpp:5993
@ cot_asgushr
x >>= y unsigned
Definition hexrays.hpp:5961
@ cot_fnum
fpc
Definition hexrays.hpp:6013
@ cot_postdec
x–
Definition hexrays.hpp:6005
@ cot_memref
x.m
Definition hexrays.hpp:6010
@ cot_postinc
x++
Definition hexrays.hpp:6004
@ cot_sizeof
sizeof(x)
Definition hexrays.hpp:6018
@ cot_sle
x <= y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5977
@ cot_ushr
x >> y unsigned
Definition hexrays.hpp:5984
@ cot_fdiv
x / y fp
Definition hexrays.hpp:5996
@ cit_while
while-statement
Definition hexrays.hpp:6027
@ cot_fsub
x - y fp
Definition hexrays.hpp:5994
@ cot_str
string constant (user representation)
Definition hexrays.hpp:6014
@ cot_var
v
Definition hexrays.hpp:6016
@ cot_sge
x >= y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:5975
@ cit_goto
goto-statement
Definition hexrays.hpp:6033
@ cit_switch
switch-statement
Definition hexrays.hpp:6029
@ cot_asgband
x &= y
Definition hexrays.hpp:5956
@ cot_empty
Definition hexrays.hpp:5951
@ cot_asgsmod
x %= y signed
Definition hexrays.hpp:5965
@ cot_num
n
Definition hexrays.hpp:6012
@ cot_band
x & y
Definition hexrays.hpp:5972
@ cot_bnot
~x
Definition hexrays.hpp:6001
@ cot_comma
x, y
Definition hexrays.hpp:5952
@ cot_asgsub
x -= y
Definition hexrays.hpp:5958
@ cit_if
if-statement
Definition hexrays.hpp:6025
@ cot_smod
x % y signed
Definition hexrays.hpp:5991
@ cot_bor
x | y
Definition hexrays.hpp:5970
@ cot_umod
x % y unsigned
Definition hexrays.hpp:5992
@ cot_memptr
x->m, access size in 'ptrsize'
Definition hexrays.hpp:6011
@ cit_end
Definition hexrays.hpp:6037
@ cot_asgumod
x %= y unsigned
Definition hexrays.hpp:5966
@ cot_ugt
x > y unsigned
Definition hexrays.hpp:5980
@ cot_asgudiv
x /= y unsigned
Definition hexrays.hpp:5964
@ cot_idx
x[y]
Definition hexrays.hpp:6009
@ cot_fmul
x * y fp
Definition hexrays.hpp:5995
@ cit_expr
expression-statement: expr;
Definition hexrays.hpp:6024
@ cot_land
x && y
Definition hexrays.hpp:5969
@ cit_for
for-statement
Definition hexrays.hpp:6026
const tinfo_t & type
Definition hexrays.hpp:7301
lvar_mapping_iterator_t lvar_mapping_next(lvar_mapping_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9329
bool hexapi restore_user_lvar_settings(lvar_uservec_t *lvinf, ea_t func_ea)
Restore user defined local variable settings in the database.
Definition hexrays.hpp:10624
cfuncptr_t hexapi decompile(const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a snippet or a function.
Definition hexrays.hpp:12935
std::set< minsn_t * > minsn_ptr_set_t
Definition hexrays.hpp:282
funcrole_t
Function roles.
Definition hexrays.hpp:3191
@ ROLE_3WAYCMP1
3-way compare helper, returns 0/1/2
Definition hexrays.hpp:3225
@ ROLE_VA_COPY
va_copy() function
Definition hexrays.hpp:3216
@ ROLE_UNK
unknown function role
Definition hexrays.hpp:3192
@ ROLE_VA_ARG
va_arg() macro
Definition hexrays.hpp:3215
@ ROLE_BITTEST
[lock] bt
Definition hexrays.hpp:3211
@ ROLE_BUG
BUG() helper macro: never returns, causes exception.
Definition hexrays.hpp:3202
@ ROLE_SSE_CMP4
e.g. _mm_cmpgt_ss
Definition hexrays.hpp:3231
@ ROLE_EMPTY
empty, does not do anything (maybe spoils regs)
Definition hexrays.hpp:3193
@ ROLE_MEMSET64
memset64(void *dst, uint64 value, size_t count);
Definition hexrays.hpp:3196
@ ROLE_ALLOCA
alloca() function
Definition hexrays.hpp:3203
@ ROLE_WMEMCPY
wchar_t *wmemcpy(wchar_t *dst, const wchar_t *src, size_t n)
Definition hexrays.hpp:3226
@ ROLE_FASTFAIL
__fastfail()
Definition hexrays.hpp:3207
@ ROLE_SATURATED_MUL
saturated_mul
Definition hexrays.hpp:3210
@ ROLE_BITTESTANDSET
[lock] bts
Definition hexrays.hpp:3212
@ ROLE_WCSCPY
wchar_t *wcscpy(wchar_t *dst, const wchar_t *src);
Definition hexrays.hpp:3228
@ ROLE_SSE_CMP8
e.g. _mm_cmpgt_sd
Definition hexrays.hpp:3232
@ ROLE_STRCAT
strcat(char *dst, const char *src);
Definition hexrays.hpp:3200
@ ROLE_TAIL
char *tail(const char *str);
Definition hexrays.hpp:3201
@ ROLE_CFSUB3
carry flag after subtract with carry
Definition hexrays.hpp:3221
@ ROLE_READFLAGS
__readeflags, __readcallersflags
Definition hexrays.hpp:3208
@ ROLE_MEMCPY
memcpy(void *dst, const void *src, size_t count);
Definition hexrays.hpp:3197
@ ROLE_OFSUB3
overflow flag after subtract with carry
Definition hexrays.hpp:3222
@ ROLE_PRESENT
present() function (used in patterns)
Definition hexrays.hpp:3205
@ ROLE_BITTESTANDCOMPLEMENT
[lock] btc
Definition hexrays.hpp:3214
@ ROLE_ABS
integer absolute value
Definition hexrays.hpp:3223
@ ROLE_VA_START
va_start() function
Definition hexrays.hpp:3217
@ ROLE_STRLEN
strlen(const char *src);
Definition hexrays.hpp:3199
@ ROLE_STRCPY
strcpy(char *dst, const char *src);
Definition hexrays.hpp:3198
@ ROLE_WCSLEN
size_t wcslen(const wchar_t *s)
Definition hexrays.hpp:3229
@ ROLE_ROR
rotate right
Definition hexrays.hpp:3220
@ ROLE_MEMSET
memset(void *dst, uchar value, size_t count);
Definition hexrays.hpp:3194
@ ROLE_IS_MUL_OK
is_mul_ok
Definition hexrays.hpp:3209
@ ROLE_VA_END
va_end() function
Definition hexrays.hpp:3218
@ ROLE_WMEMSET
wchar_t *wmemset(wchar_t *dst, wchar_t wc, size_t n)
Definition hexrays.hpp:3227
@ ROLE_CONTAINING_RECORD
CONTAINING_RECORD() macro.
Definition hexrays.hpp:3206
@ ROLE_BITTESTANDRESET
[lock] btr
Definition hexrays.hpp:3213
@ ROLE_MEMSET32
memset32(void *dst, uint32 value, size_t count);
Definition hexrays.hpp:3195
@ ROLE_BSWAP
bswap() function (any size)
Definition hexrays.hpp:3204
@ ROLE_ROL
rotate left
Definition hexrays.hpp:3219
@ ROLE_WCSCAT
wchar_t *wcscat(wchar_t *dst, const wchar_t *src)
Definition hexrays.hpp:3230
@ ROLE_3WAYCMP0
3-way compare helper, returns -1/0/1
Definition hexrays.hpp:3224
bool hexapi remove_optblock_handler(optblock_t *opt)
Remove a block level custom optimizer.
Definition hexrays.hpp:11036
user_labels_t * user_labels_new()
Create a new user_labels_t instance.
Definition hexrays.hpp:9918
user_labels_iterator_t user_labels_end(const user_labels_t *map)
Get iterator pointing to the end of user_labels_t.
Definition hexrays.hpp:9865
bool hexapi close_pseudocode(TWidget *f)
Close pseudocode window.
Definition hexrays.hpp:12139
void hexapi close_hexrays_waitbox()
Close the waitbox displayed by the decompiler.
Definition hexrays.hpp:12929
bool hexapi install_hexrays_callback(hexrays_cb_t *callback, void *ud)
Install handler for decompiler events.
Definition hexrays.hpp:12985
user_iflags_t * user_iflags_new()
Create a new user_iflags_t instance.
Definition hexrays.hpp:9700
void boundaries_clear(boundaries_t *map)
Clear boundaries_t.
Definition hexrays.hpp:10115
const mopt_t mop_n
immediate number constant
Definition hexrays.hpp:2369
const maymust_t INCLUDE_UNUSED_SRC
Definition hexrays.hpp:495
user_numforms_t * user_numforms_new()
Create a new user_numforms_t instance.
Definition hexrays.hpp:9264
mba_t * create_empty_mba(const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr)
Create an empty microcode object.
Definition hexrays.hpp:7746
user_unions_iterator_t user_unions_find(const user_unions_t *map, const ea_t &key)
Find the specified key in user_unions_t.
Definition hexrays.hpp:9729
hexcall_t
API call numbers.
Definition hexrays.hpp:8515
@ hx_user_numforms_end
Definition hexrays.hpp:8517
@ hx_save_user_numforms
Definition hexrays.hpp:9042
@ hx_cexpr_t_requires_lvalue
Definition hexrays.hpp:8992
@ hx_user_labels_first
Definition hexrays.hpp:8598
@ hx_user_unions_free
Definition hexrays.hpp:8592
@ hx_mblock_t_vdump_block
Definition hexrays.hpp:8879
@ hx_simple_graph_t_compute_immediate_dominators
Definition hexrays.hpp:8776
@ hx_vdui_t_map_lvar
Definition hexrays.hpp:9111
@ hx_mba_t_alloc_kreg
Definition hexrays.hpp:8938
@ hx_valrng_t_assign
Definition hexrays.hpp:8649
@ hx_mop_t_create_from_insn
Definition hexrays.hpp:8799
@ hx_block_chains_prev
Definition hexrays.hpp:8636
@ hx_cnumber_t_assign
Definition hexrays.hpp:8968
@ hx_lvar_t_dstr
Definition hexrays.hpp:8696
@ hx_cfunc_t_set_user_union_selection
Definition hexrays.hpp:9066
@ hx_lvar_ref_t_var
Definition hexrays.hpp:8784
@ hx_vdui_t_set_lvar_type
Definition hexrays.hpp:9105
@ hx_vdui_t_clear
Definition hexrays.hpp:9098
@ hx_getf_reginsn
Definition hexrays.hpp:8874
@ hx_cthrow_t_compare
Definition hexrays.hpp:9003
@ hx_mba_t_alloc_fict_ea
Definition hexrays.hpp:8933
@ hx_valrng_t_set_eq
Definition hexrays.hpp:8651
@ hx_has_cached_cfunc
Definition hexrays.hpp:9087
@ hx_restore_user_labels
Definition hexrays.hpp:9045
@ hx_udcall_map_begin
Definition hexrays.hpp:8542
@ hx_mark_cfunc_dirty
Definition hexrays.hpp:9085
@ hx_user_labels_second
Definition hexrays.hpp:8599
@ hx_ivlset_t_count
Definition hexrays.hpp:8754
@ hx_user_labels_begin
Definition hexrays.hpp:8594
@ hx_lvar_mapping_end
Definition hexrays.hpp:8530
@ hx_lvar_locator_t_compare
Definition hexrays.hpp:8694
@ hx_eamap_find
Definition hexrays.hpp:8613
@ hx_user_numforms_begin
Definition hexrays.hpp:8516
@ hx_bitset_t_is_subset_of
Definition hexrays.hpp:8741
@ hx_mba_t_map_fict_ea
Definition hexrays.hpp:8934
@ hx_mop_t_make_second_half
Definition hexrays.hpp:8820
@ hx_cfunc_t_save_user_iflags
Definition hexrays.hpp:9070
@ hx_valrng_t_copy
Definition hexrays.hpp:8648
@ hx_get_merror_desc
Definition hexrays.hpp:8662
@ hx_cexpr_t_get_high_nbit_bound
Definition hexrays.hpp:8990
@ hx_mblock_t_optimize_insn
Definition hexrays.hpp:8885
@ hx_cinsn_t_new_insn
Definition hexrays.hpp:9010
@ hx_cfunc_t_del_orphan_cmts
Definition hexrays.hpp:9064
@ hx_remove_optblock_handler
Definition hexrays.hpp:8774
@ hx_cfunc_t_build_c_tree
Definition hexrays.hpp:9050
@ hx_valrng_t_compare
Definition hexrays.hpp:8650
@ hx_mba_t_stkoff_ida2vd
Definition hexrays.hpp:8902
@ hx_send_database
Definition hexrays.hpp:8957
@ hx_bitset_t_add_
Definition hexrays.hpp:8722
@ hx_boundaries_free
Definition hexrays.hpp:8631
@ hx_mop_t_is_zero_extended_from
Definition hexrays.hpp:8810
@ hx_locate_lvar
Definition hexrays.hpp:8710
@ hx_mbl_graph_t_get_du
Definition hexrays.hpp:8945
@ hx_ctree_item_t_get_lvar
Definition hexrays.hpp:9028
@ hx_create_typedef
Definition hexrays.hpp:8686
@ hx_boundaries_clear
Definition hexrays.hpp:8629
@ hx_cexpr_t_replace_by
Definition hexrays.hpp:8982
@ hx_mop_t_lexcompare
Definition hexrays.hpp:8812
@ hx_cfor_t_compare
Definition hexrays.hpp:8999
@ hx_mcases_t_compare
Definition hexrays.hpp:8833
@ hx_eamap_next
Definition hexrays.hpp:8609
@ hx_minsn_t_swap
Definition hexrays.hpp:8852
@ hx_mop_t_create_from_ivlset
Definition hexrays.hpp:8796
@ hx_cexpr_t_contains_operator
Definition hexrays.hpp:8989
@ hx_save_user_lvar_settings
Definition hexrays.hpp:8707
@ hx_is_small_udt
Definition hexrays.hpp:8676
@ hx_cfunc_t_get_user_iflags
Definition hexrays.hpp:9061
@ hx_eamap_second
Definition hexrays.hpp:8612
@ hx_dummy_ptrtype
Definition hexrays.hpp:8683
@ hx_boundaries_begin
Definition hexrays.hpp:8620
@ hx_mba_t_insert_block
Definition hexrays.hpp:8921
@ hx_vdui_t_set_global_type
Definition hexrays.hpp:9114
@ hx_user_iflags_find
Definition hexrays.hpp:8574
@ hx_user_labels_new
Definition hexrays.hpp:8606
@ hx_minsn_t_find_call
Definition hexrays.hpp:8864
@ hx_cfunc_t_remove_unused_labels
Definition hexrays.hpp:9058
@ hx_user_cmts_erase
Definition hexrays.hpp:8563
@ hx_vdloc_t_dstr
Definition hexrays.hpp:8689
@ hx_get_signed_mcode
Definition hexrays.hpp:8667
@ hx_user_cmts_end
Definition hexrays.hpp:8556
@ hx_cinsn_t_contains_insn
Definition hexrays.hpp:9015
@ hx_decompile
Definition hexrays.hpp:9082
@ hx_mba_t_remove_empty_and_unreachable_blocks
Definition hexrays.hpp:8924
@ hx_mop_t_for_all_scattered_submops
Definition hexrays.hpp:8814
@ hx_mop_t_erase
Definition hexrays.hpp:8792
@ hx_ivlset_t_contains
Definition hexrays.hpp:8756
@ hx_lvar_t_append_list_
Definition hexrays.hpp:8702
@ hx_lvar_t_set_lvar_type
Definition hexrays.hpp:8699
@ hx_vdui_t_jump_enter
Definition hexrays.hpp:9117
@ hx_mop_t_make_number
Definition hexrays.hpp:8800
@ hx_mba_t_deserialize
Definition hexrays.hpp:8936
@ hx_mblock_t_append_def_list
Definition hexrays.hpp:8890
@ hx_catchexpr_t_compare
Definition hexrays.hpp:9132
@ hx_user_iflags_first
Definition hexrays.hpp:8572
@ hx_asgop_revert
Definition hexrays.hpp:8965
@ hx_cfunc_t_find_item_coords
Definition hexrays.hpp:9079
@ hx_mop_t_make_first_half
Definition hexrays.hpp:8819
@ hx_user_iflags_size
Definition hexrays.hpp:8578
@ hx_cfunc_t_save_user_unions
Definition hexrays.hpp:9071
@ hx_new_block
Definition hexrays.hpp:9034
@ hx_udcall_map_erase
Definition hexrays.hpp:8550
@ hx_vdui_t_rename_label
Definition hexrays.hpp:9116
@ hx_ctree_item_t_dstr
Definition hexrays.hpp:9032
@ hx_boundaries_prev
Definition hexrays.hpp:8623
@ hx_lvar_mapping_free
Definition hexrays.hpp:8540
@ hx_bitset_t_has_any
Definition hexrays.hpp:8731
@ hx_decompile_many
Definition hexrays.hpp:8955
@ hx_user_cmts_next
Definition hexrays.hpp:8557
@ hx_ctree_item_t_get_ea
Definition hexrays.hpp:9029
@ hx_mop_t_apply_ld_mcode
Definition hexrays.hpp:8824
@ hx_lvar_mapping_clear
Definition hexrays.hpp:8538
@ hx_gco_info_t_append_to_list
Definition hexrays.hpp:8958
@ hx_parse_user_call
Definition hexrays.hpp:8713
@ hx_minsn_t_may_use_aliased_memory
Definition hexrays.hpp:8871
@ hx_chain_t_dstr
Definition hexrays.hpp:8841
@ hx_mba_t_build_graph
Definition hexrays.hpp:8911
@ hx_lvar_mapping_second
Definition hexrays.hpp:8534
@ hx_vdui_t_set_num_enum
Definition hexrays.hpp:9124
@ hx_cinsn_t_print
Definition hexrays.hpp:9012
@ hx_restore_user_numforms
Definition hexrays.hpp:9047
@ hx_lvar_locator_t_dstr
Definition hexrays.hpp:8695
@ hx_mop_t_create_from_vdloc
Definition hexrays.hpp:8797
@ hx_user_cmts_find
Definition hexrays.hpp:8561
@ hx_mblock_t_find_redefinition
Definition hexrays.hpp:8894
@ hx_mblock_t_optimize_block
Definition hexrays.hpp:8886
@ hx_user_cmts_first
Definition hexrays.hpp:8559
@ hx_user_numforms_free
Definition hexrays.hpp:8527
@ hx_mbl_graph_t_get_ud
Definition hexrays.hpp:8944
@ hx_mop_t_swap
Definition hexrays.hpp:8791
@ hx_udcall_map_clear
Definition hexrays.hpp:8551
@ hx_vdui_t_ui_set_call_type
Definition hexrays.hpp:9103
@ hx_user_labels_size
Definition hexrays.hpp:8604
@ hx_get_hexrays_version
Definition hexrays.hpp:8951
@ hx_vdui_t_rename_lvar
Definition hexrays.hpp:9102
@ hx_mba_t_stkoff_vd2ida
Definition hexrays.hpp:8901
@ hx_lvar_t_append_list
Definition hexrays.hpp:8701
@ hx_minsn_t_is_helper
Definition hexrays.hpp:8863
@ hx_cfunc_t_get_warnings
Definition hexrays.hpp:9073
@ hx_mreg2reg
Definition hexrays.hpp:8769
@ hx_save_user_iflags
Definition hexrays.hpp:9043
@ hx_user_unions_size
Definition hexrays.hpp:8591
@ hx_lvar_mapping_new
Definition hexrays.hpp:8541
@ hx_get_current_operand
Definition hexrays.hpp:8959
@ hx_mba_t_for_all_ops
Definition hexrays.hpp:8926
@ hx_bitset_t_count
Definition hexrays.hpp:8734
@ hx_eamap_end
Definition hexrays.hpp:8608
@ hx_bitset_t_has_common
Definition hexrays.hpp:8739
@ hx_user_cmts_free
Definition hexrays.hpp:8566
@ hx_cfunc_t_save_user_numforms
Definition hexrays.hpp:9069
@ hx_vdui_t_set_lvar_cmt
Definition hexrays.hpp:9108
@ hx_user_numforms_second
Definition hexrays.hpp:8521
@ hx_vdui_t_collapse_lvars
Definition hexrays.hpp:9129
@ hx_user_iflags_next
Definition hexrays.hpp:8570
@ hx_mblock_t_insert_into_block
Definition hexrays.hpp:8880
@ hx_vdui_t_set_locked
Definition hexrays.hpp:9092
@ hx_boundaries_erase
Definition hexrays.hpp:8628
@ hx_hexrays_free
Definition hexrays.hpp:8646
@ hx_ctree_parentee_t_recalc_parent_types
Definition hexrays.hpp:8973
@ hx_user_labels_find
Definition hexrays.hpp:8600
@ hx_mblock_t_build_use_list
Definition hexrays.hpp:8891
@ hx_user_cmts_clear
Definition hexrays.hpp:8564
@ hx_mblock_t_optimize_useless_jump
Definition hexrays.hpp:8888
@ hx_vdui_t_ui_set_lvar_type
Definition hexrays.hpp:9104
@ hx_bitset_t_goup
Definition hexrays.hpp:8743
@ hx_mop_t_is01
Definition hexrays.hpp:8808
@ hx_minsn_t_copy
Definition hexrays.hpp:8850
@ hx_cif_t_compare
Definition hexrays.hpp:8997
@ hx_mblock_t_get_valranges
Definition hexrays.hpp:8897
@ hx_cexpr_t_maybe_ptr
Definition hexrays.hpp:8994
@ hx_vdui_t_ctree_to_disasm
Definition hexrays.hpp:9118
@ hx_valrng_t_cvt_to_single_value
Definition hexrays.hpp:8660
@ hx_set_type
Definition hexrays.hpp:8688
@ hx_mba_t_locate_stkpnt
Definition hexrays.hpp:8941
@ hx_save_user_cmts
Definition hexrays.hpp:9041
@ hx_cfunc_t_get_boundaries
Definition hexrays.hpp:9075
@ hx_vdui_t_split_item
Definition hexrays.hpp:9130
@ hx_mop_t_preserve_side_effects
Definition hexrays.hpp:8823
@ hx_cfunc_t_recalc_item_addresses
Definition hexrays.hpp:9135
@ hx_create_field_name
Definition hexrays.hpp:9089
@ hx_cinsn_t_create_if
Definition hexrays.hpp:9011
@ hx_cexpr_t_assign
Definition hexrays.hpp:8980
@ hx_vdui_t_collapse_item
Definition hexrays.hpp:9128
@ hx_mblock_t_is_rhs_redefined
Definition hexrays.hpp:8895
@ hx_mcallinfo_t_lexcompare
Definition hexrays.hpp:8828
@ hx_mba_t_find_mop
Definition hexrays.hpp:8929
@ hx_get_type
Definition hexrays.hpp:8687
@ hx_vdui_t_switch_to
Definition hexrays.hpp:9095
@ hx_ivlset_t_includes
Definition hexrays.hpp:8757
@ hx_simple_graph_t_depth_first_preorder
Definition hexrays.hpp:8777
@ hx_cexpr_t_calc_type
Definition hexrays.hpp:8986
@ hx_eamap_insert
Definition hexrays.hpp:8614
@ hx_cnumber_t_value
Definition hexrays.hpp:8967
@ hx_get_mreg_name
Definition hexrays.hpp:8770
@ hx_mba_t_alloc_lvars
Definition hexrays.hpp:8915
@ hx_cnumber_t_compare
Definition hexrays.hpp:8969
@ hx_cinsn_t_collect_free_breaks
Definition hexrays.hpp:9016
@ hx_valrng_t_dstr
Definition hexrays.hpp:8659
@ hx_lvars_t_find_lvar
Definition hexrays.hpp:8705
@ hx_install_optblock_handler
Definition hexrays.hpp:8773
@ hx_vdui_t_rename_global
Definition hexrays.hpp:9115
@ hx_restore_user_defined_calls
Definition hexrays.hpp:8711
@ hx_get_unsigned_mcode
Definition hexrays.hpp:8668
@ hx_vdui_t_refresh_cpos
Definition hexrays.hpp:9099
@ hx_swapped_relation
Definition hexrays.hpp:8962
@ hx_vdui_t_get_current_item
Definition hexrays.hpp:9100
@ hx_cfunc_t_get_user_union_selection
Definition hexrays.hpp:9065
@ hx_get_int_type_by_width_and_sign
Definition hexrays.hpp:8681
@ hx_mop_t_get_stkoff
Definition hexrays.hpp:8816
@ hx_user_labels_clear
Definition hexrays.hpp:8603
@ hx_user_iflags_erase
Definition hexrays.hpp:8576
@ hx_cinsn_t_assign
Definition hexrays.hpp:9006
@ hx_get_temp_regs
Definition hexrays.hpp:8766
@ hx_block_chains_erase
Definition hexrays.hpp:8640
@ hx_ivlset_t_print
Definition hexrays.hpp:8752
@ hx_eamap_clear
Definition hexrays.hpp:8616
@ hx_mba_t_term
Definition hexrays.hpp:8907
@ hx_cexpr_t_print1
Definition hexrays.hpp:8985
@ hx_ivlset_t_sub_
Definition hexrays.hpp:8750
@ hx_lvar_mapping_insert
Definition hexrays.hpp:8536
@ hx_udc_filter_t_init
Definition hexrays.hpp:8717
@ hx_user_unions_end
Definition hexrays.hpp:8582
@ hx_install_microcode_filter
Definition hexrays.hpp:8715
@ hx_make_num
Definition hexrays.hpp:9037
@ hx_modify_user_lvar_info
Definition hexrays.hpp:8709
@ hx_mblock_t_dump
Definition hexrays.hpp:8878
@ hx_mblock_t_get_reginsn_qty
Definition hexrays.hpp:8899
@ hx_udcall_map_free
Definition hexrays.hpp:8553
@ hx_cdo_t_compare
Definition hexrays.hpp:9001
@ hx_udcall_map_insert
Definition hexrays.hpp:8549
@ hx_mblock_t_find_first_use
Definition hexrays.hpp:8893
@ hx_mba_t_idaloc2vd
Definition hexrays.hpp:8903
@ hx_mlist_t_compare
Definition hexrays.hpp:8765
@ hx_mcallinfo_t_set_type
Definition hexrays.hpp:8829
@ hx_mba_t_optimize_global
Definition hexrays.hpp:8914
@ hx_vdui_t_set_num_radix
Definition hexrays.hpp:9123
@ hx_mba_t_merge_blocks
Definition hexrays.hpp:8925
@ hx_mba_t_analyze_calls
Definition hexrays.hpp:8913
@ hx_bitset_t_fill_with_ones
Definition hexrays.hpp:8737
@ hx_cfunc_t_verify
Definition hexrays.hpp:9051
@ hx_minsn_t_set_combined
Definition hexrays.hpp:8851
@ hx_user_numforms_prev
Definition hexrays.hpp:8519
@ hx_mutable_graph_t_resize
Definition hexrays.hpp:8780
@ hx_minsn_t_serialize
Definition hexrays.hpp:8872
@ hx_mblock_t_for_all_insns
Definition hexrays.hpp:8882
@ hx_install_optinsn_handler
Definition hexrays.hpp:8771
@ hx_mop_t_copy
Definition hexrays.hpp:8789
@ hx_ctree_item_t_get_udm
Definition hexrays.hpp:9026
@ hx_boundaries_size
Definition hexrays.hpp:8630
@ hx_select_udt_by_offset
Definition hexrays.hpp:9131
@ hx_ctree_item_t_print
Definition hexrays.hpp:9031
@ hx_hexrays_failure_t_desc
Definition hexrays.hpp:8956
@ hx_block_chains_get
Definition hexrays.hpp:8637
@ hx_user_labels_end
Definition hexrays.hpp:8595
@ hx_cfunc_t_gather_derefs
Definition hexrays.hpp:9078
@ hx_lvars_t_find
Definition hexrays.hpp:8704
@ hx_remove_hexrays_callback
Definition hexrays.hpp:9091
@ hx_mop_t_assign
Definition hexrays.hpp:8790
@ hx_int64_emulator_t_minsn_value
Definition hexrays.hpp:9137
@ hx_user_cmts_insert
Definition hexrays.hpp:8562
@ hx_bitset_t_cut_at
Definition hexrays.hpp:8727
@ hx_cwhile_t_compare
Definition hexrays.hpp:9000
@ hx_cexpr_t_put_number
Definition hexrays.hpp:8984
@ hx_cexpr_t_compare
Definition hexrays.hpp:8981
@ hx_graph_chains_t_for_all_chains
Definition hexrays.hpp:8847
@ hx_user_iflags_free
Definition hexrays.hpp:8579
@ hx_user_iflags_prev
Definition hexrays.hpp:8571
@ hx_mba_t_create_helper_call
Definition hexrays.hpp:8930
@ hx_user_cmts_new
Definition hexrays.hpp:8567
@ hx_simple_graph_t_depth_first_postorder
Definition hexrays.hpp:8778
@ hx_vcall_helper
Definition hexrays.hpp:9036
@ hx_make_pointer
Definition hexrays.hpp:8685
@ hx_ivlset_t_sub
Definition hexrays.hpp:8749
@ hx_mutable_graph_t_del_edge
Definition hexrays.hpp:8782
@ hx_bitset_t_sub__
Definition hexrays.hpp:8726
@ hx_udc_filter_t_apply
Definition hexrays.hpp:8718
@ hx_bitset_t_intersect
Definition hexrays.hpp:8740
@ hx_block_chains_insert
Definition hexrays.hpp:8639
@ hx_negated_relation
Definition hexrays.hpp:8961
@ hx_user_unions_begin
Definition hexrays.hpp:8581
@ hx_cfunc_t_get_lvars
Definition hexrays.hpp:9055
@ hx_user_iflags_second
Definition hexrays.hpp:8573
@ hx_eamap_begin
Definition hexrays.hpp:8607
@ hx_vdui_t_ui_edit_lvar_cmt
Definition hexrays.hpp:9107
@ hx_cinsn_t_replace_by
Definition hexrays.hpp:9008
@ hx_boundaries_find
Definition hexrays.hpp:8626
@ hx_bitset_t_count_
Definition hexrays.hpp:8735
@ hx_bitset_t_has
Definition hexrays.hpp:8729
@ hx_fnumber_t_print
Definition hexrays.hpp:8787
@ hx_get_float_type
Definition hexrays.hpp:8680
@ hx_bitset_t_add
Definition hexrays.hpp:8721
@ hx_cfunc_t_cleanup
Definition hexrays.hpp:9080
@ hx_bitset_t_sub_
Definition hexrays.hpp:8725
@ hx_user_unions_new
Definition hexrays.hpp:8593
@ hx_user_iflags_end
Definition hexrays.hpp:8569
@ hx_minsn_t__make_nop
Definition hexrays.hpp:8859
@ hx_cdg_insn_iterator_t_next
Definition hexrays.hpp:8946
@ hx_user_unions_prev
Definition hexrays.hpp:8584
@ hx_mop_t_make_high_half
Definition hexrays.hpp:8818
@ hx_mba_t_dump
Definition hexrays.hpp:8916
@ hx_codegen_t_clear
Definition hexrays.hpp:8947
@ hx_simple_graph_t_goup
Definition hexrays.hpp:8779
@ hx_ivlset_t_has_common_
Definition hexrays.hpp:8755
@ hx_cgoto_t_compare
Definition hexrays.hpp:9004
@ hx_mop_t_change_size
Definition hexrays.hpp:8822
@ hx_ivlset_t_has_common
Definition hexrays.hpp:8751
@ hx_block_chains_clear
Definition hexrays.hpp:8641
@ hx_vdui_t_set_num_stroff
Definition hexrays.hpp:9125
@ hx_mlist_t_addmem
Definition hexrays.hpp:8762
@ hx_ccase_t_compare
Definition hexrays.hpp:9021
@ hx_ivlset_t_addmasked
Definition hexrays.hpp:8748
@ hx_getb_reginsn
Definition hexrays.hpp:8875
@ hx_vivl_t_print
Definition hexrays.hpp:8838
@ hx_mblock_t_remove_from_block
Definition hexrays.hpp:8881
@ hx_cfunc_t_get_line_item
Definition hexrays.hpp:9072
@ hx_mba_t_save_snapshot
Definition hexrays.hpp:8937
@ hx_vcreate_helper
Definition hexrays.hpp:9035
@ hx_eamap_size
Definition hexrays.hpp:8617
@ hx_mblock_t_for_all_ops
Definition hexrays.hpp:8883
@ hx_udc_filter_t_cleanup
Definition hexrays.hpp:8716
@ hx_minsn_t_setaddr
Definition hexrays.hpp:8855
@ hx_citem_t_find_closest_addr
Definition hexrays.hpp:8979
@ hx_mop_t_dstr
Definition hexrays.hpp:8794
@ hx_mop_t_is_constant
Definition hexrays.hpp:8815
@ hx_codegen_t_emit
Definition hexrays.hpp:8948
@ hx_mop_t_make_helper
Definition hexrays.hpp:8805
@ hx_user_cmts_begin
Definition hexrays.hpp:8555
@ hx_bitset_t_bitset_t
Definition hexrays.hpp:8719
@ hx_create_cfunc
Definition hexrays.hpp:9084
@ hx_cfunc_t_refresh_func_ctext
Definition hexrays.hpp:9077
@ hx_vivl_t_intersect
Definition hexrays.hpp:8837
@ hx_mop_t_make_gvar
Definition hexrays.hpp:8803
@ hx_mba_t_for_all_insns
Definition hexrays.hpp:8927
@ hx_close_pseudocode
Definition hexrays.hpp:8953
@ hx_cfunc_t_get_eamap
Definition hexrays.hpp:9074
@ hx_mcases_t_dstr
Definition hexrays.hpp:8835
@ hx_lvar_t_is_promoted_arg
Definition hexrays.hpp:8697
@ hx_restore_user_unions
Definition hexrays.hpp:9049
@ hx_mop_t_equal_mops
Definition hexrays.hpp:8811
@ hx_block_chains_find
Definition hexrays.hpp:8638
@ hx_mcallarg_t_print
Definition hexrays.hpp:8825
@ hx_minsn_t_deserialize
Definition hexrays.hpp:8873
@ hx_mbl_graph_t_is_accessed_globally
Definition hexrays.hpp:8943
@ hx_user_labels_insert
Definition hexrays.hpp:8601
@ hx_operand_locator_t_compare
Definition hexrays.hpp:8670
@ hx_valrng_t_intersect_with
Definition hexrays.hpp:8654
@ hx_qstring_printer_t_print
Definition hexrays.hpp:8673
@ hx_ctry_t_compare
Definition hexrays.hpp:9025
@ hx_mblock_t_get_valranges_
Definition hexrays.hpp:8898
@ hx_mblock_t_build_lists
Definition hexrays.hpp:8887
@ hx_cinsn_t_print1
Definition hexrays.hpp:9013
@ hx_ivlset_t_compare
Definition hexrays.hpp:8759
@ hx_cexpr_t_has_side_effects
Definition hexrays.hpp:8993
@ hx_restore_user_lvar_settings
Definition hexrays.hpp:8706
@ hx_minsn_t_for_all_ops
Definition hexrays.hpp:8857
@ hx_mba_t_inline_func
Definition hexrays.hpp:8940
@ hx_valrng_t_clear
Definition hexrays.hpp:8647
@ hx_minsn_t_print
Definition hexrays.hpp:8853
@ hx_mba_t_idaloc2vd_
Definition hexrays.hpp:8904
@ hx_vdui_t_get_number
Definition hexrays.hpp:9096
@ hx_remitem
Definition hexrays.hpp:8960
@ hx_user_numforms_insert
Definition hexrays.hpp:8523
@ hx_mba_t_remove_block
Definition hexrays.hpp:8922
@ hx_cfunc_t_save_user_cmts
Definition hexrays.hpp:9068
@ hx_cexpr_t_dstr
Definition hexrays.hpp:8995
@ hx_bitset_t_shift_down
Definition hexrays.hpp:8728
@ hx_dstr
Definition hexrays.hpp:8674
@ hx_ctree_visitor_t_apply_to_exprs
Definition hexrays.hpp:8972
@ hx_user_iflags_clear
Definition hexrays.hpp:8577
@ hx_cblock_t_compare
Definition hexrays.hpp:9019
@ hx_print_vdloc
Definition hexrays.hpp:8692
@ hx_remove_optinsn_handler
Definition hexrays.hpp:8772
@ hx_mba_t_get_func_output_lists
Definition hexrays.hpp:8931
@ hx_minsn_t_modifies_d
Definition hexrays.hpp:8869
@ hx_cfunc_t_get_stkoff_delta
Definition hexrays.hpp:9056
@ hx_eamap_prev
Definition hexrays.hpp:8610
@ hx_boundaries_end
Definition hexrays.hpp:8621
@ hx_udcall_map_new
Definition hexrays.hpp:8554
@ hx_user_numforms_find
Definition hexrays.hpp:8522
@ hx_user_labels_erase
Definition hexrays.hpp:8602
@ hx_install_hexrays_callback
Definition hexrays.hpp:9090
@ hx_cfunc_t_set_user_cmt
Definition hexrays.hpp:9060
@ hx_vd_printer_t_print
Definition hexrays.hpp:8671
@ hx_mutable_graph_t_goup
Definition hexrays.hpp:8781
@ hx_cnumber_t_print
Definition hexrays.hpp:8966
@ hx_valrng_t_reduce_size
Definition hexrays.hpp:8653
@ hx_save_user_labels
Definition hexrays.hpp:9040
@ hx_open_pseudocode
Definition hexrays.hpp:8952
@ hx_mba_ranges_t_range_contains
Definition hexrays.hpp:8900
@ hx_valrng_t_inverse
Definition hexrays.hpp:8656
@ hx_rlist_t_dstr
Definition hexrays.hpp:8761
@ hx_mop_t_make_reg_pair
Definition hexrays.hpp:8804
@ hx_casm_t_compare
Definition hexrays.hpp:9005
@ hx_user_iflags_begin
Definition hexrays.hpp:8568
@ hx_vdui_t_invert_bits
Definition hexrays.hpp:9127
@ hx_bitset_t_sub
Definition hexrays.hpp:8724
@ hx_cif_t_assign
Definition hexrays.hpp:8996
@ hx_arglocs_overlap
Definition hexrays.hpp:8693
@ hx_eamap_new
Definition hexrays.hpp:8619
@ hx_user_unions_clear
Definition hexrays.hpp:8590
@ hx_get_ctype_name
Definition hexrays.hpp:9088
@ hx_dereference
Definition hexrays.hpp:9039
@ hx_block_chains_next
Definition hexrays.hpp:8635
@ hx_user_labels_next
Definition hexrays.hpp:8596
@ hx_get_op_signness
Definition hexrays.hpp:8963
@ hx_bitset_t_add__
Definition hexrays.hpp:8723
@ hx_mop_t_may_use_aliased_memory
Definition hexrays.hpp:8807
@ hx_restore_user_iflags
Definition hexrays.hpp:9048
@ hx_vdui_t_rename_udm
Definition hexrays.hpp:9113
@ hx_simple_graph_t_compute_dominators
Definition hexrays.hpp:8775
@ hx_vdui_t_refresh_view
Definition hexrays.hpp:9093
@ hx_mba_t_set_lvar_name
Definition hexrays.hpp:8942
@ hx_mop_t_shift_mop
Definition hexrays.hpp:8821
@ hx_bitset_t_has_all
Definition hexrays.hpp:8730
@ hx_change_hexrays_config
Definition hexrays.hpp:8950
@ hx_ivlset_t_dstr
Definition hexrays.hpp:8753
@ hx_cfunc_t_has_orphan_cmts
Definition hexrays.hpp:9063
@ hx_block_chains_new
Definition hexrays.hpp:8644
@ hx_cinsn_t_is_ordinary_flow
Definition hexrays.hpp:9014
@ hx_hexrays_alloc
Definition hexrays.hpp:8645
@ hx_vdui_t_set_noptr_lvar
Definition hexrays.hpp:9106
@ hx_eamap_free
Definition hexrays.hpp:8618
@ hx_vdui_t_refresh_ctext
Definition hexrays.hpp:9094
@ hx_partial_type_num
Definition hexrays.hpp:8679
@ hx_lvar_mapping_next
Definition hexrays.hpp:8531
@ hx_cfunc_t_set_user_iflags
Definition hexrays.hpp:9062
@ hx_vdui_t_del_orphan_cmts
Definition hexrays.hpp:9122
@ hx_stkvar_ref_t_compare
Definition hexrays.hpp:8785
@ hx_valrng_t_set_cmp
Definition hexrays.hpp:8652
@ hx_cfunc_t_print_dcl
Definition hexrays.hpp:9052
@ hx_bitset_t_compare
Definition hexrays.hpp:8742
@ hx_lnot
Definition hexrays.hpp:9033
@ hx_user_numforms_erase
Definition hexrays.hpp:8524
@ hx_user_numforms_new
Definition hexrays.hpp:8528
@ hx_cfunc_t_print_func
Definition hexrays.hpp:9053
@ hx_restore_user_cmts
Definition hexrays.hpp:9046
@ hx_block_chains_free
Definition hexrays.hpp:8643
@ hx_minsn_t_equal_insns
Definition hexrays.hpp:8860
@ hx_mop_t_for_all_ops
Definition hexrays.hpp:8813
@ hx_vdloc_t_is_aliasable
Definition hexrays.hpp:8691
@ hx_ccases_t_compare
Definition hexrays.hpp:9022
@ hx_block_chains_begin
Definition hexrays.hpp:8633
@ hx_udcall_map_first
Definition hexrays.hpp:8546
@ hx_mcode_modifies_d
Definition hexrays.hpp:8669
@ hx_udcall_map_size
Definition hexrays.hpp:8552
@ hx_mcallarg_t_set_regarg
Definition hexrays.hpp:8827
@ hx_ivl_t_dstr
Definition hexrays.hpp:8744
@ hx_mba_t_print
Definition hexrays.hpp:8918
@ hx_reg2mreg
Definition hexrays.hpp:8768
@ hx_lvar_mapping_first
Definition hexrays.hpp:8533
@ hx_mba_t_vd2idaloc
Definition hexrays.hpp:8905
@ hx_mblock_t_print
Definition hexrays.hpp:8877
@ hx_user_unions_first
Definition hexrays.hpp:8585
@ hx_vivl_t_dstr
Definition hexrays.hpp:8839
@ hx_user_numforms_clear
Definition hexrays.hpp:8525
@ hx_stkvar_ref_t_get_stkvar
Definition hexrays.hpp:8786
@ hx_mba_t_get_graph
Definition hexrays.hpp:8912
@ hx_mcallinfo_t_get_type
Definition hexrays.hpp:8830
@ hx_mba_t_arg
Definition hexrays.hpp:8932
@ hx_vdui_t_ui_rename_lvar
Definition hexrays.hpp:9101
@ hx_mba_t_mark_chains_dirty
Definition hexrays.hpp:8920
@ hx_lvar_ref_t_compare
Definition hexrays.hpp:8783
@ hx_get_widget_vdui
Definition hexrays.hpp:8954
@ hx_bitset_t_copy
Definition hexrays.hpp:8720
@ hx_udcall_map_find
Definition hexrays.hpp:8548
@ hx_bitset_t_last
Definition hexrays.hpp:8736
@ hx_user_labels_prev
Definition hexrays.hpp:8597
@ hx_bitset_t_fill_gaps
Definition hexrays.hpp:8738
@ hx_asgop
Definition hexrays.hpp:8964
@ hx_var_ref_t_compare
Definition hexrays.hpp:8970
@ hx_carglist_t_compare
Definition hexrays.hpp:9020
@ hx_mblock_t_init
Definition hexrays.hpp:8876
@ hx_mlist_t_dstr
Definition hexrays.hpp:8764
@ hx_minsn_t_is_noret_call
Definition hexrays.hpp:8862
@ hx_mcallinfo_t_print
Definition hexrays.hpp:8831
@ hx_mblock_t_build_def_list
Definition hexrays.hpp:8892
@ hx_user_unions_find
Definition hexrays.hpp:8587
@ hx_mop_t_create_from_mlist
Definition hexrays.hpp:8795
@ hx_vdui_t_set_udm_type
Definition hexrays.hpp:9112
@ hx_is_kreg
Definition hexrays.hpp:8767
@ hx_udcall_map_next
Definition hexrays.hpp:8544
@ hx_bitset_t_empty
Definition hexrays.hpp:8733
@ hx_codegen_t_emit_
Definition hexrays.hpp:8949
@ hx_block_chains_t_dstr
Definition hexrays.hpp:8846
@ hx_file_printer_t_print
Definition hexrays.hpp:8672
@ hx_mop_t_make_fpnum
Definition hexrays.hpp:8801
@ hx_vdui_t_ui_map_lvar
Definition hexrays.hpp:9109
@ hx_cfunc_t_get_func_type
Definition hexrays.hpp:9054
@ hx_udcall_map_end
Definition hexrays.hpp:8543
@ hx_cloop_t_assign
Definition hexrays.hpp:8998
@ hx_clear_cached_cfuncs
Definition hexrays.hpp:9086
@ hx_save_user_unions
Definition hexrays.hpp:9044
@ hx_mcallinfo_t_dstr
Definition hexrays.hpp:8832
@ hx_ccatch_t_compare
Definition hexrays.hpp:9024
@ hx_user_unions_insert
Definition hexrays.hpp:8588
@ hx_vdui_t_ui_unmap_lvar
Definition hexrays.hpp:9110
@ hx_cfunc_t_get_pseudocode
Definition hexrays.hpp:9076
@ hx_minsn_t_has_side_effects
Definition hexrays.hpp:8865
@ hx_user_iflags_insert
Definition hexrays.hpp:8575
@ hx_mba_t_vdump_mba
Definition hexrays.hpp:8917
@ hx_mba_t_split_block
Definition hexrays.hpp:9133
@ hx_user_unions_second
Definition hexrays.hpp:8586
@ hx_chain_t_append_list_
Definition hexrays.hpp:8843
@ hx_minsn_t_find_num_op
Definition hexrays.hpp:8868
@ hx_ctree_item_t_get_label_num
Definition hexrays.hpp:9030
@ hx_cfunc_parentee_t_calc_rvalue_type
Definition hexrays.hpp:8974
@ hx_is_mcode_propagatable
Definition hexrays.hpp:8664
@ hx_ivlset_t_add_
Definition hexrays.hpp:8747
@ hx_mba_t_get_curfunc
Definition hexrays.hpp:8908
@ hx_mblock_t_find_access
Definition hexrays.hpp:8896
@ hx_boundaries_first
Definition hexrays.hpp:8624
@ hx_vdui_t_calc_cmt_type
Definition hexrays.hpp:9119
@ hx_block_chains_size
Definition hexrays.hpp:8642
@ hx_vdui_t_edit_cmt
Definition hexrays.hpp:9120
@ hx_lvar_mapping_begin
Definition hexrays.hpp:8529
@ hx_must_mcode_close_block
Definition hexrays.hpp:8663
@ hx_boundaries_next
Definition hexrays.hpp:8622
@ hx_block_chains_t_get_chain
Definition hexrays.hpp:8844
@ hx_valrng_t_print
Definition hexrays.hpp:8658
@ hx_make_ref
Definition hexrays.hpp:9038
@ hx_citem_locator_t_compare
Definition hexrays.hpp:8975
@ hx_mop_t_is_sign_extended_from
Definition hexrays.hpp:8809
@ hx_vdui_t_invert_sign
Definition hexrays.hpp:9126
@ hx_modify_user_lvars
Definition hexrays.hpp:8708
@ hx_mblock_t_append_use_list
Definition hexrays.hpp:8889
@ hx_chain_t_print
Definition hexrays.hpp:8840
@ hx_user_labels_free
Definition hexrays.hpp:8605
@ hx_vdloc_t_compare
Definition hexrays.hpp:8690
@ hx_is_type_correct
Definition hexrays.hpp:8675
@ hx_mba_t_optimize_local
Definition hexrays.hpp:8910
@ hx_is_bool_type
Definition hexrays.hpp:8678
@ hx_negate_mcode_relation
Definition hexrays.hpp:8665
@ hx_ivlset_t_intersect
Definition hexrays.hpp:8758
@ hx_ivlset_t_add
Definition hexrays.hpp:8746
@ hx_boundaries_insert
Definition hexrays.hpp:8627
@ hx_creturn_t_compare
Definition hexrays.hpp:9002
@ hx_get_member_type
Definition hexrays.hpp:8684
@ hx_cinsn_t_dstr
Definition hexrays.hpp:9018
@ hx_eamap_erase
Definition hexrays.hpp:8615
@ hx_minsn_t_is_between
Definition hexrays.hpp:8870
@ hx_fnumber_t_dstr
Definition hexrays.hpp:8788
@ hx_mba_t_vd2idaloc_
Definition hexrays.hpp:8906
@ hx_mba_t_copy_block
Definition hexrays.hpp:8923
@ hx_valrng_t_cvt_to_cmp
Definition hexrays.hpp:8661
@ hx_close_hexrays_waitbox
Definition hexrays.hpp:9081
@ hx_user_cmts_size
Definition hexrays.hpp:8565
@ hx_bitset_t_dstr
Definition hexrays.hpp:8732
@ hx_citem_t_find_parent_of
Definition hexrays.hpp:8978
@ hx_mba_t_free_kreg
Definition hexrays.hpp:8939
@ hx_citem_t_contains_label
Definition hexrays.hpp:8977
@ hx_cfunc_t_save_user_labels
Definition hexrays.hpp:9067
@ hx_cexpr_t_get_low_nbit_bound
Definition hexrays.hpp:8991
@ hx_boundaries_new
Definition hexrays.hpp:8632
@ hx_mba_t_remove_blocks
Definition hexrays.hpp:9134
@ hx_get_unk_type
Definition hexrays.hpp:8682
@ hx_mop_t_make_low_half
Definition hexrays.hpp:8817
@ hx_user_unions_next
Definition hexrays.hpp:8583
@ hx_mop_t_print
Definition hexrays.hpp:8793
@ hx_block_chains_t_print
Definition hexrays.hpp:8845
@ hx_cfunc_t_get_user_cmt
Definition hexrays.hpp:9059
@ hx_user_cmts_prev
Definition hexrays.hpp:8558
@ hx_minsn_t_optimize_subtree
Definition hexrays.hpp:8856
@ hx_chain_t_append_list
Definition hexrays.hpp:8842
@ hx_user_unions_erase
Definition hexrays.hpp:8589
@ hx_vdui_t_get_current_label
Definition hexrays.hpp:9097
@ hx_eamap_first
Definition hexrays.hpp:8611
@ hx_vdui_t_edit_func_cmt
Definition hexrays.hpp:9121
@ hx_mop_t_create_from_scattered_vdloc
Definition hexrays.hpp:8798
@ hx_lvar_mapping_erase
Definition hexrays.hpp:8537
@ hx_mba_t_serialize
Definition hexrays.hpp:8935
@ hx_rlist_t_print
Definition hexrays.hpp:8760
@ hx_cswitch_t_compare
Definition hexrays.hpp:9023
@ hx_user_cmts_second
Definition hexrays.hpp:8560
@ hx_mba_t_verify
Definition hexrays.hpp:8919
@ hx_cinsn_t_cleanup
Definition hexrays.hpp:9009
@ hx_block_chains_end
Definition hexrays.hpp:8634
@ hx_boundaries_second
Definition hexrays.hpp:8625
@ hx_mba_t_set_maturity
Definition hexrays.hpp:8909
@ hx_lvar_t_set_width
Definition hexrays.hpp:8700
@ hx_ctree_visitor_t_apply_to
Definition hexrays.hpp:8971
@ hx_ivl_t_compare
Definition hexrays.hpp:8745
@ hx_valrng_t_unite_with
Definition hexrays.hpp:8655
@ hx_minsn_t_find_opcode
Definition hexrays.hpp:8866
@ hx_lvar_t_accepts_type
Definition hexrays.hpp:8698
@ hx_cinsn_t_collect_free_continues
Definition hexrays.hpp:9017
@ hx_cexpr_t_equal_effect
Definition hexrays.hpp:8987
@ hx_swap_mcode_relation
Definition hexrays.hpp:8666
@ hx_udcall_map_second
Definition hexrays.hpp:8547
@ hx_graph_chains_t_release
Definition hexrays.hpp:8848
@ hx_is_nonbool_type
Definition hexrays.hpp:8677
@ hx_user_numforms_next
Definition hexrays.hpp:8518
@ hx_cexpr_t_cleanup
Definition hexrays.hpp:8983
@ hx_lvars_t_find_stkvar
Definition hexrays.hpp:8703
@ hx_minsn_t_find_ins_op
Definition hexrays.hpp:8867
@ hx_mblock_t_for_all_uses
Definition hexrays.hpp:8884
@ hx_lvar_mapping_size
Definition hexrays.hpp:8539
@ hx_valrng_t_has
Definition hexrays.hpp:8657
@ hx_cinsn_t_compare
Definition hexrays.hpp:9007
@ hx_udcall_map_prev
Definition hexrays.hpp:8545
@ hx_citem_t_contains_expr
Definition hexrays.hpp:8976
@ hx_int64_emulator_t_mop_value
Definition hexrays.hpp:9136
@ hx_user_numforms_first
Definition hexrays.hpp:8520
@ hx_gen_microcode
Definition hexrays.hpp:9083
@ hx_vivl_t_extend_to_cover
Definition hexrays.hpp:8836
@ hx_cexpr_t_is_child_of
Definition hexrays.hpp:8988
@ hx_ctree_item_t_get_edm
Definition hexrays.hpp:9027
@ hx_mop_t__make_gvar
Definition hexrays.hpp:8802
@ hx_save_user_defined_calls
Definition hexrays.hpp:8712
@ hx_lvar_mapping_find
Definition hexrays.hpp:8535
@ hx_minsn_t_lexcompare
Definition hexrays.hpp:8861
@ hx_mcallarg_t_dstr
Definition hexrays.hpp:8826
@ hx_user_iflags_new
Definition hexrays.hpp:8580
@ hx_minsn_t_for_all_insns
Definition hexrays.hpp:8858
@ hx_convert_to_user_call
Definition hexrays.hpp:8714
@ hx_mop_t_is_bit_reg
Definition hexrays.hpp:8806
@ hx_minsn_t_dstr
Definition hexrays.hpp:8854
@ hx_mlist_t_print
Definition hexrays.hpp:8763
@ hx_lvar_mapping_prev
Definition hexrays.hpp:8532
@ hx_cfunc_t_find_label
Definition hexrays.hpp:9057
@ hx_minsn_t_init
Definition hexrays.hpp:8849
@ hx_mba_t_for_all_topinsns
Definition hexrays.hpp:8928
@ hx_mcases_t_print
Definition hexrays.hpp:8834
@ hx_user_numforms_size
Definition hexrays.hpp:8526
mba_t mbl_array_t
Definition hexrays.hpp:5446
boundaries_t * boundaries_new()
Create a new boundaries_t instance.
Definition hexrays.hpp:10136
side_effect_t
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change...
Definition hexrays.hpp:2548
@ ONLY_SIDEFF
only handle side effects
Definition hexrays.hpp:2553
@ ANY_REGSIZE
any register size is permitted
Definition hexrays.hpp:2554
@ NO_SIDEFF
change operand size but ignore side effects if you decide to keep the changed operand,...
Definition hexrays.hpp:2549
@ ANY_FPSIZE
any size of floating operand is permitted
Definition hexrays.hpp:2555
@ WITH_SIDEFF
change operand size and handle side effects
Definition hexrays.hpp:2552
int hexapi remove_hexrays_callback(hexrays_cb_t *callback, void *ud)
Uninstall handler for decompiler events.
Definition hexrays.hpp:12991
bool is_assignment(ctype_t op)
Is assignment operator?
Definition hexrays.hpp:6064
void hexapi save_user_numforms(ea_t func_ea, const user_numforms_t *numforms)
Save user defined number formats into the database.
Definition hexrays.hpp:12687
void user_numforms_free(user_numforms_t *map)
Delete user_numforms_t instance.
Definition hexrays.hpp:9257
std::map< int, qstring > user_labels_t
Definition hexrays.hpp:7272
user_unions_iterator_t user_unions_begin(const user_unions_t *map)
Get iterator pointing to the beginning of user_unions_t.
Definition hexrays.hpp:9747
void hexapi install_optblock_handler(optblock_t *opt)
Install a block level custom optimizer.
Definition hexrays.hpp:11030
cexpr_t *hexapi make_ref(cexpr_t *e)
Create a reference.
Definition hexrays.hpp:12663
THREAD_SAFE bool is_mcode_convertible_to_set(mcode_t mcode)
Definition hexrays.hpp:685
THREAD_SAFE bool is_mcode_j1(mcode_t mcode)
Definition hexrays.hpp:679
qvector< ivlset_t > array_of_ivlsets
Definition hexrays.hpp:2043
boundaries_iterator_t boundaries_next(boundaries_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10092
THREAD_SAFE bool is_may_access(maymust_t maymust)
Definition hexrays.hpp:504
void user_unions_erase(user_unions_t *map, user_unions_iterator_t p)
Erase current element from user_unions_t.
Definition hexrays.hpp:9781
number_format_t & user_numforms_second(user_numforms_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9177
mba_t *hexapi gen_microcode(const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, const mlist_t *retlist=nullptr, int decomp_flags=0, mba_maturity_t reqmat=MMAT_GLBOPT3)
Generate microcode of an arbitrary code snippet.
Definition hexrays.hpp:12941
void user_unions_free(user_unions_t *map)
Delete user_unions_t instance.
Definition hexrays.hpp:9802
bool is_logical(ctype_t op)
Is logical operator?
Definition hexrays.hpp:6110
bool hexapi install_microcode_filter(microcode_filter_t *filter, bool install=true)
register/unregister non-standard microcode generator
Definition hexrays.hpp:10678
lvar_locator_t const & lvar_mapping_first(lvar_mapping_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9279
qvector< lvar_saved_info_t > lvar_saved_infos_t
Definition hexrays.hpp:1520
citem_cmt_t & user_cmts_second(user_cmts_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9504
THREAD_SAFE mcode_t hexapi negate_mcode_relation(mcode_t code)
Definition hexrays.hpp:10366
qvector< mop_t * > mopptrs_t
Definition hexrays.hpp:285
user_iflags_iterator_t user_iflags_find(const user_iflags_t *map, const citem_locator_t &key)
Find the specified key in user_iflags_t.
Definition hexrays.hpp:9620
const maymust_t EXCLUDE_VOLATILE
Definition hexrays.hpp:493
const mopt_t mop_f
list of arguments
Definition hexrays.hpp:2375
eamap_iterator_t eamap_insert(eamap_t *map, const ea_t &key, const cinsnptrvec_t &val)
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t.
Definition hexrays.hpp:9956
cfuncptr_t decompile_func(func_t *pfn, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a function.
Definition hexrays.hpp:7703
void lvar_mapping_free(lvar_mapping_t *map)
Delete lvar_mapping_t instance.
Definition hexrays.hpp:9366
size_t block_chains_size(block_chains_t *set)
Get size of block_chains_t.
Definition hexrays.hpp:10224
ea_t const & udcall_map_first(udcall_map_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9388
void user_labels_free(user_labels_t *map)
Delete user_labels_t instance.
Definition hexrays.hpp:9911
size_t lvar_mapping_size(lvar_mapping_t *map)
Get size of lvar_mapping_t.
Definition hexrays.hpp:9359
bool is_unsigned_cmpop(cmpop_t cmpop)
Definition hexrays.hpp:350
void hexapi install_optinsn_handler(optinsn_t *opt)
Install an instruction level custom optimizer.
Definition hexrays.hpp:11017
const mreg_t mr_none
Definition hexrays.hpp:780
void user_iflags_free(user_iflags_t *map)
Delete user_iflags_t instance.
Definition hexrays.hpp:9693
bool rename_lvar(ea_t func_ea, const char *oldname, const char *newname)
Rename a local variable.
Definition hexrays.hpp:1664
qrefcnt_t< cfunc_t > cfuncptr_t
Definition hexrays.hpp:289
qvector< cblock_pos_t > cblock_posvec_t
Definition hexrays.hpp:6997
user_iflags_iterator_t user_iflags_begin(const user_iflags_t *map)
Get iterator pointing to the beginning of user_iflags_t.
Definition hexrays.hpp:9638
void user_labels_erase(user_labels_t *map, user_labels_iterator_t p)
Erase current element from user_labels_t.
Definition hexrays.hpp:9890
THREAD_SAFE bool hexapi mcode_modifies_d(mcode_t mcode)
Definition hexrays.hpp:10390
const mreg_t mr_cc
Definition hexrays.hpp:787
lvar_mapping_iterator_t lvar_mapping_find(const lvar_mapping_t *map, const lvar_locator_t &key)
Find the specified key in lvar_mapping_t.
Definition hexrays.hpp:9293
lvar_mapping_iterator_t lvar_mapping_begin(const lvar_mapping_t *map)
Get iterator pointing to the beginning of lvar_mapping_t.
Definition hexrays.hpp:9311
qvector< hexwarn_t > hexwarns_t
Definition hexrays.hpp:4713
user_numforms_t *hexapi restore_user_numforms(ea_t func_ea)
Restore user defined number formats from the database.
Definition hexrays.hpp:12717
eamap_t * eamap_new()
Create a new eamap_t instance.
Definition hexrays.hpp:10027
block_chains_iterator_t block_chains_end(const block_chains_t *set)
Get iterator pointing to the end of block_chains_t.
Definition hexrays.hpp:10185
lvar_mapping_iterator_t lvar_mapping_insert(lvar_mapping_t *map, const lvar_locator_t &key, const lvar_locator_t &val)
Insert new (lvar_locator_t, lvar_locator_t) pair into lvar_mapping_t.
Definition hexrays.hpp:9302
void hexapi save_user_unions(ea_t func_ea, const user_unions_t *unions)
Save user defined union field selections into the database.
Definition hexrays.hpp:12699
cmpop_t
Definition hexrays.hpp:338
@ CMP_A
Definition hexrays.hpp:343
@ CMP_GT
Definition hexrays.hpp:345
@ CMP_LT
Definition hexrays.hpp:347
@ CMP_NZ
Definition hexrays.hpp:339
@ CMP_GE
Definition hexrays.hpp:346
@ CMP_LE
Definition hexrays.hpp:348
@ CMP_B
Definition hexrays.hpp:342
@ CMP_Z
Definition hexrays.hpp:340
@ CMP_BE
Definition hexrays.hpp:344
@ CMP_AE
Definition hexrays.hpp:341
qvector< minsn_t * > minsnptrs_t
Definition hexrays.hpp:284
bool op_uses_x(ctype_t op)
Does operator use the 'x' field of cexpr_t?
Definition hexrays.hpp:6052
const maymust_t ONE_ACCESS_TYPE
Definition hexrays.hpp:481
citem_locator_t const & user_iflags_first(user_iflags_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9606
bool is_cmpop_without_eq(cmpop_t cmpop)
Definition hexrays.hpp:365
const maymust_t MUST_ACCESS
Definition hexrays.hpp:476
const uvlr_t MAX_VLR_VALUE
Definition hexrays.hpp:313
user_unions_iterator_t user_unions_insert(user_unions_t *map, const ea_t &key, const intvec_t &val)
Insert new (ea_t, intvec_t) pair into user_unions_t.
Definition hexrays.hpp:9738
carglist_t * args
Definition hexrays.hpp:7323
const maymust_t WITH_ASSERTS
Definition hexrays.hpp:491
bool hexapi locate_lvar(lvar_locator_t *out, ea_t func_ea, const char *varname)
Find a variable by name.
Definition hexrays.hpp:10648
user_cmts_t * user_cmts_new()
Create a new user_cmts_t instance.
Definition hexrays.hpp:9591
qvector< cinsn_t * > cinsnptrvec_t
Vector of pointers to statements.
Definition hexrays.hpp:6744
const mopt_t mop_c
mcases
Definition hexrays.hpp:2379
udcall_t & udcall_map_second(udcall_map_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9395
block_chains_t * block_chains_new()
Create a new block_chains_t instance.
Definition hexrays.hpp:10238
void term_hexrays_plugin()
Stop working with hex-rays decompiler.
Definition hexrays.hpp:9155
mblock_type_t
Basic block types.
Definition hexrays.hpp:4164
@ BLT_NONE
unknown block type
Definition hexrays.hpp:4165
@ BLT_XTRN
external block (out of function address)
Definition hexrays.hpp:4171
@ BLT_STOP
stops execution regularly (must be the last block)
Definition hexrays.hpp:4166
@ BLT_2WAY
passes execution to two blocks (conditional jump)
Definition hexrays.hpp:4169
@ BLT_0WAY
does not have successors (tail is a noret function)
Definition hexrays.hpp:4167
@ BLT_1WAY
passes execution to one block (regular or goto block)
Definition hexrays.hpp:4168
@ BLT_NWAY
passes execution to many blocks (switch idiom)
Definition hexrays.hpp:4170
const mreg_t mr_of
Definition hexrays.hpp:784
AS_PRINTF(3, 0) cexpr_t *hexapi vcreate_helper(bool standalone
Create a helper object.
Definition hexrays.hpp:11907
ctype_t hexapi asgop_revert(ctype_t cop)
Convert assignment operator into plain operator.
Definition hexrays.hpp:12213
size_t user_labels_size(user_labels_t *map)
Get size of user_labels_t.
Definition hexrays.hpp:9904
THREAD_SAFE bool is_mcode_divmod(mcode_t op)
Definition hexrays.hpp:711
block_chains_iterator_t block_chains_begin(const block_chains_t *set)
Get iterator pointing to the beginning of block_chains_t.
Definition hexrays.hpp:10176
bool hexapi decompile_many(const char *outfile, const eavec_t *funcaddrs, int flags)
Batch decompilation.
Definition hexrays.hpp:12151
qvector< ccatch_t > ccatchvec_t
Definition hexrays.hpp:6945
void boundaries_erase(boundaries_t *map, boundaries_iterator_t p)
Erase current element from boundaries_t.
Definition hexrays.hpp:10108
boundaries_iterator_t boundaries_insert(boundaries_t *map, const cinsn_t *&key, const rangeset_t &val)
Insert new (cinsn_t *, rangeset_t) pair into boundaries_t.
Definition hexrays.hpp:10065
user_cmts_iterator_t user_cmts_find(const user_cmts_t *map, const treeloc_t &key)
Find the specified key in user_cmts_t.
Definition hexrays.hpp:9511
std::map< ea_t, cinsnptrvec_t > eamap_t
Definition hexrays.hpp:7453
const svlr_t MAX_VLR_SVALUE
Definition hexrays.hpp:314
void hexapi hexrays_free(void *ptr)
Definition hexrays.hpp:10250
vdui_t *hexapi get_widget_vdui(TWidget *f)
Get the vdui_t instance associated to the TWidget.
Definition hexrays.hpp:12145
const mopt_t mop_v
global variable
Definition hexrays.hpp:2373
user_iflags_iterator_t user_iflags_end(const user_iflags_t *map)
Get iterator pointing to the end of user_iflags_t.
Definition hexrays.hpp:9647
int maymust_t
Definition hexrays.hpp:473
user_labels_iterator_t user_labels_prev(user_labels_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9882
THREAD_SAFE bool is_mcode_set(mcode_t mcode)
Definition hexrays.hpp:675
user_iflags_iterator_t user_iflags_prev(user_iflags_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9664
bool is_multiplicative(ctype_t op)
Is multiplicative operator?
Definition hexrays.hpp:6091
citem_pointers_t parents_t
Definition hexrays.hpp:6197
void udcall_map_erase(udcall_map_t *map, udcall_map_iterator_t p)
Erase current element from udcall_map_t.
Definition hexrays.hpp:9454
cinsn_t *hexapi new_block()
Create a new block-statement.
Definition hexrays.hpp:12639
mba_maturity_t
Microcode maturity levels.
Definition hexrays.hpp:4718
@ MMAT_LOCOPT
local optimization of each basic block is complete.
Definition hexrays.hpp:4722
@ MMAT_LVARS
allocated local variables
Definition hexrays.hpp:4728
@ MMAT_CALLS
detected call arguments. see also hxe_calls_done
Definition hexrays.hpp:4724
@ MMAT_GLBOPT1
performed the first pass of global optimization
Definition hexrays.hpp:4725
@ MMAT_PREOPTIMIZED
preoptimized pass is complete
Definition hexrays.hpp:4721
@ MMAT_ZERO
microcode does not exist
Definition hexrays.hpp:4719
@ MMAT_GLBOPT3
completed all global optimization. microcode is fixed now.
Definition hexrays.hpp:4727
@ MMAT_GLBOPT2
most global optimization passes are done
Definition hexrays.hpp:4726
@ MMAT_GENERATED
generated microcode
Definition hexrays.hpp:4720
THREAD_SAFE bool has_mcode_seloff(mcode_t op)
Definition hexrays.hpp:716
void hexapi save_user_lvar_settings(ea_t func_ea, const lvar_uservec_t &lvinf)
Save user defined local variable settings into the database.
Definition hexrays.hpp:10630
ctype_t hexapi asgop(ctype_t cop)
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd.
Definition hexrays.hpp:12207
bool hexapi restore_user_defined_calls(udcall_map_t *udcalls, ea_t func_ea)
Restore user defined function calls from the database.
Definition hexrays.hpp:10654
int64 svlr_t
Definition hexrays.hpp:311
bool hexapi remove_optinsn_handler(optinsn_t *opt)
Remove an instruction level custom optimizer.
Definition hexrays.hpp:11023
void eamap_free(eamap_t *map)
Delete eamap_t instance.
Definition hexrays.hpp:10020
warnid_t
Warning ids.
Definition hexrays.hpp:4631
@ WARN_OPT_VALRNG4
56 the cases s were optimized away because s
Definition hexrays.hpp:4688
@ WARN_OPT_VALRNG2
52 mask 0xX is shortened because s <= 0xX"
Definition hexrays.hpp:4684
@ WARN_GUESSED_TYPE
9 using guessed type s;
Definition hexrays.hpp:4641
@ WARN_BAD_STROFF
33 user specified stroff has not been processed: s
Definition hexrays.hpp:4665
@ WARN_OPT_USELESS_JCND
54 simplified comparisons for 's': s became s
Definition hexrays.hpp:4686
@ WARN_ODD_INPUT_REG
15 odd input register s
Definition hexrays.hpp:4647
@ WARN_ILL_FUNCTYPE
2 invalid function type 's' has been ignored
Definition hexrays.hpp:4634
@ WARN_ILL_PURGED
1 odd caller purged bytes d, correcting
Definition hexrays.hpp:4633
@ WARN_UNINITED_REG
28 reference to an uninitialized register has been removed: s
Definition hexrays.hpp:4660
@ WARN_ODD_ADDR_USE
16 odd use of a variable address
Definition hexrays.hpp:4648
@ WARN_CBUILD_LOOPS
13 too many cbuild loops
Definition hexrays.hpp:4645
@ WARN_BAD_VARSIZE
34 inconsistent variable size for 's'
Definition hexrays.hpp:4666
@ WARN_VARARG_MANY
5 too many varargs, some ignored
Definition hexrays.hpp:4637
@ WARN_MAX
may be used in notes as a placeholder when the warning id is not available
Definition hexrays.hpp:4689
@ WARN_UNBALANCED_STACK
51 unbalanced stack, ignored a potential tail call
Definition hexrays.hpp:4683
@ WARN_FRAG_LVAR
26 fragmented variable at s may be wrong
Definition hexrays.hpp:4658
@ WARN_BAD_PURGED
12 inconsistent function type and number of purged bytes
Definition hexrays.hpp:4644
@ WARN_UNSUPP_REG
35 unsupported processor register 's'
Definition hexrays.hpp:4667
@ WARN_VARARG_REGS
0 cannot handle register arguments in vararg function, discarded them
Definition hexrays.hpp:4632
@ WARN_MISSED_SWITCH
39 wrong markup of switch jump, skipped it
Definition hexrays.hpp:4671
@ WARN_UNDEF_LVAR
42 variable 's' is possibly undefined
Definition hexrays.hpp:4674
@ WARN_RET_LOCREF
47 returning address of temporary local variable 's'
Definition hexrays.hpp:4679
@ WARN_BAD_RETVAR
25 wrong return variable
Definition hexrays.hpp:4657
@ WARN_SUBFRAME_OVERFLOW
55 call arguments overflow the function chunk frame
Definition hexrays.hpp:4687
@ WARN_CR_NOFIELD
31 CONTAINING_RECORD: no field 's' in struct 's' at d
Definition hexrays.hpp:4663
@ WARN_BAD_CALL_SP
38 bad sp value at call
Definition hexrays.hpp:4670
@ WARN_WRITE_CONST
24 write access to const memory at a has been detected
Definition hexrays.hpp:4656
@ WARN_WIDEN_CHAINS
11 failed to widen chains
Definition hexrays.hpp:4643
@ WARN_ILL_FPU_STACK
18 inconsistent fpu stack
Definition hexrays.hpp:4650
@ WARN_SELFREF_PROP
19 self-referencing variable has been detected
Definition hexrays.hpp:4651
@ WARN_WRONG_VA_OFF
30 wrong offset of va_list variable
Definition hexrays.hpp:4662
@ WARN_BAD_STKPNT
41 wrong sp change point
Definition hexrays.hpp:4673
@ WARN_OPT_VALRNG
46 conditional instruction was optimized away because s
Definition hexrays.hpp:4678
@ WARN_BAD_SHADOW
45 ignored the value written to the shadow area of the succeeding call
Definition hexrays.hpp:4677
@ WARN_NO_SAVE_REST
14 could not find valid save-restore pair for s
Definition hexrays.hpp:4646
@ WARN_BAD_INSN
49 bad instruction
Definition hexrays.hpp:4681
@ WARN_ILL_ELLIPSIS
8 erroneously detected ellipsis type has been ignored
Definition hexrays.hpp:4640
@ WARN_EXP_LINVAR
10 failed to expand a linear variable
Definition hexrays.hpp:4642
@ WARN_VARARG_NOSTK
4 call vararg without local stack
Definition hexrays.hpp:4636
@ WARN_MUST_RET_FP
17 function return type is incorrect (must be floating point)
Definition hexrays.hpp:4649
@ WARN_JUMPOUT
43 control flows out of bounds
Definition hexrays.hpp:4675
@ WARN_BAD_FIELD_TYPE
23 incorrect structure member type for s::s, ignored
Definition hexrays.hpp:4655
@ WARN_WOULD_OVERLAP
20 variables would overlap: s
Definition hexrays.hpp:4652
@ WARN_FIXED_INSN
29 fixed broken insn
Definition hexrays.hpp:4661
@ WARN_VARARG_TCAL
3 cannot handle tail call to vararg
Definition hexrays.hpp:4635
@ WARN_ODD_ABI
50 encountered odd instruction for the current ABI
Definition hexrays.hpp:4682
@ WARN_HUGE_STKOFF
27 exceedingly huge offset into the stack frame
Definition hexrays.hpp:4659
@ WARN_ADDR_OUTARGS
6 cannot handle address arithmetics in outgoing argument area of stack frame – unused
Definition hexrays.hpp:4638
@ WARN_MAX_ARGS
22 too many input arguments, some ignored
Definition hexrays.hpp:4654
@ WARN_ARRAY_INARG
21 array has been used for an input argument
Definition hexrays.hpp:4653
@ WARN_UNALIGNED_ARG
36 unaligned function argument 's'
Definition hexrays.hpp:4668
@ WARN_CR_BADOFF
32 CONTAINING_RECORD: too small offset d for struct 's'
Definition hexrays.hpp:4664
@ WARN_BAD_SP
40 positive sp value a has been found
Definition hexrays.hpp:4672
@ WARN_OPT_VALRNG3
53 masking with 0XX was optimized away because s <= 0xX
Definition hexrays.hpp:4685
@ WARN_BAD_VALRNG
44 values range analysis failed
Definition hexrays.hpp:4676
@ WARN_DEP_UNK_CALLS
7 found interdependent unknown calls
Definition hexrays.hpp:4639
@ WARN_BAD_STD_TYPE
37 corrupted or unexisting local type 's'
Definition hexrays.hpp:4669
@ WARN_BAD_MAPDST
48 too short map destination 's' for variable 's'
Definition hexrays.hpp:4680
treeloc_t const & user_cmts_first(user_cmts_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9497
void block_chains_erase(block_chains_t *set, block_chains_iterator_t p)
Erase current element from block_chains_t.
Definition hexrays.hpp:10210
const int cc_count
Definition hexrays.hpp:786
block_chains_iterator_t block_chains_prev(block_chains_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10202
std::map< citem_locator_t, int32 > user_iflags_t
Definition hexrays.hpp:6309
user_cmts_t *hexapi restore_user_cmts(ea_t func_ea)
Restore user defined comments from the database.
Definition hexrays.hpp:12711
const cmt_type_t CMT_ALL
All comments.
Definition hexrays.hpp:8154
void user_unions_clear(user_unions_t *map)
Clear user_unions_t.
Definition hexrays.hpp:9788
const size_t bitset_align
Definition hexrays.hpp:1784
const mopt_t mop_h
helper function
Definition hexrays.hpp:2378
THREAD_SAFE bool is_mcode_set1(mcode_t mcode)
Definition hexrays.hpp:677
void lvar_mapping_erase(lvar_mapping_t *map, lvar_mapping_iterator_t p)
Erase current element from lvar_mapping_t.
Definition hexrays.hpp:9345
const char *hexapi get_hexrays_version()
Get decompiler version.
Definition hexrays.hpp:12127
bool is_binary(ctype_t op)
Is binary operator?
Definition hexrays.hpp:6058
std::map< operand_locator_t, number_format_t > user_numforms_t
Definition hexrays.hpp:875
ivlset_tpl< ivl_t, uval_t > uval_ivl_ivlset_t
Set of address intervals.
Definition hexrays.hpp:2017
bool is_cmpop_with_eq(cmpop_t cmpop)
Definition hexrays.hpp:358
lvar_mapping_t * lvar_mapping_new()
Create a new lvar_mapping_t instance.
Definition hexrays.hpp:9373
bool hexapi is_kreg(mreg_t r)
Is a kernel register?
Definition hexrays.hpp:10993
udcall_map_t * udcall_map_new()
Create a new udcall_map_t instance.
Definition hexrays.hpp:9482
void hexapi send_database(const hexrays_failure_t &err, bool silent)
Send the database to Hex-Rays.
Definition hexrays.hpp:12165
void hexapi save_user_defined_calls(ea_t func_ea, const udcall_map_t &udcalls)
Save user defined local function calls into the database.
Definition hexrays.hpp:10660
user_labels_iterator_t user_labels_next(user_labels_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9874
qstring & user_labels_second(user_labels_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9831
std::set< qstring > strings_t
Definition hexrays.hpp:283
THREAD_SAFE bool is_mcode_call(mcode_t mcode)
Definition hexrays.hpp:687
THREAD_SAFE mcode_t hexapi get_signed_mcode(mcode_t code)
Definition hexrays.hpp:10378
Contains the inf structure definition and some functions common to the whole IDA project.
uchar inf_get_cc_size_i()
Definition ida.hpp:1001
uint32 callcnv_t
Definition ida.hpp:74
Contains definition of the interface to IDP modules.
qvector< reg_info_t > reginfovec_t
vector of register info objects
Definition idp.hpp:2718
IEEE floating point functions.
idaman THREAD_SAFE fpvalue_kind_t ida_export get_fpvalue_kind(const fpvalue_t &a, uint16 reserved=0)
const uint32 MAXEXP_LNGDBL
maximum exponent for 80-bit long double
Definition ieee.h:42
const uint32 MAXEXP_FLOAT
maximum exponent for 32-bit float
Definition ieee.h:40
const uint32 MAXEXP_DOUBLE
maximum exponent for 64-bit double
Definition ieee.h:41
idaman THREAD_SAFE int ida_export ecmp(const fpvalue_t &a, const fpvalue_t &b)
@ FPV_NAN
NaN.
Definition ieee.h:31
Defines the interface between the kernel and the UI.
idaman int64 size_t count
Definition kernwin.hpp:1366
int nbytes
Definition kernwin.hpp:2861
bool ok
Definition kernwin.hpp:7006
uval_t uval_t
Definition kernwin.hpp:1878
callui(ui_mbox, mbox_replace, format, va)
@ ui_broadcast
cb: broadcast call
Definition kernwin.hpp:398
asize_t size
Definition kernwin.hpp:6339
QT::QWidget TWidget
Definition kernwin.hpp:2024
qvector< simpleline_t > strvec_t
A collection of simple lines to populate a custom view.
Definition kernwin.hpp:1732
void(idaapi *range_marker)(ea_t ea
Pointer to range marker function (for idaviews and hexviews) This pointer is initialized by setup_ran...
unsigned __int64 uint64
Definition llong.hpp:13
__int64 int64
Definition llong.hpp:14
Definitions of IDP, LDR, PLUGIN module interfaces.
uchar type_t
In serialized form, a type is represented by a byte sequence.
Definition nalt.hpp:1317
THREAD_SAFE constexpr bool contains(uval_t off1, asize_t s1, uval_t off)
Does (off1,s1) contain off?
Definition pro.h:1469
THREAD_SAFE constexpr bool includes(uval_t off1, asize_t s1, uval_t off2, asize_t s2)
Does (off1,s1) include (off2,s2)?
Definition pro.h:1464
THREAD_SAFE constexpr bool overlap(uval_t off1, asize_t s1, uval_t off2, asize_t s2)
Do (off1,s1) and (off2,s2) overlap?
Definition pro.h:1459
This is the first header included in the IDA project.
idaman size_t const char time_t t
Definition pro.h:602
unsigned short uint16
unsigned 16 bit value
Definition pro.h:346
int bool
Definition pro.h:329
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
qvector< int > intvec_t
vector of integers
Definition pro.h:2765
uint64 asize_t
Definition pro.h:423
constexpr T make_mask(int count)
Make a mask of 'count' bits.
Definition pro.h:1521
constexpr T right_sshift(const T &value, int shift)
Shift by the amount exceeding the operand size*8 is undefined by the standard.
Definition pro.h:1491
uint8 op_dtype_t
Definition pro.h:460
adiff_t sval_t
signed value used by the processor.
Definition pro.h:446
short int16
signed 16 bit value
Definition pro.h:345
uint64 ea_t
Definition pro.h:421
constexpr T right_ushift(const T &value, int shift)
Shift by the amount exceeding the operand size*8 is undefined by the standard.
Definition pro.h:1486
uint32 flags_t
32-bit flags for each address
Definition pro.h:5008
int int32
signed 32 bit value
Definition pro.h:347
unsigned char uchar
unsigned 8 bit value
Definition pro.h:337
idaman THREAD_SAFE void ida_export qfree(void *alloc)
System independent free.
THREAD_SAFE void qswap(T &a, T &b)
Swap 2 objects of the same type using memory copies.
Definition pro.h:1715
idaman THREAD_SAFE char *ida_export qstrdup(const char *string)
System independent strdup.
void shift_down(T *dst, T *src, size_t cnt)
Move data down in memory.
Definition pro.h:2197
unsigned int uint
unsigned 32 bit value
Definition pro.h:339
int lexcompare(const T &a, const T &b)
Standard lexical comparison.
Definition pro.h:2888
qvector< ea_t > eavec_t
vector of addresses
Definition pro.h:2764
uint64 flags64_t
64-bit flags for each address
Definition pro.h:5009
ptrdiff_t ssize_t
Signed size_t - used to check for size overflows when the counter becomes negative.
Definition pro.h:381
idaman uint64 ida_export extend_sign(uint64 v, int nbytes, bool sign_extend)
Sign-, or zero-extend the value 'v' to occupy 64 bits.
INLINE THREAD_SAFE bool idaapi test_bit(const uchar *bitmap, size_t bit)
Test if 'bit' is set in 'bitmap'.
Definition pro.h:1364
void idaapi setflag(T &where, U bit, bool cnd)
Set a 'bit' in 'where' if 'value' if not zero.
Definition pro.h:1527
unsigned char uint8
unsigned 8 bit value
Definition pro.h:344
char int8
signed 8 bit value
Definition pro.h:342
constexpr T left_shift(const T &value, int shift)
Shift by the amount exceeding the operand size*8 is undefined by the standard.
Definition pro.h:1481
_qstring< char > qstring
regular string
Definition pro.h:3694
int compare(const T &a, const T &b)
Definition pro.h:4514
Definition hexrays.hpp:6319
bit_bound_t(int n=0, int s=0)
Definition hexrays.hpp:6328
int16 nbits
Definition hexrays.hpp:6320
int16 sbits
Definition hexrays.hpp:6322
Definition hexrays.hpp:10143
bool operator==(const block_chains_iterator_t &p) const
Definition hexrays.hpp:10145
iterator_word x
Definition hexrays.hpp:10144
bool operator!=(const block_chains_iterator_t &p) const
Definition hexrays.hpp:10146
Definition hexrays.hpp:10034
bool operator!=(const boundaries_iterator_t &p) const
Definition hexrays.hpp:10037
iterator_word x
Definition hexrays.hpp:10035
bool operator==(const boundaries_iterator_t &p) const
Definition hexrays.hpp:10036
Function argument.
Definition hexrays.hpp:6856
tinfo_t formal_type
formal parameter type (if known)
Definition hexrays.hpp:6858
bool is_vararg
is a vararg (matches ...)
Definition hexrays.hpp:6857
void consume_cexpr(cexpr_t *e)
Definition hexrays.hpp:6859
DECLARE_COMPARISONS(carg_t)
Definition hexrays.hpp:6864
Function argument list.
Definition hexrays.hpp:6873
tinfo_t functype
function object type
Definition hexrays.hpp:6874
void print(qstring *vout, const cfunc_t *func) const
carglist_t()
Definition hexrays.hpp:6879
int print(int curpos, vc_printer_t &vp) const
int flags
call flags
Definition hexrays.hpp:6875
DECLARE_COMPARISONS(carglist_t)
carglist_t(const tinfo_t &ftype, int fl=0)
Definition hexrays.hpp:6880
asm statement
Definition hexrays.hpp:6734
DECLARE_COMPARISONS(casm_t)
void print(const citem_t *parent, int indent, vc_printer_t &vp) const
void genasm(qstring *buf, ea_t ea) const
casm_t(ea_t ea)
Definition hexrays.hpp:6735
bool one_insn() const
Definition hexrays.hpp:6739
casm_t(const casm_t &r)
Definition hexrays.hpp:6736
Catch expression.
Definition hexrays.hpp:6915
void swap(catchexpr_t &r)
Definition hexrays.hpp:6922
cexpr_t obj
the caught object.
Definition hexrays.hpp:6916
DECLARE_COMPARISONS(catchexpr_t)
bool is_catch_all() const
Definition hexrays.hpp:6927
qstring fake_type
if not empty, type of the caught object.
Definition hexrays.hpp:6918
Additional position information for cblocks.
Definition hexrays.hpp:6989
cinsn_t * insn() const
Definition hexrays.hpp:6993
cinsn_t * prev_insn()
Definition hexrays.hpp:6994
cblock_t::iterator p
Definition hexrays.hpp:6991
bool is_first_insn() const
Definition hexrays.hpp:6992
cblock_t * blk
Definition hexrays.hpp:6990
Compound statement (curly braces)
Definition hexrays.hpp:6850
DECLARE_COMPARISONS(cblock_t)
Switch case. Usually cinsn_t is a block.
Definition hexrays.hpp:6888
uint64vec_t values
List of case values.
Definition hexrays.hpp:6889
DECLARE_COMPARISONS(ccase_t)
const uint64 & value(int i) const
Definition hexrays.hpp:6894
size_t size() const
Definition hexrays.hpp:6893
void set_insn(cinsn_t *i)
Vector of switch cases.
Definition hexrays.hpp:6900
DECLARE_COMPARISONS(ccases_t)
int find_value(uint64 v) const
Catch clause: "catch ( type obj )".
Definition hexrays.hpp:6934
void swap(ccatch_t &r)
Definition hexrays.hpp:6938
DECLARE_COMPARISONS(ccatch_t)
bool is_catch_all() const
Definition hexrays.hpp:6937
catchexprs_t exprs
Definition hexrays.hpp:6935
Definition hexrays.hpp:5553
ea_t ea
Definition hexrays.hpp:5555
cdg_insn_iterator_t(const cdg_insn_iterator_t &r)=default
const mba_t * mba
Definition hexrays.hpp:5554
ea_t end
Definition hexrays.hpp:5556
cdg_insn_iterator_t(const mba_t *mba_)
Definition hexrays.hpp:5563
bool is_severed_dslot() const
Definition hexrays.hpp:5571
ea_t severed_branch
Definition hexrays.hpp:5559
insn_t dslot_insn
Definition hexrays.hpp:5558
void start(const range_t &rng)
Definition hexrays.hpp:5572
bool dslot_with_xrefs() const
Definition hexrays.hpp:5569
cdg_insn_iterator_t & operator=(const cdg_insn_iterator_t &r)=default
bool ok() const
Definition hexrays.hpp:5567
ea_t dslot
Definition hexrays.hpp:5557
bool has_dslot() const
Definition hexrays.hpp:5568
bool is_likely_dslot
Definition hexrays.hpp:5561
merror_t hexapi next(insn_t *ins)
Definition hexrays.hpp:12097
Do-loop.
Definition hexrays.hpp:6713
DECLARE_COMPARISONS(cdo_t)
Statement with an expression.
Definition hexrays.hpp:6657
cexpr_t expr
Expression of the statement.
Definition hexrays.hpp:6658
Ctree item: expression.
Definition hexrays.hpp:6381
type_sign_t get_type_sign() const
Get expression sign.
Definition hexrays.hpp:6540
bit_bound_t hexapi get_high_nbit_bound() const
Get max number of bits that can really be used by the expression.
Definition hexrays.hpp:12341
int ptrsize
memory access size (used for cot_ptr, cot_memptr)
Definition hexrays.hpp:6408
uint32 exflags
Expression attributes
Definition hexrays.hpp:6417
~cexpr_t()
Definition hexrays.hpp:6471
bool contains_comma(int times=1) const
Does the expression contain a comma operator?
Definition hexrays.hpp:6520
void swap(cexpr_t &r)
Definition hexrays.hpp:6458
bool is_value_used(const citem_t *parent) const
Does the PARENT need the expression value.
void hexapi replace_by(cexpr_t *r)
Replace the expression.
Definition hexrays.hpp:12293
cexpr_t & operator=(const cexpr_t &r)
Definition hexrays.hpp:6468
bool is_type_unsigned() const
Is expression unsigned?
Definition hexrays.hpp:6542
void hexapi cleanup()
Cleanup the expression.
Definition hexrays.hpp:12299
bool is_nice_cond() const
Is nice condition?
Definition hexrays.hpp:6532
bool is_aliasable() const
Check if the expression if aliasable.
bool is_call_arg_of(const citem_t *parent) const
Is call argument?
Definition hexrays.hpp:6538
fnumber_t * fpc
used for cot_fnum
Definition hexrays.hpp:6385
cexpr_t(const cexpr_t &r)
Definition hexrays.hpp:6457
carglist_t * a
argument list (used for cot_call)
Definition hexrays.hpp:6401
bool hexapi requires_lvalue(const cexpr_t *child) const
Check if the expression requires an lvalue.
Definition hexrays.hpp:12355
void set_type_partial(bool val=true)
Definition hexrays.hpp:6445
uint64 numval() const
Get numeric value of the expression.
Definition hexrays.hpp:6566
bool is_zero_const() const
Check if the expression is a zero.
Definition hexrays.hpp:6592
void hexapi print1(qstring *vout, const cfunc_t *func) const
Print expression into one line.
Definition hexrays.hpp:12311
bool like_boolean() const
Does the expression look like a boolean expression?
cexpr_t * get_ptr_or_array()
Find pointer or array child.
Definition hexrays.hpp:6612
void set_vftable()
Definition hexrays.hpp:6444
const cexpr_t * find_op(ctype_t _op) const
Find the child with the specified operator.
Definition hexrays.hpp:6621
bool is_type_signed() const
Is expression signed?
Definition hexrays.hpp:6544
char * string
utf8 string constant, user representation (used for cot_str)
Definition hexrays.hpp:6414
bool is_vftable() const
Definition hexrays.hpp:6440
bool is_negative_const() const
Check if the expression is a negative number.
Definition hexrays.hpp:6577
bool is_nice_expr() const
Is nice expression?
Definition hexrays.hpp:6529
const cexpr_t * find_num_op() const
Find the operand with a numeric value.
Definition hexrays.hpp:6635
cinsn_t * insn
an embedded statement, they are prohibited at the final maturity stage (CMAT_FINAL)
Definition hexrays.hpp:6411
bool is_non_negative_const() const
Check if the expression is a non-negative number.
Definition hexrays.hpp:6582
bool is_const_value(uint64 _v) const
Check if the expression is a number with the specified value.
Definition hexrays.hpp:6572
void hexapi calc_type(bool recursive)
Calculate the type of the expression.
Definition hexrays.hpp:12317
bool is_type_partial() const
Definition hexrays.hpp:6437
cnumber_t * n
used for cot_num
Definition hexrays.hpp:6384
bool hexapi equal_effect(const cexpr_t &r) const
Compare two expressions.
Definition hexrays.hpp:12323
ea_t obj_ea
used for cot_obj
Definition hexrays.hpp:6391
cexpr_t * y
the second operand of the expression
Definition hexrays.hpp:6400
bool is_call_object_of(const citem_t *parent) const
Is call object?
Definition hexrays.hpp:6535
const cexpr_t * theother(const cexpr_t *what) const
Get the other operand.
Definition hexrays.hpp:6643
bool contains_insn_or_label() const
Does the expression contain an embedded statement operator or a label?
Definition hexrays.hpp:6524
cexpr_t &hexapi assign(const cexpr_t &r)
Definition hexrays.hpp:12281
bool is_odd_lvalue() const
Definition hexrays.hpp:6434
const char *hexapi dstr() const
Definition hexrays.hpp:12373
bool is_undef_val() const
Definition hexrays.hpp:6438
bool hexapi is_child_of(const citem_t *parent) const
Verify if the specified item is our parent.
Definition hexrays.hpp:12329
bool contains_insn(int times=1) const
Does the expression contain an embedded statement operator?
Definition hexrays.hpp:6522
cexpr_t()
Definition hexrays.hpp:6453
char * helper
helper name (used for cot_helper)
Definition hexrays.hpp:6413
bool is_jumpout() const
Definition hexrays.hpp:6439
var_ref_t v
used for cot_var
Definition hexrays.hpp:6390
DECLARE_COMPARISONS(cexpr_t)
bool hexapi has_side_effects() const
Check if the expression has side effects.
Definition hexrays.hpp:12361
void hexapi put_number(cfunc_t *func, uint64 value, int nbytes, type_sign_t sign=no_sign)
Assign a number to the expression.
Definition hexrays.hpp:12305
cexpr_t * z
the third operand of the expression
Definition hexrays.hpp:6407
int hexapi get_low_nbit_bound() const
Get min number of bits that are certainly required to represent the expression.
Definition hexrays.hpp:12349
bool is_cstr() const
Definition hexrays.hpp:6436
cexpr_t * theother(const cexpr_t *what)
Definition hexrays.hpp:6644
bool hexapi contains_operator(ctype_t needed_op, int times=1) const
Check if the expression contains the specified operator.
Definition hexrays.hpp:12335
bool is_fpop() const
Definition hexrays.hpp:6435
bool cpadone() const
Pointer arithmetic correction done for this expression?
Definition hexrays.hpp:6433
const cexpr_t * find_ptr_or_array(bool remove_eqsize_casts) const
Find the pointer operand.
bool is_non_zero_const() const
Check if the expression is a non-zero number.
Definition hexrays.hpp:6587
uint32 m
member offset (used for cot_memptr, cot_memref) for unions, the member number
Definition hexrays.hpp:6402
void set_cpadone()
Definition hexrays.hpp:6443
cexpr_t * x
the first operand of the expression
Definition hexrays.hpp:6397
cexpr_t * find_num_op()
Definition hexrays.hpp:6636
bool contains_comma_or_insn_or_label(int maxcommas=1) const
Does the expression contain a comma operator or an embedded statement operator or a label?
Definition hexrays.hpp:6526
tinfo_t type
expression type. must be carefully maintained
Definition hexrays.hpp:6416
bool get_1num_op(cexpr_t **o1, cexpr_t **o2)
Get pointers to operands.
Definition hexrays.hpp:7800
cexpr_t(ctype_t cexpr_op, cexpr_t *_x, cexpr_t *_y=nullptr, cexpr_t *_z=nullptr)
Definition hexrays.hpp:6454
cexpr_t * find_op(ctype_t _op)
Definition hexrays.hpp:6629
int refwidth
how many bytes are accessed? (-1: none)
Definition hexrays.hpp:6393
cexpr_t(mba_t *mba, const lvar_t &v)
bool get_const_value(uint64 *out) const
Get expression value.
Definition hexrays.hpp:6598
bool hexapi maybe_ptr() const
May the expression be a pointer?
Definition hexrays.hpp:12367
For-loop.
Definition hexrays.hpp:6699
cexpr_t init
Initialization expression.
Definition hexrays.hpp:6700
cexpr_t step
Step expression.
Definition hexrays.hpp:6701
DECLARE_COMPARISONS(cfor_t)
cfunc_parentee_t(cfunc_t *f, bool post=false)
Definition hexrays.hpp:7146
cfunc_t * func
Pointer to current function.
Definition hexrays.hpp:7145
bool hexapi calc_rvalue_type(tinfo_t *target, const cexpr_t *e)
Calculate rvalue type.
Definition hexrays.hpp:12583
Decompiled function. Decompilation result is kept here.
Definition hexrays.hpp:7462
void hexapi set_user_union_selection(ea_t ea, const intvec_t &path)
Set a union field selection.
Definition hexrays.hpp:12833
user_cmts_t * user_cmts
user-defined comments.
Definition hexrays.hpp:7471
user_unions_t * user_unions
user-defined union field selections.
Definition hexrays.hpp:7474
const char *hexapi get_user_cmt(const treeloc_t &loc, cmt_retrieval_type_t rt) const
Retrieve a user defined comment.
Definition hexrays.hpp:12791
void hexapi recalc_item_addresses()
Recalculate item adresses.
Definition hexrays.hpp:12905
void hexapi remove_unused_labels()
Remove unused labels.
Definition hexrays.hpp:12785
strvec_t sv
decompilation output: function text. use get_pseudocode
Definition hexrays.hpp:7488
sval_t hexapi get_stkoff_delta()
Get stack offset delta.
Definition hexrays.hpp:12771
void hexapi print_func(vc_printer_t &vp) const
Print function text.
Definition hexrays.hpp:12753
const strvec_t &hexapi get_pseudocode()
Get pointer to decompilation output: the pseudocode.
Definition hexrays.hpp:12893
citem_pointers_t treeitems
vector of pointers to citem_t objects (nodes constituting the ctree)
Definition hexrays.hpp:7490
bool hexapi get_line_item(const char *line, int x, bool is_ctree_line, ctree_item_t *phead, ctree_item_t *pitem, ctree_item_t *ptail)
Get ctree item for the specified cursor position.
Definition hexrays.hpp:12869
user_iflags_t * user_iflags
user-defined item flags ctree item iflags bits
Definition hexrays.hpp:7473
void hexapi set_user_iflags(const citem_locator_t &loc, int32 iflags)
Set citem iflags.
Definition hexrays.hpp:12809
int hdrlines
number of lines in the declaration area
Definition hexrays.hpp:7489
boundaries_t &hexapi get_boundaries()
Get pointer to map of instruction boundaries.
Definition hexrays.hpp:12887
hexwarns_t &hexapi get_warnings()
Get information about decompilation warnings.
Definition hexrays.hpp:12875
lvars_t *hexapi get_lvars()
Get vector of local variables.
Definition hexrays.hpp:12765
bool hexapi has_orphan_cmts() const
Check if there are orphan comments.
Definition hexrays.hpp:12815
void hexapi print_dcl(qstring *vout) const
Print function prototype.
Definition hexrays.hpp:12747
eamap_t * eamap
ea->insn map. use get_eamap
Definition hexrays.hpp:7486
user_numforms_t * numforms
user-defined number formats.
Definition hexrays.hpp:7472
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void hexapi build_c_tree()
Generate the function body.
ctree_maturity_t maturity
maturity level
Definition hexrays.hpp:7467
void hexapi save_user_labels() const
Save user-defined labels into the database.
Definition hexrays.hpp:12839
void hexapi save_user_unions() const
Save user-defined union field selections into the database.
Definition hexrays.hpp:12863
intvec_t & argidx
list of arguments (indexes into vars)
Definition hexrays.hpp:7466
boundaries_t * boundaries
map of instruction boundaries. use get_boundaries
Definition hexrays.hpp:7487
int statebits
current cfunc_t state.
Definition hexrays.hpp:7480
citem_t *hexapi find_label(int label)
Find the label.
Definition hexrays.hpp:12779
user_labels_t * user_labels
user-defined labels.
Definition hexrays.hpp:7470
int refcnt
reference count to this object. use cfuncptr_t
Definition hexrays.hpp:7479
bool hexapi get_user_union_selection(ea_t ea, intvec_t *path)
Retrieve a user defined union field selection.
Definition hexrays.hpp:12827
void release()
Definition hexrays.hpp:7498
void hexapi save_user_iflags() const
Save user-defined iflags into the database.
Definition hexrays.hpp:12857
void hexapi refresh_func_ctext()
Refresh ctext after a ctree modification.
Definition hexrays.hpp:12899
char reserved[]
Definition hexrays.hpp:7493
int hexapi del_orphan_cmts()
Delete all orphan comments.
Definition hexrays.hpp:12821
void hexapi save_user_cmts() const
Save user-defined comments into the database.
Definition hexrays.hpp:12845
mba_t * mba
underlying microcode
Definition hexrays.hpp:7464
void hexapi set_user_cmt(const treeloc_t &loc, const char *cmt)
Set a user defined comment.
Definition hexrays.hpp:12797
ea_t entry_ea
function entry address
Definition hexrays.hpp:7463
bool hexapi find_item_coords(const citem_t *item, int *px, int *py)
Definition hexrays.hpp:12917
cinsn_t body
function body, must be a block
Definition hexrays.hpp:7465
eamap_t &hexapi get_eamap()
Get pointer to ea->insn map.
Definition hexrays.hpp:12881
bool hexapi gather_derefs(const ctree_item_t &ci, udt_type_data_t *udm=nullptr) const
Definition hexrays.hpp:12911
void hexapi verify(allow_unused_labels_t aul, bool even_without_debugger) const
Verify the ctree.
Definition hexrays.hpp:12741
~cfunc_t()
Definition hexrays.hpp:7497
bool hexapi get_func_type(tinfo_t *type) const
Get the function type.
Definition hexrays.hpp:12759
bool locked() const
Definition hexrays.hpp:7649
void hexapi save_user_numforms() const
Save user-defined number formats into the database.
Definition hexrays.hpp:12851
int32 hexapi get_user_iflags(const citem_locator_t &loc) const
Retrieve citem iflags.
Definition hexrays.hpp:12803
Goto statement.
Definition hexrays.hpp:6725
DECLARE_COMPARISONS(cgoto_t)
void print(const citem_t *parent, int indent, vc_printer_t &vp) const
int label_num
Target label number.
Definition hexrays.hpp:6726
Chain visitor class.
Definition hexrays.hpp:3558
virtual ~chain_visitor_t()
Definition hexrays.hpp:3560
block_chains_t * parent
parent of the current chain
Definition hexrays.hpp:3559
virtual int idaapi visit_chain(int nblock, chain_t &ch)=0
If statement.
Definition hexrays.hpp:6673
cinsn_t * ielse
Else-branch of the if-statement. May be nullptr.
Definition hexrays.hpp:6675
cif_t()
Definition hexrays.hpp:6676
DECLARE_COMPARISONS(cif_t)
void cleanup()
Definition hexrays.hpp:7781
cif_t & operator=(const cif_t &r)
Definition hexrays.hpp:6678
~cif_t()
Definition hexrays.hpp:6681
cif_t(const cif_t &r)
Definition hexrays.hpp:6677
cinsn_t * ithen
Then-branch of the if-statement.
Definition hexrays.hpp:6674
cif_t &hexapi assign(const cif_t &r)
Definition hexrays.hpp:12379
Ctree item: statement.
Definition hexrays.hpp:6749
cdo_t * cdo
details of do-statement
Definition hexrays.hpp:6757
ctry_t * ctry
details of try-statement
Definition hexrays.hpp:6762
bool contains_free_continue() const
Check if the statement has free continue statements.
Definition hexrays.hpp:6840
bool hexapi is_ordinary_flow() const
Check if the statement passes execution to the next statement.
Definition hexrays.hpp:12481
cinsn_t &hexapi assign(const cinsn_t &r)
Definition hexrays.hpp:12433
cinsn_t()
Definition hexrays.hpp:6766
void zero()
Overwrite with zeroes without cleaning memory or deleting children.
Definition hexrays.hpp:6785
cgoto_t * cgoto
details of goto-statement
Definition hexrays.hpp:6760
cif_t * cif
details of if-statement
Definition hexrays.hpp:6754
cexpr_t * cexpr
details of expression-statement
Definition hexrays.hpp:6753
void hexapi print1(qstring *vout, const cfunc_t *func) const
Print the statement into one line.
Definition hexrays.hpp:12475
~cinsn_t()
Definition hexrays.hpp:6772
cif_t &hexapi create_if(cexpr_t *cnd)
Create a new if-statement.
Definition hexrays.hpp:12463
cfor_t * cfor
details of for-statement
Definition hexrays.hpp:6755
cswitch_t * cswitch
details of switch-statement
Definition hexrays.hpp:6758
void hexapi print(int indent, vc_printer_t &vp, use_curly_t use_curly=CALC_CURLY_BRACES) const
Print the statement into many lines.
Definition hexrays.hpp:12469
bool hexapi collect_free_continues(cinsnptrvec_t *continues)
Collect free continue statements.
Definition hexrays.hpp:12499
void swap(cinsn_t &r)
Definition hexrays.hpp:6768
const char *hexapi dstr() const
Definition hexrays.hpp:12505
cinsn_t & operator=(const cinsn_t &r)
Definition hexrays.hpp:6769
void hexapi replace_by(cinsn_t *r)
Replace the statement.
Definition hexrays.hpp:12445
DECLARE_COMPARISONS(cinsn_t)
bool hexapi collect_free_breaks(cinsnptrvec_t *breaks)
Collect free break statements.
Definition hexrays.hpp:12493
void hexapi cleanup()
Cleanup the statement.
Definition hexrays.hpp:12451
bool hexapi contains_insn(ctype_t type, int times=1) const
Check if the statement contains a statement of the specified type.
Definition hexrays.hpp:12487
bool contains_free_break() const
Check if the statement has free break statements.
Definition hexrays.hpp:6838
cinsn_t &hexapi new_insn(ea_t insn_ea)
Create a new statement.
Definition hexrays.hpp:12457
cthrow_t * cthrow
details of throw-statement
Definition hexrays.hpp:6763
cwhile_t * cwhile
details of while-statement
Definition hexrays.hpp:6756
creturn_t * creturn
details of return-statement
Definition hexrays.hpp:6759
cblock_t * cblock
details of block-statement
Definition hexrays.hpp:6752
casm_t * casm
details of asm-statement
Definition hexrays.hpp:6761
cinsn_t(const cinsn_t &r)
Definition hexrays.hpp:6767
Ctree item comment.
Definition hexrays.hpp:6285
bool used
the comment has been retrieved?
Definition hexrays.hpp:6286
citem_cmt_t()
Definition hexrays.hpp:6287
citem_cmt_t(const char *s)
Definition hexrays.hpp:6288
Generic ctree item locator.
Definition hexrays.hpp:6297
DECLARE_COMPARISONS(citem_locator_t)
ea_t ea
citem address
Definition hexrays.hpp:6298
ctype_t op
citem operation
Definition hexrays.hpp:6299
citem_locator_t(ea_t _ea, ctype_t _op)
Definition hexrays.hpp:6302
Basic ctree item.
Definition hexrays.hpp:6337
bool hexapi contains_expr(const cexpr_t *e) const
Does the item contain an expression?
Definition hexrays.hpp:12257
ctype_t op
item type
Definition hexrays.hpp:6339
bool is_expr() const
Is an expression?
Definition hexrays.hpp:6356
citem_t(ctype_t o=cot_empty)
Definition hexrays.hpp:6347
citem_t *hexapi find_closest_addr(ea_t _ea)
Definition hexrays.hpp:12275
const citem_t *hexapi find_parent_of(const citem_t *item) const
Find parent of the specified item.
Definition hexrays.hpp:12269
~citem_t()
Definition hexrays.hpp:6370
void print1(qstring *vout, const cfunc_t *func) const
Print item into one line.
Definition hexrays.hpp:7789
bool hexapi contains_label() const
Does the item contain a label?
Definition hexrays.hpp:12263
citem_t * find_parent_of(const citem_t *item)
Definition hexrays.hpp:6366
int label_num
label number.
Definition hexrays.hpp:6340
int index
an index in cfunc_t::treeitems.
Definition hexrays.hpp:6345
void swap(citem_t &r)
Swap two citem_t.
Definition hexrays.hpp:6349
ea_t ea
address that corresponds to the item. may be BADADDR
Definition hexrays.hpp:6338
Base class for loop statements.
Definition hexrays.hpp:6687
void cleanup()
Definition hexrays.hpp:7782
~cloop_t()
Definition hexrays.hpp:6693
cloop_t & operator=(const cloop_t &r)
Definition hexrays.hpp:6691
cloop_t(cinsn_t *b=nullptr)
Definition hexrays.hpp:6689
cinsn_t * body
Definition hexrays.hpp:6688
cloop_t(const cloop_t &r)
Definition hexrays.hpp:6690
cloop_t &hexapi assign(const cloop_t &r)
Definition hexrays.hpp:12391
An immediate number.
Definition hexrays.hpp:6154
uint64 hexapi value(const tinfo_t &type) const
Get value.
Definition hexrays.hpp:12225
cnumber_t(int _opnum=0)
Definition hexrays.hpp:6157
void hexapi print(qstring *vout, const tinfo_t &type, const citem_t *parent=nullptr, bool *nice_stroff=nullptr) const
Get text representation.
Definition hexrays.hpp:12219
void hexapi assign(uint64 v, int nbytes, type_sign_t sign)
Assign new value.
Definition hexrays.hpp:12233
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(cnumber_t)
uint64 _value
its value
Definition hexrays.hpp:6155
number_format_t nf
how to represent it
Definition hexrays.hpp:6156
Return statement.
Definition hexrays.hpp:6719
DECLARE_COMPARISONS(creturn_t)
Switch statement.
Definition hexrays.hpp:6907
cnumber_t mvnf
Maximal switch value and number format.
Definition hexrays.hpp:6908
DECLARE_COMPARISONS(cswitch_t)
ccases_t cases
Switch cases: values and instructions.
Definition hexrays.hpp:6909
Cursor position in the output text (pseudocode).
Definition hexrays.hpp:8108
bool in_ctree(int hdrlines) const
Is the cursor in the variable/type declaration area?
Definition hexrays.hpp:8114
int lnnum
Line number.
Definition hexrays.hpp:8109
int y
y coordinate of the cursor within the window
Definition hexrays.hpp:8111
ctext_position_t(int _lnnum=-1, int _x=0, int _y=0)
Definition hexrays.hpp:8124
int x
x coordinate of the cursor within the window
Definition hexrays.hpp:8110
DECLARE_COMPARISONS(ctext_position_t)
Comparison operators.
Definition hexrays.hpp:8116
Throw statement.
Definition hexrays.hpp:6982
DECLARE_COMPARISONS(cthrow_t)
Invisible COLOR_ADDR tags in the output text are used to refer to ctree items and variables.
Definition hexrays.hpp:7164
uval_t value
Definition hexrays.hpp:7165
int get_index() const
Definition hexrays.hpp:7172
bool is_citem_anchor() const
Definition hexrays.hpp:7175
bool is_lvar_anchor() const
Definition hexrays.hpp:7176
item_preciser_t get_itp() const
Definition hexrays.hpp:7173
bool is_valid_anchor() const
Definition hexrays.hpp:7174
bool is_blkcmt_anchor() const
Definition hexrays.hpp:7178
bool is_itp_anchor() const
Definition hexrays.hpp:7177
Cursor item.
Definition hexrays.hpp:7194
int hexapi get_udm(udm_t *udm=nullptr, tinfo_t *parent=nullptr, uint64 *p_offset=nullptr) const
Get type of a structure field.
Definition hexrays.hpp:12589
const char *hexapi dstr() const
Definition hexrays.hpp:12627
lvar_t * l
VDI_LVAR: Local variable.
Definition hexrays.hpp:7201
citem_t * it
Definition hexrays.hpp:7198
int hexapi get_edm(tinfo_t *parent) const
Get type of an enum member.
Definition hexrays.hpp:12595
ea_t hexapi get_ea() const
Get address of the current item.
Definition hexrays.hpp:12607
cinsn_t * i
VDI_EXPR: Statement.
Definition hexrays.hpp:7200
int hexapi get_label_num(int gln_flags) const
Get label number of the current item.
Definition hexrays.hpp:12615
cursor_item_type_t citype
Item type.
Definition hexrays.hpp:7195
cfunc_t * f
VDI_FUNC: Function.
Definition hexrays.hpp:7202
treeloc_t loc
VDI_TAIL: Line tail.
Definition hexrays.hpp:7203
lvar_t *hexapi get_lvar() const
Get pointer to local variable.
Definition hexrays.hpp:12601
void hexapi print(qstring *vout) const
Definition hexrays.hpp:12621
cexpr_t * e
VDI_EXPR: Expression.
Definition hexrays.hpp:7199
bool is_citem() const
Is the current item is a ctree item?
Definition hexrays.hpp:7258
void verify(const mba_t *mba) const
bool hexapi recalc_parent_types()
Recalculate type of parent nodes.
Definition hexrays.hpp:12577
ctree_parentee_t(bool post=false)
Definition hexrays.hpp:7129
virtual ~ctree_visitor_t()
Definition hexrays.hpp:7051
void set_restart()
Restart the travesal. Meaningful only in apply_to_exprs()
Definition hexrays.hpp:7037
void clr_prune()
Do not prune children. This is an internal function, no need to call it.
Definition hexrays.hpp:7035
parents_t parents
Vector of parents of the current item.
Definition hexrays.hpp:7041
ctree_visitor_t(int _flags)
Constructor.
Definition hexrays.hpp:7049
bool maintain_parents() const
Should the parent information by maintained?
Definition hexrays.hpp:7022
int hexapi apply_to(citem_t *item, citem_t *parent)
Traverse ctree.
Definition hexrays.hpp:12565
cexpr_t * parent_expr()
Get parent of the current item as an expression.
Definition hexrays.hpp:7075
bool is_postorder() const
Should the leave...() functions be called?
Definition hexrays.hpp:7028
bool must_restart() const
Should the traversal restart?
Definition hexrays.hpp:7026
void clr_restart()
Do not restart. This is an internal function, no need to call it.
Definition hexrays.hpp:7039
bool only_insns() const
Should all expressions be automatically pruned?
Definition hexrays.hpp:7030
cblock_posvec_t bposvec
Vector of block positions.
Definition hexrays.hpp:7042
cinsn_t * parent_insn()
Get parent of the current item as a statement.
Definition hexrays.hpp:7082
void prune_now()
Prune children.
Definition hexrays.hpp:7033
virtual int idaapi visit_insn(cinsn_t *)
Visit a statement.
Definition hexrays.hpp:7097
int cv_flags
Ctree visitor property bits
Definition hexrays.hpp:7006
virtual int idaapi visit_expr(cexpr_t *)
Visit an expression.
Definition hexrays.hpp:7105
bool must_prune() const
Should the traversal skip the children of the current item?
Definition hexrays.hpp:7024
virtual int idaapi leave_expr(cexpr_t *)
Visit an expression after having visited its children.
Definition hexrays.hpp:7121
citem_t * parent_item()
Get parent of the current item as an item (statement or expression)
Definition hexrays.hpp:7069
virtual int idaapi leave_insn(cinsn_t *)
Visit a statement after having visited its children.
Definition hexrays.hpp:7113
int hexapi apply_to_exprs(citem_t *item, citem_t *parent)
Traverse only expressions.
Definition hexrays.hpp:12571
C++ Try statement.
Definition hexrays.hpp:6950
size_t new_state
new state number (internal, MSVC related)
Definition hexrays.hpp:6954
void print(const citem_t *parent, int indent, vc_printer_t &vp) const
bool is_wind
Is C++ wind statement?
Definition hexrays.hpp:6974
ccatchvec_t catchs
"catch all", if present, must be the last element.
Definition hexrays.hpp:6951
size_t old_state
old state number (internal, MSVC related)
Definition hexrays.hpp:6953
DECLARE_COMPARISONS(ctry_t)
While-loop.
Definition hexrays.hpp:6707
DECLARE_COMPARISONS(cwhile_t)
Definition hexrays.hpp:9925
bool operator==(const eamap_iterator_t &p) const
Definition hexrays.hpp:9927
iterator_word x
Definition hexrays.hpp:9926
bool operator!=(const eamap_iterator_t &p) const
Definition hexrays.hpp:9928
Edge connecting two graph nodes.
Definition gdl.hpp:86
Helper class to convert binary data structures into text and put into a file.
Definition hexrays.hpp:909
const char override
Definition hexrays.hpp:917
FILE * fp
Output file pointer.
Definition hexrays.hpp:910
file_printer_t(FILE *_fp)
Constructor.
Definition hexrays.hpp:919
const char * format
Definition hexrays.hpp:917
AS_PRINTF(3, 4) int hexapi print(int indent
Print.
Floating point constant.
Definition hexrays.hpp:2509
int calc_max_exp() const
Definition hexrays.hpp:2521
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11097
bool is_nan() const
Definition hexrays.hpp:2527
fpvalue_t fnum
Internal representation of the number.
Definition hexrays.hpp:2510
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(fnumber_t)
Definition hexrays.hpp:2516
const char *hexapi dstr() const
Definition hexrays.hpp:11103
int nbytes
Original size of the constant in bytes.
Definition hexrays.hpp:2511
Processor-independent representation of a floating point value.
Definition ieee.h:98
Result of get_current_operand()
Definition hexrays.hpp:5900
int regnum
if register, the register id
Definition hexrays.hpp:5905
vivl_t cvt_to_ivl() const
Convert operand info to VIVL.
Definition hexrays.hpp:5927
int flags
Definition hexrays.hpp:5908
qstring name
register or stkvar name
Definition hexrays.hpp:5901
bool is_def() const
Definition hexrays.hpp:5915
bool hexapi append_to_list(mlist_t *list, const mba_t *mba) const
Append operand info to LIST.
Definition hexrays.hpp:12171
bool is_use() const
Definition hexrays.hpp:5914
sval_t stkoff
if stkvar, stack offset
Definition hexrays.hpp:5904
bool is_reg() const
Definition hexrays.hpp:5913
int size
operand size
Definition hexrays.hpp:5907
Exception object: decompiler failure information.
Definition hexrays.hpp:5853
hexrays_failure_t(merror_t c, ea_t ea, const qstring &buf)
Definition hexrays.hpp:5859
hexrays_failure_t()
Definition hexrays.hpp:5857
hexrays_failure_t(merror_t c, ea_t ea, const char *buf=nullptr)
Definition hexrays.hpp:5858
qstring hexapi desc() const
Definition hexrays.hpp:12157
qstring str
string information
Definition hexrays.hpp:5856
merror_t code
Microcode error code
Definition hexrays.hpp:5854
ea_t errea
associated address
Definition hexrays.hpp:5855
Warning instances.
Definition hexrays.hpp:4695
ea_t ea
Address where the warning occurred.
Definition hexrays.hpp:4696
qstring text
Fully formatted text of the warning.
Definition hexrays.hpp:4698
warnid_t id
Warning id.
Definition hexrays.hpp:4697
DECLARE_COMPARISONS(hexwarn_t)
Definition hexrays.hpp:4699
ea_t curr_ea
Current address.
Definition hexrays.hpp:8134
ea_t func_ea
The entry address of the decompiled function.
Definition hexrays.hpp:8133
ea_t end
BADADDR-decompile a function; otherwise end of the range.
Definition hexrays.hpp:8135
history_item_t(ea_t fea=BADADDR, ea_t cea=BADADDR, int _lnnum=-1, int _x=0, int _y=0)
Definition hexrays.hpp:8136
history_item_t(ea_t fea, ea_t cea, const ctext_position_t &p)
Definition hexrays.hpp:8138
Definition hexrays.hpp:1892
bool contains(uval_t off2) const
Definition hexrays.hpp:1949
bool extend_to_cover(const ivl_t &r)
Definition hexrays.hpp:1903
void print(qstring *vout) const
void intersect(const ivl_t &r)
Definition hexrays.hpp:1921
ivl_t(uval_t _off=0, uval_t _size=0)
Definition hexrays.hpp:1897
bool overlap(const ivl_t &ivl) const
Definition hexrays.hpp:1939
DECLARE_COMPARISONS(ivl_t)
void clear()
Definition hexrays.hpp:1899
bool empty() const
Definition hexrays.hpp:1898
bool includes(const ivl_t &ivl) const
Definition hexrays.hpp:1944
static const ivl_t allmem
Definition hexrays.hpp:1955
const char *hexapi dstr() const
Definition hexrays.hpp:10853
Definition hexrays.hpp:1876
T end() const
Definition hexrays.hpp:1883
ivl_tpl(T _off, T _size)
Definition hexrays.hpp:1881
uval_t off
Definition hexrays.hpp:1879
uval_t last() const
Definition hexrays.hpp:1884
bool valid() const
Definition hexrays.hpp:1882
uval_t size
Definition hexrays.hpp:1880
Definition hexrays.hpp:1962
const char * whole
Definition hexrays.hpp:1964
const char * part
Definition hexrays.hpp:1965
ivl_t ivl
Definition hexrays.hpp:1963
ivl_with_name_t()
Definition hexrays.hpp:1966
Definition hexrays.hpp:2019
asize_t hexapi count() const
Definition hexrays.hpp:10913
bool hexapi addmasked(const ivlset_t &ivs, const ivl_t &mask)
Definition hexrays.hpp:10877
ivlset_t()
Definition hexrays.hpp:2021
bool sub(ea_t ea, asize_t size)
Definition hexrays.hpp:2028
bool hexapi sub(const ivl_t &ivl)
Definition hexrays.hpp:10883
DECLARE_COMPARISONS(ivlset_t)
bool add(ea_t ea, asize_t size)
Definition hexrays.hpp:2024
bool hexapi add(const ivl_t &ivl)
Definition hexrays.hpp:10865
bool hexapi intersect(const ivlset_t &ivs)
Definition hexrays.hpp:10939
ivlset_t(const ivl_t &ivl)
Definition hexrays.hpp:2022
ivlset_tpl< ivl_t, uval_t > inherited
Definition hexrays.hpp:2020
bool hexapi includes(const ivlset_t &ivs) const
Definition hexrays.hpp:10933
const char *hexapi dstr() const
Definition hexrays.hpp:10907
bool hexapi contains(uval_t off) const
Definition hexrays.hpp:10927
bool hexapi has_common(const ivl_t &ivl, bool strict=false) const
Definition hexrays.hpp:10895
void hexapi print(qstring *vout) const
Definition hexrays.hpp:10901
Local variable locator.
Definition hexrays.hpp:1141
bool is_reg2() const
Is variable located on two registers?
Definition hexrays.hpp:1161
bool is_reg1() const
Is variable located on one register?
Definition hexrays.hpp:1159
const scattered_aloc_t & get_scattered() const
Get information about scattered variable.
Definition hexrays.hpp:1173
HEXRAYS_MEMORY_ALLOCATION_FUNCS() const char *hexapi dstr() const
ea_t defea
Definition address.
Definition hexrays.hpp:1143
bool is_scattered() const
Is variable scattered?
Definition hexrays.hpp:1167
scattered_aloc_t & get_scattered()
Definition hexrays.hpp:1174
sval_t get_stkoff() const
Get offset of the varialbe in the stack frame.
Definition hexrays.hpp:1154
bool is_stk_var() const
Is variable located on the stack?
Definition hexrays.hpp:1165
bool is_reg_var() const
Is variable located on register(s)?
Definition hexrays.hpp:1163
mreg_t get_reg2() const
Get the number of the second register (works only for ALOC_REG2 lvars)
Definition hexrays.hpp:1171
vdloc_t location
Variable location.
Definition hexrays.hpp:1142
mreg_t get_reg1() const
Get the register number of the variable.
Definition hexrays.hpp:1169
DECLARE_COMPARISONS(lvar_locator_t)
lvar_locator_t(const vdloc_t &loc, ea_t ea)
Definition hexrays.hpp:1148
lvar_locator_t()
Definition hexrays.hpp:1147
Definition hexrays.hpp:9271
bool operator==(const lvar_mapping_iterator_t &p) const
Definition hexrays.hpp:9273
iterator_word x
Definition hexrays.hpp:9272
bool operator!=(const lvar_mapping_iterator_t &p) const
Definition hexrays.hpp:9274
Reference to a local variable. Used by mop_l.
Definition hexrays.hpp:2389
lvar_ref_t(mba_t *m, int i, sval_t o=0)
Definition hexrays.hpp:2400
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void swap(lvar_ref_t &r)
Definition hexrays.hpp:2409
int idx
index into mba->vars
Definition hexrays.hpp:2399
mba_t *const mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2397
lvar_t &hexapi var() const
Retrieve the referenced variable.
Definition hexrays.hpp:11079
sval_t off
offset from the beginning of the variable
Definition hexrays.hpp:2398
lvar_ref_t & operator=(const lvar_ref_t &r)
Definition hexrays.hpp:2402
lvar_ref_t(const lvar_ref_t &r)
Definition hexrays.hpp:2401
DECLARE_COMPARISONS(lvar_ref_t)
Saved user settings for local variables: name, type, comment.
Definition hexrays.hpp:1463
bool is_nomap_lvar() const
Definition hexrays.hpp:1512
void set_keep()
Definition hexrays.hpp:1505
void clr_nomap_lvar()
Definition hexrays.hpp:1514
ssize_t size
Type size (if not initialized then -1)
Definition hexrays.hpp:1468
bool operator!=(const lvar_saved_info_t &r) const
Definition hexrays.hpp:1502
bool is_kept() const
Definition hexrays.hpp:1503
void clr_unused_lvar()
Definition hexrays.hpp:1517
qstring cmt
Comment.
Definition hexrays.hpp:1467
bool is_split_lvar() const
Definition hexrays.hpp:1506
void set_noptr_lvar()
Definition hexrays.hpp:1510
bool is_noptr_lvar() const
Definition hexrays.hpp:1509
void set_unused_lvar()
Definition hexrays.hpp:1516
bool operator==(const lvar_saved_info_t &r) const
Definition hexrays.hpp:1495
tinfo_t type
Type.
Definition hexrays.hpp:1466
void clr_noptr_lvar()
Definition hexrays.hpp:1511
int flags
saved user lvar info property bits
Definition hexrays.hpp:1469
lvar_locator_t ll
Variable locator.
Definition hexrays.hpp:1464
void clr_split_lvar()
Definition hexrays.hpp:1508
bool has_info() const
Definition hexrays.hpp:1486
void set_split_lvar()
Definition hexrays.hpp:1507
bool is_unused_lvar() const
Definition hexrays.hpp:1515
void set_nomap_lvar()
Definition hexrays.hpp:1513
qstring name
Name.
Definition hexrays.hpp:1465
void clear_keep()
Definition hexrays.hpp:1504
All user-defined information about local variables.
Definition hexrays.hpp:1527
void swap(lvar_uservec_t &r)
Definition hexrays.hpp:1547
void clear()
Definition hexrays.hpp:1554
int ulv_flags
Various flags. Possible values are from lvar_uservec_t property bits.
Definition hexrays.hpp:1545
uval_t stkoff_delta
Delta to add to IDA stack offset to calculate Hex-Rays stack offsets.
Definition hexrays.hpp:1537
lvar_mapping_t lmaps
Local variable mapping (used for merging variables)
Definition hexrays.hpp:1533
lvar_saved_infos_t lvvec
User-specified names, types, comments for lvars.
Definition hexrays.hpp:1530
bool empty() const
Definition hexrays.hpp:1561
lvar_saved_info_t * find_info(const lvar_locator_t &vloc)
find saved user settings for given var
Definition hexrays.hpp:1570
void keep_info(const lvar_t &v)
Preserve user settings for given var.
Definition hexrays.hpp:1581
Vector of local variables.
Definition hexrays.hpp:1420
int hexapi find_stkvar(sval_t spoff, int width)
Find a stack variable at the specified location.
Definition hexrays.hpp:10606
lvar_t *hexapi find(const lvar_locator_t &ll)
Find a variable at the specified location.
Definition hexrays.hpp:10612
int hexapi find_lvar(const vdloc_t &location, int width, int defblk=-1) const
Find a variable at the specified location.
Definition hexrays.hpp:10618
int find_input_lvar(const vdloc_t &argloc, int _size)
Find an input variable at the specified location.
Definition hexrays.hpp:1425
int find_input_reg(int reg, int _size=1)
Find an input register variable.
Definition hexrays.hpp:1432
Item iterator for mba_ranges_t.
Definition hexrays.hpp:4778
bool func_items_done
Definition hexrays.hpp:4781
ea_t current() const
Definition hexrays.hpp:4808
bool set(const mba_ranges_t &mbr)
Definition hexrays.hpp:4782
range_item_iterator_t rii
Definition hexrays.hpp:4779
bool next_code()
Definition hexrays.hpp:4795
func_item_iterator_t fii
Definition hexrays.hpp:4780
Chunk iterator for mba_ranges_t.
Definition hexrays.hpp:4826
bool is_snippet() const
Definition hexrays.hpp:4829
range_chunk_iterator_t rii
Definition hexrays.hpp:4827
bool next()
Definition hexrays.hpp:4837
bool set(const mba_ranges_t &mbr)
Definition hexrays.hpp:4830
func_tail_iterator_t fii
Definition hexrays.hpp:4828
const range_t & chunk() const
Definition hexrays.hpp:4844
Ranges to decompile. Either a function or an explicit vector of ranges.
Definition hexrays.hpp:4745
mba_ranges_t(func_t *_pfn=nullptr)
Definition hexrays.hpp:4749
bool is_fragmented() const
Definition hexrays.hpp:4756
void clear()
Definition hexrays.hpp:4753
ea_t start() const
Definition hexrays.hpp:4751
bool empty() const
Definition hexrays.hpp:4752
bool hexapi range_contains(ea_t ea) const
Definition hexrays.hpp:11793
bool is_snippet() const
Definition hexrays.hpp:4754
mba_ranges_t(const rangevec_t &r)
Definition hexrays.hpp:4750
rangevec_t ranges
snippet mode: ranges to decompile.
Definition hexrays.hpp:4747
func_t * pfn
function to decompile. if not null, then function mode.
Definition hexrays.hpp:4746
Generic microcode generator class.
Definition hexrays.hpp:1738
virtual merror_t apply(codegen_t &cdg)=0
generate microcode for an instruction
virtual bool match(codegen_t &cdg)=0
check if the filter object is to be applied
virtual ~microcode_filter_t()
Definition hexrays.hpp:1739
Micro instruction visitor.
Definition hexrays.hpp:2310
virtual int idaapi visit_minsn()=0
minsn_visitor_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2311
Definition hexrays.hpp:2348
virtual int idaapi visit_mop(mop_t *op)=0
minsn_t * curins
Definition hexrays.hpp:2350
bool prune
Should skip sub-operands of the current operand?
Definition hexrays.hpp:2355
mlist_t * list
Definition hexrays.hpp:2352
minsn_t * topins
Definition hexrays.hpp:2349
bool changed
Definition hexrays.hpp:2351
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual ~mlist_mop_visitor_t()
Definition hexrays.hpp:2357
Definition hexrays.hpp:2063
bool add(mreg_t r, int size)
Definition hexrays.hpp:2073
bool add(const rlist_t &r)
Definition hexrays.hpp:2074
const char *hexapi dstr() const
Definition hexrays.hpp:10975
bool has_any(mreg_t r, int size) const
Definition hexrays.hpp:2099
void clear()
Definition hexrays.hpp:2096
bool intersect(const mlist_t &lst)
Definition hexrays.hpp:2104
bool add(const mlist_t &lst)
Definition hexrays.hpp:2076
DECLARE_COMPARISONS(mlist_t)
bool sub(const mlist_t &lst)
Definition hexrays.hpp:2085
rlist_t reg
Definition hexrays.hpp:2064
mlist_t(const ivl_t &ivl)
Definition hexrays.hpp:2068
bool has_memory() const
Definition hexrays.hpp:2100
bool sub(mreg_t r, int size)
Definition hexrays.hpp:2083
bool includes(const mlist_t &lst) const
Definition hexrays.hpp:2103
ivlset_t mem
Definition hexrays.hpp:2065
bool sub(const ivl_t &ivl)
Definition hexrays.hpp:2084
bool hexapi addmem(ea_t ea, asize_t size)
Definition hexrays.hpp:10963
bool is_subset_of(const mlist_t &lst) const
Definition hexrays.hpp:2111
mlist_t()
Definition hexrays.hpp:2067
asize_t count() const
Definition hexrays.hpp:2092
bool add(const ivl_t &ivl)
Definition hexrays.hpp:2075
void swap(mlist_t &r)
Definition hexrays.hpp:2071
bool has_all(mreg_t r, int size) const
Definition hexrays.hpp:2098
bool has_allmem() const
Definition hexrays.hpp:2101
bool empty() const
Definition hexrays.hpp:2095
void hexapi print(qstring *vout) const
Definition hexrays.hpp:10969
bool has(mreg_t r) const
Definition hexrays.hpp:2097
bool has_common(const mlist_t &lst) const
Definition hexrays.hpp:2102
mlist_t(mreg_t r, int size)
Definition hexrays.hpp:2069
An integer constant.
Definition hexrays.hpp:2483
uint64 org_value
Definition hexrays.hpp:2485
void update_value(uint64 val64)
Definition hexrays.hpp:2498
mnumber_t(uint64 v, ea_t _ea=BADADDR, int n=0)
Definition hexrays.hpp:2486
uint64 value
Definition hexrays.hpp:2484
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(mnumber_t)
Definition hexrays.hpp:2488
Micro operand visitor.
Definition hexrays.hpp:2323
mop_visitor_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2328
bool prune
Should skip sub-operands of the current operand?
Definition hexrays.hpp:2326
virtual int idaapi visit_mop(mop_t *op, const tinfo_t *type, bool is_target)=0
The context info used by visitors.
Definition hexrays.hpp:2290
op_parent_info_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2296
mblock_t * blk
Definition hexrays.hpp:2292
virtual ~op_parent_info_t()
Definition hexrays.hpp:2301
minsn_t * topins
Definition hexrays.hpp:2293
minsn_t * curins
Definition hexrays.hpp:2294
mba_t * mba
Definition hexrays.hpp:2291
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool really_alloc() const
Operand locator.
Definition hexrays.hpp:796
ea_t ea
address of the original processor instruction
Definition hexrays.hpp:801
operand_locator_t(ea_t _ea, int _opnum)
Definition hexrays.hpp:803
DECLARE_COMPARISONS(operand_locator_t)
int opnum
operand number in the instruction
Definition hexrays.hpp:802
User defined callback to optimize microcode blocks.
Definition hexrays.hpp:2193
virtual ~optblock_t()
Definition hexrays.hpp:2194
virtual int idaapi func(mblock_t *blk)=0
Optimize a block.
User defined callback to optimize individual microcode instructions.
Definition hexrays.hpp:2161
virtual ~optinsn_t()
Definition hexrays.hpp:2162
virtual int idaapi func(mblock_t *blk, minsn_t *ins, int optflags)=0
Optimize an instruction.
Helper class to convert cfunc_t into a text string.
Definition hexrays.hpp:924
AS_PRINTF(3, 4) int hexapi print(int indent
Print.
const char * format
Definition hexrays.hpp:936
const char override
Definition hexrays.hpp:936
bool with_tags
Generate output with color tags.
Definition hexrays.hpp:925
qstring & s
Reference to the output string.
Definition hexrays.hpp:926
qstring_printer_t(const cfunc_t *f, qstring &_s, bool tags)
Constructor.
Definition hexrays.hpp:928
Chunk iterator of arbitrary rangevec items.
Definition hexrays.hpp:4816
const range_t & chunk() const
Definition hexrays.hpp:4821
const range_t * rptr
Definition hexrays.hpp:4817
const range_t * rend
Definition hexrays.hpp:4818
bool next()
Definition hexrays.hpp:4820
bool set(const rangevec_t &r)
Definition hexrays.hpp:4819
Item iterator of arbitrary rangevec items.
Definition hexrays.hpp:4767
ea_t cur
Definition hexrays.hpp:4770
const rangevec_t * ranges
Definition hexrays.hpp:4768
bool set(const rangevec_t &r)
ea_t current() const
Definition hexrays.hpp:4773
const range_t * rptr
Definition hexrays.hpp:4769
Base class for an range.
Definition range.hpp:35
ea_t end_ea
end_ea excluded
Definition range.hpp:38
ea_t start_ea
start_ea included
Definition range.hpp:37
Vector of range_t instances.
Definition range.hpp:93
Scattered operand info. Used for mop_sc.
Definition hexrays.hpp:2449
scif_t(mba_t *_mba, tinfo_t *tif, qstring *n=nullptr)
Definition hexrays.hpp:2466
tinfo_t type
Scattered operands always have type info assigned to them because without it we won't be able to mani...
Definition hexrays.hpp:2464
mba_t * mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2455
qstring name
Usually scattered operands are created from a function prototype, which has the name information.
Definition hexrays.hpp:2460
Scattered mop: visit each of the scattered locations as a separate mop.
Definition hexrays.hpp:2339
virtual int idaapi visit_scif_mop(const mop_t &r, int off)=0
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual ~scif_visitor_t()
Definition hexrays.hpp:2340
Reference to a stack variable. Used for mop_S.
Definition hexrays.hpp:2421
sval_t off
Offset to the stack variable from the bottom of the stack frame.
Definition hexrays.hpp:2430
mba_t *const mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2425
ssize_t hexapi get_stkvar(udm_t *udm=nullptr, uval_t *p_idaoff=nullptr) const
Retrieve the referenced stack variable.
Definition hexrays.hpp:11091
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void swap(stkvar_ref_t &r)
Definition hexrays.hpp:2434
stkvar_ref_t(mba_t *m, sval_t o)
Definition hexrays.hpp:2432
DECLARE_COMPARISONS(stkvar_ref_t)
Ctree location. Used to denote comment locations.
Definition hexrays.hpp:6255
ea_t ea
Definition hexrays.hpp:6256
item_preciser_t itp
Definition hexrays.hpp:6257
Definition hexrays.hpp:9380
bool operator==(const udcall_map_iterator_t &p) const
Definition hexrays.hpp:9382
iterator_word x
Definition hexrays.hpp:9381
bool operator!=(const udcall_map_iterator_t &p) const
Definition hexrays.hpp:9383
User-defined function calls.
Definition hexrays.hpp:1679
qstring name
Definition hexrays.hpp:1680
DECLARE_COMPARISONS(udcall_t)
Definition hexrays.hpp:1682
tinfo_t tif
Definition hexrays.hpp:1681
bool empty() const
Definition hexrays.hpp:1690
An object to represent struct or union members.
Definition typeinf.hpp:5300
Definition typeinf.hpp:5441
Callback to apply the selection.
Definition hexrays.hpp:8483
virtual ~ui_stroff_applicator_t()
Definition hexrays.hpp:8484
virtual bool idaapi apply(size_t opnum, const intvec_t &path, const tinfo_t &top_tif, const char *spath)=0
Select UDT for the operands using "Select offsets" widget.
Definition hexrays.hpp:8468
uval_t offset
operand offset, will be used when calculating the UDT path
Definition hexrays.hpp:8470
bool operator==(const ui_stroff_op_t &r) const
Definition hexrays.hpp:8471
qstring text
any text for the column "Operand" of widget
Definition hexrays.hpp:8469
bool operator!=(const ui_stroff_op_t &r) const
Definition hexrays.hpp:8475
Definition hexrays.hpp:9489
bool operator==(const user_cmts_iterator_t &p) const
Definition hexrays.hpp:9491
bool operator!=(const user_cmts_iterator_t &p) const
Definition hexrays.hpp:9492
iterator_word x
Definition hexrays.hpp:9490
Definition hexrays.hpp:9598
iterator_word x
Definition hexrays.hpp:9599
bool operator!=(const user_iflags_iterator_t &p) const
Definition hexrays.hpp:9601
bool operator==(const user_iflags_iterator_t &p) const
Definition hexrays.hpp:9600
Definition hexrays.hpp:9816
bool operator==(const user_labels_iterator_t &p) const
Definition hexrays.hpp:9818
bool operator!=(const user_labels_iterator_t &p) const
Definition hexrays.hpp:9819
iterator_word x
Definition hexrays.hpp:9817
Helper class to modify saved local variable settings.
Definition hexrays.hpp:1606
virtual ~user_lvar_modifier_t()
Definition hexrays.hpp:1607
virtual bool idaapi modify_lvars(lvar_uservec_t *lvinf)=0
Modify lvar settings.
Definition hexrays.hpp:9707
bool operator!=(const user_unions_iterator_t &p) const
Definition hexrays.hpp:9710
bool operator==(const user_unions_iterator_t &p) const
Definition hexrays.hpp:9709
iterator_word x
Definition hexrays.hpp:9708
Reference to a local variable.
Definition hexrays.hpp:6187
lvar_t & getv() const
Definition hexrays.hpp:6190
int idx
index into lvars_t
Definition hexrays.hpp:6189
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(var_ref_t)
mba_t * mba
pointer to the underlying micro array
Definition hexrays.hpp:6188
Helper class to convert cfunc_t into text.
Definition hexrays.hpp:897
char lastchar
internal: last printed character
Definition hexrays.hpp:899
const cfunc_t * func
cfunc_t to generate text for
Definition hexrays.hpp:898
vc_printer_t(const cfunc_t *f)
Constructor.
Definition hexrays.hpp:901
virtual bool idaapi oneliner() const newapi
Are we generating one-line text representation?
Definition hexrays.hpp:904
vd_failure_t()
Definition hexrays.hpp:5868
vd_failure_t(const hexrays_failure_t &_hf)
Definition hexrays.hpp:5871
hexrays_failure_t hf
Definition hexrays.hpp:5867
~vd_failure_t()
Definition hexrays.hpp:5877
vd_failure_t(merror_t code, ea_t ea, const char *buf=nullptr)
Definition hexrays.hpp:5869
virtual const char * what() const noexcept override
Definition hexrays.hpp:5874
qstring desc() const
Definition hexrays.hpp:5872
vd_failure_t(merror_t code, ea_t ea, const qstring &buf)
Definition hexrays.hpp:5870
vd_interr_t(ea_t ea, const qstring &buf)
Definition hexrays.hpp:5885
vd_interr_t(ea_t ea, const char *buf)
Definition hexrays.hpp:5886
Base helper class to convert binary data structures into text.
Definition hexrays.hpp:881
qstring tmpbuf
Definition hexrays.hpp:882
int hdrlines
number of header lines (prototype+typedef+lvars) valid at the end of print process
Definition hexrays.hpp:883
const char * format
Definition hexrays.hpp:891
AS_PRINTF(3, 4) virtual int hexapi print(int indent
Print.
Information about the pseudocode window.
Definition hexrays.hpp:8159
bool visible() const
Is the pseudocode window visible?
Definition hexrays.hpp:8170
bool hexapi rename_label(int label)
Rename a label.
Definition hexrays.hpp:13142
TWidget * ct
pseudocode view
Definition hexrays.hpp:8184
merror_t last_code
result of the last user action. See Microcode error code
Definition hexrays.hpp:8189
bool hexapi collapse_lvars(bool hide)
Collapse/uncollapse local variable declarations.
Definition hexrays.hpp:13220
bool hexapi set_lvar_cmt(lvar_t *v, const char *cmt)
Set local variable comment.
Definition hexrays.hpp:13094
bool hexapi set_global_type(ea_t ea)
Set global item type.
Definition hexrays.hpp:13130
void set_valid(bool v)
Definition hexrays.hpp:8180
bool hexapi refresh_cpos(input_device_t idv)
Refresh the current position.
Definition hexrays.hpp:13040
bool hexapi set_lvar_type(lvar_t *v, const tinfo_t &type)
Set local variable type.
Definition hexrays.hpp:13076
void hexapi refresh_ctext(bool activate=true)
Refresh pseudocode window.
Definition hexrays.hpp:13010
TWidget * toplevel
Definition hexrays.hpp:8185
ctree_item_t head
First ctree item on the current line (for block comments)
Definition hexrays.hpp:8193
bool hexapi map_lvar(lvar_t *from, lvar_t *to)
Map a local variable to another.
Definition hexrays.hpp:13112
bool hexapi invert_bits()
Bitwise negate a number.
Definition hexrays.hpp:13208
bool hexapi ui_map_lvar(lvar_t *v)
Map a local variable to another.
Definition hexrays.hpp:13100
void hexapi refresh_view(bool redo_mba)
Refresh pseudocode window.
Definition hexrays.hpp:13004
bool hexapi set_noptr_lvar(lvar_t *v)
Inform that local variable should have a non-pointer type This function permanently sets a correspond...
Definition hexrays.hpp:13082
int hexapi get_current_label()
Get current label.
Definition hexrays.hpp:13028
bool valid() const
Does the pseudocode window contain valid code?
Definition hexrays.hpp:8173
bool hexapi ui_set_lvar_type(lvar_t *v)
Set local variable type.
Definition hexrays.hpp:13070
void hexapi clear()
Clear the pseudocode window.
Definition hexrays.hpp:13034
bool hexapi ui_rename_lvar(lvar_t *v)
Rename local variable.
Definition hexrays.hpp:13052
ctree_item_t item
Current ctree item.
Definition hexrays.hpp:8194
ctext_position_t cpos
Current ctext position.
Definition hexrays.hpp:8192
bool hexapi invert_sign()
Negate a number.
Definition hexrays.hpp:13202
void set_visible(bool v)
Definition hexrays.hpp:8179
bool in_ctree() const
Is the current item a statement?
Definition hexrays.hpp:8226
bool hexapi edit_cmt(const treeloc_t &loc)
Edit an indented comment.
Definition hexrays.hpp:13166
int view_idx
pseudocode window index (0..)
Definition hexrays.hpp:8183
bool hexapi set_num_radix(int base)
Change number base.
Definition hexrays.hpp:13184
bool hexapi edit_func_cmt()
Edit a function comment.
Definition hexrays.hpp:13172
void hexapi switch_to(cfuncptr_t f, bool activate)
Display the specified pseudocode.
Definition hexrays.hpp:13016
bool hexapi del_orphan_cmts()
Delete all orphan comments.
Definition hexrays.hpp:13178
bool hexapi collapse_item(bool hide)
Collapse/uncollapse item.
Definition hexrays.hpp:13214
mba_t * mba
pointer to underlying microcode
Definition hexrays.hpp:8187
bool hexapi jump_enter(input_device_t idv, int omflags)
Process the Enter key.
Definition hexrays.hpp:13148
bool hexapi split_item(bool split)
Split/unsplit item.
Definition hexrays.hpp:13226
cfuncptr_t cfunc
pointer to function object
Definition hexrays.hpp:8188
bool hexapi set_udm_type(tinfo_t &udt_type, int udm_idx)
Set structure field type.
Definition hexrays.hpp:13118
bool hexapi rename_global(ea_t ea)
Rename global item.
Definition hexrays.hpp:13136
bool hexapi rename_lvar(lvar_t *v, const char *name, bool is_user_name)
Rename local variable.
Definition hexrays.hpp:13058
int flags
Properties of pseudocode window
Definition hexrays.hpp:8160
cmt_type_t hexapi calc_cmt_type(size_t lnnum, cmt_type_t cmttype) const
Check if the specified line can have a comment.
Definition hexrays.hpp:13160
bool hexapi get_current_item(input_device_t idv)
Get current item.
Definition hexrays.hpp:13046
bool hexapi ui_set_call_type(const cexpr_t *e)
Set type of a function call This function displays a dialog box and allows the user to change the typ...
Definition hexrays.hpp:13064
bool hexapi ctree_to_disasm()
Jump to disassembly.
Definition hexrays.hpp:13154
bool hexapi set_num_enum()
Convert number to symbolic constant.
Definition hexrays.hpp:13190
bool hexapi ui_edit_lvar_cmt(lvar_t *v)
Set local variable comment.
Definition hexrays.hpp:13088
bool hexapi rename_udm(tinfo_t &udt_type, int udm_idx)
Rename structure field.
Definition hexrays.hpp:13124
ctree_item_t tail
Tail ctree item on the current line (for indented comments)
Definition hexrays.hpp:8195
cnumber_t *hexapi get_number()
Get current number.
Definition hexrays.hpp:13022
bool hexapi ui_unmap_lvar(lvar_t *v)
Unmap a local variable.
Definition hexrays.hpp:13106
bool locked() const
Does the pseudocode window contain valid code?
Definition hexrays.hpp:8178
bool hexapi set_locked(bool v)
Definition hexrays.hpp:12998
bool hexapi set_num_stroff()
Convert number to structure field offset.
Definition hexrays.hpp:13196
Value interval (register or stack range)
Definition hexrays.hpp:3381
DECLARE_COMPARISONS(vivl_t)
Definition hexrays.hpp:3426
uval_t hexapi intersect(const vivl_t &r)
Intersect value intervals the same type.
Definition hexrays.hpp:11399
void set(mopt_t _type, sval_t _off, int _size=0)
Definition hexrays.hpp:3390
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11407
void set(const voff_t &voff, int _size)
Definition hexrays.hpp:3392
vivl_t(mopt_t _type=mop_z, sval_t _off=-1, int _size=0)
Definition hexrays.hpp:3384
bool overlap(const vivl_t &r) const
Do two value intervals overlap?
Definition hexrays.hpp:3406
bool contains(const voff_t &voff2) const
Does our value interval contain the specified value offset?
Definition hexrays.hpp:3419
void set_stkoff(sval_t stkoff, int sz=0)
Definition hexrays.hpp:3394
vivl_t(const class chain_t &ch)
int size
Interval size in bytes.
Definition hexrays.hpp:3382
void set_reg(mreg_t mreg, int sz=0)
Definition hexrays.hpp:3395
bool includes(const vivl_t &r) const
Does our value interval include another?
Definition hexrays.hpp:3412
const char *hexapi dstr() const
Definition hexrays.hpp:11413
bool operator==(const mop_t &mop) const
Definition hexrays.hpp:3431
bool hexapi extend_to_cover(const vivl_t &r)
Extend a value interval using another value interval of the same type.
Definition hexrays.hpp:11393
vivl_t(const mop_t &op)
Definition hexrays.hpp:3387
Value offset (microregister number or stack offset)
Definition hexrays.hpp:3344
mreg_t get_reg() const
Definition hexrays.hpp:3364
sval_t diff(const voff_t &r) const
Definition hexrays.hpp:3369
void set(mopt_t _type, sval_t _off)
Definition hexrays.hpp:3356
void undef()
Definition hexrays.hpp:3359
bool is_stkoff() const
Definition hexrays.hpp:3363
voff_t(const mop_t &op)
Definition hexrays.hpp:3350
sval_t off
register number or stack offset
Definition hexrays.hpp:3345
bool defined() const
Definition hexrays.hpp:3361
void inc(sval_t delta)
Definition hexrays.hpp:3367
DECLARE_COMPARISONS(voff_t)
Definition hexrays.hpp:3371
voff_t add(int width) const
Definition hexrays.hpp:3368
voff_t(mopt_t _type, sval_t _off)
Definition hexrays.hpp:3349
void set_reg(mreg_t mreg)
Definition hexrays.hpp:3358
mopt_t type
mop_r - register, mop_S - stack, mop_z - undefined
Definition hexrays.hpp:3346
sval_t get_stkoff() const
Definition hexrays.hpp:3365
void set_stkoff(sval_t stkoff)
Definition hexrays.hpp:3357
bool is_reg() const
Definition hexrays.hpp:3362
voff_t()
Definition hexrays.hpp:3348
THREAD_SAFE bool is_type_func(type_t t)
See BT_FUNC.
Definition typeinf.hpp:451
THREAD_SAFE bool is_type_array(type_t t)
See BT_ARRAY.
Definition typeinf.hpp:452
const size_t BADSIZE
bad type size
Definition typeinf.hpp:2021
THREAD_SAFE bool operator<(const bytevec_t &v1, const bytevec_t &v2)
Compare two bytevecs with '<'.
Definition typeinf.hpp:631
THREAD_SAFE bool is_type_ptr(type_t t)
See BT_PTR.
Definition typeinf.hpp:449
idaman size_t ida_export get_dtype_size(op_dtype_t dtype)
Get size of opt_::dtype field.
qvector< svalvec_t > casevec_t
Vector of case values - see calc_switch_cases()
Definition xref.hpp:402