x86: handle f2/f3 prefix for 16bit. see issue #452
diff --git a/arch/X86/X86DisassemblerDecoder.c b/arch/X86/X86DisassemblerDecoder.c
index d6524e1..2dccd40 100644
--- a/arch/X86/X86DisassemblerDecoder.c
+++ b/arch/X86/X86DisassemblerDecoder.c
@@ -1246,9 +1246,9 @@
 			attrMask |= ATTR_OPSIZE;
 		} else if (isPrefixAtLocation(insn, 0x67, insn->necessaryPrefixLocation)) {
 			attrMask |= ATTR_ADSIZE;
-		} else if (isPrefixAtLocation(insn, 0xf3, insn->necessaryPrefixLocation)) {
+		} else if (insn->mode != MODE_16BIT && isPrefixAtLocation(insn, 0xf3, insn->necessaryPrefixLocation)) {
 			attrMask |= ATTR_XS;
-		} else if (isPrefixAtLocation(insn, 0xf2, insn->necessaryPrefixLocation)) {
+		} else if (insn->mode != MODE_16BIT && isPrefixAtLocation(insn, 0xf2, insn->necessaryPrefixLocation)) {
 			attrMask |= ATTR_XD;
 		}
 	}
@@ -1299,6 +1299,7 @@
 		}
 	}
 
+
 	/*
 	 * Absolute moves need special handling.
 	 * -For 16-bit mode because the meaning of the AdSize and OpSize prefixes are