fix mov([rip+label], imm)
diff --git a/test/rip-label-imm.cpp b/test/rip-label-imm.cpp
index 5abff0c..a4016fd 100644
--- a/test/rip-label-imm.cpp
+++ b/test/rip-label-imm.cpp
@@ -3,22 +3,22 @@
 /*
 dump of vc
 
-0000000000350000 F3 0F C2 05 77 00 00 00 00 cmpeqss     xmm0,dword ptr [350080h]
-0000000000350009 F7 05 6D 00 00 00 21 00 00 00 test        dword ptr [350080h],21h
-0000000000350013 0F BA 25 65 00 00 00 03 bt          dword ptr [350080h],3
-000000000035001B C4 E3 79 0D 05 5B 00 00 00 03 vblendpd    xmm0,xmm0,xmmword ptr [350080h],3
-0000000000350025 C4 E3 79 0F 05 51 00 00 00 04 vpalignr    xmm0,xmm0,xmmword ptr [350080h],4
-000000000035002F C4 E3 7D 19 1D 47 00 00 00 0C vextractf128 xmmword ptr [350080h],ymm3,0Ch
-0000000000350039 C4 E3 75 46 05 3D 00 00 00 0D vperm2i128  ymm0,ymm1,ymmword ptr [350080h],0Dh
-0000000000350043 C4 E3 79 1D 15 33 00 00 00 2C vcvtps2ph   mmword ptr [350080h],xmm2,2Ch
-000000000035004D C7 05 2D 00 00 00 34 12 00 00 mov         dword ptr [350084h],1234h
-0000000000350057 C1 25 22 00 00 00 03 shl         dword ptr [350080h],3
-000000000035005E D1 2D 1C 00 00 00    shr         dword ptr [350080h],1
-0000000000350064 48 0F A4 05 13 00 00 00 03 shld        qword ptr [350080h],rax,3
-000000000035006D 48 6B 05 0B 00 00 00 15 imul        rax,qword ptr [350080h],15h
-0000000000350075 C4 E3 FB F0 05 01 00 00 00 15 rorx        rax,qword ptr [350080h],15h
-000000000035007F C3                   ret
-0000000000350080 F0 DE BC 9A 78 56 34 12
+0000000000450000 F3 0F C2 05 77 00 00 00 00 cmpeqss     xmm0,dword ptr [450080h]
+0000000000450009 F7 05 6D 00 00 00 21 00 00 00 test        dword ptr [450080h],21h
+0000000000450013 0F BA 25 65 00 00 00 03 bt          dword ptr [450080h],3
+000000000045001B C4 E3 79 0D 05 5B 00 00 00 03 vblendpd    xmm0,xmm0,xmmword ptr [450080h],3
+0000000000450025 C4 E3 79 0F 05 51 00 00 00 04 vpalignr    xmm0,xmm0,xmmword ptr [450080h],4
+000000000045002F C4 E3 7D 19 1D 47 00 00 00 0C vextractf128 xmmword ptr [450080h],ymm3,0Ch
+0000000000450039 C4 E3 75 46 05 3D 00 00 00 0D vperm2i128  ymm0,ymm1,ymmword ptr [450080h],0Dh
+0000000000450043 C4 E3 79 1D 15 33 00 00 00 2C vcvtps2ph   mmword ptr [450080h],xmm2,2Ch
+000000000045004D C7 05 29 00 00 00 34 12 00 00 mov         dword ptr [450080h],1234h
+0000000000450057 C1 25 22 00 00 00 03 shl         dword ptr [450080h],3
+000000000045005E D1 2D 1C 00 00 00    shr         dword ptr [450080h],1
+0000000000450064 48 0F A4 05 13 00 00 00 03 shld        qword ptr [450080h],rax,3
+000000000045006D 48 6B 05 0B 00 00 00 15 imul        rax,qword ptr [450080h],15h
+0000000000450075 C4 E3 FB F0 05 01 00 00 00 15 rorx        rax,qword ptr [450080h],15h
+000000000045007F C3                   ret
+0000000000450080 F0 DE BC 9A 78 56 34 12
 */
 struct Code : Xbyak::CodeGenerator {
 	Code()
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 63dc227..5ef3419 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -1869,16 +1869,16 @@
 			db(imm, size);
 		} else if (op.isMEM()) {
 			verifyMemHasSize(op);
-			opModM(static_cast<const Address&>(op), Reg(0, Operand::REG, op.getBit()), B11000110);
-			int size = op.getBit() / 8;
-			if (size <= 4) {
-				sint64 s = sint64(imm) >> (size * 8);
+			int immSize = op.getBit() / 8;
+			if (immSize <= 4) {
+				sint64 s = sint64(imm) >> (immSize * 8);
 				if (s != 0 && s != -1) throw Error(ERR_IMM_IS_TOO_BIG);
 			} else {
 				if (!inner::IsInInt32(imm)) throw Error(ERR_IMM_IS_TOO_BIG);
-				size = 4;
+				immSize = 4;
 			}
-			db(static_cast<uint32>(imm), size);
+			opModM(static_cast<const Address&>(op), Reg(0, Operand::REG, op.getBit()), B11000110, NONE, NONE, immSize);
+			db(static_cast<uint32>(imm), immSize);
 		} else {
 			throw Error(ERR_BAD_COMBINATION);
 		}