angr.analyses.decompiler.block_simplifier

class angr.analyses.decompiler.block_simplifier.PeepholeOptimizationBundle

Bases: object

PeepholeOptimizationBundle describes a set of initialized peephole optimizer instances and the dispatch structures derived from them. This bundle of peephole optimizations is reusable across BlockSimplifier invocations (so we avoid rebuilding the same optimizer instances).

__init__(project, kb, ail_manager, func_addr=None, preserve_vvar_ids=None, type_hints=None, peephole_optimizations=None)
Parameters:
expr_opts
stmt_opts
multistmt_opts
stmt_opts_by_kind
expr_walker
matches(project, ail_manager, func_addr, preserve_vvar_ids, type_hints, peephole_optimizations)
Return type:

bool

Parameters:
  • ail_manager (Manager)

  • func_addr (int | None)

  • preserve_vvar_ids (set[int] | None)

  • type_hints (list | None)

class angr.analyses.decompiler.block_simplifier.BlockSimplifier

Bases: object

Simplify an AIL block.

Deliberately not an Analysis: it is instantiated once per block, hundreds of times per decompilation, so it skips the analysis-factory ceremony. Instantiate it directly with the project as the first argument; exceptions always propagate.

__init__(project, block, ail_manager, func_addr=None, stack_pointer_tracker=None, peephole_optimizations=None, preserve_vvar_ids=None, type_hints=None, cached_reaching_definitions=None, cached_propagator=None, peephole_bundle=None)
Parameters:
static replace_and_build(block, replacements, ail_manager, replace_assignment_dsts=False, replace_loads=False, gp=None, replace_registers=True, max_expr_depth=13)
Return type:

tuple[bool, Block]

Parameters: