diff --git a/SMPInstr.cpp b/SMPInstr.cpp
index c296f81d66c1ee0fa96d945e311c2ffeac378a7c..a783f1029b70af6668418094525ef628260eb898 100644
--- a/SMPInstr.cpp
+++ b/SMPInstr.cpp
@@ -30,7 +30,7 @@
 #define SMP_DEBUG2 0   // verbose
 #define SMP_DEBUG_XOR 0
 #define SMP_DEBUG_BUILD_RTL  1   // should be left on, serious errors!
-#define SMP_VERBOSE_DEBUG_BUILD_RTL  1
+#define SMP_VERBOSE_DEBUG_BUILD_RTL  0
 #define SMP_VERBOSE_DEBUG_BUILD_RTL_DEF_USE 0
 #define SMP_VERBOSE_DEBUG_INFER_TYPES 0
 #define SMP_VERBOSE_DUMP 0
@@ -736,7 +736,10 @@ void SMPInstr::MDFixupDefUseLists(void) {
 					IndexOpnd.reg = IndexReg;
 					IndexOpnd.hasSIB = 0;
 					IndexOpnd.set_showed();
-					this->Uses.SetRef(IndexOpnd);
+					if (0 == sib_scale(Opnd))
+						this->Uses.SetRef(IndexOpnd);
+					else // scaling == shift ==> NUMERIC
+						this->Uses.SetRef(IndexOpnd, NUMERIC);
 				}
 			}
 			else { // no SIB byte; can have base reg but no index reg