os.writeLEA(SP, SP, 8);
os.writeLEA(SP, SP, -8);
	final void loadTo(EmitterContext ec, Register lsb, Register msb) {		final AbstractX86Stream os = ec.getStream();		final X86RegisterPool pool = ec.getPool();		final VirtualStack stack = ec.getVStack();		//os.log("LongItem.log called "+Integer.toString(kind));		assertCondition(lsb != msb, "lsb != msb");		assertCondition(lsb != null, "lsb != null");		assertCondition(msb != null, "msb != null");		switch (kind) {		case Kind.REGISTER:			// invariant: (msb != lsb) && (this.msb != this.lsb)			if (msb != this.lsb) {				// generic case; avoid only if msb is lsb' (value overwriting)				// invariant: (msb != this.lsb) && (msb != lsb) && (this.msb !=				// this.lsb)				// msb <- msb'				// lsb <- lsb'				if (msb != this.msb) {					os.writeMOV(INTSIZE, msb, this.msb);					if (lsb != this.msb) {						pool.release(this.msb);					}				}				if (lsb != this.lsb) {					// invariant: (msb != this.lsb) && (lsb != this.lsb) && (msb					// != lsb) && (this.msb != this.lsb)					os.writeMOV(INTSIZE, lsb, this.lsb);					//if (msb != this.lsb) { <- enforced by first if()					pool.release(this.lsb);					//}				}			} else if (lsb != this.msb) {				// generic case, assignment sequence inverted; avoid only if lsb				// is msb' (overwriting)				// invariant: (msb == this.lsb) && (lsb != this.msb)				// lsb <- lsb'				// msb <- msb'				// if (lsb != this.lsb) { <- always true, because msb ==				// this.lsb				os.writeMOV(INTSIZE, lsb, this.lsb);				//	if (msb != this.lsb) { <- always false, because of invariant				//		pool.release(this.lsb);				//	}				// }				// if (msb != this.msb) { <- always true, because of invariant				os.writeMOV(INTSIZE, msb, this.msb);				//	if (lsb != this.msb) { <- always true, because of invariant				pool.release(this.msb);				//	}				// }			} else {				// invariant: (msb == this.lsb) && (lsb == this.msb)				// swap registers				os.writeXCHG(this.lsb, this.msb);			}			break;		case Kind.LOCAL:			os.writeMOV(INTSIZE, lsb, FP, offsetToFP);			os.writeMOV(INTSIZE, msb, FP, offsetToFP + 4);			break;		case Kind.CONSTANT:			loadToConstant(ec, os, lsb, msb);			break;		case Kind.FPUSTACK:			// Make sure this item is on top of the FPU stack			stack.fpuStack.pop(this);			// Convert & move to new space on normal stack			os.writeLEA(SP, SP, 8);			popFromFPU(os, SP, 0);			os.writePOP(lsb);			os.writePOP(msb);			break;		case Kind.STACK:			if (VirtualStack.checkOperandStack) {				stack.operandStack.pop(this);			}			os.writePOP(lsb);			os.writePOP(msb);			break;		}		kind = Kind.REGISTER;		this.lsb = lsb;		this.msb = msb;	}