231#pragma warning(disable:4062)
232#pragma warning(disable:4265)
255class control_graph_t;
290#define MAX_SUPPORTED_STACK_SIZE 0x100000
295#define HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {}
296#define HEXRAYS_MEMORY_ALLOCATION_FUNCS() \
297 void *operator new (size_t _s) { return hexrays_alloc(_s); } \
298 void *operator new[](size_t _s) { return hexrays_alloc(_s); } \
299 void *operator new(size_t , void *_v) { return _v; } \
300 void operator delete (void *_blk) { hexrays_free(_blk); } \
301 void operator delete[](void *_blk) { hexrays_free(_blk); } \
302 HEXRAYS_PLACEMENT_DELETE
364 return cmpop ==
CMP_A
380#define VLR_RANGE 0x03
381#define VLR_SRANGE 0x04
385#define VLR_UNION 0x07
450 const char *hexapi
dstr()
const;
572 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
585 virtual const char *
what() const noexcept
override {
return "decompilation failure"; }
590 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
729 return mcode ==
m_add
742 return mcode ==
m_shl
831struct operand_locator_t
835 operand_locator_t() {}
841 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
856#define NF_NEGDONE 0x02
857#define NF_BINVDONE 0x04
858#define NF_NEGATE 0x08
859#define NF_BITNOT 0x10
895 return (
props & (NF_NEGATE|NF_BITNOT)) != 0
896 && (
props & (NF_NEGDONE|NF_BINVDONE)) == 0;
907 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
928 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
940 virtual bool idaapi
oneliner() const newapi {
return false; }
1026 return type.is_decl_complex() && !
type.is_typeref();
1147 int reg1()
const {
return atype() ==
ALOC_REG2 ? argloc_t::reg1() : get_reginfo(); }
1162 const char *hexapi
dstr(
int width=0)
const;
1216 const
char *hexapi
dstr() const;
1229#define CVAR_USED 0x00000001
1230#define CVAR_TYPE 0x00000002
1231#define CVAR_NAME 0x00000004
1232#define CVAR_MREG 0x00000008
1233#define CVAR_NOWD 0x00000010
1234#define CVAR_UNAME 0x00000020
1235#define CVAR_UTYPE 0x00000040
1236#define CVAR_RESULT 0x00000080
1237#define CVAR_ARG 0x00000100
1238#define CVAR_FAKE 0x00000200
1239#define CVAR_OVER 0x00000400
1240#define CVAR_FLOAT 0x00000800
1241#define CVAR_SPOILED 0x00001000
1242#define CVAR_MAPDST 0x00002000
1243#define CVAR_PARTIAL 0x00004000
1244#define CVAR_THISARG 0x00008000
1245#define CVAR_SPLIT 0x00010000
1247#define CVAR_REGNAME 0x00020000
1249#define CVAR_NOPTR 0x00040000
1250#define CVAR_DUMMY 0x00080000
1252#define CVAR_NOTARG 0x00100000
1253#define CVAR_AUTOMAP 0x00200000
1254#define CVAR_BYREF 0x00400000
1255#define CVAR_INASM 0x00800000
1257#define CVAR_UNUSED 0x01000000
1259#define CVAR_SHARED 0x02000000
1260#define CVAR_SCARG 0x04000000
1262#define CVAR_NOPROP 0x08000000
1263#define CVAR_CATCH 0x10000000
1283 const char *hexapi
dstr()
const;
1286 bool used()
const {
return (flags & CVAR_USED) != 0; }
1288 bool typed()
const {
return (flags & CVAR_TYPE) != 0; }
1298 return (flags & (CVAR_UNAME|CVAR_UTYPE|CVAR_NOPTR|CVAR_UNUSED|CVAR_NOPROP)) != 0
1310 bool hexapi is_promoted_arg()
const;
1332 bool in_asm()
const {
return (flags & CVAR_INASM) != 0; }
1336 bool is_notarg()
const {
return (flags & CVAR_NOTARG) != 0; }
1344 bool is_shared()
const {
return (flags & CVAR_SHARED) != 0; }
1348 bool is_noprop()
const {
return (flags & CVAR_NOPROP) != 0; }
1415 bool hexapi accepts_type(
const tinfo_t &
t,
bool may_change_thisarg=
false);
1426 bool hexapi set_lvar_type(
const tinfo_t &
t,
bool may_fail=
false);
1441 bool hexapi set_width(
int w,
int svw_flags=0);
1443#define SVW_FLOAT 0x01
1444#define SVW_SOFT 0x02
1451 void hexapi append_list(
const mba_t *mba,
mlist_t *lst,
bool pad_if_scattered=
false)
const;
1491 int hexapi find_stkvar(
sval_t spoff,
int width);
1505 int hexapi find_lvar(
const vdloc_t &location,
size_t width,
int defblk=-1)
const;
1520#define LVINF_KEEP 0x0001
1526#define LVINF_SPLIT 0x0002
1529#define LVINF_NOPTR 0x0004
1530#define LVINF_NOMAP 0x0008
1531#define LVINF_UNUSED 0x0010
1532#define LVINF_NOPROP 0x0020
1536 return !
name.empty()
1594#define ULV_PRECISE_DEFEA 0x0001
1615 return lvvec.empty()
1626 if ( p->ll == vloc )
1686#define MLI_NAME 0x01
1687#define MLI_TYPE 0x02
1689#define MLI_SET_FLAGS 0x08
1690#define MLI_CLR_FLAGS 0x10
1705 const char *varname);
1718 const char *oldname,
1719 const char *newname)
1724 info.
name = newname;
1822 void hexapi cleanup();
1827 bool hexapi
init(
const char *decl);
1830 bool empty()
const {
return udc.empty(); }
1855 std::swap(bitmap, r.bitmap);
1856 std::swap(high, r.high);
1860 bool hexapi add(
int bit);
1861 bool hexapi add(
int bit,
int width);
1862 bool hexapi add(
const bitset_t &ml);
1863 bool hexapi sub(
int bit);
1864 bool hexapi sub(
int bit,
int width);
1865 bool hexapi sub(
const bitset_t &ml);
1866 bool hexapi cut_at(
int maxbit);
1868 bool hexapi has(
int bit)
const;
1869 bool hexapi has_all(
int bit,
int width)
const;
1870 bool hexapi has_any(
int bit,
int width)
const;
1873 int (*get_bit_name)(
qstring *out,
int bit,
int width,
void *ud)=
nullptr,
1874 void *ud=
nullptr)
const;
1875 const char *hexapi
dstr()
const;
1876 bool hexapi
empty()
const;
1877 int hexapi
count()
const;
1878 int hexapi
count(
int bit)
const;
1879 int hexapi
last()
const;
1881 void hexapi fill_with_ones(
int maxbit);
1882 bool hexapi fill_gaps(
int total_nbits);
1883 bool hexapi has_common(
const bitset_t &ml)
const;
1884 bool hexapi intersect(
const bitset_t &ml);
1885 bool hexapi is_subset_of(
const bitset_t &ml)
const;
1895 iterator(
int n=-1) : i(
n) {}
1896 bool operator==(
const iterator &
n)
const {
return i ==
n.i; }
1897 bool operator!=(
const iterator &
n)
const {
return i !=
n.i; }
1898 int operator*()
const {
return i; }
1901 iterator
itat(
int n)
const {
return iterator(goup(
n)); }
1903 iterator
end()
const {
return iterator(high); }
1906 void inc(iterator &p,
int n=1)
const { p.i = goup(p.i+
n); }
1908 int hexapi goup(
int reg)
const;
1939 const char *hexapi
dstr()
const;
1944 bool changed =
false;
1950 if ( new_end < r.
end() )
1963 if ( new_end > r.
end() )
1965 if ( new_off < new_end )
1994 static
ivl_t allmem() {
return ivl_t(0, BADADDR); }
1995#define ALLMEM ivl_t::allmem()
2006 DEFINE_MEMORY_ALLOCATION_FUNCS()
2049 bool hexapi add(
const ivl_t &ivl);
2051 bool hexapi add(
const ivlset_t &ivs);
2052 bool hexapi addmasked(
const ivlset_t &ivs,
const ivl_t &mask);
2053 bool hexapi sub(
const ivl_t &ivl);
2055 bool hexapi sub(
const ivlset_t &ivs);
2057 bool hexapi has_common(
const ivlset_t &ivs)
const;
2058 bool hexapi has_common(
const ivl_t &ivl,
bool strict=
false)
const;
2059 bool hexapi contains(
uint64 off)
const;
2060 bool hexapi includes(
const ivlset_t &ivs)
const;
2061 bool hexapi intersect(
const ivlset_t &ivs);
2074 void hexapi print(
qstring *vout)
const;
2075 const char *hexapi
dstr()
const;
2095 const char *hexapi
dstr()
const;
2117 bool changed =
reg.add(lst.
reg);
2126 bool changed =
reg.sub(lst.
reg);
2132 void hexapi print(
qstring *vout)
const;
2133 const char *hexapi
dstr()
const;
2145 bool changed =
reg.intersect(lst.
reg);
2146 if (
mem.intersect(lst.
mem) )
2153 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
2274 virtual
bool ignore_edge(
int ,
int ) const
newapi {
return false; }
2277 void hexapi compute_immediate_dominators(
2280 bool post=
false)
const;
2303 iterator(
int n) : i(
n) {}
2314 virtual int hexapi goup(
int node)
const newapi;
2336 mba_t *_mba=
nullptr,
2342 bool really_alloc() const;
2351 mba_t *_mba=
nullptr,
2368 mba_t *_mba=
nullptr,
2451 std::swap(
off, r.off);
2452 std::swap(
idx, r.idx);
2454 lvar_t &hexapi var()
const;
2476 std::swap(
off, r.off);
2530 if (
value < r.value )
2532 if (
value > r.value )
2553 void hexapi print(
qstring *vout)
const;
2554 const char *hexapi
dstr()
const;
2575#define SHINS_NUMADDR 0x01
2576#define SHINS_VALNUM 0x02
2577#define SHINS_SHORT 0x04
2578#define SHINS_LDXEA 0x08
2579#define SHINS_NOEA 0x10
2605 void hexapi copy(
const mop_t &rop);
2612#define OPROP_IMPDONE 0x01
2613#define OPROP_UDT 0x02
2614#define OPROP_FLOAT 0x04
2615#define OPROP_CCFLAGS 0x08
2618#define OPROP_UDEFVAL 0x10
2619#define OPROP_LOWADDR 0x20
2620#define OPROP_ABI 0x40
2670 return (
oprops & OPROP_CCFLAGS) != 0
2694 void hexapi erase();
2697 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
2698 const char *hexapi
dstr()
const;
2729 void hexapi create_from_vdloc(
mba_t *mba,
const vdloc_t &loc,
int _size);
2740 void hexapi create_from_scattered_vdloc(
2751 void hexapi create_from_insn(
const minsn_t *m);
2758 void hexapi make_number(
uint64 _value,
int _size,
ea_t _ea=BADADDR,
int opnum=0);
2765 bool hexapi make_fpnum(
const void *bytes,
size_t _size);
2802 void hexapi _make_gvar(
ea_t ea);
2804 void hexapi make_gvar(
ea_t ea);
2822 void hexapi make_reg_pair(
int loreg,
int hireg,
int halfsize);
2829 void _make_insn(
minsn_t *ins);
2848 void hexapi make_helper(
const char *name);
2911 static bool hexapi is_bit_reg(
mreg_t reg);
2922 bool is_glbaddr()
const;
2924 bool is_glbaddr(
ea_t ea)
const;
2926 bool is_stkaddr()
const;
2933 bool has_side_effects(
bool include_ldx_and_divs=
false)
const;
2935 bool hexapi may_use_aliased_memory()
const;
2940 bool hexapi is01()
const;
2948 int hexapi get_bitwidth(
2957 bool hexapi is_sign_extended_from(
int nbytes)
const;
2964 bool hexapi is_zero_extended_from(
int nbytes)
const;
2982 bool hexapi equal_mops(
const mop_t &rop,
int eqflags)
const;
3000 int hexapi for_all_ops(
3003 bool is_target=
false);
3030 bool hexapi is_constant(
uint64 *out=
nullptr,
bool is_signed=
true)
const;
3059 return s->get_stkvar(udm, p_idaoff);
3067 bool hexapi get_stkoff(
sval_t *p_vdoff)
const;
3086 bool hexapi make_low_half(
int width);
3092 bool hexapi make_high_half(
int width);
3098 bool hexapi make_first_half(
int width);
3104 bool hexapi make_second_half(
int width);
3115 bool hexapi shift_mop(
int offset);
3141 bool hexapi preserve_side_effects(
3144 bool *moved_calls=
nullptr);
3152 void hexapi apply_ld_mcode(
mcode_t mcode,
ea_t ea,
int newsize);
3164 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
3211 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3212 const char *hexapi
dstr()
const;
3213 void hexapi set_regarg(
mreg_t mr,
int sz,
const tinfo_t &tif);
3343#define FUNC_NAME_MEMCPY "memcpy"
3344#define FUNC_NAME_WMEMCPY "wmemcpy"
3345#define FUNC_NAME_MEMSET "memset"
3346#define FUNC_NAME_WMEMSET "wmemset"
3347#define FUNC_NAME_MEMSET32 "memset32"
3348#define FUNC_NAME_MEMSET64 "memset64"
3349#define FUNC_NAME_STRCPY "strcpy"
3350#define FUNC_NAME_WCSCPY "wcscpy"
3351#define FUNC_NAME_STRLEN "strlen"
3352#define FUNC_NAME_WCSLEN "wcslen"
3353#define FUNC_NAME_STRCAT "strcat"
3354#define FUNC_NAME_WCSCAT "wcscat"
3355#define FUNC_NAME_TAIL "tail"
3356#define FUNC_NAME_VA_ARG "va_arg"
3357#define FUNC_NAME_EMPTY "$empty"
3358#define FUNC_NAME_PRESENT "$present"
3359#define FUNC_NAME_CONTAINING_RECORD "CONTAINING_RECORD"
3360#define FUNC_NAME_MORESTACK "runtime_morestack"
3366#define MAX_FUNC_ARGS 64
3399#define FCI_PROP 0x001
3400#define FCI_DEAD 0x002
3401#define FCI_FINAL 0x004
3402#define FCI_NORET 0x008
3403#define FCI_PURE 0x010
3404#define FCI_NOSIDE 0x020
3405#define FCI_SPLOK 0x040
3410#define FCI_HASCALL 0x080
3413#define FCI_HASFMT 0x100
3415#define FCI_EXPLOCS 0x400
3429 void hexapi print(
qstring *vout,
int size=-1,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3430 const char *hexapi
dstr()
const;
3446 void hexapi print(
qstring *vout)
const;
3447 const char *hexapi
dstr()
const;
3508 bool hexapi extend_to_cover(
const vivl_t &r);
3537 int code = voff_t::compare(r);
3544 void hexapi print(
qstring *vout)
const;
3545 const char *hexapi
dstr()
const;
3563#define CHF_INITED 0x01
3564#define CHF_REPLACED 0x02
3565#define CHF_OVER 0x04
3566#define CHF_FAKE 0x08
3567#define CHF_PASSTHRU 0x10
3568#define CHF_TERM 0x20
3600 void hexapi print(
qstring *vout)
const;
3601 const char *hexapi
dstr()
const;
3603 void hexapi append_list(
const mba_t *mba,
mlist_t *list)
const;
3614 using typename base_t::iterator;
3615 using typename base_t::const_iterator;
3616 using typename base_t::reverse_iterator;
3617 using typename base_t::const_reverse_iterator;
3649 void hexapi print(
qstring *vout)
const;
3650 const char *hexapi
dstr()
const;
3651 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
3677#define GCA_EMPTY 0x01
3678#define GCA_SPEC 0x02
3679#define GCA_ALLOC 0x04
3680#define GCA_NALLOC 0x08
3681#define GCA_OFIRST 0x10
3682#define GCA_OLAST 0x20
3692 void hexapi release();
3696 std::swap(lock, r.lock);
3703 void hexapi init(
ea_t _ea);
3704 void hexapi copy(
const minsn_t &m);
3718#define IPROP_OPTIONAL 0x0001
3719#define IPROP_PERSIST 0x0002
3720#define IPROP_WILDMATCH 0x0004
3723#define IPROP_CLNPOP 0x0008
3725#define IPROP_FPINSN 0x0010
3726#define IPROP_FARCALL 0x0020
3727#define IPROP_TAILCALL 0x0040
3728#define IPROP_ASSERT 0x0080
3733#define IPROP_SPLIT 0x0700
3734#define IPROP_SPLIT1 0x0100
3735#define IPROP_SPLIT2 0x0200
3736#define IPROP_SPLIT4 0x0300
3737#define IPROP_SPLIT8 0x0400
3738#define IPROP_COMBINED 0x0800
3739#define IPROP_EXTSTX 0x1000
3740#define IPROP_IGNLOWSRC 0x2000
3743#define IPROP_INV_JX 0x4000
3744#define IPROP_WAS_NORET 0x8000
3745#define IPROP_MULTI_MOV 0x10000
3749#define IPROP_DONT_PROP 0x20000
3750#define IPROP_DONT_COMB 0x40000
3751#define IPROP_MBARRIER 0x80000
3753#define IPROP_UNMERGED 0x100000
3754#define IPROP_UNPAIRED 0x200000
3755#define IPROP_WAS_FUNC 0x400000
3781 void hexapi set_combined();
3809 iprops |= (s == 1 ? IPROP_SPLIT1
3810 : s == 2 ? IPROP_SPLIT2
3811 : s == 4 ? IPROP_SPLIT4
3812 : s == 8 ? IPROP_SPLIT8 : 0);
3816 int cnt = (
iprops & IPROP_SPLIT) >> 8;
3817 return cnt == 0 ? 0 : 1 << (cnt-1);
3835 void hexapi print(
qstring *vout,
int shins_flags=SHINS_SHORT|SHINS_VALNUM)
const;
3838 const char *hexapi
dstr()
const;
3842 void hexapi setaddr(
ea_t new_ea);
3854#define OPTI_ADDREXPRS 0x0001
3855#define OPTI_MINSTKREF 0x0002
3856#define OPTI_COMBINSNS 0x0004
3857#define OPTI_NO_LDXOPT 0x0008
3860#define OPTI_NO_VALRNG 0x0010
3865 int hexapi optimize_subtree(
3869 ea_t *converted_call,
3870 int optflags=OPTI_MINSTKREF);
3888 void hexapi _make_nop();
3894 bool hexapi equal_insns(
const minsn_t &m,
int eqflags)
const;
3897#define EQ_IGNSIZE 0x0001
3898#define EQ_IGNCODE 0x0002
3899#define EQ_CMPDEST 0x0004
3900#define EQ_OPTINSN 0x0008
3913 bool hexapi is_noret_call(
int flags=0);
3914#define NORET_IGNORE_WAS_NORET_ICALL 0x01
3915#define NORET_FORBID_ANALYSIS 0x02
3928 bool hexapi is_helper(
const char *name)
const;
3933 minsn_t *hexapi find_call(
bool with_helpers=
false)
const;
3942 bool hexapi has_side_effects(
bool include_ldx_and_divs=
false)
const;
4003 const mop_t *hexapi find_num_op(
const mop_t **other)
const;
4011 bool hexapi modifies_d()
const;
4019 bool hexapi is_between(
const minsn_t *m1,
const minsn_t *m2)
const;
4026 bool hexapi may_use_aliased_memory()
const;
4031 int hexapi serialize(
bytevec_t *b)
const;
4038 bool hexapi deserialize(
const uchar *bytes,
size_t nbytes,
int format_version);
4070 return !(*
this == o);
4083 QASSERT(52899, target_sz >=
size);
4090 QASSERT(52900, target_sz >=
size);
4097 QASSERT(52901, target_sz <=
size);
4104 QASSERT(52902, target_sz <=
size);
4105 int bytes_to_remove =
size - target_sz;
4112 check_size_equal(o);
4119 check_size_equal(o);
4126 check_size_equal(o);
4133 check_size_equal(o);
4135 throw "division by zero occurred when emulating instruction";
4142 check_size_equal(o);
4144 throw "division by zero occurred when emulating instruction";
4150 case 1: res =
int8(l) /
int8(r);
break;
4154 default: INTERR(30666);
4163 check_size_equal(o);
4165 throw "division by zero occurred when emulating instruction";
4171 check_size_equal(o);
4173 throw "division by zero occurred when emulating instruction";
4179 case 1: res =
int8(l) %
int8(r);
break;
4183 default: INTERR(52903);
4210 check_size_equal(o);
4217 check_size_equal(o);
4224 check_size_equal(o);
4250 QASSERT(52904, w == 1 || w == 2 || w == 4 || w == 8);
4254 void check_size_equal(
const intval64_t &o)
const
4320#define MAXRANGE bitrange_t(0, USHRT_MAX)
4339#define MBL_PRIV 0x0001
4341#define MBL_NONFAKE 0x0000
4342#define MBL_FAKE 0x0002
4343#define MBL_GOTO 0x0004
4344#define MBL_TCAL 0x0008
4345#define MBL_PUSH 0x0010
4346#define MBL_DMT64 0x0020
4347#define MBL_COMB 0x0040
4348#define MBL_PROP 0x0080
4349#define MBL_DEAD 0x0100
4350#define MBL_LIST 0x0200
4351#define MBL_INCONST 0x0400
4352#define MBL_CALL 0x0800
4353#define MBL_BACKPROP 0x1000
4354#define MBL_NORET 0x2000
4355#define MBL_DSLOT 0x4000
4356#define MBL_VALRANGES 0x8000
4357#define MBL_KEEP 0x10000
4358#define MBL_INLINED 0x20000
4359#define MBL_EXTFRAME 0x40000
4418 bool empty()
const {
return head ==
nullptr; }
4428 void hexapi dump()
const;
4617 CONST_CAST(
const minsn_t*)(i1),
4646 const minsn_t *hexapi find_redefinition(
4658 CONST_CAST(
const minsn_t*)(i1),
4693#define FD_BACKWARD 0x0000
4694#define FD_FORWARD 0x0001
4695#define FD_USE 0x0000
4696#define FD_DEF 0x0002
4697#define FD_DIRTY 0x0004
4723 bool hexapi get_valranges(
4733 bool hexapi get_valranges(
4741#define VR_AT_START 0x0000
4743#define VR_AT_END 0x0001
4746#define VR_EXACT 0x0002
4758 size_t hexapi get_reginsn_qty()
const;
4768 &&
tail->l.is_mblock();
4780 void hexapi undef_spoiled_regs(
minsn_t *m);
4868 return strcmp(
text.c_str(), r.text.c_str());
4904 COMPARE_FIELDS(
mcode);
4909 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
4984 bool hexapi range_contains(
ea_t ea)
const;
4987 size_t n_frags =
ranges.size();
4988 if (
pfn !=
nullptr )
4989 n_frags +=
pfn->tailqty + 1;
5007 bool hexapi range_contains(
ea_t ea)
const;
5010 size_t n_frags =
ranges.size();
5032struct mba_item_iterator_t
5036 bool func_items_done =
true;
5040 if ( mbr.
pfn !=
nullptr )
5044 func_items_done =
false;
5053 if ( !func_items_done )
5057 func_items_done =
true;
5063 ea_t current()
const
5072struct decomp_item_iterator_t
5076 bool func_items_done =
true;
5084 func_items_done =
false;
5093 if ( !func_items_done )
5097 func_items_done =
true;
5103 ea_t current()
const
5123struct mba_range_iterator_t
5125 range_chunk_iterator_t rii;
5126 func_tail_iterator_t fii;
5127 bool is_snippet()
const {
return rii.
rptr !=
nullptr; }
5128 bool set(
const mba_ranges_t &mbr)
5142 const range_t &chunk()
const
5144 return is_snippet() ? rii.
chunk() : fii.
chunk();
5151struct decomp_range_iterator_t
5153 range_chunk_iterator_t rii;
5154 function_tail_iterator_t fii;
5155 bool is_snippet()
const {
return rii.
rptr !=
nullptr; }
5156 bool set(
const decomp_ranges_t &dcr)
5170 void chunk(range_t *out)
const
5186 DECLARE_UNCOPYABLE(
mba_t)
5192#define MBA_PRCDEFS 0x00000001
5193#define MBA_NOFUNC 0x00000002
5194#define MBA_PATTERN 0x00000004
5195#define MBA_LOADED 0x00000008
5196#define MBA_RETFP 0x00000010
5197#define MBA_SPLINFO 0x00000020
5198#define MBA_PASSREGS 0x00000040
5199#define MBA_THUNK 0x00000080
5200#define MBA_CMNSTK 0x00000100
5203#define MBA_PREOPT 0x00000200
5204#define MBA_CMBBLK 0x00000400
5205#define MBA_ASRTOK 0x00000800
5206#define MBA_CALLS 0x00001000
5207#define MBA_ASRPROP 0x00002000
5208#define MBA_SAVRST 0x00004000
5209#define MBA_RETREF 0x00008000
5210#define MBA_GLBOPT 0x00010000
5211#define MBA_LVARS0 0x00040000
5212#define MBA_LVARS1 0x00080000
5213#define MBA_DELPAIRS 0x00100000
5214#define MBA_CHVARS 0x00200000
5217#define MBA_SHORT 0x00400000
5218#define MBA_COLGDL 0x00800000
5219#define MBA_INSGDL 0x01000000
5220#define MBA_NICE 0x02000000
5221#define MBA_REFINE 0x04000000
5222#define MBA_WINGR32 0x10000000
5223#define MBA_NUMADDR 0x20000000
5224#define MBA_VALNUM 0x40000000
5225#define MBA_SHOWEA 0x80000000
5227#define MBA_INITIAL_FLAGS (MBA_INSGDL|MBA_NICE|MBA_CMBBLK|MBA_REFINE\
5228 |MBA_PRCDEFS|MBA_VALNUM)
5230#define MBA2_LVARNAMES_OK 0x00000001
5231#define MBA2_LVARS_RENAMED 0x00000002
5232#define MBA2_OVER_CHAINS 0x00000004
5233#define MBA2_VALRNG_DONE 0x00000008
5234#define MBA2_IS_CTR 0x00000010
5235#define MBA2_IS_DTR 0x00000020
5236#define MBA2_ARGIDX_OK 0x00000040
5237#define MBA2_NO_DUP_CALLS 0x00000080
5238#define MBA2_NO_DUP_LVARS 0x00000100
5239#define MBA2_UNDEF_RETVAR 0x00000200
5240#define MBA2_ARGIDX_SORTED 0x00000400
5242#define MBA2_CODE16_BIT 0x00000800
5243#define MBA2_STACK_RETVAL 0x00001000
5244#define MBA2_HAS_OUTLINES 0x00002000
5245#define MBA2_NO_FRAME 0x00004000
5246#define MBA2_PROP_COMPLEX 0x00008000
5248#define MBA2_DONT_VERIFY 0x80000000
5252#define MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED)
5254#define MBA2_ALL_FLAGS 0x0001FFFF
5257 bool optimized()
const {
return (flags & MBA_GLBOPT) != 0; }
5269 bool is_thunk()
const {
return (flags & MBA_THUNK) != 0; }
5285 bool argidx_ok()
const {
return (flags2 & MBA2_ARGIDX_OK) != 0; }
5290 bool is_ctr()
const {
return (flags2 & MBA2_IS_CTR) != 0; }
5291 bool is_dtr()
const {
return (flags2 & MBA2_IS_DTR) != 0; }
5292 bool is_cdtr()
const {
return (flags2 & (MBA2_IS_CTR|MBA2_IS_DTR)) != 0; }
5300 void clr_cdtr() { flags2 &= ~(MBA2_IS_CTR|MBA2_IS_DTR); }
5303 int shins_flags = 0;
5305 shins_flags |= SHINS_SHORT;
5307 shins_flags |= SHINS_VALNUM;
5309 shins_flags |= SHINS_NUMADDR;
5375 uval_t *p_idaoff=
nullptr,
5376 tinfo_t *p_frame=
nullptr)
const;
5487 int hexapi optimize_local(
int locopt_bits);
5490#define LOCOPT_ALL 0x0001
5492#define LOCOPT_REFINE 0x0002
5493#define LOCOPT_REFINE2 0x0004
5511 int hexapi analyze_calls(
int acflags);
5514#define ACFL_LOCOPT 0x01
5515#define ACFL_BLKOPT 0x02
5516#define ACFL_GLBPROP 0x04
5517#define ACFL_GLBDEL 0x08
5518#define ACFL_GUESS 0x10
5533 void hexapi alloc_lvars();
5538 void hexapi dump()
const;
5580 mblock_t *hexapi insert_block(
int bblk);
5592 bool hexapi remove_block(
mblock_t *blk);
5593 bool hexapi remove_blocks(
int start_blk,
int end_blk);
5602 mblock_t *hexapi copy_block(
mblock_t *blk,
int new_serial,
int cpblk_flags=3);
5605#define CPBLK_FAST 0x0000
5606#define CPBLK_MINREF 0x0001
5607#define CPBLK_OPTJMP 0x0002
5613 bool hexapi remove_empty_and_unreachable_blocks();
5619 bool hexapi merge_blocks();
5659 minsn_t *hexapi create_helper_call(
5662 const tinfo_t *rettype=
nullptr,
5664 const mop_t *out=
nullptr);
5673 void hexapi get_func_output_lists(
5677 ea_t call_ea=BADADDR,
5678 bool tail_call=
false);
5706 ea_t hexapi alloc_fict_ea(
ea_t real_ea);
5712 ea_t hexapi map_fict_ea(
ea_t fict_ea)
const;
5717 const ivl_t &get_lvars_region()
const;
5718 const ivl_t &get_shadow_region()
const;
5719 const ivl_t &get_args_region()
const;
5720 ivl_t get_stack_region()
const;
5739 void hexapi serialize(
bytevec_t *vout)
const;
5745 WARN_UNUSED_RESULT
static mba_t *hexapi deserialize(
const uchar *bytes,
size_t nbytes);
5748 void hexapi save_snapshot(
const char *description);
5755 mreg_t hexapi alloc_kreg(
size_t size,
bool check_size=
true);
5761 void hexapi free_kreg(
mreg_t reg,
size_t size);
5765#define INLINE_EXTFRAME 0x0001
5766#define INLINE_DONTCOPY 0x0002
5767#define INLINE_NORETADDR 0x0004
5784 DEPRECATED
merror_t hexapi inline_func(
5789 int inline_flags=0);
5808 int inline_flags=0);
5829 bool hexapi set_lvar_name(
lvar_t &v,
const char *name,
int flagbits);
5852 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
5872 int chain_stamp = 0;
5881 bool exclude_never_jumping_edges =
true;
5898 bool hexapi is_accessed_globally(
5904 access_type_t access_type,
5906 int get_ud_gc_idx(
gctype_t gctype)
const {
return (gctype << 1); }
5907 int get_du_gc_idx(
gctype_t gctype)
const {
return (gctype << 1)+1; }
5908 int get_ud_dirty_bit(
gctype_t gctype) {
return 1 << get_ud_gc_idx(gctype); }
5909 int get_du_dirty_bit(
gctype_t gctype) {
return 1 << get_du_gc_idx(gctype); }
5915 int bit = get_ud_dirty_bit(gctype);
5916 return (dirty & bit) != 0;
5922 int bit = get_du_dirty_bit(gctype);
5923 return (dirty & bit) != 0;
5935 {
return is_accessed_globally(list, b1, b2, m1, m2, WRITE_ACCESS, maymust); }
5939 {
return is_accessed_globally(list, b1, b2, m1, m2, READ_ACCESS, maymust); }
5991 void hexapi clear();
6000 const class bitset_t &reachable) = 0;
6049 [[maybe_unused]]
ea_t ea,
6109 return is_insn() &&
d->has_side_effects(include_ldx_and_divs);
6133 return t ==
mop_a &&
a->is_glbvar();
6143 return t ==
mop_a &&
a->is_stkvar();
6147 :
voff_t(ch.key().
type, ch.is_reg() ? ch.get_reg() : ch.get_stkoff()),
6197#define OPF_REUSE 0x00
6198#define OPF_NEW_WINDOW 0x01
6199#define OPF_REUSE_ACTIVE 0x02
6201#define OPF_NO_WAIT 0x08
6204#define OPF_WINDOW_MGMT_MASK 0x07
6232#define VDRUN_NEWFILE 0x00000000
6233#define VDRUN_APPEND 0x00000001
6234#define VDRUN_ONLYNEW 0x00000002
6235#define VDRUN_SILENT 0x00000004
6236#define VDRUN_SENDIDB 0x00000008
6237#define VDRUN_MAYSTOP 0x00000010
6238#define VDRUN_CMDLINE 0x00000020
6239#define VDRUN_STATS 0x00000040
6240#define VDRUN_LUMINA 0x00000080
6241#define VDRUN_PERF 0x00200000
6275#define GCO_STK 0x0000
6276#define GCO_REG 0x0001
6277#define GCO_USE 0x0002
6278#define GCO_DEF 0x0004
6533 const citem_t *parent=
nullptr,
6534 bool *nice_stroff=
nullptr)
const;
6633 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6671 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6720 std::swap(
ea, r.
ea);
6721 std::swap(
op, r.
op);
6727 bool hexapi contains_expr(
const cexpr_t *
e)
const;
6729 bool hexapi contains_label()
const;
6743 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
6790#define EXFL_CPADONE 0x0001
6791#define EXFL_LVALUE 0x0002
6792#define EXFL_FPOP 0x0004
6793#define EXFL_ALONE 0x0008
6794#define EXFL_CSTR 0x0010
6795#define EXFL_PARTIAL 0x0020
6796#define EXFL_UNDEF 0x0040
6797#define EXFL_JUMPOUT 0x0080
6798#define EXFL_VFTABLE 0x0100
6799#define EXFL_UCAST 0x0200
6800#define EXFL_ALL 0x03FF
6849 void hexapi replace_by(
cexpr_t *r);
6853 void hexapi cleanup();
6871 void hexapi calc_type(
bool recursive);
6878 bool hexapi equal_effect(
const cexpr_t &r)
const;
6883 bool hexapi is_child_of(
const citem_t *parent)
const;
6889 bool hexapi contains_operator(
ctype_t needed_op,
int times=1)
const;
6922 int hexapi get_low_nbit_bound()
const;
6926 bool hexapi requires_lvalue(
const cexpr_t *child)
const;
6929 bool hexapi has_side_effects()
const;
6941 return n->value(
type);
6974 if ( out !=
nullptr )
6981 bool hexapi maybe_ptr()
const;
6986 if (
x->type.is_ptr_or_array() )
6988 if (
y->type.is_ptr_or_array() )
7022 const char *hexapi
dstr()
const;
7031 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7101 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7150 void hexapi replace_by(
cinsn_t *r);
7154 void hexapi cleanup();
7183 bool hexapi is_ordinary_flow()
const;
7189 bool hexapi contains_insn(
ctype_t type,
int times=1)
const;
7207 bool hexapi collect_free_continues(
cinsnptrvec_t *continues);
7214 const char *hexapi
dstr()
const;
7239 return cexpr_t::compare(r);
7249#define CFL_FINAL 0x0001
7250#define CFL_HELPER 0x0002
7251#define CFL_NORET 0x0004
7337#define CTRY_WIND 0x0001
7338#define CTRY_SYNC 0x0002
7388 cblock_t::iterator
p;
7407#define CV_FAST 0x0000
7408#define CV_PRUNE 0x0001
7409#define CV_PARENTS 0x0002
7410#define CV_POST 0x0004
7411#define CV_RESTART 0x0008
7412#define CV_INSNS 0x0010
7475 return item !=
nullptr && item->
is_expr() ? (
cexpr_t *)item :
nullptr;
7482 return item !=
nullptr && !item->
is_expr() ? (
cinsn_t *)item :
nullptr;
7520 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7536 bool hexapi recalc_parent_types();
7563#define ANCHOR_INDEX 0x1FFFFFFF
7564#define ANCHOR_MASK 0xC0000000
7565#define ANCHOR_CITEM 0x00000000
7566#define ANCHOR_LVAR 0x40000000
7567#define ANCHOR_ITP 0x80000000
7568#define ANCHOR_BLKCMT 0x20000000
7617 uint64 *p_offset=
nullptr)
const;
7649#define GLN_CURRENT 0x01
7650#define GLN_GOTO_TARGET 0x02
7657 void hexapi print(
qstring *vout)
const;
7658 const char *hexapi
dstr()
const;
7659 HEXRAYS_MEMORY_ALLOCATION_FUNCS()
7766cexpr_t *hexapi
dereference(cexpr_t *
e,
size_t ptrsize,
bool is_flt=
false);
7868#define INS_EPILOG ((cinsn_t *)1)
7889#define CIT_COLLAPSED 0x0001
7890#define CIT_INVERTED 0x0002
7891#define CIT_THEN_COLLAPSED 0x0004
7892#define CIT_ELSE_COLLAPSED 0x0008
7897#define CFS_BOUNDS 0x0001
7898#define CFS_TEXT 0x0002
7899#define CFS_LVARS_HIDDEN 0x0004
7900#define CFS_LOCKED 0x0008
7919 void hexapi build_c_tree();
8094 WARN_UNUSED_RESULT
static cfunc_t *hexapi deserialize(
8102 void hexapi cleanup();
8109#define DECOMP_NO_WAIT 0x0001
8110#define DECOMP_NO_CACHE 0x0002
8111#define DECOMP_NO_FRAME 0x0004
8112#define DECOMP_WARNINGS 0x0008
8113#define DECOMP_ALL_BLKS 0x0010
8114#define DECOMP_NO_HIDE 0x0020
8115#define DECOMP_GXREFS_DEFLT 0x0000
8119#define DECOMP_GXREFS_NOUPD 0x0040
8120#define DECOMP_GXREFS_FORCE 0x0080
8121#define DECOMP_VOID_MBA 0x0100
8122#define DECOMP_OUTLINE 0x80000000
8142 int decomp_flags=0);
8156 int decomp_flags=0);
8176 return decompile(mbr, hf, decomp_flags);
8195 return decompile(dcr, hf, decomp_flags);
8216 return decompile(dcr, hf, decomp_flags);
8230 const mba_ranges_t &mbr,
8231 hexrays_failure_t *hf=
nullptr,
8232 const mlist_t *retlist=
nullptr,
8246 const decomp_ranges_t &dcr,
8247 hexrays_failure_t *hf=
nullptr,
8248 const mlist_t *retlist=
nullptr,
8319 ((
cexpr_t*)
this)->print1(vout, func);
8321 ((
cinsn_t*)
this)->print1(vout, func);
8352 :
ea(i != nullptr ? i->
ea : BADADDR),
8359 return empty() || back().is_ordinary_flow();
8458 hxe_resolve_stkaddrs,
8497 hxe_collect_warnings,
8522 hxe_inlining_function,
8529 hxe_inlined_function,
8540 hxe_open_pseudocode=100,
8544 hxe_switch_pseudocode,
8549 hxe_refresh_pseudocode,
8554 hxe_close_pseudocode,
8590 hxe_populating_popup,
8595 lxe_lvar_name_changed,
8603 lxe_lvar_type_changed,
8610 lxe_lvar_cmt_changed,
8617 lxe_lvar_mapping_changed,
8688 if (
lnnum < r.lnnum )
return -1;
8689 if (
lnnum > r.lnnum )
return 1;
8690 if (
x < r.x )
return -1;
8691 if (
x > r.x )
return 1;
8695 :
lnnum(_lnnum),
x(_x),
y(_y) {}
8734#define VDUI_VISIBLE 0x0001
8735#define VDUI_VALID 0x0002
8813 void hexapi
clear();
11007inline int valrng_t::compare(
const valrng_t &r)
const
11175 return (
const char *)HEXDSP(
hx_dstr, tif);
11275inline int vdloc_t::compare(
const vdloc_t &r)
const
11299inline int lvar_locator_t::compare(
const lvar_locator_t &r)
const
11305inline const char *lvar_locator_t::dstr()
const
11421 auto hrdsp = HEXDSP;
11582inline int bitset_t::compare(
const bitset_t &r)
const
11588inline int bitset_t::goup(
int reg)
const
11600inline int ivl_t::compare(
const ivl_t &r)
const
11674inline int ivlset_t::compare(
const ivlset_t &r)
const
11722inline int mlist_t::compare(
const mlist_t &r)
const
11748 return (
int)(size_t)HEXDSP(
hx_mreg2reg, reg, width);
11766 auto hrdsp = HEXDSP;
11779 auto hrdsp = HEXDSP;
11814inline int lvar_ref_t::compare(
const lvar_ref_t &r)
const
11826inline int stkvar_ref_t::compare(
const stkvar_ref_t &r)
const
11850inline void mop_t::copy(
const mop_t &rop)
12090inline int mcallinfo_t::lexcompare(
const mcallinfo_t &f)
const
12122inline int mcases_t::compare(
const mcases_t &r)
const
12214inline void minsn_t::init(
ea_t _ea)
12220inline void minsn_t::copy(
const minsn_t &m)
12232inline void minsn_t::swap(
minsn_t &m)
12388inline void mblock_t::init()
12548inline int user_minsn_t::compare(
const user_minsn_t &r)
const
12626inline void mba_t::term()
12900inline 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
13052inline int cnumber_t::compare(
const cnumber_t &r)
const
13058inline int var_ref_t::compare(
const var_ref_t &r)
const
13100inline int cexpr_t::compare(
const cexpr_t &r)
const
13198inline int cif_t::compare(
const cif_t &r)
const
13210inline int cfor_t::compare(
const cfor_t &r)
const
13216inline int cwhile_t::compare(
const cwhile_t &r)
const
13222inline int cdo_t::compare(
const cdo_t &r)
const
13228inline int creturn_t::compare(
const creturn_t &r)
const
13234inline int cgoto_t::compare(
const cgoto_t &r)
const
13240inline int casm_t::compare(
const casm_t &r)
const
13252inline int cinsn_t::compare(
const cinsn_t &r)
const
13324inline int cblock_t::compare(
const cblock_t &r)
const
13330inline int carglist_t::compare(
const carglist_t &r)
const
13336inline int ccase_t::compare(
const ccase_t &r)
const
13342inline int ccases_t::compare(
const ccases_t &r)
const
13348inline int cswitch_t::compare(
const cswitch_t &r)
const
13354inline int catchexpr_t::compare(
const catchexpr_t &r)
const
13360inline int ccatch_t::compare(
const ccatch_t &r)
const
13366inline int ctry_t::compare(
const ctry_t &r)
const
13372inline int cthrow_t::compare(
const cthrow_t &r)
const
13560inline void cfunc_t::build_c_tree()
13792inline void cfunc_t::cleanup()
13880 auto hrdsp = HEXDSP;
14137#pragma warning(pop)
DECLARE_TYPE_AS_MOVABLE(compiled_binpat_t)
qchar * extract(void)
Extract C string from _qstring. Must qfree() it.
Definition pro.h:3373
Describes an argument location.
Definition typeinf.hpp:1105
Definition hexrays.hpp:1923
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:1841
bool hexapi empty() const
Definition hexrays.hpp:11528
DECLARE_COMPARISONS(bitset_t)
int hexapi count() const
Definition hexrays.hpp:11534
bool includes(const bitset_t &ml) const
Definition hexrays.hpp:1886
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:11474
void hexapi shift_down(int shift)
Definition hexrays.hpp:11498
bool hexapi fill_gaps(int total_nbits)
Definition hexrays.hpp:11558
bool hexapi add(int bit)
Definition hexrays.hpp:11456
void inc(iterator &p, int n=1) const
Definition hexrays.hpp:1906
bool hexapi has_any(int bit, int width) const
Definition hexrays.hpp:11516
bool hexapi has_all(int bit, int width) const
Definition hexrays.hpp:11510
bitset_t()
Definition hexrays.hpp:1846
iterator end() const
Definition hexrays.hpp:1903
int front() const
Definition hexrays.hpp:1904
iterator const_iterator
Definition hexrays.hpp:1900
int back() const
Definition hexrays.hpp:1905
HEXRAYS_MEMORY_ALLOCATION_FUNCS() class iterator
Definition hexrays.hpp:1889
bool hexapi has(int bit) const
Definition hexrays.hpp:11504
~bitset_t()
Definition hexrays.hpp:1848
void swap(bitset_t &r)
Definition hexrays.hpp:1853
void hexapi fill_with_ones(int maxbit)
Definition hexrays.hpp:11552
bool hexapi cut_at(int maxbit)
Definition hexrays.hpp:11492
int hexapi last() const
Definition hexrays.hpp:11546
void clear()
Definition hexrays.hpp:1880
iterator begin() const
Definition hexrays.hpp:1902
bitset_t & operator=(const bitset_t &m)
Definition hexrays.hpp:1858
const char *hexapi dstr() const
Definition hexrays.hpp:11522
bool hexapi is_subset_of(const bitset_t &ml) const
Definition hexrays.hpp:11576
void extract(intvec_t &out) const
bool hexapi has_common(const bitset_t &ml) const
Definition hexrays.hpp:11564
bool hexapi intersect(const bitset_t &ml)
Definition hexrays.hpp:11570
bitset_t &hexapi copy(const bitset_t &m)
Definition hexrays.hpp:11450
iterator itat(int n) const
Definition hexrays.hpp:1901
Chains of one block.
Definition hexrays.hpp:3610
const chain_t * get_stk_chain(sval_t off, int width=1) const
Get chain for the specified stack offset.
Definition hexrays.hpp:3630
void hexapi print(qstring *vout) const
Definition hexrays.hpp:12190
qset< chain_t > base_t
Definition hexrays.hpp:3613
const chain_t * get_reg_chain(mreg_t reg, int width=1) const
Get chain for the specified register.
Definition hexrays.hpp:3622
const chain_t * get_chain(const voff_t &k, int width=1) const
Get chain for the specified value offset.
Definition hexrays.hpp:3638
chain_t * get_reg_chain(mreg_t reg, int width=1)
Definition hexrays.hpp:3624
chain_t * get_stk_chain(sval_t off, int width=1)
Definition hexrays.hpp:3632
chain_t * get_chain(const voff_t &k, int width=1)
Definition hexrays.hpp:3640
const char *hexapi dstr() const
Definition hexrays.hpp:12196
chain_t * get_chain(const chain_t &ch)
Definition hexrays.hpp:3646
Vector of bytes (use for dynamic memory)
Definition pro.h:3850
~chain_keeper_t()
Definition hexrays.hpp:5843
block_chains_t & back()
Definition hexrays.hpp:5849
int for_all_chains(chain_visitor_t &cv, int gca)
Definition hexrays.hpp:5851
chain_keeper_t(graph_chains_t *_gc)
Definition hexrays.hpp:5842
block_chains_t & operator[](size_t idx)
Definition hexrays.hpp:5847
block_chains_t & front()
Definition hexrays.hpp:5848
ud (use->def) and du (def->use) chain.
Definition hexrays.hpp:3553
const char *hexapi dstr() const
Definition hexrays.hpp:12172
sval_t get_stkoff() const
Definition hexrays.hpp:3591
void set_inited(bool b)
Definition hexrays.hpp:3586
bool includes(const chain_t &r) const
Definition hexrays.hpp:3594
bool operator<(const chain_t &r) const
Definition hexrays.hpp:3598
bool is_term() const
Definition hexrays.hpp:3585
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:12178
int width
size of the value in bytes
Definition hexrays.hpp:3558
bool is_stkoff() const
Definition hexrays.hpp:3580
chain_t()
Definition hexrays.hpp:3570
void hexapi print(qstring *vout) const
Definition hexrays.hpp:12166
bool is_replaced() const
Definition hexrays.hpp:3581
bool is_overlapped() const
Definition hexrays.hpp:3582
void set_value(const chain_t &r)
Definition hexrays.hpp:3575
bool overlap(const chain_t &r) const
Definition hexrays.hpp:3592
void set_term(bool b)
Definition hexrays.hpp:3589
uchar flags
combination Chain properties bits
Definition hexrays.hpp:3560
bool is_inited() const
Definition hexrays.hpp:3578
bool is_fake() const
Definition hexrays.hpp:3583
int varnum
allocated variable index (-1 - not allocated yet)
Definition hexrays.hpp:3559
bool is_reg() const
Definition hexrays.hpp:3579
bool is_passreg() const
Definition hexrays.hpp:3584
mreg_t get_reg() const
Definition hexrays.hpp:3590
chain_t(mopt_t t, sval_t off, int w=1, int v=-1)
Definition hexrays.hpp:3571
void clear_varnum()
Definition hexrays.hpp:3604
const voff_t & key() const
Definition hexrays.hpp:3577
const voff_t endoff() const
Definition hexrays.hpp:3596
void set_replaced(bool b)
Definition hexrays.hpp:3587
void set_overlapped(bool b)
Definition hexrays.hpp:3588
chain_t(const voff_t &_k, int w=1)
Definition hexrays.hpp:3573
Helper class to generate the initial microcode.
Definition hexrays.hpp:5977
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:5983
virtual merror_t idaapi analyze_prolog(const class qflow_chart_ea_t &fc, const class bitset_t &reachable)=0
Analyze prolog/epilog of the function to decompile.
virtual bool idaapi should_handle_switch(ea_t ea, const switch_info_t &si) const
Definition hexrays.hpp:6048
virtual ~codegen_t()
Definition hexrays.hpp:5987
char ignore_micro
Definition hexrays.hpp:5982
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:6075
virtual merror_t idaapi gen_micro()=0
Generate microcode for one instruction.
void hexapi clear()
Definition hexrays.hpp:12924
virtual void idaapi microgen_completed()
This method is called when the microcode generation is done.
Definition hexrays.hpp:6017
mblock_t * mb
Definition hexrays.hpp:5980
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:12930
virtual merror_t idaapi prepare_gen_micro()
Setup internal data to handle new instruction.
Definition hexrays.hpp:6026
insn_t insn
Definition hexrays.hpp:5981
mba_t * mba
Definition hexrays.hpp:5979
size_t reserved[4]
Definition hexrays.hpp:5984
Class to enumerate all function instructions and data sorted by addresses.
Definition funcs.hpp:1414
ea_t current(void) const
Definition funcs.hpp:1435
bool set(func_t *pfn, ea_t _ea=BADADDR)
Set a function range. if pfn == nullptr then a segment range will be set.
Definition funcs.hpp:1426
bool next_code(void)
Definition funcs.hpp:1448
A function is a set of continuous ranges of addresses with characteristics.
Definition funcs.hpp:106
bool next(void)
Definition funcs.hpp:1373
bool set(func_t *_pfn, ea_t ea=BADADDR)
Definition funcs.hpp:1354
const range_t & chunk(void) const
Definition funcs.hpp:1365
Class to enumerate all function instructions and data sorted by addresses.
Definition funcs.hpp:1919
ea_t current() const
Definition funcs.hpp:1954
bool next_code()
Definition funcs.hpp:1967
bool set(ea_t func_ea, ea_t ea=BADADDR)
Set a function range. if func_ea == BADADDR then a segment range will be set.
Definition funcs.hpp:1928
bool next()
Definition funcs.hpp:1859
void chunk(range_t *out) const
Definition funcs.hpp:1856
bool set(ea_t func_ea, ea_t ea=BADADDR)
Definition funcs.hpp:1853
gdl graph interface - includes only functions required to draw it
Definition gdl.hpp:259
Definition hexrays.hpp:3667
void hexapi release()
Unlock the chains.
Definition hexrays.hpp:12208
bool is_locked() const
Are the chains locked?
Definition hexrays.hpp:3688
~graph_chains_t()
Definition hexrays.hpp:3670
int hexapi for_all_chains(chain_visitor_t &cv, int gca_flags)
Visit all chains.
Definition hexrays.hpp:12202
void swap(graph_chains_t &r)
Definition hexrays.hpp:3693
void acquire()
Lock the chains.
Definition hexrays.hpp:3690
Definition hexrays.hpp:4267
intval64_t mop_value(const mop_t &mop)
Definition hexrays.hpp:4282
bool hexapi _mop_value(intval64_t *out, const mop_t &mop, vd_failure_t *vf=nullptr)
Definition hexrays.hpp:12376
virtual intval64_t read_glbmem(ea_t, int)
Definition hexrays.hpp:4276
bool hexapi _minsn_value(intval64_t *out, const minsn_t &insn, vd_failure_t *vf=nullptr)
Definition hexrays.hpp:12382
virtual intval64_t get_mop_value(const mop_t &mop)=0
virtual void write_glbmem(ea_t, int, const intval64_t &)
Definition hexrays.hpp:4277
intval64_t minsn_value(const minsn_t &insn)
Definition hexrays.hpp:4296
virtual ~int64_emulator_t()
Definition hexrays.hpp:4269
Definition hexrays.hpp:4051
intval64_t smod(const intval64_t &o) const
Definition hexrays.hpp:4169
void print(qstring *vout) const
Definition hexrays.hpp:4059
intval64_t sar(const intval64_t &o) const
Definition hexrays.hpp:4202
intval64_t sdiv(const intval64_t &o) const
Definition hexrays.hpp:4140
intval64_t operator!() const
Definition hexrays.hpp:4235
intval64_t high(int target_sz) const
Definition hexrays.hpp:4102
intval64_t sext(int target_sz) const
Definition hexrays.hpp:4081
intval64_t operator|(const intval64_t &o) const
Definition hexrays.hpp:4208
intval64_t operator^(const intval64_t &o) const
Definition hexrays.hpp:4222
intval64_t operator&(const intval64_t &o) const
Definition hexrays.hpp:4215
intval64_t operator~() const
Definition hexrays.hpp:4241
intval64_t operator+(const intval64_t &o) const
Definition hexrays.hpp:4110
intval64_t operator*(const intval64_t &o) const
Definition hexrays.hpp:4124
bool operator!=(const intval64_t &o) const
Definition hexrays.hpp:4068
intval64_t operator<<(const intval64_t &o) const
Definition hexrays.hpp:4190
intval64_t operator>>(const intval64_t &o) const
Definition hexrays.hpp:4196
uint64 uval() const
Definition hexrays.hpp:4058
int64 sval() const
Definition hexrays.hpp:4057
intval64_t operator-(const intval64_t &o) const
Definition hexrays.hpp:4117
intval64_t zext(int target_sz) const
Definition hexrays.hpp:4088
bool operator<(const intval64_t &o) const
Definition hexrays.hpp:4074
intval64_t(uint64 v=0, int _s=1)
Definition hexrays.hpp:4056
uint64 val
Definition hexrays.hpp:4053
bool operator==(const intval64_t &o) const
Definition hexrays.hpp:4062
intval64_t low(int target_sz) const
Definition hexrays.hpp:4095
intval64_t operator%(const intval64_t &o) const
Definition hexrays.hpp:4161
int size
Definition hexrays.hpp:4054
intval64_t operator/(const intval64_t &o) const
Definition hexrays.hpp:4131
intval64_t operator-() const
Definition hexrays.hpp:4229
Set of intervals.
Definition hexrays.hpp:2021
const ivl_t & lastivl() const
Definition hexrays.hpp:2039
iterator end()
Definition hexrays.hpp:2072
bool single_value(uint64 v) const
Definition hexrays.hpp:2047
bool hexapi has_common(const ivlset_t &ivs) const
Definition hexrays.hpp:11644
const_iterator end() const
Definition hexrays.hpp:2070
asize_t hexapi count() const
Definition hexrays.hpp:11636
qvector< ivl_t > bag_t
Definition hexrays.hpp:2023
bool empty() const
Definition hexrays.hpp:2041
bool operator==(const ivl_t &v) const
Definition hexrays.hpp:2064
bool is_subset_of(const ivlset_t &ivs) const
Definition hexrays.hpp:2062
bool hexapi addmasked(const ivlset_t &ivs, const ivl_t &mask)
Definition hexrays.hpp:11618
ivlset_t()
Definition hexrays.hpp:2033
bag_t::iterator iterator
Definition hexrays.hpp:2067
bool single_value() const
Definition hexrays.hpp:2046
bool operator!=(const ivl_t &v) const
Definition hexrays.hpp:2065
void qclear()
Definition hexrays.hpp:2043
iterator begin()
Definition hexrays.hpp:2071
bool sub(ea_t ea, asize_t size)
Definition hexrays.hpp:2054
bool hexapi sub(const ivl_t &ivl)
Definition hexrays.hpp:11624
void clear()
Definition hexrays.hpp:2042
bool hexapi contains(uint64 off) const
Definition hexrays.hpp:11656
DECLARE_COMPARISONS(ivlset_t)
bool add(ea_t ea, asize_t size)
Definition hexrays.hpp:2050
bool hexapi add(const ivl_t &ivl)
Definition hexrays.hpp:11606
bool hexapi intersect(const ivlset_t &ivs)
Definition hexrays.hpp:11668
ivlset_t(const ivl_t &ivl)
Definition hexrays.hpp:2034
DEFINE_MEMORY_ALLOCATION_FUNCS() void swap(ivlset_t &r)
Definition hexrays.hpp:2035
static bool ivl_all_values(const ivl_t &ivl)
Definition hexrays.hpp:2030
bool hexapi includes(const ivlset_t &ivs) const
Definition hexrays.hpp:11662
const char *hexapi dstr() const
Definition hexrays.hpp:11686
const_iterator begin() const
Definition hexrays.hpp:2069
const ivl_t & getivl(int idx) const
Definition hexrays.hpp:2038
size_t nivls() const
Definition hexrays.hpp:2040
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11680
void set_all_values()
Definition hexrays.hpp:2045
bool all_values() const
Definition hexrays.hpp:2044
bag_t bag
Definition hexrays.hpp:2026
bag_t::const_iterator const_iterator
Definition hexrays.hpp:2068
Definition of a local variable (register or stack) var lvar.
Definition hexrays.hpp:1223
void set_arg_var()
Definition hexrays.hpp:1362
bool is_spoiled_var() const
Is spoiled var? (meaningful only during lvar allocation)
Definition hexrays.hpp:1318
void set_shared()
Definition hexrays.hpp:1392
void set_mreg_done()
Definition hexrays.hpp:1358
void set_decl_unused()
Definition hexrays.hpp:1390
void set_non_typed()
Definition hexrays.hpp:1352
void clr_used_byref()
Definition hexrays.hpp:1389
uint64 divisor
max known divisor of the variable
Definition hexrays.hpp:1275
void clr_shared()
Definition hexrays.hpp:1393
void clr_fake_var()
Definition hexrays.hpp:1365
bool is_arg_var() const
Is the function argument?
Definition hexrays.hpp:1308
bool typed() const
Has the variable a type?
Definition hexrays.hpp:1288
void clr_overlapped_var()
Definition hexrays.hpp:1367
tinfo_t tif
variable type
Definition hexrays.hpp:1271
void set_used()
Definition hexrays.hpp:1349
friend class mba_t
Definition hexrays.hpp:1224
void clr_mreg_done()
Definition hexrays.hpp:1359
void clr_arg_var()
Definition hexrays.hpp:1363
bool is_partialy_typed() const
Variable type should be handled as a partial one.
Definition hexrays.hpp:1320
bool is_shared() const
Is lvar mapped to several chains.
Definition hexrays.hpp:1344
int defblk
first block defining the variable.
Definition hexrays.hpp:1273
void set_automapped()
Definition hexrays.hpp:1386
void clr_mapdst_var()
Definition hexrays.hpp:1373
bool is_aliasable(const mba_t *mba) const
Is the variable aliasable?
Definition hexrays.hpp:1456
void set_spoiled_var()
Definition hexrays.hpp:1370
void set_typed()
Definition hexrays.hpp:1351
void clr_notarg()
Definition hexrays.hpp:1385
qstring cmt
variable comment string
Definition hexrays.hpp:1270
void clr_user_type()
Definition hexrays.hpp:1356
void set_dummy_arg()
Definition hexrays.hpp:1382
void clr_automapped()
Definition hexrays.hpp:1387
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:11341
lvar_t(const qstring &n, const vdloc_t &l, ea_t e, const tinfo_t &t, int w, int db)
Definition hexrays.hpp:1278
void set_noptr_var()
Definition hexrays.hpp:1376
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:11329
void set_noprop()
Definition hexrays.hpp:1396
bool hexapi is_promoted_arg() const
Is the promoted function argument?
Definition hexrays.hpp:11317
bool was_scattered_arg() const
Was lvar transformed from a scattered argument?
Definition hexrays.hpp:1346
void clr_spoiled_var()
Definition hexrays.hpp:1371
bool is_automapped() const
Was the variable automatically mapped to another variable?
Definition hexrays.hpp:1338
bool has_common_bit(const vdloc_t &loc, asize_t width2) const
Does the variable overlap with the specified location?
Definition hexrays.hpp:1405
bool has_regname() const
Has a register name? (like _RAX)
Definition hexrays.hpp:1330
bool mreg_done() const
Have corresponding microregs been replaced by references to this variable?
Definition hexrays.hpp:1290
bool is_used_byref() const
Was the address of the variable taken?
Definition hexrays.hpp:1340
bool has_common(const lvar_t &v) const
Do variables overlap?
Definition hexrays.hpp:1400
bool used() const
Is the variable used in the code?
Definition hexrays.hpp:1286
bool has_user_type() const
Has user-defined type?
Definition hexrays.hpp:1304
bool is_decl_unused() const
Was declared as __unused by the user? See CVAR_UNUSED.
Definition hexrays.hpp:1342
void set_partialy_typed()
Definition hexrays.hpp:1374
void clr_floating_var()
Definition hexrays.hpp:1369
void set_floating_var()
Definition hexrays.hpp:1368
bool is_fake_var() const
Is fake return variable?
Definition hexrays.hpp:1312
void clear_used()
Definition hexrays.hpp:1350
void set_overlapped_var()
Definition hexrays.hpp:1366
qstring name
variable name.
Definition hexrays.hpp:1267
lvar_t()
Definition hexrays.hpp:1277
bool hexapi set_width(int w, int svw_flags=0)
Change the variable width.
Definition hexrays.hpp:11335
void set_split_var()
Definition hexrays.hpp:1380
void clr_decl_unused()
Definition hexrays.hpp:1391
const char *hexapi dstr() const
Definition hexrays.hpp:11311
void clr_user_info()
Definition hexrays.hpp:1353
void set_user_name()
Definition hexrays.hpp:1354
bool is_dummy_arg() const
Is a dummy argument (added to fill a hole in the argument list)
Definition hexrays.hpp:1334
void clr_unknown_width()
Definition hexrays.hpp:1361
bool is_unknown_width() const
Do we know the width of the variable?
Definition hexrays.hpp:1294
void clr_noptr_var()
Definition hexrays.hpp:1377
void clr_dummy_arg()
Definition hexrays.hpp:1383
void set_thisarg()
Definition hexrays.hpp:1378
bool in_asm() const
Is variable used in an instruction translated into __asm?
Definition hexrays.hpp:1332
void set_scattered_arg()
Definition hexrays.hpp:1394
bool is_overlapped_var() const
Is overlapped variable?
Definition hexrays.hpp:1314
bool hexapi accepts_type(const tinfo_t &t, bool may_change_thisarg=false)
Check if the variable accept the specified type.
Definition hexrays.hpp:11323
void clr_thisarg()
Definition hexrays.hpp:1379
bool has_user_name() const
Has user-defined name?
Definition hexrays.hpp:1302
void set_unknown_width()
Definition hexrays.hpp:1360
void set_fake_var()
Definition hexrays.hpp:1364
void set_used_byref()
Definition hexrays.hpp:1388
bool has_user_info() const
Has any user-defined information?
Definition hexrays.hpp:1296
bool is_floating_var() const
Used by a fpu insn?
Definition hexrays.hpp:1316
void clr_noprop()
Definition hexrays.hpp:1397
void set_mapdst_var()
Definition hexrays.hpp:1372
bool is_notarg() const
Is a local variable? (local variable cannot be an input argument)
Definition hexrays.hpp:1336
bool has_nice_name() const
Does the variable have a nice name?
Definition hexrays.hpp:1292
void set_notarg()
Definition hexrays.hpp:1384
void clr_scattered_arg()
Definition hexrays.hpp:1395
void clr_user_name()
Definition hexrays.hpp:1357
void clr_split_var()
Definition hexrays.hpp:1381
void set_user_type()
Definition hexrays.hpp:1355
bool is_thisarg() const
Is 'this' argument of a C++ member function?
Definition hexrays.hpp:1326
bool is_result_var() const
Is the function result?
Definition hexrays.hpp:1306
bool is_noprop() const
Is it forbidden to propagate the variable?
Definition hexrays.hpp:1348
void clr_partialy_typed()
Definition hexrays.hpp:1375
bool is_split_var() const
Is a split variable?
Definition hexrays.hpp:1328
int width
variable size in bytes
Definition hexrays.hpp:1272
bool is_noptr_var() const
Variable type should not be a pointer.
Definition hexrays.hpp:1322
const tinfo_t & type() const
Get variable type.
Definition hexrays.hpp:1410
bool is_mapdst_var() const
Other variable(s) map to this var?
Definition hexrays.hpp:1324
tinfo_t & type()
Definition hexrays.hpp:1411
void set_final_lvar_type(const tinfo_t &t)
Set final variable type.
Definition hexrays.hpp:1429
Vector of local variables.
Definition hexrays.hpp:1466
int hexapi find_stkvar(sval_t spoff, int width)
Find a stack variable at the specified location.
Definition hexrays.hpp:11347
lvar_t *hexapi find(const lvar_locator_t &ll)
Find a variable at the specified location.
Definition hexrays.hpp:11353
int hexapi find_lvar(const vdloc_t &location, size_t width, int defblk=-1) const
Find a variable at the specified location.
Definition hexrays.hpp:11359
int find_input_lvar(const vdloc_t &argloc, size_t _size)
Find an input variable at the specified location.
Definition hexrays.hpp:1472
int find_input_reg(int reg, size_t _size=1)
Find an input register variable.
Definition hexrays.hpp:1479
Array of micro blocks representing microcode for a decompiled function.
Definition hexrays.hpp:5185
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all operands of all instructions.
Definition hexrays.hpp:12758
merror_t hexapi set_maturity(mba_maturity_t mat)
Set maturity level.
Definition hexrays.hpp:12644
mblock_t *hexapi copy_block(mblock_t *blk, int new_serial, int cpblk_flags=3)
Make a copy of a block.
Definition hexrays.hpp:12740
void hexapi dump() const
Dump microcode to a file.
Definition hexrays.hpp:12686
bool use_frame() const
Definition hexrays.hpp:5471
ea_t entry_ea
Definition hexrays.hpp:5383
mreg_t hexapi alloc_kreg(size_t size, bool check_size=true)
Allocate a kernel register.
Definition hexrays.hpp:12852
bool graph_insns() const
Definition hexrays.hpp:5260
int pfn_flags
copy of func_t::flags
Definition hexrays.hpp:5394
mblock_t ** natural
natural order of blocks
Definition hexrays.hpp:5437
bool lvars_allocated() const
Definition hexrays.hpp:5273
mblock_t * blocks
double linked list of blocks
Definition hexrays.hpp:5436
bool rtype_refined() const
Definition hexrays.hpp:5263
bool has_over_chains() const
Definition hexrays.hpp:5283
bool generated_asserts() const
Definition hexrays.hpp:5277
sval_t minstkref
The lowest stack location whose address was taken.
Definition hexrays.hpp:5404
mbl_graph_t *hexapi get_graph()
Get control graph.
Definition hexrays.hpp:12662
bool chain_varnums_ok() const
Definition hexrays.hpp:5274
qstring error_strarg
Definition hexrays.hpp:5434
bool lvars_renamed() const
Definition hexrays.hpp:5282
bool is_pattern() const
Definition hexrays.hpp:5268
bool hexapi set_lvar_name(lvar_t &v, const char *name, int flagbits)
Definition hexrays.hpp:12894
argloc_t get_ida_argloc(const lvar_t &v) const
Definition hexrays.hpp:5378
void set_mba_flags(int f)
Definition hexrays.hpp:5296
bool argidx_sorted() const
Definition hexrays.hpp:5286
ivlset_t aliased_memory
aliased_memory+restricted_memory=ALLMEM
Definition hexrays.hpp:5412
static vdloc_t hexapi idaloc2vd(const argloc_t &loc, int width, sval_t spd)
Definition hexrays.hpp:12594
ea_t hexapi map_fict_ea(ea_t fict_ea) const
Resolve a fictional address.
Definition hexrays.hpp:12808
bool hexapi remove_empty_and_unreachable_blocks()
Delete all empty and unreachable blocks.
Definition hexrays.hpp:12746
const char va_list va const
Definition hexrays.hpp:5539
ea_t hexapi alloc_fict_ea(ea_t real_ea)
Allocate a fictional address.
Definition hexrays.hpp:12800
bool short_display() const
Definition hexrays.hpp:5258
merror_t hexapi optimize_global()
Optimize microcode globally.
Definition hexrays.hpp:12674
bool display_valnums() const
Definition hexrays.hpp:5266
int get_mba_flags() const
Definition hexrays.hpp:5294
bool write_to_const_detected() const
Definition hexrays.hpp:5445
vdump_mba(_verify, title, va)
bool prop_complex() const
Definition hexrays.hpp:5293
sval_t stacksize
The maximal size of the function stack including bytes allocated for outgoing call arguments (up to r...
Definition hexrays.hpp:5398
lvar_t &hexapi arg(size_t n)
Get input argument of the decompiled function.
Definition hexrays.hpp:12794
const ivl_t & get_lvars_region() const
Definition hexrays.hpp:6167
bool display_ea() const
Definition hexrays.hpp:5267
mba_ranges_t mbr
Definition hexrays.hpp:5382
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:5570
mlist_t spoiled_list
MBA_SPLINFO && !final_type: info in vd format.
Definition hexrays.hpp:5422
sval_t frregs
size of saved registers range in the stack frame
Definition hexrays.hpp:5392
void set_mba_flags2(int f)
Definition hexrays.hpp:5298
int hexapi for_all_topinsns(minsn_visitor_t &mv)
Visit all top level instructions.
Definition hexrays.hpp:12770
bool hexapi clr_numform(const operand_locator_t &loc)
Clear the user-defined number format for an operand.
Definition hexrays.hpp:12828
bool deleted_pairs() const
Definition hexrays.hpp:5279
void clr_mba_flags(int f)
Definition hexrays.hpp:5297
int calc_shins_flags() const
Definition hexrays.hpp:5301
sval_t minargref
The lowest stack argument location whose address was taken This location and locations above it can b...
Definition hexrays.hpp:5406
bool hexapi get_numform(number_format_t *nf, const operand_locator_t &loc) const
Get the user-defined number format for an operand.
Definition hexrays.hpp:12816
lvars_t vars
local variables
Definition hexrays.hpp:5428
reginfovec_t idb_spoiled
MBA_SPLINFO && final_type: info in ida format.
Definition hexrays.hpp:5421
sval_t frsize
size of local stkvars range in the stack frame
Definition hexrays.hpp:5391
ivl_with_name_t std_ivls[6]
we treat memory as consisting of 6 parts see memreg_index_t
Definition hexrays.hpp:5439
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:12788
int retvaridx
index of variable holding the return value -1 means none
Definition hexrays.hpp:5430
int fti_flags
FTI_... constants for the current function.
Definition hexrays.hpp:5423
sval_t fullsize
Full stack size including incoming args.
Definition hexrays.hpp:5397
char reserved[]
Definition hexrays.hpp:5463
bool set_nice_lvar_name(lvar_t &v, const char *name)
Definition hexrays.hpp:5830
bool range_contains(ea_t ea) const
Definition hexrays.hpp:5472
bool regargs_is_not_aligned() const
Definition hexrays.hpp:5453
int get_mba_flags2() const
Definition hexrays.hpp:5295
mba_maturity_t maturity
current maturity level
Definition hexrays.hpp:5416
const char * title
Definition hexrays.hpp:5539
sval_t hexapi stkoff_vd2ida(sval_t off) const
Definition hexrays.hpp:12578
int hexapi optimize_local(int locopt_bits)
Optimize each basic block locally.
Definition hexrays.hpp:12650
void hexapi alloc_lvars()
Allocate local variables.
Definition hexrays.hpp:12680
bool is_thunk() const
Definition hexrays.hpp:5269
void hexapi free_kreg(mreg_t reg, size_t size)
Free a kernel register.
Definition hexrays.hpp:12858
const stkpnt_t *hexapi locate_stkpnt(ea_t ea) const
Definition hexrays.hpp:12876
bool is_dtr() const
Definition hexrays.hpp:5291
const ivl_t & get_args_region() const
Definition hexrays.hpp:6177
const decomp_ranges_t &hexapi get_decomp_ranges() const
Definition hexrays.hpp:12638
mba_maturity_t reqmat
required maturity level
Definition hexrays.hpp:5417
bool is_ctr() const
Definition hexrays.hpp:5290
void hexapi add_user_minsn(const user_minsn_t &uins, mba_maturity_t mmat)
Add a user-defined microinstruction action.
Definition hexrays.hpp:12882
sval_t fpd
frame pointer delta
Definition hexrays.hpp:5393
bool set_user_lvar_name(lvar_t &v, const char *name)
Definition hexrays.hpp:5831
bool valranges_done() const
Definition hexrays.hpp:5284
uchar occurred_warns[32]
Definition hexrays.hpp:5443
bool saverest_done() const
Definition hexrays.hpp:5270
const ivl_t & get_shadow_region() const
Definition hexrays.hpp:6172
static argloc_t hexapi vd2idaloc(const vdloc_t &loc, size_t width, sval_t spd)
Definition hexrays.hpp:12610
bool should_beautify() const
Definition hexrays.hpp:5262
qstring label
name of the function or pattern (colored)
Definition hexrays.hpp:5427
bool has_outlines() const
Definition hexrays.hpp:5289
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:5414
void hexapi save_snapshot(const char *description)
Create and save microcode snapshot.
Definition hexrays.hpp:12846
bool hexapi remove_blocks(int start_blk, int end_blk)
Definition hexrays.hpp:12734
bool lvar_names_ok() const
Definition hexrays.hpp:5281
const ivl_t & get_std_region(memreg_index_t idx) const
Get information about various memory regions.
Definition hexrays.hpp:6162
bool has_stack_retval() const
Definition hexrays.hpp:5288
bool optimized() const
Definition hexrays.hpp:5257
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:5389
void clr_mba_flags2(int f)
Definition hexrays.hpp:5299
bool hexapi remove_block(mblock_t *blk)
Delete a block.
Definition hexrays.hpp:12728
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:5420
mblock_t * get_mblock(uint n)
Definition hexrays.hpp:5571
bool final_type
is the function type final? (specified by the user)
Definition hexrays.hpp:5419
sval_t spd_adjust
If sp>0, the max positive sp value.
Definition hexrays.hpp:5409
bool code16_bit_removed() const
Definition hexrays.hpp:5287
bool precise_defeas() const
Definition hexrays.hpp:5256
int npurged
-1 - unknown
Definition hexrays.hpp:5387
ea_t error_ea
during microcode generation holds ins.ea
Definition hexrays.hpp:5433
int qty
number of basic blocks
Definition hexrays.hpp:5386
hexwarns_t notes
Definition hexrays.hpp:5442
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void hexapi term()
ivl_t get_stack_region() const
Definition hexrays.hpp:6182
~mba_t()
Definition hexrays.hpp:5465
bool show_reduction() const
Definition hexrays.hpp:5259
func_t *hexapi get_curfunc() const
Definition hexrays.hpp:12632
merror_t hexapi build_graph()
Build control flow graph.
Definition hexrays.hpp:12656
bool bad_call_sp_detected() const
Definition hexrays.hpp:5449
int shadow_args
size of shadow argument area
Definition hexrays.hpp:5396
ea_t last_prolog_ea
Definition hexrays.hpp:5384
callcnv_t cc
calling convention
Definition hexrays.hpp:5388
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:12782
bool may_refine_rettype() const
Definition hexrays.hpp:5264
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:12722
sval_t argbase() const
Definition hexrays.hpp:5358
bool hexapi merge_blocks()
Merge blocks.
Definition hexrays.hpp:12752
bool common_stkvars_stkargs() const
Definition hexrays.hpp:5280
bool really_alloc() const
Definition hexrays.hpp:5272
bool is_stkarg(const lvar_t &v) const
Definition hexrays.hpp:5368
intvec_t argidx
input arguments (indexes into 'vars')
Definition hexrays.hpp:5429
void hexapi serialize(bytevec_t *vout) const
Serialize mbl array into a sequence of bytes.
Definition hexrays.hpp:12834
ssize_t get_stkvar(udm_t *udm, sval_t vd_stkoff, uval_t *p_idaoff=nullptr, tinfo_t *p_frame=nullptr) const
bool hexapi del_user_minsn(const minsn_locator_t &loc, user_minsn_action_t action, mba_maturity_t mmat)
Delete a user-defined microinstruction action.
Definition hexrays.hpp:12888
static WARN_UNUSED_RESULT mba_t *hexapi deserialize(const uchar *bytes, size_t nbytes)
Deserialize a byte sequence into mbl array.
Definition hexrays.hpp:12840
bool loaded_gdl() const
Definition hexrays.hpp:5261
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:12764
bool is_snippet() const
Definition hexrays.hpp:5473
int retsize
size of return address in the stack frame
Definition hexrays.hpp:5395
bool returns_fpval() const
Definition hexrays.hpp:5275
bool callinfo_built() const
Definition hexrays.hpp:5271
merror_t hexapi inline_function(codegen_t &cdg, int blknum, decomp_ranges_t &ranges, int decomp_flags=0, int inline_flags=0)
Inline a range (ea-based variant).
Definition hexrays.hpp:12870
bool display_numaddrs() const
Definition hexrays.hpp:5265
int hexapi analyze_calls(int acflags)
Analyze calls and determine calling conventions.
Definition hexrays.hpp:12668
void hexapi set_numform(const operand_locator_t &loc, const number_format_t &nf)
Set the user-defined number format for an operand.
Definition hexrays.hpp:12822
DEPRECATED 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:12864
bool argidx_ok() const
Definition hexrays.hpp:5285
mblock_t *hexapi insert_block(int bblk)
Insert a block in the middle of the mbl array.
Definition hexrays.hpp:12716
bool propagated_asserts() const
Definition hexrays.hpp:5278
bool is_cdtr() const
Definition hexrays.hpp:5292
mlist_t nodel_memory
global dead elimination may not delete references to this area
Definition hexrays.hpp:5413
sval_t inargoff
offset of the first stack argument; after fix_scattered_movs() INARGOFF may be less than STACKSIZE
Definition hexrays.hpp:5401
void clr_cdtr()
Definition hexrays.hpp:5300
sval_t hexapi stkoff_ida2vd(sval_t off) const
Definition hexrays.hpp:12586
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:12776
ivlset_t gotoff_stkvars
stkvars that hold .got offsets. considered to be unaliasable
Definition hexrays.hpp:5410
bool has_bad_sp() const
Definition hexrays.hpp:5457
ea_t first_epilog_ea
Definition hexrays.hpp:5385
const lvar_t & arg(size_t n) const
Definition hexrays.hpp:5683
bool has_passregs() const
Definition hexrays.hpp:5276
ea_t minstkref_ea
address with lowest minstkref (for debugging)
Definition hexrays.hpp:5405
ivlset_t restricted_memory
Definition hexrays.hpp:5411
Control flow graph of microcode.
Definition hexrays.hpp:5869
int get_chain_stamp() const
Definition hexrays.hpp:5925
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:5934
graph_chains_t *hexapi get_ud(gctype_t gctype)
Get use-def chains.
Definition hexrays.hpp:12906
graph_chains_t *hexapi get_du(gctype_t gctype)
Get def-use chains.
Definition hexrays.hpp:12912
bool is_ud_chain_dirty(gctype_t gctype)
Is the use-def chain of the specified kind dirty?
Definition hexrays.hpp:5913
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:5938
bool is_du_chain_dirty(gctype_t gctype)
Is the def-use chain of the specified kind dirty?
Definition hexrays.hpp:5920
mblock_t * get_mblock(int n) const
Definition hexrays.hpp:5941
Microcode of one basic block.
Definition hexrays.hpp:4329
ea_t end
end address note: we cannot rely on start/end addresses very much because instructions are propagated...
Definition hexrays.hpp:4362
mlist_t dnu
data that is defined but not used in the block
Definition hexrays.hpp:4377
bool lists_ready() const
Definition hexrays.hpp:4398
sval_t minbargref
the same for arguments
Definition hexrays.hpp:4383
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool empty() const
Definition hexrays.hpp:4417
void mark_lists_dirty()
Definition hexrays.hpp:4393
minsn_t * head
pointer to the first instruction of the block
Definition hexrays.hpp:4366
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:12472
minsn_t * tail
pointer to the last instruction of the block
Definition hexrays.hpp:4367
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:4330
mblock_type_t type
block type (BLT_NONE - not computed yet)
Definition hexrays.hpp:4370
int serial
block number
Definition hexrays.hpp:4369
intvec_t succset
control flow graph: list of our successors use nsucc() and succ() to access it
Definition hexrays.hpp:4387
void hexapi print(vd_printer_t &vp) const
Print block contents.
Definition hexrays.hpp:12394
void hexapi dump() const
Dump block info.
Definition hexrays.hpp:12400
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:12506
bool is_branch() const
Definition hexrays.hpp:4763
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:12448
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all operands.
Definition hexrays.hpp:12436
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:4599
minsn_t * find_def(const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
Definition hexrays.hpp:4702
bool is_simple_goto_block() const
Definition hexrays.hpp:4764
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:12500
void hexapi verify_insn(const minsn_t *m) const
Verify an instruction.
bool is_nway() const
Definition hexrays.hpp:4762
void request_demote64()
Definition hexrays.hpp:4396
mblock_t * prevb
previous block in the doubly linked list
Definition hexrays.hpp:4335
mlist_t mustbuse
data that must be used by the block
Definition hexrays.hpp:4373
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:4385
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:12518
mlist_t maybuse
data that may be used by the block
Definition hexrays.hpp:4374
bool is_simple_jcnd_block() const
Definition hexrays.hpp:4770
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:12512
mlist_t hexapi build_def_list(const minsn_t &ins, maymust_t maymust) const
Build def-list of an instruction.
Definition hexrays.hpp:12492
mlist_t maybdef
data that may be defined by the block
Definition hexrays.hpp:4376
int make_lists_ready()
Definition hexrays.hpp:4399
int npred() const
Get number of block predecessors.
Definition hexrays.hpp:4407
mlist_t dead_at_start
data that is dead at the block entry
Definition hexrays.hpp:4372
int hexapi optimize_useless_jump()
Remove a jump at the end of the block if it is useless.
Definition hexrays.hpp:12466
bool hexapi get_valranges(valrng_t *res, const vivl_t &vivl, int vrflags) const
Find possible values for a block.
Definition hexrays.hpp:12524
char reserved[]
Definition hexrays.hpp:4391
mlist_t mustbdef
data that must be defined by the block
Definition hexrays.hpp:4375
bool is_unknown_call() const
Definition hexrays.hpp:4761
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:12430
int pred(int n) const
Definition hexrays.hpp:4411
sval_t maxbsp
maximal sp value in the block (0...stacksize)
Definition hexrays.hpp:4379
minsn_t * find_first_use(mlist_t *list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Definition hexrays.hpp:4614
uint32 flags
combination of Basic block properties bits
Definition hexrays.hpp:4336
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:4629
minsn_t * find_redefinition(const mlist_t &list, minsn_t *i1, const minsn_t *i2, maymust_t maymust=MAY_ACCESS) const
Definition hexrays.hpp:4651
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:12478
bool needs_propagation() const
Definition hexrays.hpp:4395
int nsucc() const
Get number of block successors.
Definition hexrays.hpp:4409
void make_nop(minsn_t *m)
Erase the instruction (convert it to nop) and mark the lists dirty.
Definition hexrays.hpp:4753
void hexapi undef_spoiled_regs(minsn_t *m)
Undefine registers spoiled by the instruction m (insert new 'und' instruction for them,...
Definition hexrays.hpp:12542
int hexapi optimize_block()
Optimize a basic block.
Definition hexrays.hpp:12454
sval_t minbstkref
lowest stack location accessible with indirect addressing (offset from the stack bottom) initially it...
Definition hexrays.hpp:4380
mba_t * mba
the parent micro block array
Definition hexrays.hpp:4368
minsn_t *hexapi remove_from_block(minsn_t *m)
Remove instruction from the doubly linked list.
Definition hexrays.hpp:12424
bool lists_dirty() const
Definition hexrays.hpp:4397
va_list va const
Definition hexrays.hpp:4429
minsn_t * find_use(const mop_t &op, minsn_t **p_i1, const minsn_t *i2, int fdflags)
Definition hexrays.hpp:4710
bool is_call_block() const
Definition hexrays.hpp:4760
mblock_t * nextb
next block in the doubly linked list
Definition hexrays.hpp:4334
int hexapi build_lists(bool kill_deads)
Build def-use lists and eliminate deads.
Definition hexrays.hpp:12460
mlist_t hexapi build_use_list(const minsn_t &ins, maymust_t maymust) const
Build use-list of an instruction.
Definition hexrays.hpp:12484
int succ(int n) const
Definition hexrays.hpp:4413
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:12442
size_t hexapi get_reginsn_qty() const
Calculate number of regular instructions in the block.
Definition hexrays.hpp:12536
void request_propagation()
Definition hexrays.hpp:4394
A call argument.
Definition hexrays.hpp:3199
const char *hexapi dstr() const
Definition hexrays.hpp:12078
void set_regarg(mreg_t mr, char dt, type_sign_t sign=type_unsigned)
Definition hexrays.hpp:3218
uint32 flags
FAI_...
Definition hexrays.hpp:3206
void make_uint(int val, ea_t val_ea, int opno=0)
Definition hexrays.hpp:3228
void copy_mop(const mop_t &op)
Definition hexrays.hpp:3210
void set_regarg(mreg_t mr, const tinfo_t &tif)
Definition hexrays.hpp:3214
void hexapi set_regarg(mreg_t mr, int sz, const tinfo_t &tif)
Definition hexrays.hpp:12084
tinfo_t type
formal argument type
Definition hexrays.hpp:3203
argloc_t argloc
ida argloc
Definition hexrays.hpp:3205
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:12072
ea_t ea
address where the argument was initialized.
Definition hexrays.hpp:3201
void make_int(int val, ea_t val_ea, int opno=0)
Definition hexrays.hpp:3223
mcallarg_t()
Definition hexrays.hpp:3208
qstring name
formal argument name
Definition hexrays.hpp:3204
mcallarg_t(const mop_t &rarg)
Definition hexrays.hpp:3209
Information about a call.
Definition hexrays.hpp:3370
mcallargs_t args
call arguments
Definition hexrays.hpp:3378
mcallinfo_t(ea_t _callee=BADADDR, int _sargs=0)
Definition hexrays.hpp:3420
int flags
combination of Call properties... bits
Definition hexrays.hpp:3396
int call_spd
sp value at call insn
Definition hexrays.hpp:3375
mlist_t return_regs
list of values returned by the function
Definition hexrays.hpp:3384
void hexapi print(qstring *vout, int size=-1, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:12110
ivlset_t visible_memory
what memory is visible to the call?
Definition hexrays.hpp:3391
HEXRAYS_MEMORY_ALLOCATION_FUNCS() int hexapi lexcompare(const mcallinfo_t &f) const
const char *hexapi dstr() const
Definition hexrays.hpp:12116
mlist_t spoiled
list of spoiled locations (includes RETURN_REGS)
Definition hexrays.hpp:3385
ea_t callee
address of the called function, if known
Definition hexrays.hpp:3372
type_attrs_t fti_attrs
extended function attributes
Definition hexrays.hpp:3418
mlist_t dead_regs
registers defined by the function but never used.
Definition hexrays.hpp:3392
mopvec_t retregs
return register(s) (e.g., AX, AX:DX, etc.) this vector is built from return_regs
Definition hexrays.hpp:3379
bool is_vararg() const
Definition hexrays.hpp:3428
funcrole_t role
function role
Definition hexrays.hpp:3417
tinfo_t return_type
type of the returned value
Definition hexrays.hpp:3381
int stkargs_top
first offset past stack arguments
Definition hexrays.hpp:3376
callcnv_t cc
calling convention
Definition hexrays.hpp:3377
argloc_t return_argloc
location of the returned value
Definition hexrays.hpp:3382
int solid_args
number of solid args.
Definition hexrays.hpp:3373
tinfo_t hexapi get_type() const
Definition hexrays.hpp:12102
mlist_t pass_regs
passthrough registers (subset of SPOILED) The called function only partially updates the register,...
Definition hexrays.hpp:3386
bool hexapi set_type(const tinfo_t &type)
Definition hexrays.hpp:12096
List of switch cases and targets.
Definition hexrays.hpp:3435
size_t size() const
Definition hexrays.hpp:3444
void resize(int s)
Definition hexrays.hpp:3445
casevec_t values
expression values for each target
Definition hexrays.hpp:3437
DECLARE_COMPARISONS(mcases_t)
intvec_t targets
target block numbers
Definition hexrays.hpp:3438
void swap(mcases_t &r)
Definition hexrays.hpp:3440
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool empty() const
Definition hexrays.hpp:3442
void hexapi print(qstring *vout) const
Definition hexrays.hpp:12128
const char *hexapi dstr() const
Definition hexrays.hpp:12134
Microinstruction class insn.
Definition hexrays.hpp:3702
void set_wild_match()
Definition hexrays.hpp:3793
bool is_ignlowsrc() const
Definition hexrays.hpp:3769
minsn_t * find_ins_op(mop_t **other, mcode_t op=m_nop)
Definition hexrays.hpp:3984
void hexapi set_combined()
Definition hexrays.hpp:12226
bool is_tailcall() const
Definition hexrays.hpp:3763
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:12256
bool is_wild_match() const
Definition hexrays.hpp:3767
bool was_split() const
Definition hexrays.hpp:3774
void set_farcall()
Definition hexrays.hpp:3783
bool is_propagatable() const
Definition hexrays.hpp:3768
void set_assert()
Definition hexrays.hpp:3790
void set_ignlowsrc()
Definition hexrays.hpp:3795
void clr_ignlowsrc()
Definition hexrays.hpp:3796
mop_t r
right operand
Definition hexrays.hpp:3712
minsn_t * prev
prev insn in doubly linked list. check also previ()
Definition hexrays.hpp:3709
bool hexapi is_noret_call(int flags=0)
Is a non-returing call?
Definition hexrays.hpp:12292
void set_split_size(int s)
Definition hexrays.hpp:3806
void set_noret_icall()
Definition hexrays.hpp:3798
void set_combinable()
Definition hexrays.hpp:3802
bool hexapi may_use_aliased_memory() const
Is it possible for the instruction to use aliased memory?
Definition hexrays.hpp:12346
bool contains_opcode(mcode_t mcode) const
Does the instruction have the specified opcode?
Definition hexrays.hpp:3958
minsn_t * next
next insn in doubly linked list. check also nexti()
Definition hexrays.hpp:3708
bool modifies_pair_mop() const
Definition hexrays.hpp:4012
bool is_multimov() const
Definition hexrays.hpp:3772
int hexapi lexcompare(const minsn_t &ri) const
Definition hexrays.hpp:12286
void set_extstx()
Definition hexrays.hpp:3785
bool contains_call(bool with_helpers=false) const
Does the instruction contain a call?
Definition hexrays.hpp:3936
bool is_combined() const
Definition hexrays.hpp:3759
int hexapi for_all_insns(minsn_visitor_t &mv)
Visit all instructions.
Definition hexrays.hpp:12268
bool hexapi has_side_effects(bool include_ldx_and_divs=false) const
Does the instruction have a side effect?
Definition hexrays.hpp:12310
funcrole_t get_role() const
Get the function role of a call.
Definition hexrays.hpp:3945
void set_unmerged()
Definition hexrays.hpp:3805
const minsn_t *hexapi find_ins_op(const mop_t **other, mcode_t op=m_nop) const
Find an operand that is a subinstruction with the specified opcode.
Definition hexrays.hpp:12322
int get_split_size() const
Definition hexrays.hpp:3814
void clr_noret_icall()
Definition hexrays.hpp:3799
bool is_mbarrier() const
Definition hexrays.hpp:3775
void clr_propagatable()
Definition hexrays.hpp:3794
void clr_fpinsn()
Definition hexrays.hpp:3789
void hexapi setaddr(ea_t new_ea)
Change the instruction address.
Definition hexrays.hpp:12250
bool is_farcall() const
Definition hexrays.hpp:3760
ea_t ea
instruction address
Definition hexrays.hpp:3710
bool is_memcpy() const
Definition hexrays.hpp:3946
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Generate insn text into the buffer.
Definition hexrays.hpp:12238
bool is_readflags() const
Definition hexrays.hpp:3950
bool hexapi modifies_d() const
Does the instruction modify its 'd' operand?
Definition hexrays.hpp:12334
bool is_inverted_jx() const
Definition hexrays.hpp:3770
bool is_persistent() const
Definition hexrays.hpp:3766
minsn_t(ea_t _ea)
Constructor.
Definition hexrays.hpp:3821
mop_t l
left operand
Definition hexrays.hpp:3711
bool is_like_move() const
Definition hexrays.hpp:4007
int optimize_solo(int optflags=0)
Optimize one instruction without context.
Definition hexrays.hpp:3851
bool was_noret_icall() const
Definition hexrays.hpp:3771
bool is_cleaning_pop() const
Definition hexrays.hpp:3761
void set_fpinsn()
Definition hexrays.hpp:3788
void clr_combined()
Definition hexrays.hpp:3782
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:12340
bool was_unmerged() const
Definition hexrays.hpp:3776
void set_persistent()
Definition hexrays.hpp:3792
bool was_memfunc() const
Definition hexrays.hpp:3778
const mop_t *hexapi find_num_op(const mop_t **other) const
Find a numeric operand of the current instruction (operand with t == mop_n).
Definition hexrays.hpp:12328
HEXRAYS_MEMORY_ALLOCATION_FUNCS() minsn_t &operator
Assignment operator. It does not copy prev/next fields.
void set_tailcall()
Definition hexrays.hpp:3786
int hexapi for_all_ops(mop_visitor_t &mv)
Visit all instruction operands.
Definition hexrays.hpp:12262
bool is_alloca() const
Definition hexrays.hpp:3948
bool is_fpinsn() const
Definition hexrays.hpp:3764
minsn_t(const minsn_t &m)
Definition hexrays.hpp:3822
bool is_after(const minsn_t *m) const
Is the instruction after the specified one?
Definition hexrays.hpp:4023
bool is_memset() const
Definition hexrays.hpp:3947
int hexapi serialize(bytevec_t *b) const
Serialize an instruction.
Definition hexrays.hpp:12352
void clr_multimov()
Definition hexrays.hpp:3801
mop_t d
destination operand
Definition hexrays.hpp:3713
bool is_unknown_call() const
Is an unknown call?
Definition hexrays.hpp:3922
void clr_tailcall()
Definition hexrays.hpp:3787
bool is_extstx() const
Definition hexrays.hpp:3762
minsn_t *hexapi find_call(bool with_helpers=false) const
Find a call instruction.
Definition hexrays.hpp:12304
bool is_assert() const
Definition hexrays.hpp:3765
bool hexapi equal_insns(const minsn_t &m, int eqflags) const
Compare instructions.
Definition hexrays.hpp:12280
bool was_unpaired() const
Definition hexrays.hpp:3777
void set_cleaning_pop()
Definition hexrays.hpp:3784
const minsn_t * find_opcode(mcode_t mcode) const
Find a (sub)insruction with the specified opcode.
Definition hexrays.hpp:3962
mop_t * find_num_op(mop_t **other)
Definition hexrays.hpp:4004
const char *hexapi dstr() const
Get displayable text without tags in a static buffer.
Definition hexrays.hpp:12244
bool is_bswap() const
Definition hexrays.hpp:3949
bool is_combinable() const
Definition hexrays.hpp:3773
void set_multimov()
Definition hexrays.hpp:3800
void set_optional()
Definition hexrays.hpp:3780
bool hexapi is_helper(const char *name) const
Is a helper call with the specified name?
Definition hexrays.hpp:12298
void hexapi _make_nop()
Convert instruction to nop.
Definition hexrays.hpp:12274
void set_mbarrier()
Definition hexrays.hpp:3804
bool is_optional() const
Definition hexrays.hpp:3758
void clr_combinable()
Definition hexrays.hpp:3803
mcode_t opcode
instruction opcode
Definition hexrays.hpp:3706
void clr_assert()
Definition hexrays.hpp:3791
bool is_mov() const
Definition hexrays.hpp:4006
bool hexapi deserialize(const uchar *bytes, size_t nbytes, int format_version)
Deserialize an instruction.
Definition hexrays.hpp:12358
int iprops
combination of instruction property bits bits
Definition hexrays.hpp:3707
void set_inverted_jx()
Definition hexrays.hpp:3797
Address of an operand (mop_l, mop_v, mop_S, mop_r)
Definition hexrays.hpp:3169
mop_addr_t(const mop_addr_t &ra)
Definition hexrays.hpp:3175
mop_addr_t & operator=(const mop_addr_t &rop)
Definition hexrays.hpp:3180
int lexcompare(const mop_addr_t &ra) const
Definition hexrays.hpp:3187
int outsize
Definition hexrays.hpp:3172
mop_addr_t()
Definition hexrays.hpp:3174
mop_addr_t(const mop_t &ra, int isz, int osz)
Definition hexrays.hpp:3177
int insize
Definition hexrays.hpp:3171
Pair of operands.
Definition hexrays.hpp:3160
mop_t lop
low operand
Definition hexrays.hpp:3162
mop_t hop
high operand
Definition hexrays.hpp:3163
A microinstruction operand.
Definition hexrays.hpp:2604
int hexapi get_bitwidth(const mblock_t *blk, const minsn_t *top) const
Get the effective bitwidth of the operand.
Definition hexrays.hpp:11970
int64 signed_value() const
Definition hexrays.hpp:3019
bool is_one() const
Definition hexrays.hpp:3038
void hexapi _make_gvar(ea_t ea)
Create a global variable operand without erasing previous data.
Definition hexrays.hpp:11928
bool double_size(side_effect_t sideff=WITH_SIDEFF)
Definition hexrays.hpp:3126
bool is_for_abi() const
Definition hexrays.hpp:2667
friend int lexcompare(const mop_t &a, const mop_t &b)
Definition hexrays.hpp:2989
int b
Definition hexrays.hpp:2644
bool is_negative_constant() const
Definition hexrays.hpp:3044
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void zero()
Definition hexrays.hpp:2691
bool has_side_effects(bool include_ldx_and_divs=false) const
Has any side effects?
Definition hexrays.hpp:6107
uint8 oprops
Operand properties.
Definition hexrays.hpp:2611
bool is_insn() const
Is a sub-instruction?
Definition hexrays.hpp:2928
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:12000
void make_reg(mreg_t reg, int _size)
Definition hexrays.hpp:2784
bool hexapi is_constant(uint64 *out=nullptr, bool is_signed=true) const
Retrieve value of a constant integer operand.
Definition hexrays.hpp:12012
uint64 unsigned_value() const
Definition hexrays.hpp:3020
bool hexapi is_zero_extended_from(int nbytes) const
Does the high part of the operand consist of zero bytes?
Definition hexrays.hpp:11982
mopt_t t
Operand type.
Definition hexrays.hpp:2608
bool is_reg() const
Is a register operand?
Definition hexrays.hpp:2900
void hexapi create_from_insn(const minsn_t *m)
Create operand from an instruction.
Definition hexrays.hpp:11910
~mop_t()
Definition hexrays.hpp:2687
bool hexapi create_from_mlist(mba_t *mba, const mlist_t &lst, sval_t fullsize)
Create operand from mlist_t.
Definition hexrays.hpp:11886
void hexapi make_reg_pair(int loreg, int hireg, int halfsize)
Create pair of registers.
Definition hexrays.hpp:11940
bool is_mblock() const
Is a block reference?
Definition hexrays.hpp:2916
bool is_glbaddr_from_fixup() const
Definition hexrays.hpp:2677
bool is_lowaddr() const
Definition hexrays.hpp:2666
void _make_lvar(mba_t *mba, int idx, sval_t off=0)
Create a local variable operand.
Definition hexrays.hpp:2792
bool is_pcval() const
Definition hexrays.hpp:2673
bool hexapi make_low_half(int width)
Make the low part of the operand.
Definition hexrays.hpp:12024
bool hexapi get_stkoff(sval_t *p_vdoff) const
Get the referenced stack offset.
Definition hexrays.hpp:12018
uint16 valnum
Value number.
Definition hexrays.hpp:2627
bool empty() const
Definition hexrays.hpp:2893
void set_udt()
Definition hexrays.hpp:2658
ssize_t get_stkvar(udm_t *udm=nullptr, uval_t *p_idaoff=nullptr) const
Retrieve the referenced stack variable.
Definition hexrays.hpp:3057
void _make_blkref(int blknum)
Create a block reference operand without erasing previous data.
Definition hexrays.hpp:2837
int size
Operand size.
Definition hexrays.hpp:2631
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:12060
bool is_glbvar() const
Is a global variable?
Definition hexrays.hpp:2895
bool hexapi equal_mops(const mop_t &rop, int eqflags) const
Compare operands.
Definition hexrays.hpp:11988
mop_addr_t * a
Definition hexrays.hpp:2647
char * helper
Definition hexrays.hpp:2648
void hexapi print(qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
Definition hexrays.hpp:11874
bool hexapi change_size(int nsize, side_effect_t sideff=WITH_SIDEFF)
Change the operand size.
Definition hexrays.hpp:12054
bool is_reg(mreg_t _r) const
Is the specified register?
Definition hexrays.hpp:2902
const minsn_t * get_insn(mcode_t code) const
Get subinstruction of the operand.
Definition hexrays.hpp:6121
mnumber_t * nnn
Definition hexrays.hpp:2640
mcases_t * c
Definition hexrays.hpp:2650
bool hexapi make_fpnum(const void *bytes, size_t _size)
Create a floating point constant operand.
Definition hexrays.hpp:11922
void _make_cases(mcases_t *_cases)
Create a 'switch cases' operand without erasing previous data.
Definition hexrays.hpp:2875
void set_lowaddr()
Definition hexrays.hpp:2660
void make_insn(minsn_t *ins)
Create a nested instruction.
Definition hexrays.hpp:2831
scif_t * scif
Definition hexrays.hpp:2653
void hexapi make_number(uint64 _value, int _size, ea_t _ea=BADADDR, int opnum=0)
Create an integer constant operand.
Definition hexrays.hpp:11916
bool is_arglist() const
Is a list of arguments?
Definition hexrays.hpp:2906
bool is_impptr_done() const
Definition hexrays.hpp:2662
bool is_equal_to(uint64 n, bool is_signed=true) const
Definition hexrays.hpp:3032
mop_t(const mop_t &rop)
Definition hexrays.hpp:2683
bool hexapi make_first_half(int width)
Make the first part of the operand.
Definition hexrays.hpp:12036
bool is_stkvar() const
Is a stack variable?
Definition hexrays.hpp:2897
void make_stkvar(mba_t *mba, sval_t off)
Definition hexrays.hpp:2816
void set_impptr_done()
Definition hexrays.hpp:2657
bool hexapi is_sign_extended_from(int nbytes) const
Does the high part of the operand consist of the sign bytes?
Definition hexrays.hpp:11976
void set_for_abi()
Definition hexrays.hpp:2661
bool hexapi make_high_half(int width)
Make the high part of the operand.
Definition hexrays.hpp:12030
const char *hexapi dstr() const
Definition hexrays.hpp:11880
bool operator!=(const mop_t &rop) const
Definition hexrays.hpp:2984
uint64 value(bool is_signed) const
Retrieve value of a constant integer operand.
Definition hexrays.hpp:3018
void apply_xds(ea_t ea, int newsize)
Definition hexrays.hpp:3154
bool is_undef_val() const
Definition hexrays.hpp:2665
bool is_glbaddr() const
Is address of a global memory cell?
Definition hexrays.hpp:6131
void _make_reg(mreg_t reg)
Create a register operand without erasing previous data.
Definition hexrays.hpp:2771
mcallinfo_t * f
Definition hexrays.hpp:2645
bool is_scattered() const
Is a scattered operand?
Definition hexrays.hpp:2920
void hexapi erase()
Definition hexrays.hpp:11868
void _make_insn(minsn_t *ins)
Create a nested instruction without erasing previous data.
Definition hexrays.hpp:6101
void _make_strlit(const char *str)
Create a constant string operand.
Definition hexrays.hpp:2851
mop_t & operator=(const mop_t &rop)
Definition hexrays.hpp:2685
bool is_kreg() const
Is a kernel register?
Definition hexrays.hpp:6112
bool is_cc() const
Is a condition code?
Definition hexrays.hpp:2908
bool is_reg(mreg_t _r, int _size) const
Is the specified register of the specified size?
Definition hexrays.hpp:2904
void hexapi swap(mop_t &rop)
Definition hexrays.hpp:11862
int hexapi for_all_scattered_submops(scif_visitor_t &sv) const
Visit all sub-operands of a scattered operand.
Definition hexrays.hpp:12006
bool is_bit_reg() const
Definition hexrays.hpp:2912
bool is_zero() const
Definition hexrays.hpp:3037
bool hexapi create_from_ivlset(mba_t *mba, const ivlset_t &ivs, sval_t fullsize)
Create operand from ivlset_t.
Definition hexrays.hpp:11892
void make_reg(mreg_t reg)
Create a register operand.
Definition hexrays.hpp:2783
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:2967
bool hexapi shift_mop(int offset)
Shift the operand.
Definition hexrays.hpp:12048
mop_t &hexapi assign(const mop_t &rop)
Definition hexrays.hpp:11856
bool is_positive_constant() const
Definition hexrays.hpp:3039
bool is_udt() const
Definition hexrays.hpp:2663
mop_pair_t * pair
Definition hexrays.hpp:2652
mreg_t r
Definition hexrays.hpp:2639
void _make_stkvar(mba_t *mba, sval_t off)
Create a stack variable operand.
Definition hexrays.hpp:2811
bool is_stkaddr() const
Is address of a stack variable?
Definition hexrays.hpp:6141
mop_t(mreg_t _r, int _s)
Definition hexrays.hpp:2684
bool hexapi is01() const
Are the possible values of the operand only 0 and 1?
Definition hexrays.hpp:11964
void set_undef_val()
Definition hexrays.hpp:2659
fnumber_t * fpc
Definition hexrays.hpp:2651
ea_t g
Definition hexrays.hpp:2643
mop_t()
Definition hexrays.hpp:2682
void _make_strlit(qstring *str)
Definition hexrays.hpp:2856
bool operator==(const mop_t &rop) const
Definition hexrays.hpp:2983
bool is_ccflags() const
Definition hexrays.hpp:2668
char * cstr
Definition hexrays.hpp:2649
void hexapi make_helper(const char *name)
Create a helper operand.
Definition hexrays.hpp:11946
minsn_t * d
Definition hexrays.hpp:2641
void hexapi create_from_vdloc(mba_t *mba, const vdloc_t &loc, int _size)
Create operand from vdloc_t.
Definition hexrays.hpp:11898
void make_blkref(int blknum)
Create a global variable operand.
Definition hexrays.hpp:2843
void _make_callinfo(mcallinfo_t *fi)
Create a call info operand without erasing previous data.
Definition hexrays.hpp:2866
stkvar_ref_t * s
Definition hexrays.hpp:2642
void _make_reg(mreg_t reg, int _size)
Definition hexrays.hpp:2776
bool hexapi make_second_half(int width)
Make the second part of the operand.
Definition hexrays.hpp:12042
void erase_but_keep_size()
Definition hexrays.hpp:2695
lvar_ref_t * l
Definition hexrays.hpp:2646
bool probably_floating() const
Definition hexrays.hpp:2664
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:11904
void hexapi apply_ld_mcode(mcode_t mcode, ea_t ea, int newsize)
Apply a unary opcode to the operand.
Definition hexrays.hpp:12066
void update_numop_value(uint64 val)
Definition hexrays.hpp:3021
void hexapi make_gvar(ea_t ea)
Create a global variable operand.
Definition hexrays.hpp:11934
bool is_mblock(int serial) const
Is a block reference to the specified block?
Definition hexrays.hpp:2918
void apply_xdu(ea_t ea, int newsize)
Definition hexrays.hpp:3153
void _make_pair(mop_pair_t *_pair)
Create a pair operand without erasing previous data.
Definition hexrays.hpp:2884
bool hexapi may_use_aliased_memory() const
Is it possible for the operand to use aliased memory?
Definition hexrays.hpp:11958
Definition hexrays.hpp:1916
node_bitset_t(int node)
Definition hexrays.hpp:1919
node_bitset_t()
Definition hexrays.hpp:1918
Node ordering in a graph.
Definition gdl.hpp:152
A flow chart for a function (ea-based, no func_t pointers).
Definition gdl.hpp:527
Linked list Note: linked list is not movable!
Definition pro.h:4115
Smart pointer to objects derived from qrefcnt_obj_t.
Definition pro.h:2996
Reimplementation of stack class from STL.
Definition pro.h:2848
Reimplementation of vector class from STL.
Definition pro.h:2262
const ivl_t * const_iterator
Definition pro.h:2681
void swap(qvector< T > &r) noexcept
Replace all attributes of this qvector with that of 'r', and vice versa.
Definition pro.h:2634
iterator end(void)
Get an iterator that points to the end of the qvector (NOT the last element)
Definition pro.h:2684
qvector(void)
Definition pro.h:2374
lvar_saved_info_t * iterator
Definition pro.h:2680
iterator begin(void)
Get an iterator that points to the first element in the qvector.
Definition pro.h:2683
void push_back(ea_t &&x)
Definition pro.h:2432
Definition hexrays.hpp:2087
const char *hexapi dstr() const
Definition hexrays.hpp:11698
rlist_t & operator=(const rlist_t &)=default
rlist_t(mreg_t reg, int width)
Definition hexrays.hpp:2091
rlist_t()
Definition hexrays.hpp:2089
rlist_t(const rlist_t &m)
Definition hexrays.hpp:2090
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11692
~rlist_t()
Definition hexrays.hpp:2092
Used to manage arguments that are described by multiple locations (also see ALOC_DIST)
Definition typeinf.hpp:1347
Definition hexrays.hpp:2300
friend class simple_graph_t
Definition hexrays.hpp:2301
bool operator==(const iterator &n) const
Definition hexrays.hpp:2305
bool operator!=(const iterator &n) const
Definition hexrays.hpp:2306
int operator*() const
Definition hexrays.hpp:2307
Definition hexrays.hpp:2261
void calc_outgoing_edges(const intvec_t &sub, edgevec_t &el) const
int front() const
Definition hexrays.hpp:2312
void inc(iterator &p, int n=1) const
Definition hexrays.hpp:2313
void hexapi compute_dominators(array_of_node_bitset_t &domin, bool post=false) const
Definition hexrays.hpp:11784
void find_reaching_nodes(int n, node_bitset_t &reaching) const
bool colored_gdl_edges
Definition hexrays.hpp:2270
void hexapi compute_immediate_dominators(const array_of_node_bitset_t &domin, intvec_t &idomin, bool post=false) const
Definition hexrays.hpp:11790
void depth_first_postorder(node_ordering_t *post, edge_mapper_t *et) const
iterator begin() const
Definition hexrays.hpp:2310
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:2309
bool path_back(const edge_mapper_t &et, int m, int n) const
int const newapi
Definition hexrays.hpp:2274
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:11796
bool is_connected_without(const edge_t &forbidden_edge, const intvec_t &dead_nodes) const
qstring title
Definition hexrays.hpp:2269
int hexapi depth_first_postorder(node_ordering_t *post) const
Definition hexrays.hpp:11802
virtual int hexapi goup(int node) const newapi
Definition hexrays.hpp:11808
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual bool ignore_edge(int
iterator end() const
Definition hexrays.hpp:2311
Primary mechanism for managing type information.
Definition typeinf.hpp:3077
bool create_typedef(const typedef_type_data_t &p, type_t decl_type=BTF_TYPEDEF, bool try_ordinal=true)
Definition typeinf.hpp:3937
void swap(tinfo_t &r)
Assign this = r and r = this.
Definition typeinf.hpp:3228
size_t get_size(uint32 *p_effalign=nullptr, int gts_code=0) const
Get the type size in bytes.
Definition typeinf.hpp:3350
Abstract class: User-defined call generator derived classes should implement method 'match'.
Definition hexrays.hpp:1814
~udc_filter_t()
Definition hexrays.hpp:1818
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:11432
void hexapi cleanup()
Cleanup the filter This function properly clears type information associated to this filter.
Definition hexrays.hpp:11426
bool empty() const
Definition hexrays.hpp:1830
virtual merror_t hexapi apply(codegen_t &cdg) override
generate microcode for an instruction
Definition hexrays.hpp:11438
Definition hexrays.hpp:373
void set_unk()
Definition hexrays.hpp:425
void hexapi set_cmp(cmpop_t cmp, uvlr_t _value)
Definition hexrays.hpp:11019
DEFINE_MEMORY_ALLOCATION_FUNCS() void set_none()
Definition hexrays.hpp:421
const char *hexapi dstr() const
Definition hexrays.hpp:11061
uvlr_t max_svalue() const
Definition hexrays.hpp:458
valrng_t(int size_=MAX_VLR_SIZE)
Definition hexrays.hpp:414
bool hexapi cvt_to_single_value(uvlr_t *v) const
Definition hexrays.hpp:11067
bool is_unknown() const
Definition hexrays.hpp:446
bool empty() const
Definition hexrays.hpp:444
char reserved[sizeof(qvector< int >)]
Definition hexrays.hpp:406
uvlr_t zeroes
Definition hexrays.hpp:403
bool hexapi unite_with(const valrng_t &r)
Definition hexrays.hpp:11037
void hexapi set_eq(uvlr_t v)
Definition hexrays.hpp:11013
void hexapi copy(const valrng_t &r)
Definition hexrays.hpp:10995
void swap(valrng_t &r)
Definition hexrays.hpp:419
int size
Definition hexrays.hpp:389
int flags
Definition hexrays.hpp:375
bool hexapi has(uvlr_t v) const
Definition hexrays.hpp:11049
uvlr_t value
Definition hexrays.hpp:396
DECLARE_COMPARISONS(valrng_t)
valrng_t(const valrng_t &r)
Definition hexrays.hpp:416
void set_all()
Definition hexrays.hpp:424
int get_size() const
Definition hexrays.hpp:455
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11055
bool all_values() const
Definition hexrays.hpp:445
valrng_t & operator=(const valrng_t &r)
Definition hexrays.hpp:418
bool hexapi cvt_to_cmp(cmpop_t *cmp, uvlr_t *val) const
Definition hexrays.hpp:11073
bool hexapi reduce_size(int new_size)
Definition hexrays.hpp:11025
svlr_t stride
Definition hexrays.hpp:399
void hexapi inverse()
Definition hexrays.hpp:11043
valrng_t &hexapi assign(const valrng_t &r)
Definition hexrays.hpp:11001
uvlr_t min_svalue() const
Definition hexrays.hpp:457
uvlr_t ones
Definition hexrays.hpp:404
uvlr_t limit
Definition hexrays.hpp:397
void hexapi clear()
Definition hexrays.hpp:10989
~valrng_t()
Definition hexrays.hpp:417
bool hexapi intersect_with(const valrng_t &r)
Definition hexrays.hpp:11031
uvlr_t max_value() const
Definition hexrays.hpp:456
Definition hexrays.hpp:1141
int reg1() const
Definition hexrays.hpp:1147
void _set_reg1(int r1)
Definition hexrays.hpp:1152
bool hexapi is_aliasable(const mba_t *mb, size_t size) const
Definition hexrays.hpp:11281
const char *hexapi dstr(int width=0) const
Definition hexrays.hpp:11269
void set_reg1(int r1)
Definition hexrays.hpp:1155
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:1470
const argloc_type_t ALOC_REG2
register pair
Definition typeinf.hpp:961
const callcnv_t CM_CC_INVALID
this value is invalid
Definition typeinf.hpp:881
const callcnv_t CM_CC_UNKNOWN
unknown calling convention
Definition typeinf.hpp:882
merror_t
Definition hexrays.hpp:510
@ MERR_ONLY32
only 32-bit functions can be decompiled for the current database
Definition hexrays.hpp:536
@ MERR_LICENSE
no license available
Definition hexrays.hpp:535
@ MERR_CANCELED
decompilation has been cancelled
Definition hexrays.hpp:530
@ MERR_UNKTYPE
undefined type s (currently unused error code)
Definition hexrays.hpp:526
@ MERR_BADFRAME
function frame is wrong
Definition hexrays.hpp:525
@ MERR_BUSY
already decompiling a function
Definition hexrays.hpp:538
@ MERR_HUGESTACK
stack frame is too big
Definition hexrays.hpp:521
@ MERR_BADBLK
bad block found
Definition hexrays.hpp:516
@ MERR_BADIDB
inconsistent database information
Definition hexrays.hpp:527
@ MERR_CLOUD
cloud: s
Definition hexrays.hpp:546
@ MERR_EXCEPTION
exception analysis failed
Definition hexrays.hpp:520
@ MERR_BLOCK
no error, switch to new block
Definition hexrays.hpp:512
@ MERR_FUNCSIZE
too big function
Definition hexrays.hpp:541
@ MERR_PARTINIT
partially initialized variable s
Definition hexrays.hpp:533
@ MERR_BADRANGES
bad input ranges
Definition hexrays.hpp:542
@ MERR_DSLOT
bad instruction in the delay slot
Definition hexrays.hpp:544
@ MERR_OK
ok
Definition hexrays.hpp:511
@ MERR_INSN
cannot convert to microcode
Definition hexrays.hpp:514
@ MERR_COMPLEX
too complex function
Definition hexrays.hpp:534
@ MERR_BADARCH
current architecture is not supported
Definition hexrays.hpp:543
@ MERR_ONLY64
only 64-bit functions can be decompiled for the current database
Definition hexrays.hpp:537
@ MERR_RECDEPTH
max recursion depth reached during lvar allocation
Definition hexrays.hpp:531
@ MERR_FARPTR
far memory model is supported only for pc
Definition hexrays.hpp:539
@ MERR_STOP
no error, stop the analysis
Definition hexrays.hpp:545
@ MERR_BADCALL
could not determine call arguments
Definition hexrays.hpp:524
@ MERR_EMULATOR
emulator: s
Definition hexrays.hpp:547
@ MERR_SIZEOF
wrong basic type sizes in compiler settings
Definition hexrays.hpp:528
@ MERR_EXTERN
special segments cannot be decompiled
Definition hexrays.hpp:540
@ MERR_BITNESS
16-bit functions cannot be decompiled
Definition hexrays.hpp:523
@ MERR_LOOP
internal code: redo last loop (never reported)
Definition hexrays.hpp:549
@ MERR_REDO
redecompilation has been requested
Definition hexrays.hpp:529
@ MERR_PROLOG
prolog analysis failed
Definition hexrays.hpp:518
@ MERR_LVARS
local variable allocation failed
Definition hexrays.hpp:522
@ MERR_INTERR
internal error
Definition hexrays.hpp:513
@ MERR_OVERLAP
variables would overlap: s
Definition hexrays.hpp:532
@ MERR_BADSP
positive sp value has been found
Definition hexrays.hpp:517
@ MERR_SWITCH
wrong switch idiom
Definition hexrays.hpp:519
@ MERR_MAX_ERR
Definition hexrays.hpp:548
@ MERR_MEM
not enough memory
Definition hexrays.hpp:515
idaman ea_t ida_export get_func_start(ea_t ea)
Get start address of the function containing 'ea'.
idaman size_t ida_export get_func_tail_qty(ea_t func_ea)
Get the number of function tail chunks.
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:1004
int code
Definition fpro.h:88
idaman size_t n
Definition pro.h:1000
const type_sign_t type_unsigned
unsigned type
Definition typeinf.hpp:676
qvector< type_attr_t > type_attrs_t
this vector must be sorted by keys
Definition typeinf.hpp:670
int type_sign_t
type signedness
Definition typeinf.hpp:672
const type_sign_t no_sign
no sign, or unknown
Definition typeinf.hpp:674
const type_t BTF_UINT
unsigned int
Definition typeinf.hpp:411
const type_t BTF_INT
int, unknown signedness
Definition typeinf.hpp:410
bool hexapi get_type(uval_t id, tinfo_t *tif, type_source_t guess)
Get a global type.
Definition hexrays.hpp:11257
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:11263
bool hexapi is_type_correct(const type_t *ptr)
Verify a type string.
Definition hexrays.hpp:11179
int hexapi partial_type_num(const tinfo_t &type)
Calculate number of partial subtypes.
Definition hexrays.hpp:11203
bool hexapi is_small_udt(const tinfo_t &tif)
Is a small structure or union?
Definition hexrays.hpp:11185
THREAD_SAFE bool is_inplace_def(const tinfo_t &type)
Is struct/union/enum definition (not declaration)?
Definition hexrays.hpp:1024
tinfo_t hexapi get_unk_type(size_t size)
Create a partial type info by width.
Definition hexrays.hpp:11225
tinfo_t hexapi get_float_type(size_t width)
Get a type of a floating point value with the specified width.
Definition hexrays.hpp:11209
type_source_t
Type source (where the type information comes from)
Definition hexrays.hpp:1097
bool hexapi is_bool_type(const tinfo_t &type)
Is a boolean type?
Definition hexrays.hpp:11197
bool hexapi is_nonbool_type(const tinfo_t &type)
Is definitely a non-boolean type?
Definition hexrays.hpp:11191
THREAD_SAFE bool is_ptr_or_array(type_t t)
Is a pointer or array type?
Definition hexrays.hpp:1012
tinfo_t hexapi create_typedef(const char *name)
Create a reference to a named type.
Definition hexrays.hpp:11249
tinfo_t hexapi dummy_ptrtype(size_t ptrsize, bool isfp)
Generate a dummy pointer type.
Definition hexrays.hpp:11233
const char *hexapi dstr(const tinfo_t *tif)
Print the specified type info.
Definition hexrays.hpp:11173
THREAD_SAFE bool is_paf(type_t t)
Is a pointer, array, or function type?
Definition hexrays.hpp:1018
tinfo_t hexapi make_pointer(const tinfo_t &type)
Create a pointer type.
Definition hexrays.hpp:11241
tinfo_t hexapi get_int_type_by_width_and_sign(size_t srcwidth, type_sign_t sign)
Create a type info by width and sign.
Definition hexrays.hpp:11217
@ TS_DONTREF
Definition hexrays.hpp:1104
@ GUESSED_WEAK
Definition hexrays.hpp:1099
@ GUESSED_DATA
Definition hexrays.hpp:1101
@ TS_SHRINK
Definition hexrays.hpp:1103
@ GUESSED_FUNC
Definition hexrays.hpp:1100
@ TS_NOELL
Definition hexrays.hpp:1102
@ GUESSED_NONE
Definition hexrays.hpp:1098
@ TS_MASK
Definition hexrays.hpp:1105
input_device_t
Type of the input device.
Definition hexrays.hpp:8669
@ USE_MOUSE
Mouse.
Definition hexrays.hpp:8671
@ USE_KEYBOARD
Keyboard.
Definition hexrays.hpp:8670
GCC_DIAG_OFF(format-nonliteral)
GCC_DIAG_ON(format-nonliteral)
bool is_break_consumer(ctype_t op)
Does a break statement influence the specified statement code?
Definition hexrays.hpp:6491
operand_locator_t const & user_numforms_first(user_numforms_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9794
const maymust_t MAYMUST_ACCESS_MASK
Definition hexrays.hpp:476
void udcall_map_free(udcall_map_t *map)
Delete udcall_map_t instance.
Definition hexrays.hpp:10099
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:14131
cursor_item_type_t
Type of the cursor item.
Definition hexrays.hpp:7580
@ VDI_FUNC
the function itself (the very first line with the function prototype)
Definition hexrays.hpp:7584
@ VDI_TAIL
cursor is at (beyond) the line end (commentable line)
Definition hexrays.hpp:7585
@ VDI_LVAR
declaration of local variable
Definition hexrays.hpp:7583
@ VDI_NONE
undefined
Definition hexrays.hpp:7581
@ VDI_EXPR
c-tree item
Definition hexrays.hpp:7582
boundaries_iterator_t boundaries_end(const boundaries_t *map)
Get iterator pointing to the end of boundaries_t.
Definition hexrays.hpp:10816
size_t iterator_word
Definition hexrays.hpp:9764
THREAD_SAFE mcode_t jcnd2set(mcode_t code)
Definition hexrays.hpp:766
MSC_DIAG_ON(4996) GCC_DIAG_ON(deprecated-declarations) struct decomp_item_iterator_t
Item iterator for decomp_ranges_t.
Definition hexrays.hpp:5068
user_cmts_iterator_t user_cmts_prev(user_cmts_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10179
size_t user_numforms_size(user_numforms_t *map)
Get size of user_numforms_t.
Definition hexrays.hpp:9874
boundaries_iterator_t boundaries_find(const boundaries_t *map, const cinsn_t *&key)
Find the specified key in boundaries_t.
Definition hexrays.hpp:10789
void user_cmts_clear(user_cmts_t *map)
Clear user_cmts_t.
Definition hexrays.hpp:10194
const cmt_type_t CMT_FUNC
Function comment.
Definition hexrays.hpp:8723
memreg_index_t
< memory region types
Definition hexrays.hpp:4961
@ MMIDX_SHADOW
stack: shadow arguments
Definition hexrays.hpp:4965
@ MMIDX_GLBLOW
global memory: low part
Definition hexrays.hpp:4962
@ MMIDX_GLBHIGH
global memory: high part
Definition hexrays.hpp:4967
@ MMIDX_ARGS
stack: regular stack arguments
Definition hexrays.hpp:4966
@ MMIDX_RETADDR
stack: return address
Definition hexrays.hpp:4964
@ MMIDX_LVARS
stack: local variables
Definition hexrays.hpp:4963
const maymust_t EXCLUDE_PASS_REGS
Definition hexrays.hpp:483
bool is_unary(ctype_t op)
Is unary operator?
Definition hexrays.hpp:6426
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:10253
THREAD_SAFE mcode_t hexapi get_unsigned_mcode(mcode_t code)
Definition hexrays.hpp:11125
THREAD_SAFE bool is_unsigned_mcode(mcode_t code)
Definition hexrays.hpp:802
const mopt_t mop_d
result of another instruction
Definition hexrays.hpp:2410
const cmt_type_t CMT_BLOCK2
Posterior block comment.
Definition hexrays.hpp:8721
const minsn_t *hexapi getb_reginsn(const minsn_t *ins)
Skip assertions backward.
Definition hexrays.hpp:12370
void user_labels_clear(user_labels_t *map)
Clear user_labels_t.
Definition hexrays.hpp:10630
qmap< cinsn_t *, rangeset_t > boundaries_t
Definition hexrays.hpp:7867
size_t user_casts_size(user_casts_t *map)
Get size of user_casts_t.
Definition hexrays.hpp:10419
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:11293
enum hexrays_event_t ENUM_SIZE(int)
Decompiler events.
Definition hexrays.hpp:8371
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:10162
const size_t bitset_shift
Definition hexrays.hpp:1837
void * hexdsp_t(int code,...)
Hex-Rays decompiler dispatcher.
Definition hexrays.hpp:8364
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:11095
size_t user_unions_size(user_unions_t *map)
Get size of user_unions_t.
Definition hexrays.hpp:10528
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:13530
bool is_relational(ctype_t op)
Is comparison operator?
Definition hexrays.hpp:6428
uvlr_t max_vlr_value(int size)
Definition hexrays.hpp:315
const mreg_t mr_sf
Definition hexrays.hpp:819
bool is_signed_cmpop(cmpop_t cmpop)
Definition hexrays.hpp:351
bool init_hexrays_plugin(int flags=0)
Check that your plugin is compatible with hex-rays decompiler.
Definition hexrays.hpp:9771
qvector< mlist_t > mlistvec_t
Definition hexrays.hpp:2156
void lvar_mapping_clear(lvar_mapping_t *map)
Clear lvar_mapping_t.
Definition hexrays.hpp:9976
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:11413
item_preciser_t
Comment item preciser.
Definition hexrays.hpp:6594
@ ITP_ASM
__asm-line
Definition hexrays.hpp:6602
@ ITP_CASE
bit for switch cases
Definition hexrays.hpp:6614
@ ITP_BLOCK2
closing block comment.
Definition hexrays.hpp:6612
@ ITP_SEMI
semicolon
Definition hexrays.hpp:6605
@ ITP_INNER_LAST
Definition hexrays.hpp:6600
@ ITP_CURLY2
}
Definition hexrays.hpp:6607
@ ITP_SIGN
if this bit is set too, then we have a negative case value
Definition hexrays.hpp:6615
@ ITP_EMPTY
nothing
Definition hexrays.hpp:6596
@ ITP_COLON
: (label)
Definition hexrays.hpp:6609
@ ITP_ELSE
else-line
Definition hexrays.hpp:6603
@ ITP_DO
do-line
Definition hexrays.hpp:6604
@ ITP_ARG64
Definition hexrays.hpp:6598
@ ITP_CURLY1
{
Definition hexrays.hpp:6606
@ ITP_BRACE1
Definition hexrays.hpp:6599
@ ITP_ARG1
, (64 entries are reserved for 64 call arguments)
Definition hexrays.hpp:6597
@ ITP_BRACE2
)
Definition hexrays.hpp:6608
@ ITP_TRY
C++ try statement.
Definition hexrays.hpp:6613
@ ITP_BLOCK1
opening block comment.
Definition hexrays.hpp:6610
user_unions_iterator_t user_unions_prev(user_unions_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10506
int mreg_t
Micro register.
Definition hexrays.hpp:263
std::set< ea_t > easet_t
Definition hexrays.hpp:278
bool is_bitop(ctype_t op)
Is bit related operator?
Definition hexrays.hpp:6467
user_unions_iterator_t user_unions_next(user_unions_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10498
const svlr_t MIN_VLR_SVALUE
Definition hexrays.hpp:312
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:9808
void user_cmts_free(user_cmts_t *map)
Delete user_cmts_t instance.
Definition hexrays.hpp:10208
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:10035
const maymust_t INCLUDE_DEAD_RETREGS
Definition hexrays.hpp:494
size_t mbitmap_t
Definition hexrays.hpp:1834
const mopt_t mop_l
local variable
Definition hexrays.hpp:2415
user_iflags_iterator_t user_iflags_next(user_iflags_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10280
void hexapi remitem(const citem_t *e)
Definition hexrays.hpp:12996
const maymust_t CALL_SPOILS_ONLY_ARGS
Definition hexrays.hpp:497
void user_iflags_clear(user_iflags_t *map)
Clear user_iflags_t.
Definition hexrays.hpp:10303
const int64 HEXRAYS_API_MAGIC
Definition hexrays.hpp:8365
bool hexapi has_cached_cfunc(ea_t ea)
Do we have a cached decompilation result for 'ea'?
Definition hexrays.hpp:13846
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:10053
cexpr_t *hexapi lnot(cexpr_t *e)
Logically negate the specified expression.
Definition hexrays.hpp:13446
bool hexapi mark_cfunc_dirty(ea_t ea, bool close_views=false)
Flush the cached decompilation results.
Definition hexrays.hpp:13834
eamap_iterator_t eamap_prev(eamap_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10724
const cmt_type_t CMT_TAIL
Indented comment.
Definition hexrays.hpp:8719
boundaries_iterator_t boundaries_begin(const boundaries_t *map)
Get iterator pointing to the beginning of boundaries_t.
Definition hexrays.hpp:10807
bool is_additive(ctype_t op)
Is additive operator?
Definition hexrays.hpp:6449
vdui_t *hexapi open_pseudocode(ea_t ea, int flags)
Open pseudocode window.
Definition hexrays.hpp:12954
const tinfo_t const char va_list va
Definition hexrays.hpp:7698
intvec_t & user_unions_second(user_unions_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10455
int hexapi get_mreg_name(qstring *out, mreg_t reg, int width, void *ud=nullptr)
Get the microregister name.
Definition hexrays.hpp:11752
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:13488
rangeset_t & boundaries_second(boundaries_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10782
ssize_t idaapi hexrays_cb_t(void *ud, hexrays_event_t event, va_list va)
Handler of decompiler events.
Definition hexrays.hpp:8643
qvector< ui_stroff_op_t > ui_stroff_ops_t
Definition hexrays.hpp:9059
cmt_retrieval_type_t
Comment retrieval type.
Definition hexrays.hpp:6643
@ RETRIEVE_ALWAYS
Retrieve comment even if it has been used.
Definition hexrays.hpp:6645
@ RETRIEVE_ONCE
Retrieve comment if it has not been used yet.
Definition hexrays.hpp:6644
uvlr_t max_vlr_svalue(int size)
Definition hexrays.hpp:327
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:11383
size_t user_cmts_size(user_cmts_t *map)
Get size of user_cmts_t.
Definition hexrays.hpp:10201
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:9826
void hexapi print_vdloc(qstring *vout, const vdloc_t &loc, int nbytes)
Print vdloc.
Definition hexrays.hpp:11287
void user_cmts_erase(user_cmts_t *map, user_cmts_iterator_t p)
Erase current element from user_cmts_t.
Definition hexrays.hpp:10187
void hexapi get_cached_cfunc_eas(eavec_t *out)
Return the start EAs of all cached cfunc_t objects.
Definition hexrays.hpp:13852
eamap_iterator_t eamap_find(const eamap_t *map, const ea_t &key)
Find the specified key in eamap_t.
Definition hexrays.hpp:10680
bool op_uses_z(ctype_t op)
Does operator use the 'z' field of cexpr_t?
Definition hexrays.hpp:6422
THREAD_SAFE bool is_mcode_convertible_to_jmp(mcode_t mcode)
Definition hexrays.hpp:719
void hexapi clear_cached_cfuncs()
Flush all cached decompilation results.
Definition hexrays.hpp:13840
ea_t const & user_unions_first(user_unions_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10448
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:9944
lvar_locator_t & lvar_mapping_second(lvar_mapping_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9910
size_t udcall_map_size(udcall_map_t *map)
Get size of udcall_map_t.
Definition hexrays.hpp:10092
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:13506
bool accepts_small_udts(ctype_t op)
Is the operator allowed on small structure or union?
Definition hexrays.hpp:6508
const minsn_t *hexapi getf_reginsn(const minsn_t *ins)
Skip assertions forward.
Definition hexrays.hpp:12364
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:10044
const cmt_type_t CMT_LVAR
Local variable comment.
Definition hexrays.hpp:8722
user_numforms_iterator_t user_numforms_prev(user_numforms_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9852
bool hexapi change_hexrays_config(const char *directive)
Parse DIRECTIVE and update the current configuration variables.
Definition hexrays.hpp:12942
user_casts_iterator_t user_casts_prev(user_casts_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10397
void block_chains_free(block_chains_t *set)
Delete block_chains_t instance.
Definition hexrays.hpp:10964
qmap< ea_t, intvec_t > user_unions_t
Definition hexrays.hpp:6684
qvector< mop_t > mopvec_t
Definition hexrays.hpp:283
cfuncptr_t decompile_snippet(const rangevec_t &ranges, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a snippet.
Definition hexrays.hpp:8189
qvector< bitset_t > array_of_bitsets
Definition hexrays.hpp:1911
eamap_iterator_t eamap_next(eamap_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10716
udcall_map_iterator_t udcall_map_next(udcall_map_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10062
bool is_commutative(ctype_t op)
Is commutative operator?
Definition hexrays.hpp:6436
const maymust_t MAY_ACCESS
Definition hexrays.hpp:474
udcall_map_iterator_t udcall_map_prev(udcall_map_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10070
void user_numforms_erase(user_numforms_t *map, user_numforms_iterator_t p)
Erase current element from user_numforms_t.
Definition hexrays.hpp:9860
const mlist_t &hexapi get_temp_regs()
Get list of temporary registers.
Definition hexrays.hpp:11728
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:13494
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:9844
eamap_iterator_t eamap_begin(const eamap_t *map)
Get iterator pointing to the beginning of eamap_t.
Definition hexrays.hpp:10698
ea_t hexapi get_merror_desc(qstring *out, merror_t code, mba_t *mba)
Get textual description of an error code.
Definition hexrays.hpp:11079
const mopt_t mop_b
micro basic block (mblock_t)
Definition hexrays.hpp:2413
user_casts_iterator_t user_casts_begin(const user_casts_t *map)
Get iterator pointing to the beginning of user_casts_t.
Definition hexrays.hpp:10371
block_chains_iterator_t block_chains_next(block_chains_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10927
mcode_t
Definition hexrays.hpp:609
@ m_stx
Definition hexrays.hpp:611
@ m_ofadd
Definition hexrays.hpp:636
@ m_setbe
Definition hexrays.hpp:647
@ m_fdiv
Definition hexrays.hpp:682
@ m_call
Definition hexrays.hpp:666
@ m_jbe
Definition hexrays.hpp:658
@ m_low
Definition hexrays.hpp:620
@ m_und
Definition hexrays.hpp:671
@ m_ldx
Definition hexrays.hpp:612
@ m_setb
Definition hexrays.hpp:645
@ m_bnot
Definition hexrays.hpp:617
@ m_and
Definition hexrays.hpp:630
@ m_push
Definition hexrays.hpp:669
@ m_xdu
Definition hexrays.hpp:619
@ m_fsub
Definition hexrays.hpp:680
@ m_setg
Definition hexrays.hpp:648
@ m_fadd
Definition hexrays.hpp:679
@ m_jae
Definition hexrays.hpp:655
@ m_i2f
Definition hexrays.hpp:675
@ m_sdiv
Definition hexrays.hpp:626
@ m_seta
Definition hexrays.hpp:646
@ m_cfadd
Definition hexrays.hpp:635
@ m_mul
Definition hexrays.hpp:624
@ m_ja
Definition hexrays.hpp:657
@ m_seto
Definition hexrays.hpp:640
@ m_jz
Definition hexrays.hpp:654
@ m_or
Definition hexrays.hpp:629
@ m_shl
Definition hexrays.hpp:632
@ m_setae
Definition hexrays.hpp:644
@ m_ldc
Definition hexrays.hpp:613
@ m_udiv
Definition hexrays.hpp:625
@ m_neg
Definition hexrays.hpp:615
@ m_setge
Definition hexrays.hpp:649
@ m_setnz
Definition hexrays.hpp:642
@ m_cfshr
Definition hexrays.hpp:638
@ m_setz
Definition hexrays.hpp:643
@ m_jle
Definition hexrays.hpp:662
@ m_jcnd
Definition hexrays.hpp:652
@ m_shr
Definition hexrays.hpp:633
@ m_setp
Definition hexrays.hpp:641
@ m_sar
Definition hexrays.hpp:634
@ m_fmul
Definition hexrays.hpp:681
@ m_ret
Definition hexrays.hpp:668
@ m_add
Definition hexrays.hpp:622
@ m_lnot
Definition hexrays.hpp:616
@ m_sets
Definition hexrays.hpp:639
@ m_cfshl
Definition hexrays.hpp:637
@ m_nop
Definition hexrays.hpp:610
@ m_smod
Definition hexrays.hpp:628
@ m_fneg
Definition hexrays.hpp:678
@ m_pop
Definition hexrays.hpp:670
@ m_setl
Definition hexrays.hpp:650
@ m_goto
Definition hexrays.hpp:665
@ m_setle
Definition hexrays.hpp:651
@ m_xor
Definition hexrays.hpp:631
@ m_jtbl
Definition hexrays.hpp:663
@ m_ext
Definition hexrays.hpp:672
@ m_icall
Definition hexrays.hpp:667
@ m_sub
Definition hexrays.hpp:623
@ m_jnz
Definition hexrays.hpp:653
@ m_umod
Definition hexrays.hpp:627
@ m_f2i
Definition hexrays.hpp:673
@ m_jb
Definition hexrays.hpp:656
@ m_f2f
Definition hexrays.hpp:677
@ m_ijmp
Definition hexrays.hpp:664
@ m_f2u
Definition hexrays.hpp:674
@ m_jge
Definition hexrays.hpp:660
@ m_u2f
Definition hexrays.hpp:676
@ m_jg
Definition hexrays.hpp:659
@ m_high
Definition hexrays.hpp:621
@ m_jl
Definition hexrays.hpp:661
@ m_mov
Definition hexrays.hpp:614
@ m_xds
Definition hexrays.hpp:618
const mopt_t mop_S
local stack variable (they exist until MMAT_LVARS)
Definition hexrays.hpp:2411
int32 & user_iflags_second(user_iflags_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10237
user_unions_t * user_unions_new()
Create a new user_unions_t instance.
Definition hexrays.hpp:10542
size_t boundaries_size(boundaries_t *map)
Get size of boundaries_t.
Definition hexrays.hpp:10855
void eamap_erase(eamap_t *map, eamap_iterator_t p)
Erase current element from eamap_t.
Definition hexrays.hpp:10732
const mopt_t mop_sc
scattered
Definition hexrays.hpp:2421
THREAD_SAFE mcode_t hexapi swap_mcode_relation(mcode_t code)
Definition hexrays.hpp:11113
const int NOSIZE
wrong or unexisting operand size
Definition hexrays.hpp:2423
qset< qstring > strings_t
Definition hexrays.hpp:280
bool hexapi get_current_operand(gco_info_t *out)
Get the instruction operand under the cursor.
Definition hexrays.hpp:12990
size_t eamap_size(eamap_t *map)
Get size of eamap_t.
Definition hexrays.hpp:10746
void block_chains_clear(block_chains_t *set)
Clear block_chains_t.
Definition hexrays.hpp:10950
chain_t & block_chains_get(block_chains_iterator_t p)
Get reference to the current set value.
Definition hexrays.hpp:10884
bool op_uses_y(ctype_t op)
Does operator use the 'y' field of cexpr_t?
Definition hexrays.hpp:6420
allow_unused_labels_t
Unused label disposition.
Definition hexrays.hpp:7664
@ ALLOW_UNUSED_LABELS
Unused labels are permitted.
Definition hexrays.hpp:7666
@ FORBID_UNUSED_LABELS
Unused labels cause interr.
Definition hexrays.hpp:7665
const size_t bitset_width
Definition hexrays.hpp:1835
user_casts_iterator_t user_casts_end(const user_casts_t *map)
Get iterator pointing to the end of user_casts_t.
Definition hexrays.hpp:10380
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:10589
THREAD_SAFE bool is_signed_mcode(mcode_t code)
Definition hexrays.hpp:800
int const & user_labels_first(user_labels_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10557
THREAD_SAFE bool is_mcode_commutative(mcode_t mcode)
Definition hexrays.hpp:727
const mreg_t mr_pf
Definition hexrays.hpp:821
user_minsn_action_t
User microinstruction action types.
Definition hexrays.hpp:4915
@ UMA_APP
insert the instruction after the current
Definition hexrays.hpp:4918
@ UMA_MAX
Definition hexrays.hpp:4919
@ UMA_DEL
delete the instruction
Definition hexrays.hpp:4916
@ UMA_INS
insert the instruction before the current
Definition hexrays.hpp:4917
qlist< cinsn_t > cinsn_list_t
Definition hexrays.hpp:7218
qstring hexapi create_field_name(const tinfo_t &type, uval_t offset=BADADDR)
Definition hexrays.hpp:13864
qmap< citem_locator_t, tinfo_t > user_casts_t
Definition hexrays.hpp:6678
qmap< ea_t, udcall_t > udcall_map_t
Definition hexrays.hpp:1746
const mopt_t mop_z
none
Definition hexrays.hpp:2406
void user_casts_clear(user_casts_t *map)
Clear user_casts_t.
Definition hexrays.hpp:10412
boundaries_iterator_t boundaries_prev(boundaries_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10833
lvar_mapping_iterator_t lvar_mapping_prev(lvar_mapping_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:9961
const mreg_t mr_cf
Definition hexrays.hpp:817
const mopt_t mop_fn
floating point constant
Definition hexrays.hpp:2419
void *hexapi hexrays_alloc(size_t size)
Definition hexrays.hpp:10977
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:10571
bool is_lvalue(ctype_t op)
Is Lvalue operator?
Definition hexrays.hpp:6497
citem_locator_t const & user_casts_first(user_casts_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10339
const mreg_t mr_zf
Definition hexrays.hpp:818
bool hexapi parse_user_call(udcall_t *udc, const char *decl, bool silent)
Convert function type declaration into internal structure.
Definition hexrays.hpp:11407
THREAD_SAFE bool hexapi is_mcode_propagatable(mcode_t mcode)
May opcode be propagated?
Definition hexrays.hpp:11101
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:10580
THREAD_SAFE bool is_mcode_shift(mcode_t mcode)
Definition hexrays.hpp:740
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:10489
cinsn_t *const & boundaries_first(boundaries_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10775
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:10153
const cmt_type_t CMT_NONE
No comment is possible.
Definition hexrays.hpp:8718
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:13470
const maymust_t INCLUDE_RESTRICTED
Definition hexrays.hpp:496
const char *hexapi get_ctype_name(ctype_t op)
Definition hexrays.hpp:13858
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:10891
DEPRECATED mba_t * create_empty_mba(const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr)
Create an empty microcode object.
Definition hexrays.hpp:8254
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:10144
qvector< cfuncptr_t > cfuncptrs_t
Definition hexrays.hpp:8105
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:9817
THREAD_SAFE bool is_mcode_jcond(mcode_t mcode)
Definition hexrays.hpp:717
qstack< history_item_t > history_t
Navigation history.
Definition hexrays.hpp:8713
uint64 uvlr_t
Definition hexrays.hpp:307
void user_iflags_erase(user_iflags_t *map, user_iflags_iterator_t p)
Erase current element from user_iflags_t.
Definition hexrays.hpp:10296
const mopt_t mop_r
register (they exist until MMAT_LVARS)
Definition hexrays.hpp:2407
const maymust_t INCLUDE_SPOILED_REGS
Definition hexrays.hpp:481
qvector< citem_t * > citem_pointers_t
Vector of parents.
Definition hexrays.hpp:6562
cinsnptrvec_t & eamap_second(eamap_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10673
void boundaries_free(boundaries_t *map)
Delete boundaries_t instance.
Definition hexrays.hpp:10862
eamap_iterator_t eamap_end(const eamap_t *map)
Get iterator pointing to the end of eamap_t.
Definition hexrays.hpp:10707
void udcall_map_clear(udcall_map_t *map)
Clear udcall_map_t.
Definition hexrays.hpp:10085
user_cmts_iterator_t user_cmts_next(user_cmts_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10171
bool hexapi modify_user_lvars(ea_t entry_ea, user_lvar_modifier_t &mlv)
Modify saved local variable settings.
Definition hexrays.hpp:11377
ea_t const & eamap_first(eamap_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10666
const mopt_t mop_a
mop_addr_t: address of operand (mop_l, mop_v, mop_S, mop_r)
Definition hexrays.hpp:2416
const cmt_type_t CMT_BLOCK1
Anterioir block comment.
Definition hexrays.hpp:8720
const mopt_t mop_str
immediate string constant (user representation)
Definition hexrays.hpp:2409
bool accepts_udts(ctype_t op)
Definition hexrays.hpp:6432
bool is_prepost(ctype_t op)
Is pre/post increment/decrement operator?
Definition hexrays.hpp:6434
uint8 mopt_t
Instruction operand types.
Definition hexrays.hpp:2404
void eamap_clear(eamap_t *map)
Clear eamap_t.
Definition hexrays.hpp:10739
gctype_t
Kind of use-def and def-use chains.
Definition hexrays.hpp:5858
@ GC_DIRTY_ALL
bitmask to represent all chains
Definition hexrays.hpp:5863
@ GC_ASR
all the above and assertions
Definition hexrays.hpp:5860
@ GC_END
number of chain types
Definition hexrays.hpp:5862
@ GC_REGS_AND_STKVARS
registers and stkvars (restricted memory only)
Definition hexrays.hpp:5859
@ GC_XDSU
only registers calculated with FULL_XDSU
Definition hexrays.hpp:5861
user_iflags_t *hexapi restore_user_iflags(ea_t func_ea)
Restore user defined citem iflags from the database.
Definition hexrays.hpp:13548
ctree_maturity_t
Ctree maturity level.
Definition hexrays.hpp:6568
@ CMAT_CPA
corrected pointer arithmetic
Definition hexrays.hpp:6574
@ CMAT_FINAL
ready-to-use
Definition hexrays.hpp:6577
@ CMAT_CASTED
added necessary casts
Definition hexrays.hpp:6576
@ CMAT_BUILT
just generated
Definition hexrays.hpp:6570
@ CMAT_NICE
nicefied expressions
Definition hexrays.hpp:6572
@ CMAT_TRANS2
applied second wave of transformations
Definition hexrays.hpp:6573
@ CMAT_TRANS3
applied third wave of transformations
Definition hexrays.hpp:6575
@ CMAT_TRANS1
applied first wave of transformations
Definition hexrays.hpp:6571
@ CMAT_ZERO
does not exist
Definition hexrays.hpp:6569
const mreg_t mr_first
Definition hexrays.hpp:824
DECLARE_TYPE_AS_MOVABLE(valrng_t)
bool is_loop(ctype_t op)
Is loop statement code?
Definition hexrays.hpp:6484
type_sign_t hexapi get_op_signness(ctype_t op)
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv.
Definition hexrays.hpp:13014
qvector< uint64 > uint64vec_t
Definition hexrays.hpp:284
user_unions_t *hexapi restore_user_unions(ea_t func_ea)
Restore user defined union field selections from the database.
Definition hexrays.hpp:13554
const maymust_t FULL_XDSU
Definition hexrays.hpp:485
qvector< block_chains_t > block_chains_vec_t
Graph chains.
Definition hexrays.hpp:3665
int hexapi mreg2reg(mreg_t reg, size_t width)
Map a microregister to a processor register.
Definition hexrays.hpp:11746
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:10900
uvlr_t min_vlr_svalue(int size)
Definition hexrays.hpp:321
cfuncptr_t hexapi create_cfunc(mba_t *mba)
Create a new cfunc_t object.
Definition hexrays.hpp:13828
bool is_eh_role(funcrole_t r)
Is this an EH exception handling role?
Definition hexrays.hpp:3336
ctype_t hexapi negated_relation(ctype_t op)
Negate a comparison operator. For example, cot_sge becomes cot_slt.
Definition hexrays.hpp:13002
user_casts_iterator_t user_casts_find(const user_casts_t *map, const citem_locator_t &key)
Find the specified key in user_casts_t.
Definition hexrays.hpp:10353
THREAD_SAFE bool is_mcode_xdsu(mcode_t mcode)
Definition hexrays.hpp:709
THREAD_SAFE bool is_mcode_fpu(mcode_t mcode)
Definition hexrays.hpp:725
DEPRECATED cfuncptr_t decompile_func(func_t *pfn, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a function.
Definition hexrays.hpp:8168
qvector< mreg_t > mregvec_t
Definition hexrays.hpp:285
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:9835
THREAD_SAFE mcode_t set2jcnd(mcode_t code)
Definition hexrays.hpp:759
const mopt_t mop_p
operand pair
Definition hexrays.hpp:2420
size_t user_iflags_size(user_iflags_t *map)
Get size of user_iflags_t.
Definition hexrays.hpp:10310
mreg_t hexapi reg2mreg(int reg)
Map a processor register to a microregister.
Definition hexrays.hpp:11740
@ MAX_VLR_SIZE
Definition hexrays.hpp:309
THREAD_SAFE bool is_mcode_addsub(mcode_t mcode)
Definition hexrays.hpp:707
qmap< citem_locator_t, int32 > user_iflags_t
Definition hexrays.hpp:6675
void user_casts_free(user_casts_t *map)
Delete user_casts_t instance.
Definition hexrays.hpp:10426
qvector< catchexpr_t > catchexprs_t
Definition hexrays.hpp:7307
cexpr_t * e
Definition hexrays.hpp:7705
ctype_t hexapi swapped_relation(ctype_t op)
Swap a comparison operator. For example, cot_sge becomes cot_sle.
Definition hexrays.hpp:13008
int cmt_type_t
Comment types.
Definition hexrays.hpp:8716
qvector< mcallarg_t > mcallargs_t
Definition hexrays.hpp:3235
use_curly_t
Should curly braces be printed?
Definition hexrays.hpp:7037
@ USE_CURLY_BRACES
print curly braces without any checks
Definition hexrays.hpp:7040
@ CALC_CURLY_BRACES
print curly braces if necessary
Definition hexrays.hpp:7038
@ NO_CURLY_BRACES
don't print curly braces
Definition hexrays.hpp:7039
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:10026
void user_numforms_clear(user_numforms_t *map)
Clear user_numforms_t.
Definition hexrays.hpp:9867
ctype_t
Ctree item code.
Definition hexrays.hpp:6316
@ cot_asgxor
x ^= y
Definition hexrays.hpp:6321
@ cot_call
x(...)
Definition hexrays.hpp:6374
@ cot_ule
x <= y unsigned
Definition hexrays.hpp:6344
@ cot_asgsdiv
x /= y signed
Definition hexrays.hpp:6329
@ cit_break
break-statement
Definition hexrays.hpp:6396
@ cot_cast
(type)x
Definition hexrays.hpp:6365
@ cot_sgt
x > y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6345
@ cit_throw
C++ throw-statement.
Definition hexrays.hpp:6402
@ cot_sdiv
x / y signed
Definition hexrays.hpp:6355
@ cit_do
do-statement
Definition hexrays.hpp:6394
@ cot_insn
instruction in expression, internal representation only
Definition hexrays.hpp:6383
@ cot_lor
x || y
Definition hexrays.hpp:6334
@ cot_tern
x ? y : z
Definition hexrays.hpp:6333
@ cot_asgbor
x |= y
Definition hexrays.hpp:6320
@ cit_block
block-statement: { ... }
Definition hexrays.hpp:6389
@ cit_continue
continue-statement
Definition hexrays.hpp:6397
@ cot_lnot
!x
Definition hexrays.hpp:6366
@ cot_last
Definition hexrays.hpp:6387
@ cot_asgshl
x <<= y
Definition hexrays.hpp:6328
@ cot_ptr
*x, access size in 'ptrsize'
Definition hexrays.hpp:6368
@ cot_preinc
++x
Definition hexrays.hpp:6372
@ cot_shl
x << y
Definition hexrays.hpp:6351
@ cot_obj
obj_ea
Definition hexrays.hpp:6381
@ cot_neg
-x
Definition hexrays.hpp:6364
@ cot_xor
x ^ y
Definition hexrays.hpp:6337
@ cot_add
x + y
Definition hexrays.hpp:6352
@ cot_sshr
x >> y signed
Definition hexrays.hpp:6349
@ cit_try
C++ try-statement.
Definition hexrays.hpp:6401
@ cot_asg
x = y
Definition hexrays.hpp:6319
@ cot_type
arbitrary type
Definition hexrays.hpp:6386
@ cot_sub
x - y
Definition hexrays.hpp:6353
@ cot_slt
x < y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6347
@ cot_mul
x * y
Definition hexrays.hpp:6354
@ cot_udiv
x / y unsigned
Definition hexrays.hpp:6356
@ cot_asgsshr
x >>= y signed
Definition hexrays.hpp:6326
@ cot_eq
x == y int or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6339
@ cit_return
return-statement
Definition hexrays.hpp:6398
@ cot_asgadd
x += y
Definition hexrays.hpp:6323
@ cot_ref
&x
Definition hexrays.hpp:6369
@ cot_ne
x != y int or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6340
@ cit_empty
instruction types start here
Definition hexrays.hpp:6388
@ cit_asm
asm-statement
Definition hexrays.hpp:6400
@ cot_predec
–x
Definition hexrays.hpp:6373
@ cot_asgmul
x *= y
Definition hexrays.hpp:6325
@ cot_helper
arbitrary name
Definition hexrays.hpp:6385
@ cot_fneg
-x fp
Definition hexrays.hpp:6363
@ cot_ult
x < y unsigned
Definition hexrays.hpp:6348
@ cot_uge
x >= y unsigned
Definition hexrays.hpp:6342
@ cot_fadd
x + y fp
Definition hexrays.hpp:6359
@ cot_asgushr
x >>= y unsigned
Definition hexrays.hpp:6327
@ cot_fnum
fpc
Definition hexrays.hpp:6379
@ cot_postdec
x–
Definition hexrays.hpp:6371
@ cot_memref
x.m
Definition hexrays.hpp:6376
@ cot_postinc
x++
Definition hexrays.hpp:6370
@ cot_sizeof
sizeof(x)
Definition hexrays.hpp:6384
@ cot_sle
x <= y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6343
@ cot_ushr
x >> y unsigned
Definition hexrays.hpp:6350
@ cot_fdiv
x / y fp
Definition hexrays.hpp:6362
@ cit_while
while-statement
Definition hexrays.hpp:6393
@ cot_fsub
x - y fp
Definition hexrays.hpp:6360
@ cot_str
string constant (user representation)
Definition hexrays.hpp:6380
@ cot_var
v
Definition hexrays.hpp:6382
@ cot_sge
x >= y signed or fpu (see EXFL_FPOP)
Definition hexrays.hpp:6341
@ cit_goto
goto-statement
Definition hexrays.hpp:6399
@ cit_switch
switch-statement
Definition hexrays.hpp:6395
@ cot_asgband
x &= y
Definition hexrays.hpp:6322
@ cot_empty
Definition hexrays.hpp:6317
@ cot_asgsmod
x %= y signed
Definition hexrays.hpp:6331
@ cot_num
n
Definition hexrays.hpp:6378
@ cot_band
x & y
Definition hexrays.hpp:6338
@ cot_bnot
~x
Definition hexrays.hpp:6367
@ cot_comma
x, y
Definition hexrays.hpp:6318
@ cot_asgsub
x -= y
Definition hexrays.hpp:6324
@ cit_if
if-statement
Definition hexrays.hpp:6391
@ cot_smod
x % y signed
Definition hexrays.hpp:6357
@ cot_bor
x | y
Definition hexrays.hpp:6336
@ cot_umod
x % y unsigned
Definition hexrays.hpp:6358
@ cot_memptr
x->m, access size in 'ptrsize'
Definition hexrays.hpp:6377
@ cit_end
Definition hexrays.hpp:6403
@ cot_asgumod
x %= y unsigned
Definition hexrays.hpp:6332
@ cot_ugt
x > y unsigned
Definition hexrays.hpp:6346
@ cot_asgudiv
x /= y unsigned
Definition hexrays.hpp:6330
@ cot_idx
x[y]
Definition hexrays.hpp:6375
@ cot_fmul
x * y fp
Definition hexrays.hpp:6361
@ cit_expr
expression-statement: expr;
Definition hexrays.hpp:6390
@ cot_land
x && y
Definition hexrays.hpp:6335
@ cit_for
for-statement
Definition hexrays.hpp:6392
const tinfo_t & type
Definition hexrays.hpp:7698
lvar_mapping_iterator_t lvar_mapping_next(lvar_mapping_iterator_t p)
Move to the next element.
Definition hexrays.hpp:9953
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:11365
DEPRECATED 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:13804
qmap< lvar_locator_t, lvar_locator_t > lvar_mapping_t
Local variable mapping (is used to merge variables)
Definition hexrays.hpp:1575
funcrole_t
Function roles.
Definition hexrays.hpp:3241
@ ROLE_3WAYCMP1
3-way compare helper, returns 0/1/2
Definition hexrays.hpp:3275
@ ROLE_EH_EXIT_WIND_STATE
__eh_exit_wind_state() internal
Definition hexrays.hpp:3299
@ ROLE_EH_CATCH
__eh_catch() catch block start
Definition hexrays.hpp:3286
@ ROLE_VA_COPY
va_copy() function
Definition hexrays.hpp:3266
@ ROLE_INVOKE_SUPER
parent class method call (super.method)
Definition hexrays.hpp:3325
@ ROLE_UNK
unknown function role
Definition hexrays.hpp:3242
@ ROLE_VA_ARG
va_arg() macro
Definition hexrays.hpp:3265
@ ROLE_EH_UNWIND
__eh_unwind() destructor handler
Definition hexrays.hpp:3289
@ ROLE_CHKCAST
check and cast object type
Definition hexrays.hpp:3313
@ ROLE_INVOKE_INIT_SUPER
constructor chain to parent (super(args))
Definition hexrays.hpp:3327
@ ROLE_EH_CONTINUE_UNWINDING
__eh_continue_unwinding()
Definition hexrays.hpp:3296
@ ROLE_EH_TRY
__eh_try() try block start
Definition hexrays.hpp:3284
@ ROLE_BITTEST
[lock] bt
Definition hexrays.hpp:3261
@ ROLE_BUG
BUG() helper macro: never returns, causes exception.
Definition hexrays.hpp:3252
@ ROLE_IPUT
set instance field
Definition hexrays.hpp:3318
@ ROLE_SSE_CMP4
e.g. _mm_cmpgt_ss
Definition hexrays.hpp:3281
@ ROLE_EMPTY
empty, does not do anything (maybe spoils regs)
Definition hexrays.hpp:3243
@ ROLE_EH_EXIT_TRY_STATE
__eh_exit_try_state() internal
Definition hexrays.hpp:3300
@ ROLE_MEMSET64
memset64(void *dst, uint64 value, size_t count);
Definition hexrays.hpp:3246
@ ROLE_ALLOCA
alloca() function
Definition hexrays.hpp:3253
@ ROLE_WMEMCPY
wchar_t *wmemcpy(wchar_t *dst, const wchar_t *src, size_t n)
Definition hexrays.hpp:3276
@ ROLE_FASTFAIL
__fastfail()
Definition hexrays.hpp:3257
@ ROLE_EH_DEAD_END_TRY
__eh_dead_end_try() internal
Definition hexrays.hpp:3293
@ ROLE_SATURATED_MUL
saturated_mul
Definition hexrays.hpp:3260
@ ROLE_APUT
set array element
Definition hexrays.hpp:3322
@ ROLE_INVOKE_INIT_THIS
constructor chain to self (this(args))
Definition hexrays.hpp:3328
@ ROLE_EH_CATCH_ELLIPSIS
__eh_catch_ellipsis() catch-all
Definition hexrays.hpp:3288
@ ROLE_BITTESTANDSET
[lock] bts
Definition hexrays.hpp:3262
@ ROLE_WCSCPY
wchar_t *wcscpy(wchar_t *dst, const wchar_t *src);
Definition hexrays.hpp:3278
@ ROLE_SSE_CMP8
e.g. _mm_cmpgt_sd
Definition hexrays.hpp:3282
@ ROLE_EH_UNWIND_ABSENT
__eh_unwind_handler_absent() internal
Definition hexrays.hpp:3306
@ ROLE_STRCAT
strcat(char *dst, const char *src);
Definition hexrays.hpp:3250
@ ROLE_EH_THROW
__eh_throw() throw statement
Definition hexrays.hpp:3290
@ ROLE_CATCH_EXCEPTION
get caught exception object (Dalvik MOVE_EXCEPTION)
Definition hexrays.hpp:3329
@ ROLE_TAIL
char *tail(const char *str);
Definition hexrays.hpp:3251
@ ROLE_CFSUB3
carry flag after subtract with carry
Definition hexrays.hpp:3271
@ ROLE_READFLAGS
__readeflags, __readcallersflags
Definition hexrays.hpp:3258
@ ROLE_EH_CATCH_ABSENT
__eh_catch_handler_absent() internal
Definition hexrays.hpp:3307
@ ROLE_CONST_CLASS
get class reference (Dalvik CONST_CLASS)
Definition hexrays.hpp:3330
@ ROLE_EH_WIND
__eh_wind() wind state (C++ destructors)
Definition hexrays.hpp:3285
@ ROLE_IGET
get instance field
Definition hexrays.hpp:3317
@ ROLE_EH_RETHROW
__eh_rethrow_uncaught_exception() internal
Definition hexrays.hpp:3305
@ ROLE_SPUT
set static field
Definition hexrays.hpp:3320
@ ROLE_MEMCPY
memcpy(void *dst, const void *src, size_t count);
Definition hexrays.hpp:3247
@ ROLE_NEW_ARRAY
allocate new array
Definition hexrays.hpp:3310
@ ROLE_OFSUB3
overflow flag after subtract with carry
Definition hexrays.hpp:3272
@ ROLE_ARRLEN
get array length
Definition hexrays.hpp:3312
@ ROLE_EH_ENTER_TRY_STATE
__eh_enter_try_state() internal
Definition hexrays.hpp:3298
@ ROLE_EH_CATCH_TYPE
__eh_catch_type() typed catch clause
Definition hexrays.hpp:3287
@ ROLE_PRESENT
present() function (used in patterns)
Definition hexrays.hpp:3255
@ ROLE_EH_ENTER_WIND_STATE
__eh_enter_wind_state() internal
Definition hexrays.hpp:3297
@ ROLE_INVOKE_INIT
constructor call on new object (merged with new)
Definition hexrays.hpp:3326
@ ROLE_BITTESTANDCOMPLEMENT
[lock] btc
Definition hexrays.hpp:3264
@ ROLE_EH_CAUGHT_ELLIPSIS
__eh_caught_ellipsis() paired with catch_ellipsis
Definition hexrays.hpp:3303
@ ROLE_EH_SCOPE_STRUT
__eh_scope_strut() internal
Definition hexrays.hpp:3292
@ ROLE_ABS
integer absolute value
Definition hexrays.hpp:3273
@ ROLE_EH_CAUGHT_TYPE
__eh_caught_type() paired with catch_type
Definition hexrays.hpp:3302
@ ROLE_VA_START
va_start() function
Definition hexrays.hpp:3267
@ ROLE_EH_CAUGHT
__eh_caught() internal
Definition hexrays.hpp:3304
@ ROLE_EH_NO_UNWIND_HANDLER
__eh_no_unwind_handler() internal
Definition hexrays.hpp:3301
@ ROLE_STRLEN
strlen(const char *src);
Definition hexrays.hpp:3249
@ ROLE_EH_PROPAGATE
__eh_propagate_exception_into_caller()
Definition hexrays.hpp:3295
@ ROLE_STRCPY
strcpy(char *dst, const char *src);
Definition hexrays.hpp:3248
@ ROLE_NEW_OBJ
allocate new object instance
Definition hexrays.hpp:3309
@ ROLE_INSTANCEOF
test object type (returns 0/1)
Definition hexrays.hpp:3314
@ ROLE_UNLOCK
release lock (monitor exit)
Definition hexrays.hpp:3316
@ ROLE_WCSLEN
size_t wcslen(const wchar_t *s)
Definition hexrays.hpp:3279
@ ROLE_ROR
rotate right
Definition hexrays.hpp:3270
@ ROLE_FILL_ARRAY
allocate and fill new array
Definition hexrays.hpp:3311
@ ROLE_INVOKE_VIRTUAL
instance method call (obj.method)
Definition hexrays.hpp:3324
@ ROLE_MEMSET
memset(void *dst, uchar value, size_t count);
Definition hexrays.hpp:3244
@ ROLE_IS_MUL_OK
is_mul_ok
Definition hexrays.hpp:3259
@ ROLE_VA_END
va_end() function
Definition hexrays.hpp:3268
@ ROLE_WMEMSET
wchar_t *wmemset(wchar_t *dst, wchar_t wc, size_t n)
Definition hexrays.hpp:3277
@ ROLE_EH_DEAD_END_WIND
__eh_dead_end_wind() internal
Definition hexrays.hpp:3294
@ ROLE_FILL_ARRAY_DATA
fill existing array with constant data (Dalvik FILL_ARRAY_DATA, no allocation)
Definition hexrays.hpp:3331
@ ROLE_CONTAINING_RECORD
CONTAINING_RECORD() macro.
Definition hexrays.hpp:3256
@ ROLE_BITTESTANDRESET
[lock] btr
Definition hexrays.hpp:3263
@ ROLE_MEMSET32
memset32(void *dst, uint32 value, size_t count);
Definition hexrays.hpp:3245
@ ROLE_BSWAP
bswap() function (any size)
Definition hexrays.hpp:3254
@ ROLE_EH_TRY_CONTINUATION
__eh_try_continuation() internal
Definition hexrays.hpp:3291
@ ROLE_SGET
get static field
Definition hexrays.hpp:3319
@ ROLE_LOCK
acquire lock (monitor enter)
Definition hexrays.hpp:3315
@ ROLE_ROL
rotate left
Definition hexrays.hpp:3269
@ ROLE_FMOD
floating-point remainder (fmod)
Definition hexrays.hpp:3323
@ ROLE_WCSCAT
wchar_t *wcscat(wchar_t *dst, const wchar_t *src)
Definition hexrays.hpp:3280
@ ROLE_AGET
get array element
Definition hexrays.hpp:3321
@ ROLE_3WAYCMP0
3-way compare helper, returns -1/0/1
Definition hexrays.hpp:3274
bool hexapi remove_optblock_handler(optblock_t *opt)
Remove a block level custom optimizer.
Definition hexrays.hpp:11777
user_labels_t * user_labels_new()
Create a new user_labels_t instance.
Definition hexrays.hpp:10651
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:10598
bool hexapi close_pseudocode(TWidget *f)
Close pseudocode window.
Definition hexrays.hpp:12960
void hexapi close_hexrays_waitbox()
Close the waitbox displayed by the decompiler.
Definition hexrays.hpp:13798
user_casts_iterator_t user_casts_insert(user_casts_t *map, const citem_locator_t &key, const tinfo_t &val)
Insert new (citem_locator_t, tinfo_t) pair into user_casts_t.
Definition hexrays.hpp:10362
bool hexapi install_hexrays_callback(hexrays_cb_t *callback, void *ud)
Install handler for decompiler events.
Definition hexrays.hpp:13872
user_iflags_t * user_iflags_new()
Create a new user_iflags_t instance.
Definition hexrays.hpp:10324
void boundaries_clear(boundaries_t *map)
Clear boundaries_t.
Definition hexrays.hpp:10848
bool hexapi del_user_minsn(ea_t entry_ea, const minsn_locator_t &loc, user_minsn_action_t action, mba_maturity_t mmat)
Delete a user-defined microinstruction action.
Definition hexrays.hpp:12560
const mopt_t mop_n
immediate number constant
Definition hexrays.hpp:2408
const maymust_t INCLUDE_UNUSED_SRC
Definition hexrays.hpp:492
user_numforms_t * user_numforms_new()
Create a new user_numforms_t instance.
Definition hexrays.hpp:9888
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:10462
hexcall_t
API call numbers.
Definition hexrays.hpp:9096
@ hx_user_numforms_end
Definition hexrays.hpp:9098
@ hx_save_user_numforms
Definition hexrays.hpp:9623
@ hx_cexpr_t_requires_lvalue
Definition hexrays.hpp:9573
@ hx_user_labels_first
Definition hexrays.hpp:9179
@ hx_user_unions_free
Definition hexrays.hpp:9173
@ hx_mblock_t_vdump_block
Definition hexrays.hpp:9460
@ hx_simple_graph_t_compute_immediate_dominators
Definition hexrays.hpp:9357
@ hx_vdui_t_map_lvar
Definition hexrays.hpp:9692
@ hx_mba_t_alloc_kreg
Definition hexrays.hpp:9519
@ hx_valrng_t_assign
Definition hexrays.hpp:9230
@ hx_cfunc_t_redirect_gotos
Definition hexrays.hpp:9744
@ hx_get_cached_cfunc_eas
Definition hexrays.hpp:9760
@ hx_mop_t_create_from_insn
Definition hexrays.hpp:9380
@ hx_decompile_
Definition hexrays.hpp:9753
@ hx_block_chains_prev
Definition hexrays.hpp:9217
@ hx_cnumber_t_assign
Definition hexrays.hpp:9549
@ hx_lvar_t_dstr
Definition hexrays.hpp:9277
@ hx_cfunc_t_set_user_union_selection
Definition hexrays.hpp:9647
@ hx_lvar_ref_t_var
Definition hexrays.hpp:9365
@ hx_vdui_t_set_lvar_type
Definition hexrays.hpp:9686
@ hx_vdui_t_clear
Definition hexrays.hpp:9679
@ hx_getf_reginsn
Definition hexrays.hpp:9455
@ hx_cthrow_t_compare
Definition hexrays.hpp:9584
@ hx_mba_t_alloc_fict_ea
Definition hexrays.hpp:9514
@ hx_valrng_t_set_eq
Definition hexrays.hpp:9232
@ hx_has_cached_cfunc
Definition hexrays.hpp:9668
@ hx_restore_user_labels
Definition hexrays.hpp:9626
@ hx_udcall_map_begin
Definition hexrays.hpp:9123
@ hx_mark_cfunc_dirty
Definition hexrays.hpp:9666
@ hx_int64_emulator_t__mop_value
Definition hexrays.hpp:9719
@ hx_user_labels_second
Definition hexrays.hpp:9180
@ hx_user_casts_first
Definition hexrays.hpp:9731
@ hx_ivlset_t_count
Definition hexrays.hpp:9335
@ hx_user_labels_begin
Definition hexrays.hpp:9175
@ hx_lvar_mapping_end
Definition hexrays.hpp:9111
@ hx_lvar_locator_t_compare
Definition hexrays.hpp:9275
@ hx_eamap_find
Definition hexrays.hpp:9194
@ hx_user_numforms_begin
Definition hexrays.hpp:9097
@ hx_bitset_t_is_subset_of
Definition hexrays.hpp:9322
@ hx_mba_t_map_fict_ea
Definition hexrays.hpp:9515
@ hx_mop_t_make_second_half
Definition hexrays.hpp:9401
@ hx_cfunc_t_save_user_iflags
Definition hexrays.hpp:9651
@ hx_valrng_t_copy
Definition hexrays.hpp:9229
@ hx_get_merror_desc
Definition hexrays.hpp:9243
@ hx_cexpr_t_get_high_nbit_bound
Definition hexrays.hpp:9571
@ hx_mblock_t_optimize_insn
Definition hexrays.hpp:9466
@ hx_cinsn_t_new_insn
Definition hexrays.hpp:9591
@ hx_cfunc_t_del_orphan_cmts
Definition hexrays.hpp:9645
@ hx_remove_optblock_handler
Definition hexrays.hpp:9355
@ hx_cfunc_t_build_c_tree
Definition hexrays.hpp:9631
@ hx_valrng_t_compare
Definition hexrays.hpp:9231
@ hx_mba_t_stkoff_ida2vd
Definition hexrays.hpp:9483
@ hx_send_database
Definition hexrays.hpp:9538
@ hx_bitset_t_add_
Definition hexrays.hpp:9303
@ hx_user_casts_insert
Definition hexrays.hpp:9734
@ hx_boundaries_free
Definition hexrays.hpp:9212
@ hx_mop_t_is_zero_extended_from
Definition hexrays.hpp:9391
@ hx_locate_lvar
Definition hexrays.hpp:9291
@ hx_mbl_graph_t_get_du
Definition hexrays.hpp:9526
@ hx_ctree_item_t_get_lvar
Definition hexrays.hpp:9609
@ hx_create_typedef
Definition hexrays.hpp:9267
@ hx_boundaries_clear
Definition hexrays.hpp:9210
@ hx_cexpr_t_replace_by
Definition hexrays.hpp:9563
@ hx_mop_t_lexcompare
Definition hexrays.hpp:9393
@ hx_cfor_t_compare
Definition hexrays.hpp:9580
@ hx_user_casts_second
Definition hexrays.hpp:9732
@ hx_mcases_t_compare
Definition hexrays.hpp:9414
@ hx_eamap_next
Definition hexrays.hpp:9190
@ hx_minsn_t_swap
Definition hexrays.hpp:9433
@ hx_mop_t_create_from_ivlset
Definition hexrays.hpp:9377
@ hx_cexpr_t_contains_operator
Definition hexrays.hpp:9570
@ hx_save_user_lvar_settings
Definition hexrays.hpp:9288
@ hx_is_small_udt
Definition hexrays.hpp:9257
@ hx_cfunc_t_get_user_iflags
Definition hexrays.hpp:9642
@ hx_eamap_second
Definition hexrays.hpp:9193
@ hx_dummy_ptrtype
Definition hexrays.hpp:9264
@ hx_boundaries_begin
Definition hexrays.hpp:9201
@ hx_mba_t_insert_block
Definition hexrays.hpp:9502
@ hx_vdui_t_set_global_type
Definition hexrays.hpp:9695
@ hx_user_iflags_find
Definition hexrays.hpp:9155
@ hx_user_labels_new
Definition hexrays.hpp:9187
@ hx_minsn_t_find_call
Definition hexrays.hpp:9445
@ hx_cfunc_t_remove_unused_labels
Definition hexrays.hpp:9639
@ hx_user_cmts_erase
Definition hexrays.hpp:9144
@ hx_vdloc_t_dstr
Definition hexrays.hpp:9270
@ hx_get_signed_mcode
Definition hexrays.hpp:9248
@ hx_user_cmts_end
Definition hexrays.hpp:9137
@ hx_cinsn_t_contains_insn
Definition hexrays.hpp:9596
@ hx_decompile
Definition hexrays.hpp:9663
@ hx_mba_t_remove_empty_and_unreachable_blocks
Definition hexrays.hpp:9505
@ hx_mop_t_for_all_scattered_submops
Definition hexrays.hpp:9395
@ hx_mop_t_erase
Definition hexrays.hpp:9373
@ hx_ivlset_t_contains
Definition hexrays.hpp:9337
@ hx_lvar_t_append_list_
Definition hexrays.hpp:9283
@ hx_lvar_t_set_lvar_type
Definition hexrays.hpp:9280
@ hx_vdui_t_jump_enter
Definition hexrays.hpp:9698
@ hx_mop_t_make_number
Definition hexrays.hpp:9381
@ hx_mba_t_deserialize
Definition hexrays.hpp:9517
@ hx_mblock_t_append_def_list
Definition hexrays.hpp:9471
@ hx_catchexpr_t_compare
Definition hexrays.hpp:9713
@ hx_user_iflags_first
Definition hexrays.hpp:9153
@ hx_asgop_revert
Definition hexrays.hpp:9546
@ hx_cfunc_t_find_item_coords
Definition hexrays.hpp:9660
@ hx_mop_t_make_first_half
Definition hexrays.hpp:9400
@ hx_user_iflags_size
Definition hexrays.hpp:9159
@ hx_cfunc_t_save_user_unions
Definition hexrays.hpp:9652
@ hx_new_block
Definition hexrays.hpp:9615
@ hx_udcall_map_erase
Definition hexrays.hpp:9131
@ hx_vdui_t_rename_label
Definition hexrays.hpp:9697
@ hx_ctree_item_t_dstr
Definition hexrays.hpp:9613
@ hx_boundaries_prev
Definition hexrays.hpp:9204
@ hx_lvar_mapping_free
Definition hexrays.hpp:9121
@ hx_bitset_t_has_any
Definition hexrays.hpp:9312
@ hx_obsolete_int64_emulator_t_mop_value
Definition hexrays.hpp:9717
@ hx_decompile_many
Definition hexrays.hpp:9536
@ hx_user_cmts_next
Definition hexrays.hpp:9138
@ hx_ctree_item_t_get_ea
Definition hexrays.hpp:9610
@ hx_mop_t_apply_ld_mcode
Definition hexrays.hpp:9405
@ hx_lvar_mapping_clear
Definition hexrays.hpp:9119
@ hx_gco_info_t_append_to_list
Definition hexrays.hpp:9539
@ hx_parse_user_call
Definition hexrays.hpp:9294
@ hx_minsn_t_may_use_aliased_memory
Definition hexrays.hpp:9452
@ hx_chain_t_dstr
Definition hexrays.hpp:9422
@ hx_mba_t_build_graph
Definition hexrays.hpp:9492
@ hx_lvar_mapping_second
Definition hexrays.hpp:9115
@ hx_vdui_t_set_num_enum
Definition hexrays.hpp:9705
@ hx_cfunc_t_set_user_cast
Definition hexrays.hpp:9741
@ hx_cinsn_t_print
Definition hexrays.hpp:9593
@ hx_restore_user_numforms
Definition hexrays.hpp:9628
@ hx_lvar_locator_t_dstr
Definition hexrays.hpp:9276
@ hx_mop_t_create_from_vdloc
Definition hexrays.hpp:9378
@ hx_user_cmts_find
Definition hexrays.hpp:9142
@ hx_del_user_minsn
Definition hexrays.hpp:9748
@ hx_mblock_t_find_redefinition
Definition hexrays.hpp:9475
@ hx_mblock_t_optimize_block
Definition hexrays.hpp:9467
@ hx_user_cmts_first
Definition hexrays.hpp:9140
@ hx_user_numforms_free
Definition hexrays.hpp:9108
@ hx_mbl_graph_t_get_ud
Definition hexrays.hpp:9525
@ hx_mop_t_swap
Definition hexrays.hpp:9372
@ hx_udcall_map_clear
Definition hexrays.hpp:9132
@ hx_vdui_t_ui_set_call_type
Definition hexrays.hpp:9684
@ hx_user_labels_size
Definition hexrays.hpp:9185
@ hx_get_hexrays_version
Definition hexrays.hpp:9532
@ hx_vdui_t_rename_lvar
Definition hexrays.hpp:9683
@ hx_mba_t_stkoff_vd2ida
Definition hexrays.hpp:9482
@ hx_lvar_t_append_list
Definition hexrays.hpp:9282
@ hx_minsn_t_is_helper
Definition hexrays.hpp:9444
@ hx_cfunc_t_get_warnings
Definition hexrays.hpp:9654
@ hx_mreg2reg
Definition hexrays.hpp:9350
@ hx_save_user_iflags
Definition hexrays.hpp:9624
@ hx_user_unions_size
Definition hexrays.hpp:9172
@ hx_cfunc_t_get_user_cast
Definition hexrays.hpp:9742
@ hx_lvar_mapping_new
Definition hexrays.hpp:9122
@ hx_get_current_operand
Definition hexrays.hpp:9540
@ hx_mba_t_for_all_ops
Definition hexrays.hpp:9507
@ hx_bitset_t_count
Definition hexrays.hpp:9315
@ hx_eamap_end
Definition hexrays.hpp:9189
@ hx_bitset_t_has_common
Definition hexrays.hpp:9320
@ hx_user_cmts_free
Definition hexrays.hpp:9147
@ hx_cfunc_t_save_user_numforms
Definition hexrays.hpp:9650
@ hx_vdui_t_set_lvar_cmt
Definition hexrays.hpp:9689
@ hx_user_numforms_second
Definition hexrays.hpp:9102
@ hx_vdui_t_collapse_lvars
Definition hexrays.hpp:9710
@ hx_user_casts_erase
Definition hexrays.hpp:9735
@ hx_user_iflags_next
Definition hexrays.hpp:9151
@ hx_mblock_t_insert_into_block
Definition hexrays.hpp:9461
@ hx_vdui_t_set_locked
Definition hexrays.hpp:9673
@ hx_mba_t_inline_function
Definition hexrays.hpp:9752
@ hx_boundaries_erase
Definition hexrays.hpp:9209
@ hx_hexrays_free
Definition hexrays.hpp:9227
@ hx_ctree_parentee_t_recalc_parent_types
Definition hexrays.hpp:9554
@ hx_user_labels_find
Definition hexrays.hpp:9181
@ hx_mblock_t_build_use_list
Definition hexrays.hpp:9472
@ hx_user_cmts_clear
Definition hexrays.hpp:9145
@ hx_mblock_t_optimize_useless_jump
Definition hexrays.hpp:9469
@ hx_vdui_t_ui_set_lvar_type
Definition hexrays.hpp:9685
@ hx_bitset_t_goup
Definition hexrays.hpp:9324
@ hx_mop_t_is01
Definition hexrays.hpp:9389
@ hx_minsn_t_copy
Definition hexrays.hpp:9431
@ hx_cif_t_compare
Definition hexrays.hpp:9578
@ hx_mblock_t_get_valranges
Definition hexrays.hpp:9478
@ hx_cexpr_t_maybe_ptr
Definition hexrays.hpp:9575
@ hx_vdui_t_ctree_to_disasm
Definition hexrays.hpp:9699
@ hx_valrng_t_cvt_to_single_value
Definition hexrays.hpp:9241
@ hx_set_type
Definition hexrays.hpp:9269
@ hx_mba_t_locate_stkpnt
Definition hexrays.hpp:9522
@ hx_save_user_cmts
Definition hexrays.hpp:9622
@ hx_cfunc_t_get_boundaries
Definition hexrays.hpp:9656
@ hx_vdui_t_split_item
Definition hexrays.hpp:9711
@ hx_mop_t_preserve_side_effects
Definition hexrays.hpp:9404
@ hx_cfunc_t_recalc_item_addresses
Definition hexrays.hpp:9716
@ hx_create_field_name
Definition hexrays.hpp:9670
@ hx_cinsn_t_create_if
Definition hexrays.hpp:9592
@ hx_cexpr_t_assign
Definition hexrays.hpp:9561
@ hx_vdui_t_collapse_item
Definition hexrays.hpp:9709
@ hx_mblock_t_is_rhs_redefined
Definition hexrays.hpp:9476
@ hx_user_casts_free
Definition hexrays.hpp:9738
@ hx_mcallinfo_t_lexcompare
Definition hexrays.hpp:9409
@ hx_mba_t_find_mop
Definition hexrays.hpp:9510
@ hx_get_type
Definition hexrays.hpp:9268
@ hx_vdui_t_switch_to
Definition hexrays.hpp:9676
@ hx_ivlset_t_includes
Definition hexrays.hpp:9338
@ hx_simple_graph_t_depth_first_preorder
Definition hexrays.hpp:9358
@ hx_cexpr_t_calc_type
Definition hexrays.hpp:9567
@ hx_eamap_insert
Definition hexrays.hpp:9195
@ hx_cnumber_t_value
Definition hexrays.hpp:9548
@ hx_get_mreg_name
Definition hexrays.hpp:9351
@ hx_mba_t_alloc_lvars
Definition hexrays.hpp:9496
@ hx_cnumber_t_compare
Definition hexrays.hpp:9550
@ hx_cinsn_t_collect_free_breaks
Definition hexrays.hpp:9597
@ hx_user_casts_size
Definition hexrays.hpp:9737
@ hx_valrng_t_dstr
Definition hexrays.hpp:9240
@ hx_lvars_t_find_lvar
Definition hexrays.hpp:9286
@ hx_install_optblock_handler
Definition hexrays.hpp:9354
@ hx_vdui_t_rename_global
Definition hexrays.hpp:9696
@ hx_restore_user_defined_calls
Definition hexrays.hpp:9292
@ hx_get_unsigned_mcode
Definition hexrays.hpp:9249
@ hx_vdui_t_refresh_cpos
Definition hexrays.hpp:9680
@ hx_swapped_relation
Definition hexrays.hpp:9543
@ hx_vdui_t_get_current_item
Definition hexrays.hpp:9681
@ hx_cfunc_t_get_user_union_selection
Definition hexrays.hpp:9646
@ hx_get_int_type_by_width_and_sign
Definition hexrays.hpp:9262
@ hx_mop_t_get_stkoff
Definition hexrays.hpp:9397
@ hx_user_labels_clear
Definition hexrays.hpp:9184
@ hx_user_iflags_erase
Definition hexrays.hpp:9157
@ hx_cinsn_t_assign
Definition hexrays.hpp:9587
@ hx_get_temp_regs
Definition hexrays.hpp:9347
@ hx_decomp_ranges_t_range_contains
Definition hexrays.hpp:9750
@ hx_block_chains_erase
Definition hexrays.hpp:9221
@ hx_ivlset_t_print
Definition hexrays.hpp:9333
@ hx_eamap_clear
Definition hexrays.hpp:9197
@ hx_mba_t_term
Definition hexrays.hpp:9488
@ hx_cexpr_t_print1
Definition hexrays.hpp:9566
@ hx_ivlset_t_sub_
Definition hexrays.hpp:9331
@ hx_lvar_mapping_insert
Definition hexrays.hpp:9117
@ hx_udc_filter_t_init
Definition hexrays.hpp:9298
@ hx_user_unions_end
Definition hexrays.hpp:9163
@ hx_install_microcode_filter
Definition hexrays.hpp:9296
@ hx_make_num
Definition hexrays.hpp:9618
@ hx_modify_user_lvar_info
Definition hexrays.hpp:9290
@ hx_mblock_t_dump
Definition hexrays.hpp:9459
@ hx_mblock_t_get_reginsn_qty
Definition hexrays.hpp:9480
@ hx_udcall_map_free
Definition hexrays.hpp:9134
@ hx_cdo_t_compare
Definition hexrays.hpp:9582
@ hx_udcall_map_insert
Definition hexrays.hpp:9130
@ hx_mblock_t_find_first_use
Definition hexrays.hpp:9474
@ hx_mba_t_idaloc2vd
Definition hexrays.hpp:9484
@ hx_mlist_t_compare
Definition hexrays.hpp:9346
@ hx_mcallinfo_t_set_type
Definition hexrays.hpp:9410
@ hx_mba_t_optimize_global
Definition hexrays.hpp:9495
@ hx_vdui_t_set_num_radix
Definition hexrays.hpp:9704
@ hx_mba_t_merge_blocks
Definition hexrays.hpp:9506
@ hx_mba_t_analyze_calls
Definition hexrays.hpp:9494
@ hx_bitset_t_fill_with_ones
Definition hexrays.hpp:9318
@ hx_cfunc_t_verify
Definition hexrays.hpp:9632
@ hx_minsn_t_set_combined
Definition hexrays.hpp:9432
@ hx_user_numforms_prev
Definition hexrays.hpp:9100
@ hx_mutable_graph_t_resize
Definition hexrays.hpp:9361
@ hx_int64_emulator_t__minsn_value
Definition hexrays.hpp:9720
@ hx_minsn_t_serialize
Definition hexrays.hpp:9453
@ hx_mblock_t_for_all_insns
Definition hexrays.hpp:9463
@ hx_user_casts_clear
Definition hexrays.hpp:9736
@ hx_install_optinsn_handler
Definition hexrays.hpp:9352
@ hx_mop_t_copy
Definition hexrays.hpp:9370
@ hx_ctree_item_t_get_udm
Definition hexrays.hpp:9607
@ hx_boundaries_size
Definition hexrays.hpp:9211
@ hx_select_udt_by_offset
Definition hexrays.hpp:9712
@ hx_ctree_item_t_print
Definition hexrays.hpp:9612
@ hx_hexrays_failure_t_desc
Definition hexrays.hpp:9537
@ hx_block_chains_get
Definition hexrays.hpp:9218
@ hx_user_labels_end
Definition hexrays.hpp:9176
@ hx_cfunc_t_gather_derefs
Definition hexrays.hpp:9659
@ hx_lvars_t_find
Definition hexrays.hpp:9285
@ hx_remove_hexrays_callback
Definition hexrays.hpp:9672
@ hx_mop_t_assign
Definition hexrays.hpp:9371
@ hx_user_cmts_insert
Definition hexrays.hpp:9143
@ hx_bitset_t_cut_at
Definition hexrays.hpp:9308
@ hx_cwhile_t_compare
Definition hexrays.hpp:9581
@ hx_cexpr_t_put_number
Definition hexrays.hpp:9565
@ hx_cexpr_t_compare
Definition hexrays.hpp:9562
@ hx_graph_chains_t_for_all_chains
Definition hexrays.hpp:9428
@ hx_user_iflags_free
Definition hexrays.hpp:9160
@ hx_user_iflags_prev
Definition hexrays.hpp:9152
@ hx_mba_t_create_helper_call
Definition hexrays.hpp:9511
@ hx_user_cmts_new
Definition hexrays.hpp:9148
@ hx_simple_graph_t_depth_first_postorder
Definition hexrays.hpp:9359
@ hx_vcall_helper
Definition hexrays.hpp:9617
@ hx_make_pointer
Definition hexrays.hpp:9266
@ hx_ivlset_t_sub
Definition hexrays.hpp:9330
@ hx_mutable_graph_t_del_edge
Definition hexrays.hpp:9363
@ hx_bitset_t_sub__
Definition hexrays.hpp:9307
@ hx_udc_filter_t_apply
Definition hexrays.hpp:9299
@ hx_bitset_t_intersect
Definition hexrays.hpp:9321
@ hx_block_chains_insert
Definition hexrays.hpp:9220
@ hx_negated_relation
Definition hexrays.hpp:9542
@ hx_user_unions_begin
Definition hexrays.hpp:9162
@ hx_cfunc_t_get_lvars
Definition hexrays.hpp:9636
@ hx_mba_t_add_user_minsn
Definition hexrays.hpp:9745
@ hx_user_iflags_second
Definition hexrays.hpp:9154
@ hx_eamap_begin
Definition hexrays.hpp:9188
@ hx_vdui_t_ui_edit_lvar_cmt
Definition hexrays.hpp:9688
@ hx_cinsn_t_replace_by
Definition hexrays.hpp:9589
@ hx_boundaries_find
Definition hexrays.hpp:9207
@ hx_bitset_t_count_
Definition hexrays.hpp:9316
@ hx_bitset_t_has
Definition hexrays.hpp:9310
@ hx_fnumber_t_print
Definition hexrays.hpp:9368
@ hx_user_casts_next
Definition hexrays.hpp:9729
@ hx_vdui_t_ui_add_cast
Definition hexrays.hpp:9743
@ hx_get_float_type
Definition hexrays.hpp:9261
@ hx_bitset_t_add
Definition hexrays.hpp:9302
@ hx_cfunc_t_cleanup
Definition hexrays.hpp:9661
@ hx_bitset_t_sub_
Definition hexrays.hpp:9306
@ hx_user_unions_new
Definition hexrays.hpp:9174
@ hx_user_iflags_end
Definition hexrays.hpp:9150
@ hx_minsn_t__make_nop
Definition hexrays.hpp:9440
@ hx_cdg_insn_iterator_t_next
Definition hexrays.hpp:9527
@ hx_user_unions_prev
Definition hexrays.hpp:9165
@ hx_mop_t_make_high_half
Definition hexrays.hpp:9399
@ hx_mba_t_dump
Definition hexrays.hpp:9497
@ hx_codegen_t_clear
Definition hexrays.hpp:9528
@ hx_simple_graph_t_goup
Definition hexrays.hpp:9360
@ hx_ivlset_t_has_common_
Definition hexrays.hpp:9336
@ hx_cgoto_t_compare
Definition hexrays.hpp:9585
@ hx_mop_t_change_size
Definition hexrays.hpp:9403
@ hx_ivlset_t_has_common
Definition hexrays.hpp:9332
@ hx_block_chains_clear
Definition hexrays.hpp:9222
@ hx_vdui_t_set_num_stroff
Definition hexrays.hpp:9706
@ hx_mlist_t_addmem
Definition hexrays.hpp:9343
@ hx_ccase_t_compare
Definition hexrays.hpp:9602
@ hx_user_casts_end
Definition hexrays.hpp:9728
@ hx_ivlset_t_addmasked
Definition hexrays.hpp:9329
@ hx_getb_reginsn
Definition hexrays.hpp:9456
@ hx_mba_t_set_numform
Definition hexrays.hpp:9758
@ hx_vivl_t_print
Definition hexrays.hpp:9419
@ hx_mblock_t_remove_from_block
Definition hexrays.hpp:9462
@ hx_cfunc_t_get_line_item
Definition hexrays.hpp:9653
@ hx_mba_t_save_snapshot
Definition hexrays.hpp:9518
@ hx_vcreate_helper
Definition hexrays.hpp:9616
@ hx_eamap_size
Definition hexrays.hpp:9198
@ hx_mblock_t_for_all_ops
Definition hexrays.hpp:9464
@ hx_udc_filter_t_cleanup
Definition hexrays.hpp:9297
@ hx_minsn_t_setaddr
Definition hexrays.hpp:9436
@ hx_citem_t_find_closest_addr
Definition hexrays.hpp:9560
@ hx_mop_t_dstr
Definition hexrays.hpp:9375
@ hx_mop_t_is_constant
Definition hexrays.hpp:9396
@ hx_codegen_t_emit
Definition hexrays.hpp:9529
@ hx_mop_t_make_helper
Definition hexrays.hpp:9386
@ hx_user_cmts_begin
Definition hexrays.hpp:9136
@ hx_bitset_t_bitset_t
Definition hexrays.hpp:9300
@ hx_create_cfunc
Definition hexrays.hpp:9665
@ hx_cfunc_t_refresh_func_ctext
Definition hexrays.hpp:9658
@ hx_vivl_t_intersect
Definition hexrays.hpp:9418
@ hx_mop_t_make_gvar
Definition hexrays.hpp:9384
@ hx_mba_t_for_all_insns
Definition hexrays.hpp:9508
@ hx_close_pseudocode
Definition hexrays.hpp:9534
@ hx_cfunc_t_get_eamap
Definition hexrays.hpp:9655
@ hx_mcases_t_dstr
Definition hexrays.hpp:9416
@ hx_user_casts_new
Definition hexrays.hpp:9739
@ hx_lvar_t_is_promoted_arg
Definition hexrays.hpp:9278
@ hx_restore_user_unions
Definition hexrays.hpp:9630
@ hx_mop_t_equal_mops
Definition hexrays.hpp:9392
@ hx_block_chains_find
Definition hexrays.hpp:9219
@ hx_mcallarg_t_print
Definition hexrays.hpp:9406
@ hx_minsn_t_deserialize
Definition hexrays.hpp:9454
@ hx_mbl_graph_t_is_accessed_globally
Definition hexrays.hpp:9524
@ hx_user_labels_insert
Definition hexrays.hpp:9182
@ hx_operand_locator_t_compare
Definition hexrays.hpp:9251
@ hx_valrng_t_intersect_with
Definition hexrays.hpp:9235
@ hx_qstring_printer_t_print
Definition hexrays.hpp:9254
@ hx_ctry_t_compare
Definition hexrays.hpp:9606
@ hx_mblock_t_get_valranges_
Definition hexrays.hpp:9479
@ hx_mblock_t_build_lists
Definition hexrays.hpp:9468
@ hx_cinsn_t_print1
Definition hexrays.hpp:9594
@ hx_ivlset_t_compare
Definition hexrays.hpp:9340
@ hx_cexpr_t_has_side_effects
Definition hexrays.hpp:9574
@ hx_restore_user_lvar_settings
Definition hexrays.hpp:9287
@ hx_minsn_t_for_all_ops
Definition hexrays.hpp:9438
@ hx_user_casts_begin
Definition hexrays.hpp:9727
@ hx_mba_t_inline_func
Definition hexrays.hpp:9521
@ hx_valrng_t_clear
Definition hexrays.hpp:9228
@ hx_minsn_t_print
Definition hexrays.hpp:9434
@ hx_mba_t_idaloc2vd_
Definition hexrays.hpp:9485
@ hx_vdui_t_get_number
Definition hexrays.hpp:9677
@ hx_remitem
Definition hexrays.hpp:9541
@ hx_user_numforms_insert
Definition hexrays.hpp:9104
@ hx_mba_t_remove_block
Definition hexrays.hpp:9503
@ hx_cfunc_t_save_user_cmts
Definition hexrays.hpp:9649
@ hx_cexpr_t_dstr
Definition hexrays.hpp:9576
@ hx_bitset_t_shift_down
Definition hexrays.hpp:9309
@ hx_dstr
Definition hexrays.hpp:9255
@ hx_ctree_visitor_t_apply_to_exprs
Definition hexrays.hpp:9553
@ hx_user_iflags_clear
Definition hexrays.hpp:9158
@ hx_cblock_t_compare
Definition hexrays.hpp:9600
@ hx_print_vdloc
Definition hexrays.hpp:9273
@ hx_remove_optinsn_handler
Definition hexrays.hpp:9353
@ hx_mba_t_get_func_output_lists
Definition hexrays.hpp:9512
@ hx_minsn_t_modifies_d
Definition hexrays.hpp:9450
@ hx_cfunc_t_get_stkoff_delta
Definition hexrays.hpp:9637
@ hx_gen_microcode_
Definition hexrays.hpp:9754
@ hx_eamap_prev
Definition hexrays.hpp:9191
@ hx_boundaries_end
Definition hexrays.hpp:9202
@ hx_udcall_map_new
Definition hexrays.hpp:9135
@ hx_user_numforms_find
Definition hexrays.hpp:9103
@ hx_user_labels_erase
Definition hexrays.hpp:9183
@ hx_install_hexrays_callback
Definition hexrays.hpp:9671
@ hx_cfunc_t_set_user_cmt
Definition hexrays.hpp:9641
@ hx_vd_printer_t_print
Definition hexrays.hpp:9252
@ hx_mutable_graph_t_goup
Definition hexrays.hpp:9362
@ hx_cnumber_t_print
Definition hexrays.hpp:9547
@ hx_valrng_t_reduce_size
Definition hexrays.hpp:9234
@ hx_save_user_labels
Definition hexrays.hpp:9621
@ hx_obsolete_int64_emulator_t_minsn_value
Definition hexrays.hpp:9718
@ hx_open_pseudocode
Definition hexrays.hpp:9533
@ hx_mba_ranges_t_range_contains
Definition hexrays.hpp:9481
@ hx_valrng_t_inverse
Definition hexrays.hpp:9237
@ hx_rlist_t_dstr
Definition hexrays.hpp:9342
@ hx_mop_t_make_reg_pair
Definition hexrays.hpp:9385
@ hx_casm_t_compare
Definition hexrays.hpp:9586
@ hx_user_iflags_begin
Definition hexrays.hpp:9149
@ hx_mba_t_get_numform
Definition hexrays.hpp:9757
@ hx_vdui_t_invert_bits
Definition hexrays.hpp:9708
@ hx_bitset_t_sub
Definition hexrays.hpp:9305
@ hx_save_user_casts
Definition hexrays.hpp:9725
@ hx_cif_t_assign
Definition hexrays.hpp:9577
@ hx_arglocs_overlap
Definition hexrays.hpp:9274
@ hx_eamap_new
Definition hexrays.hpp:9200
@ hx_user_unions_clear
Definition hexrays.hpp:9171
@ hx_get_ctype_name
Definition hexrays.hpp:9669
@ hx_dereference
Definition hexrays.hpp:9620
@ hx_cfunc_t_deserialize
Definition hexrays.hpp:9722
@ hx_block_chains_next
Definition hexrays.hpp:9216
@ hx_user_labels_next
Definition hexrays.hpp:9177
@ hx_get_op_signness
Definition hexrays.hpp:9544
@ hx_bitset_t_add__
Definition hexrays.hpp:9304
@ hx_mop_t_may_use_aliased_memory
Definition hexrays.hpp:9388
@ hx_restore_user_iflags
Definition hexrays.hpp:9629
@ hx_vdui_t_rename_udm
Definition hexrays.hpp:9694
@ hx_simple_graph_t_compute_dominators
Definition hexrays.hpp:9356
@ hx_vdui_t_refresh_view
Definition hexrays.hpp:9674
@ hx_mba_t_set_lvar_name
Definition hexrays.hpp:9523
@ hx_mblock_t_undef_spoiled_regs
Definition hexrays.hpp:9756
@ hx_mop_t_shift_mop
Definition hexrays.hpp:9402
@ hx_bitset_t_has_all
Definition hexrays.hpp:9311
@ hx_mba_t_clr_numform
Definition hexrays.hpp:9759
@ hx_change_hexrays_config
Definition hexrays.hpp:9531
@ hx_ivlset_t_dstr
Definition hexrays.hpp:9334
@ hx_cfunc_t_has_orphan_cmts
Definition hexrays.hpp:9644
@ hx_block_chains_new
Definition hexrays.hpp:9225
@ hx_cinsn_t_is_ordinary_flow
Definition hexrays.hpp:9595
@ hx_hexrays_alloc
Definition hexrays.hpp:9226
@ hx_vdui_t_set_noptr_lvar
Definition hexrays.hpp:9687
@ hx_eamap_free
Definition hexrays.hpp:9199
@ hx_vdui_t_refresh_ctext
Definition hexrays.hpp:9675
@ hx_partial_type_num
Definition hexrays.hpp:9260
@ hx_lvar_mapping_next
Definition hexrays.hpp:9112
@ hx_user_minsn_t_compare
Definition hexrays.hpp:9749
@ hx_cfunc_t_set_user_iflags
Definition hexrays.hpp:9643
@ hx_vdui_t_del_orphan_cmts
Definition hexrays.hpp:9703
@ hx_stkvar_ref_t_compare
Definition hexrays.hpp:9366
@ hx_valrng_t_set_cmp
Definition hexrays.hpp:9233
@ hx_cfunc_t_find_addressable_item
Definition hexrays.hpp:9761
@ hx_cfunc_t_print_dcl
Definition hexrays.hpp:9633
@ hx_bitset_t_compare
Definition hexrays.hpp:9323
@ hx_lnot
Definition hexrays.hpp:9614
@ hx_vdui_t_ui_noprop_lvar
Definition hexrays.hpp:9724
@ hx_user_numforms_erase
Definition hexrays.hpp:9105
@ hx_user_numforms_new
Definition hexrays.hpp:9109
@ hx_cfunc_t_print_func
Definition hexrays.hpp:9634
@ hx_restore_user_cmts
Definition hexrays.hpp:9627
@ hx_block_chains_free
Definition hexrays.hpp:9224
@ hx_minsn_t_equal_insns
Definition hexrays.hpp:9441
@ hx_mop_t_for_all_ops
Definition hexrays.hpp:9394
@ hx_vdloc_t_is_aliasable
Definition hexrays.hpp:9272
@ hx_ccases_t_compare
Definition hexrays.hpp:9603
@ hx_block_chains_begin
Definition hexrays.hpp:9214
@ hx_udcall_map_first
Definition hexrays.hpp:9127
@ hx_mcode_modifies_d
Definition hexrays.hpp:9250
@ hx_udcall_map_size
Definition hexrays.hpp:9133
@ hx_mcallarg_t_set_regarg
Definition hexrays.hpp:9408
@ hx_ivl_t_dstr
Definition hexrays.hpp:9325
@ hx_mba_t_print
Definition hexrays.hpp:9499
@ hx_reg2mreg
Definition hexrays.hpp:9349
@ hx_lvar_mapping_first
Definition hexrays.hpp:9114
@ hx_mba_t_vd2idaloc
Definition hexrays.hpp:9486
@ hx_mblock_t_print
Definition hexrays.hpp:9458
@ hx_user_unions_first
Definition hexrays.hpp:9166
@ hx_vivl_t_dstr
Definition hexrays.hpp:9420
@ hx_user_numforms_clear
Definition hexrays.hpp:9106
@ hx_stkvar_ref_t_get_stkvar
Definition hexrays.hpp:9367
@ hx_mba_t_get_graph
Definition hexrays.hpp:9493
@ hx_mcallinfo_t_get_type
Definition hexrays.hpp:9411
@ hx_mba_t_arg
Definition hexrays.hpp:9513
@ hx_vdui_t_ui_rename_lvar
Definition hexrays.hpp:9682
@ hx_mba_t_mark_chains_dirty
Definition hexrays.hpp:9501
@ hx_lvar_ref_t_compare
Definition hexrays.hpp:9364
@ hx_get_widget_vdui
Definition hexrays.hpp:9535
@ hx_bitset_t_copy
Definition hexrays.hpp:9301
@ hx_udcall_map_find
Definition hexrays.hpp:9129
@ hx_bitset_t_last
Definition hexrays.hpp:9317
@ hx_user_labels_prev
Definition hexrays.hpp:9178
@ hx_bitset_t_fill_gaps
Definition hexrays.hpp:9319
@ hx_asgop
Definition hexrays.hpp:9545
@ hx_var_ref_t_compare
Definition hexrays.hpp:9551
@ hx_carglist_t_compare
Definition hexrays.hpp:9601
@ hx_mblock_t_init
Definition hexrays.hpp:9457
@ hx_mlist_t_dstr
Definition hexrays.hpp:9345
@ hx_minsn_t_is_noret_call
Definition hexrays.hpp:9443
@ hx_mcallinfo_t_print
Definition hexrays.hpp:9412
@ hx_mblock_t_build_def_list
Definition hexrays.hpp:9473
@ hx_user_unions_find
Definition hexrays.hpp:9168
@ hx_mop_t_create_from_mlist
Definition hexrays.hpp:9376
@ hx_vdui_t_set_udm_type
Definition hexrays.hpp:9693
@ hx_is_kreg
Definition hexrays.hpp:9348
@ hx_udcall_map_next
Definition hexrays.hpp:9125
@ hx_bitset_t_empty
Definition hexrays.hpp:9314
@ hx_codegen_t_emit_
Definition hexrays.hpp:9530
@ hx_block_chains_t_dstr
Definition hexrays.hpp:9427
@ hx_file_printer_t_print
Definition hexrays.hpp:9253
@ hx_mop_t_make_fpnum
Definition hexrays.hpp:9382
@ hx_vdui_t_ui_map_lvar
Definition hexrays.hpp:9690
@ hx_cfunc_t_get_func_type
Definition hexrays.hpp:9635
@ hx_udcall_map_end
Definition hexrays.hpp:9124
@ hx_mblock_t_verify_insn
Definition hexrays.hpp:9723
@ hx_cloop_t_assign
Definition hexrays.hpp:9579
@ hx_clear_cached_cfuncs
Definition hexrays.hpp:9667
@ hx_restore_user_casts
Definition hexrays.hpp:9726
@ hx_save_user_unions
Definition hexrays.hpp:9625
@ hx_mcallinfo_t_dstr
Definition hexrays.hpp:9413
@ hx_ccatch_t_compare
Definition hexrays.hpp:9605
@ hx_user_unions_insert
Definition hexrays.hpp:9169
@ hx_vdui_t_ui_unmap_lvar
Definition hexrays.hpp:9691
@ hx_cfunc_t_get_pseudocode
Definition hexrays.hpp:9657
@ hx_minsn_t_has_side_effects
Definition hexrays.hpp:9446
@ hx_user_iflags_insert
Definition hexrays.hpp:9156
@ hx_mba_t_vdump_mba
Definition hexrays.hpp:9498
@ hx_mba_t_split_block
Definition hexrays.hpp:9714
@ hx_user_unions_second
Definition hexrays.hpp:9167
@ hx_chain_t_append_list_
Definition hexrays.hpp:9424
@ hx_minsn_t_find_num_op
Definition hexrays.hpp:9449
@ hx_ctree_item_t_get_label_num
Definition hexrays.hpp:9611
@ hx_cfunc_parentee_t_calc_rvalue_type
Definition hexrays.hpp:9555
@ hx_is_mcode_propagatable
Definition hexrays.hpp:9245
@ hx_ivlset_t_add_
Definition hexrays.hpp:9328
@ hx_mba_t_get_curfunc
Definition hexrays.hpp:9489
@ hx_mblock_t_find_access
Definition hexrays.hpp:9477
@ hx_boundaries_first
Definition hexrays.hpp:9205
@ hx_vdui_t_calc_cmt_type
Definition hexrays.hpp:9700
@ hx_block_chains_size
Definition hexrays.hpp:9223
@ hx_vdui_t_edit_cmt
Definition hexrays.hpp:9701
@ hx_lvar_mapping_begin
Definition hexrays.hpp:9110
@ hx_must_mcode_close_block
Definition hexrays.hpp:9244
@ hx_boundaries_next
Definition hexrays.hpp:9203
@ hx_block_chains_t_get_chain
Definition hexrays.hpp:9425
@ hx_valrng_t_print
Definition hexrays.hpp:9239
@ hx_make_ref
Definition hexrays.hpp:9619
@ hx_citem_locator_t_compare
Definition hexrays.hpp:9556
@ hx_mop_t_is_sign_extended_from
Definition hexrays.hpp:9390
@ hx_vdui_t_invert_sign
Definition hexrays.hpp:9707
@ hx_modify_user_lvars
Definition hexrays.hpp:9289
@ hx_mblock_t_append_use_list
Definition hexrays.hpp:9470
@ hx_chain_t_print
Definition hexrays.hpp:9421
@ hx_user_labels_free
Definition hexrays.hpp:9186
@ hx_vdloc_t_compare
Definition hexrays.hpp:9271
@ hx_is_type_correct
Definition hexrays.hpp:9256
@ hx_user_casts_find
Definition hexrays.hpp:9733
@ hx_mba_t_optimize_local
Definition hexrays.hpp:9491
@ hx_is_bool_type
Definition hexrays.hpp:9259
@ hx_negate_mcode_relation
Definition hexrays.hpp:9246
@ hx_ivlset_t_intersect
Definition hexrays.hpp:9339
@ hx_ivlset_t_add
Definition hexrays.hpp:9327
@ hx_boundaries_insert
Definition hexrays.hpp:9208
@ hx_creturn_t_compare
Definition hexrays.hpp:9583
@ hx_get_member_type
Definition hexrays.hpp:9265
@ hx_cinsn_t_dstr
Definition hexrays.hpp:9599
@ hx_eamap_erase
Definition hexrays.hpp:9196
@ hx_minsn_t_is_between
Definition hexrays.hpp:9451
@ hx_fnumber_t_dstr
Definition hexrays.hpp:9369
@ hx_mba_t_vd2idaloc_
Definition hexrays.hpp:9487
@ hx_mba_t_copy_block
Definition hexrays.hpp:9504
@ hx_valrng_t_cvt_to_cmp
Definition hexrays.hpp:9242
@ hx_close_hexrays_waitbox
Definition hexrays.hpp:9662
@ hx_user_cmts_size
Definition hexrays.hpp:9146
@ hx_bitset_t_dstr
Definition hexrays.hpp:9313
@ hx_citem_t_find_parent_of
Definition hexrays.hpp:9559
@ hx_mba_t_free_kreg
Definition hexrays.hpp:9520
@ hx_citem_t_contains_label
Definition hexrays.hpp:9558
@ hx_mba_t_del_user_minsn
Definition hexrays.hpp:9746
@ hx_cfunc_t_save_user_labels
Definition hexrays.hpp:9648
@ hx_cexpr_t_get_low_nbit_bound
Definition hexrays.hpp:9572
@ hx_boundaries_new
Definition hexrays.hpp:9213
@ hx_mba_t_remove_blocks
Definition hexrays.hpp:9715
@ hx_get_unk_type
Definition hexrays.hpp:9263
@ hx_mop_t_make_low_half
Definition hexrays.hpp:9398
@ hx_user_unions_next
Definition hexrays.hpp:9164
@ hx_mop_t_print
Definition hexrays.hpp:9374
@ hx_block_chains_t_print
Definition hexrays.hpp:9426
@ hx_cfunc_t_get_user_cmt
Definition hexrays.hpp:9640
@ hx_user_cmts_prev
Definition hexrays.hpp:9139
@ hx_minsn_t_optimize_subtree
Definition hexrays.hpp:9437
@ hx_chain_t_append_list
Definition hexrays.hpp:9423
@ hx_user_unions_erase
Definition hexrays.hpp:9170
@ hx_vdui_t_get_current_label
Definition hexrays.hpp:9678
@ hx_eamap_first
Definition hexrays.hpp:9192
@ hx_vdui_t_edit_func_cmt
Definition hexrays.hpp:9702
@ hx_mop_t_create_from_scattered_vdloc
Definition hexrays.hpp:9379
@ hx_lvar_mapping_erase
Definition hexrays.hpp:9118
@ hx_mba_t_serialize
Definition hexrays.hpp:9516
@ hx_rlist_t_print
Definition hexrays.hpp:9341
@ hx_cswitch_t_compare
Definition hexrays.hpp:9604
@ hx_user_cmts_second
Definition hexrays.hpp:9141
@ hx_mba_t_verify
Definition hexrays.hpp:9500
@ hx_cinsn_t_cleanup
Definition hexrays.hpp:9590
@ hx_block_chains_end
Definition hexrays.hpp:9215
@ hx_boundaries_second
Definition hexrays.hpp:9206
@ hx_mba_t_set_maturity
Definition hexrays.hpp:9490
@ hx_lvar_t_set_width
Definition hexrays.hpp:9281
@ hx_cfunc_t_serialize
Definition hexrays.hpp:9721
@ hx_user_casts_prev
Definition hexrays.hpp:9730
@ hx_ctree_visitor_t_apply_to
Definition hexrays.hpp:9552
@ hx_ivl_t_compare
Definition hexrays.hpp:9326
@ hx_mba_t_get_decomp_ranges
Definition hexrays.hpp:9751
@ hx_valrng_t_unite_with
Definition hexrays.hpp:9236
@ hx_minsn_t_find_opcode
Definition hexrays.hpp:9447
@ hx_lvar_t_accepts_type
Definition hexrays.hpp:9279
@ hx_cinsn_t_collect_free_continues
Definition hexrays.hpp:9598
@ hx_cexpr_t_equal_effect
Definition hexrays.hpp:9568
@ hx_swap_mcode_relation
Definition hexrays.hpp:9247
@ hx_udcall_map_second
Definition hexrays.hpp:9128
@ hx_graph_chains_t_release
Definition hexrays.hpp:9429
@ hx_is_nonbool_type
Definition hexrays.hpp:9258
@ hx_user_numforms_next
Definition hexrays.hpp:9099
@ hx_cexpr_t_cleanup
Definition hexrays.hpp:9564
@ hx_lvars_t_find_stkvar
Definition hexrays.hpp:9284
@ hx_minsn_t_find_ins_op
Definition hexrays.hpp:9448
@ hx_mblock_t_for_all_uses
Definition hexrays.hpp:9465
@ hx_lvar_mapping_size
Definition hexrays.hpp:9120
@ hx_valrng_t_has
Definition hexrays.hpp:9238
@ hx_cinsn_t_compare
Definition hexrays.hpp:9588
@ hx_udcall_map_prev
Definition hexrays.hpp:9126
@ hx_citem_t_contains_expr
Definition hexrays.hpp:9557
@ hx_user_numforms_first
Definition hexrays.hpp:9101
@ hx_gen_microcode
Definition hexrays.hpp:9664
@ hx_vivl_t_extend_to_cover
Definition hexrays.hpp:9417
@ hx_cexpr_t_is_child_of
Definition hexrays.hpp:9569
@ hx_ctree_item_t_get_edm
Definition hexrays.hpp:9608
@ hx_mop_t__make_gvar
Definition hexrays.hpp:9383
@ hx_save_user_defined_calls
Definition hexrays.hpp:9293
@ hx_lvar_mapping_find
Definition hexrays.hpp:9116
@ hx_minsn_t_lexcompare
Definition hexrays.hpp:9442
@ hx_cfunc_t_save_user_casts
Definition hexrays.hpp:9740
@ hx_mcallarg_t_dstr
Definition hexrays.hpp:9407
@ hx_user_iflags_new
Definition hexrays.hpp:9161
@ hx_mop_t_get_bitwidth
Definition hexrays.hpp:9755
@ hx_minsn_t_for_all_insns
Definition hexrays.hpp:9439
@ hx_convert_to_user_call
Definition hexrays.hpp:9295
@ hx_mop_t_is_bit_reg
Definition hexrays.hpp:9387
@ hx_minsn_t_dstr
Definition hexrays.hpp:9435
@ hx_mlist_t_print
Definition hexrays.hpp:9344
@ hx_lvar_mapping_prev
Definition hexrays.hpp:9113
@ hx_add_user_minsn
Definition hexrays.hpp:9747
@ hx_cfunc_t_find_label
Definition hexrays.hpp:9638
@ hx_minsn_t_init
Definition hexrays.hpp:9430
@ hx_mba_t_for_all_topinsns
Definition hexrays.hpp:9509
@ hx_mcases_t_print
Definition hexrays.hpp:9415
@ hx_user_numforms_size
Definition hexrays.hpp:9107
mba_t mbl_array_t
Definition hexrays.hpp:5833
qmap< int, qstring > user_labels_t
Definition hexrays.hpp:7669
boundaries_t * boundaries_new()
Create a new boundaries_t instance.
Definition hexrays.hpp:10869
void hexapi save_user_casts(ea_t func_ea, const user_casts_t *casts)
Save user defined casts into the database.
Definition hexrays.hpp:13518
side_effect_t
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change...
Definition hexrays.hpp:2588
@ ONLY_SIDEFF
only handle side effects
Definition hexrays.hpp:2593
@ ANY_REGSIZE
any register size is permitted
Definition hexrays.hpp:2594
@ NO_SIDEFF
change operand size but ignore side effects if you decide to keep the changed operand,...
Definition hexrays.hpp:2589
@ ANY_FPSIZE
any size of floating operand is permitted
Definition hexrays.hpp:2595
@ WITH_SIDEFF
change operand size and handle side effects
Definition hexrays.hpp:2592
int hexapi remove_hexrays_callback(hexrays_cb_t *callback, void *ud)
Uninstall handler for decompiler events.
Definition hexrays.hpp:13878
bool is_assignment(ctype_t op)
Is assignment operator?
Definition hexrays.hpp:6430
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:13500
void user_numforms_free(user_numforms_t *map)
Delete user_numforms_t instance.
Definition hexrays.hpp:9881
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:10480
void hexapi install_optblock_handler(optblock_t *opt)
Install a block level custom optimizer.
Definition hexrays.hpp:11771
cexpr_t *hexapi make_ref(cexpr_t *e)
Create a reference.
Definition hexrays.hpp:13476
THREAD_SAFE bool is_mcode_convertible_to_set(mcode_t mcode)
Definition hexrays.hpp:721
THREAD_SAFE bool is_mcode_j1(mcode_t mcode)
Definition hexrays.hpp:715
qvector< ivlset_t > array_of_ivlsets
Definition hexrays.hpp:2080
boundaries_iterator_t boundaries_next(boundaries_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10825
THREAD_SAFE bool is_may_access(maymust_t maymust)
Definition hexrays.hpp:501
void user_unions_erase(user_unions_t *map, user_unions_iterator_t p)
Erase current element from user_unions_t.
Definition hexrays.hpp:10514
number_format_t & user_numforms_second(user_numforms_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:9801
DEPRECATED 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:13816
void user_unions_free(user_unions_t *map)
Delete user_unions_t instance.
Definition hexrays.hpp:10535
bool is_logical(ctype_t op)
Is logical operator?
Definition hexrays.hpp:6476
qmap< ea_t, cinsnptrvec_t > eamap_t
Definition hexrays.hpp:7865
bool hexapi install_microcode_filter(microcode_filter_t *filter, bool install=true)
register/unregister non-standard microcode generator
Definition hexrays.hpp:11419
lvar_locator_t const & lvar_mapping_first(lvar_mapping_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:9903
qvector< lvar_saved_info_t > lvar_saved_infos_t
Definition hexrays.hpp:1572
citem_cmt_t & user_cmts_second(user_cmts_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10128
THREAD_SAFE mcode_t hexapi negate_mcode_relation(mcode_t code)
Definition hexrays.hpp:11107
qvector< mop_t * > mopptrs_t
Definition hexrays.hpp:282
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:10244
void hexapi add_user_minsn(ea_t entry_ea, const user_minsn_t &uins, mba_maturity_t mmat)
Add a user-defined microinstruction action.
Definition hexrays.hpp:12554
const maymust_t EXCLUDE_VOLATILE
Definition hexrays.hpp:490
const mopt_t mop_f
list of arguments
Definition hexrays.hpp:2414
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:10689
void lvar_mapping_free(lvar_mapping_t *map)
Delete lvar_mapping_t instance.
Definition hexrays.hpp:9990
size_t block_chains_size(block_chains_t *set)
Get size of block_chains_t.
Definition hexrays.hpp:10957
ea_t const & udcall_map_first(udcall_map_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10012
void user_labels_free(user_labels_t *map)
Delete user_labels_t instance.
Definition hexrays.hpp:10644
size_t lvar_mapping_size(lvar_mapping_t *map)
Get size of lvar_mapping_t.
Definition hexrays.hpp:9983
bool is_unsigned_cmpop(cmpop_t cmpop)
Definition hexrays.hpp:347
void hexapi install_optinsn_handler(optinsn_t *opt)
Install an instruction level custom optimizer.
Definition hexrays.hpp:11758
cexpr_t *hexapi dereference(cexpr_t *e, size_t ptrsize, bool is_flt=false)
Dereference a pointer.
Definition hexrays.hpp:13482
const mreg_t mr_none
Definition hexrays.hpp:816
void user_iflags_free(user_iflags_t *map)
Delete user_iflags_t instance.
Definition hexrays.hpp:10317
bool rename_lvar(ea_t func_ea, const char *oldname, const char *newname)
Rename a local variable.
Definition hexrays.hpp:1716
qrefcnt_t< cfunc_t > cfuncptr_t
Definition hexrays.hpp:286
cfuncptr_t decompile_function(ea_t func_ea, hexrays_failure_t *hf=nullptr, int decomp_flags=0)
Decompile a function (ea-based variant).
Definition hexrays.hpp:8210
qvector< cblock_pos_t > cblock_posvec_t
Definition hexrays.hpp:7394
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:10262
void user_labels_erase(user_labels_t *map, user_labels_iterator_t p)
Erase current element from user_labels_t.
Definition hexrays.hpp:10623
THREAD_SAFE bool hexapi mcode_modifies_d(mcode_t mcode)
Definition hexrays.hpp:11131
const mreg_t mr_cc
Definition hexrays.hpp:823
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:9917
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:9935
qvector< hexwarn_t > hexwarns_t
Definition hexrays.hpp:4872
user_numforms_t *hexapi restore_user_numforms(ea_t func_ea)
Restore user defined number formats from the database.
Definition hexrays.hpp:13542
eamap_t * eamap_new()
Create a new eamap_t instance.
Definition hexrays.hpp:10760
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:10918
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:9926
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:13512
void user_casts_erase(user_casts_t *map, user_casts_iterator_t p)
Erase current element from user_casts_t.
Definition hexrays.hpp:10405
cmpop_t
Definition hexrays.hpp:335
@ CMP_A
Definition hexrays.hpp:340
@ CMP_GT
Definition hexrays.hpp:342
@ CMP_LT
Definition hexrays.hpp:344
@ CMP_NZ
Definition hexrays.hpp:336
@ CMP_GE
Definition hexrays.hpp:343
@ CMP_LE
Definition hexrays.hpp:345
@ CMP_B
Definition hexrays.hpp:339
@ CMP_Z
Definition hexrays.hpp:337
@ CMP_BE
Definition hexrays.hpp:341
@ CMP_AE
Definition hexrays.hpp:338
qvector< minsn_t * > minsnptrs_t
Definition hexrays.hpp:281
bool op_uses_x(ctype_t op)
Does operator use the 'x' field of cexpr_t?
Definition hexrays.hpp:6418
qmap< treeloc_t, citem_cmt_t > user_cmts_t
Definition hexrays.hpp:6658
const maymust_t ONE_ACCESS_TYPE
Definition hexrays.hpp:478
citem_locator_t const & user_iflags_first(user_iflags_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10230
bool is_cmpop_without_eq(cmpop_t cmpop)
Definition hexrays.hpp:362
const maymust_t MUST_ACCESS
Definition hexrays.hpp:473
const uvlr_t MAX_VLR_VALUE
Definition hexrays.hpp:310
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:10471
carglist_t * args
Definition hexrays.hpp:7720
const maymust_t WITH_ASSERTS
Definition hexrays.hpp:488
bool hexapi locate_lvar(lvar_locator_t *out, ea_t func_ea, const char *varname)
Find a variable by name.
Definition hexrays.hpp:11389
user_cmts_t * user_cmts_new()
Create a new user_cmts_t instance.
Definition hexrays.hpp:10215
qvector< cinsn_t * > cinsnptrvec_t
Vector of pointers to statements.
Definition hexrays.hpp:7116
user_casts_t *hexapi restore_user_casts(ea_t func_ea)
Restore user defined casts from the database.
Definition hexrays.hpp:13524
const mopt_t mop_c
mcases
Definition hexrays.hpp:2418
udcall_t & udcall_map_second(udcall_map_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10019
qvector< lvar_locator_t > lvar_locators
Definition hexrays.hpp:1219
block_chains_t * block_chains_new()
Create a new block_chains_t instance.
Definition hexrays.hpp:10971
void term_hexrays_plugin()
Stop working with hex-rays decompiler.
Definition hexrays.hpp:9779
mblock_type_t
Basic block types.
Definition hexrays.hpp:4309
@ BLT_NONE
unknown block type
Definition hexrays.hpp:4310
@ BLT_XTRN
external block (out of function address)
Definition hexrays.hpp:4316
@ BLT_STOP
stops execution regularly (must be the last block)
Definition hexrays.hpp:4311
@ BLT_2WAY
passes execution to two blocks (conditional jump)
Definition hexrays.hpp:4314
@ BLT_0WAY
does not have successors (tail is a noret function)
Definition hexrays.hpp:4312
@ BLT_1WAY
passes execution to one block (regular or goto block)
Definition hexrays.hpp:4313
@ BLT_NWAY
passes execution to many blocks (switch idiom)
Definition hexrays.hpp:4315
const mreg_t mr_of
Definition hexrays.hpp:820
qset< voff_t > voff_set_t
Definition hexrays.hpp:261
qmap< operand_locator_t, number_format_t > user_numforms_t
Definition hexrays.hpp:911
AS_PRINTF(3, 0) cexpr_t *hexapi vcreate_helper(bool standalone
Create a helper object.
Definition hexrays.hpp:12692
ctype_t hexapi asgop_revert(ctype_t cop)
Convert assignment operator into plain operator.
Definition hexrays.hpp:13026
size_t user_labels_size(user_labels_t *map)
Get size of user_labels_t.
Definition hexrays.hpp:10637
THREAD_SAFE bool is_mcode_divmod(mcode_t op)
Definition hexrays.hpp:747
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:10909
bool hexapi decompile_many(const char *outfile, const eavec_t *funcaddrs, int flags)
Batch decompilation.
Definition hexrays.hpp:12972
qvector< ccatch_t > ccatchvec_t
Definition hexrays.hpp:7325
void boundaries_erase(boundaries_t *map, boundaries_iterator_t p)
Erase current element from boundaries_t.
Definition hexrays.hpp:10841
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:10798
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:10135
tinfo_t & user_casts_second(user_casts_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10346
const svlr_t MAX_VLR_SVALUE
Definition hexrays.hpp:311
void hexapi hexrays_free(void *ptr)
Definition hexrays.hpp:10983
vdui_t *hexapi get_widget_vdui(TWidget *f)
Get the vdui_t instance associated to the TWidget.
Definition hexrays.hpp:12966
const mopt_t mop_v
global variable
Definition hexrays.hpp:2412
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:10271
GCC_DIAG_OFF(deprecated-declarations) MSC_DIAG_OFF(4996) struct mba_item_iterator_t
Item iterator for mba_ranges_t.
Definition hexrays.hpp:5030
int maymust_t
Definition hexrays.hpp:470
user_labels_iterator_t user_labels_prev(user_labels_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10615
THREAD_SAFE bool is_mcode_set(mcode_t mcode)
Definition hexrays.hpp:711
user_casts_t * user_casts_new()
Create a new user_casts_t instance.
Definition hexrays.hpp:10433
user_casts_iterator_t user_casts_next(user_casts_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10389
user_iflags_iterator_t user_iflags_prev(user_iflags_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10288
bool is_multiplicative(ctype_t op)
Is multiplicative operator?
Definition hexrays.hpp:6457
citem_pointers_t parents_t
Definition hexrays.hpp:6563
void udcall_map_erase(udcall_map_t *map, udcall_map_iterator_t p)
Erase current element from udcall_map_t.
Definition hexrays.hpp:10078
cinsn_t *hexapi new_block()
Create a new block-statement.
Definition hexrays.hpp:13452
mba_maturity_t
Microcode maturity levels.
Definition hexrays.hpp:4877
@ MMAT_LOCOPT
local optimization of each basic block is complete.
Definition hexrays.hpp:4881
@ MMAT_LVARS
allocated local variables
Definition hexrays.hpp:4887
@ MMAT_CALLS
detected call arguments. see also hxe_calls_done
Definition hexrays.hpp:4883
@ MMAT_GLBOPT1
performed the first pass of global optimization
Definition hexrays.hpp:4884
@ MMAT_PREOPTIMIZED
preoptimized pass is complete
Definition hexrays.hpp:4880
@ MMAT_ZERO
microcode does not exist
Definition hexrays.hpp:4878
@ MMAT_GLBOPT3
completed all global optimization. microcode is fixed now.
Definition hexrays.hpp:4886
@ MMAT_GLBOPT2
most global optimization passes are done
Definition hexrays.hpp:4885
@ MMAT_GENERATED
generated microcode
Definition hexrays.hpp:4879
THREAD_SAFE bool has_mcode_seloff(mcode_t op)
Definition hexrays.hpp:752
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:11371
ctype_t hexapi asgop(ctype_t cop)
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd.
Definition hexrays.hpp:13020
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:11395
int64 svlr_t
Definition hexrays.hpp:308
bool hexapi remove_optinsn_handler(optinsn_t *opt)
Remove an instruction level custom optimizer.
Definition hexrays.hpp:11764
void eamap_free(eamap_t *map)
Delete eamap_t instance.
Definition hexrays.hpp:10753
warnid_t
Warning ids.
Definition hexrays.hpp:4786
@ WARN_OPT_VALRNG4
56 the cases s were optimized away because s
Definition hexrays.hpp:4843
@ WARN_OPT_VALRNG2
52 mask 0xX is shortened because s <= 0xX"
Definition hexrays.hpp:4839
@ WARN_GUESSED_TYPE
9 using guessed type s;
Definition hexrays.hpp:4796
@ WARN_BAD_STROFF
33 user specified stroff has not been processed: s
Definition hexrays.hpp:4820
@ WARN_OPT_USELESS_JCND
54 simplified comparisons for 's': s became s
Definition hexrays.hpp:4841
@ WARN_ODD_INPUT_REG
15 odd input register s
Definition hexrays.hpp:4802
@ WARN_ILL_FUNCTYPE
2 invalid function type 's' has been ignored
Definition hexrays.hpp:4789
@ WARN_ILL_PURGED
1 odd caller purged bytes d, correcting
Definition hexrays.hpp:4788
@ WARN_UNINITED_REG
28 reference to an uninitialized register has been removed: s
Definition hexrays.hpp:4815
@ WARN_ODD_ADDR_USE
16 odd use of a variable address
Definition hexrays.hpp:4803
@ WARN_CBUILD_LOOPS
13 too many cbuild loops
Definition hexrays.hpp:4800
@ WARN_BAD_VARSIZE
34 inconsistent variable size for 's'
Definition hexrays.hpp:4821
@ WARN_VARARG_MANY
5 too many varargs, some ignored
Definition hexrays.hpp:4792
@ WARN_MAX
may be used in notes as a placeholder when the warning id is not available
Definition hexrays.hpp:4848
@ WARN_UNBALANCED_STACK
51 unbalanced stack, ignored a potential tail call
Definition hexrays.hpp:4838
@ WARN_FRAG_LVAR
26 fragmented variable at s may be wrong
Definition hexrays.hpp:4813
@ WARN_BAD_PURGED
12 inconsistent function type and number of purged bytes
Definition hexrays.hpp:4799
@ WARN_UNSUPP_REG
35 unsupported processor register 's'
Definition hexrays.hpp:4822
@ WARN_VARARG_REGS
0 cannot handle register arguments in vararg function, discarded them
Definition hexrays.hpp:4787
@ WARN_MISSED_SWITCH
39 wrong markup of switch jump, skipped it
Definition hexrays.hpp:4826
@ WARN_UNDEF_LVAR
42 variable 's' is possibly undefined
Definition hexrays.hpp:4829
@ WARN_RET_LOCREF
47 returning address of temporary local variable 's'
Definition hexrays.hpp:4834
@ WARN_BAD_RETVAR
25 wrong return variable
Definition hexrays.hpp:4812
@ WARN_SUBFRAME_OVERFLOW
55 call arguments overflow the function chunk frame
Definition hexrays.hpp:4842
@ WARN_CR_NOFIELD
31 CONTAINING_RECORD: no field 's' in struct 's' at d
Definition hexrays.hpp:4818
@ WARN_BAD_CALL_SP
38 bad sp value at call
Definition hexrays.hpp:4825
@ WARN_WRITE_CONST
24 write access to const memory at a has been detected
Definition hexrays.hpp:4811
@ WARN_WIDEN_CHAINS
11 failed to widen chains
Definition hexrays.hpp:4798
@ WARN_FRAME_ACCESS
57 illegal frame access
Definition hexrays.hpp:4844
@ WARN_ILL_FPU_STACK
18 inconsistent fpu stack
Definition hexrays.hpp:4805
@ WARN_BAD_EHINFO
58 inconsistent exception info
Definition hexrays.hpp:4845
@ WARN_SELFREF_PROP
19 self-referencing variable has been detected
Definition hexrays.hpp:4806
@ WARN_WRONG_VA_OFF
30 wrong offset of va_list variable
Definition hexrays.hpp:4817
@ WARN_BAD_STKPNT
41 wrong sp change point
Definition hexrays.hpp:4828
@ WARN_OPT_VALRNG
46 conditional instruction was optimized away because s
Definition hexrays.hpp:4833
@ WARN_BAD_SHADOW
45 ignored the value written to the shadow area of the succeeding call
Definition hexrays.hpp:4832
@ WARN_NO_SAVE_REST
14 could not find valid save-restore pair for s
Definition hexrays.hpp:4801
@ WARN_BAD_INSN
49 bad instruction
Definition hexrays.hpp:4836
@ WARN_ILL_ELLIPSIS
8 erroneously detected ellipsis type has been ignored
Definition hexrays.hpp:4795
@ WARN_EXP_LINVAR
10 failed to expand a linear variable
Definition hexrays.hpp:4797
@ WARN_VARARG_NOSTK
4 call vararg without local stack
Definition hexrays.hpp:4791
@ WARN_MUST_RET_FP
17 function return type is incorrect (must be floating point)
Definition hexrays.hpp:4804
@ WARN_JUMPOUT
43 control flows out of bounds
Definition hexrays.hpp:4830
@ WARN_BAD_FIELD_TYPE
23 incorrect structure member type for s::s, ignored
Definition hexrays.hpp:4810
@ WARN_WOULD_OVERLAP
20 variables would overlap: s
Definition hexrays.hpp:4807
@ WARN_FIXED_INSN
29 fixed broken insn
Definition hexrays.hpp:4816
@ WARN_VARARG_TCAL
3 cannot handle tail call to vararg
Definition hexrays.hpp:4790
@ WARN_ODD_ABI
50 encountered odd instruction for the current ABI
Definition hexrays.hpp:4837
@ WARN_HUGE_STKOFF
27 exceedingly huge offset into the stack frame
Definition hexrays.hpp:4814
@ WARN_ADDR_OUTARGS
6 cannot handle address arithmetics in outgoing argument area of stack frame – unused
Definition hexrays.hpp:4793
@ WARN_MAX_ARGS
22 too many input arguments, some ignored
Definition hexrays.hpp:4809
@ WARN_ARRAY_INARG
21 array has been used for an input argument
Definition hexrays.hpp:4808
@ WARN_UNALIGNED_ARG
36 unaligned function argument 's'
Definition hexrays.hpp:4823
@ WARN_CR_BADOFF
32 CONTAINING_RECORD: too small offset d for struct 's'
Definition hexrays.hpp:4819
@ WARN_BAD_SP
40 positive sp value a has been found
Definition hexrays.hpp:4827
@ WARN_OPT_VALRNG3
53 masking with 0XX was optimized away because s <= 0xX
Definition hexrays.hpp:4840
@ WARN_DALVIK_ENUM
60 could not fully analyze enum <clinit>; constant order or bodies may be incomplete
Definition hexrays.hpp:4847
@ WARN_INCOMPAT_TYPE
59 incompatible types for 's': expected s but encountered s
Definition hexrays.hpp:4846
@ WARN_BAD_VALRNG
44 values range analysis failed
Definition hexrays.hpp:4831
@ WARN_DEP_UNK_CALLS
7 found interdependent unknown calls
Definition hexrays.hpp:4794
@ WARN_BAD_STD_TYPE
37 corrupted or unexisting local type 's'
Definition hexrays.hpp:4824
@ WARN_BAD_MAPDST
48 too short map destination 's' for variable 's'
Definition hexrays.hpp:4835
treeloc_t const & user_cmts_first(user_cmts_iterator_t p)
Get reference to the current map key.
Definition hexrays.hpp:10121
void block_chains_erase(block_chains_t *set, block_chains_iterator_t p)
Erase current element from block_chains_t.
Definition hexrays.hpp:10943
const int cc_count
Definition hexrays.hpp:822
block_chains_iterator_t block_chains_prev(block_chains_iterator_t p)
Move to the previous element.
Definition hexrays.hpp:10935
qset< minsn_t * > minsn_ptr_set_t
Definition hexrays.hpp:279
user_cmts_t *hexapi restore_user_cmts(ea_t func_ea)
Restore user defined comments from the database.
Definition hexrays.hpp:13536
const cmt_type_t CMT_ALL
All comments.
Definition hexrays.hpp:8724
void user_unions_clear(user_unions_t *map)
Clear user_unions_t.
Definition hexrays.hpp:10521
const size_t bitset_align
Definition hexrays.hpp:1836
const mopt_t mop_h
helper function
Definition hexrays.hpp:2417
THREAD_SAFE bool is_mcode_set1(mcode_t mcode)
Definition hexrays.hpp:713
void lvar_mapping_erase(lvar_mapping_t *map, lvar_mapping_iterator_t p)
Erase current element from lvar_mapping_t.
Definition hexrays.hpp:9969
const char *hexapi get_hexrays_version()
Get decompiler version.
Definition hexrays.hpp:12948
bool is_binary(ctype_t op)
Is binary operator?
Definition hexrays.hpp:6424
bool is_cmpop_with_eq(cmpop_t cmpop)
Definition hexrays.hpp:355
lvar_mapping_t * lvar_mapping_new()
Create a new lvar_mapping_t instance.
Definition hexrays.hpp:9997
bool hexapi is_kreg(mreg_t r)
Is a kernel register?
Definition hexrays.hpp:11734
udcall_map_t * udcall_map_new()
Create a new udcall_map_t instance.
Definition hexrays.hpp:10106
void hexapi send_database(const hexrays_failure_t &err, bool silent)
Send the database to Hex-Rays.
Definition hexrays.hpp:12978
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:11401
user_labels_iterator_t user_labels_next(user_labels_iterator_t p)
Move to the next element.
Definition hexrays.hpp:10607
qstring & user_labels_second(user_labels_iterator_t p)
Get reference to the current map value.
Definition hexrays.hpp:10564
THREAD_SAFE bool is_mcode_call(mcode_t mcode)
Definition hexrays.hpp:723
THREAD_SAFE mcode_t hexapi get_signed_mcode(mcode_t code)
Definition hexrays.hpp:11119
Contains the inf structure definition and some functions common to the whole IDA project.
uchar inf_get_cc_size_i()
Definition ida.hpp:1017
uint32 callcnv_t
Definition ida.hpp:75
Contains definition of the interface to IDP modules.
qvector< reg_info_t > reginfovec_t
vector of register info objects
Definition idp.hpp:2966
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:1399
int nbytes
Definition kernwin.hpp:3037
bool ok
Definition kernwin.hpp:7410
uval_t uval_t
Definition kernwin.hpp:1926
callui(ui_mbox, mbox_replace, format, va)
@ ui_broadcast
cb: broadcast call
Definition kernwin.hpp:397
asize_t size
Definition kernwin.hpp:6701
QT::QWidget TWidget
Definition kernwin.hpp:2075
qvector< simpleline_t > strvec_t
A collection of simple lines to populate a custom view.
Definition kernwin.hpp:1765
void(idaapi *range_marker)(ea_t ea
Pointer to range marker function (for idaviews and hexviews) This pointer is initialized by setup_ran...
MSC_DIAG_OFF(4826) struct cast_t
Preprocessor cast.
Definition lex.hpp:78
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:1312
THREAD_SAFE constexpr bool contains(uval_t off1, asize_t s1, uval_t off)
Does (off1,s1) contain off?
Definition pro.h:1472
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:1467
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:1462
This is the first header included in the IDA project.
idaman size_t const char time_t t
Definition pro.h:606
unsigned short uint16
unsigned 16 bit value
Definition pro.h:350
int bool
Definition pro.h:333
unsigned int uint32
unsigned 32 bit value
Definition pro.h:352
qvector< int > intvec_t
vector of integers
Definition pro.h:2839
uint64 asize_t
Definition pro.h:427
constexpr T make_mask(int count)
Make a mask of 'count' bits.
Definition pro.h:1524
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:1494
uint8 op_dtype_t
Definition pro.h:464
adiff_t sval_t
signed value used by the processor.
Definition pro.h:450
short int16
signed 16 bit value
Definition pro.h:349
uint64 ea_t
Definition pro.h:425
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:1489
uint32 flags_t
32-bit flags for each address
Definition pro.h:5105
int int32
signed 32 bit value
Definition pro.h:351
unsigned char uchar
unsigned 8 bit value
Definition pro.h:341
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:1728
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:2209
unsigned int uint
unsigned 32 bit value
Definition pro.h:343
int lexcompare(const T &a, const T &b)
Standard lexical comparison.
Definition pro.h:2964
qvector< ea_t > eavec_t
vector of addresses
Definition pro.h:2838
uint64 flags64_t
64-bit flags for each address
Definition pro.h:5106
ptrdiff_t ssize_t
Signed size_t - used to check for size overflows when the counter becomes negative.
Definition pro.h:385
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:1367
void idaapi setflag(T &where, U bit, bool cnd)
Set a 'bit' in 'where' if 'value' is not zero.
Definition pro.h:1530
unsigned char uint8
unsigned 8 bit value
Definition pro.h:348
char int8
signed 8 bit value
Definition pro.h:346
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:1484
_qstring< char > qstring
regular string
Definition pro.h:3771
int compare(const T &a, const T &b)
Definition pro.h:4607
unsigned int
Definition pronet.h:99
qtree_detail::qmap< Key, Value, Compare, ida_alloc_policy, true > qmap
Definition qmap.hpp:9
constexpr bool operator<(qpair< F, S > const &a, qpair< F, S > const &b)
Definition qpair.hpp:108
constexpr bool operator!=(qpair< F, S > const &a, qpair< F, S > const &b)
Definition qpair.hpp:103
void swap(qpair< F, S > &a, qpair< F, S > &b) noexcept(noexcept(a.swap(b)))
Definition qpair.hpp:78
constexpr bool operator==(qpair< F, S > const &a, qpair< F, S > const &b)
Definition qpair.hpp:98
qtree_detail::qset< Value, Compare, ida_alloc_policy, true > qset
Definition qset.hpp:9
Definition hexrays.hpp:6688
bit_bound_t(int n=0, int s=0)
Definition hexrays.hpp:6697
int16 nbits
Definition hexrays.hpp:6689
int16 sbits
Definition hexrays.hpp:6691
Definition hexrays.hpp:10876
bool operator==(const block_chains_iterator_t &p) const
Definition hexrays.hpp:10878
iterator_word x
Definition hexrays.hpp:10877
bool operator!=(const block_chains_iterator_t &p) const
Definition hexrays.hpp:10879
Definition hexrays.hpp:10767
bool operator!=(const boundaries_iterator_t &p) const
Definition hexrays.hpp:10770
iterator_word x
Definition hexrays.hpp:10768
bool operator==(const boundaries_iterator_t &p) const
Definition hexrays.hpp:10769
Function argument.
Definition hexrays.hpp:7229
tinfo_t formal_type
formal parameter type (if known)
Definition hexrays.hpp:7231
bool is_vararg
is a vararg (matches ...)
Definition hexrays.hpp:7230
void consume_cexpr(cexpr_t *e)
Definition hexrays.hpp:7232
DECLARE_COMPARISONS(carg_t)
Definition hexrays.hpp:7237
Function argument list.
Definition hexrays.hpp:7246
tinfo_t functype
function object type
Definition hexrays.hpp:7247
funcrole_t role
function role (propagated from microcode)
Definition hexrays.hpp:7252
void print(qstring *vout, const cfunc_t *func) const
carglist_t()
Definition hexrays.hpp:7253
int print(int curpos, vc_printer_t &vp) const
int flags
call flags
Definition hexrays.hpp:7248
DECLARE_COMPARISONS(carglist_t)
carglist_t(const tinfo_t &ftype, int fl=0)
Definition hexrays.hpp:7254
asm statement
Definition hexrays.hpp:7106
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:7107
bool one_insn() const
Definition hexrays.hpp:7111
casm_t(const casm_t &r)
Definition hexrays.hpp:7108
Catch expression.
Definition hexrays.hpp:7289
bool is_finally() const
Definition hexrays.hpp:7301
void swap(catchexpr_t &r)
Definition hexrays.hpp:7296
void convert_to_catch_all()
Definition hexrays.hpp:7303
cexpr_t obj
the caught object.
Definition hexrays.hpp:7290
DECLARE_COMPARISONS(catchexpr_t)
bool is_catch_all() const
Definition hexrays.hpp:7302
void convert_to_finally()
Definition hexrays.hpp:7304
qstring fake_type
if not empty, type of the caught object.
Definition hexrays.hpp:7292
Additional position information for cblocks.
Definition hexrays.hpp:7386
cinsn_t * insn() const
Definition hexrays.hpp:7390
cinsn_t * prev_insn()
Definition hexrays.hpp:7391
cblock_t::iterator p
Definition hexrays.hpp:7388
bool is_first_insn() const
Definition hexrays.hpp:7389
cblock_t * blk
Definition hexrays.hpp:7387
Compound statement (curly braces)
Definition hexrays.hpp:7222
bool is_ordinary_flow() const
Definition hexrays.hpp:8357
DECLARE_COMPARISONS(cblock_t)
Switch case. Usually cinsn_t is a block.
Definition hexrays.hpp:7262
uint64vec_t values
List of case values.
Definition hexrays.hpp:7263
DECLARE_COMPARISONS(ccase_t)
const uint64 & value(int i) const
Definition hexrays.hpp:7268
size_t size() const
Definition hexrays.hpp:7267
void set_insn(cinsn_t *i)
Vector of switch cases.
Definition hexrays.hpp:7274
DECLARE_COMPARISONS(ccases_t)
int find_value(uint64 v) const
Catch clause: "catch ( type obj )".
Definition hexrays.hpp:7311
void swap(ccatch_t &r)
Definition hexrays.hpp:7318
bool is_finally() const
Definition hexrays.hpp:7315
DECLARE_COMPARISONS(ccatch_t)
bool is_catch_all() const
Definition hexrays.hpp:7314
void convert_to_catch_all()
Definition hexrays.hpp:7316
catchexprs_t exprs
Definition hexrays.hpp:7312
void convert_to_finally()
Definition hexrays.hpp:7317
Definition hexrays.hpp:5947
ea_t ea
Definition hexrays.hpp:5949
cdg_insn_iterator_t(const cdg_insn_iterator_t &r)=default
const mba_t * mba
Definition hexrays.hpp:5948
ea_t end
Definition hexrays.hpp:5950
cdg_insn_iterator_t(const mba_t *mba_)
Definition hexrays.hpp:5957
bool is_severed_dslot() const
Definition hexrays.hpp:5965
ea_t severed_branch
Definition hexrays.hpp:5953
insn_t dslot_insn
Definition hexrays.hpp:5952
void start(const range_t &rng)
Definition hexrays.hpp:5966
bool dslot_with_xrefs() const
Definition hexrays.hpp:5963
cdg_insn_iterator_t & operator=(const cdg_insn_iterator_t &r)=default
bool ok() const
Definition hexrays.hpp:5961
ea_t dslot
Definition hexrays.hpp:5951
bool has_dslot() const
Definition hexrays.hpp:5962
bool is_likely_dslot
Definition hexrays.hpp:5955
merror_t hexapi next(insn_t *ins)
Definition hexrays.hpp:12918
Do-loop.
Definition hexrays.hpp:7085
DECLARE_COMPARISONS(cdo_t)
Statement with an expression.
Definition hexrays.hpp:7029
cexpr_t expr
Expression of the statement.
Definition hexrays.hpp:7030
Ctree item: expression.
Definition hexrays.hpp:6750
type_sign_t get_type_sign() const
Get expression sign.
Definition hexrays.hpp:6912
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:13154
int ptrsize
memory access size (used for cot_ptr, cot_memptr)
Definition hexrays.hpp:6777
uint32 exflags
Expression attributes
Definition hexrays.hpp:6786
~cexpr_t()
Definition hexrays.hpp:6843
bool contains_comma(int times=1) const
Does the expression contain a comma operator?
Definition hexrays.hpp:6892
void swap(cexpr_t &r)
Definition hexrays.hpp:6830
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:13106
cexpr_t & operator=(const cexpr_t &r)
Definition hexrays.hpp:6840
bool is_type_unsigned() const
Is expression unsigned?
Definition hexrays.hpp:6914
void hexapi cleanup()
Cleanup the expression.
Definition hexrays.hpp:13112
bool is_nice_cond() const
Is nice condition?
Definition hexrays.hpp:6904
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:6910
fnumber_t * fpc
used for cot_fnum
Definition hexrays.hpp:6754
cexpr_t(const cexpr_t &r)
Definition hexrays.hpp:6829
carglist_t * a
argument list (used for cot_call)
Definition hexrays.hpp:6770
bool hexapi requires_lvalue(const cexpr_t *child) const
Check if the expression requires an lvalue.
Definition hexrays.hpp:13168
void set_type_partial(bool val=true)
Definition hexrays.hpp:6817
uint64 numval() const
Get numeric value of the expression.
Definition hexrays.hpp:6938
bool is_zero_const() const
Check if the expression is a zero.
Definition hexrays.hpp:6964
void hexapi print1(qstring *vout, const cfunc_t *func) const
Print expression into one line.
Definition hexrays.hpp:13124
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:6984
void set_vftable()
Definition hexrays.hpp:6815
void set_user_cast()
Definition hexrays.hpp:6816
const cexpr_t * find_op(ctype_t _op) const
Find the child with the specified operator.
Definition hexrays.hpp:6993
bool is_type_signed() const
Is expression signed?
Definition hexrays.hpp:6916
char * string
utf8 string constant, user representation (used for cot_str)
Definition hexrays.hpp:6783
bool is_vftable() const
Definition hexrays.hpp:6810
bool is_negative_const() const
Check if the expression is a negative number.
Definition hexrays.hpp:6949
bool is_nice_expr() const
Is nice expression?
Definition hexrays.hpp:6901
const cexpr_t * find_num_op() const
Find the operand with a numeric value.
Definition hexrays.hpp:7007
cinsn_t * insn
an embedded statement, they are prohibited at the final maturity stage (CMAT_FINAL)
Definition hexrays.hpp:6780
bool is_non_negative_const() const
Check if the expression is a non-negative number.
Definition hexrays.hpp:6954
bool is_const_value(uint64 _v) const
Check if the expression is a number with the specified value.
Definition hexrays.hpp:6944
void hexapi calc_type(bool recursive)
Calculate the type of the expression.
Definition hexrays.hpp:13130
bool is_type_partial() const
Definition hexrays.hpp:6807
cnumber_t * n
used for cot_num
Definition hexrays.hpp:6753
bool hexapi equal_effect(const cexpr_t &r) const
Compare two expressions.
Definition hexrays.hpp:13136
ea_t obj_ea
used for cot_obj
Definition hexrays.hpp:6760
cexpr_t * y
the second operand of the expression
Definition hexrays.hpp:6769
bool is_call_object_of(const citem_t *parent) const
Is call object?
Definition hexrays.hpp:6907
const cexpr_t * theother(const cexpr_t *what) const
Get the other operand.
Definition hexrays.hpp:7015
bool contains_insn_or_label() const
Does the expression contain an embedded statement operator or a label?
Definition hexrays.hpp:6896
cexpr_t &hexapi assign(const cexpr_t &r)
Definition hexrays.hpp:13094
bool is_odd_lvalue() const
Definition hexrays.hpp:6804
const char *hexapi dstr() const
Definition hexrays.hpp:13186
bool is_undef_val() const
Definition hexrays.hpp:6808
bool hexapi is_child_of(const citem_t *parent) const
Verify if the specified item is our parent.
Definition hexrays.hpp:13142
bool contains_insn(int times=1) const
Does the expression contain an embedded statement operator?
Definition hexrays.hpp:6894
cexpr_t()
Definition hexrays.hpp:6825
char * helper
helper name (used for cot_helper)
Definition hexrays.hpp:6782
bool is_jumpout() const
Definition hexrays.hpp:6809
var_ref_t v
used for cot_var
Definition hexrays.hpp:6759
DECLARE_COMPARISONS(cexpr_t)
bool hexapi has_side_effects() const
Check if the expression has side effects.
Definition hexrays.hpp:13174
cexpr_t * z
the third operand of the expression
Definition hexrays.hpp:6776
int hexapi get_low_nbit_bound() const
Get min number of bits that are certainly required to represent the expression.
Definition hexrays.hpp:13162
bool is_cstr() const
Definition hexrays.hpp:6806
cexpr_t * theother(const cexpr_t *what)
Definition hexrays.hpp:7016
bool hexapi contains_operator(ctype_t needed_op, int times=1) const
Check if the expression contains the specified operator.
Definition hexrays.hpp:13148
bool is_fpop() const
Definition hexrays.hpp:6805
bool cpadone() const
Pointer arithmetic correction done for this expression?
Definition hexrays.hpp:6803
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:6959
uint32 m
member offset (used for cot_memptr, cot_memref) for unions, the member number
Definition hexrays.hpp:6771
void set_cpadone()
Definition hexrays.hpp:6814
cexpr_t * x
the first operand of the expression
Definition hexrays.hpp:6766
cexpr_t * find_num_op()
Definition hexrays.hpp:7008
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:6898
tinfo_t type
expression type. must be carefully maintained
Definition hexrays.hpp:6785
bool get_1num_op(cexpr_t **o1, cexpr_t **o2)
Get pointers to operands.
Definition hexrays.hpp:8327
cexpr_t(ctype_t cexpr_op, cexpr_t *_x, cexpr_t *_y=nullptr, cexpr_t *_z=nullptr)
Definition hexrays.hpp:6826
cexpr_t * find_op(ctype_t _op)
Definition hexrays.hpp:7001
void hexapi put_number(cfunc_t *func, uint64 value, size_t nbytes, type_sign_t sign=no_sign)
Assign a number to the expression.
Definition hexrays.hpp:13118
int refwidth
how many bytes are accessed? (-1: none)
Definition hexrays.hpp:6762
cexpr_t(mba_t *mba, const lvar_t &v)
bool get_const_value(uint64 *out) const
Get expression value.
Definition hexrays.hpp:6970
bool is_user_cast() const
Definition hexrays.hpp:6811
bool hexapi maybe_ptr() const
May the expression be a pointer?
Definition hexrays.hpp:13180
For-loop.
Definition hexrays.hpp:7071
cexpr_t init
Initialization expression.
Definition hexrays.hpp:7072
cexpr_t step
Step expression.
Definition hexrays.hpp:7073
DECLARE_COMPARISONS(cfor_t)
Class to traverse the whole function.
Definition hexrays.hpp:7541
cfunc_parentee_t(cfunc_t *f, bool post=false)
Definition hexrays.hpp:7543
cfunc_t * func
Pointer to current function.
Definition hexrays.hpp:7542
bool hexapi calc_rvalue_type(tinfo_t *target, const cexpr_t *e)
Calculate rvalue type.
Definition hexrays.hpp:13396
Decompiled function. Decompilation result is kept here.
Definition hexrays.hpp:7874
void hexapi set_user_union_selection(ea_t ea, const intvec_t &path)
Set a union field selection.
Definition hexrays.hpp:13664
user_cmts_t * user_cmts
user-defined comments.
Definition hexrays.hpp:7883
user_unions_t * user_unions
user-defined union field selections.
Definition hexrays.hpp:7886
const char *hexapi get_user_cmt(const treeloc_t &loc, cmt_retrieval_type_t rt) const
Retrieve a user defined comment.
Definition hexrays.hpp:13622
void hexapi recalc_item_addresses()
Recalculate item adresses.
Definition hexrays.hpp:13756
void hexapi remove_unused_labels()
Remove unused labels.
Definition hexrays.hpp:13610
strvec_t sv
decompilation output: function text. use get_pseudocode
Definition hexrays.hpp:7903
static WARN_UNUSED_RESULT cfunc_t *hexapi deserialize(mba_t *mba, const uchar *bytes, size_t nbytes)
Deserialize a byte sequence into cfunc_t.
Definition hexrays.hpp:13786
sval_t hexapi get_stkoff_delta()
Get stack offset delta.
Definition hexrays.hpp:13596
void hexapi print_func(vc_printer_t &vp) const
Print function text.
Definition hexrays.hpp:13578
const strvec_t &hexapi get_pseudocode()
Get pointer to decompilation output: the pseudocode.
Definition hexrays.hpp:13744
citem_pointers_t treeitems
vector of pointers to citem_t objects (nodes constituting the ctree)
Definition hexrays.hpp:7905
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:13720
user_iflags_t * user_iflags
user-defined item flags ctree item iflags bits
Definition hexrays.hpp:7885
user_casts_t * user_casts
user-defined casts.
Definition hexrays.hpp:7906
void hexapi set_user_iflags(const citem_locator_t &loc, int32 iflags)
Set citem iflags.
Definition hexrays.hpp:13640
int hdrlines
number of lines in the declaration area
Definition hexrays.hpp:7904
boundaries_t &hexapi get_boundaries()
Get pointer to map of instruction boundaries.
Definition hexrays.hpp:13738
hexwarns_t &hexapi get_warnings()
Get information about decompilation warnings.
Definition hexrays.hpp:13726
lvars_t *hexapi get_lvars()
Get vector of local variables.
Definition hexrays.hpp:13590
bool hexapi has_orphan_cmts() const
Check if there are orphan comments.
Definition hexrays.hpp:13646
void hexapi print_dcl(qstring *vout) const
Print function prototype.
Definition hexrays.hpp:13572
eamap_t * eamap
ea->insn map. use get_eamap
Definition hexrays.hpp:7901
void hexapi save_user_casts() const
Save user-defined casts into the database.
Definition hexrays.hpp:13700
user_numforms_t * numforms
user-defined number formats.
Definition hexrays.hpp:7884
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void hexapi build_c_tree()
Generate the function body.
ctree_maturity_t maturity
maturity level
Definition hexrays.hpp:7879
void hexapi save_user_labels() const
Save user-defined labels into the database.
Definition hexrays.hpp:13670
void hexapi save_user_unions() const
Save user-defined union field selections into the database.
Definition hexrays.hpp:13694
intvec_t & argidx
list of arguments (indexes into vars)
Definition hexrays.hpp:7878
boundaries_t * boundaries
map of instruction boundaries. use get_boundaries
Definition hexrays.hpp:7902
void hexapi set_user_cast(const citem_locator_t &loc, const tinfo_t &type)
Set a user-defined cast.
Definition hexrays.hpp:13714
int statebits
current cfunc_t state.
Definition hexrays.hpp:7895
citem_t *hexapi find_label(int label)
Find the label.
Definition hexrays.hpp:13604
user_labels_t * user_labels
user-defined labels.
Definition hexrays.hpp:7882
int refcnt
reference count to this object. use cfuncptr_t
Definition hexrays.hpp:7894
bool hexapi get_user_union_selection(ea_t ea, intvec_t *path)
Retrieve a user defined union field selection.
Definition hexrays.hpp:13658
void release()
Definition hexrays.hpp:7914
void hexapi save_user_iflags() const
Save user-defined iflags into the database.
Definition hexrays.hpp:13688
void hexapi refresh_func_ctext()
Refresh ctext after a ctree modification.
Definition hexrays.hpp:13750
void hexapi redirect_gotos(int from, int to)
Redirect all gotos targeting one label to another.
Definition hexrays.hpp:13616
char reserved[]
Definition hexrays.hpp:7909
int hexapi del_orphan_cmts()
Delete all orphan comments.
Definition hexrays.hpp:13652
void hexapi save_user_cmts() const
Save user-defined comments into the database.
Definition hexrays.hpp:13676
mba_t * mba
underlying microcode
Definition hexrays.hpp:7876
void hexapi set_user_cmt(const treeloc_t &loc, const char *cmt)
Set a user defined comment.
Definition hexrays.hpp:13628
ea_t entry_ea
function entry address
Definition hexrays.hpp:7875
bool hexapi find_item_coords(const citem_t *item, int *px, int *py)
Definition hexrays.hpp:13774
cinsn_t body
function body, must be a block
Definition hexrays.hpp:7877
const citem_t *hexapi find_addressable_item(const citem_t *i) const
Find the closest addressable ancestor of an item.
Definition hexrays.hpp:13762
eamap_t &hexapi get_eamap()
Get pointer to ea->insn map.
Definition hexrays.hpp:13732
bool hexapi gather_derefs(const ctree_item_t &ci, udt_type_data_t *udm=nullptr) const
Definition hexrays.hpp:13768
void hexapi verify(allow_unused_labels_t aul, bool even_without_debugger) const
Verify the ctree.
Definition hexrays.hpp:13566
bool hexapi serialize(bytevec_t *vout)
Serialize cfunc into a sequence of bytes.
Definition hexrays.hpp:13780
~cfunc_t()
Definition hexrays.hpp:7913
bool hexapi get_func_type(tinfo_t *type) const
Get the function type.
Definition hexrays.hpp:13584
bool locked() const
Definition hexrays.hpp:8085
void hexapi save_user_numforms() const
Save user-defined number formats into the database.
Definition hexrays.hpp:13682
tinfo_t hexapi get_user_cast(const citem_locator_t &loc) const
Retrieve a user-defined cast.
Definition hexrays.hpp:13706
int32 hexapi get_user_iflags(const citem_locator_t &loc) const
Retrieve citem iflags.
Definition hexrays.hpp:13634
Goto statement.
Definition hexrays.hpp:7097
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:7098
Chain visitor class.
Definition hexrays.hpp:3656
virtual ~chain_visitor_t()
Definition hexrays.hpp:3658
block_chains_t * parent
parent of the current chain
Definition hexrays.hpp:3657
virtual int idaapi visit_chain(int nblock, chain_t &ch)=0
If statement.
Definition hexrays.hpp:7045
cinsn_t * ielse
Else-branch of the if-statement. May be nullptr.
Definition hexrays.hpp:7047
cif_t()
Definition hexrays.hpp:7048
DECLARE_COMPARISONS(cif_t)
void cleanup()
Definition hexrays.hpp:8308
cif_t & operator=(const cif_t &r)
Definition hexrays.hpp:7050
~cif_t()
Definition hexrays.hpp:7053
cif_t(const cif_t &r)
Definition hexrays.hpp:7049
cinsn_t * ithen
Then-branch of the if-statement.
Definition hexrays.hpp:7046
cif_t &hexapi assign(const cif_t &r)
Definition hexrays.hpp:13192
Ctree item: statement.
Definition hexrays.hpp:7121
cdo_t * cdo
details of do-statement
Definition hexrays.hpp:7129
ctry_t * ctry
details of try-statement
Definition hexrays.hpp:7134
bool contains_free_continue() const
Check if the statement has free continue statements.
Definition hexrays.hpp:7212
bool hexapi is_ordinary_flow() const
Check if the statement passes execution to the next statement.
Definition hexrays.hpp:13294
cinsn_t &hexapi assign(const cinsn_t &r)
Definition hexrays.hpp:13246
cinsn_t()
Definition hexrays.hpp:7138
void zero()
Overwrite with zeroes without cleaning memory or deleting children.
Definition hexrays.hpp:7157
cgoto_t * cgoto
details of goto-statement
Definition hexrays.hpp:7132
cif_t * cif
details of if-statement
Definition hexrays.hpp:7126
cexpr_t * cexpr
details of expression-statement
Definition hexrays.hpp:7125
void hexapi print1(qstring *vout, const cfunc_t *func) const
Print the statement into one line.
Definition hexrays.hpp:13288
~cinsn_t()
Definition hexrays.hpp:7144
cif_t &hexapi create_if(cexpr_t *cnd)
Create a new if-statement.
Definition hexrays.hpp:13276
cfor_t * cfor
details of for-statement
Definition hexrays.hpp:7127
cswitch_t * cswitch
details of switch-statement
Definition hexrays.hpp:7130
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:13282
bool hexapi collect_free_continues(cinsnptrvec_t *continues)
Collect free continue statements.
Definition hexrays.hpp:13312
void swap(cinsn_t &r)
Definition hexrays.hpp:7140
const char *hexapi dstr() const
Definition hexrays.hpp:13318
cinsn_t & operator=(const cinsn_t &r)
Definition hexrays.hpp:7141
void hexapi replace_by(cinsn_t *r)
Replace the statement.
Definition hexrays.hpp:13258
DECLARE_COMPARISONS(cinsn_t)
bool hexapi collect_free_breaks(cinsnptrvec_t *breaks)
Collect free break statements.
Definition hexrays.hpp:13306
void hexapi cleanup()
Cleanup the statement.
Definition hexrays.hpp:13264
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:13300
bool contains_free_break() const
Check if the statement has free break statements.
Definition hexrays.hpp:7210
cinsn_t &hexapi new_insn(ea_t insn_ea)
Create a new statement.
Definition hexrays.hpp:13270
cthrow_t * cthrow
details of throw-statement
Definition hexrays.hpp:7135
cwhile_t * cwhile
details of while-statement
Definition hexrays.hpp:7128
creturn_t * creturn
details of return-statement
Definition hexrays.hpp:7131
cblock_t * cblock
details of block-statement
Definition hexrays.hpp:7124
casm_t * casm
details of asm-statement
Definition hexrays.hpp:7133
cinsn_t(const cinsn_t &r)
Definition hexrays.hpp:7139
Ctree item comment.
Definition hexrays.hpp:6651
bool used
the comment has been retrieved?
Definition hexrays.hpp:6652
citem_cmt_t()
Definition hexrays.hpp:6653
citem_cmt_t(const char *s)
Definition hexrays.hpp:6654
Generic ctree item locator.
Definition hexrays.hpp:6663
DECLARE_COMPARISONS(citem_locator_t)
ea_t ea
citem address
Definition hexrays.hpp:6664
ctype_t op
citem operation
Definition hexrays.hpp:6665
citem_locator_t(ea_t _ea, ctype_t _op)
Definition hexrays.hpp:6668
Basic ctree item.
Definition hexrays.hpp:6706
bool hexapi contains_expr(const cexpr_t *e) const
Does the item contain an expression?
Definition hexrays.hpp:13070
ctype_t op
item type
Definition hexrays.hpp:6708
bool is_expr() const
Is an expression?
Definition hexrays.hpp:6725
citem_t(ctype_t o=cot_empty)
Definition hexrays.hpp:6716
citem_t *hexapi find_closest_addr(ea_t _ea)
Definition hexrays.hpp:13088
const citem_t *hexapi find_parent_of(const citem_t *item) const
Find parent of the specified item.
Definition hexrays.hpp:13082
~citem_t()
Definition hexrays.hpp:6739
void print1(qstring *vout, const cfunc_t *func) const
Print item into one line.
Definition hexrays.hpp:8316
bool hexapi contains_label() const
Does the item contain a label?
Definition hexrays.hpp:13076
citem_t * find_parent_of(const citem_t *item)
Definition hexrays.hpp:6735
int label_num
label number.
Definition hexrays.hpp:6709
int index
an index in cfunc_t::treeitems.
Definition hexrays.hpp:6714
void swap(citem_t &r)
Swap two citem_t.
Definition hexrays.hpp:6718
ea_t ea
address that corresponds to the item. may be BADADDR
Definition hexrays.hpp:6707
Base class for loop statements.
Definition hexrays.hpp:7059
void cleanup()
Definition hexrays.hpp:8309
~cloop_t()
Definition hexrays.hpp:7065
cloop_t & operator=(const cloop_t &r)
Definition hexrays.hpp:7063
cloop_t(cinsn_t *b=nullptr)
Definition hexrays.hpp:7061
cinsn_t * body
Definition hexrays.hpp:7060
cloop_t(const cloop_t &r)
Definition hexrays.hpp:7062
cloop_t &hexapi assign(const cloop_t &r)
Definition hexrays.hpp:13204
An immediate number.
Definition hexrays.hpp:6520
uint64 hexapi value(const tinfo_t &type) const
Get value.
Definition hexrays.hpp:13038
cnumber_t(int _opnum=0)
Definition hexrays.hpp:6523
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:13032
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(cnumber_t)
uint64 _value
its value
Definition hexrays.hpp:6521
number_format_t nf
how to represent it
Definition hexrays.hpp:6522
void hexapi assign(uint64 v, size_t nbytes, type_sign_t sign)
Assign new value.
Definition hexrays.hpp:13046
Return statement.
Definition hexrays.hpp:7091
DECLARE_COMPARISONS(creturn_t)
Switch statement.
Definition hexrays.hpp:7281
cnumber_t mvnf
Maximal switch value and number format.
Definition hexrays.hpp:7282
DECLARE_COMPARISONS(cswitch_t)
ccases_t cases
Switch cases: values and instructions.
Definition hexrays.hpp:7283
Cursor position in the output text (pseudocode).
Definition hexrays.hpp:8678
bool in_ctree(int hdrlines) const
Is the cursor in the variable/type declaration area?
Definition hexrays.hpp:8684
int lnnum
Line number.
Definition hexrays.hpp:8679
int y
y coordinate of the cursor within the window
Definition hexrays.hpp:8681
ctext_position_t(int _lnnum=-1, int _x=0, int _y=0)
Definition hexrays.hpp:8694
int x
x coordinate of the cursor within the window
Definition hexrays.hpp:8680
DECLARE_COMPARISONS(ctext_position_t)
Comparison operators.
Definition hexrays.hpp:8686
Throw statement.
Definition hexrays.hpp:7379
DECLARE_COMPARISONS(cthrow_t)
Invisible COLOR_ADDR tags in the output text are used to refer to ctree items and variables.
Definition hexrays.hpp:7561
uval_t value
Definition hexrays.hpp:7562
int get_index() const
Definition hexrays.hpp:7569
bool is_citem_anchor() const
Definition hexrays.hpp:7572
bool is_lvar_anchor() const
Definition hexrays.hpp:7573
item_preciser_t get_itp() const
Definition hexrays.hpp:7570
bool is_valid_anchor() const
Definition hexrays.hpp:7571
bool is_blkcmt_anchor() const
Definition hexrays.hpp:7575
bool is_itp_anchor() const
Definition hexrays.hpp:7574
Cursor item.
Definition hexrays.hpp:7591
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:13402
const char *hexapi dstr() const
Definition hexrays.hpp:13440
lvar_t * l
VDI_LVAR: Local variable.
Definition hexrays.hpp:7598
citem_t * it
Definition hexrays.hpp:7595
int hexapi get_edm(tinfo_t *parent) const
Get type of an enum member.
Definition hexrays.hpp:13408
ea_t hexapi get_ea() const
Get address of the current item.
Definition hexrays.hpp:13420
cinsn_t * i
VDI_EXPR: Statement.
Definition hexrays.hpp:7597
int hexapi get_label_num(int gln_flags) const
Get label number of the current item.
Definition hexrays.hpp:13428
cursor_item_type_t citype
Item type.
Definition hexrays.hpp:7592
cfunc_t * f
VDI_FUNC: Function.
Definition hexrays.hpp:7599
treeloc_t loc
VDI_TAIL: Line tail.
Definition hexrays.hpp:7600
lvar_t *hexapi get_lvar() const
Get pointer to local variable.
Definition hexrays.hpp:13414
void hexapi print(qstring *vout) const
Definition hexrays.hpp:13434
cexpr_t * e
VDI_EXPR: Expression.
Definition hexrays.hpp:7596
bool is_citem() const
Is the current item is a ctree item?
Definition hexrays.hpp:7655
void verify(const mba_t *mba) const
bool hexapi recalc_parent_types()
Recalculate type of parent nodes.
Definition hexrays.hpp:13390
ctree_parentee_t(bool post=false)
Definition hexrays.hpp:7526
virtual ~ctree_visitor_t()
Definition hexrays.hpp:7448
void set_restart()
Restart the travesal. Meaningful only in apply_to_exprs()
Definition hexrays.hpp:7434
void clr_prune()
Do not prune children. This is an internal function, no need to call it.
Definition hexrays.hpp:7432
parents_t parents
Vector of parents of the current item.
Definition hexrays.hpp:7438
ctree_visitor_t(int _flags)
Constructor.
Definition hexrays.hpp:7446
bool maintain_parents() const
Should the parent information by maintained?
Definition hexrays.hpp:7419
int hexapi apply_to(citem_t *item, citem_t *parent)
Traverse ctree.
Definition hexrays.hpp:13378
cexpr_t * parent_expr()
Get parent of the current item as an expression.
Definition hexrays.hpp:7472
bool is_postorder() const
Should the leave...() functions be called?
Definition hexrays.hpp:7425
bool must_restart() const
Should the traversal restart?
Definition hexrays.hpp:7423
void clr_restart()
Do not restart. This is an internal function, no need to call it.
Definition hexrays.hpp:7436
bool only_insns() const
Should all expressions be automatically pruned?
Definition hexrays.hpp:7427
cblock_posvec_t bposvec
Vector of block positions.
Definition hexrays.hpp:7439
cinsn_t * parent_insn()
Get parent of the current item as a statement.
Definition hexrays.hpp:7479
void prune_now()
Prune children.
Definition hexrays.hpp:7430
virtual int idaapi visit_insn(cinsn_t *)
Visit a statement.
Definition hexrays.hpp:7494
int cv_flags
Ctree visitor property bits
Definition hexrays.hpp:7403
virtual int idaapi visit_expr(cexpr_t *)
Visit an expression.
Definition hexrays.hpp:7502
bool must_prune() const
Should the traversal skip the children of the current item?
Definition hexrays.hpp:7421
virtual int idaapi leave_expr(cexpr_t *)
Visit an expression after having visited its children.
Definition hexrays.hpp:7518
citem_t * parent_item()
Get parent of the current item as an item (statement or expression)
Definition hexrays.hpp:7466
virtual int idaapi leave_insn(cinsn_t *)
Visit a statement after having visited its children.
Definition hexrays.hpp:7510
int hexapi apply_to_exprs(citem_t *item, citem_t *parent)
Traverse only expressions.
Definition hexrays.hpp:13384
C++ Try statement.
Definition hexrays.hpp:7330
size_t new_state
new state number (internal, MSVC related)
Definition hexrays.hpp:7334
void print(const citem_t *parent, int indent, vc_printer_t &vp) const
bool is_synchronized_block() const
Is a synchronized block?
Definition hexrays.hpp:7371
ccatchvec_t catchs
"catch all" or "finally" if present, must be the last element.
Definition hexrays.hpp:7331
bool is_wind() const
Is C++ wind statement?
Definition hexrays.hpp:7358
int flags
Definition hexrays.hpp:7336
size_t old_state
old state number (internal, MSVC related)
Definition hexrays.hpp:7333
DECLARE_COMPARISONS(ctry_t)
While-loop.
Definition hexrays.hpp:7079
DECLARE_COMPARISONS(cwhile_t)
Ranges to decompile. Either a function or an explicit vector of ranges.
Definition hexrays.hpp:4997
rangevec_t ranges
snippet mode: ranges to decompile.
Definition hexrays.hpp:4999
ea_t func_ea
function to decompile. if not BADADDR, then function mode.
Definition hexrays.hpp:4998
decomp_ranges_t(const rangevec_t &r)
Definition hexrays.hpp:5002
bool is_fragmented() const
Definition hexrays.hpp:5008
bool is_snippet() const
Definition hexrays.hpp:5006
bool empty() const
Definition hexrays.hpp:5004
ea_t start() const
Definition hexrays.hpp:5003
void clear()
Definition hexrays.hpp:5005
bool hexapi range_contains(ea_t ea) const
Definition hexrays.hpp:12572
decomp_ranges_t(ea_t _func_ea=BADADDR)
Definition hexrays.hpp:5001
Definition hexrays.hpp:10658
bool operator==(const eamap_iterator_t &p) const
Definition hexrays.hpp:10660
iterator_word x
Definition hexrays.hpp:10659
bool operator!=(const eamap_iterator_t &p) const
Definition hexrays.hpp:10661
Edge connecting two graph nodes.
Definition gdl.hpp:95
Helper class to convert binary data structures into text and put into a file.
Definition hexrays.hpp:945
const char override
Definition hexrays.hpp:953
FILE * fp
Output file pointer.
Definition hexrays.hpp:946
file_printer_t(FILE *_fp)
Constructor.
Definition hexrays.hpp:955
const char * format
Definition hexrays.hpp:953
AS_PRINTF(3, 4) int hexapi print(int indent
Print.
Floating point constant.
Definition hexrays.hpp:2548
int calc_max_exp() const
Definition hexrays.hpp:2560
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11838
bool is_nan() const
Definition hexrays.hpp:2566
fpvalue_t fnum
Internal representation of the number.
Definition hexrays.hpp:2549
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(fnumber_t)
Definition hexrays.hpp:2555
const char *hexapi dstr() const
Definition hexrays.hpp:11844
int nbytes
Original size of the constant in bytes.
Definition hexrays.hpp:2550
Processor-independent representation of a floating point value.
Definition ieee.h:98
Result of get_current_operand()
Definition hexrays.hpp:6266
int regnum
if register, the register id
Definition hexrays.hpp:6271
vivl_t cvt_to_ivl() const
Convert operand info to VIVL.
Definition hexrays.hpp:6293
int flags
Definition hexrays.hpp:6274
qstring name
register or stkvar name
Definition hexrays.hpp:6267
bool is_def() const
Definition hexrays.hpp:6281
bool hexapi append_to_list(mlist_t *list, const mba_t *mba) const
Append operand info to LIST.
Definition hexrays.hpp:12984
bool is_use() const
Definition hexrays.hpp:6280
sval_t stkoff
if stkvar, stack offset
Definition hexrays.hpp:6270
bool is_reg() const
Definition hexrays.hpp:6279
int size
operand size
Definition hexrays.hpp:6273
Exception object: decompiler failure information.
Definition hexrays.hpp:564
hexrays_failure_t(merror_t c, ea_t ea, const qstring &buf)
Definition hexrays.hpp:570
hexrays_failure_t()
Definition hexrays.hpp:568
hexrays_failure_t(merror_t c, ea_t ea, const char *buf=nullptr)
Definition hexrays.hpp:569
qstring hexapi desc() const
Definition hexrays.hpp:11087
qstring str
string information
Definition hexrays.hpp:567
merror_t code
Microcode error code
Definition hexrays.hpp:565
ea_t errea
associated address
Definition hexrays.hpp:566
Warning instances.
Definition hexrays.hpp:4854
ea_t ea
Address where the warning occurred.
Definition hexrays.hpp:4855
qstring text
Fully formatted text of the warning.
Definition hexrays.hpp:4857
warnid_t id
Warning id.
Definition hexrays.hpp:4856
DECLARE_COMPARISONS(hexwarn_t)
Definition hexrays.hpp:4858
ea_t curr_ea
Current address.
Definition hexrays.hpp:8704
ea_t func_ea
The entry address of the decompiled function.
Definition hexrays.hpp:8703
ea_t end
BADADDR-decompile a function; otherwise end of the range.
Definition hexrays.hpp:8705
history_item_t(ea_t fea=BADADDR, ea_t cea=BADADDR, int _lnnum=-1, int _x=0, int _y=0)
Definition hexrays.hpp:8706
history_item_t(ea_t fea, ea_t cea, const ctext_position_t &p)
Definition hexrays.hpp:8708
Definition hexrays.hpp:1927
bool extend_to_cover(const ivl_t &r)
Definition hexrays.hpp:1941
void print(qstring *vout) const
void intersect(const ivl_t &r)
Definition hexrays.hpp:1959
uint64 end() const
Definition hexrays.hpp:1935
bool overlap(const ivl_t &ivl) const
Definition hexrays.hpp:1977
bool valid() const
Definition hexrays.hpp:1934
uint64 last() const
Definition hexrays.hpp:1936
DEFINE_MEMORY_ALLOCATION_FUNCS() static ivl_t allmem()
Definition hexrays.hpp:1993
uint64 off
Definition hexrays.hpp:1929
ivl_t(uint64 _off=0, uint64 _size=0)
Definition hexrays.hpp:1932
DECLARE_COMPARISONS(ivl_t)
void clear()
Definition hexrays.hpp:1937
bool contains(uint64 off2) const
Definition hexrays.hpp:1987
bool empty() const
Definition hexrays.hpp:1933
uint64 size
Definition hexrays.hpp:1930
bool includes(const ivl_t &ivl) const
Definition hexrays.hpp:1982
const char *hexapi dstr() const
Definition hexrays.hpp:11594
Definition hexrays.hpp:2001
const char * whole
Definition hexrays.hpp:2003
const char * part
Definition hexrays.hpp:2004
ivl_t ivl
Definition hexrays.hpp:2002
ivl_with_name_t()
Definition hexrays.hpp:2005
Definition hexrays.hpp:2011
virtual int visit_ivl(const ivl_t &ivl)=0
Local variable locator.
Definition hexrays.hpp:1179
bool is_reg2() const
Is variable located on two registers?
Definition hexrays.hpp:1199
bool is_reg1() const
Is variable located on one register?
Definition hexrays.hpp:1197
const scattered_aloc_t & get_scattered() const
Get information about scattered variable.
Definition hexrays.hpp:1211
HEXRAYS_MEMORY_ALLOCATION_FUNCS() const char *hexapi dstr() const
ea_t defea
Definition address.
Definition hexrays.hpp:1181
bool is_scattered() const
Is variable scattered?
Definition hexrays.hpp:1205
scattered_aloc_t & get_scattered()
Definition hexrays.hpp:1212
sval_t get_stkoff() const
Get offset of the varialbe in the stack frame.
Definition hexrays.hpp:1192
bool is_stk_var() const
Is variable located on the stack?
Definition hexrays.hpp:1203
bool is_reg_var() const
Is variable located on register(s)?
Definition hexrays.hpp:1201
mreg_t get_reg2() const
Get the number of the second register (works only for ALOC_REG2 lvars)
Definition hexrays.hpp:1209
vdloc_t location
Variable location.
Definition hexrays.hpp:1180
mreg_t get_reg1() const
Get the register number of the variable.
Definition hexrays.hpp:1207
DECLARE_COMPARISONS(lvar_locator_t)
lvar_locator_t(const vdloc_t &loc, ea_t ea)
Definition hexrays.hpp:1186
lvar_locator_t()
Definition hexrays.hpp:1185
Definition hexrays.hpp:9895
bool operator==(const lvar_mapping_iterator_t &p) const
Definition hexrays.hpp:9897
iterator_word x
Definition hexrays.hpp:9896
bool operator!=(const lvar_mapping_iterator_t &p) const
Definition hexrays.hpp:9898
Reference to a local variable. Used by mop_l.
Definition hexrays.hpp:2428
lvar_ref_t(mba_t *m, int i, sval_t o=0)
Definition hexrays.hpp:2439
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void swap(lvar_ref_t &r)
Definition hexrays.hpp:2448
int idx
index into mba->vars
Definition hexrays.hpp:2438
mba_t *const mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2436
lvar_t &hexapi var() const
Retrieve the referenced variable.
Definition hexrays.hpp:11820
sval_t off
offset from the beginning of the variable
Definition hexrays.hpp:2437
lvar_ref_t & operator=(const lvar_ref_t &r)
Definition hexrays.hpp:2441
lvar_ref_t(const lvar_ref_t &r)
Definition hexrays.hpp:2440
DECLARE_COMPARISONS(lvar_ref_t)
Saved user settings for local variables: name, type, comment.
Definition hexrays.hpp:1510
bool is_nomap_lvar() const
Definition hexrays.hpp:1561
void set_keep()
Definition hexrays.hpp:1554
void clr_nomap_lvar()
Definition hexrays.hpp:1563
ssize_t size
Type size (if not initialized then -1)
Definition hexrays.hpp:1515
bool operator!=(const lvar_saved_info_t &r) const
Definition hexrays.hpp:1551
bool is_kept() const
Definition hexrays.hpp:1552
void clr_unused_lvar()
Definition hexrays.hpp:1566
qstring cmt
Comment.
Definition hexrays.hpp:1514
void clr_noprop_lvar()
Definition hexrays.hpp:1569
bool is_split_lvar() const
Definition hexrays.hpp:1555
void set_noptr_lvar()
Definition hexrays.hpp:1559
bool is_noptr_lvar() const
Definition hexrays.hpp:1558
void set_unused_lvar()
Definition hexrays.hpp:1565
bool operator==(const lvar_saved_info_t &r) const
Definition hexrays.hpp:1544
void set_noprop_lvar()
Definition hexrays.hpp:1568
tinfo_t type
Type.
Definition hexrays.hpp:1513
void clr_noptr_lvar()
Definition hexrays.hpp:1560
bool is_noprop_lvar() const
Definition hexrays.hpp:1567
lvar_locator_t ll
Variable locator.
Definition hexrays.hpp:1511
void clr_split_lvar()
Definition hexrays.hpp:1557
bool has_info() const
Definition hexrays.hpp:1534
void set_split_lvar()
Definition hexrays.hpp:1556
uint32 flags
saved user lvar info property bits
Definition hexrays.hpp:1516
bool is_unused_lvar() const
Definition hexrays.hpp:1564
void set_nomap_lvar()
Definition hexrays.hpp:1562
qstring name
Name.
Definition hexrays.hpp:1512
void clear_keep()
Definition hexrays.hpp:1553
All user-defined information about local variables.
Definition hexrays.hpp:1579
void swap(lvar_uservec_t &r)
Definition hexrays.hpp:1599
void clear()
Definition hexrays.hpp:1606
int ulv_flags
Various flags. Possible values are from lvar_uservec_t property bits.
Definition hexrays.hpp:1597
uval_t stkoff_delta
Delta to add to IDA stack offset to calculate Hex-Rays stack offsets.
Definition hexrays.hpp:1589
lvar_mapping_t lmaps
Local variable mapping (used for merging variables)
Definition hexrays.hpp:1585
lvar_saved_infos_t lvvec
User-specified names, types, comments for lvars.
Definition hexrays.hpp:1582
bool empty() const
Definition hexrays.hpp:1613
lvar_saved_info_t * find_info(const lvar_locator_t &vloc)
find saved user settings for given var
Definition hexrays.hpp:1622
void keep_info(const lvar_t &v)
Preserve user settings for given var.
Definition hexrays.hpp:1633
Ranges to decompile.
Definition hexrays.hpp:4974
mba_ranges_t(func_t *_pfn=nullptr)
Definition hexrays.hpp:4978
bool is_fragmented() const
Definition hexrays.hpp:4985
void clear()
Definition hexrays.hpp:4982
ea_t start() const
Definition hexrays.hpp:4980
bool empty() const
Definition hexrays.hpp:4981
bool hexapi range_contains(ea_t ea) const
Definition hexrays.hpp:12566
bool is_snippet() const
Definition hexrays.hpp:4983
mba_ranges_t(const rangevec_t &r)
Definition hexrays.hpp:4979
rangevec_t ranges
snippet mode: ranges to decompile.
Definition hexrays.hpp:4976
func_t * pfn
function to decompile. if not null, then function mode.
Definition hexrays.hpp:4975
Generic microcode generator class.
Definition hexrays.hpp:1790
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:1791
Microinstruction locator.
Definition hexrays.hpp:4893
int serial
serial number, in case the ea/mcode are ambiguous
Definition hexrays.hpp:4897
int blknum
block number of the minsn
Definition hexrays.hpp:4898
DECLARE_COMPARISONS(minsn_locator_t)
Definition hexrays.hpp:4901
ea_t ea
address of the minsn
Definition hexrays.hpp:4895
mcode_t mcode
opcode of the minsn
Definition hexrays.hpp:4896
minsn_locator_t(ea_t _ea=BADADDR, mcode_t _mcode=m_nop, int _serial=0, int _blknum=-1)
Definition hexrays.hpp:4899
Micro instruction visitor.
Definition hexrays.hpp:2349
virtual int idaapi visit_minsn()=0
minsn_visitor_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2350
Definition hexrays.hpp:2387
virtual int idaapi visit_mop(mop_t *op)=0
minsn_t * curins
Definition hexrays.hpp:2389
bool prune
Should skip sub-operands of the current operand?
Definition hexrays.hpp:2394
mlist_t * list
Definition hexrays.hpp:2391
minsn_t * topins
Definition hexrays.hpp:2388
bool changed
Definition hexrays.hpp:2390
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual ~mlist_mop_visitor_t()
Definition hexrays.hpp:2396
Definition hexrays.hpp:2102
bool add(mreg_t r, int size)
Definition hexrays.hpp:2112
bool add(const rlist_t &r)
Definition hexrays.hpp:2113
const char *hexapi dstr() const
Definition hexrays.hpp:11716
bool has_any(mreg_t r, int size) const
Definition hexrays.hpp:2138
void clear()
Definition hexrays.hpp:2135
bool intersect(const mlist_t &lst)
Definition hexrays.hpp:2143
bool add(const mlist_t &lst)
Definition hexrays.hpp:2115
DECLARE_COMPARISONS(mlist_t)
bool sub(const mlist_t &lst)
Definition hexrays.hpp:2124
rlist_t reg
Definition hexrays.hpp:2103
mlist_t(const ivl_t &ivl)
Definition hexrays.hpp:2107
bool has_memory() const
Definition hexrays.hpp:2139
bool sub(mreg_t r, int size)
Definition hexrays.hpp:2122
bool includes(const mlist_t &lst) const
Definition hexrays.hpp:2142
ivlset_t mem
Definition hexrays.hpp:2104
bool sub(const ivl_t &ivl)
Definition hexrays.hpp:2123
bool hexapi addmem(ea_t ea, asize_t size)
Definition hexrays.hpp:11704
bool is_subset_of(const mlist_t &lst) const
Definition hexrays.hpp:2150
mlist_t()
Definition hexrays.hpp:2106
asize_t count() const
Definition hexrays.hpp:2131
bool add(const ivl_t &ivl)
Definition hexrays.hpp:2114
void swap(mlist_t &r)
Definition hexrays.hpp:2110
bool has_all(mreg_t r, int size) const
Definition hexrays.hpp:2137
bool has_allmem() const
Definition hexrays.hpp:2140
bool empty() const
Definition hexrays.hpp:2134
void hexapi print(qstring *vout) const
Definition hexrays.hpp:11710
bool has(mreg_t r) const
Definition hexrays.hpp:2136
bool has_common(const mlist_t &lst) const
Definition hexrays.hpp:2141
mlist_t(mreg_t r, int size)
Definition hexrays.hpp:2108
An integer constant.
Definition hexrays.hpp:2522
uint64 org_value
Definition hexrays.hpp:2524
void update_value(uint64 val64)
Definition hexrays.hpp:2537
mnumber_t(uint64 v, ea_t _ea=BADADDR, int n=0)
Definition hexrays.hpp:2525
uint64 value
Definition hexrays.hpp:2523
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(mnumber_t)
Definition hexrays.hpp:2527
Micro operand visitor.
Definition hexrays.hpp:2362
mop_visitor_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2367
bool prune
Should skip sub-operands of the current operand?
Definition hexrays.hpp:2365
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:2329
op_parent_info_t(mba_t *_mba=nullptr, mblock_t *_blk=nullptr, minsn_t *_topins=nullptr)
Definition hexrays.hpp:2335
mblock_t * blk
Definition hexrays.hpp:2331
virtual ~op_parent_info_t()
Definition hexrays.hpp:2340
minsn_t * topins
Definition hexrays.hpp:2332
minsn_t * curins
Definition hexrays.hpp:2333
mba_t * mba
Definition hexrays.hpp:2330
HEXRAYS_MEMORY_ALLOCATION_FUNCS() bool really_alloc() const
Operand locator.
Definition hexrays.hpp:832
ea_t ea
address of the original processor instruction
Definition hexrays.hpp:837
operand_locator_t(ea_t _ea, int _opnum)
Definition hexrays.hpp:839
DECLARE_COMPARISONS(operand_locator_t)
int opnum
operand number in the instruction
Definition hexrays.hpp:838
User defined callback to optimize microcode blocks.
Definition hexrays.hpp:2232
virtual ~optblock_t()
Definition hexrays.hpp:2233
virtual int idaapi func(mblock_t *blk)=0
Optimize a block.
User defined callback to optimize individual microcode instructions.
Definition hexrays.hpp:2200
virtual ~optinsn_t()
Definition hexrays.hpp:2201
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:960
AS_PRINTF(3, 4) int hexapi print(int indent
Print.
const char * format
Definition hexrays.hpp:972
const char override
Definition hexrays.hpp:972
bool with_tags
Generate output with color tags.
Definition hexrays.hpp:961
qstring & s
Reference to the output string.
Definition hexrays.hpp:962
qstring_printer_t(const cfunc_t *f, qstring &_s, bool tags)
Constructor.
Definition hexrays.hpp:964
Chunk iterator of arbitrary rangevec items.
Definition hexrays.hpp:5111
const range_t & chunk() const
Definition hexrays.hpp:5116
const range_t * rptr
Definition hexrays.hpp:5112
const range_t * rend
Definition hexrays.hpp:5113
bool next()
Definition hexrays.hpp:5115
bool set(const rangevec_t &r)
Definition hexrays.hpp:5114
Item iterator of arbitrary rangevec items.
Definition hexrays.hpp:5019
ea_t cur
Definition hexrays.hpp:5022
const rangevec_t * ranges
Definition hexrays.hpp:5020
bool set(const rangevec_t &r)
ea_t current() const
Definition hexrays.hpp:5025
const range_t * rptr
Definition hexrays.hpp:5021
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:2488
scif_t(mba_t *_mba, tinfo_t *tif, qstring *n=nullptr)
Definition hexrays.hpp:2505
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:2503
mba_t * mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2494
qstring name
Usually scattered operands are created from a function prototype, which has the name information.
Definition hexrays.hpp:2499
Scattered mop: visit each of the scattered locations as a separate mop.
Definition hexrays.hpp:2378
virtual int idaapi visit_scif_mop(const mop_t &r, int off)=0
HEXRAYS_MEMORY_ALLOCATION_FUNCS() virtual ~scif_visitor_t()
Definition hexrays.hpp:2379
Reference to a stack variable. Used for mop_S.
Definition hexrays.hpp:2460
sval_t off
Offset to the stack variable from the bottom of the stack frame.
Definition hexrays.hpp:2469
mba_t *const mba
Pointer to the parent mba_t object.
Definition hexrays.hpp:2464
ssize_t hexapi get_stkvar(udm_t *udm=nullptr, uval_t *p_idaoff=nullptr) const
Retrieve the referenced stack variable.
Definition hexrays.hpp:11832
HEXRAYS_MEMORY_ALLOCATION_FUNCS() void swap(stkvar_ref_t &r)
Definition hexrays.hpp:2473
stkvar_ref_t(mba_t *m, sval_t o)
Definition hexrays.hpp:2471
DECLARE_COMPARISONS(stkvar_ref_t)
Information about a switch statement.
Definition nalt.hpp:699
Ctree location. Used to denote comment locations.
Definition hexrays.hpp:6621
ea_t ea
Definition hexrays.hpp:6622
item_preciser_t itp
Definition hexrays.hpp:6623
Definition hexrays.hpp:10004
bool operator==(const udcall_map_iterator_t &p) const
Definition hexrays.hpp:10006
iterator_word x
Definition hexrays.hpp:10005
bool operator!=(const udcall_map_iterator_t &p) const
Definition hexrays.hpp:10007
User-defined function calls.
Definition hexrays.hpp:1731
qstring name
Definition hexrays.hpp:1732
DECLARE_COMPARISONS(udcall_t)
Definition hexrays.hpp:1734
tinfo_t tif
Definition hexrays.hpp:1733
bool empty() const
Definition hexrays.hpp:1742
An object to represent struct or union members.
Definition typeinf.hpp:5393
Definition typeinf.hpp:5528
Callback to apply the selection.
Definition hexrays.hpp:9064
virtual ~ui_stroff_applicator_t()
Definition hexrays.hpp:9065
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:9049
uval_t offset
operand offset, will be used when calculating the UDT path
Definition hexrays.hpp:9051
bool operator==(const ui_stroff_op_t &r) const
Definition hexrays.hpp:9052
qstring text
any text for the column "Operand" of widget
Definition hexrays.hpp:9050
bool operator!=(const ui_stroff_op_t &r) const
Definition hexrays.hpp:9056
Definition hexrays.hpp:10331
iterator_word x
Definition hexrays.hpp:10332
bool operator!=(const user_casts_iterator_t &p) const
Definition hexrays.hpp:10334
bool operator==(const user_casts_iterator_t &p) const
Definition hexrays.hpp:10333
Definition hexrays.hpp:10113
bool operator==(const user_cmts_iterator_t &p) const
Definition hexrays.hpp:10115
bool operator!=(const user_cmts_iterator_t &p) const
Definition hexrays.hpp:10116
iterator_word x
Definition hexrays.hpp:10114
Definition hexrays.hpp:10222
iterator_word x
Definition hexrays.hpp:10223
bool operator!=(const user_iflags_iterator_t &p) const
Definition hexrays.hpp:10225
bool operator==(const user_iflags_iterator_t &p) const
Definition hexrays.hpp:10224
Definition hexrays.hpp:10549
bool operator==(const user_labels_iterator_t &p) const
Definition hexrays.hpp:10551
bool operator!=(const user_labels_iterator_t &p) const
Definition hexrays.hpp:10552
iterator_word x
Definition hexrays.hpp:10550
Helper class to modify saved local variable settings.
Definition hexrays.hpp:1658
virtual ~user_lvar_modifier_t()
Definition hexrays.hpp:1659
virtual bool idaapi modify_lvars(lvar_uservec_t *lvinf)=0
Modify lvar settings.
User-defined microinstruction action.
Definition hexrays.hpp:4926
user_minsn_action_t action
action type
Definition hexrays.hpp:4929
minsn_t ins
instruction to insert (for UMA_INS/UMA_APP)
Definition hexrays.hpp:4928
bool marked_for_addition() const
Does this action add a new instruction?
Definition hexrays.hpp:4931
minsn_locator_t loc
location of the target microinstruction
Definition hexrays.hpp:4927
DECLARE_COMPARISONS(user_minsn_t)
Definition hexrays.hpp:10440
bool operator!=(const user_unions_iterator_t &p) const
Definition hexrays.hpp:10443
bool operator==(const user_unions_iterator_t &p) const
Definition hexrays.hpp:10442
iterator_word x
Definition hexrays.hpp:10441
Reference to a local variable.
Definition hexrays.hpp:6553
lvar_t & getv() const
Definition hexrays.hpp:6556
int idx
index into lvars_t
Definition hexrays.hpp:6555
HEXRAYS_MEMORY_ALLOCATION_FUNCS() DECLARE_COMPARISONS(var_ref_t)
mba_t * mba
pointer to the underlying micro array
Definition hexrays.hpp:6554
Helper class to convert cfunc_t into text.
Definition hexrays.hpp:933
char lastchar
internal: last printed character
Definition hexrays.hpp:935
const cfunc_t * func
cfunc_t to generate text for
Definition hexrays.hpp:934
vc_printer_t(const cfunc_t *f)
Constructor.
Definition hexrays.hpp:937
virtual bool idaapi oneliner() const newapi
Are we generating one-line text representation?
Definition hexrays.hpp:940
Exception object: decompiler exception.
Definition hexrays.hpp:577
vd_failure_t()
Definition hexrays.hpp:579
vd_failure_t(const hexrays_failure_t &_hf)
Definition hexrays.hpp:582
hexrays_failure_t hf
Definition hexrays.hpp:578
~vd_failure_t()
Definition hexrays.hpp:588
vd_failure_t(merror_t code, ea_t ea, const char *buf=nullptr)
Definition hexrays.hpp:580
virtual const char * what() const noexcept override
Definition hexrays.hpp:585
qstring desc() const
Definition hexrays.hpp:583
vd_failure_t(merror_t code, ea_t ea, const qstring &buf)
Definition hexrays.hpp:581
vd_interr_t(ea_t ea, const qstring &buf)
Definition hexrays.hpp:596
vd_interr_t(ea_t ea, const char *buf)
Definition hexrays.hpp:597
Base helper class to convert binary data structures into text.
Definition hexrays.hpp:917
qstring tmpbuf
Definition hexrays.hpp:918
int hdrlines
number of header lines (prototype+typedef+lvars) valid at the end of print process
Definition hexrays.hpp:919
const char * format
Definition hexrays.hpp:927
AS_PRINTF(3, 4) virtual int hexapi print(int indent
Print.
Information about the pseudocode window.
Definition hexrays.hpp:8729
bool visible() const
Is the pseudocode window visible?
Definition hexrays.hpp:8740
bool hexapi rename_label(int label)
Rename a label.
Definition hexrays.hpp:14041
TWidget * ct
pseudocode view
Definition hexrays.hpp:8754
merror_t last_code
result of the last user action. See Microcode error code
Definition hexrays.hpp:8759
bool hexapi collapse_lvars(bool hide)
Collapse/uncollapse local variable declarations.
Definition hexrays.hpp:14119
bool hexapi set_lvar_cmt(lvar_t *v, const char *cmt)
Set local variable comment.
Definition hexrays.hpp:13981
bool hexapi set_global_type(ea_t ea)
Set global item type.
Definition hexrays.hpp:14029
void set_valid(bool v)
Definition hexrays.hpp:8750
bool hexapi ui_noprop_lvar(lvar_t *v)
Forbid variable propagation.
Definition hexrays.hpp:14005
bool hexapi refresh_cpos(input_device_t idv)
Refresh the current position.
Definition hexrays.hpp:13927
bool hexapi set_lvar_type(lvar_t *v, const tinfo_t &type)
Set local variable type.
Definition hexrays.hpp:13963
void hexapi refresh_ctext(bool activate=true)
Refresh pseudocode window.
Definition hexrays.hpp:13897
TWidget * toplevel
Definition hexrays.hpp:8755
ctree_item_t head
First ctree item on the current line (for block comments)
Definition hexrays.hpp:8763
bool hexapi map_lvar(lvar_t *from, lvar_t *to)
Map a local variable to another.
Definition hexrays.hpp:14011
bool hexapi invert_bits()
Bitwise negate a number.
Definition hexrays.hpp:14107
bool hexapi ui_map_lvar(lvar_t *v)
Map a local variable to another.
Definition hexrays.hpp:13987
void hexapi refresh_view(bool redo_mba)
Refresh pseudocode window.
Definition hexrays.hpp:13891
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:13969
int hexapi get_current_label()
Get current label.
Definition hexrays.hpp:13915
bool valid() const
Does the pseudocode window contain valid code?
Definition hexrays.hpp:8743
bool hexapi ui_set_lvar_type(lvar_t *v)
Set local variable type.
Definition hexrays.hpp:13957
void hexapi clear()
Clear the pseudocode window.
Definition hexrays.hpp:13921
bool hexapi ui_rename_lvar(lvar_t *v)
Rename local variable.
Definition hexrays.hpp:13939
ctree_item_t item
Current ctree item.
Definition hexrays.hpp:8764
ctext_position_t cpos
Current ctext position.
Definition hexrays.hpp:8762
bool hexapi invert_sign()
Negate a number.
Definition hexrays.hpp:14101
bool hexapi ui_add_cast(cexpr_t *e)
Add a user-defined cast on the current expression.
Definition hexrays.hpp:13999
void set_visible(bool v)
Definition hexrays.hpp:8749
bool in_ctree() const
Is the current item a statement?
Definition hexrays.hpp:8796
bool hexapi rename_udm(const tinfo_t &udt_type, int udm_idx)
Rename structure field.
Definition hexrays.hpp:14023
bool hexapi edit_cmt(const treeloc_t &loc)
Edit an indented comment.
Definition hexrays.hpp:14065
int view_idx
pseudocode window index (0..)
Definition hexrays.hpp:8753
bool hexapi set_udm_type(const tinfo_t &udt_type, int udm_idx)
Set structure field type.
Definition hexrays.hpp:14017
bool hexapi set_num_radix(int base)
Change number base.
Definition hexrays.hpp:14083
bool hexapi edit_func_cmt()
Edit a function comment.
Definition hexrays.hpp:14071
void hexapi switch_to(cfuncptr_t f, bool activate)
Display the specified pseudocode.
Definition hexrays.hpp:13903
bool hexapi del_orphan_cmts()
Delete all orphan comments.
Definition hexrays.hpp:14077
bool hexapi collapse_item(bool hide)
Collapse/uncollapse item.
Definition hexrays.hpp:14113
mba_t * mba
pointer to underlying microcode
Definition hexrays.hpp:8757
bool hexapi jump_enter(input_device_t idv, int omflags)
Process the Enter key.
Definition hexrays.hpp:14047
bool hexapi split_item(bool split)
Split/unsplit item.
Definition hexrays.hpp:14125
cfuncptr_t cfunc
pointer to function object
Definition hexrays.hpp:8758
bool hexapi rename_global(ea_t ea)
Rename global item.
Definition hexrays.hpp:14035
bool hexapi rename_lvar(lvar_t *v, const char *name, bool is_user_name)
Rename local variable.
Definition hexrays.hpp:13945
int flags
Properties of pseudocode window
Definition hexrays.hpp:8730
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:14059
bool hexapi get_current_item(input_device_t idv)
Get current item.
Definition hexrays.hpp:13933
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:13951
bool hexapi ctree_to_disasm()
Jump to disassembly.
Definition hexrays.hpp:14053
bool hexapi set_num_enum()
Convert number to symbolic constant.
Definition hexrays.hpp:14089
bool hexapi ui_edit_lvar_cmt(lvar_t *v)
Set local variable comment.
Definition hexrays.hpp:13975
ctree_item_t tail
Tail ctree item on the current line (for indented comments)
Definition hexrays.hpp:8765
cnumber_t *hexapi get_number()
Get current number.
Definition hexrays.hpp:13909
bool hexapi ui_unmap_lvar(lvar_t *v)
Unmap a local variable.
Definition hexrays.hpp:13993
bool locked() const
Does the pseudocode window contain valid code?
Definition hexrays.hpp:8748
bool hexapi set_locked(bool v)
Definition hexrays.hpp:13885
bool hexapi set_num_stroff()
Convert number to structure field offset.
Definition hexrays.hpp:14095
Value interval (register or stack range)
Definition hexrays.hpp:3490
DECLARE_COMPARISONS(vivl_t)
Definition hexrays.hpp:3535
uval_t hexapi intersect(const vivl_t &r)
Intersect value intervals the same type.
Definition hexrays.hpp:12146
void set(mopt_t _type, sval_t _off, int _size=0)
Definition hexrays.hpp:3499
void hexapi print(qstring *vout) const
Definition hexrays.hpp:12154
void set(const voff_t &voff, int _size)
Definition hexrays.hpp:3501
vivl_t(mopt_t _type=mop_z, sval_t _off=-1, int _size=0)
Definition hexrays.hpp:3493
bool overlap(const vivl_t &r) const
Do two value intervals overlap?
Definition hexrays.hpp:3515
bool contains(const voff_t &voff2) const
Does our value interval contain the specified value offset?
Definition hexrays.hpp:3528
void set_stkoff(sval_t stkoff, int sz=0)
Definition hexrays.hpp:3503
vivl_t(const class chain_t &ch)
int size
Interval size in bytes.
Definition hexrays.hpp:3491
void set_reg(mreg_t mreg, int sz=0)
Definition hexrays.hpp:3504
bool includes(const vivl_t &r) const
Does our value interval include another?
Definition hexrays.hpp:3521
const char *hexapi dstr() const
Definition hexrays.hpp:12160
bool operator==(const mop_t &mop) const
Definition hexrays.hpp:3540
bool hexapi extend_to_cover(const vivl_t &r)
Extend a value interval using another value interval of the same type.
Definition hexrays.hpp:12140
vivl_t(const mop_t &op)
Definition hexrays.hpp:3496
Value offset (microregister number or stack offset)
Definition hexrays.hpp:3453
mreg_t get_reg() const
Definition hexrays.hpp:3473
sval_t diff(const voff_t &r) const
Definition hexrays.hpp:3478
void set(mopt_t _type, sval_t _off)
Definition hexrays.hpp:3465
void undef()
Definition hexrays.hpp:3468
bool is_stkoff() const
Definition hexrays.hpp:3472
voff_t(const mop_t &op)
Definition hexrays.hpp:3459
sval_t off
register number or stack offset
Definition hexrays.hpp:3454
bool defined() const
Definition hexrays.hpp:3470
void inc(sval_t delta)
Definition hexrays.hpp:3476
DECLARE_COMPARISONS(voff_t)
Definition hexrays.hpp:3480
voff_t add(int width) const
Definition hexrays.hpp:3477
voff_t(mopt_t _type, sval_t _off)
Definition hexrays.hpp:3458
void set_reg(mreg_t mreg)
Definition hexrays.hpp:3467
mopt_t type
mop_r - register, mop_S - stack, mop_z - undefined
Definition hexrays.hpp:3455
sval_t get_stkoff() const
Definition hexrays.hpp:3474
void set_stkoff(sval_t stkoff)
Definition hexrays.hpp:3466
bool is_reg() const
Definition hexrays.hpp:3471
voff_t()
Definition hexrays.hpp:3457
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:2043
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:406