angr.analyses.decompiler.ail_simplifier

exception angr.analyses.decompiler.ail_simplifier.HasCallNotification

Bases: Exception

Notifies the existence of a call statement.

exception angr.analyses.decompiler.ail_simplifier.HasVVarNotification

Bases: Exception

Notifies the existence of a VirtualVariable.

exception angr.analyses.decompiler.ail_simplifier.HasRefVVarNotification

Bases: Exception

Notifies the existence of a reference to a VirtualVariable.

class angr.analyses.decompiler.ail_simplifier.AILBlockTempCollector

Bases: AILBlockViewer

Collects any temporaries used in a block.

__init__(**kwargs)
class angr.analyses.decompiler.ail_simplifier.DefEqRelation

Bases: Enum

Describes the location relationship between a virtual variable definition and the equivalence statement.

UNKNOWN = 0
DEF_IS_FUNCARG = 1
DEF_EQ_SAME_BLOCK = 2
DEF_IN_EQ_PRED_BLOCK = 3
class angr.analyses.decompiler.ail_simplifier.PartialConstantExprRewriter

Bases: AILBlockRewriter

Rewrites expressions whose high bits are definitely zero to constants (if possible) or mask them with masks properly.

__init__(varid, zero_high_bits)
Parameters:
  • varid (int)

  • zero_high_bits (int)

class angr.analyses.decompiler.ail_simplifier.AILSimplifier

Bases: Analysis

Perform function-level simplifications.

__init__(func, func_graph, ail_manager, remove_dead_memdefs=False, stack_arg_offsets=None, unify_variables=False, gp=None, narrow_expressions=False, fold_expressions=True, only_consts=False, fold_callexprs_into_conditions=False, use_callee_saved_regs_at_return=True, rewrite_ccalls=True, rename_ccalls=True, rewrite_dirty=True, removed_vvar_ids=None, arg_vvars=None, avoid_vvar_ids=None)
blocks: dict[Block, Block]
simplified: bool