original := Mem[s2.A].type;
spurious_failure := whatever;
IF original = Mem[s1.A].type AND NOT spurious_failure THEN
Mem [s2.A].type := s0.type_multiple_of_32;
s2.result_type := 1;
ELSE
Mem [s2.A].type := original; x86 really does rewrite the original value, atomically
s2.result_type := 0;
END;
pop(2);
This is permitted to fail spuriously.
That is, even if Mem[s2.a] = Mem[s1.a], we might
still go down the then branch.