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

Classes

class  PatchRecord
 
class  ReplaceOp
 
class  ReplaceVarnode
 

Public Member Functions

 SubvariableFlow (Funcdata *f, Varnode *root, uintb mask, bool aggr, bool sext)
 
bool doTrace (void)
 
void doReplacement (void)
 

Private Member Functions

Address getReplacementAddress (ReplaceVarnode *rvn) const
 
ReplaceVarnodesetReplacement (Varnode *vn, uintb mask, bool &inworklist)
 
ReplaceOpcreateOp (OpCode opc, int4 numparam, ReplaceVarnode *outrvn)
 
ReplaceOpcreateOpDown (OpCode opc, int4 numparam, PcodeOp *op, ReplaceVarnode *inrvn, int4 slot)
 
void patchIndirect (PcodeOp *newop, PcodeOp *oldop, ReplaceVarnode *out)
 
bool tryCallPull (PcodeOp *op, ReplaceVarnode *rvn, int4 slot)
 
bool tryReturnPull (PcodeOp *op, ReplaceVarnode *rvn, int4 slot)
 
bool tryCallReturnPull (PcodeOp *op, ReplaceVarnode *rvn)
 
bool traceForward (ReplaceVarnode *rvn)
 
bool traceBackward (ReplaceVarnode *rvn)
 
bool traceForwardSext (ReplaceVarnode *rvn)
 
bool traceBackwardSext (ReplaceVarnode *rvn)
 
bool createLink (ReplaceOp *rop, uintb mask, int4 slot, Varnode *vn)
 
bool createCompareBridge (PcodeOp *op, ReplaceVarnode *inrvn, int4 slot, Varnode *othervn)
 
void addTerminalPatch (PcodeOp *pullop, ReplaceVarnode *rvn)
 
void addTerminalPatchSameOp (PcodeOp *pullop, ReplaceVarnode *rvn, int4 slot)
 
void addBooleanPatch (PcodeOp *pullop, ReplaceVarnode *rvn, int4 slot)
 
void addSuggestedPatch (ReplaceVarnode *rvn, PcodeOp *pushop, int4 sa)
 
void addComparePatch (ReplaceVarnode *in1, ReplaceVarnode *in2, PcodeOp *op)
 
ReplaceVarnodeaddConstant (ReplaceOp *rop, uintb mask, uint4 slot, uintb val)
 
void createNewOut (ReplaceOp *rop, uintb mask)
 
void replaceInput (ReplaceVarnode *rvn)
 
bool useSameAddress (ReplaceVarnode *rvn)
 
VarnodegetReplaceVarnode (ReplaceVarnode *rvn)
 
bool processNextWork (void)
 

Static Private Member Functions

static int4 doesOrSet (PcodeOp *orop, uintb mask)
 
static int4 doesAndClear (PcodeOp *andop, uintb mask)
 

Private Attributes

int4 flowsize
 
int4 bitsize
 
bool returnsTraversed
 
bool aggressive
 
bool sextrestrictions
 
Funcdatafd
 
map< Varnode *, ReplaceVarnodevarmap
 
list< ReplaceVarnodenewvarlist
 
list< ReplaceOpoplist
 
list< PatchRecordpatchlist
 
vector< ReplaceVarnode * > worklist
 
int4 pullcount
 

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