decompiler  1.0.0
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
SplitVarnode Class Reference

Public Member Functions

 SplitVarnode (int4 sz, uintb v)
 
 SplitVarnode (Varnode *l, Varnode *h)
 
void initAll (Varnode *w, Varnode *l, Varnode *h)
 
void initPartial (int4 sz, uintb v)
 
void initPartial (Varnode *l, Varnode *h)
 
bool inHandHi (Varnode *h)
 
bool inHandLo (Varnode *l)
 
bool inHandLoNoHi (Varnode *l)
 
bool inHandHiOut (Varnode *h)
 
bool inHandLoOut (Varnode *h)
 
bool isConstant (void) const
 
bool hasBothPieces (void) const
 
int4 getSize (void) const
 
VarnodegetLo (void) const
 
VarnodegetHi (void) const
 
VarnodegetWhole (void) const
 
PcodeOpgetDefPoint (void) const
 
BlockBasicgetDefBlock (void) const
 
uintb getValue (void) const
 
bool isWholeFeasible (PcodeOp *existop)
 
bool isWholePhiFeasible (FlowBlock *bl)
 
void findCreateWhole (Funcdata &data)
 
void findCreateOutputWhole (Funcdata &data)
 
void createJoinedWhole (Funcdata &data)
 
void buildLoFromWhole (Funcdata &data)
 
void buildHiFromWhole (Funcdata &data)
 
PcodeOpfindEarliestSplitPoint (void)
 
PcodeOpfindOutExist (void)
 

Static Public Member Functions

static bool adjacentOffsets (Varnode *vn1, Varnode *vn2, uintb size1)
 
static bool testContiguousLoad (PcodeOp *most, PcodeOp *least, bool allowfree, PcodeOp *&first, PcodeOp *&second, AddrSpace *&spc, int4 &sizeres)
 
static bool isAddrTiedContiguous (Varnode *lo, Varnode *hi, Address &res)
 
static void wholeList (Varnode *w, vector< SplitVarnode > &splitvec)
 
static void findCopies (const SplitVarnode &in, vector< SplitVarnode > &splitvec)
 
static void getTrueFalse (PcodeOp *boolop, bool flip, BlockBasic *&trueout, BlockBasic *&falseout)
 
static bool otherwiseEmpty (PcodeOp *branchop)
 
static bool verifyMultNegOne (PcodeOp *op)
 
static PcodeOpprepareBinaryOp (SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2)
 
static void createBinaryOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2, PcodeOp *existop, OpCode opc)
 
static PcodeOpprepareShiftOp (SplitVarnode &out, SplitVarnode &in)
 
static void createShiftOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in, Varnode *sa, PcodeOp *existop, OpCode opc)
 
static void replaceBoolOp (Funcdata &data, PcodeOp *boolop, SplitVarnode &in1, SplitVarnode &in2, OpCode opc)
 
static bool prepareBoolOp (SplitVarnode &in1, SplitVarnode &in2, PcodeOp *testop)
 
static void createBoolOp (Funcdata &data, PcodeOp *cbranch, SplitVarnode &in1, SplitVarnode &in2, OpCode opc)
 
static PcodeOppreparePhiOp (SplitVarnode &out, vector< SplitVarnode > &inlist)
 
static void createPhiOp (Funcdata &data, SplitVarnode &out, vector< SplitVarnode > &inlist, PcodeOp *existop)
 
static bool prepareIndirectOp (SplitVarnode &in, PcodeOp *affector)
 
static void replaceIndirectOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in, PcodeOp *affector)
 
static int4 applyRuleIn (SplitVarnode &in, Funcdata &data)
 

Private Member Functions

bool findWholeSplitToPieces (void)
 
bool findDefinitionPoint (void)
 
bool findWholeBuiltFromPieces (void)
 

Private Attributes

Varnodelo
 
Varnodehi
 
Varnodewhole
 
PcodeOpdefpoint
 
BlockBasicdefblock
 
uintb val
 
int4 wholesize
 

The documentation for this class was generated from the following files: