diff --git a/include/base/SMPFunction.h b/include/base/SMPFunction.h
index 9d75c85c94bd021fd3df232db3e3ece935bc3adc..06e410058a25e820bdc97b107a23734b89d46a18 100644
--- a/include/base/SMPFunction.h
+++ b/include/base/SMPFunction.h
@@ -268,7 +268,7 @@ public:
 	inline void SetHasHashingCode(bool Hashes) { HasHashingCode = Hashes; };
 	void AddCallSource(STARS_ea_t addr); // Add a caller to the list of all callers of this function.
 	bool AddDirectCallTarget(STARS_ea_t addr); // Add a direct call target; return true if new target, false if target already added
-	bool RemoveDirectCallTarget(STARS_ea_t TargetAddr); // Remove TargetAddr from DirectCallTargets and AllCallTargets.
+	std::set<STARS_ea_t>::iterator RemoveDirectCallTarget(STARS_ea_t TargetAddr); // Remove TargetAddr from DirectCallTargets and AllCallTargets.
 	bool RemoveIndirectCallTarget(STARS_ea_t TargetAddr); // Remove TargetAddr from IndirectCallTargets and AllCallTargets.
 	void AddLeaOperand(STARS_ea_t addr, STARSOpndTypePtr LeaOperand); // add map entry to LeaInstOpMap
 	void AddNormalizedStackOperand(STARSOpndTypePtr OldOp, STARS_ea_t InstAddr, STARSOpndTypePtr NormalizedOp); // add to map for RTL lookup later
@@ -311,9 +311,9 @@ public:
 	inline bool HasReducibleControlFlow(void) const { return HasReducibleCFG; };
 	inline bool HasPushAfterFrameAlloc(void) const { return PushAfterLocalVarAlloc; };
 	inline bool IsLinkerStub(void) const { return LinkerStub; };
-//	inline bool IsAddrInFunc(STARS_ea_t addr) { return ((addr >= FuncInfo->get_startEA()) && (addr <= FuncInfo->get_endEA())); }
+//	inline bool IsInstIDInFunc(STARS_ea_t addr) { return ((addr >= FuncInfo->get_startEA()) && (addr < FuncInfo->get_endEA())); }
 	inline bool IsLibFunc(void) const { return LibFunc; };
-	inline bool IsLeaf(void) const { return (!IndirectCalls && DirectCallTargets.empty()); };
+	inline bool IsLeaf(void) const { return (!IndirectCalls && (DirectCallTargets.empty() || ((1 == DirectCallTargets.size()) && IsDirectlyRecursive()))); };
 	inline bool IsSafe(void) const { return SafeFunc; };  // safe to follow stack access DEF-USE chains
 	inline bool IsSpecSafe(void) const { return SpecSafeFunc; }; // safe if we can resolve indirect calls at run time in mmStrata
 	inline bool IsSafeCallee(void) const { return SafeCallee; };
diff --git a/include/interfaces/abstract/STARSFunction.h b/include/interfaces/abstract/STARSFunction.h
index 5a669f14375920e3af53efd7863034bb1c8735ca..795ea261e15a26b67592747326bf56fcee9793ae 100644
--- a/include/interfaces/abstract/STARSFunction.h
+++ b/include/interfaces/abstract/STARSFunction.h
@@ -8,27 +8,28 @@ class SMPFunction;
 class STARS_Function_t
 {
 	public:
-        virtual char* GetFunctionName(const char* name, const int len) const =0;
-        virtual STARS_ea_t get_startEA()=0;
-        virtual STARS_ea_t get_endEA()=0;
-		virtual std::size_t GetFrameSize()=0;
+		virtual char* GetFunctionName(const char* name, const int len) const = 0;
+		virtual STARS_ea_t get_startEA() = 0;
+		virtual STARS_ea_t get_endEA() = 0;
+		virtual std::size_t GetFrameSize() = 0;
 		virtual void SetFrameSize(std::size_t size) = 0;
 		virtual std::size_t GetSavedRegSize() = 0;
 		virtual std::size_t GetIncomingArgumentSize() = 0;
 		virtual std::size_t GetFrameReturnAddressSize() = 0;
-        virtual bool FunctionUsesFP()=0;
-        virtual bool IsStaticFunction()=0;
-        virtual bool IsLibraryFunction()=0;
-        virtual bool IsStackPointerAnalyzed()=0;
-		virtual STARS_sval_t get_spd(STARS_ea_t ea)=0;
-		virtual bool HasReturnPoints()=0;
-		virtual bool IsMultiEntry()=0;
-		virtual void MarkSharedChunks()=0;
-		virtual bool HasSharedChunks() const =0;
-		virtual void SetSharedChunks(bool v) =0;
-        virtual void UpdateXrefs()=0;
-		virtual void BuildFuncIR(SMPFunction *func)=0;
-        virtual bool FindDistantCodeFragment(SMPFunction* func, STARS_ea_t TargetAddr)=0;
+		virtual bool IsInstIDInFunc(STARS_ea_t InstID) = 0;
+		virtual bool FunctionUsesFP() = 0;
+		virtual bool IsStaticFunction() = 0;
+		virtual bool IsLibraryFunction() = 0;
+		virtual bool IsStackPointerAnalyzed() = 0;
+		virtual STARS_sval_t get_spd(STARS_ea_t ea) = 0;
+		virtual bool HasReturnPoints() = 0;
+		virtual bool IsMultiEntry() = 0;
+		virtual void MarkSharedChunks() = 0;
+		virtual bool HasSharedChunks() const = 0;
+		virtual void SetSharedChunks(bool v) = 0;
+		virtual void UpdateXrefs() = 0;
+		virtual void BuildFuncIR(SMPFunction *func) = 0;
+		virtual bool FindDistantCodeFragment(SMPFunction* func, STARS_ea_t TargetAddr) = 0;
 		virtual void FillInLocalVarTable(SMPFunction *CurrFunc) = 0; // get stack frame fine-grained info
 		virtual bool AnalyzeInstAsCallTarget(SMPFunction *CurrFunc, bool &IsIndirectCallTarget, bool &IsTailCallTarget) = 0; // return success or failure of analysis
 		virtual bool IsChunkUnshared(STARS_ea_t ChunkAddr, STARS_ea_t FuncHeadStart, STARS_ea_t FuncHeadEnd) = 0;
diff --git a/include/interfaces/idapro/STARSFunction.h b/include/interfaces/idapro/STARSFunction.h
index b6ffbf87ebcfc3969f39a36045cfbdf9f607d0d4..47ef5c38e605cbeb1b5a63098023fe567789973a 100644
--- a/include/interfaces/idapro/STARSFunction.h
+++ b/include/interfaces/idapro/STARSFunction.h
@@ -44,6 +44,7 @@ public:
 	virtual bool HasReturnPoints() { return the_func->does_return(); }
 	virtual bool IsMultiEntry();
 	virtual bool IsChunkUnshared(STARS_ea_t ChunkAddr, STARS_ea_t FuncHeadStart, STARS_ea_t FuncHeadEnd);
+	virtual bool IsInstIDInFunc(STARS_ea_t InstID);
 
 	// Analysis methods
 	virtual void MarkSharedChunks();
diff --git a/include/interfaces/irdb/STARSFunction.h b/include/interfaces/irdb/STARSFunction.h
index ebacbcdb3489b3c6b91390bbf5c8d643e28c3f10..90c0ce69f596c3f1325a11a6b4331ca5db7abcfb 100644
--- a/include/interfaces/irdb/STARSFunction.h
+++ b/include/interfaces/irdb/STARSFunction.h
@@ -2,7 +2,6 @@
 #define STARS_IRDB_Function_h
 
 #include "interfaces/STARSTypes.h"
-#include <libIRDB-core.hpp>
 
 class SMPFunction;
 
@@ -10,54 +9,47 @@ class STARS_IRDB_Function_t : public STARS_Function_t
 {
 public:
 
-	STARS_IRDB_Function_t(libIRDB::Function_t* f): the_func(f) 
-	{ 
-	}
-
 	// obvious
-        virtual char* GetFunctionName(const char* name, const int len) const { assert(0); }
+	virtual char* GetFunctionName(const char* name, const int len) const =0;
 
 	// get entry point of function
-        virtual STARS_ea_t get_startEA(){ return the_func->GetEntryPoint()->GetBaseID(); }
+	virtual STARS_ea_t get_startEA()=0;
 
 	// clc needs to review and get back to me.
-        virtual STARS_ea_t get_endEA(){ assert(0); }
+	// NOTE: All calls to this should be eliminated in IRDB code.
+	virtual STARS_ea_t get_endEA()=0;
 
 	// init class-local variable with IRDB value
 	// and these are accessors to that.
-	virtual std::size_t GetFrameSize(){ return the_func -> GetStackFrameSize(); }
-	virtual void SetFrameSize(std::size_t size) { assert(0); }
+	virtual std::size_t GetFrameSize()=0;
+	virtual void SetFrameSize(std::size_t size) = 0;
 
 	// todo for clc: audit these functions and see if they are really getting info from idapro
 	// or if these can be removed from the interface because they are calculated by STARS 
 	// interface-independent routines.
-	virtual std::size_t GetSavedRegSize() { assert(0); }
-	virtual std::size_t GetIncomingArgumentSize() { assert(0); }
-	virtual std::size_t GetFrameReturnAddressSize() { assert(0); }
-
-
-
-        virtual bool FunctionUsesFP(){ return the_func->GetUseFramePointer(); }
-        virtual bool IsStaticFunction(){ return false; }
-        virtual bool IsLibraryFunction(){ return false; }
-
-
-        virtual bool IsStackPointerAnalyzed(){ assert(0); }
-	virtual STARS_sval_t get_spd(STARS_ea_t ea){ assert(0); }
-	virtual bool HasReturnPoints(){ assert(0); }
-	virtual bool IsMultiEntry(){ assert(0); }
-	virtual void MarkSharedChunks(){ assert(0); }
-	virtual bool HasSharedChunks() const { assert(0); }
-	virtual void SetSharedChunks(bool v) { assert(0); }
-        virtual void UpdateXrefs(){ assert(0); }
-	virtual void BuildFuncIR(SMPFunction *func){ assert(0); }
-        virtual bool FindDistantCodeFragment(SMPFunction* func, STARS_ea_t TargetAddr){ assert(0); }
-	virtual void FillInLocalVarTable(SMPFunction *CurrFunc) { assert(0); }
-	virtual bool AnalyzeInstAsCallTarget(SMPFunction *CurrFunc, bool &IsIndirectCallTarget, bool &IsTailCallTarget) { assert(0); }
-	virtual bool IsChunkUnshared(STARS_ea_t ChunkAddr, STARS_ea_t FuncHeadStart, STARS_ea_t FuncHeadEnd) { assert(0); }
-
-private:
-	libIRDB::Function_t* the_func;
+	virtual std::size_t GetSavedRegSize() = 0;
+	virtual std::size_t GetIncomingArgumentSize() = 0;
+	virtual std::size_t GetFrameReturnAddressSize() = 0;
+
+
+
+	virtual bool FunctionUsesFP()=0;
+	virtual bool IsStaticFunction()=0;
+	virtual bool IsLibraryFunction()=0;
+	virtual bool IsStackPointerAnalyzed()=0;
+	virtual STARS_sval_t get_spd(STARS_ea_t ea)=0;
+	virtual bool HasReturnPoints()=0;
+	virtual bool IsMultiEntry()=0;
+	virtual void MarkSharedChunks()=0;
+	virtual bool HasSharedChunks() const =0;
+	virtual void SetSharedChunks(bool v) =0;
+	virtual void UpdateXrefs()=0;
+	virtual void BuildFuncIR(SMPFunction *func)=0;
+	virtual bool FindDistantCodeFragment(SMPFunction* func, STARS_ea_t TargetAddr)=0;
+	virtual void FillInLocalVarTable(SMPFunction *CurrFunc) = 0; // get stack frame fine-grained info
+	virtual bool AnalyzeInstAsCallTarget(SMPFunction *CurrFunc, bool &IsIndirectCallTarget, bool &IsTailCallTarget) = 0; // return success or failure of analysis
+	virtual bool IsChunkUnshared(STARS_ea_t ChunkAddr, STARS_ea_t FuncHeadStart, STARS_ea_t FuncHeadEnd) = 0;
+	virtual bool IsInstIDInFunc(STARS_ea_t InstID) { return false; }; // TODO: Determine if InstID is in IRDB func
 
 };
 
diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp
index b0a7b3d152460ff18ebc50434ea4116346b54d6c..88a8379e0ddc3adbf55be8eecacc56772ab9a063 100644
--- a/src/base/SMPFunction.cpp
+++ b/src/base/SMPFunction.cpp
@@ -522,15 +522,15 @@ bool SMPFunction::AddDirectCallTarget(STARS_ea_t addr) {
 }
 
 // Remove TargetAddr from DirectCallTargets and AllCallTargets.
-bool SMPFunction::RemoveDirectCallTarget(STARS_ea_t TargetAddr) {
+set<STARS_ea_t>::iterator SMPFunction::RemoveDirectCallTarget(STARS_ea_t TargetAddr) {
 	set<STARS_ea_t>::iterator TargetIter = this->DirectCallTargets.find(TargetAddr);
-	bool RemovedTarget = false;
+	set<STARS_ea_t>::iterator ReturnIter = TargetIter;
 	if (TargetIter != this->DirectCallTargets.end()) {
+		++ReturnIter;
 		this->DirectCallTargets.erase(TargetIter);
-		RemovedTarget = true;
 		this->RebuildCallTargets(); // remove from AllCallTargets
 	}
-	return RemovedTarget;
+	return ReturnIter;
 }
 
 // Remove TargetAddr from IndirectCallTargets and AllCallTargets.
@@ -4089,11 +4089,9 @@ void SMPFunction::AdvancedAnalysis(void) {
 			bool CallTargetRemoved = false;
 			while (CurrDirectTarget != this->DirectCallTargets.end()) {
 				STARS_ea_t TargetAddr = (*CurrDirectTarget);
-				if ((this->GetFirstFuncAddr() <= TargetAddr) && (this->FuncInfo->get_endEA() >= TargetAddr)) {
-					// Found a call target that is within the function.
-					CopyOfIterator = CurrDirectTarget;
-					++CopyOfIterator; // point to element after element that will be erased
-					this->DirectCallTargets.erase(CurrDirectTarget);
+				if (this->FuncInfo->IsInstIDInFunc(TargetAddr) && (this->FuncInfo->get_startEA() != TargetAddr)) {
+					// Found a call target that is within the function, but not recursive call to func entry.
+					CopyOfIterator = this->RemoveDirectCallTarget(TargetAddr);
 					CurrDirectTarget = CopyOfIterator;
 					CallTargetRemoved = true;
 				}
diff --git a/src/base/SMPInstr.cpp b/src/base/SMPInstr.cpp
index e8d251a48aaf09071e06bdf47f703f5330096f2f..2e5d50caf40f1101ea05ad64350bce1bca4394a5 100644
--- a/src/base/SMPInstr.cpp
+++ b/src/base/SMPInstr.cpp
@@ -4241,8 +4241,7 @@ void SMPInstr::AnalyzeCallInst(STARS_ea_t FirstFuncAddr, STARS_ea_t LastFuncAddr
 				// Remove the call target from the sets and lists in the function.
 				bool Removed;
 				if (CALL == this->GetDataFlowType()) {
-					Removed = this->GetBlock()->GetFunc()->RemoveDirectCallTarget(this->CallTarget);
-					// assert(Removed);
+					set<STARS_ea_t>::iterator NextTarget = this->GetBlock()->GetFunc()->RemoveDirectCallTarget(this->CallTarget);
 				}
 				else if (INDIR_CALL == this->GetDataFlowType()) {
 					Removed = this->GetBlock()->GetFunc()->RemoveIndirectCallTarget(this->CallTarget);
diff --git a/src/interfaces/idapro/STARSFunction.cpp b/src/interfaces/idapro/STARSFunction.cpp
index e063d1d725718a33c0ef52d2da9f861f24e8e096..7948352b52dbfaa54e0bcba595da8008c47f3655 100644
--- a/src/interfaces/idapro/STARSFunction.cpp
+++ b/src/interfaces/idapro/STARSFunction.cpp
@@ -25,53 +25,57 @@ bool SMPBinaryDebug = false;
 
 
 bool STARS_IDA_Function_t::IsChunkUnshared(STARS_ea_t ChunkAddr, STARS_ea_t FuncHeadStart, STARS_ea_t FuncHeadEnd) {
-    bool Unshared = true;
-    SMP_xref_t CurrXrefs;
-
-    // See if any xref reaches this ChunkAddr from outside the FuncHead range.
-    for (bool ok = CurrXrefs.SMP_first_to(ChunkAddr, XREF_ALL); ok; ok = CurrXrefs.SMP_next_to()) {
-        STARS_ea_t FromAddr = CurrXrefs.GetFrom();
-        if ((FromAddr != 0) && (CurrXrefs.GetIscode())) {
-            // We found a code xref that comes to the ChunkAddr. Whether it is a fall-through or
-            //  a jump/call, it is unshared only if it comes from within the FuncHead address range.
-            if ((FromAddr < FuncHeadStart) || (FromAddr >= FuncHeadEnd)) {
-                Unshared = false;
-                break;
-            }
-        }
-    }
-
-    return Unshared;
+	bool Unshared = true;
+	SMP_xref_t CurrXrefs;
+
+	// See if any xref reaches this ChunkAddr from outside the FuncHead range.
+	for (bool ok = CurrXrefs.SMP_first_to(ChunkAddr, XREF_ALL); ok; ok = CurrXrefs.SMP_next_to()) {
+		STARS_ea_t FromAddr = CurrXrefs.GetFrom();
+		if ((FromAddr != 0) && (CurrXrefs.GetIscode())) {
+			// We found a code xref that comes to the ChunkAddr. Whether it is a fall-through or
+			//  a jump/call, it is unshared only if it comes from within the FuncHead address range.
+			if ((FromAddr < FuncHeadStart) || (FromAddr >= FuncHeadEnd)) {
+				Unshared = false;
+				break;
+			}
+		}
+	}
+
+	return Unshared;
 } // end of STARS_IDA_Function_t::IsChunkUnshared()
 
+// Is InstID in this function? For IDA Pro, InstID is a code address.
+bool STARS_IDA_Function_t::IsInstIDInFunc(STARS_ea_t InstID) {
+	return ((InstID >= this->get_startEA()) && (InstID < this->get_endEA()));
+}
 
 void STARS_IDA_Function_t::MarkSharedChunks(void) {
 
 	char name[1000];
 	STARS_ea_t FirstEA = this->get_startEA();
 	::get_func_name(FirstEA,name,sizeof(name));
-    // Determine if we are dealing with shared chunks.
-    STARS_ea_t FuncHeadLastAddr = 0;
-    size_t ChunkCounter = 0;
-    //func_tail_iterator_t FuncTail((func_t*)*dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo()));
-    func_tail_iterator_t FuncTail(the_func);// (func_t*)*(dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo())));
-    for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
-        const area_t &CurrChunk = FuncTail.chunk();
-        ++ChunkCounter;
-        if (1 == ChunkCounter) { // head chunk
-            FuncHeadLastAddr = CurrChunk.endEA;
-        }
-        else { // a tail chunk
-            if (this->IsChunkUnshared(CurrChunk.startEA, FirstEA, FuncHeadLastAddr)) {
+	// Determine if we are dealing with shared chunks.
+	STARS_ea_t FuncHeadLastAddr = 0;
+	size_t ChunkCounter = 0;
+	//func_tail_iterator_t FuncTail((func_t*)*dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo()));
+	func_tail_iterator_t FuncTail(the_func);// (func_t*)*(dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo())));
+	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
+		const area_t &CurrChunk = FuncTail.chunk();
+		++ChunkCounter;
+		if (1 == ChunkCounter) { // head chunk
+			FuncHeadLastAddr = CurrChunk.endEA;
+		}
+		else { // a tail chunk
+			if (this->IsChunkUnshared(CurrChunk.startEA, FirstEA, FuncHeadLastAddr)) {
 //                                this->UnsharedChunks = true;
 //                                SMP_msg("INFO: Interface Found unshared tail chunk for %s at %lx\n",
 //                                        name, (unsigned long) CurrChunk.startEA);
-            }
-            else {
-	            this->SharedChunks = true;
+			}
+			else {
+				this->SharedChunks = true;
 //              SMP_msg("INFO: Interface Found tail chunk for %s at %lx\n",
 //                                        name, (unsigned long) CurrChunk.startEA);
-            }
+			}
 		}
 	}
 	return;
@@ -80,33 +84,33 @@ void STARS_IDA_Function_t::MarkSharedChunks(void) {
 bool STARS_IDA_Function_t::IsMultiEntry()
 {
 	STARS_ea_t FirstEA=this->get_startEA();
-        func_tail_iterator_t FuncTail(the_func);// (func_t*)*(dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo())));
-        size_t CallTargetCount = 0; // how many addresses in this function are called?
-
-        if (this->HasSharedChunks() || this->UnsharedChunks) {
-                for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
-                        const area_t &CurrChunk = FuncTail.chunk();
-                        STARS_ea_t addr = CurrChunk.startEA; // Start with just the beginning addrs of chunks.
-                        // Determine whether the instruction is a call target by looking
-                        //  at its cross references and seeing if it has "TO" code xrefs.
-                        SMP_xref_t xrefs, Distant_xrefs;
-                        for (bool ok = xrefs.SMP_first_to(addr, XREF_FAR); ok; ok = xrefs.SMP_next_to()) {
-                                STARS_ea_t DistantAddr = xrefs.GetFrom();
-                                if ((DistantAddr != 0) && (xrefs.GetIscode())) {
-                                        // Now we see if the distant instruction is in another function.
-                                        STARS_Function_t *SourceFunc = SMP_get_func(DistantAddr);
-                                        if (NULL != SourceFunc) {
-                                                if (SourceFunc->get_startEA() != FirstEA) {
-                                                        ++CallTargetCount;
-                                                        break;
-                                                }
-                                        }
-                                }
-                        } // end for all xrefs
-                } // end for all chunks
-        }
-
-        return  CallTargetCount > 1;
+		func_tail_iterator_t FuncTail(the_func);// (func_t*)*(dynamic_cast<STARS_IDA_Function_t*>(this->GetFuncInfo())));
+		size_t CallTargetCount = 0; // how many addresses in this function are called?
+
+		if (this->HasSharedChunks() || this->UnsharedChunks) {
+				for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
+						const area_t &CurrChunk = FuncTail.chunk();
+						STARS_ea_t addr = CurrChunk.startEA; // Start with just the beginning addrs of chunks.
+						// Determine whether the instruction is a call target by looking
+						//  at its cross references and seeing if it has "TO" code xrefs.
+						SMP_xref_t xrefs, Distant_xrefs;
+						for (bool ok = xrefs.SMP_first_to(addr, XREF_FAR); ok; ok = xrefs.SMP_next_to()) {
+								STARS_ea_t DistantAddr = xrefs.GetFrom();
+								if ((DistantAddr != 0) && (xrefs.GetIscode())) {
+										// Now we see if the distant instruction is in another function.
+										STARS_Function_t *SourceFunc = SMP_get_func(DistantAddr);
+										if (NULL != SourceFunc) {
+												if (SourceFunc->get_startEA() != FirstEA) {
+														++CallTargetCount;
+														break;
+												}
+										}
+								}
+						} // end for all xrefs
+				} // end for all chunks
+		}
+
+		return  CallTargetCount > 1;
 } 
 
 void STARS_IDA_Function_t::UpdateXrefs()
@@ -117,7 +121,7 @@ void STARS_IDA_Function_t::UpdateXrefs()
 	enum cref_t NearJump = (cref_t)(fl_JN | XREF_USER);
 	enum cref_t FarJump = (cref_t)(fl_JF | XREF_USER);
 
- 	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
+	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
 		const area_t &CurrChunk = FuncTail.chunk();
 
 		// Find the instructions for each chunk, audit the xrefs.
@@ -214,7 +218,7 @@ void STARS_IDA_Function_t::BuildFuncIR(SMPFunction *func)
 	size_t ChunkCounter = 0;
 	bool GoodRTL;
 	func->BuiltRTLs = true;
- 	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
+	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
 		const area_t &CurrChunk = FuncTail.chunk();
 		++ChunkCounter;
 #if 0
@@ -544,7 +548,7 @@ bool STARS_IDA_Function_t::FindDistantCodeFragment(SMPFunction* func, STARS_ea_t
 			bool JumpsBackIntoCurrentFunc = false;
 			bool HasReturnInstruction = false;
 			bool AllocatesStackFrame = false;
-		 	for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
+			for (bool ChunkOK = FuncTail.main(); ChunkOK; ChunkOK = FuncTail.next()) {
 				const area_t &CurrChunk = FuncTail.chunk();
 				++ChunkCounter;
 				// Build the instruction and block lists for the function.
diff --git a/tests/commit/save-gimp.psexe.infoannot b/tests/commit/save-gimp.psexe.infoannot
index 42c0740994b6e0f6d1b6846d51b99e9865d24b6d..0674e5c9e549e46d88125499a88783500d5bb387 100644
--- a/tests/commit/save-gimp.psexe.infoannot
+++ b/tests/commit/save-gimp.psexe.infoannot
@@ -5014,7 +5014,7 @@
     487060     71 FUNC RETURNTYPE RAX 0
     487060     71 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 1 ARG3 0 ARG4 0 ARG5 0 
     4870a7     46 FUNC RETURNTYPE RAX 0
-    4870a7     46 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
+    4870a7     46 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 1 ARG3 0 ARG4 0 ARG5 0 
     4870d8     45 FUNC RETURNTYPE RAX 0
     4870d8     45 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
     487105    162 FUNC RETURNTYPE RAX 0
@@ -5423,7 +5423,7 @@
     495ee7    133 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
     495f6c     89 FUNC RETURNTYPE RAX 0
     495f6c     89 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
-    495fc5    252 FUNC RETURNTYPE RAX 0
+    495fc5    252 FUNC RETURNTYPE RAX 4
     495fc5    252 FUNC INARGS    6  ARG0 0 ARG1 4 ARG2 0 ARG3 4 ARG4 0 ARG5 0 
     4960c1     99 FUNC RETURNTYPE RAX 0
     4960c1     99 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
@@ -11042,7 +11042,7 @@
     563dd3    170 FUNC RETURNTYPE RAX 0
     563dd3    170 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
     563e7d    208 FUNC RETURNTYPE RAX 0
-    563e7d    208 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 96 ARG4 0 ARG5 0 
+    563e7d    208 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 4 ARG3 96 ARG4 0 ARG5 0 
     563f4d    460 FUNC RETURNTYPE RAX 0
     563f4d    460 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 96 ARG3 0 ARG4 0 ARG5 0 
     564119    597 FUNC RETURNTYPE RAX 0
@@ -11211,7 +11211,7 @@
     569be4    286 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 4 ARG3 4 ARG4 0 ARG5 0 
     569ce6      2 INSTR CHECK UNDERFLOW SIGNED 32  ESI ZZ sub     esi, eax 
     569d02     93 FUNC RETURNTYPE RAX 0
-    569d02     93 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 96 ARG4 0 ARG5 0 
+    569d02     93 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 4 ARG3 96 ARG4 0 ARG5 0 
     569d5f    644 FUNC RETURNTYPE RAX 4
     569d5f    644 FUNC INARGS    6  ARG0 0 ARG1 0 ARG2 0 ARG3 4 ARG4 0 ARG5 0 
     569fe3    355 FUNC RETURNTYPE RAX 4
@@ -29463,7 +29463,7 @@
     7fa6ae   2181 FUNC RETURNTYPE RAX 0
     7fa6ae   2181 FUNC INARGS    6  ARG0 0 ARG1 4 ARG2 4 ARG3 0 ARG4 0 ARG5 8 
     7fabf9      4 INSTR CHECK OVERFLOW NOFLAGUNKNOWNSIGN 64 RAX+24 ZZ lea     rdx, [rax+18h] 
-    7faf33     92 FUNC RETURNTYPE RAX 0
+    7faf33     92 FUNC RETURNTYPE RAX 4
     7faf33     92 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 1 ARG3 4 ARG4 1 ARG5 8 
     7faf8f   1043 FUNC RETURNTYPE RAX 4
     7faf8f   1043 FUNC INARGS    6  ARG0 4 ARG1 4 ARG2 4 ARG3 4 ARG4 4 ARG5 1 
@@ -32768,7 +32768,7 @@
     86bd27     59 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
     86bd62     31 FUNC RETURNTYPE RAX 1
     86bd62     31 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 4 ARG3 0 ARG4 0 ARG5 0 
-    86bd81     31 FUNC RETURNTYPE RAX 0
+    86bd81     31 FUNC RETURNTYPE RAX 1
     86bd81     31 FUNC INARGS    6  ARG0 4 ARG1 0 ARG2 1 ARG3 0 ARG4 0 ARG5 0 
     86bda0    154 FUNC RETURNTYPE RAX 1
     86bda0    154 FUNC INARGS    6  ARG0 4 ARG1 1 ARG2 0 ARG3 0 ARG4 0 ARG5 0 
diff --git a/tests/commit/trimmed-sorted-save-busybox.psexe.annot.REMOVED.git-id b/tests/commit/trimmed-sorted-save-busybox.psexe.annot.REMOVED.git-id
index 0670b95ddc415c044119af5d9f5064cf2d9a8572..151de1aaea3204dd9e942be53e5423551e6a841c 100644
--- a/tests/commit/trimmed-sorted-save-busybox.psexe.annot.REMOVED.git-id
+++ b/tests/commit/trimmed-sorted-save-busybox.psexe.annot.REMOVED.git-id
@@ -1 +1 @@
-6aaa36387ec5be51fdaaa65c83135ae9680253b8
\ No newline at end of file
+4c7acef2da8488994e2ee89875fc7bfa3eecf775
\ No newline at end of file
diff --git a/tests/commit/trimmed-sorted-save-gimp.psexe.annot.REMOVED.git-id b/tests/commit/trimmed-sorted-save-gimp.psexe.annot.REMOVED.git-id
index 2d3d019bf5d23cdcc27cc38a50c21c5257b1eaf3..e5597994e9f701f8036954fcdddbbb8615cd0070 100644
--- a/tests/commit/trimmed-sorted-save-gimp.psexe.annot.REMOVED.git-id
+++ b/tests/commit/trimmed-sorted-save-gimp.psexe.annot.REMOVED.git-id
@@ -1 +1 @@
-c80520bd972c7b73b18e5f89edead58489933a08
\ No newline at end of file
+5d0b606ac413db81391af68c150af2d353e7fcc3
\ No newline at end of file
diff --git a/tests/commit/trimmed-sorted-save-openssl.psexe.annot.REMOVED.git-id b/tests/commit/trimmed-sorted-save-openssl.psexe.annot.REMOVED.git-id
index 4134625b7d9b486f751b8d9387307ec148054dc7..833610d63370a0987aad7163f986f5048782d816 100644
--- a/tests/commit/trimmed-sorted-save-openssl.psexe.annot.REMOVED.git-id
+++ b/tests/commit/trimmed-sorted-save-openssl.psexe.annot.REMOVED.git-id
@@ -1 +1 @@
-15afaa1d951a1321dc249f648a40960eccd0d030
\ No newline at end of file
+73c495a66c8795ab3b2b54b5a41080b9c406427b
\ No newline at end of file