@Test
	public void testZeroByXorVia32() throws Throwable {
		try (ToyDBTraceBuilder tb = new ToyDBTraceBuilder("Test", "x86:LE:64:default")) {
			TraceThread thread = initTrace(tb, """
					RIP = 0x00400000;
					""",
				List.of(
					"XOR EAX, EAX"));

			TaintTracePcodeEmulator emu = new TaintTracePcodeEmulator(tb.host, 0);
			PcodeThread<Pair<byte[], TaintVec>> emuThread = emu.newThread(thread.getPath());
			emuThread.getState()
					.setVar(tb.reg("RAX"), Pair.of(
						tb.arr(1, 2, 3, 4, 5, 6, 7, 8),
						TaintVec.copies(TaintSet.parse("test_0"), 8)));
			try (Transaction tx = tb.startTransaction()) {
				emu.writeDown(tb.host, 0, 0);
			}

			emuThread.stepInstruction();
			try (Transaction tx = tb.startTransaction()) {
				emu.writeDown(tb.host, 1, 0);
			}

			TracePropertyMap<String> taintMap =
				tb.trace.getAddressPropertyManager().getPropertyMap("Taint", String.class);
			TracePropertyMapSpace<String> mapSpace =
				taintMap.getPropertyMapRegisterSpace(thread, 0, false);

			assertEquals(Set.of(),
				Set.copyOf(mapSpace.getEntries(Lifespan.at(1), tb.reg("RAX"))));
		}
	}
Test that state is properly read from trace memory

<p>
We isolate exactly a read by executing sleigh.
Ghidra/Debug/TaintAnalysis/src/test/java/ghidra/pcode/emu/taint/trace/TaintTracePcodeEmulatorTest.java