diff --git a/include/interfaces/irdb/STARSOp.h b/include/interfaces/irdb/STARSOp.h
index 7b08eeaa618fef3db6190b11e4a58f65ca10d887..56a516a3bcf0f478f2b9674d8dd2d6e5e1c06877 100644
--- a/include/interfaces/irdb/STARSOp.h
+++ b/include/interfaces/irdb/STARSOp.h
@@ -162,8 +162,14 @@ class STARS_IRDB_op_t : public STARS_op_t
 
 		
 		virtual void SetNotVisible(void) { assert(OpType!=op_Void); visible=0; } // Set operand to type that is implicit, not explicit in disasm
-		virtual void SetTypeToMemDisplacement(void) { OpType=op_Mem; } // change type during stack normalization
-		virtual void SetTypeToMemNoDisplacement(void) { }; // change type during stack normalization
+
+		// this is used to change the type of a memory operand during stack normalization
+		virtual void SetTypeToMemDisplacement(void) { assert(IsMemDisplacementOp()); } // SetAddr(non-zero) should already be called, which implicitly does this. 
+
+		// this is used to change the type of a memory operand during stack normalization
+		virtual void SetTypeToMemNoDisplacement(void) { assert(OpType==op_Mem && operand.mem.base==0); } // SetAddr(0) should already have been called 
+
+
 		virtual void CleanOpndEncoding(void) { }; // Get rid of unnecessary SIB byte encodings, etc.
 
 		// Query methods
@@ -192,17 +198,6 @@ class STARS_IRDB_op_t : public STARS_op_t
 		virtual bool MatchesReg(uint16_t RegNum) const 
 		{ 
 			return OpType==op_Reg && RegNum == operand.reg.RegNum; 
-#if 0
-			switch(OpType)
-			{
-				case op_Reg:
-					return RegNum == operand.reg.RegNum; 
-				case op_Mem:
-					return RegNum == operand.mem.base; 
-				default:
-					return false;
-			}
-#endif
 		}
 		virtual bool IsNearPointer(void) const { return OpType==op_Addr; }
 		virtual bool IsFarPointer(void) const { return false; }