diff --git a/arch/X86/X86Disassembler.c b/arch/X86/X86Disassembler.c index b80e68c4..e5ed556f 100644 --- a/arch/X86/X86Disassembler.c +++ b/arch/X86/X86Disassembler.c @@ -835,6 +835,12 @@ bool X86_getInstruction(csh ud, const uint8_t *code, size_t code_len, result = (!translateInstruction(instr, &insn)) ? true : false; if (result) { + // quick fix for #904. TODO: fix this properly in the next update + if (handle->mode & CS_MODE_64 && + (instr->Opcode == X86_LES16rm || instr->Opcode == X86_LES32rm)) + // LES is invalid in x64 + return false; + instr->imm_size = insn.immSize; if (handle->detail) { update_pub_insn(instr->flat_insn, &insn, instr->x86_prefix);