final LongItem result = (LongItem) requestDoubleWordRegisters( JvmType.LONG, EAX, EDX);
final LongItem result = (LongItem) L1AHelper .requestDoubleWordRegisters(eContext, JvmType.LONG, EAX, EDX);
	public final void visit_lmul() {		//TODO: port to orp-style		vstack.push(eContext);		final LongItem v2 = vstack.popLong();		final LongItem v1 = vstack.popLong();		v2.release1(eContext);		v1.release1(eContext);		writePOP64(Register.EBX, Register.ECX); // Value 2		final Register v2_lsb = Register.EBX;		final Register v2_msb = Register.ECX;		writePOP64(Register.ESI, Register.EDI); // Value 1		final Register v1_lsb = Register.ESI;		final Register v1_msb = Register.EDI;		final Label tmp1 = new Label(curInstrLabel + "$tmp1");		final Label tmp2 = new Label(curInstrLabel + "$tmp2");		os.writeMOV(INTSIZE, EAX, v1_msb); // hi2		os.writeOR(EAX, v2_msb); // hi1 | hi2		os.writeJCC(tmp1, X86Constants.JNZ);		os.writeMOV(INTSIZE, EAX, v1_lsb); // lo2		os.writeMUL_EAX(v2_lsb); // lo1*lo2		os.writeJMP(tmp2);		os.setObjectRef(tmp1);		os.writeMOV(INTSIZE, EAX, v1_lsb); // lo2		os.writeMUL_EAX(v2_msb); // hi1*lo2		os.writeMOV(INTSIZE, v2_msb, EAX);		os.writeMOV(INTSIZE, EAX, v1_msb); // hi2		os.writeMUL_EAX(v2_lsb); // hi2*lo1		os.writeADD(v2_msb, EAX); // hi2*lo1 + hi1*lo2		os.writeMOV(INTSIZE, EAX, v1_lsb); // lo2		os.writeMUL_EAX(v2_lsb); // lo1*lo2		os.writeADD(EDX, v2_msb); // hi2*lo1 + hi1*lo2 +		// hi(lo1*lo2)		os.setObjectRef(tmp2);		// Reload the statics table, since it was destroyed here		helper.writeLoadSTATICS(curInstrLabel, "lmul", false);		// Push		final LongItem result = (LongItem) requestDoubleWordRegisters(				JvmType.LONG, EAX, EDX);		vstack.push(result);	}