summaryrefslogtreecommitdiff
path: root/python/lowlevelil.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/lowlevelil.py')
-rw-r--r--python/lowlevelil.py1420
1 files changed, 738 insertions, 682 deletions
diff --git a/python/lowlevelil.py b/python/lowlevelil.py
index 87eb5a34..2849c2bf 100644
--- a/python/lowlevelil.py
+++ b/python/lowlevelil.py
@@ -26,7 +26,7 @@ from dataclasses import dataclass
# Binary Ninja components
from .enums import LowLevelILOperation, LowLevelILFlagCondition, DataFlowQueryOption, FunctionGraphType
from . import _binaryninjacore as core
-from . import basicblock #required for LowLevelILBasicBlock
+from . import basicblock #required for LowLevelILBasicBlock
from . import function
from . import mediumlevelil
from . import highlevelil
@@ -36,9 +36,11 @@ from . import binaryview
from . import architecture
from . import types
from .interaction import show_graph_report
-from .commonil import (BaseILInstruction, Constant, BinaryOperation, Tailcall, UnaryOperation, Comparison, SSA,
- Phi, FloatingPoint, ControlFlow, Terminal, Syscall, Localcall, StackOperation, Return,
- Signed, Arithmetic, Carry, DoublePrecision, Memory, Load, Store, RegisterStack, SetReg)
+from .commonil import (
+ BaseILInstruction, Constant, BinaryOperation, Tailcall, UnaryOperation, Comparison, SSA, Phi, FloatingPoint,
+ ControlFlow, Terminal, Syscall, Localcall, StackOperation, Return, Signed, Arithmetic, Carry, DoublePrecision,
+ Memory, Load, Store, RegisterStack, SetReg
+)
ExpressionIndex = NewType('ExpressionIndex', int)
InstructionIndex = NewType('InstructionIndex', int)
@@ -48,45 +50,27 @@ InstructionOrExpression = Union['LowLevelILInstruction', Index]
ILRegisterType = Union[str, 'ILRegister', int]
LLILInstructionsType = Generator['LowLevelILInstruction', None, None]
OperandsType = Tuple[ExpressionIndex, ExpressionIndex, ExpressionIndex, ExpressionIndex]
-LowLevelILOperandType = Union[
- 'LowLevelILOperationAndSize',
- 'ILRegister',
- 'ILFlag',
- 'ILIntrinsic',
- 'ILRegisterStack',
- int,
- Dict[int, int],
- float,
- 'LowLevelILInstruction',
- Dict['architecture.RegisterStackName', int],
- 'SSAFlag',
- 'SSARegister',
- 'SSARegisterStack',
- 'ILSemanticFlagClass',
- 'ILSemanticFlagGroup',
- 'LowLevelILFlagCondition',
- List[int],
- List['LowLevelILInstruction'],
- List[Union['ILFlag', 'ILRegister']],
- List['SSARegister'],
- List['SSARegisterStack'],
- List['SSAFlag'],
- List['SSARegisterOrFlag'],
- None
-]
+LowLevelILOperandType = Union['LowLevelILOperationAndSize', 'ILRegister', 'ILFlag', 'ILIntrinsic', 'ILRegisterStack',
+ int, Dict[int, int], float, 'LowLevelILInstruction',
+ Dict['architecture.RegisterStackName', int], 'SSAFlag', 'SSARegister', 'SSARegisterStack',
+ 'ILSemanticFlagClass', 'ILSemanticFlagGroup', 'LowLevelILFlagCondition', List[int],
+ List['LowLevelILInstruction'], List[Union['ILFlag', 'ILRegister']], List['SSARegister'],
+ List['SSARegisterStack'], List['SSAFlag'], List['SSARegisterOrFlag'], None]
+
class LowLevelILLabel:
- def __init__(self, handle:core.BNLowLevelILLabel=None):
+ def __init__(self, handle: core.BNLowLevelILLabel = None):
if handle is None:
self.handle = (core.BNLowLevelILLabel * 1)()
core.BNLowLevelILInitLabel(self.handle)
else:
self.handle = handle
+
@dataclass(frozen=True)
class ILRegister:
- arch:'architecture.Architecture'
- index:'architecture.RegisterIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.RegisterIndex'
def __repr__(self):
return f"<reg {self.name}>"
@@ -124,8 +108,8 @@ class ILRegister:
@dataclass(frozen=True)
class ILRegisterStack:
- arch:'architecture.Architecture'
- index:'architecture.RegisterStackIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.RegisterStackIndex'
def __repr__(self):
return f"<reg-stack {self.name}>"
@@ -147,8 +131,8 @@ class ILRegisterStack:
@dataclass(frozen=True)
class ILFlag:
- arch:'architecture.Architecture'
- index:'architecture.FlagIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.FlagIndex'
def __repr__(self):
return f"<flag {self.name}>"
@@ -173,8 +157,8 @@ class ILFlag:
@dataclass(frozen=True)
class ILSemanticFlagClass:
- arch:'architecture.Architecture'
- index:'architecture.SemanticClassIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.SemanticClassIndex'
def __repr__(self):
return self.name
@@ -192,8 +176,8 @@ class ILSemanticFlagClass:
@dataclass(frozen=True)
class ILSemanticFlagGroup:
- arch:'architecture.Architecture'
- index:'architecture.SemanticGroupIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.SemanticGroupIndex'
def __repr__(self):
return self.name
@@ -211,8 +195,8 @@ class ILSemanticFlagGroup:
@dataclass(frozen=True)
class ILIntrinsic:
- arch:'architecture.Architecture'
- index:'architecture.IntrinsicIndex'
+ arch: 'architecture.Architecture'
+ index: 'architecture.IntrinsicIndex'
def __repr__(self):
return self.name
@@ -237,8 +221,8 @@ class ILIntrinsic:
@dataclass(frozen=True)
class SSARegister:
- reg:ILRegister
- version:int
+ reg: ILRegister
+ version: int
def __repr__(self):
return f"<ssa {self.reg} version {self.version}>"
@@ -246,8 +230,8 @@ class SSARegister:
@dataclass(frozen=True)
class SSARegisterStack:
- reg_stack:ILRegisterStack
- version:int
+ reg_stack: ILRegisterStack
+ version: int
def __repr__(self):
return f"<ssa {self.reg_stack} version {self.version}>"
@@ -255,8 +239,8 @@ class SSARegisterStack:
@dataclass(frozen=True)
class SSAFlag:
- flag:ILFlag
- version:int
+ flag: ILFlag
+ version: int
def __repr__(self):
return f"<ssa {self.flag} version {self.version}>"
@@ -264,8 +248,8 @@ class SSAFlag:
@dataclass(frozen=True)
class SSARegisterOrFlag:
- reg_or_flag:Union[ILRegister, ILFlag]
- version:int
+ reg_or_flag: Union[ILRegister, ILFlag]
+ version: int
def __repr__(self):
return f"<ssa {self.reg_or_flag} version {self.version}>"
@@ -273,8 +257,8 @@ class SSARegisterOrFlag:
@dataclass(frozen=True)
class LowLevelILOperationAndSize:
- operation:'LowLevelILOperation'
- size:int
+ operation: 'LowLevelILOperation'
+ size: int
def __repr__(self):
if self.size == 0:
@@ -284,20 +268,22 @@ class LowLevelILOperationAndSize:
@dataclass(frozen=True)
class CoreLowLevelILInstruction:
- operation:LowLevelILOperation
- size:int
- flags:int
- source_operand:ExpressionIndex
- operands:OperandsType
- address:int
+ operation: LowLevelILOperation
+ size: int
+ flags: int
+ source_operand: ExpressionIndex
+ operands: OperandsType
+ address: int
@classmethod
- def from_BNLowLevelILInstruction(cls, instr:core.BNLowLevelILInstruction) -> 'CoreLowLevelILInstruction':
- operands:OperandsType = (ExpressionIndex(instr.operands[0]),
- ExpressionIndex(instr.operands[1]),
- ExpressionIndex(instr.operands[2]),
- ExpressionIndex(instr.operands[3]))
- return cls(LowLevelILOperation(instr.operation), instr.size, instr.flags, instr.sourceOperand, operands, instr.address)
+ def from_BNLowLevelILInstruction(cls, instr: core.BNLowLevelILInstruction) -> 'CoreLowLevelILInstruction':
+ operands: OperandsType = (
+ ExpressionIndex(instr.operands[0]), ExpressionIndex(instr.operands[1]), ExpressionIndex(instr.operands[2]),
+ ExpressionIndex(instr.operands[3])
+ )
+ return cls(
+ LowLevelILOperation(instr.operation), instr.size, instr.flags, instr.sourceOperand, operands, instr.address
+ )
@dataclass(frozen=True)
@@ -308,146 +294,167 @@ class LowLevelILInstruction(BaseILInstruction):
Infix notation is thus more natural to read than other notations (e.g. x86 ``mov eax, 0`` vs. LLIL ``eax = 0``).
"""
- function:'LowLevelILFunction'
- expr_index:ExpressionIndex
- instr:CoreLowLevelILInstruction
- instr_index:Optional[InstructionIndex]
- ILOperations:ClassVar[Dict[LowLevelILOperation, List[Tuple[str,str]]]] = {
- LowLevelILOperation.LLIL_NOP: [],
- LowLevelILOperation.LLIL_SET_REG: [("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SPLIT: [("hi", "reg"), ("lo", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_REL: [("stack", "reg_stack"), ("dest", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_PUSH: [("stack", "reg_stack"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_FLAG: [("dest", "flag"), ("src", "expr")],
- LowLevelILOperation.LLIL_LOAD: [("src", "expr")],
- LowLevelILOperation.LLIL_STORE: [("dest", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_PUSH: [("src", "expr")],
- LowLevelILOperation.LLIL_POP: [],
- LowLevelILOperation.LLIL_REG: [("src", "reg")],
- LowLevelILOperation.LLIL_REG_SPLIT: [("hi", "reg"), ("lo", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_REL: [("stack", "reg_stack"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_POP: [("stack", "reg_stack")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REG: [("dest", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REL: [("stack", "reg_stack"), ("dest", "expr")],
- LowLevelILOperation.LLIL_CONST: [("constant", "int")],
- LowLevelILOperation.LLIL_CONST_PTR: [("constant", "int")],
- LowLevelILOperation.LLIL_EXTERN_PTR: [("constant", "int"), ("offset", "int")],
- LowLevelILOperation.LLIL_FLOAT_CONST: [("constant", "float")],
- LowLevelILOperation.LLIL_FLAG: [("src", "flag")],
- LowLevelILOperation.LLIL_FLAG_BIT: [("src", "flag"), ("bit", "int")],
- LowLevelILOperation.LLIL_ADD: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ADC: [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_SUB: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SBB: [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_AND: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_OR: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_XOR: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_LSL: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_LSR: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ASR: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ROL: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_RLC: [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_ROR: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_RRC: [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_MUL: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MULU_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MULS_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVU: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVU_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVS: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVS_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODU: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODU_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODS: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODS_DP: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_NEG: [("src", "expr")],
- LowLevelILOperation.LLIL_NOT: [("src", "expr")],
- LowLevelILOperation.LLIL_SX: [("src", "expr")],
- LowLevelILOperation.LLIL_ZX: [("src", "expr")],
- LowLevelILOperation.LLIL_LOW_PART: [("src", "expr")],
- LowLevelILOperation.LLIL_JUMP: [("dest", "expr")],
- LowLevelILOperation.LLIL_JUMP_TO: [("dest", "expr"), ("targets", "target_map")],
- LowLevelILOperation.LLIL_CALL: [("dest", "expr")],
- LowLevelILOperation.LLIL_CALL_STACK_ADJUST: [("dest", "expr"), ("stack_adjustment", "int"), ("reg_stack_adjustments", "reg_stack_adjust")],
- LowLevelILOperation.LLIL_TAILCALL: [("dest", "expr")],
- LowLevelILOperation.LLIL_RET: [("dest", "expr")],
- LowLevelILOperation.LLIL_NORET: [],
- LowLevelILOperation.LLIL_IF: [("condition", "expr"), ("true", "int"), ("false", "int")],
- LowLevelILOperation.LLIL_GOTO: [("dest", "int")],
- LowLevelILOperation.LLIL_FLAG_COND: [("condition", "cond"), ("semantic_class", "sem_class")],
- LowLevelILOperation.LLIL_FLAG_GROUP: [("semantic_group", "sem_group")],
- LowLevelILOperation.LLIL_CMP_E: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_NE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SLT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_ULT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SLE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_ULE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SGE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_UGE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SGT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_UGT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_TEST_BIT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_BOOL_TO_INT: [("src", "expr")],
- LowLevelILOperation.LLIL_ADD_OVERFLOW: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SYSCALL: [],
- LowLevelILOperation.LLIL_INTRINSIC: [("output", "reg_or_flag_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
- LowLevelILOperation.LLIL_INTRINSIC_SSA: [("output", "reg_or_flag_ssa_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
- LowLevelILOperation.LLIL_BP: [],
- LowLevelILOperation.LLIL_TRAP: [("vector", "int")],
- LowLevelILOperation.LLIL_UNDEF: [],
- LowLevelILOperation.LLIL_UNIMPL: [],
- LowLevelILOperation.LLIL_UNIMPL_MEM: [("src", "expr")],
- LowLevelILOperation.LLIL_FADD: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FSUB: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FMUL: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FDIV: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FSQRT: [("src", "expr")],
- LowLevelILOperation.LLIL_FNEG: [("src", "expr")],
- LowLevelILOperation.LLIL_FABS: [("src", "expr")],
- LowLevelILOperation.LLIL_FLOAT_TO_INT: [("src", "expr")],
- LowLevelILOperation.LLIL_INT_TO_FLOAT: [("src", "expr")],
- LowLevelILOperation.LLIL_FLOAT_CONV: [("src", "expr")],
- LowLevelILOperation.LLIL_ROUND_TO_INT: [("src", "expr")],
- LowLevelILOperation.LLIL_FLOOR: [("src", "expr")],
- LowLevelILOperation.LLIL_CEIL: [("src", "expr")],
- LowLevelILOperation.LLIL_FTRUNC: [("src", "expr")],
- LowLevelILOperation.LLIL_FCMP_E: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_NE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_LT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_LE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_GE: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_GT: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_O: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_UO: [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SSA: [("dest", "reg_ssa"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SSA_PARTIAL: [("full_reg", "reg_ssa"), ("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SPLIT_SSA: [("hi", "expr"), ("lo", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_REL_SSA: [("stack", "expr"), ("dest", "expr"), ("top", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_ABS_SSA: [("stack", "expr"), ("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_SPLIT_DEST_SSA: [("dest", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_STACK_DEST_SSA: [("src", "reg_stack_ssa_dest_and_src")],
- LowLevelILOperation.LLIL_REG_SSA: [("src", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_SSA_PARTIAL: [("full_reg", "reg_ssa"), ("src", "reg")],
- LowLevelILOperation.LLIL_REG_SPLIT_SSA: [("hi", "reg_ssa"), ("lo", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_STACK_REL_SSA: [("stack", "reg_stack_ssa"), ("src", "expr"), ("top", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_ABS_SSA: [("stack", "reg_stack_ssa"), ("src", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REL_SSA: [("stack", "expr"), ("dest", "expr"), ("top", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_ABS_SSA: [("stack", "expr"), ("dest", "reg")],
- LowLevelILOperation.LLIL_SET_FLAG_SSA: [("dest", "flag_ssa"), ("src", "expr")],
- LowLevelILOperation.LLIL_FLAG_SSA: [("src", "flag_ssa")],
- LowLevelILOperation.LLIL_FLAG_BIT_SSA: [("src", "flag_ssa"), ("bit", "int")],
- LowLevelILOperation.LLIL_CALL_SSA: [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_SYSCALL_SSA: [("output", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_TAILCALL_SSA: [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_CALL_OUTPUT_SSA: [("dest_memory", "int"), ("dest", "reg_ssa_list")],
- LowLevelILOperation.LLIL_CALL_STACK_SSA: [("src", "reg_ssa"), ("src_memory", "int")],
- LowLevelILOperation.LLIL_CALL_PARAM: [("src", "expr_list")],
- LowLevelILOperation.LLIL_LOAD_SSA: [("src", "expr"), ("src_memory", "int")],
- LowLevelILOperation.LLIL_STORE_SSA: [("dest", "expr"), ("dest_memory", "int"), ("src_memory", "int"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_PHI: [("dest", "reg_ssa"), ("src", "reg_ssa_list")],
- LowLevelILOperation.LLIL_REG_STACK_PHI: [("dest", "reg_stack_ssa"), ("src", "reg_stack_ssa_list")],
- LowLevelILOperation.LLIL_FLAG_PHI: [("dest", "flag_ssa"), ("src", "flag_ssa_list")],
- LowLevelILOperation.LLIL_MEM_PHI: [("dest_memory", "int"), ("src_memory", "int_list")]
+ function: 'LowLevelILFunction'
+ expr_index: ExpressionIndex
+ instr: CoreLowLevelILInstruction
+ instr_index: Optional[InstructionIndex]
+ ILOperations: ClassVar[Dict[LowLevelILOperation, List[Tuple[str, str]]]] = {
+ LowLevelILOperation.LLIL_NOP: [], LowLevelILOperation.LLIL_SET_REG: [("dest", "reg"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_SPLIT: [("hi", "reg"), ("lo", "reg"),
+ ("src", "expr")], LowLevelILOperation.LLIL_SET_REG_STACK_REL: [
+ ("stack", "reg_stack"), ("dest", "expr"), ("src", "expr")
+ ], LowLevelILOperation.LLIL_REG_STACK_PUSH: [("stack", "reg_stack"),
+ ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_FLAG: [("dest", "flag"), ("src", "expr")], LowLevelILOperation.LLIL_LOAD: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_STORE: [("dest", "expr"),
+ ("src", "expr")], LowLevelILOperation.LLIL_PUSH: [("src", "expr")],
+ LowLevelILOperation.LLIL_POP: [], LowLevelILOperation.LLIL_REG: [("src", "reg")],
+ LowLevelILOperation.LLIL_REG_SPLIT: [("hi", "reg"), ("lo", "reg")], LowLevelILOperation.LLIL_REG_STACK_REL: [
+ ("stack", "reg_stack"), ("src", "expr")
+ ], LowLevelILOperation.LLIL_REG_STACK_POP: [("stack", "reg_stack")],
+ LowLevelILOperation.LLIL_REG_STACK_FREE_REG: [("dest", "reg")], LowLevelILOperation.LLIL_REG_STACK_FREE_REL: [
+ ("stack", "reg_stack"), ("dest", "expr")
+ ], LowLevelILOperation.LLIL_CONST: [("constant", "int")], LowLevelILOperation.LLIL_CONST_PTR: [
+ ("constant", "int")
+ ], LowLevelILOperation.LLIL_EXTERN_PTR: [
+ ("constant", "int"), ("offset", "int")
+ ], LowLevelILOperation.LLIL_FLOAT_CONST: [("constant", "float")], LowLevelILOperation.LLIL_FLAG: [
+ ("src", "flag")
+ ], LowLevelILOperation.LLIL_FLAG_BIT: [("src", "flag"), ("bit", "int")], LowLevelILOperation.LLIL_ADD: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_ADC: [
+ ("left", "expr"), ("right", "expr"), ("carry", "expr")
+ ], LowLevelILOperation.LLIL_SUB: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_SBB: [
+ ("left", "expr"), ("right", "expr"), ("carry", "expr")
+ ], LowLevelILOperation.LLIL_AND: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_OR: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_XOR: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_LSL: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_LSR: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_ASR: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_ROL: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_RLC: [
+ ("left", "expr"), ("right", "expr"), ("carry", "expr")
+ ], LowLevelILOperation.LLIL_ROR: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_RRC: [
+ ("left", "expr"), ("right", "expr"), ("carry", "expr")
+ ], LowLevelILOperation.LLIL_MUL: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_MULU_DP: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_MULS_DP: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_DIVU: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_DIVU_DP: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_DIVS: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_DIVS_DP: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_MODU: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_MODU_DP: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_MODS: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_MODS_DP: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_NEG: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_NOT: [("src", "expr")], LowLevelILOperation.LLIL_SX: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_ZX: [("src", "expr")], LowLevelILOperation.LLIL_LOW_PART: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_JUMP: [("dest", "expr")], LowLevelILOperation.LLIL_JUMP_TO: [
+ ("dest", "expr"), ("targets", "target_map")
+ ], LowLevelILOperation.LLIL_CALL: [("dest", "expr")], LowLevelILOperation.LLIL_CALL_STACK_ADJUST: [
+ ("dest", "expr"), ("stack_adjustment", "int"), ("reg_stack_adjustments", "reg_stack_adjust")
+ ], LowLevelILOperation.LLIL_TAILCALL: [("dest", "expr")], LowLevelILOperation.LLIL_RET: [
+ ("dest", "expr")
+ ], LowLevelILOperation.LLIL_NORET: [], LowLevelILOperation.LLIL_IF: [
+ ("condition", "expr"), ("true", "int"), ("false", "int")
+ ], LowLevelILOperation.LLIL_GOTO: [("dest", "int")], LowLevelILOperation.LLIL_FLAG_COND: [
+ ("condition", "cond"), ("semantic_class", "sem_class")
+ ], LowLevelILOperation.LLIL_FLAG_GROUP: [("semantic_group", "sem_group")], LowLevelILOperation.LLIL_CMP_E: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_CMP_NE: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_CMP_SLT: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_CMP_ULT: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_CMP_SLE: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_CMP_ULE: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_CMP_SGE: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_CMP_UGE: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_CMP_SGT: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_CMP_UGT: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_TEST_BIT: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_BOOL_TO_INT: [("src", "expr")], LowLevelILOperation.LLIL_ADD_OVERFLOW: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_SYSCALL: [], LowLevelILOperation.LLIL_INTRINSIC: [
+ ("output", "reg_or_flag_list"), ("intrinsic", "intrinsic"), ("param", "expr")
+ ], LowLevelILOperation.LLIL_INTRINSIC_SSA: [
+ ("output", "reg_or_flag_ssa_list"), ("intrinsic", "intrinsic"), ("param", "expr")
+ ], LowLevelILOperation.LLIL_BP: [], LowLevelILOperation.LLIL_TRAP: [("vector", "int")],
+ LowLevelILOperation.LLIL_UNDEF: [], LowLevelILOperation.LLIL_UNIMPL: [], LowLevelILOperation.LLIL_UNIMPL_MEM: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_FADD: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FSUB: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_FMUL: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FDIV: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_FSQRT: [("src", "expr")], LowLevelILOperation.LLIL_FNEG: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_FABS: [("src", "expr")], LowLevelILOperation.LLIL_FLOAT_TO_INT: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_INT_TO_FLOAT: [("src", "expr")], LowLevelILOperation.LLIL_FLOAT_CONV: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_ROUND_TO_INT: [("src", "expr")], LowLevelILOperation.LLIL_FLOOR: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_CEIL: [("src", "expr")], LowLevelILOperation.LLIL_FTRUNC: [
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_FCMP_E: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FCMP_NE: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_FCMP_LT: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FCMP_LE: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_FCMP_GE: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FCMP_GT: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_FCMP_O: [("left", "expr"), ("right", "expr")], LowLevelILOperation.LLIL_FCMP_UO: [
+ ("left", "expr"), ("right", "expr")
+ ], LowLevelILOperation.LLIL_SET_REG_SSA: [("dest", "reg_ssa"),
+ ("src", "expr")], LowLevelILOperation.LLIL_SET_REG_SSA_PARTIAL: [
+ ("full_reg", "reg_ssa"), ("dest", "reg"), ("src", "expr")
+ ], LowLevelILOperation.LLIL_SET_REG_SPLIT_SSA: [
+ ("hi", "expr"), ("lo", "expr"), ("src", "expr")
+ ], LowLevelILOperation.LLIL_SET_REG_STACK_REL_SSA: [
+ ("stack", "expr"), ("dest", "expr"), ("top", "expr"),
+ ("src", "expr")
+ ], LowLevelILOperation.LLIL_SET_REG_STACK_ABS_SSA: [
+ ("stack", "expr"), ("dest", "reg"), ("src", "expr")
+ ], LowLevelILOperation.LLIL_REG_SPLIT_DEST_SSA: [("dest", "reg_ssa")],
+ LowLevelILOperation.LLIL_REG_STACK_DEST_SSA: [
+ ("src", "reg_stack_ssa_dest_and_src")
+ ], LowLevelILOperation.LLIL_REG_SSA: [("src", "reg_ssa")], LowLevelILOperation.LLIL_REG_SSA_PARTIAL: [
+ ("full_reg", "reg_ssa"), ("src", "reg")
+ ], LowLevelILOperation.LLIL_REG_SPLIT_SSA: [("hi", "reg_ssa"),
+ ("lo", "reg_ssa")], LowLevelILOperation.LLIL_REG_STACK_REL_SSA: [
+ ("stack", "reg_stack_ssa"), ("src", "expr"), ("top", "expr")
+ ], LowLevelILOperation.LLIL_REG_STACK_ABS_SSA: [
+ ("stack", "reg_stack_ssa"), ("src", "reg")
+ ], LowLevelILOperation.LLIL_REG_STACK_FREE_REL_SSA: [
+ ("stack", "expr"), ("dest", "expr"), ("top", "expr")
+ ], LowLevelILOperation.LLIL_REG_STACK_FREE_ABS_SSA: [
+ ("stack", "expr"), ("dest", "reg")
+ ], LowLevelILOperation.LLIL_SET_FLAG_SSA: [("dest", "flag_ssa"),
+ ("src", "expr")],
+ LowLevelILOperation.LLIL_FLAG_SSA: [("src", "flag_ssa")], LowLevelILOperation.LLIL_FLAG_BIT_SSA: [
+ ("src", "flag_ssa"), ("bit", "int")
+ ], LowLevelILOperation.LLIL_CALL_SSA: [("output", "expr"), ("dest", "expr"), ("stack", "expr"),
+ ("param", "expr")], LowLevelILOperation.LLIL_SYSCALL_SSA: [
+ ("output", "expr"), ("stack", "expr"), ("param", "expr")
+ ], LowLevelILOperation.LLIL_TAILCALL_SSA: [
+ ("output", "expr"), ("dest", "expr"), ("stack", "expr"),
+ ("param", "expr")
+ ], LowLevelILOperation.LLIL_CALL_OUTPUT_SSA: [
+ ("dest_memory", "int"), ("dest", "reg_ssa_list")
+ ], LowLevelILOperation.LLIL_CALL_STACK_SSA: [("src", "reg_ssa"),
+ ("src_memory", "int")],
+ LowLevelILOperation.LLIL_CALL_PARAM: [("src", "expr_list")], LowLevelILOperation.LLIL_LOAD_SSA: [
+ ("src", "expr"), ("src_memory", "int")
+ ], LowLevelILOperation.LLIL_STORE_SSA: [("dest", "expr"), ("dest_memory", "int"), ("src_memory", "int"),
+ ("src", "expr")], LowLevelILOperation.LLIL_REG_PHI: [
+ ("dest", "reg_ssa"), ("src", "reg_ssa_list")
+ ], LowLevelILOperation.LLIL_REG_STACK_PHI: [
+ ("dest", "reg_stack_ssa"), ("src", "reg_stack_ssa_list")
+ ], LowLevelILOperation.LLIL_FLAG_PHI: [
+ ("dest", "flag_ssa"), ("src", "flag_ssa_list")
+ ], LowLevelILOperation.LLIL_MEM_PHI: [("dest_memory", "int"),
+ ("src_memory", "int_list")]
}
@staticmethod
@@ -459,7 +466,9 @@ class LowLevelILInstruction(BaseILInstruction):
show_graph_report("LLIL Class Hierarchy Graph", graph)
@classmethod
- def create(cls, func:'LowLevelILFunction', expr_index:ExpressionIndex, instr_index:Optional[InstructionIndex]=None) -> 'LowLevelILInstruction':
+ def create(
+ cls, func: 'LowLevelILFunction', expr_index: ExpressionIndex, instr_index: Optional[InstructionIndex] = None
+ ) -> 'LowLevelILInstruction':
assert func.arch is not None, "Attempted to create IL instruction with function missing an Architecture"
inst = core.BNGetLowLevelILByIndex(func.handle, expr_index)
assert inst is not None, "core.BNGetLowLevelILByIndex returned None"
@@ -478,32 +487,32 @@ class LowLevelILInstruction(BaseILInstruction):
def __repr__(self):
return f"<llil: {self}>"
- def __eq__(self, other:'LowLevelILInstruction') -> bool:
+ def __eq__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return self.function == other.function and self.expr_index == other.expr_index
- def __ne__(self, other:'LowLevelILInstruction') -> bool:
+ def __ne__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return not (self == other)
- def __lt__(self, other:'LowLevelILInstruction') -> bool:
+ def __lt__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return self.function == other.function and self.expr_index < other.expr_index
- def __le__(self, other:'LowLevelILInstruction') -> bool:
+ def __le__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return self.function == other.function and self.expr_index <= other.expr_index
- def __gt__(self, other:'LowLevelILInstruction') -> bool:
+ def __gt__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return self.function == other.function and self.expr_index > other.expr_index
- def __ge__(self, other:'LowLevelILInstruction') -> bool:
+ def __ge__(self, other: 'LowLevelILInstruction') -> bool:
if not isinstance(other, LowLevelILInstruction):
return NotImplemented
return self.function == other.function and self.expr_index >= other.expr_index
@@ -533,8 +542,9 @@ class LowLevelILInstruction(BaseILInstruction):
count = ctypes.c_ulonglong()
assert self.function.arch is not None, f"self.function.arch is None"
tokens = ctypes.POINTER(core.BNInstructionTextToken)()
- result = core.BNGetLowLevelILExprText(self.function.handle, self.function.arch.handle,
- self.expr_index, tokens, count)
+ result = core.BNGetLowLevelILExprText(
+ self.function.handle, self.function.arch.handle, self.expr_index, tokens, count
+ )
assert result, "core.BNGetLowLevelILExprText returned False"
try:
return function.InstructionTextToken._from_core_struct(tokens, count.value)
@@ -555,18 +565,23 @@ class LowLevelILInstruction(BaseILInstruction):
"""SSA form of expression (read-only)"""
ssa_func = self.function.ssa_form
assert ssa_func is not None
- return LowLevelILInstruction.create(ssa_func,
- ExpressionIndex(core.BNGetLowLevelILSSAExprIndex(self.function.handle, self.expr_index)),
- core.BNGetLowLevelILSSAInstructionIndex(self.function.handle, self.instr_index) if self.instr_index is not None else None)
+ return LowLevelILInstruction.create(
+ ssa_func, ExpressionIndex(core.BNGetLowLevelILSSAExprIndex(self.function.handle, self.expr_index)),
+ core.BNGetLowLevelILSSAInstructionIndex(self.function.handle, self.instr_index)
+ if self.instr_index is not None else None
+ )
@property
def non_ssa_form(self) -> 'LowLevelILInstruction':
"""Non-SSA form of expression (read-only)"""
non_ssa_function = self.function.non_ssa_form
assert non_ssa_function is not None
- return LowLevelILInstruction.create(non_ssa_function,
- ExpressionIndex(core.BNGetLowLevelILNonSSAExprIndex(self.function.handle, self.expr_index)),
- core.BNGetLowLevelILNonSSAInstructionIndex(self.function.handle, self.instr_index) if self.instr_index is not None else None)
+ return LowLevelILInstruction.create(
+ non_ssa_function,
+ ExpressionIndex(core.BNGetLowLevelILNonSSAExprIndex(self.function.handle, self.expr_index)),
+ core.BNGetLowLevelILNonSSAInstructionIndex(self.function.handle, self.instr_index)
+ if self.instr_index is not None else None
+ )
@property
def medium_level_il(self) -> Optional['mediumlevelil.MediumLevelILInstruction']:
@@ -644,7 +659,7 @@ class LowLevelILInstruction(BaseILInstruction):
@property
def prefix_operands(self) -> List[LowLevelILOperandType]:
"""All operands in the expression tree in prefix order"""
- result:List[LowLevelILOperandType] = [LowLevelILOperationAndSize(self.instr.operation, self.instr.size)]
+ result: List[LowLevelILOperandType] = [LowLevelILOperationAndSize(self.instr.operation, self.instr.size)]
for operand in self.operands:
if isinstance(operand, LowLevelILInstruction):
assert id(self) != id(operand), f"circular reference {operand}({repr(operand)}) is {self}({repr(self)})"
@@ -656,7 +671,7 @@ class LowLevelILInstruction(BaseILInstruction):
@property
def postfix_operands(self) -> List[LowLevelILOperandType]:
"""All operands in the expression tree in postfix order"""
- result:List[LowLevelILOperandType] = []
+ result: List[LowLevelILOperandType] = []
for operand in self.operands:
if isinstance(operand, LowLevelILInstruction):
assert id(self) != id(operand), f"circular reference {operand}({repr(operand)}) is {self}({repr(self)})"
@@ -667,7 +682,7 @@ class LowLevelILInstruction(BaseILInstruction):
return result
@staticmethod
- def _make_options_array(options:Optional[List[DataFlowQueryOption]]):
+ def _make_options_array(options: Optional[List[DataFlowQueryOption]]):
if options is None:
options = []
idx = 0
@@ -677,50 +692,56 @@ class LowLevelILInstruction(BaseILInstruction):
idx += 1
return option_array, len(options)
- def get_possible_values(self, options:Optional[List[DataFlowQueryOption]]=None) -> variable.PossibleValueSet:
+ def get_possible_values(self, options: Optional[List[DataFlowQueryOption]] = None) -> variable.PossibleValueSet:
option_array, option_size = LowLevelILInstruction._make_options_array(options)
value = core.BNGetLowLevelILPossibleExprValues(self.function.handle, self.expr_index, option_array, option_size)
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_reg_value(self, reg:'architecture.RegisterType') -> variable.RegisterValue:
+ def get_reg_value(self, reg: 'architecture.RegisterType') -> variable.RegisterValue:
if self.function.arch is None:
raise Exception("Can not call get_reg_value on function with Architecture set to None")
reg = self.function.arch.get_reg_index(reg)
value = core.BNGetLowLevelILRegisterValueAtInstruction(self.function.handle, reg, self.instr_index)
return variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
- def get_reg_value_after(self, reg:'architecture.RegisterType') -> variable.RegisterValue:
+ def get_reg_value_after(self, reg: 'architecture.RegisterType') -> variable.RegisterValue:
if self.function.arch is None:
raise Exception("Can not call get_reg_value_after on function with Architecture set to None")
reg = self.function.arch.get_reg_index(reg)
value = core.BNGetLowLevelILRegisterValueAfterInstruction(self.function.handle, reg, self.instr_index)
return variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
- def get_possible_reg_values(self, reg:'architecture.RegisterType', options:List[DataFlowQueryOption]=None) -> 'variable.PossibleValueSet':
+ def get_possible_reg_values(
+ self, reg: 'architecture.RegisterType', options: List[DataFlowQueryOption] = None
+ ) -> 'variable.PossibleValueSet':
if self.function.arch is None:
raise Exception("Can not call get_possible_reg_values on function with Architecture set to None")
reg = self.function.arch.get_reg_index(reg)
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleRegisterValuesAtInstruction(self.function.handle, reg, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleRegisterValuesAtInstruction(
+ self.function.handle, reg, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_possible_reg_values_after(self, reg:'architecture.RegisterType', options:Optional[List[DataFlowQueryOption]]=None) -> 'variable.PossibleValueSet':
+ def get_possible_reg_values_after(
+ self, reg: 'architecture.RegisterType', options: Optional[List[DataFlowQueryOption]] = None
+ ) -> 'variable.PossibleValueSet':
if self.function.arch is None:
raise Exception("Can not call get_possible_reg_values_after on function with Architecture set to None")
reg = self.function.arch.get_reg_index(reg)
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleRegisterValuesAfterInstruction(self.function.handle, reg, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleRegisterValuesAfterInstruction(
+ self.function.handle, reg, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_flag_value(self, flag:'architecture.FlagType') -> 'variable.RegisterValue':
+ def get_flag_value(self, flag: 'architecture.FlagType') -> 'variable.RegisterValue':
if self.function.arch is None:
raise Exception("Can not call get_flag_value on function with Architecture set to None")
flag = self.function.arch.get_flag_index(flag)
@@ -728,7 +749,7 @@ class LowLevelILInstruction(BaseILInstruction):
result = variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
return result
- def get_flag_value_after(self, flag:'architecture.FlagType') -> 'variable.RegisterValue':
+ def get_flag_value_after(self, flag: 'architecture.FlagType') -> 'variable.RegisterValue':
if self.function.arch is None:
raise Exception("Can not call get_flag_value_after on function with Architecture set to None")
flag = self.function.arch.get_flag_index(flag)
@@ -736,50 +757,62 @@ class LowLevelILInstruction(BaseILInstruction):
result = variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
return result
- def get_possible_flag_values(self, flag:'architecture.FlagType', options:Optional[List[DataFlowQueryOption]]=None) -> 'variable.PossibleValueSet':
+ def get_possible_flag_values(
+ self, flag: 'architecture.FlagType', options: Optional[List[DataFlowQueryOption]] = None
+ ) -> 'variable.PossibleValueSet':
if self.function.arch is None:
raise Exception("Can not call get_possible_flag_values on function with Architecture set to None")
flag = self.function.arch.get_flag_index(flag)
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleFlagValuesAtInstruction(self.function.handle, flag, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleFlagValuesAtInstruction(
+ self.function.handle, flag, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_possible_flag_values_after(self, flag:'architecture.FlagType', options:Optional[List[DataFlowQueryOption]]=None) -> 'variable.PossibleValueSet':
+ def get_possible_flag_values_after(
+ self, flag: 'architecture.FlagType', options: Optional[List[DataFlowQueryOption]] = None
+ ) -> 'variable.PossibleValueSet':
if self.function.arch is None:
raise Exception("Can not call get_possible_flag_values_after on function with Architecture set to None")
flag = self.function.arch.get_flag_index(flag)
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleFlagValuesAfterInstruction(self.function.handle, flag, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleFlagValuesAfterInstruction(
+ self.function.handle, flag, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_stack_contents(self, offset:int, size:int) -> 'variable.RegisterValue':
+ def get_stack_contents(self, offset: int, size: int) -> 'variable.RegisterValue':
value = core.BNGetLowLevelILStackContentsAtInstruction(self.function.handle, offset, size, self.instr_index)
result = variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
return result
- def get_stack_contents_after(self, offset:int, size:int) -> 'variable.RegisterValue':
+ def get_stack_contents_after(self, offset: int, size: int) -> 'variable.RegisterValue':
value = core.BNGetLowLevelILStackContentsAfterInstruction(self.function.handle, offset, size, self.instr_index)
result = variable.RegisterValue.from_BNRegisterValue(value, self.function.arch)
return result
- def get_possible_stack_contents(self, offset:int, size:int, options:Optional[List[DataFlowQueryOption]]=None) -> variable.PossibleValueSet:
+ def get_possible_stack_contents(
+ self, offset: int, size: int, options: Optional[List[DataFlowQueryOption]] = None
+ ) -> variable.PossibleValueSet:
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleStackContentsAtInstruction(self.function.handle, offset, size, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleStackContentsAtInstruction(
+ self.function.handle, offset, size, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
- def get_possible_stack_contents_after(self, offset:int, size:int, options:Optional[List[DataFlowQueryOption]]=None) -> variable.PossibleValueSet:
+ def get_possible_stack_contents_after(
+ self, offset: int, size: int, options: Optional[List[DataFlowQueryOption]] = None
+ ) -> variable.PossibleValueSet:
option_array, option_size = LowLevelILInstruction._make_options_array(options)
- value = core.BNGetLowLevelILPossibleStackContentsAfterInstruction(self.function.handle, offset, size, self.instr_index,
- option_array, option_size)
+ value = core.BNGetLowLevelILPossibleStackContentsAfterInstruction(
+ self.function.handle, offset, size, self.instr_index, option_array, option_size
+ )
result = variable.PossibleValueSet(self.function.arch, value)
core.BNFreePossibleValueSet(value)
return result
@@ -788,36 +821,36 @@ class LowLevelILInstruction(BaseILInstruction):
def flags(self) -> Optional['architecture.FlagWriteTypeName']:
return self.function.arch.get_flag_write_type_name(architecture.FlagWriteTypeIndex(self.instr.flags))
- def _get_reg(self, operand_index:int) -> ILRegister:
+ def _get_reg(self, operand_index: int) -> ILRegister:
return ILRegister(self.function.arch, architecture.RegisterIndex(self.instr.operands[operand_index]))
- def _get_flag(self, operand_index:int) -> ILFlag:
+ def _get_flag(self, operand_index: int) -> ILFlag:
return ILFlag(self.function.arch, architecture.FlagIndex(self.instr.operands[operand_index]))
- def _get_intrinsic(self, operand_index:int) -> ILIntrinsic:
+ def _get_intrinsic(self, operand_index: int) -> ILIntrinsic:
return ILIntrinsic(self.function.arch, architecture.IntrinsicIndex(self.instr.operands[operand_index]))
- def _get_reg_stack(self, operand_index:int) -> ILRegisterStack:
+ def _get_reg_stack(self, operand_index: int) -> ILRegisterStack:
return ILRegisterStack(self.function.arch, architecture.RegisterStackIndex(self.instr.operands[operand_index]))
- def _get_int(self, operand_index:int) -> int:
+ def _get_int(self, operand_index: int) -> int:
return (self.instr.operands[operand_index] & ((1 << 63) - 1)) - (self.instr.operands[operand_index] & (1 << 63))
- def _get_target_map(self, operand_index:int) -> Dict[int, int]:
+ def _get_target_map(self, operand_index: int) -> Dict[int, int]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
try:
- value:Dict[int, int] = {}
+ value: Dict[int, int] = {}
for j in range(count.value // 2):
key = operand_list[j * 2]
- target = operand_list[(j * 2) + 1]
+ target = operand_list[(j*2) + 1]
value[key] = target
return value
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_float(self, operand_index:int) -> Union[int, float]:
+ def _get_float(self, operand_index: int) -> Union[int, float]:
if self.instr.size == 4:
return struct.unpack("f", struct.pack("I", self.instr.operands[operand_index] & 0xffffffff))[0]
elif self.instr.size == 8:
@@ -825,18 +858,18 @@ class LowLevelILInstruction(BaseILInstruction):
else:
return self.instr.operands[operand_index]
- def _get_expr(self, operand_index:int) -> 'LowLevelILInstruction':
+ def _get_expr(self, operand_index: int) -> 'LowLevelILInstruction':
return LowLevelILInstruction.create(self.function, self.instr.operands[operand_index], self.instr_index)
- def _get_reg_stack_adjust(self, operand_index:int) -> Dict['architecture.RegisterStackName', int]:
+ def _get_reg_stack_adjust(self, operand_index: int) -> Dict['architecture.RegisterStackName', int]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
- result:Dict['architecture.RegisterStackName', int] = {}
+ result: Dict['architecture.RegisterStackName', int] = {}
try:
for j in range(count.value // 2):
reg_stack = operand_list[j * 2]
- adjust = operand_list[(j * 2) + 1]
+ adjust = operand_list[(j*2) + 1]
if adjust & 0x80000000:
adjust |= ~0x80000000
result[self.function.arch.get_reg_stack_name(reg_stack)] = adjust
@@ -844,38 +877,44 @@ class LowLevelILInstruction(BaseILInstruction):
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_flag_ssa(self, operand_index1:int, operand_index2:int) -> SSAFlag:
- return SSAFlag(ILFlag(self.function.arch, architecture.FlagIndex(self.instr.operands[operand_index1])),
- self.instr.operands[operand_index2])
+ def _get_flag_ssa(self, operand_index1: int, operand_index2: int) -> SSAFlag:
+ return SSAFlag(
+ ILFlag(self.function.arch, architecture.FlagIndex(self.instr.operands[operand_index1])),
+ self.instr.operands[operand_index2]
+ )
- def _get_reg_ssa(self, operand_index1:int, operand_index2:int) -> SSARegister:
- return SSARegister(ILRegister(self.function.arch,
- architecture.RegisterIndex(self.instr.operands[operand_index1])),
- self.instr.operands[operand_index2])
+ def _get_reg_ssa(self, operand_index1: int, operand_index2: int) -> SSARegister:
+ return SSARegister(
+ ILRegister(self.function.arch, architecture.RegisterIndex(self.instr.operands[operand_index1])),
+ self.instr.operands[operand_index2]
+ )
- def _get_reg_stack_ssa(self, operand_index1:int, operand_index2:int) -> SSARegisterStack:
- reg_stack = ILRegisterStack(self.function.arch,
- architecture.RegisterStackIndex(self.instr.operands[operand_index1]))
+ def _get_reg_stack_ssa(self, operand_index1: int, operand_index2: int) -> SSARegisterStack:
+ reg_stack = ILRegisterStack(
+ self.function.arch, architecture.RegisterStackIndex(self.instr.operands[operand_index1])
+ )
return SSARegisterStack(reg_stack, self.instr.operands[operand_index2])
- def _get_sem_class(self, operand_index:int) -> Optional[ILSemanticFlagClass]:
+ def _get_sem_class(self, operand_index: int) -> Optional[ILSemanticFlagClass]:
if self.instr.operands[operand_index] == 0:
return None
- return ILSemanticFlagClass(self.function.arch,
- architecture.SemanticClassIndex(self.instr.operands[operand_index]))
+ return ILSemanticFlagClass(
+ self.function.arch, architecture.SemanticClassIndex(self.instr.operands[operand_index])
+ )
- def _get_sem_group(self, operand_index:int) -> ILSemanticFlagGroup:
- return ILSemanticFlagGroup(self.function.arch,
- architecture.SemanticGroupIndex(self.instr.operands[operand_index]))
+ def _get_sem_group(self, operand_index: int) -> ILSemanticFlagGroup:
+ return ILSemanticFlagGroup(
+ self.function.arch, architecture.SemanticGroupIndex(self.instr.operands[operand_index])
+ )
- def _get_cond(self, operand_index:int) -> LowLevelILFlagCondition:
+ def _get_cond(self, operand_index: int) -> LowLevelILFlagCondition:
return LowLevelILFlagCondition(self.instr.operands[operand_index])
- def _get_int_list(self, operand_index:int) -> List[int]:
+ def _get_int_list(self, operand_index: int) -> List[int]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
- result:List[int] = []
+ result: List[int] = []
try:
for j in range(count.value):
result.append(operand_list[j])
@@ -883,7 +922,7 @@ class LowLevelILInstruction(BaseILInstruction):
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_expr_list(self, operand_index:int) -> List['LowLevelILInstruction']:
+ def _get_expr_list(self, operand_index: int) -> List['LowLevelILInstruction']:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
@@ -895,12 +934,12 @@ class LowLevelILInstruction(BaseILInstruction):
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_reg_or_flag_list(self, operand_index:int) -> List[Union[ILFlag, ILRegister]]:
+ def _get_reg_or_flag_list(self, operand_index: int) -> List[Union[ILFlag, ILRegister]]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
- result:List[Union[ILFlag, ILRegister]] = []
+ result: List[Union[ILFlag, ILRegister]] = []
try:
for j in range(count.value):
if (operand_list[j] & (1 << 32)) != 0:
@@ -911,7 +950,7 @@ class LowLevelILInstruction(BaseILInstruction):
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_reg_ssa_list(self, operand_index:int) -> List[SSARegister]:
+ def _get_reg_ssa_list(self, operand_index: int) -> List[SSARegister]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
@@ -919,52 +958,52 @@ class LowLevelILInstruction(BaseILInstruction):
try:
for j in range(count.value // 2):
reg = operand_list[j * 2]
- reg_version = operand_list[(j * 2) + 1]
+ reg_version = operand_list[(j*2) + 1]
result.append(SSARegister(ILRegister(self.function.arch, reg), reg_version))
return result
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_reg_stack_ssa_list(self, operand_index:int) -> List[SSARegisterStack]:
+ def _get_reg_stack_ssa_list(self, operand_index: int) -> List[SSARegisterStack]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
- result:List[SSARegisterStack] = []
+ result: List[SSARegisterStack] = []
try:
for j in range(count.value // 2):
reg_stack = operand_list[j * 2]
- reg_version = operand_list[(j * 2) + 1]
+ reg_version = operand_list[(j*2) + 1]
result.append(SSARegisterStack(ILRegisterStack(self.function.arch, reg_stack), reg_version))
return result
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_flag_ssa_list(self, operand_index:int) -> List[SSAFlag]:
+ def _get_flag_ssa_list(self, operand_index: int) -> List[SSAFlag]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
try:
- result:List[SSAFlag] = []
+ result: List[SSAFlag] = []
for j in range(count.value // 2):
flag = operand_list[j * 2]
- flag_version = operand_list[(j * 2) + 1]
+ flag_version = operand_list[(j*2) + 1]
result.append(SSAFlag(ILFlag(self.function.arch, flag), flag_version))
return result
finally:
core.BNLowLevelILFreeOperandList(operand_list)
- def _get_reg_or_flag_ssa_list(self, operand_index:int) -> List[SSARegisterOrFlag]:
+ def _get_reg_or_flag_ssa_list(self, operand_index: int) -> List[SSARegisterOrFlag]:
count = ctypes.c_ulonglong()
operand_list = core.BNLowLevelILGetOperandList(self.function.handle, self.expr_index, operand_index, count)
assert operand_list is not None, "core.BNLowLevelILGetOperandList returned None"
- result:List[SSARegisterOrFlag] = []
+ result: List[SSARegisterOrFlag] = []
try:
for j in range(count.value // 2):
if (operand_list[j * 2] & (1 << 32)) != 0:
reg_or_flag = ILFlag(self.function.arch, operand_list[j * 2] & 0xffffffff)
else:
reg_or_flag = ILRegister(self.function.arch, operand_list[j * 2] & 0xffffffff)
- reg_version = operand_list[(j * 2) + 1]
+ reg_version = operand_list[(j*2) + 1]
result.append(SSARegisterOrFlag(reg_or_flag, reg_version))
return result
finally:
@@ -973,7 +1012,6 @@ class LowLevelILInstruction(BaseILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILBinaryBase(LowLevelILInstruction, BinaryOperation):
-
@property
def left(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -994,7 +1032,6 @@ class LowLevelILComparisonBase(LowLevelILBinaryBase):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCarryBase(LowLevelILInstruction, Carry):
-
@property
def left(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1014,7 +1051,6 @@ class LowLevelILCarryBase(LowLevelILInstruction, Carry):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILUnaryBase(LowLevelILInstruction, UnaryOperation):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1026,29 +1062,28 @@ class LowLevelILUnaryBase(LowLevelILInstruction, UnaryOperation):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILConstantBase(LowLevelILInstruction, Constant):
-
def __int__(self):
return self.constant
def __bool__(self):
return self.constant != 0
- def __eq__(self, other:'LowLevelILConstantBase'):
+ def __eq__(self, other: 'LowLevelILConstantBase'):
return self.constant == other.constant
- def __ne__(self, other:'LowLevelILConstantBase'):
+ def __ne__(self, other: 'LowLevelILConstantBase'):
return self.constant != other.constant
- def __lt__(self, other:'LowLevelILConstantBase'):
+ def __lt__(self, other: 'LowLevelILConstantBase'):
return self.constant < other.constant
- def __gt__(self, other:'LowLevelILConstantBase'):
+ def __gt__(self, other: 'LowLevelILConstantBase'):
return self.constant > other.constant
- def __le__(self, other:'LowLevelILConstantBase'):
+ def __le__(self, other: 'LowLevelILConstantBase'):
return self.constant <= other.constant
- def __ge__(self, other:'LowLevelILConstantBase'):
+ def __ge__(self, other: 'LowLevelILConstantBase'):
return self.constant >= other.constant
def __hash__(self):
@@ -1125,7 +1160,6 @@ class LowLevelILLowPart(LowLevelILUnaryBase, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILJump(LowLevelILInstruction, Terminal):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1137,7 +1171,6 @@ class LowLevelILJump(LowLevelILInstruction, Terminal):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCall(LowLevelILInstruction, Localcall):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1149,7 +1182,6 @@ class LowLevelILCall(LowLevelILInstruction, Localcall):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILTailcall(LowLevelILInstruction, Tailcall):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1161,7 +1193,6 @@ class LowLevelILTailcall(LowLevelILInstruction, Tailcall):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRet(LowLevelILInstruction, Return):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1173,7 +1204,6 @@ class LowLevelILRet(LowLevelILInstruction, Return):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILUnimplMem(LowLevelILInstruction, Memory):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1185,7 +1215,6 @@ class LowLevelILUnimplMem(LowLevelILInstruction, Memory):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFsqrt(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1197,7 +1226,6 @@ class LowLevelILFsqrt(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFneg(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1209,7 +1237,6 @@ class LowLevelILFneg(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFabs(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1221,7 +1248,6 @@ class LowLevelILFabs(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFloatToInt(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1233,7 +1259,6 @@ class LowLevelILFloatToInt(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILIntToFloat(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1245,7 +1270,6 @@ class LowLevelILIntToFloat(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFloatConv(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1257,7 +1281,6 @@ class LowLevelILFloatConv(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRoundToInt(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1269,7 +1292,6 @@ class LowLevelILRoundToInt(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFloor(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1281,7 +1303,6 @@ class LowLevelILFloor(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCeil(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1293,7 +1314,6 @@ class LowLevelILCeil(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFtrunc(LowLevelILInstruction, FloatingPoint, Arithmetic):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1305,7 +1325,6 @@ class LowLevelILFtrunc(LowLevelILInstruction, FloatingPoint, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILLoad(LowLevelILInstruction, Load):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1317,7 +1336,6 @@ class LowLevelILLoad(LowLevelILInstruction, Load):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILPush(LowLevelILInstruction, StackOperation):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1329,7 +1347,6 @@ class LowLevelILPush(LowLevelILInstruction, StackOperation):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILReg(LowLevelILInstruction):
-
@property
def src(self) -> ILRegister:
return self._get_reg(0)
@@ -1341,7 +1358,6 @@ class LowLevelILReg(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackPop(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> ILRegisterStack:
return self._get_reg_stack(0)
@@ -1353,7 +1369,6 @@ class LowLevelILRegStackPop(LowLevelILInstruction, RegisterStack):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackFreeReg(LowLevelILInstruction, RegisterStack):
-
@property
def dest(self) -> ILRegister:
return self._get_reg(0)
@@ -1375,7 +1390,6 @@ class LowLevelILConstPtr(LowLevelILConstantBase):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFloatConst(LowLevelILConstantBase, FloatingPoint):
-
@property
def constant(self) -> Union[int, float]:
return self._get_float(0)
@@ -1387,7 +1401,6 @@ class LowLevelILFloatConst(LowLevelILConstantBase, FloatingPoint):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlag(LowLevelILInstruction):
-
@property
def src(self) -> ILFlag:
return self._get_flag(0)
@@ -1399,7 +1412,6 @@ class LowLevelILFlag(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILGoto(LowLevelILInstruction, Terminal):
-
@property
def dest(self) -> int:
return self._get_int(0)
@@ -1411,7 +1423,6 @@ class LowLevelILGoto(LowLevelILInstruction, Terminal):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagGroup(LowLevelILInstruction):
-
@property
def semantic_group(self) -> ILSemanticFlagGroup:
return self._get_sem_group(0)
@@ -1423,7 +1434,6 @@ class LowLevelILFlagGroup(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILBoolToInt(LowLevelILInstruction):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1435,7 +1445,6 @@ class LowLevelILBoolToInt(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILTrap(LowLevelILInstruction, Terminal):
-
@property
def vector(self) -> int:
return self._get_int(0)
@@ -1447,7 +1456,6 @@ class LowLevelILTrap(LowLevelILInstruction, Terminal):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegSplitDestSsa(LowLevelILInstruction, SSA):
-
@property
def dest(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -1459,7 +1467,6 @@ class LowLevelILRegSplitDestSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackDestSsa(LowLevelILInstruction, RegisterStack, SSA):
-
@property
def dest(self) -> SSARegisterStack:
return self._get_reg_stack_ssa(0, 1)
@@ -1475,7 +1482,6 @@ class LowLevelILRegStackDestSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegSsa(LowLevelILInstruction, SSA):
-
@property
def src(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -1487,7 +1493,6 @@ class LowLevelILRegSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagSsa(LowLevelILInstruction, SSA):
-
@property
def src(self) -> SSAFlag:
return self._get_flag_ssa(0, 1)
@@ -1499,7 +1504,6 @@ class LowLevelILFlagSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCallParam(LowLevelILInstruction, SSA):
-
@property
def src(self) -> List['LowLevelILInstruction']:
return self._get_expr_list(0)
@@ -1511,7 +1515,6 @@ class LowLevelILCallParam(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILMemPhi(LowLevelILInstruction, Memory, Phi):
-
@property
def dest_memory(self) -> int:
return self._get_int(0)
@@ -1527,7 +1530,6 @@ class LowLevelILMemPhi(LowLevelILInstruction, Memory, Phi):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetReg(LowLevelILInstruction, SetReg):
-
@property
def dest(self) -> ILRegister:
return self._get_reg(0)
@@ -1543,7 +1545,6 @@ class LowLevelILSetReg(LowLevelILInstruction, SetReg):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackPush(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> ILRegisterStack:
return self._get_reg_stack(0)
@@ -1559,7 +1560,6 @@ class LowLevelILRegStackPush(LowLevelILInstruction, RegisterStack):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetFlag(LowLevelILInstruction):
-
@property
def dest(self) -> ILFlag:
return self._get_flag(0)
@@ -1575,7 +1575,6 @@ class LowLevelILSetFlag(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILStore(LowLevelILInstruction, Store):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1591,7 +1590,6 @@ class LowLevelILStore(LowLevelILInstruction, Store):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegSplit(LowLevelILInstruction):
-
@property
def hi(self) -> ILRegister:
return self._get_reg(0)
@@ -1607,7 +1605,6 @@ class LowLevelILRegSplit(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackRel(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> ILRegisterStack:
return self._get_reg_stack(0)
@@ -1623,7 +1620,6 @@ class LowLevelILRegStackRel(LowLevelILInstruction, RegisterStack):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackFreeRel(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> ILRegisterStack:
return self._get_reg_stack(0)
@@ -1639,7 +1635,6 @@ class LowLevelILRegStackFreeRel(LowLevelILInstruction, RegisterStack):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILExternPtr(LowLevelILConstantBase):
-
@property
def constant(self) -> int:
return self._get_int(0)
@@ -1655,7 +1650,6 @@ class LowLevelILExternPtr(LowLevelILConstantBase):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagBit(LowLevelILInstruction):
-
@property
def src(self) -> ILFlag:
return self._get_flag(0)
@@ -1795,7 +1789,7 @@ class LowLevelILCmpUlt(LowLevelILComparisonBase):
@dataclass(frozen=True, repr=False, eq=False)
-class LowLevelILCmpSle(LowLevelILComparisonBase,Signed):
+class LowLevelILCmpSle(LowLevelILComparisonBase, Signed):
pass
@@ -1891,7 +1885,6 @@ class LowLevelILFcmpUo(LowLevelILInstruction, Comparison, FloatingPoint):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILJumpTo(LowLevelILInstruction):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -1907,7 +1900,6 @@ class LowLevelILJumpTo(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagCond(LowLevelILInstruction):
-
@property
def condition(self) -> LowLevelILFlagCondition:
return self._get_cond(0)
@@ -1928,7 +1920,6 @@ class LowLevelILAddOverflow(LowLevelILBinaryBase, Arithmetic):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegSsa(LowLevelILInstruction, SetReg, SSA):
-
@property
def dest(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -1944,7 +1935,6 @@ class LowLevelILSetRegSsa(LowLevelILInstruction, SetReg, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegSsaPartial(LowLevelILInstruction, SetReg, SSA):
-
@property
def full_reg(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -1960,7 +1950,6 @@ class LowLevelILRegSsaPartial(LowLevelILInstruction, SetReg, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegSplitSsa(LowLevelILInstruction, SetReg, SSA):
-
@property
def hi(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -1976,7 +1965,6 @@ class LowLevelILRegSplitSsa(LowLevelILInstruction, SetReg, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackAbsSsa(LowLevelILInstruction, RegisterStack, SSA):
-
@property
def stack(self) -> SSARegisterStack:
return self._get_reg_stack_ssa(0, 1)
@@ -1992,7 +1980,6 @@ class LowLevelILRegStackAbsSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackFreeAbsSsa(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2008,7 +1995,6 @@ class LowLevelILRegStackFreeAbsSsa(LowLevelILInstruction, RegisterStack):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetFlagSsa(LowLevelILInstruction, SSA):
-
@property
def dest(self) -> SSAFlag:
return self._get_flag_ssa(0, 1)
@@ -2024,7 +2010,6 @@ class LowLevelILSetFlagSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagBitSsa(LowLevelILInstruction, SSA):
-
@property
def src(self) -> SSAFlag:
return self._get_flag_ssa(0, 1)
@@ -2040,7 +2025,6 @@ class LowLevelILFlagBitSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCallOutputSsa(LowLevelILInstruction, SSA):
-
@property
def dest_memory(self) -> int:
return self._get_int(0)
@@ -2056,7 +2040,6 @@ class LowLevelILCallOutputSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCallStackSsa(LowLevelILInstruction, SSA):
-
@property
def src(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -2072,7 +2055,6 @@ class LowLevelILCallStackSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILLoadSsa(LowLevelILInstruction, Load, SSA):
-
@property
def src(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2088,7 +2070,6 @@ class LowLevelILLoadSsa(LowLevelILInstruction, Load, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegPhi(LowLevelILInstruction, Phi):
-
@property
def dest(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -2104,7 +2085,6 @@ class LowLevelILRegPhi(LowLevelILInstruction, Phi):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackPhi(LowLevelILInstruction, RegisterStack, Phi):
-
@property
def dest(self) -> SSARegisterStack:
return self._get_reg_stack_ssa(0, 1)
@@ -2120,7 +2100,6 @@ class LowLevelILRegStackPhi(LowLevelILInstruction, RegisterStack, Phi):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILFlagPhi(LowLevelILInstruction, Phi):
-
@property
def dest(self) -> SSAFlag:
return self._get_flag_ssa(0, 1)
@@ -2136,7 +2115,6 @@ class LowLevelILFlagPhi(LowLevelILInstruction, Phi):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegSplit(LowLevelILInstruction, SetReg):
-
@property
def hi(self) -> ILRegister:
return self._get_reg(0)
@@ -2156,7 +2134,6 @@ class LowLevelILSetRegSplit(LowLevelILInstruction, SetReg):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegStackRel(LowLevelILInstruction, RegisterStack):
-
@property
def stack(self) -> ILRegisterStack:
return self._get_reg_stack(0)
@@ -2196,7 +2173,6 @@ class LowLevelILRrc(LowLevelILCarryBase):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCallStackAdjust(LowLevelILInstruction, Localcall):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2216,7 +2192,6 @@ class LowLevelILCallStackAdjust(LowLevelILInstruction, Localcall):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILIf(LowLevelILInstruction, ControlFlow):
-
@property
def condition(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2236,7 +2211,6 @@ class LowLevelILIf(LowLevelILInstruction, ControlFlow):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILIntrinsic(LowLevelILInstruction):
-
@property
def output(self) -> List[Union[ILFlag, ILRegister]]:
return self._get_reg_or_flag_list(0)
@@ -2256,7 +2230,6 @@ class LowLevelILIntrinsic(LowLevelILInstruction):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILIntrinsicSsa(LowLevelILInstruction, SSA):
-
@property
def output(self) -> List[SSARegisterOrFlag]:
return self._get_reg_or_flag_ssa_list(0)
@@ -2276,7 +2249,6 @@ class LowLevelILIntrinsicSsa(LowLevelILInstruction, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegSsaPartial(LowLevelILInstruction, SetReg, SSA):
-
@property
def full_reg(self) -> SSARegister:
return self._get_reg_ssa(0, 1)
@@ -2296,7 +2268,6 @@ class LowLevelILSetRegSsaPartial(LowLevelILInstruction, SetReg, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegSplitSsa(LowLevelILInstruction, SetReg, SSA):
-
@property
def hi(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2335,7 +2306,6 @@ class LowLevelILSetRegStackAbsSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackRelSsa(LowLevelILInstruction, RegisterStack, SSA):
-
@property
def stack(self) -> SSARegisterStack:
return self._get_reg_stack_ssa(0, 1)
@@ -2355,7 +2325,6 @@ class LowLevelILRegStackRelSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILRegStackFreeRelSsa(LowLevelILInstruction, RegisterStack, SSA):
-
@property
def stack(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2375,7 +2344,6 @@ class LowLevelILRegStackFreeRelSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSyscallSsa(LowLevelILInstruction, Syscall, SSA):
-
@property
def output(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2395,7 +2363,6 @@ class LowLevelILSyscallSsa(LowLevelILInstruction, Syscall, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILSetRegStackRelSsa(LowLevelILInstruction, RegisterStack, SSA):
-
@property
def stack(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2419,7 +2386,6 @@ class LowLevelILSetRegStackRelSsa(LowLevelILInstruction, RegisterStack, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILCallSsa(LowLevelILInstruction, Localcall, SSA):
-
@property
def output(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2443,7 +2409,6 @@ class LowLevelILCallSsa(LowLevelILInstruction, Localcall, SSA):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILTailcallSsa(LowLevelILInstruction, Tailcall, SSA, Terminal):
-
@property
def output(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2467,7 +2432,6 @@ class LowLevelILTailcallSsa(LowLevelILInstruction, Tailcall, SSA, Terminal):
@dataclass(frozen=True, repr=False, eq=False)
class LowLevelILStoreSsa(LowLevelILInstruction, Store, SSA):
-
@property
def dest(self) -> LowLevelILInstruction:
return self._get_expr(0)
@@ -2490,141 +2454,141 @@ class LowLevelILStoreSsa(LowLevelILInstruction, Store, SSA):
ILInstruction:Dict[LowLevelILOperation, LowLevelILInstruction] = { # type: ignore
- LowLevelILOperation.LLIL_NOP: LowLevelILNop, # [],
- LowLevelILOperation.LLIL_SET_REG: LowLevelILSetReg, # [("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SPLIT: LowLevelILSetRegSplit, # [("hi", "reg"), ("lo", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_REL: LowLevelILSetRegStackRel, # [("stack", "reg_stack"), ("dest", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_PUSH: LowLevelILRegStackPush, # [("stack", "reg_stack"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_FLAG: LowLevelILSetFlag, # [("dest", "flag"), ("src", "expr")],
- LowLevelILOperation.LLIL_LOAD: LowLevelILLoad, # [("src", "expr")],
- LowLevelILOperation.LLIL_STORE: LowLevelILStore, # [("dest", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_PUSH: LowLevelILPush, # [("src", "expr")],
- LowLevelILOperation.LLIL_POP: LowLevelILPop, # [],
- LowLevelILOperation.LLIL_REG: LowLevelILReg, # [("src", "reg")],
- LowLevelILOperation.LLIL_REG_SPLIT: LowLevelILRegSplit, # [("hi", "reg"), ("lo", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_REL: LowLevelILRegStackRel, # [("stack", "reg_stack"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_POP: LowLevelILRegStackPop, # [("stack", "reg_stack")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REG: LowLevelILRegStackFreeReg, # [("dest", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REL: LowLevelILRegStackFreeRel, # [("stack", "reg_stack"), ("dest", "expr")],
- LowLevelILOperation.LLIL_CONST: LowLevelILConst, # [("constant", "int")],
- LowLevelILOperation.LLIL_CONST_PTR: LowLevelILConstPtr, # [("constant", "int")],
- LowLevelILOperation.LLIL_EXTERN_PTR: LowLevelILExternPtr, # [("constant", "int"), ("offset", "int")],
- LowLevelILOperation.LLIL_FLOAT_CONST: LowLevelILFloatConst, # [("constant", "float")],
- LowLevelILOperation.LLIL_FLAG: LowLevelILFlag, # [("src", "flag")],
- LowLevelILOperation.LLIL_FLAG_BIT: LowLevelILFlagBit, # [("src", "flag"), ("bit", "int")],
- LowLevelILOperation.LLIL_ADD: LowLevelILAdd, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ADC: LowLevelILAdc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_SUB: LowLevelILSub, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SBB: LowLevelILSbb, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_AND: LowLevelILAnd, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_OR: LowLevelILOr, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_XOR: LowLevelILXor, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_LSL: LowLevelILLsl, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_LSR: LowLevelILLsr, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ASR: LowLevelILAsr, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_ROL: LowLevelILRol, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_RLC: LowLevelILRlc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_ROR: LowLevelILRor, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_RRC: LowLevelILRrc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
- LowLevelILOperation.LLIL_MUL: LowLevelILMul, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MULU_DP: LowLevelILMuluDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MULS_DP: LowLevelILMulsDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVU: LowLevelILDivu, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVU_DP: LowLevelILDivuDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVS: LowLevelILDivs, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_DIVS_DP: LowLevelILDivsDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODU: LowLevelILModu, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODU_DP: LowLevelILModuDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODS: LowLevelILMods, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_MODS_DP: LowLevelILModsDp, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_NEG: LowLevelILNeg, # [("src", "expr")],
- LowLevelILOperation.LLIL_NOT: LowLevelILNot, # [("src", "expr")],
- LowLevelILOperation.LLIL_SX: LowLevelILSx, # [("src", "expr")],
- LowLevelILOperation.LLIL_ZX: LowLevelILZx, # [("src", "expr")],
- LowLevelILOperation.LLIL_LOW_PART: LowLevelILLowPart, # [("src", "expr")],
- LowLevelILOperation.LLIL_JUMP: LowLevelILJump, # [("dest", "expr")],
- LowLevelILOperation.LLIL_JUMP_TO: LowLevelILJumpTo, # [("dest", "expr"), ("targets", "target_map")],
- LowLevelILOperation.LLIL_CALL: LowLevelILCall, # [("dest", "expr")],
- LowLevelILOperation.LLIL_CALL_STACK_ADJUST: LowLevelILCallStackAdjust, # [("dest", "expr"), ("stack_adjustment", "int"), ("reg_stack_adjustments", "reg_stack_adjust")],
- LowLevelILOperation.LLIL_TAILCALL: LowLevelILTailcall, # [("dest", "expr")],
- LowLevelILOperation.LLIL_RET: LowLevelILRet, # [("dest", "expr")],
- LowLevelILOperation.LLIL_NORET: LowLevelILNoret, # [],
- LowLevelILOperation.LLIL_IF: LowLevelILIf, # [("condition", "expr"), ("true", "int"), ("false", "int")],
- LowLevelILOperation.LLIL_GOTO: LowLevelILGoto, # [("dest", "int")],
- LowLevelILOperation.LLIL_FLAG_COND: LowLevelILFlagCond, # [("condition", "cond"), ("semantic_class", "sem_class")],
- LowLevelILOperation.LLIL_FLAG_GROUP: LowLevelILFlagGroup, # [("semantic_group", "sem_group")],
- LowLevelILOperation.LLIL_CMP_E: LowLevelILCmpE, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_NE: LowLevelILCmpNe, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SLT: LowLevelILCmpSlt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_ULT: LowLevelILCmpUlt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SLE: LowLevelILCmpSle, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_ULE: LowLevelILCmpUle, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SGE: LowLevelILCmpSge, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_UGE: LowLevelILCmpUge, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_SGT: LowLevelILCmpSgt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_CMP_UGT: LowLevelILCmpUgt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_TEST_BIT: LowLevelILTestBit, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_BOOL_TO_INT: LowLevelILBoolToInt, # [("src", "expr")],
- LowLevelILOperation.LLIL_ADD_OVERFLOW: LowLevelILAddOverflow, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SYSCALL: LowLevelILSyscall, # [],
- LowLevelILOperation.LLIL_INTRINSIC: LowLevelILIntrinsic, # [("output", "reg_or_flag_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
- LowLevelILOperation.LLIL_INTRINSIC_SSA: LowLevelILIntrinsicSsa, # [("output", "reg_or_flag_ssa_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
- LowLevelILOperation.LLIL_BP: LowLevelILBp, # [],
- LowLevelILOperation.LLIL_TRAP: LowLevelILTrap, # [("vector", "int")],
- LowLevelILOperation.LLIL_UNDEF: LowLevelILUndef, # [],
- LowLevelILOperation.LLIL_UNIMPL: LowLevelILUnimpl, # [],
- LowLevelILOperation.LLIL_UNIMPL_MEM: LowLevelILUnimplMem, # [("src", "expr")],
- LowLevelILOperation.LLIL_FADD: LowLevelILFadd, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FSUB: LowLevelILFsub, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FMUL: LowLevelILFmul, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FDIV: LowLevelILFdiv, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FSQRT: LowLevelILFsqrt, # [("src", "expr")],
- LowLevelILOperation.LLIL_FNEG: LowLevelILFneg, # [("src", "expr")],
- LowLevelILOperation.LLIL_FABS: LowLevelILFabs, # [("src", "expr")],
- LowLevelILOperation.LLIL_FLOAT_TO_INT: LowLevelILFloatToInt, # [("src", "expr")],
- LowLevelILOperation.LLIL_INT_TO_FLOAT: LowLevelILIntToFloat, # [("src", "expr")],
- LowLevelILOperation.LLIL_FLOAT_CONV: LowLevelILFloatConv, # [("src", "expr")],
- LowLevelILOperation.LLIL_ROUND_TO_INT: LowLevelILRoundToInt, # [("src", "expr")],
- LowLevelILOperation.LLIL_FLOOR: LowLevelILFloor, # [("src", "expr")],
- LowLevelILOperation.LLIL_CEIL: LowLevelILCeil, # [("src", "expr")],
- LowLevelILOperation.LLIL_FTRUNC: LowLevelILFtrunc, # [("src", "expr")],
- LowLevelILOperation.LLIL_FCMP_E: LowLevelILFcmpE, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_NE: LowLevelILFcmpNe, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_LT: LowLevelILFcmpLt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_LE: LowLevelILFcmpLe, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_GE: LowLevelILFcmpGe, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_GT: LowLevelILFcmpGt, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_O: LowLevelILFcmpO, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_FCMP_UO: LowLevelILFcmpUo, # [("left", "expr"), ("right", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SSA: LowLevelILSetRegSsa, # [("dest", "reg_ssa"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SSA_PARTIAL: LowLevelILSetRegSsaPartial, # [("full_reg", "reg_ssa"), ("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_SPLIT_SSA: LowLevelILSetRegSplitSsa, # [("hi", "expr"), ("lo", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_REL_SSA: LowLevelILSetRegStackRelSsa, # [("stack", "expr"), ("dest", "expr"), ("top", "expr"), ("src", "expr")],
- LowLevelILOperation.LLIL_SET_REG_STACK_ABS_SSA: LowLevelILSetRegStackAbsSsa, # [("stack", "expr"), ("dest", "reg"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_SPLIT_DEST_SSA: LowLevelILRegSplitDestSsa, # [("dest", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_STACK_DEST_SSA: LowLevelILRegStackDestSsa, # [("src", "reg_stack_ssa_dest_and_src")],
- LowLevelILOperation.LLIL_REG_SSA: LowLevelILRegSsa, # [("src", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_SSA_PARTIAL: LowLevelILRegSsaPartial, # [("full_reg", "reg_ssa"), ("src", "reg")],
- LowLevelILOperation.LLIL_REG_SPLIT_SSA: LowLevelILRegSplitSsa, # [("hi", "reg_ssa"), ("lo", "reg_ssa")],
- LowLevelILOperation.LLIL_REG_STACK_REL_SSA: LowLevelILRegStackRelSsa, # [("stack", "reg_stack_ssa"), ("src", "expr"), ("top", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_ABS_SSA: LowLevelILRegStackAbsSsa, # [("stack", "reg_stack_ssa"), ("src", "reg")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_REL_SSA: LowLevelILRegStackFreeRelSsa, # [("stack", "expr"), ("dest", "expr"), ("top", "expr")],
- LowLevelILOperation.LLIL_REG_STACK_FREE_ABS_SSA: LowLevelILRegStackFreeAbsSsa, # [("stack", "expr"), ("dest", "reg")],
- LowLevelILOperation.LLIL_SET_FLAG_SSA: LowLevelILSetFlagSsa, # [("dest", "flag_ssa"), ("src", "expr")],
- LowLevelILOperation.LLIL_FLAG_SSA: LowLevelILFlagSsa, # [("src", "flag_ssa")],
- LowLevelILOperation.LLIL_FLAG_BIT_SSA: LowLevelILFlagBitSsa, # [("src", "flag_ssa"), ("bit", "int")],
- LowLevelILOperation.LLIL_CALL_SSA: LowLevelILCallSsa, # [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_SYSCALL_SSA: LowLevelILSyscallSsa, # [("output", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_TAILCALL_SSA: LowLevelILTailcallSsa, # [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
- LowLevelILOperation.LLIL_CALL_OUTPUT_SSA: LowLevelILCallOutputSsa, # [("dest_memory", "int"), ("dest", "reg_ssa_list")],
- LowLevelILOperation.LLIL_CALL_STACK_SSA: LowLevelILCallStackSsa, # [("src", "reg_ssa"), ("src_memory", "int")],
- LowLevelILOperation.LLIL_CALL_PARAM: LowLevelILCallParam, # [("src", "expr_list")],
- LowLevelILOperation.LLIL_LOAD_SSA: LowLevelILLoadSsa, # [("src", "expr"), ("src_memory", "int")],
- LowLevelILOperation.LLIL_STORE_SSA: LowLevelILStoreSsa, # [("dest", "expr"), ("dest_memory", "int"), ("src_memory", "int"), ("src", "expr")],
- LowLevelILOperation.LLIL_REG_PHI: LowLevelILRegPhi, # [("dest", "reg_ssa"), ("src", "reg_ssa_list")],
- LowLevelILOperation.LLIL_REG_STACK_PHI: LowLevelILRegStackPhi, # [("dest", "reg_stack_ssa"), ("src", "reg_stack_ssa_list")],
- LowLevelILOperation.LLIL_FLAG_PHI: LowLevelILFlagPhi, # [("dest", "flag_ssa"), ("src", "flag_ssa_list")],
- LowLevelILOperation.LLIL_MEM_PHI: LowLevelILMemPhi, # [("dest_memory", "int"), ("src_memory", "int_list")]
+ LowLevelILOperation.LLIL_NOP: LowLevelILNop, # [],
+ LowLevelILOperation.LLIL_SET_REG: LowLevelILSetReg, # [("dest", "reg"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_SPLIT: LowLevelILSetRegSplit, # [("hi", "reg"), ("lo", "reg"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_STACK_REL: LowLevelILSetRegStackRel, # [("stack", "reg_stack"), ("dest", "expr"), ("src", "expr")],
+ LowLevelILOperation.LLIL_REG_STACK_PUSH: LowLevelILRegStackPush, # [("stack", "reg_stack"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_FLAG: LowLevelILSetFlag, # [("dest", "flag"), ("src", "expr")],
+ LowLevelILOperation.LLIL_LOAD: LowLevelILLoad, # [("src", "expr")],
+ LowLevelILOperation.LLIL_STORE: LowLevelILStore, # [("dest", "expr"), ("src", "expr")],
+ LowLevelILOperation.LLIL_PUSH: LowLevelILPush, # [("src", "expr")],
+ LowLevelILOperation.LLIL_POP: LowLevelILPop, # [],
+ LowLevelILOperation.LLIL_REG: LowLevelILReg, # [("src", "reg")],
+ LowLevelILOperation.LLIL_REG_SPLIT: LowLevelILRegSplit, # [("hi", "reg"), ("lo", "reg")],
+ LowLevelILOperation.LLIL_REG_STACK_REL: LowLevelILRegStackRel, # [("stack", "reg_stack"), ("src", "expr")],
+ LowLevelILOperation.LLIL_REG_STACK_POP: LowLevelILRegStackPop, # [("stack", "reg_stack")],
+ LowLevelILOperation.LLIL_REG_STACK_FREE_REG: LowLevelILRegStackFreeReg, # [("dest", "reg")],
+ LowLevelILOperation.LLIL_REG_STACK_FREE_REL: LowLevelILRegStackFreeRel, # [("stack", "reg_stack"), ("dest", "expr")],
+ LowLevelILOperation.LLIL_CONST: LowLevelILConst, # [("constant", "int")],
+ LowLevelILOperation.LLIL_CONST_PTR: LowLevelILConstPtr, # [("constant", "int")],
+ LowLevelILOperation.LLIL_EXTERN_PTR: LowLevelILExternPtr, # [("constant", "int"), ("offset", "int")],
+ LowLevelILOperation.LLIL_FLOAT_CONST: LowLevelILFloatConst, # [("constant", "float")],
+ LowLevelILOperation.LLIL_FLAG: LowLevelILFlag, # [("src", "flag")],
+ LowLevelILOperation.LLIL_FLAG_BIT: LowLevelILFlagBit, # [("src", "flag"), ("bit", "int")],
+ LowLevelILOperation.LLIL_ADD: LowLevelILAdd, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_ADC: LowLevelILAdc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
+ LowLevelILOperation.LLIL_SUB: LowLevelILSub, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_SBB: LowLevelILSbb, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
+ LowLevelILOperation.LLIL_AND: LowLevelILAnd, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_OR: LowLevelILOr, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_XOR: LowLevelILXor, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_LSL: LowLevelILLsl, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_LSR: LowLevelILLsr, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_ASR: LowLevelILAsr, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_ROL: LowLevelILRol, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_RLC: LowLevelILRlc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
+ LowLevelILOperation.LLIL_ROR: LowLevelILRor, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_RRC: LowLevelILRrc, # [("left", "expr"), ("right", "expr"), ("carry", "expr")],
+ LowLevelILOperation.LLIL_MUL: LowLevelILMul, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MULU_DP: LowLevelILMuluDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MULS_DP: LowLevelILMulsDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_DIVU: LowLevelILDivu, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_DIVU_DP: LowLevelILDivuDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_DIVS: LowLevelILDivs, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_DIVS_DP: LowLevelILDivsDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MODU: LowLevelILModu, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MODU_DP: LowLevelILModuDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MODS: LowLevelILMods, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_MODS_DP: LowLevelILModsDp, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_NEG: LowLevelILNeg, # [("src", "expr")],
+ LowLevelILOperation.LLIL_NOT: LowLevelILNot, # [("src", "expr")],
+ LowLevelILOperation.LLIL_SX: LowLevelILSx, # [("src", "expr")],
+ LowLevelILOperation.LLIL_ZX: LowLevelILZx, # [("src", "expr")],
+ LowLevelILOperation.LLIL_LOW_PART: LowLevelILLowPart, # [("src", "expr")],
+ LowLevelILOperation.LLIL_JUMP: LowLevelILJump, # [("dest", "expr")],
+ LowLevelILOperation.LLIL_JUMP_TO: LowLevelILJumpTo, # [("dest", "expr"), ("targets", "target_map")],
+ LowLevelILOperation.LLIL_CALL: LowLevelILCall, # [("dest", "expr")],
+ LowLevelILOperation.LLIL_CALL_STACK_ADJUST: LowLevelILCallStackAdjust, # [("dest", "expr"), ("stack_adjustment", "int"), ("reg_stack_adjustments", "reg_stack_adjust")],
+ LowLevelILOperation.LLIL_TAILCALL: LowLevelILTailcall, # [("dest", "expr")],
+ LowLevelILOperation.LLIL_RET: LowLevelILRet, # [("dest", "expr")],
+ LowLevelILOperation.LLIL_NORET: LowLevelILNoret, # [],
+ LowLevelILOperation.LLIL_IF: LowLevelILIf, # [("condition", "expr"), ("true", "int"), ("false", "int")],
+ LowLevelILOperation.LLIL_GOTO: LowLevelILGoto, # [("dest", "int")],
+ LowLevelILOperation.LLIL_FLAG_COND: LowLevelILFlagCond, # [("condition", "cond"), ("semantic_class", "sem_class")],
+ LowLevelILOperation.LLIL_FLAG_GROUP: LowLevelILFlagGroup, # [("semantic_group", "sem_group")],
+ LowLevelILOperation.LLIL_CMP_E: LowLevelILCmpE, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_NE: LowLevelILCmpNe, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_SLT: LowLevelILCmpSlt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_ULT: LowLevelILCmpUlt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_SLE: LowLevelILCmpSle, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_ULE: LowLevelILCmpUle, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_SGE: LowLevelILCmpSge, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_UGE: LowLevelILCmpUge, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_SGT: LowLevelILCmpSgt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_CMP_UGT: LowLevelILCmpUgt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_TEST_BIT: LowLevelILTestBit, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_BOOL_TO_INT: LowLevelILBoolToInt, # [("src", "expr")],
+ LowLevelILOperation.LLIL_ADD_OVERFLOW: LowLevelILAddOverflow, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_SYSCALL: LowLevelILSyscall, # [],
+ LowLevelILOperation.LLIL_INTRINSIC: LowLevelILIntrinsic, # [("output", "reg_or_flag_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
+ LowLevelILOperation.LLIL_INTRINSIC_SSA: LowLevelILIntrinsicSsa, # [("output", "reg_or_flag_ssa_list"), ("intrinsic", "intrinsic"), ("param", "expr")],
+ LowLevelILOperation.LLIL_BP: LowLevelILBp, # [],
+ LowLevelILOperation.LLIL_TRAP: LowLevelILTrap, # [("vector", "int")],
+ LowLevelILOperation.LLIL_UNDEF: LowLevelILUndef, # [],
+ LowLevelILOperation.LLIL_UNIMPL: LowLevelILUnimpl, # [],
+ LowLevelILOperation.LLIL_UNIMPL_MEM: LowLevelILUnimplMem, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FADD: LowLevelILFadd, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FSUB: LowLevelILFsub, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FMUL: LowLevelILFmul, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FDIV: LowLevelILFdiv, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FSQRT: LowLevelILFsqrt, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FNEG: LowLevelILFneg, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FABS: LowLevelILFabs, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FLOAT_TO_INT: LowLevelILFloatToInt, # [("src", "expr")],
+ LowLevelILOperation.LLIL_INT_TO_FLOAT: LowLevelILIntToFloat, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FLOAT_CONV: LowLevelILFloatConv, # [("src", "expr")],
+ LowLevelILOperation.LLIL_ROUND_TO_INT: LowLevelILRoundToInt, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FLOOR: LowLevelILFloor, # [("src", "expr")],
+ LowLevelILOperation.LLIL_CEIL: LowLevelILCeil, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FTRUNC: LowLevelILFtrunc, # [("src", "expr")],
+ LowLevelILOperation.LLIL_FCMP_E: LowLevelILFcmpE, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_NE: LowLevelILFcmpNe, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_LT: LowLevelILFcmpLt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_LE: LowLevelILFcmpLe, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_GE: LowLevelILFcmpGe, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_GT: LowLevelILFcmpGt, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_O: LowLevelILFcmpO, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_FCMP_UO: LowLevelILFcmpUo, # [("left", "expr"), ("right", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_SSA: LowLevelILSetRegSsa, # [("dest", "reg_ssa"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_SSA_PARTIAL: LowLevelILSetRegSsaPartial, # [("full_reg", "reg_ssa"), ("dest", "reg"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_SPLIT_SSA: LowLevelILSetRegSplitSsa, # [("hi", "expr"), ("lo", "expr"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_STACK_REL_SSA: LowLevelILSetRegStackRelSsa, # [("stack", "expr"), ("dest", "expr"), ("top", "expr"), ("src", "expr")],
+ LowLevelILOperation.LLIL_SET_REG_STACK_ABS_SSA: LowLevelILSetRegStackAbsSsa, # [("stack", "expr"), ("dest", "reg"), ("src", "expr")],
+ LowLevelILOperation.LLIL_REG_SPLIT_DEST_SSA: LowLevelILRegSplitDestSsa, # [("dest", "reg_ssa")],
+ LowLevelILOperation.LLIL_REG_STACK_DEST_SSA: LowLevelILRegStackDestSsa, # [("src", "reg_stack_ssa_dest_and_src")],
+ LowLevelILOperation.LLIL_REG_SSA: LowLevelILRegSsa, # [("src", "reg_ssa")],
+ LowLevelILOperation.LLIL_REG_SSA_PARTIAL: LowLevelILRegSsaPartial, # [("full_reg", "reg_ssa"), ("src", "reg")],
+ LowLevelILOperation.LLIL_REG_SPLIT_SSA: LowLevelILRegSplitSsa, # [("hi", "reg_ssa"), ("lo", "reg_ssa")],
+ LowLevelILOperation.LLIL_REG_STACK_REL_SSA: LowLevelILRegStackRelSsa, # [("stack", "reg_stack_ssa"), ("src", "expr"), ("top", "expr")],
+ LowLevelILOperation.LLIL_REG_STACK_ABS_SSA: LowLevelILRegStackAbsSsa, # [("stack", "reg_stack_ssa"), ("src", "reg")],
+ LowLevelILOperation.LLIL_REG_STACK_FREE_REL_SSA: LowLevelILRegStackFreeRelSsa, # [("stack", "expr"), ("dest", "expr"), ("top", "expr")],
+ LowLevelILOperation.LLIL_REG_STACK_FREE_ABS_SSA: LowLevelILRegStackFreeAbsSsa, # [("stack", "expr"), ("dest", "reg")],
+ LowLevelILOperation.LLIL_SET_FLAG_SSA: LowLevelILSetFlagSsa, # [("dest", "flag_ssa"), ("src", "expr")],
+ LowLevelILOperation.LLIL_FLAG_SSA: LowLevelILFlagSsa, # [("src", "flag_ssa")],
+ LowLevelILOperation.LLIL_FLAG_BIT_SSA: LowLevelILFlagBitSsa, # [("src", "flag_ssa"), ("bit", "int")],
+ LowLevelILOperation.LLIL_CALL_SSA: LowLevelILCallSsa, # [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
+ LowLevelILOperation.LLIL_SYSCALL_SSA: LowLevelILSyscallSsa, # [("output", "expr"), ("stack", "expr"), ("param", "expr")],
+ LowLevelILOperation.LLIL_TAILCALL_SSA: LowLevelILTailcallSsa, # [("output", "expr"), ("dest", "expr"), ("stack", "expr"), ("param", "expr")],
+ LowLevelILOperation.LLIL_CALL_OUTPUT_SSA: LowLevelILCallOutputSsa, # [("dest_memory", "int"), ("dest", "reg_ssa_list")],
+ LowLevelILOperation.LLIL_CALL_STACK_SSA: LowLevelILCallStackSsa, # [("src", "reg_ssa"), ("src_memory", "int")],
+ LowLevelILOperation.LLIL_CALL_PARAM: LowLevelILCallParam, # [("src", "expr_list")],
+ LowLevelILOperation.LLIL_LOAD_SSA: LowLevelILLoadSsa, # [("src", "expr"), ("src_memory", "int")],
+ LowLevelILOperation.LLIL_STORE_SSA: LowLevelILStoreSsa, # [("dest", "expr"), ("dest_memory", "int"), ("src_memory", "int"), ("src", "expr")],
+ LowLevelILOperation.LLIL_REG_PHI: LowLevelILRegPhi, # [("dest", "reg_ssa"), ("src", "reg_ssa_list")],
+ LowLevelILOperation.LLIL_REG_STACK_PHI: LowLevelILRegStackPhi, # [("dest", "reg_stack_ssa"), ("src", "reg_stack_ssa_list")],
+ LowLevelILOperation.LLIL_FLAG_PHI: LowLevelILFlagPhi, # [("dest", "flag_ssa"), ("src", "flag_ssa_list")],
+ LowLevelILOperation.LLIL_MEM_PHI: LowLevelILMemPhi, # [("dest_memory", "int"), ("src_memory", "int_list")]
}
@@ -2634,7 +2598,7 @@ class LowLevelILExpr:
.. note:: Deprecated. Use ExpressionIndex instead
"""
- def __init__(self, index:ExpressionIndex):
+ def __init__(self, index: ExpressionIndex):
self._index = index
def __int__(self):
@@ -2673,8 +2637,10 @@ class LowLevelILFunction:
LLFC_NO !overflow No overflow
======================= ========== ===============================
"""
- def __init__(self, arch:Optional['architecture.Architecture']=None, handle:Optional[core.BNLowLevelILFunction]=None,
- source_func:'function.Function'=None):
+ def __init__(
+ self, arch: Optional['architecture.Architecture'] = None, handle: Optional[core.BNLowLevelILFunction] = None,
+ source_func: 'function.Function' = None
+ ):
self._arch = arch
self._source_function = source_func
if handle is not None:
@@ -2683,7 +2649,7 @@ class LowLevelILFunction:
if self._source_function is None:
source_handle = core.BNGetLowLevelILOwnerFunction(_handle)
if source_handle:
- self._source_function = function.Function(handle = source_handle)
+ self._source_function = function.Function(handle=source_handle)
else:
self._source_function = None
if self._arch is None:
@@ -2740,7 +2706,9 @@ class LowLevelILFunction:
raise IndexError("index out of range")
if i < 0:
i = len(self) + i
- return LowLevelILInstruction.create(self, ExpressionIndex(core.BNGetLowLevelILIndexForInstruction(self.handle, i)), i)
+ return LowLevelILInstruction.create(
+ self, ExpressionIndex(core.BNGetLowLevelILIndexForInstruction(self.handle, i)), i
+ )
def __setitem__(self, i, j):
raise IndexError("instruction modification not implemented")
@@ -2766,10 +2734,10 @@ class LowLevelILFunction:
return core.BNLowLevelILGetCurrentAddress(self.handle)
@current_address.setter
- def current_address(self, value:int) -> None:
+ def current_address(self, value: int) -> None:
core.BNLowLevelILSetCurrentAddress(self.handle, self.arch.handle, value)
- def set_current_address(self, value:int, arch:Optional['architecture.Architecture']=None) -> None:
+ def set_current_address(self, value: int, arch: Optional['architecture.Architecture'] = None) -> None:
if arch is None:
arch = self.arch
core.BNLowLevelILSetCurrentAddress(self.handle, arch.handle, value)
@@ -2858,7 +2826,7 @@ class LowLevelILFunction:
return self._source_function
@source_function.setter
- def source_function(self, value:'function.Function') -> None:
+ def source_function(self, value: 'function.Function') -> None:
self._source_function = value
@property
@@ -2951,11 +2919,15 @@ class LowLevelILFunction:
try:
for var_i in range(register_stack_count.value):
version_count = ctypes.c_ulonglong()
- versions = core.BNGetLowLevelRegisterStackSSAVersions(self.handle, register_stacks[var_i], version_count)
+ versions = core.BNGetLowLevelRegisterStackSSAVersions(
+ self.handle, register_stacks[var_i], version_count
+ )
assert versions is not None, "core.BNGetLowLevelRegisterStackSSAVersions returned None"
try:
for version_i in range(version_count.value):
- result.append(SSARegisterStack(ILRegisterStack(self.arch, register_stacks[var_i]), versions[version_i]))
+ result.append(
+ SSARegisterStack(ILRegisterStack(self.arch, register_stacks[var_i]), versions[version_i])
+ )
finally:
core.BNFreeLLILVariableVersionList(versions)
finally:
@@ -3006,7 +2978,10 @@ class LowLevelILFunction:
if self._source_function is None:
return []
- if self.il_form in [FunctionGraphType.LiftedILFunctionGraph, FunctionGraphType.LowLevelILFunctionGraph, FunctionGraphType.LowLevelILSSAFormFunctionGraph]:
+ if self.il_form in [
+ FunctionGraphType.LiftedILFunctionGraph, FunctionGraphType.LowLevelILFunctionGraph,
+ FunctionGraphType.LowLevelILSSAFormFunctionGraph
+ ]:
return self.registers + self.register_stacks + self.flags # type: ignore
return []
@@ -3020,7 +2995,7 @@ class LowLevelILFunction:
return self.ssa_form.ssa_vars
return []
- def get_instruction_start(self, addr:int, arch:Optional['architecture.Architecture']=None) -> Optional[int]:
+ def get_instruction_start(self, addr: int, arch: Optional['architecture.Architecture'] = None) -> Optional[int]:
if arch is None:
arch = self.arch
result = core.BNLowLevelILGetInstructionStart(self.handle, arch.handle, addr)
@@ -3031,15 +3006,17 @@ class LowLevelILFunction:
def clear_indirect_branches(self) -> None:
core.BNLowLevelILClearIndirectBranches(self.handle)
- def set_indirect_branches(self, branches:List[Tuple['architecture.Architecture', int]]) -> None:
+ def set_indirect_branches(self, branches: List[Tuple['architecture.Architecture', int]]) -> None:
branch_list = (core.BNArchitectureAndAddress * len(branches))()
for i in range(len(branches)):
branch_list[i].arch = branches[i][0].handle
branch_list[i].address = branches[i][1]
core.BNLowLevelILSetIndirectBranches(self.handle, branch_list, len(branches))
- def expr(self, operation, a:int=0, b:int=0, c:int=0, d:int=0, size:int=0,
- flags:Union['architecture.FlagWriteTypeName', 'architecture.FlagType', 'architecture.FlagIndex']=None):
+ def expr(
+ self, operation, a: int = 0, b: int = 0, c: int = 0, d: int = 0, size: int = 0,
+ flags: Union['architecture.FlagWriteTypeName', 'architecture.FlagType', 'architecture.FlagIndex'] = None
+ ):
_flags = architecture.FlagIndex(0)
if isinstance(operation, str):
operation = LowLevelILOperation[operation]
@@ -3057,7 +3034,7 @@ class LowLevelILFunction:
assert False, "flags type unsupported"
return ExpressionIndex(core.BNLowLevelILAddExpr(self.handle, operation, size, _flags, a, b, c, d))
- def replace_expr(self, original:InstructionOrExpression, new:InstructionOrExpression) -> None:
+ def replace_expr(self, original: InstructionOrExpression, new: InstructionOrExpression) -> None:
"""
``replace_expr`` allows modification of ExpressionIndexessions but ONLY during lifting.
@@ -3079,7 +3056,7 @@ class LowLevelILFunction:
core.BNReplaceLowLevelILExpr(self.handle, original, new)
- def append(self, expr:ExpressionIndex) -> int:
+ def append(self, expr: ExpressionIndex) -> int:
"""
``append`` adds the ExpressionIndex ``expr`` to the current LowLevelILFunction.
@@ -3098,8 +3075,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_NOP)
- def set_reg(self, size:int, reg:'architecture.RegisterType', value:ExpressionIndex,
- flags:Optional['architecture.FlagType']=None) -> ExpressionIndex:
+ def set_reg(
+ self, size: int, reg: 'architecture.RegisterType', value: ExpressionIndex,
+ flags: Optional['architecture.FlagType'] = None
+ ) -> ExpressionIndex:
"""
``set_reg`` sets the register ``reg`` of size ``size`` to the expression ``value``
@@ -3113,10 +3092,12 @@ class LowLevelILFunction:
_reg = ExpressionIndex(self.arch.get_reg_index(reg))
if flags is None:
flags = architecture.FlagIndex(0)
- return self.expr(LowLevelILOperation.LLIL_SET_REG, _reg, value, size = size, flags = flags)
+ return self.expr(LowLevelILOperation.LLIL_SET_REG, _reg, value, size=size, flags=flags)
- def set_reg_split(self, size:int, hi:'architecture.RegisterType', lo:'architecture.RegisterType',
- value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def set_reg_split(
+ self, size: int, hi: 'architecture.RegisterType', lo: 'architecture.RegisterType', value: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``set_reg_split`` uses ``hi`` and ``lo`` as a single extended register setting ``hi:lo`` to the expression
``value``.
@@ -3133,10 +3114,12 @@ class LowLevelILFunction:
_lo = ExpressionIndex(self.arch.get_reg_index(lo))
if flags is None:
flags = architecture.FlagIndex(0)
- return self.expr(LowLevelILOperation.LLIL_SET_REG_SPLIT, _hi, _lo, value, size = size, flags = flags)
+ return self.expr(LowLevelILOperation.LLIL_SET_REG_SPLIT, _hi, _lo, value, size=size, flags=flags)
- def set_reg_stack_top_relative(self, size:int, reg_stack:'architecture.RegisterStackType', entry:ExpressionIndex,
- value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def set_reg_stack_top_relative(
+ self, size: int, reg_stack: 'architecture.RegisterStackType', entry: ExpressionIndex, value: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``set_reg_stack_top_relative`` sets the top-relative entry ``entry`` of size ``size`` in register
stack ``reg_stack`` to the expression ``value``
@@ -3152,11 +3135,12 @@ class LowLevelILFunction:
_reg_stack = ExpressionIndex(self.arch.get_reg_stack_index(reg_stack))
if flags is None:
flags = architecture.FlagIndex(0)
- return self.expr(LowLevelILOperation.LLIL_SET_REG_STACK_REL, _reg_stack, entry, value,
- size = size, flags = flags)
+ return self.expr(LowLevelILOperation.LLIL_SET_REG_STACK_REL, _reg_stack, entry, value, size=size, flags=flags)
- def reg_stack_push(self, size:int, reg_stack:'architecture.RegisterStackType', value:ExpressionIndex,
- flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def reg_stack_push(
+ self, size: int, reg_stack: 'architecture.RegisterStackType', value: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``reg_stack_push`` pushes the expression ``value`` of size ``size`` onto the top of the register
stack ``reg_stack``
@@ -3171,9 +3155,9 @@ class LowLevelILFunction:
_reg_stack = ExpressionIndex(self.arch.get_reg_stack_index(reg_stack))
if flags is None:
flags = architecture.FlagIndex(0)
- return self.expr(LowLevelILOperation.LLIL_REG_STACK_PUSH, _reg_stack, value, size = size, flags = flags)
+ return self.expr(LowLevelILOperation.LLIL_REG_STACK_PUSH, _reg_stack, value, size=size, flags=flags)
- def set_flag(self, flag:'architecture.FlagName', value:ExpressionIndex) -> ExpressionIndex:
+ def set_flag(self, flag: 'architecture.FlagName', value: ExpressionIndex) -> ExpressionIndex:
"""
``set_flag`` sets the flag ``flag`` to the ExpressionIndex ``value``
@@ -3182,10 +3166,9 @@ class LowLevelILFunction:
:return: The expression FLAG.flag = value
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_SET_FLAG, ExpressionIndex(self.arch.get_flag_by_name(flag)),
- value)
+ return self.expr(LowLevelILOperation.LLIL_SET_FLAG, ExpressionIndex(self.arch.get_flag_by_name(flag)), value)
- def load(self, size:int, addr:ExpressionIndex) -> ExpressionIndex:
+ def load(self, size: int, addr: ExpressionIndex) -> ExpressionIndex:
"""
``load`` Reads ``size`` bytes from the expression ``addr``
@@ -3196,7 +3179,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_LOAD, addr, size=size)
- def store(self, size:int, addr:ExpressionIndex, value:ExpressionIndex, flags:Optional['architecture.FlagName']=None) -> ExpressionIndex:
+ def store(
+ self, size: int, addr: ExpressionIndex, value: ExpressionIndex, flags: Optional['architecture.FlagName'] = None
+ ) -> ExpressionIndex:
"""
``store`` Writes ``size`` bytes to expression ``addr`` read from expression ``value``
@@ -3209,7 +3194,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_STORE, addr, value, size=size, flags=flags)
- def push(self, size:int, value:ExpressionIndex) -> ExpressionIndex:
+ def push(self, size: int, value: ExpressionIndex) -> ExpressionIndex:
"""
``push`` writes ``size`` bytes from expression ``value`` to the stack, adjusting the stack by ``size``.
@@ -3220,7 +3205,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_PUSH, value, size=size)
- def pop(self, size:int) -> ExpressionIndex:
+ def pop(self, size: int) -> ExpressionIndex:
"""
``pop`` reads ``size`` bytes from the stack, adjusting the stack by ``size``.
@@ -3230,7 +3215,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_POP, size=size)
- def reg(self, size:int, reg:'architecture.RegisterType') -> ExpressionIndex:
+ def reg(self, size: int, reg: 'architecture.RegisterType') -> ExpressionIndex:
"""
``reg`` returns a register of size ``size`` with name ``reg``
@@ -3242,7 +3227,7 @@ class LowLevelILFunction:
_reg = ExpressionIndex(self.arch.get_reg_index(reg))
return self.expr(LowLevelILOperation.LLIL_REG, _reg, size=size)
- def reg_split(self, size:int, hi:'architecture.RegisterType', lo:'architecture.RegisterType') -> ExpressionIndex:
+ def reg_split(self, size: int, hi: 'architecture.RegisterType', lo: 'architecture.RegisterType') -> ExpressionIndex:
"""
``reg_split`` combines registers of size ``size`` with names ``hi`` and ``lo``
@@ -3256,7 +3241,9 @@ class LowLevelILFunction:
_lo = ExpressionIndex(self.arch.get_reg_index(lo))
return self.expr(LowLevelILOperation.LLIL_REG_SPLIT, _hi, _lo, size=size)
- def reg_stack_top_relative(self, size:int, reg_stack:'architecture.RegisterStackType', entry:ExpressionIndex) -> ExpressionIndex:
+ def reg_stack_top_relative(
+ self, size: int, reg_stack: 'architecture.RegisterStackType', entry: ExpressionIndex
+ ) -> ExpressionIndex:
"""
``reg_stack_top_relative`` returns a register stack entry of size ``size`` at top-relative
location ``entry`` in register stack with name ``reg_stack``
@@ -3270,7 +3257,7 @@ class LowLevelILFunction:
_reg_stack = self.arch.get_reg_stack_index(reg_stack)
return self.expr(LowLevelILOperation.LLIL_REG_STACK_REL, _reg_stack, entry, size=size)
- def reg_stack_pop(self, size:int, reg_stack:'architecture.RegisterStackType') -> ExpressionIndex:
+ def reg_stack_pop(self, size: int, reg_stack: 'architecture.RegisterStackType') -> ExpressionIndex:
"""
``reg_stack_pop`` returns the top entry of size ``size`` in register stack with name ``reg_stack``, and
removes the entry from the stack
@@ -3283,7 +3270,7 @@ class LowLevelILFunction:
_reg_stack = ExpressionIndex(self.arch.get_reg_stack_index(reg_stack))
return self.expr(LowLevelILOperation.LLIL_REG_STACK_POP, _reg_stack, size=size)
- def const(self, size:int, value:int) -> ExpressionIndex:
+ def const(self, size: int, value: int) -> ExpressionIndex:
"""
``const`` returns an expression for the constant integer ``value`` with size ``size``
@@ -3294,7 +3281,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_CONST, ExpressionIndex(value), size=size)
- def const_pointer(self, size:int, value:int) -> ExpressionIndex:
+ def const_pointer(self, size: int, value: int) -> ExpressionIndex:
"""
``const_pointer`` returns an expression for the constant pointer ``value`` with size ``size``
@@ -3305,7 +3292,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_CONST_PTR, value, size=size)
- def reloc_pointer(self, size:int, value:int) -> ExpressionIndex:
+ def reloc_pointer(self, size: int, value: int) -> ExpressionIndex:
"""
``reloc_pointer`` returns an expression for the constant relocated pointer ``value`` with size ``size``
@@ -3316,7 +3303,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_EXTERN_PTR, value, size=size)
- def float_const_raw(self, size:int, value:int) -> ExpressionIndex:
+ def float_const_raw(self, size: int, value: int) -> ExpressionIndex:
"""
``float_const_raw`` returns an expression for the constant raw binary floating point
value ``value`` with size ``size``
@@ -3328,7 +3315,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOAT_CONST, value, size=size)
- def float_const_single(self, value:float) -> ExpressionIndex:
+ def float_const_single(self, value: float) -> ExpressionIndex:
"""
``float_const_single`` returns an expression for the single precision floating point value ``value``
@@ -3338,7 +3325,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOAT_CONST, struct.unpack("I", struct.pack("f", value))[0], size=4)
- def float_const_double(self, value:float) -> ExpressionIndex:
+ def float_const_double(self, value: float) -> ExpressionIndex:
"""
``float_const_double`` returns an expression for the double precision floating point value ``value``
@@ -3348,7 +3335,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOAT_CONST, struct.unpack("Q", struct.pack("d", value))[0], size=8)
- def flag(self, reg:'architecture.FlagName') -> ExpressionIndex:
+ def flag(self, reg: 'architecture.FlagName') -> ExpressionIndex:
"""
``flag`` returns a flag expression for the given flag name.
@@ -3358,7 +3345,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLAG, self.arch.get_flag_by_name(reg))
- def flag_bit(self, size:int, reg:'architecture.FlagName', bit:int) -> ExpressionIndex:
+ def flag_bit(self, size: int, reg: 'architecture.FlagName', bit: int) -> ExpressionIndex:
"""
``flag_bit`` sets the flag named ``reg`` and size ``size`` to the constant integer value ``bit``
@@ -3370,7 +3357,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLAG_BIT, self.arch.get_flag_by_name(reg), bit, size=size)
- def add(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def add(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``add`` adds expression ``a`` to expression ``b`` potentially setting flags ``flags`` and returning
an expression of ``size`` bytes.
@@ -3384,8 +3373,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ADD, a, b, size=size, flags=flags)
- def add_carry(self, size:int, a:ExpressionIndex, b:ExpressionIndex, carry:ExpressionIndex,
- flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def add_carry(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, carry: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``add_carry`` adds with carry expression ``a`` to expression ``b`` potentially setting flags ``flags`` and
returning an expression of ``size`` bytes.
@@ -3400,7 +3391,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ADC, a, b, carry, size=size, flags=flags)
- def sub(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def sub(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``sub`` subtracts expression ``b`` from expression ``a`` potentially setting flags ``flags`` and returning
an expression of ``size`` bytes.
@@ -3414,8 +3407,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_SUB, a, b, size=size, flags=flags)
- def sub_borrow(self, size:int, a:ExpressionIndex, b:ExpressionIndex, carry:ExpressionIndex,
- flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def sub_borrow(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, carry: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``sub_borrow`` subtracts with borrow expression ``b`` from expression ``a`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3430,7 +3425,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_SBB, a, b, carry, size=size, flags=flags)
- def and_expr(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def and_expr(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``and_expr`` bitwise and's expression ``a`` and expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3444,7 +3441,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_AND, a, b, size=size, flags=flags)
- def or_expr(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def or_expr(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``or_expr`` bitwise or's expression ``a`` and expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3458,7 +3457,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_OR, a, b, size=size, flags=flags)
- def xor_expr(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def xor_expr(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``xor_expr`` xor's expression ``a`` with expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3472,7 +3473,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_XOR, a, b, size=size, flags=flags)
- def shift_left(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def shift_left(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``shift_left`` shifts left expression ``a`` by expression ``b`` from expression ``a`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3486,7 +3489,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_LSL, a, b, size=size, flags=flags)
- def logical_shift_right(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def logical_shift_right(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``logical_shift_right`` shifts logically right expression ``a`` by expression ``b`` potentially setting flags
``flags`` and returning an expression of ``size`` bytes.
@@ -3500,7 +3505,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_LSR, a, b, size=size, flags=flags)
- def arith_shift_right(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def arith_shift_right(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``arith_shift_right`` shifts arithmetic right expression ``a`` by expression ``b`` potentially setting flags
``flags`` and returning an expression of ``size`` bytes.
@@ -3514,7 +3521,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ASR, a, b, size=size, flags=flags)
- def rotate_left(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def rotate_left(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``rotate_left`` bitwise rotates left expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3528,8 +3537,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ROL, a, b, size=size, flags=flags)
- def rotate_left_carry(self, size:int, a:ExpressionIndex, b:ExpressionIndex, carry:ExpressionIndex,
- flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def rotate_left_carry(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, carry: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``rotate_left_carry`` bitwise rotates left with carry expression ``a`` by expression ``b`` potentially setting
flags ``flags`` and returning an expression of ``size`` bytes.
@@ -3544,7 +3555,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_RLC, a, b, carry, size=size, flags=flags)
- def rotate_right(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def rotate_right(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``rotate_right`` bitwise rotates right expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3558,8 +3571,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ROR, a, b, size=size, flags=flags)
- def rotate_right_carry(self, size:int, a:ExpressionIndex, b:ExpressionIndex, carry:ExpressionIndex,
- flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def rotate_right_carry(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, carry: ExpressionIndex,
+ flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``rotate_right_carry`` bitwise rotates right with carry expression ``a`` by expression ``b`` potentially setting
flags ``flags`` and returning an expression of ``size`` bytes.
@@ -3574,7 +3589,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_RRC, a, b, carry, size=size, flags=flags)
- def mult(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mult(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mult`` multiplies expression ``a`` by expression ``b`` potentially setting flags ``flags`` and returning an
expression of ``size`` bytes.
@@ -3588,7 +3605,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MUL, a, b, size=size, flags=flags)
- def mult_double_prec_signed(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mult_double_prec_signed(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mult_double_prec_signed`` multiplies signed with double precision expression ``a`` by expression ``b``
potentially setting flags ``flags`` and returning an expression of ``size`` bytes.
@@ -3602,7 +3621,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MULS_DP, a, b, size=size, flags=flags)
- def mult_double_prec_unsigned(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mult_double_prec_unsigned(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mult_double_prec_unsigned`` multiplies unsigned with double precision expression ``a`` by expression ``b``
potentially setting flags ``flags`` and returning an expression of ``size`` bytes.
@@ -3616,7 +3637,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MULU_DP, a, b, size=size, flags=flags)
- def div_signed(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def div_signed(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``div_signed`` signed divide expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3630,7 +3653,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_DIVS, a, b, size=size, flags=flags)
- def div_double_prec_signed(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def div_double_prec_signed(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``div_double_prec_signed`` signed double precision divide using expression ``a`` as a
single double precision register by expression ``b`` potentially setting flags ``flags`` and returning an
@@ -3645,7 +3670,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_DIVS_DP, a, b, size=size, flags=flags)
- def div_unsigned(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def div_unsigned(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``div_unsigned`` unsigned divide expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3659,7 +3686,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_DIVU, a, b, size=size, flags=flags)
- def div_double_prec_unsigned(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def div_double_prec_unsigned(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``div_double_prec_unsigned`` unsigned double precision divide using expression ``a`` as
a single double precision register by expression ``b`` potentially setting flags ``flags`` and returning an
@@ -3674,7 +3703,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_DIVU_DP, a, b, size=size, flags=flags)
- def mod_signed(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mod_signed(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mod_signed`` signed modulus expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3688,7 +3719,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MODS, a, b, size=size, flags=flags)
- def mod_double_prec_signed(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mod_double_prec_signed(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mod_double_prec_signed`` signed double precision modulus using expression ``a`` as a single
double precision register by expression ``b`` potentially setting flags ``flags`` and returning an expression
@@ -3703,7 +3736,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MODS_DP, a, b, size=size, flags=flags)
- def mod_unsigned(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mod_unsigned(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mod_unsigned`` unsigned modulus expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -3717,7 +3752,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MODU, a, b, size=size, flags=flags)
- def mod_double_prec_unsigned(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def mod_double_prec_unsigned(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``mod_double_prec_unsigned`` unsigned double precision modulus using expression ``a`` as
a single double precision register by expression ``b`` potentially setting flags ``flags`` and returning an
@@ -3732,7 +3769,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_MODU_DP, a, b, size=size, flags=flags)
- def neg_expr(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def neg_expr(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``neg_expr`` two's complement sign negation of expression ``value`` of size ``size`` potentially setting flags
@@ -3744,7 +3781,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_NEG, value, size=size, flags=flags)
- def not_expr(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def not_expr(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``not_expr`` bitwise inverse of expression ``value`` of size ``size`` potentially setting flags
@@ -3756,7 +3793,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_NOT, value, size=size, flags=flags)
- def sign_extend(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def sign_extend(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``sign_extend`` two's complement sign-extends the expression in ``value`` to ``size`` bytes
@@ -3768,7 +3805,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_SX, value, size=size, flags=flags)
- def zero_extend(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def zero_extend(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``zero_extend`` zero-extends the expression in ``value`` to ``size`` bytes
@@ -3779,7 +3816,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ZX, value, size=size, flags=flags)
- def low_part(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def low_part(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``low_part`` truncates ``value`` to ``size`` bytes
@@ -3790,7 +3827,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_LOW_PART, value, size=size, flags=flags)
- def jump(self, dest:ExpressionIndex) -> ExpressionIndex:
+ def jump(self, dest: ExpressionIndex) -> ExpressionIndex:
"""
``jump`` returns an expression which jumps (branches) to the expression ``dest``
@@ -3800,7 +3837,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_JUMP, dest)
- def call(self, dest:ExpressionIndex) -> ExpressionIndex:
+ def call(self, dest: ExpressionIndex) -> ExpressionIndex:
"""
``call`` returns an expression which first pushes the address of the next instruction onto the stack then jumps
(branches) to the expression ``dest``
@@ -3811,7 +3848,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_CALL, dest)
- def call_stack_adjust(self, dest:ExpressionIndex, stack_adjust:int) -> ExpressionIndex:
+ def call_stack_adjust(self, dest: ExpressionIndex, stack_adjust: int) -> ExpressionIndex:
"""
``call_stack_adjust`` returns an expression which first pushes the address of the next instruction onto the stack
then jumps (branches) to the expression ``dest``. After the function exits, ``stack_adjust`` is added to the
@@ -3823,7 +3860,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_CALL_STACK_ADJUST, dest, stack_adjust)
- def tailcall(self, dest:ExpressionIndex) -> ExpressionIndex:
+ def tailcall(self, dest: ExpressionIndex) -> ExpressionIndex:
"""
``tailcall`` returns an expression which jumps (branches) to the expression ``dest``
@@ -3833,7 +3870,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_TAILCALL, dest)
- def ret(self, dest:ExpressionIndex) -> ExpressionIndex:
+ def ret(self, dest: ExpressionIndex) -> ExpressionIndex:
"""
``ret`` returns an expression which jumps (branches) to the expression ``dest``. ``ret`` is a special alias for
jump that makes the disassembler stop disassembling.
@@ -3853,8 +3890,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_NORET)
- def flag_condition(self, cond:Union[str, LowLevelILFlagCondition, int],
- sem_class:Optional['architecture.SemanticClassType']=None) -> ExpressionIndex:
+ def flag_condition(
+ self, cond: Union[str, LowLevelILFlagCondition, int],
+ sem_class: Optional['architecture.SemanticClassType'] = None
+ ) -> ExpressionIndex:
"""
``flag_condition`` returns a flag_condition expression for the given LowLevelILFlagCondition
@@ -3870,7 +3909,7 @@ class LowLevelILFunction:
class_index = self.arch.get_semantic_flag_class_index(sem_class)
return self.expr(LowLevelILOperation.LLIL_FLAG_COND, cond, architecture.SemanticClassIndex(class_index))
- def flag_group(self, sem_group:'architecture.SemanticGroupName') -> ExpressionIndex:
+ def flag_group(self, sem_group: 'architecture.SemanticGroupName') -> ExpressionIndex:
"""
``flag_group`` returns a flag_group expression for the given semantic flag group
@@ -3881,7 +3920,7 @@ class LowLevelILFunction:
group = self.arch.get_semantic_flag_group_index(sem_group)
return self.expr(LowLevelILOperation.LLIL_FLAG_GROUP, group)
- def compare_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_equal`` returns comparison expression of size ``size`` checking if expression ``a`` is equal to
expression ``b``
@@ -3892,9 +3931,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_E, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_E, a, b, size=size)
- def compare_not_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_not_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_not_equal`` returns comparison expression of size ``size`` checking if expression ``a`` is not equal to
expression ``b``
@@ -3905,9 +3944,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_NE, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_NE, a, b, size=size)
- def compare_signed_less_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_signed_less_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_signed_less_than`` returns comparison expression of size ``size`` checking if expression ``a`` is
signed less than expression ``b``
@@ -3918,9 +3957,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_SLT, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_SLT, a, b, size=size)
- def compare_unsigned_less_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_unsigned_less_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_unsigned_less_than`` returns comparison expression of size ``size`` checking if expression ``a`` is
unsigned less than expression ``b``
@@ -3931,9 +3970,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_ULT, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_ULT, a, b, size=size)
- def compare_signed_less_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_signed_less_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_signed_less_equal`` returns comparison expression of size ``size`` checking if expression ``a`` is
signed less than or equal to expression ``b``
@@ -3944,9 +3983,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_SLE, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_SLE, a, b, size=size)
- def compare_unsigned_less_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_unsigned_less_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_unsigned_less_equal`` returns comparison expression of size ``size`` checking if expression ``a`` is
unsigned less than or equal to expression ``b``
@@ -3957,9 +3996,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_ULE, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_ULE, a, b, size=size)
- def compare_signed_greater_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_signed_greater_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_signed_greater_equal`` returns comparison expression of size ``size`` checking if expression ``a`` is
signed greater than or equal to expression ``b``
@@ -3970,9 +4009,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_SGE, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_SGE, a, b, size=size)
- def compare_unsigned_greater_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_unsigned_greater_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_unsigned_greater_equal`` returns comparison expression of size ``size`` checking if expression ``a``
is unsigned greater than or equal to expression ``b``
@@ -3983,9 +4022,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_UGE, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_UGE, a, b, size=size)
- def compare_signed_greater_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_signed_greater_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_signed_greater_than`` returns comparison expression of size ``size`` checking if expression ``a`` is
signed greater than or equal to expression ``b``
@@ -3996,9 +4035,9 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_SGT, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_SGT, a, b, size=size)
- def compare_unsigned_greater_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def compare_unsigned_greater_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``compare_unsigned_greater_than`` returns comparison expression of size ``size`` checking if expression ``a`` is
unsigned greater than or equal to expression ``b``
@@ -4009,10 +4048,10 @@ class LowLevelILFunction:
:return: a comparison expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_CMP_UGT, a, b, size = size)
+ return self.expr(LowLevelILOperation.LLIL_CMP_UGT, a, b, size=size)
- def test_bit(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
- return self.expr(LowLevelILOperation.LLIL_TEST_BIT, a, b, size = size)
+ def test_bit(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
+ return self.expr(LowLevelILOperation.LLIL_TEST_BIT, a, b, size=size)
def system_call(self) -> ExpressionIndex:
"""
@@ -4023,8 +4062,10 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_SYSCALL)
- def intrinsic(self, outputs:List[Union[ILFlag, ExpressionIndex]], intrinsic:'architecture.IntrinsicType',
- params:List[ExpressionIndex], flags:'architecture.FlagType'=None):
+ def intrinsic(
+ self, outputs: List[Union[ILFlag, ExpressionIndex]], intrinsic: 'architecture.IntrinsicType',
+ params: List[ExpressionIndex], flags: 'architecture.FlagType' = None
+ ):
"""
``intrinsic`` return an intrinsic expression.
@@ -4041,8 +4082,10 @@ class LowLevelILFunction:
for param in params:
param_list.append(param)
call_param = self.expr(LowLevelILOperation.LLIL_CALL_PARAM, len(params), self.add_operand_list(param_list))
- return self.expr(LowLevelILOperation.LLIL_INTRINSIC, len(outputs), self.add_operand_list(output_list),
- self.arch.get_intrinsic_index(intrinsic), call_param, flags = flags)
+ return self.expr(
+ LowLevelILOperation.LLIL_INTRINSIC, len(outputs), self.add_operand_list(output_list),
+ self.arch.get_intrinsic_index(intrinsic), call_param, flags=flags
+ )
def breakpoint(self) -> ExpressionIndex:
"""
@@ -4053,7 +4096,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_BP)
- def trap(self, value:int) -> ExpressionIndex:
+ def trap(self, value: int) -> ExpressionIndex:
"""
``trap`` returns a processor trap (interrupt) expression of the given integer ``value``.
@@ -4083,7 +4126,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_UNIMPL)
- def unimplemented_memory_ref(self, size:int, addr:ExpressionIndex) -> ExpressionIndex:
+ def unimplemented_memory_ref(self, size: int, addr: ExpressionIndex) -> ExpressionIndex:
"""
``unimplemented_memory_ref`` a memory reference to expression ``addr`` of size ``size`` with unimplemented operation.
@@ -4092,9 +4135,11 @@ class LowLevelILFunction:
:return: the unimplemented memory reference expression.
:rtype: ExpressionIndex
"""
- return self.expr(LowLevelILOperation.LLIL_UNIMPL_MEM, addr, size = size)
+ return self.expr(LowLevelILOperation.LLIL_UNIMPL_MEM, addr, size=size)
- def float_add(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_add(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``float_add`` adds floating point expression ``a`` to expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -4108,7 +4153,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FADD, a, b, size=size, flags=flags)
- def float_sub(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_sub(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``float_sub`` subtracts floating point expression ``b`` from expression ``a`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -4122,7 +4169,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FSUB, a, b, size=size, flags=flags)
- def float_mult(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_mult(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``float_mult`` multiplies floating point expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -4136,7 +4185,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FMUL, a, b, size=size, flags=flags)
- def float_div(self, size:int, a:ExpressionIndex, b:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_div(
+ self, size: int, a: ExpressionIndex, b: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``float_div`` divides floating point expression ``a`` by expression ``b`` potentially setting flags ``flags``
and returning an expression of ``size`` bytes.
@@ -4150,7 +4201,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FDIV, a, b, size=size, flags=flags)
- def float_sqrt(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_sqrt(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``float_sqrt`` returns square root of floating point expression ``value`` of size ``size`` potentially setting flags
@@ -4162,7 +4213,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FSQRT, value, size=size, flags=flags)
- def float_neg(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_neg(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``float_neg`` returns sign negation of floating point expression ``value`` of size ``size`` potentially setting flags
@@ -4174,7 +4225,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FNEG, value, size=size, flags=flags)
- def float_abs(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_abs(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``float_abs`` returns absolute value of floating point expression ``value`` of size ``size`` potentially setting flags
@@ -4186,7 +4237,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FABS, value, size=size, flags=flags)
- def float_to_int(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_to_int(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``float_to_int`` returns integer value of floating point expression ``value`` of size ``size`` potentially setting flags
@@ -4198,7 +4249,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOAT_TO_INT, value, size=size, flags=flags)
- def int_to_float(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def int_to_float(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``int_to_float`` returns floating point value of integer expression ``value`` of size ``size`` potentially setting flags
@@ -4210,7 +4261,9 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_INT_TO_FLOAT, value, size=size, flags=flags)
- def float_convert(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_convert(
+ self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None
+ ) -> ExpressionIndex:
"""
``int_to_float`` converts floating point value of expression ``value`` to size ``size`` potentially setting flags
@@ -4222,7 +4275,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOAT_CONV, value, size=size, flags=flags)
- def round_to_int(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def round_to_int(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``round_to_int`` rounds a floating point value to the nearest integer
@@ -4234,7 +4287,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_ROUND_TO_INT, value, size=size, flags=flags)
- def floor(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def floor(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``floor`` rounds a floating point value to an integer towards negative infinity
@@ -4246,7 +4299,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FLOOR, value, size=size, flags=flags)
- def ceil(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def ceil(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``ceil`` rounds a floating point value to an integer towards positive infinity
@@ -4258,7 +4311,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_CEIL, value, size=size, flags=flags)
- def float_trunc(self, size:int, value:ExpressionIndex, flags:'architecture.FlagType'=None) -> ExpressionIndex:
+ def float_trunc(self, size: int, value: ExpressionIndex, flags: 'architecture.FlagType' = None) -> ExpressionIndex:
"""
``float_trunc`` rounds a floating point value to an integer towards zero
@@ -4270,7 +4323,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FTRUNC, value, size=size, flags=flags)
- def float_compare_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_equal`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is equal to expression ``b``
@@ -4284,7 +4337,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_E, a, b)
- def float_compare_not_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_not_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_not_equal`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is not equal to expression ``b``
@@ -4298,7 +4351,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_NE, a, b)
- def float_compare_less_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_less_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_less_than`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is less than to expression ``b``
@@ -4312,7 +4365,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_LT, a, b)
- def float_compare_less_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_less_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_less_equal`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is less than or equal to expression ``b``
@@ -4326,7 +4379,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_LE, a, b)
- def float_compare_greater_equal(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_greater_equal(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_greater_equal`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is greater than or equal to expression ``b``
@@ -4340,7 +4393,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_GE, a, b)
- def float_compare_greater_than(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_greater_than(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_greater_than`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is greater than or equal to expression ``b``
@@ -4354,7 +4407,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_GT, a, b)
- def float_compare_unordered(self, size:int, a:ExpressionIndex, b:ExpressionIndex) -> ExpressionIndex:
+ def float_compare_unordered(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex:
"""
``float_compare_unordered`` returns floating point comparison expression of size ``size`` checking if
expression ``a`` is unordered relative to expression ``b``
@@ -4368,7 +4421,7 @@ class LowLevelILFunction:
"""
return self.expr(LowLevelILOperation.LLIL_FCMP_UO, a, b)
- def goto(self, label:LowLevelILLabel) -> ExpressionIndex:
+ def goto(self, label: LowLevelILLabel) -> ExpressionIndex:
"""
``goto`` returns a goto expression which jumps to the provided LowLevelILLabel.
@@ -4378,7 +4431,7 @@ class LowLevelILFunction:
"""
return ExpressionIndex(core.BNLowLevelILGoto(self.handle, label.handle))
- def if_expr(self, operand:ExpressionIndex, t:LowLevelILLabel, f:LowLevelILLabel) -> ExpressionIndex:
+ def if_expr(self, operand: ExpressionIndex, t: LowLevelILLabel, f: LowLevelILLabel) -> ExpressionIndex:
"""
``if_expr`` returns the ``if`` expression which depending on condition ``operand`` jumps to the LowLevelILLabel
``t`` when the condition expression ``operand`` is non-zero and ``f`` when it's zero.
@@ -4391,7 +4444,7 @@ class LowLevelILFunction:
"""
return ExpressionIndex(core.BNLowLevelILIf(self.handle, operand, t.handle, f.handle))
- def mark_label(self, label:LowLevelILLabel) -> None:
+ def mark_label(self, label: LowLevelILLabel) -> None:
"""
``mark_label`` assigns a LowLevelILLabel to the current IL address.
@@ -4400,7 +4453,7 @@ class LowLevelILFunction:
"""
core.BNLowLevelILMarkLabel(self.handle, label.handle)
- def add_label_map(self, labels:Dict[int, LowLevelILLabel]) -> ExpressionIndex:
+ def add_label_map(self, labels: Dict[int, LowLevelILLabel]) -> ExpressionIndex:
"""
``add_label_map`` returns a label list expression for the given list of LowLevelILLabel objects.
@@ -4417,7 +4470,7 @@ class LowLevelILFunction:
return ExpressionIndex(core.BNLowLevelILAddLabelMap(self.handle, value_list, label_list, len(labels)))
- def add_operand_list(self, operands:List[Union[ExpressionIndex, ExpressionIndex]]) -> ExpressionIndex:
+ def add_operand_list(self, operands: List[Union[ExpressionIndex, ExpressionIndex]]) -> ExpressionIndex:
"""
``add_operand_list`` returns an operand list expression for the given list of integer operands.
@@ -4435,7 +4488,7 @@ class LowLevelILFunction:
raise Exception("Invalid operand type")
return ExpressionIndex(core.BNLowLevelILAddOperandList(self.handle, operand_list, len(operands)))
- def operand(self, n:int, expr:ExpressionIndex) -> ExpressionIndex:
+ def operand(self, n: int, expr: ExpressionIndex) -> ExpressionIndex:
"""
``operand`` sets the operand number of the expression ``expr`` and passes back ``expr`` without modification.
@@ -4463,7 +4516,7 @@ class LowLevelILFunction:
"""
core.BNGenerateLowLevelILSSAForm(self.handle)
- def add_label_for_address(self, arch:'architecture.Architecture', addr:int) -> None:
+ def add_label_for_address(self, arch: 'architecture.Architecture', addr: int) -> None:
"""
``add_label_for_address`` adds a low-level IL label for the given architecture ``arch`` at the given virtual
address ``addr``
@@ -4475,7 +4528,7 @@ class LowLevelILFunction:
arch = arch.handle
core.BNAddLowLevelILLabelForAddress(self.handle, arch, addr)
- def get_label_for_address(self, arch:'architecture.Architecture', addr:int) -> Optional[LowLevelILLabel]:
+ def get_label_for_address(self, arch: 'architecture.Architecture', addr: int) -> Optional[LowLevelILLabel]:
"""
``get_label_for_address`` returns the LowLevelILLabel for the given Architecture ``arch`` and IL address ``addr``.
@@ -4491,33 +4544,33 @@ class LowLevelILFunction:
return None
return LowLevelILLabel(label)
- def get_ssa_instruction_index(self, instr:InstructionIndex) -> InstructionIndex:
+ def get_ssa_instruction_index(self, instr: InstructionIndex) -> InstructionIndex:
return core.BNGetLowLevelILSSAInstructionIndex(self.handle, instr)
- def get_non_ssa_instruction_index(self, instr:InstructionIndex) -> InstructionIndex:
+ def get_non_ssa_instruction_index(self, instr: InstructionIndex) -> InstructionIndex:
return core.BNGetLowLevelILNonSSAInstructionIndex(self.handle, instr)
- def get_ssa_reg_definition(self, reg_ssa:SSARegister) -> Optional[LowLevelILInstruction]:
+ def get_ssa_reg_definition(self, reg_ssa: SSARegister) -> Optional[LowLevelILInstruction]:
reg = self.arch.get_reg_index(reg_ssa.reg)
result = core.BNGetLowLevelILSSARegisterDefinition(self.handle, reg, reg_ssa.version)
if result >= core.BNGetLowLevelILInstructionCount(self.handle):
return None
return self[result]
- def get_ssa_flag_definition(self, flag_ssa:SSAFlag) -> Optional[LowLevelILInstruction]:
+ def get_ssa_flag_definition(self, flag_ssa: SSAFlag) -> Optional[LowLevelILInstruction]:
flag = self.arch.get_flag_index(flag_ssa.flag)
result = core.BNGetLowLevelILSSAFlagDefinition(self.handle, flag, flag_ssa.version)
if result >= core.BNGetLowLevelILInstructionCount(self.handle):
return None
return self[result]
- def get_ssa_memory_definition(self, index:int) -> Optional[LowLevelILInstruction]:
+ def get_ssa_memory_definition(self, index: int) -> Optional[LowLevelILInstruction]:
result = core.BNGetLowLevelILSSAMemoryDefinition(self.handle, index)
if result >= core.BNGetLowLevelILInstructionCount(self.handle):
return None
return self[result]
- def get_ssa_reg_uses(self, reg_ssa:SSARegister) -> List[LowLevelILInstruction]:
+ def get_ssa_reg_uses(self, reg_ssa: SSARegister) -> List[LowLevelILInstruction]:
reg = self.arch.get_reg_index(reg_ssa.reg)
count = ctypes.c_ulonglong()
instrs = core.BNGetLowLevelILSSARegisterUses(self.handle, reg, reg_ssa.version, count)
@@ -4528,7 +4581,7 @@ class LowLevelILFunction:
core.BNFreeILInstructionList(instrs)
return result
- def get_ssa_flag_uses(self, flag_ssa:SSAFlag) -> List[LowLevelILInstruction]:
+ def get_ssa_flag_uses(self, flag_ssa: SSAFlag) -> List[LowLevelILInstruction]:
flag = self.arch.get_flag_index(flag_ssa.flag)
count = ctypes.c_ulonglong()
instrs = core.BNGetLowLevelILSSAFlagUses(self.handle, flag, flag_ssa.version, count)
@@ -4539,7 +4592,7 @@ class LowLevelILFunction:
core.BNFreeILInstructionList(instrs)
return result
- def get_ssa_memory_uses(self, index:int) -> List[LowLevelILInstruction]:
+ def get_ssa_memory_uses(self, index: int) -> List[LowLevelILInstruction]:
count = ctypes.c_ulonglong()
instrs = core.BNGetLowLevelILSSAMemoryUses(self.handle, index, count)
assert instrs is not None, "core.BNGetLowLevelILSSAMemoryUses returned None"
@@ -4549,19 +4602,20 @@ class LowLevelILFunction:
core.BNFreeILInstructionList(instrs)
return result
- def get_ssa_reg_value(self, reg_ssa:SSARegister) -> 'variable.RegisterValue':
+ def get_ssa_reg_value(self, reg_ssa: SSARegister) -> 'variable.RegisterValue':
reg = self.arch.get_reg_index(reg_ssa.reg)
value = core.BNGetLowLevelILSSARegisterValue(self.handle, reg, reg_ssa.version)
result = variable.RegisterValue.from_BNRegisterValue(value, self._arch)
return result
- def get_ssa_flag_value(self, flag_ssa:SSAFlag) -> 'variable.RegisterValue':
+ def get_ssa_flag_value(self, flag_ssa: SSAFlag) -> 'variable.RegisterValue':
flag = self.arch.get_flag_index(flag_ssa.flag)
value = core.BNGetLowLevelILSSAFlagValue(self.handle, flag, flag_ssa.version)
result = variable.RegisterValue.from_BNRegisterValue(value, self._arch)
return result
- def get_medium_level_il_instruction_index(self, instr:InstructionIndex) -> Optional['mediumlevelil.InstructionIndex']:
+ def get_medium_level_il_instruction_index(self,
+ instr: InstructionIndex) -> Optional['mediumlevelil.InstructionIndex']:
med_il = self.medium_level_il
if med_il is None:
return None
@@ -4570,7 +4624,7 @@ class LowLevelILFunction:
return None
return result
- def get_medium_level_il_expr_index(self, expr:ExpressionIndex) -> Optional['mediumlevelil.ExpressionIndex']:
+ def get_medium_level_il_expr_index(self, expr: ExpressionIndex) -> Optional['mediumlevelil.ExpressionIndex']:
med_il = self.medium_level_il
if med_il is None:
return None
@@ -4579,7 +4633,7 @@ class LowLevelILFunction:
return None
return result
- def get_medium_level_il_expr_indexes(self, expr:ExpressionIndex) -> List['mediumlevelil.ExpressionIndex']:
+ def get_medium_level_il_expr_indexes(self, expr: ExpressionIndex) -> List['mediumlevelil.ExpressionIndex']:
count = ctypes.c_ulonglong()
exprs = core.BNGetMediumLevelILExprIndexes(self.handle, expr, count)
assert exprs is not None, "core.BNGetMediumLevelILExprIndexes returned None"
@@ -4589,7 +4643,7 @@ class LowLevelILFunction:
core.BNFreeILInstructionList(exprs)
return result
- def get_mapped_medium_level_il_instruction_index(self, instr:InstructionIndex) -> Optional[InstructionIndex]:
+ def get_mapped_medium_level_il_instruction_index(self, instr: InstructionIndex) -> Optional[InstructionIndex]:
med_il = self.mapped_medium_level_il
if med_il is None:
return None
@@ -4598,7 +4652,7 @@ class LowLevelILFunction:
return None
return result
- def get_mapped_medium_level_il_expr_index(self, expr:ExpressionIndex) -> Optional['mediumlevelil.ExpressionIndex']:
+ def get_mapped_medium_level_il_expr_index(self, expr: ExpressionIndex) -> Optional['mediumlevelil.ExpressionIndex']:
med_il = self.mapped_medium_level_il
if med_il is None:
return None
@@ -4607,7 +4661,7 @@ class LowLevelILFunction:
return None
return result
- def get_high_level_il_instruction_index(self, instr:InstructionIndex) -> Optional['highlevelil.InstructionIndex']:
+ def get_high_level_il_instruction_index(self, instr: InstructionIndex) -> Optional['highlevelil.InstructionIndex']:
med_il = self.medium_level_il
if med_il is None:
return None
@@ -4616,7 +4670,7 @@ class LowLevelILFunction:
return None
return med_il.get_high_level_il_instruction_index(mlil_instr)
- def get_high_level_il_expr_index(self, expr:ExpressionIndex) -> Optional['highlevelil.ExpressionIndex']:
+ def get_high_level_il_expr_index(self, expr: ExpressionIndex) -> Optional['highlevelil.ExpressionIndex']:
med_il = self.medium_level_il
if med_il is None:
return None
@@ -4625,7 +4679,7 @@ class LowLevelILFunction:
return None
return med_il.get_high_level_il_expr_index(mlil_expr)
- def create_graph(self, settings:Optional['function.DisassemblySettings']=None) -> flowgraph.CoreFlowGraph:
+ def create_graph(self, settings: Optional['function.DisassemblySettings'] = None) -> flowgraph.CoreFlowGraph:
if settings is not None:
settings_obj = settings.handle
else:
@@ -4634,7 +4688,9 @@ class LowLevelILFunction:
class LowLevelILBasicBlock(basicblock.BasicBlock):
- def __init__(self, handle:core.BNBasicBlockHandle, owner:LowLevelILFunction, view:Optional['binaryview.BinaryView']):
+ def __init__(
+ self, handle: core.BNBasicBlockHandle, owner: LowLevelILFunction, view: Optional['binaryview.BinaryView']
+ ):
super(LowLevelILBasicBlock, self).__init__(handle, view)
self._il_function = owner
@@ -4681,13 +4737,13 @@ class LowLevelILBasicBlock(basicblock.BasicBlock):
return self._il_function
-def LLIL_TEMP(n:Union[ILRegister, int]) -> int:
+def LLIL_TEMP(n: Union[ILRegister, int]) -> int:
return int(n) | 0x80000000
-def LLIL_REG_IS_TEMP(n:Union[ILRegister, int]) -> bool:
+def LLIL_REG_IS_TEMP(n: Union[ILRegister, int]) -> bool:
return (int(n) & 0x80000000) != 0
-def LLIL_GET_TEMP_REG_INDEX(n:Union[ILRegister, int]) -> int:
+def LLIL_GET_TEMP_REG_INDEX(n: Union[ILRegister, int]) -> int:
return int(n) & 0x7fffffff