From 59a9cd05df4deceab8a081150b044eec1ed11609 Mon Sep 17 00:00:00 2001
From: an7s <an7s@git.zephyr-software.com>
Date: Fri, 16 Mar 2018 20:08:04 +0000
Subject: [PATCH] Fix for getting memory displacement offset in the CMPPD/CMPSS
 family of instructions

Former-commit-id: 03892447ada7f5c876fd2f717470995ce4cb2ca2
---
 libIRDB/src/core/decode_cs.cpp | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/libIRDB/src/core/decode_cs.cpp b/libIRDB/src/core/decode_cs.cpp
index f129fd79a..f4ab66a9d 100644
--- a/libIRDB/src/core/decode_cs.cpp
+++ b/libIRDB/src/core/decode_cs.cpp
@@ -595,6 +595,11 @@ virtual_offset_t DecodedInstructionCapstone_t::getMemoryDisplacementOffset(const
 	const auto imm=getImmediate();
 	const auto disp=t.getMemoryDisplacement();
 
+	if(string((char*)the_insn->detail->x86.opcode)=="\x0f\xc2") // CMPPD, CMPSS 
+	{
+		return the_insn->size - disp_size - 1;  // last byte encodes an immediate value to distinguish pseudo-ops
+	}
+	
 	if(imm_count==0)
 		return the_insn->size - disp_size;
 
-- 
GitLab