diff --git a/irdb-libs/libIRDB-core/src/operand_csx86.cpp b/irdb-libs/libIRDB-core/src/operand_csx86.cpp
index 080c6ff412cebe07a121a3cb52041303fec7cd42..aa6135c2de87a44fd61f1534f6b9bdd0774cfa2e 100644
--- a/irdb-libs/libIRDB-core/src/operand_csx86.cpp
+++ b/irdb-libs/libIRDB-core/src/operand_csx86.cpp
@@ -464,9 +464,14 @@ bool DecodedOperandCapstoneX86_t::hasBaseRegister() const
 
 bool DecodedOperandCapstoneX86_t::hasIndexRegister() const
 {
-        const auto the_insn=static_cast<cs_insn*>(my_insn.get());
-        const auto &op = (the_insn->detail->x86.operands[op_num]);
-	return isMemory() && op.mem.index!=X86_REG_INVALID;
+    const auto the_insn=static_cast<cs_insn*>(my_insn.get());
+    const auto &op = (the_insn->detail->x86.operands[op_num]);
+
+    const auto index_reg_is_valid =
+        op.mem.index != X86_REG_INVALID &&
+        op.mem.index != X86_REG_EIZ &&
+        op.mem.index != X86_REG_RIZ;
+    return isMemory() && index_reg_is_valid;
 }
 
 uint32_t DecodedOperandCapstoneX86_t::getBaseRegister() const