Module ida_hexrays
[frames] | no frames]

Module ida_hexrays

IDA Plugin SDK API wrapper: hexrays

Classes
  array_of_bitsets
Proxy of C++ qvector<(bitset_t)> class
  mopvec_t
Proxy of C++ qvector<(mop_t)> class
  mcallargs_t
Proxy of C++ qvector<(mcallarg_t)> class
  block_chains_vec_t
Proxy of C++ qvector<(block_chains_t)> class
  user_numforms_t
Proxy of C++ std::map<(operand_locator_t,number_format_t)> class
  lvar_mapping_t
Proxy of C++ std::map<(lvar_locator_t,lvar_locator_t)> class
  hexwarns_t
Proxy of C++ qvector<(hexwarn_t)> class
  ctree_items_t
Proxy of C++ qvector<(p.citem_t)> class
  user_labels_t
Proxy of C++ std::map<(int,qstring)> class
  user_cmts_t
Proxy of C++ std::map<(treeloc_t,citem_cmt_t)> class
  user_iflags_t
Proxy of C++ std::map<(citem_locator_t,int32)> class
  user_unions_t
Proxy of C++ std::map<(ea_t,intvec_t)> class
  cinsnptrvec_t
Proxy of C++ qvector<(p.cinsn_t)> class
  eamap_t
Proxy of C++ std::map<(ea_t,cinsnptrvec_t)> class
  boundaries_t
Proxy of C++ std::map<(p.cinsn_t,rangeset_t)> class
  cfuncptr_t
Proxy of C++ qrefcnt_t<(cfunc_t)> class
  qvector_history_t
Proxy of C++ qvector<(history_item_t)> class
  history_t
Proxy of C++ qstack<(history_item_t)> class
  qlist_cinsn_t_iterator
Proxy of C++ qlist_cinsn_t_iterator class
  qvector_lvar_t
Proxy of C++ qvector<(lvar_t)> class
  qlist_cinsn_t
Proxy of C++ qlist<(cinsn_t)> class
  qvector_carg_t
Proxy of C++ qvector<(carg_t)> class
  qvector_ccase_t
Proxy of C++ qvector<(ccase_t)> class
  lvar_saved_infos_t
Proxy of C++ qvector<(lvar_saved_info_t)> class
  ui_stroff_ops_t
Proxy of C++ qvector<(ui_stroff_op_t)> class
  fnum_array
Proxy of C++ wrapped_array_t<(uint16,6)> class
  Hexrays_Hooks
Proxy of C++ Hexrays_Hooks class
  uval_ivl_t
Proxy of C++ ivl_tpl<(uval_t)> class
  uval_ivl_ivlset_t
Proxy of C++ ivlset_tpl<(ivl_t,uval_t)> class
  array_of_ivlsets
Proxy of C++ qvector<(ivlset_t)> class
  valrng_t
Proxy of C++ valrng_t class
  optinsn_t
Proxy of C++ optinsn_t class
  optblock_t
Proxy of C++ optblock_t class
  operand_locator_t
Proxy of C++ operand_locator_t class
  number_format_t
Proxy of C++ number_format_t class
  vd_printer_t
Proxy of C++ vd_printer_t class
  vc_printer_t
Proxy of C++ vc_printer_t class
  qstring_printer_t
Proxy of C++ qstring_printer_t class
  vdloc_t
Proxy of C++ vdloc_t class
  lvar_locator_t
Proxy of C++ lvar_locator_t class
  lvar_t
Proxy of C++ lvar_t class
  lvars_t
Proxy of C++ lvars_t class
  lvar_saved_info_t
Proxy of C++ lvar_saved_info_t class
  lvar_uservec_t
Proxy of C++ lvar_uservec_t class
  user_lvar_modifier_t
Proxy of C++ user_lvar_modifier_t class
  udcall_t
Proxy of C++ udcall_t class
  microcode_filter_t
Proxy of C++ microcode_filter_t class
  udc_filter_t
Proxy of C++ udc_filter_t class
  bitset_t
Proxy of C++ bitset_t class
  ivl_t
Proxy of C++ ivl_t class
  ivl_with_name_t
Proxy of C++ ivl_with_name_t class
  ivlset_t
Proxy of C++ ivlset_t class
  rlist_t
Proxy of C++ rlist_t class
  mlist_t
Proxy of C++ mlist_t class
  simple_graph_t
Proxy of C++ simple_graph_t class
  op_parent_info_t
Proxy of C++ op_parent_info_t class
  minsn_visitor_t
Proxy of C++ minsn_visitor_t class
  mop_visitor_t
Proxy of C++ mop_visitor_t class
  scif_visitor_t
Proxy of C++ scif_visitor_t class
  mlist_mop_visitor_t
Proxy of C++ mlist_mop_visitor_t class
  lvar_ref_t
Proxy of C++ lvar_ref_t class
  stkvar_ref_t
Proxy of C++ stkvar_ref_t class
  scif_t
Proxy of C++ scif_t class
  mnumber_t
Proxy of C++ mnumber_t class
  fnumber_t
Proxy of C++ fnumber_t class
  mop_t
Proxy of C++ mop_t class
  mop_pair_t
Proxy of C++ mop_pair_t class
  mop_addr_t
Proxy of C++ mop_addr_t class
  mcallarg_t
Proxy of C++ mcallarg_t class
  mcallinfo_t
Proxy of C++ mcallinfo_t class
  mcases_t
Proxy of C++ mcases_t class
  voff_t
Proxy of C++ voff_t class
  vivl_t
Proxy of C++ vivl_t class
  chain_t
Proxy of C++ chain_t class
  block_chains_t
Proxy of C++ block_chains_t class
  chain_visitor_t
Proxy of C++ chain_visitor_t class
  graph_chains_t
Proxy of C++ graph_chains_t class
  minsn_t
Proxy of C++ minsn_t class
  mblock_t
Proxy of C++ mblock_t class
  hexwarn_t
Proxy of C++ hexwarn_t class
  mba_ranges_t
Proxy of C++ mba_ranges_t class
  mba_range_iterator_t
Proxy of C++ mba_range_iterator_t class
  mbl_array_t
Proxy of C++ mbl_array_t class
  chain_keeper_t
Proxy of C++ chain_keeper_t class
  mbl_graph_t
Proxy of C++ mbl_graph_t class
  codegen_t
Proxy of C++ codegen_t class
  hexrays_failure_t
Proxy of C++ hexrays_failure_t class
  vd_failure_t
Proxy of C++ vd_failure_t class
  vd_interr_t
Proxy of C++ vd_interr_t class
  gco_info_t
Proxy of C++ gco_info_t class
  operator_info_t
Proxy of C++ operator_info_t class
  cnumber_t
Proxy of C++ cnumber_t class
  var_ref_t
Proxy of C++ var_ref_t class
  ctree_visitor_t
Proxy of C++ ctree_visitor_t class
  ctree_parentee_t
Proxy of C++ ctree_parentee_t class
  cfunc_parentee_t
Proxy of C++ cfunc_parentee_t class
  treeloc_t
Proxy of C++ treeloc_t class
  citem_cmt_t
Proxy of C++ citem_cmt_t class
  citem_locator_t
Proxy of C++ citem_locator_t class
  bit_bound_t
Proxy of C++ bit_bound_t class
  citem_t
Proxy of C++ citem_t class
  cexpr_t
Proxy of C++ cexpr_t class
  ceinsn_t
Proxy of C++ ceinsn_t class
  cif_t
Proxy of C++ cif_t class
  cloop_t
Proxy of C++ cloop_t class
  cfor_t
Proxy of C++ cfor_t class
  cwhile_t
Proxy of C++ cwhile_t class
  cdo_t
Proxy of C++ cdo_t class
  creturn_t
Proxy of C++ creturn_t class
  cgoto_t
Proxy of C++ cgoto_t class
  casm_t
Proxy of C++ casm_t class
  cinsn_t
Proxy of C++ cinsn_t class
  cblock_t
Proxy of C++ cblock_t class
  carg_t
Proxy of C++ carg_t class
  carglist_t
Proxy of C++ carglist_t class
  ccase_t
Proxy of C++ ccase_t class
  ccases_t
Proxy of C++ ccases_t class
  cswitch_t
Proxy of C++ cswitch_t class
  ctree_anchor_t
Proxy of C++ ctree_anchor_t class
  ctree_item_t
Proxy of C++ ctree_item_t class
  cfunc_t
Proxy of C++ cfunc_t class
  ctext_position_t
Proxy of C++ ctext_position_t class
  history_item_t
Proxy of C++ history_item_t class
  vdui_t
Proxy of C++ vdui_t class
  ui_stroff_op_t
Proxy of C++ ui_stroff_op_t class
  ui_stroff_applicator_t
Proxy of C++ ui_stroff_applicator_t class
  user_numforms_iterator_t
Proxy of C++ user_numforms_iterator_t class
  lvar_mapping_iterator_t
Proxy of C++ lvar_mapping_iterator_t class
  udcall_map_iterator_t
Proxy of C++ udcall_map_iterator_t class
  user_cmts_iterator_t
Proxy of C++ user_cmts_iterator_t class
  user_iflags_iterator_t
Proxy of C++ user_iflags_iterator_t class
  user_unions_iterator_t
Proxy of C++ user_unions_iterator_t class
  user_labels_iterator_t
Proxy of C++ user_labels_iterator_t class
  eamap_iterator_t
Proxy of C++ eamap_iterator_t class
  boundaries_iterator_t
Proxy of C++ boundaries_iterator_t class
  block_chains_iterator_t
Proxy of C++ block_chains_iterator_t class
  DecompilationFailure
Raised on a decompilation error.
Functions
int32 const &
user_iflags_second(p)
Get reference to the current map value.
 
qswap(a, b)
 
debug_hexrays_ctree(msg)
bool
init_hexrays_plugin(flags=0)
Initialize your plugin for hex-rays decompiler.
vdui_t
get_widget_vdui(f)
Get the 'vdui_t' instance associated to the TWidget
boundaries_iterator_t
boundaries_find(map, key)
Find the specified key in boundaries_t.
boundaries_iterator_t
boundaries_insert(map, key, val)
Insert new ( 'cinsn_t' *, 'rangeset_t' ) pair into boundaries_t.
 
term_hexrays_plugin()
Stop working with hex-rays decompiler.
void *
hexrays_alloc(size)
 
hexrays_free(ptr)
bool
is_may_access(maymust)
ea_t
get_merror_desc(code, mba)
Get textual description of an error code
mreg_t
reg2mreg(reg)
Map a processor register to microregister.
int
mreg2reg(reg, width)
Map a microregister to processor register.
bool
must_mcode_close_block(mcode, including_calls)
Must an instruction with the given opcode be the last one in a block? Such opcodes are called closing opcodes.
bool
is_mcode_propagatable(mcode)
May opcode be propagated? Such opcodes can be used in sub-instructions (nested instructions) There is a handful of non-propagatable opcodes, like jumps, ret, nop, etc All other regular opcodes are propagatable and may appear in a nested instruction.
bool
is_mcode_addsub(mcode)
bool
is_mcode_xdsu(mcode)
bool
is_mcode_set(mcode)
bool
is_mcode_set1(mcode)
bool
is_mcode_j1(mcode)
bool
is_mcode_jcond(mcode)
bool
is_mcode_convertible_to_jmp(mcode)
bool
is_mcode_convertible_to_set(mcode)
bool
is_mcode_call(mcode)
bool
is_mcode_fpu(mcode)
bool
is_mcode_commutative(mcode)
bool
is_mcode_shift(mcode)
bool
is_mcode_divmod(op)
mcode_t
set2jcnd(code)
mcode_t
jcnd2set(code)
mcode_t
negate_mcode_relation(code)
mcode_t
swap_mcode_relation(code)
mcode_t
get_signed_mcode(code)
mcode_t
get_unsigned_mcode(code)
bool
is_signed_mcode(code)
bool
is_unsigned_mcode(code)
bool
mcode_modifies_d(mcode)
char const *
dstr(tif)
Print the specified type info.
bool
is_type_correct(ptr)
Verify a type string.
bool
is_small_udt(tif)
Is a small structure or union?
bool
is_nonbool_type(type)
Is definitely a non-boolean type?
bool
is_bool_type(type)
Is a boolean type?
bool
is_ptr_or_array(t)
Is a pointer or array type?
bool
is_paf(t)
Is a pointer, array, or function type?
bool
is_inplace_def(type)
Is struct/union/enum definition (not declaration)?
int
partial_type_num(type)
Calculate number of partial subtypes.
tinfo_t
get_float_type(width)
Get a type of a floating point value with the specified width
tinfo_t
get_int_type_by_width_and_sign(srcwidth, sign)
Create a type info by width and sign.
tinfo_t
get_unk_type(size)
Create a partial type info by width.
tinfo_t
dummy_ptrtype(ptrsize, isfp)
Generate a dummy pointer type
bool
get_member_type(mptr, type)
Get type of a structure field.
tinfo_t
make_pointer(type)
Create a pointer type.
tinfo_t
create_typedef(name)
create_typedef(n) -> tinfo_t
bool
get_type(id, tif, guess)
Get a global type.
bool
set_type(id, tif, source, force=False)
Set a global type.
 
print_vdloc(loc, nbytes)
Print vdloc.
bool
arglocs_overlap(loc1, w1, loc2, w2)
Do two arglocs overlap?
bool
restore_user_lvar_settings(lvinf, func_ea)
Restore user defined local variable settings in the database.
 
save_user_lvar_settings(func_ea, lvinf)
Save user defined local variable settings into the database.
bool
modify_user_lvars(entry_ea, mlv)
Modify saved local variable settings.
bool
restore_user_defined_calls(udcalls, func_ea)
Restore user defined function calls from the database.
 
save_user_defined_calls(func_ea, udcalls)
Save user defined local function calls into the database.
bool
parse_user_call(udc, decl, silent)
Convert function type declaration into internal structure
merror_t
convert_to_user_call(udc, cdg)
try to generate user-defined call for an instruction
 
install_microcode_filter(filter, install=True)
register/unregister non-standard microcode generator
int
get_mreg_name(bit, width, ud=None)
int
lexcompare(a, b)
minsn_t
getf_reginsn(ins)
Skip assertions forward.
minsn_t
getb_reginsn(ins)
Skip assertions backward.
mbl_array_t
mbl_array_t_deserialize(bytes, nbytes)
bool
is_kreg(r)
Is a kernel register?
mlist_t
get_temp_regs()
Get list of temporary registers.
char const *
get_hexrays_version()
Get decompiler version.
bool
checkout_hexrays_license(silent)
Check out a floating decompiler license.
vdui_t
open_pseudocode(ea, new_window)
Open pseudocode window.
bool
close_pseudocode(f)
Close pseudocode window.
bool
decompile_many(outfile, funcaddrs, flags)
Batch decompilation.
 
send_database(err, silent)
Send the database to Hex-Rays.
bool
get_current_operand(out)
Get the instruction operand under the cursor.
 
remitem(e)
ctype_t
negated_relation(op)
Negate a comparison operator.
ctype_t
swapped_relation(op)
Swap a comparison operator.
type_sign_t
get_op_signness(op)
Get operator sign.
ctype_t
asgop(cop)
Convert plain operator into assignment operator.
ctype_t
asgop_revert(cop)
Convert assignment operator into plain operator.
bool
op_uses_x(op)
Does operator use the 'x' field of 'cexpr_t' ?
bool
op_uses_y(op)
Does operator use the 'y' field of 'cexpr_t' ?
bool
op_uses_z(op)
Does operator use the 'z' field of 'cexpr_t' ?
bool
is_binary(op)
Is binary operator?
bool
is_unary(op)
Is unary operator?
bool
is_relational(op)
Is comparison operator?
bool
is_assignment(op)
Is assignment operator?
bool
accepts_udts(op)
bool
is_prepost(op)
Is pre/post increment/decrement operator?
bool
is_commutative(op)
Is commutative operator?
bool
is_additive(op)
Is additive operator?
bool
is_multiplicative(op)
Is multiplicative operator?
bool
is_bitop(op)
Is bit related operator?
bool
is_logical(op)
Is logical operator?
bool
is_loop(op)
Is loop statement code?
bool
is_break_consumer(op)
Does a break statement influence the specified statement code?
bool
is_lvalue(op)
Is Lvalue operator?
bool
accepts_small_udts(op)
Is the operator allowed on small structure or union?
bool
cinsn_t_insn_is_epilog(insn)
 
save_user_labels(func_ea, user_labels)
Save user defined labels into the database.
 
save_user_cmts(func_ea, user_cmts)
Save user defined comments into the database.
 
save_user_numforms(func_ea, numforms)
Save user defined number formats into the database.
 
save_user_iflags(func_ea, iflags)
Save user defined citem iflags into the database.
 
save_user_unions(func_ea, unions)
Save user defined union field selections into the database.
user_labels_t
restore_user_labels(func_ea)
Restore user defined labels from the database.
user_cmts_t
restore_user_cmts(func_ea)
Restore user defined comments from the database.
user_numforms_t
restore_user_numforms(func_ea)
Restore user defined number formats from the database.
user_iflags_t
restore_user_iflags(func_ea)
Restore user defined citem iflags from the database.
user_unions_t
restore_user_unions(func_ea)
Restore user defined union field selections from the database.
cfuncptr_t
decompile_func(pfn, hf, flags=0)
Decompile a function.
mbl_array_t
gen_microcode(mbr, hf, retlist=None, flags=0, reqmat=MMAT_GLBOPT3)
Generate microcode of an arbitrary code snippet
bool
mark_cfunc_dirty(ea, close_views=False)
Flush the cached decompilation results.
 
clear_cached_cfuncs()
Flush all cached decompilation results.
bool
has_cached_cfunc(ea)
Do we have a cached decompilation result for 'ea'?
char const *
get_ctype_name(op)
qstring
create_field_name(type, offset=BADADDR)
int
select_udt_by_offset(udts, ops, applicator)
Select UDT
user_numforms_iterator_t
user_numforms_begin(map)
Get iterator pointing to the beginning of user_numforms_t.
user_numforms_iterator_t
user_numforms_end(map)
Get iterator pointing to the end of user_numforms_t.
user_numforms_iterator_t
user_numforms_next(p)
Move to the next element.
user_numforms_iterator_t
user_numforms_prev(p)
Move to the previous element.
operand_locator_t
user_numforms_first(p)
Get reference to the current map key.
number_format_t
user_numforms_second(p)
Get reference to the current map value.
user_numforms_iterator_t
user_numforms_find(map, key)
Find the specified key in user_numforms_t.
user_numforms_iterator_t
user_numforms_insert(map, key, val)
Insert new ( 'operand_locator_t' , 'number_format_t' ) pair into user_numforms_t.
 
user_numforms_erase(map, p)
Erase current element from user_numforms_t.
 
user_numforms_clear(map)
Clear user_numforms_t.
size_t
user_numforms_size(map)
Get size of user_numforms_t.
 
user_numforms_free(map)
Delete user_numforms_t instance.
user_numforms_t
user_numforms_new()
Create a new user_numforms_t instance.
lvar_mapping_iterator_t
lvar_mapping_begin(map)
Get iterator pointing to the beginning of lvar_mapping_t.
lvar_mapping_iterator_t
lvar_mapping_end(map)
Get iterator pointing to the end of lvar_mapping_t.
lvar_mapping_iterator_t
lvar_mapping_next(p)
Move to the next element.
lvar_mapping_iterator_t
lvar_mapping_prev(p)
Move to the previous element.
lvar_locator_t
lvar_mapping_first(p)
Get reference to the current map key.
lvar_locator_t
lvar_mapping_second(p)
Get reference to the current map value.
lvar_mapping_iterator_t
lvar_mapping_find(map, key)
Find the specified key in lvar_mapping_t.
lvar_mapping_iterator_t
lvar_mapping_insert(map, key, val)
Insert new ( 'lvar_locator_t' , 'lvar_locator_t' ) pair into lvar_mapping_t.
 
lvar_mapping_erase(map, p)
Erase current element from lvar_mapping_t.
 
lvar_mapping_clear(map)
Clear lvar_mapping_t.
size_t
lvar_mapping_size(map)
Get size of lvar_mapping_t.
 
lvar_mapping_free(map)
Delete lvar_mapping_t instance.
lvar_mapping_t
lvar_mapping_new()
Create a new lvar_mapping_t instance.
udcall_map_iterator_t
udcall_map_begin(map)
Get iterator pointing to the beginning of udcall_map_t.
udcall_map_iterator_t
udcall_map_end(map)
Get iterator pointing to the end of udcall_map_t.
udcall_map_iterator_t
udcall_map_next(p)
Move to the next element.
udcall_map_iterator_t
udcall_map_prev(p)
Move to the previous element.
ea_t const &
udcall_map_first(p)
Get reference to the current map key.
udcall_t
udcall_map_second(p)
Get reference to the current map value.
udcall_map_iterator_t
udcall_map_find(map, key)
Find the specified key in udcall_map_t.
udcall_map_iterator_t
udcall_map_insert(map, key, val)
Insert new (ea_t, 'udcall_t' ) pair into udcall_map_t.
 
udcall_map_erase(map, p)
Erase current element from udcall_map_t.
 
udcall_map_clear(map)
Clear udcall_map_t.
size_t
udcall_map_size(map)
Get size of udcall_map_t.
 
udcall_map_free(map)
Delete udcall_map_t instance.
udcall_map_t *
udcall_map_new()
Create a new udcall_map_t instance.
user_cmts_iterator_t
user_cmts_begin(map)
Get iterator pointing to the beginning of user_cmts_t.
user_cmts_iterator_t
user_cmts_end(map)
Get iterator pointing to the end of user_cmts_t.
user_cmts_iterator_t
user_cmts_next(p)
Move to the next element.
user_cmts_iterator_t
user_cmts_prev(p)
Move to the previous element.
treeloc_t
user_cmts_first(p)
Get reference to the current map key.
citem_cmt_t
user_cmts_second(p)
Get reference to the current map value.
user_cmts_iterator_t
user_cmts_find(map, key)
Find the specified key in user_cmts_t.
user_cmts_iterator_t
user_cmts_insert(map, key, val)
Insert new ( 'treeloc_t' , 'citem_cmt_t' ) pair into user_cmts_t.
 
user_cmts_erase(map, p)
Erase current element from user_cmts_t.
 
user_cmts_clear(map)
Clear user_cmts_t.
size_t
user_cmts_size(map)
Get size of user_cmts_t.
 
user_cmts_free(map)
Delete user_cmts_t instance.
user_cmts_t
user_cmts_new()
Create a new user_cmts_t instance.
user_iflags_iterator_t
user_iflags_begin(map)
Get iterator pointing to the beginning of user_iflags_t.
user_iflags_iterator_t
user_iflags_end(map)
Get iterator pointing to the end of user_iflags_t.
user_iflags_iterator_t
user_iflags_next(p)
Move to the next element.
user_iflags_iterator_t
user_iflags_prev(p)
Move to the previous element.
citem_locator_t
user_iflags_first(p)
Get reference to the current map key.
user_iflags_iterator_t
user_iflags_find(map, key)
Find the specified key in user_iflags_t.
user_iflags_iterator_t
user_iflags_insert(map, key, val)
Insert new ( 'citem_locator_t' , int32) pair into user_iflags_t.
 
user_iflags_erase(map, p)
Erase current element from user_iflags_t.
 
user_iflags_clear(map)
Clear user_iflags_t.
size_t
user_iflags_size(map)
Get size of user_iflags_t.
 
user_iflags_free(map)
Delete user_iflags_t instance.
user_iflags_t
user_iflags_new()
Create a new user_iflags_t instance.
user_unions_iterator_t
user_unions_begin(map)
Get iterator pointing to the beginning of user_unions_t.
user_unions_iterator_t
user_unions_end(map)
Get iterator pointing to the end of user_unions_t.
user_unions_iterator_t
user_unions_next(p)
Move to the next element.
user_unions_iterator_t
user_unions_prev(p)
Move to the previous element.
ea_t const &
user_unions_first(p)
Get reference to the current map key.
intvec_t
user_unions_second(p)
Get reference to the current map value.
user_unions_iterator_t
user_unions_find(map, key)
Find the specified key in user_unions_t.
user_unions_iterator_t
user_unions_insert(map, key, val)
Insert new (ea_t, intvec_t) pair into user_unions_t.
 
user_unions_erase(map, p)
Erase current element from user_unions_t.
 
user_unions_clear(map)
Clear user_unions_t.
size_t
user_unions_size(map)
Get size of user_unions_t.
 
user_unions_free(map)
Delete user_unions_t instance.
user_unions_t
user_unions_new()
Create a new user_unions_t instance.
user_labels_iterator_t
user_labels_begin(map)
Get iterator pointing to the beginning of user_labels_t.
user_labels_iterator_t
user_labels_end(map)
Get iterator pointing to the end of user_labels_t.
user_labels_iterator_t
user_labels_next(p)
Move to the next element.
user_labels_iterator_t
user_labels_prev(p)
Move to the previous element.
int const &
user_labels_first(p)
Get reference to the current map key.
qstring &
user_labels_second(p)
Get reference to the current map value.
user_labels_iterator_t
user_labels_find(map, key)
Find the specified key in user_labels_t.
user_labels_iterator_t
user_labels_insert(map, key, val)
Insert new (int, qstring) pair into user_labels_t.
 
user_labels_erase(map, p)
Erase current element from user_labels_t.
 
user_labels_clear(map)
Clear user_labels_t.
size_t
user_labels_size(map)
Get size of user_labels_t.
 
user_labels_free(map)
Delete user_labels_t instance.
user_labels_t
user_labels_new()
Create a new user_labels_t instance.
eamap_iterator_t
eamap_begin(map)
Get iterator pointing to the beginning of eamap_t.
eamap_iterator_t
eamap_end(map)
Get iterator pointing to the end of eamap_t.
eamap_iterator_t
eamap_next(p)
Move to the next element.
eamap_iterator_t
eamap_prev(p)
Move to the previous element.
ea_t const &
eamap_first(p)
Get reference to the current map key.
cinsnptrvec_t
eamap_second(p)
Get reference to the current map value.
eamap_iterator_t
eamap_find(map, key)
Find the specified key in eamap_t.
eamap_iterator_t
eamap_insert(map, key, val)
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t.
 
eamap_erase(map, p)
Erase current element from eamap_t.
 
eamap_clear(map)
Clear eamap_t.
size_t
eamap_size(map)
Get size of eamap_t.
 
eamap_free(map)
Delete eamap_t instance.
eamap_t
eamap_new()
Create a new eamap_t instance.
boundaries_iterator_t
boundaries_begin(map)
Get iterator pointing to the beginning of boundaries_t.
boundaries_iterator_t
boundaries_end(map)
Get iterator pointing to the end of boundaries_t.
boundaries_iterator_t
boundaries_next(p)
Move to the next element.
boundaries_iterator_t
boundaries_prev(p)
Move to the previous element.
cinsn_t
boundaries_first(p)
Get reference to the current map key.
rangeset_t
boundaries_second(p)
Get reference to the current map value.
 
boundaries_erase(map, p)
Erase current element from boundaries_t.
 
boundaries_clear(map)
Clear boundaries_t.
size_t
boundaries_size(map)
Get size of boundaries_t.
 
boundaries_free(map)
Delete boundaries_t instance.
boundaries_t
boundaries_new()
Create a new boundaries_t instance.
block_chains_iterator_t
block_chains_begin(set)
Get iterator pointing to the beginning of 'block_chains_t' .
block_chains_iterator_t
block_chains_end(set)
Get iterator pointing to the end of 'block_chains_t' .
block_chains_iterator_t
block_chains_next(p)
Move to the next element.
block_chains_iterator_t
block_chains_prev(p)
Move to the previous element.
chain_t
block_chains_get(p)
Get reference to the current set value.
block_chains_iterator_t
block_chains_find(set, val)
Find the specified key in set 'block_chains_t' .
block_chains_iterator_t
block_chains_insert(set, val)
Insert new ( 'chain_t' ) into set 'block_chains_t' .
 
block_chains_erase(set, p)
Erase current element from 'block_chains_t' .
 
block_chains_clear(set)
Clear 'block_chains_t' .
size_t
block_chains_size(set)
Get size of 'block_chains_t' .
 
block_chains_free(set)
Delete 'block_chains_t' instance.
block_chains_t
block_chains_new()
Create a new 'block_chains_t' instance.
bool
is_allowed_on_small_struni(op)
Is the operator allowed on small structure or union?
bool
is_small_struni(tif)
Is a small structure or union?
 
decompile(ea, hf=None, flags=0)
 
citem_to_specific_type(self)
cast the citem_t object to its more specific type, either cexpr_t or cinsn_t.
 
property_op_to_typename(self)
 
cexpr_operands(self)
return a dictionary with the operands of a cexpr_t.
 
cinsn_details(self)
return the details pointer for the cinsn_t object depending on the value of its op member.
 
cblock_iter(self)
 
cblock_find(self, item)
 
cblock_index(self, item)
 
cblock_at(self, index)
 
cblock_remove(self, item)
qlist< cinsn_t >::iterator
cblock_insert(self, index, item)
insert(self, p) -> qlist< cinsn_t >::iterator insert(self, p, x) -> qlist_cinsn_t_iterator
 
cfunc_type(self)
Get the function's return type tinfo_t object.
 
lnot(e)
 
make_ref(e)
 
dereference(e, ptrsize, is_float=False)
 
call_helper(rettype, args, *rest)
 
new_block()
 
make_num(*args)
 
create_helper(*args)
 
install_hexrays_callback(callback)
Deprecated.
 
remove_hexrays_callback(callback)
Deprecated.
Variables
  MAX_SUPPORTED_STACK_SIZE = 1048576
  MAX_VLR_SIZE = 8
  CMP_NZ = 0
  CMP_Z = 1
  CMP_AE = 2
  CMP_B = 3
  CMP_A = 4
  CMP_BE = 5
  CMP_GT = 6
  CMP_GE = 7
  CMP_LT = 8
  CMP_LE = 9
  cvar = _ida_hexrays.cvar
  MAX_VALUE = 18446744073709551615
  MAX_SVALUE = 9223372036854775807
  MIN_SVALUE = -9223372036854775808
  NO_ACCESS = 0
  WRITE_ACCESS = 1
  READ_ACCESS = 2
  RW_ACCESS = 3
  MERR_OK = 0
  MERR_BLOCK = 1
  MERR_INTERR = -1
  MERR_INSN = -2
  MERR_MEM = -3
  MERR_BADBLK = -4
  MERR_BADSP = -5
  MERR_PROLOG = -6
  MERR_SWITCH = -7
  MERR_EXCEPTION = -8
  MERR_HUGESTACK = -9
  MERR_LVARS = -10
  MERR_BITNESS = -11
  MERR_BADCALL = -12
  MERR_BADFRAME = -13
  MERR_UNKTYPE = -14
  MERR_BADIDB = -15
  MERR_SIZEOF = -16
  MERR_REDO = -17
  MERR_CANCELED = -18
  MERR_RECDEPTH = -19
  MERR_OVERLAP = -20
  MERR_PARTINIT = -21
  MERR_COMPLEX = -22
  MERR_LICENSE = -23
  MERR_ONLY32 = -24
  MERR_ONLY64 = -25
  MERR_BUSY = -26
  MERR_FARPTR = -27
  MERR_EXTERN = -28
  MERR_FUNCSIZE = -29
  MERR_BADRANGES = -30
  MERR_STOP = -31
  MERR_MAX_ERR = 31
  MERR_LOOP = -32
  MUST_ACCESS = 0
  MAY_ACCESS = 1
  MAYMUST_ACCESS_MASK = 1
  ONE_ACCESS_TYPE = 32
  INCLUDE_SPOILED_REGS = 64
  EXCLUDE_PASS_REGS = 128
  FULL_XDSU = 256
  WITH_ASSERTS = 512
  EXCLUDE_VOLATILE = 1024
  INCLUDE_UNUSED_SRC = 2048
  INCLUDE_DEAD_RETREGS = 4096
  INCLUDE_RESTRICTED = 8192
  CALL_SPOILS_ONLY_ARGS = 16384
  m_nop = 0
  m_stx = 1
  m_ldx = 2
  m_ldc = 3
  m_mov = 4
  m_neg = 5
  m_lnot = 6
  m_bnot = 7
  m_xds = 8
  m_xdu = 9
  m_low = 10
  m_high = 11
  m_add = 12
  m_sub = 13
  m_mul = 14
  m_udiv = 15
  m_sdiv = 16
  m_umod = 17
  m_smod = 18
  m_or = 19
  m_and = 20
  m_xor = 21
  m_shl = 22
  m_shr = 23
  m_sar = 24
  m_cfadd = 25
  m_ofadd = 26
  m_cfshl = 27
  m_cfshr = 28
  m_sets = 29
  m_seto = 30
  m_setp = 31
  m_setnz = 32
  m_setz = 33
  m_setae = 34
  m_setb = 35
  m_seta = 36
  m_setbe = 37
  m_setg = 38
  m_setge = 39
  m_setl = 40
  m_setle = 41
  m_jcnd = 42
  m_jnz = 43
  m_jz = 44
  m_jae = 45
  m_jb = 46
  m_ja = 47
  m_jbe = 48
  m_jg = 49
  m_jge = 50
  m_jl = 51
  m_jle = 52
  m_jtbl = 53
  m_ijmp = 54
  m_goto = 55
  m_call = 56
  m_icall = 57
  m_ret = 58
  m_push = 59
  m_pop = 60
  m_und = 61
  m_ext = 62
  m_f2i = 63
  m_f2u = 64
  m_i2f = 65
  m_u2f = 66
  m_f2f = 67
  m_fneg = 68
  m_fadd = 69
  m_fsub = 70
  m_fmul = 71
  m_fdiv = 72
  mr_none = -1
  mr_cf = 0
  mr_zf = 1
  mr_sf = 2
  mr_of = 3
  mr_pf = 4
  cc_count = 5
  mr_cc = 5
  mr_first = 8
  NF_FIXED = 1
number format has been defined by the user
  NF_NEGDONE = 2
temporary internal bit: negation has been performed
  NF_BINVDONE = 4
temporary internal bit: inverting bits is done
  NF_NEGATE = 8
The user asked to negate the constant.
  NF_BITNOT = 16
The user asked to invert bits of the constant.
  NF_STROFF = 32
internal bit: used as stroff, valid iff 'is_stroff()'
  GUESSED_NONE = 0
  GUESSED_WEAK = 1
  GUESSED_FUNC = 2
  GUESSED_DATA = 3
  TS_NOELL = 134217728
  TS_SHRINK = 67108864
  TS_DONTREF = 33554432
  TS_MASK = 234881024
  SVW_INT = 0
  SVW_FLOAT = 1
  SVW_SOFT = 2
  LVINF_KEEP = 1
preserve saved user settings regardless of vars for example, if a var loses all its user-defined attributes or even gets destroyed, keep its 'lvar_saved_info_t' .
  LVINF_FORCE = 2
force allocation of a new variable.
  LVINF_NOPTR = 4
variable type should not be a pointer
  ULV_PRECISE_DEFEA = 1
Use precise defea's for lvar locations.
  bitset_width = 64
  bitset_align = 63
  bitset_shift = 6
  mop_z = 0
  mop_r = 1
  mop_n = 2
  mop_str = 3
  mop_d = 4
  mop_S = 5
  mop_v = 6
  mop_b = 7
  mop_f = 8
  mop_l = 9
  mop_a = 10
  mop_h = 11
  mop_c = 12
  mop_fn = 13
  mop_p = 14
  mop_sc = 15
  NOSIZE = -1
  SHINS_NUMADDR = 1
display definition addresses for numbers
  SHINS_VALNUM = 2
display value numbers
  SHINS_SHORT = 4
do not display use-def chains and other attrs
  SHINS_LDXEA = 8
display address of ldx expressions (not used)
  NO_SIDEFF = 0
  WITH_SIDEFF = 1
  ONLY_SIDEFF = 2
  ANY_REGSIZE = 128
  MAX_OPSIZE = 8
  DOUBLE_OPSIZE = 16
  OPROP_IMPDONE = 1
imported operand (a pointer) has been dereferenced
  OPROP_UDT = 2
a struct or union
  OPROP_FLOAT = 4
possibly floating value
  OPROP_CCFLAGS = 8
condition codes register value
  OPROP_UDEFVAL = 16
uses undefined value
  ROLE_UNK = 0
  ROLE_EMPTY = 1
  ROLE_MEMSET = 2
  ROLE_MEMSET32 = 3
  ROLE_MEMSET64 = 4
  ROLE_MEMCPY = 5
  ROLE_STRCPY = 6
  ROLE_STRLEN = 7
  ROLE_STRCAT = 8
  ROLE_TAIL = 9
  ROLE_BUG = 10
  ROLE_ALLOCA = 11
  ROLE_BSWAP = 12
  ROLE_PRESENT = 13
  ROLE_CONTAINING_RECORD = 14
  ROLE_FASTFAIL = 15
  ROLE_READFLAGS = 16
  ROLE_IS_MUL_OK = 17
  ROLE_SATURATED_MUL = 18
  ROLE_BITTEST = 19
  ROLE_BITTESTANDSET = 20
  ROLE_BITTESTANDRESET = 21
  ROLE_BITTESTANDCOMPLEMENT = 22
  ROLE_VA_ARG = 23
  ROLE_VA_COPY = 24
  ROLE_VA_START = 25
  ROLE_VA_END = 26
  ROLE_ROL = 27
  ROLE_ROR = 28
  ROLE_CFSUB3 = 29
  ROLE_OFSUB3 = 30
  ROLE_ABS = 31
  FUNC_NAME_MEMCPY = 'memcpy'
  FUNC_NAME_MEMSET = 'memset'
  FUNC_NAME_MEMSET32 = 'memset32'
  FUNC_NAME_MEMSET64 = 'memset64'
  FUNC_NAME_STRCPY = 'strcpy'
  FUNC_NAME_STRLEN = 'strlen'
  FUNC_NAME_STRCAT = 'strcat'
  FUNC_NAME_TAIL = 'tail'
  FUNC_NAME_VA_ARG = 'va_arg'
  FUNC_NAME_EMPTY = '$empty'
  FUNC_NAME_PRESENT = '$present'
  FUNC_NAME_CONTAINING_RECORD = 'CONTAINING_RECORD'
  FCI_PROP = 1
call has been propagated
  FCI_DEAD = 2
some return registers were determined dead
  FCI_FINAL = 4
call type is final, should not be changed
  FCI_NORET = 8
call does not return
  FCI_PURE = 16
pure function
  FCI_NOSIDE = 32
call does not have side effects
  FCI_SPLOK = 64
spoiled/visible_memory lists have been optimized.
  FCI_HASCALL = 128
A function is an synthetic helper combined from several instructions and at least one of them was a call to a real functions
  FCI_HASFMT = 256
printf- or scanf-style format string
  CHF_INITED = 1
is chain initialized? (valid only after lvar allocation)
  CHF_REPLACED = 2
chain operands have been replaced?
  CHF_OVER = 4
overlapped chain
  CHF_FAKE = 8
fake chain created by widen_chains()
  CHF_PASSTHRU = 16
pass-thru chain, must use the input variable to the block
  CHF_TERM = 32
terminating chain; the variable does not survive across the block
  SIZEOF_BLOCK_CHAINS = 56
  GCA_EMPTY = 1
include empty chains
  GCA_SPEC = 2
include chains for special registers
  GCA_ALLOC = 4
enumerate only allocated chains
  GCA_NALLOC = 8
enumerate only non-allocated chains
  GCA_OFIRST = 16
consider only chains of the first block
  GCA_OLAST = 32
consider only chains of the last block
  IPROP_OPTIONAL = 1
optional instruction
  IPROP_PERSIST = 2
persistent insn; they are not destroyed
  IPROP_WILDMATCH = 4
match multiple insns
  IPROP_CLNPOP = 8
(e.g.
  IPROP_FPINSN = 16
floating point insn
  IPROP_FARCALL = 32
call of a far function using push cs/call sequence
  IPROP_TAILCALL = 64
tail call
  IPROP_ASSERT = 128
assertion: usually mov #val, op.
  IPROP_SPLIT = 1792
the instruction has been split:
  IPROP_SPLIT1 = 256
into 1 byte
  IPROP_SPLIT2 = 512
into 2 bytes
  IPROP_SPLIT4 = 768
into 4 bytes
  IPROP_SPLIT8 = 1024
into 8 bytes
  IPROP_COMBINED = 2048
insn has been modified because of a partial reference
  IPROP_EXTSTX = 4096
this is m_ext propagated into m_stx
  IPROP_IGNLOWSRC = 8192
low part of the instruction source operand has been created artificially (this bit is used only for 'and x, 80...')
  IPROP_INV_JX = 16384
inverted conditional jump
  IPROP_WAS_NORET = 32768
was noret icall
  IPROP_MULTI_MOV = 65536
(example: STM on ARM may transfer multiple registers)
  IPROP_DONT_PROP = 131072
may not propagate
  IPROP_DONT_COMB = 262144
may not combine this instruction with others
  OPTI_ADDREXPRS = 1
optimize all address expressions (&x+N; &x-&y)
  OPTI_MINSTKREF = 2
may update minstkref
  OPTI_COMBINSNS = 4
may combine insns (only for optimize_insn)
  OPTI_NO_LDXOPT = 8
do not optimize low/high(ldx)
  EQ_IGNSIZE = 1
ignore operand sizes
  EQ_IGNCODE = 2
ignore instruction opcodes
  EQ_CMPDEST = 4
compare instruction destinations
  EQ_OPTINSN = 8
optimize mop_d operands
  BLT_NONE = 0
  BLT_STOP = 1
  BLT_0WAY = 2
  BLT_1WAY = 3
  BLT_2WAY = 4
  BLT_NWAY = 5
  BLT_XTRN = 6
  MBL_PRIV = 1
the specified are accepted (used in patterns)
  MBL_NONFAKE = 0
regular block
  MBL_FAKE = 2
fake block (after a tail call)
  MBL_GOTO = 4
this block is a goto target
  MBL_TCAL = 8
aritifical call block for tail calls
  MBL_PUSH = 16
needs "convert push/pop instructions"
  MBL_DMT64 = 32
needs "demote 64bits"
  MBL_COMB = 64
needs "combine" pass
  MBL_PROP = 128
needs 'propagation' pass
  MBL_DEAD = 256
needs "eliminate deads" pass
  MBL_LIST = 512
use/def lists are ready (not dirty)
  MBL_INCONST = 1024
inconsistent lists: we are building them
  MBL_CALL = 2048
call information has been built
  MBL_BACKPROP = 4096
performed backprop_cc
  MBL_NORET = 8192
dead end block: doesn't return execution control
  MBL_DSLOT = 16384
block for delay slot
  MBL_VALRANGES = 32768
should optimize using value ranges
  FD_BACKWARD = 0
search direction
  FD_FORWARD = 1
search direction
  FD_USE = 0
look for use
  FD_DEF = 2
look for definition
  FD_DIRTY = 4
by function calls and indirect memory access
  VR_AT_START = 0
at the block start (if M is NULL)
  VR_AT_END = 1
get value ranges after the instruction or at the block end, just after the last instruction (if M is NULL)
  VR_EXACT = 2
valrng size will be >= vivl.size
  WARN_VARARG_REGS = 0
  WARN_ILL_PURGED = 1
  WARN_ILL_FUNCTYPE = 2
  WARN_VARARG_TCAL = 3
  WARN_VARARG_NOSTK = 4
  WARN_VARARG_MANY = 5
  WARN_ADDR_OUTARGS = 6
  WARN_DEP_UNK_CALLS = 7
  WARN_ILL_ELLIPSIS = 8
  WARN_GUESSED_TYPE = 9
  WARN_EXP_LINVAR = 10
  WARN_WIDEN_CHAINS = 11
  WARN_BAD_PURGED = 12
  WARN_CBUILD_LOOPS = 13
  WARN_NO_SAVE_REST = 14
  WARN_ODD_INPUT_REG = 15
  WARN_ODD_ADDR_USE = 16
  WARN_MUST_RET_FP = 17
  WARN_ILL_FPU_STACK = 18
  WARN_SELFREF_PROP = 19
  WARN_WOULD_OVERLAP = 20
  WARN_ARRAY_INARG = 21
  WARN_MAX_ARGS = 22
  WARN_BAD_FIELD_TYPE = 23
  WARN_WRITE_CONST = 24
  WARN_BAD_RETVAR = 25
  WARN_FRAG_LVAR = 26
  WARN_HUGE_STKOFF = 27
  WARN_UNINITED_REG = 28
  WARN_FIXED_MACRO = 29
  WARN_WRONG_VA_OFF = 30
  WARN_CR_NOFIELD = 31
  WARN_CR_BADOFF = 32
  WARN_BAD_STROFF = 33
  WARN_BAD_VARSIZE = 34
  WARN_UNSUPP_REG = 35
  WARN_UNALIGNED_ARG = 36
  WARN_BAD_STD_TYPE = 37
  WARN_BAD_CALL_SP = 38
  WARN_MISSED_SWITCH = 39
  WARN_BAD_SP = 40
  WARN_BAD_STKPNT = 41
  WARN_UNDEF_LVAR = 42
  WARN_JUMPOUT = 43
  WARN_BAD_VALRNG = 44
  WARN_BAD_SHADOW = 45
  WARN_MAX = 46
  MMAT_ZERO = 0
  MMAT_GENERATED = 1
  MMAT_PREOPTIMIZED = 2
  MMAT_LOCOPT = 3
  MMAT_CALLS = 4
  MMAT_GLBOPT1 = 5
  MMAT_GLBOPT2 = 6
  MMAT_GLBOPT3 = 7
  MMAT_LVARS = 8
  MMIDX_GLBLOW = 0
  MMIDX_LVARS = 1
  MMIDX_RETADDR = 2
  MMIDX_SHADOW = 3
  MMIDX_ARGS = 4
  MMIDX_GLBHIGH = 5
  MBA_PRCDEFS = 1
use precise defeas for chain-allocated lvars
  MBA_NOFUNC = 2
function is not present, addresses might be wrong
  MBA_PATTERN = 4
microcode pattern, callinfo is present
  MBA_LOADED = 8
loaded gdl, no instructions (debugging)
  MBA_RETFP = 16
function returns floating point value
  MBA_SPLINFO = 32
(final_type ? idb_spoiled : spoiled_regs) is valid
  MBA_PASSREGS = 64
has 'mcallinfo_t::pass_regs'
  MBA_THUNK = 128
thunk function
  MBA_CMNSTK = 256
stkvars+stkargs should be considered as one area
  MBA_PREOPT = 512
preoptimization stage complete
  MBA_CMBBLK = 1024
request to combine blocks
  MBA_ASRTOK = 2048
assertions have been generated
  MBA_CALLS = 4096
callinfo has been built
  MBA_ASRPROP = 8192
assertion have been propagated
  MBA_SAVRST = 16384
save-restore analysis has been performed
  MBA_RETREF = 32768
return type has been refined
  MBA_GLBOPT = 65536
microcode has been optimized globally
  MBA_OVERVAR = 131072
an overlapped variable has been detected
  MBA_LVARS0 = 262144
lvar pre-allocation has been performed
  MBA_LVARS1 = 524288
lvar real allocation has been performed
  MBA_DELPAIRS = 1048576
pairs have been deleted once
  MBA_CHVARS = 2097152
can verify chain varnums
  MBA_SHORT = 4194304
use short display
  MBA_COLGDL = 8388608
display graph after each reduction
  MBA_INSGDL = 16777216
display instruction in graphs
  MBA_NICE = 33554432
apply transformations to c code
  MBA_REFINE = 67108864
may refine return value size
  MBA_RESERVED = 134217728
  MBA_WINGR32 = 268435456
use wingraph32
  MBA_NUMADDR = 536870912
display definition addresses for numbers
  MBA_VALNUM = 1073741824
display value numbers
  MBA_INITIAL_FLAGS = 1459618817
  MBA2_LVARNAMES_OK = 1
  MBA2_LVARS_RENAMED = 2
  MBA2_OVER_CHAINS = 4
  MBA2_VALRNG_DONE = 8
  MBA2_IS_CTR = 16
  MBA2_IS_DTR = 32
  MBA2_ARGIDX_OK = 64
  MBA2_NO_DUP_CALLS = 128
  MBA2_NO_DUP_LVARS = 256
  MBA2_INITIAL_FLAGS = 3
  MBA2_ALL_FLAGS = 511
  NALT_VD = 2
this index is not used by ida
  LOCOPT_ALL = 1
is not set, only dirty blocks will be optimized
  LOCOPT_REFINE = 2
refine return type, ok to fail
  LOCOPT_REFINE2 = 4
refine return type, try harder
  ACFL_LOCOPT = 1
perform local propagation (requires ACFL_BLKOPT)
  ACFL_BLKOPT = 2
perform interblock transformations
  ACFL_GLBPROP = 4
perform global propagation
  ACFL_GLBDEL = 8
perform dead code eliminition
  ACFL_GUESS = 16
may guess calling conventions
  CPBLK_FAST = 0
do not update minbstkref and minbargref
  CPBLK_MINREF = 1
update minbstkref and minbargref
  CPBLK_OPTJMP = 2
if it becomes useless
  GC_REGS_AND_STKVARS = 0
  GC_ASR = 1
  GC_XDSU = 2
  GC_END = 3
  GC_DIRTY_ALL = 63
  VDRUN_NEWFILE = 0
Create a new file or overwrite existing file.
  VDRUN_APPEND = 1
Create a new file or append to existing file.
  VDRUN_ONLYNEW = 2
Fail if output file already exists.
  VDRUN_SILENT = 4
Silent decompilation.
  VDRUN_SENDIDB = 8
Send problematic databases to hex-rays.com.
  VDRUN_MAYSTOP = 16
the user can cancel decompilation
  VDRUN_CMDLINE = 32
called from ida's command line
  VDRUN_STATS = 64
print statistics into vd_stats.txt
  VDRUN_LUMINA = 128
use lumina server
  GCO_STK = 0
a stack variable
  GCO_REG = 1
is register? otherwise a stack variable
  GCO_USE = 2
is source operand?
  GCO_DEF = 4
is destination operand?
  cot_empty = 0
  cot_comma = 1
  cot_asg = 2
  cot_asgbor = 3
  cot_asgxor = 4
  cot_asgband = 5
  cot_asgadd = 6
  cot_asgsub = 7
  cot_asgmul = 8
  cot_asgsshr = 9
  cot_asgushr = 10
  cot_asgshl = 11
  cot_asgsdiv = 12
  cot_asgudiv = 13
  cot_asgsmod = 14
  cot_asgumod = 15
  cot_tern = 16
  cot_lor = 17
  cot_land = 18
  cot_bor = 19
  cot_xor = 20
  cot_band = 21
  cot_eq = 22
  cot_ne = 23
  cot_sge = 24
  cot_uge = 25
  cot_sle = 26
  cot_ule = 27
  cot_sgt = 28
  cot_ugt = 29
  cot_slt = 30
  cot_ult = 31
  cot_sshr = 32
  cot_ushr = 33
  cot_shl = 34
  cot_add = 35
  cot_sub = 36
  cot_mul = 37
  cot_sdiv = 38
  cot_udiv = 39
  cot_smod = 40
  cot_umod = 41
  cot_fadd = 42
  cot_fsub = 43
  cot_fmul = 44
  cot_fdiv = 45
  cot_fneg = 46
  cot_neg = 47
  cot_cast = 48
  cot_lnot = 49
  cot_bnot = 50
  cot_ptr = 51
  cot_ref = 52
  cot_postinc = 53
  cot_postdec = 54
  cot_preinc = 55
  cot_predec = 56
  cot_call = 57
  cot_idx = 58
  cot_memref = 59
  cot_memptr = 60
  cot_num = 61
  cot_fnum = 62
  cot_str = 63
  cot_obj = 64
  cot_var = 65
  cot_insn = 66
  cot_sizeof = 67
  cot_helper = 68
  cot_type = 69
  cot_last = 69
  cit_empty = 70
  cit_block = 71
  cit_expr = 72
  cit_if = 73
  cit_for = 74
  cit_while = 75
  cit_do = 76
  cit_switch = 77
  cit_break = 78
  cit_continue = 79
  cit_return = 80
  cit_goto = 81
  cit_asm = 82
  cit_end = 83
  FX_NONE = 0
  FX_INFIX = 1
  FX_PREFIX = 2
  FX_POSTFIX = 3
  FX_TERNARY = 4
  COI_RL = 0
  COI_LR = 1
  COI_INT = 2
  COI_FP = 4
  COI_SH = 8
  COI_SGN = 16
  COI_SBN = 32
  CV_FAST = 0
do not maintain parent information
  CV_PRUNE = 1
this bit is set by visit...() to prune the walk
  CV_PARENTS = 2
maintain parent information
  CV_POST = 4
call the leave...() functions
  CV_RESTART = 8
restart enumeration at the top expr (apply_to_exprs)
  CV_INSNS = 16
visit only statements, prune all expressions do not use before the final ctree maturity because expressions may contain statements at intermediate stages (see cot_insn).
  CMAT_ZERO = 0
  CMAT_BUILT = 1
  CMAT_TRANS1 = 2
  CMAT_NICE = 3
  CMAT_TRANS2 = 4
  CMAT_CPA = 5
  CMAT_TRANS3 = 6
  CMAT_CASTED = 7
  CMAT_FINAL = 8
  ITP_EMPTY = 0
  ITP_ARG1 = 1
  ITP_ARG64 = 64
  ITP_BRACE1 = 65
  ITP_INNER_LAST = 65
  ITP_ASM = 66
  ITP_ELSE = 67
  ITP_DO = 68
  ITP_SEMI = 69
  ITP_CURLY1 = 70
  ITP_CURLY2 = 71
  ITP_BRACE2 = 72
  ITP_COLON = 73
  ITP_BLOCK1 = 74
  ITP_BLOCK2 = 75
  ITP_CASE = 1073741824
  ITP_SIGN = 536870912
  RETRIEVE_ONCE = 0
  RETRIEVE_ALWAYS = 1
  EXFL_CPADONE = 1
pointer arithmetic correction done
  EXFL_LVALUE = 2
expression is lvalue even if it doesn't look like it
  EXFL_FPOP = 4
floating point operation
  EXFL_ALONE = 8
standalone helper
  EXFL_CSTR = 16
string literal
  EXFL_PARTIAL = 32
type of the expression is considered partial
  EXFL_UNDEF = 64
expression uses undefined value
  EXFL_JUMPOUT = 128
jump out-of-function
  EXFL_VFTABLE = 256
is ptr to vftable (used for cot_memptr, cot_memref)
  EXFL_ALL = 511
all currently defined bits
  CALC_CURLY_BRACES = 0
  NO_CURLY_BRACES = 1
  USE_CURLY_BRACES = 2
  CFL_FINAL = 1
call type is final, should not be changed
  CFL_HELPER = 2
created from a decompiler helper function
  ANCHOR_INDEX = 536870911
  ANCHOR_MASK = -1073741824
  ANCHOR_CITEM = 0
c-tree item
  ANCHOR_LVAR = 1073741824
declaration of local variable
  ANCHOR_ITP = -2147483648
item type preciser
  ANCHOR_BLKCMT = 536870912
block comment (for ctree items)
  VDI_NONE = 0
  VDI_EXPR = 1
  VDI_LVAR = 2
  VDI_FUNC = 3
  VDI_TAIL = 4
  GLN_CURRENT = 1
get label of the current item
  GLN_GOTO_TARGET = 2
get goto target
  GLN_ALL = 3
get both
  FORBID_UNUSED_LABELS = 0
  ALLOW_UNUSED_LABELS = 1
  CIT_COLLAPSED = 1
display element in collapsed form
  CFS_BOUNDS = 1
'eamap' and 'boundaries' are ready
  CFS_TEXT = 2
'sv' is ready (and hdrlines)
  CFS_LVARS_HIDDEN = 4
local variable definitions are collapsed
  DECOMP_NO_WAIT = 1
do not display waitbox
  DECOMP_NO_CACHE = 2
do not use decompilation cache
  DECOMP_NO_FRAME = 4
do not use function frame info (only snippet mode)
  DECOMP_WARNINGS = 8
display warnings in the output window
  hxe_flowchart = 0
  hxe_stkpnts = 1
  hxe_prolog = 2
  hxe_microcode = 3
  hxe_preoptimized = 4
  hxe_locopt = 5
  hxe_prealloc = 6
  hxe_glbopt = 7
  hxe_structural = 8
  hxe_maturity = 9
  hxe_interr = 10
  hxe_combine = 11
  hxe_print_func = 12
  hxe_func_printed = 13
  hxe_resolve_stkaddrs = 14
  hxe_open_pseudocode = 100
  hxe_switch_pseudocode = 101
  hxe_refresh_pseudocode = 102
  hxe_close_pseudocode = 103
  hxe_keyboard = 104
  hxe_right_click = 105
  hxe_double_click = 106
  hxe_curpos = 107
  hxe_create_hint = 108
  hxe_text_ready = 109
  hxe_populating_popup = 110
  lxe_lvar_name_changed = 111
  lxe_lvar_type_changed = 112
  lxe_lvar_cmt_changed = 113
  lxe_lvar_mapping_changed = 114
  hxe_cmt_changed = 115
  USE_KEYBOARD = 0
  USE_MOUSE = 1
  HEXRAYS_API_MAGIC = 62699504545038339
  CMT_NONE = 0
  CMT_TAIL = 1
  CMT_BLOCK1 = 2
  CMT_BLOCK2 = 4
  CMT_LVAR = 8
  CMT_FUNC = 16
  CMT_ALL = 31
  VDUI_VISIBLE = 1
is visible?
  VDUI_VALID = 2
is valid?
  VDUI_LOCKED = 4
is locked?
  hx_user_numforms_begin = 0
  hx_user_numforms_end = 1
  hx_user_numforms_next = 2
  hx_user_numforms_prev = 3
  hx_user_numforms_first = 4
  hx_user_numforms_second = 5
  hx_user_numforms_find = 6
  hx_user_numforms_insert = 7
  hx_user_numforms_erase = 8
  hx_user_numforms_clear = 9
  hx_user_numforms_size = 10
  hx_user_numforms_free = 11
  hx_user_numforms_new = 12
  hx_lvar_mapping_begin = 13
  hx_lvar_mapping_end = 14
  hx_lvar_mapping_next = 15
  hx_lvar_mapping_prev = 16
  hx_lvar_mapping_first = 17
  hx_lvar_mapping_second = 18
  hx_lvar_mapping_find = 19
  hx_lvar_mapping_insert = 20
  hx_lvar_mapping_erase = 21
  hx_lvar_mapping_clear = 22
  hx_lvar_mapping_size = 23
  hx_lvar_mapping_free = 24
  hx_lvar_mapping_new = 25
  hx_udcall_map_begin = 26
  hx_udcall_map_end = 27
  hx_udcall_map_next = 28
  hx_udcall_map_prev = 29
  hx_udcall_map_first = 30
  hx_udcall_map_second = 31
  hx_udcall_map_find = 32
  hx_udcall_map_insert = 33
  hx_udcall_map_erase = 34
  hx_udcall_map_clear = 35
  hx_udcall_map_size = 36
  hx_udcall_map_free = 37
  hx_udcall_map_new = 38
  hx_user_cmts_begin = 39
  hx_user_cmts_end = 40
  hx_user_cmts_next = 41
  hx_user_cmts_prev = 42
  hx_user_cmts_first = 43
  hx_user_cmts_second = 44
  hx_user_cmts_find = 45
  hx_user_cmts_insert = 46
  hx_user_cmts_erase = 47
  hx_user_cmts_clear = 48
  hx_user_cmts_size = 49
  hx_user_cmts_free = 50
  hx_user_cmts_new = 51
  hx_user_iflags_begin = 52
  hx_user_iflags_end = 53
  hx_user_iflags_next = 54
  hx_user_iflags_prev = 55
  hx_user_iflags_first = 56
  hx_user_iflags_second = 57
  hx_user_iflags_find = 58
  hx_user_iflags_insert = 59
  hx_user_iflags_erase = 60
  hx_user_iflags_clear = 61
  hx_user_iflags_size = 62
  hx_user_iflags_free = 63
  hx_user_iflags_new = 64
  hx_user_unions_begin = 65
  hx_user_unions_end = 66
  hx_user_unions_next = 67
  hx_user_unions_prev = 68
  hx_user_unions_first = 69
  hx_user_unions_second = 70
  hx_user_unions_find = 71
  hx_user_unions_insert = 72
  hx_user_unions_erase = 73
  hx_user_unions_clear = 74
  hx_user_unions_size = 75
  hx_user_unions_free = 76
  hx_user_unions_new = 77
  hx_user_labels_begin = 78
  hx_user_labels_end = 79
  hx_user_labels_next = 80
  hx_user_labels_prev = 81
  hx_user_labels_first = 82
  hx_user_labels_second = 83
  hx_user_labels_find = 84
  hx_user_labels_insert = 85
  hx_user_labels_erase = 86
  hx_user_labels_clear = 87
  hx_user_labels_size = 88
  hx_user_labels_free = 89
  hx_user_labels_new = 90
  hx_eamap_begin = 91
  hx_eamap_end = 92
  hx_eamap_next = 93
  hx_eamap_prev = 94
  hx_eamap_first = 95
  hx_eamap_second = 96
  hx_eamap_find = 97
  hx_eamap_insert = 98
  hx_eamap_erase = 99
  hx_eamap_clear = 100
  hx_eamap_size = 101
  hx_eamap_free = 102
  hx_eamap_new = 103
  hx_boundaries_begin = 104
  hx_boundaries_end = 105
  hx_boundaries_next = 106
  hx_boundaries_prev = 107
  hx_boundaries_first = 108
  hx_boundaries_second = 109
  hx_boundaries_find = 110
  hx_boundaries_insert = 111
  hx_boundaries_erase = 112
  hx_boundaries_clear = 113
  hx_boundaries_size = 114
  hx_boundaries_free = 115
  hx_boundaries_new = 116
  hx_block_chains_begin = 117
  hx_block_chains_end = 118
  hx_block_chains_next = 119
  hx_block_chains_prev = 120
  hx_block_chains_get = 121
  hx_block_chains_find = 122
  hx_block_chains_insert = 123
  hx_block_chains_erase = 124
  hx_block_chains_clear = 125
  hx_block_chains_size = 126
  hx_block_chains_free = 127
  hx_block_chains_new = 128
  hx_valrng_t_clear = 129
  hx_valrng_t_copy = 130
  hx_valrng_t_assign = 131
  hx_valrng_t_compare = 132
  hx_valrng_t_set_eq = 133
  hx_valrng_t_set_cmp = 134
  hx_valrng_t_reduce_size = 135
  hx_valrng_t_intersect_with = 136
  hx_valrng_t_unite_with = 137
  hx_valrng_t_inverse = 138
  hx_valrng_t_has = 139
  hx_valrng_t_print = 140
  hx_valrng_t_dstr = 141
  hx_valrng_t_cvt_to_single_value = 142
  hx_valrng_t_cvt_to_cmp = 143
  hx_get_merror_desc = 144
  hx_reg2mreg = 145
  hx_mreg2reg = 146
  hx_install_optinsn_handler = 147
  hx_remove_optinsn_handler = 148
  hx_install_optblock_handler = 149
  hx_remove_optblock_handler = 150
  hx_must_mcode_close_block = 151
  hx_is_mcode_propagatable = 152
  hx_negate_mcode_relation = 153
  hx_swap_mcode_relation = 154
  hx_get_signed_mcode = 155
  hx_get_unsigned_mcode = 156
  hx_mcode_modifies_d = 157
  hx_operand_locator_t_compare = 158
  hx_vd_printer_t_print = 159
  hx_file_printer_t_print = 160
  hx_qstring_printer_t_print = 161
  hx_dstr = 162
  hx_is_type_correct = 163
  hx_is_small_udt = 164
  hx_is_nonbool_type = 165
  hx_is_bool_type = 166
  hx_partial_type_num = 167
  hx_get_float_type = 168
  hx_get_int_type_by_width_and_sign = 169
  hx_get_unk_type = 170
  hx_dummy_ptrtype = 171
  hx_get_member_type = 172
  hx_make_pointer = 173
  hx_create_typedef = 174
  hx_get_type = 175
  hx_set_type = 176
  hx_vdloc_t_dstr = 177
  hx_vdloc_t_compare = 178
  hx_vdloc_t_is_aliasable = 179
  hx_print_vdloc = 180
  hx_arglocs_overlap = 181
  hx_lvar_locator_t_compare = 182
  hx_lvar_locator_t_dstr = 183
  hx_lvar_t_dstr = 184
  hx_lvar_t_is_promoted_arg = 185
  hx_lvar_t_accepts_type = 186
  hx_lvar_t_set_lvar_type = 187
  hx_lvar_t_set_width = 188
  hx_lvar_t_append_list = 189
  hx_lvars_t_find_stkvar = 190
  hx_lvars_t_find = 191
  hx_lvars_t_find_lvar = 192
  hx_restore_user_lvar_settings = 193
  hx_save_user_lvar_settings = 194
  hx_modify_user_lvars = 195
  hx_restore_user_defined_calls = 196
  hx_save_user_defined_calls = 197
  hx_parse_user_call = 198
  hx_convert_to_user_call = 199
  hx_install_microcode_filter = 200
  hx_udc_filter_t_init = 201
  hx_udc_filter_t_apply = 202
  hx_bitset_t_bitset_t = 203
  hx_bitset_t_copy = 204
  hx_bitset_t_add = 205
  hx_bitset_t_add_ = 206
  hx_bitset_t_add__ = 207
  hx_bitset_t_sub = 208
  hx_bitset_t_sub_ = 209
  hx_bitset_t_sub__ = 210
  hx_bitset_t_cut_at = 211
  hx_bitset_t_shift_down = 212
  hx_bitset_t_has = 213
  hx_bitset_t_has_all = 214
  hx_bitset_t_has_any = 215
  hx_bitset_t_dstr = 216
  hx_bitset_t_empty = 217
  hx_bitset_t_count = 218
  hx_bitset_t_count_ = 219
  hx_bitset_t_last = 220
  hx_bitset_t_fill_with_ones = 221
  hx_bitset_t_has_common = 222
  hx_bitset_t_intersect = 223
  hx_bitset_t_is_subset_of = 224
  hx_bitset_t_compare = 225
  hx_bitset_t_goup = 226
  hx_ivl_t_dstr = 227
  hx_ivl_t_compare = 228
  hx_ivlset_t_add = 229
  hx_ivlset_t_add_ = 230
  hx_ivlset_t_addmasked = 231
  hx_ivlset_t_sub = 232
  hx_ivlset_t_sub_ = 233
  hx_ivlset_t_has_common = 234
  hx_ivlset_t_print = 235
  hx_ivlset_t_dstr = 236
  hx_ivlset_t_count = 237
  hx_ivlset_t_has_common_ = 238
  hx_ivlset_t_contains = 239
  hx_ivlset_t_includes = 240
  hx_ivlset_t_intersect = 241
  hx_ivlset_t_compare = 242
  hx_get_mreg_name = 243
  hx_rlist_t_print = 244
  hx_rlist_t_dstr = 245
  hx_mlist_t_addmem = 246
  hx_mlist_t_print = 247
  hx_mlist_t_dstr = 248
  hx_mlist_t_compare = 249
  hx_lvar_ref_t_compare = 250
  hx_lvar_ref_t_var = 251
  hx_stkvar_ref_t_compare = 252
  hx_stkvar_ref_t_get_stkvar = 253
  hx_fnumber_t_print = 254
  hx_fnumber_t_dstr = 255
  hx_mop_t_copy = 256
  hx_mop_t_assign = 257
  hx_mop_t_swap = 258
  hx_mop_t_erase = 259
  hx_mop_t_print = 260
  hx_mop_t_dstr = 261
  hx_mop_t_create_from_mlist = 262
  hx_mop_t_create_from_ivlset = 263
  hx_mop_t_create_from_vdloc = 264
  hx_mop_t_create_from_scattered_vdloc = 265
  hx_mop_t_create_from_insn = 266
  hx_mop_t_make_number = 267
  hx_mop_t_make_fpnum = 268
  hx_mop_t_make_reg_pair = 269
  hx_mop_t_make_helper = 270
  hx_mop_t_is_bit_reg = 271
  hx_mop_t_may_use_aliased_memory = 272
  hx_mop_t_is01 = 273
  hx_mop_t_is_sign_extended_from = 274
  hx_mop_t_is_zero_extended_from = 275
  hx_mop_t_equal_mops = 276
  hx_mop_t_lexcompare = 277
  hx_mop_t_for_all_ops = 278
  hx_mop_t_for_all_scattered_submops = 279
  hx_mop_t_is_constant = 280
  hx_mop_t_get_stkoff = 281
  hx_mop_t_make_low_half = 282
  hx_mop_t_make_high_half = 283
  hx_mop_t_make_first_half = 284
  hx_mop_t_make_second_half = 285
  hx_mop_t_shift_mop = 286
  hx_mop_t_change_size = 287
  hx_mop_t_preserve_side_effects = 288
  hx_mop_t_apply_ld_mcode = 289
  hx_mcallarg_t_print = 290
  hx_mcallarg_t_dstr = 291
  hx_mcallarg_t_set_regarg = 292
  hx_mcallinfo_t_lexcompare = 293
  hx_mcallinfo_t_set_type = 294
  hx_mcallinfo_t_get_type = 295
  hx_mcallinfo_t_print = 296
  hx_mcallinfo_t_dstr = 297
  hx_mcases_t_compare = 298
  hx_mcases_t_print = 299
  hx_mcases_t_dstr = 300
  hx_vivl_t_extend_to_cover = 301
  hx_vivl_t_intersect = 302
  hx_vivl_t_print = 303
  hx_vivl_t_dstr = 304
  hx_chain_t_print = 305
  hx_chain_t_dstr = 306
  hx_chain_t_append_list = 307
  hx_block_chains_t_get_chain = 308
  hx_block_chains_t_print = 309
  hx_block_chains_t_dstr = 310
  hx_graph_chains_t_for_all_chains = 311
  hx_graph_chains_t_release = 312
  hx_minsn_t_init = 313
  hx_minsn_t_copy = 314
  hx_minsn_t_swap = 315
  hx_minsn_t_print = 316
  hx_minsn_t_dstr = 317
  hx_minsn_t_setaddr = 318
  hx_minsn_t_optimize_subtree = 319
  hx_minsn_t_for_all_ops = 320
  hx_minsn_t_for_all_insns = 321
  hx_minsn_t__make_nop = 322
  hx_minsn_t_equal_insns = 323
  hx_minsn_t_lexcompare = 324
  hx_minsn_t_is_noret_call = 325
  hx_minsn_t_is_helper = 326
  hx_minsn_t_find_call = 327
  hx_minsn_t_has_side_effects = 328
  hx_minsn_t_find_opcode = 329
  hx_minsn_t_find_ins_op = 330
  hx_minsn_t_find_num_op = 331
  hx_minsn_t_modifes_d = 332
  hx_minsn_t_is_between = 333
  hx_minsn_t_may_use_aliased_memory = 334
  hx_getf_reginsn = 335
  hx_getb_reginsn = 336
  hx_mblock_t_init = 337
  hx_mblock_t_print = 338
  hx_mblock_t_dump = 339
  hx_mblock_t_vdump_block = 340
  hx_mblock_t_insert_into_block = 341
  hx_mblock_t_remove_from_block = 342
  hx_mblock_t_for_all_insns = 343
  hx_mblock_t_for_all_ops = 344
  hx_mblock_t_for_all_uses = 345
  hx_mblock_t_optimize_insn = 346
  hx_mblock_t_optimize_block = 347
  hx_mblock_t_build_lists = 348
  hx_mblock_t_append_use_list = 349
  hx_mblock_t_append_def_list = 350
  hx_mblock_t_build_use_list = 351
  hx_mblock_t_build_def_list = 352
  hx_mblock_t_find_first_use = 353
  hx_mblock_t_find_redefinition = 354
  hx_mblock_t_is_rhs_redefined = 355
  hx_mblock_t_find_access = 356
  hx_mblock_t_get_valranges = 357
  hx_mbl_array_t_idaloc2vd = 358
  hx_mbl_array_t_vd2idaloc = 359
  hx_mbl_array_t_term = 360
  hx_mbl_array_t_optimize_local = 361
  hx_mbl_array_t_build_graph = 362
  hx_mbl_array_t_get_graph = 363
  hx_mbl_array_t_analyze_calls = 364
  hx_mbl_array_t_optimize_global = 365
  hx_mbl_array_t_alloc_lvars = 366
  hx_mbl_array_t_dump = 367
  hx_mbl_array_t_vdump_mba = 368
  hx_mbl_array_t_print = 369
  hx_mbl_array_t_verify = 370
  hx_mbl_array_t_mark_chains_dirty = 371
  hx_mbl_array_t_insert_block = 372
  hx_mbl_array_t_remove_block = 373
  hx_mbl_array_t_remove_empty_blocks = 374
  hx_mbl_array_t_combine_blocks = 375
  hx_mbl_array_t_for_all_ops = 376
  hx_mbl_array_t_for_all_insns = 377
  hx_mbl_array_t_for_all_topinsns = 378
  hx_mbl_array_t_find_mop = 379
  hx_mbl_array_t_arg = 380
  hx_mbl_array_t_serialize = 381
  hx_mbl_array_t_deserialize = 382
  hx_mbl_graph_t_is_accessed_globally = 383
  hx_mbl_graph_t_get_ud = 384
  hx_mbl_graph_t_get_du = 385
  hx_codegen_t_emit = 386
  hx_codegen_t_emit_ = 387
  hx_is_kreg = 388
  hx_get_temp_regs = 389
  hx_get_hexrays_version = 390
  hx_open_pseudocode = 391
  hx_close_pseudocode = 392
  hx_get_widget_vdui = 393
  hx_decompile_many = 394
  hx_hexrays_failure_t_desc = 395
  hx_send_database = 396
  hx_gco_info_t_append_to_list = 397
  hx_get_current_operand = 398
  hx_remitem = 399
  hx_negated_relation = 400
  hx_swapped_relation = 401
  hx_get_op_signness = 402
  hx_asgop = 403
  hx_asgop_revert = 404
  hx_cnumber_t_print = 405
  hx_cnumber_t_value = 406
  hx_cnumber_t_assign = 407
  hx_cnumber_t_compare = 408
  hx_var_ref_t_compare = 409
  hx_ctree_visitor_t_apply_to = 410
  hx_ctree_visitor_t_apply_to_exprs = 411
  hx_ctree_parentee_t_recalc_parent_types = 412
  hx_cfunc_parentee_t_calc_rvalue_type = 413
  hx_citem_locator_t_compare = 414
  hx_citem_t_contains_expr = 415
  hx_citem_t_contains_label = 416
  hx_citem_t_find_parent_of = 417
  hx_citem_t_find_closest_addr = 418
  hx_cexpr_t_assign = 419
  hx_cexpr_t_compare = 420
  hx_cexpr_t_replace_by = 421
  hx_cexpr_t_cleanup = 422
  hx_cexpr_t_put_number = 423
  hx_cexpr_t_print1 = 424
  hx_cexpr_t_calc_type = 425
  hx_cexpr_t_equal_effect = 426
  hx_cexpr_t_is_child_of = 427
  hx_cexpr_t_contains_operator = 428
  hx_cexpr_t_get_high_nbit_bound = 429
  hx_cexpr_t_get_low_nbit_bound = 430
  hx_cexpr_t_requires_lvalue = 431
  hx_cexpr_t_has_side_effects = 432
  hx_cif_t_assign = 433
  hx_cif_t_compare = 434
  hx_cloop_t_assign = 435
  hx_cfor_t_compare = 436
  hx_cwhile_t_compare = 437
  hx_cdo_t_compare = 438
  hx_creturn_t_compare = 439
  hx_cgoto_t_compare = 440
  hx_casm_t_compare = 441
  hx_cinsn_t_assign = 442
  hx_cinsn_t_compare = 443
  hx_cinsn_t_replace_by = 444
  hx_cinsn_t_cleanup = 445
  hx_cinsn_t_new_insn = 446
  hx_cinsn_t_create_if = 447
  hx_cinsn_t_print = 448
  hx_cinsn_t_print1 = 449
  hx_cinsn_t_is_ordinary_flow = 450
  hx_cinsn_t_contains_insn = 451
  hx_cinsn_t_collect_free_breaks = 452
  hx_cinsn_t_collect_free_continues = 453
  hx_cblock_t_compare = 454
  hx_carglist_t_compare = 455
  hx_ccase_t_compare = 456
  hx_ccases_t_compare = 457
  hx_cswitch_t_compare = 458
  hx_ctree_item_t_get_memptr = 459
  hx_ctree_item_t_get_lvar = 460
  hx_ctree_item_t_get_ea = 461
  hx_ctree_item_t_get_label_num = 462
  hx_lnot = 463
  hx_new_block = 464
  hx_vcreate_helper = 465
  hx_vcall_helper = 466
  hx_make_num = 467
  hx_make_ref = 468
  hx_dereference = 469
  hx_save_user_labels = 470
  hx_save_user_cmts = 471
  hx_save_user_numforms = 472
  hx_save_user_iflags = 473
  hx_save_user_unions = 474
  hx_restore_user_labels = 475
  hx_restore_user_cmts = 476
  hx_restore_user_numforms = 477
  hx_restore_user_iflags = 478
  hx_restore_user_unions = 479
  hx_cfunc_t_build_c_tree = 480
  hx_cfunc_t_verify = 481
  hx_cfunc_t_print_dcl = 482
  hx_cfunc_t_print_func = 483
  hx_cfunc_t_get_func_type = 484
  hx_cfunc_t_get_lvars = 485
  hx_cfunc_t_get_stkoff_delta = 486
  hx_cfunc_t_find_label = 487
  hx_cfunc_t_remove_unused_labels = 488
  hx_cfunc_t_get_user_cmt = 489
  hx_cfunc_t_set_user_cmt = 490
  hx_cfunc_t_get_user_iflags = 491
  hx_cfunc_t_set_user_iflags = 492
  hx_cfunc_t_has_orphan_cmts = 493
  hx_cfunc_t_del_orphan_cmts = 494
  hx_cfunc_t_get_user_union_selection = 495
  hx_cfunc_t_set_user_union_selection = 496
  hx_cfunc_t_get_line_item = 497
  hx_cfunc_t_get_warnings = 498
  hx_cfunc_t_get_eamap = 499
  hx_cfunc_t_get_boundaries = 500
  hx_cfunc_t_get_pseudocode = 501
  hx_cfunc_t_gather_derefs = 502
  hx_cfunc_t_find_item_coords = 503
  hx_cfunc_t_cleanup = 504
  hx_decompile = 505
  hx_gen_microcode = 506
  hx_mark_cfunc_dirty = 507
  hx_clear_cached_cfuncs = 508
  hx_has_cached_cfunc = 509
  hx_get_ctype_name = 510
  hx_create_field_name = 511
  hx_install_hexrays_callback = 512
  hx_remove_hexrays_callback = 513
  hx_vdui_t_set_locked = 514
  hx_vdui_t_refresh_view = 515
  hx_vdui_t_refresh_ctext = 516
  hx_vdui_t_switch_to = 517
  hx_vdui_t_get_number = 518
  hx_vdui_t_get_current_label = 519
  hx_vdui_t_clear = 520
  hx_vdui_t_refresh_cpos = 521
  hx_vdui_t_get_current_item = 522
  hx_vdui_t_ui_rename_lvar = 523
  hx_vdui_t_rename_lvar = 524
  hx_vdui_t_ui_set_call_type = 525
  hx_vdui_t_ui_set_lvar_type = 526
  hx_vdui_t_set_lvar_type = 527
  hx_vdui_t_ui_edit_lvar_cmt = 528
  hx_vdui_t_set_lvar_cmt = 529
  hx_vdui_t_ui_map_lvar = 530
  hx_vdui_t_ui_unmap_lvar = 531
  hx_vdui_t_map_lvar = 532
  hx_vdui_t_set_strmem_type = 533
  hx_vdui_t_rename_strmem = 534
  hx_vdui_t_set_global_type = 535
  hx_vdui_t_rename_global = 536
  hx_vdui_t_rename_label = 537
  hx_vdui_t_jump_enter = 538
  hx_vdui_t_ctree_to_disasm = 539
  hx_vdui_t_calc_cmt_type = 540
  hx_vdui_t_edit_cmt = 541
  hx_vdui_t_edit_func_cmt = 542
  hx_vdui_t_del_orphan_cmts = 543
  hx_vdui_t_set_num_radix = 544
  hx_vdui_t_set_num_enum = 545
  hx_vdui_t_set_num_stroff = 546
  hx_vdui_t_invert_sign = 547
  hx_vdui_t_invert_bits = 548
  hx_vdui_t_collapse_item = 549
  hx_vdui_t_collapse_lvars = 550
  hx_vdui_t_split_item = 551
  hx_hexrays_alloc = 552
  hx_hexrays_free = 553
  hx_vdui_t_set_noptr_lvar = 554
  hx_select_udt_by_offset = 555
  hx_mblock_t_get_valranges_ = 556
  hx_cfunc_t_refresh_func_ctext = 557
  hx_checkout_hexrays_license = 558
  hx_mbl_array_t_copy_block = 559
  hx_mblock_t_optimize_useless_jump = 560
  hx_mblock_t_get_reginsn_qty = 561
  __package__ = None
  k = 'voff_t_undef'
Function Details

user_iflags_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - user_iflags_iterator_t)
Returns: int32 const &

init_hexrays_plugin(flags=0)

 

Initialize your plugin for hex-rays decompiler. This function must be called before calling any other decompiler function. It initializes the pointer to the dispatcher.

Parameters:
  • flags - reserved, must be 0 (C++: int)
Returns: bool
true if the decompiler exists and the dispatcher pointer is ready to use.

get_widget_vdui(f)

 

Get the 'vdui_t' instance associated to the TWidget

Parameters:
  • f - pointer to window (C++: TWidget *)
Returns: vdui_t
a vdui_t *, or NULL

boundaries_find(map, key)

 

Find the specified key in boundaries_t.

Parameters:
  • map, (C++ - const boundaries_t *)
  • key, (C++ - const cinsn_t *&)
Returns: boundaries_iterator_t

boundaries_insert(map, key, val)

 

Insert new ( 'cinsn_t' *, 'rangeset_t' ) pair into boundaries_t.

Parameters:
  • map, (C++ - boundaries_t *)
  • key, (C++ - const cinsn_t *&)
  • val, (C++ - const rangeset_t &)
Returns: boundaries_iterator_t

get_merror_desc(code, mba)

 

Get textual description of an error code

Parameters:
  • code - Microcode error codes (C++: merror_t)
  • mba - the microcode array (C++: mbl_array_t *)
Returns: ea_t
the error address

reg2mreg(reg)

 

Map a processor register to microregister.

Parameters:
  • reg - processor register number (C++: int)
Returns: mreg_t
microregister register id or mr_none

mreg2reg(reg, width)

 

Map a microregister to processor register.

Parameters:
  • reg - microregister number (C++: mreg_t)
  • width - size of microregister in bytes (C++: int)
Returns: int
processor register id or -1

must_mcode_close_block(mcode, including_calls)

 

Must an instruction with the given opcode be the last one in a block? Such opcodes are called closing opcodes.

Parameters:
  • mcode - instruction opcode (C++: mcode_t)
  • including_calls - should m_call/m_icall be considered as the closing opcodes? If this function returns true, the opcode cannot appear in the middle of a block. Calls are a special case because before MMAT_CALLS they are closing opcodes. Afteer MMAT_CALLS that are not considered as closing opcodes. (C++: bool)
Returns: bool

is_mcode_propagatable(mcode)

 

May opcode be propagated? Such opcodes can be used in sub-instructions (nested instructions) There is a handful of non-propagatable opcodes, like jumps, ret, nop, etc All other regular opcodes are propagatable and may appear in a nested instruction.

Parameters:
  • mcode, (C++ - mcode_t)
Returns: bool

dstr(tif)

 

Print the specified type info. This function can be used from a debugger by typing "tif->dstr()"

Parameters:
  • tif, (C++ - const tinfo_t *)
Returns: char const *

is_type_correct(ptr)

 

Verify a type string.

Parameters:
  • ptr, (C++ - const type_t *)
Returns: bool
true if type string is correct

is_small_udt(tif)

 

Is a small structure or union?

Parameters:
  • tif, (C++ - const tinfo_t &)
Returns: bool
true if the type is a small UDT (user defined type). Small UDTs fit into a register (or pair or registers) as a rule.

is_nonbool_type(type)

 

Is definitely a non-boolean type?

Parameters:
  • type, (C++ - const tinfo_t &)
Returns: bool
true if the type is a non-boolean type (non bool and well defined)

is_bool_type(type)

 

Is a boolean type?

Parameters:
  • type, (C++ - const tinfo_t &)
Returns: bool
true if the type is a boolean type

is_ptr_or_array(t)

 

Is a pointer or array type?

Parameters:
  • t, (C++ - type_t)
Returns: bool

is_paf(t)

 

Is a pointer, array, or function type?

Parameters:
  • t, (C++ - type_t)
Returns: bool

is_inplace_def(type)

 

Is struct/union/enum definition (not declaration)?

Parameters:
  • type, (C++ - const tinfo_t &)
Returns: bool

partial_type_num(type)

 

Calculate number of partial subtypes.

Parameters:
  • type, (C++ - const tinfo_t &)
Returns: int
number of partial subtypes. The bigger is this number, the uglier is the type.

get_float_type(width)

 

Get a type of a floating point value with the specified width

Parameters:
  • width - width of the desired type (C++: int)
Returns: tinfo_t
type info object

get_int_type_by_width_and_sign(srcwidth, sign)

 

Create a type info by width and sign. Returns a simple type (examples: int, short) with the given width and sign.

Parameters:
  • srcwidth - size of the type in bytes (C++: int)
  • sign - sign of the type (C++: type_sign_t)
Returns: tinfo_t

get_unk_type(size)

 

Create a partial type info by width. Returns a partially defined type (examples: _DWORD, _BYTE) with the given width.

Parameters:
  • size - size of the type in bytes (C++: int)
Returns: tinfo_t

dummy_ptrtype(ptrsize, isfp)

 

Generate a dummy pointer type

Parameters:
  • ptrsize - size of pointed object (C++: int)
  • isfp - is floating point object? (C++: bool)
Returns: tinfo_t

get_member_type(mptr, type)

 

Get type of a structure field. This function performs validity checks of the field type. Wrong types are rejected.

Parameters:
  • mptr - structure field (C++: const member_t *)
  • type - pointer to the variable where the type is returned. This parameter can be NULL. (C++: tinfo_t *)
Returns: bool
false if failed

make_pointer(type)

 

Create a pointer type. This function performs the following conversion: "type" -> "type*"

Parameters:
  • type - object type. (C++: const tinfo_t &)
Returns: tinfo_t
"type*". for example, if 'char' is passed as the argument,

create_typedef(name)

 
  create_typedef(n) -> tinfo_t


Create a reference to a named type.

@param name: type name (C++: const char *)
@return: type which refers to the specified name. For example, if name
         is "DWORD", the type info which refers to "DWORD" is created.
  

Returns: tinfo_t

get_type(id, tif, guess)

 

Get a global type. Global types are types of addressable objects and struct/union/enum types

Parameters:
  • id - address or id of the object (C++: uval_t)
  • tif - buffer for the answer (C++: tinfo_t *)
  • guess - what kind of types to consider (C++: type_source_t)
Returns: bool
success

set_type(id, tif, source, force=False)

 

Set a global type.

Parameters:
  • id - address or id of the object (C++: uval_t)
  • tif - new type info (C++: const tinfo_t &)
  • source - where the type comes from (C++: type_source_t)
  • force - true means to set the type as is, false means to merge the new type with the possibly existing old type info. (C++: bool)
Returns: bool
success

print_vdloc(loc, nbytes)

 

Print vdloc. Since vdloc does not always carry the size info, we pass it as NBYTES..

Parameters:
  • loc, (C++ - const vdloc_t &)
  • nbytes, (C++ - int)

arglocs_overlap(loc1, w1, loc2, w2)

 

Do two arglocs overlap?

Parameters:
  • loc1, (C++ - const vdloc_t &)
  • w1, (C++ - size_t)
  • loc2, (C++ - const vdloc_t &)
  • w2, (C++ - size_t)
Returns: bool

restore_user_lvar_settings(lvinf, func_ea)

 

Restore user defined local variable settings in the database.

Parameters:
  • lvinf - ptr to output buffer (C++: lvar_uservec_t *)
  • func_ea - entry address of the function (C++: ea_t)
Returns: bool
success

save_user_lvar_settings(func_ea, lvinf)

 

Save user defined local variable settings into the database.

Parameters:
  • func_ea - entry address of the function (C++: ea_t)
  • lvinf - user-specified info about local variables (C++: const lvar_uservec_t &)

modify_user_lvars(entry_ea, mlv)

 

Modify saved local variable settings.

Parameters:
  • entry_ea - function start address (C++: ea_t)
  • mlv - local variable modifier (C++: user_lvar_modifier_t &)
Returns: bool
true if modified variables

restore_user_defined_calls(udcalls, func_ea)

 

Restore user defined function calls from the database.

Parameters:
  • udcalls - ptr to output buffer (C++: udcall_map_t *)
  • func_ea - entry address of the function (C++: ea_t)
Returns: bool
success

save_user_defined_calls(func_ea, udcalls)

 

Save user defined local function calls into the database.

Parameters:
  • func_ea - entry address of the function (C++: ea_t)
  • udcalls - user-specified info about user defined function calls (C++: const udcall_map_t &)

parse_user_call(udc, decl, silent)

 

Convert function type declaration into internal structure

Parameters:
  • udc - - pointer to output structure (C++: udcall_t *)
  • decl - - function type declaration (C++: const char *)
  • silent - - if TRUE: do not show warning in case of incorrect type (C++: bool)
Returns: bool
success

convert_to_user_call(udc, cdg)

 

try to generate user-defined call for an instruction

Parameters:
  • udc, (C++ - const udcall_t &)
  • cdg, (C++ - codegen_t &)
Returns: merror_t
Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif)

install_microcode_filter(filter, install=True)

 

register/unregister non-standard microcode generator

Parameters:
  • filter - - microcode generator object (C++: microcode_filter_t *)
  • install - - TRUE - register the object, FALSE - unregister (C++: bool)

getf_reginsn(ins)

 

Skip assertions forward.

Parameters:
  • ins, (C++ - const minsn_t *)
Returns: minsn_t

getb_reginsn(ins)

 

Skip assertions backward.

Parameters:
  • ins, (C++ - const minsn_t *)
Returns: minsn_t

is_kreg(r)

 

Is a kernel register?

Parameters:
  • r, (C++ - mreg_t)
Returns: bool

get_temp_regs()

 

Get list of temporary registers. Tempregs are temporary registers that are used during code generation. They do not map to regular processor registers. They are used only to store temporary values during execution of one instruction. Tempregs may not be used to pass a value from one block to another. In other words, at the end of a block all tempregs must be dead.

Returns: mlist_t

get_hexrays_version()

 

Get decompiler version. The returned string is of the form <major>.<minor>.<revision>.<build-date>

Returns: char const *
pointer to version string. For example: "2.0.0.140605"

checkout_hexrays_license(silent)

 

Check out a floating decompiler license. This function will display a dialog box if the license is not available. For non-floating licenses this function is effectively no-op. It is not necessary to call this function before decompiling. If the license was not checked out, the decompiler will automatically do it. This function can be used to check out a license in advance and ensure that a license is available.

Parameters:
  • silent - silently fail if the license can not be checked out. (C++: bool)
Returns: bool
false if failed

open_pseudocode(ea, new_window)

 

Open pseudocode window. The specified function is decompiled and the pseudocode window is opened.

Parameters:
  • ea - function to decompile (C++: ea_t)
  • new_window - 0:reuse existing window; 1:open new window; -1: reuse existing window if the current view is pseudocode (C++: int)
Returns: vdui_t
false if failed

close_pseudocode(f)

 

Close pseudocode window.

Parameters:
  • f - pointer to window (C++: TWidget *)
Returns: bool
false if failed

decompile_many(outfile, funcaddrs, flags)

 

Batch decompilation. Decompile all or the specified functions

Parameters:
  • outfile - name of the output file (C++: const char *)
  • funcaddrs - list of functions to decompile. If NULL or empty, then decompile all nonlib functions (C++: eavec_t *)
  • flags - Batch decompilation bits (C++: int)
Returns: bool
true if no internal error occurred and the user has not cancelled decompilation

send_database(err, silent)

 

Send the database to Hex-Rays. This function sends the current database to the Hex-Rays server. The database is sent in the compressed form over an encrypted (SSL) connection.

Parameters:
  • err - failure description object. Empty hexrays_failure_t object can be used if error information is not available. (C++: const hexrays_failure_t &)
  • silent - if false, a dialog box will be displayed before sending the database. (C++: bool)

get_current_operand(out)

 

Get the instruction operand under the cursor. This function determines the operand that is under the cursor in the active disassembly listing. If the operand refers to a register or stack variable, it return true.

Parameters:
  • out, (C++ - gco_info_t *)
Returns: bool

negated_relation(op)

 

Negate a comparison operator. For example, cot_sge becomes cot_slt.

Parameters:
  • op, (C++ - ctype_t)
Returns: ctype_t

swapped_relation(op)

 

Swap a comparison operator. For example, cot_sge becomes cot_sle.

Parameters:
  • op, (C++ - ctype_t)
Returns: ctype_t

get_op_signness(op)

 

Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv.

Parameters:
  • op, (C++ - ctype_t)
Returns: type_sign_t

asgop(cop)

 

Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd.

Parameters:
  • cop, (C++ - ctype_t)
Returns: ctype_t

asgop_revert(cop)

 

Convert assignment operator into plain operator. For example, cot_asgadd returns cot_add

Parameters:
  • cop, (C++ - ctype_t)
Returns: ctype_t
cot_empty is the input operator is not an assignment operator.

op_uses_x(op)

 

Does operator use the 'x' field of 'cexpr_t' ?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

op_uses_y(op)

 

Does operator use the 'y' field of 'cexpr_t' ?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

op_uses_z(op)

 

Does operator use the 'z' field of 'cexpr_t' ?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_binary(op)

 

Is binary operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_unary(op)

 

Is unary operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_relational(op)

 

Is comparison operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_assignment(op)

 

Is assignment operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_prepost(op)

 

Is pre/post increment/decrement operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_commutative(op)

 

Is commutative operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_additive(op)

 

Is additive operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_multiplicative(op)

 

Is multiplicative operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_bitop(op)

 

Is bit related operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_logical(op)

 

Is logical operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_loop(op)

 

Is loop statement code?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_break_consumer(op)

 

Does a break statement influence the specified statement code?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_lvalue(op)

 

Is Lvalue operator?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

accepts_small_udts(op)

 

Is the operator allowed on small structure or union?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

save_user_labels(func_ea, user_labels)

 

Save user defined labels into the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
  • user_labels - collection of user defined labels (C++: const user_labels_t *)

save_user_cmts(func_ea, user_cmts)

 

Save user defined comments into the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
  • user_cmts - collection of user defined comments (C++: const user_cmts_t *)

save_user_numforms(func_ea, numforms)

 

Save user defined number formats into the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
  • numforms - collection of user defined comments (C++: const user_numforms_t *)

save_user_iflags(func_ea, iflags)

 

Save user defined citem iflags into the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
  • iflags - collection of user defined citem iflags (C++: const user_iflags_t *)

save_user_unions(func_ea, unions)

 

Save user defined union field selections into the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
  • unions - collection of union field selections (C++: const user_unions_t *)

restore_user_labels(func_ea)

 

Restore user defined labels from the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
Returns: user_labels_t
collection of user defined labels. The returned object must be deleted by the caller using delete_user_labels()

restore_user_cmts(func_ea)

 

Restore user defined comments from the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
Returns: user_cmts_t
collection of user defined comments. The returned object must be deleted by the caller using delete_user_cmts()

restore_user_numforms(func_ea)

 

Restore user defined number formats from the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
Returns: user_numforms_t
collection of user defined number formats. The returned object must be deleted by the caller using delete_user_numforms()

restore_user_iflags(func_ea)

 

Restore user defined citem iflags from the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
Returns: user_iflags_t
collection of user defined iflags. The returned object must be deleted by the caller using delete_user_iflags()

restore_user_unions(func_ea)

 

Restore user defined union field selections from the database.

Parameters:
  • func_ea - the entry address of the function (C++: ea_t)
Returns: user_unions_t
collection of union field selections The returned object must be deleted by the caller using delete_user_unions()

decompile_func(pfn, hf, flags=0)

 

Decompile a function. Multiple decompilations of the same function return the same object.

Parameters:
  • pfn - pointer to function to decompile (C++: func_t *)
  • hf - extended error information (if failed) (C++: hexrays_failure_t *)
  • flags - bitwise combination of decompile() flags ... bits (C++: int)
Returns: cfuncptr_t
pointer to the decompilation result (a reference counted pointer). NULL if failed.

gen_microcode(mbr, hf, retlist=None, flags=0, reqmat=MMAT_GLBOPT3)

 

Generate microcode of an arbitrary code snippet

Parameters:
  • mbr - snippet ranges (C++: const mba_ranges_t &)
  • hf - extended error information (if failed) (C++: hexrays_failure_t *)
  • retlist - list of registers the snippet returns (C++: const mlist_t *)
  • flags - bitwise combination of decompile() flags ... bits (C++: int)
  • reqmat - required microcode maturity (C++: mba_maturity_t)
Returns: mbl_array_t
pointer to the microcode, NULL if failed.

mark_cfunc_dirty(ea, close_views=False)

 

Flush the cached decompilation results. Erases a cache entry for the specified function.

Parameters:
  • ea - function to erase from the cache (C++: ea_t)
  • close_views - close pseudocode windows that show the function (C++: bool)
Returns: bool
if a cache entry existed.

has_cached_cfunc(ea)

 

Do we have a cached decompilation result for 'ea'?

Parameters:
  • ea, (C++ - ea_t)
Returns: bool

select_udt_by_offset(udts, ops, applicator)

 

Select UDT

Parameters:
  • udts - list of UDT tinfo_t for the selection, if NULL or empty then UDTs from the "Local types" will be used (C++: const qvector < tinfo_t > *)
  • ops - operands (C++: const ui_stroff_ops_t &)
  • applicator, (C++ - ui_stroff_applicator_t &)
Returns: int

user_numforms_begin(map)

 

Get iterator pointing to the beginning of user_numforms_t.

Parameters:
  • map, (C++ - const user_numforms_t *)
Returns: user_numforms_iterator_t

user_numforms_end(map)

 

Get iterator pointing to the end of user_numforms_t.

Parameters:
  • map, (C++ - const user_numforms_t *)
Returns: user_numforms_iterator_t

user_numforms_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - user_numforms_iterator_t)
Returns: user_numforms_iterator_t

user_numforms_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - user_numforms_iterator_t)
Returns: user_numforms_iterator_t

user_numforms_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - user_numforms_iterator_t)
Returns: operand_locator_t

user_numforms_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - user_numforms_iterator_t)
Returns: number_format_t

user_numforms_find(map, key)

 

Find the specified key in user_numforms_t.

Parameters:
  • map, (C++ - const user_numforms_t *)
  • key, (C++ - const operand_locator_t &)
Returns: user_numforms_iterator_t

user_numforms_insert(map, key, val)

 

Insert new ( 'operand_locator_t' , 'number_format_t' ) pair into user_numforms_t.

Parameters:
  • map, (C++ - user_numforms_t *)
  • key, (C++ - const operand_locator_t &)
  • val, (C++ - const number_format_t &)
Returns: user_numforms_iterator_t

user_numforms_erase(map, p)

 

Erase current element from user_numforms_t.

Parameters:
  • map, (C++ - user_numforms_t *)
  • p, (C++ - user_numforms_iterator_t)

user_numforms_clear(map)

 

Clear user_numforms_t.

Parameters:
  • map, (C++ - user_numforms_t *)

user_numforms_size(map)

 

Get size of user_numforms_t.

Parameters:
  • map, (C++ - user_numforms_t *)
Returns: size_t

user_numforms_free(map)

 

Delete user_numforms_t instance.

Parameters:
  • map, (C++ - user_numforms_t *)

lvar_mapping_begin(map)

 

Get iterator pointing to the beginning of lvar_mapping_t.

Parameters:
  • map, (C++ - const lvar_mapping_t *)
Returns: lvar_mapping_iterator_t

lvar_mapping_end(map)

 

Get iterator pointing to the end of lvar_mapping_t.

Parameters:
  • map, (C++ - const lvar_mapping_t *)
Returns: lvar_mapping_iterator_t

lvar_mapping_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - lvar_mapping_iterator_t)
Returns: lvar_mapping_iterator_t

lvar_mapping_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - lvar_mapping_iterator_t)
Returns: lvar_mapping_iterator_t

lvar_mapping_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - lvar_mapping_iterator_t)
Returns: lvar_locator_t

lvar_mapping_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - lvar_mapping_iterator_t)
Returns: lvar_locator_t

lvar_mapping_find(map, key)

 

Find the specified key in lvar_mapping_t.

Parameters:
  • map, (C++ - const lvar_mapping_t *)
  • key, (C++ - const lvar_locator_t &)
Returns: lvar_mapping_iterator_t

lvar_mapping_insert(map, key, val)

 

Insert new ( 'lvar_locator_t' , 'lvar_locator_t' ) pair into lvar_mapping_t.

Parameters:
  • map, (C++ - lvar_mapping_t *)
  • key, (C++ - const lvar_locator_t &)
  • val, (C++ - const lvar_locator_t &)
Returns: lvar_mapping_iterator_t

lvar_mapping_erase(map, p)

 

Erase current element from lvar_mapping_t.

Parameters:
  • map, (C++ - lvar_mapping_t *)
  • p, (C++ - lvar_mapping_iterator_t)

lvar_mapping_clear(map)

 

Clear lvar_mapping_t.

Parameters:
  • map, (C++ - lvar_mapping_t *)

lvar_mapping_size(map)

 

Get size of lvar_mapping_t.

Parameters:
  • map, (C++ - lvar_mapping_t *)
Returns: size_t

lvar_mapping_free(map)

 

Delete lvar_mapping_t instance.

Parameters:
  • map, (C++ - lvar_mapping_t *)

udcall_map_begin(map)

 

Get iterator pointing to the beginning of udcall_map_t.

Parameters:
  • map, (C++ - const udcall_map_t *)
Returns: udcall_map_iterator_t

udcall_map_end(map)

 

Get iterator pointing to the end of udcall_map_t.

Parameters:
  • map, (C++ - const udcall_map_t *)
Returns: udcall_map_iterator_t

udcall_map_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - udcall_map_iterator_t)
Returns: udcall_map_iterator_t

udcall_map_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - udcall_map_iterator_t)
Returns: udcall_map_iterator_t

udcall_map_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - udcall_map_iterator_t)
Returns: ea_t const &

udcall_map_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - udcall_map_iterator_t)
Returns: udcall_t

udcall_map_find(map, key)

 

Find the specified key in udcall_map_t.

Parameters:
  • map, (C++ - const udcall_map_t *)
  • key, (C++ - const ea_t &)
Returns: udcall_map_iterator_t

udcall_map_insert(map, key, val)

 

Insert new (ea_t, 'udcall_t' ) pair into udcall_map_t.

Parameters:
  • map, (C++ - udcall_map_t *)
  • key, (C++ - const ea_t &)
  • val, (C++ - const udcall_t &)
Returns: udcall_map_iterator_t

udcall_map_erase(map, p)

 

Erase current element from udcall_map_t.

Parameters:
  • map, (C++ - udcall_map_t *)
  • p, (C++ - udcall_map_iterator_t)

udcall_map_clear(map)

 

Clear udcall_map_t.

Parameters:
  • map, (C++ - udcall_map_t *)

udcall_map_size(map)

 

Get size of udcall_map_t.

Parameters:
  • map, (C++ - udcall_map_t *)
Returns: size_t

udcall_map_free(map)

 

Delete udcall_map_t instance.

Parameters:
  • map, (C++ - udcall_map_t *)

user_cmts_begin(map)

 

Get iterator pointing to the beginning of user_cmts_t.

Parameters:
  • map, (C++ - const user_cmts_t *)
Returns: user_cmts_iterator_t

user_cmts_end(map)

 

Get iterator pointing to the end of user_cmts_t.

Parameters:
  • map, (C++ - const user_cmts_t *)
Returns: user_cmts_iterator_t

user_cmts_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - user_cmts_iterator_t)
Returns: user_cmts_iterator_t

user_cmts_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - user_cmts_iterator_t)
Returns: user_cmts_iterator_t

user_cmts_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - user_cmts_iterator_t)
Returns: treeloc_t

user_cmts_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - user_cmts_iterator_t)
Returns: citem_cmt_t

user_cmts_find(map, key)

 

Find the specified key in user_cmts_t.

Parameters:
  • map, (C++ - const user_cmts_t *)
  • key, (C++ - const treeloc_t &)
Returns: user_cmts_iterator_t

user_cmts_insert(map, key, val)

 

Insert new ( 'treeloc_t' , 'citem_cmt_t' ) pair into user_cmts_t.

Parameters:
  • map, (C++ - user_cmts_t *)
  • key, (C++ - const treeloc_t &)
  • val, (C++ - const citem_cmt_t &)
Returns: user_cmts_iterator_t

user_cmts_erase(map, p)

 

Erase current element from user_cmts_t.

Parameters:
  • map, (C++ - user_cmts_t *)
  • p, (C++ - user_cmts_iterator_t)

user_cmts_clear(map)

 

Clear user_cmts_t.

Parameters:
  • map, (C++ - user_cmts_t *)

user_cmts_size(map)

 

Get size of user_cmts_t.

Parameters:
  • map, (C++ - user_cmts_t *)
Returns: size_t

user_cmts_free(map)

 

Delete user_cmts_t instance.

Parameters:
  • map, (C++ - user_cmts_t *)

user_iflags_begin(map)

 

Get iterator pointing to the beginning of user_iflags_t.

Parameters:
  • map, (C++ - const user_iflags_t *)
Returns: user_iflags_iterator_t

user_iflags_end(map)

 

Get iterator pointing to the end of user_iflags_t.

Parameters:
  • map, (C++ - const user_iflags_t *)
Returns: user_iflags_iterator_t

user_iflags_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - user_iflags_iterator_t)
Returns: user_iflags_iterator_t

user_iflags_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - user_iflags_iterator_t)
Returns: user_iflags_iterator_t

user_iflags_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - user_iflags_iterator_t)
Returns: citem_locator_t

user_iflags_find(map, key)

 

Find the specified key in user_iflags_t.

Parameters:
  • map, (C++ - const user_iflags_t *)
  • key, (C++ - const citem_locator_t &)
Returns: user_iflags_iterator_t

user_iflags_insert(map, key, val)

 

Insert new ( 'citem_locator_t' , int32) pair into user_iflags_t.

Parameters:
  • map, (C++ - user_iflags_t *)
  • key, (C++ - const citem_locator_t &)
  • val, (C++ - const int32 &)
Returns: user_iflags_iterator_t

user_iflags_erase(map, p)

 

Erase current element from user_iflags_t.

Parameters:
  • map, (C++ - user_iflags_t *)
  • p, (C++ - user_iflags_iterator_t)

user_iflags_clear(map)

 

Clear user_iflags_t.

Parameters:
  • map, (C++ - user_iflags_t *)

user_iflags_size(map)

 

Get size of user_iflags_t.

Parameters:
  • map, (C++ - user_iflags_t *)
Returns: size_t

user_iflags_free(map)

 

Delete user_iflags_t instance.

Parameters:
  • map, (C++ - user_iflags_t *)

user_unions_begin(map)

 

Get iterator pointing to the beginning of user_unions_t.

Parameters:
  • map, (C++ - const user_unions_t *)
Returns: user_unions_iterator_t

user_unions_end(map)

 

Get iterator pointing to the end of user_unions_t.

Parameters:
  • map, (C++ - const user_unions_t *)
Returns: user_unions_iterator_t

user_unions_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - user_unions_iterator_t)
Returns: user_unions_iterator_t

user_unions_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - user_unions_iterator_t)
Returns: user_unions_iterator_t

user_unions_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - user_unions_iterator_t)
Returns: ea_t const &

user_unions_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - user_unions_iterator_t)
Returns: intvec_t

user_unions_find(map, key)

 

Find the specified key in user_unions_t.

Parameters:
  • map, (C++ - const user_unions_t *)
  • key, (C++ - const ea_t &)
Returns: user_unions_iterator_t

user_unions_insert(map, key, val)

 

Insert new (ea_t, intvec_t) pair into user_unions_t.

Parameters:
  • map, (C++ - user_unions_t *)
  • key, (C++ - const ea_t &)
  • val, (C++ - const intvec_t &)
Returns: user_unions_iterator_t

user_unions_erase(map, p)

 

Erase current element from user_unions_t.

Parameters:
  • map, (C++ - user_unions_t *)
  • p, (C++ - user_unions_iterator_t)

user_unions_clear(map)

 

Clear user_unions_t.

Parameters:
  • map, (C++ - user_unions_t *)

user_unions_size(map)

 

Get size of user_unions_t.

Parameters:
  • map, (C++ - user_unions_t *)
Returns: size_t

user_unions_free(map)

 

Delete user_unions_t instance.

Parameters:
  • map, (C++ - user_unions_t *)

user_labels_begin(map)

 

Get iterator pointing to the beginning of user_labels_t.

Parameters:
  • map, (C++ - const user_labels_t *)
Returns: user_labels_iterator_t

user_labels_end(map)

 

Get iterator pointing to the end of user_labels_t.

Parameters:
  • map, (C++ - const user_labels_t *)
Returns: user_labels_iterator_t

user_labels_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - user_labels_iterator_t)
Returns: user_labels_iterator_t

user_labels_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - user_labels_iterator_t)
Returns: user_labels_iterator_t

user_labels_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - user_labels_iterator_t)
Returns: int const &

user_labels_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - user_labels_iterator_t)
Returns: qstring &

user_labels_find(map, key)

 

Find the specified key in user_labels_t.

Parameters:
  • map, (C++ - const user_labels_t *)
  • key, (C++ - const int &)
Returns: user_labels_iterator_t

user_labels_insert(map, key, val)

 

Insert new (int, qstring) pair into user_labels_t.

Parameters:
  • map, (C++ - user_labels_t *)
  • key, (C++ - const int &)
  • val, (C++ - const qstring &)
Returns: user_labels_iterator_t

user_labels_erase(map, p)

 

Erase current element from user_labels_t.

Parameters:
  • map, (C++ - user_labels_t *)
  • p, (C++ - user_labels_iterator_t)

user_labels_clear(map)

 

Clear user_labels_t.

Parameters:
  • map, (C++ - user_labels_t *)

user_labels_size(map)

 

Get size of user_labels_t.

Parameters:
  • map, (C++ - user_labels_t *)
Returns: size_t

user_labels_free(map)

 

Delete user_labels_t instance.

Parameters:
  • map, (C++ - user_labels_t *)

eamap_begin(map)

 

Get iterator pointing to the beginning of eamap_t.

Parameters:
  • map, (C++ - const eamap_t *)
Returns: eamap_iterator_t

eamap_end(map)

 

Get iterator pointing to the end of eamap_t.

Parameters:
  • map, (C++ - const eamap_t *)
Returns: eamap_iterator_t

eamap_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - eamap_iterator_t)
Returns: eamap_iterator_t

eamap_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - eamap_iterator_t)
Returns: eamap_iterator_t

eamap_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - eamap_iterator_t)
Returns: ea_t const &

eamap_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - eamap_iterator_t)
Returns: cinsnptrvec_t

eamap_find(map, key)

 

Find the specified key in eamap_t.

Parameters:
  • map, (C++ - const eamap_t *)
  • key, (C++ - const ea_t &)
Returns: eamap_iterator_t

eamap_insert(map, key, val)

 

Insert new (ea_t, cinsnptrvec_t) pair into eamap_t.

Parameters:
  • map, (C++ - eamap_t *)
  • key, (C++ - const ea_t &)
  • val, (C++ - const cinsnptrvec_t &)
Returns: eamap_iterator_t

eamap_erase(map, p)

 

Erase current element from eamap_t.

Parameters:
  • map, (C++ - eamap_t *)
  • p, (C++ - eamap_iterator_t)

eamap_clear(map)

 

Clear eamap_t.

Parameters:
  • map, (C++ - eamap_t *)

eamap_size(map)

 

Get size of eamap_t.

Parameters:
  • map, (C++ - eamap_t *)
Returns: size_t

eamap_free(map)

 

Delete eamap_t instance.

Parameters:
  • map, (C++ - eamap_t *)

boundaries_begin(map)

 

Get iterator pointing to the beginning of boundaries_t.

Parameters:
  • map, (C++ - const boundaries_t *)
Returns: boundaries_iterator_t

boundaries_end(map)

 

Get iterator pointing to the end of boundaries_t.

Parameters:
  • map, (C++ - const boundaries_t *)
Returns: boundaries_iterator_t

boundaries_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - boundaries_iterator_t)
Returns: boundaries_iterator_t

boundaries_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - boundaries_iterator_t)
Returns: boundaries_iterator_t

boundaries_first(p)

 

Get reference to the current map key.

Parameters:
  • p, (C++ - boundaries_iterator_t)
Returns: cinsn_t

boundaries_second(p)

 

Get reference to the current map value.

Parameters:
  • p, (C++ - boundaries_iterator_t)
Returns: rangeset_t

boundaries_erase(map, p)

 

Erase current element from boundaries_t.

Parameters:
  • map, (C++ - boundaries_t *)
  • p, (C++ - boundaries_iterator_t)

boundaries_clear(map)

 

Clear boundaries_t.

Parameters:
  • map, (C++ - boundaries_t *)

boundaries_size(map)

 

Get size of boundaries_t.

Parameters:
  • map, (C++ - boundaries_t *)
Returns: size_t

boundaries_free(map)

 

Delete boundaries_t instance.

Parameters:
  • map, (C++ - boundaries_t *)

block_chains_begin(set)

 

Get iterator pointing to the beginning of 'block_chains_t' .

Parameters:
  • set, (C++ - const block_chains_t *)
Returns: block_chains_iterator_t

block_chains_end(set)

 

Get iterator pointing to the end of 'block_chains_t' .

Parameters:
  • set, (C++ - const block_chains_t *)
Returns: block_chains_iterator_t

block_chains_next(p)

 

Move to the next element.

Parameters:
  • p, (C++ - block_chains_iterator_t)
Returns: block_chains_iterator_t

block_chains_prev(p)

 

Move to the previous element.

Parameters:
  • p, (C++ - block_chains_iterator_t)
Returns: block_chains_iterator_t

block_chains_get(p)

 

Get reference to the current set value.

Parameters:
  • p, (C++ - block_chains_iterator_t)
Returns: chain_t

block_chains_find(set, val)

 

Find the specified key in set 'block_chains_t' .

Parameters:
  • set, (C++ - const block_chains_t *)
  • val, (C++ - const chain_t &)
Returns: block_chains_iterator_t

block_chains_insert(set, val)

 

Insert new ( 'chain_t' ) into set 'block_chains_t' .

Parameters:
  • set, (C++ - block_chains_t *)
  • val, (C++ - const chain_t &)
Returns: block_chains_iterator_t

block_chains_erase(set, p)

 

Erase current element from 'block_chains_t' .

Parameters:
  • set, (C++ - block_chains_t *)
  • p, (C++ - block_chains_iterator_t)

block_chains_clear(set)

 

Clear 'block_chains_t' .

Parameters:
  • set, (C++ - block_chains_t *)

block_chains_size(set)

 

Get size of 'block_chains_t' .

Parameters:
  • set, (C++ - block_chains_t *)
Returns: size_t

block_chains_free(set)

 

Delete 'block_chains_t' instance.

Parameters:
  • set, (C++ - block_chains_t *)

is_allowed_on_small_struni(op)

 

Is the operator allowed on small structure or union?

Parameters:
  • op, (C++ - ctype_t)
Returns: bool

is_small_struni(tif)

 

Is a small structure or union?

Parameters:
  • tif, (C++ - const tinfo_t &)
Returns: bool
true if the type is a small UDT (user defined type). Small UDTs fit into a register (or pair or registers) as a rule.

cinsn_details(self)

 

return the details pointer for the cinsn_t object depending on the value of its op member. this is one of the cblock_t, cif_t, etc. objects.

install_hexrays_callback(callback)

 

Deprecated. Please use Hexrays_Hooks instead

remove_hexrays_callback(callback)

 

Deprecated. Please use Hexrays_Hooks instead


Variables Details

LVINF_KEEP

preserve saved user settings regardless of vars for example, if a var loses all its user-defined attributes or even gets destroyed, keep its 'lvar_saved_info_t' . this is used for ephemeral variables that get destroyed by macro recognition.

Value:
1

LVINF_FORCE

force allocation of a new variable. forces the decompiler to create a new variable at ll.defea

Value:
2

FCI_SPLOK

spoiled/visible_memory lists have been optimized. for some functions we can reduce them as soon as information about the arguments becomes available. in order not to try optimize them again we use this bit.

Value:
64

FCI_HASFMT

printf- or scanf-style format string

A variadic function with recognized

Value:
256

IPROP_CLNPOP

(e.g. "pop ecx" is often used for that)

the purpose of the instruction is to clean stack

Value:
8

IPROP_ASSERT

assertion: usually mov #val, op. assertions are used to help the optimizer. assertions are ignored when generating ctree

Value:
128

IPROP_MULTI_MOV

(example: STM on ARM may transfer multiple registers)

the minsn was generated as part of insn that moves multiple registersbits that can be set by plugins:

Value:
65536

MBL_PRIV

the specified are accepted (used in patterns)

private block - no instructions except

Value:
1

FD_DIRTY

by function calls and indirect memory access

ignore possible implicit definitions

Value:
4

VR_AT_START

at the block start (if M is NULL)

get value ranges before the instruction or

Value:
0

VR_EXACT

valrng size will be >= vivl.size

find exact match. if not set, the returned

Value:
2

LOCOPT_ALL

is not set, only dirty blocks will be optimized

redo optimization for all blocks. if this bit

Value:
1

CPBLK_OPTJMP

if it becomes useless

del the jump insn at the end of the block

Value:
2

CV_INSNS

visit only statements, prune all expressions do not use before the final ctree maturity because expressions may contain statements at intermediate stages (see cot_insn). Otherwise you risk missing statements embedded into expressions.

Value:
16