summaryrefslogtreecommitdiff
path: root/mediumlevelilinstruction.cpp
diff options
context:
space:
mode:
authorKyleMiles <krm504@nyu.edu>2022-01-27 22:43:28 -0500
committerKyleMiles <krm504@nyu.edu>2022-01-28 00:24:06 -0500
commit6812c973c9fa9b4ad642ab81856c05f87bd6fcc4 (patch)
treedace4156d03148bcaf02df138ab4e0d93e61bc6f /mediumlevelilinstruction.cpp
parent519c9db22367f2659d1a54599fab47e6313be06e (diff)
Format All Files
Diffstat (limited to 'mediumlevelilinstruction.cpp')
-rw-r--r--mediumlevelilinstruction.cpp1085
1 files changed, 508 insertions, 577 deletions
diff --git a/mediumlevelilinstruction.cpp b/mediumlevelilinstruction.cpp
index 7235687b..29a58de7 100644
--- a/mediumlevelilinstruction.cpp
+++ b/mediumlevelilinstruction.cpp
@@ -19,14 +19,14 @@
// IN THE SOFTWARE.
#ifdef BINARYNINJACORE_LIBRARY
-#include "mediumlevelilfunction.h"
-#include "mediumlevelilssafunction.h"
-#include "lowlevelilfunction.h"
+ #include "mediumlevelilfunction.h"
+ #include "mediumlevelilssafunction.h"
+ #include "lowlevelilfunction.h"
using namespace BinaryNinjaCore;
#else
-#include "binaryninjaapi.h"
-#include "mediumlevelilinstruction.h"
-#include "lowlevelilinstruction.h"
+ #include "binaryninjaapi.h"
+ #include "mediumlevelilinstruction.h"
+ #include "lowlevelilinstruction.h"
using namespace BinaryNinja;
#endif
@@ -35,219 +35,208 @@ using namespace std;
#endif
-unordered_map<MediumLevelILOperandUsage, MediumLevelILOperandType>
- MediumLevelILInstructionBase::operandTypeForUsage = {
- {SourceExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {SourceVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {SourceSSAVariableMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
- {PartialSSAVariableSourceMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
- {DestExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {DestVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {DestSSAVariableMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
- {LeftExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {RightExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {CarryExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {StackExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {ConditionExprMediumLevelOperandUsage, ExprMediumLevelOperand},
- {HighVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {LowVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {HighSSAVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {LowSSAVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
- {OffsetMediumLevelOperandUsage, IntegerMediumLevelOperand},
- {ConstantMediumLevelOperandUsage, IntegerMediumLevelOperand},
- {VectorMediumLevelOperandUsage, IntegerMediumLevelOperand},
- {IntrinsicMediumLevelOperandUsage, IntrinsicMediumLevelOperand},
- {TargetMediumLevelOperandUsage, IndexMediumLevelOperand},
- {TrueTargetMediumLevelOperandUsage, IndexMediumLevelOperand},
- {FalseTargetMediumLevelOperandUsage, IndexMediumLevelOperand},
- {DestMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
- {SourceMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
- {TargetsMediumLevelOperandUsage, IndexMapMediumLevelOperand},
- {SourceMemoryVersionsMediumLevelOperandUsage, IndexListMediumLevelOperand},
- {OutputVariablesMediumLevelOperandUsage, VariableListMediumLevelOperand},
- {OutputVariablesSubExprMediumLevelOperandUsage, VariableListMediumLevelOperand},
- {OutputSSAVariablesMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
- {OutputSSAVariablesSubExprMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
- {OutputSSAMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
- {ParameterExprsMediumLevelOperandUsage, ExprListMediumLevelOperand},
- {SourceExprsMediumLevelOperandUsage, ExprListMediumLevelOperand},
- {ParameterVariablesMediumLevelOperandUsage, VariableListMediumLevelOperand},
- {ParameterSSAVariablesMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
- {ParameterSSAMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
- {SourceSSAVariablesMediumLevelOperandUsages, SSAVariableListMediumLevelOperand}
- };
+unordered_map<MediumLevelILOperandUsage, MediumLevelILOperandType> MediumLevelILInstructionBase::operandTypeForUsage = {
+ {SourceExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {SourceVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {SourceSSAVariableMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
+ {PartialSSAVariableSourceMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
+ {DestExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {DestVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {DestSSAVariableMediumLevelOperandUsage, SSAVariableMediumLevelOperand},
+ {LeftExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {RightExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {CarryExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {StackExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {ConditionExprMediumLevelOperandUsage, ExprMediumLevelOperand},
+ {HighVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {LowVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {HighSSAVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {LowSSAVariableMediumLevelOperandUsage, VariableMediumLevelOperand},
+ {OffsetMediumLevelOperandUsage, IntegerMediumLevelOperand},
+ {ConstantMediumLevelOperandUsage, IntegerMediumLevelOperand},
+ {VectorMediumLevelOperandUsage, IntegerMediumLevelOperand},
+ {IntrinsicMediumLevelOperandUsage, IntrinsicMediumLevelOperand},
+ {TargetMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {TrueTargetMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {FalseTargetMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {DestMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {SourceMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {TargetsMediumLevelOperandUsage, IndexMapMediumLevelOperand},
+ {SourceMemoryVersionsMediumLevelOperandUsage, IndexListMediumLevelOperand},
+ {OutputVariablesMediumLevelOperandUsage, VariableListMediumLevelOperand},
+ {OutputVariablesSubExprMediumLevelOperandUsage, VariableListMediumLevelOperand},
+ {OutputSSAVariablesMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
+ {OutputSSAVariablesSubExprMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
+ {OutputSSAMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {ParameterExprsMediumLevelOperandUsage, ExprListMediumLevelOperand},
+ {SourceExprsMediumLevelOperandUsage, ExprListMediumLevelOperand},
+ {ParameterVariablesMediumLevelOperandUsage, VariableListMediumLevelOperand},
+ {ParameterSSAVariablesMediumLevelOperandUsage, SSAVariableListMediumLevelOperand},
+ {ParameterSSAMemoryVersionMediumLevelOperandUsage, IndexMediumLevelOperand},
+ {SourceSSAVariablesMediumLevelOperandUsages, SSAVariableListMediumLevelOperand}};
unordered_map<BNMediumLevelILOperation, vector<MediumLevelILOperandUsage>>
- MediumLevelILInstructionBase::operationOperandUsage = {
- {MLIL_NOP, {}},
- {MLIL_NORET, {}},
- {MLIL_BP, {}},
- {MLIL_UNDEF, {}},
- {MLIL_UNIMPL, {}},
- {MLIL_SET_VAR, {DestVariableMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_FIELD, {DestVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_SPLIT, {HighVariableMediumLevelOperandUsage, LowVariableMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_SSA, {DestSSAVariableMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_SSA_FIELD, {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
- OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_SPLIT_SSA, {HighSSAVariableMediumLevelOperandUsage, LowSSAVariableMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_ALIASED, {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_SET_VAR_ALIASED_FIELD, {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
- OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_LOAD, {SourceExprMediumLevelOperandUsage}},
- {MLIL_LOAD_STRUCT, {SourceExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_LOAD_SSA, {SourceExprMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
- {MLIL_LOAD_STRUCT_SSA, {SourceExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage,
- SourceMemoryVersionMediumLevelOperandUsage}},
- {MLIL_STORE, {DestExprMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_STORE_STRUCT, {DestExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_STORE_SSA, {DestExprMediumLevelOperandUsage, DestMemoryVersionMediumLevelOperandUsage,
- SourceMemoryVersionMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
- {MLIL_STORE_STRUCT_SSA, {DestExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage,
- DestMemoryVersionMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage,
- SourceExprMediumLevelOperandUsage}},
- {MLIL_VAR, {SourceVariableMediumLevelOperandUsage}},
- {MLIL_VAR_FIELD, {SourceVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_VAR_SPLIT, {HighVariableMediumLevelOperandUsage, LowVariableMediumLevelOperandUsage}},
- {MLIL_VAR_SSA, {SourceSSAVariableMediumLevelOperandUsage}},
- {MLIL_VAR_SSA_FIELD, {SourceSSAVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_VAR_ALIASED, {SourceSSAVariableMediumLevelOperandUsage}},
- {MLIL_VAR_ALIASED_FIELD, {SourceSSAVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_VAR_SPLIT_SSA, {HighSSAVariableMediumLevelOperandUsage, LowSSAVariableMediumLevelOperandUsage}},
- {MLIL_ADDRESS_OF, {SourceVariableMediumLevelOperandUsage}},
- {MLIL_ADDRESS_OF_FIELD, {SourceVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_JUMP, {DestExprMediumLevelOperandUsage}},
- {MLIL_JUMP_TO, {DestExprMediumLevelOperandUsage, TargetsMediumLevelOperandUsage}},
- {MLIL_RET_HINT, {DestExprMediumLevelOperandUsage}},
- {MLIL_CALL, {OutputVariablesMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage}},
- {MLIL_CALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterVariablesMediumLevelOperandUsage}},
- {MLIL_SYSCALL, {OutputVariablesMediumLevelOperandUsage, ParameterExprsMediumLevelOperandUsage}},
- {MLIL_SYSCALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage,
- ParameterVariablesMediumLevelOperandUsage, StackExprMediumLevelOperandUsage}},
- {MLIL_TAILCALL, {OutputVariablesMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage}},
- {MLIL_TAILCALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterVariablesMediumLevelOperandUsage}},
- {MLIL_CALL_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
- {MLIL_CALL_UNTYPED_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterSSAVariablesMediumLevelOperandUsage, ParameterSSAMemoryVersionMediumLevelOperandUsage,
- StackExprMediumLevelOperandUsage}},
- {MLIL_SYSCALL_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, ParameterExprsMediumLevelOperandUsage,
- SourceMemoryVersionMediumLevelOperandUsage}},
- {MLIL_SYSCALL_UNTYPED_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, ParameterSSAVariablesMediumLevelOperandUsage,
- ParameterSSAMemoryVersionMediumLevelOperandUsage, StackExprMediumLevelOperandUsage}},
- {MLIL_TAILCALL_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
- {MLIL_TAILCALL_UNTYPED_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
- OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
- ParameterSSAVariablesMediumLevelOperandUsage, ParameterSSAMemoryVersionMediumLevelOperandUsage,
- StackExprMediumLevelOperandUsage}},
- {MLIL_RET, {SourceExprsMediumLevelOperandUsage}},
- {MLIL_IF, {ConditionExprMediumLevelOperandUsage, TrueTargetMediumLevelOperandUsage,
- FalseTargetMediumLevelOperandUsage}},
- {MLIL_GOTO, {TargetMediumLevelOperandUsage}},
- {MLIL_INTRINSIC, {OutputVariablesMediumLevelOperandUsage, IntrinsicMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage}},
- {MLIL_INTRINSIC_SSA, {OutputSSAVariablesMediumLevelOperandUsage, IntrinsicMediumLevelOperandUsage,
- ParameterExprsMediumLevelOperandUsage}},
- {MLIL_FREE_VAR_SLOT, {DestVariableMediumLevelOperandUsage}},
- {MLIL_FREE_VAR_SLOT_SSA, {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage}},
- {MLIL_TRAP, {VectorMediumLevelOperandUsage}},
- {MLIL_VAR_PHI, {DestSSAVariableMediumLevelOperandUsage, SourceSSAVariablesMediumLevelOperandUsages}},
- {MLIL_MEM_PHI, {DestMemoryVersionMediumLevelOperandUsage, SourceMemoryVersionsMediumLevelOperandUsage}},
- {MLIL_CONST, {ConstantMediumLevelOperandUsage}},
- {MLIL_CONST_PTR, {ConstantMediumLevelOperandUsage}},
- {MLIL_EXTERN_PTR, {ConstantMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
- {MLIL_FLOAT_CONST, {ConstantMediumLevelOperandUsage}},
- {MLIL_IMPORT, {ConstantMediumLevelOperandUsage}},
- {MLIL_ADD, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_SUB, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_AND, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_OR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_XOR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_LSL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_LSR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_ASR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_ROL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_ROR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MUL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MULU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MULS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_DIVU, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_DIVS, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MODU, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MODS, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_E, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_NE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_SLT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_ULT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_SLE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_ULE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_SGE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_UGE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_SGT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_CMP_UGT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_TEST_BIT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_ADD_OVERFLOW, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_ADC, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage,
- CarryExprMediumLevelOperandUsage}},
- {MLIL_SBB, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage,
- CarryExprMediumLevelOperandUsage}},
- {MLIL_RLC, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage,
- CarryExprMediumLevelOperandUsage}},
- {MLIL_RRC, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage,
- CarryExprMediumLevelOperandUsage}},
- {MLIL_DIVU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_DIVS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MODU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_MODS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_NEG, {SourceExprMediumLevelOperandUsage}},
- {MLIL_NOT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_SX, {SourceExprMediumLevelOperandUsage}},
- {MLIL_ZX, {SourceExprMediumLevelOperandUsage}},
- {MLIL_LOW_PART, {SourceExprMediumLevelOperandUsage}},
- {MLIL_BOOL_TO_INT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_UNIMPL_MEM, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FADD, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FSUB, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FMUL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FDIV, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FSQRT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FNEG, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FABS, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FLOAT_TO_INT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_INT_TO_FLOAT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FLOAT_CONV, {SourceExprMediumLevelOperandUsage}},
- {MLIL_ROUND_TO_INT, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FLOOR, {SourceExprMediumLevelOperandUsage}},
- {MLIL_CEIL, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FTRUNC, {SourceExprMediumLevelOperandUsage}},
- {MLIL_FCMP_E, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_NE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_LT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_LE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_GE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_GT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_O, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
- {MLIL_FCMP_UO, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}}
- };
+ MediumLevelILInstructionBase::operationOperandUsage = {{MLIL_NOP, {}}, {MLIL_NORET, {}}, {MLIL_BP, {}},
+ {MLIL_UNDEF, {}}, {MLIL_UNIMPL, {}},
+ {MLIL_SET_VAR, {DestVariableMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_FIELD,
+ {DestVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_SPLIT, {HighVariableMediumLevelOperandUsage, LowVariableMediumLevelOperandUsage,
+ SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_SSA, {DestSSAVariableMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_SSA_FIELD,
+ {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
+ OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_SPLIT_SSA, {HighSSAVariableMediumLevelOperandUsage, LowSSAVariableMediumLevelOperandUsage,
+ SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_ALIASED, {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
+ SourceExprMediumLevelOperandUsage}},
+ {MLIL_SET_VAR_ALIASED_FIELD,
+ {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage,
+ OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_LOAD, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_LOAD_STRUCT, {SourceExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_LOAD_SSA, {SourceExprMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
+ {MLIL_LOAD_STRUCT_SSA, {SourceExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage,
+ SourceMemoryVersionMediumLevelOperandUsage}},
+ {MLIL_STORE, {DestExprMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_STORE_STRUCT,
+ {DestExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_STORE_SSA, {DestExprMediumLevelOperandUsage, DestMemoryVersionMediumLevelOperandUsage,
+ SourceMemoryVersionMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_STORE_STRUCT_SSA,
+ {DestExprMediumLevelOperandUsage, OffsetMediumLevelOperandUsage, DestMemoryVersionMediumLevelOperandUsage,
+ SourceMemoryVersionMediumLevelOperandUsage, SourceExprMediumLevelOperandUsage}},
+ {MLIL_VAR, {SourceVariableMediumLevelOperandUsage}},
+ {MLIL_VAR_FIELD, {SourceVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_VAR_SPLIT, {HighVariableMediumLevelOperandUsage, LowVariableMediumLevelOperandUsage}},
+ {MLIL_VAR_SSA, {SourceSSAVariableMediumLevelOperandUsage}},
+ {MLIL_VAR_SSA_FIELD, {SourceSSAVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_VAR_ALIASED, {SourceSSAVariableMediumLevelOperandUsage}},
+ {MLIL_VAR_ALIASED_FIELD, {SourceSSAVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_VAR_SPLIT_SSA, {HighSSAVariableMediumLevelOperandUsage, LowSSAVariableMediumLevelOperandUsage}},
+ {MLIL_ADDRESS_OF, {SourceVariableMediumLevelOperandUsage}},
+ {MLIL_ADDRESS_OF_FIELD, {SourceVariableMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_JUMP, {DestExprMediumLevelOperandUsage}},
+ {MLIL_JUMP_TO, {DestExprMediumLevelOperandUsage, TargetsMediumLevelOperandUsage}},
+ {MLIL_RET_HINT, {DestExprMediumLevelOperandUsage}},
+ {MLIL_CALL, {OutputVariablesMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage}},
+ {MLIL_CALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterVariablesMediumLevelOperandUsage}},
+ {MLIL_SYSCALL, {OutputVariablesMediumLevelOperandUsage, ParameterExprsMediumLevelOperandUsage}},
+ {MLIL_SYSCALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage,
+ ParameterVariablesMediumLevelOperandUsage, StackExprMediumLevelOperandUsage}},
+ {MLIL_TAILCALL, {OutputVariablesMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage}},
+ {MLIL_TAILCALL_UNTYPED, {OutputVariablesSubExprMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterVariablesMediumLevelOperandUsage}},
+ {MLIL_CALL_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
+ OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
+ {MLIL_CALL_UNTYPED_SSA,
+ {OutputSSAVariablesSubExprMediumLevelOperandUsage, OutputSSAMemoryVersionMediumLevelOperandUsage,
+ DestExprMediumLevelOperandUsage, ParameterSSAVariablesMediumLevelOperandUsage,
+ ParameterSSAMemoryVersionMediumLevelOperandUsage, StackExprMediumLevelOperandUsage}},
+ {MLIL_SYSCALL_SSA,
+ {OutputSSAVariablesSubExprMediumLevelOperandUsage, OutputSSAMemoryVersionMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
+ {MLIL_SYSCALL_UNTYPED_SSA,
+ {OutputSSAVariablesSubExprMediumLevelOperandUsage, OutputSSAMemoryVersionMediumLevelOperandUsage,
+ ParameterSSAVariablesMediumLevelOperandUsage, ParameterSSAMemoryVersionMediumLevelOperandUsage,
+ StackExprMediumLevelOperandUsage}},
+ {MLIL_TAILCALL_SSA, {OutputSSAVariablesSubExprMediumLevelOperandUsage,
+ OutputSSAMemoryVersionMediumLevelOperandUsage, DestExprMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage, SourceMemoryVersionMediumLevelOperandUsage}},
+ {MLIL_TAILCALL_UNTYPED_SSA,
+ {OutputSSAVariablesSubExprMediumLevelOperandUsage, OutputSSAMemoryVersionMediumLevelOperandUsage,
+ DestExprMediumLevelOperandUsage, ParameterSSAVariablesMediumLevelOperandUsage,
+ ParameterSSAMemoryVersionMediumLevelOperandUsage, StackExprMediumLevelOperandUsage}},
+ {MLIL_RET, {SourceExprsMediumLevelOperandUsage}},
+ {MLIL_IF, {ConditionExprMediumLevelOperandUsage, TrueTargetMediumLevelOperandUsage,
+ FalseTargetMediumLevelOperandUsage}},
+ {MLIL_GOTO, {TargetMediumLevelOperandUsage}},
+ {MLIL_INTRINSIC, {OutputVariablesMediumLevelOperandUsage, IntrinsicMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage}},
+ {MLIL_INTRINSIC_SSA, {OutputSSAVariablesMediumLevelOperandUsage, IntrinsicMediumLevelOperandUsage,
+ ParameterExprsMediumLevelOperandUsage}},
+ {MLIL_FREE_VAR_SLOT, {DestVariableMediumLevelOperandUsage}},
+ {MLIL_FREE_VAR_SLOT_SSA,
+ {DestSSAVariableMediumLevelOperandUsage, PartialSSAVariableSourceMediumLevelOperandUsage}},
+ {MLIL_TRAP, {VectorMediumLevelOperandUsage}},
+ {MLIL_VAR_PHI, {DestSSAVariableMediumLevelOperandUsage, SourceSSAVariablesMediumLevelOperandUsages}},
+ {MLIL_MEM_PHI, {DestMemoryVersionMediumLevelOperandUsage, SourceMemoryVersionsMediumLevelOperandUsage}},
+ {MLIL_CONST, {ConstantMediumLevelOperandUsage}}, {MLIL_CONST_PTR, {ConstantMediumLevelOperandUsage}},
+ {MLIL_EXTERN_PTR, {ConstantMediumLevelOperandUsage, OffsetMediumLevelOperandUsage}},
+ {MLIL_FLOAT_CONST, {ConstantMediumLevelOperandUsage}}, {MLIL_IMPORT, {ConstantMediumLevelOperandUsage}},
+ {MLIL_ADD, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_SUB, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_AND, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_OR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_XOR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_LSL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_LSR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_ASR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_ROL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_ROR, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MUL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MULU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MULS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_DIVU, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_DIVS, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MODU, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MODS, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_E, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_NE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_SLT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_ULT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_SLE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_ULE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_SGE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_UGE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_SGT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_CMP_UGT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_TEST_BIT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_ADD_OVERFLOW, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_ADC,
+ {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage, CarryExprMediumLevelOperandUsage}},
+ {MLIL_SBB,
+ {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage, CarryExprMediumLevelOperandUsage}},
+ {MLIL_RLC,
+ {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage, CarryExprMediumLevelOperandUsage}},
+ {MLIL_RRC,
+ {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage, CarryExprMediumLevelOperandUsage}},
+ {MLIL_DIVU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_DIVS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MODU_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_MODS_DP, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_NEG, {SourceExprMediumLevelOperandUsage}}, {MLIL_NOT, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_SX, {SourceExprMediumLevelOperandUsage}}, {MLIL_ZX, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_LOW_PART, {SourceExprMediumLevelOperandUsage}}, {MLIL_BOOL_TO_INT, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_UNIMPL_MEM, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_FADD, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FSUB, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FMUL, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FDIV, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FSQRT, {SourceExprMediumLevelOperandUsage}}, {MLIL_FNEG, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_FABS, {SourceExprMediumLevelOperandUsage}}, {MLIL_FLOAT_TO_INT, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_INT_TO_FLOAT, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_FLOAT_CONV, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_ROUND_TO_INT, {SourceExprMediumLevelOperandUsage}}, {MLIL_FLOOR, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_CEIL, {SourceExprMediumLevelOperandUsage}}, {MLIL_FTRUNC, {SourceExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_E, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_NE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_LT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_LE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_GE, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_GT, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_O, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}},
+ {MLIL_FCMP_UO, {LeftExprMediumLevelOperandUsage, RightExprMediumLevelOperandUsage}}};
-static unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperandUsage, size_t>> GetOperandIndexForOperandUsages()
+static unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperandUsage, size_t>>
+ GetOperandIndexForOperandUsages()
{
unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperandUsage, size_t>> result;
result.reserve(MediumLevelILInstructionBase::operationOperandUsage.size());
@@ -302,22 +291,16 @@ static unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperan
unordered_map<BNMediumLevelILOperation, unordered_map<MediumLevelILOperandUsage, size_t>>
- MediumLevelILInstructionBase::operationOperandIndex = GetOperandIndexForOperandUsages();
+ MediumLevelILInstructionBase::operationOperandIndex = GetOperandIndexForOperandUsages();
-SSAVariable::SSAVariable(): version(0)
-{
-}
+SSAVariable::SSAVariable() : version(0) {}
-SSAVariable::SSAVariable(const Variable& v, size_t i): var(v), version(i)
-{
-}
+SSAVariable::SSAVariable(const Variable& v, size_t i) : var(v), version(i) {}
-SSAVariable::SSAVariable(const SSAVariable& v): var(v.var), version(v.version)
-{
-}
+SSAVariable::SSAVariable(const SSAVariable& v) : var(v.var), version(v.version) {}
SSAVariable& SSAVariable::operator=(const SSAVariable& v)
@@ -392,8 +375,8 @@ uint64_t MediumLevelILIntegerList::ListIterator::operator*()
}
-MediumLevelILIntegerList::MediumLevelILIntegerList(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count)
+MediumLevelILIntegerList::MediumLevelILIntegerList(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count)
{
m_start.function = func;
m_start.instr = instr;
@@ -450,10 +433,10 @@ size_t MediumLevelILIndexList::ListIterator::operator*()
}
-MediumLevelILIndexList::MediumLevelILIndexList(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count): m_list(func, instr, count)
-{
-}
+MediumLevelILIndexList::MediumLevelILIndexList(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count) :
+ m_list(func, instr, count)
+{}
MediumLevelILIndexList::const_iterator MediumLevelILIndexList::begin() const
@@ -508,10 +491,10 @@ const pair<uint64_t, size_t> MediumLevelILIndexMap::ListIterator::operator*()
}
-MediumLevelILIndexMap::MediumLevelILIndexMap(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count): m_list(func, instr, count & (~1))
-{
-}
+MediumLevelILIndexMap::MediumLevelILIndexMap(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count) :
+ m_list(func, instr, count & (~1))
+{}
MediumLevelILIndexMap::const_iterator MediumLevelILIndexMap::begin() const
@@ -562,10 +545,10 @@ const Variable MediumLevelILVariableList::ListIterator::operator*()
}
-MediumLevelILVariableList::MediumLevelILVariableList(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count): m_list(func, instr, count)
-{
-}
+MediumLevelILVariableList::MediumLevelILVariableList(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count) :
+ m_list(func, instr, count)
+{}
MediumLevelILVariableList::const_iterator MediumLevelILVariableList::begin() const
@@ -620,10 +603,10 @@ const SSAVariable MediumLevelILSSAVariableList::ListIterator::operator*()
}
-MediumLevelILSSAVariableList::MediumLevelILSSAVariableList(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count): m_list(func, instr, count & (~1))
-{
-}
+MediumLevelILSSAVariableList::MediumLevelILSSAVariableList(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count) :
+ m_list(func, instr, count & (~1))
+{}
MediumLevelILSSAVariableList::const_iterator MediumLevelILSSAVariableList::begin() const
@@ -670,16 +653,16 @@ MediumLevelILSSAVariableList::operator vector<SSAVariable>() const
const MediumLevelILInstruction MediumLevelILInstructionList::ListIterator::operator*()
{
- return MediumLevelILInstruction(pos.GetFunction(), pos.GetFunction()->GetRawExpr((size_t)*pos),
- (size_t)*pos, instructionIndex);
+ return MediumLevelILInstruction(
+ pos.GetFunction(), pos.GetFunction()->GetRawExpr((size_t)*pos), (size_t)*pos, instructionIndex);
}
-MediumLevelILInstructionList::MediumLevelILInstructionList(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t count, size_t instrIndex):
- m_list(func, instr, count), m_instructionIndex(instrIndex)
-{
-}
+MediumLevelILInstructionList::MediumLevelILInstructionList(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t count, size_t instrIndex) :
+ m_list(func, instr, count),
+ m_instructionIndex(instrIndex)
+{}
MediumLevelILInstructionList::const_iterator MediumLevelILInstructionList::begin() const
@@ -726,9 +709,10 @@ MediumLevelILInstructionList::operator vector<MediumLevelILInstruction>() const
}
-MediumLevelILOperand::MediumLevelILOperand(const MediumLevelILInstruction& instr,
- MediumLevelILOperandUsage usage, size_t operandIndex):
- m_instr(instr), m_usage(usage), m_operandIndex(operandIndex)
+MediumLevelILOperand::MediumLevelILOperand(
+ const MediumLevelILInstruction& instr, MediumLevelILOperandUsage usage, size_t operandIndex) :
+ m_instr(instr),
+ m_usage(usage), m_operandIndex(operandIndex)
{
auto i = MediumLevelILInstructionBase::operandTypeForUsage.find(m_usage);
if (i == MediumLevelILInstructionBase::operandTypeForUsage.end())
@@ -749,8 +733,8 @@ size_t MediumLevelILOperand::GetIndex() const
{
if (m_type != IndexMediumLevelOperand)
throw MediumLevelILInstructionAccessException();
- if ((m_usage == OutputSSAMemoryVersionMediumLevelOperandUsage) ||
- (m_usage == ParameterSSAMemoryVersionMediumLevelOperandUsage))
+ if ((m_usage == OutputSSAMemoryVersionMediumLevelOperandUsage)
+ || (m_usage == ParameterSSAMemoryVersionMediumLevelOperandUsage))
return m_instr.GetRawOperandAsExpr(m_operandIndex).GetRawOperandAsIndex(0);
return m_instr.GetRawOperandAsIndex(m_operandIndex);
}
@@ -810,8 +794,8 @@ MediumLevelILVariableList MediumLevelILOperand::GetVariableList() const
{
if (m_type != VariableListMediumLevelOperand)
throw MediumLevelILInstructionAccessException();
- if ((m_usage == OutputVariablesSubExprMediumLevelOperandUsage) ||
- (m_usage == ParameterVariablesMediumLevelOperandUsage))
+ if ((m_usage == OutputVariablesSubExprMediumLevelOperandUsage)
+ || (m_usage == ParameterVariablesMediumLevelOperandUsage))
return m_instr.GetRawOperandAsExpr(m_operandIndex).GetRawOperandAsVariableList(0);
return m_instr.GetRawOperandAsVariableList(m_operandIndex);
}
@@ -821,8 +805,8 @@ MediumLevelILSSAVariableList MediumLevelILOperand::GetSSAVariableList() const
{
if (m_type != SSAVariableListMediumLevelOperand)
throw MediumLevelILInstructionAccessException();
- if ((m_usage == OutputSSAVariablesSubExprMediumLevelOperandUsage) ||
- (m_usage == ParameterSSAVariablesMediumLevelOperandUsage))
+ if ((m_usage == OutputSSAVariablesSubExprMediumLevelOperandUsage)
+ || (m_usage == ParameterSSAVariablesMediumLevelOperandUsage))
return m_instr.GetRawOperandAsExpr(m_operandIndex).GetRawOperandAsSSAVariableList(1);
return m_instr.GetRawOperandAsSSAVariableList(m_operandIndex);
}
@@ -847,11 +831,11 @@ const MediumLevelILOperand MediumLevelILOperandList::ListIterator::operator*()
MediumLevelILOperandList::MediumLevelILOperandList(const MediumLevelILInstruction& instr,
- const vector<MediumLevelILOperandUsage>& usageList,
- const unordered_map<MediumLevelILOperandUsage, size_t>& operandIndexMap):
- m_instr(instr), m_usageList(usageList), m_operandIndexMap(operandIndexMap)
-{
-}
+ const vector<MediumLevelILOperandUsage>& usageList,
+ const unordered_map<MediumLevelILOperandUsage, size_t>& operandIndexMap) :
+ m_instr(instr),
+ m_usageList(usageList), m_operandIndexMap(operandIndexMap)
+{}
MediumLevelILOperandList::const_iterator MediumLevelILOperandList::begin() const
@@ -909,8 +893,8 @@ MediumLevelILInstruction::MediumLevelILInstruction()
}
-MediumLevelILInstruction::MediumLevelILInstruction(MediumLevelILFunction* func,
- const BNMediumLevelILInstruction& instr, size_t expr, size_t instrIdx)
+MediumLevelILInstruction::MediumLevelILInstruction(
+ MediumLevelILFunction* func, const BNMediumLevelILInstruction& instr, size_t expr, size_t instrIdx)
{
operation = instr.operation;
sourceOperand = instr.sourceOperand;
@@ -970,7 +954,8 @@ size_t MediumLevelILInstructionBase::GetRawOperandAsIndex(size_t operand) const
MediumLevelILInstruction MediumLevelILInstructionBase::GetRawOperandAsExpr(size_t operand) const
{
- return MediumLevelILInstruction(function, function->GetRawExpr(operands[operand]), operands[operand], instructionIndex);
+ return MediumLevelILInstruction(
+ function, function->GetRawExpr(operands[operand]), operands[operand], instructionIndex);
}
@@ -1018,8 +1003,8 @@ MediumLevelILSSAVariableList MediumLevelILInstructionBase::GetRawOperandAsSSAVar
MediumLevelILInstructionList MediumLevelILInstructionBase::GetRawOperandAsExprList(size_t operand) const
{
- return MediumLevelILInstructionList(function, function->GetRawExpr(operands[operand + 1]), operands[operand],
- instructionIndex);
+ return MediumLevelILInstructionList(
+ function, function->GetRawExpr(operands[operand + 1]), operands[operand], instructionIndex);
}
@@ -1030,14 +1015,16 @@ void MediumLevelILInstructionBase::UpdateRawOperand(size_t operandIndex, ExprId
}
-void MediumLevelILInstructionBase::UpdateRawOperandAsSSAVariableList(size_t operandIndex, const vector<SSAVariable>& vars)
+void MediumLevelILInstructionBase::UpdateRawOperandAsSSAVariableList(
+ size_t operandIndex, const vector<SSAVariable>& vars)
{
UpdateRawOperand(operandIndex, vars.size() * 2);
UpdateRawOperand(operandIndex + 1, function->AddSSAVariableList(vars));
}
-void MediumLevelILInstructionBase::UpdateRawOperandAsExprList(size_t operandIndex, const vector<MediumLevelILInstruction>& exprs)
+void MediumLevelILInstructionBase::UpdateRawOperandAsExprList(
+ size_t operandIndex, const vector<MediumLevelILInstruction>& exprs)
{
vector<ExprId> exprIndexList;
for (auto& i : exprs)
@@ -1490,14 +1477,12 @@ void MediumLevelILInstruction::VisitExprs(const std::function<bool(const MediumL
ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest) const
{
- return CopyTo(dest, [&](const MediumLevelILInstruction& subExpr) {
- return subExpr.CopyTo(dest);
- });
+ return CopyTo(dest, [&](const MediumLevelILInstruction& subExpr) { return subExpr.CopyTo(dest); });
}
ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
- const std::function<ExprId(const MediumLevelILInstruction& subExpr)>& subExprHandler) const
+ const std::function<ExprId(const MediumLevelILInstruction& subExpr)>& subExprHandler) const
{
vector<ExprId> params;
BNMediumLevelILLabel* labelA;
@@ -1507,128 +1492,116 @@ ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
case MLIL_NOP:
return dest->Nop(*this);
case MLIL_SET_VAR:
- return dest->SetVar(size, GetDestVariable<MLIL_SET_VAR>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR>()), *this);
+ return dest->SetVar(
+ size, GetDestVariable<MLIL_SET_VAR>(), subExprHandler(GetSourceExpr<MLIL_SET_VAR>()), *this);
case MLIL_SET_VAR_SSA:
- return dest->SetVarSSA(size, GetDestSSAVariable<MLIL_SET_VAR_SSA>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_SSA>()), *this);
+ return dest->SetVarSSA(
+ size, GetDestSSAVariable<MLIL_SET_VAR_SSA>(), subExprHandler(GetSourceExpr<MLIL_SET_VAR_SSA>()), *this);
case MLIL_SET_VAR_ALIASED:
return dest->SetVarAliased(size, GetDestSSAVariable<MLIL_SET_VAR_ALIASED>().var,
- GetDestSSAVariable<MLIL_SET_VAR_ALIASED>().version,
- GetSourceSSAVariable<MLIL_SET_VAR_ALIASED>().version,
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_ALIASED>()), *this);
+ GetDestSSAVariable<MLIL_SET_VAR_ALIASED>().version, GetSourceSSAVariable<MLIL_SET_VAR_ALIASED>().version,
+ subExprHandler(GetSourceExpr<MLIL_SET_VAR_ALIASED>()), *this);
case MLIL_SET_VAR_SPLIT:
- return dest->SetVarSplit(size, GetHighVariable<MLIL_SET_VAR_SPLIT>(),
- GetLowVariable<MLIL_SET_VAR_SPLIT>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_SPLIT>()), *this);
+ return dest->SetVarSplit(size, GetHighVariable<MLIL_SET_VAR_SPLIT>(), GetLowVariable<MLIL_SET_VAR_SPLIT>(),
+ subExprHandler(GetSourceExpr<MLIL_SET_VAR_SPLIT>()), *this);
case MLIL_SET_VAR_SPLIT_SSA:
return dest->SetVarSSASplit(size, GetHighSSAVariable<MLIL_SET_VAR_SPLIT_SSA>(),
- GetLowSSAVariable<MLIL_SET_VAR_SPLIT_SSA>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_SPLIT_SSA>()), *this);
+ GetLowSSAVariable<MLIL_SET_VAR_SPLIT_SSA>(), subExprHandler(GetSourceExpr<MLIL_SET_VAR_SPLIT_SSA>()),
+ *this);
case MLIL_SET_VAR_FIELD:
- return dest->SetVarField(size, GetDestVariable<MLIL_SET_VAR_FIELD>(),
- GetOffset<MLIL_SET_VAR_FIELD>(), subExprHandler(GetSourceExpr<MLIL_SET_VAR_FIELD>()), *this);
+ return dest->SetVarField(size, GetDestVariable<MLIL_SET_VAR_FIELD>(), GetOffset<MLIL_SET_VAR_FIELD>(),
+ subExprHandler(GetSourceExpr<MLIL_SET_VAR_FIELD>()), *this);
case MLIL_SET_VAR_SSA_FIELD:
return dest->SetVarSSAField(size, GetDestSSAVariable<MLIL_SET_VAR_SSA_FIELD>().var,
- GetDestSSAVariable<MLIL_SET_VAR_SSA_FIELD>().version,
- GetSourceSSAVariable<MLIL_SET_VAR_SSA_FIELD>().version,
- GetOffset<MLIL_SET_VAR_SSA_FIELD>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_SSA_FIELD>()), *this);
+ GetDestSSAVariable<MLIL_SET_VAR_SSA_FIELD>().version,
+ GetSourceSSAVariable<MLIL_SET_VAR_SSA_FIELD>().version, GetOffset<MLIL_SET_VAR_SSA_FIELD>(),
+ subExprHandler(GetSourceExpr<MLIL_SET_VAR_SSA_FIELD>()), *this);
case MLIL_SET_VAR_ALIASED_FIELD:
return dest->SetVarAliasedField(size, GetDestSSAVariable<MLIL_SET_VAR_ALIASED_FIELD>().var,
- GetDestSSAVariable<MLIL_SET_VAR_ALIASED_FIELD>().version,
- GetSourceSSAVariable<MLIL_SET_VAR_ALIASED_FIELD>().version,
- GetOffset<MLIL_SET_VAR_ALIASED_FIELD>(),
- subExprHandler(GetSourceExpr<MLIL_SET_VAR_ALIASED_FIELD>()), *this);
+ GetDestSSAVariable<MLIL_SET_VAR_ALIASED_FIELD>().version,
+ GetSourceSSAVariable<MLIL_SET_VAR_ALIASED_FIELD>().version, GetOffset<MLIL_SET_VAR_ALIASED_FIELD>(),
+ subExprHandler(GetSourceExpr<MLIL_SET_VAR_ALIASED_FIELD>()), *this);
case MLIL_VAR:
return dest->Var(size, GetSourceVariable<MLIL_VAR>(), *this);
case MLIL_VAR_FIELD:
- return dest->VarField(size, GetSourceVariable<MLIL_VAR_FIELD>(),
- GetOffset<MLIL_VAR_FIELD>(), *this);
+ return dest->VarField(size, GetSourceVariable<MLIL_VAR_FIELD>(), GetOffset<MLIL_VAR_FIELD>(), *this);
case MLIL_VAR_SPLIT:
- return dest->VarSplit(size, GetHighVariable<MLIL_VAR_SPLIT>(),
- GetLowVariable<MLIL_VAR_SPLIT>(), *this);
+ return dest->VarSplit(size, GetHighVariable<MLIL_VAR_SPLIT>(), GetLowVariable<MLIL_VAR_SPLIT>(), *this);
case MLIL_VAR_SSA:
return dest->VarSSA(size, GetSourceSSAVariable<MLIL_VAR_SSA>(), *this);
case MLIL_VAR_SSA_FIELD:
- return dest->VarSSAField(size, GetSourceSSAVariable<MLIL_VAR_SSA_FIELD>(),
- GetOffset<MLIL_VAR_SSA_FIELD>(), *this);
+ return dest->VarSSAField(
+ size, GetSourceSSAVariable<MLIL_VAR_SSA_FIELD>(), GetOffset<MLIL_VAR_SSA_FIELD>(), *this);
case MLIL_VAR_ALIASED:
return dest->VarAliased(size, GetSourceSSAVariable<MLIL_VAR_ALIASED>().var,
- GetSourceSSAVariable<MLIL_VAR_ALIASED>().version, *this);
+ GetSourceSSAVariable<MLIL_VAR_ALIASED>().version, *this);
case MLIL_VAR_ALIASED_FIELD:
return dest->VarAliasedField(size, GetSourceSSAVariable<MLIL_VAR_ALIASED_FIELD>().var,
- GetSourceSSAVariable<MLIL_VAR_ALIASED_FIELD>().version,
- GetOffset<MLIL_VAR_ALIASED_FIELD>(), *this);
+ GetSourceSSAVariable<MLIL_VAR_ALIASED_FIELD>().version, GetOffset<MLIL_VAR_ALIASED_FIELD>(), *this);
case MLIL_VAR_SPLIT_SSA:
- return dest->VarSplitSSA(size, GetHighSSAVariable<MLIL_VAR_SPLIT_SSA>(),
- GetLowSSAVariable<MLIL_VAR_SPLIT_SSA>(), *this);
+ return dest->VarSplitSSA(
+ size, GetHighSSAVariable<MLIL_VAR_SPLIT_SSA>(), GetLowSSAVariable<MLIL_VAR_SPLIT_SSA>(), *this);
case MLIL_ADDRESS_OF:
return dest->AddressOf(GetSourceVariable<MLIL_ADDRESS_OF>(), *this);
case MLIL_ADDRESS_OF_FIELD:
- return dest->AddressOfField(GetSourceVariable<MLIL_ADDRESS_OF_FIELD>(),
- GetOffset<MLIL_ADDRESS_OF_FIELD>(), *this);
+ return dest->AddressOfField(
+ GetSourceVariable<MLIL_ADDRESS_OF_FIELD>(), GetOffset<MLIL_ADDRESS_OF_FIELD>(), *this);
case MLIL_CALL:
for (auto i : GetParameterExprs<MLIL_CALL>())
params.push_back(subExprHandler(i));
- return dest->Call(GetOutputVariables<MLIL_CALL>(), subExprHandler(GetDestExpr<MLIL_CALL>()),
- params, *this);
+ return dest->Call(GetOutputVariables<MLIL_CALL>(), subExprHandler(GetDestExpr<MLIL_CALL>()), params, *this);
case MLIL_CALL_UNTYPED:
return dest->CallUntyped(GetOutputVariables<MLIL_CALL_UNTYPED>(),
- subExprHandler(GetDestExpr<MLIL_CALL_UNTYPED>()), GetParameterVariables<MLIL_CALL_UNTYPED>(),
- subExprHandler(GetStackExpr<MLIL_CALL_UNTYPED>()), *this);
+ subExprHandler(GetDestExpr<MLIL_CALL_UNTYPED>()), GetParameterVariables<MLIL_CALL_UNTYPED>(),
+ subExprHandler(GetStackExpr<MLIL_CALL_UNTYPED>()), *this);
case MLIL_CALL_SSA:
for (auto i : GetParameterExprs<MLIL_CALL_SSA>())
params.push_back(subExprHandler(i));
return dest->CallSSA(GetOutputSSAVariables<MLIL_CALL_SSA>(), subExprHandler(GetDestExpr<MLIL_CALL_SSA>()),
- params, GetDestMemoryVersion<MLIL_CALL_SSA>(), GetSourceMemoryVersion<MLIL_CALL_SSA>(), *this);
+ params, GetDestMemoryVersion<MLIL_CALL_SSA>(), GetSourceMemoryVersion<MLIL_CALL_SSA>(), *this);
case MLIL_CALL_UNTYPED_SSA:
return dest->CallUntypedSSA(GetOutputSSAVariables<MLIL_CALL_UNTYPED_SSA>(),
- subExprHandler(GetDestExpr<MLIL_CALL_UNTYPED_SSA>()),
- GetParameterSSAVariables<MLIL_CALL_UNTYPED_SSA>(),
- GetDestMemoryVersion<MLIL_CALL_UNTYPED_SSA>(),
- GetSourceMemoryVersion<MLIL_CALL_UNTYPED_SSA>(),
- subExprHandler(GetStackExpr<MLIL_CALL_UNTYPED_SSA>()), *this);
+ subExprHandler(GetDestExpr<MLIL_CALL_UNTYPED_SSA>()), GetParameterSSAVariables<MLIL_CALL_UNTYPED_SSA>(),
+ GetDestMemoryVersion<MLIL_CALL_UNTYPED_SSA>(), GetSourceMemoryVersion<MLIL_CALL_UNTYPED_SSA>(),
+ subExprHandler(GetStackExpr<MLIL_CALL_UNTYPED_SSA>()), *this);
case MLIL_SYSCALL:
for (auto i : GetParameterExprs<MLIL_SYSCALL>())
params.push_back(subExprHandler(i));
return dest->Syscall(GetOutputVariables<MLIL_SYSCALL>(), params, *this);
case MLIL_SYSCALL_UNTYPED:
return dest->SyscallUntyped(GetOutputVariables<MLIL_SYSCALL_UNTYPED>(),
- GetParameterVariables<MLIL_SYSCALL_UNTYPED>(),
- subExprHandler(GetStackExpr<MLIL_SYSCALL_UNTYPED>()), *this);
+ GetParameterVariables<MLIL_SYSCALL_UNTYPED>(), subExprHandler(GetStackExpr<MLIL_SYSCALL_UNTYPED>()), *this);
case MLIL_SYSCALL_SSA:
for (auto i : GetParameterExprs<MLIL_SYSCALL_SSA>())
params.push_back(subExprHandler(i));
return dest->SyscallSSA(GetOutputSSAVariables<MLIL_SYSCALL_SSA>(), params,
- GetDestMemoryVersion<MLIL_SYSCALL_SSA>(), GetSourceMemoryVersion<MLIL_SYSCALL_SSA>(), *this);
+ GetDestMemoryVersion<MLIL_SYSCALL_SSA>(), GetSourceMemoryVersion<MLIL_SYSCALL_SSA>(), *this);
case MLIL_SYSCALL_UNTYPED_SSA:
return dest->SyscallUntypedSSA(GetOutputSSAVariables<MLIL_SYSCALL_UNTYPED_SSA>(),
- GetParameterSSAVariables<MLIL_SYSCALL_UNTYPED_SSA>(),
- GetDestMemoryVersion<MLIL_SYSCALL_UNTYPED_SSA>(),
- GetSourceMemoryVersion<MLIL_SYSCALL_UNTYPED_SSA>(),
- subExprHandler(GetStackExpr<MLIL_SYSCALL_UNTYPED_SSA>()), *this);
+ GetParameterSSAVariables<MLIL_SYSCALL_UNTYPED_SSA>(), GetDestMemoryVersion<MLIL_SYSCALL_UNTYPED_SSA>(),
+ GetSourceMemoryVersion<MLIL_SYSCALL_UNTYPED_SSA>(),
+ subExprHandler(GetStackExpr<MLIL_SYSCALL_UNTYPED_SSA>()), *this);
case MLIL_TAILCALL:
for (auto i : GetParameterExprs<MLIL_TAILCALL>())
params.push_back(subExprHandler(i));
- return dest->TailCall(GetOutputVariables<MLIL_TAILCALL>(), subExprHandler(GetDestExpr<MLIL_TAILCALL>()),
- params, *this);
+ return dest->TailCall(
+ GetOutputVariables<MLIL_TAILCALL>(), subExprHandler(GetDestExpr<MLIL_TAILCALL>()), params, *this);
case MLIL_TAILCALL_UNTYPED:
return dest->TailCallUntyped(GetOutputVariables<MLIL_TAILCALL_UNTYPED>(),
- subExprHandler(GetDestExpr<MLIL_TAILCALL_UNTYPED>()), GetParameterVariables<MLIL_TAILCALL_UNTYPED>(),
- subExprHandler(GetStackExpr<MLIL_TAILCALL_UNTYPED>()), *this);
+ subExprHandler(GetDestExpr<MLIL_TAILCALL_UNTYPED>()), GetParameterVariables<MLIL_TAILCALL_UNTYPED>(),
+ subExprHandler(GetStackExpr<MLIL_TAILCALL_UNTYPED>()), *this);
case MLIL_TAILCALL_SSA:
for (auto i : GetParameterExprs<MLIL_TAILCALL_SSA>())
params.push_back(subExprHandler(i));
- return dest->TailCallSSA(GetOutputSSAVariables<MLIL_TAILCALL_SSA>(), subExprHandler(GetDestExpr<MLIL_TAILCALL_SSA>()),
- params, GetDestMemoryVersion<MLIL_TAILCALL_SSA>(), GetSourceMemoryVersion<MLIL_TAILCALL_SSA>(), *this);
+ return dest->TailCallSSA(GetOutputSSAVariables<MLIL_TAILCALL_SSA>(),
+ subExprHandler(GetDestExpr<MLIL_TAILCALL_SSA>()), params, GetDestMemoryVersion<MLIL_TAILCALL_SSA>(),
+ GetSourceMemoryVersion<MLIL_TAILCALL_SSA>(), *this);
case MLIL_TAILCALL_UNTYPED_SSA:
return dest->TailCallUntypedSSA(GetOutputSSAVariables<MLIL_TAILCALL_UNTYPED_SSA>(),
- subExprHandler(GetDestExpr<MLIL_TAILCALL_UNTYPED_SSA>()),
- GetParameterSSAVariables<MLIL_TAILCALL_UNTYPED_SSA>(),
- GetDestMemoryVersion<MLIL_TAILCALL_UNTYPED_SSA>(),
- GetSourceMemoryVersion<MLIL_TAILCALL_UNTYPED_SSA>(),
- subExprHandler(GetStackExpr<MLIL_TAILCALL_UNTYPED_SSA>()), *this);
+ subExprHandler(GetDestExpr<MLIL_TAILCALL_UNTYPED_SSA>()),
+ GetParameterSSAVariables<MLIL_TAILCALL_UNTYPED_SSA>(), GetDestMemoryVersion<MLIL_TAILCALL_UNTYPED_SSA>(),
+ GetSourceMemoryVersion<MLIL_TAILCALL_UNTYPED_SSA>(),
+ subExprHandler(GetStackExpr<MLIL_TAILCALL_UNTYPED_SSA>()), *this);
case MLIL_RET:
for (auto i : GetSourceExprs<MLIL_RET>())
params.push_back(subExprHandler(i));
@@ -1636,31 +1609,31 @@ ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
case MLIL_NORET:
return dest->NoReturn(*this);
case MLIL_STORE:
- return dest->Store(size, subExprHandler(GetDestExpr<MLIL_STORE>()),
- subExprHandler(GetSourceExpr<MLIL_STORE>()), *this);
+ return dest->Store(
+ size, subExprHandler(GetDestExpr<MLIL_STORE>()), subExprHandler(GetSourceExpr<MLIL_STORE>()), *this);
case MLIL_STORE_STRUCT:
- return dest->StoreStruct(size, subExprHandler(GetDestExpr<MLIL_STORE_STRUCT>()),
- GetOffset<MLIL_STORE_STRUCT>(), subExprHandler(GetSourceExpr<MLIL_STORE_STRUCT>()), *this);
+ return dest->StoreStruct(size, subExprHandler(GetDestExpr<MLIL_STORE_STRUCT>()), GetOffset<MLIL_STORE_STRUCT>(),
+ subExprHandler(GetSourceExpr<MLIL_STORE_STRUCT>()), *this);
case MLIL_STORE_SSA:
return dest->StoreSSA(size, subExprHandler(GetDestExpr<MLIL_STORE_SSA>()),
- GetDestMemoryVersion<MLIL_STORE_SSA>(), GetSourceMemoryVersion<MLIL_STORE_SSA>(),
- subExprHandler(GetSourceExpr<MLIL_STORE_SSA>()), *this);
+ GetDestMemoryVersion<MLIL_STORE_SSA>(), GetSourceMemoryVersion<MLIL_STORE_SSA>(),
+ subExprHandler(GetSourceExpr<MLIL_STORE_SSA>()), *this);
case MLIL_STORE_STRUCT_SSA:
return dest->StoreStructSSA(size, subExprHandler(GetDestExpr<MLIL_STORE_STRUCT_SSA>()),
- GetOffset<MLIL_STORE_STRUCT_SSA>(),
- GetDestMemoryVersion<MLIL_STORE_STRUCT_SSA>(), GetSourceMemoryVersion<MLIL_STORE_STRUCT_SSA>(),
- subExprHandler(GetSourceExpr<MLIL_STORE_STRUCT_SSA>()), *this);
+ GetOffset<MLIL_STORE_STRUCT_SSA>(), GetDestMemoryVersion<MLIL_STORE_STRUCT_SSA>(),
+ GetSourceMemoryVersion<MLIL_STORE_STRUCT_SSA>(), subExprHandler(GetSourceExpr<MLIL_STORE_STRUCT_SSA>()),
+ *this);
case MLIL_LOAD:
return dest->Load(size, subExprHandler(GetSourceExpr<MLIL_LOAD>()), *this);
case MLIL_LOAD_STRUCT:
- return dest->LoadStruct(size, subExprHandler(GetSourceExpr<MLIL_LOAD_STRUCT>()),
- GetOffset<MLIL_LOAD_STRUCT>(), *this);
+ return dest->LoadStruct(
+ size, subExprHandler(GetSourceExpr<MLIL_LOAD_STRUCT>()), GetOffset<MLIL_LOAD_STRUCT>(), *this);
case MLIL_LOAD_SSA:
- return dest->LoadSSA(size, subExprHandler(GetSourceExpr<MLIL_LOAD_SSA>()),
- GetSourceMemoryVersion<MLIL_LOAD_SSA>(), *this);
+ return dest->LoadSSA(
+ size, subExprHandler(GetSourceExpr<MLIL_LOAD_SSA>()), GetSourceMemoryVersion<MLIL_LOAD_SSA>(), *this);
case MLIL_LOAD_STRUCT_SSA:
return dest->LoadStructSSA(size, subExprHandler(GetSourceExpr<MLIL_LOAD_STRUCT_SSA>()),
- GetOffset<MLIL_LOAD_STRUCT_SSA>(), GetSourceMemoryVersion<MLIL_LOAD_STRUCT_SSA>(), *this);
+ GetOffset<MLIL_LOAD_STRUCT_SSA>(), GetSourceMemoryVersion<MLIL_LOAD_STRUCT_SSA>(), *this);
case MLIL_NEG:
case MLIL_NOT:
case MLIL_SX:
@@ -1680,8 +1653,7 @@ ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
case MLIL_FLOOR:
case MLIL_CEIL:
case MLIL_FTRUNC:
- return dest->AddExprWithLocation(operation, *this, size,
- subExprHandler(AsOneOperand().GetSourceExpr()));
+ return dest->AddExprWithLocation(operation, *this, size, subExprHandler(AsOneOperand().GetSourceExpr()));
case MLIL_ADD:
case MLIL_SUB:
case MLIL_AND:
@@ -1727,34 +1699,34 @@ ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
case MLIL_FCMP_GT:
case MLIL_FCMP_O:
case MLIL_FCMP_UO:
- return dest->AddExprWithLocation(operation, *this, size,
- subExprHandler(AsTwoOperand().GetLeftExpr()), subExprHandler(AsTwoOperand().GetRightExpr()));
+ return dest->AddExprWithLocation(operation, *this, size, subExprHandler(AsTwoOperand().GetLeftExpr()),
+ subExprHandler(AsTwoOperand().GetRightExpr()));
case MLIL_ADC:
case MLIL_SBB:
case MLIL_RLC:
case MLIL_RRC:
- return dest->AddExprWithLocation(operation, *this, size,
- subExprHandler(AsTwoOperandWithCarry().GetLeftExpr()),
- subExprHandler(AsTwoOperandWithCarry().GetRightExpr()),
- subExprHandler(AsTwoOperandWithCarry().GetCarryExpr()));
+ return dest->AddExprWithLocation(operation, *this, size, subExprHandler(AsTwoOperandWithCarry().GetLeftExpr()),
+ subExprHandler(AsTwoOperandWithCarry().GetRightExpr()),
+ subExprHandler(AsTwoOperandWithCarry().GetCarryExpr()));
case MLIL_JUMP_TO:
+ {
+ map<uint64_t, BNMediumLevelILLabel*> labelList;
+ for (auto target : GetTargets<MLIL_JUMP_TO>())
{
- map<uint64_t, BNMediumLevelILLabel*> labelList;
- for (auto target : GetTargets<MLIL_JUMP_TO>())
- {
- labelA = dest->GetLabelForSourceInstruction(target.second);
- if (!labelA)
- return dest->Jump(subExprHandler(GetDestExpr<MLIL_JUMP_TO>()), *this);
- labelList[target.first] = labelA;
- }
- return dest->JumpTo(subExprHandler(GetDestExpr<MLIL_JUMP_TO>()), labelList, *this);
+ labelA = dest->GetLabelForSourceInstruction(target.second);
+ if (!labelA)
+ return dest->Jump(subExprHandler(GetDestExpr<MLIL_JUMP_TO>()), *this);
+ labelList[target.first] = labelA;
}
+ return dest->JumpTo(subExprHandler(GetDestExpr<MLIL_JUMP_TO>()), labelList, *this);
+ }
case MLIL_GOTO:
labelA = dest->GetLabelForSourceInstruction(GetTarget<MLIL_GOTO>());
if (!labelA)
{
return dest->Jump(dest->ConstPointer(function->GetArchitecture()->GetAddressSize(),
- function->GetInstruction(GetTarget<MLIL_GOTO>()).address), *this);
+ function->GetInstruction(GetTarget<MLIL_GOTO>()).address),
+ *this);
}
return dest->Goto(*labelA, *this);
case MLIL_IF:
@@ -1780,19 +1752,18 @@ ExprId MediumLevelILInstruction::CopyTo(MediumLevelILFunction* dest,
case MLIL_INTRINSIC:
for (auto i : GetParameterExprs<MLIL_INTRINSIC>())
params.push_back(subExprHandler(i));
- return dest->Intrinsic(GetOutputVariables<MLIL_INTRINSIC>(),
- GetIntrinsic<MLIL_INTRINSIC>(), params, *this);
+ return dest->Intrinsic(GetOutputVariables<MLIL_INTRINSIC>(), GetIntrinsic<MLIL_INTRINSIC>(), params, *this);
case MLIL_INTRINSIC_SSA:
for (auto i : GetParameterExprs<MLIL_INTRINSIC_SSA>())
params.push_back(subExprHandler(i));
- return dest->IntrinsicSSA(GetOutputSSAVariables<MLIL_INTRINSIC_SSA>(),
- GetIntrinsic<MLIL_INTRINSIC_SSA>(), params, *this);
+ return dest->IntrinsicSSA(
+ GetOutputSSAVariables<MLIL_INTRINSIC_SSA>(), GetIntrinsic<MLIL_INTRINSIC_SSA>(), params, *this);
case MLIL_FREE_VAR_SLOT:
return dest->FreeVarSlot(GetDestVariable<MLIL_FREE_VAR_SLOT>(), *this);
case MLIL_FREE_VAR_SLOT_SSA:
return dest->FreeVarSlotSSA(GetDestSSAVariable<MLIL_FREE_VAR_SLOT_SSA>().var,
- GetDestSSAVariable<MLIL_FREE_VAR_SLOT_SSA>().version,
- GetSourceSSAVariable<MLIL_FREE_VAR_SLOT_SSA>().version, *this);
+ GetDestSSAVariable<MLIL_FREE_VAR_SLOT_SSA>().version,
+ GetSourceSSAVariable<MLIL_FREE_VAR_SLOT_SSA>().version, *this);
case MLIL_UNDEF:
return dest->Undefined(*this);
case MLIL_UNIMPL:
@@ -2129,66 +2100,61 @@ ExprId MediumLevelILFunction::Nop(const ILSourceLocation& loc)
}
-ExprId MediumLevelILFunction::SetVar(size_t size, const Variable& dest, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVar(size_t size, const Variable& dest, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SET_VAR, loc, size, dest.ToIdentifier(), src);
}
-ExprId MediumLevelILFunction::SetVarField(size_t size, const Variable& dest, uint64_t offset, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarField(
+ size_t size, const Variable& dest, uint64_t offset, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SET_VAR_FIELD, loc, size, dest.ToIdentifier(), offset, src);
}
-ExprId MediumLevelILFunction::SetVarSplit(size_t size, const Variable& high, const Variable& low, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarSplit(
+ size_t size, const Variable& high, const Variable& low, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SET_VAR_SPLIT, loc, size, high.ToIdentifier(), low.ToIdentifier(), src);
}
-ExprId MediumLevelILFunction::SetVarSSA(size_t size, const SSAVariable& dest, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarSSA(size_t size, const SSAVariable& dest, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SET_VAR_SSA, loc, size, dest.var.ToIdentifier(), dest.version, src);
}
-ExprId MediumLevelILFunction::SetVarSSAField(size_t size, const Variable& dest,
- size_t newVersion, size_t prevVersion, uint64_t offset, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarSSAField(size_t size, const Variable& dest, size_t newVersion, size_t prevVersion,
+ uint64_t offset, ExprId src, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_SET_VAR_SSA_FIELD, loc, size, dest.ToIdentifier(), newVersion, prevVersion,
- offset, src);
+ return AddExprWithLocation(
+ MLIL_SET_VAR_SSA_FIELD, loc, size, dest.ToIdentifier(), newVersion, prevVersion, offset, src);
}
-ExprId MediumLevelILFunction::SetVarSSASplit(size_t size, const SSAVariable& high, const SSAVariable& low,
- ExprId src, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarSSASplit(
+ size_t size, const SSAVariable& high, const SSAVariable& low, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SET_VAR_SPLIT_SSA, loc, size, high.var.ToIdentifier(), high.version,
- low.var.ToIdentifier(), low.version, src);
+ low.var.ToIdentifier(), low.version, src);
}
-ExprId MediumLevelILFunction::SetVarAliased(size_t size, const Variable& dest,
- size_t newMemVersion, size_t prevMemVersion,
- ExprId src, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarAliased(size_t size, const Variable& dest, size_t newMemVersion,
+ size_t prevMemVersion, ExprId src, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_SET_VAR_ALIASED, loc, size, dest.ToIdentifier(),
- newMemVersion, prevMemVersion, src);
+ return AddExprWithLocation(
+ MLIL_SET_VAR_ALIASED, loc, size, dest.ToIdentifier(), newMemVersion, prevMemVersion, src);
}
-ExprId MediumLevelILFunction::SetVarAliasedField(size_t size, const Variable& dest,
- size_t newMemVersion, size_t prevMemVersion,
- uint64_t offset, ExprId src, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SetVarAliasedField(size_t size, const Variable& dest, size_t newMemVersion,
+ size_t prevMemVersion, uint64_t offset, ExprId src, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_SET_VAR_ALIASED_FIELD, loc, size, dest.ToIdentifier(),
- newMemVersion, prevMemVersion, offset, src);
+ return AddExprWithLocation(
+ MLIL_SET_VAR_ALIASED_FIELD, loc, size, dest.ToIdentifier(), newMemVersion, prevMemVersion, offset, src);
}
@@ -2198,111 +2164,103 @@ ExprId MediumLevelILFunction::Load(size_t size, ExprId src, const ILSourceLocati
}
-ExprId MediumLevelILFunction::LoadStruct(size_t size, ExprId src, uint64_t offset,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::LoadStruct(size_t size, ExprId src, uint64_t offset, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_LOAD_STRUCT, loc, size, src, offset);
}
-ExprId MediumLevelILFunction::LoadSSA(size_t size, ExprId src, size_t memVersion,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::LoadSSA(size_t size, ExprId src, size_t memVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_LOAD_SSA, loc, size, src, memVersion);
}
-ExprId MediumLevelILFunction::LoadStructSSA(size_t size, ExprId src, uint64_t offset, size_t memVersion,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::LoadStructSSA(
+ size_t size, ExprId src, uint64_t offset, size_t memVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_LOAD_STRUCT_SSA, loc, size, src, offset, memVersion);
}
-ExprId MediumLevelILFunction::Store(size_t size, ExprId dest, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Store(size_t size, ExprId dest, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_STORE, loc, size, dest, src);
}
-ExprId MediumLevelILFunction::StoreStruct(size_t size, ExprId dest, uint64_t offset, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::StoreStruct(
+ size_t size, ExprId dest, uint64_t offset, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_STORE_STRUCT, loc, size, dest, offset, src);
}
-ExprId MediumLevelILFunction::StoreSSA(size_t size, ExprId dest,
- size_t newMemVersion, size_t prevMemVersion, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::StoreSSA(
+ size_t size, ExprId dest, size_t newMemVersion, size_t prevMemVersion, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_STORE_SSA, loc, size, dest, newMemVersion, prevMemVersion, src);
}
-ExprId MediumLevelILFunction::StoreStructSSA(size_t size, ExprId dest, uint64_t offset,
- size_t newMemVersion, size_t prevMemVersion, ExprId src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::StoreStructSSA(size_t size, ExprId dest, uint64_t offset, size_t newMemVersion,
+ size_t prevMemVersion, ExprId src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_STORE_STRUCT_SSA, loc, size, dest, offset, newMemVersion, prevMemVersion, src);
}
-ExprId MediumLevelILFunction::Var(size_t size, const Variable& src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Var(size_t size, const Variable& src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR, loc, size, src.ToIdentifier());
}
-ExprId MediumLevelILFunction::VarField(size_t size, const Variable& src, uint64_t offset,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarField(size_t size, const Variable& src, uint64_t offset, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_FIELD, loc, size, src.ToIdentifier(), offset);
}
-ExprId MediumLevelILFunction::VarSplit(size_t size, const Variable& high, const Variable& low,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarSplit(
+ size_t size, const Variable& high, const Variable& low, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_SPLIT, loc, size, high.ToIdentifier(), low.ToIdentifier());
}
-ExprId MediumLevelILFunction::VarSSA(size_t size, const SSAVariable& src,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarSSA(size_t size, const SSAVariable& src, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_SSA, loc, size, src.var.ToIdentifier(), src.version);
}
-ExprId MediumLevelILFunction::VarSSAField(size_t size, const SSAVariable& src, uint64_t offset,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarSSAField(
+ size_t size, const SSAVariable& src, uint64_t offset, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_SSA_FIELD, loc, size, src.var.ToIdentifier(), src.version, offset);
}
-ExprId MediumLevelILFunction::VarAliased(size_t size, const Variable& src, size_t memVersion,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarAliased(
+ size_t size, const Variable& src, size_t memVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_ALIASED, loc, size, src.ToIdentifier(), memVersion);
}
-ExprId MediumLevelILFunction::VarAliasedField(size_t size, const Variable& src,
- size_t memVersion, uint64_t offset, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarAliasedField(
+ size_t size, const Variable& src, size_t memVersion, uint64_t offset, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_VAR_ALIASED_FIELD, loc, size, src.ToIdentifier(), memVersion, offset);
}
-ExprId MediumLevelILFunction::VarSplitSSA(size_t size, const SSAVariable& high, const SSAVariable& low,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarSplitSSA(
+ size_t size, const SSAVariable& high, const SSAVariable& low, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_VAR_SPLIT_SSA, loc, size, high.var.ToIdentifier(), high.version,
- low.var.ToIdentifier(), low.version);
+ return AddExprWithLocation(
+ MLIL_VAR_SPLIT_SSA, loc, size, high.var.ToIdentifier(), high.version, low.var.ToIdentifier(), low.version);
}
@@ -2312,8 +2270,7 @@ ExprId MediumLevelILFunction::AddressOf(const Variable& var, const ILSourceLocat
}
-ExprId MediumLevelILFunction::AddressOfField(const Variable& var, uint64_t offset,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::AddressOfField(const Variable& var, uint64_t offset, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ADDRESS_OF_FIELD, loc, 0, var.ToIdentifier(), offset);
}
@@ -2379,8 +2336,8 @@ ExprId MediumLevelILFunction::Add(size_t size, ExprId left, ExprId right, const
}
-ExprId MediumLevelILFunction::AddWithCarry(size_t size, ExprId left, ExprId right, ExprId carry,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::AddWithCarry(
+ size_t size, ExprId left, ExprId right, ExprId carry, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ADC, loc, size, left, right, carry);
}
@@ -2392,8 +2349,8 @@ ExprId MediumLevelILFunction::Sub(size_t size, ExprId left, ExprId right, const
}
-ExprId MediumLevelILFunction::SubWithBorrow(size_t size, ExprId left, ExprId right, ExprId carry,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SubWithBorrow(
+ size_t size, ExprId left, ExprId right, ExprId carry, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SBB, loc, size, left, right, carry);
}
@@ -2417,127 +2374,112 @@ ExprId MediumLevelILFunction::Xor(size_t size, ExprId left, ExprId right, const
}
-ExprId MediumLevelILFunction::ShiftLeft(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ShiftLeft(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_LSL, loc, size, left, right);
}
-ExprId MediumLevelILFunction::LogicalShiftRight(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::LogicalShiftRight(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_LSR, loc, size, left, right);
}
-ExprId MediumLevelILFunction::ArithShiftRight(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ArithShiftRight(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ASR, loc, size, left, right);
}
-ExprId MediumLevelILFunction::RotateLeft(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::RotateLeft(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ROL, loc, size, left, right);
}
-ExprId MediumLevelILFunction::RotateLeftCarry(size_t size, ExprId left, ExprId right, ExprId carry,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::RotateLeftCarry(
+ size_t size, ExprId left, ExprId right, ExprId carry, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_RLC, loc, size, left, right, carry);
}
-ExprId MediumLevelILFunction::RotateRight(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::RotateRight(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ROR, loc, size, left, right);
}
-ExprId MediumLevelILFunction::RotateRightCarry(size_t size, ExprId left, ExprId right, ExprId carry,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::RotateRightCarry(
+ size_t size, ExprId left, ExprId right, ExprId carry, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_RRC, loc, size, left, right, carry);
}
-ExprId MediumLevelILFunction::Mult(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Mult(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MUL, loc, size, left, right);
}
-ExprId MediumLevelILFunction::MultDoublePrecSigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::MultDoublePrecSigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MULS_DP, loc, size, left, right);
}
-ExprId MediumLevelILFunction::MultDoublePrecUnsigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::MultDoublePrecUnsigned(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MULU_DP, loc, size, left, right);
}
-ExprId MediumLevelILFunction::DivSigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::DivSigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_DIVS, loc, size, left, right);
}
-ExprId MediumLevelILFunction::DivUnsigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::DivUnsigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_DIVU, loc, size, left, right);
}
-ExprId MediumLevelILFunction::DivDoublePrecSigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::DivDoublePrecSigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_DIVS_DP, loc, size, left, right);
}
-ExprId MediumLevelILFunction::DivDoublePrecUnsigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::DivDoublePrecUnsigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_DIVU_DP, loc, size, left, right);
}
-ExprId MediumLevelILFunction::ModSigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ModSigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MODS, loc, size, left, right);
}
-ExprId MediumLevelILFunction::ModUnsigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ModUnsigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MODU, loc, size, left, right);
}
-ExprId MediumLevelILFunction::ModDoublePrecSigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ModDoublePrecSigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MODS_DP, loc, size, left, right);
}
-ExprId MediumLevelILFunction::ModDoublePrecUnsigned(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::ModDoublePrecUnsigned(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_MODU_DP, loc, size, left, right);
}
@@ -2579,8 +2521,8 @@ ExprId MediumLevelILFunction::Jump(ExprId dest, const ILSourceLocation& loc)
}
-ExprId MediumLevelILFunction::JumpTo(ExprId dest, const map<uint64_t, BNMediumLevelILLabel*>& targets,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::JumpTo(
+ ExprId dest, const map<uint64_t, BNMediumLevelILLabel*>& targets, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_JUMP_TO, loc, 0, dest, targets.size() * 2, AddLabelMap(targets));
}
@@ -2592,120 +2534,115 @@ ExprId MediumLevelILFunction::ReturnHint(ExprId dest, const ILSourceLocation& lo
}
-ExprId MediumLevelILFunction::Call(const vector<Variable>& output, ExprId dest,
- const vector<ExprId>& params, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Call(
+ const vector<Variable>& output, ExprId dest, const vector<ExprId>& params, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_CALL, loc, 0, output.size(), AddVariableList(output), dest,
- params.size(), AddOperandList(params));
+ return AddExprWithLocation(
+ MLIL_CALL, loc, 0, output.size(), AddVariableList(output), dest, params.size(), AddOperandList(params));
}
-ExprId MediumLevelILFunction::CallUntyped(const vector<Variable>& output, ExprId dest,
- const vector<Variable>& params, ExprId stack, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CallUntyped(const vector<Variable>& output, ExprId dest, const vector<Variable>& params,
+ ExprId stack, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CALL_UNTYPED, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)), dest,
- AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)), dest,
+ AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
}
-ExprId MediumLevelILFunction::Syscall(const vector<Variable>& output, const vector<ExprId>& params,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Syscall(
+ const vector<Variable>& output, const vector<ExprId>& params, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_SYSCALL, loc, 0, output.size(), AddVariableList(output),
- params.size(), AddOperandList(params));
+ return AddExprWithLocation(
+ MLIL_SYSCALL, loc, 0, output.size(), AddVariableList(output), params.size(), AddOperandList(params));
}
-ExprId MediumLevelILFunction::SyscallUntyped(const vector<Variable>& output, const vector<Variable>& params,
- ExprId stack, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SyscallUntyped(
+ const vector<Variable>& output, const vector<Variable>& params, ExprId stack, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SYSCALL_UNTYPED, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)),
- AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)),
+ AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
}
-ExprId MediumLevelILFunction::TailCall(const vector<Variable>& output, ExprId dest,
- const vector<ExprId>& params, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::TailCall(
+ const vector<Variable>& output, ExprId dest, const vector<ExprId>& params, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_TAILCALL, loc, 0, output.size(), AddVariableList(output), dest,
- params.size(), AddOperandList(params));
+ return AddExprWithLocation(
+ MLIL_TAILCALL, loc, 0, output.size(), AddVariableList(output), dest, params.size(), AddOperandList(params));
}
ExprId MediumLevelILFunction::TailCallUntyped(const vector<Variable>& output, ExprId dest,
- const vector<Variable>& params, ExprId stack, const ILSourceLocation& loc)
+ const vector<Variable>& params, ExprId stack, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_TAILCALL_UNTYPED, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)), dest,
- AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT, loc, 0, output.size(), AddVariableList(output)), dest,
+ AddExprWithLocation(MLIL_CALL_PARAM, loc, 0, params.size(), AddVariableList(params)), stack);
}
ExprId MediumLevelILFunction::CallSSA(const vector<SSAVariable>& output, ExprId dest, const vector<ExprId>& params,
- size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
+ size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CALL_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)), dest,
- params.size(), AddOperandList(params), prevMemVersion);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ dest, params.size(), AddOperandList(params), prevMemVersion);
}
ExprId MediumLevelILFunction::CallUntypedSSA(const vector<SSAVariable>& output, ExprId dest,
- const vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion,
- ExprId stack, const ILSourceLocation& loc)
+ const vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion, ExprId stack,
+ const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CALL_UNTYPED_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)), dest,
- AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion,
- params.size() * 2, AddSSAVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ dest,
+ AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion, params.size() * 2, AddSSAVariableList(params)),
+ stack);
}
ExprId MediumLevelILFunction::SyscallSSA(const vector<SSAVariable>& output, const vector<ExprId>& params,
- size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
+ size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SYSCALL_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)),
- params.size(), AddOperandList(params), prevMemVersion);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ params.size(), AddOperandList(params), prevMemVersion);
}
-ExprId MediumLevelILFunction::SyscallUntypedSSA(const vector<SSAVariable>& output,
- const vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion,
- ExprId stack, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::SyscallUntypedSSA(const vector<SSAVariable>& output, const vector<SSAVariable>& params,
+ size_t newMemVersion, size_t prevMemVersion, ExprId stack, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_SYSCALL_UNTYPED_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)),
- AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion,
- params.size() * 2, AddSSAVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion, params.size() * 2, AddSSAVariableList(params)),
+ stack);
}
ExprId MediumLevelILFunction::TailCallSSA(const vector<SSAVariable>& output, ExprId dest, const vector<ExprId>& params,
- size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
+ size_t newMemVersion, size_t prevMemVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_TAILCALL_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)), dest,
- params.size(), AddOperandList(params), prevMemVersion);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ dest, params.size(), AddOperandList(params), prevMemVersion);
}
ExprId MediumLevelILFunction::TailCallUntypedSSA(const vector<SSAVariable>& output, ExprId dest,
- const vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion,
- ExprId stack, const ILSourceLocation& loc)
+ const vector<SSAVariable>& params, size_t newMemVersion, size_t prevMemVersion, ExprId stack,
+ const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_TAILCALL_UNTYPED_SSA, loc, 0,
- AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion,
- output.size() * 2, AddSSAVariableList(output)), dest,
- AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion,
- params.size() * 2, AddSSAVariableList(params)), stack);
+ AddExprWithLocation(MLIL_CALL_OUTPUT_SSA, loc, 0, newMemVersion, output.size() * 2, AddSSAVariableList(output)),
+ dest,
+ AddExprWithLocation(MLIL_CALL_PARAM_SSA, loc, 0, prevMemVersion, params.size() * 2, AddSSAVariableList(params)),
+ stack);
}
@@ -2721,78 +2658,74 @@ ExprId MediumLevelILFunction::NoReturn(const ILSourceLocation& loc)
}
-ExprId MediumLevelILFunction::CompareEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareEqual(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_E, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareNotEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareNotEqual(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_NE, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareSignedLessThan(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareSignedLessThan(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_SLT, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareUnsignedLessThan(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareUnsignedLessThan(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_ULT, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareSignedLessEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareSignedLessEqual(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_SLE, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareUnsignedLessEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareUnsignedLessEqual(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_ULE, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareSignedGreaterEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareSignedGreaterEqual(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_SGE, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareUnsignedGreaterEqual(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareUnsignedGreaterEqual(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_UGE, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareSignedGreaterThan(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareSignedGreaterThan(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_SGT, loc, size, left, right);
}
-ExprId MediumLevelILFunction::CompareUnsignedGreaterThan(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::CompareUnsignedGreaterThan(
+ size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_CMP_UGT, loc, size, left, right);
}
-ExprId MediumLevelILFunction::TestBit(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::TestBit(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_TEST_BIT, loc, size, left, right);
}
@@ -2804,8 +2737,7 @@ ExprId MediumLevelILFunction::BoolToInt(size_t size, ExprId src, const ILSourceL
}
-ExprId MediumLevelILFunction::AddOverflow(size_t size, ExprId left, ExprId right,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::AddOverflow(size_t size, ExprId left, ExprId right, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_ADD_OVERFLOW, loc, size, left, right);
}
@@ -2823,19 +2755,19 @@ ExprId MediumLevelILFunction::Trap(int64_t vector, const ILSourceLocation& loc)
}
-ExprId MediumLevelILFunction::Intrinsic(const vector<Variable>& outputs, uint32_t intrinsic,
- const vector<ExprId>& params, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::Intrinsic(
+ const vector<Variable>& outputs, uint32_t intrinsic, const vector<ExprId>& params, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_INTRINSIC, loc, 0, outputs.size(), AddVariableList(outputs),
- intrinsic, params.size(), AddOperandList(params));
+ return AddExprWithLocation(MLIL_INTRINSIC, loc, 0, outputs.size(), AddVariableList(outputs), intrinsic,
+ params.size(), AddOperandList(params));
}
-ExprId MediumLevelILFunction::IntrinsicSSA(const vector<SSAVariable>& outputs, uint32_t intrinsic,
- const vector<ExprId>& params, const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::IntrinsicSSA(
+ const vector<SSAVariable>& outputs, uint32_t intrinsic, const vector<ExprId>& params, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_INTRINSIC_SSA, loc, 0, outputs.size() * 2, AddSSAVariableList(outputs),
- intrinsic, params.size(), AddOperandList(params));
+ return AddExprWithLocation(MLIL_INTRINSIC_SSA, loc, 0, outputs.size() * 2, AddSSAVariableList(outputs), intrinsic,
+ params.size(), AddOperandList(params));
}
@@ -2845,8 +2777,8 @@ ExprId MediumLevelILFunction::FreeVarSlot(const Variable& var, const ILSourceLoc
}
-ExprId MediumLevelILFunction::FreeVarSlotSSA(const Variable& var, size_t newVersion, size_t prevVersion,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::FreeVarSlotSSA(
+ const Variable& var, size_t newVersion, size_t prevVersion, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_FREE_VAR_SLOT_SSA, loc, 0, var.ToIdentifier(), newVersion, prevVersion);
}
@@ -2864,26 +2796,25 @@ ExprId MediumLevelILFunction::Unimplemented(const ILSourceLocation& loc)
}
-ExprId MediumLevelILFunction::UnimplementedMemoryRef(size_t size, ExprId target,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::UnimplementedMemoryRef(size_t size, ExprId target, const ILSourceLocation& loc)
{
return AddExprWithLocation(MLIL_UNIMPL_MEM, loc, size, target);
}
-ExprId MediumLevelILFunction::VarPhi(const SSAVariable& dest, const vector<SSAVariable>& sources,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::VarPhi(
+ const SSAVariable& dest, const vector<SSAVariable>& sources, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_VAR_PHI, loc, 0, dest.var.ToIdentifier(), dest.version,
- sources.size() * 2, AddSSAVariableList(sources));
+ return AddExprWithLocation(
+ MLIL_VAR_PHI, loc, 0, dest.var.ToIdentifier(), dest.version, sources.size() * 2, AddSSAVariableList(sources));
}
-ExprId MediumLevelILFunction::MemoryPhi(size_t destMemVersion, const vector<size_t>& sourceMemVersions,
- const ILSourceLocation& loc)
+ExprId MediumLevelILFunction::MemoryPhi(
+ size_t destMemVersion, const vector<size_t>& sourceMemVersions, const ILSourceLocation& loc)
{
- return AddExprWithLocation(MLIL_MEM_PHI, loc, 0, destMemVersion,
- sourceMemVersions.size(), AddIndexList(sourceMemVersions));
+ return AddExprWithLocation(
+ MLIL_MEM_PHI, loc, 0, destMemVersion, sourceMemVersions.size(), AddIndexList(sourceMemVersions));
}