From 6812c973c9fa9b4ad642ab81856c05f87bd6fcc4 Mon Sep 17 00:00:00 2001 From: KyleMiles Date: Thu, 27 Jan 2022 22:43:28 -0500 Subject: Format All Files --- highlevelilinstruction.h | 901 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 657 insertions(+), 244 deletions(-) (limited to 'highlevelilinstruction.h') diff --git a/highlevelilinstruction.h b/highlevelilinstruction.h index 763c8221..6947479c 100644 --- a/highlevelilinstruction.h +++ b/highlevelilinstruction.h @@ -24,9 +24,9 @@ #include #include #ifdef BINARYNINJACORE_LIBRARY -#include "variable.h" + #include "variable.h" #else -#include "binaryninjaapi.h" + #include "binaryninjaapi.h" #endif #include "mediumlevelilinstruction.h" @@ -39,7 +39,8 @@ namespace BinaryNinja class HighLevelILFunction; template - struct HighLevelILInstructionAccessor {}; + struct HighLevelILInstructionAccessor + {}; struct HighLevelILInstruction; struct HighLevelILConstantInstruction; @@ -103,24 +104,23 @@ namespace BinaryNinja SourceMemoryVersionsHighLevelOperandUsage, DestMemoryVersionHighLevelOperandUsage }; -} +} // namespace BinaryNinjaCore -namespace std -{ - template<> struct hash +namespace std { + template <> + struct hash { typedef BNHighLevelILOperation argument_type; typedef int result_type; - result_type operator()(argument_type const& value) const - { - return (result_type)value; - } + result_type operator()(argument_type const& value) const { return (result_type)value; } }; #ifdef BINARYNINJACORE_LIBRARY - template<> struct hash + template <> + struct hash #else - template<> struct hash + template <> + struct hash #endif { #ifdef BINARYNINJACORE_LIBRARY @@ -129,12 +129,9 @@ namespace std typedef BinaryNinja::HighLevelILOperandUsage argument_type; #endif typedef int result_type; - result_type operator()(argument_type const& value) const - { - return (result_type)value; - } + result_type operator()(argument_type const& value) const { return (result_type)value; } }; -} +} // namespace std #ifdef BINARYNINJACORE_LIBRARY namespace BinaryNinjaCore @@ -143,19 +140,19 @@ namespace BinaryNinja #endif { #ifdef BINARYNINJACORE_LIBRARY -#define _STD_VECTOR vector -#define _STD_SET set -#define _STD_UNORDERED_MAP unordered_map + #define _STD_VECTOR vector + #define _STD_SET set + #define _STD_UNORDERED_MAP unordered_map #else -#define _STD_VECTOR std::vector -#define _STD_SET std::set -#define _STD_UNORDERED_MAP std::unordered_map + #define _STD_VECTOR std::vector + #define _STD_SET std::set + #define _STD_UNORDERED_MAP std::unordered_map #endif - class HighLevelILInstructionAccessException: public std::exception + class HighLevelILInstructionAccessException : public std::exception { - public: - HighLevelILInstructionAccessException(): std::exception() {} + public: + HighLevelILInstructionAccessException() : std::exception() {} virtual const char* what() const NOEXCEPT { return "invalid access to HLIL instruction"; } }; @@ -181,7 +178,7 @@ namespace BinaryNinja ListIterator m_start; - public: + public: typedef ListIterator const_iterator; HighLevelILIntegerList(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, size_t count); @@ -202,13 +199,17 @@ namespace BinaryNinja bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } bool operator<(const ListIterator& a) const { return pos < a.pos; } - ListIterator& operator++() { ++pos; return *this; } + ListIterator& operator++() + { + ++pos; + return *this; + } size_t operator*(); }; HighLevelILIntegerList m_list; - public: + public: typedef ListIterator const_iterator; HighLevelILIndexList(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, size_t count); @@ -231,7 +232,11 @@ namespace BinaryNinja bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } bool operator<(const ListIterator& a) const { return pos < a.pos; } - ListIterator& operator++() { ++pos; return *this; } + ListIterator& operator++() + { + ++pos; + return *this; + } const HighLevelILInstruction operator*(); }; @@ -239,11 +244,11 @@ namespace BinaryNinja bool m_ast; size_t m_instructionIndex; - public: + public: typedef ListIterator const_iterator; - HighLevelILInstructionList(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, - size_t count, bool asFullAst, size_t instructionIndex); + HighLevelILInstructionList(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, size_t count, + bool asFullAst, size_t instructionIndex); const_iterator begin() const; const_iterator end() const; @@ -261,13 +266,18 @@ namespace BinaryNinja bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } bool operator<(const ListIterator& a) const { return pos < a.pos; } - ListIterator& operator++() { ++pos; ++pos; return *this; } + ListIterator& operator++() + { + ++pos; + ++pos; + return *this; + } const SSAVariable operator*(); }; HighLevelILIntegerList m_list; - public: + public: typedef ListIterator const_iterator; HighLevelILSSAVariableList(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, size_t count); @@ -280,7 +290,7 @@ namespace BinaryNinja operator _STD_VECTOR() const; }; - struct HighLevelILInstructionBase: public BNHighLevelILInstruction + struct HighLevelILInstructionBase : public BNHighLevelILInstruction { #ifdef BINARYNINJACORE_LIBRARY HighLevelILFunction* function; @@ -291,10 +301,9 @@ namespace BinaryNinja bool ast; static _STD_UNORDERED_MAP operandTypeForUsage; - static _STD_UNORDERED_MAP> operationOperandUsage; - static _STD_UNORDERED_MAP> operationOperandIndex; + static _STD_UNORDERED_MAP> operationOperandUsage; + static _STD_UNORDERED_MAP> + operationOperandIndex; HighLevelILOperandList GetOperands() const; @@ -314,8 +323,8 @@ namespace BinaryNinja void UpdateRawOperandAsExprList(size_t operandIndex, const _STD_VECTOR& exprs); RegisterValue GetValue() const; - PossibleValueSet GetPossibleValues(const _STD_SET& options = - _STD_SET()) const; + PossibleValueSet GetPossibleValues( + const _STD_SET& options = _STD_SET()) const; Confidence> GetType() const; size_t GetSSAExprIndex() const; @@ -347,14 +356,8 @@ namespace BinaryNinja throw HighLevelILInstructionAccessException(); return *(HighLevelILInstructionAccessor*)this; } - HighLevelILOneOperandInstruction& AsOneOperand() - { - return *(HighLevelILOneOperandInstruction*)this; - } - HighLevelILTwoOperandInstruction& AsTwoOperand() - { - return *(HighLevelILTwoOperandInstruction*)this; - } + HighLevelILOneOperandInstruction& AsOneOperand() { return *(HighLevelILOneOperandInstruction*)this; } + HighLevelILTwoOperandInstruction& AsTwoOperand() { return *(HighLevelILTwoOperandInstruction*)this; } HighLevelILTwoOperandWithCarryInstruction& AsTwoOperandWithCarry() { return *(HighLevelILTwoOperandWithCarryInstruction*)this; @@ -385,77 +388,285 @@ namespace BinaryNinja } }; - struct HighLevelILInstruction: public HighLevelILInstructionBase + struct HighLevelILInstruction : public HighLevelILInstructionBase { HighLevelILInstruction(); - HighLevelILInstruction(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, - size_t expr, bool asFullAst, size_t instructionIndex); + HighLevelILInstruction(HighLevelILFunction* func, const BNHighLevelILInstruction& instr, size_t expr, + bool asFullAst, size_t instructionIndex); HighLevelILInstruction(const HighLevelILInstructionBase& instr); void VisitExprs(const std::function& func) const; ExprId CopyTo(HighLevelILFunction* dest) const; ExprId CopyTo(HighLevelILFunction* dest, - const std::function& subExprHandler) const; + const std::function& subExprHandler) const; bool operator<(const HighLevelILInstruction& other) const; bool operator==(const HighLevelILInstruction& other) const; bool operator!=(const HighLevelILInstruction& other) const; // Templated accessors for instruction operands, use these for efficient access to a known instruction - template HighLevelILInstruction GetSourceExpr() const { return As().GetSourceExpr(); } - template Variable GetVariable() const { return As().GetVariable(); } - template Variable GetDestVariable() const { return As().GetDestVariable(); } - template SSAVariable GetSSAVariable() const { return As().GetSSAVariable(); } - template SSAVariable GetDestSSAVariable() const { return As().GetDestSSAVariable(); } - template HighLevelILInstruction GetDestExpr() const { return As().GetDestExpr(); } - template HighLevelILInstruction GetLeftExpr() const { return As().GetLeftExpr(); } - template HighLevelILInstruction GetRightExpr() const { return As().GetRightExpr(); } - template HighLevelILInstruction GetCarryExpr() const { return As().GetCarryExpr(); } - template HighLevelILInstruction GetIndexExpr() const { return As().GetIndexExpr(); } - template HighLevelILInstruction GetConditionPhiExpr() const { return As().GetConditionPhiExpr(); } - template HighLevelILInstruction GetConditionExpr() const { return As().GetConditionExpr(); } - template HighLevelILInstruction GetTrueExpr() const { return As().GetTrueExpr(); } - template HighLevelILInstruction GetFalseExpr() const { return As().GetFalseExpr(); } - template HighLevelILInstruction GetLoopExpr() const { return As().GetLoopExpr(); } - template HighLevelILInstruction GetInitExpr() const { return As().GetInitExpr(); } - template HighLevelILInstruction GetUpdateExpr() const { return As().GetUpdateExpr(); } - template HighLevelILInstruction GetDefaultExpr() const { return As().GetDefaultExpr(); } - template HighLevelILInstruction GetHighExpr() const { return As().GetHighExpr(); } - template HighLevelILInstruction GetLowExpr() const { return As().GetLowExpr(); } - template uint64_t GetOffset() const { return As().GetOffset(); } - template size_t GetMemberIndex() const { return As().GetMemberIndex(); } - template int64_t GetConstant() const { return As().GetConstant(); } - template int64_t GetVector() const { return As().GetVector(); } - template uint32_t GetIntrinsic() const { return As().GetIntrinsic(); } - template uint64_t GetTarget() const { return As().GetTarget(); } - template HighLevelILInstructionList GetParameterExprs() const { return As().GetParameterExprs(); } - template HighLevelILInstructionList GetSourceExprs() const { return As().GetSourceExprs(); } - template HighLevelILInstructionList GetDestExprs() const { return As().GetDestExprs(); } - template HighLevelILInstructionList GetBlockExprs() const { return As().GetBlockExprs(); } - template HighLevelILInstructionList GetCases() const { return As().GetCases(); } - template HighLevelILInstructionList GetValueExprs() const { return As().GetValueExprs(); } - template HighLevelILSSAVariableList GetSourceSSAVariables() const { return As().GetSourceSSAVariables(); } - template size_t GetSourceMemoryVersion() const { return As().GetSourceMemoryVersion(); } - template HighLevelILIndexList GetSourceMemoryVersions() const { return As().GetSourceMemoryVersions(); } - template size_t GetDestMemoryVersion() const { return As().GetDestMemoryVersion(); } - - template void SetSSAVersion(size_t version) { As().SetSSAVersion(version); } - template void SetDestSSAVersion(size_t version) { As().SetDestSSAVersion(version); } - template void SetParameterExprs(const _STD_VECTOR& params) { As().SetParameterExprs(params); } - template void SetParameterExprs(const _STD_VECTOR& params) { As().SetParameterExprs(params); } - template void SetSourceExprs(const _STD_VECTOR& params) { As().SetSourceExprs(params); } - template void SetSourceExprs(const _STD_VECTOR& params) { As().SetSourceExprs(params); } - template void SetDestExprs(const _STD_VECTOR& params) { As().SetDestExprs(params); } - template void SetDestExprs(const _STD_VECTOR& params) { As().SetDestExprs(params); } - template void SetBlockExprs(const _STD_VECTOR& params) { As().SetBlockExprs(params); } - template void SetBlockExprs(const _STD_VECTOR& params) { As().SetBlockExprs(params); } - template void SetCases(const _STD_VECTOR& params) { As().SetCases(params); } - template void SetCases(const _STD_VECTOR& params) { As().SetCases(params); } - template void SetSourceSSAVariables(const _STD_VECTOR& vars) { As().SetSourceSSAVariables(vars); } - template void SetSourceMemoryVersion(size_t version) { return As().SetSourceMemoryVersion(version); } - template void SetDestMemoryVersion(size_t version) { return As().SetDestMemoryVersion(version); } - template void SetTarget(uint64_t target) { As().SetTarget(target); } + template + HighLevelILInstruction GetSourceExpr() const + { + return As().GetSourceExpr(); + } + template + Variable GetVariable() const + { + return As().GetVariable(); + } + template + Variable GetDestVariable() const + { + return As().GetDestVariable(); + } + template + SSAVariable GetSSAVariable() const + { + return As().GetSSAVariable(); + } + template + SSAVariable GetDestSSAVariable() const + { + return As().GetDestSSAVariable(); + } + template + HighLevelILInstruction GetDestExpr() const + { + return As().GetDestExpr(); + } + template + HighLevelILInstruction GetLeftExpr() const + { + return As().GetLeftExpr(); + } + template + HighLevelILInstruction GetRightExpr() const + { + return As().GetRightExpr(); + } + template + HighLevelILInstruction GetCarryExpr() const + { + return As().GetCarryExpr(); + } + template + HighLevelILInstruction GetIndexExpr() const + { + return As().GetIndexExpr(); + } + template + HighLevelILInstruction GetConditionPhiExpr() const + { + return As().GetConditionPhiExpr(); + } + template + HighLevelILInstruction GetConditionExpr() const + { + return As().GetConditionExpr(); + } + template + HighLevelILInstruction GetTrueExpr() const + { + return As().GetTrueExpr(); + } + template + HighLevelILInstruction GetFalseExpr() const + { + return As().GetFalseExpr(); + } + template + HighLevelILInstruction GetLoopExpr() const + { + return As().GetLoopExpr(); + } + template + HighLevelILInstruction GetInitExpr() const + { + return As().GetInitExpr(); + } + template + HighLevelILInstruction GetUpdateExpr() const + { + return As().GetUpdateExpr(); + } + template + HighLevelILInstruction GetDefaultExpr() const + { + return As().GetDefaultExpr(); + } + template + HighLevelILInstruction GetHighExpr() const + { + return As().GetHighExpr(); + } + template + HighLevelILInstruction GetLowExpr() const + { + return As().GetLowExpr(); + } + template + uint64_t GetOffset() const + { + return As().GetOffset(); + } + template + size_t GetMemberIndex() const + { + return As().GetMemberIndex(); + } + template + int64_t GetConstant() const + { + return As().GetConstant(); + } + template + int64_t GetVector() const + { + return As().GetVector(); + } + template + uint32_t GetIntrinsic() const + { + return As().GetIntrinsic(); + } + template + uint64_t GetTarget() const + { + return As().GetTarget(); + } + template + HighLevelILInstructionList GetParameterExprs() const + { + return As().GetParameterExprs(); + } + template + HighLevelILInstructionList GetSourceExprs() const + { + return As().GetSourceExprs(); + } + template + HighLevelILInstructionList GetDestExprs() const + { + return As().GetDestExprs(); + } + template + HighLevelILInstructionList GetBlockExprs() const + { + return As().GetBlockExprs(); + } + template + HighLevelILInstructionList GetCases() const + { + return As().GetCases(); + } + template + HighLevelILInstructionList GetValueExprs() const + { + return As().GetValueExprs(); + } + template + HighLevelILSSAVariableList GetSourceSSAVariables() const + { + return As().GetSourceSSAVariables(); + } + template + size_t GetSourceMemoryVersion() const + { + return As().GetSourceMemoryVersion(); + } + template + HighLevelILIndexList GetSourceMemoryVersions() const + { + return As().GetSourceMemoryVersions(); + } + template + size_t GetDestMemoryVersion() const + { + return As().GetDestMemoryVersion(); + } + + template + void SetSSAVersion(size_t version) + { + As().SetSSAVersion(version); + } + template + void SetDestSSAVersion(size_t version) + { + As().SetDestSSAVersion(version); + } + template + void SetParameterExprs(const _STD_VECTOR& params) + { + As().SetParameterExprs(params); + } + template + void SetParameterExprs(const _STD_VECTOR& params) + { + As().SetParameterExprs(params); + } + template + void SetSourceExprs(const _STD_VECTOR& params) + { + As().SetSourceExprs(params); + } + template + void SetSourceExprs(const _STD_VECTOR& params) + { + As().SetSourceExprs(params); + } + template + void SetDestExprs(const _STD_VECTOR& params) + { + As().SetDestExprs(params); + } + template + void SetDestExprs(const _STD_VECTOR& params) + { + As().SetDestExprs(params); + } + template + void SetBlockExprs(const _STD_VECTOR& params) + { + As().SetBlockExprs(params); + } + template + void SetBlockExprs(const _STD_VECTOR& params) + { + As().SetBlockExprs(params); + } + template + void SetCases(const _STD_VECTOR& params) + { + As().SetCases(params); + } + template + void SetCases(const _STD_VECTOR& params) + { + As().SetCases(params); + } + template + void SetSourceSSAVariables(const _STD_VECTOR& vars) + { + As().SetSourceSSAVariables(vars); + } + template + void SetSourceMemoryVersion(size_t version) + { + return As().SetSourceMemoryVersion(version); + } + template + void SetDestMemoryVersion(size_t version) + { + return As().SetDestMemoryVersion(version); + } + template + void SetTarget(uint64_t target) + { + As().SetTarget(target); + } bool GetOperandIndexForUsage(HighLevelILOperandUsage usage, size_t& operandIndex) const; @@ -506,9 +717,8 @@ namespace BinaryNinja HighLevelILOperandType m_type; size_t m_operandIndex; - public: - HighLevelILOperand(const HighLevelILInstruction& instr, HighLevelILOperandUsage usage, - size_t operandIndex); + public: + HighLevelILOperand(const HighLevelILInstruction& instr, HighLevelILOperandUsage usage, size_t operandIndex); HighLevelILOperandType GetType() const { return m_type; } HighLevelILOperandUsage GetUsage() const { return m_usage; } @@ -533,7 +743,11 @@ namespace BinaryNinja bool operator==(const ListIterator& a) const { return pos == a.pos; } bool operator!=(const ListIterator& a) const { return pos != a.pos; } bool operator<(const ListIterator& a) const { return pos < a.pos; } - ListIterator& operator++() { ++pos; return *this; } + ListIterator& operator++() + { + ++pos; + return *this; + } const HighLevelILOperand operator*(); }; @@ -541,12 +755,12 @@ namespace BinaryNinja const _STD_VECTOR& m_usageList; const _STD_UNORDERED_MAP& m_operandIndexMap; - public: + public: typedef ListIterator const_iterator; HighLevelILOperandList(const HighLevelILInstruction& instr, - const _STD_VECTOR& usageList, - const _STD_UNORDERED_MAP& operandIndexMap); + const _STD_VECTOR& usageList, + const _STD_UNORDERED_MAP& operandIndexMap); const_iterator begin() const; const_iterator end() const; @@ -556,23 +770,23 @@ namespace BinaryNinja operator _STD_VECTOR() const; }; - struct HighLevelILConstantInstruction: public HighLevelILInstructionBase + struct HighLevelILConstantInstruction : public HighLevelILInstructionBase { int64_t GetConstant() const { return GetRawOperandAsInteger(0); } }; - struct HighLevelILOneOperandInstruction: public HighLevelILInstructionBase + struct HighLevelILOneOperandInstruction : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } }; - struct HighLevelILTwoOperandInstruction: public HighLevelILInstructionBase + struct HighLevelILTwoOperandInstruction : public HighLevelILInstructionBase { HighLevelILInstruction GetLeftExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetRightExpr() const { return GetRawOperandAsExpr(1); } }; - struct HighLevelILTwoOperandWithCarryInstruction: public HighLevelILInstructionBase + struct HighLevelILTwoOperandWithCarryInstruction : public HighLevelILInstructionBase { HighLevelILInstruction GetLeftExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetRightExpr() const { return GetRawOperandAsExpr(1); } @@ -582,46 +796,54 @@ namespace BinaryNinja // Implementations of each instruction to fetch the correct operand value for the valid operands, these // are derived from HighLevelILInstructionBase so that invalid operand accessor functions will generate // a compiler error. - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetBlockExprs() const { return GetRawOperandAsExprList(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetTrueExpr() const { return GetRawOperandAsExpr(1); } HighLevelILInstruction GetFalseExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetConditionPhiExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(1); } HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetConditionPhiExpr() const { return GetRawOperandAsExpr(1); } HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetInitExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(1); } HighLevelILInstruction GetUpdateExpr() const { return GetRawOperandAsExpr(2); } HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(3); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetInitExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetConditionPhiExpr() const { return GetRawOperandAsExpr(1); } @@ -629,60 +851,71 @@ namespace BinaryNinja HighLevelILInstruction GetUpdateExpr() const { return GetRawOperandAsExpr(3); } HighLevelILInstruction GetLoopExpr() const { return GetRawOperandAsExpr(4); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetConditionExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetDefaultExpr() const { return GetRawOperandAsExpr(1); } HighLevelILInstructionList GetCases() const { return GetRawOperandAsExprList(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetValueExprs() const { return GetRawOperandAsExprList(0); } HighLevelILInstruction GetTrueExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { uint64_t GetTarget() const { return GetRawOperandAsInteger(0); } void SetTarget(uint64_t target) { UpdateRawOperandAsInteger(0, target); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { uint64_t GetTarget() const { return GetRawOperandAsInteger(0); } void SetTarget(uint64_t target) { UpdateRawOperandAsInteger(0, target); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetSourceExprs() const { return GetRawOperandAsExprList(0); } void SetSourceExprs(const _STD_VECTOR& exprs) { UpdateRawOperandAsExprList(0, exprs); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { Variable GetVariable() const { return GetRawOperandAsVariable(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { Variable GetDestVariable() const { return GetRawOperandAsVariable(0); } HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { SSAVariable GetDestSSAVariable() const { return GetRawOperandAsSSAVariable(0); } void SetDestSSAVersion(size_t version) { UpdateRawOperand(1, version); } HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetDestExprs() const { return GetRawOperandAsExprList(0); } HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } size_t GetDestMemoryVersion() const { return GetRawOperandAsIndex(1); } @@ -691,7 +924,8 @@ namespace BinaryNinja size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(3); } void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(3, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetDestExprs() const { return GetRawOperandAsExprList(0); } size_t GetDestMemoryVersion() const { return GetRawOperandAsIndex(2); } @@ -701,25 +935,29 @@ namespace BinaryNinja void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(4, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } uint64_t GetOffset() const { return GetRawOperandAsInteger(1); } size_t GetMemberIndex() const { return GetRawOperandAsIndex(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } uint64_t GetOffset() const { return GetRawOperandAsInteger(1); } size_t GetMemberIndex() const { return GetRawOperandAsIndex(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(1); } void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(1, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(1); } @@ -727,66 +965,78 @@ namespace BinaryNinja uint64_t GetOffset() const { return GetRawOperandAsInteger(2); } size_t GetMemberIndex() const { return GetRawOperandAsIndex(3); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetIndexExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetSourceExpr() const { return GetRawOperandAsExpr(0); } size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(1); } void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(1, version); } HighLevelILInstruction GetIndexExpr() const { return GetRawOperandAsExpr(2); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetHighExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstruction GetLowExpr() const { return GetRawOperandAsExpr(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { Variable GetVariable() const { return GetRawOperandAsVariable(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { SSAVariable GetSSAVariable() const { return GetRawOperandAsSSAVariable(0); } void SetSSAVersion(size_t version) { UpdateRawOperand(1, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { SSAVariable GetDestSSAVariable() const { return GetRawOperandAsSSAVariable(0); } HighLevelILSSAVariableList GetSourceSSAVariables() const { return GetRawOperandAsSSAVariableList(2); } void SetSourceSSAVariables(const _STD_VECTOR& vars) { UpdateRawOperandAsSSAVariableList(2, vars); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { size_t GetDestMemoryVersion() const { return GetRawOperandAsIndex(0); } void SetDestMemoryVersion(size_t version) { UpdateRawOperand(0, version); } HighLevelILIndexList GetSourceMemoryVersions() const { return GetRawOperandAsIndexList(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstruction GetDestExpr() const { return GetRawOperandAsExpr(0); } HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(1); } @@ -795,7 +1045,8 @@ namespace BinaryNinja size_t GetSourceMemoryVersion() const { return GetRawOperandAsIndex(4); } void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(4, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(0); } size_t GetDestMemoryVersion() const { return GetRawOperandAsIndex(2); } @@ -804,12 +1055,14 @@ namespace BinaryNinja void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(3, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { uint32_t GetIntrinsic() const { return (uint32_t)GetRawOperandAsInteger(0); } HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { uint32_t GetIntrinsic() const { return (uint32_t)GetRawOperandAsInteger(0); } HighLevelILInstructionList GetParameterExprs() const { return GetRawOperandAsExprList(1); } @@ -819,102 +1072,262 @@ namespace BinaryNinja void SetSourceMemoryVersion(size_t version) { UpdateRawOperand(4, version); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase { int64_t GetVector() const { return GetRawOperandAsInteger(0); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILConstantInstruction + template <> + struct HighLevelILInstructionAccessor : public HighLevelILConstantInstruction { int64_t GetConstant() const { return GetRawOperandAsInteger(0); } int64_t GetOffset() const { return GetRawOperandAsInteger(1); } }; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILInstructionBase {}; - - template <> struct HighLevelILInstructionAccessor: public HighLevelILConstantInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILConstantInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILConstantInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILConstantInstruction {}; - - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandInstruction {}; - - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandWithCarryInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandWithCarryInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandWithCarryInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILTwoOperandWithCarryInstruction {}; - - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; - template <> struct HighLevelILInstructionAccessor: public HighLevelILOneOperandInstruction {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILInstructionBase + {}; + + template <> + struct HighLevelILInstructionAccessor : public HighLevelILConstantInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILConstantInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILConstantInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILConstantInstruction + {}; + + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandInstruction + {}; + + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandWithCarryInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandWithCarryInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandWithCarryInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILTwoOperandWithCarryInstruction + {}; + + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; + template <> + struct HighLevelILInstructionAccessor : public HighLevelILOneOperandInstruction + {}; #undef _STD_VECTOR #undef _STD_SET #undef _STD_UNORDERED_MAP -} +} // namespace BinaryNinjaCore -- cgit v1.3.1