x86: properly handle SSE/AVX instructions
diff --git a/cs.c b/cs.c
index d17cb55..c3becd8 100644
--- a/cs.c
+++ b/cs.c
@@ -662,9 +662,12 @@
handle->insn_id(handle, insn_cache, mci.Opcode);
handle->printer(&mci, &ss, handle->printer_info);
-
fill_insn(handle, insn_cache, ss.buffer, &mci, handle->post_printer, buffer);
+ // adjust for pseudo opcode (X86)
+ if (handle->arch == CS_ARCH_X86)
+ insn_cache->id += mci.popcode_adjust;
+
next_offset = insn_size;
} else {
// encounter a broken instruction
@@ -869,6 +872,10 @@
fill_insn(handle, insn, ss.buffer, &mci, handle->post_printer, *code);
+ // adjust for pseudo opcode (X86)
+ if (handle->arch == CS_ARCH_X86)
+ insn->id += mci.popcode_adjust;
+
*code += insn_size;
*size -= insn_size;
*address += insn_size;