voidComputeGlobalSets(void);// compute LiveOut, Kill sets for function
boolComputeInOutRegs(boolInheritPass,bool&WritesMem,bool&CallChainNonReturning);// compute InputRegs and OutputRegs, only inherit from callees on InheritPass
voidBuildLoopingStringMemExprs(SMPBasicBlock*CurrBlock,SMPInstr*CurrInst);// Build lower and upper bounds exprs for memory writes in looping string opcode
voidFindMatchingMemDEFAddrs(STARS_ea_tUseAddr,SMPBasicBlock*CurrBlock,STARSOpndTypePtr&MemUseOp,std::list<STARS_ea_t>&MemDefAddrs);// Fill MemDefAddrs with inst addrs that DEF MemUseOp, tracing back from UseAddr.
voidAnalyzeFunc(void);// Analyze all instructions in function
voidAdvancedAnalysis(void);// Analyses that fix IDA stack frame info, sync RTLs with DEFs and USEs, Live Variable Analysis
boolAdvancedAnalysis2(void);// fix call inst DEFs and USEs; return true if changes
boolElevateRightSide(STARSExpression*ParentExpr);// Expr simplifies to RightExpr or RightOperand, so raise it into ParentExpr; return true if RightOperand
boolElevateLeftSide(STARSExpression*ParentExpr);// Expr simplifies to LeftExpr or LeftOperand, so raise it into ParentExpr; return true if LeftOperand
boolExpandOperand(std::size_tLoopIndex,boolLeft,boolStopOnIV,STARS_ea_tUseAddr,boolStopOnLoopBoundary,bool&StoppedOnIV);// return false if expansion is forced to stop before constant DEF or InArg DEF or IndVAr.
boolExpandOperandHelper(STARS_ea_tDefAddr,STARSOpndTypePtr&SearchOp,std::size_tLoopIndex,boolLeft,boolStopOnIV,boolStopOnLoopBoundary,bool&StoppedOnIV);// recursive helper for ExpandOperand()