angr.analyses.decompiler.structured_codegen.base

class angr.analyses.decompiler.structured_codegen.base.CConstantType

Bases: Enum

Describes the value type of a CConstant class.

INT = 0
FLOAT = 1
STRING = 2
class angr.analyses.decompiler.structured_codegen.base.FunctionRef

Bases: object

A function a parsed decompilation refers to, carried by address until it is first needed, so that parsing a decompilation does not load functions.

__init__(addr)
Parameters:

addr (int)

addr
class angr.analyses.decompiler.structured_codegen.base.PositionMappingElement

Bases: object

__init__(start, length, obj)
start: int
length: int
obj
class angr.analyses.decompiler.structured_codegen.base.PositionMapping

Bases: object

DUPLICATION_CHECK = True
__init__()
items()
values()
add_mapping(start_pos, length, obj)
get_node(pos)
Parameters:

pos (int)

get_element(pos)
Return type:

PositionMappingElement | None

Parameters:

pos (int)

class angr.analyses.decompiler.structured_codegen.base.InstructionMappingElement

Bases: object

__init__(ins_addr, posmap_pos)
ins_addr: int
posmap_pos: int
class angr.analyses.decompiler.structured_codegen.base.InstructionMapping

Bases: object

__init__()
items()
values()
add_mapping(ins_addr, posmap_pos)
get_nearest_pos(ins_addr)
Return type:

int | None

Parameters:

ins_addr (int)

class angr.analyses.decompiler.structured_codegen.base.BaseStructuredCodeGenerator

Bases: object

__init__(flavor=None, notes=None, expr_comments=None, stmt_comments=None, const_formats=None)
map_ast_to_pos: dict[SimVariable, set[PositionMappingElement]] | None
expr_comments: dict[int, str]
stmt_comments: dict[int, str]
const_formats: dict[tuple[int, int, str], dict[str, bool]]
version: str
timestamp: int
ident_counters: dict[str, count]
static adjust_mapping_positions(offset, pos_to_node, pos_to_addr, addr_to_pos)

Adjust positions in the mappings to account for the notes that are prepended to the text.

Parameters:
  • offset (int) – The length of the notes to prepend.

  • pos_to_node (PositionMapping) – The position to node mapping.

  • pos_to_addr (PositionMapping) – The position to address mapping.

  • addr_to_pos (InstructionMapping) – The address to position mapping.

Return type:

tuple[PositionMapping, PositionMapping, InstructionMapping]

Returns:

Adjusted mappings.

reapply_options(options)
regenerate_text()
Return type:

None

reload_variable_types()
Return type:

None

next_ident(key)
Return type:

str

Parameters:

key (str)

reset_ident_counters()
Return type:

None

next_node_idx()
Return type:

int

angr.analyses.decompiler.structured_codegen.base.vector_convert_name(expr)

Intrinsic-style name for a lane-wise conversion, e.g. ConvF32toI32Sx4 for Iop_F32toI32Sx4.

Return type:

str

Parameters:

expr (Convert)

angr.analyses.decompiler.structured_codegen.base.variable_display_name(v)

The name of a variable that variable naming did not reach (e.g. a stack variable not in any unified group), as an identifier rather than the SimVariable repr.

Return type:

str

Parameters:

v (SimVariable)

angr.analyses.decompiler.structured_codegen.base.register_display_name(arch, reg_offset, size)

The architectural name of a register, or reg_<offset> when the architecture has none.

Return type:

str

Parameters:
class angr.analyses.decompiler.structured_codegen.base.CodegenNode

Bases: object

Marker base of every structured-codegen node kind shared across flavors.

class angr.analyses.decompiler.structured_codegen.base.ExpressionNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.VariableNode

Bases: CodegenNode

A variable access; has variable and unified_variable.

class angr.analyses.decompiler.structured_codegen.base.IndexedVariableNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.VariableFieldNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.StructFieldNode

Bases: CodegenNode

A struct field name; has struct_type, offset, and field.

class angr.analyses.decompiler.structured_codegen.base.FunctionNode

Bases: CodegenNode

The function being decompiled; has addr and name.

class angr.analyses.decompiler.structured_codegen.base.FunctionCallNode

Bases: CodegenNode

A call; has callee_func (a Function or None) and callee_target.

class angr.analyses.decompiler.structured_codegen.base.ConstantNode

Bases: CodegenNode

A constant; has value and reference_values.

class angr.analyses.decompiler.structured_codegen.base.LabelNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.BinaryOpNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.UnaryOpNode

Bases: CodegenNode

class angr.analyses.decompiler.structured_codegen.base.ClosingObjectNode

Bases: CodegenNode

A closing bracket, brace, or parenthesis.