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
 
Varnode * getLo (void) const
 
Varnode * getHi (void) const
 
Varnode * getWhole (void) const
 
PcodeOp * getDefPoint (void) const
 
BlockBasic * getDefBlock (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)
 
PcodeOp * findEarliestSplitPoint (void)
 
PcodeOp * findOutExist (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 PcodeOp * prepareBinaryOp (SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2)
 
static void createBinaryOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2, PcodeOp *existop, OpCode opc)
 
static PcodeOp * prepareShiftOp (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 PcodeOp * preparePhiOp (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

Varnode * lo
 
Varnode * hi
 
Varnode * whole
 
PcodeOp * defpoint
 
BlockBasic * defblock
 
uintb val
 
int4 wholesize
 

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