public void VpUndoSlicingOfSegmentPointerCheckUses() { var es = m.Reg16("es"); var es_2 = m.Reg16("es_2"); var bx = m.Reg16("bx"); var bx_3 = m.Reg16("bx_3"); var bx_4 = m.Reg16("bx_4"); var es_bx_1 = m.Reg32("es_bx_1"); m.Store(m.SegMem(PrimitiveType.Byte, es, m.IAdd(bx, 4)), m.Byte(3)); m.Assign(es_bx_1, m.SegMem(PrimitiveType.Word32, es, bx)); m.Assign(es_2, m.Slice(PrimitiveType.Word16, es_bx_1, 16)); m.Assign(bx_3, m.Cast(PrimitiveType.Word16, es_bx_1)); var instr = m.Assign(bx_4, m.SegMem(PrimitiveType.Word16, es_2, m.IAdd(bx_3, 4))); RunValuePropagator(); Assert.AreEqual("bx_4 = Mem8[es_bx_1 + 0x0004:word16]", instr.ToString()); }