support AVX
diff --git a/COPYRIGHT b/COPYRIGHT
index ed08fcd..118291d 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,5 +1,5 @@
 

-Copyright (c) 2007-2010 MITSUNARI Shigeo

+Copyright (c) 2007-2011 MITSUNARI Shigeo

 All rights reserved.

 

 Redistribution and use in source and binary forms, with or without

diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 57512bf..b1546ea 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -6,6 +6,35 @@
 
 using namespace Xbyak;
 
+enum {
+	PP_66 = 1 << 0,
+	PP_F3 = 1 << 1,
+	PP_F2 = 1 << 2,
+	MM_0F = 1 << 5,
+	MM_0F38 = 1 << 6,
+	MM_0F3A = 1 << 7
+};
+
+std::string type2String(int type)
+{
+	std::string str;
+	if (type & MM_0F) {
+		str = "MM_0F";
+	} else if (type & MM_0F38) {
+		str = "MM_0F38";
+	} else if (type & MM_0F3A) {
+		str = "MM_0F3A";
+	}
+	if (type & PP_66) {
+		str += " | PP_66";
+	} else if (type & PP_F3) {
+		str += " | PP_F3";
+	} else if (type & PP_F2) {
+		str += " | PP_F2";
+	}
+	return str;
+}
+
 void put()
 {
 	const int NO = CodeGenerator::NONE;
@@ -393,7 +422,7 @@
 			const Tbl *p = &tbl[i];
 			printf("void cmov%s(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | %d); }\n", p->name, p->ext);
 			printf("void j%s(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x%02X, 0x%02X, 0x%02X); }\n", p->name, p->ext | B01110000, p->ext | B10000000, 0x0F);
-			printf("void set%s(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | %d); }\n", p->name, p->ext);
+			printf("void set%s(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | %d); }\n", p->name, p->ext);
 		}
 	}
 	////////////////////////////////////////////////////////////////
@@ -453,6 +482,7 @@
 			{ "rdmsr", 0x0F, B00110010 },
 			{ "rdpmc", 0x0F, B00110011 },
 			{ "rdtsc", 0x0F, B00110001 },
+			{ "rdtscp", 0x0F, 0x01, 0xF9 },
 			{ "wait", B10011011 },
 			{ "wbinvd", 0x0F, B00001001 },
 			{ "wrmsr", 0x0F, B00110000 },
@@ -461,6 +491,10 @@
 			{ "popf", B10011101 },
 			{ "pushf", B10011100 },
 
+			{ "vzeroall", 0xC5, 0xFC, 0x77 },
+			{ "vzeroupper", 0xC5, 0xF8, 0x77 },
+			{ "xgetbv", 0x0F, 0x01, 0xD0 },
+
 			// FPU
 			{ "f2xm1", 0xD9, 0xF0 },
 			{ "fabs", 0xD9, 0xE1 },
@@ -575,7 +609,7 @@
 		};
 		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
-			printf("void %s(const Operand& op) { opR_ModM(op, 0, 3, %d, 0x%02X); }\n", p->name, p->ext, p->code);
+			printf("void %s(const Operand& op) { opR_ModM(op, 0, %d, 0x%02X); }\n", p->name, p->ext, p->code);
 		}
 	}
 	{
@@ -651,7 +685,7 @@
 		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
 			int preCode = 0x38;
-			printf("void %s(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x%02X, 0x66, %d, 0x38); }\n", p->name, p->code, NO);
+			printf("void %s(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x%02X, 0x66, NONE, 0x38); }\n", p->name, p->code);
 		}
 		printf("void palignr(const Mmx& mmx, const Operand& op, int imm) { opMMX(mmx, op, 0x0f, 0x66, static_cast<uint8>(imm), 0x3a); }\n");
 	}
@@ -693,10 +727,15 @@
 			{ 0x41, "phminposuw"},
 			// SSE4.2
 			{ 0x37, "pcmpgtq" },
+			{ 0xde, "aesdec" },
+			{ 0xdf, "aesdeclast" },
+			{ 0xdc, "aesenc" },
+			{ 0xdd, "aesenclast" },
+			{ 0xdb, "aesimc" },
 		};
 		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
-			printf("void %s(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x%02X, 0x66, isXMM_XMMorMEM, %d, 0x38); }\n", p->name, p->code, NO);
+			printf("void %s(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x%02X, 0x66, isXMM_XMMorMEM, NONE, 0x38); }\n", p->name, p->code);
 		}
 	}
 	{
@@ -720,6 +759,8 @@
 			{ 0x61, "pcmpestri" },
 			{ 0x62, "pcmpistrm" },
 			{ 0x63, "pcmpistri" },
+			{ 0x44, "pclmulqdq" },
+			{ 0xdf, "aeskeygenassist" },
 		};
 		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const Tbl *p = &tbl[i];
@@ -867,6 +908,529 @@
 			printf("void %s(const Fpu& reg) { opFpu(reg, 0x%02X, 0x%02X); }\n", p->name, p->code1, p->code2);
 		}
 	}
+	// AVX
+	{ // pd, ps, sd, ss
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			bool only_pd_ps;
+		} tbl[] = {
+			{ 0x58, "add", false },
+			{ 0x5C, "sub", false },
+			{ 0x59, "mul", false },
+			{ 0x5E, "div", false },
+			{ 0x5F, "max", false },
+			{ 0x5D, "min", false },
+			{ 0x54, "and", true },
+			{ 0x55, "andn", true },
+			{ 0x56, "or", true },
+			{ 0x57, "xor", true },
+		};
+		for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			printf("void v%spd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x%02X, true); }\n", p->name, p->code);
+			printf("void v%sps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x%02X, true); }\n", p->name, p->code);
+			if (p->only_pd_ps) continue;
+			printf("void v%ssd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x%02X, false); }\n", p->name, p->code);
+			printf("void v%sss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x%02X, false); }\n", p->name, p->code);
+		}
+	}
+	// (x, x, x/m[, imm]) or (y, y, y/m[, imm])
+	{
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			int type;
+			bool supportYMM;
+			int w;
+			bool hasIMM;
+			bool enableOmit;
+		} tbl[] = {
+			{ 0x0D, "blendpd", MM_0F3A | PP_66, true, 0, true, true },
+			{ 0x0C, "blendps", MM_0F3A | PP_66, true, 0, true, true },
+			{ 0x41, "dppd", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x40, "dpps", MM_0F3A | PP_66, true, 0, true, true },
+			{ 0x42, "mpsadbw", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x0E, "pblendw", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x0B, "roundsd", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x0A, "roundss", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x44, "pclmulqdq", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x0C, "permilps", MM_0F38 | PP_66, true, 0, false, false },
+			{ 0x0D, "permilpd", MM_0F38 | PP_66, true, 0, false, false },
+			{ 0xC2, "cmppd", MM_0F | PP_66, true, -1, true, true },
+			{ 0xC2, "cmpps", MM_0F, true, -1, true, true },
+			{ 0xC2, "cmpsd", MM_0F | PP_F2, false, -1, true, true },
+			{ 0xC2, "cmpss", MM_0F | PP_F3, false, -1, true, true },
+			{ 0x5A, "cvtsd2ss", MM_0F | PP_F2, false, -1, false, true },
+			{ 0x5A, "cvtss2sd", MM_0F | PP_F3, false, -1, false, true },
+			{ 0x21, "insertps", MM_0F3A | PP_66, false, 0, true, true },
+			{ 0x63, "packsswb", MM_0F | PP_66, false, -1, false, true },
+			{ 0x6B, "packssdw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x67, "packuswb", MM_0F | PP_66, false, -1, false, true },
+			{ 0x2B, "packusdw", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xFC, "paddb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xFD, "paddw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xFE, "paddd", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD4, "paddq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xEC, "paddsb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xED, "paddsw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xDC, "paddusb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xDD, "paddusw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x0F, "palignr", MM_0F3A | PP_66, false, -1, true, true },
+
+			{ 0xDB, "pand", MM_0F | PP_66, false, -1, false, true },
+			{ 0xDF, "pandn", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xE0, "pavgb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xE3, "pavgw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x74, "pcmpeqb", MM_0F | PP_66, false, -1, false, true },
+			{ 0x75, "pcmpeqw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x76, "pcmpeqd", MM_0F | PP_66, false, -1, false, true },
+			{ 0x29, "pcmpeqq", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0x64, "pcmpgtb", MM_0F | PP_66, false, -1, false, true },
+			{ 0x65, "pcmpgtw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x66, "pcmpgtd", MM_0F | PP_66, false, -1, false, true },
+			{ 0x37, "pcmpgtq", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0x01, "phaddw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x02, "phaddd", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x03, "phaddsw", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0x05, "phsubw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x06, "phsubd", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x07, "phsubsw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0xF5, "pmaddwd", MM_0F | PP_66, false, -1, false, true },
+			{ 0x04, "pmaddubsw", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0x3C, "pmaxsb", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0xEE, "pmaxsw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x3D, "pmaxsd", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xDE, "pmaxub", MM_0F | PP_66, false, -1, false, true },
+			{ 0x3E, "pmaxuw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x3F, "pmaxud", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0x38, "pminsb", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0xEA, "pminsw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x39, "pminsd", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xDA, "pminub", MM_0F | PP_66, false, -1, false, true },
+			{ 0x3A, "pminuw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x3B, "pminud", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xE4, "pmulhuw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x0B, "pmulhrsw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0xE5, "pmulhw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD5, "pmullw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x40, "pmulld", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xF4, "pmuludq", MM_0F | PP_66, false, -1, false, true },
+			{ 0x28, "pmuldq", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xEB, "por", MM_0F | PP_66, false, -1, false, true },
+			{ 0xF6, "psadbw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x00, "pshufb", MM_0F38 | PP_66, false, -1, false, false },
+
+			{ 0x08, "psignb", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x09, "psignw", MM_0F38 | PP_66, false, -1, false, true },
+			{ 0x0A, "psignd", MM_0F38 | PP_66, false, -1, false, true },
+
+			{ 0xF1, "psllw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xF2, "pslld", MM_0F | PP_66, false, -1, false, true },
+			{ 0xF3, "psllq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xE1, "psraw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xE2, "psrad", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD1, "psrlw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD2, "psrld", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD3, "psrlq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xF8, "psubb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xF9, "psubw", MM_0F | PP_66, false, -1, false, true },
+			{ 0xFA, "psubd", MM_0F | PP_66, false, -1, false, true },
+			{ 0xFB, "psubq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xE8, "psubsb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xE9, "psubsw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xD8, "psubusb", MM_0F | PP_66, false, -1, false, true },
+			{ 0xD9, "psubusw", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x68, "punpckhbw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x69, "punpckhwd", MM_0F | PP_66, false, -1, false, true },
+			{ 0x6A, "punpckhdq", MM_0F | PP_66, false, -1, false, true },
+			{ 0x6D, "punpckhqdq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x60, "punpcklbw", MM_0F | PP_66, false, -1, false, true },
+			{ 0x61, "punpcklwd", MM_0F | PP_66, false, -1, false, true },
+			{ 0x62, "punpckldq", MM_0F | PP_66, false, -1, false, true },
+			{ 0x6C, "punpcklqdq", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0xEF, "pxor", MM_0F | PP_66, false, -1, false, true },
+
+			{ 0x53, "rcpss", MM_0F | PP_F3, false, -1, false, true },
+			{ 0x52, "rsqrtss", MM_0F | PP_F3, false, -1, false, true },
+
+			{ 0xC6, "shufpd", MM_0F | PP_66, true, -1, true, true },
+			{ 0xC6, "shufps", MM_0F, true, -1, true, true },
+
+			{ 0x51, "sqrtsd", MM_0F | PP_F2, false, -1, false, true },
+			{ 0x51, "sqrtss", MM_0F | PP_F3, false, -1, false, true },
+
+			{ 0x15, "unpckhpd", MM_0F | PP_66, true, -1, false, true },
+			{ 0x15, "unpckhps", MM_0F, true, -1, false, true },
+
+			{ 0x14, "unpcklpd", MM_0F | PP_66, true, -1, false, true },
+			{ 0x14, "unpcklps", MM_0F, true, -1, false, true },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			std::string type = type2String(p->type);
+			printf("void v%s(const Xmm& xm1, const Xmm& xm2, const Operand& op%s) { opAVX_X_X_XM(xm1, xm2, op, %s, 0x%02X, %s, %d)%s; }\n"
+				, p->name, p->hasIMM ? ", uint8 imm" : "", type.c_str(), p->code, p->supportYMM ? "true" : "false", p->w, p->hasIMM ? "; db(imm)" : "");
+			if (!p->enableOmit) continue;
+			printf("void v%s(const Xmm& xmm, const Operand& op%s) { opAVX_X_X_XM(xmm, xmm, op, %s, 0x%02X, %s, %d)%s; }\n"
+				, p->name, p->hasIMM ? ", uint8 imm" : "", type.c_str(), p->code, p->supportYMM ? "true" : "false", p->w, p->hasIMM ? "; db(imm)" : "");
+		}
+	}
+	// (x, x/m[, imm]) or (y, y/m[, imm])
+	{
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			int type;
+			bool supportYMM;
+			int w;
+			bool hasIMM;
+		} tbl[] = {
+			{ 0xDF, "aeskeygenassist", MM_0F3A | PP_66, false, 0, true },
+			{ 0x09, "roundpd", MM_0F3A | PP_66, true, 0, true },
+			{ 0x08, "roundps", MM_0F3A | PP_66, true, 0, true },
+			{ 0x05, "permilpd", MM_0F3A | PP_66, true, 0, true },
+			{ 0x04, "permilps", MM_0F3A | PP_66, true, 0, true },
+			{ 0x61, "pcmpestri", MM_0F3A | PP_66, false, 0, true },
+			{ 0x60, "pcmpestrm", MM_0F3A | PP_66, false, 0, true },
+			{ 0x63, "pcmpistri", MM_0F3A | PP_66, false, 0, true },
+			{ 0x62, "pcmpistrm", MM_0F3A | PP_66, false, 0, true },
+			{ 0x0E, "testps", MM_0F38 | PP_66, true, 0, false },
+			{ 0x0F, "testpd", MM_0F38 | PP_66, true, 0, false },
+			{ 0x2F, "comisd", MM_0F | PP_66, false, -1, false },
+			{ 0x2F, "comiss", MM_0F, false, -1, false },
+			{ 0x5B, "cvtdq2ps", MM_0F, true, -1, false },
+			{ 0x5B, "cvtps2dq", MM_0F | PP_66, true, -1, false },
+			{ 0x5B, "cvttps2dq", MM_0F | PP_F3, true, -1, false },
+			{ 0x28, "movapd", MM_0F | PP_66, true, -1, false },
+			{ 0x28, "movaps", MM_0F, true, -1, false },
+			{ 0x12, "movddup", MM_0F | PP_F2, true, -1, false },
+			{ 0x6F, "movdqa", MM_0F | PP_66, true, -1, false },
+			{ 0x6F, "movdqu", MM_0F | PP_F3, true, -1, false },
+			{ 0x16, "movshdup", MM_0F | PP_F3, true, -1, false },
+			{ 0x12, "movsldup", MM_0F | PP_F3, true, -1, false },
+			{ 0x10, "movupd", MM_0F | PP_66, true, -1, false },
+			{ 0x10, "movups", MM_0F, true, -1, false },
+
+			{ 0x1C, "pabsb", MM_0F38 | PP_66, false, -1, false },
+			{ 0x1D, "pabsw", MM_0F38 | PP_66, false, -1, false },
+			{ 0x1E, "pabsd", MM_0F38 | PP_66, false, -1, false },
+			{ 0x41, "phminposuw", MM_0F38 | PP_66, false, -1, false },
+
+			{ 0x20, "pmovsxbw", MM_0F38 | PP_66, false, -1, false },
+			{ 0x21, "pmovsxbd", MM_0F38 | PP_66, false, -1, false },
+			{ 0x22, "pmovsxbq", MM_0F38 | PP_66, false, -1, false },
+			{ 0x23, "pmovsxwd", MM_0F38 | PP_66, false, -1, false },
+			{ 0x24, "pmovsxwq", MM_0F38 | PP_66, false, -1, false },
+			{ 0x25, "pmovsxdq", MM_0F38 | PP_66, false, -1, false },
+
+			{ 0x30, "pmovzxbw", MM_0F38 | PP_66, false, -1, false },
+			{ 0x31, "pmovzxbd", MM_0F38 | PP_66, false, -1, false },
+			{ 0x32, "pmovzxbq", MM_0F38 | PP_66, false, -1, false },
+			{ 0x33, "pmovzxwd", MM_0F38 | PP_66, false, -1, false },
+			{ 0x34, "pmovzxwq", MM_0F38 | PP_66, false, -1, false },
+			{ 0x35, "pmovzxdq", MM_0F38 | PP_66, false, -1, false },
+
+			{ 0x70, "pshufd", MM_0F | PP_66, false, -1, true },
+			{ 0x70, "pshufhw", MM_0F | PP_F3, false, -1, true },
+			{ 0x70, "pshuflw", MM_0F | PP_F2, false, -1, true },
+
+			{ 0x17, "ptest", MM_0F38 | PP_66, false, -1, false },
+			{ 0x53, "rcpps", MM_0F, true, -1, false },
+			{ 0x52, "rsqrtps", MM_0F, true, -1, false },
+
+			{ 0x51, "sqrtpd", MM_0F | PP_66, true, -1, false },
+			{ 0x51, "sqrtps", MM_0F, true, -1, false },
+
+			{ 0x2E, "ucomisd", MM_0F | PP_66, false, -1, false },
+			{ 0x2E, "ucomiss", MM_0F, false, -1, false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			std::string type = type2String(p->type);
+			printf("void v%s(const Xmm& xm, const Operand& op%s) { opAVX_X_XM_IMM(xm, op, %s, 0x%02X, %s, %d%s); }\n"
+				, p->name, p->hasIMM ? ", uint8 imm" : "", type.c_str(), p->code, p->supportYMM ? "true" : "false", p->w, p->hasIMM ? ", imm" : "");
+		}
+	}
+	// (m, x), (m, y)
+	{
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			int type;
+			bool supportYMM;
+			int w;
+		} tbl[] = {
+			{ 0x29, "movapd", MM_0F | PP_66, true, -1 },
+			{ 0x29, "movaps", MM_0F, true, -1 },
+			{ 0x7F, "movdqa", MM_0F | PP_66, true, -1 },
+			{ 0x7F, "movdqu", MM_0F | PP_F3, true, -1 },
+			{ 0x11, "movupd", MM_0F | PP_66, true, -1 },
+			{ 0x11, "movups", MM_0F, true, -1 },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			std::string type = type2String(p->type);
+			printf("void v%s(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, %s, 0x%02X, %s, %d); }\n"
+				, p->name, type.c_str(), p->code, p->supportYMM ? "true" : "false", p->w);
+		}
+	}
+	// (x, x/m), (y, y/m), (x, x, x/m), (y, y, y/m)
+	{
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			int type;
+			bool supportYMM;
+			int w;
+		} tbl[] = {
+			{ 0xD0, "addsubpd", MM_0F | PP_66, true, -1 },
+			{ 0xD0, "addsubps", MM_0F | PP_F2, true, -1 },
+			{ 0x7C, "haddpd", MM_0F | PP_66, true, -1 },
+			{ 0x7C, "haddps", MM_0F | PP_F2, true, -1 },
+			{ 0x7D, "hsubpd", MM_0F | PP_66, true, -1 },
+			{ 0x7D, "hsubps", MM_0F | PP_F2, true, -1 },
+
+			{ 0xDC, "aesenc", MM_0F38 | PP_66, false, 0 },
+			{ 0xDD, "aesenclast", MM_0F38 | PP_66, false, 0 },
+			{ 0xDE, "aesdec", MM_0F38 | PP_66, false, 0 },
+			{ 0xDF, "aesdeclast", MM_0F38 | PP_66, false, 0 },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			std::string type = type2String(p->type);
+			printf("void v%s(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, %s, 0x%02X, %s, %d); }\n"
+				, p->name, type.c_str(), p->code, p->supportYMM ? "true" : "false", p->w);
+		}
+	}
+	// vmaskmov
+	{
+		const char suf[][8] = { "ps", "pd" };
+		for (int i = 0; i < 2; i++) {
+			printf("void vmaskmov%s(const Xmm& xm1, const Xmm& xm2, const Address& addr) { opAVX_X_X_XM(xm1, xm2, addr, MM_0F38 | PP_66, 0x%02X, true, 0); }\n", suf[i], 0x2C + i);
+			printf("void vmaskmov%s(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x%02X, true, 0); }\n", suf[i], 0x2E + i);
+		}
+	}
+	// vmov(h|l)(pd|ps)
+	{
+		const struct Tbl {
+			bool isH;
+			bool isPd;
+			uint8 code;
+		} tbl[] = {
+			{ true, true, 0x16 },
+			{ true, false, 0x16 },
+			{ false, true, 0x12 },
+			{ false, false, 0x12 },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl& p = tbl[i];
+			char c = p.isH ? 'h' : 'l';
+			const char *suf = p.isPd ? "pd" : "ps";
+			const char *type = p.isPd ? "MM_0F | PP_66" : "MM_0F";
+			printf("void vmov%c%s(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !op2.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, op2, %s, 0x%02X, false); }\n"
+				, c, suf, type, p.code);
+			printf("void vmov%c%s(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, %s, 0x%02X, false); }\n"
+				, c, suf, type, p.code + 1);
+		}
+	}
+	// FMA
+	{
+		const struct Tbl {
+			uint8 code;
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ 0x08, "vfmadd", true },
+			{ 0x09, "vfmadd", false },
+			{ 0x06, "vfmaddsub", true },
+			{ 0x07, "vfmsubadd", true },
+			{ 0x0A, "vfmsub", true },
+			{ 0x0B, "vfmsub", false },
+			{ 0x0C, "vfnmadd", true },
+			{ 0x0D, "vfnmadd", false },
+			{ 0x0E, "vfnmsub", true },
+			{ 0x0F, "vfnmsub", false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			for (int j = 0; j < 2; j++) {
+				const char suf[][2][8] = {
+					{ "pd", "ps" },
+					{ "sd", "ss" },
+				};
+				for (int k = 0; k < 3; k++) {
+					const struct Ord {
+						const char *str;
+						uint8 code;
+					} ord[] = {
+						{ "132", 0x90 },
+						{ "213", 0xA0 },
+						{ "231", 0xB0 },
+					};
+					printf("void %s%s%s(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x%02X, %s, %d); }\n"
+						, tbl[i].name, ord[k].str, suf[tbl[i].supportYMM ? 0 : 1][j], tbl[i].code + ord[k].code, tbl[i].supportYMM ? "true" : "false", j == 0 ? 1 : 0);
+				}
+			}
+		}
+	}
+	// FMA others
+	{
+		printf("void vaesimc(const Xmm& x, const Operand& op) { opAVX_X_XM_IMM(x, op, MM_0F38 | PP_66, 0xDB, false, 0); }\n");
+
+		printf("void vbroadcastf128(const Ymm& y, const Address& addr) { opAVX_X_XM_IMM(y, addr, MM_0F38 | PP_66, 0x1A, true, 0); }\n");
+		printf("void vbroadcastsd(const Ymm& y, const Address& addr) { opAVX_X_XM_IMM(y, addr, MM_0F38 | PP_66, 0x19, true, 0); }\n");
+		printf("void vbroadcastss(const Xmm& x, const Address& addr) { opAVX_X_XM_IMM(x, addr, MM_0F38 | PP_66, 0x18, true, 0); }\n");
+
+		printf("void vextractf128(const Operand& op, const Ymm& y, uint8 imm) { opAVX_X_XM_IMM(y, cvtReg(op, op.isXMM(), Operand::YMM), MM_0F3A | PP_66, 0x19, true, 0, imm); }\n");
+		printf("void vinsertf128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { opAVX_X_X_XM(y1, y2, cvtReg(op, op.isXMM(), Operand::YMM), MM_0F3A | PP_66, 0x18, true, 0); db(imm); }\n");
+		printf("void vperm2f128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { opAVX_X_X_XM(y1, y2, op, MM_0F3A | PP_66, 0x06, true, 0); db(imm); }\n");
+
+		printf("void vlddqu(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_F2, 0xF0, true, 0); }\n");
+		printf("void vldmxcsr(const Address& addr) { opAVX_X_X_XM(xm2, xm0, addr, MM_0F, 0xAE, false, -1); }\n");
+		printf("void vstmxcsr(const Address& addr) { opAVX_X_X_XM(xm3, xm0, addr, MM_0F, 0xAE, false, -1); }\n");
+		printf("void vmaskmovdqu(const Xmm& x1, const Xmm& x2) { opAVX_X_X_XM(x1, xm0, x2, MM_0F | PP_66, 0xF7, false, -1); }\n");
+
+		printf("void vpextrb(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(i32e) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x14, false); db(imm); }\n");
+		printf("void vpextrw(const Reg& r, const Xmm& x, uint8 imm) { opAVX_X_X_XM(x, xm0, Xmm(r.getIdx()), MM_0F | PP_66, 0xC5, false); db(imm); }\n");
+		printf("void vpextrw(const Address& addr, const Xmm& x, uint8 imm) { opAVX_X_X_XM(x, xm0, addr, MM_0F3A | PP_66, 0x15, false); db(imm); }\n");
+		printf("void vpextrd(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x16, false, 0); db(imm); }\n");
+
+		printf("void vpinsrb(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x20, false); db(imm); }\n");
+		printf("void vpinsrb(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x20, false); db(imm); }\n");
+
+		printf("void vpinsrw(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F | PP_66, 0xC4, false); db(imm); }\n");
+		printf("void vpinsrw(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F | PP_66, 0xC4, false); db(imm); }\n");
+
+		printf("void vpinsrd(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
+		printf("void vpinsrd(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
+
+		printf("void vpmovmskb(const Reg32e& r, const Xmm& x) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, x, MM_0F | PP_66, 0xD7, false); }\n");
+
+	}
+	// (x, x, imm), (x, imm)
+	{
+		const struct Tbl {
+			const char *name;
+			uint8 code;
+			int idx;
+		} tbl[] = {
+			{ "pslldq", 0x73, 7 },
+			{ "psrldq", 0x73, 3 },
+			{ "psllw", 0x71, 6 },
+			{ "pslld", 0x72, 6 },
+			{ "psllq", 0x73, 6 },
+			{ "psraw", 0x71, 4 },
+			{ "psrad", 0x72, 4 },
+			{ "psrlw", 0x71, 2 },
+			{ "psrld", 0x72, 2 },
+			{ "psrlq", 0x73, 2 },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl& p = tbl[i];
+			printf("void v%s(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm%d, x1, x2, MM_0F | PP_66, 0x%02X, false); db(imm); }\n", p.name, p.idx, p.code);
+			printf("void v%s(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm%d, x, x, MM_0F | PP_66, 0x%02X, false); db(imm); }\n", p.name, p.idx, p.code);
+		}
+	}
+	// 4-op
+	{
+		printf("void vblendvpd(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4B, true); db(x4.getIdx() << 4); }\n");
+		printf("void vblendvpd(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4B, true); db(x4.getIdx() << 4); }\n");
+
+		printf("void vblendvps(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4A, true); db(x4.getIdx() << 4); }\n");
+		printf("void vblendvps(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4A, true); db(x4.getIdx() << 4); }\n");
+
+		printf("void vpblendvb(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4C, false); db(x4.getIdx() << 4); }\n");
+		printf("void vpblendvb(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4C, false); db(x4.getIdx() << 4); }\n");
+	}
+	// mov
+	{
+		printf("void vmovd(const Xmm& x, const Reg32& reg) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x6E, false, 0); }\n");
+		printf("void vmovd(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x6E, false, 0); }\n");
+		printf("void vmovd(const Reg32& reg, const Xmm& x) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x7E, false, 0); }\n");
+		printf("void vmovd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x7E, false, 0); }\n");
+
+		printf("void vmovhlps(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F, 0x12, false); }\n");
+		printf("void vmovlhps(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F, 0x16, false); }\n");
+
+		printf("void vmovmskpd(const Reg& r, const Xmm& x) { if (!r.isBit(i32e)) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x.isXMM() ? Xmm(r.getIdx()) : Ymm(r.getIdx()), x.isXMM() ? xm0 : ym0, x, MM_0F | PP_66, 0x50, true, 0); }\n");
+		printf("void vmovmskps(const Reg& r, const Xmm& x) { if (!r.isBit(i32e)) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x.isXMM() ? Xmm(r.getIdx()) : Ymm(r.getIdx()), x.isXMM() ? xm0 : ym0, x, MM_0F, 0x50, true, 0); }\n");
+
+		printf("void vmovntdq(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_66, 0xE7, true); }\n");
+		printf("void vmovntpd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_66, 0x2B, true); }\n");
+		printf("void vmovntps(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F, 0x2B, true); }\n");
+		printf("void vmovntdqa(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F38 | PP_66, 0x2A, false); }\n");
+
+		// vmovsd, vmovss
+		for (int i = 0; i < 2; i++) {
+			char c1 = i == 0 ? 'd' : 's';
+			char c2 = i == 0 ? '2' : '3';
+			printf("void vmovs%c(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F | PP_F%c, 0x10, false); }\n", c1, c2);
+			printf("void vmovs%c(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F%c, 0x10, false); }\n", c1, c2);
+			printf("void vmovs%c(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F%c, 0x11, false); }\n", c1, c2);
+		}
+	}
+	// cvt
+	{
+		printf("void vcvtss2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2D, false, 0); }\n");
+		printf("void vcvttss2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2C, false, 0); }\n");
+		printf("void vcvtsd2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2D, false, 0); }\n");
+		printf("void vcvttsd2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2C, false, 0); }\n");
+
+		printf("void vcvtsi2ss(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !(op2.isREG(i32e) || op2.isMEM())) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, cvtReg(op2, op2.isREG(), Operand::XMM), MM_0F | PP_F3, 0x2A, false, (op1.isMEM() || op2.isMEM()) ? -1 : (op1.isREG(32) || op2.isREG(32)) ? 0 : 1); }\n");
+		printf("void vcvtsi2sd(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !(op2.isREG(i32e) || op2.isMEM())) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, cvtReg(op2, op2.isREG(), Operand::XMM), MM_0F | PP_F2, 0x2A, false, (op1.isMEM() || op2.isMEM()) ? -1 : (op1.isREG(32) || op2.isREG(32)) ? 0 : 1); }\n");
+
+		printf("void vcvtps2pd(const Xmm& x, const Operand& op) { if (!op.isMEM() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, cvtReg(op, !op.isMEM(), x.isXMM() ? Operand::XMM : Operand::YMM), MM_0F, 0x5A, true); }\n");
+		printf("void vcvtdq2pd(const Xmm& x, const Operand& op) { if (!op.isMEM() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, cvtReg(op, !op.isMEM(), x.isXMM() ? Operand::XMM : Operand::YMM), MM_0F | PP_F3, 0xE6, true); }\n");
+
+		printf("void vcvtpd2ps(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_66, 0x5A, true); }\n");
+		printf("void vcvtpd2dq(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_F2, 0xE6, true); }\n");
+		printf("void vcvttpd2dq(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_66, 0xE6, true); }\n");
+	}
+	// x64
+	{
+
+		printf("#ifdef XBYAK64\n");
+		printf("void vmovq(const Xmm& x, const Reg64& reg) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x6E, false, 1); }\n");
+		printf("void vmovq(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F3, 0x7E, false, -1); }\n");
+		printf("void vmovq(const Reg64& reg, const Xmm& x) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x7E, false, 1); }\n");
+		printf("void vmovq(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0xD6, false, -1); }\n");
+		printf("void vmovq(const Xmm& x1, const Xmm& x2) { opAVX_X_X_XM(x1, xm0, x2, MM_0F | PP_F3, 0x7E, false, -1); }\n");
+
+		printf("void vpextrq(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x16, false, 1); db(imm); }\n");
+
+		printf("void vpinsrq(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 1); db(imm); }\n");
+		printf("void vpinsrq(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 1); db(imm); }\n");
+
+		printf("void vcvtss2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2D, false, 1); }\n");
+		printf("void vcvttss2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2C, false, 1); }\n");
+		printf("void vcvtsd2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2D, false, 1); }\n");
+		printf("void vcvttsd2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2C, false, 1); }\n");
+		printf("#endif\n");
+	}
 }
 
 int main()
diff --git a/readme.txt b/readme.txt
index f24a0f6..7dabbc9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
 

-    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 2.29

+    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 2.99

 

 -----------------------------------------------------------------------------

 ◎概要

@@ -14,12 +14,12 @@
     xbyak.hをインクルードするだけですぐ利用することができます.

     C++の枠組み内で閉じているため,外部アセンブラは不要です.

     32bit/64bit両対応です.

-    対応ニーモニック:特権命令除くx86, MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(一部)

+    対応ニーモニック:特権命令除くx86, MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(一部)/AVX

 

 ・Windows Xp(32bit, 64bit), Vista/Linux(32bit, 64bit)/Intel Mac対応

-    Windows Xp上ではVC2005 Express Ed., VC2008

+    Windows Xp上ではVC2005 Express Ed., VC2008, VC2010,

     Windows Vista

-    Linux (kernel 2.4.32)上ではgcc 4.3.0, CentOS 5.1上ではgcc 4.1.2

+    Linux (kernel 2.4.32)上ではgcc 4.5.0, CentOS 5.1上ではgcc 4.1.2

     Intel Mac

     などで動作確認をしています.

 

@@ -199,6 +199,9 @@
 -----------------------------------------------------------------------------

 ◎履歴

 

+2011/02/04 ver 2.99 beta support AVX

+2010/12/08 ver 2.31 fix ptr [rip + 32bit offset], support rtdscp

+2010/10/19 ver 2.30 support pclmulqdq, aesdec, aesdeclast, aesenc, aesenclast, aesimc, aeskeygenassist

 2010/07/07 ver 2.29 fix call(<label>)

 2010/06/17 ver 2.28 move some member functions to public

 2010/06/01 ver 2.27 support encoding of mov(reg64, imm) like yasm(not nasm)

diff --git a/readme_e.txt b/readme_e.txt
index 9efb5d2..8488830 100644
--- a/readme_e.txt
+++ b/readme_e.txt
@@ -1,5 +1,5 @@
 
-    Xbyak 2.29 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+    Xbyak 2.99 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
 
 -----------------------------------------------------------------------------
 <Abstract>
@@ -12,11 +12,11 @@
 header file only
     you can use Xbyak's functions at once if xbyak.h is included.
 
-MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(partial) are available.
+MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(partial)/AVX are available.
 
 Windows Xp(32bit, 64bit), Vista, Linux(32bit, 64bit), Intel Mac ready
-support Visual Studio C++ 2005 Express Ed., VC2008 Pro,
-mingw 3.4.2, icc 7.2, gcc 4.1.1, and so on.
+support Visual Studio C++ 2005 Express Ed., VC2008 Pro, VC2010,
+mingw 3.4.2, icc 7.2, gcc 4.5, and so on.
 
 Note: "-fno-operator-names" option is required on gcc to avoid analyzing
 "and", "or", etc. as operators.
@@ -148,6 +148,9 @@
 -----------------------------------------------------------------------------
 <History>
 
+2011/Feb/04 ver 2.99 beta support AVX
+2010/Dec/08 ver 2.31 fix ptr [rip + 32bit offset], support rdtscp
+2010/Oct/19 ver 2.30 support pclmulqdq, aesdec, aesdeclast, aesenc, aesenclast, aesimc, aeskeygenassist
 2010/Jun/07 ver 2.29 fix call(<label>)
 2010/Jun/17 ver 2.28 move some member functions to public
 2010/Jun/01 ver 2.27 support encoding of mov(reg64, imm) like yasm(not nasm)
@@ -187,5 +190,5 @@
 MITSUNARI Shigeo(herumi at nifty dot com)
 
 ---
-$Revision: 1.49 $
-$Date: 2010/07/07 01:00:04 $
+$Revision: 1.54 $
+$Date: 2011/02/04 03:27:59 $
diff --git a/sample/Makefile b/sample/Makefile
index 011e7f2..8df551c 100644
--- a/sample/Makefile
+++ b/sample/Makefile
@@ -14,12 +14,12 @@
 ifeq ($(BIT),64)
 TARGET += test64 bf64 memfunc64 test_util64
 ifeq ($(BOOST_EXIT),1)
-TARGET += calc64
+TARGET += calc64 calc2_64
 endif
 endif
 
 ifeq ($(BOOST_EXIT),1)
-TARGET += calc
+TARGET += calc calc2
 endif
 
 all: $(TARGET)
@@ -38,6 +38,10 @@
 	g++ $(CFLAGS) calc.cpp -o $@ -m32
 calc64:
 	g++ $(CFLAGS) calc.cpp -o $@ -m64
+#calc2:
+#	g++ $(CFLAGS) calc2.cpp -o $@ -m32
+#calc2_64:
+#	g++ $(CFLAGS) calc2.cpp -o $@ -m64
 
 bf:
 	g++ $(CFLAGS) bf.cpp -o $@ -m32
@@ -67,10 +71,13 @@
 quantize : quantize.cpp $(XBYAK_INC)
 calc : calc.cpp $(XBYAK_INC)
 calc64 : calc.cpp $(XBYAK_INC)
+calc2 : calc2.cpp $(XBYAK_INC)
+calc2_64 : calc2.cpp $(XBYAK_INC)
 bf : bf.cpp $(XBYAK_INC)
 bf64 : bf.cpp $(XBYAK_INC)
 memfunc : memfunc.cpp $(XBYAK_INC)
 memfunc64 : memfunc.cpp $(XBYAK_INC)
 toyvm : toyvm.cpp $(XBYAK_INC)
 test_util : test_util.cpp $(XBYAK_INC) ../xbyak/xbyak_util.h
+test_util2 : test_util.cpp $(XBYAK_INC) ../xbyak/xbyak_util.h
 
diff --git a/sample/bf.cpp b/sample/bf.cpp
index 5f5a80e..8b9190f 100644
--- a/sample/bf.cpp
+++ b/sample/bf.cpp
@@ -29,7 +29,7 @@
 		is.unget();
 		return count;
 	}
-	Brainfuck(std::istream& is) : CodeGenerator(10000)
+	Brainfuck(std::istream& is) : CodeGenerator(100000)
 	{
 		// void (*)(void* putchar, void* getchar, int *stack)
 		using namespace Xbyak;
@@ -160,7 +160,7 @@
 
 void dump(const Xbyak::uint8 *code, size_t size)
 {
-	puts("#include <stdio.h>\nstatic int stack[32768];\nstatic const unsigned char code[] = {");
+	puts("#include <stdio.h>\nstatic int stack[128 * 1024];\nstatic const unsigned char code[] = {");
 	for (size_t i = 0; i < size; i++) {
 		printf("0x%02x,", code[i]); if ((i % 16) == 15) putchar('\n');
 	}
@@ -183,9 +183,9 @@
 int main(int argc, char *argv[])
 {
 #ifdef XBYAK32
-	puts("32bit mode");
+	fprintf(stderr, "32bit mode\n");
 #else
-	puts("64bit mode");
+	fprintf(stderr, "64bit mode\n");
 #endif
 	if (argc == 1) {
 		fprintf(stderr, "bf filename.bf [0|1]\n");
@@ -193,13 +193,18 @@
 	}
 	std::ifstream ifs(argv[1]);
 	int mode = argc == 3 ? atoi(argv[2]) : 0;
-	Brainfuck bf(ifs);
-	if (mode == 0) {
-		static int stack[32768];
-		((void (*)(void*, void*, int *))bf.getCode())((void*)putchar, (void*)getchar, stack);
-	} else {
-		dump(bf.getCode(), bf.getSize());
+	try {
+		Brainfuck bf(ifs);
+		if (mode == 0) {
+			static int stack[128 * 1024];
+			((void (*)(void*, void*, int *))bf.getCode())((void*)putchar, (void*)getchar, stack);
+		} else {
+			dump(bf.getCode(), bf.getSize());
+		}
+	} catch (Xbyak::Error err) {
+		printf("ERR:%s(%d)\n", Xbyak::ConvertErrorToString(err), err);
+	} catch (...) {
+		printf("unknown error\n");
 	}
-	return 0;
 }
 
diff --git a/sample/calc.cpp b/sample/calc.cpp
index e4ecf6d..356b3b3 100644
--- a/sample/calc.cpp
+++ b/sample/calc.cpp
@@ -1,12 +1,12 @@
 /*
 	@author herumi
-	@date $Date: 2010/04/15 06:52:07 $
+	@date $Date: 2010/11/17 02:58:03 $
 
-	tiny calculator 2
+	tiny calculator
 	This program generates a function to calc the value of
 	polynomial given by user in run-time.
-	use boost::sprit
-
+	use boost::spirit::classic
+	see calc2.cpp for new version of boost::spirit
 */
 #include <stdio.h>
 #include <sstream>
@@ -16,8 +16,6 @@
 	#pragma warning(disable : 4127) // for boost(constant condition)
 	#pragma warning(disable : 4512) // for boost
 #endif
-//#include <boost/spirit/iterator/file_iterator.hpp>
-//#include <boost/spirit/core.hpp>
 #include <boost/spirit/include/classic_file_iterator.hpp>
 #include <boost/spirit/include/classic_core.hpp>
 #include <boost/bind.hpp>
diff --git a/sample/test0.cpp b/sample/test0.cpp
index b3f7a93..c7504d1 100644
--- a/sample/test0.cpp
+++ b/sample/test0.cpp
@@ -138,6 +138,5 @@
 	} catch (...) {
 		printf("unknown error\n");
 	}
-	return 0;
 }
 
diff --git a/sample/test_util.cpp b/sample/test_util.cpp
index cdca766..99035f1 100644
--- a/sample/test_util.cpp
+++ b/sample/test_util.cpp
@@ -4,6 +4,15 @@
 
 #define NUM_OF_ARRAY(x) (sizeof(x) / sizeof(x[0]))
 
+struct PopCountTest : public Xbyak::CodeGenerator {
+	PopCountTest(int n)
+	{
+		mov(eax, n);
+		popcnt(eax, eax);
+		ret();
+	}
+};
+
 void putCPUinfo()
 {
 	using namespace Xbyak::util;
@@ -27,18 +36,34 @@
 		{ Cpu::tE3DN, "e3dn" },
 		{ Cpu::tSSE4a, "sse4a" },
 		{ Cpu::tSSE5, "sse5" },
+		{ Cpu::tAESNI, "aesni" },
+		{ Cpu::tRDTSCP, "rdtscp" },
+		{ Cpu::tOSXSACE, "osxsace(xgetvb)" },
+		{ Cpu::tPCLMULQDQ, "pclmulqdq" },
+		{ Cpu::tAVX, "avx" },
+		{ Cpu::tFMA, "fma" },
 	};
 	for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 		if (cpu.has(tbl[i].type)) printf(" %s", tbl[i].str);
 	}
 	printf("\n");
+	if (cpu.has(Cpu::tPOPCNT)) {
+		const int n = 0x12345678; // bitcount = 13
+		const int ok = 13;
+		int r = ((int (*)())(PopCountTest(n).getCode()))();
+		if (r == ok) {
+			puts("popcnt ok");
+		} else {
+			printf("popcnt ng %d %d\n", r, ok);
+		}
+	}
 }
 
 #ifdef XBYAK32
-struct EipTest : public Xbyak::util::EnableSetEip<Xbyak::CodeGenerator> {
+struct EipTest : public Xbyak::CodeGenerator {
 	EipTest()
 	{
-		setEipTo(eax);
+		Xbyak::util::setEipTo(this, eax);
 		ret();
 	}
 };
diff --git a/test/Makefile b/test/Makefile
index d8e66ff..89c5940 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -32,6 +32,11 @@
 	./test_address.sh 64
 	./jmp
 
+test_avx:
+	./test_avx.sh
+	./test_avx.sh Y
+	./test_avx.sh 64
+	./test_avx.sh Y64
 clean:
 	rm -rf *.o $(TARGET)
 
diff --git a/test/make_nm.cpp b/test/make_nm.cpp
index 105f29a..6f700b9 100644
--- a/test/make_nm.cpp
+++ b/test/make_nm.cpp
@@ -8,7 +8,7 @@
 const int bitEnd = 64;
 
 const uint64 MMX = 1ULL << 0;
-const uint64 XMM = 1ULL << 1;
+const uint64 _XMM = 1ULL << 1;
 const uint64 _MEM = 1ULL << 2;
 const uint64 _REG32 = 1ULL << 3;
 const uint64 EAX = 1ULL << 4;
@@ -30,15 +30,18 @@
 const uint64 CL = 1ULL << 20;
 const uint64 MEM_ONLY_DISP = 1ULL << 21;
 const uint64 NEG32 = 1ULL << 23;
+const uint64 _YMM = 1ULL << 24;
 #ifdef XBYAK64
-const uint64 _MEMe = 1ULL << 22;
-const uint64 REG32_2 = 1ULL << 24; // r8d, ...
-const uint64 REG16_2 = 1ULL << 25; // r8w, ...
-const uint64 REG8_2 = 1ULL << 26; // r8b, ...
-const uint64 REG8_3 = 1ULL << 27; // spl, ...
-const uint64 _REG64 = 1ULL << 28; // rax, ...
-const uint64 _REG64_2 = 1ULL << 29; // r8, ...
-const uint64 RAX = 1ULL << 30;
+const uint64 _MEMe = 1ULL << 25;
+const uint64 REG32_2 = 1ULL << 26; // r8d, ...
+const uint64 REG16_2 = 1ULL << 27; // r8w, ...
+const uint64 REG8_2 = 1ULL << 28; // r8b, ...
+const uint64 REG8_3 = 1ULL << 29; // spl, ...
+const uint64 _REG64 = 1ULL << 30; // rax, ...
+const uint64 _REG64_2 = 1ULL << 31; // r8, ...
+const uint64 RAX = 1ULL << 32;
+const uint64 _XMM2 = 1ULL << 33;
+const uint64 _YMM2 = 1ULL << 34;
 #else
 const uint64 _MEMe = 0;
 const uint64 REG32_2 = 0;
@@ -48,6 +51,8 @@
 const uint64 _REG64 = 0;
 const uint64 _REG64_2 = 0;
 const uint64 RAX = 0;
+const uint64 _XMM2 = 0;
+const uint64 _YMM2 = 0;
 #endif
 const uint64 REG64 = _REG64 | _REG64_2 | RAX;
 const uint64 REG32 = _REG32 | REG32_2 | EAX;
@@ -55,16 +60,18 @@
 const uint64 REG32e = REG32 | REG64;
 const uint64 REG8 = _REG8 | REG8_2|AL;
 const uint64 MEM = _MEM | _MEMe;
-const uint64 MEM64 = 1ULL << 31;
-const uint64 ST0 = 1ULL << 32;
-const uint64 STi = 1ULL << 33;
+const uint64 MEM64 = 1ULL << 35;
+const uint64 ST0 = 1ULL << 36;
+const uint64 STi = 1ULL << 37;
+const uint64 XMM = _XMM | _XMM2;
+const uint64 YMM = _YMM | _YMM2;
 const uint64 NOPARA = 1ULL << (bitEnd - 1);
 
 class Test {
 	const bool isXbyak_;
 	int funcNum_;
 	// check all op1, op2, op3
-	void put(const char *nm, uint64 op1 = NOPARA, uint64 op2 = NOPARA, uint64 op3 = NOPARA) const
+	void put(const char *nm, uint64 op1 = NOPARA, uint64 op2 = NOPARA, uint64 op3 = NOPARA, uint64 op4 = NOPARA) const
 	{
 		for (int i = 0; i < bitEnd; i++) {
 			if ((op1 & (1ULL << i)) == 0) continue;
@@ -72,13 +79,17 @@
 				if ((op2 & (1ULL << j)) == 0) continue;
 				for (int k = 0; k < bitEnd; k++) {
 					if ((op3 & (1ULL << k)) == 0) continue;
-					printf("%s ", nm);
-					if (isXbyak_) printf("(");
-					if (!(op1 & NOPARA)) printf("%s", get(1ULL << i));
-					if (!(op2 & NOPARA)) printf(", %s", get(1ULL << j));
-					if (!(op3 & NOPARA)) printf(", %s", get(1ULL << k));
-					if (isXbyak_) printf("); dump();");
-					printf("\n");
+					for (int s = 0; s < bitEnd; s++) {
+						if ((op4 & (1ULL << s)) == 0) continue;
+						printf("%s ", nm);
+						if (isXbyak_) printf("(");
+						if (!(op1 & NOPARA)) printf("%s", get(1ULL << i));
+						if (!(op2 & NOPARA)) printf(", %s", get(1ULL << j));
+						if (!(op3 & NOPARA)) printf(", %s", get(1ULL << k));
+						if (!(op4 & NOPARA)) printf(", %s", get(1ULL << s));
+						if (isXbyak_) printf("); dump();");
+						printf("\n");
+					}
 				}
 			}
 		}
@@ -125,23 +136,36 @@
 				};
 				return MmxTbl[idx];
 			}
-		case XMM:
+		case _XMM:
 			{
-				static const char XmmTbl[][6] = {
+				static const char tbl[][6] = {
 					"xmm0", "xmm1", "xmm2", "xmm3", "xmm4", "xmm5", "xmm6", "xmm7",
+				};
+				return tbl[idx];
+			}
+		case _YMM:
+			{
+				static const char tbl[][6] = {
+					"ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7"
+				};
+				return tbl[idx];
+			}
+#ifdef XBYAK64
+		case _XMM2:
+			{
+				static const char tbl[][6] = {
 					"xmm8", "xmm9", "xmm10", "xmm11", "xmm12", "xmm13", "xmm14", "xmm15"
 				};
-				static const char MyXmmTbl[][6] = {
-					"xm0", "xm1", "xm2", "xm3", "xm4", "xm5", "xm6", "xm7",
-					"xm8", "xm9", "xm10", "xm11", "xm12", "xm13", "xm14", "xm15"
-				};
-#ifdef XBYAK64
-				const int adj = 4;
-#else
-				const int adj = 0;
-#endif
-				return isXbyak_ ? MyXmmTbl[idx + adj] : XmmTbl[idx + adj];
+				return tbl[idx];
 			}
+		case _YMM2:
+			{
+				static const char tbl[][6] = {
+					"ymm0", "ymm1", "ymm2", "ymm3", "ymm4", "ymm5", "ymm6", "ymm7",
+				};
+				return tbl[idx];
+			}
+#endif
 		case _MEM:
 			return isXbyak_ ? "ptr[eax+ecx+3]" : "[eax+ecx+3]";
 		case _MEMe:
@@ -268,7 +292,7 @@
 	}
 	void putSIMPLE() const
 	{
-		const char tbl[][10] = {
+		const char tbl[][20] = {
 #ifdef XBYAK64
 			"cdqe",
 #else
@@ -325,6 +349,10 @@
 			"popf",
 			"pushf",
 
+			"xgetbv",
+			"vzeroall",
+			"vzeroupper",
+
 			"f2xm1",
 			"fabs",
 			"faddp",
@@ -373,6 +401,7 @@
 
 		put("bswap", REG32e);
 		put("lea", REG32e, MEM);
+#if 0
 #ifdef XBYAK64
 		put("jmp", REG64);
 		put("call", REG64);
@@ -381,8 +410,40 @@
 		put("call", REG32);
 #endif
 		put("jmp", MEM);
+		put("jmp", MEM);
+		put("jmp", MEM);
 		put("call", REG16|MEM|MEM_ONLY_DISP);
 		put("call", "getCode() + 5", "$ + 5");
+#endif
+	}
+	void putJmp() const
+	{
+#ifdef XBYAK64
+		put("jmp", REG64);
+		put("call", REG64);
+#else
+		put("jmp", REG32);
+		put("call", REG32);
+#endif
+		put("jmp", MEM);
+		put("jmp", MEM);
+		put("jmp", MEM);
+		put("call", REG16|MEM|MEM_ONLY_DISP);
+#ifndef USE_YASM
+		// call(ptr [getCode() + 5]); means to construct the opecode of "call"
+		// after calling getCode().
+		// Its behavior is same as NASM(MASM). YASM makes different opecode.
+		put("call", "getCode() + 5", "$ + 5");
+#endif
+
+#ifdef XBYAK64
+		put("jmp", "ptr[(void*)0x12345678]", "[0x12345678]");
+		put("call", "ptr[(void*)0x12345678]", "[0x12345678]");
+#ifdef USE_YASM
+		put("jmp", "ptr[rip + 0x12345678]", "[rip+0x12345678]");
+		put("call", "ptr[rip + 0x12345678]", "[rip+0x12345678]");
+#endif
+#endif
 	}
 	void putMMX1() const
 	{
@@ -642,8 +703,8 @@
 	{
 		static const struct Tbl {
 			const char *name;
-			int op1;
-			int op2;
+			uint64 op1;
+			uint64 op2;
 		} tbl[] = {
 			{ "cvtpi2ps", XMM, MMX|MEM },
 			{ "cvtps2pi", MMX, XMM|MEM },
@@ -993,6 +1054,11 @@
 			"pmulld",
 			"phminposuw",
 			"pcmpgtq",
+			"aesdec",
+			"aesdeclast",
+			"aesenc",
+			"aesenclast",
+			"aesimc",
 		};
 		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const char *p = tbl[i];
@@ -1016,6 +1082,8 @@
 			"pcmpestri",
 			"pcmpistrm",
 			"pcmpistri",
+			"pclmulqdq",
+			"aeskeygenassist",
 		};
 		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
 			const char *p = tbl[i];
@@ -1035,6 +1103,10 @@
 		put("popcnt", REG64, REG64|MEM);
 		put("crc32", REG32, REG8|REG16|REG32|MEM8|MEM16|MEM32);
 		put("crc32", REG64, REG64|REG8|MEM8);
+#ifdef XBYAK64
+		put("pextrq", REG64|MEM, XMM, IMM);
+		put("pinsrq", XMM, REG64|MEM, IMM);
+#endif
 	}
 	void putFpuMem16_32() const
 	{
@@ -1140,6 +1212,545 @@
 			put(tbl[i], STi);
 		}
 	}
+	void putAVX1()
+	{
+		const struct Tbl {
+			const char *name;
+			bool only_pd_ps;
+		} tbl[] = {
+			{ "add", false },
+			{ "sub", false },
+			{ "mul", false },
+			{ "div", false },
+			{ "max", false },
+			{ "min", false },
+			{ "and", true },
+			{ "andn", true },
+			{ "or", true },
+			{ "xor", true },
+
+			{ "addsub", true },
+			{ "hadd", true },
+			{ "hsub", true },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const struct Suf {
+				const char *suf;
+				bool supportYMM;
+			} suf[] = {
+				{ "pd", true },
+				{ "ps", true },
+				{ "sd", false },
+				{ "ss", false },
+			};
+			for (size_t j = 0; j < NUM_OF_ARRAY(suf); j++) {
+				if (tbl[i].only_pd_ps && j == 2) break;
+				std::string name = std::string("v") + tbl[i].name + suf[j].suf;
+				const char *p = name.c_str();
+				put(p, XMM, XMM | MEM);
+				put(p, XMM, XMM, XMM | MEM);
+				if (!suf[j].supportYMM) continue;
+				put(p, YMM, YMM | MEM);
+				put(p, YMM, YMM, YMM | MEM);
+			}
+		}
+	}
+	void putAVX_X_X_XM_omit()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vaesenc", false },
+			{ "vaesenclast", false },
+			{ "vaesdec", false },
+			{ "vaesdeclast", false },
+			{ "vcvtsd2ss", false },
+			{ "vcvtss2sd", false },
+			{ "vpacksswb", false },
+			{ "vpackssdw", false },
+			{ "vpackuswb", false },
+			{ "vpackusdw", false },
+
+			{ "vpaddb", false },
+			{ "vpaddw", false },
+			{ "vpaddd", false },
+			{ "vpaddq", false },
+
+			{ "vpaddsb", false },
+			{ "vpaddsw", false },
+
+			{ "vpaddusb", false },
+			{ "vpaddusw", false },
+
+			{ "vpand", false },
+			{ "vpandn", false },
+			{ "vpavgb", false },
+			{ "vpavgw", false },
+
+			{ "vpcmpeqb", false },
+			{ "vpcmpeqw", false },
+			{ "vpcmpeqd", false },
+//			{ "vpcmpeqq", false }, // QQQ : nasm(2.09.04) may be wrong
+
+			{ "vpcmpgtb", false },
+			{ "vpcmpgtw", false },
+			{ "vpcmpgtd", false },
+//			{ "vpcmpgtq", false }, // QQQ
+
+			{ "vphaddw", false },
+			{ "vphaddd", false },
+			{ "vphaddsw", false },
+
+			{ "vphsubw", false },
+			{ "vphsubd", false },
+			{ "vphsubsw", false },
+			{ "vpmaddwd", false },
+			{ "vpmaddubsw", false },
+
+			{ "vpmaxsb", false },
+			{ "vpmaxsw", false },
+			{ "vpmaxsd", false },
+
+			{ "vpmaxub", false },
+			{ "vpmaxuw", false },
+			{ "vpmaxud", false },
+
+			{ "vpminsb", false },
+			{ "vpminsw", false },
+			{ "vpminsd", false },
+
+			{ "vpminub", false },
+			{ "vpminuw", false },
+			{ "vpminud", false },
+
+			{ "vpmulhuw", false },
+			{ "vpmulhrsw", false },
+			{ "vpmulhw", false },
+			{ "vpmullw", false },
+			{ "vpmulld", false },
+
+			{ "vpmuludq", false },
+			{ "vpmuldq", false },
+
+			{ "vpor", false },
+			{ "vpsadbw", false },
+
+			{ "vpsignb", false },
+			{ "vpsignw", false },
+			{ "vpsignd", false },
+
+			{ "vpsllw", false },
+			{ "vpslld", false },
+			{ "vpsllq", false },
+
+			{ "vpsraw", false },
+			{ "vpsrad", false },
+			{ "vpsrlw", false },
+			{ "vpsrld", false },
+			{ "vpsrlq", false },
+
+			{ "vpsubb", false },
+			{ "vpsubw", false },
+			{ "vpsubd", false },
+			{ "vpsubq", false },
+
+			{ "vpsubsb", false },
+			{ "vpsubsw", false },
+
+			{ "vpsubusb", false },
+			{ "vpsubusw", false },
+
+			{ "vpunpckhbw", false },
+			{ "vpunpckhwd", false },
+			{ "vpunpckhdq", false },
+			{ "vpunpckhqdq", false },
+
+			{ "vpunpcklbw", false },
+			{ "vpunpcklwd", false },
+			{ "vpunpckldq", false },
+			{ "vpunpcklqdq", false },
+
+			{ "vpxor", false },
+			{ "vsqrtsd", false },
+			{ "vsqrtss", false },
+
+			{ "vunpckhpd", true },
+			{ "vunpckhps", true },
+			{ "vunpcklpd", true },
+			{ "vunpcklps", true },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, XMM, XMM | MEM);
+			put(p->name, XMM, XMM, XMM | MEM);
+			if (!p->supportYMM) continue;
+			put(p->name, YMM, YMM | MEM);
+			put(p->name, YMM, YMM, YMM | MEM);
+		}
+	}
+	void putAVX_X_X_XM_IMM()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vblendpd", true },
+			{ "vblendps", true },
+			{ "vdppd", false },
+			{ "vdpps", true },
+			{ "vmpsadbw", false },
+			{ "vpblendw", false },
+			{ "vroundsd", false },
+			{ "vroundss", false },
+			{ "vpclmulqdq", false },
+			{ "vcmppd", true },
+			{ "vcmpps", true },
+			{ "vcmpsd", false },
+			{ "vcmpss", false },
+			{ "vinsertps", false },
+			{ "vpalignr", false },
+			{ "vshufpd", true },
+			{ "vshufps", true },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, XMM, XMM, XMM | MEM, IMM);
+			put(p->name, XMM, XMM | MEM, IMM);
+			if (!p->supportYMM) continue;
+			put(p->name, YMM, YMM, YMM | MEM, IMM);
+			put(p->name, YMM, YMM | MEM, IMM);
+		}
+	}
+	void putAVX_X_XM_IMM()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vroundpd", true },
+			{ "vroundps", true },
+			{ "vpcmpestri", false },
+			{ "vpcmpestrm", false },
+			{ "vpcmpistri", false },
+			{ "vpcmpistrm", false },
+			{ "vpermilpd", true },
+			{ "vpermilps", true },
+			{ "vaeskeygenassist", false },
+			{ "vpshufd", false },
+			{ "vpshufhw", false },
+			{ "vpshuflw", false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, XMM, XMM | MEM, IMM);
+			if (!p->supportYMM) continue;
+			put(p->name, YMM, YMM | MEM, IMM);
+		}
+	}
+	void putAVX_X_X_XM()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vpermilpd", true },
+			{ "vpermilps", true },
+			{ "vpshufb", false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, XMM, XMM, XMM | MEM);
+			if (!p->supportYMM) continue;
+			put(p->name, YMM, YMM, YMM | MEM);
+		}
+	}
+	void putAVX_X_XM()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vaesimc", false },
+			{ "vtestps", true },
+			{ "vtestpd", true },
+			{ "vcomisd", false },
+			{ "vcomiss", false },
+			{ "vcvtdq2ps", true },
+			{ "vcvtps2dq", true },
+			{ "vcvttps2dq", true },
+			{ "vmovapd", true },
+			{ "vmovaps", true },
+			{ "vmovddup", true },
+			{ "vmovdqa", true },
+			{ "vmovdqu", true },
+			{ "vmovupd", true },
+			{ "vmovups", true },
+
+			{ "vpabsb", false },
+			{ "vpabsw", false },
+			{ "vpabsd", false },
+			{ "vphminposuw", false },
+
+			{ "vpmovsxbw", false },
+			{ "vpmovsxbd", false },
+			{ "vpmovsxbq", false },
+			{ "vpmovsxwd", false },
+			{ "vpmovsxwq", false },
+			{ "vpmovsxdq", false },
+
+			{ "vpmovzxbw", false },
+			{ "vpmovzxbd", false },
+			{ "vpmovzxbq", false },
+			{ "vpmovzxwd", false },
+			{ "vpmovzxwq", false },
+			{ "vpmovzxdq", false },
+
+			{ "vptest", false },
+			{ "vrcpps", true },
+			{ "vrcpss", false },
+
+			{ "vrsqrtps", true },
+			{ "vrsqrtss", false },
+
+			{ "vsqrtpd", true },
+			{ "vsqrtps", true },
+			{ "vucomisd", false },
+			{ "vucomiss", false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, XMM, XMM | MEM);
+			if (!p->supportYMM) continue;
+			put(p->name, YMM, YMM | MEM);
+		}
+	}
+	void putAVX_M_X()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vmovapd", true },
+			{ "vmovaps", true },
+			{ "vmovdqa", true },
+			{ "vmovdqu", true },
+			{ "vmovupd", true },
+			{ "vmovups", true },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl *p = &tbl[i];
+			put(p->name, MEM, XMM);
+			if (!p->supportYMM) continue;
+			put(p->name, MEM, YMM);
+		}
+	}
+	void putAVX_X_X_IMM_omit()
+	{
+		const struct Tbl {
+			const char *name;
+		} tbl[] = {
+			{ "vpslldq" },
+			{ "vpsrldq" },
+			{ "vpsllw" },
+			{ "vpslld" },
+			{ "vpsllq" },
+			{ "vpsraw" },
+			{ "vpsrad" },
+			{ "vpsrlw" },
+			{ "vpsrld" },
+			{ "vpsrlq" },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl& p = tbl[i];
+			put(p.name, XMM, XMM, IMM);
+			put(p.name, XMM, IMM);
+		}
+	}
+	void putFMA()
+	{
+		const struct Tbl {
+			const char *name;
+			bool supportYMM;
+		} tbl[] = {
+			{ "vfmadd", true },
+			{ "vfmadd", false },
+			{ "vfmaddsub", true },
+			{ "vfmsubadd", true },
+			{ "vfmsub", true },
+			{ "vfmsub", false },
+			{ "vfnmadd", true },
+			{ "vfnmadd", false },
+			{ "vfnmsub", true },
+			{ "vfnmsub", false },
+		};
+		for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+			const Tbl& p = tbl[i];
+			const struct Ord {
+				const char *name;
+			} ord[] = {
+				{ "132" },
+				{ "213" },
+				{ "231" },
+			};
+			for (size_t j = 0; j < NUM_OF_ARRAY(ord); j++) {
+				const char suf[][2][8] = {
+					{ "pd", "ps" },
+					{ "sd", "ss" },
+				};
+				for (size_t k = 0; k < 2; k++) {
+					std::string name = std::string(p.name) + ord[j].name + suf[p.supportYMM ? 0 : 1][k];
+					const char *q = name.c_str();
+					put(q, XMM, XMM, XMM | MEM);
+					if (!p.supportYMM) continue;
+					put(q, YMM, YMM, YMM | MEM);
+				}
+			}
+		}
+	}
+	void putAVX2()
+	{
+		put("vextractps", REG32 | MEM, XMM, IMM);
+		put("vldmxcsr", MEM);
+		put("vstmxcsr", MEM);
+		put("vmaskmovdqu", XMM, XMM);
+
+		put("vmovd", XMM, REG32 | MEM);
+		put("vmovd", REG32 | MEM, XMM);
+
+		put("vmovhlps", XMM, XMM);
+		put("vmovhlps", XMM, XMM, XMM);
+		put("vmovlhps", XMM, XMM);
+		put("vmovlhps", XMM, XMM, XMM);
+
+		{
+			const char tbl[][16] = {
+				"vmovhpd",
+				"vmovhps",
+				"vmovlpd",
+				"vmovlps",
+			};
+			for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+				put(tbl[i], XMM, XMM, MEM);
+				put(tbl[i], XMM, MEM);
+				put(tbl[i], MEM, XMM);
+			}
+		}
+		put("vmovmskpd", REG32e, XMM | YMM);
+		put("vmovmskps", REG32e, XMM | YMM);
+
+		put("vmovntdq", MEM, XMM | YMM);
+		put("vmovntpd", MEM, XMM | YMM);
+		put("vmovntps", MEM, XMM | YMM);
+		put("vmovntdqa", XMM, MEM);
+
+		{
+			const char tbl[][8] = { "vmovsd", "vmovss" };
+			for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+				put(tbl[i], XMM, XMM, XMM);
+				put(tbl[i], XMM, XMM | MEM);
+				put(tbl[i], MEM, XMM);
+			}
+		}
+		put("vpextrb", REG32e|MEM, XMM, IMM);
+		put("vpextrw", REG32e, XMM, IMM);
+		put("vpextrd", REG32|MEM, XMM, IMM);
+
+		for (int i = 0; i < 3; i++) {
+			const char tbl[][8] = { "vpinsrb", "vpinsrw", "vpinsrd" };
+			put(tbl[i], XMM, XMM, REG32|MEM, IMM);
+			put(tbl[i], XMM, REG32|MEM, IMM);
+		}
+
+		put("vpmovmskb", REG32e, XMM);
+
+		{
+			const struct Tbl {
+				const char *name;
+				bool supportYMM;
+			} tbl[] = {
+				{ "vblendvpd", true },
+				{ "vblendvps", true },
+				{ "vpblendvb", false },
+			};
+			for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
+				const Tbl& p = tbl[i];
+				put(p.name, XMM, XMM, XMM | MEM, XMM);
+				put(p.name, XMM, XMM | MEM, XMM);
+				if (!p.supportYMM) continue;
+				put(p.name, YMM, YMM, YMM | MEM, YMM);
+				put(p.name, YMM, YMM | MEM, YMM);
+			}
+		}
+		// cvt
+		{
+			put("vcvtss2si", REG32e, XMM | MEM);
+			put("vcvttss2si", REG32e, XMM | MEM);
+			put("vcvtsd2si", REG32e, XMM | MEM);
+			put("vcvttsd2si", REG32e, XMM | MEM);
+
+			put("vcvtsi2ss", XMM, XMM, REG32e | MEM);
+			put("vcvtsi2ss", XMM, REG32e | MEM);
+
+			put("vcvtsi2sd", XMM, XMM, REG32e | MEM);
+			put("vcvtsi2sd", XMM, REG32e | MEM);
+
+			put("vcvtps2pd", XMM | YMM, XMM | MEM);
+			put("vcvtdq2pd", XMM | YMM, XMM | MEM);
+
+			put("vcvtpd2ps", XMM, XMM | YMM | MEM);
+			put("vcvtpd2dq", XMM, XMM | YMM | MEM);
+			put("vcvttpd2dq", XMM, XMM | YMM | MEM);
+		}
+#ifdef XBYAK64
+		put("vmovq", XMM, XMM | REG64 | MEM);
+		put("vmovq", REG64 | MEM, XMM);
+
+		put("vpextrq", REG64|MEM, XMM, IMM);
+
+		put("vpinsrq", XMM, XMM, REG64|MEM, IMM);
+		put("vpinsrq", XMM, REG64|MEM, IMM);
+
+#endif
+	}
+	void putFMA2()
+	{
+#ifndef USE_YASM
+		put("vmaskmovps", XMM, XMM, MEM);
+		put("vmaskmovps", YMM, YMM, MEM);
+
+		put("vmaskmovpd", YMM, YMM, MEM);
+		put("vmaskmovpd", XMM, XMM, MEM);
+
+		put("vmaskmovps", MEM, XMM, XMM);
+		put("vmaskmovpd", MEM, XMM, XMM);
+
+		put("vbroadcastf128", YMM, MEM);
+		put("vbroadcastsd", YMM, MEM);
+		put("vbroadcastss", XMM | YMM, MEM);
+
+		put("vinsertf128", YMM, YMM, XMM | MEM, IMM8);
+		put("vperm2f128", YMM, YMM, YMM | MEM, IMM8);
+#else
+		put("vextractf128", XMM | MEM, YMM, IMM);
+		put("vmaskmovps", MEM, YMM, YMM);
+		put("vmaskmovpd", MEM, YMM, YMM);
+		put("vlddqu", XMM | YMM, MEM);
+
+		put("vmovshdup", XMM, XMM | MEM);
+		put("vmovshdup", YMM, YMM | MEM);
+		put("vmovsldup", XMM, XMM | MEM);
+		put("vmovsldup", YMM, YMM | MEM);
+
+		// QQQ:nasm is wrong
+		put("vpcmpeqq", XMM, XMM | MEM);
+		put("vpcmpeqq", XMM, XMM, XMM | MEM);
+		put("vpcmpgtq", XMM, XMM | MEM);
+		put("vpcmpgtq", XMM, XMM, XMM | MEM);
+
+		put("vpextrw", MEM, XMM, IMM); // nasm iw wrong?
+#endif
+	}
 public:
 	Test(bool isXbyak)
 		: isXbyak_(isXbyak)
@@ -1178,6 +1789,22 @@
 	}
 	void put()
 	{
+#ifdef USE_AVX
+#ifndef USE_YASM
+		putAVX1();
+		putAVX2();
+		putAVX_X_X_XM_omit();
+		putAVX_X_X_XM_IMM();
+		putAVX_X_XM_IMM();
+		putAVX_X_X_XM();
+		putAVX_X_XM();
+		putAVX_M_X();
+		putAVX_X_X_IMM_omit();
+		putFMA();
+#endif
+		putFMA2();
+#else
+		putJmp();
 #ifndef USE_YASM
 		putSIMPLE();
 		putReg1();
@@ -1220,6 +1847,7 @@
 		putSSE4_2();
 		putMov64();
 #endif
+#endif
 	}
 };
 
diff --git a/test/nm.cpp b/test/nm.cpp
index b17405f..02916e5 100644
--- a/test/nm.cpp
+++ b/test/nm.cpp
@@ -1,6185 +1,1275 @@
-void gen0(){
-mov (ecx, ptr[rax+rax+0]); dump();
-mov (ecx, ptr[rax+rax+1]); dump();
-mov (ecx, ptr[rax+rax+1000]); dump();
-mov (ecx, ptr[rax+rax-1]); dump();
-mov (ecx, ptr[rax+rax-1000]); dump();
-mov (ecx, ptr[rax+rax*1+0]); dump();
-mov (ecx, ptr[rax+rax*1+1]); dump();
-mov (ecx, ptr[rax+rax*1+1000]); dump();
-mov (ecx, ptr[rax+rax*1-1]); dump();
-mov (ecx, ptr[rax+rax*1-1000]); dump();
-mov (ecx, ptr[rax+rax*2+0]); dump();
-mov (ecx, ptr[rax+rax*2+1]); dump();
-mov (ecx, ptr[rax+rax*2+1000]); dump();
-mov (ecx, ptr[rax+rax*2-1]); dump();
-mov (ecx, ptr[rax+rax*2-1000]); dump();
-mov (ecx, ptr[rax+rax*4+0]); dump();
-mov (ecx, ptr[rax+rax*4+1]); dump();
-mov (ecx, ptr[rax+rax*4+1000]); dump();
-mov (ecx, ptr[rax+rax*4-1]); dump();
-mov (ecx, ptr[rax+rax*4-1000]); dump();
-mov (ecx, ptr[rax+rax*8+0]); dump();
-mov (ecx, ptr[rax+rax*8+1]); dump();
-mov (ecx, ptr[rax+rax*8+1000]); dump();
-mov (ecx, ptr[rax+rax*8-1]); dump();
-mov (ecx, ptr[rax+rax*8-1000]); dump();
-mov (ecx, ptr[rax+rcx+0]); dump();
-mov (ecx, ptr[rax+rcx+1]); dump();
-mov (ecx, ptr[rax+rcx+1000]); dump();
-mov (ecx, ptr[rax+rcx-1]); dump();
-mov (ecx, ptr[rax+rcx-1000]); dump();
-mov (ecx, ptr[rax+rcx*1+0]); dump();
-mov (ecx, ptr[rax+rcx*1+1]); dump();
-mov (ecx, ptr[rax+rcx*1+1000]); dump();
-mov (ecx, ptr[rax+rcx*1-1]); dump();
-mov (ecx, ptr[rax+rcx*1-1000]); dump();
-mov (ecx, ptr[rax+rcx*2+0]); dump();
-mov (ecx, ptr[rax+rcx*2+1]); dump();
-mov (ecx, ptr[rax+rcx*2+1000]); dump();
-mov (ecx, ptr[rax+rcx*2-1]); dump();
-mov (ecx, ptr[rax+rcx*2-1000]); dump();
-mov (ecx, ptr[rax+rcx*4+0]); dump();
-mov (ecx, ptr[rax+rcx*4+1]); dump();
-mov (ecx, ptr[rax+rcx*4+1000]); dump();
-mov (ecx, ptr[rax+rcx*4-1]); dump();
-mov (ecx, ptr[rax+rcx*4-1000]); dump();
-mov (ecx, ptr[rax+rcx*8+0]); dump();
-mov (ecx, ptr[rax+rcx*8+1]); dump();
-mov (ecx, ptr[rax+rcx*8+1000]); dump();
-mov (ecx, ptr[rax+rcx*8-1]); dump();
-mov (ecx, ptr[rax+rcx*8-1000]); dump();
-mov (ecx, ptr[rax+rdx+0]); dump();
-mov (ecx, ptr[rax+rdx+1]); dump();
-mov (ecx, ptr[rax+rdx+1000]); dump();
-mov (ecx, ptr[rax+rdx-1]); dump();
-mov (ecx, ptr[rax+rdx-1000]); dump();
-mov (ecx, ptr[rax+rdx*1+0]); dump();
-mov (ecx, ptr[rax+rdx*1+1]); dump();
-mov (ecx, ptr[rax+rdx*1+1000]); dump();
-mov (ecx, ptr[rax+rdx*1-1]); dump();
-mov (ecx, ptr[rax+rdx*1-1000]); dump();
-mov (ecx, ptr[rax+rdx*2+0]); dump();
-mov (ecx, ptr[rax+rdx*2+1]); dump();
-mov (ecx, ptr[rax+rdx*2+1000]); dump();
-mov (ecx, ptr[rax+rdx*2-1]); dump();
-mov (ecx, ptr[rax+rdx*2-1000]); dump();
-mov (ecx, ptr[rax+rdx*4+0]); dump();
-mov (ecx, ptr[rax+rdx*4+1]); dump();
-mov (ecx, ptr[rax+rdx*4+1000]); dump();
-mov (ecx, ptr[rax+rdx*4-1]); dump();
-mov (ecx, ptr[rax+rdx*4-1000]); dump();
-mov (ecx, ptr[rax+rdx*8+0]); dump();
-mov (ecx, ptr[rax+rdx*8+1]); dump();
-mov (ecx, ptr[rax+rdx*8+1000]); dump();
-mov (ecx, ptr[rax+rdx*8-1]); dump();
-mov (ecx, ptr[rax+rdx*8-1000]); dump();
-mov (ecx, ptr[rax+rbx+0]); dump();
-mov (ecx, ptr[rax+rbx+1]); dump();
-mov (ecx, ptr[rax+rbx+1000]); dump();
-mov (ecx, ptr[rax+rbx-1]); dump();
-mov (ecx, ptr[rax+rbx-1000]); dump();
-mov (ecx, ptr[rax+rbx*1+0]); dump();
-mov (ecx, ptr[rax+rbx*1+1]); dump();
-mov (ecx, ptr[rax+rbx*1+1000]); dump();
-mov (ecx, ptr[rax+rbx*1-1]); dump();
-mov (ecx, ptr[rax+rbx*1-1000]); dump();
-mov (ecx, ptr[rax+rbx*2+0]); dump();
-mov (ecx, ptr[rax+rbx*2+1]); dump();
-mov (ecx, ptr[rax+rbx*2+1000]); dump();
-mov (ecx, ptr[rax+rbx*2-1]); dump();
-mov (ecx, ptr[rax+rbx*2-1000]); dump();
-mov (ecx, ptr[rax+rbx*4+0]); dump();
-mov (ecx, ptr[rax+rbx*4+1]); dump();
-mov (ecx, ptr[rax+rbx*4+1000]); dump();
-mov (ecx, ptr[rax+rbx*4-1]); dump();
-mov (ecx, ptr[rax+rbx*4-1000]); dump();
-mov (ecx, ptr[rax+rbx*8+0]); dump();
-mov (ecx, ptr[rax+rbx*8+1]); dump();
-mov (ecx, ptr[rax+rbx*8+1000]); dump();
-mov (ecx, ptr[rax+rbx*8-1]); dump();
-mov (ecx, ptr[rax+rbx*8-1000]); dump();
-}
-    void gen1(){
-mov (ecx, ptr[rax+rbp+0]); dump();
-mov (ecx, ptr[rax+rbp+1]); dump();
-mov (ecx, ptr[rax+rbp+1000]); dump();
-mov (ecx, ptr[rax+rbp-1]); dump();
-mov (ecx, ptr[rax+rbp-1000]); dump();
-mov (ecx, ptr[rax+rbp*1+0]); dump();
-mov (ecx, ptr[rax+rbp*1+1]); dump();
-mov (ecx, ptr[rax+rbp*1+1000]); dump();
-mov (ecx, ptr[rax+rbp*1-1]); dump();
-mov (ecx, ptr[rax+rbp*1-1000]); dump();
-mov (ecx, ptr[rax+rbp*2+0]); dump();
-mov (ecx, ptr[rax+rbp*2+1]); dump();
-mov (ecx, ptr[rax+rbp*2+1000]); dump();
-mov (ecx, ptr[rax+rbp*2-1]); dump();
-mov (ecx, ptr[rax+rbp*2-1000]); dump();
-mov (ecx, ptr[rax+rbp*4+0]); dump();
-mov (ecx, ptr[rax+rbp*4+1]); dump();
-mov (ecx, ptr[rax+rbp*4+1000]); dump();
-mov (ecx, ptr[rax+rbp*4-1]); dump();
-mov (ecx, ptr[rax+rbp*4-1000]); dump();
-mov (ecx, ptr[rax+rbp*8+0]); dump();
-mov (ecx, ptr[rax+rbp*8+1]); dump();
-mov (ecx, ptr[rax+rbp*8+1000]); dump();
-mov (ecx, ptr[rax+rbp*8-1]); dump();
-mov (ecx, ptr[rax+rbp*8-1000]); dump();
-mov (ecx, ptr[rax+rsi+0]); dump();
-mov (ecx, ptr[rax+rsi+1]); dump();
-mov (ecx, ptr[rax+rsi+1000]); dump();
-mov (ecx, ptr[rax+rsi-1]); dump();
-mov (ecx, ptr[rax+rsi-1000]); dump();
-mov (ecx, ptr[rax+rsi*1+0]); dump();
-mov (ecx, ptr[rax+rsi*1+1]); dump();
-mov (ecx, ptr[rax+rsi*1+1000]); dump();
-mov (ecx, ptr[rax+rsi*1-1]); dump();
-mov (ecx, ptr[rax+rsi*1-1000]); dump();
-mov (ecx, ptr[rax+rsi*2+0]); dump();
-mov (ecx, ptr[rax+rsi*2+1]); dump();
-mov (ecx, ptr[rax+rsi*2+1000]); dump();
-mov (ecx, ptr[rax+rsi*2-1]); dump();
-mov (ecx, ptr[rax+rsi*2-1000]); dump();
-mov (ecx, ptr[rax+rsi*4+0]); dump();
-mov (ecx, ptr[rax+rsi*4+1]); dump();
-mov (ecx, ptr[rax+rsi*4+1000]); dump();
-mov (ecx, ptr[rax+rsi*4-1]); dump();
-mov (ecx, ptr[rax+rsi*4-1000]); dump();
-mov (ecx, ptr[rax+rsi*8+0]); dump();
-mov (ecx, ptr[rax+rsi*8+1]); dump();
-mov (ecx, ptr[rax+rsi*8+1000]); dump();
-mov (ecx, ptr[rax+rsi*8-1]); dump();
-mov (ecx, ptr[rax+rsi*8-1000]); dump();
-mov (ecx, ptr[rax+rdi+0]); dump();
-mov (ecx, ptr[rax+rdi+1]); dump();
-mov (ecx, ptr[rax+rdi+1000]); dump();
-mov (ecx, ptr[rax+rdi-1]); dump();
-mov (ecx, ptr[rax+rdi-1000]); dump();
-mov (ecx, ptr[rax+rdi*1+0]); dump();
-mov (ecx, ptr[rax+rdi*1+1]); dump();
-mov (ecx, ptr[rax+rdi*1+1000]); dump();
-mov (ecx, ptr[rax+rdi*1-1]); dump();
-mov (ecx, ptr[rax+rdi*1-1000]); dump();
-mov (ecx, ptr[rax+rdi*2+0]); dump();
-mov (ecx, ptr[rax+rdi*2+1]); dump();
-mov (ecx, ptr[rax+rdi*2+1000]); dump();
-mov (ecx, ptr[rax+rdi*2-1]); dump();
-mov (ecx, ptr[rax+rdi*2-1000]); dump();
-mov (ecx, ptr[rax+rdi*4+0]); dump();
-mov (ecx, ptr[rax+rdi*4+1]); dump();
-mov (ecx, ptr[rax+rdi*4+1000]); dump();
-mov (ecx, ptr[rax+rdi*4-1]); dump();
-mov (ecx, ptr[rax+rdi*4-1000]); dump();
-mov (ecx, ptr[rax+rdi*8+0]); dump();
-mov (ecx, ptr[rax+rdi*8+1]); dump();
-mov (ecx, ptr[rax+rdi*8+1000]); dump();
-mov (ecx, ptr[rax+rdi*8-1]); dump();
-mov (ecx, ptr[rax+rdi*8-1000]); dump();
-mov (ecx, ptr[rax+r9+0]); dump();
-mov (ecx, ptr[rax+r9+1]); dump();
-mov (ecx, ptr[rax+r9+1000]); dump();
-mov (ecx, ptr[rax+r9-1]); dump();
-mov (ecx, ptr[rax+r9-1000]); dump();
-mov (ecx, ptr[rax+r9*1+0]); dump();
-mov (ecx, ptr[rax+r9*1+1]); dump();
-mov (ecx, ptr[rax+r9*1+1000]); dump();
-mov (ecx, ptr[rax+r9*1-1]); dump();
-mov (ecx, ptr[rax+r9*1-1000]); dump();
-mov (ecx, ptr[rax+r9*2+0]); dump();
-mov (ecx, ptr[rax+r9*2+1]); dump();
-mov (ecx, ptr[rax+r9*2+1000]); dump();
-mov (ecx, ptr[rax+r9*2-1]); dump();
-mov (ecx, ptr[rax+r9*2-1000]); dump();
-mov (ecx, ptr[rax+r9*4+0]); dump();
-mov (ecx, ptr[rax+r9*4+1]); dump();
-mov (ecx, ptr[rax+r9*4+1000]); dump();
-mov (ecx, ptr[rax+r9*4-1]); dump();
-mov (ecx, ptr[rax+r9*4-1000]); dump();
-mov (ecx, ptr[rax+r9*8+0]); dump();
-mov (ecx, ptr[rax+r9*8+1]); dump();
-mov (ecx, ptr[rax+r9*8+1000]); dump();
-mov (ecx, ptr[rax+r9*8-1]); dump();
-mov (ecx, ptr[rax+r9*8-1000]); dump();
-}
-    void gen2(){
-mov (ecx, ptr[rax+r10+0]); dump();
-mov (ecx, ptr[rax+r10+1]); dump();
-mov (ecx, ptr[rax+r10+1000]); dump();
-mov (ecx, ptr[rax+r10-1]); dump();
-mov (ecx, ptr[rax+r10-1000]); dump();
-mov (ecx, ptr[rax+r10*1+0]); dump();
-mov (ecx, ptr[rax+r10*1+1]); dump();
-mov (ecx, ptr[rax+r10*1+1000]); dump();
-mov (ecx, ptr[rax+r10*1-1]); dump();
-mov (ecx, ptr[rax+r10*1-1000]); dump();
-mov (ecx, ptr[rax+r10*2+0]); dump();
-mov (ecx, ptr[rax+r10*2+1]); dump();
-mov (ecx, ptr[rax+r10*2+1000]); dump();
-mov (ecx, ptr[rax+r10*2-1]); dump();
-mov (ecx, ptr[rax+r10*2-1000]); dump();
-mov (ecx, ptr[rax+r10*4+0]); dump();
-mov (ecx, ptr[rax+r10*4+1]); dump();
-mov (ecx, ptr[rax+r10*4+1000]); dump();
-mov (ecx, ptr[rax+r10*4-1]); dump();
-mov (ecx, ptr[rax+r10*4-1000]); dump();
-mov (ecx, ptr[rax+r10*8+0]); dump();
-mov (ecx, ptr[rax+r10*8+1]); dump();
-mov (ecx, ptr[rax+r10*8+1000]); dump();
-mov (ecx, ptr[rax+r10*8-1]); dump();
-mov (ecx, ptr[rax+r10*8-1000]); dump();
-mov (ecx, ptr[rax+r11+0]); dump();
-mov (ecx, ptr[rax+r11+1]); dump();
-mov (ecx, ptr[rax+r11+1000]); dump();
-mov (ecx, ptr[rax+r11-1]); dump();
-mov (ecx, ptr[rax+r11-1000]); dump();
-mov (ecx, ptr[rax+r11*1+0]); dump();
-mov (ecx, ptr[rax+r11*1+1]); dump();
-mov (ecx, ptr[rax+r11*1+1000]); dump();
-mov (ecx, ptr[rax+r11*1-1]); dump();
-mov (ecx, ptr[rax+r11*1-1000]); dump();
-mov (ecx, ptr[rax+r11*2+0]); dump();
-mov (ecx, ptr[rax+r11*2+1]); dump();
-mov (ecx, ptr[rax+r11*2+1000]); dump();
-mov (ecx, ptr[rax+r11*2-1]); dump();
-mov (ecx, ptr[rax+r11*2-1000]); dump();
-mov (ecx, ptr[rax+r11*4+0]); dump();
-mov (ecx, ptr[rax+r11*4+1]); dump();
-mov (ecx, ptr[rax+r11*4+1000]); dump();
-mov (ecx, ptr[rax+r11*4-1]); dump();
-mov (ecx, ptr[rax+r11*4-1000]); dump();
-mov (ecx, ptr[rax+r11*8+0]); dump();
-mov (ecx, ptr[rax+r11*8+1]); dump();
-mov (ecx, ptr[rax+r11*8+1000]); dump();
-mov (ecx, ptr[rax+r11*8-1]); dump();
-mov (ecx, ptr[rax+r11*8-1000]); dump();
-mov (ecx, ptr[rax+r12+0]); dump();
-mov (ecx, ptr[rax+r12+1]); dump();
-mov (ecx, ptr[rax+r12+1000]); dump();
-mov (ecx, ptr[rax+r12-1]); dump();
-mov (ecx, ptr[rax+r12-1000]); dump();
-mov (ecx, ptr[rax+r12*1+0]); dump();
-mov (ecx, ptr[rax+r12*1+1]); dump();
-mov (ecx, ptr[rax+r12*1+1000]); dump();
-mov (ecx, ptr[rax+r12*1-1]); dump();
-mov (ecx, ptr[rax+r12*1-1000]); dump();
-mov (ecx, ptr[rax+r12*2+0]); dump();
-mov (ecx, ptr[rax+r12*2+1]); dump();
-mov (ecx, ptr[rax+r12*2+1000]); dump();
-mov (ecx, ptr[rax+r12*2-1]); dump();
-mov (ecx, ptr[rax+r12*2-1000]); dump();
-mov (ecx, ptr[rax+r12*4+0]); dump();
-mov (ecx, ptr[rax+r12*4+1]); dump();
-mov (ecx, ptr[rax+r12*4+1000]); dump();
-mov (ecx, ptr[rax+r12*4-1]); dump();
-mov (ecx, ptr[rax+r12*4-1000]); dump();
-mov (ecx, ptr[rax+r12*8+0]); dump();
-mov (ecx, ptr[rax+r12*8+1]); dump();
-mov (ecx, ptr[rax+r12*8+1000]); dump();
-mov (ecx, ptr[rax+r12*8-1]); dump();
-mov (ecx, ptr[rax+r12*8-1000]); dump();
-mov (ecx, ptr[rax+r13+0]); dump();
-mov (ecx, ptr[rax+r13+1]); dump();
-mov (ecx, ptr[rax+r13+1000]); dump();
-mov (ecx, ptr[rax+r13-1]); dump();
-mov (ecx, ptr[rax+r13-1000]); dump();
-mov (ecx, ptr[rax+r13*1+0]); dump();
-mov (ecx, ptr[rax+r13*1+1]); dump();
-mov (ecx, ptr[rax+r13*1+1000]); dump();
-mov (ecx, ptr[rax+r13*1-1]); dump();
-mov (ecx, ptr[rax+r13*1-1000]); dump();
-mov (ecx, ptr[rax+r13*2+0]); dump();
-mov (ecx, ptr[rax+r13*2+1]); dump();
-mov (ecx, ptr[rax+r13*2+1000]); dump();
-mov (ecx, ptr[rax+r13*2-1]); dump();
-mov (ecx, ptr[rax+r13*2-1000]); dump();
-mov (ecx, ptr[rax+r13*4+0]); dump();
-mov (ecx, ptr[rax+r13*4+1]); dump();
-mov (ecx, ptr[rax+r13*4+1000]); dump();
-mov (ecx, ptr[rax+r13*4-1]); dump();
-mov (ecx, ptr[rax+r13*4-1000]); dump();
-mov (ecx, ptr[rax+r13*8+0]); dump();
-mov (ecx, ptr[rax+r13*8+1]); dump();
-mov (ecx, ptr[rax+r13*8+1000]); dump();
-mov (ecx, ptr[rax+r13*8-1]); dump();
-mov (ecx, ptr[rax+r13*8-1000]); dump();
-}
-    void gen3(){
-mov (ecx, ptr[rax+r14+0]); dump();
-mov (ecx, ptr[rax+r14+1]); dump();
-mov (ecx, ptr[rax+r14+1000]); dump();
-mov (ecx, ptr[rax+r14-1]); dump();
-mov (ecx, ptr[rax+r14-1000]); dump();
-mov (ecx, ptr[rax+r14*1+0]); dump();
-mov (ecx, ptr[rax+r14*1+1]); dump();
-mov (ecx, ptr[rax+r14*1+1000]); dump();
-mov (ecx, ptr[rax+r14*1-1]); dump();
-mov (ecx, ptr[rax+r14*1-1000]); dump();
-mov (ecx, ptr[rax+r14*2+0]); dump();
-mov (ecx, ptr[rax+r14*2+1]); dump();
-mov (ecx, ptr[rax+r14*2+1000]); dump();
-mov (ecx, ptr[rax+r14*2-1]); dump();
-mov (ecx, ptr[rax+r14*2-1000]); dump();
-mov (ecx, ptr[rax+r14*4+0]); dump();
-mov (ecx, ptr[rax+r14*4+1]); dump();
-mov (ecx, ptr[rax+r14*4+1000]); dump();
-mov (ecx, ptr[rax+r14*4-1]); dump();
-mov (ecx, ptr[rax+r14*4-1000]); dump();
-mov (ecx, ptr[rax+r14*8+0]); dump();
-mov (ecx, ptr[rax+r14*8+1]); dump();
-mov (ecx, ptr[rax+r14*8+1000]); dump();
-mov (ecx, ptr[rax+r14*8-1]); dump();
-mov (ecx, ptr[rax+r14*8-1000]); dump();
-mov (ecx, ptr[rax+r15+0]); dump();
-mov (ecx, ptr[rax+r15+1]); dump();
-mov (ecx, ptr[rax+r15+1000]); dump();
-mov (ecx, ptr[rax+r15-1]); dump();
-mov (ecx, ptr[rax+r15-1000]); dump();
-mov (ecx, ptr[rax+r15*1+0]); dump();
-mov (ecx, ptr[rax+r15*1+1]); dump();
-mov (ecx, ptr[rax+r15*1+1000]); dump();
-mov (ecx, ptr[rax+r15*1-1]); dump();
-mov (ecx, ptr[rax+r15*1-1000]); dump();
-mov (ecx, ptr[rax+r15*2+0]); dump();
-mov (ecx, ptr[rax+r15*2+1]); dump();
-mov (ecx, ptr[rax+r15*2+1000]); dump();
-mov (ecx, ptr[rax+r15*2-1]); dump();
-mov (ecx, ptr[rax+r15*2-1000]); dump();
-mov (ecx, ptr[rax+r15*4+0]); dump();
-mov (ecx, ptr[rax+r15*4+1]); dump();
-mov (ecx, ptr[rax+r15*4+1000]); dump();
-mov (ecx, ptr[rax+r15*4-1]); dump();
-mov (ecx, ptr[rax+r15*4-1000]); dump();
-mov (ecx, ptr[rax+r15*8+0]); dump();
-mov (ecx, ptr[rax+r15*8+1]); dump();
-mov (ecx, ptr[rax+r15*8+1000]); dump();
-mov (ecx, ptr[rax+r15*8-1]); dump();
-mov (ecx, ptr[rax+r15*8-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rcx+rax+0]); dump();
-mov (ecx, ptr[rcx+rax+1]); dump();
-mov (ecx, ptr[rcx+rax+1000]); dump();
-mov (ecx, ptr[rcx+rax-1]); dump();
-mov (ecx, ptr[rcx+rax-1000]); dump();
-mov (ecx, ptr[rcx+rax*1+0]); dump();
-mov (ecx, ptr[rcx+rax*1+1]); dump();
-mov (ecx, ptr[rcx+rax*1+1000]); dump();
-mov (ecx, ptr[rcx+rax*1-1]); dump();
-mov (ecx, ptr[rcx+rax*1-1000]); dump();
-mov (ecx, ptr[rcx+rax*2+0]); dump();
-mov (ecx, ptr[rcx+rax*2+1]); dump();
-mov (ecx, ptr[rcx+rax*2+1000]); dump();
-mov (ecx, ptr[rcx+rax*2-1]); dump();
-mov (ecx, ptr[rcx+rax*2-1000]); dump();
-mov (ecx, ptr[rcx+rax*4+0]); dump();
-mov (ecx, ptr[rcx+rax*4+1]); dump();
-mov (ecx, ptr[rcx+rax*4+1000]); dump();
-mov (ecx, ptr[rcx+rax*4-1]); dump();
-mov (ecx, ptr[rcx+rax*4-1000]); dump();
-mov (ecx, ptr[rcx+rax*8+0]); dump();
-mov (ecx, ptr[rcx+rax*8+1]); dump();
-mov (ecx, ptr[rcx+rax*8+1000]); dump();
-mov (ecx, ptr[rcx+rax*8-1]); dump();
-mov (ecx, ptr[rcx+rax*8-1000]); dump();
-}
-    void gen4(){
-mov (ecx, ptr[rcx+rcx+0]); dump();
-mov (ecx, ptr[rcx+rcx+1]); dump();
-mov (ecx, ptr[rcx+rcx+1000]); dump();
-mov (ecx, ptr[rcx+rcx-1]); dump();
-mov (ecx, ptr[rcx+rcx-1000]); dump();
-mov (ecx, ptr[rcx+rcx*1+0]); dump();
-mov (ecx, ptr[rcx+rcx*1+1]); dump();
-mov (ecx, ptr[rcx+rcx*1+1000]); dump();
-mov (ecx, ptr[rcx+rcx*1-1]); dump();
-mov (ecx, ptr[rcx+rcx*1-1000]); dump();
-mov (ecx, ptr[rcx+rcx*2+0]); dump();
-mov (ecx, ptr[rcx+rcx*2+1]); dump();
-mov (ecx, ptr[rcx+rcx*2+1000]); dump();
-mov (ecx, ptr[rcx+rcx*2-1]); dump();
-mov (ecx, ptr[rcx+rcx*2-1000]); dump();
-mov (ecx, ptr[rcx+rcx*4+0]); dump();
-mov (ecx, ptr[rcx+rcx*4+1]); dump();
-mov (ecx, ptr[rcx+rcx*4+1000]); dump();
-mov (ecx, ptr[rcx+rcx*4-1]); dump();
-mov (ecx, ptr[rcx+rcx*4-1000]); dump();
-mov (ecx, ptr[rcx+rcx*8+0]); dump();
-mov (ecx, ptr[rcx+rcx*8+1]); dump();
-mov (ecx, ptr[rcx+rcx*8+1000]); dump();
-mov (ecx, ptr[rcx+rcx*8-1]); dump();
-mov (ecx, ptr[rcx+rcx*8-1000]); dump();
-mov (ecx, ptr[rcx+rdx+0]); dump();
-mov (ecx, ptr[rcx+rdx+1]); dump();
-mov (ecx, ptr[rcx+rdx+1000]); dump();
-mov (ecx, ptr[rcx+rdx-1]); dump();
-mov (ecx, ptr[rcx+rdx-1000]); dump();
-mov (ecx, ptr[rcx+rdx*1+0]); dump();
-mov (ecx, ptr[rcx+rdx*1+1]); dump();
-mov (ecx, ptr[rcx+rdx*1+1000]); dump();
-mov (ecx, ptr[rcx+rdx*1-1]); dump();
-mov (ecx, ptr[rcx+rdx*1-1000]); dump();
-mov (ecx, ptr[rcx+rdx*2+0]); dump();
-mov (ecx, ptr[rcx+rdx*2+1]); dump();
-mov (ecx, ptr[rcx+rdx*2+1000]); dump();
-mov (ecx, ptr[rcx+rdx*2-1]); dump();
-mov (ecx, ptr[rcx+rdx*2-1000]); dump();
-mov (ecx, ptr[rcx+rdx*4+0]); dump();
-mov (ecx, ptr[rcx+rdx*4+1]); dump();
-mov (ecx, ptr[rcx+rdx*4+1000]); dump();
-mov (ecx, ptr[rcx+rdx*4-1]); dump();
-mov (ecx, ptr[rcx+rdx*4-1000]); dump();
-mov (ecx, ptr[rcx+rdx*8+0]); dump();
-mov (ecx, ptr[rcx+rdx*8+1]); dump();
-mov (ecx, ptr[rcx+rdx*8+1000]); dump();
-mov (ecx, ptr[rcx+rdx*8-1]); dump();
-mov (ecx, ptr[rcx+rdx*8-1000]); dump();
-mov (ecx, ptr[rcx+rbx+0]); dump();
-mov (ecx, ptr[rcx+rbx+1]); dump();
-mov (ecx, ptr[rcx+rbx+1000]); dump();
-mov (ecx, ptr[rcx+rbx-1]); dump();
-mov (ecx, ptr[rcx+rbx-1000]); dump();
-mov (ecx, ptr[rcx+rbx*1+0]); dump();
-mov (ecx, ptr[rcx+rbx*1+1]); dump();
-mov (ecx, ptr[rcx+rbx*1+1000]); dump();
-mov (ecx, ptr[rcx+rbx*1-1]); dump();
-mov (ecx, ptr[rcx+rbx*1-1000]); dump();
-mov (ecx, ptr[rcx+rbx*2+0]); dump();
-mov (ecx, ptr[rcx+rbx*2+1]); dump();
-mov (ecx, ptr[rcx+rbx*2+1000]); dump();
-mov (ecx, ptr[rcx+rbx*2-1]); dump();
-mov (ecx, ptr[rcx+rbx*2-1000]); dump();
-mov (ecx, ptr[rcx+rbx*4+0]); dump();
-mov (ecx, ptr[rcx+rbx*4+1]); dump();
-mov (ecx, ptr[rcx+rbx*4+1000]); dump();
-mov (ecx, ptr[rcx+rbx*4-1]); dump();
-mov (ecx, ptr[rcx+rbx*4-1000]); dump();
-mov (ecx, ptr[rcx+rbx*8+0]); dump();
-mov (ecx, ptr[rcx+rbx*8+1]); dump();
-mov (ecx, ptr[rcx+rbx*8+1000]); dump();
-mov (ecx, ptr[rcx+rbx*8-1]); dump();
-mov (ecx, ptr[rcx+rbx*8-1000]); dump();
-mov (ecx, ptr[rcx+rbp+0]); dump();
-mov (ecx, ptr[rcx+rbp+1]); dump();
-mov (ecx, ptr[rcx+rbp+1000]); dump();
-mov (ecx, ptr[rcx+rbp-1]); dump();
-mov (ecx, ptr[rcx+rbp-1000]); dump();
-mov (ecx, ptr[rcx+rbp*1+0]); dump();
-mov (ecx, ptr[rcx+rbp*1+1]); dump();
-mov (ecx, ptr[rcx+rbp*1+1000]); dump();
-mov (ecx, ptr[rcx+rbp*1-1]); dump();
-mov (ecx, ptr[rcx+rbp*1-1000]); dump();
-mov (ecx, ptr[rcx+rbp*2+0]); dump();
-mov (ecx, ptr[rcx+rbp*2+1]); dump();
-mov (ecx, ptr[rcx+rbp*2+1000]); dump();
-mov (ecx, ptr[rcx+rbp*2-1]); dump();
-mov (ecx, ptr[rcx+rbp*2-1000]); dump();
-mov (ecx, ptr[rcx+rbp*4+0]); dump();
-mov (ecx, ptr[rcx+rbp*4+1]); dump();
-mov (ecx, ptr[rcx+rbp*4+1000]); dump();
-mov (ecx, ptr[rcx+rbp*4-1]); dump();
-mov (ecx, ptr[rcx+rbp*4-1000]); dump();
-mov (ecx, ptr[rcx+rbp*8+0]); dump();
-mov (ecx, ptr[rcx+rbp*8+1]); dump();
-mov (ecx, ptr[rcx+rbp*8+1000]); dump();
-mov (ecx, ptr[rcx+rbp*8-1]); dump();
-mov (ecx, ptr[rcx+rbp*8-1000]); dump();
-}
-    void gen5(){
-mov (ecx, ptr[rcx+rsi+0]); dump();
-mov (ecx, ptr[rcx+rsi+1]); dump();
-mov (ecx, ptr[rcx+rsi+1000]); dump();
-mov (ecx, ptr[rcx+rsi-1]); dump();
-mov (ecx, ptr[rcx+rsi-1000]); dump();
-mov (ecx, ptr[rcx+rsi*1+0]); dump();
-mov (ecx, ptr[rcx+rsi*1+1]); dump();
-mov (ecx, ptr[rcx+rsi*1+1000]); dump();
-mov (ecx, ptr[rcx+rsi*1-1]); dump();
-mov (ecx, ptr[rcx+rsi*1-1000]); dump();
-mov (ecx, ptr[rcx+rsi*2+0]); dump();
-mov (ecx, ptr[rcx+rsi*2+1]); dump();
-mov (ecx, ptr[rcx+rsi*2+1000]); dump();
-mov (ecx, ptr[rcx+rsi*2-1]); dump();
-mov (ecx, ptr[rcx+rsi*2-1000]); dump();
-mov (ecx, ptr[rcx+rsi*4+0]); dump();
-mov (ecx, ptr[rcx+rsi*4+1]); dump();
-mov (ecx, ptr[rcx+rsi*4+1000]); dump();
-mov (ecx, ptr[rcx+rsi*4-1]); dump();
-mov (ecx, ptr[rcx+rsi*4-1000]); dump();
-mov (ecx, ptr[rcx+rsi*8+0]); dump();
-mov (ecx, ptr[rcx+rsi*8+1]); dump();
-mov (ecx, ptr[rcx+rsi*8+1000]); dump();
-mov (ecx, ptr[rcx+rsi*8-1]); dump();
-mov (ecx, ptr[rcx+rsi*8-1000]); dump();
-mov (ecx, ptr[rcx+rdi+0]); dump();
-mov (ecx, ptr[rcx+rdi+1]); dump();
-mov (ecx, ptr[rcx+rdi+1000]); dump();
-mov (ecx, ptr[rcx+rdi-1]); dump();
-mov (ecx, ptr[rcx+rdi-1000]); dump();
-mov (ecx, ptr[rcx+rdi*1+0]); dump();
-mov (ecx, ptr[rcx+rdi*1+1]); dump();
-mov (ecx, ptr[rcx+rdi*1+1000]); dump();
-mov (ecx, ptr[rcx+rdi*1-1]); dump();
-mov (ecx, ptr[rcx+rdi*1-1000]); dump();
-mov (ecx, ptr[rcx+rdi*2+0]); dump();
-mov (ecx, ptr[rcx+rdi*2+1]); dump();
-mov (ecx, ptr[rcx+rdi*2+1000]); dump();
-mov (ecx, ptr[rcx+rdi*2-1]); dump();
-mov (ecx, ptr[rcx+rdi*2-1000]); dump();
-mov (ecx, ptr[rcx+rdi*4+0]); dump();
-mov (ecx, ptr[rcx+rdi*4+1]); dump();
-mov (ecx, ptr[rcx+rdi*4+1000]); dump();
-mov (ecx, ptr[rcx+rdi*4-1]); dump();
-mov (ecx, ptr[rcx+rdi*4-1000]); dump();
-mov (ecx, ptr[rcx+rdi*8+0]); dump();
-mov (ecx, ptr[rcx+rdi*8+1]); dump();
-mov (ecx, ptr[rcx+rdi*8+1000]); dump();
-mov (ecx, ptr[rcx+rdi*8-1]); dump();
-mov (ecx, ptr[rcx+rdi*8-1000]); dump();
-mov (ecx, ptr[rcx+r9+0]); dump();
-mov (ecx, ptr[rcx+r9+1]); dump();
-mov (ecx, ptr[rcx+r9+1000]); dump();
-mov (ecx, ptr[rcx+r9-1]); dump();
-mov (ecx, ptr[rcx+r9-1000]); dump();
-mov (ecx, ptr[rcx+r9*1+0]); dump();
-mov (ecx, ptr[rcx+r9*1+1]); dump();
-mov (ecx, ptr[rcx+r9*1+1000]); dump();
-mov (ecx, ptr[rcx+r9*1-1]); dump();
-mov (ecx, ptr[rcx+r9*1-1000]); dump();
-mov (ecx, ptr[rcx+r9*2+0]); dump();
-mov (ecx, ptr[rcx+r9*2+1]); dump();
-mov (ecx, ptr[rcx+r9*2+1000]); dump();
-mov (ecx, ptr[rcx+r9*2-1]); dump();
-mov (ecx, ptr[rcx+r9*2-1000]); dump();
-mov (ecx, ptr[rcx+r9*4+0]); dump();
-mov (ecx, ptr[rcx+r9*4+1]); dump();
-mov (ecx, ptr[rcx+r9*4+1000]); dump();
-mov (ecx, ptr[rcx+r9*4-1]); dump();
-mov (ecx, ptr[rcx+r9*4-1000]); dump();
-mov (ecx, ptr[rcx+r9*8+0]); dump();
-mov (ecx, ptr[rcx+r9*8+1]); dump();
-mov (ecx, ptr[rcx+r9*8+1000]); dump();
-mov (ecx, ptr[rcx+r9*8-1]); dump();
-mov (ecx, ptr[rcx+r9*8-1000]); dump();
-mov (ecx, ptr[rcx+r10+0]); dump();
-mov (ecx, ptr[rcx+r10+1]); dump();
-mov (ecx, ptr[rcx+r10+1000]); dump();
-mov (ecx, ptr[rcx+r10-1]); dump();
-mov (ecx, ptr[rcx+r10-1000]); dump();
-mov (ecx, ptr[rcx+r10*1+0]); dump();
-mov (ecx, ptr[rcx+r10*1+1]); dump();
-mov (ecx, ptr[rcx+r10*1+1000]); dump();
-mov (ecx, ptr[rcx+r10*1-1]); dump();
-mov (ecx, ptr[rcx+r10*1-1000]); dump();
-mov (ecx, ptr[rcx+r10*2+0]); dump();
-mov (ecx, ptr[rcx+r10*2+1]); dump();
-mov (ecx, ptr[rcx+r10*2+1000]); dump();
-mov (ecx, ptr[rcx+r10*2-1]); dump();
-mov (ecx, ptr[rcx+r10*2-1000]); dump();
-mov (ecx, ptr[rcx+r10*4+0]); dump();
-mov (ecx, ptr[rcx+r10*4+1]); dump();
-mov (ecx, ptr[rcx+r10*4+1000]); dump();
-mov (ecx, ptr[rcx+r10*4-1]); dump();
-mov (ecx, ptr[rcx+r10*4-1000]); dump();
-mov (ecx, ptr[rcx+r10*8+0]); dump();
-mov (ecx, ptr[rcx+r10*8+1]); dump();
-mov (ecx, ptr[rcx+r10*8+1000]); dump();
-mov (ecx, ptr[rcx+r10*8-1]); dump();
-mov (ecx, ptr[rcx+r10*8-1000]); dump();
-}
-    void gen6(){
-mov (ecx, ptr[rcx+r11+0]); dump();
-mov (ecx, ptr[rcx+r11+1]); dump();
-mov (ecx, ptr[rcx+r11+1000]); dump();
-mov (ecx, ptr[rcx+r11-1]); dump();
-mov (ecx, ptr[rcx+r11-1000]); dump();
-mov (ecx, ptr[rcx+r11*1+0]); dump();
-mov (ecx, ptr[rcx+r11*1+1]); dump();
-mov (ecx, ptr[rcx+r11*1+1000]); dump();
-mov (ecx, ptr[rcx+r11*1-1]); dump();
-mov (ecx, ptr[rcx+r11*1-1000]); dump();
-mov (ecx, ptr[rcx+r11*2+0]); dump();
-mov (ecx, ptr[rcx+r11*2+1]); dump();
-mov (ecx, ptr[rcx+r11*2+1000]); dump();
-mov (ecx, ptr[rcx+r11*2-1]); dump();
-mov (ecx, ptr[rcx+r11*2-1000]); dump();
-mov (ecx, ptr[rcx+r11*4+0]); dump();
-mov (ecx, ptr[rcx+r11*4+1]); dump();
-mov (ecx, ptr[rcx+r11*4+1000]); dump();
-mov (ecx, ptr[rcx+r11*4-1]); dump();
-mov (ecx, ptr[rcx+r11*4-1000]); dump();
-mov (ecx, ptr[rcx+r11*8+0]); dump();
-mov (ecx, ptr[rcx+r11*8+1]); dump();
-mov (ecx, ptr[rcx+r11*8+1000]); dump();
-mov (ecx, ptr[rcx+r11*8-1]); dump();
-mov (ecx, ptr[rcx+r11*8-1000]); dump();
-mov (ecx, ptr[rcx+r12+0]); dump();
-mov (ecx, ptr[rcx+r12+1]); dump();
-mov (ecx, ptr[rcx+r12+1000]); dump();
-mov (ecx, ptr[rcx+r12-1]); dump();
-mov (ecx, ptr[rcx+r12-1000]); dump();
-mov (ecx, ptr[rcx+r12*1+0]); dump();
-mov (ecx, ptr[rcx+r12*1+1]); dump();
-mov (ecx, ptr[rcx+r12*1+1000]); dump();
-mov (ecx, ptr[rcx+r12*1-1]); dump();
-mov (ecx, ptr[rcx+r12*1-1000]); dump();
-mov (ecx, ptr[rcx+r12*2+0]); dump();
-mov (ecx, ptr[rcx+r12*2+1]); dump();
-mov (ecx, ptr[rcx+r12*2+1000]); dump();
-mov (ecx, ptr[rcx+r12*2-1]); dump();
-mov (ecx, ptr[rcx+r12*2-1000]); dump();
-mov (ecx, ptr[rcx+r12*4+0]); dump();
-mov (ecx, ptr[rcx+r12*4+1]); dump();
-mov (ecx, ptr[rcx+r12*4+1000]); dump();
-mov (ecx, ptr[rcx+r12*4-1]); dump();
-mov (ecx, ptr[rcx+r12*4-1000]); dump();
-mov (ecx, ptr[rcx+r12*8+0]); dump();
-mov (ecx, ptr[rcx+r12*8+1]); dump();
-mov (ecx, ptr[rcx+r12*8+1000]); dump();
-mov (ecx, ptr[rcx+r12*8-1]); dump();
-mov (ecx, ptr[rcx+r12*8-1000]); dump();
-mov (ecx, ptr[rcx+r13+0]); dump();
-mov (ecx, ptr[rcx+r13+1]); dump();
-mov (ecx, ptr[rcx+r13+1000]); dump();
-mov (ecx, ptr[rcx+r13-1]); dump();
-mov (ecx, ptr[rcx+r13-1000]); dump();
-mov (ecx, ptr[rcx+r13*1+0]); dump();
-mov (ecx, ptr[rcx+r13*1+1]); dump();
-mov (ecx, ptr[rcx+r13*1+1000]); dump();
-mov (ecx, ptr[rcx+r13*1-1]); dump();
-mov (ecx, ptr[rcx+r13*1-1000]); dump();
-mov (ecx, ptr[rcx+r13*2+0]); dump();
-mov (ecx, ptr[rcx+r13*2+1]); dump();
-mov (ecx, ptr[rcx+r13*2+1000]); dump();
-mov (ecx, ptr[rcx+r13*2-1]); dump();
-mov (ecx, ptr[rcx+r13*2-1000]); dump();
-mov (ecx, ptr[rcx+r13*4+0]); dump();
-mov (ecx, ptr[rcx+r13*4+1]); dump();
-mov (ecx, ptr[rcx+r13*4+1000]); dump();
-mov (ecx, ptr[rcx+r13*4-1]); dump();
-mov (ecx, ptr[rcx+r13*4-1000]); dump();
-mov (ecx, ptr[rcx+r13*8+0]); dump();
-mov (ecx, ptr[rcx+r13*8+1]); dump();
-mov (ecx, ptr[rcx+r13*8+1000]); dump();
-mov (ecx, ptr[rcx+r13*8-1]); dump();
-mov (ecx, ptr[rcx+r13*8-1000]); dump();
-mov (ecx, ptr[rcx+r14+0]); dump();
-mov (ecx, ptr[rcx+r14+1]); dump();
-mov (ecx, ptr[rcx+r14+1000]); dump();
-mov (ecx, ptr[rcx+r14-1]); dump();
-mov (ecx, ptr[rcx+r14-1000]); dump();
-mov (ecx, ptr[rcx+r14*1+0]); dump();
-mov (ecx, ptr[rcx+r14*1+1]); dump();
-mov (ecx, ptr[rcx+r14*1+1000]); dump();
-mov (ecx, ptr[rcx+r14*1-1]); dump();
-mov (ecx, ptr[rcx+r14*1-1000]); dump();
-mov (ecx, ptr[rcx+r14*2+0]); dump();
-mov (ecx, ptr[rcx+r14*2+1]); dump();
-mov (ecx, ptr[rcx+r14*2+1000]); dump();
-mov (ecx, ptr[rcx+r14*2-1]); dump();
-mov (ecx, ptr[rcx+r14*2-1000]); dump();
-mov (ecx, ptr[rcx+r14*4+0]); dump();
-mov (ecx, ptr[rcx+r14*4+1]); dump();
-mov (ecx, ptr[rcx+r14*4+1000]); dump();
-mov (ecx, ptr[rcx+r14*4-1]); dump();
-mov (ecx, ptr[rcx+r14*4-1000]); dump();
-mov (ecx, ptr[rcx+r14*8+0]); dump();
-mov (ecx, ptr[rcx+r14*8+1]); dump();
-mov (ecx, ptr[rcx+r14*8+1000]); dump();
-mov (ecx, ptr[rcx+r14*8-1]); dump();
-mov (ecx, ptr[rcx+r14*8-1000]); dump();
-}
-    void gen7(){
-mov (ecx, ptr[rcx+r15+0]); dump();
-mov (ecx, ptr[rcx+r15+1]); dump();
-mov (ecx, ptr[rcx+r15+1000]); dump();
-mov (ecx, ptr[rcx+r15-1]); dump();
-mov (ecx, ptr[rcx+r15-1000]); dump();
-mov (ecx, ptr[rcx+r15*1+0]); dump();
-mov (ecx, ptr[rcx+r15*1+1]); dump();
-mov (ecx, ptr[rcx+r15*1+1000]); dump();
-mov (ecx, ptr[rcx+r15*1-1]); dump();
-mov (ecx, ptr[rcx+r15*1-1000]); dump();
-mov (ecx, ptr[rcx+r15*2+0]); dump();
-mov (ecx, ptr[rcx+r15*2+1]); dump();
-mov (ecx, ptr[rcx+r15*2+1000]); dump();
-mov (ecx, ptr[rcx+r15*2-1]); dump();
-mov (ecx, ptr[rcx+r15*2-1000]); dump();
-mov (ecx, ptr[rcx+r15*4+0]); dump();
-mov (ecx, ptr[rcx+r15*4+1]); dump();
-mov (ecx, ptr[rcx+r15*4+1000]); dump();
-mov (ecx, ptr[rcx+r15*4-1]); dump();
-mov (ecx, ptr[rcx+r15*4-1000]); dump();
-mov (ecx, ptr[rcx+r15*8+0]); dump();
-mov (ecx, ptr[rcx+r15*8+1]); dump();
-mov (ecx, ptr[rcx+r15*8+1000]); dump();
-mov (ecx, ptr[rcx+r15*8-1]); dump();
-mov (ecx, ptr[rcx+r15*8-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rdx+rax+0]); dump();
-mov (ecx, ptr[rdx+rax+1]); dump();
-mov (ecx, ptr[rdx+rax+1000]); dump();
-mov (ecx, ptr[rdx+rax-1]); dump();
-mov (ecx, ptr[rdx+rax-1000]); dump();
-mov (ecx, ptr[rdx+rax*1+0]); dump();
-mov (ecx, ptr[rdx+rax*1+1]); dump();
-mov (ecx, ptr[rdx+rax*1+1000]); dump();
-mov (ecx, ptr[rdx+rax*1-1]); dump();
-mov (ecx, ptr[rdx+rax*1-1000]); dump();
-mov (ecx, ptr[rdx+rax*2+0]); dump();
-mov (ecx, ptr[rdx+rax*2+1]); dump();
-mov (ecx, ptr[rdx+rax*2+1000]); dump();
-mov (ecx, ptr[rdx+rax*2-1]); dump();
-mov (ecx, ptr[rdx+rax*2-1000]); dump();
-mov (ecx, ptr[rdx+rax*4+0]); dump();
-mov (ecx, ptr[rdx+rax*4+1]); dump();
-mov (ecx, ptr[rdx+rax*4+1000]); dump();
-mov (ecx, ptr[rdx+rax*4-1]); dump();
-mov (ecx, ptr[rdx+rax*4-1000]); dump();
-mov (ecx, ptr[rdx+rax*8+0]); dump();
-mov (ecx, ptr[rdx+rax*8+1]); dump();
-mov (ecx, ptr[rdx+rax*8+1000]); dump();
-mov (ecx, ptr[rdx+rax*8-1]); dump();
-mov (ecx, ptr[rdx+rax*8-1000]); dump();
-mov (ecx, ptr[rdx+rcx+0]); dump();
-mov (ecx, ptr[rdx+rcx+1]); dump();
-mov (ecx, ptr[rdx+rcx+1000]); dump();
-mov (ecx, ptr[rdx+rcx-1]); dump();
-mov (ecx, ptr[rdx+rcx-1000]); dump();
-mov (ecx, ptr[rdx+rcx*1+0]); dump();
-mov (ecx, ptr[rdx+rcx*1+1]); dump();
-mov (ecx, ptr[rdx+rcx*1+1000]); dump();
-mov (ecx, ptr[rdx+rcx*1-1]); dump();
-mov (ecx, ptr[rdx+rcx*1-1000]); dump();
-mov (ecx, ptr[rdx+rcx*2+0]); dump();
-mov (ecx, ptr[rdx+rcx*2+1]); dump();
-mov (ecx, ptr[rdx+rcx*2+1000]); dump();
-mov (ecx, ptr[rdx+rcx*2-1]); dump();
-mov (ecx, ptr[rdx+rcx*2-1000]); dump();
-mov (ecx, ptr[rdx+rcx*4+0]); dump();
-mov (ecx, ptr[rdx+rcx*4+1]); dump();
-mov (ecx, ptr[rdx+rcx*4+1000]); dump();
-mov (ecx, ptr[rdx+rcx*4-1]); dump();
-mov (ecx, ptr[rdx+rcx*4-1000]); dump();
-mov (ecx, ptr[rdx+rcx*8+0]); dump();
-mov (ecx, ptr[rdx+rcx*8+1]); dump();
-mov (ecx, ptr[rdx+rcx*8+1000]); dump();
-mov (ecx, ptr[rdx+rcx*8-1]); dump();
-mov (ecx, ptr[rdx+rcx*8-1000]); dump();
-}
-    void gen8(){
-mov (ecx, ptr[rdx+rdx+0]); dump();
-mov (ecx, ptr[rdx+rdx+1]); dump();
-mov (ecx, ptr[rdx+rdx+1000]); dump();
-mov (ecx, ptr[rdx+rdx-1]); dump();
-mov (ecx, ptr[rdx+rdx-1000]); dump();
-mov (ecx, ptr[rdx+rdx*1+0]); dump();
-mov (ecx, ptr[rdx+rdx*1+1]); dump();
-mov (ecx, ptr[rdx+rdx*1+1000]); dump();
-mov (ecx, ptr[rdx+rdx*1-1]); dump();
-mov (ecx, ptr[rdx+rdx*1-1000]); dump();
-mov (ecx, ptr[rdx+rdx*2+0]); dump();
-mov (ecx, ptr[rdx+rdx*2+1]); dump();
-mov (ecx, ptr[rdx+rdx*2+1000]); dump();
-mov (ecx, ptr[rdx+rdx*2-1]); dump();
-mov (ecx, ptr[rdx+rdx*2-1000]); dump();
-mov (ecx, ptr[rdx+rdx*4+0]); dump();
-mov (ecx, ptr[rdx+rdx*4+1]); dump();
-mov (ecx, ptr[rdx+rdx*4+1000]); dump();
-mov (ecx, ptr[rdx+rdx*4-1]); dump();
-mov (ecx, ptr[rdx+rdx*4-1000]); dump();
-mov (ecx, ptr[rdx+rdx*8+0]); dump();
-mov (ecx, ptr[rdx+rdx*8+1]); dump();
-mov (ecx, ptr[rdx+rdx*8+1000]); dump();
-mov (ecx, ptr[rdx+rdx*8-1]); dump();
-mov (ecx, ptr[rdx+rdx*8-1000]); dump();
-mov (ecx, ptr[rdx+rbx+0]); dump();
-mov (ecx, ptr[rdx+rbx+1]); dump();
-mov (ecx, ptr[rdx+rbx+1000]); dump();
-mov (ecx, ptr[rdx+rbx-1]); dump();
-mov (ecx, ptr[rdx+rbx-1000]); dump();
-mov (ecx, ptr[rdx+rbx*1+0]); dump();
-mov (ecx, ptr[rdx+rbx*1+1]); dump();
-mov (ecx, ptr[rdx+rbx*1+1000]); dump();
-mov (ecx, ptr[rdx+rbx*1-1]); dump();
-mov (ecx, ptr[rdx+rbx*1-1000]); dump();
-mov (ecx, ptr[rdx+rbx*2+0]); dump();
-mov (ecx, ptr[rdx+rbx*2+1]); dump();
-mov (ecx, ptr[rdx+rbx*2+1000]); dump();
-mov (ecx, ptr[rdx+rbx*2-1]); dump();
-mov (ecx, ptr[rdx+rbx*2-1000]); dump();
-mov (ecx, ptr[rdx+rbx*4+0]); dump();
-mov (ecx, ptr[rdx+rbx*4+1]); dump();
-mov (ecx, ptr[rdx+rbx*4+1000]); dump();
-mov (ecx, ptr[rdx+rbx*4-1]); dump();
-mov (ecx, ptr[rdx+rbx*4-1000]); dump();
-mov (ecx, ptr[rdx+rbx*8+0]); dump();
-mov (ecx, ptr[rdx+rbx*8+1]); dump();
-mov (ecx, ptr[rdx+rbx*8+1000]); dump();
-mov (ecx, ptr[rdx+rbx*8-1]); dump();
-mov (ecx, ptr[rdx+rbx*8-1000]); dump();
-mov (ecx, ptr[rdx+rbp+0]); dump();
-mov (ecx, ptr[rdx+rbp+1]); dump();
-mov (ecx, ptr[rdx+rbp+1000]); dump();
-mov (ecx, ptr[rdx+rbp-1]); dump();
-mov (ecx, ptr[rdx+rbp-1000]); dump();
-mov (ecx, ptr[rdx+rbp*1+0]); dump();
-mov (ecx, ptr[rdx+rbp*1+1]); dump();
-mov (ecx, ptr[rdx+rbp*1+1000]); dump();
-mov (ecx, ptr[rdx+rbp*1-1]); dump();
-mov (ecx, ptr[rdx+rbp*1-1000]); dump();
-mov (ecx, ptr[rdx+rbp*2+0]); dump();
-mov (ecx, ptr[rdx+rbp*2+1]); dump();
-mov (ecx, ptr[rdx+rbp*2+1000]); dump();
-mov (ecx, ptr[rdx+rbp*2-1]); dump();
-mov (ecx, ptr[rdx+rbp*2-1000]); dump();
-mov (ecx, ptr[rdx+rbp*4+0]); dump();
-mov (ecx, ptr[rdx+rbp*4+1]); dump();
-mov (ecx, ptr[rdx+rbp*4+1000]); dump();
-mov (ecx, ptr[rdx+rbp*4-1]); dump();
-mov (ecx, ptr[rdx+rbp*4-1000]); dump();
-mov (ecx, ptr[rdx+rbp*8+0]); dump();
-mov (ecx, ptr[rdx+rbp*8+1]); dump();
-mov (ecx, ptr[rdx+rbp*8+1000]); dump();
-mov (ecx, ptr[rdx+rbp*8-1]); dump();
-mov (ecx, ptr[rdx+rbp*8-1000]); dump();
-mov (ecx, ptr[rdx+rsi+0]); dump();
-mov (ecx, ptr[rdx+rsi+1]); dump();
-mov (ecx, ptr[rdx+rsi+1000]); dump();
-mov (ecx, ptr[rdx+rsi-1]); dump();
-mov (ecx, ptr[rdx+rsi-1000]); dump();
-mov (ecx, ptr[rdx+rsi*1+0]); dump();
-mov (ecx, ptr[rdx+rsi*1+1]); dump();
-mov (ecx, ptr[rdx+rsi*1+1000]); dump();
-mov (ecx, ptr[rdx+rsi*1-1]); dump();
-mov (ecx, ptr[rdx+rsi*1-1000]); dump();
-mov (ecx, ptr[rdx+rsi*2+0]); dump();
-mov (ecx, ptr[rdx+rsi*2+1]); dump();
-mov (ecx, ptr[rdx+rsi*2+1000]); dump();
-mov (ecx, ptr[rdx+rsi*2-1]); dump();
-mov (ecx, ptr[rdx+rsi*2-1000]); dump();
-mov (ecx, ptr[rdx+rsi*4+0]); dump();
-mov (ecx, ptr[rdx+rsi*4+1]); dump();
-mov (ecx, ptr[rdx+rsi*4+1000]); dump();
-mov (ecx, ptr[rdx+rsi*4-1]); dump();
-mov (ecx, ptr[rdx+rsi*4-1000]); dump();
-mov (ecx, ptr[rdx+rsi*8+0]); dump();
-mov (ecx, ptr[rdx+rsi*8+1]); dump();
-mov (ecx, ptr[rdx+rsi*8+1000]); dump();
-mov (ecx, ptr[rdx+rsi*8-1]); dump();
-mov (ecx, ptr[rdx+rsi*8-1000]); dump();
-}
-    void gen9(){
-mov (ecx, ptr[rdx+rdi+0]); dump();
-mov (ecx, ptr[rdx+rdi+1]); dump();
-mov (ecx, ptr[rdx+rdi+1000]); dump();
-mov (ecx, ptr[rdx+rdi-1]); dump();
-mov (ecx, ptr[rdx+rdi-1000]); dump();
-mov (ecx, ptr[rdx+rdi*1+0]); dump();
-mov (ecx, ptr[rdx+rdi*1+1]); dump();
-mov (ecx, ptr[rdx+rdi*1+1000]); dump();
-mov (ecx, ptr[rdx+rdi*1-1]); dump();
-mov (ecx, ptr[rdx+rdi*1-1000]); dump();
-mov (ecx, ptr[rdx+rdi*2+0]); dump();
-mov (ecx, ptr[rdx+rdi*2+1]); dump();
-mov (ecx, ptr[rdx+rdi*2+1000]); dump();
-mov (ecx, ptr[rdx+rdi*2-1]); dump();
-mov (ecx, ptr[rdx+rdi*2-1000]); dump();
-mov (ecx, ptr[rdx+rdi*4+0]); dump();
-mov (ecx, ptr[rdx+rdi*4+1]); dump();
-mov (ecx, ptr[rdx+rdi*4+1000]); dump();
-mov (ecx, ptr[rdx+rdi*4-1]); dump();
-mov (ecx, ptr[rdx+rdi*4-1000]); dump();
-mov (ecx, ptr[rdx+rdi*8+0]); dump();
-mov (ecx, ptr[rdx+rdi*8+1]); dump();
-mov (ecx, ptr[rdx+rdi*8+1000]); dump();
-mov (ecx, ptr[rdx+rdi*8-1]); dump();
-mov (ecx, ptr[rdx+rdi*8-1000]); dump();
-mov (ecx, ptr[rdx+r9+0]); dump();
-mov (ecx, ptr[rdx+r9+1]); dump();
-mov (ecx, ptr[rdx+r9+1000]); dump();
-mov (ecx, ptr[rdx+r9-1]); dump();
-mov (ecx, ptr[rdx+r9-1000]); dump();
-mov (ecx, ptr[rdx+r9*1+0]); dump();
-mov (ecx, ptr[rdx+r9*1+1]); dump();
-mov (ecx, ptr[rdx+r9*1+1000]); dump();
-mov (ecx, ptr[rdx+r9*1-1]); dump();
-mov (ecx, ptr[rdx+r9*1-1000]); dump();
-mov (ecx, ptr[rdx+r9*2+0]); dump();
-mov (ecx, ptr[rdx+r9*2+1]); dump();
-mov (ecx, ptr[rdx+r9*2+1000]); dump();
-mov (ecx, ptr[rdx+r9*2-1]); dump();
-mov (ecx, ptr[rdx+r9*2-1000]); dump();
-mov (ecx, ptr[rdx+r9*4+0]); dump();
-mov (ecx, ptr[rdx+r9*4+1]); dump();
-mov (ecx, ptr[rdx+r9*4+1000]); dump();
-mov (ecx, ptr[rdx+r9*4-1]); dump();
-mov (ecx, ptr[rdx+r9*4-1000]); dump();
-mov (ecx, ptr[rdx+r9*8+0]); dump();
-mov (ecx, ptr[rdx+r9*8+1]); dump();
-mov (ecx, ptr[rdx+r9*8+1000]); dump();
-mov (ecx, ptr[rdx+r9*8-1]); dump();
-mov (ecx, ptr[rdx+r9*8-1000]); dump();
-mov (ecx, ptr[rdx+r10+0]); dump();
-mov (ecx, ptr[rdx+r10+1]); dump();
-mov (ecx, ptr[rdx+r10+1000]); dump();
-mov (ecx, ptr[rdx+r10-1]); dump();
-mov (ecx, ptr[rdx+r10-1000]); dump();
-mov (ecx, ptr[rdx+r10*1+0]); dump();
-mov (ecx, ptr[rdx+r10*1+1]); dump();
-mov (ecx, ptr[rdx+r10*1+1000]); dump();
-mov (ecx, ptr[rdx+r10*1-1]); dump();
-mov (ecx, ptr[rdx+r10*1-1000]); dump();
-mov (ecx, ptr[rdx+r10*2+0]); dump();
-mov (ecx, ptr[rdx+r10*2+1]); dump();
-mov (ecx, ptr[rdx+r10*2+1000]); dump();
-mov (ecx, ptr[rdx+r10*2-1]); dump();
-mov (ecx, ptr[rdx+r10*2-1000]); dump();
-mov (ecx, ptr[rdx+r10*4+0]); dump();
-mov (ecx, ptr[rdx+r10*4+1]); dump();
-mov (ecx, ptr[rdx+r10*4+1000]); dump();
-mov (ecx, ptr[rdx+r10*4-1]); dump();
-mov (ecx, ptr[rdx+r10*4-1000]); dump();
-mov (ecx, ptr[rdx+r10*8+0]); dump();
-mov (ecx, ptr[rdx+r10*8+1]); dump();
-mov (ecx, ptr[rdx+r10*8+1000]); dump();
-mov (ecx, ptr[rdx+r10*8-1]); dump();
-mov (ecx, ptr[rdx+r10*8-1000]); dump();
-mov (ecx, ptr[rdx+r11+0]); dump();
-mov (ecx, ptr[rdx+r11+1]); dump();
-mov (ecx, ptr[rdx+r11+1000]); dump();
-mov (ecx, ptr[rdx+r11-1]); dump();
-mov (ecx, ptr[rdx+r11-1000]); dump();
-mov (ecx, ptr[rdx+r11*1+0]); dump();
-mov (ecx, ptr[rdx+r11*1+1]); dump();
-mov (ecx, ptr[rdx+r11*1+1000]); dump();
-mov (ecx, ptr[rdx+r11*1-1]); dump();
-mov (ecx, ptr[rdx+r11*1-1000]); dump();
-mov (ecx, ptr[rdx+r11*2+0]); dump();
-mov (ecx, ptr[rdx+r11*2+1]); dump();
-mov (ecx, ptr[rdx+r11*2+1000]); dump();
-mov (ecx, ptr[rdx+r11*2-1]); dump();
-mov (ecx, ptr[rdx+r11*2-1000]); dump();
-mov (ecx, ptr[rdx+r11*4+0]); dump();
-mov (ecx, ptr[rdx+r11*4+1]); dump();
-mov (ecx, ptr[rdx+r11*4+1000]); dump();
-mov (ecx, ptr[rdx+r11*4-1]); dump();
-mov (ecx, ptr[rdx+r11*4-1000]); dump();
-mov (ecx, ptr[rdx+r11*8+0]); dump();
-mov (ecx, ptr[rdx+r11*8+1]); dump();
-mov (ecx, ptr[rdx+r11*8+1000]); dump();
-mov (ecx, ptr[rdx+r11*8-1]); dump();
-mov (ecx, ptr[rdx+r11*8-1000]); dump();
-}
-    void gen10(){
-mov (ecx, ptr[rdx+r12+0]); dump();
-mov (ecx, ptr[rdx+r12+1]); dump();
-mov (ecx, ptr[rdx+r12+1000]); dump();
-mov (ecx, ptr[rdx+r12-1]); dump();
-mov (ecx, ptr[rdx+r12-1000]); dump();
-mov (ecx, ptr[rdx+r12*1+0]); dump();
-mov (ecx, ptr[rdx+r12*1+1]); dump();
-mov (ecx, ptr[rdx+r12*1+1000]); dump();
-mov (ecx, ptr[rdx+r12*1-1]); dump();
-mov (ecx, ptr[rdx+r12*1-1000]); dump();
-mov (ecx, ptr[rdx+r12*2+0]); dump();
-mov (ecx, ptr[rdx+r12*2+1]); dump();
-mov (ecx, ptr[rdx+r12*2+1000]); dump();
-mov (ecx, ptr[rdx+r12*2-1]); dump();
-mov (ecx, ptr[rdx+r12*2-1000]); dump();
-mov (ecx, ptr[rdx+r12*4+0]); dump();
-mov (ecx, ptr[rdx+r12*4+1]); dump();
-mov (ecx, ptr[rdx+r12*4+1000]); dump();
-mov (ecx, ptr[rdx+r12*4-1]); dump();
-mov (ecx, ptr[rdx+r12*4-1000]); dump();
-mov (ecx, ptr[rdx+r12*8+0]); dump();
-mov (ecx, ptr[rdx+r12*8+1]); dump();
-mov (ecx, ptr[rdx+r12*8+1000]); dump();
-mov (ecx, ptr[rdx+r12*8-1]); dump();
-mov (ecx, ptr[rdx+r12*8-1000]); dump();
-mov (ecx, ptr[rdx+r13+0]); dump();
-mov (ecx, ptr[rdx+r13+1]); dump();
-mov (ecx, ptr[rdx+r13+1000]); dump();
-mov (ecx, ptr[rdx+r13-1]); dump();
-mov (ecx, ptr[rdx+r13-1000]); dump();
-mov (ecx, ptr[rdx+r13*1+0]); dump();
-mov (ecx, ptr[rdx+r13*1+1]); dump();
-mov (ecx, ptr[rdx+r13*1+1000]); dump();
-mov (ecx, ptr[rdx+r13*1-1]); dump();
-mov (ecx, ptr[rdx+r13*1-1000]); dump();
-mov (ecx, ptr[rdx+r13*2+0]); dump();
-mov (ecx, ptr[rdx+r13*2+1]); dump();
-mov (ecx, ptr[rdx+r13*2+1000]); dump();
-mov (ecx, ptr[rdx+r13*2-1]); dump();
-mov (ecx, ptr[rdx+r13*2-1000]); dump();
-mov (ecx, ptr[rdx+r13*4+0]); dump();
-mov (ecx, ptr[rdx+r13*4+1]); dump();
-mov (ecx, ptr[rdx+r13*4+1000]); dump();
-mov (ecx, ptr[rdx+r13*4-1]); dump();
-mov (ecx, ptr[rdx+r13*4-1000]); dump();
-mov (ecx, ptr[rdx+r13*8+0]); dump();
-mov (ecx, ptr[rdx+r13*8+1]); dump();
-mov (ecx, ptr[rdx+r13*8+1000]); dump();
-mov (ecx, ptr[rdx+r13*8-1]); dump();
-mov (ecx, ptr[rdx+r13*8-1000]); dump();
-mov (ecx, ptr[rdx+r14+0]); dump();
-mov (ecx, ptr[rdx+r14+1]); dump();
-mov (ecx, ptr[rdx+r14+1000]); dump();
-mov (ecx, ptr[rdx+r14-1]); dump();
-mov (ecx, ptr[rdx+r14-1000]); dump();
-mov (ecx, ptr[rdx+r14*1+0]); dump();
-mov (ecx, ptr[rdx+r14*1+1]); dump();
-mov (ecx, ptr[rdx+r14*1+1000]); dump();
-mov (ecx, ptr[rdx+r14*1-1]); dump();
-mov (ecx, ptr[rdx+r14*1-1000]); dump();
-mov (ecx, ptr[rdx+r14*2+0]); dump();
-mov (ecx, ptr[rdx+r14*2+1]); dump();
-mov (ecx, ptr[rdx+r14*2+1000]); dump();
-mov (ecx, ptr[rdx+r14*2-1]); dump();
-mov (ecx, ptr[rdx+r14*2-1000]); dump();
-mov (ecx, ptr[rdx+r14*4+0]); dump();
-mov (ecx, ptr[rdx+r14*4+1]); dump();
-mov (ecx, ptr[rdx+r14*4+1000]); dump();
-mov (ecx, ptr[rdx+r14*4-1]); dump();
-mov (ecx, ptr[rdx+r14*4-1000]); dump();
-mov (ecx, ptr[rdx+r14*8+0]); dump();
-mov (ecx, ptr[rdx+r14*8+1]); dump();
-mov (ecx, ptr[rdx+r14*8+1000]); dump();
-mov (ecx, ptr[rdx+r14*8-1]); dump();
-mov (ecx, ptr[rdx+r14*8-1000]); dump();
-mov (ecx, ptr[rdx+r15+0]); dump();
-mov (ecx, ptr[rdx+r15+1]); dump();
-mov (ecx, ptr[rdx+r15+1000]); dump();
-mov (ecx, ptr[rdx+r15-1]); dump();
-mov (ecx, ptr[rdx+r15-1000]); dump();
-mov (ecx, ptr[rdx+r15*1+0]); dump();
-mov (ecx, ptr[rdx+r15*1+1]); dump();
-mov (ecx, ptr[rdx+r15*1+1000]); dump();
-mov (ecx, ptr[rdx+r15*1-1]); dump();
-mov (ecx, ptr[rdx+r15*1-1000]); dump();
-mov (ecx, ptr[rdx+r15*2+0]); dump();
-mov (ecx, ptr[rdx+r15*2+1]); dump();
-mov (ecx, ptr[rdx+r15*2+1000]); dump();
-mov (ecx, ptr[rdx+r15*2-1]); dump();
-mov (ecx, ptr[rdx+r15*2-1000]); dump();
-mov (ecx, ptr[rdx+r15*4+0]); dump();
-mov (ecx, ptr[rdx+r15*4+1]); dump();
-mov (ecx, ptr[rdx+r15*4+1000]); dump();
-mov (ecx, ptr[rdx+r15*4-1]); dump();
-mov (ecx, ptr[rdx+r15*4-1000]); dump();
-mov (ecx, ptr[rdx+r15*8+0]); dump();
-mov (ecx, ptr[rdx+r15*8+1]); dump();
-mov (ecx, ptr[rdx+r15*8+1000]); dump();
-mov (ecx, ptr[rdx+r15*8-1]); dump();
-mov (ecx, ptr[rdx+r15*8-1000]); dump();
-}
-    void gen11(){
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rbx+rax+0]); dump();
-mov (ecx, ptr[rbx+rax+1]); dump();
-mov (ecx, ptr[rbx+rax+1000]); dump();
-mov (ecx, ptr[rbx+rax-1]); dump();
-mov (ecx, ptr[rbx+rax-1000]); dump();
-mov (ecx, ptr[rbx+rax*1+0]); dump();
-mov (ecx, ptr[rbx+rax*1+1]); dump();
-mov (ecx, ptr[rbx+rax*1+1000]); dump();
-mov (ecx, ptr[rbx+rax*1-1]); dump();
-mov (ecx, ptr[rbx+rax*1-1000]); dump();
-mov (ecx, ptr[rbx+rax*2+0]); dump();
-mov (ecx, ptr[rbx+rax*2+1]); dump();
-mov (ecx, ptr[rbx+rax*2+1000]); dump();
-mov (ecx, ptr[rbx+rax*2-1]); dump();
-mov (ecx, ptr[rbx+rax*2-1000]); dump();
-mov (ecx, ptr[rbx+rax*4+0]); dump();
-mov (ecx, ptr[rbx+rax*4+1]); dump();
-mov (ecx, ptr[rbx+rax*4+1000]); dump();
-mov (ecx, ptr[rbx+rax*4-1]); dump();
-mov (ecx, ptr[rbx+rax*4-1000]); dump();
-mov (ecx, ptr[rbx+rax*8+0]); dump();
-mov (ecx, ptr[rbx+rax*8+1]); dump();
-mov (ecx, ptr[rbx+rax*8+1000]); dump();
-mov (ecx, ptr[rbx+rax*8-1]); dump();
-mov (ecx, ptr[rbx+rax*8-1000]); dump();
-mov (ecx, ptr[rbx+rcx+0]); dump();
-mov (ecx, ptr[rbx+rcx+1]); dump();
-mov (ecx, ptr[rbx+rcx+1000]); dump();
-mov (ecx, ptr[rbx+rcx-1]); dump();
-mov (ecx, ptr[rbx+rcx-1000]); dump();
-mov (ecx, ptr[rbx+rcx*1+0]); dump();
-mov (ecx, ptr[rbx+rcx*1+1]); dump();
-mov (ecx, ptr[rbx+rcx*1+1000]); dump();
-mov (ecx, ptr[rbx+rcx*1-1]); dump();
-mov (ecx, ptr[rbx+rcx*1-1000]); dump();
-mov (ecx, ptr[rbx+rcx*2+0]); dump();
-mov (ecx, ptr[rbx+rcx*2+1]); dump();
-mov (ecx, ptr[rbx+rcx*2+1000]); dump();
-mov (ecx, ptr[rbx+rcx*2-1]); dump();
-mov (ecx, ptr[rbx+rcx*2-1000]); dump();
-mov (ecx, ptr[rbx+rcx*4+0]); dump();
-mov (ecx, ptr[rbx+rcx*4+1]); dump();
-mov (ecx, ptr[rbx+rcx*4+1000]); dump();
-mov (ecx, ptr[rbx+rcx*4-1]); dump();
-mov (ecx, ptr[rbx+rcx*4-1000]); dump();
-mov (ecx, ptr[rbx+rcx*8+0]); dump();
-mov (ecx, ptr[rbx+rcx*8+1]); dump();
-mov (ecx, ptr[rbx+rcx*8+1000]); dump();
-mov (ecx, ptr[rbx+rcx*8-1]); dump();
-mov (ecx, ptr[rbx+rcx*8-1000]); dump();
-mov (ecx, ptr[rbx+rdx+0]); dump();
-mov (ecx, ptr[rbx+rdx+1]); dump();
-mov (ecx, ptr[rbx+rdx+1000]); dump();
-mov (ecx, ptr[rbx+rdx-1]); dump();
-mov (ecx, ptr[rbx+rdx-1000]); dump();
-mov (ecx, ptr[rbx+rdx*1+0]); dump();
-mov (ecx, ptr[rbx+rdx*1+1]); dump();
-mov (ecx, ptr[rbx+rdx*1+1000]); dump();
-mov (ecx, ptr[rbx+rdx*1-1]); dump();
-mov (ecx, ptr[rbx+rdx*1-1000]); dump();
-mov (ecx, ptr[rbx+rdx*2+0]); dump();
-mov (ecx, ptr[rbx+rdx*2+1]); dump();
-mov (ecx, ptr[rbx+rdx*2+1000]); dump();
-mov (ecx, ptr[rbx+rdx*2-1]); dump();
-mov (ecx, ptr[rbx+rdx*2-1000]); dump();
-mov (ecx, ptr[rbx+rdx*4+0]); dump();
-mov (ecx, ptr[rbx+rdx*4+1]); dump();
-mov (ecx, ptr[rbx+rdx*4+1000]); dump();
-mov (ecx, ptr[rbx+rdx*4-1]); dump();
-mov (ecx, ptr[rbx+rdx*4-1000]); dump();
-mov (ecx, ptr[rbx+rdx*8+0]); dump();
-mov (ecx, ptr[rbx+rdx*8+1]); dump();
-mov (ecx, ptr[rbx+rdx*8+1000]); dump();
-mov (ecx, ptr[rbx+rdx*8-1]); dump();
-mov (ecx, ptr[rbx+rdx*8-1000]); dump();
-}
-    void gen12(){
-mov (ecx, ptr[rbx+rbx+0]); dump();
-mov (ecx, ptr[rbx+rbx+1]); dump();
-mov (ecx, ptr[rbx+rbx+1000]); dump();
-mov (ecx, ptr[rbx+rbx-1]); dump();
-mov (ecx, ptr[rbx+rbx-1000]); dump();
-mov (ecx, ptr[rbx+rbx*1+0]); dump();
-mov (ecx, ptr[rbx+rbx*1+1]); dump();
-mov (ecx, ptr[rbx+rbx*1+1000]); dump();
-mov (ecx, ptr[rbx+rbx*1-1]); dump();
-mov (ecx, ptr[rbx+rbx*1-1000]); dump();
-mov (ecx, ptr[rbx+rbx*2+0]); dump();
-mov (ecx, ptr[rbx+rbx*2+1]); dump();
-mov (ecx, ptr[rbx+rbx*2+1000]); dump();
-mov (ecx, ptr[rbx+rbx*2-1]); dump();
-mov (ecx, ptr[rbx+rbx*2-1000]); dump();
-mov (ecx, ptr[rbx+rbx*4+0]); dump();
-mov (ecx, ptr[rbx+rbx*4+1]); dump();
-mov (ecx, ptr[rbx+rbx*4+1000]); dump();
-mov (ecx, ptr[rbx+rbx*4-1]); dump();
-mov (ecx, ptr[rbx+rbx*4-1000]); dump();
-mov (ecx, ptr[rbx+rbx*8+0]); dump();
-mov (ecx, ptr[rbx+rbx*8+1]); dump();
-mov (ecx, ptr[rbx+rbx*8+1000]); dump();
-mov (ecx, ptr[rbx+rbx*8-1]); dump();
-mov (ecx, ptr[rbx+rbx*8-1000]); dump();
-mov (ecx, ptr[rbx+rbp+0]); dump();
-mov (ecx, ptr[rbx+rbp+1]); dump();
-mov (ecx, ptr[rbx+rbp+1000]); dump();
-mov (ecx, ptr[rbx+rbp-1]); dump();
-mov (ecx, ptr[rbx+rbp-1000]); dump();
-mov (ecx, ptr[rbx+rbp*1+0]); dump();
-mov (ecx, ptr[rbx+rbp*1+1]); dump();
-mov (ecx, ptr[rbx+rbp*1+1000]); dump();
-mov (ecx, ptr[rbx+rbp*1-1]); dump();
-mov (ecx, ptr[rbx+rbp*1-1000]); dump();
-mov (ecx, ptr[rbx+rbp*2+0]); dump();
-mov (ecx, ptr[rbx+rbp*2+1]); dump();
-mov (ecx, ptr[rbx+rbp*2+1000]); dump();
-mov (ecx, ptr[rbx+rbp*2-1]); dump();
-mov (ecx, ptr[rbx+rbp*2-1000]); dump();
-mov (ecx, ptr[rbx+rbp*4+0]); dump();
-mov (ecx, ptr[rbx+rbp*4+1]); dump();
-mov (ecx, ptr[rbx+rbp*4+1000]); dump();
-mov (ecx, ptr[rbx+rbp*4-1]); dump();
-mov (ecx, ptr[rbx+rbp*4-1000]); dump();
-mov (ecx, ptr[rbx+rbp*8+0]); dump();
-mov (ecx, ptr[rbx+rbp*8+1]); dump();
-mov (ecx, ptr[rbx+rbp*8+1000]); dump();
-mov (ecx, ptr[rbx+rbp*8-1]); dump();
-mov (ecx, ptr[rbx+rbp*8-1000]); dump();
-mov (ecx, ptr[rbx+rsi+0]); dump();
-mov (ecx, ptr[rbx+rsi+1]); dump();
-mov (ecx, ptr[rbx+rsi+1000]); dump();
-mov (ecx, ptr[rbx+rsi-1]); dump();
-mov (ecx, ptr[rbx+rsi-1000]); dump();
-mov (ecx, ptr[rbx+rsi*1+0]); dump();
-mov (ecx, ptr[rbx+rsi*1+1]); dump();
-mov (ecx, ptr[rbx+rsi*1+1000]); dump();
-mov (ecx, ptr[rbx+rsi*1-1]); dump();
-mov (ecx, ptr[rbx+rsi*1-1000]); dump();
-mov (ecx, ptr[rbx+rsi*2+0]); dump();
-mov (ecx, ptr[rbx+rsi*2+1]); dump();
-mov (ecx, ptr[rbx+rsi*2+1000]); dump();
-mov (ecx, ptr[rbx+rsi*2-1]); dump();
-mov (ecx, ptr[rbx+rsi*2-1000]); dump();
-mov (ecx, ptr[rbx+rsi*4+0]); dump();
-mov (ecx, ptr[rbx+rsi*4+1]); dump();
-mov (ecx, ptr[rbx+rsi*4+1000]); dump();
-mov (ecx, ptr[rbx+rsi*4-1]); dump();
-mov (ecx, ptr[rbx+rsi*4-1000]); dump();
-mov (ecx, ptr[rbx+rsi*8+0]); dump();
-mov (ecx, ptr[rbx+rsi*8+1]); dump();
-mov (ecx, ptr[rbx+rsi*8+1000]); dump();
-mov (ecx, ptr[rbx+rsi*8-1]); dump();
-mov (ecx, ptr[rbx+rsi*8-1000]); dump();
-mov (ecx, ptr[rbx+rdi+0]); dump();
-mov (ecx, ptr[rbx+rdi+1]); dump();
-mov (ecx, ptr[rbx+rdi+1000]); dump();
-mov (ecx, ptr[rbx+rdi-1]); dump();
-mov (ecx, ptr[rbx+rdi-1000]); dump();
-mov (ecx, ptr[rbx+rdi*1+0]); dump();
-mov (ecx, ptr[rbx+rdi*1+1]); dump();
-mov (ecx, ptr[rbx+rdi*1+1000]); dump();
-mov (ecx, ptr[rbx+rdi*1-1]); dump();
-mov (ecx, ptr[rbx+rdi*1-1000]); dump();
-mov (ecx, ptr[rbx+rdi*2+0]); dump();
-mov (ecx, ptr[rbx+rdi*2+1]); dump();
-mov (ecx, ptr[rbx+rdi*2+1000]); dump();
-mov (ecx, ptr[rbx+rdi*2-1]); dump();
-mov (ecx, ptr[rbx+rdi*2-1000]); dump();
-mov (ecx, ptr[rbx+rdi*4+0]); dump();
-mov (ecx, ptr[rbx+rdi*4+1]); dump();
-mov (ecx, ptr[rbx+rdi*4+1000]); dump();
-mov (ecx, ptr[rbx+rdi*4-1]); dump();
-mov (ecx, ptr[rbx+rdi*4-1000]); dump();
-mov (ecx, ptr[rbx+rdi*8+0]); dump();
-mov (ecx, ptr[rbx+rdi*8+1]); dump();
-mov (ecx, ptr[rbx+rdi*8+1000]); dump();
-mov (ecx, ptr[rbx+rdi*8-1]); dump();
-mov (ecx, ptr[rbx+rdi*8-1000]); dump();
-}
-    void gen13(){
-mov (ecx, ptr[rbx+r9+0]); dump();
-mov (ecx, ptr[rbx+r9+1]); dump();
-mov (ecx, ptr[rbx+r9+1000]); dump();
-mov (ecx, ptr[rbx+r9-1]); dump();
-mov (ecx, ptr[rbx+r9-1000]); dump();
-mov (ecx, ptr[rbx+r9*1+0]); dump();
-mov (ecx, ptr[rbx+r9*1+1]); dump();
-mov (ecx, ptr[rbx+r9*1+1000]); dump();
-mov (ecx, ptr[rbx+r9*1-1]); dump();
-mov (ecx, ptr[rbx+r9*1-1000]); dump();
-mov (ecx, ptr[rbx+r9*2+0]); dump();
-mov (ecx, ptr[rbx+r9*2+1]); dump();
-mov (ecx, ptr[rbx+r9*2+1000]); dump();
-mov (ecx, ptr[rbx+r9*2-1]); dump();
-mov (ecx, ptr[rbx+r9*2-1000]); dump();
-mov (ecx, ptr[rbx+r9*4+0]); dump();
-mov (ecx, ptr[rbx+r9*4+1]); dump();
-mov (ecx, ptr[rbx+r9*4+1000]); dump();
-mov (ecx, ptr[rbx+r9*4-1]); dump();
-mov (ecx, ptr[rbx+r9*4-1000]); dump();
-mov (ecx, ptr[rbx+r9*8+0]); dump();
-mov (ecx, ptr[rbx+r9*8+1]); dump();
-mov (ecx, ptr[rbx+r9*8+1000]); dump();
-mov (ecx, ptr[rbx+r9*8-1]); dump();
-mov (ecx, ptr[rbx+r9*8-1000]); dump();
-mov (ecx, ptr[rbx+r10+0]); dump();
-mov (ecx, ptr[rbx+r10+1]); dump();
-mov (ecx, ptr[rbx+r10+1000]); dump();
-mov (ecx, ptr[rbx+r10-1]); dump();
-mov (ecx, ptr[rbx+r10-1000]); dump();
-mov (ecx, ptr[rbx+r10*1+0]); dump();
-mov (ecx, ptr[rbx+r10*1+1]); dump();
-mov (ecx, ptr[rbx+r10*1+1000]); dump();
-mov (ecx, ptr[rbx+r10*1-1]); dump();
-mov (ecx, ptr[rbx+r10*1-1000]); dump();
-mov (ecx, ptr[rbx+r10*2+0]); dump();
-mov (ecx, ptr[rbx+r10*2+1]); dump();
-mov (ecx, ptr[rbx+r10*2+1000]); dump();
-mov (ecx, ptr[rbx+r10*2-1]); dump();
-mov (ecx, ptr[rbx+r10*2-1000]); dump();
-mov (ecx, ptr[rbx+r10*4+0]); dump();
-mov (ecx, ptr[rbx+r10*4+1]); dump();
-mov (ecx, ptr[rbx+r10*4+1000]); dump();
-mov (ecx, ptr[rbx+r10*4-1]); dump();
-mov (ecx, ptr[rbx+r10*4-1000]); dump();
-mov (ecx, ptr[rbx+r10*8+0]); dump();
-mov (ecx, ptr[rbx+r10*8+1]); dump();
-mov (ecx, ptr[rbx+r10*8+1000]); dump();
-mov (ecx, ptr[rbx+r10*8-1]); dump();
-mov (ecx, ptr[rbx+r10*8-1000]); dump();
-mov (ecx, ptr[rbx+r11+0]); dump();
-mov (ecx, ptr[rbx+r11+1]); dump();
-mov (ecx, ptr[rbx+r11+1000]); dump();
-mov (ecx, ptr[rbx+r11-1]); dump();
-mov (ecx, ptr[rbx+r11-1000]); dump();
-mov (ecx, ptr[rbx+r11*1+0]); dump();
-mov (ecx, ptr[rbx+r11*1+1]); dump();
-mov (ecx, ptr[rbx+r11*1+1000]); dump();
-mov (ecx, ptr[rbx+r11*1-1]); dump();
-mov (ecx, ptr[rbx+r11*1-1000]); dump();
-mov (ecx, ptr[rbx+r11*2+0]); dump();
-mov (ecx, ptr[rbx+r11*2+1]); dump();
-mov (ecx, ptr[rbx+r11*2+1000]); dump();
-mov (ecx, ptr[rbx+r11*2-1]); dump();
-mov (ecx, ptr[rbx+r11*2-1000]); dump();
-mov (ecx, ptr[rbx+r11*4+0]); dump();
-mov (ecx, ptr[rbx+r11*4+1]); dump();
-mov (ecx, ptr[rbx+r11*4+1000]); dump();
-mov (ecx, ptr[rbx+r11*4-1]); dump();
-mov (ecx, ptr[rbx+r11*4-1000]); dump();
-mov (ecx, ptr[rbx+r11*8+0]); dump();
-mov (ecx, ptr[rbx+r11*8+1]); dump();
-mov (ecx, ptr[rbx+r11*8+1000]); dump();
-mov (ecx, ptr[rbx+r11*8-1]); dump();
-mov (ecx, ptr[rbx+r11*8-1000]); dump();
-mov (ecx, ptr[rbx+r12+0]); dump();
-mov (ecx, ptr[rbx+r12+1]); dump();
-mov (ecx, ptr[rbx+r12+1000]); dump();
-mov (ecx, ptr[rbx+r12-1]); dump();
-mov (ecx, ptr[rbx+r12-1000]); dump();
-mov (ecx, ptr[rbx+r12*1+0]); dump();
-mov (ecx, ptr[rbx+r12*1+1]); dump();
-mov (ecx, ptr[rbx+r12*1+1000]); dump();
-mov (ecx, ptr[rbx+r12*1-1]); dump();
-mov (ecx, ptr[rbx+r12*1-1000]); dump();
-mov (ecx, ptr[rbx+r12*2+0]); dump();
-mov (ecx, ptr[rbx+r12*2+1]); dump();
-mov (ecx, ptr[rbx+r12*2+1000]); dump();
-mov (ecx, ptr[rbx+r12*2-1]); dump();
-mov (ecx, ptr[rbx+r12*2-1000]); dump();
-mov (ecx, ptr[rbx+r12*4+0]); dump();
-mov (ecx, ptr[rbx+r12*4+1]); dump();
-mov (ecx, ptr[rbx+r12*4+1000]); dump();
-mov (ecx, ptr[rbx+r12*4-1]); dump();
-mov (ecx, ptr[rbx+r12*4-1000]); dump();
-mov (ecx, ptr[rbx+r12*8+0]); dump();
-mov (ecx, ptr[rbx+r12*8+1]); dump();
-mov (ecx, ptr[rbx+r12*8+1000]); dump();
-mov (ecx, ptr[rbx+r12*8-1]); dump();
-mov (ecx, ptr[rbx+r12*8-1000]); dump();
-}
-    void gen14(){
-mov (ecx, ptr[rbx+r13+0]); dump();
-mov (ecx, ptr[rbx+r13+1]); dump();
-mov (ecx, ptr[rbx+r13+1000]); dump();
-mov (ecx, ptr[rbx+r13-1]); dump();
-mov (ecx, ptr[rbx+r13-1000]); dump();
-mov (ecx, ptr[rbx+r13*1+0]); dump();
-mov (ecx, ptr[rbx+r13*1+1]); dump();
-mov (ecx, ptr[rbx+r13*1+1000]); dump();
-mov (ecx, ptr[rbx+r13*1-1]); dump();
-mov (ecx, ptr[rbx+r13*1-1000]); dump();
-mov (ecx, ptr[rbx+r13*2+0]); dump();
-mov (ecx, ptr[rbx+r13*2+1]); dump();
-mov (ecx, ptr[rbx+r13*2+1000]); dump();
-mov (ecx, ptr[rbx+r13*2-1]); dump();
-mov (ecx, ptr[rbx+r13*2-1000]); dump();
-mov (ecx, ptr[rbx+r13*4+0]); dump();
-mov (ecx, ptr[rbx+r13*4+1]); dump();
-mov (ecx, ptr[rbx+r13*4+1000]); dump();
-mov (ecx, ptr[rbx+r13*4-1]); dump();
-mov (ecx, ptr[rbx+r13*4-1000]); dump();
-mov (ecx, ptr[rbx+r13*8+0]); dump();
-mov (ecx, ptr[rbx+r13*8+1]); dump();
-mov (ecx, ptr[rbx+r13*8+1000]); dump();
-mov (ecx, ptr[rbx+r13*8-1]); dump();
-mov (ecx, ptr[rbx+r13*8-1000]); dump();
-mov (ecx, ptr[rbx+r14+0]); dump();
-mov (ecx, ptr[rbx+r14+1]); dump();
-mov (ecx, ptr[rbx+r14+1000]); dump();
-mov (ecx, ptr[rbx+r14-1]); dump();
-mov (ecx, ptr[rbx+r14-1000]); dump();
-mov (ecx, ptr[rbx+r14*1+0]); dump();
-mov (ecx, ptr[rbx+r14*1+1]); dump();
-mov (ecx, ptr[rbx+r14*1+1000]); dump();
-mov (ecx, ptr[rbx+r14*1-1]); dump();
-mov (ecx, ptr[rbx+r14*1-1000]); dump();
-mov (ecx, ptr[rbx+r14*2+0]); dump();
-mov (ecx, ptr[rbx+r14*2+1]); dump();
-mov (ecx, ptr[rbx+r14*2+1000]); dump();
-mov (ecx, ptr[rbx+r14*2-1]); dump();
-mov (ecx, ptr[rbx+r14*2-1000]); dump();
-mov (ecx, ptr[rbx+r14*4+0]); dump();
-mov (ecx, ptr[rbx+r14*4+1]); dump();
-mov (ecx, ptr[rbx+r14*4+1000]); dump();
-mov (ecx, ptr[rbx+r14*4-1]); dump();
-mov (ecx, ptr[rbx+r14*4-1000]); dump();
-mov (ecx, ptr[rbx+r14*8+0]); dump();
-mov (ecx, ptr[rbx+r14*8+1]); dump();
-mov (ecx, ptr[rbx+r14*8+1000]); dump();
-mov (ecx, ptr[rbx+r14*8-1]); dump();
-mov (ecx, ptr[rbx+r14*8-1000]); dump();
-mov (ecx, ptr[rbx+r15+0]); dump();
-mov (ecx, ptr[rbx+r15+1]); dump();
-mov (ecx, ptr[rbx+r15+1000]); dump();
-mov (ecx, ptr[rbx+r15-1]); dump();
-mov (ecx, ptr[rbx+r15-1000]); dump();
-mov (ecx, ptr[rbx+r15*1+0]); dump();
-mov (ecx, ptr[rbx+r15*1+1]); dump();
-mov (ecx, ptr[rbx+r15*1+1000]); dump();
-mov (ecx, ptr[rbx+r15*1-1]); dump();
-mov (ecx, ptr[rbx+r15*1-1000]); dump();
-mov (ecx, ptr[rbx+r15*2+0]); dump();
-mov (ecx, ptr[rbx+r15*2+1]); dump();
-mov (ecx, ptr[rbx+r15*2+1000]); dump();
-mov (ecx, ptr[rbx+r15*2-1]); dump();
-mov (ecx, ptr[rbx+r15*2-1000]); dump();
-mov (ecx, ptr[rbx+r15*4+0]); dump();
-mov (ecx, ptr[rbx+r15*4+1]); dump();
-mov (ecx, ptr[rbx+r15*4+1000]); dump();
-mov (ecx, ptr[rbx+r15*4-1]); dump();
-mov (ecx, ptr[rbx+r15*4-1000]); dump();
-mov (ecx, ptr[rbx+r15*8+0]); dump();
-mov (ecx, ptr[rbx+r15*8+1]); dump();
-mov (ecx, ptr[rbx+r15*8+1000]); dump();
-mov (ecx, ptr[rbx+r15*8-1]); dump();
-mov (ecx, ptr[rbx+r15*8-1000]); dump();
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-}
-    void gen15(){
-mov (ecx, ptr[rsp+rax+0]); dump();
-mov (ecx, ptr[rsp+rax+1]); dump();
-mov (ecx, ptr[rsp+rax+1000]); dump();
-mov (ecx, ptr[rsp+rax-1]); dump();
-mov (ecx, ptr[rsp+rax-1000]); dump();
-mov (ecx, ptr[rsp+rax*1+0]); dump();
-mov (ecx, ptr[rsp+rax*1+1]); dump();
-mov (ecx, ptr[rsp+rax*1+1000]); dump();
-mov (ecx, ptr[rsp+rax*1-1]); dump();
-mov (ecx, ptr[rsp+rax*1-1000]); dump();
-mov (ecx, ptr[rsp+rax*2+0]); dump();
-mov (ecx, ptr[rsp+rax*2+1]); dump();
-mov (ecx, ptr[rsp+rax*2+1000]); dump();
-mov (ecx, ptr[rsp+rax*2-1]); dump();
-mov (ecx, ptr[rsp+rax*2-1000]); dump();
-mov (ecx, ptr[rsp+rax*4+0]); dump();
-mov (ecx, ptr[rsp+rax*4+1]); dump();
-mov (ecx, ptr[rsp+rax*4+1000]); dump();
-mov (ecx, ptr[rsp+rax*4-1]); dump();
-mov (ecx, ptr[rsp+rax*4-1000]); dump();
-mov (ecx, ptr[rsp+rax*8+0]); dump();
-mov (ecx, ptr[rsp+rax*8+1]); dump();
-mov (ecx, ptr[rsp+rax*8+1000]); dump();
-mov (ecx, ptr[rsp+rax*8-1]); dump();
-mov (ecx, ptr[rsp+rax*8-1000]); dump();
-mov (ecx, ptr[rsp+rcx+0]); dump();
-mov (ecx, ptr[rsp+rcx+1]); dump();
-mov (ecx, ptr[rsp+rcx+1000]); dump();
-mov (ecx, ptr[rsp+rcx-1]); dump();
-mov (ecx, ptr[rsp+rcx-1000]); dump();
-mov (ecx, ptr[rsp+rcx*1+0]); dump();
-mov (ecx, ptr[rsp+rcx*1+1]); dump();
-mov (ecx, ptr[rsp+rcx*1+1000]); dump();
-mov (ecx, ptr[rsp+rcx*1-1]); dump();
-mov (ecx, ptr[rsp+rcx*1-1000]); dump();
-mov (ecx, ptr[rsp+rcx*2+0]); dump();
-mov (ecx, ptr[rsp+rcx*2+1]); dump();
-mov (ecx, ptr[rsp+rcx*2+1000]); dump();
-mov (ecx, ptr[rsp+rcx*2-1]); dump();
-mov (ecx, ptr[rsp+rcx*2-1000]); dump();
-mov (ecx, ptr[rsp+rcx*4+0]); dump();
-mov (ecx, ptr[rsp+rcx*4+1]); dump();
-mov (ecx, ptr[rsp+rcx*4+1000]); dump();
-mov (ecx, ptr[rsp+rcx*4-1]); dump();
-mov (ecx, ptr[rsp+rcx*4-1000]); dump();
-mov (ecx, ptr[rsp+rcx*8+0]); dump();
-mov (ecx, ptr[rsp+rcx*8+1]); dump();
-mov (ecx, ptr[rsp+rcx*8+1000]); dump();
-mov (ecx, ptr[rsp+rcx*8-1]); dump();
-mov (ecx, ptr[rsp+rcx*8-1000]); dump();
-mov (ecx, ptr[rsp+rdx+0]); dump();
-mov (ecx, ptr[rsp+rdx+1]); dump();
-mov (ecx, ptr[rsp+rdx+1000]); dump();
-mov (ecx, ptr[rsp+rdx-1]); dump();
-mov (ecx, ptr[rsp+rdx-1000]); dump();
-mov (ecx, ptr[rsp+rdx*1+0]); dump();
-mov (ecx, ptr[rsp+rdx*1+1]); dump();
-mov (ecx, ptr[rsp+rdx*1+1000]); dump();
-mov (ecx, ptr[rsp+rdx*1-1]); dump();
-mov (ecx, ptr[rsp+rdx*1-1000]); dump();
-mov (ecx, ptr[rsp+rdx*2+0]); dump();
-mov (ecx, ptr[rsp+rdx*2+1]); dump();
-mov (ecx, ptr[rsp+rdx*2+1000]); dump();
-mov (ecx, ptr[rsp+rdx*2-1]); dump();
-mov (ecx, ptr[rsp+rdx*2-1000]); dump();
-mov (ecx, ptr[rsp+rdx*4+0]); dump();
-mov (ecx, ptr[rsp+rdx*4+1]); dump();
-mov (ecx, ptr[rsp+rdx*4+1000]); dump();
-mov (ecx, ptr[rsp+rdx*4-1]); dump();
-mov (ecx, ptr[rsp+rdx*4-1000]); dump();
-mov (ecx, ptr[rsp+rdx*8+0]); dump();
-mov (ecx, ptr[rsp+rdx*8+1]); dump();
-mov (ecx, ptr[rsp+rdx*8+1000]); dump();
-mov (ecx, ptr[rsp+rdx*8-1]); dump();
-mov (ecx, ptr[rsp+rdx*8-1000]); dump();
-mov (ecx, ptr[rsp+rbx+0]); dump();
-mov (ecx, ptr[rsp+rbx+1]); dump();
-mov (ecx, ptr[rsp+rbx+1000]); dump();
-mov (ecx, ptr[rsp+rbx-1]); dump();
-mov (ecx, ptr[rsp+rbx-1000]); dump();
-mov (ecx, ptr[rsp+rbx*1+0]); dump();
-mov (ecx, ptr[rsp+rbx*1+1]); dump();
-mov (ecx, ptr[rsp+rbx*1+1000]); dump();
-mov (ecx, ptr[rsp+rbx*1-1]); dump();
-mov (ecx, ptr[rsp+rbx*1-1000]); dump();
-mov (ecx, ptr[rsp+rbx*2+0]); dump();
-mov (ecx, ptr[rsp+rbx*2+1]); dump();
-mov (ecx, ptr[rsp+rbx*2+1000]); dump();
-mov (ecx, ptr[rsp+rbx*2-1]); dump();
-mov (ecx, ptr[rsp+rbx*2-1000]); dump();
-mov (ecx, ptr[rsp+rbx*4+0]); dump();
-mov (ecx, ptr[rsp+rbx*4+1]); dump();
-mov (ecx, ptr[rsp+rbx*4+1000]); dump();
-mov (ecx, ptr[rsp+rbx*4-1]); dump();
-mov (ecx, ptr[rsp+rbx*4-1000]); dump();
-mov (ecx, ptr[rsp+rbx*8+0]); dump();
-mov (ecx, ptr[rsp+rbx*8+1]); dump();
-mov (ecx, ptr[rsp+rbx*8+1000]); dump();
-mov (ecx, ptr[rsp+rbx*8-1]); dump();
-mov (ecx, ptr[rsp+rbx*8-1000]); dump();
-}
-    void gen16(){
-mov (ecx, ptr[rsp+rbp+0]); dump();
-mov (ecx, ptr[rsp+rbp+1]); dump();
-mov (ecx, ptr[rsp+rbp+1000]); dump();
-mov (ecx, ptr[rsp+rbp-1]); dump();
-mov (ecx, ptr[rsp+rbp-1000]); dump();
-mov (ecx, ptr[rsp+rbp*1+0]); dump();
-mov (ecx, ptr[rsp+rbp*1+1]); dump();
-mov (ecx, ptr[rsp+rbp*1+1000]); dump();
-mov (ecx, ptr[rsp+rbp*1-1]); dump();
-mov (ecx, ptr[rsp+rbp*1-1000]); dump();
-mov (ecx, ptr[rsp+rbp*2+0]); dump();
-mov (ecx, ptr[rsp+rbp*2+1]); dump();
-mov (ecx, ptr[rsp+rbp*2+1000]); dump();
-mov (ecx, ptr[rsp+rbp*2-1]); dump();
-mov (ecx, ptr[rsp+rbp*2-1000]); dump();
-mov (ecx, ptr[rsp+rbp*4+0]); dump();
-mov (ecx, ptr[rsp+rbp*4+1]); dump();
-mov (ecx, ptr[rsp+rbp*4+1000]); dump();
-mov (ecx, ptr[rsp+rbp*4-1]); dump();
-mov (ecx, ptr[rsp+rbp*4-1000]); dump();
-mov (ecx, ptr[rsp+rbp*8+0]); dump();
-mov (ecx, ptr[rsp+rbp*8+1]); dump();
-mov (ecx, ptr[rsp+rbp*8+1000]); dump();
-mov (ecx, ptr[rsp+rbp*8-1]); dump();
-mov (ecx, ptr[rsp+rbp*8-1000]); dump();
-mov (ecx, ptr[rsp+rsi+0]); dump();
-mov (ecx, ptr[rsp+rsi+1]); dump();
-mov (ecx, ptr[rsp+rsi+1000]); dump();
-mov (ecx, ptr[rsp+rsi-1]); dump();
-mov (ecx, ptr[rsp+rsi-1000]); dump();
-mov (ecx, ptr[rsp+rsi*1+0]); dump();
-mov (ecx, ptr[rsp+rsi*1+1]); dump();
-mov (ecx, ptr[rsp+rsi*1+1000]); dump();
-mov (ecx, ptr[rsp+rsi*1-1]); dump();
-mov (ecx, ptr[rsp+rsi*1-1000]); dump();
-mov (ecx, ptr[rsp+rsi*2+0]); dump();
-mov (ecx, ptr[rsp+rsi*2+1]); dump();
-mov (ecx, ptr[rsp+rsi*2+1000]); dump();
-mov (ecx, ptr[rsp+rsi*2-1]); dump();
-mov (ecx, ptr[rsp+rsi*2-1000]); dump();
-mov (ecx, ptr[rsp+rsi*4+0]); dump();
-mov (ecx, ptr[rsp+rsi*4+1]); dump();
-mov (ecx, ptr[rsp+rsi*4+1000]); dump();
-mov (ecx, ptr[rsp+rsi*4-1]); dump();
-mov (ecx, ptr[rsp+rsi*4-1000]); dump();
-mov (ecx, ptr[rsp+rsi*8+0]); dump();
-mov (ecx, ptr[rsp+rsi*8+1]); dump();
-mov (ecx, ptr[rsp+rsi*8+1000]); dump();
-mov (ecx, ptr[rsp+rsi*8-1]); dump();
-mov (ecx, ptr[rsp+rsi*8-1000]); dump();
-mov (ecx, ptr[rsp+rdi+0]); dump();
-mov (ecx, ptr[rsp+rdi+1]); dump();
-mov (ecx, ptr[rsp+rdi+1000]); dump();
-mov (ecx, ptr[rsp+rdi-1]); dump();
-mov (ecx, ptr[rsp+rdi-1000]); dump();
-mov (ecx, ptr[rsp+rdi*1+0]); dump();
-mov (ecx, ptr[rsp+rdi*1+1]); dump();
-mov (ecx, ptr[rsp+rdi*1+1000]); dump();
-mov (ecx, ptr[rsp+rdi*1-1]); dump();
-mov (ecx, ptr[rsp+rdi*1-1000]); dump();
-mov (ecx, ptr[rsp+rdi*2+0]); dump();
-mov (ecx, ptr[rsp+rdi*2+1]); dump();
-mov (ecx, ptr[rsp+rdi*2+1000]); dump();
-mov (ecx, ptr[rsp+rdi*2-1]); dump();
-mov (ecx, ptr[rsp+rdi*2-1000]); dump();
-mov (ecx, ptr[rsp+rdi*4+0]); dump();
-mov (ecx, ptr[rsp+rdi*4+1]); dump();
-mov (ecx, ptr[rsp+rdi*4+1000]); dump();
-mov (ecx, ptr[rsp+rdi*4-1]); dump();
-mov (ecx, ptr[rsp+rdi*4-1000]); dump();
-mov (ecx, ptr[rsp+rdi*8+0]); dump();
-mov (ecx, ptr[rsp+rdi*8+1]); dump();
-mov (ecx, ptr[rsp+rdi*8+1000]); dump();
-mov (ecx, ptr[rsp+rdi*8-1]); dump();
-mov (ecx, ptr[rsp+rdi*8-1000]); dump();
-mov (ecx, ptr[rsp+r9+0]); dump();
-mov (ecx, ptr[rsp+r9+1]); dump();
-mov (ecx, ptr[rsp+r9+1000]); dump();
-mov (ecx, ptr[rsp+r9-1]); dump();
-mov (ecx, ptr[rsp+r9-1000]); dump();
-mov (ecx, ptr[rsp+r9*1+0]); dump();
-mov (ecx, ptr[rsp+r9*1+1]); dump();
-mov (ecx, ptr[rsp+r9*1+1000]); dump();
-mov (ecx, ptr[rsp+r9*1-1]); dump();
-mov (ecx, ptr[rsp+r9*1-1000]); dump();
-mov (ecx, ptr[rsp+r9*2+0]); dump();
-mov (ecx, ptr[rsp+r9*2+1]); dump();
-mov (ecx, ptr[rsp+r9*2+1000]); dump();
-mov (ecx, ptr[rsp+r9*2-1]); dump();
-mov (ecx, ptr[rsp+r9*2-1000]); dump();
-mov (ecx, ptr[rsp+r9*4+0]); dump();
-mov (ecx, ptr[rsp+r9*4+1]); dump();
-mov (ecx, ptr[rsp+r9*4+1000]); dump();
-mov (ecx, ptr[rsp+r9*4-1]); dump();
-mov (ecx, ptr[rsp+r9*4-1000]); dump();
-mov (ecx, ptr[rsp+r9*8+0]); dump();
-mov (ecx, ptr[rsp+r9*8+1]); dump();
-mov (ecx, ptr[rsp+r9*8+1000]); dump();
-mov (ecx, ptr[rsp+r9*8-1]); dump();
-mov (ecx, ptr[rsp+r9*8-1000]); dump();
-}
-    void gen17(){
-mov (ecx, ptr[rsp+r10+0]); dump();
-mov (ecx, ptr[rsp+r10+1]); dump();
-mov (ecx, ptr[rsp+r10+1000]); dump();
-mov (ecx, ptr[rsp+r10-1]); dump();
-mov (ecx, ptr[rsp+r10-1000]); dump();
-mov (ecx, ptr[rsp+r10*1+0]); dump();
-mov (ecx, ptr[rsp+r10*1+1]); dump();
-mov (ecx, ptr[rsp+r10*1+1000]); dump();
-mov (ecx, ptr[rsp+r10*1-1]); dump();
-mov (ecx, ptr[rsp+r10*1-1000]); dump();
-mov (ecx, ptr[rsp+r10*2+0]); dump();
-mov (ecx, ptr[rsp+r10*2+1]); dump();
-mov (ecx, ptr[rsp+r10*2+1000]); dump();
-mov (ecx, ptr[rsp+r10*2-1]); dump();
-mov (ecx, ptr[rsp+r10*2-1000]); dump();
-mov (ecx, ptr[rsp+r10*4+0]); dump();
-mov (ecx, ptr[rsp+r10*4+1]); dump();
-mov (ecx, ptr[rsp+r10*4+1000]); dump();
-mov (ecx, ptr[rsp+r10*4-1]); dump();
-mov (ecx, ptr[rsp+r10*4-1000]); dump();
-mov (ecx, ptr[rsp+r10*8+0]); dump();
-mov (ecx, ptr[rsp+r10*8+1]); dump();
-mov (ecx, ptr[rsp+r10*8+1000]); dump();
-mov (ecx, ptr[rsp+r10*8-1]); dump();
-mov (ecx, ptr[rsp+r10*8-1000]); dump();
-mov (ecx, ptr[rsp+r11+0]); dump();
-mov (ecx, ptr[rsp+r11+1]); dump();
-mov (ecx, ptr[rsp+r11+1000]); dump();
-mov (ecx, ptr[rsp+r11-1]); dump();
-mov (ecx, ptr[rsp+r11-1000]); dump();
-mov (ecx, ptr[rsp+r11*1+0]); dump();
-mov (ecx, ptr[rsp+r11*1+1]); dump();
-mov (ecx, ptr[rsp+r11*1+1000]); dump();
-mov (ecx, ptr[rsp+r11*1-1]); dump();
-mov (ecx, ptr[rsp+r11*1-1000]); dump();
-mov (ecx, ptr[rsp+r11*2+0]); dump();
-mov (ecx, ptr[rsp+r11*2+1]); dump();
-mov (ecx, ptr[rsp+r11*2+1000]); dump();
-mov (ecx, ptr[rsp+r11*2-1]); dump();
-mov (ecx, ptr[rsp+r11*2-1000]); dump();
-mov (ecx, ptr[rsp+r11*4+0]); dump();
-mov (ecx, ptr[rsp+r11*4+1]); dump();
-mov (ecx, ptr[rsp+r11*4+1000]); dump();
-mov (ecx, ptr[rsp+r11*4-1]); dump();
-mov (ecx, ptr[rsp+r11*4-1000]); dump();
-mov (ecx, ptr[rsp+r11*8+0]); dump();
-mov (ecx, ptr[rsp+r11*8+1]); dump();
-mov (ecx, ptr[rsp+r11*8+1000]); dump();
-mov (ecx, ptr[rsp+r11*8-1]); dump();
-mov (ecx, ptr[rsp+r11*8-1000]); dump();
-mov (ecx, ptr[rsp+r12+0]); dump();
-mov (ecx, ptr[rsp+r12+1]); dump();
-mov (ecx, ptr[rsp+r12+1000]); dump();
-mov (ecx, ptr[rsp+r12-1]); dump();
-mov (ecx, ptr[rsp+r12-1000]); dump();
-mov (ecx, ptr[rsp+r12*1+0]); dump();
-mov (ecx, ptr[rsp+r12*1+1]); dump();
-mov (ecx, ptr[rsp+r12*1+1000]); dump();
-mov (ecx, ptr[rsp+r12*1-1]); dump();
-mov (ecx, ptr[rsp+r12*1-1000]); dump();
-mov (ecx, ptr[rsp+r12*2+0]); dump();
-mov (ecx, ptr[rsp+r12*2+1]); dump();
-mov (ecx, ptr[rsp+r12*2+1000]); dump();
-mov (ecx, ptr[rsp+r12*2-1]); dump();
-mov (ecx, ptr[rsp+r12*2-1000]); dump();
-mov (ecx, ptr[rsp+r12*4+0]); dump();
-mov (ecx, ptr[rsp+r12*4+1]); dump();
-mov (ecx, ptr[rsp+r12*4+1000]); dump();
-mov (ecx, ptr[rsp+r12*4-1]); dump();
-mov (ecx, ptr[rsp+r12*4-1000]); dump();
-mov (ecx, ptr[rsp+r12*8+0]); dump();
-mov (ecx, ptr[rsp+r12*8+1]); dump();
-mov (ecx, ptr[rsp+r12*8+1000]); dump();
-mov (ecx, ptr[rsp+r12*8-1]); dump();
-mov (ecx, ptr[rsp+r12*8-1000]); dump();
-mov (ecx, ptr[rsp+r13+0]); dump();
-mov (ecx, ptr[rsp+r13+1]); dump();
-mov (ecx, ptr[rsp+r13+1000]); dump();
-mov (ecx, ptr[rsp+r13-1]); dump();
-mov (ecx, ptr[rsp+r13-1000]); dump();
-mov (ecx, ptr[rsp+r13*1+0]); dump();
-mov (ecx, ptr[rsp+r13*1+1]); dump();
-mov (ecx, ptr[rsp+r13*1+1000]); dump();
-mov (ecx, ptr[rsp+r13*1-1]); dump();
-mov (ecx, ptr[rsp+r13*1-1000]); dump();
-mov (ecx, ptr[rsp+r13*2+0]); dump();
-mov (ecx, ptr[rsp+r13*2+1]); dump();
-mov (ecx, ptr[rsp+r13*2+1000]); dump();
-mov (ecx, ptr[rsp+r13*2-1]); dump();
-mov (ecx, ptr[rsp+r13*2-1000]); dump();
-mov (ecx, ptr[rsp+r13*4+0]); dump();
-mov (ecx, ptr[rsp+r13*4+1]); dump();
-mov (ecx, ptr[rsp+r13*4+1000]); dump();
-mov (ecx, ptr[rsp+r13*4-1]); dump();
-mov (ecx, ptr[rsp+r13*4-1000]); dump();
-mov (ecx, ptr[rsp+r13*8+0]); dump();
-mov (ecx, ptr[rsp+r13*8+1]); dump();
-mov (ecx, ptr[rsp+r13*8+1000]); dump();
-mov (ecx, ptr[rsp+r13*8-1]); dump();
-mov (ecx, ptr[rsp+r13*8-1000]); dump();
-}
-    void gen18(){
-mov (ecx, ptr[rsp+r14+0]); dump();
-mov (ecx, ptr[rsp+r14+1]); dump();
-mov (ecx, ptr[rsp+r14+1000]); dump();
-mov (ecx, ptr[rsp+r14-1]); dump();
-mov (ecx, ptr[rsp+r14-1000]); dump();
-mov (ecx, ptr[rsp+r14*1+0]); dump();
-mov (ecx, ptr[rsp+r14*1+1]); dump();
-mov (ecx, ptr[rsp+r14*1+1000]); dump();
-mov (ecx, ptr[rsp+r14*1-1]); dump();
-mov (ecx, ptr[rsp+r14*1-1000]); dump();
-mov (ecx, ptr[rsp+r14*2+0]); dump();
-mov (ecx, ptr[rsp+r14*2+1]); dump();
-mov (ecx, ptr[rsp+r14*2+1000]); dump();
-mov (ecx, ptr[rsp+r14*2-1]); dump();
-mov (ecx, ptr[rsp+r14*2-1000]); dump();
-mov (ecx, ptr[rsp+r14*4+0]); dump();
-mov (ecx, ptr[rsp+r14*4+1]); dump();
-mov (ecx, ptr[rsp+r14*4+1000]); dump();
-mov (ecx, ptr[rsp+r14*4-1]); dump();
-mov (ecx, ptr[rsp+r14*4-1000]); dump();
-mov (ecx, ptr[rsp+r14*8+0]); dump();
-mov (ecx, ptr[rsp+r14*8+1]); dump();
-mov (ecx, ptr[rsp+r14*8+1000]); dump();
-mov (ecx, ptr[rsp+r14*8-1]); dump();
-mov (ecx, ptr[rsp+r14*8-1000]); dump();
-mov (ecx, ptr[rsp+r15+0]); dump();
-mov (ecx, ptr[rsp+r15+1]); dump();
-mov (ecx, ptr[rsp+r15+1000]); dump();
-mov (ecx, ptr[rsp+r15-1]); dump();
-mov (ecx, ptr[rsp+r15-1000]); dump();
-mov (ecx, ptr[rsp+r15*1+0]); dump();
-mov (ecx, ptr[rsp+r15*1+1]); dump();
-mov (ecx, ptr[rsp+r15*1+1000]); dump();
-mov (ecx, ptr[rsp+r15*1-1]); dump();
-mov (ecx, ptr[rsp+r15*1-1000]); dump();
-mov (ecx, ptr[rsp+r15*2+0]); dump();
-mov (ecx, ptr[rsp+r15*2+1]); dump();
-mov (ecx, ptr[rsp+r15*2+1000]); dump();
-mov (ecx, ptr[rsp+r15*2-1]); dump();
-mov (ecx, ptr[rsp+r15*2-1000]); dump();
-mov (ecx, ptr[rsp+r15*4+0]); dump();
-mov (ecx, ptr[rsp+r15*4+1]); dump();
-mov (ecx, ptr[rsp+r15*4+1000]); dump();
-mov (ecx, ptr[rsp+r15*4-1]); dump();
-mov (ecx, ptr[rsp+r15*4-1000]); dump();
-mov (ecx, ptr[rsp+r15*8+0]); dump();
-mov (ecx, ptr[rsp+r15*8+1]); dump();
-mov (ecx, ptr[rsp+r15*8+1000]); dump();
-mov (ecx, ptr[rsp+r15*8-1]); dump();
-mov (ecx, ptr[rsp+r15*8-1000]); dump();
-mov (ecx, ptr[rsp+0]); dump();
-mov (ecx, ptr[rsp+1]); dump();
-mov (ecx, ptr[rsp+1000]); dump();
-mov (ecx, ptr[rsp-1]); dump();
-mov (ecx, ptr[rsp-1000]); dump();
-mov (ecx, ptr[rsp+0]); dump();
-mov (ecx, ptr[rsp+1]); dump();
-mov (ecx, ptr[rsp+1000]); dump();
-mov (ecx, ptr[rsp-1]); dump();
-mov (ecx, ptr[rsp-1000]); dump();
-mov (ecx, ptr[rsp+0]); dump();
-mov (ecx, ptr[rsp+1]); dump();
-mov (ecx, ptr[rsp+1000]); dump();
-mov (ecx, ptr[rsp-1]); dump();
-mov (ecx, ptr[rsp-1000]); dump();
-mov (ecx, ptr[rsp+0]); dump();
-mov (ecx, ptr[rsp+1]); dump();
-mov (ecx, ptr[rsp+1000]); dump();
-mov (ecx, ptr[rsp-1]); dump();
-mov (ecx, ptr[rsp-1000]); dump();
-mov (ecx, ptr[rsp+0]); dump();
-mov (ecx, ptr[rsp+1]); dump();
-mov (ecx, ptr[rsp+1000]); dump();
-mov (ecx, ptr[rsp-1]); dump();
-mov (ecx, ptr[rsp-1000]); dump();
-mov (ecx, ptr[rbp+rax+0]); dump();
-mov (ecx, ptr[rbp+rax+1]); dump();
-mov (ecx, ptr[rbp+rax+1000]); dump();
-mov (ecx, ptr[rbp+rax-1]); dump();
-mov (ecx, ptr[rbp+rax-1000]); dump();
-mov (ecx, ptr[rbp+rax*1+0]); dump();
-mov (ecx, ptr[rbp+rax*1+1]); dump();
-mov (ecx, ptr[rbp+rax*1+1000]); dump();
-mov (ecx, ptr[rbp+rax*1-1]); dump();
-mov (ecx, ptr[rbp+rax*1-1000]); dump();
-mov (ecx, ptr[rbp+rax*2+0]); dump();
-mov (ecx, ptr[rbp+rax*2+1]); dump();
-mov (ecx, ptr[rbp+rax*2+1000]); dump();
-mov (ecx, ptr[rbp+rax*2-1]); dump();
-mov (ecx, ptr[rbp+rax*2-1000]); dump();
-mov (ecx, ptr[rbp+rax*4+0]); dump();
-mov (ecx, ptr[rbp+rax*4+1]); dump();
-mov (ecx, ptr[rbp+rax*4+1000]); dump();
-mov (ecx, ptr[rbp+rax*4-1]); dump();
-mov (ecx, ptr[rbp+rax*4-1000]); dump();
-mov (ecx, ptr[rbp+rax*8+0]); dump();
-mov (ecx, ptr[rbp+rax*8+1]); dump();
-mov (ecx, ptr[rbp+rax*8+1000]); dump();
-mov (ecx, ptr[rbp+rax*8-1]); dump();
-mov (ecx, ptr[rbp+rax*8-1000]); dump();
-}
-    void gen19(){
-mov (ecx, ptr[rbp+rcx+0]); dump();
-mov (ecx, ptr[rbp+rcx+1]); dump();
-mov (ecx, ptr[rbp+rcx+1000]); dump();
-mov (ecx, ptr[rbp+rcx-1]); dump();
-mov (ecx, ptr[rbp+rcx-1000]); dump();
-mov (ecx, ptr[rbp+rcx*1+0]); dump();
-mov (ecx, ptr[rbp+rcx*1+1]); dump();
-mov (ecx, ptr[rbp+rcx*1+1000]); dump();
-mov (ecx, ptr[rbp+rcx*1-1]); dump();
-mov (ecx, ptr[rbp+rcx*1-1000]); dump();
-mov (ecx, ptr[rbp+rcx*2+0]); dump();
-mov (ecx, ptr[rbp+rcx*2+1]); dump();
-mov (ecx, ptr[rbp+rcx*2+1000]); dump();
-mov (ecx, ptr[rbp+rcx*2-1]); dump();
-mov (ecx, ptr[rbp+rcx*2-1000]); dump();
-mov (ecx, ptr[rbp+rcx*4+0]); dump();
-mov (ecx, ptr[rbp+rcx*4+1]); dump();
-mov (ecx, ptr[rbp+rcx*4+1000]); dump();
-mov (ecx, ptr[rbp+rcx*4-1]); dump();
-mov (ecx, ptr[rbp+rcx*4-1000]); dump();
-mov (ecx, ptr[rbp+rcx*8+0]); dump();
-mov (ecx, ptr[rbp+rcx*8+1]); dump();
-mov (ecx, ptr[rbp+rcx*8+1000]); dump();
-mov (ecx, ptr[rbp+rcx*8-1]); dump();
-mov (ecx, ptr[rbp+rcx*8-1000]); dump();
-mov (ecx, ptr[rbp+rdx+0]); dump();
-mov (ecx, ptr[rbp+rdx+1]); dump();
-mov (ecx, ptr[rbp+rdx+1000]); dump();
-mov (ecx, ptr[rbp+rdx-1]); dump();
-mov (ecx, ptr[rbp+rdx-1000]); dump();
-mov (ecx, ptr[rbp+rdx*1+0]); dump();
-mov (ecx, ptr[rbp+rdx*1+1]); dump();
-mov (ecx, ptr[rbp+rdx*1+1000]); dump();
-mov (ecx, ptr[rbp+rdx*1-1]); dump();
-mov (ecx, ptr[rbp+rdx*1-1000]); dump();
-mov (ecx, ptr[rbp+rdx*2+0]); dump();
-mov (ecx, ptr[rbp+rdx*2+1]); dump();
-mov (ecx, ptr[rbp+rdx*2+1000]); dump();
-mov (ecx, ptr[rbp+rdx*2-1]); dump();
-mov (ecx, ptr[rbp+rdx*2-1000]); dump();
-mov (ecx, ptr[rbp+rdx*4+0]); dump();
-mov (ecx, ptr[rbp+rdx*4+1]); dump();
-mov (ecx, ptr[rbp+rdx*4+1000]); dump();
-mov (ecx, ptr[rbp+rdx*4-1]); dump();
-mov (ecx, ptr[rbp+rdx*4-1000]); dump();
-mov (ecx, ptr[rbp+rdx*8+0]); dump();
-mov (ecx, ptr[rbp+rdx*8+1]); dump();
-mov (ecx, ptr[rbp+rdx*8+1000]); dump();
-mov (ecx, ptr[rbp+rdx*8-1]); dump();
-mov (ecx, ptr[rbp+rdx*8-1000]); dump();
-mov (ecx, ptr[rbp+rbx+0]); dump();
-mov (ecx, ptr[rbp+rbx+1]); dump();
-mov (ecx, ptr[rbp+rbx+1000]); dump();
-mov (ecx, ptr[rbp+rbx-1]); dump();
-mov (ecx, ptr[rbp+rbx-1000]); dump();
-mov (ecx, ptr[rbp+rbx*1+0]); dump();
-mov (ecx, ptr[rbp+rbx*1+1]); dump();
-mov (ecx, ptr[rbp+rbx*1+1000]); dump();
-mov (ecx, ptr[rbp+rbx*1-1]); dump();
-mov (ecx, ptr[rbp+rbx*1-1000]); dump();
-mov (ecx, ptr[rbp+rbx*2+0]); dump();
-mov (ecx, ptr[rbp+rbx*2+1]); dump();
-mov (ecx, ptr[rbp+rbx*2+1000]); dump();
-mov (ecx, ptr[rbp+rbx*2-1]); dump();
-mov (ecx, ptr[rbp+rbx*2-1000]); dump();
-mov (ecx, ptr[rbp+rbx*4+0]); dump();
-mov (ecx, ptr[rbp+rbx*4+1]); dump();
-mov (ecx, ptr[rbp+rbx*4+1000]); dump();
-mov (ecx, ptr[rbp+rbx*4-1]); dump();
-mov (ecx, ptr[rbp+rbx*4-1000]); dump();
-mov (ecx, ptr[rbp+rbx*8+0]); dump();
-mov (ecx, ptr[rbp+rbx*8+1]); dump();
-mov (ecx, ptr[rbp+rbx*8+1000]); dump();
-mov (ecx, ptr[rbp+rbx*8-1]); dump();
-mov (ecx, ptr[rbp+rbx*8-1000]); dump();
-mov (ecx, ptr[rbp+rbp+0]); dump();
-mov (ecx, ptr[rbp+rbp+1]); dump();
-mov (ecx, ptr[rbp+rbp+1000]); dump();
-mov (ecx, ptr[rbp+rbp-1]); dump();
-mov (ecx, ptr[rbp+rbp-1000]); dump();
-mov (ecx, ptr[rbp+rbp*1+0]); dump();
-mov (ecx, ptr[rbp+rbp*1+1]); dump();
-mov (ecx, ptr[rbp+rbp*1+1000]); dump();
-mov (ecx, ptr[rbp+rbp*1-1]); dump();
-mov (ecx, ptr[rbp+rbp*1-1000]); dump();
-mov (ecx, ptr[rbp+rbp*2+0]); dump();
-mov (ecx, ptr[rbp+rbp*2+1]); dump();
-mov (ecx, ptr[rbp+rbp*2+1000]); dump();
-mov (ecx, ptr[rbp+rbp*2-1]); dump();
-mov (ecx, ptr[rbp+rbp*2-1000]); dump();
-mov (ecx, ptr[rbp+rbp*4+0]); dump();
-mov (ecx, ptr[rbp+rbp*4+1]); dump();
-mov (ecx, ptr[rbp+rbp*4+1000]); dump();
-mov (ecx, ptr[rbp+rbp*4-1]); dump();
-mov (ecx, ptr[rbp+rbp*4-1000]); dump();
-mov (ecx, ptr[rbp+rbp*8+0]); dump();
-mov (ecx, ptr[rbp+rbp*8+1]); dump();
-mov (ecx, ptr[rbp+rbp*8+1000]); dump();
-mov (ecx, ptr[rbp+rbp*8-1]); dump();
-mov (ecx, ptr[rbp+rbp*8-1000]); dump();
-}
-    void gen20(){
-mov (ecx, ptr[rbp+rsi+0]); dump();
-mov (ecx, ptr[rbp+rsi+1]); dump();
-mov (ecx, ptr[rbp+rsi+1000]); dump();
-mov (ecx, ptr[rbp+rsi-1]); dump();
-mov (ecx, ptr[rbp+rsi-1000]); dump();
-mov (ecx, ptr[rbp+rsi*1+0]); dump();
-mov (ecx, ptr[rbp+rsi*1+1]); dump();
-mov (ecx, ptr[rbp+rsi*1+1000]); dump();
-mov (ecx, ptr[rbp+rsi*1-1]); dump();
-mov (ecx, ptr[rbp+rsi*1-1000]); dump();
-mov (ecx, ptr[rbp+rsi*2+0]); dump();
-mov (ecx, ptr[rbp+rsi*2+1]); dump();
-mov (ecx, ptr[rbp+rsi*2+1000]); dump();
-mov (ecx, ptr[rbp+rsi*2-1]); dump();
-mov (ecx, ptr[rbp+rsi*2-1000]); dump();
-mov (ecx, ptr[rbp+rsi*4+0]); dump();
-mov (ecx, ptr[rbp+rsi*4+1]); dump();
-mov (ecx, ptr[rbp+rsi*4+1000]); dump();
-mov (ecx, ptr[rbp+rsi*4-1]); dump();
-mov (ecx, ptr[rbp+rsi*4-1000]); dump();
-mov (ecx, ptr[rbp+rsi*8+0]); dump();
-mov (ecx, ptr[rbp+rsi*8+1]); dump();
-mov (ecx, ptr[rbp+rsi*8+1000]); dump();
-mov (ecx, ptr[rbp+rsi*8-1]); dump();
-mov (ecx, ptr[rbp+rsi*8-1000]); dump();
-mov (ecx, ptr[rbp+rdi+0]); dump();
-mov (ecx, ptr[rbp+rdi+1]); dump();
-mov (ecx, ptr[rbp+rdi+1000]); dump();
-mov (ecx, ptr[rbp+rdi-1]); dump();
-mov (ecx, ptr[rbp+rdi-1000]); dump();
-mov (ecx, ptr[rbp+rdi*1+0]); dump();
-mov (ecx, ptr[rbp+rdi*1+1]); dump();
-mov (ecx, ptr[rbp+rdi*1+1000]); dump();
-mov (ecx, ptr[rbp+rdi*1-1]); dump();
-mov (ecx, ptr[rbp+rdi*1-1000]); dump();
-mov (ecx, ptr[rbp+rdi*2+0]); dump();
-mov (ecx, ptr[rbp+rdi*2+1]); dump();
-mov (ecx, ptr[rbp+rdi*2+1000]); dump();
-mov (ecx, ptr[rbp+rdi*2-1]); dump();
-mov (ecx, ptr[rbp+rdi*2-1000]); dump();
-mov (ecx, ptr[rbp+rdi*4+0]); dump();
-mov (ecx, ptr[rbp+rdi*4+1]); dump();
-mov (ecx, ptr[rbp+rdi*4+1000]); dump();
-mov (ecx, ptr[rbp+rdi*4-1]); dump();
-mov (ecx, ptr[rbp+rdi*4-1000]); dump();
-mov (ecx, ptr[rbp+rdi*8+0]); dump();
-mov (ecx, ptr[rbp+rdi*8+1]); dump();
-mov (ecx, ptr[rbp+rdi*8+1000]); dump();
-mov (ecx, ptr[rbp+rdi*8-1]); dump();
-mov (ecx, ptr[rbp+rdi*8-1000]); dump();
-mov (ecx, ptr[rbp+r9+0]); dump();
-mov (ecx, ptr[rbp+r9+1]); dump();
-mov (ecx, ptr[rbp+r9+1000]); dump();
-mov (ecx, ptr[rbp+r9-1]); dump();
-mov (ecx, ptr[rbp+r9-1000]); dump();
-mov (ecx, ptr[rbp+r9*1+0]); dump();
-mov (ecx, ptr[rbp+r9*1+1]); dump();
-mov (ecx, ptr[rbp+r9*1+1000]); dump();
-mov (ecx, ptr[rbp+r9*1-1]); dump();
-mov (ecx, ptr[rbp+r9*1-1000]); dump();
-mov (ecx, ptr[rbp+r9*2+0]); dump();
-mov (ecx, ptr[rbp+r9*2+1]); dump();
-mov (ecx, ptr[rbp+r9*2+1000]); dump();
-mov (ecx, ptr[rbp+r9*2-1]); dump();
-mov (ecx, ptr[rbp+r9*2-1000]); dump();
-mov (ecx, ptr[rbp+r9*4+0]); dump();
-mov (ecx, ptr[rbp+r9*4+1]); dump();
-mov (ecx, ptr[rbp+r9*4+1000]); dump();
-mov (ecx, ptr[rbp+r9*4-1]); dump();
-mov (ecx, ptr[rbp+r9*4-1000]); dump();
-mov (ecx, ptr[rbp+r9*8+0]); dump();
-mov (ecx, ptr[rbp+r9*8+1]); dump();
-mov (ecx, ptr[rbp+r9*8+1000]); dump();
-mov (ecx, ptr[rbp+r9*8-1]); dump();
-mov (ecx, ptr[rbp+r9*8-1000]); dump();
-mov (ecx, ptr[rbp+r10+0]); dump();
-mov (ecx, ptr[rbp+r10+1]); dump();
-mov (ecx, ptr[rbp+r10+1000]); dump();
-mov (ecx, ptr[rbp+r10-1]); dump();
-mov (ecx, ptr[rbp+r10-1000]); dump();
-mov (ecx, ptr[rbp+r10*1+0]); dump();
-mov (ecx, ptr[rbp+r10*1+1]); dump();
-mov (ecx, ptr[rbp+r10*1+1000]); dump();
-mov (ecx, ptr[rbp+r10*1-1]); dump();
-mov (ecx, ptr[rbp+r10*1-1000]); dump();
-mov (ecx, ptr[rbp+r10*2+0]); dump();
-mov (ecx, ptr[rbp+r10*2+1]); dump();
-mov (ecx, ptr[rbp+r10*2+1000]); dump();
-mov (ecx, ptr[rbp+r10*2-1]); dump();
-mov (ecx, ptr[rbp+r10*2-1000]); dump();
-mov (ecx, ptr[rbp+r10*4+0]); dump();
-mov (ecx, ptr[rbp+r10*4+1]); dump();
-mov (ecx, ptr[rbp+r10*4+1000]); dump();
-mov (ecx, ptr[rbp+r10*4-1]); dump();
-mov (ecx, ptr[rbp+r10*4-1000]); dump();
-mov (ecx, ptr[rbp+r10*8+0]); dump();
-mov (ecx, ptr[rbp+r10*8+1]); dump();
-mov (ecx, ptr[rbp+r10*8+1000]); dump();
-mov (ecx, ptr[rbp+r10*8-1]); dump();
-mov (ecx, ptr[rbp+r10*8-1000]); dump();
-}
-    void gen21(){
-mov (ecx, ptr[rbp+r11+0]); dump();
-mov (ecx, ptr[rbp+r11+1]); dump();
-mov (ecx, ptr[rbp+r11+1000]); dump();
-mov (ecx, ptr[rbp+r11-1]); dump();
-mov (ecx, ptr[rbp+r11-1000]); dump();
-mov (ecx, ptr[rbp+r11*1+0]); dump();
-mov (ecx, ptr[rbp+r11*1+1]); dump();
-mov (ecx, ptr[rbp+r11*1+1000]); dump();
-mov (ecx, ptr[rbp+r11*1-1]); dump();
-mov (ecx, ptr[rbp+r11*1-1000]); dump();
-mov (ecx, ptr[rbp+r11*2+0]); dump();
-mov (ecx, ptr[rbp+r11*2+1]); dump();
-mov (ecx, ptr[rbp+r11*2+1000]); dump();
-mov (ecx, ptr[rbp+r11*2-1]); dump();
-mov (ecx, ptr[rbp+r11*2-1000]); dump();
-mov (ecx, ptr[rbp+r11*4+0]); dump();
-mov (ecx, ptr[rbp+r11*4+1]); dump();
-mov (ecx, ptr[rbp+r11*4+1000]); dump();
-mov (ecx, ptr[rbp+r11*4-1]); dump();
-mov (ecx, ptr[rbp+r11*4-1000]); dump();
-mov (ecx, ptr[rbp+r11*8+0]); dump();
-mov (ecx, ptr[rbp+r11*8+1]); dump();
-mov (ecx, ptr[rbp+r11*8+1000]); dump();
-mov (ecx, ptr[rbp+r11*8-1]); dump();
-mov (ecx, ptr[rbp+r11*8-1000]); dump();
-mov (ecx, ptr[rbp+r12+0]); dump();
-mov (ecx, ptr[rbp+r12+1]); dump();
-mov (ecx, ptr[rbp+r12+1000]); dump();
-mov (ecx, ptr[rbp+r12-1]); dump();
-mov (ecx, ptr[rbp+r12-1000]); dump();
-mov (ecx, ptr[rbp+r12*1+0]); dump();
-mov (ecx, ptr[rbp+r12*1+1]); dump();
-mov (ecx, ptr[rbp+r12*1+1000]); dump();
-mov (ecx, ptr[rbp+r12*1-1]); dump();
-mov (ecx, ptr[rbp+r12*1-1000]); dump();
-mov (ecx, ptr[rbp+r12*2+0]); dump();
-mov (ecx, ptr[rbp+r12*2+1]); dump();
-mov (ecx, ptr[rbp+r12*2+1000]); dump();
-mov (ecx, ptr[rbp+r12*2-1]); dump();
-mov (ecx, ptr[rbp+r12*2-1000]); dump();
-mov (ecx, ptr[rbp+r12*4+0]); dump();
-mov (ecx, ptr[rbp+r12*4+1]); dump();
-mov (ecx, ptr[rbp+r12*4+1000]); dump();
-mov (ecx, ptr[rbp+r12*4-1]); dump();
-mov (ecx, ptr[rbp+r12*4-1000]); dump();
-mov (ecx, ptr[rbp+r12*8+0]); dump();
-mov (ecx, ptr[rbp+r12*8+1]); dump();
-mov (ecx, ptr[rbp+r12*8+1000]); dump();
-mov (ecx, ptr[rbp+r12*8-1]); dump();
-mov (ecx, ptr[rbp+r12*8-1000]); dump();
-mov (ecx, ptr[rbp+r13+0]); dump();
-mov (ecx, ptr[rbp+r13+1]); dump();
-mov (ecx, ptr[rbp+r13+1000]); dump();
-mov (ecx, ptr[rbp+r13-1]); dump();
-mov (ecx, ptr[rbp+r13-1000]); dump();
-mov (ecx, ptr[rbp+r13*1+0]); dump();
-mov (ecx, ptr[rbp+r13*1+1]); dump();
-mov (ecx, ptr[rbp+r13*1+1000]); dump();
-mov (ecx, ptr[rbp+r13*1-1]); dump();
-mov (ecx, ptr[rbp+r13*1-1000]); dump();
-mov (ecx, ptr[rbp+r13*2+0]); dump();
-mov (ecx, ptr[rbp+r13*2+1]); dump();
-mov (ecx, ptr[rbp+r13*2+1000]); dump();
-mov (ecx, ptr[rbp+r13*2-1]); dump();
-mov (ecx, ptr[rbp+r13*2-1000]); dump();
-mov (ecx, ptr[rbp+r13*4+0]); dump();
-mov (ecx, ptr[rbp+r13*4+1]); dump();
-mov (ecx, ptr[rbp+r13*4+1000]); dump();
-mov (ecx, ptr[rbp+r13*4-1]); dump();
-mov (ecx, ptr[rbp+r13*4-1000]); dump();
-mov (ecx, ptr[rbp+r13*8+0]); dump();
-mov (ecx, ptr[rbp+r13*8+1]); dump();
-mov (ecx, ptr[rbp+r13*8+1000]); dump();
-mov (ecx, ptr[rbp+r13*8-1]); dump();
-mov (ecx, ptr[rbp+r13*8-1000]); dump();
-mov (ecx, ptr[rbp+r14+0]); dump();
-mov (ecx, ptr[rbp+r14+1]); dump();
-mov (ecx, ptr[rbp+r14+1000]); dump();
-mov (ecx, ptr[rbp+r14-1]); dump();
-mov (ecx, ptr[rbp+r14-1000]); dump();
-mov (ecx, ptr[rbp+r14*1+0]); dump();
-mov (ecx, ptr[rbp+r14*1+1]); dump();
-mov (ecx, ptr[rbp+r14*1+1000]); dump();
-mov (ecx, ptr[rbp+r14*1-1]); dump();
-mov (ecx, ptr[rbp+r14*1-1000]); dump();
-mov (ecx, ptr[rbp+r14*2+0]); dump();
-mov (ecx, ptr[rbp+r14*2+1]); dump();
-mov (ecx, ptr[rbp+r14*2+1000]); dump();
-mov (ecx, ptr[rbp+r14*2-1]); dump();
-mov (ecx, ptr[rbp+r14*2-1000]); dump();
-mov (ecx, ptr[rbp+r14*4+0]); dump();
-mov (ecx, ptr[rbp+r14*4+1]); dump();
-mov (ecx, ptr[rbp+r14*4+1000]); dump();
-mov (ecx, ptr[rbp+r14*4-1]); dump();
-mov (ecx, ptr[rbp+r14*4-1000]); dump();
-mov (ecx, ptr[rbp+r14*8+0]); dump();
-mov (ecx, ptr[rbp+r14*8+1]); dump();
-mov (ecx, ptr[rbp+r14*8+1000]); dump();
-mov (ecx, ptr[rbp+r14*8-1]); dump();
-mov (ecx, ptr[rbp+r14*8-1000]); dump();
-}
-    void gen22(){
-mov (ecx, ptr[rbp+r15+0]); dump();
-mov (ecx, ptr[rbp+r15+1]); dump();
-mov (ecx, ptr[rbp+r15+1000]); dump();
-mov (ecx, ptr[rbp+r15-1]); dump();
-mov (ecx, ptr[rbp+r15-1000]); dump();
-mov (ecx, ptr[rbp+r15*1+0]); dump();
-mov (ecx, ptr[rbp+r15*1+1]); dump();
-mov (ecx, ptr[rbp+r15*1+1000]); dump();
-mov (ecx, ptr[rbp+r15*1-1]); dump();
-mov (ecx, ptr[rbp+r15*1-1000]); dump();
-mov (ecx, ptr[rbp+r15*2+0]); dump();
-mov (ecx, ptr[rbp+r15*2+1]); dump();
-mov (ecx, ptr[rbp+r15*2+1000]); dump();
-mov (ecx, ptr[rbp+r15*2-1]); dump();
-mov (ecx, ptr[rbp+r15*2-1000]); dump();
-mov (ecx, ptr[rbp+r15*4+0]); dump();
-mov (ecx, ptr[rbp+r15*4+1]); dump();
-mov (ecx, ptr[rbp+r15*4+1000]); dump();
-mov (ecx, ptr[rbp+r15*4-1]); dump();
-mov (ecx, ptr[rbp+r15*4-1000]); dump();
-mov (ecx, ptr[rbp+r15*8+0]); dump();
-mov (ecx, ptr[rbp+r15*8+1]); dump();
-mov (ecx, ptr[rbp+r15*8+1000]); dump();
-mov (ecx, ptr[rbp+r15*8-1]); dump();
-mov (ecx, ptr[rbp+r15*8-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rsi+rax+0]); dump();
-mov (ecx, ptr[rsi+rax+1]); dump();
-mov (ecx, ptr[rsi+rax+1000]); dump();
-mov (ecx, ptr[rsi+rax-1]); dump();
-mov (ecx, ptr[rsi+rax-1000]); dump();
-mov (ecx, ptr[rsi+rax*1+0]); dump();
-mov (ecx, ptr[rsi+rax*1+1]); dump();
-mov (ecx, ptr[rsi+rax*1+1000]); dump();
-mov (ecx, ptr[rsi+rax*1-1]); dump();
-mov (ecx, ptr[rsi+rax*1-1000]); dump();
-mov (ecx, ptr[rsi+rax*2+0]); dump();
-mov (ecx, ptr[rsi+rax*2+1]); dump();
-mov (ecx, ptr[rsi+rax*2+1000]); dump();
-mov (ecx, ptr[rsi+rax*2-1]); dump();
-mov (ecx, ptr[rsi+rax*2-1000]); dump();
-mov (ecx, ptr[rsi+rax*4+0]); dump();
-mov (ecx, ptr[rsi+rax*4+1]); dump();
-mov (ecx, ptr[rsi+rax*4+1000]); dump();
-mov (ecx, ptr[rsi+rax*4-1]); dump();
-mov (ecx, ptr[rsi+rax*4-1000]); dump();
-mov (ecx, ptr[rsi+rax*8+0]); dump();
-mov (ecx, ptr[rsi+rax*8+1]); dump();
-mov (ecx, ptr[rsi+rax*8+1000]); dump();
-mov (ecx, ptr[rsi+rax*8-1]); dump();
-mov (ecx, ptr[rsi+rax*8-1000]); dump();
-mov (ecx, ptr[rsi+rcx+0]); dump();
-mov (ecx, ptr[rsi+rcx+1]); dump();
-mov (ecx, ptr[rsi+rcx+1000]); dump();
-mov (ecx, ptr[rsi+rcx-1]); dump();
-mov (ecx, ptr[rsi+rcx-1000]); dump();
-mov (ecx, ptr[rsi+rcx*1+0]); dump();
-mov (ecx, ptr[rsi+rcx*1+1]); dump();
-mov (ecx, ptr[rsi+rcx*1+1000]); dump();
-mov (ecx, ptr[rsi+rcx*1-1]); dump();
-mov (ecx, ptr[rsi+rcx*1-1000]); dump();
-mov (ecx, ptr[rsi+rcx*2+0]); dump();
-mov (ecx, ptr[rsi+rcx*2+1]); dump();
-mov (ecx, ptr[rsi+rcx*2+1000]); dump();
-mov (ecx, ptr[rsi+rcx*2-1]); dump();
-mov (ecx, ptr[rsi+rcx*2-1000]); dump();
-mov (ecx, ptr[rsi+rcx*4+0]); dump();
-mov (ecx, ptr[rsi+rcx*4+1]); dump();
-mov (ecx, ptr[rsi+rcx*4+1000]); dump();
-mov (ecx, ptr[rsi+rcx*4-1]); dump();
-mov (ecx, ptr[rsi+rcx*4-1000]); dump();
-mov (ecx, ptr[rsi+rcx*8+0]); dump();
-mov (ecx, ptr[rsi+rcx*8+1]); dump();
-mov (ecx, ptr[rsi+rcx*8+1000]); dump();
-mov (ecx, ptr[rsi+rcx*8-1]); dump();
-mov (ecx, ptr[rsi+rcx*8-1000]); dump();
-}
-    void gen23(){
-mov (ecx, ptr[rsi+rdx+0]); dump();
-mov (ecx, ptr[rsi+rdx+1]); dump();
-mov (ecx, ptr[rsi+rdx+1000]); dump();
-mov (ecx, ptr[rsi+rdx-1]); dump();
-mov (ecx, ptr[rsi+rdx-1000]); dump();
-mov (ecx, ptr[rsi+rdx*1+0]); dump();
-mov (ecx, ptr[rsi+rdx*1+1]); dump();
-mov (ecx, ptr[rsi+rdx*1+1000]); dump();
-mov (ecx, ptr[rsi+rdx*1-1]); dump();
-mov (ecx, ptr[rsi+rdx*1-1000]); dump();
-mov (ecx, ptr[rsi+rdx*2+0]); dump();
-mov (ecx, ptr[rsi+rdx*2+1]); dump();
-mov (ecx, ptr[rsi+rdx*2+1000]); dump();
-mov (ecx, ptr[rsi+rdx*2-1]); dump();
-mov (ecx, ptr[rsi+rdx*2-1000]); dump();
-mov (ecx, ptr[rsi+rdx*4+0]); dump();
-mov (ecx, ptr[rsi+rdx*4+1]); dump();
-mov (ecx, ptr[rsi+rdx*4+1000]); dump();
-mov (ecx, ptr[rsi+rdx*4-1]); dump();
-mov (ecx, ptr[rsi+rdx*4-1000]); dump();
-mov (ecx, ptr[rsi+rdx*8+0]); dump();
-mov (ecx, ptr[rsi+rdx*8+1]); dump();
-mov (ecx, ptr[rsi+rdx*8+1000]); dump();
-mov (ecx, ptr[rsi+rdx*8-1]); dump();
-mov (ecx, ptr[rsi+rdx*8-1000]); dump();
-mov (ecx, ptr[rsi+rbx+0]); dump();
-mov (ecx, ptr[rsi+rbx+1]); dump();
-mov (ecx, ptr[rsi+rbx+1000]); dump();
-mov (ecx, ptr[rsi+rbx-1]); dump();
-mov (ecx, ptr[rsi+rbx-1000]); dump();
-mov (ecx, ptr[rsi+rbx*1+0]); dump();
-mov (ecx, ptr[rsi+rbx*1+1]); dump();
-mov (ecx, ptr[rsi+rbx*1+1000]); dump();
-mov (ecx, ptr[rsi+rbx*1-1]); dump();
-mov (ecx, ptr[rsi+rbx*1-1000]); dump();
-mov (ecx, ptr[rsi+rbx*2+0]); dump();
-mov (ecx, ptr[rsi+rbx*2+1]); dump();
-mov (ecx, ptr[rsi+rbx*2+1000]); dump();
-mov (ecx, ptr[rsi+rbx*2-1]); dump();
-mov (ecx, ptr[rsi+rbx*2-1000]); dump();
-mov (ecx, ptr[rsi+rbx*4+0]); dump();
-mov (ecx, ptr[rsi+rbx*4+1]); dump();
-mov (ecx, ptr[rsi+rbx*4+1000]); dump();
-mov (ecx, ptr[rsi+rbx*4-1]); dump();
-mov (ecx, ptr[rsi+rbx*4-1000]); dump();
-mov (ecx, ptr[rsi+rbx*8+0]); dump();
-mov (ecx, ptr[rsi+rbx*8+1]); dump();
-mov (ecx, ptr[rsi+rbx*8+1000]); dump();
-mov (ecx, ptr[rsi+rbx*8-1]); dump();
-mov (ecx, ptr[rsi+rbx*8-1000]); dump();
-mov (ecx, ptr[rsi+rbp+0]); dump();
-mov (ecx, ptr[rsi+rbp+1]); dump();
-mov (ecx, ptr[rsi+rbp+1000]); dump();
-mov (ecx, ptr[rsi+rbp-1]); dump();
-mov (ecx, ptr[rsi+rbp-1000]); dump();
-mov (ecx, ptr[rsi+rbp*1+0]); dump();
-mov (ecx, ptr[rsi+rbp*1+1]); dump();
-mov (ecx, ptr[rsi+rbp*1+1000]); dump();
-mov (ecx, ptr[rsi+rbp*1-1]); dump();
-mov (ecx, ptr[rsi+rbp*1-1000]); dump();
-mov (ecx, ptr[rsi+rbp*2+0]); dump();
-mov (ecx, ptr[rsi+rbp*2+1]); dump();
-mov (ecx, ptr[rsi+rbp*2+1000]); dump();
-mov (ecx, ptr[rsi+rbp*2-1]); dump();
-mov (ecx, ptr[rsi+rbp*2-1000]); dump();
-mov (ecx, ptr[rsi+rbp*4+0]); dump();
-mov (ecx, ptr[rsi+rbp*4+1]); dump();
-mov (ecx, ptr[rsi+rbp*4+1000]); dump();
-mov (ecx, ptr[rsi+rbp*4-1]); dump();
-mov (ecx, ptr[rsi+rbp*4-1000]); dump();
-mov (ecx, ptr[rsi+rbp*8+0]); dump();
-mov (ecx, ptr[rsi+rbp*8+1]); dump();
-mov (ecx, ptr[rsi+rbp*8+1000]); dump();
-mov (ecx, ptr[rsi+rbp*8-1]); dump();
-mov (ecx, ptr[rsi+rbp*8-1000]); dump();
-mov (ecx, ptr[rsi+rsi+0]); dump();
-mov (ecx, ptr[rsi+rsi+1]); dump();
-mov (ecx, ptr[rsi+rsi+1000]); dump();
-mov (ecx, ptr[rsi+rsi-1]); dump();
-mov (ecx, ptr[rsi+rsi-1000]); dump();
-mov (ecx, ptr[rsi+rsi*1+0]); dump();
-mov (ecx, ptr[rsi+rsi*1+1]); dump();
-mov (ecx, ptr[rsi+rsi*1+1000]); dump();
-mov (ecx, ptr[rsi+rsi*1-1]); dump();
-mov (ecx, ptr[rsi+rsi*1-1000]); dump();
-mov (ecx, ptr[rsi+rsi*2+0]); dump();
-mov (ecx, ptr[rsi+rsi*2+1]); dump();
-mov (ecx, ptr[rsi+rsi*2+1000]); dump();
-mov (ecx, ptr[rsi+rsi*2-1]); dump();
-mov (ecx, ptr[rsi+rsi*2-1000]); dump();
-mov (ecx, ptr[rsi+rsi*4+0]); dump();
-mov (ecx, ptr[rsi+rsi*4+1]); dump();
-mov (ecx, ptr[rsi+rsi*4+1000]); dump();
-mov (ecx, ptr[rsi+rsi*4-1]); dump();
-mov (ecx, ptr[rsi+rsi*4-1000]); dump();
-mov (ecx, ptr[rsi+rsi*8+0]); dump();
-mov (ecx, ptr[rsi+rsi*8+1]); dump();
-mov (ecx, ptr[rsi+rsi*8+1000]); dump();
-mov (ecx, ptr[rsi+rsi*8-1]); dump();
-mov (ecx, ptr[rsi+rsi*8-1000]); dump();
-}
-    void gen24(){
-mov (ecx, ptr[rsi+rdi+0]); dump();
-mov (ecx, ptr[rsi+rdi+1]); dump();
-mov (ecx, ptr[rsi+rdi+1000]); dump();
-mov (ecx, ptr[rsi+rdi-1]); dump();
-mov (ecx, ptr[rsi+rdi-1000]); dump();
-mov (ecx, ptr[rsi+rdi*1+0]); dump();
-mov (ecx, ptr[rsi+rdi*1+1]); dump();
-mov (ecx, ptr[rsi+rdi*1+1000]); dump();
-mov (ecx, ptr[rsi+rdi*1-1]); dump();
-mov (ecx, ptr[rsi+rdi*1-1000]); dump();
-mov (ecx, ptr[rsi+rdi*2+0]); dump();
-mov (ecx, ptr[rsi+rdi*2+1]); dump();
-mov (ecx, ptr[rsi+rdi*2+1000]); dump();
-mov (ecx, ptr[rsi+rdi*2-1]); dump();
-mov (ecx, ptr[rsi+rdi*2-1000]); dump();
-mov (ecx, ptr[rsi+rdi*4+0]); dump();
-mov (ecx, ptr[rsi+rdi*4+1]); dump();
-mov (ecx, ptr[rsi+rdi*4+1000]); dump();
-mov (ecx, ptr[rsi+rdi*4-1]); dump();
-mov (ecx, ptr[rsi+rdi*4-1000]); dump();
-mov (ecx, ptr[rsi+rdi*8+0]); dump();
-mov (ecx, ptr[rsi+rdi*8+1]); dump();
-mov (ecx, ptr[rsi+rdi*8+1000]); dump();
-mov (ecx, ptr[rsi+rdi*8-1]); dump();
-mov (ecx, ptr[rsi+rdi*8-1000]); dump();
-mov (ecx, ptr[rsi+r9+0]); dump();
-mov (ecx, ptr[rsi+r9+1]); dump();
-mov (ecx, ptr[rsi+r9+1000]); dump();
-mov (ecx, ptr[rsi+r9-1]); dump();
-mov (ecx, ptr[rsi+r9-1000]); dump();
-mov (ecx, ptr[rsi+r9*1+0]); dump();
-mov (ecx, ptr[rsi+r9*1+1]); dump();
-mov (ecx, ptr[rsi+r9*1+1000]); dump();
-mov (ecx, ptr[rsi+r9*1-1]); dump();
-mov (ecx, ptr[rsi+r9*1-1000]); dump();
-mov (ecx, ptr[rsi+r9*2+0]); dump();
-mov (ecx, ptr[rsi+r9*2+1]); dump();
-mov (ecx, ptr[rsi+r9*2+1000]); dump();
-mov (ecx, ptr[rsi+r9*2-1]); dump();
-mov (ecx, ptr[rsi+r9*2-1000]); dump();
-mov (ecx, ptr[rsi+r9*4+0]); dump();
-mov (ecx, ptr[rsi+r9*4+1]); dump();
-mov (ecx, ptr[rsi+r9*4+1000]); dump();
-mov (ecx, ptr[rsi+r9*4-1]); dump();
-mov (ecx, ptr[rsi+r9*4-1000]); dump();
-mov (ecx, ptr[rsi+r9*8+0]); dump();
-mov (ecx, ptr[rsi+r9*8+1]); dump();
-mov (ecx, ptr[rsi+r9*8+1000]); dump();
-mov (ecx, ptr[rsi+r9*8-1]); dump();
-mov (ecx, ptr[rsi+r9*8-1000]); dump();
-mov (ecx, ptr[rsi+r10+0]); dump();
-mov (ecx, ptr[rsi+r10+1]); dump();
-mov (ecx, ptr[rsi+r10+1000]); dump();
-mov (ecx, ptr[rsi+r10-1]); dump();
-mov (ecx, ptr[rsi+r10-1000]); dump();
-mov (ecx, ptr[rsi+r10*1+0]); dump();
-mov (ecx, ptr[rsi+r10*1+1]); dump();
-mov (ecx, ptr[rsi+r10*1+1000]); dump();
-mov (ecx, ptr[rsi+r10*1-1]); dump();
-mov (ecx, ptr[rsi+r10*1-1000]); dump();
-mov (ecx, ptr[rsi+r10*2+0]); dump();
-mov (ecx, ptr[rsi+r10*2+1]); dump();
-mov (ecx, ptr[rsi+r10*2+1000]); dump();
-mov (ecx, ptr[rsi+r10*2-1]); dump();
-mov (ecx, ptr[rsi+r10*2-1000]); dump();
-mov (ecx, ptr[rsi+r10*4+0]); dump();
-mov (ecx, ptr[rsi+r10*4+1]); dump();
-mov (ecx, ptr[rsi+r10*4+1000]); dump();
-mov (ecx, ptr[rsi+r10*4-1]); dump();
-mov (ecx, ptr[rsi+r10*4-1000]); dump();
-mov (ecx, ptr[rsi+r10*8+0]); dump();
-mov (ecx, ptr[rsi+r10*8+1]); dump();
-mov (ecx, ptr[rsi+r10*8+1000]); dump();
-mov (ecx, ptr[rsi+r10*8-1]); dump();
-mov (ecx, ptr[rsi+r10*8-1000]); dump();
-mov (ecx, ptr[rsi+r11+0]); dump();
-mov (ecx, ptr[rsi+r11+1]); dump();
-mov (ecx, ptr[rsi+r11+1000]); dump();
-mov (ecx, ptr[rsi+r11-1]); dump();
-mov (ecx, ptr[rsi+r11-1000]); dump();
-mov (ecx, ptr[rsi+r11*1+0]); dump();
-mov (ecx, ptr[rsi+r11*1+1]); dump();
-mov (ecx, ptr[rsi+r11*1+1000]); dump();
-mov (ecx, ptr[rsi+r11*1-1]); dump();
-mov (ecx, ptr[rsi+r11*1-1000]); dump();
-mov (ecx, ptr[rsi+r11*2+0]); dump();
-mov (ecx, ptr[rsi+r11*2+1]); dump();
-mov (ecx, ptr[rsi+r11*2+1000]); dump();
-mov (ecx, ptr[rsi+r11*2-1]); dump();
-mov (ecx, ptr[rsi+r11*2-1000]); dump();
-mov (ecx, ptr[rsi+r11*4+0]); dump();
-mov (ecx, ptr[rsi+r11*4+1]); dump();
-mov (ecx, ptr[rsi+r11*4+1000]); dump();
-mov (ecx, ptr[rsi+r11*4-1]); dump();
-mov (ecx, ptr[rsi+r11*4-1000]); dump();
-mov (ecx, ptr[rsi+r11*8+0]); dump();
-mov (ecx, ptr[rsi+r11*8+1]); dump();
-mov (ecx, ptr[rsi+r11*8+1000]); dump();
-mov (ecx, ptr[rsi+r11*8-1]); dump();
-mov (ecx, ptr[rsi+r11*8-1000]); dump();
-}
-    void gen25(){
-mov (ecx, ptr[rsi+r12+0]); dump();
-mov (ecx, ptr[rsi+r12+1]); dump();
-mov (ecx, ptr[rsi+r12+1000]); dump();
-mov (ecx, ptr[rsi+r12-1]); dump();
-mov (ecx, ptr[rsi+r12-1000]); dump();
-mov (ecx, ptr[rsi+r12*1+0]); dump();
-mov (ecx, ptr[rsi+r12*1+1]); dump();
-mov (ecx, ptr[rsi+r12*1+1000]); dump();
-mov (ecx, ptr[rsi+r12*1-1]); dump();
-mov (ecx, ptr[rsi+r12*1-1000]); dump();
-mov (ecx, ptr[rsi+r12*2+0]); dump();
-mov (ecx, ptr[rsi+r12*2+1]); dump();
-mov (ecx, ptr[rsi+r12*2+1000]); dump();
-mov (ecx, ptr[rsi+r12*2-1]); dump();
-mov (ecx, ptr[rsi+r12*2-1000]); dump();
-mov (ecx, ptr[rsi+r12*4+0]); dump();
-mov (ecx, ptr[rsi+r12*4+1]); dump();
-mov (ecx, ptr[rsi+r12*4+1000]); dump();
-mov (ecx, ptr[rsi+r12*4-1]); dump();
-mov (ecx, ptr[rsi+r12*4-1000]); dump();
-mov (ecx, ptr[rsi+r12*8+0]); dump();
-mov (ecx, ptr[rsi+r12*8+1]); dump();
-mov (ecx, ptr[rsi+r12*8+1000]); dump();
-mov (ecx, ptr[rsi+r12*8-1]); dump();
-mov (ecx, ptr[rsi+r12*8-1000]); dump();
-mov (ecx, ptr[rsi+r13+0]); dump();
-mov (ecx, ptr[rsi+r13+1]); dump();
-mov (ecx, ptr[rsi+r13+1000]); dump();
-mov (ecx, ptr[rsi+r13-1]); dump();
-mov (ecx, ptr[rsi+r13-1000]); dump();
-mov (ecx, ptr[rsi+r13*1+0]); dump();
-mov (ecx, ptr[rsi+r13*1+1]); dump();
-mov (ecx, ptr[rsi+r13*1+1000]); dump();
-mov (ecx, ptr[rsi+r13*1-1]); dump();
-mov (ecx, ptr[rsi+r13*1-1000]); dump();
-mov (ecx, ptr[rsi+r13*2+0]); dump();
-mov (ecx, ptr[rsi+r13*2+1]); dump();
-mov (ecx, ptr[rsi+r13*2+1000]); dump();
-mov (ecx, ptr[rsi+r13*2-1]); dump();
-mov (ecx, ptr[rsi+r13*2-1000]); dump();
-mov (ecx, ptr[rsi+r13*4+0]); dump();
-mov (ecx, ptr[rsi+r13*4+1]); dump();
-mov (ecx, ptr[rsi+r13*4+1000]); dump();
-mov (ecx, ptr[rsi+r13*4-1]); dump();
-mov (ecx, ptr[rsi+r13*4-1000]); dump();
-mov (ecx, ptr[rsi+r13*8+0]); dump();
-mov (ecx, ptr[rsi+r13*8+1]); dump();
-mov (ecx, ptr[rsi+r13*8+1000]); dump();
-mov (ecx, ptr[rsi+r13*8-1]); dump();
-mov (ecx, ptr[rsi+r13*8-1000]); dump();
-mov (ecx, ptr[rsi+r14+0]); dump();
-mov (ecx, ptr[rsi+r14+1]); dump();
-mov (ecx, ptr[rsi+r14+1000]); dump();
-mov (ecx, ptr[rsi+r14-1]); dump();
-mov (ecx, ptr[rsi+r14-1000]); dump();
-mov (ecx, ptr[rsi+r14*1+0]); dump();
-mov (ecx, ptr[rsi+r14*1+1]); dump();
-mov (ecx, ptr[rsi+r14*1+1000]); dump();
-mov (ecx, ptr[rsi+r14*1-1]); dump();
-mov (ecx, ptr[rsi+r14*1-1000]); dump();
-mov (ecx, ptr[rsi+r14*2+0]); dump();
-mov (ecx, ptr[rsi+r14*2+1]); dump();
-mov (ecx, ptr[rsi+r14*2+1000]); dump();
-mov (ecx, ptr[rsi+r14*2-1]); dump();
-mov (ecx, ptr[rsi+r14*2-1000]); dump();
-mov (ecx, ptr[rsi+r14*4+0]); dump();
-mov (ecx, ptr[rsi+r14*4+1]); dump();
-mov (ecx, ptr[rsi+r14*4+1000]); dump();
-mov (ecx, ptr[rsi+r14*4-1]); dump();
-mov (ecx, ptr[rsi+r14*4-1000]); dump();
-mov (ecx, ptr[rsi+r14*8+0]); dump();
-mov (ecx, ptr[rsi+r14*8+1]); dump();
-mov (ecx, ptr[rsi+r14*8+1000]); dump();
-mov (ecx, ptr[rsi+r14*8-1]); dump();
-mov (ecx, ptr[rsi+r14*8-1000]); dump();
-mov (ecx, ptr[rsi+r15+0]); dump();
-mov (ecx, ptr[rsi+r15+1]); dump();
-mov (ecx, ptr[rsi+r15+1000]); dump();
-mov (ecx, ptr[rsi+r15-1]); dump();
-mov (ecx, ptr[rsi+r15-1000]); dump();
-mov (ecx, ptr[rsi+r15*1+0]); dump();
-mov (ecx, ptr[rsi+r15*1+1]); dump();
-mov (ecx, ptr[rsi+r15*1+1000]); dump();
-mov (ecx, ptr[rsi+r15*1-1]); dump();
-mov (ecx, ptr[rsi+r15*1-1000]); dump();
-mov (ecx, ptr[rsi+r15*2+0]); dump();
-mov (ecx, ptr[rsi+r15*2+1]); dump();
-mov (ecx, ptr[rsi+r15*2+1000]); dump();
-mov (ecx, ptr[rsi+r15*2-1]); dump();
-mov (ecx, ptr[rsi+r15*2-1000]); dump();
-mov (ecx, ptr[rsi+r15*4+0]); dump();
-mov (ecx, ptr[rsi+r15*4+1]); dump();
-mov (ecx, ptr[rsi+r15*4+1000]); dump();
-mov (ecx, ptr[rsi+r15*4-1]); dump();
-mov (ecx, ptr[rsi+r15*4-1000]); dump();
-mov (ecx, ptr[rsi+r15*8+0]); dump();
-mov (ecx, ptr[rsi+r15*8+1]); dump();
-mov (ecx, ptr[rsi+r15*8+1000]); dump();
-mov (ecx, ptr[rsi+r15*8-1]); dump();
-mov (ecx, ptr[rsi+r15*8-1000]); dump();
-}
-    void gen26(){
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rdi+rax+0]); dump();
-mov (ecx, ptr[rdi+rax+1]); dump();
-mov (ecx, ptr[rdi+rax+1000]); dump();
-mov (ecx, ptr[rdi+rax-1]); dump();
-mov (ecx, ptr[rdi+rax-1000]); dump();
-mov (ecx, ptr[rdi+rax*1+0]); dump();
-mov (ecx, ptr[rdi+rax*1+1]); dump();
-mov (ecx, ptr[rdi+rax*1+1000]); dump();
-mov (ecx, ptr[rdi+rax*1-1]); dump();
-mov (ecx, ptr[rdi+rax*1-1000]); dump();
-mov (ecx, ptr[rdi+rax*2+0]); dump();
-mov (ecx, ptr[rdi+rax*2+1]); dump();
-mov (ecx, ptr[rdi+rax*2+1000]); dump();
-mov (ecx, ptr[rdi+rax*2-1]); dump();
-mov (ecx, ptr[rdi+rax*2-1000]); dump();
-mov (ecx, ptr[rdi+rax*4+0]); dump();
-mov (ecx, ptr[rdi+rax*4+1]); dump();
-mov (ecx, ptr[rdi+rax*4+1000]); dump();
-mov (ecx, ptr[rdi+rax*4-1]); dump();
-mov (ecx, ptr[rdi+rax*4-1000]); dump();
-mov (ecx, ptr[rdi+rax*8+0]); dump();
-mov (ecx, ptr[rdi+rax*8+1]); dump();
-mov (ecx, ptr[rdi+rax*8+1000]); dump();
-mov (ecx, ptr[rdi+rax*8-1]); dump();
-mov (ecx, ptr[rdi+rax*8-1000]); dump();
-mov (ecx, ptr[rdi+rcx+0]); dump();
-mov (ecx, ptr[rdi+rcx+1]); dump();
-mov (ecx, ptr[rdi+rcx+1000]); dump();
-mov (ecx, ptr[rdi+rcx-1]); dump();
-mov (ecx, ptr[rdi+rcx-1000]); dump();
-mov (ecx, ptr[rdi+rcx*1+0]); dump();
-mov (ecx, ptr[rdi+rcx*1+1]); dump();
-mov (ecx, ptr[rdi+rcx*1+1000]); dump();
-mov (ecx, ptr[rdi+rcx*1-1]); dump();
-mov (ecx, ptr[rdi+rcx*1-1000]); dump();
-mov (ecx, ptr[rdi+rcx*2+0]); dump();
-mov (ecx, ptr[rdi+rcx*2+1]); dump();
-mov (ecx, ptr[rdi+rcx*2+1000]); dump();
-mov (ecx, ptr[rdi+rcx*2-1]); dump();
-mov (ecx, ptr[rdi+rcx*2-1000]); dump();
-mov (ecx, ptr[rdi+rcx*4+0]); dump();
-mov (ecx, ptr[rdi+rcx*4+1]); dump();
-mov (ecx, ptr[rdi+rcx*4+1000]); dump();
-mov (ecx, ptr[rdi+rcx*4-1]); dump();
-mov (ecx, ptr[rdi+rcx*4-1000]); dump();
-mov (ecx, ptr[rdi+rcx*8+0]); dump();
-mov (ecx, ptr[rdi+rcx*8+1]); dump();
-mov (ecx, ptr[rdi+rcx*8+1000]); dump();
-mov (ecx, ptr[rdi+rcx*8-1]); dump();
-mov (ecx, ptr[rdi+rcx*8-1000]); dump();
-mov (ecx, ptr[rdi+rdx+0]); dump();
-mov (ecx, ptr[rdi+rdx+1]); dump();
-mov (ecx, ptr[rdi+rdx+1000]); dump();
-mov (ecx, ptr[rdi+rdx-1]); dump();
-mov (ecx, ptr[rdi+rdx-1000]); dump();
-mov (ecx, ptr[rdi+rdx*1+0]); dump();
-mov (ecx, ptr[rdi+rdx*1+1]); dump();
-mov (ecx, ptr[rdi+rdx*1+1000]); dump();
-mov (ecx, ptr[rdi+rdx*1-1]); dump();
-mov (ecx, ptr[rdi+rdx*1-1000]); dump();
-mov (ecx, ptr[rdi+rdx*2+0]); dump();
-mov (ecx, ptr[rdi+rdx*2+1]); dump();
-mov (ecx, ptr[rdi+rdx*2+1000]); dump();
-mov (ecx, ptr[rdi+rdx*2-1]); dump();
-mov (ecx, ptr[rdi+rdx*2-1000]); dump();
-mov (ecx, ptr[rdi+rdx*4+0]); dump();
-mov (ecx, ptr[rdi+rdx*4+1]); dump();
-mov (ecx, ptr[rdi+rdx*4+1000]); dump();
-mov (ecx, ptr[rdi+rdx*4-1]); dump();
-mov (ecx, ptr[rdi+rdx*4-1000]); dump();
-mov (ecx, ptr[rdi+rdx*8+0]); dump();
-mov (ecx, ptr[rdi+rdx*8+1]); dump();
-mov (ecx, ptr[rdi+rdx*8+1000]); dump();
-mov (ecx, ptr[rdi+rdx*8-1]); dump();
-mov (ecx, ptr[rdi+rdx*8-1000]); dump();
-}
-    void gen27(){
-mov (ecx, ptr[rdi+rbx+0]); dump();
-mov (ecx, ptr[rdi+rbx+1]); dump();
-mov (ecx, ptr[rdi+rbx+1000]); dump();
-mov (ecx, ptr[rdi+rbx-1]); dump();
-mov (ecx, ptr[rdi+rbx-1000]); dump();
-mov (ecx, ptr[rdi+rbx*1+0]); dump();
-mov (ecx, ptr[rdi+rbx*1+1]); dump();
-mov (ecx, ptr[rdi+rbx*1+1000]); dump();
-mov (ecx, ptr[rdi+rbx*1-1]); dump();
-mov (ecx, ptr[rdi+rbx*1-1000]); dump();
-mov (ecx, ptr[rdi+rbx*2+0]); dump();
-mov (ecx, ptr[rdi+rbx*2+1]); dump();
-mov (ecx, ptr[rdi+rbx*2+1000]); dump();
-mov (ecx, ptr[rdi+rbx*2-1]); dump();
-mov (ecx, ptr[rdi+rbx*2-1000]); dump();
-mov (ecx, ptr[rdi+rbx*4+0]); dump();
-mov (ecx, ptr[rdi+rbx*4+1]); dump();
-mov (ecx, ptr[rdi+rbx*4+1000]); dump();
-mov (ecx, ptr[rdi+rbx*4-1]); dump();
-mov (ecx, ptr[rdi+rbx*4-1000]); dump();
-mov (ecx, ptr[rdi+rbx*8+0]); dump();
-mov (ecx, ptr[rdi+rbx*8+1]); dump();
-mov (ecx, ptr[rdi+rbx*8+1000]); dump();
-mov (ecx, ptr[rdi+rbx*8-1]); dump();
-mov (ecx, ptr[rdi+rbx*8-1000]); dump();
-mov (ecx, ptr[rdi+rbp+0]); dump();
-mov (ecx, ptr[rdi+rbp+1]); dump();
-mov (ecx, ptr[rdi+rbp+1000]); dump();
-mov (ecx, ptr[rdi+rbp-1]); dump();
-mov (ecx, ptr[rdi+rbp-1000]); dump();
-mov (ecx, ptr[rdi+rbp*1+0]); dump();
-mov (ecx, ptr[rdi+rbp*1+1]); dump();
-mov (ecx, ptr[rdi+rbp*1+1000]); dump();
-mov (ecx, ptr[rdi+rbp*1-1]); dump();
-mov (ecx, ptr[rdi+rbp*1-1000]); dump();
-mov (ecx, ptr[rdi+rbp*2+0]); dump();
-mov (ecx, ptr[rdi+rbp*2+1]); dump();
-mov (ecx, ptr[rdi+rbp*2+1000]); dump();
-mov (ecx, ptr[rdi+rbp*2-1]); dump();
-mov (ecx, ptr[rdi+rbp*2-1000]); dump();
-mov (ecx, ptr[rdi+rbp*4+0]); dump();
-mov (ecx, ptr[rdi+rbp*4+1]); dump();
-mov (ecx, ptr[rdi+rbp*4+1000]); dump();
-mov (ecx, ptr[rdi+rbp*4-1]); dump();
-mov (ecx, ptr[rdi+rbp*4-1000]); dump();
-mov (ecx, ptr[rdi+rbp*8+0]); dump();
-mov (ecx, ptr[rdi+rbp*8+1]); dump();
-mov (ecx, ptr[rdi+rbp*8+1000]); dump();
-mov (ecx, ptr[rdi+rbp*8-1]); dump();
-mov (ecx, ptr[rdi+rbp*8-1000]); dump();
-mov (ecx, ptr[rdi+rsi+0]); dump();
-mov (ecx, ptr[rdi+rsi+1]); dump();
-mov (ecx, ptr[rdi+rsi+1000]); dump();
-mov (ecx, ptr[rdi+rsi-1]); dump();
-mov (ecx, ptr[rdi+rsi-1000]); dump();
-mov (ecx, ptr[rdi+rsi*1+0]); dump();
-mov (ecx, ptr[rdi+rsi*1+1]); dump();
-mov (ecx, ptr[rdi+rsi*1+1000]); dump();
-mov (ecx, ptr[rdi+rsi*1-1]); dump();
-mov (ecx, ptr[rdi+rsi*1-1000]); dump();
-mov (ecx, ptr[rdi+rsi*2+0]); dump();
-mov (ecx, ptr[rdi+rsi*2+1]); dump();
-mov (ecx, ptr[rdi+rsi*2+1000]); dump();
-mov (ecx, ptr[rdi+rsi*2-1]); dump();
-mov (ecx, ptr[rdi+rsi*2-1000]); dump();
-mov (ecx, ptr[rdi+rsi*4+0]); dump();
-mov (ecx, ptr[rdi+rsi*4+1]); dump();
-mov (ecx, ptr[rdi+rsi*4+1000]); dump();
-mov (ecx, ptr[rdi+rsi*4-1]); dump();
-mov (ecx, ptr[rdi+rsi*4-1000]); dump();
-mov (ecx, ptr[rdi+rsi*8+0]); dump();
-mov (ecx, ptr[rdi+rsi*8+1]); dump();
-mov (ecx, ptr[rdi+rsi*8+1000]); dump();
-mov (ecx, ptr[rdi+rsi*8-1]); dump();
-mov (ecx, ptr[rdi+rsi*8-1000]); dump();
-mov (ecx, ptr[rdi+rdi+0]); dump();
-mov (ecx, ptr[rdi+rdi+1]); dump();
-mov (ecx, ptr[rdi+rdi+1000]); dump();
-mov (ecx, ptr[rdi+rdi-1]); dump();
-mov (ecx, ptr[rdi+rdi-1000]); dump();
-mov (ecx, ptr[rdi+rdi*1+0]); dump();
-mov (ecx, ptr[rdi+rdi*1+1]); dump();
-mov (ecx, ptr[rdi+rdi*1+1000]); dump();
-mov (ecx, ptr[rdi+rdi*1-1]); dump();
-mov (ecx, ptr[rdi+rdi*1-1000]); dump();
-mov (ecx, ptr[rdi+rdi*2+0]); dump();
-mov (ecx, ptr[rdi+rdi*2+1]); dump();
-mov (ecx, ptr[rdi+rdi*2+1000]); dump();
-mov (ecx, ptr[rdi+rdi*2-1]); dump();
-mov (ecx, ptr[rdi+rdi*2-1000]); dump();
-mov (ecx, ptr[rdi+rdi*4+0]); dump();
-mov (ecx, ptr[rdi+rdi*4+1]); dump();
-mov (ecx, ptr[rdi+rdi*4+1000]); dump();
-mov (ecx, ptr[rdi+rdi*4-1]); dump();
-mov (ecx, ptr[rdi+rdi*4-1000]); dump();
-mov (ecx, ptr[rdi+rdi*8+0]); dump();
-mov (ecx, ptr[rdi+rdi*8+1]); dump();
-mov (ecx, ptr[rdi+rdi*8+1000]); dump();
-mov (ecx, ptr[rdi+rdi*8-1]); dump();
-mov (ecx, ptr[rdi+rdi*8-1000]); dump();
-}
-    void gen28(){
-mov (ecx, ptr[rdi+r9+0]); dump();
-mov (ecx, ptr[rdi+r9+1]); dump();
-mov (ecx, ptr[rdi+r9+1000]); dump();
-mov (ecx, ptr[rdi+r9-1]); dump();
-mov (ecx, ptr[rdi+r9-1000]); dump();
-mov (ecx, ptr[rdi+r9*1+0]); dump();
-mov (ecx, ptr[rdi+r9*1+1]); dump();
-mov (ecx, ptr[rdi+r9*1+1000]); dump();
-mov (ecx, ptr[rdi+r9*1-1]); dump();
-mov (ecx, ptr[rdi+r9*1-1000]); dump();
-mov (ecx, ptr[rdi+r9*2+0]); dump();
-mov (ecx, ptr[rdi+r9*2+1]); dump();
-mov (ecx, ptr[rdi+r9*2+1000]); dump();
-mov (ecx, ptr[rdi+r9*2-1]); dump();
-mov (ecx, ptr[rdi+r9*2-1000]); dump();
-mov (ecx, ptr[rdi+r9*4+0]); dump();
-mov (ecx, ptr[rdi+r9*4+1]); dump();
-mov (ecx, ptr[rdi+r9*4+1000]); dump();
-mov (ecx, ptr[rdi+r9*4-1]); dump();
-mov (ecx, ptr[rdi+r9*4-1000]); dump();
-mov (ecx, ptr[rdi+r9*8+0]); dump();
-mov (ecx, ptr[rdi+r9*8+1]); dump();
-mov (ecx, ptr[rdi+r9*8+1000]); dump();
-mov (ecx, ptr[rdi+r9*8-1]); dump();
-mov (ecx, ptr[rdi+r9*8-1000]); dump();
-mov (ecx, ptr[rdi+r10+0]); dump();
-mov (ecx, ptr[rdi+r10+1]); dump();
-mov (ecx, ptr[rdi+r10+1000]); dump();
-mov (ecx, ptr[rdi+r10-1]); dump();
-mov (ecx, ptr[rdi+r10-1000]); dump();
-mov (ecx, ptr[rdi+r10*1+0]); dump();
-mov (ecx, ptr[rdi+r10*1+1]); dump();
-mov (ecx, ptr[rdi+r10*1+1000]); dump();
-mov (ecx, ptr[rdi+r10*1-1]); dump();
-mov (ecx, ptr[rdi+r10*1-1000]); dump();
-mov (ecx, ptr[rdi+r10*2+0]); dump();
-mov (ecx, ptr[rdi+r10*2+1]); dump();
-mov (ecx, ptr[rdi+r10*2+1000]); dump();
-mov (ecx, ptr[rdi+r10*2-1]); dump();
-mov (ecx, ptr[rdi+r10*2-1000]); dump();
-mov (ecx, ptr[rdi+r10*4+0]); dump();
-mov (ecx, ptr[rdi+r10*4+1]); dump();
-mov (ecx, ptr[rdi+r10*4+1000]); dump();
-mov (ecx, ptr[rdi+r10*4-1]); dump();
-mov (ecx, ptr[rdi+r10*4-1000]); dump();
-mov (ecx, ptr[rdi+r10*8+0]); dump();
-mov (ecx, ptr[rdi+r10*8+1]); dump();
-mov (ecx, ptr[rdi+r10*8+1000]); dump();
-mov (ecx, ptr[rdi+r10*8-1]); dump();
-mov (ecx, ptr[rdi+r10*8-1000]); dump();
-mov (ecx, ptr[rdi+r11+0]); dump();
-mov (ecx, ptr[rdi+r11+1]); dump();
-mov (ecx, ptr[rdi+r11+1000]); dump();
-mov (ecx, ptr[rdi+r11-1]); dump();
-mov (ecx, ptr[rdi+r11-1000]); dump();
-mov (ecx, ptr[rdi+r11*1+0]); dump();
-mov (ecx, ptr[rdi+r11*1+1]); dump();
-mov (ecx, ptr[rdi+r11*1+1000]); dump();
-mov (ecx, ptr[rdi+r11*1-1]); dump();
-mov (ecx, ptr[rdi+r11*1-1000]); dump();
-mov (ecx, ptr[rdi+r11*2+0]); dump();
-mov (ecx, ptr[rdi+r11*2+1]); dump();
-mov (ecx, ptr[rdi+r11*2+1000]); dump();
-mov (ecx, ptr[rdi+r11*2-1]); dump();
-mov (ecx, ptr[rdi+r11*2-1000]); dump();
-mov (ecx, ptr[rdi+r11*4+0]); dump();
-mov (ecx, ptr[rdi+r11*4+1]); dump();
-mov (ecx, ptr[rdi+r11*4+1000]); dump();
-mov (ecx, ptr[rdi+r11*4-1]); dump();
-mov (ecx, ptr[rdi+r11*4-1000]); dump();
-mov (ecx, ptr[rdi+r11*8+0]); dump();
-mov (ecx, ptr[rdi+r11*8+1]); dump();
-mov (ecx, ptr[rdi+r11*8+1000]); dump();
-mov (ecx, ptr[rdi+r11*8-1]); dump();
-mov (ecx, ptr[rdi+r11*8-1000]); dump();
-mov (ecx, ptr[rdi+r12+0]); dump();
-mov (ecx, ptr[rdi+r12+1]); dump();
-mov (ecx, ptr[rdi+r12+1000]); dump();
-mov (ecx, ptr[rdi+r12-1]); dump();
-mov (ecx, ptr[rdi+r12-1000]); dump();
-mov (ecx, ptr[rdi+r12*1+0]); dump();
-mov (ecx, ptr[rdi+r12*1+1]); dump();
-mov (ecx, ptr[rdi+r12*1+1000]); dump();
-mov (ecx, ptr[rdi+r12*1-1]); dump();
-mov (ecx, ptr[rdi+r12*1-1000]); dump();
-mov (ecx, ptr[rdi+r12*2+0]); dump();
-mov (ecx, ptr[rdi+r12*2+1]); dump();
-mov (ecx, ptr[rdi+r12*2+1000]); dump();
-mov (ecx, ptr[rdi+r12*2-1]); dump();
-mov (ecx, ptr[rdi+r12*2-1000]); dump();
-mov (ecx, ptr[rdi+r12*4+0]); dump();
-mov (ecx, ptr[rdi+r12*4+1]); dump();
-mov (ecx, ptr[rdi+r12*4+1000]); dump();
-mov (ecx, ptr[rdi+r12*4-1]); dump();
-mov (ecx, ptr[rdi+r12*4-1000]); dump();
-mov (ecx, ptr[rdi+r12*8+0]); dump();
-mov (ecx, ptr[rdi+r12*8+1]); dump();
-mov (ecx, ptr[rdi+r12*8+1000]); dump();
-mov (ecx, ptr[rdi+r12*8-1]); dump();
-mov (ecx, ptr[rdi+r12*8-1000]); dump();
-}
-    void gen29(){
-mov (ecx, ptr[rdi+r13+0]); dump();
-mov (ecx, ptr[rdi+r13+1]); dump();
-mov (ecx, ptr[rdi+r13+1000]); dump();
-mov (ecx, ptr[rdi+r13-1]); dump();
-mov (ecx, ptr[rdi+r13-1000]); dump();
-mov (ecx, ptr[rdi+r13*1+0]); dump();
-mov (ecx, ptr[rdi+r13*1+1]); dump();
-mov (ecx, ptr[rdi+r13*1+1000]); dump();
-mov (ecx, ptr[rdi+r13*1-1]); dump();
-mov (ecx, ptr[rdi+r13*1-1000]); dump();
-mov (ecx, ptr[rdi+r13*2+0]); dump();
-mov (ecx, ptr[rdi+r13*2+1]); dump();
-mov (ecx, ptr[rdi+r13*2+1000]); dump();
-mov (ecx, ptr[rdi+r13*2-1]); dump();
-mov (ecx, ptr[rdi+r13*2-1000]); dump();
-mov (ecx, ptr[rdi+r13*4+0]); dump();
-mov (ecx, ptr[rdi+r13*4+1]); dump();
-mov (ecx, ptr[rdi+r13*4+1000]); dump();
-mov (ecx, ptr[rdi+r13*4-1]); dump();
-mov (ecx, ptr[rdi+r13*4-1000]); dump();
-mov (ecx, ptr[rdi+r13*8+0]); dump();
-mov (ecx, ptr[rdi+r13*8+1]); dump();
-mov (ecx, ptr[rdi+r13*8+1000]); dump();
-mov (ecx, ptr[rdi+r13*8-1]); dump();
-mov (ecx, ptr[rdi+r13*8-1000]); dump();
-mov (ecx, ptr[rdi+r14+0]); dump();
-mov (ecx, ptr[rdi+r14+1]); dump();
-mov (ecx, ptr[rdi+r14+1000]); dump();
-mov (ecx, ptr[rdi+r14-1]); dump();
-mov (ecx, ptr[rdi+r14-1000]); dump();
-mov (ecx, ptr[rdi+r14*1+0]); dump();
-mov (ecx, ptr[rdi+r14*1+1]); dump();
-mov (ecx, ptr[rdi+r14*1+1000]); dump();
-mov (ecx, ptr[rdi+r14*1-1]); dump();
-mov (ecx, ptr[rdi+r14*1-1000]); dump();
-mov (ecx, ptr[rdi+r14*2+0]); dump();
-mov (ecx, ptr[rdi+r14*2+1]); dump();
-mov (ecx, ptr[rdi+r14*2+1000]); dump();
-mov (ecx, ptr[rdi+r14*2-1]); dump();
-mov (ecx, ptr[rdi+r14*2-1000]); dump();
-mov (ecx, ptr[rdi+r14*4+0]); dump();
-mov (ecx, ptr[rdi+r14*4+1]); dump();
-mov (ecx, ptr[rdi+r14*4+1000]); dump();
-mov (ecx, ptr[rdi+r14*4-1]); dump();
-mov (ecx, ptr[rdi+r14*4-1000]); dump();
-mov (ecx, ptr[rdi+r14*8+0]); dump();
-mov (ecx, ptr[rdi+r14*8+1]); dump();
-mov (ecx, ptr[rdi+r14*8+1000]); dump();
-mov (ecx, ptr[rdi+r14*8-1]); dump();
-mov (ecx, ptr[rdi+r14*8-1000]); dump();
-mov (ecx, ptr[rdi+r15+0]); dump();
-mov (ecx, ptr[rdi+r15+1]); dump();
-mov (ecx, ptr[rdi+r15+1000]); dump();
-mov (ecx, ptr[rdi+r15-1]); dump();
-mov (ecx, ptr[rdi+r15-1000]); dump();
-mov (ecx, ptr[rdi+r15*1+0]); dump();
-mov (ecx, ptr[rdi+r15*1+1]); dump();
-mov (ecx, ptr[rdi+r15*1+1000]); dump();
-mov (ecx, ptr[rdi+r15*1-1]); dump();
-mov (ecx, ptr[rdi+r15*1-1000]); dump();
-mov (ecx, ptr[rdi+r15*2+0]); dump();
-mov (ecx, ptr[rdi+r15*2+1]); dump();
-mov (ecx, ptr[rdi+r15*2+1000]); dump();
-mov (ecx, ptr[rdi+r15*2-1]); dump();
-mov (ecx, ptr[rdi+r15*2-1000]); dump();
-mov (ecx, ptr[rdi+r15*4+0]); dump();
-mov (ecx, ptr[rdi+r15*4+1]); dump();
-mov (ecx, ptr[rdi+r15*4+1000]); dump();
-mov (ecx, ptr[rdi+r15*4-1]); dump();
-mov (ecx, ptr[rdi+r15*4-1000]); dump();
-mov (ecx, ptr[rdi+r15*8+0]); dump();
-mov (ecx, ptr[rdi+r15*8+1]); dump();
-mov (ecx, ptr[rdi+r15*8+1000]); dump();
-mov (ecx, ptr[rdi+r15*8-1]); dump();
-mov (ecx, ptr[rdi+r15*8-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-}
-    void gen30(){
-mov (ecx, ptr[r9+rax+0]); dump();
-mov (ecx, ptr[r9+rax+1]); dump();
-mov (ecx, ptr[r9+rax+1000]); dump();
-mov (ecx, ptr[r9+rax-1]); dump();
-mov (ecx, ptr[r9+rax-1000]); dump();
-mov (ecx, ptr[r9+rax*1+0]); dump();
-mov (ecx, ptr[r9+rax*1+1]); dump();
-mov (ecx, ptr[r9+rax*1+1000]); dump();
-mov (ecx, ptr[r9+rax*1-1]); dump();
-mov (ecx, ptr[r9+rax*1-1000]); dump();
-mov (ecx, ptr[r9+rax*2+0]); dump();
-mov (ecx, ptr[r9+rax*2+1]); dump();
-mov (ecx, ptr[r9+rax*2+1000]); dump();
-mov (ecx, ptr[r9+rax*2-1]); dump();
-mov (ecx, ptr[r9+rax*2-1000]); dump();
-mov (ecx, ptr[r9+rax*4+0]); dump();
-mov (ecx, ptr[r9+rax*4+1]); dump();
-mov (ecx, ptr[r9+rax*4+1000]); dump();
-mov (ecx, ptr[r9+rax*4-1]); dump();
-mov (ecx, ptr[r9+rax*4-1000]); dump();
-mov (ecx, ptr[r9+rax*8+0]); dump();
-mov (ecx, ptr[r9+rax*8+1]); dump();
-mov (ecx, ptr[r9+rax*8+1000]); dump();
-mov (ecx, ptr[r9+rax*8-1]); dump();
-mov (ecx, ptr[r9+rax*8-1000]); dump();
-mov (ecx, ptr[r9+rcx+0]); dump();
-mov (ecx, ptr[r9+rcx+1]); dump();
-mov (ecx, ptr[r9+rcx+1000]); dump();
-mov (ecx, ptr[r9+rcx-1]); dump();
-mov (ecx, ptr[r9+rcx-1000]); dump();
-mov (ecx, ptr[r9+rcx*1+0]); dump();
-mov (ecx, ptr[r9+rcx*1+1]); dump();
-mov (ecx, ptr[r9+rcx*1+1000]); dump();
-mov (ecx, ptr[r9+rcx*1-1]); dump();
-mov (ecx, ptr[r9+rcx*1-1000]); dump();
-mov (ecx, ptr[r9+rcx*2+0]); dump();
-mov (ecx, ptr[r9+rcx*2+1]); dump();
-mov (ecx, ptr[r9+rcx*2+1000]); dump();
-mov (ecx, ptr[r9+rcx*2-1]); dump();
-mov (ecx, ptr[r9+rcx*2-1000]); dump();
-mov (ecx, ptr[r9+rcx*4+0]); dump();
-mov (ecx, ptr[r9+rcx*4+1]); dump();
-mov (ecx, ptr[r9+rcx*4+1000]); dump();
-mov (ecx, ptr[r9+rcx*4-1]); dump();
-mov (ecx, ptr[r9+rcx*4-1000]); dump();
-mov (ecx, ptr[r9+rcx*8+0]); dump();
-mov (ecx, ptr[r9+rcx*8+1]); dump();
-mov (ecx, ptr[r9+rcx*8+1000]); dump();
-mov (ecx, ptr[r9+rcx*8-1]); dump();
-mov (ecx, ptr[r9+rcx*8-1000]); dump();
-mov (ecx, ptr[r9+rdx+0]); dump();
-mov (ecx, ptr[r9+rdx+1]); dump();
-mov (ecx, ptr[r9+rdx+1000]); dump();
-mov (ecx, ptr[r9+rdx-1]); dump();
-mov (ecx, ptr[r9+rdx-1000]); dump();
-mov (ecx, ptr[r9+rdx*1+0]); dump();
-mov (ecx, ptr[r9+rdx*1+1]); dump();
-mov (ecx, ptr[r9+rdx*1+1000]); dump();
-mov (ecx, ptr[r9+rdx*1-1]); dump();
-mov (ecx, ptr[r9+rdx*1-1000]); dump();
-mov (ecx, ptr[r9+rdx*2+0]); dump();
-mov (ecx, ptr[r9+rdx*2+1]); dump();
-mov (ecx, ptr[r9+rdx*2+1000]); dump();
-mov (ecx, ptr[r9+rdx*2-1]); dump();
-mov (ecx, ptr[r9+rdx*2-1000]); dump();
-mov (ecx, ptr[r9+rdx*4+0]); dump();
-mov (ecx, ptr[r9+rdx*4+1]); dump();
-mov (ecx, ptr[r9+rdx*4+1000]); dump();
-mov (ecx, ptr[r9+rdx*4-1]); dump();
-mov (ecx, ptr[r9+rdx*4-1000]); dump();
-mov (ecx, ptr[r9+rdx*8+0]); dump();
-mov (ecx, ptr[r9+rdx*8+1]); dump();
-mov (ecx, ptr[r9+rdx*8+1000]); dump();
-mov (ecx, ptr[r9+rdx*8-1]); dump();
-mov (ecx, ptr[r9+rdx*8-1000]); dump();
-mov (ecx, ptr[r9+rbx+0]); dump();
-mov (ecx, ptr[r9+rbx+1]); dump();
-mov (ecx, ptr[r9+rbx+1000]); dump();
-mov (ecx, ptr[r9+rbx-1]); dump();
-mov (ecx, ptr[r9+rbx-1000]); dump();
-mov (ecx, ptr[r9+rbx*1+0]); dump();
-mov (ecx, ptr[r9+rbx*1+1]); dump();
-mov (ecx, ptr[r9+rbx*1+1000]); dump();
-mov (ecx, ptr[r9+rbx*1-1]); dump();
-mov (ecx, ptr[r9+rbx*1-1000]); dump();
-mov (ecx, ptr[r9+rbx*2+0]); dump();
-mov (ecx, ptr[r9+rbx*2+1]); dump();
-mov (ecx, ptr[r9+rbx*2+1000]); dump();
-mov (ecx, ptr[r9+rbx*2-1]); dump();
-mov (ecx, ptr[r9+rbx*2-1000]); dump();
-mov (ecx, ptr[r9+rbx*4+0]); dump();
-mov (ecx, ptr[r9+rbx*4+1]); dump();
-mov (ecx, ptr[r9+rbx*4+1000]); dump();
-mov (ecx, ptr[r9+rbx*4-1]); dump();
-mov (ecx, ptr[r9+rbx*4-1000]); dump();
-mov (ecx, ptr[r9+rbx*8+0]); dump();
-mov (ecx, ptr[r9+rbx*8+1]); dump();
-mov (ecx, ptr[r9+rbx*8+1000]); dump();
-mov (ecx, ptr[r9+rbx*8-1]); dump();
-mov (ecx, ptr[r9+rbx*8-1000]); dump();
-}
-    void gen31(){
-mov (ecx, ptr[r9+rbp+0]); dump();
-mov (ecx, ptr[r9+rbp+1]); dump();
-mov (ecx, ptr[r9+rbp+1000]); dump();
-mov (ecx, ptr[r9+rbp-1]); dump();
-mov (ecx, ptr[r9+rbp-1000]); dump();
-mov (ecx, ptr[r9+rbp*1+0]); dump();
-mov (ecx, ptr[r9+rbp*1+1]); dump();
-mov (ecx, ptr[r9+rbp*1+1000]); dump();
-mov (ecx, ptr[r9+rbp*1-1]); dump();
-mov (ecx, ptr[r9+rbp*1-1000]); dump();
-mov (ecx, ptr[r9+rbp*2+0]); dump();
-mov (ecx, ptr[r9+rbp*2+1]); dump();
-mov (ecx, ptr[r9+rbp*2+1000]); dump();
-mov (ecx, ptr[r9+rbp*2-1]); dump();
-mov (ecx, ptr[r9+rbp*2-1000]); dump();
-mov (ecx, ptr[r9+rbp*4+0]); dump();
-mov (ecx, ptr[r9+rbp*4+1]); dump();
-mov (ecx, ptr[r9+rbp*4+1000]); dump();
-mov (ecx, ptr[r9+rbp*4-1]); dump();
-mov (ecx, ptr[r9+rbp*4-1000]); dump();
-mov (ecx, ptr[r9+rbp*8+0]); dump();
-mov (ecx, ptr[r9+rbp*8+1]); dump();
-mov (ecx, ptr[r9+rbp*8+1000]); dump();
-mov (ecx, ptr[r9+rbp*8-1]); dump();
-mov (ecx, ptr[r9+rbp*8-1000]); dump();
-mov (ecx, ptr[r9+rsi+0]); dump();
-mov (ecx, ptr[r9+rsi+1]); dump();
-mov (ecx, ptr[r9+rsi+1000]); dump();
-mov (ecx, ptr[r9+rsi-1]); dump();
-mov (ecx, ptr[r9+rsi-1000]); dump();
-mov (ecx, ptr[r9+rsi*1+0]); dump();
-mov (ecx, ptr[r9+rsi*1+1]); dump();
-mov (ecx, ptr[r9+rsi*1+1000]); dump();
-mov (ecx, ptr[r9+rsi*1-1]); dump();
-mov (ecx, ptr[r9+rsi*1-1000]); dump();
-mov (ecx, ptr[r9+rsi*2+0]); dump();
-mov (ecx, ptr[r9+rsi*2+1]); dump();
-mov (ecx, ptr[r9+rsi*2+1000]); dump();
-mov (ecx, ptr[r9+rsi*2-1]); dump();
-mov (ecx, ptr[r9+rsi*2-1000]); dump();
-mov (ecx, ptr[r9+rsi*4+0]); dump();
-mov (ecx, ptr[r9+rsi*4+1]); dump();
-mov (ecx, ptr[r9+rsi*4+1000]); dump();
-mov (ecx, ptr[r9+rsi*4-1]); dump();
-mov (ecx, ptr[r9+rsi*4-1000]); dump();
-mov (ecx, ptr[r9+rsi*8+0]); dump();
-mov (ecx, ptr[r9+rsi*8+1]); dump();
-mov (ecx, ptr[r9+rsi*8+1000]); dump();
-mov (ecx, ptr[r9+rsi*8-1]); dump();
-mov (ecx, ptr[r9+rsi*8-1000]); dump();
-mov (ecx, ptr[r9+rdi+0]); dump();
-mov (ecx, ptr[r9+rdi+1]); dump();
-mov (ecx, ptr[r9+rdi+1000]); dump();
-mov (ecx, ptr[r9+rdi-1]); dump();
-mov (ecx, ptr[r9+rdi-1000]); dump();
-mov (ecx, ptr[r9+rdi*1+0]); dump();
-mov (ecx, ptr[r9+rdi*1+1]); dump();
-mov (ecx, ptr[r9+rdi*1+1000]); dump();
-mov (ecx, ptr[r9+rdi*1-1]); dump();
-mov (ecx, ptr[r9+rdi*1-1000]); dump();
-mov (ecx, ptr[r9+rdi*2+0]); dump();
-mov (ecx, ptr[r9+rdi*2+1]); dump();
-mov (ecx, ptr[r9+rdi*2+1000]); dump();
-mov (ecx, ptr[r9+rdi*2-1]); dump();
-mov (ecx, ptr[r9+rdi*2-1000]); dump();
-mov (ecx, ptr[r9+rdi*4+0]); dump();
-mov (ecx, ptr[r9+rdi*4+1]); dump();
-mov (ecx, ptr[r9+rdi*4+1000]); dump();
-mov (ecx, ptr[r9+rdi*4-1]); dump();
-mov (ecx, ptr[r9+rdi*4-1000]); dump();
-mov (ecx, ptr[r9+rdi*8+0]); dump();
-mov (ecx, ptr[r9+rdi*8+1]); dump();
-mov (ecx, ptr[r9+rdi*8+1000]); dump();
-mov (ecx, ptr[r9+rdi*8-1]); dump();
-mov (ecx, ptr[r9+rdi*8-1000]); dump();
-mov (ecx, ptr[r9+r9+0]); dump();
-mov (ecx, ptr[r9+r9+1]); dump();
-mov (ecx, ptr[r9+r9+1000]); dump();
-mov (ecx, ptr[r9+r9-1]); dump();
-mov (ecx, ptr[r9+r9-1000]); dump();
-mov (ecx, ptr[r9+r9*1+0]); dump();
-mov (ecx, ptr[r9+r9*1+1]); dump();
-mov (ecx, ptr[r9+r9*1+1000]); dump();
-mov (ecx, ptr[r9+r9*1-1]); dump();
-mov (ecx, ptr[r9+r9*1-1000]); dump();
-mov (ecx, ptr[r9+r9*2+0]); dump();
-mov (ecx, ptr[r9+r9*2+1]); dump();
-mov (ecx, ptr[r9+r9*2+1000]); dump();
-mov (ecx, ptr[r9+r9*2-1]); dump();
-mov (ecx, ptr[r9+r9*2-1000]); dump();
-mov (ecx, ptr[r9+r9*4+0]); dump();
-mov (ecx, ptr[r9+r9*4+1]); dump();
-mov (ecx, ptr[r9+r9*4+1000]); dump();
-mov (ecx, ptr[r9+r9*4-1]); dump();
-mov (ecx, ptr[r9+r9*4-1000]); dump();
-mov (ecx, ptr[r9+r9*8+0]); dump();
-mov (ecx, ptr[r9+r9*8+1]); dump();
-mov (ecx, ptr[r9+r9*8+1000]); dump();
-mov (ecx, ptr[r9+r9*8-1]); dump();
-mov (ecx, ptr[r9+r9*8-1000]); dump();
-}
-    void gen32(){
-mov (ecx, ptr[r9+r10+0]); dump();
-mov (ecx, ptr[r9+r10+1]); dump();
-mov (ecx, ptr[r9+r10+1000]); dump();
-mov (ecx, ptr[r9+r10-1]); dump();
-mov (ecx, ptr[r9+r10-1000]); dump();
-mov (ecx, ptr[r9+r10*1+0]); dump();
-mov (ecx, ptr[r9+r10*1+1]); dump();
-mov (ecx, ptr[r9+r10*1+1000]); dump();
-mov (ecx, ptr[r9+r10*1-1]); dump();
-mov (ecx, ptr[r9+r10*1-1000]); dump();
-mov (ecx, ptr[r9+r10*2+0]); dump();
-mov (ecx, ptr[r9+r10*2+1]); dump();
-mov (ecx, ptr[r9+r10*2+1000]); dump();
-mov (ecx, ptr[r9+r10*2-1]); dump();
-mov (ecx, ptr[r9+r10*2-1000]); dump();
-mov (ecx, ptr[r9+r10*4+0]); dump();
-mov (ecx, ptr[r9+r10*4+1]); dump();
-mov (ecx, ptr[r9+r10*4+1000]); dump();
-mov (ecx, ptr[r9+r10*4-1]); dump();
-mov (ecx, ptr[r9+r10*4-1000]); dump();
-mov (ecx, ptr[r9+r10*8+0]); dump();
-mov (ecx, ptr[r9+r10*8+1]); dump();
-mov (ecx, ptr[r9+r10*8+1000]); dump();
-mov (ecx, ptr[r9+r10*8-1]); dump();
-mov (ecx, ptr[r9+r10*8-1000]); dump();
-mov (ecx, ptr[r9+r11+0]); dump();
-mov (ecx, ptr[r9+r11+1]); dump();
-mov (ecx, ptr[r9+r11+1000]); dump();
-mov (ecx, ptr[r9+r11-1]); dump();
-mov (ecx, ptr[r9+r11-1000]); dump();
-mov (ecx, ptr[r9+r11*1+0]); dump();
-mov (ecx, ptr[r9+r11*1+1]); dump();
-mov (ecx, ptr[r9+r11*1+1000]); dump();
-mov (ecx, ptr[r9+r11*1-1]); dump();
-mov (ecx, ptr[r9+r11*1-1000]); dump();
-mov (ecx, ptr[r9+r11*2+0]); dump();
-mov (ecx, ptr[r9+r11*2+1]); dump();
-mov (ecx, ptr[r9+r11*2+1000]); dump();
-mov (ecx, ptr[r9+r11*2-1]); dump();
-mov (ecx, ptr[r9+r11*2-1000]); dump();
-mov (ecx, ptr[r9+r11*4+0]); dump();
-mov (ecx, ptr[r9+r11*4+1]); dump();
-mov (ecx, ptr[r9+r11*4+1000]); dump();
-mov (ecx, ptr[r9+r11*4-1]); dump();
-mov (ecx, ptr[r9+r11*4-1000]); dump();
-mov (ecx, ptr[r9+r11*8+0]); dump();
-mov (ecx, ptr[r9+r11*8+1]); dump();
-mov (ecx, ptr[r9+r11*8+1000]); dump();
-mov (ecx, ptr[r9+r11*8-1]); dump();
-mov (ecx, ptr[r9+r11*8-1000]); dump();
-mov (ecx, ptr[r9+r12+0]); dump();
-mov (ecx, ptr[r9+r12+1]); dump();
-mov (ecx, ptr[r9+r12+1000]); dump();
-mov (ecx, ptr[r9+r12-1]); dump();
-mov (ecx, ptr[r9+r12-1000]); dump();
-mov (ecx, ptr[r9+r12*1+0]); dump();
-mov (ecx, ptr[r9+r12*1+1]); dump();
-mov (ecx, ptr[r9+r12*1+1000]); dump();
-mov (ecx, ptr[r9+r12*1-1]); dump();
-mov (ecx, ptr[r9+r12*1-1000]); dump();
-mov (ecx, ptr[r9+r12*2+0]); dump();
-mov (ecx, ptr[r9+r12*2+1]); dump();
-mov (ecx, ptr[r9+r12*2+1000]); dump();
-mov (ecx, ptr[r9+r12*2-1]); dump();
-mov (ecx, ptr[r9+r12*2-1000]); dump();
-mov (ecx, ptr[r9+r12*4+0]); dump();
-mov (ecx, ptr[r9+r12*4+1]); dump();
-mov (ecx, ptr[r9+r12*4+1000]); dump();
-mov (ecx, ptr[r9+r12*4-1]); dump();
-mov (ecx, ptr[r9+r12*4-1000]); dump();
-mov (ecx, ptr[r9+r12*8+0]); dump();
-mov (ecx, ptr[r9+r12*8+1]); dump();
-mov (ecx, ptr[r9+r12*8+1000]); dump();
-mov (ecx, ptr[r9+r12*8-1]); dump();
-mov (ecx, ptr[r9+r12*8-1000]); dump();
-mov (ecx, ptr[r9+r13+0]); dump();
-mov (ecx, ptr[r9+r13+1]); dump();
-mov (ecx, ptr[r9+r13+1000]); dump();
-mov (ecx, ptr[r9+r13-1]); dump();
-mov (ecx, ptr[r9+r13-1000]); dump();
-mov (ecx, ptr[r9+r13*1+0]); dump();
-mov (ecx, ptr[r9+r13*1+1]); dump();
-mov (ecx, ptr[r9+r13*1+1000]); dump();
-mov (ecx, ptr[r9+r13*1-1]); dump();
-mov (ecx, ptr[r9+r13*1-1000]); dump();
-mov (ecx, ptr[r9+r13*2+0]); dump();
-mov (ecx, ptr[r9+r13*2+1]); dump();
-mov (ecx, ptr[r9+r13*2+1000]); dump();
-mov (ecx, ptr[r9+r13*2-1]); dump();
-mov (ecx, ptr[r9+r13*2-1000]); dump();
-mov (ecx, ptr[r9+r13*4+0]); dump();
-mov (ecx, ptr[r9+r13*4+1]); dump();
-mov (ecx, ptr[r9+r13*4+1000]); dump();
-mov (ecx, ptr[r9+r13*4-1]); dump();
-mov (ecx, ptr[r9+r13*4-1000]); dump();
-mov (ecx, ptr[r9+r13*8+0]); dump();
-mov (ecx, ptr[r9+r13*8+1]); dump();
-mov (ecx, ptr[r9+r13*8+1000]); dump();
-mov (ecx, ptr[r9+r13*8-1]); dump();
-mov (ecx, ptr[r9+r13*8-1000]); dump();
-}
-    void gen33(){
-mov (ecx, ptr[r9+r14+0]); dump();
-mov (ecx, ptr[r9+r14+1]); dump();
-mov (ecx, ptr[r9+r14+1000]); dump();
-mov (ecx, ptr[r9+r14-1]); dump();
-mov (ecx, ptr[r9+r14-1000]); dump();
-mov (ecx, ptr[r9+r14*1+0]); dump();
-mov (ecx, ptr[r9+r14*1+1]); dump();
-mov (ecx, ptr[r9+r14*1+1000]); dump();
-mov (ecx, ptr[r9+r14*1-1]); dump();
-mov (ecx, ptr[r9+r14*1-1000]); dump();
-mov (ecx, ptr[r9+r14*2+0]); dump();
-mov (ecx, ptr[r9+r14*2+1]); dump();
-mov (ecx, ptr[r9+r14*2+1000]); dump();
-mov (ecx, ptr[r9+r14*2-1]); dump();
-mov (ecx, ptr[r9+r14*2-1000]); dump();
-mov (ecx, ptr[r9+r14*4+0]); dump();
-mov (ecx, ptr[r9+r14*4+1]); dump();
-mov (ecx, ptr[r9+r14*4+1000]); dump();
-mov (ecx, ptr[r9+r14*4-1]); dump();
-mov (ecx, ptr[r9+r14*4-1000]); dump();
-mov (ecx, ptr[r9+r14*8+0]); dump();
-mov (ecx, ptr[r9+r14*8+1]); dump();
-mov (ecx, ptr[r9+r14*8+1000]); dump();
-mov (ecx, ptr[r9+r14*8-1]); dump();
-mov (ecx, ptr[r9+r14*8-1000]); dump();
-mov (ecx, ptr[r9+r15+0]); dump();
-mov (ecx, ptr[r9+r15+1]); dump();
-mov (ecx, ptr[r9+r15+1000]); dump();
-mov (ecx, ptr[r9+r15-1]); dump();
-mov (ecx, ptr[r9+r15-1000]); dump();
-mov (ecx, ptr[r9+r15*1+0]); dump();
-mov (ecx, ptr[r9+r15*1+1]); dump();
-mov (ecx, ptr[r9+r15*1+1000]); dump();
-mov (ecx, ptr[r9+r15*1-1]); dump();
-mov (ecx, ptr[r9+r15*1-1000]); dump();
-mov (ecx, ptr[r9+r15*2+0]); dump();
-mov (ecx, ptr[r9+r15*2+1]); dump();
-mov (ecx, ptr[r9+r15*2+1000]); dump();
-mov (ecx, ptr[r9+r15*2-1]); dump();
-mov (ecx, ptr[r9+r15*2-1000]); dump();
-mov (ecx, ptr[r9+r15*4+0]); dump();
-mov (ecx, ptr[r9+r15*4+1]); dump();
-mov (ecx, ptr[r9+r15*4+1000]); dump();
-mov (ecx, ptr[r9+r15*4-1]); dump();
-mov (ecx, ptr[r9+r15*4-1000]); dump();
-mov (ecx, ptr[r9+r15*8+0]); dump();
-mov (ecx, ptr[r9+r15*8+1]); dump();
-mov (ecx, ptr[r9+r15*8+1000]); dump();
-mov (ecx, ptr[r9+r15*8-1]); dump();
-mov (ecx, ptr[r9+r15*8-1000]); dump();
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r10+rax+0]); dump();
-mov (ecx, ptr[r10+rax+1]); dump();
-mov (ecx, ptr[r10+rax+1000]); dump();
-mov (ecx, ptr[r10+rax-1]); dump();
-mov (ecx, ptr[r10+rax-1000]); dump();
-mov (ecx, ptr[r10+rax*1+0]); dump();
-mov (ecx, ptr[r10+rax*1+1]); dump();
-mov (ecx, ptr[r10+rax*1+1000]); dump();
-mov (ecx, ptr[r10+rax*1-1]); dump();
-mov (ecx, ptr[r10+rax*1-1000]); dump();
-mov (ecx, ptr[r10+rax*2+0]); dump();
-mov (ecx, ptr[r10+rax*2+1]); dump();
-mov (ecx, ptr[r10+rax*2+1000]); dump();
-mov (ecx, ptr[r10+rax*2-1]); dump();
-mov (ecx, ptr[r10+rax*2-1000]); dump();
-mov (ecx, ptr[r10+rax*4+0]); dump();
-mov (ecx, ptr[r10+rax*4+1]); dump();
-mov (ecx, ptr[r10+rax*4+1000]); dump();
-mov (ecx, ptr[r10+rax*4-1]); dump();
-mov (ecx, ptr[r10+rax*4-1000]); dump();
-mov (ecx, ptr[r10+rax*8+0]); dump();
-mov (ecx, ptr[r10+rax*8+1]); dump();
-mov (ecx, ptr[r10+rax*8+1000]); dump();
-mov (ecx, ptr[r10+rax*8-1]); dump();
-mov (ecx, ptr[r10+rax*8-1000]); dump();
-}
-    void gen34(){
-mov (ecx, ptr[r10+rcx+0]); dump();
-mov (ecx, ptr[r10+rcx+1]); dump();
-mov (ecx, ptr[r10+rcx+1000]); dump();
-mov (ecx, ptr[r10+rcx-1]); dump();
-mov (ecx, ptr[r10+rcx-1000]); dump();
-mov (ecx, ptr[r10+rcx*1+0]); dump();
-mov (ecx, ptr[r10+rcx*1+1]); dump();
-mov (ecx, ptr[r10+rcx*1+1000]); dump();
-mov (ecx, ptr[r10+rcx*1-1]); dump();
-mov (ecx, ptr[r10+rcx*1-1000]); dump();
-mov (ecx, ptr[r10+rcx*2+0]); dump();
-mov (ecx, ptr[r10+rcx*2+1]); dump();
-mov (ecx, ptr[r10+rcx*2+1000]); dump();
-mov (ecx, ptr[r10+rcx*2-1]); dump();
-mov (ecx, ptr[r10+rcx*2-1000]); dump();
-mov (ecx, ptr[r10+rcx*4+0]); dump();
-mov (ecx, ptr[r10+rcx*4+1]); dump();
-mov (ecx, ptr[r10+rcx*4+1000]); dump();
-mov (ecx, ptr[r10+rcx*4-1]); dump();
-mov (ecx, ptr[r10+rcx*4-1000]); dump();
-mov (ecx, ptr[r10+rcx*8+0]); dump();
-mov (ecx, ptr[r10+rcx*8+1]); dump();
-mov (ecx, ptr[r10+rcx*8+1000]); dump();
-mov (ecx, ptr[r10+rcx*8-1]); dump();
-mov (ecx, ptr[r10+rcx*8-1000]); dump();
-mov (ecx, ptr[r10+rdx+0]); dump();
-mov (ecx, ptr[r10+rdx+1]); dump();
-mov (ecx, ptr[r10+rdx+1000]); dump();
-mov (ecx, ptr[r10+rdx-1]); dump();
-mov (ecx, ptr[r10+rdx-1000]); dump();
-mov (ecx, ptr[r10+rdx*1+0]); dump();
-mov (ecx, ptr[r10+rdx*1+1]); dump();
-mov (ecx, ptr[r10+rdx*1+1000]); dump();
-mov (ecx, ptr[r10+rdx*1-1]); dump();
-mov (ecx, ptr[r10+rdx*1-1000]); dump();
-mov (ecx, ptr[r10+rdx*2+0]); dump();
-mov (ecx, ptr[r10+rdx*2+1]); dump();
-mov (ecx, ptr[r10+rdx*2+1000]); dump();
-mov (ecx, ptr[r10+rdx*2-1]); dump();
-mov (ecx, ptr[r10+rdx*2-1000]); dump();
-mov (ecx, ptr[r10+rdx*4+0]); dump();
-mov (ecx, ptr[r10+rdx*4+1]); dump();
-mov (ecx, ptr[r10+rdx*4+1000]); dump();
-mov (ecx, ptr[r10+rdx*4-1]); dump();
-mov (ecx, ptr[r10+rdx*4-1000]); dump();
-mov (ecx, ptr[r10+rdx*8+0]); dump();
-mov (ecx, ptr[r10+rdx*8+1]); dump();
-mov (ecx, ptr[r10+rdx*8+1000]); dump();
-mov (ecx, ptr[r10+rdx*8-1]); dump();
-mov (ecx, ptr[r10+rdx*8-1000]); dump();
-mov (ecx, ptr[r10+rbx+0]); dump();
-mov (ecx, ptr[r10+rbx+1]); dump();
-mov (ecx, ptr[r10+rbx+1000]); dump();
-mov (ecx, ptr[r10+rbx-1]); dump();
-mov (ecx, ptr[r10+rbx-1000]); dump();
-mov (ecx, ptr[r10+rbx*1+0]); dump();
-mov (ecx, ptr[r10+rbx*1+1]); dump();
-mov (ecx, ptr[r10+rbx*1+1000]); dump();
-mov (ecx, ptr[r10+rbx*1-1]); dump();
-mov (ecx, ptr[r10+rbx*1-1000]); dump();
-mov (ecx, ptr[r10+rbx*2+0]); dump();
-mov (ecx, ptr[r10+rbx*2+1]); dump();
-mov (ecx, ptr[r10+rbx*2+1000]); dump();
-mov (ecx, ptr[r10+rbx*2-1]); dump();
-mov (ecx, ptr[r10+rbx*2-1000]); dump();
-mov (ecx, ptr[r10+rbx*4+0]); dump();
-mov (ecx, ptr[r10+rbx*4+1]); dump();
-mov (ecx, ptr[r10+rbx*4+1000]); dump();
-mov (ecx, ptr[r10+rbx*4-1]); dump();
-mov (ecx, ptr[r10+rbx*4-1000]); dump();
-mov (ecx, ptr[r10+rbx*8+0]); dump();
-mov (ecx, ptr[r10+rbx*8+1]); dump();
-mov (ecx, ptr[r10+rbx*8+1000]); dump();
-mov (ecx, ptr[r10+rbx*8-1]); dump();
-mov (ecx, ptr[r10+rbx*8-1000]); dump();
-mov (ecx, ptr[r10+rbp+0]); dump();
-mov (ecx, ptr[r10+rbp+1]); dump();
-mov (ecx, ptr[r10+rbp+1000]); dump();
-mov (ecx, ptr[r10+rbp-1]); dump();
-mov (ecx, ptr[r10+rbp-1000]); dump();
-mov (ecx, ptr[r10+rbp*1+0]); dump();
-mov (ecx, ptr[r10+rbp*1+1]); dump();
-mov (ecx, ptr[r10+rbp*1+1000]); dump();
-mov (ecx, ptr[r10+rbp*1-1]); dump();
-mov (ecx, ptr[r10+rbp*1-1000]); dump();
-mov (ecx, ptr[r10+rbp*2+0]); dump();
-mov (ecx, ptr[r10+rbp*2+1]); dump();
-mov (ecx, ptr[r10+rbp*2+1000]); dump();
-mov (ecx, ptr[r10+rbp*2-1]); dump();
-mov (ecx, ptr[r10+rbp*2-1000]); dump();
-mov (ecx, ptr[r10+rbp*4+0]); dump();
-mov (ecx, ptr[r10+rbp*4+1]); dump();
-mov (ecx, ptr[r10+rbp*4+1000]); dump();
-mov (ecx, ptr[r10+rbp*4-1]); dump();
-mov (ecx, ptr[r10+rbp*4-1000]); dump();
-mov (ecx, ptr[r10+rbp*8+0]); dump();
-mov (ecx, ptr[r10+rbp*8+1]); dump();
-mov (ecx, ptr[r10+rbp*8+1000]); dump();
-mov (ecx, ptr[r10+rbp*8-1]); dump();
-mov (ecx, ptr[r10+rbp*8-1000]); dump();
-}
-    void gen35(){
-mov (ecx, ptr[r10+rsi+0]); dump();
-mov (ecx, ptr[r10+rsi+1]); dump();
-mov (ecx, ptr[r10+rsi+1000]); dump();
-mov (ecx, ptr[r10+rsi-1]); dump();
-mov (ecx, ptr[r10+rsi-1000]); dump();
-mov (ecx, ptr[r10+rsi*1+0]); dump();
-mov (ecx, ptr[r10+rsi*1+1]); dump();
-mov (ecx, ptr[r10+rsi*1+1000]); dump();
-mov (ecx, ptr[r10+rsi*1-1]); dump();
-mov (ecx, ptr[r10+rsi*1-1000]); dump();
-mov (ecx, ptr[r10+rsi*2+0]); dump();
-mov (ecx, ptr[r10+rsi*2+1]); dump();
-mov (ecx, ptr[r10+rsi*2+1000]); dump();
-mov (ecx, ptr[r10+rsi*2-1]); dump();
-mov (ecx, ptr[r10+rsi*2-1000]); dump();
-mov (ecx, ptr[r10+rsi*4+0]); dump();
-mov (ecx, ptr[r10+rsi*4+1]); dump();
-mov (ecx, ptr[r10+rsi*4+1000]); dump();
-mov (ecx, ptr[r10+rsi*4-1]); dump();
-mov (ecx, ptr[r10+rsi*4-1000]); dump();
-mov (ecx, ptr[r10+rsi*8+0]); dump();
-mov (ecx, ptr[r10+rsi*8+1]); dump();
-mov (ecx, ptr[r10+rsi*8+1000]); dump();
-mov (ecx, ptr[r10+rsi*8-1]); dump();
-mov (ecx, ptr[r10+rsi*8-1000]); dump();
-mov (ecx, ptr[r10+rdi+0]); dump();
-mov (ecx, ptr[r10+rdi+1]); dump();
-mov (ecx, ptr[r10+rdi+1000]); dump();
-mov (ecx, ptr[r10+rdi-1]); dump();
-mov (ecx, ptr[r10+rdi-1000]); dump();
-mov (ecx, ptr[r10+rdi*1+0]); dump();
-mov (ecx, ptr[r10+rdi*1+1]); dump();
-mov (ecx, ptr[r10+rdi*1+1000]); dump();
-mov (ecx, ptr[r10+rdi*1-1]); dump();
-mov (ecx, ptr[r10+rdi*1-1000]); dump();
-mov (ecx, ptr[r10+rdi*2+0]); dump();
-mov (ecx, ptr[r10+rdi*2+1]); dump();
-mov (ecx, ptr[r10+rdi*2+1000]); dump();
-mov (ecx, ptr[r10+rdi*2-1]); dump();
-mov (ecx, ptr[r10+rdi*2-1000]); dump();
-mov (ecx, ptr[r10+rdi*4+0]); dump();
-mov (ecx, ptr[r10+rdi*4+1]); dump();
-mov (ecx, ptr[r10+rdi*4+1000]); dump();
-mov (ecx, ptr[r10+rdi*4-1]); dump();
-mov (ecx, ptr[r10+rdi*4-1000]); dump();
-mov (ecx, ptr[r10+rdi*8+0]); dump();
-mov (ecx, ptr[r10+rdi*8+1]); dump();
-mov (ecx, ptr[r10+rdi*8+1000]); dump();
-mov (ecx, ptr[r10+rdi*8-1]); dump();
-mov (ecx, ptr[r10+rdi*8-1000]); dump();
-mov (ecx, ptr[r10+r9+0]); dump();
-mov (ecx, ptr[r10+r9+1]); dump();
-mov (ecx, ptr[r10+r9+1000]); dump();
-mov (ecx, ptr[r10+r9-1]); dump();
-mov (ecx, ptr[r10+r9-1000]); dump();
-mov (ecx, ptr[r10+r9*1+0]); dump();
-mov (ecx, ptr[r10+r9*1+1]); dump();
-mov (ecx, ptr[r10+r9*1+1000]); dump();
-mov (ecx, ptr[r10+r9*1-1]); dump();
-mov (ecx, ptr[r10+r9*1-1000]); dump();
-mov (ecx, ptr[r10+r9*2+0]); dump();
-mov (ecx, ptr[r10+r9*2+1]); dump();
-mov (ecx, ptr[r10+r9*2+1000]); dump();
-mov (ecx, ptr[r10+r9*2-1]); dump();
-mov (ecx, ptr[r10+r9*2-1000]); dump();
-mov (ecx, ptr[r10+r9*4+0]); dump();
-mov (ecx, ptr[r10+r9*4+1]); dump();
-mov (ecx, ptr[r10+r9*4+1000]); dump();
-mov (ecx, ptr[r10+r9*4-1]); dump();
-mov (ecx, ptr[r10+r9*4-1000]); dump();
-mov (ecx, ptr[r10+r9*8+0]); dump();
-mov (ecx, ptr[r10+r9*8+1]); dump();
-mov (ecx, ptr[r10+r9*8+1000]); dump();
-mov (ecx, ptr[r10+r9*8-1]); dump();
-mov (ecx, ptr[r10+r9*8-1000]); dump();
-mov (ecx, ptr[r10+r10+0]); dump();
-mov (ecx, ptr[r10+r10+1]); dump();
-mov (ecx, ptr[r10+r10+1000]); dump();
-mov (ecx, ptr[r10+r10-1]); dump();
-mov (ecx, ptr[r10+r10-1000]); dump();
-mov (ecx, ptr[r10+r10*1+0]); dump();
-mov (ecx, ptr[r10+r10*1+1]); dump();
-mov (ecx, ptr[r10+r10*1+1000]); dump();
-mov (ecx, ptr[r10+r10*1-1]); dump();
-mov (ecx, ptr[r10+r10*1-1000]); dump();
-mov (ecx, ptr[r10+r10*2+0]); dump();
-mov (ecx, ptr[r10+r10*2+1]); dump();
-mov (ecx, ptr[r10+r10*2+1000]); dump();
-mov (ecx, ptr[r10+r10*2-1]); dump();
-mov (ecx, ptr[r10+r10*2-1000]); dump();
-mov (ecx, ptr[r10+r10*4+0]); dump();
-mov (ecx, ptr[r10+r10*4+1]); dump();
-mov (ecx, ptr[r10+r10*4+1000]); dump();
-mov (ecx, ptr[r10+r10*4-1]); dump();
-mov (ecx, ptr[r10+r10*4-1000]); dump();
-mov (ecx, ptr[r10+r10*8+0]); dump();
-mov (ecx, ptr[r10+r10*8+1]); dump();
-mov (ecx, ptr[r10+r10*8+1000]); dump();
-mov (ecx, ptr[r10+r10*8-1]); dump();
-mov (ecx, ptr[r10+r10*8-1000]); dump();
-}
-    void gen36(){
-mov (ecx, ptr[r10+r11+0]); dump();
-mov (ecx, ptr[r10+r11+1]); dump();
-mov (ecx, ptr[r10+r11+1000]); dump();
-mov (ecx, ptr[r10+r11-1]); dump();
-mov (ecx, ptr[r10+r11-1000]); dump();
-mov (ecx, ptr[r10+r11*1+0]); dump();
-mov (ecx, ptr[r10+r11*1+1]); dump();
-mov (ecx, ptr[r10+r11*1+1000]); dump();
-mov (ecx, ptr[r10+r11*1-1]); dump();
-mov (ecx, ptr[r10+r11*1-1000]); dump();
-mov (ecx, ptr[r10+r11*2+0]); dump();
-mov (ecx, ptr[r10+r11*2+1]); dump();
-mov (ecx, ptr[r10+r11*2+1000]); dump();
-mov (ecx, ptr[r10+r11*2-1]); dump();
-mov (ecx, ptr[r10+r11*2-1000]); dump();
-mov (ecx, ptr[r10+r11*4+0]); dump();
-mov (ecx, ptr[r10+r11*4+1]); dump();
-mov (ecx, ptr[r10+r11*4+1000]); dump();
-mov (ecx, ptr[r10+r11*4-1]); dump();
-mov (ecx, ptr[r10+r11*4-1000]); dump();
-mov (ecx, ptr[r10+r11*8+0]); dump();
-mov (ecx, ptr[r10+r11*8+1]); dump();
-mov (ecx, ptr[r10+r11*8+1000]); dump();
-mov (ecx, ptr[r10+r11*8-1]); dump();
-mov (ecx, ptr[r10+r11*8-1000]); dump();
-mov (ecx, ptr[r10+r12+0]); dump();
-mov (ecx, ptr[r10+r12+1]); dump();
-mov (ecx, ptr[r10+r12+1000]); dump();
-mov (ecx, ptr[r10+r12-1]); dump();
-mov (ecx, ptr[r10+r12-1000]); dump();
-mov (ecx, ptr[r10+r12*1+0]); dump();
-mov (ecx, ptr[r10+r12*1+1]); dump();
-mov (ecx, ptr[r10+r12*1+1000]); dump();
-mov (ecx, ptr[r10+r12*1-1]); dump();
-mov (ecx, ptr[r10+r12*1-1000]); dump();
-mov (ecx, ptr[r10+r12*2+0]); dump();
-mov (ecx, ptr[r10+r12*2+1]); dump();
-mov (ecx, ptr[r10+r12*2+1000]); dump();
-mov (ecx, ptr[r10+r12*2-1]); dump();
-mov (ecx, ptr[r10+r12*2-1000]); dump();
-mov (ecx, ptr[r10+r12*4+0]); dump();
-mov (ecx, ptr[r10+r12*4+1]); dump();
-mov (ecx, ptr[r10+r12*4+1000]); dump();
-mov (ecx, ptr[r10+r12*4-1]); dump();
-mov (ecx, ptr[r10+r12*4-1000]); dump();
-mov (ecx, ptr[r10+r12*8+0]); dump();
-mov (ecx, ptr[r10+r12*8+1]); dump();
-mov (ecx, ptr[r10+r12*8+1000]); dump();
-mov (ecx, ptr[r10+r12*8-1]); dump();
-mov (ecx, ptr[r10+r12*8-1000]); dump();
-mov (ecx, ptr[r10+r13+0]); dump();
-mov (ecx, ptr[r10+r13+1]); dump();
-mov (ecx, ptr[r10+r13+1000]); dump();
-mov (ecx, ptr[r10+r13-1]); dump();
-mov (ecx, ptr[r10+r13-1000]); dump();
-mov (ecx, ptr[r10+r13*1+0]); dump();
-mov (ecx, ptr[r10+r13*1+1]); dump();
-mov (ecx, ptr[r10+r13*1+1000]); dump();
-mov (ecx, ptr[r10+r13*1-1]); dump();
-mov (ecx, ptr[r10+r13*1-1000]); dump();
-mov (ecx, ptr[r10+r13*2+0]); dump();
-mov (ecx, ptr[r10+r13*2+1]); dump();
-mov (ecx, ptr[r10+r13*2+1000]); dump();
-mov (ecx, ptr[r10+r13*2-1]); dump();
-mov (ecx, ptr[r10+r13*2-1000]); dump();
-mov (ecx, ptr[r10+r13*4+0]); dump();
-mov (ecx, ptr[r10+r13*4+1]); dump();
-mov (ecx, ptr[r10+r13*4+1000]); dump();
-mov (ecx, ptr[r10+r13*4-1]); dump();
-mov (ecx, ptr[r10+r13*4-1000]); dump();
-mov (ecx, ptr[r10+r13*8+0]); dump();
-mov (ecx, ptr[r10+r13*8+1]); dump();
-mov (ecx, ptr[r10+r13*8+1000]); dump();
-mov (ecx, ptr[r10+r13*8-1]); dump();
-mov (ecx, ptr[r10+r13*8-1000]); dump();
-mov (ecx, ptr[r10+r14+0]); dump();
-mov (ecx, ptr[r10+r14+1]); dump();
-mov (ecx, ptr[r10+r14+1000]); dump();
-mov (ecx, ptr[r10+r14-1]); dump();
-mov (ecx, ptr[r10+r14-1000]); dump();
-mov (ecx, ptr[r10+r14*1+0]); dump();
-mov (ecx, ptr[r10+r14*1+1]); dump();
-mov (ecx, ptr[r10+r14*1+1000]); dump();
-mov (ecx, ptr[r10+r14*1-1]); dump();
-mov (ecx, ptr[r10+r14*1-1000]); dump();
-mov (ecx, ptr[r10+r14*2+0]); dump();
-mov (ecx, ptr[r10+r14*2+1]); dump();
-mov (ecx, ptr[r10+r14*2+1000]); dump();
-mov (ecx, ptr[r10+r14*2-1]); dump();
-mov (ecx, ptr[r10+r14*2-1000]); dump();
-mov (ecx, ptr[r10+r14*4+0]); dump();
-mov (ecx, ptr[r10+r14*4+1]); dump();
-mov (ecx, ptr[r10+r14*4+1000]); dump();
-mov (ecx, ptr[r10+r14*4-1]); dump();
-mov (ecx, ptr[r10+r14*4-1000]); dump();
-mov (ecx, ptr[r10+r14*8+0]); dump();
-mov (ecx, ptr[r10+r14*8+1]); dump();
-mov (ecx, ptr[r10+r14*8+1000]); dump();
-mov (ecx, ptr[r10+r14*8-1]); dump();
-mov (ecx, ptr[r10+r14*8-1000]); dump();
-}
-    void gen37(){
-mov (ecx, ptr[r10+r15+0]); dump();
-mov (ecx, ptr[r10+r15+1]); dump();
-mov (ecx, ptr[r10+r15+1000]); dump();
-mov (ecx, ptr[r10+r15-1]); dump();
-mov (ecx, ptr[r10+r15-1000]); dump();
-mov (ecx, ptr[r10+r15*1+0]); dump();
-mov (ecx, ptr[r10+r15*1+1]); dump();
-mov (ecx, ptr[r10+r15*1+1000]); dump();
-mov (ecx, ptr[r10+r15*1-1]); dump();
-mov (ecx, ptr[r10+r15*1-1000]); dump();
-mov (ecx, ptr[r10+r15*2+0]); dump();
-mov (ecx, ptr[r10+r15*2+1]); dump();
-mov (ecx, ptr[r10+r15*2+1000]); dump();
-mov (ecx, ptr[r10+r15*2-1]); dump();
-mov (ecx, ptr[r10+r15*2-1000]); dump();
-mov (ecx, ptr[r10+r15*4+0]); dump();
-mov (ecx, ptr[r10+r15*4+1]); dump();
-mov (ecx, ptr[r10+r15*4+1000]); dump();
-mov (ecx, ptr[r10+r15*4-1]); dump();
-mov (ecx, ptr[r10+r15*4-1000]); dump();
-mov (ecx, ptr[r10+r15*8+0]); dump();
-mov (ecx, ptr[r10+r15*8+1]); dump();
-mov (ecx, ptr[r10+r15*8+1000]); dump();
-mov (ecx, ptr[r10+r15*8-1]); dump();
-mov (ecx, ptr[r10+r15*8-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r11+rax+0]); dump();
-mov (ecx, ptr[r11+rax+1]); dump();
-mov (ecx, ptr[r11+rax+1000]); dump();
-mov (ecx, ptr[r11+rax-1]); dump();
-mov (ecx, ptr[r11+rax-1000]); dump();
-mov (ecx, ptr[r11+rax*1+0]); dump();
-mov (ecx, ptr[r11+rax*1+1]); dump();
-mov (ecx, ptr[r11+rax*1+1000]); dump();
-mov (ecx, ptr[r11+rax*1-1]); dump();
-mov (ecx, ptr[r11+rax*1-1000]); dump();
-mov (ecx, ptr[r11+rax*2+0]); dump();
-mov (ecx, ptr[r11+rax*2+1]); dump();
-mov (ecx, ptr[r11+rax*2+1000]); dump();
-mov (ecx, ptr[r11+rax*2-1]); dump();
-mov (ecx, ptr[r11+rax*2-1000]); dump();
-mov (ecx, ptr[r11+rax*4+0]); dump();
-mov (ecx, ptr[r11+rax*4+1]); dump();
-mov (ecx, ptr[r11+rax*4+1000]); dump();
-mov (ecx, ptr[r11+rax*4-1]); dump();
-mov (ecx, ptr[r11+rax*4-1000]); dump();
-mov (ecx, ptr[r11+rax*8+0]); dump();
-mov (ecx, ptr[r11+rax*8+1]); dump();
-mov (ecx, ptr[r11+rax*8+1000]); dump();
-mov (ecx, ptr[r11+rax*8-1]); dump();
-mov (ecx, ptr[r11+rax*8-1000]); dump();
-mov (ecx, ptr[r11+rcx+0]); dump();
-mov (ecx, ptr[r11+rcx+1]); dump();
-mov (ecx, ptr[r11+rcx+1000]); dump();
-mov (ecx, ptr[r11+rcx-1]); dump();
-mov (ecx, ptr[r11+rcx-1000]); dump();
-mov (ecx, ptr[r11+rcx*1+0]); dump();
-mov (ecx, ptr[r11+rcx*1+1]); dump();
-mov (ecx, ptr[r11+rcx*1+1000]); dump();
-mov (ecx, ptr[r11+rcx*1-1]); dump();
-mov (ecx, ptr[r11+rcx*1-1000]); dump();
-mov (ecx, ptr[r11+rcx*2+0]); dump();
-mov (ecx, ptr[r11+rcx*2+1]); dump();
-mov (ecx, ptr[r11+rcx*2+1000]); dump();
-mov (ecx, ptr[r11+rcx*2-1]); dump();
-mov (ecx, ptr[r11+rcx*2-1000]); dump();
-mov (ecx, ptr[r11+rcx*4+0]); dump();
-mov (ecx, ptr[r11+rcx*4+1]); dump();
-mov (ecx, ptr[r11+rcx*4+1000]); dump();
-mov (ecx, ptr[r11+rcx*4-1]); dump();
-mov (ecx, ptr[r11+rcx*4-1000]); dump();
-mov (ecx, ptr[r11+rcx*8+0]); dump();
-mov (ecx, ptr[r11+rcx*8+1]); dump();
-mov (ecx, ptr[r11+rcx*8+1000]); dump();
-mov (ecx, ptr[r11+rcx*8-1]); dump();
-mov (ecx, ptr[r11+rcx*8-1000]); dump();
-}
-    void gen38(){
-mov (ecx, ptr[r11+rdx+0]); dump();
-mov (ecx, ptr[r11+rdx+1]); dump();
-mov (ecx, ptr[r11+rdx+1000]); dump();
-mov (ecx, ptr[r11+rdx-1]); dump();
-mov (ecx, ptr[r11+rdx-1000]); dump();
-mov (ecx, ptr[r11+rdx*1+0]); dump();
-mov (ecx, ptr[r11+rdx*1+1]); dump();
-mov (ecx, ptr[r11+rdx*1+1000]); dump();
-mov (ecx, ptr[r11+rdx*1-1]); dump();
-mov (ecx, ptr[r11+rdx*1-1000]); dump();
-mov (ecx, ptr[r11+rdx*2+0]); dump();
-mov (ecx, ptr[r11+rdx*2+1]); dump();
-mov (ecx, ptr[r11+rdx*2+1000]); dump();
-mov (ecx, ptr[r11+rdx*2-1]); dump();
-mov (ecx, ptr[r11+rdx*2-1000]); dump();
-mov (ecx, ptr[r11+rdx*4+0]); dump();
-mov (ecx, ptr[r11+rdx*4+1]); dump();
-mov (ecx, ptr[r11+rdx*4+1000]); dump();
-mov (ecx, ptr[r11+rdx*4-1]); dump();
-mov (ecx, ptr[r11+rdx*4-1000]); dump();
-mov (ecx, ptr[r11+rdx*8+0]); dump();
-mov (ecx, ptr[r11+rdx*8+1]); dump();
-mov (ecx, ptr[r11+rdx*8+1000]); dump();
-mov (ecx, ptr[r11+rdx*8-1]); dump();
-mov (ecx, ptr[r11+rdx*8-1000]); dump();
-mov (ecx, ptr[r11+rbx+0]); dump();
-mov (ecx, ptr[r11+rbx+1]); dump();
-mov (ecx, ptr[r11+rbx+1000]); dump();
-mov (ecx, ptr[r11+rbx-1]); dump();
-mov (ecx, ptr[r11+rbx-1000]); dump();
-mov (ecx, ptr[r11+rbx*1+0]); dump();
-mov (ecx, ptr[r11+rbx*1+1]); dump();
-mov (ecx, ptr[r11+rbx*1+1000]); dump();
-mov (ecx, ptr[r11+rbx*1-1]); dump();
-mov (ecx, ptr[r11+rbx*1-1000]); dump();
-mov (ecx, ptr[r11+rbx*2+0]); dump();
-mov (ecx, ptr[r11+rbx*2+1]); dump();
-mov (ecx, ptr[r11+rbx*2+1000]); dump();
-mov (ecx, ptr[r11+rbx*2-1]); dump();
-mov (ecx, ptr[r11+rbx*2-1000]); dump();
-mov (ecx, ptr[r11+rbx*4+0]); dump();
-mov (ecx, ptr[r11+rbx*4+1]); dump();
-mov (ecx, ptr[r11+rbx*4+1000]); dump();
-mov (ecx, ptr[r11+rbx*4-1]); dump();
-mov (ecx, ptr[r11+rbx*4-1000]); dump();
-mov (ecx, ptr[r11+rbx*8+0]); dump();
-mov (ecx, ptr[r11+rbx*8+1]); dump();
-mov (ecx, ptr[r11+rbx*8+1000]); dump();
-mov (ecx, ptr[r11+rbx*8-1]); dump();
-mov (ecx, ptr[r11+rbx*8-1000]); dump();
-mov (ecx, ptr[r11+rbp+0]); dump();
-mov (ecx, ptr[r11+rbp+1]); dump();
-mov (ecx, ptr[r11+rbp+1000]); dump();
-mov (ecx, ptr[r11+rbp-1]); dump();
-mov (ecx, ptr[r11+rbp-1000]); dump();
-mov (ecx, ptr[r11+rbp*1+0]); dump();
-mov (ecx, ptr[r11+rbp*1+1]); dump();
-mov (ecx, ptr[r11+rbp*1+1000]); dump();
-mov (ecx, ptr[r11+rbp*1-1]); dump();
-mov (ecx, ptr[r11+rbp*1-1000]); dump();
-mov (ecx, ptr[r11+rbp*2+0]); dump();
-mov (ecx, ptr[r11+rbp*2+1]); dump();
-mov (ecx, ptr[r11+rbp*2+1000]); dump();
-mov (ecx, ptr[r11+rbp*2-1]); dump();
-mov (ecx, ptr[r11+rbp*2-1000]); dump();
-mov (ecx, ptr[r11+rbp*4+0]); dump();
-mov (ecx, ptr[r11+rbp*4+1]); dump();
-mov (ecx, ptr[r11+rbp*4+1000]); dump();
-mov (ecx, ptr[r11+rbp*4-1]); dump();
-mov (ecx, ptr[r11+rbp*4-1000]); dump();
-mov (ecx, ptr[r11+rbp*8+0]); dump();
-mov (ecx, ptr[r11+rbp*8+1]); dump();
-mov (ecx, ptr[r11+rbp*8+1000]); dump();
-mov (ecx, ptr[r11+rbp*8-1]); dump();
-mov (ecx, ptr[r11+rbp*8-1000]); dump();
-mov (ecx, ptr[r11+rsi+0]); dump();
-mov (ecx, ptr[r11+rsi+1]); dump();
-mov (ecx, ptr[r11+rsi+1000]); dump();
-mov (ecx, ptr[r11+rsi-1]); dump();
-mov (ecx, ptr[r11+rsi-1000]); dump();
-mov (ecx, ptr[r11+rsi*1+0]); dump();
-mov (ecx, ptr[r11+rsi*1+1]); dump();
-mov (ecx, ptr[r11+rsi*1+1000]); dump();
-mov (ecx, ptr[r11+rsi*1-1]); dump();
-mov (ecx, ptr[r11+rsi*1-1000]); dump();
-mov (ecx, ptr[r11+rsi*2+0]); dump();
-mov (ecx, ptr[r11+rsi*2+1]); dump();
-mov (ecx, ptr[r11+rsi*2+1000]); dump();
-mov (ecx, ptr[r11+rsi*2-1]); dump();
-mov (ecx, ptr[r11+rsi*2-1000]); dump();
-mov (ecx, ptr[r11+rsi*4+0]); dump();
-mov (ecx, ptr[r11+rsi*4+1]); dump();
-mov (ecx, ptr[r11+rsi*4+1000]); dump();
-mov (ecx, ptr[r11+rsi*4-1]); dump();
-mov (ecx, ptr[r11+rsi*4-1000]); dump();
-mov (ecx, ptr[r11+rsi*8+0]); dump();
-mov (ecx, ptr[r11+rsi*8+1]); dump();
-mov (ecx, ptr[r11+rsi*8+1000]); dump();
-mov (ecx, ptr[r11+rsi*8-1]); dump();
-mov (ecx, ptr[r11+rsi*8-1000]); dump();
-}
-    void gen39(){
-mov (ecx, ptr[r11+rdi+0]); dump();
-mov (ecx, ptr[r11+rdi+1]); dump();
-mov (ecx, ptr[r11+rdi+1000]); dump();
-mov (ecx, ptr[r11+rdi-1]); dump();
-mov (ecx, ptr[r11+rdi-1000]); dump();
-mov (ecx, ptr[r11+rdi*1+0]); dump();
-mov (ecx, ptr[r11+rdi*1+1]); dump();
-mov (ecx, ptr[r11+rdi*1+1000]); dump();
-mov (ecx, ptr[r11+rdi*1-1]); dump();
-mov (ecx, ptr[r11+rdi*1-1000]); dump();
-mov (ecx, ptr[r11+rdi*2+0]); dump();
-mov (ecx, ptr[r11+rdi*2+1]); dump();
-mov (ecx, ptr[r11+rdi*2+1000]); dump();
-mov (ecx, ptr[r11+rdi*2-1]); dump();
-mov (ecx, ptr[r11+rdi*2-1000]); dump();
-mov (ecx, ptr[r11+rdi*4+0]); dump();
-mov (ecx, ptr[r11+rdi*4+1]); dump();
-mov (ecx, ptr[r11+rdi*4+1000]); dump();
-mov (ecx, ptr[r11+rdi*4-1]); dump();
-mov (ecx, ptr[r11+rdi*4-1000]); dump();
-mov (ecx, ptr[r11+rdi*8+0]); dump();
-mov (ecx, ptr[r11+rdi*8+1]); dump();
-mov (ecx, ptr[r11+rdi*8+1000]); dump();
-mov (ecx, ptr[r11+rdi*8-1]); dump();
-mov (ecx, ptr[r11+rdi*8-1000]); dump();
-mov (ecx, ptr[r11+r9+0]); dump();
-mov (ecx, ptr[r11+r9+1]); dump();
-mov (ecx, ptr[r11+r9+1000]); dump();
-mov (ecx, ptr[r11+r9-1]); dump();
-mov (ecx, ptr[r11+r9-1000]); dump();
-mov (ecx, ptr[r11+r9*1+0]); dump();
-mov (ecx, ptr[r11+r9*1+1]); dump();
-mov (ecx, ptr[r11+r9*1+1000]); dump();
-mov (ecx, ptr[r11+r9*1-1]); dump();
-mov (ecx, ptr[r11+r9*1-1000]); dump();
-mov (ecx, ptr[r11+r9*2+0]); dump();
-mov (ecx, ptr[r11+r9*2+1]); dump();
-mov (ecx, ptr[r11+r9*2+1000]); dump();
-mov (ecx, ptr[r11+r9*2-1]); dump();
-mov (ecx, ptr[r11+r9*2-1000]); dump();
-mov (ecx, ptr[r11+r9*4+0]); dump();
-mov (ecx, ptr[r11+r9*4+1]); dump();
-mov (ecx, ptr[r11+r9*4+1000]); dump();
-mov (ecx, ptr[r11+r9*4-1]); dump();
-mov (ecx, ptr[r11+r9*4-1000]); dump();
-mov (ecx, ptr[r11+r9*8+0]); dump();
-mov (ecx, ptr[r11+r9*8+1]); dump();
-mov (ecx, ptr[r11+r9*8+1000]); dump();
-mov (ecx, ptr[r11+r9*8-1]); dump();
-mov (ecx, ptr[r11+r9*8-1000]); dump();
-mov (ecx, ptr[r11+r10+0]); dump();
-mov (ecx, ptr[r11+r10+1]); dump();
-mov (ecx, ptr[r11+r10+1000]); dump();
-mov (ecx, ptr[r11+r10-1]); dump();
-mov (ecx, ptr[r11+r10-1000]); dump();
-mov (ecx, ptr[r11+r10*1+0]); dump();
-mov (ecx, ptr[r11+r10*1+1]); dump();
-mov (ecx, ptr[r11+r10*1+1000]); dump();
-mov (ecx, ptr[r11+r10*1-1]); dump();
-mov (ecx, ptr[r11+r10*1-1000]); dump();
-mov (ecx, ptr[r11+r10*2+0]); dump();
-mov (ecx, ptr[r11+r10*2+1]); dump();
-mov (ecx, ptr[r11+r10*2+1000]); dump();
-mov (ecx, ptr[r11+r10*2-1]); dump();
-mov (ecx, ptr[r11+r10*2-1000]); dump();
-mov (ecx, ptr[r11+r10*4+0]); dump();
-mov (ecx, ptr[r11+r10*4+1]); dump();
-mov (ecx, ptr[r11+r10*4+1000]); dump();
-mov (ecx, ptr[r11+r10*4-1]); dump();
-mov (ecx, ptr[r11+r10*4-1000]); dump();
-mov (ecx, ptr[r11+r10*8+0]); dump();
-mov (ecx, ptr[r11+r10*8+1]); dump();
-mov (ecx, ptr[r11+r10*8+1000]); dump();
-mov (ecx, ptr[r11+r10*8-1]); dump();
-mov (ecx, ptr[r11+r10*8-1000]); dump();
-mov (ecx, ptr[r11+r11+0]); dump();
-mov (ecx, ptr[r11+r11+1]); dump();
-mov (ecx, ptr[r11+r11+1000]); dump();
-mov (ecx, ptr[r11+r11-1]); dump();
-mov (ecx, ptr[r11+r11-1000]); dump();
-mov (ecx, ptr[r11+r11*1+0]); dump();
-mov (ecx, ptr[r11+r11*1+1]); dump();
-mov (ecx, ptr[r11+r11*1+1000]); dump();
-mov (ecx, ptr[r11+r11*1-1]); dump();
-mov (ecx, ptr[r11+r11*1-1000]); dump();
-mov (ecx, ptr[r11+r11*2+0]); dump();
-mov (ecx, ptr[r11+r11*2+1]); dump();
-mov (ecx, ptr[r11+r11*2+1000]); dump();
-mov (ecx, ptr[r11+r11*2-1]); dump();
-mov (ecx, ptr[r11+r11*2-1000]); dump();
-mov (ecx, ptr[r11+r11*4+0]); dump();
-mov (ecx, ptr[r11+r11*4+1]); dump();
-mov (ecx, ptr[r11+r11*4+1000]); dump();
-mov (ecx, ptr[r11+r11*4-1]); dump();
-mov (ecx, ptr[r11+r11*4-1000]); dump();
-mov (ecx, ptr[r11+r11*8+0]); dump();
-mov (ecx, ptr[r11+r11*8+1]); dump();
-mov (ecx, ptr[r11+r11*8+1000]); dump();
-mov (ecx, ptr[r11+r11*8-1]); dump();
-mov (ecx, ptr[r11+r11*8-1000]); dump();
-}
-    void gen40(){
-mov (ecx, ptr[r11+r12+0]); dump();
-mov (ecx, ptr[r11+r12+1]); dump();
-mov (ecx, ptr[r11+r12+1000]); dump();
-mov (ecx, ptr[r11+r12-1]); dump();
-mov (ecx, ptr[r11+r12-1000]); dump();
-mov (ecx, ptr[r11+r12*1+0]); dump();
-mov (ecx, ptr[r11+r12*1+1]); dump();
-mov (ecx, ptr[r11+r12*1+1000]); dump();
-mov (ecx, ptr[r11+r12*1-1]); dump();
-mov (ecx, ptr[r11+r12*1-1000]); dump();
-mov (ecx, ptr[r11+r12*2+0]); dump();
-mov (ecx, ptr[r11+r12*2+1]); dump();
-mov (ecx, ptr[r11+r12*2+1000]); dump();
-mov (ecx, ptr[r11+r12*2-1]); dump();
-mov (ecx, ptr[r11+r12*2-1000]); dump();
-mov (ecx, ptr[r11+r12*4+0]); dump();
-mov (ecx, ptr[r11+r12*4+1]); dump();
-mov (ecx, ptr[r11+r12*4+1000]); dump();
-mov (ecx, ptr[r11+r12*4-1]); dump();
-mov (ecx, ptr[r11+r12*4-1000]); dump();
-mov (ecx, ptr[r11+r12*8+0]); dump();
-mov (ecx, ptr[r11+r12*8+1]); dump();
-mov (ecx, ptr[r11+r12*8+1000]); dump();
-mov (ecx, ptr[r11+r12*8-1]); dump();
-mov (ecx, ptr[r11+r12*8-1000]); dump();
-mov (ecx, ptr[r11+r13+0]); dump();
-mov (ecx, ptr[r11+r13+1]); dump();
-mov (ecx, ptr[r11+r13+1000]); dump();
-mov (ecx, ptr[r11+r13-1]); dump();
-mov (ecx, ptr[r11+r13-1000]); dump();
-mov (ecx, ptr[r11+r13*1+0]); dump();
-mov (ecx, ptr[r11+r13*1+1]); dump();
-mov (ecx, ptr[r11+r13*1+1000]); dump();
-mov (ecx, ptr[r11+r13*1-1]); dump();
-mov (ecx, ptr[r11+r13*1-1000]); dump();
-mov (ecx, ptr[r11+r13*2+0]); dump();
-mov (ecx, ptr[r11+r13*2+1]); dump();
-mov (ecx, ptr[r11+r13*2+1000]); dump();
-mov (ecx, ptr[r11+r13*2-1]); dump();
-mov (ecx, ptr[r11+r13*2-1000]); dump();
-mov (ecx, ptr[r11+r13*4+0]); dump();
-mov (ecx, ptr[r11+r13*4+1]); dump();
-mov (ecx, ptr[r11+r13*4+1000]); dump();
-mov (ecx, ptr[r11+r13*4-1]); dump();
-mov (ecx, ptr[r11+r13*4-1000]); dump();
-mov (ecx, ptr[r11+r13*8+0]); dump();
-mov (ecx, ptr[r11+r13*8+1]); dump();
-mov (ecx, ptr[r11+r13*8+1000]); dump();
-mov (ecx, ptr[r11+r13*8-1]); dump();
-mov (ecx, ptr[r11+r13*8-1000]); dump();
-mov (ecx, ptr[r11+r14+0]); dump();
-mov (ecx, ptr[r11+r14+1]); dump();
-mov (ecx, ptr[r11+r14+1000]); dump();
-mov (ecx, ptr[r11+r14-1]); dump();
-mov (ecx, ptr[r11+r14-1000]); dump();
-mov (ecx, ptr[r11+r14*1+0]); dump();
-mov (ecx, ptr[r11+r14*1+1]); dump();
-mov (ecx, ptr[r11+r14*1+1000]); dump();
-mov (ecx, ptr[r11+r14*1-1]); dump();
-mov (ecx, ptr[r11+r14*1-1000]); dump();
-mov (ecx, ptr[r11+r14*2+0]); dump();
-mov (ecx, ptr[r11+r14*2+1]); dump();
-mov (ecx, ptr[r11+r14*2+1000]); dump();
-mov (ecx, ptr[r11+r14*2-1]); dump();
-mov (ecx, ptr[r11+r14*2-1000]); dump();
-mov (ecx, ptr[r11+r14*4+0]); dump();
-mov (ecx, ptr[r11+r14*4+1]); dump();
-mov (ecx, ptr[r11+r14*4+1000]); dump();
-mov (ecx, ptr[r11+r14*4-1]); dump();
-mov (ecx, ptr[r11+r14*4-1000]); dump();
-mov (ecx, ptr[r11+r14*8+0]); dump();
-mov (ecx, ptr[r11+r14*8+1]); dump();
-mov (ecx, ptr[r11+r14*8+1000]); dump();
-mov (ecx, ptr[r11+r14*8-1]); dump();
-mov (ecx, ptr[r11+r14*8-1000]); dump();
-mov (ecx, ptr[r11+r15+0]); dump();
-mov (ecx, ptr[r11+r15+1]); dump();
-mov (ecx, ptr[r11+r15+1000]); dump();
-mov (ecx, ptr[r11+r15-1]); dump();
-mov (ecx, ptr[r11+r15-1000]); dump();
-mov (ecx, ptr[r11+r15*1+0]); dump();
-mov (ecx, ptr[r11+r15*1+1]); dump();
-mov (ecx, ptr[r11+r15*1+1000]); dump();
-mov (ecx, ptr[r11+r15*1-1]); dump();
-mov (ecx, ptr[r11+r15*1-1000]); dump();
-mov (ecx, ptr[r11+r15*2+0]); dump();
-mov (ecx, ptr[r11+r15*2+1]); dump();
-mov (ecx, ptr[r11+r15*2+1000]); dump();
-mov (ecx, ptr[r11+r15*2-1]); dump();
-mov (ecx, ptr[r11+r15*2-1000]); dump();
-mov (ecx, ptr[r11+r15*4+0]); dump();
-mov (ecx, ptr[r11+r15*4+1]); dump();
-mov (ecx, ptr[r11+r15*4+1000]); dump();
-mov (ecx, ptr[r11+r15*4-1]); dump();
-mov (ecx, ptr[r11+r15*4-1000]); dump();
-mov (ecx, ptr[r11+r15*8+0]); dump();
-mov (ecx, ptr[r11+r15*8+1]); dump();
-mov (ecx, ptr[r11+r15*8+1000]); dump();
-mov (ecx, ptr[r11+r15*8-1]); dump();
-mov (ecx, ptr[r11+r15*8-1000]); dump();
-}
-    void gen41(){
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r12+rax+0]); dump();
-mov (ecx, ptr[r12+rax+1]); dump();
-mov (ecx, ptr[r12+rax+1000]); dump();
-mov (ecx, ptr[r12+rax-1]); dump();
-mov (ecx, ptr[r12+rax-1000]); dump();
-mov (ecx, ptr[r12+rax*1+0]); dump();
-mov (ecx, ptr[r12+rax*1+1]); dump();
-mov (ecx, ptr[r12+rax*1+1000]); dump();
-mov (ecx, ptr[r12+rax*1-1]); dump();
-mov (ecx, ptr[r12+rax*1-1000]); dump();
-mov (ecx, ptr[r12+rax*2+0]); dump();
-mov (ecx, ptr[r12+rax*2+1]); dump();
-mov (ecx, ptr[r12+rax*2+1000]); dump();
-mov (ecx, ptr[r12+rax*2-1]); dump();
-mov (ecx, ptr[r12+rax*2-1000]); dump();
-mov (ecx, ptr[r12+rax*4+0]); dump();
-mov (ecx, ptr[r12+rax*4+1]); dump();
-mov (ecx, ptr[r12+rax*4+1000]); dump();
-mov (ecx, ptr[r12+rax*4-1]); dump();
-mov (ecx, ptr[r12+rax*4-1000]); dump();
-mov (ecx, ptr[r12+rax*8+0]); dump();
-mov (ecx, ptr[r12+rax*8+1]); dump();
-mov (ecx, ptr[r12+rax*8+1000]); dump();
-mov (ecx, ptr[r12+rax*8-1]); dump();
-mov (ecx, ptr[r12+rax*8-1000]); dump();
-mov (ecx, ptr[r12+rcx+0]); dump();
-mov (ecx, ptr[r12+rcx+1]); dump();
-mov (ecx, ptr[r12+rcx+1000]); dump();
-mov (ecx, ptr[r12+rcx-1]); dump();
-mov (ecx, ptr[r12+rcx-1000]); dump();
-mov (ecx, ptr[r12+rcx*1+0]); dump();
-mov (ecx, ptr[r12+rcx*1+1]); dump();
-mov (ecx, ptr[r12+rcx*1+1000]); dump();
-mov (ecx, ptr[r12+rcx*1-1]); dump();
-mov (ecx, ptr[r12+rcx*1-1000]); dump();
-mov (ecx, ptr[r12+rcx*2+0]); dump();
-mov (ecx, ptr[r12+rcx*2+1]); dump();
-mov (ecx, ptr[r12+rcx*2+1000]); dump();
-mov (ecx, ptr[r12+rcx*2-1]); dump();
-mov (ecx, ptr[r12+rcx*2-1000]); dump();
-mov (ecx, ptr[r12+rcx*4+0]); dump();
-mov (ecx, ptr[r12+rcx*4+1]); dump();
-mov (ecx, ptr[r12+rcx*4+1000]); dump();
-mov (ecx, ptr[r12+rcx*4-1]); dump();
-mov (ecx, ptr[r12+rcx*4-1000]); dump();
-mov (ecx, ptr[r12+rcx*8+0]); dump();
-mov (ecx, ptr[r12+rcx*8+1]); dump();
-mov (ecx, ptr[r12+rcx*8+1000]); dump();
-mov (ecx, ptr[r12+rcx*8-1]); dump();
-mov (ecx, ptr[r12+rcx*8-1000]); dump();
-mov (ecx, ptr[r12+rdx+0]); dump();
-mov (ecx, ptr[r12+rdx+1]); dump();
-mov (ecx, ptr[r12+rdx+1000]); dump();
-mov (ecx, ptr[r12+rdx-1]); dump();
-mov (ecx, ptr[r12+rdx-1000]); dump();
-mov (ecx, ptr[r12+rdx*1+0]); dump();
-mov (ecx, ptr[r12+rdx*1+1]); dump();
-mov (ecx, ptr[r12+rdx*1+1000]); dump();
-mov (ecx, ptr[r12+rdx*1-1]); dump();
-mov (ecx, ptr[r12+rdx*1-1000]); dump();
-mov (ecx, ptr[r12+rdx*2+0]); dump();
-mov (ecx, ptr[r12+rdx*2+1]); dump();
-mov (ecx, ptr[r12+rdx*2+1000]); dump();
-mov (ecx, ptr[r12+rdx*2-1]); dump();
-mov (ecx, ptr[r12+rdx*2-1000]); dump();
-mov (ecx, ptr[r12+rdx*4+0]); dump();
-mov (ecx, ptr[r12+rdx*4+1]); dump();
-mov (ecx, ptr[r12+rdx*4+1000]); dump();
-mov (ecx, ptr[r12+rdx*4-1]); dump();
-mov (ecx, ptr[r12+rdx*4-1000]); dump();
-mov (ecx, ptr[r12+rdx*8+0]); dump();
-mov (ecx, ptr[r12+rdx*8+1]); dump();
-mov (ecx, ptr[r12+rdx*8+1000]); dump();
-mov (ecx, ptr[r12+rdx*8-1]); dump();
-mov (ecx, ptr[r12+rdx*8-1000]); dump();
-}
-    void gen42(){
-mov (ecx, ptr[r12+rbx+0]); dump();
-mov (ecx, ptr[r12+rbx+1]); dump();
-mov (ecx, ptr[r12+rbx+1000]); dump();
-mov (ecx, ptr[r12+rbx-1]); dump();
-mov (ecx, ptr[r12+rbx-1000]); dump();
-mov (ecx, ptr[r12+rbx*1+0]); dump();
-mov (ecx, ptr[r12+rbx*1+1]); dump();
-mov (ecx, ptr[r12+rbx*1+1000]); dump();
-mov (ecx, ptr[r12+rbx*1-1]); dump();
-mov (ecx, ptr[r12+rbx*1-1000]); dump();
-mov (ecx, ptr[r12+rbx*2+0]); dump();
-mov (ecx, ptr[r12+rbx*2+1]); dump();
-mov (ecx, ptr[r12+rbx*2+1000]); dump();
-mov (ecx, ptr[r12+rbx*2-1]); dump();
-mov (ecx, ptr[r12+rbx*2-1000]); dump();
-mov (ecx, ptr[r12+rbx*4+0]); dump();
-mov (ecx, ptr[r12+rbx*4+1]); dump();
-mov (ecx, ptr[r12+rbx*4+1000]); dump();
-mov (ecx, ptr[r12+rbx*4-1]); dump();
-mov (ecx, ptr[r12+rbx*4-1000]); dump();
-mov (ecx, ptr[r12+rbx*8+0]); dump();
-mov (ecx, ptr[r12+rbx*8+1]); dump();
-mov (ecx, ptr[r12+rbx*8+1000]); dump();
-mov (ecx, ptr[r12+rbx*8-1]); dump();
-mov (ecx, ptr[r12+rbx*8-1000]); dump();
-mov (ecx, ptr[r12+rbp+0]); dump();
-mov (ecx, ptr[r12+rbp+1]); dump();
-mov (ecx, ptr[r12+rbp+1000]); dump();
-mov (ecx, ptr[r12+rbp-1]); dump();
-mov (ecx, ptr[r12+rbp-1000]); dump();
-mov (ecx, ptr[r12+rbp*1+0]); dump();
-mov (ecx, ptr[r12+rbp*1+1]); dump();
-mov (ecx, ptr[r12+rbp*1+1000]); dump();
-mov (ecx, ptr[r12+rbp*1-1]); dump();
-mov (ecx, ptr[r12+rbp*1-1000]); dump();
-mov (ecx, ptr[r12+rbp*2+0]); dump();
-mov (ecx, ptr[r12+rbp*2+1]); dump();
-mov (ecx, ptr[r12+rbp*2+1000]); dump();
-mov (ecx, ptr[r12+rbp*2-1]); dump();
-mov (ecx, ptr[r12+rbp*2-1000]); dump();
-mov (ecx, ptr[r12+rbp*4+0]); dump();
-mov (ecx, ptr[r12+rbp*4+1]); dump();
-mov (ecx, ptr[r12+rbp*4+1000]); dump();
-mov (ecx, ptr[r12+rbp*4-1]); dump();
-mov (ecx, ptr[r12+rbp*4-1000]); dump();
-mov (ecx, ptr[r12+rbp*8+0]); dump();
-mov (ecx, ptr[r12+rbp*8+1]); dump();
-mov (ecx, ptr[r12+rbp*8+1000]); dump();
-mov (ecx, ptr[r12+rbp*8-1]); dump();
-mov (ecx, ptr[r12+rbp*8-1000]); dump();
-mov (ecx, ptr[r12+rsi+0]); dump();
-mov (ecx, ptr[r12+rsi+1]); dump();
-mov (ecx, ptr[r12+rsi+1000]); dump();
-mov (ecx, ptr[r12+rsi-1]); dump();
-mov (ecx, ptr[r12+rsi-1000]); dump();
-mov (ecx, ptr[r12+rsi*1+0]); dump();
-mov (ecx, ptr[r12+rsi*1+1]); dump();
-mov (ecx, ptr[r12+rsi*1+1000]); dump();
-mov (ecx, ptr[r12+rsi*1-1]); dump();
-mov (ecx, ptr[r12+rsi*1-1000]); dump();
-mov (ecx, ptr[r12+rsi*2+0]); dump();
-mov (ecx, ptr[r12+rsi*2+1]); dump();
-mov (ecx, ptr[r12+rsi*2+1000]); dump();
-mov (ecx, ptr[r12+rsi*2-1]); dump();
-mov (ecx, ptr[r12+rsi*2-1000]); dump();
-mov (ecx, ptr[r12+rsi*4+0]); dump();
-mov (ecx, ptr[r12+rsi*4+1]); dump();
-mov (ecx, ptr[r12+rsi*4+1000]); dump();
-mov (ecx, ptr[r12+rsi*4-1]); dump();
-mov (ecx, ptr[r12+rsi*4-1000]); dump();
-mov (ecx, ptr[r12+rsi*8+0]); dump();
-mov (ecx, ptr[r12+rsi*8+1]); dump();
-mov (ecx, ptr[r12+rsi*8+1000]); dump();
-mov (ecx, ptr[r12+rsi*8-1]); dump();
-mov (ecx, ptr[r12+rsi*8-1000]); dump();
-mov (ecx, ptr[r12+rdi+0]); dump();
-mov (ecx, ptr[r12+rdi+1]); dump();
-mov (ecx, ptr[r12+rdi+1000]); dump();
-mov (ecx, ptr[r12+rdi-1]); dump();
-mov (ecx, ptr[r12+rdi-1000]); dump();
-mov (ecx, ptr[r12+rdi*1+0]); dump();
-mov (ecx, ptr[r12+rdi*1+1]); dump();
-mov (ecx, ptr[r12+rdi*1+1000]); dump();
-mov (ecx, ptr[r12+rdi*1-1]); dump();
-mov (ecx, ptr[r12+rdi*1-1000]); dump();
-mov (ecx, ptr[r12+rdi*2+0]); dump();
-mov (ecx, ptr[r12+rdi*2+1]); dump();
-mov (ecx, ptr[r12+rdi*2+1000]); dump();
-mov (ecx, ptr[r12+rdi*2-1]); dump();
-mov (ecx, ptr[r12+rdi*2-1000]); dump();
-mov (ecx, ptr[r12+rdi*4+0]); dump();
-mov (ecx, ptr[r12+rdi*4+1]); dump();
-mov (ecx, ptr[r12+rdi*4+1000]); dump();
-mov (ecx, ptr[r12+rdi*4-1]); dump();
-mov (ecx, ptr[r12+rdi*4-1000]); dump();
-mov (ecx, ptr[r12+rdi*8+0]); dump();
-mov (ecx, ptr[r12+rdi*8+1]); dump();
-mov (ecx, ptr[r12+rdi*8+1000]); dump();
-mov (ecx, ptr[r12+rdi*8-1]); dump();
-mov (ecx, ptr[r12+rdi*8-1000]); dump();
-}
-    void gen43(){
-mov (ecx, ptr[r12+r9+0]); dump();
-mov (ecx, ptr[r12+r9+1]); dump();
-mov (ecx, ptr[r12+r9+1000]); dump();
-mov (ecx, ptr[r12+r9-1]); dump();
-mov (ecx, ptr[r12+r9-1000]); dump();
-mov (ecx, ptr[r12+r9*1+0]); dump();
-mov (ecx, ptr[r12+r9*1+1]); dump();
-mov (ecx, ptr[r12+r9*1+1000]); dump();
-mov (ecx, ptr[r12+r9*1-1]); dump();
-mov (ecx, ptr[r12+r9*1-1000]); dump();
-mov (ecx, ptr[r12+r9*2+0]); dump();
-mov (ecx, ptr[r12+r9*2+1]); dump();
-mov (ecx, ptr[r12+r9*2+1000]); dump();
-mov (ecx, ptr[r12+r9*2-1]); dump();
-mov (ecx, ptr[r12+r9*2-1000]); dump();
-mov (ecx, ptr[r12+r9*4+0]); dump();
-mov (ecx, ptr[r12+r9*4+1]); dump();
-mov (ecx, ptr[r12+r9*4+1000]); dump();
-mov (ecx, ptr[r12+r9*4-1]); dump();
-mov (ecx, ptr[r12+r9*4-1000]); dump();
-mov (ecx, ptr[r12+r9*8+0]); dump();
-mov (ecx, ptr[r12+r9*8+1]); dump();
-mov (ecx, ptr[r12+r9*8+1000]); dump();
-mov (ecx, ptr[r12+r9*8-1]); dump();
-mov (ecx, ptr[r12+r9*8-1000]); dump();
-mov (ecx, ptr[r12+r10+0]); dump();
-mov (ecx, ptr[r12+r10+1]); dump();
-mov (ecx, ptr[r12+r10+1000]); dump();
-mov (ecx, ptr[r12+r10-1]); dump();
-mov (ecx, ptr[r12+r10-1000]); dump();
-mov (ecx, ptr[r12+r10*1+0]); dump();
-mov (ecx, ptr[r12+r10*1+1]); dump();
-mov (ecx, ptr[r12+r10*1+1000]); dump();
-mov (ecx, ptr[r12+r10*1-1]); dump();
-mov (ecx, ptr[r12+r10*1-1000]); dump();
-mov (ecx, ptr[r12+r10*2+0]); dump();
-mov (ecx, ptr[r12+r10*2+1]); dump();
-mov (ecx, ptr[r12+r10*2+1000]); dump();
-mov (ecx, ptr[r12+r10*2-1]); dump();
-mov (ecx, ptr[r12+r10*2-1000]); dump();
-mov (ecx, ptr[r12+r10*4+0]); dump();
-mov (ecx, ptr[r12+r10*4+1]); dump();
-mov (ecx, ptr[r12+r10*4+1000]); dump();
-mov (ecx, ptr[r12+r10*4-1]); dump();
-mov (ecx, ptr[r12+r10*4-1000]); dump();
-mov (ecx, ptr[r12+r10*8+0]); dump();
-mov (ecx, ptr[r12+r10*8+1]); dump();
-mov (ecx, ptr[r12+r10*8+1000]); dump();
-mov (ecx, ptr[r12+r10*8-1]); dump();
-mov (ecx, ptr[r12+r10*8-1000]); dump();
-mov (ecx, ptr[r12+r11+0]); dump();
-mov (ecx, ptr[r12+r11+1]); dump();
-mov (ecx, ptr[r12+r11+1000]); dump();
-mov (ecx, ptr[r12+r11-1]); dump();
-mov (ecx, ptr[r12+r11-1000]); dump();
-mov (ecx, ptr[r12+r11*1+0]); dump();
-mov (ecx, ptr[r12+r11*1+1]); dump();
-mov (ecx, ptr[r12+r11*1+1000]); dump();
-mov (ecx, ptr[r12+r11*1-1]); dump();
-mov (ecx, ptr[r12+r11*1-1000]); dump();
-mov (ecx, ptr[r12+r11*2+0]); dump();
-mov (ecx, ptr[r12+r11*2+1]); dump();
-mov (ecx, ptr[r12+r11*2+1000]); dump();
-mov (ecx, ptr[r12+r11*2-1]); dump();
-mov (ecx, ptr[r12+r11*2-1000]); dump();
-mov (ecx, ptr[r12+r11*4+0]); dump();
-mov (ecx, ptr[r12+r11*4+1]); dump();
-mov (ecx, ptr[r12+r11*4+1000]); dump();
-mov (ecx, ptr[r12+r11*4-1]); dump();
-mov (ecx, ptr[r12+r11*4-1000]); dump();
-mov (ecx, ptr[r12+r11*8+0]); dump();
-mov (ecx, ptr[r12+r11*8+1]); dump();
-mov (ecx, ptr[r12+r11*8+1000]); dump();
-mov (ecx, ptr[r12+r11*8-1]); dump();
-mov (ecx, ptr[r12+r11*8-1000]); dump();
-mov (ecx, ptr[r12+r12+0]); dump();
-mov (ecx, ptr[r12+r12+1]); dump();
-mov (ecx, ptr[r12+r12+1000]); dump();
-mov (ecx, ptr[r12+r12-1]); dump();
-mov (ecx, ptr[r12+r12-1000]); dump();
-mov (ecx, ptr[r12+r12*1+0]); dump();
-mov (ecx, ptr[r12+r12*1+1]); dump();
-mov (ecx, ptr[r12+r12*1+1000]); dump();
-mov (ecx, ptr[r12+r12*1-1]); dump();
-mov (ecx, ptr[r12+r12*1-1000]); dump();
-mov (ecx, ptr[r12+r12*2+0]); dump();
-mov (ecx, ptr[r12+r12*2+1]); dump();
-mov (ecx, ptr[r12+r12*2+1000]); dump();
-mov (ecx, ptr[r12+r12*2-1]); dump();
-mov (ecx, ptr[r12+r12*2-1000]); dump();
-mov (ecx, ptr[r12+r12*4+0]); dump();
-mov (ecx, ptr[r12+r12*4+1]); dump();
-mov (ecx, ptr[r12+r12*4+1000]); dump();
-mov (ecx, ptr[r12+r12*4-1]); dump();
-mov (ecx, ptr[r12+r12*4-1000]); dump();
-mov (ecx, ptr[r12+r12*8+0]); dump();
-mov (ecx, ptr[r12+r12*8+1]); dump();
-mov (ecx, ptr[r12+r12*8+1000]); dump();
-mov (ecx, ptr[r12+r12*8-1]); dump();
-mov (ecx, ptr[r12+r12*8-1000]); dump();
-}
-    void gen44(){
-mov (ecx, ptr[r12+r13+0]); dump();
-mov (ecx, ptr[r12+r13+1]); dump();
-mov (ecx, ptr[r12+r13+1000]); dump();
-mov (ecx, ptr[r12+r13-1]); dump();
-mov (ecx, ptr[r12+r13-1000]); dump();
-mov (ecx, ptr[r12+r13*1+0]); dump();
-mov (ecx, ptr[r12+r13*1+1]); dump();
-mov (ecx, ptr[r12+r13*1+1000]); dump();
-mov (ecx, ptr[r12+r13*1-1]); dump();
-mov (ecx, ptr[r12+r13*1-1000]); dump();
-mov (ecx, ptr[r12+r13*2+0]); dump();
-mov (ecx, ptr[r12+r13*2+1]); dump();
-mov (ecx, ptr[r12+r13*2+1000]); dump();
-mov (ecx, ptr[r12+r13*2-1]); dump();
-mov (ecx, ptr[r12+r13*2-1000]); dump();
-mov (ecx, ptr[r12+r13*4+0]); dump();
-mov (ecx, ptr[r12+r13*4+1]); dump();
-mov (ecx, ptr[r12+r13*4+1000]); dump();
-mov (ecx, ptr[r12+r13*4-1]); dump();
-mov (ecx, ptr[r12+r13*4-1000]); dump();
-mov (ecx, ptr[r12+r13*8+0]); dump();
-mov (ecx, ptr[r12+r13*8+1]); dump();
-mov (ecx, ptr[r12+r13*8+1000]); dump();
-mov (ecx, ptr[r12+r13*8-1]); dump();
-mov (ecx, ptr[r12+r13*8-1000]); dump();
-mov (ecx, ptr[r12+r14+0]); dump();
-mov (ecx, ptr[r12+r14+1]); dump();
-mov (ecx, ptr[r12+r14+1000]); dump();
-mov (ecx, ptr[r12+r14-1]); dump();
-mov (ecx, ptr[r12+r14-1000]); dump();
-mov (ecx, ptr[r12+r14*1+0]); dump();
-mov (ecx, ptr[r12+r14*1+1]); dump();
-mov (ecx, ptr[r12+r14*1+1000]); dump();
-mov (ecx, ptr[r12+r14*1-1]); dump();
-mov (ecx, ptr[r12+r14*1-1000]); dump();
-mov (ecx, ptr[r12+r14*2+0]); dump();
-mov (ecx, ptr[r12+r14*2+1]); dump();
-mov (ecx, ptr[r12+r14*2+1000]); dump();
-mov (ecx, ptr[r12+r14*2-1]); dump();
-mov (ecx, ptr[r12+r14*2-1000]); dump();
-mov (ecx, ptr[r12+r14*4+0]); dump();
-mov (ecx, ptr[r12+r14*4+1]); dump();
-mov (ecx, ptr[r12+r14*4+1000]); dump();
-mov (ecx, ptr[r12+r14*4-1]); dump();
-mov (ecx, ptr[r12+r14*4-1000]); dump();
-mov (ecx, ptr[r12+r14*8+0]); dump();
-mov (ecx, ptr[r12+r14*8+1]); dump();
-mov (ecx, ptr[r12+r14*8+1000]); dump();
-mov (ecx, ptr[r12+r14*8-1]); dump();
-mov (ecx, ptr[r12+r14*8-1000]); dump();
-mov (ecx, ptr[r12+r15+0]); dump();
-mov (ecx, ptr[r12+r15+1]); dump();
-mov (ecx, ptr[r12+r15+1000]); dump();
-mov (ecx, ptr[r12+r15-1]); dump();
-mov (ecx, ptr[r12+r15-1000]); dump();
-mov (ecx, ptr[r12+r15*1+0]); dump();
-mov (ecx, ptr[r12+r15*1+1]); dump();
-mov (ecx, ptr[r12+r15*1+1000]); dump();
-mov (ecx, ptr[r12+r15*1-1]); dump();
-mov (ecx, ptr[r12+r15*1-1000]); dump();
-mov (ecx, ptr[r12+r15*2+0]); dump();
-mov (ecx, ptr[r12+r15*2+1]); dump();
-mov (ecx, ptr[r12+r15*2+1000]); dump();
-mov (ecx, ptr[r12+r15*2-1]); dump();
-mov (ecx, ptr[r12+r15*2-1000]); dump();
-mov (ecx, ptr[r12+r15*4+0]); dump();
-mov (ecx, ptr[r12+r15*4+1]); dump();
-mov (ecx, ptr[r12+r15*4+1000]); dump();
-mov (ecx, ptr[r12+r15*4-1]); dump();
-mov (ecx, ptr[r12+r15*4-1000]); dump();
-mov (ecx, ptr[r12+r15*8+0]); dump();
-mov (ecx, ptr[r12+r15*8+1]); dump();
-mov (ecx, ptr[r12+r15*8+1000]); dump();
-mov (ecx, ptr[r12+r15*8-1]); dump();
-mov (ecx, ptr[r12+r15*8-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-}
-    void gen45(){
-mov (ecx, ptr[r13+rax+0]); dump();
-mov (ecx, ptr[r13+rax+1]); dump();
-mov (ecx, ptr[r13+rax+1000]); dump();
-mov (ecx, ptr[r13+rax-1]); dump();
-mov (ecx, ptr[r13+rax-1000]); dump();
-mov (ecx, ptr[r13+rax*1+0]); dump();
-mov (ecx, ptr[r13+rax*1+1]); dump();
-mov (ecx, ptr[r13+rax*1+1000]); dump();
-mov (ecx, ptr[r13+rax*1-1]); dump();
-mov (ecx, ptr[r13+rax*1-1000]); dump();
-mov (ecx, ptr[r13+rax*2+0]); dump();
-mov (ecx, ptr[r13+rax*2+1]); dump();
-mov (ecx, ptr[r13+rax*2+1000]); dump();
-mov (ecx, ptr[r13+rax*2-1]); dump();
-mov (ecx, ptr[r13+rax*2-1000]); dump();
-mov (ecx, ptr[r13+rax*4+0]); dump();
-mov (ecx, ptr[r13+rax*4+1]); dump();
-mov (ecx, ptr[r13+rax*4+1000]); dump();
-mov (ecx, ptr[r13+rax*4-1]); dump();
-mov (ecx, ptr[r13+rax*4-1000]); dump();
-mov (ecx, ptr[r13+rax*8+0]); dump();
-mov (ecx, ptr[r13+rax*8+1]); dump();
-mov (ecx, ptr[r13+rax*8+1000]); dump();
-mov (ecx, ptr[r13+rax*8-1]); dump();
-mov (ecx, ptr[r13+rax*8-1000]); dump();
-mov (ecx, ptr[r13+rcx+0]); dump();
-mov (ecx, ptr[r13+rcx+1]); dump();
-mov (ecx, ptr[r13+rcx+1000]); dump();
-mov (ecx, ptr[r13+rcx-1]); dump();
-mov (ecx, ptr[r13+rcx-1000]); dump();
-mov (ecx, ptr[r13+rcx*1+0]); dump();
-mov (ecx, ptr[r13+rcx*1+1]); dump();
-mov (ecx, ptr[r13+rcx*1+1000]); dump();
-mov (ecx, ptr[r13+rcx*1-1]); dump();
-mov (ecx, ptr[r13+rcx*1-1000]); dump();
-mov (ecx, ptr[r13+rcx*2+0]); dump();
-mov (ecx, ptr[r13+rcx*2+1]); dump();
-mov (ecx, ptr[r13+rcx*2+1000]); dump();
-mov (ecx, ptr[r13+rcx*2-1]); dump();
-mov (ecx, ptr[r13+rcx*2-1000]); dump();
-mov (ecx, ptr[r13+rcx*4+0]); dump();
-mov (ecx, ptr[r13+rcx*4+1]); dump();
-mov (ecx, ptr[r13+rcx*4+1000]); dump();
-mov (ecx, ptr[r13+rcx*4-1]); dump();
-mov (ecx, ptr[r13+rcx*4-1000]); dump();
-mov (ecx, ptr[r13+rcx*8+0]); dump();
-mov (ecx, ptr[r13+rcx*8+1]); dump();
-mov (ecx, ptr[r13+rcx*8+1000]); dump();
-mov (ecx, ptr[r13+rcx*8-1]); dump();
-mov (ecx, ptr[r13+rcx*8-1000]); dump();
-mov (ecx, ptr[r13+rdx+0]); dump();
-mov (ecx, ptr[r13+rdx+1]); dump();
-mov (ecx, ptr[r13+rdx+1000]); dump();
-mov (ecx, ptr[r13+rdx-1]); dump();
-mov (ecx, ptr[r13+rdx-1000]); dump();
-mov (ecx, ptr[r13+rdx*1+0]); dump();
-mov (ecx, ptr[r13+rdx*1+1]); dump();
-mov (ecx, ptr[r13+rdx*1+1000]); dump();
-mov (ecx, ptr[r13+rdx*1-1]); dump();
-mov (ecx, ptr[r13+rdx*1-1000]); dump();
-mov (ecx, ptr[r13+rdx*2+0]); dump();
-mov (ecx, ptr[r13+rdx*2+1]); dump();
-mov (ecx, ptr[r13+rdx*2+1000]); dump();
-mov (ecx, ptr[r13+rdx*2-1]); dump();
-mov (ecx, ptr[r13+rdx*2-1000]); dump();
-mov (ecx, ptr[r13+rdx*4+0]); dump();
-mov (ecx, ptr[r13+rdx*4+1]); dump();
-mov (ecx, ptr[r13+rdx*4+1000]); dump();
-mov (ecx, ptr[r13+rdx*4-1]); dump();
-mov (ecx, ptr[r13+rdx*4-1000]); dump();
-mov (ecx, ptr[r13+rdx*8+0]); dump();
-mov (ecx, ptr[r13+rdx*8+1]); dump();
-mov (ecx, ptr[r13+rdx*8+1000]); dump();
-mov (ecx, ptr[r13+rdx*8-1]); dump();
-mov (ecx, ptr[r13+rdx*8-1000]); dump();
-mov (ecx, ptr[r13+rbx+0]); dump();
-mov (ecx, ptr[r13+rbx+1]); dump();
-mov (ecx, ptr[r13+rbx+1000]); dump();
-mov (ecx, ptr[r13+rbx-1]); dump();
-mov (ecx, ptr[r13+rbx-1000]); dump();
-mov (ecx, ptr[r13+rbx*1+0]); dump();
-mov (ecx, ptr[r13+rbx*1+1]); dump();
-mov (ecx, ptr[r13+rbx*1+1000]); dump();
-mov (ecx, ptr[r13+rbx*1-1]); dump();
-mov (ecx, ptr[r13+rbx*1-1000]); dump();
-mov (ecx, ptr[r13+rbx*2+0]); dump();
-mov (ecx, ptr[r13+rbx*2+1]); dump();
-mov (ecx, ptr[r13+rbx*2+1000]); dump();
-mov (ecx, ptr[r13+rbx*2-1]); dump();
-mov (ecx, ptr[r13+rbx*2-1000]); dump();
-mov (ecx, ptr[r13+rbx*4+0]); dump();
-mov (ecx, ptr[r13+rbx*4+1]); dump();
-mov (ecx, ptr[r13+rbx*4+1000]); dump();
-mov (ecx, ptr[r13+rbx*4-1]); dump();
-mov (ecx, ptr[r13+rbx*4-1000]); dump();
-mov (ecx, ptr[r13+rbx*8+0]); dump();
-mov (ecx, ptr[r13+rbx*8+1]); dump();
-mov (ecx, ptr[r13+rbx*8+1000]); dump();
-mov (ecx, ptr[r13+rbx*8-1]); dump();
-mov (ecx, ptr[r13+rbx*8-1000]); dump();
-}
-    void gen46(){
-mov (ecx, ptr[r13+rbp+0]); dump();
-mov (ecx, ptr[r13+rbp+1]); dump();
-mov (ecx, ptr[r13+rbp+1000]); dump();
-mov (ecx, ptr[r13+rbp-1]); dump();
-mov (ecx, ptr[r13+rbp-1000]); dump();
-mov (ecx, ptr[r13+rbp*1+0]); dump();
-mov (ecx, ptr[r13+rbp*1+1]); dump();
-mov (ecx, ptr[r13+rbp*1+1000]); dump();
-mov (ecx, ptr[r13+rbp*1-1]); dump();
-mov (ecx, ptr[r13+rbp*1-1000]); dump();
-mov (ecx, ptr[r13+rbp*2+0]); dump();
-mov (ecx, ptr[r13+rbp*2+1]); dump();
-mov (ecx, ptr[r13+rbp*2+1000]); dump();
-mov (ecx, ptr[r13+rbp*2-1]); dump();
-mov (ecx, ptr[r13+rbp*2-1000]); dump();
-mov (ecx, ptr[r13+rbp*4+0]); dump();
-mov (ecx, ptr[r13+rbp*4+1]); dump();
-mov (ecx, ptr[r13+rbp*4+1000]); dump();
-mov (ecx, ptr[r13+rbp*4-1]); dump();
-mov (ecx, ptr[r13+rbp*4-1000]); dump();
-mov (ecx, ptr[r13+rbp*8+0]); dump();
-mov (ecx, ptr[r13+rbp*8+1]); dump();
-mov (ecx, ptr[r13+rbp*8+1000]); dump();
-mov (ecx, ptr[r13+rbp*8-1]); dump();
-mov (ecx, ptr[r13+rbp*8-1000]); dump();
-mov (ecx, ptr[r13+rsi+0]); dump();
-mov (ecx, ptr[r13+rsi+1]); dump();
-mov (ecx, ptr[r13+rsi+1000]); dump();
-mov (ecx, ptr[r13+rsi-1]); dump();
-mov (ecx, ptr[r13+rsi-1000]); dump();
-mov (ecx, ptr[r13+rsi*1+0]); dump();
-mov (ecx, ptr[r13+rsi*1+1]); dump();
-mov (ecx, ptr[r13+rsi*1+1000]); dump();
-mov (ecx, ptr[r13+rsi*1-1]); dump();
-mov (ecx, ptr[r13+rsi*1-1000]); dump();
-mov (ecx, ptr[r13+rsi*2+0]); dump();
-mov (ecx, ptr[r13+rsi*2+1]); dump();
-mov (ecx, ptr[r13+rsi*2+1000]); dump();
-mov (ecx, ptr[r13+rsi*2-1]); dump();
-mov (ecx, ptr[r13+rsi*2-1000]); dump();
-mov (ecx, ptr[r13+rsi*4+0]); dump();
-mov (ecx, ptr[r13+rsi*4+1]); dump();
-mov (ecx, ptr[r13+rsi*4+1000]); dump();
-mov (ecx, ptr[r13+rsi*4-1]); dump();
-mov (ecx, ptr[r13+rsi*4-1000]); dump();
-mov (ecx, ptr[r13+rsi*8+0]); dump();
-mov (ecx, ptr[r13+rsi*8+1]); dump();
-mov (ecx, ptr[r13+rsi*8+1000]); dump();
-mov (ecx, ptr[r13+rsi*8-1]); dump();
-mov (ecx, ptr[r13+rsi*8-1000]); dump();
-mov (ecx, ptr[r13+rdi+0]); dump();
-mov (ecx, ptr[r13+rdi+1]); dump();
-mov (ecx, ptr[r13+rdi+1000]); dump();
-mov (ecx, ptr[r13+rdi-1]); dump();
-mov (ecx, ptr[r13+rdi-1000]); dump();
-mov (ecx, ptr[r13+rdi*1+0]); dump();
-mov (ecx, ptr[r13+rdi*1+1]); dump();
-mov (ecx, ptr[r13+rdi*1+1000]); dump();
-mov (ecx, ptr[r13+rdi*1-1]); dump();
-mov (ecx, ptr[r13+rdi*1-1000]); dump();
-mov (ecx, ptr[r13+rdi*2+0]); dump();
-mov (ecx, ptr[r13+rdi*2+1]); dump();
-mov (ecx, ptr[r13+rdi*2+1000]); dump();
-mov (ecx, ptr[r13+rdi*2-1]); dump();
-mov (ecx, ptr[r13+rdi*2-1000]); dump();
-mov (ecx, ptr[r13+rdi*4+0]); dump();
-mov (ecx, ptr[r13+rdi*4+1]); dump();
-mov (ecx, ptr[r13+rdi*4+1000]); dump();
-mov (ecx, ptr[r13+rdi*4-1]); dump();
-mov (ecx, ptr[r13+rdi*4-1000]); dump();
-mov (ecx, ptr[r13+rdi*8+0]); dump();
-mov (ecx, ptr[r13+rdi*8+1]); dump();
-mov (ecx, ptr[r13+rdi*8+1000]); dump();
-mov (ecx, ptr[r13+rdi*8-1]); dump();
-mov (ecx, ptr[r13+rdi*8-1000]); dump();
-mov (ecx, ptr[r13+r9+0]); dump();
-mov (ecx, ptr[r13+r9+1]); dump();
-mov (ecx, ptr[r13+r9+1000]); dump();
-mov (ecx, ptr[r13+r9-1]); dump();
-mov (ecx, ptr[r13+r9-1000]); dump();
-mov (ecx, ptr[r13+r9*1+0]); dump();
-mov (ecx, ptr[r13+r9*1+1]); dump();
-mov (ecx, ptr[r13+r9*1+1000]); dump();
-mov (ecx, ptr[r13+r9*1-1]); dump();
-mov (ecx, ptr[r13+r9*1-1000]); dump();
-mov (ecx, ptr[r13+r9*2+0]); dump();
-mov (ecx, ptr[r13+r9*2+1]); dump();
-mov (ecx, ptr[r13+r9*2+1000]); dump();
-mov (ecx, ptr[r13+r9*2-1]); dump();
-mov (ecx, ptr[r13+r9*2-1000]); dump();
-mov (ecx, ptr[r13+r9*4+0]); dump();
-mov (ecx, ptr[r13+r9*4+1]); dump();
-mov (ecx, ptr[r13+r9*4+1000]); dump();
-mov (ecx, ptr[r13+r9*4-1]); dump();
-mov (ecx, ptr[r13+r9*4-1000]); dump();
-mov (ecx, ptr[r13+r9*8+0]); dump();
-mov (ecx, ptr[r13+r9*8+1]); dump();
-mov (ecx, ptr[r13+r9*8+1000]); dump();
-mov (ecx, ptr[r13+r9*8-1]); dump();
-mov (ecx, ptr[r13+r9*8-1000]); dump();
-}
-    void gen47(){
-mov (ecx, ptr[r13+r10+0]); dump();
-mov (ecx, ptr[r13+r10+1]); dump();
-mov (ecx, ptr[r13+r10+1000]); dump();
-mov (ecx, ptr[r13+r10-1]); dump();
-mov (ecx, ptr[r13+r10-1000]); dump();
-mov (ecx, ptr[r13+r10*1+0]); dump();
-mov (ecx, ptr[r13+r10*1+1]); dump();
-mov (ecx, ptr[r13+r10*1+1000]); dump();
-mov (ecx, ptr[r13+r10*1-1]); dump();
-mov (ecx, ptr[r13+r10*1-1000]); dump();
-mov (ecx, ptr[r13+r10*2+0]); dump();
-mov (ecx, ptr[r13+r10*2+1]); dump();
-mov (ecx, ptr[r13+r10*2+1000]); dump();
-mov (ecx, ptr[r13+r10*2-1]); dump();
-mov (ecx, ptr[r13+r10*2-1000]); dump();
-mov (ecx, ptr[r13+r10*4+0]); dump();
-mov (ecx, ptr[r13+r10*4+1]); dump();
-mov (ecx, ptr[r13+r10*4+1000]); dump();
-mov (ecx, ptr[r13+r10*4-1]); dump();
-mov (ecx, ptr[r13+r10*4-1000]); dump();
-mov (ecx, ptr[r13+r10*8+0]); dump();
-mov (ecx, ptr[r13+r10*8+1]); dump();
-mov (ecx, ptr[r13+r10*8+1000]); dump();
-mov (ecx, ptr[r13+r10*8-1]); dump();
-mov (ecx, ptr[r13+r10*8-1000]); dump();
-mov (ecx, ptr[r13+r11+0]); dump();
-mov (ecx, ptr[r13+r11+1]); dump();
-mov (ecx, ptr[r13+r11+1000]); dump();
-mov (ecx, ptr[r13+r11-1]); dump();
-mov (ecx, ptr[r13+r11-1000]); dump();
-mov (ecx, ptr[r13+r11*1+0]); dump();
-mov (ecx, ptr[r13+r11*1+1]); dump();
-mov (ecx, ptr[r13+r11*1+1000]); dump();
-mov (ecx, ptr[r13+r11*1-1]); dump();
-mov (ecx, ptr[r13+r11*1-1000]); dump();
-mov (ecx, ptr[r13+r11*2+0]); dump();
-mov (ecx, ptr[r13+r11*2+1]); dump();
-mov (ecx, ptr[r13+r11*2+1000]); dump();
-mov (ecx, ptr[r13+r11*2-1]); dump();
-mov (ecx, ptr[r13+r11*2-1000]); dump();
-mov (ecx, ptr[r13+r11*4+0]); dump();
-mov (ecx, ptr[r13+r11*4+1]); dump();
-mov (ecx, ptr[r13+r11*4+1000]); dump();
-mov (ecx, ptr[r13+r11*4-1]); dump();
-mov (ecx, ptr[r13+r11*4-1000]); dump();
-mov (ecx, ptr[r13+r11*8+0]); dump();
-mov (ecx, ptr[r13+r11*8+1]); dump();
-mov (ecx, ptr[r13+r11*8+1000]); dump();
-mov (ecx, ptr[r13+r11*8-1]); dump();
-mov (ecx, ptr[r13+r11*8-1000]); dump();
-mov (ecx, ptr[r13+r12+0]); dump();
-mov (ecx, ptr[r13+r12+1]); dump();
-mov (ecx, ptr[r13+r12+1000]); dump();
-mov (ecx, ptr[r13+r12-1]); dump();
-mov (ecx, ptr[r13+r12-1000]); dump();
-mov (ecx, ptr[r13+r12*1+0]); dump();
-mov (ecx, ptr[r13+r12*1+1]); dump();
-mov (ecx, ptr[r13+r12*1+1000]); dump();
-mov (ecx, ptr[r13+r12*1-1]); dump();
-mov (ecx, ptr[r13+r12*1-1000]); dump();
-mov (ecx, ptr[r13+r12*2+0]); dump();
-mov (ecx, ptr[r13+r12*2+1]); dump();
-mov (ecx, ptr[r13+r12*2+1000]); dump();
-mov (ecx, ptr[r13+r12*2-1]); dump();
-mov (ecx, ptr[r13+r12*2-1000]); dump();
-mov (ecx, ptr[r13+r12*4+0]); dump();
-mov (ecx, ptr[r13+r12*4+1]); dump();
-mov (ecx, ptr[r13+r12*4+1000]); dump();
-mov (ecx, ptr[r13+r12*4-1]); dump();
-mov (ecx, ptr[r13+r12*4-1000]); dump();
-mov (ecx, ptr[r13+r12*8+0]); dump();
-mov (ecx, ptr[r13+r12*8+1]); dump();
-mov (ecx, ptr[r13+r12*8+1000]); dump();
-mov (ecx, ptr[r13+r12*8-1]); dump();
-mov (ecx, ptr[r13+r12*8-1000]); dump();
-mov (ecx, ptr[r13+r13+0]); dump();
-mov (ecx, ptr[r13+r13+1]); dump();
-mov (ecx, ptr[r13+r13+1000]); dump();
-mov (ecx, ptr[r13+r13-1]); dump();
-mov (ecx, ptr[r13+r13-1000]); dump();
-mov (ecx, ptr[r13+r13*1+0]); dump();
-mov (ecx, ptr[r13+r13*1+1]); dump();
-mov (ecx, ptr[r13+r13*1+1000]); dump();
-mov (ecx, ptr[r13+r13*1-1]); dump();
-mov (ecx, ptr[r13+r13*1-1000]); dump();
-mov (ecx, ptr[r13+r13*2+0]); dump();
-mov (ecx, ptr[r13+r13*2+1]); dump();
-mov (ecx, ptr[r13+r13*2+1000]); dump();
-mov (ecx, ptr[r13+r13*2-1]); dump();
-mov (ecx, ptr[r13+r13*2-1000]); dump();
-mov (ecx, ptr[r13+r13*4+0]); dump();
-mov (ecx, ptr[r13+r13*4+1]); dump();
-mov (ecx, ptr[r13+r13*4+1000]); dump();
-mov (ecx, ptr[r13+r13*4-1]); dump();
-mov (ecx, ptr[r13+r13*4-1000]); dump();
-mov (ecx, ptr[r13+r13*8+0]); dump();
-mov (ecx, ptr[r13+r13*8+1]); dump();
-mov (ecx, ptr[r13+r13*8+1000]); dump();
-mov (ecx, ptr[r13+r13*8-1]); dump();
-mov (ecx, ptr[r13+r13*8-1000]); dump();
-}
-    void gen48(){
-mov (ecx, ptr[r13+r14+0]); dump();
-mov (ecx, ptr[r13+r14+1]); dump();
-mov (ecx, ptr[r13+r14+1000]); dump();
-mov (ecx, ptr[r13+r14-1]); dump();
-mov (ecx, ptr[r13+r14-1000]); dump();
-mov (ecx, ptr[r13+r14*1+0]); dump();
-mov (ecx, ptr[r13+r14*1+1]); dump();
-mov (ecx, ptr[r13+r14*1+1000]); dump();
-mov (ecx, ptr[r13+r14*1-1]); dump();
-mov (ecx, ptr[r13+r14*1-1000]); dump();
-mov (ecx, ptr[r13+r14*2+0]); dump();
-mov (ecx, ptr[r13+r14*2+1]); dump();
-mov (ecx, ptr[r13+r14*2+1000]); dump();
-mov (ecx, ptr[r13+r14*2-1]); dump();
-mov (ecx, ptr[r13+r14*2-1000]); dump();
-mov (ecx, ptr[r13+r14*4+0]); dump();
-mov (ecx, ptr[r13+r14*4+1]); dump();
-mov (ecx, ptr[r13+r14*4+1000]); dump();
-mov (ecx, ptr[r13+r14*4-1]); dump();
-mov (ecx, ptr[r13+r14*4-1000]); dump();
-mov (ecx, ptr[r13+r14*8+0]); dump();
-mov (ecx, ptr[r13+r14*8+1]); dump();
-mov (ecx, ptr[r13+r14*8+1000]); dump();
-mov (ecx, ptr[r13+r14*8-1]); dump();
-mov (ecx, ptr[r13+r14*8-1000]); dump();
-mov (ecx, ptr[r13+r15+0]); dump();
-mov (ecx, ptr[r13+r15+1]); dump();
-mov (ecx, ptr[r13+r15+1000]); dump();
-mov (ecx, ptr[r13+r15-1]); dump();
-mov (ecx, ptr[r13+r15-1000]); dump();
-mov (ecx, ptr[r13+r15*1+0]); dump();
-mov (ecx, ptr[r13+r15*1+1]); dump();
-mov (ecx, ptr[r13+r15*1+1000]); dump();
-mov (ecx, ptr[r13+r15*1-1]); dump();
-mov (ecx, ptr[r13+r15*1-1000]); dump();
-mov (ecx, ptr[r13+r15*2+0]); dump();
-mov (ecx, ptr[r13+r15*2+1]); dump();
-mov (ecx, ptr[r13+r15*2+1000]); dump();
-mov (ecx, ptr[r13+r15*2-1]); dump();
-mov (ecx, ptr[r13+r15*2-1000]); dump();
-mov (ecx, ptr[r13+r15*4+0]); dump();
-mov (ecx, ptr[r13+r15*4+1]); dump();
-mov (ecx, ptr[r13+r15*4+1000]); dump();
-mov (ecx, ptr[r13+r15*4-1]); dump();
-mov (ecx, ptr[r13+r15*4-1000]); dump();
-mov (ecx, ptr[r13+r15*8+0]); dump();
-mov (ecx, ptr[r13+r15*8+1]); dump();
-mov (ecx, ptr[r13+r15*8+1000]); dump();
-mov (ecx, ptr[r13+r15*8-1]); dump();
-mov (ecx, ptr[r13+r15*8-1000]); dump();
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r14+rax+0]); dump();
-mov (ecx, ptr[r14+rax+1]); dump();
-mov (ecx, ptr[r14+rax+1000]); dump();
-mov (ecx, ptr[r14+rax-1]); dump();
-mov (ecx, ptr[r14+rax-1000]); dump();
-mov (ecx, ptr[r14+rax*1+0]); dump();
-mov (ecx, ptr[r14+rax*1+1]); dump();
-mov (ecx, ptr[r14+rax*1+1000]); dump();
-mov (ecx, ptr[r14+rax*1-1]); dump();
-mov (ecx, ptr[r14+rax*1-1000]); dump();
-mov (ecx, ptr[r14+rax*2+0]); dump();
-mov (ecx, ptr[r14+rax*2+1]); dump();
-mov (ecx, ptr[r14+rax*2+1000]); dump();
-mov (ecx, ptr[r14+rax*2-1]); dump();
-mov (ecx, ptr[r14+rax*2-1000]); dump();
-mov (ecx, ptr[r14+rax*4+0]); dump();
-mov (ecx, ptr[r14+rax*4+1]); dump();
-mov (ecx, ptr[r14+rax*4+1000]); dump();
-mov (ecx, ptr[r14+rax*4-1]); dump();
-mov (ecx, ptr[r14+rax*4-1000]); dump();
-mov (ecx, ptr[r14+rax*8+0]); dump();
-mov (ecx, ptr[r14+rax*8+1]); dump();
-mov (ecx, ptr[r14+rax*8+1000]); dump();
-mov (ecx, ptr[r14+rax*8-1]); dump();
-mov (ecx, ptr[r14+rax*8-1000]); dump();
-}
-    void gen49(){
-mov (ecx, ptr[r14+rcx+0]); dump();
-mov (ecx, ptr[r14+rcx+1]); dump();
-mov (ecx, ptr[r14+rcx+1000]); dump();
-mov (ecx, ptr[r14+rcx-1]); dump();
-mov (ecx, ptr[r14+rcx-1000]); dump();
-mov (ecx, ptr[r14+rcx*1+0]); dump();
-mov (ecx, ptr[r14+rcx*1+1]); dump();
-mov (ecx, ptr[r14+rcx*1+1000]); dump();
-mov (ecx, ptr[r14+rcx*1-1]); dump();
-mov (ecx, ptr[r14+rcx*1-1000]); dump();
-mov (ecx, ptr[r14+rcx*2+0]); dump();
-mov (ecx, ptr[r14+rcx*2+1]); dump();
-mov (ecx, ptr[r14+rcx*2+1000]); dump();
-mov (ecx, ptr[r14+rcx*2-1]); dump();
-mov (ecx, ptr[r14+rcx*2-1000]); dump();
-mov (ecx, ptr[r14+rcx*4+0]); dump();
-mov (ecx, ptr[r14+rcx*4+1]); dump();
-mov (ecx, ptr[r14+rcx*4+1000]); dump();
-mov (ecx, ptr[r14+rcx*4-1]); dump();
-mov (ecx, ptr[r14+rcx*4-1000]); dump();
-mov (ecx, ptr[r14+rcx*8+0]); dump();
-mov (ecx, ptr[r14+rcx*8+1]); dump();
-mov (ecx, ptr[r14+rcx*8+1000]); dump();
-mov (ecx, ptr[r14+rcx*8-1]); dump();
-mov (ecx, ptr[r14+rcx*8-1000]); dump();
-mov (ecx, ptr[r14+rdx+0]); dump();
-mov (ecx, ptr[r14+rdx+1]); dump();
-mov (ecx, ptr[r14+rdx+1000]); dump();
-mov (ecx, ptr[r14+rdx-1]); dump();
-mov (ecx, ptr[r14+rdx-1000]); dump();
-mov (ecx, ptr[r14+rdx*1+0]); dump();
-mov (ecx, ptr[r14+rdx*1+1]); dump();
-mov (ecx, ptr[r14+rdx*1+1000]); dump();
-mov (ecx, ptr[r14+rdx*1-1]); dump();
-mov (ecx, ptr[r14+rdx*1-1000]); dump();
-mov (ecx, ptr[r14+rdx*2+0]); dump();
-mov (ecx, ptr[r14+rdx*2+1]); dump();
-mov (ecx, ptr[r14+rdx*2+1000]); dump();
-mov (ecx, ptr[r14+rdx*2-1]); dump();
-mov (ecx, ptr[r14+rdx*2-1000]); dump();
-mov (ecx, ptr[r14+rdx*4+0]); dump();
-mov (ecx, ptr[r14+rdx*4+1]); dump();
-mov (ecx, ptr[r14+rdx*4+1000]); dump();
-mov (ecx, ptr[r14+rdx*4-1]); dump();
-mov (ecx, ptr[r14+rdx*4-1000]); dump();
-mov (ecx, ptr[r14+rdx*8+0]); dump();
-mov (ecx, ptr[r14+rdx*8+1]); dump();
-mov (ecx, ptr[r14+rdx*8+1000]); dump();
-mov (ecx, ptr[r14+rdx*8-1]); dump();
-mov (ecx, ptr[r14+rdx*8-1000]); dump();
-mov (ecx, ptr[r14+rbx+0]); dump();
-mov (ecx, ptr[r14+rbx+1]); dump();
-mov (ecx, ptr[r14+rbx+1000]); dump();
-mov (ecx, ptr[r14+rbx-1]); dump();
-mov (ecx, ptr[r14+rbx-1000]); dump();
-mov (ecx, ptr[r14+rbx*1+0]); dump();
-mov (ecx, ptr[r14+rbx*1+1]); dump();
-mov (ecx, ptr[r14+rbx*1+1000]); dump();
-mov (ecx, ptr[r14+rbx*1-1]); dump();
-mov (ecx, ptr[r14+rbx*1-1000]); dump();
-mov (ecx, ptr[r14+rbx*2+0]); dump();
-mov (ecx, ptr[r14+rbx*2+1]); dump();
-mov (ecx, ptr[r14+rbx*2+1000]); dump();
-mov (ecx, ptr[r14+rbx*2-1]); dump();
-mov (ecx, ptr[r14+rbx*2-1000]); dump();
-mov (ecx, ptr[r14+rbx*4+0]); dump();
-mov (ecx, ptr[r14+rbx*4+1]); dump();
-mov (ecx, ptr[r14+rbx*4+1000]); dump();
-mov (ecx, ptr[r14+rbx*4-1]); dump();
-mov (ecx, ptr[r14+rbx*4-1000]); dump();
-mov (ecx, ptr[r14+rbx*8+0]); dump();
-mov (ecx, ptr[r14+rbx*8+1]); dump();
-mov (ecx, ptr[r14+rbx*8+1000]); dump();
-mov (ecx, ptr[r14+rbx*8-1]); dump();
-mov (ecx, ptr[r14+rbx*8-1000]); dump();
-mov (ecx, ptr[r14+rbp+0]); dump();
-mov (ecx, ptr[r14+rbp+1]); dump();
-mov (ecx, ptr[r14+rbp+1000]); dump();
-mov (ecx, ptr[r14+rbp-1]); dump();
-mov (ecx, ptr[r14+rbp-1000]); dump();
-mov (ecx, ptr[r14+rbp*1+0]); dump();
-mov (ecx, ptr[r14+rbp*1+1]); dump();
-mov (ecx, ptr[r14+rbp*1+1000]); dump();
-mov (ecx, ptr[r14+rbp*1-1]); dump();
-mov (ecx, ptr[r14+rbp*1-1000]); dump();
-mov (ecx, ptr[r14+rbp*2+0]); dump();
-mov (ecx, ptr[r14+rbp*2+1]); dump();
-mov (ecx, ptr[r14+rbp*2+1000]); dump();
-mov (ecx, ptr[r14+rbp*2-1]); dump();
-mov (ecx, ptr[r14+rbp*2-1000]); dump();
-mov (ecx, ptr[r14+rbp*4+0]); dump();
-mov (ecx, ptr[r14+rbp*4+1]); dump();
-mov (ecx, ptr[r14+rbp*4+1000]); dump();
-mov (ecx, ptr[r14+rbp*4-1]); dump();
-mov (ecx, ptr[r14+rbp*4-1000]); dump();
-mov (ecx, ptr[r14+rbp*8+0]); dump();
-mov (ecx, ptr[r14+rbp*8+1]); dump();
-mov (ecx, ptr[r14+rbp*8+1000]); dump();
-mov (ecx, ptr[r14+rbp*8-1]); dump();
-mov (ecx, ptr[r14+rbp*8-1000]); dump();
-}
-    void gen50(){
-mov (ecx, ptr[r14+rsi+0]); dump();
-mov (ecx, ptr[r14+rsi+1]); dump();
-mov (ecx, ptr[r14+rsi+1000]); dump();
-mov (ecx, ptr[r14+rsi-1]); dump();
-mov (ecx, ptr[r14+rsi-1000]); dump();
-mov (ecx, ptr[r14+rsi*1+0]); dump();
-mov (ecx, ptr[r14+rsi*1+1]); dump();
-mov (ecx, ptr[r14+rsi*1+1000]); dump();
-mov (ecx, ptr[r14+rsi*1-1]); dump();
-mov (ecx, ptr[r14+rsi*1-1000]); dump();
-mov (ecx, ptr[r14+rsi*2+0]); dump();
-mov (ecx, ptr[r14+rsi*2+1]); dump();
-mov (ecx, ptr[r14+rsi*2+1000]); dump();
-mov (ecx, ptr[r14+rsi*2-1]); dump();
-mov (ecx, ptr[r14+rsi*2-1000]); dump();
-mov (ecx, ptr[r14+rsi*4+0]); dump();
-mov (ecx, ptr[r14+rsi*4+1]); dump();
-mov (ecx, ptr[r14+rsi*4+1000]); dump();
-mov (ecx, ptr[r14+rsi*4-1]); dump();
-mov (ecx, ptr[r14+rsi*4-1000]); dump();
-mov (ecx, ptr[r14+rsi*8+0]); dump();
-mov (ecx, ptr[r14+rsi*8+1]); dump();
-mov (ecx, ptr[r14+rsi*8+1000]); dump();
-mov (ecx, ptr[r14+rsi*8-1]); dump();
-mov (ecx, ptr[r14+rsi*8-1000]); dump();
-mov (ecx, ptr[r14+rdi+0]); dump();
-mov (ecx, ptr[r14+rdi+1]); dump();
-mov (ecx, ptr[r14+rdi+1000]); dump();
-mov (ecx, ptr[r14+rdi-1]); dump();
-mov (ecx, ptr[r14+rdi-1000]); dump();
-mov (ecx, ptr[r14+rdi*1+0]); dump();
-mov (ecx, ptr[r14+rdi*1+1]); dump();
-mov (ecx, ptr[r14+rdi*1+1000]); dump();
-mov (ecx, ptr[r14+rdi*1-1]); dump();
-mov (ecx, ptr[r14+rdi*1-1000]); dump();
-mov (ecx, ptr[r14+rdi*2+0]); dump();
-mov (ecx, ptr[r14+rdi*2+1]); dump();
-mov (ecx, ptr[r14+rdi*2+1000]); dump();
-mov (ecx, ptr[r14+rdi*2-1]); dump();
-mov (ecx, ptr[r14+rdi*2-1000]); dump();
-mov (ecx, ptr[r14+rdi*4+0]); dump();
-mov (ecx, ptr[r14+rdi*4+1]); dump();
-mov (ecx, ptr[r14+rdi*4+1000]); dump();
-mov (ecx, ptr[r14+rdi*4-1]); dump();
-mov (ecx, ptr[r14+rdi*4-1000]); dump();
-mov (ecx, ptr[r14+rdi*8+0]); dump();
-mov (ecx, ptr[r14+rdi*8+1]); dump();
-mov (ecx, ptr[r14+rdi*8+1000]); dump();
-mov (ecx, ptr[r14+rdi*8-1]); dump();
-mov (ecx, ptr[r14+rdi*8-1000]); dump();
-mov (ecx, ptr[r14+r9+0]); dump();
-mov (ecx, ptr[r14+r9+1]); dump();
-mov (ecx, ptr[r14+r9+1000]); dump();
-mov (ecx, ptr[r14+r9-1]); dump();
-mov (ecx, ptr[r14+r9-1000]); dump();
-mov (ecx, ptr[r14+r9*1+0]); dump();
-mov (ecx, ptr[r14+r9*1+1]); dump();
-mov (ecx, ptr[r14+r9*1+1000]); dump();
-mov (ecx, ptr[r14+r9*1-1]); dump();
-mov (ecx, ptr[r14+r9*1-1000]); dump();
-mov (ecx, ptr[r14+r9*2+0]); dump();
-mov (ecx, ptr[r14+r9*2+1]); dump();
-mov (ecx, ptr[r14+r9*2+1000]); dump();
-mov (ecx, ptr[r14+r9*2-1]); dump();
-mov (ecx, ptr[r14+r9*2-1000]); dump();
-mov (ecx, ptr[r14+r9*4+0]); dump();
-mov (ecx, ptr[r14+r9*4+1]); dump();
-mov (ecx, ptr[r14+r9*4+1000]); dump();
-mov (ecx, ptr[r14+r9*4-1]); dump();
-mov (ecx, ptr[r14+r9*4-1000]); dump();
-mov (ecx, ptr[r14+r9*8+0]); dump();
-mov (ecx, ptr[r14+r9*8+1]); dump();
-mov (ecx, ptr[r14+r9*8+1000]); dump();
-mov (ecx, ptr[r14+r9*8-1]); dump();
-mov (ecx, ptr[r14+r9*8-1000]); dump();
-mov (ecx, ptr[r14+r10+0]); dump();
-mov (ecx, ptr[r14+r10+1]); dump();
-mov (ecx, ptr[r14+r10+1000]); dump();
-mov (ecx, ptr[r14+r10-1]); dump();
-mov (ecx, ptr[r14+r10-1000]); dump();
-mov (ecx, ptr[r14+r10*1+0]); dump();
-mov (ecx, ptr[r14+r10*1+1]); dump();
-mov (ecx, ptr[r14+r10*1+1000]); dump();
-mov (ecx, ptr[r14+r10*1-1]); dump();
-mov (ecx, ptr[r14+r10*1-1000]); dump();
-mov (ecx, ptr[r14+r10*2+0]); dump();
-mov (ecx, ptr[r14+r10*2+1]); dump();
-mov (ecx, ptr[r14+r10*2+1000]); dump();
-mov (ecx, ptr[r14+r10*2-1]); dump();
-mov (ecx, ptr[r14+r10*2-1000]); dump();
-mov (ecx, ptr[r14+r10*4+0]); dump();
-mov (ecx, ptr[r14+r10*4+1]); dump();
-mov (ecx, ptr[r14+r10*4+1000]); dump();
-mov (ecx, ptr[r14+r10*4-1]); dump();
-mov (ecx, ptr[r14+r10*4-1000]); dump();
-mov (ecx, ptr[r14+r10*8+0]); dump();
-mov (ecx, ptr[r14+r10*8+1]); dump();
-mov (ecx, ptr[r14+r10*8+1000]); dump();
-mov (ecx, ptr[r14+r10*8-1]); dump();
-mov (ecx, ptr[r14+r10*8-1000]); dump();
-}
-    void gen51(){
-mov (ecx, ptr[r14+r11+0]); dump();
-mov (ecx, ptr[r14+r11+1]); dump();
-mov (ecx, ptr[r14+r11+1000]); dump();
-mov (ecx, ptr[r14+r11-1]); dump();
-mov (ecx, ptr[r14+r11-1000]); dump();
-mov (ecx, ptr[r14+r11*1+0]); dump();
-mov (ecx, ptr[r14+r11*1+1]); dump();
-mov (ecx, ptr[r14+r11*1+1000]); dump();
-mov (ecx, ptr[r14+r11*1-1]); dump();
-mov (ecx, ptr[r14+r11*1-1000]); dump();
-mov (ecx, ptr[r14+r11*2+0]); dump();
-mov (ecx, ptr[r14+r11*2+1]); dump();
-mov (ecx, ptr[r14+r11*2+1000]); dump();
-mov (ecx, ptr[r14+r11*2-1]); dump();
-mov (ecx, ptr[r14+r11*2-1000]); dump();
-mov (ecx, ptr[r14+r11*4+0]); dump();
-mov (ecx, ptr[r14+r11*4+1]); dump();
-mov (ecx, ptr[r14+r11*4+1000]); dump();
-mov (ecx, ptr[r14+r11*4-1]); dump();
-mov (ecx, ptr[r14+r11*4-1000]); dump();
-mov (ecx, ptr[r14+r11*8+0]); dump();
-mov (ecx, ptr[r14+r11*8+1]); dump();
-mov (ecx, ptr[r14+r11*8+1000]); dump();
-mov (ecx, ptr[r14+r11*8-1]); dump();
-mov (ecx, ptr[r14+r11*8-1000]); dump();
-mov (ecx, ptr[r14+r12+0]); dump();
-mov (ecx, ptr[r14+r12+1]); dump();
-mov (ecx, ptr[r14+r12+1000]); dump();
-mov (ecx, ptr[r14+r12-1]); dump();
-mov (ecx, ptr[r14+r12-1000]); dump();
-mov (ecx, ptr[r14+r12*1+0]); dump();
-mov (ecx, ptr[r14+r12*1+1]); dump();
-mov (ecx, ptr[r14+r12*1+1000]); dump();
-mov (ecx, ptr[r14+r12*1-1]); dump();
-mov (ecx, ptr[r14+r12*1-1000]); dump();
-mov (ecx, ptr[r14+r12*2+0]); dump();
-mov (ecx, ptr[r14+r12*2+1]); dump();
-mov (ecx, ptr[r14+r12*2+1000]); dump();
-mov (ecx, ptr[r14+r12*2-1]); dump();
-mov (ecx, ptr[r14+r12*2-1000]); dump();
-mov (ecx, ptr[r14+r12*4+0]); dump();
-mov (ecx, ptr[r14+r12*4+1]); dump();
-mov (ecx, ptr[r14+r12*4+1000]); dump();
-mov (ecx, ptr[r14+r12*4-1]); dump();
-mov (ecx, ptr[r14+r12*4-1000]); dump();
-mov (ecx, ptr[r14+r12*8+0]); dump();
-mov (ecx, ptr[r14+r12*8+1]); dump();
-mov (ecx, ptr[r14+r12*8+1000]); dump();
-mov (ecx, ptr[r14+r12*8-1]); dump();
-mov (ecx, ptr[r14+r12*8-1000]); dump();
-mov (ecx, ptr[r14+r13+0]); dump();
-mov (ecx, ptr[r14+r13+1]); dump();
-mov (ecx, ptr[r14+r13+1000]); dump();
-mov (ecx, ptr[r14+r13-1]); dump();
-mov (ecx, ptr[r14+r13-1000]); dump();
-mov (ecx, ptr[r14+r13*1+0]); dump();
-mov (ecx, ptr[r14+r13*1+1]); dump();
-mov (ecx, ptr[r14+r13*1+1000]); dump();
-mov (ecx, ptr[r14+r13*1-1]); dump();
-mov (ecx, ptr[r14+r13*1-1000]); dump();
-mov (ecx, ptr[r14+r13*2+0]); dump();
-mov (ecx, ptr[r14+r13*2+1]); dump();
-mov (ecx, ptr[r14+r13*2+1000]); dump();
-mov (ecx, ptr[r14+r13*2-1]); dump();
-mov (ecx, ptr[r14+r13*2-1000]); dump();
-mov (ecx, ptr[r14+r13*4+0]); dump();
-mov (ecx, ptr[r14+r13*4+1]); dump();
-mov (ecx, ptr[r14+r13*4+1000]); dump();
-mov (ecx, ptr[r14+r13*4-1]); dump();
-mov (ecx, ptr[r14+r13*4-1000]); dump();
-mov (ecx, ptr[r14+r13*8+0]); dump();
-mov (ecx, ptr[r14+r13*8+1]); dump();
-mov (ecx, ptr[r14+r13*8+1000]); dump();
-mov (ecx, ptr[r14+r13*8-1]); dump();
-mov (ecx, ptr[r14+r13*8-1000]); dump();
-mov (ecx, ptr[r14+r14+0]); dump();
-mov (ecx, ptr[r14+r14+1]); dump();
-mov (ecx, ptr[r14+r14+1000]); dump();
-mov (ecx, ptr[r14+r14-1]); dump();
-mov (ecx, ptr[r14+r14-1000]); dump();
-mov (ecx, ptr[r14+r14*1+0]); dump();
-mov (ecx, ptr[r14+r14*1+1]); dump();
-mov (ecx, ptr[r14+r14*1+1000]); dump();
-mov (ecx, ptr[r14+r14*1-1]); dump();
-mov (ecx, ptr[r14+r14*1-1000]); dump();
-mov (ecx, ptr[r14+r14*2+0]); dump();
-mov (ecx, ptr[r14+r14*2+1]); dump();
-mov (ecx, ptr[r14+r14*2+1000]); dump();
-mov (ecx, ptr[r14+r14*2-1]); dump();
-mov (ecx, ptr[r14+r14*2-1000]); dump();
-mov (ecx, ptr[r14+r14*4+0]); dump();
-mov (ecx, ptr[r14+r14*4+1]); dump();
-mov (ecx, ptr[r14+r14*4+1000]); dump();
-mov (ecx, ptr[r14+r14*4-1]); dump();
-mov (ecx, ptr[r14+r14*4-1000]); dump();
-mov (ecx, ptr[r14+r14*8+0]); dump();
-mov (ecx, ptr[r14+r14*8+1]); dump();
-mov (ecx, ptr[r14+r14*8+1000]); dump();
-mov (ecx, ptr[r14+r14*8-1]); dump();
-mov (ecx, ptr[r14+r14*8-1000]); dump();
-}
-    void gen52(){
-mov (ecx, ptr[r14+r15+0]); dump();
-mov (ecx, ptr[r14+r15+1]); dump();
-mov (ecx, ptr[r14+r15+1000]); dump();
-mov (ecx, ptr[r14+r15-1]); dump();
-mov (ecx, ptr[r14+r15-1000]); dump();
-mov (ecx, ptr[r14+r15*1+0]); dump();
-mov (ecx, ptr[r14+r15*1+1]); dump();
-mov (ecx, ptr[r14+r15*1+1000]); dump();
-mov (ecx, ptr[r14+r15*1-1]); dump();
-mov (ecx, ptr[r14+r15*1-1000]); dump();
-mov (ecx, ptr[r14+r15*2+0]); dump();
-mov (ecx, ptr[r14+r15*2+1]); dump();
-mov (ecx, ptr[r14+r15*2+1000]); dump();
-mov (ecx, ptr[r14+r15*2-1]); dump();
-mov (ecx, ptr[r14+r15*2-1000]); dump();
-mov (ecx, ptr[r14+r15*4+0]); dump();
-mov (ecx, ptr[r14+r15*4+1]); dump();
-mov (ecx, ptr[r14+r15*4+1000]); dump();
-mov (ecx, ptr[r14+r15*4-1]); dump();
-mov (ecx, ptr[r14+r15*4-1000]); dump();
-mov (ecx, ptr[r14+r15*8+0]); dump();
-mov (ecx, ptr[r14+r15*8+1]); dump();
-mov (ecx, ptr[r14+r15*8+1000]); dump();
-mov (ecx, ptr[r14+r15*8-1]); dump();
-mov (ecx, ptr[r14+r15*8-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r15+rax+0]); dump();
-mov (ecx, ptr[r15+rax+1]); dump();
-mov (ecx, ptr[r15+rax+1000]); dump();
-mov (ecx, ptr[r15+rax-1]); dump();
-mov (ecx, ptr[r15+rax-1000]); dump();
-mov (ecx, ptr[r15+rax*1+0]); dump();
-mov (ecx, ptr[r15+rax*1+1]); dump();
-mov (ecx, ptr[r15+rax*1+1000]); dump();
-mov (ecx, ptr[r15+rax*1-1]); dump();
-mov (ecx, ptr[r15+rax*1-1000]); dump();
-mov (ecx, ptr[r15+rax*2+0]); dump();
-mov (ecx, ptr[r15+rax*2+1]); dump();
-mov (ecx, ptr[r15+rax*2+1000]); dump();
-mov (ecx, ptr[r15+rax*2-1]); dump();
-mov (ecx, ptr[r15+rax*2-1000]); dump();
-mov (ecx, ptr[r15+rax*4+0]); dump();
-mov (ecx, ptr[r15+rax*4+1]); dump();
-mov (ecx, ptr[r15+rax*4+1000]); dump();
-mov (ecx, ptr[r15+rax*4-1]); dump();
-mov (ecx, ptr[r15+rax*4-1000]); dump();
-mov (ecx, ptr[r15+rax*8+0]); dump();
-mov (ecx, ptr[r15+rax*8+1]); dump();
-mov (ecx, ptr[r15+rax*8+1000]); dump();
-mov (ecx, ptr[r15+rax*8-1]); dump();
-mov (ecx, ptr[r15+rax*8-1000]); dump();
-mov (ecx, ptr[r15+rcx+0]); dump();
-mov (ecx, ptr[r15+rcx+1]); dump();
-mov (ecx, ptr[r15+rcx+1000]); dump();
-mov (ecx, ptr[r15+rcx-1]); dump();
-mov (ecx, ptr[r15+rcx-1000]); dump();
-mov (ecx, ptr[r15+rcx*1+0]); dump();
-mov (ecx, ptr[r15+rcx*1+1]); dump();
-mov (ecx, ptr[r15+rcx*1+1000]); dump();
-mov (ecx, ptr[r15+rcx*1-1]); dump();
-mov (ecx, ptr[r15+rcx*1-1000]); dump();
-mov (ecx, ptr[r15+rcx*2+0]); dump();
-mov (ecx, ptr[r15+rcx*2+1]); dump();
-mov (ecx, ptr[r15+rcx*2+1000]); dump();
-mov (ecx, ptr[r15+rcx*2-1]); dump();
-mov (ecx, ptr[r15+rcx*2-1000]); dump();
-mov (ecx, ptr[r15+rcx*4+0]); dump();
-mov (ecx, ptr[r15+rcx*4+1]); dump();
-mov (ecx, ptr[r15+rcx*4+1000]); dump();
-mov (ecx, ptr[r15+rcx*4-1]); dump();
-mov (ecx, ptr[r15+rcx*4-1000]); dump();
-mov (ecx, ptr[r15+rcx*8+0]); dump();
-mov (ecx, ptr[r15+rcx*8+1]); dump();
-mov (ecx, ptr[r15+rcx*8+1000]); dump();
-mov (ecx, ptr[r15+rcx*8-1]); dump();
-mov (ecx, ptr[r15+rcx*8-1000]); dump();
-}
-    void gen53(){
-mov (ecx, ptr[r15+rdx+0]); dump();
-mov (ecx, ptr[r15+rdx+1]); dump();
-mov (ecx, ptr[r15+rdx+1000]); dump();
-mov (ecx, ptr[r15+rdx-1]); dump();
-mov (ecx, ptr[r15+rdx-1000]); dump();
-mov (ecx, ptr[r15+rdx*1+0]); dump();
-mov (ecx, ptr[r15+rdx*1+1]); dump();
-mov (ecx, ptr[r15+rdx*1+1000]); dump();
-mov (ecx, ptr[r15+rdx*1-1]); dump();
-mov (ecx, ptr[r15+rdx*1-1000]); dump();
-mov (ecx, ptr[r15+rdx*2+0]); dump();
-mov (ecx, ptr[r15+rdx*2+1]); dump();
-mov (ecx, ptr[r15+rdx*2+1000]); dump();
-mov (ecx, ptr[r15+rdx*2-1]); dump();
-mov (ecx, ptr[r15+rdx*2-1000]); dump();
-mov (ecx, ptr[r15+rdx*4+0]); dump();
-mov (ecx, ptr[r15+rdx*4+1]); dump();
-mov (ecx, ptr[r15+rdx*4+1000]); dump();
-mov (ecx, ptr[r15+rdx*4-1]); dump();
-mov (ecx, ptr[r15+rdx*4-1000]); dump();
-mov (ecx, ptr[r15+rdx*8+0]); dump();
-mov (ecx, ptr[r15+rdx*8+1]); dump();
-mov (ecx, ptr[r15+rdx*8+1000]); dump();
-mov (ecx, ptr[r15+rdx*8-1]); dump();
-mov (ecx, ptr[r15+rdx*8-1000]); dump();
-mov (ecx, ptr[r15+rbx+0]); dump();
-mov (ecx, ptr[r15+rbx+1]); dump();
-mov (ecx, ptr[r15+rbx+1000]); dump();
-mov (ecx, ptr[r15+rbx-1]); dump();
-mov (ecx, ptr[r15+rbx-1000]); dump();
-mov (ecx, ptr[r15+rbx*1+0]); dump();
-mov (ecx, ptr[r15+rbx*1+1]); dump();
-mov (ecx, ptr[r15+rbx*1+1000]); dump();
-mov (ecx, ptr[r15+rbx*1-1]); dump();
-mov (ecx, ptr[r15+rbx*1-1000]); dump();
-mov (ecx, ptr[r15+rbx*2+0]); dump();
-mov (ecx, ptr[r15+rbx*2+1]); dump();
-mov (ecx, ptr[r15+rbx*2+1000]); dump();
-mov (ecx, ptr[r15+rbx*2-1]); dump();
-mov (ecx, ptr[r15+rbx*2-1000]); dump();
-mov (ecx, ptr[r15+rbx*4+0]); dump();
-mov (ecx, ptr[r15+rbx*4+1]); dump();
-mov (ecx, ptr[r15+rbx*4+1000]); dump();
-mov (ecx, ptr[r15+rbx*4-1]); dump();
-mov (ecx, ptr[r15+rbx*4-1000]); dump();
-mov (ecx, ptr[r15+rbx*8+0]); dump();
-mov (ecx, ptr[r15+rbx*8+1]); dump();
-mov (ecx, ptr[r15+rbx*8+1000]); dump();
-mov (ecx, ptr[r15+rbx*8-1]); dump();
-mov (ecx, ptr[r15+rbx*8-1000]); dump();
-mov (ecx, ptr[r15+rbp+0]); dump();
-mov (ecx, ptr[r15+rbp+1]); dump();
-mov (ecx, ptr[r15+rbp+1000]); dump();
-mov (ecx, ptr[r15+rbp-1]); dump();
-mov (ecx, ptr[r15+rbp-1000]); dump();
-mov (ecx, ptr[r15+rbp*1+0]); dump();
-mov (ecx, ptr[r15+rbp*1+1]); dump();
-mov (ecx, ptr[r15+rbp*1+1000]); dump();
-mov (ecx, ptr[r15+rbp*1-1]); dump();
-mov (ecx, ptr[r15+rbp*1-1000]); dump();
-mov (ecx, ptr[r15+rbp*2+0]); dump();
-mov (ecx, ptr[r15+rbp*2+1]); dump();
-mov (ecx, ptr[r15+rbp*2+1000]); dump();
-mov (ecx, ptr[r15+rbp*2-1]); dump();
-mov (ecx, ptr[r15+rbp*2-1000]); dump();
-mov (ecx, ptr[r15+rbp*4+0]); dump();
-mov (ecx, ptr[r15+rbp*4+1]); dump();
-mov (ecx, ptr[r15+rbp*4+1000]); dump();
-mov (ecx, ptr[r15+rbp*4-1]); dump();
-mov (ecx, ptr[r15+rbp*4-1000]); dump();
-mov (ecx, ptr[r15+rbp*8+0]); dump();
-mov (ecx, ptr[r15+rbp*8+1]); dump();
-mov (ecx, ptr[r15+rbp*8+1000]); dump();
-mov (ecx, ptr[r15+rbp*8-1]); dump();
-mov (ecx, ptr[r15+rbp*8-1000]); dump();
-mov (ecx, ptr[r15+rsi+0]); dump();
-mov (ecx, ptr[r15+rsi+1]); dump();
-mov (ecx, ptr[r15+rsi+1000]); dump();
-mov (ecx, ptr[r15+rsi-1]); dump();
-mov (ecx, ptr[r15+rsi-1000]); dump();
-mov (ecx, ptr[r15+rsi*1+0]); dump();
-mov (ecx, ptr[r15+rsi*1+1]); dump();
-mov (ecx, ptr[r15+rsi*1+1000]); dump();
-mov (ecx, ptr[r15+rsi*1-1]); dump();
-mov (ecx, ptr[r15+rsi*1-1000]); dump();
-mov (ecx, ptr[r15+rsi*2+0]); dump();
-mov (ecx, ptr[r15+rsi*2+1]); dump();
-mov (ecx, ptr[r15+rsi*2+1000]); dump();
-mov (ecx, ptr[r15+rsi*2-1]); dump();
-mov (ecx, ptr[r15+rsi*2-1000]); dump();
-mov (ecx, ptr[r15+rsi*4+0]); dump();
-mov (ecx, ptr[r15+rsi*4+1]); dump();
-mov (ecx, ptr[r15+rsi*4+1000]); dump();
-mov (ecx, ptr[r15+rsi*4-1]); dump();
-mov (ecx, ptr[r15+rsi*4-1000]); dump();
-mov (ecx, ptr[r15+rsi*8+0]); dump();
-mov (ecx, ptr[r15+rsi*8+1]); dump();
-mov (ecx, ptr[r15+rsi*8+1000]); dump();
-mov (ecx, ptr[r15+rsi*8-1]); dump();
-mov (ecx, ptr[r15+rsi*8-1000]); dump();
-}
-    void gen54(){
-mov (ecx, ptr[r15+rdi+0]); dump();
-mov (ecx, ptr[r15+rdi+1]); dump();
-mov (ecx, ptr[r15+rdi+1000]); dump();
-mov (ecx, ptr[r15+rdi-1]); dump();
-mov (ecx, ptr[r15+rdi-1000]); dump();
-mov (ecx, ptr[r15+rdi*1+0]); dump();
-mov (ecx, ptr[r15+rdi*1+1]); dump();
-mov (ecx, ptr[r15+rdi*1+1000]); dump();
-mov (ecx, ptr[r15+rdi*1-1]); dump();
-mov (ecx, ptr[r15+rdi*1-1000]); dump();
-mov (ecx, ptr[r15+rdi*2+0]); dump();
-mov (ecx, ptr[r15+rdi*2+1]); dump();
-mov (ecx, ptr[r15+rdi*2+1000]); dump();
-mov (ecx, ptr[r15+rdi*2-1]); dump();
-mov (ecx, ptr[r15+rdi*2-1000]); dump();
-mov (ecx, ptr[r15+rdi*4+0]); dump();
-mov (ecx, ptr[r15+rdi*4+1]); dump();
-mov (ecx, ptr[r15+rdi*4+1000]); dump();
-mov (ecx, ptr[r15+rdi*4-1]); dump();
-mov (ecx, ptr[r15+rdi*4-1000]); dump();
-mov (ecx, ptr[r15+rdi*8+0]); dump();
-mov (ecx, ptr[r15+rdi*8+1]); dump();
-mov (ecx, ptr[r15+rdi*8+1000]); dump();
-mov (ecx, ptr[r15+rdi*8-1]); dump();
-mov (ecx, ptr[r15+rdi*8-1000]); dump();
-mov (ecx, ptr[r15+r9+0]); dump();
-mov (ecx, ptr[r15+r9+1]); dump();
-mov (ecx, ptr[r15+r9+1000]); dump();
-mov (ecx, ptr[r15+r9-1]); dump();
-mov (ecx, ptr[r15+r9-1000]); dump();
-mov (ecx, ptr[r15+r9*1+0]); dump();
-mov (ecx, ptr[r15+r9*1+1]); dump();
-mov (ecx, ptr[r15+r9*1+1000]); dump();
-mov (ecx, ptr[r15+r9*1-1]); dump();
-mov (ecx, ptr[r15+r9*1-1000]); dump();
-mov (ecx, ptr[r15+r9*2+0]); dump();
-mov (ecx, ptr[r15+r9*2+1]); dump();
-mov (ecx, ptr[r15+r9*2+1000]); dump();
-mov (ecx, ptr[r15+r9*2-1]); dump();
-mov (ecx, ptr[r15+r9*2-1000]); dump();
-mov (ecx, ptr[r15+r9*4+0]); dump();
-mov (ecx, ptr[r15+r9*4+1]); dump();
-mov (ecx, ptr[r15+r9*4+1000]); dump();
-mov (ecx, ptr[r15+r9*4-1]); dump();
-mov (ecx, ptr[r15+r9*4-1000]); dump();
-mov (ecx, ptr[r15+r9*8+0]); dump();
-mov (ecx, ptr[r15+r9*8+1]); dump();
-mov (ecx, ptr[r15+r9*8+1000]); dump();
-mov (ecx, ptr[r15+r9*8-1]); dump();
-mov (ecx, ptr[r15+r9*8-1000]); dump();
-mov (ecx, ptr[r15+r10+0]); dump();
-mov (ecx, ptr[r15+r10+1]); dump();
-mov (ecx, ptr[r15+r10+1000]); dump();
-mov (ecx, ptr[r15+r10-1]); dump();
-mov (ecx, ptr[r15+r10-1000]); dump();
-mov (ecx, ptr[r15+r10*1+0]); dump();
-mov (ecx, ptr[r15+r10*1+1]); dump();
-mov (ecx, ptr[r15+r10*1+1000]); dump();
-mov (ecx, ptr[r15+r10*1-1]); dump();
-mov (ecx, ptr[r15+r10*1-1000]); dump();
-mov (ecx, ptr[r15+r10*2+0]); dump();
-mov (ecx, ptr[r15+r10*2+1]); dump();
-mov (ecx, ptr[r15+r10*2+1000]); dump();
-mov (ecx, ptr[r15+r10*2-1]); dump();
-mov (ecx, ptr[r15+r10*2-1000]); dump();
-mov (ecx, ptr[r15+r10*4+0]); dump();
-mov (ecx, ptr[r15+r10*4+1]); dump();
-mov (ecx, ptr[r15+r10*4+1000]); dump();
-mov (ecx, ptr[r15+r10*4-1]); dump();
-mov (ecx, ptr[r15+r10*4-1000]); dump();
-mov (ecx, ptr[r15+r10*8+0]); dump();
-mov (ecx, ptr[r15+r10*8+1]); dump();
-mov (ecx, ptr[r15+r10*8+1000]); dump();
-mov (ecx, ptr[r15+r10*8-1]); dump();
-mov (ecx, ptr[r15+r10*8-1000]); dump();
-mov (ecx, ptr[r15+r11+0]); dump();
-mov (ecx, ptr[r15+r11+1]); dump();
-mov (ecx, ptr[r15+r11+1000]); dump();
-mov (ecx, ptr[r15+r11-1]); dump();
-mov (ecx, ptr[r15+r11-1000]); dump();
-mov (ecx, ptr[r15+r11*1+0]); dump();
-mov (ecx, ptr[r15+r11*1+1]); dump();
-mov (ecx, ptr[r15+r11*1+1000]); dump();
-mov (ecx, ptr[r15+r11*1-1]); dump();
-mov (ecx, ptr[r15+r11*1-1000]); dump();
-mov (ecx, ptr[r15+r11*2+0]); dump();
-mov (ecx, ptr[r15+r11*2+1]); dump();
-mov (ecx, ptr[r15+r11*2+1000]); dump();
-mov (ecx, ptr[r15+r11*2-1]); dump();
-mov (ecx, ptr[r15+r11*2-1000]); dump();
-mov (ecx, ptr[r15+r11*4+0]); dump();
-mov (ecx, ptr[r15+r11*4+1]); dump();
-mov (ecx, ptr[r15+r11*4+1000]); dump();
-mov (ecx, ptr[r15+r11*4-1]); dump();
-mov (ecx, ptr[r15+r11*4-1000]); dump();
-mov (ecx, ptr[r15+r11*8+0]); dump();
-mov (ecx, ptr[r15+r11*8+1]); dump();
-mov (ecx, ptr[r15+r11*8+1000]); dump();
-mov (ecx, ptr[r15+r11*8-1]); dump();
-mov (ecx, ptr[r15+r11*8-1000]); dump();
-}
-    void gen55(){
-mov (ecx, ptr[r15+r12+0]); dump();
-mov (ecx, ptr[r15+r12+1]); dump();
-mov (ecx, ptr[r15+r12+1000]); dump();
-mov (ecx, ptr[r15+r12-1]); dump();
-mov (ecx, ptr[r15+r12-1000]); dump();
-mov (ecx, ptr[r15+r12*1+0]); dump();
-mov (ecx, ptr[r15+r12*1+1]); dump();
-mov (ecx, ptr[r15+r12*1+1000]); dump();
-mov (ecx, ptr[r15+r12*1-1]); dump();
-mov (ecx, ptr[r15+r12*1-1000]); dump();
-mov (ecx, ptr[r15+r12*2+0]); dump();
-mov (ecx, ptr[r15+r12*2+1]); dump();
-mov (ecx, ptr[r15+r12*2+1000]); dump();
-mov (ecx, ptr[r15+r12*2-1]); dump();
-mov (ecx, ptr[r15+r12*2-1000]); dump();
-mov (ecx, ptr[r15+r12*4+0]); dump();
-mov (ecx, ptr[r15+r12*4+1]); dump();
-mov (ecx, ptr[r15+r12*4+1000]); dump();
-mov (ecx, ptr[r15+r12*4-1]); dump();
-mov (ecx, ptr[r15+r12*4-1000]); dump();
-mov (ecx, ptr[r15+r12*8+0]); dump();
-mov (ecx, ptr[r15+r12*8+1]); dump();
-mov (ecx, ptr[r15+r12*8+1000]); dump();
-mov (ecx, ptr[r15+r12*8-1]); dump();
-mov (ecx, ptr[r15+r12*8-1000]); dump();
-mov (ecx, ptr[r15+r13+0]); dump();
-mov (ecx, ptr[r15+r13+1]); dump();
-mov (ecx, ptr[r15+r13+1000]); dump();
-mov (ecx, ptr[r15+r13-1]); dump();
-mov (ecx, ptr[r15+r13-1000]); dump();
-mov (ecx, ptr[r15+r13*1+0]); dump();
-mov (ecx, ptr[r15+r13*1+1]); dump();
-mov (ecx, ptr[r15+r13*1+1000]); dump();
-mov (ecx, ptr[r15+r13*1-1]); dump();
-mov (ecx, ptr[r15+r13*1-1000]); dump();
-mov (ecx, ptr[r15+r13*2+0]); dump();
-mov (ecx, ptr[r15+r13*2+1]); dump();
-mov (ecx, ptr[r15+r13*2+1000]); dump();
-mov (ecx, ptr[r15+r13*2-1]); dump();
-mov (ecx, ptr[r15+r13*2-1000]); dump();
-mov (ecx, ptr[r15+r13*4+0]); dump();
-mov (ecx, ptr[r15+r13*4+1]); dump();
-mov (ecx, ptr[r15+r13*4+1000]); dump();
-mov (ecx, ptr[r15+r13*4-1]); dump();
-mov (ecx, ptr[r15+r13*4-1000]); dump();
-mov (ecx, ptr[r15+r13*8+0]); dump();
-mov (ecx, ptr[r15+r13*8+1]); dump();
-mov (ecx, ptr[r15+r13*8+1000]); dump();
-mov (ecx, ptr[r15+r13*8-1]); dump();
-mov (ecx, ptr[r15+r13*8-1000]); dump();
-mov (ecx, ptr[r15+r14+0]); dump();
-mov (ecx, ptr[r15+r14+1]); dump();
-mov (ecx, ptr[r15+r14+1000]); dump();
-mov (ecx, ptr[r15+r14-1]); dump();
-mov (ecx, ptr[r15+r14-1000]); dump();
-mov (ecx, ptr[r15+r14*1+0]); dump();
-mov (ecx, ptr[r15+r14*1+1]); dump();
-mov (ecx, ptr[r15+r14*1+1000]); dump();
-mov (ecx, ptr[r15+r14*1-1]); dump();
-mov (ecx, ptr[r15+r14*1-1000]); dump();
-mov (ecx, ptr[r15+r14*2+0]); dump();
-mov (ecx, ptr[r15+r14*2+1]); dump();
-mov (ecx, ptr[r15+r14*2+1000]); dump();
-mov (ecx, ptr[r15+r14*2-1]); dump();
-mov (ecx, ptr[r15+r14*2-1000]); dump();
-mov (ecx, ptr[r15+r14*4+0]); dump();
-mov (ecx, ptr[r15+r14*4+1]); dump();
-mov (ecx, ptr[r15+r14*4+1000]); dump();
-mov (ecx, ptr[r15+r14*4-1]); dump();
-mov (ecx, ptr[r15+r14*4-1000]); dump();
-mov (ecx, ptr[r15+r14*8+0]); dump();
-mov (ecx, ptr[r15+r14*8+1]); dump();
-mov (ecx, ptr[r15+r14*8+1000]); dump();
-mov (ecx, ptr[r15+r14*8-1]); dump();
-mov (ecx, ptr[r15+r14*8-1000]); dump();
-mov (ecx, ptr[r15+r15+0]); dump();
-mov (ecx, ptr[r15+r15+1]); dump();
-mov (ecx, ptr[r15+r15+1000]); dump();
-mov (ecx, ptr[r15+r15-1]); dump();
-mov (ecx, ptr[r15+r15-1000]); dump();
-mov (ecx, ptr[r15+r15*1+0]); dump();
-mov (ecx, ptr[r15+r15*1+1]); dump();
-mov (ecx, ptr[r15+r15*1+1000]); dump();
-mov (ecx, ptr[r15+r15*1-1]); dump();
-mov (ecx, ptr[r15+r15*1-1000]); dump();
-mov (ecx, ptr[r15+r15*2+0]); dump();
-mov (ecx, ptr[r15+r15*2+1]); dump();
-mov (ecx, ptr[r15+r15*2+1000]); dump();
-mov (ecx, ptr[r15+r15*2-1]); dump();
-mov (ecx, ptr[r15+r15*2-1000]); dump();
-mov (ecx, ptr[r15+r15*4+0]); dump();
-mov (ecx, ptr[r15+r15*4+1]); dump();
-mov (ecx, ptr[r15+r15*4+1000]); dump();
-mov (ecx, ptr[r15+r15*4-1]); dump();
-mov (ecx, ptr[r15+r15*4-1000]); dump();
-mov (ecx, ptr[r15+r15*8+0]); dump();
-mov (ecx, ptr[r15+r15*8+1]); dump();
-mov (ecx, ptr[r15+r15*8+1000]); dump();
-mov (ecx, ptr[r15+r15*8-1]); dump();
-mov (ecx, ptr[r15+r15*8-1000]); dump();
-}
-    void gen56(){
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[rax+0]); dump();
-mov (ecx, ptr[rax+1]); dump();
-mov (ecx, ptr[rax+1000]); dump();
-mov (ecx, ptr[rax-1]); dump();
-mov (ecx, ptr[rax-1000]); dump();
-mov (ecx, ptr[rax*1+0]); dump();
-mov (ecx, ptr[rax*1+1]); dump();
-mov (ecx, ptr[rax*1+1000]); dump();
-mov (ecx, ptr[rax*1-1]); dump();
-mov (ecx, ptr[rax*1-1000]); dump();
-mov (ecx, ptr[rax*2+0]); dump();
-mov (ecx, ptr[rax*2+1]); dump();
-mov (ecx, ptr[rax*2+1000]); dump();
-mov (ecx, ptr[rax*2-1]); dump();
-mov (ecx, ptr[rax*2-1000]); dump();
-mov (ecx, ptr[rax*4+0]); dump();
-mov (ecx, ptr[rax*4+1]); dump();
-mov (ecx, ptr[rax*4+1000]); dump();
-mov (ecx, ptr[rax*4-1]); dump();
-mov (ecx, ptr[rax*4-1000]); dump();
-mov (ecx, ptr[rax*8+0]); dump();
-mov (ecx, ptr[rax*8+1]); dump();
-mov (ecx, ptr[rax*8+1000]); dump();
-mov (ecx, ptr[rax*8-1]); dump();
-mov (ecx, ptr[rax*8-1000]); dump();
-mov (ecx, ptr[rcx+0]); dump();
-mov (ecx, ptr[rcx+1]); dump();
-mov (ecx, ptr[rcx+1000]); dump();
-mov (ecx, ptr[rcx-1]); dump();
-mov (ecx, ptr[rcx-1000]); dump();
-mov (ecx, ptr[rcx*1+0]); dump();
-mov (ecx, ptr[rcx*1+1]); dump();
-mov (ecx, ptr[rcx*1+1000]); dump();
-mov (ecx, ptr[rcx*1-1]); dump();
-mov (ecx, ptr[rcx*1-1000]); dump();
-mov (ecx, ptr[rcx*2+0]); dump();
-mov (ecx, ptr[rcx*2+1]); dump();
-mov (ecx, ptr[rcx*2+1000]); dump();
-mov (ecx, ptr[rcx*2-1]); dump();
-mov (ecx, ptr[rcx*2-1000]); dump();
-mov (ecx, ptr[rcx*4+0]); dump();
-mov (ecx, ptr[rcx*4+1]); dump();
-mov (ecx, ptr[rcx*4+1000]); dump();
-mov (ecx, ptr[rcx*4-1]); dump();
-mov (ecx, ptr[rcx*4-1000]); dump();
-mov (ecx, ptr[rcx*8+0]); dump();
-mov (ecx, ptr[rcx*8+1]); dump();
-mov (ecx, ptr[rcx*8+1000]); dump();
-mov (ecx, ptr[rcx*8-1]); dump();
-mov (ecx, ptr[rcx*8-1000]); dump();
-mov (ecx, ptr[rdx+0]); dump();
-mov (ecx, ptr[rdx+1]); dump();
-mov (ecx, ptr[rdx+1000]); dump();
-mov (ecx, ptr[rdx-1]); dump();
-mov (ecx, ptr[rdx-1000]); dump();
-mov (ecx, ptr[rdx*1+0]); dump();
-mov (ecx, ptr[rdx*1+1]); dump();
-mov (ecx, ptr[rdx*1+1000]); dump();
-mov (ecx, ptr[rdx*1-1]); dump();
-mov (ecx, ptr[rdx*1-1000]); dump();
-mov (ecx, ptr[rdx*2+0]); dump();
-mov (ecx, ptr[rdx*2+1]); dump();
-mov (ecx, ptr[rdx*2+1000]); dump();
-mov (ecx, ptr[rdx*2-1]); dump();
-mov (ecx, ptr[rdx*2-1000]); dump();
-mov (ecx, ptr[rdx*4+0]); dump();
-mov (ecx, ptr[rdx*4+1]); dump();
-mov (ecx, ptr[rdx*4+1000]); dump();
-mov (ecx, ptr[rdx*4-1]); dump();
-mov (ecx, ptr[rdx*4-1000]); dump();
-mov (ecx, ptr[rdx*8+0]); dump();
-mov (ecx, ptr[rdx*8+1]); dump();
-mov (ecx, ptr[rdx*8+1000]); dump();
-mov (ecx, ptr[rdx*8-1]); dump();
-mov (ecx, ptr[rdx*8-1000]); dump();
-}
-    void gen57(){
-mov (ecx, ptr[rbx+0]); dump();
-mov (ecx, ptr[rbx+1]); dump();
-mov (ecx, ptr[rbx+1000]); dump();
-mov (ecx, ptr[rbx-1]); dump();
-mov (ecx, ptr[rbx-1000]); dump();
-mov (ecx, ptr[rbx*1+0]); dump();
-mov (ecx, ptr[rbx*1+1]); dump();
-mov (ecx, ptr[rbx*1+1000]); dump();
-mov (ecx, ptr[rbx*1-1]); dump();
-mov (ecx, ptr[rbx*1-1000]); dump();
-mov (ecx, ptr[rbx*2+0]); dump();
-mov (ecx, ptr[rbx*2+1]); dump();
-mov (ecx, ptr[rbx*2+1000]); dump();
-mov (ecx, ptr[rbx*2-1]); dump();
-mov (ecx, ptr[rbx*2-1000]); dump();
-mov (ecx, ptr[rbx*4+0]); dump();
-mov (ecx, ptr[rbx*4+1]); dump();
-mov (ecx, ptr[rbx*4+1000]); dump();
-mov (ecx, ptr[rbx*4-1]); dump();
-mov (ecx, ptr[rbx*4-1000]); dump();
-mov (ecx, ptr[rbx*8+0]); dump();
-mov (ecx, ptr[rbx*8+1]); dump();
-mov (ecx, ptr[rbx*8+1000]); dump();
-mov (ecx, ptr[rbx*8-1]); dump();
-mov (ecx, ptr[rbx*8-1000]); dump();
-mov (ecx, ptr[rbp+0]); dump();
-mov (ecx, ptr[rbp+1]); dump();
-mov (ecx, ptr[rbp+1000]); dump();
-mov (ecx, ptr[rbp-1]); dump();
-mov (ecx, ptr[rbp-1000]); dump();
-mov (ecx, ptr[rbp*1+0]); dump();
-mov (ecx, ptr[rbp*1+1]); dump();
-mov (ecx, ptr[rbp*1+1000]); dump();
-mov (ecx, ptr[rbp*1-1]); dump();
-mov (ecx, ptr[rbp*1-1000]); dump();
-mov (ecx, ptr[rbp*2+0]); dump();
-mov (ecx, ptr[rbp*2+1]); dump();
-mov (ecx, ptr[rbp*2+1000]); dump();
-mov (ecx, ptr[rbp*2-1]); dump();
-mov (ecx, ptr[rbp*2-1000]); dump();
-mov (ecx, ptr[rbp*4+0]); dump();
-mov (ecx, ptr[rbp*4+1]); dump();
-mov (ecx, ptr[rbp*4+1000]); dump();
-mov (ecx, ptr[rbp*4-1]); dump();
-mov (ecx, ptr[rbp*4-1000]); dump();
-mov (ecx, ptr[rbp*8+0]); dump();
-mov (ecx, ptr[rbp*8+1]); dump();
-mov (ecx, ptr[rbp*8+1000]); dump();
-mov (ecx, ptr[rbp*8-1]); dump();
-mov (ecx, ptr[rbp*8-1000]); dump();
-mov (ecx, ptr[rsi+0]); dump();
-mov (ecx, ptr[rsi+1]); dump();
-mov (ecx, ptr[rsi+1000]); dump();
-mov (ecx, ptr[rsi-1]); dump();
-mov (ecx, ptr[rsi-1000]); dump();
-mov (ecx, ptr[rsi*1+0]); dump();
-mov (ecx, ptr[rsi*1+1]); dump();
-mov (ecx, ptr[rsi*1+1000]); dump();
-mov (ecx, ptr[rsi*1-1]); dump();
-mov (ecx, ptr[rsi*1-1000]); dump();
-mov (ecx, ptr[rsi*2+0]); dump();
-mov (ecx, ptr[rsi*2+1]); dump();
-mov (ecx, ptr[rsi*2+1000]); dump();
-mov (ecx, ptr[rsi*2-1]); dump();
-mov (ecx, ptr[rsi*2-1000]); dump();
-mov (ecx, ptr[rsi*4+0]); dump();
-mov (ecx, ptr[rsi*4+1]); dump();
-mov (ecx, ptr[rsi*4+1000]); dump();
-mov (ecx, ptr[rsi*4-1]); dump();
-mov (ecx, ptr[rsi*4-1000]); dump();
-mov (ecx, ptr[rsi*8+0]); dump();
-mov (ecx, ptr[rsi*8+1]); dump();
-mov (ecx, ptr[rsi*8+1000]); dump();
-mov (ecx, ptr[rsi*8-1]); dump();
-mov (ecx, ptr[rsi*8-1000]); dump();
-mov (ecx, ptr[rdi+0]); dump();
-mov (ecx, ptr[rdi+1]); dump();
-mov (ecx, ptr[rdi+1000]); dump();
-mov (ecx, ptr[rdi-1]); dump();
-mov (ecx, ptr[rdi-1000]); dump();
-mov (ecx, ptr[rdi*1+0]); dump();
-mov (ecx, ptr[rdi*1+1]); dump();
-mov (ecx, ptr[rdi*1+1000]); dump();
-mov (ecx, ptr[rdi*1-1]); dump();
-mov (ecx, ptr[rdi*1-1000]); dump();
-mov (ecx, ptr[rdi*2+0]); dump();
-mov (ecx, ptr[rdi*2+1]); dump();
-mov (ecx, ptr[rdi*2+1000]); dump();
-mov (ecx, ptr[rdi*2-1]); dump();
-mov (ecx, ptr[rdi*2-1000]); dump();
-mov (ecx, ptr[rdi*4+0]); dump();
-mov (ecx, ptr[rdi*4+1]); dump();
-mov (ecx, ptr[rdi*4+1000]); dump();
-mov (ecx, ptr[rdi*4-1]); dump();
-mov (ecx, ptr[rdi*4-1000]); dump();
-mov (ecx, ptr[rdi*8+0]); dump();
-mov (ecx, ptr[rdi*8+1]); dump();
-mov (ecx, ptr[rdi*8+1000]); dump();
-mov (ecx, ptr[rdi*8-1]); dump();
-mov (ecx, ptr[rdi*8-1000]); dump();
-}
-    void gen58(){
-mov (ecx, ptr[r9+0]); dump();
-mov (ecx, ptr[r9+1]); dump();
-mov (ecx, ptr[r9+1000]); dump();
-mov (ecx, ptr[r9-1]); dump();
-mov (ecx, ptr[r9-1000]); dump();
-mov (ecx, ptr[r9*1+0]); dump();
-mov (ecx, ptr[r9*1+1]); dump();
-mov (ecx, ptr[r9*1+1000]); dump();
-mov (ecx, ptr[r9*1-1]); dump();
-mov (ecx, ptr[r9*1-1000]); dump();
-mov (ecx, ptr[r9*2+0]); dump();
-mov (ecx, ptr[r9*2+1]); dump();
-mov (ecx, ptr[r9*2+1000]); dump();
-mov (ecx, ptr[r9*2-1]); dump();
-mov (ecx, ptr[r9*2-1000]); dump();
-mov (ecx, ptr[r9*4+0]); dump();
-mov (ecx, ptr[r9*4+1]); dump();
-mov (ecx, ptr[r9*4+1000]); dump();
-mov (ecx, ptr[r9*4-1]); dump();
-mov (ecx, ptr[r9*4-1000]); dump();
-mov (ecx, ptr[r9*8+0]); dump();
-mov (ecx, ptr[r9*8+1]); dump();
-mov (ecx, ptr[r9*8+1000]); dump();
-mov (ecx, ptr[r9*8-1]); dump();
-mov (ecx, ptr[r9*8-1000]); dump();
-mov (ecx, ptr[r10+0]); dump();
-mov (ecx, ptr[r10+1]); dump();
-mov (ecx, ptr[r10+1000]); dump();
-mov (ecx, ptr[r10-1]); dump();
-mov (ecx, ptr[r10-1000]); dump();
-mov (ecx, ptr[r10*1+0]); dump();
-mov (ecx, ptr[r10*1+1]); dump();
-mov (ecx, ptr[r10*1+1000]); dump();
-mov (ecx, ptr[r10*1-1]); dump();
-mov (ecx, ptr[r10*1-1000]); dump();
-mov (ecx, ptr[r10*2+0]); dump();
-mov (ecx, ptr[r10*2+1]); dump();
-mov (ecx, ptr[r10*2+1000]); dump();
-mov (ecx, ptr[r10*2-1]); dump();
-mov (ecx, ptr[r10*2-1000]); dump();
-mov (ecx, ptr[r10*4+0]); dump();
-mov (ecx, ptr[r10*4+1]); dump();
-mov (ecx, ptr[r10*4+1000]); dump();
-mov (ecx, ptr[r10*4-1]); dump();
-mov (ecx, ptr[r10*4-1000]); dump();
-mov (ecx, ptr[r10*8+0]); dump();
-mov (ecx, ptr[r10*8+1]); dump();
-mov (ecx, ptr[r10*8+1000]); dump();
-mov (ecx, ptr[r10*8-1]); dump();
-mov (ecx, ptr[r10*8-1000]); dump();
-mov (ecx, ptr[r11+0]); dump();
-mov (ecx, ptr[r11+1]); dump();
-mov (ecx, ptr[r11+1000]); dump();
-mov (ecx, ptr[r11-1]); dump();
-mov (ecx, ptr[r11-1000]); dump();
-mov (ecx, ptr[r11*1+0]); dump();
-mov (ecx, ptr[r11*1+1]); dump();
-mov (ecx, ptr[r11*1+1000]); dump();
-mov (ecx, ptr[r11*1-1]); dump();
-mov (ecx, ptr[r11*1-1000]); dump();
-mov (ecx, ptr[r11*2+0]); dump();
-mov (ecx, ptr[r11*2+1]); dump();
-mov (ecx, ptr[r11*2+1000]); dump();
-mov (ecx, ptr[r11*2-1]); dump();
-mov (ecx, ptr[r11*2-1000]); dump();
-mov (ecx, ptr[r11*4+0]); dump();
-mov (ecx, ptr[r11*4+1]); dump();
-mov (ecx, ptr[r11*4+1000]); dump();
-mov (ecx, ptr[r11*4-1]); dump();
-mov (ecx, ptr[r11*4-1000]); dump();
-mov (ecx, ptr[r11*8+0]); dump();
-mov (ecx, ptr[r11*8+1]); dump();
-mov (ecx, ptr[r11*8+1000]); dump();
-mov (ecx, ptr[r11*8-1]); dump();
-mov (ecx, ptr[r11*8-1000]); dump();
-mov (ecx, ptr[r12+0]); dump();
-mov (ecx, ptr[r12+1]); dump();
-mov (ecx, ptr[r12+1000]); dump();
-mov (ecx, ptr[r12-1]); dump();
-mov (ecx, ptr[r12-1000]); dump();
-mov (ecx, ptr[r12*1+0]); dump();
-mov (ecx, ptr[r12*1+1]); dump();
-mov (ecx, ptr[r12*1+1000]); dump();
-mov (ecx, ptr[r12*1-1]); dump();
-mov (ecx, ptr[r12*1-1000]); dump();
-mov (ecx, ptr[r12*2+0]); dump();
-mov (ecx, ptr[r12*2+1]); dump();
-mov (ecx, ptr[r12*2+1000]); dump();
-mov (ecx, ptr[r12*2-1]); dump();
-mov (ecx, ptr[r12*2-1000]); dump();
-mov (ecx, ptr[r12*4+0]); dump();
-mov (ecx, ptr[r12*4+1]); dump();
-mov (ecx, ptr[r12*4+1000]); dump();
-mov (ecx, ptr[r12*4-1]); dump();
-mov (ecx, ptr[r12*4-1000]); dump();
-mov (ecx, ptr[r12*8+0]); dump();
-mov (ecx, ptr[r12*8+1]); dump();
-mov (ecx, ptr[r12*8+1000]); dump();
-mov (ecx, ptr[r12*8-1]); dump();
-mov (ecx, ptr[r12*8-1000]); dump();
-}
-    void gen59(){
-mov (ecx, ptr[r13+0]); dump();
-mov (ecx, ptr[r13+1]); dump();
-mov (ecx, ptr[r13+1000]); dump();
-mov (ecx, ptr[r13-1]); dump();
-mov (ecx, ptr[r13-1000]); dump();
-mov (ecx, ptr[r13*1+0]); dump();
-mov (ecx, ptr[r13*1+1]); dump();
-mov (ecx, ptr[r13*1+1000]); dump();
-mov (ecx, ptr[r13*1-1]); dump();
-mov (ecx, ptr[r13*1-1000]); dump();
-mov (ecx, ptr[r13*2+0]); dump();
-mov (ecx, ptr[r13*2+1]); dump();
-mov (ecx, ptr[r13*2+1000]); dump();
-mov (ecx, ptr[r13*2-1]); dump();
-mov (ecx, ptr[r13*2-1000]); dump();
-mov (ecx, ptr[r13*4+0]); dump();
-mov (ecx, ptr[r13*4+1]); dump();
-mov (ecx, ptr[r13*4+1000]); dump();
-mov (ecx, ptr[r13*4-1]); dump();
-mov (ecx, ptr[r13*4-1000]); dump();
-mov (ecx, ptr[r13*8+0]); dump();
-mov (ecx, ptr[r13*8+1]); dump();
-mov (ecx, ptr[r13*8+1000]); dump();
-mov (ecx, ptr[r13*8-1]); dump();
-mov (ecx, ptr[r13*8-1000]); dump();
-mov (ecx, ptr[r14+0]); dump();
-mov (ecx, ptr[r14+1]); dump();
-mov (ecx, ptr[r14+1000]); dump();
-mov (ecx, ptr[r14-1]); dump();
-mov (ecx, ptr[r14-1000]); dump();
-mov (ecx, ptr[r14*1+0]); dump();
-mov (ecx, ptr[r14*1+1]); dump();
-mov (ecx, ptr[r14*1+1000]); dump();
-mov (ecx, ptr[r14*1-1]); dump();
-mov (ecx, ptr[r14*1-1000]); dump();
-mov (ecx, ptr[r14*2+0]); dump();
-mov (ecx, ptr[r14*2+1]); dump();
-mov (ecx, ptr[r14*2+1000]); dump();
-mov (ecx, ptr[r14*2-1]); dump();
-mov (ecx, ptr[r14*2-1000]); dump();
-mov (ecx, ptr[r14*4+0]); dump();
-mov (ecx, ptr[r14*4+1]); dump();
-mov (ecx, ptr[r14*4+1000]); dump();
-mov (ecx, ptr[r14*4-1]); dump();
-mov (ecx, ptr[r14*4-1000]); dump();
-mov (ecx, ptr[r14*8+0]); dump();
-mov (ecx, ptr[r14*8+1]); dump();
-mov (ecx, ptr[r14*8+1000]); dump();
-mov (ecx, ptr[r14*8-1]); dump();
-mov (ecx, ptr[r14*8-1000]); dump();
-mov (ecx, ptr[r15+0]); dump();
-mov (ecx, ptr[r15+1]); dump();
-mov (ecx, ptr[r15+1000]); dump();
-mov (ecx, ptr[r15-1]); dump();
-mov (ecx, ptr[r15-1000]); dump();
-mov (ecx, ptr[r15*1+0]); dump();
-mov (ecx, ptr[r15*1+1]); dump();
-mov (ecx, ptr[r15*1+1000]); dump();
-mov (ecx, ptr[r15*1-1]); dump();
-mov (ecx, ptr[r15*1-1000]); dump();
-mov (ecx, ptr[r15*2+0]); dump();
-mov (ecx, ptr[r15*2+1]); dump();
-mov (ecx, ptr[r15*2+1000]); dump();
-mov (ecx, ptr[r15*2-1]); dump();
-mov (ecx, ptr[r15*2-1000]); dump();
-mov (ecx, ptr[r15*4+0]); dump();
-mov (ecx, ptr[r15*4+1]); dump();
-mov (ecx, ptr[r15*4+1000]); dump();
-mov (ecx, ptr[r15*4-1]); dump();
-mov (ecx, ptr[r15*4-1000]); dump();
-mov (ecx, ptr[r15*8+0]); dump();
-mov (ecx, ptr[r15*8+1]); dump();
-mov (ecx, ptr[r15*8+1000]); dump();
-mov (ecx, ptr[r15*8-1]); dump();
-mov (ecx, ptr[r15*8-1000]); dump();
-mov (ecx, ptr[(void*)0x00000000]); dump();
-mov (ecx, ptr[(void*)0x00000001]); dump();
-mov (ecx, ptr[(void*)0x000003E8]); dump();
-mov (ecx, ptr[(void*)0xFFFFFFFF]); dump();
-mov (ecx, ptr[(void*)0xFFFFFC18]); dump();
-mov (ecx, ptr[(void*)0x00000000]); dump();
-mov (ecx, ptr[(void*)0x00000001]); dump();
-mov (ecx, ptr[(void*)0x000003E8]); dump();
-mov (ecx, ptr[(void*)0xFFFFFFFF]); dump();
-mov (ecx, ptr[(void*)0xFFFFFC18]); dump();
-mov (ecx, ptr[(void*)0x00000000]); dump();
-mov (ecx, ptr[(void*)0x00000001]); dump();
-mov (ecx, ptr[(void*)0x000003E8]); dump();
-mov (ecx, ptr[(void*)0xFFFFFFFF]); dump();
-mov (ecx, ptr[(void*)0xFFFFFC18]); dump();
-mov (ecx, ptr[(void*)0x00000000]); dump();
-mov (ecx, ptr[(void*)0x00000001]); dump();
-mov (ecx, ptr[(void*)0x000003E8]); dump();
-mov (ecx, ptr[(void*)0xFFFFFFFF]); dump();
-mov (ecx, ptr[(void*)0xFFFFFC18]); dump();
-mov (ecx, ptr[(void*)0x00000000]); dump();
-mov (ecx, ptr[(void*)0x00000001]); dump();
-mov (ecx, ptr[(void*)0x000003E8]); dump();
-mov (ecx, ptr[(void*)0xFFFFFFFF]); dump();
-mov (ecx, ptr[(void*)0xFFFFFC18]); dump();
-}
-    void gen60(){
-}
-void gen(){
-   gen0();
-   gen1();
-   gen2();
-   gen3();
-   gen4();
-   gen5();
-   gen6();
-   gen7();
-   gen8();
-   gen9();
-   gen10();
-   gen11();
-   gen12();
-   gen13();
-   gen14();
-   gen15();
-   gen16();
-   gen17();
-   gen18();
-   gen19();
-   gen20();
-   gen21();
-   gen22();
-   gen23();
-   gen24();
-   gen25();
-   gen26();
-   gen27();
-   gen28();
-   gen29();
-   gen30();
-   gen31();
-   gen32();
-   gen33();
-   gen34();
-   gen35();
-   gen36();
-   gen37();
-   gen38();
-   gen39();
-   gen40();
-   gen41();
-   gen42();
-   gen43();
-   gen44();
-   gen45();
-   gen46();
-   gen47();
-   gen48();
-   gen49();
-   gen50();
-   gen51();
-   gen52();
-   gen53();
-   gen54();
-   gen55();
-   gen56();
-   gen57();
-   gen58();
-   gen59();
-   gen60();
-}
+    void gen0()
+    {
+vaddpd (xmm3, xmm7); dump();
+vaddpd (xmm2, ptr[eax+ecx+3]); dump();
+vaddpd (xmm2, xmm3, xmm5); dump();
+vaddpd (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vaddpd (ymm3, ptr[eax+ecx+3]); dump();
+vaddpd (ymm5, ymm3); dump();
+vaddpd (ymm3, ymm7, ptr[eax+ecx+3]); dump();
+vaddpd (ymm3, ymm0, ymm7); dump();
+vaddps (xmm0, xmm1); dump();
+vaddps (xmm6, ptr[eax+ecx+3]); dump();
+vaddps (xmm6, xmm0, xmm4); dump();
+vaddps (xmm0, xmm3, ptr[eax+ecx+3]); dump();
+vaddps (ymm3, ptr[eax+ecx+3]); dump();
+vaddps (ymm7, ymm3); dump();
+vaddps (ymm6, ymm7, ptr[eax+ecx+3]); dump();
+vaddps (ymm4, ymm6, ymm7); dump();
+vaddsd (xmm3, xmm1); dump();
+vaddsd (xmm7, ptr[eax+ecx+3]); dump();
+vaddsd (xmm3, xmm1, xmm6); dump();
+vaddsd (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vaddss (xmm2, xmm4); dump();
+vaddss (xmm5, ptr[eax+ecx+3]); dump();
+vaddss (xmm4, xmm4, xmm6); dump();
+vaddss (xmm6, xmm5, ptr[eax+ecx+3]); dump();
+vsubpd (xmm5, xmm0); dump();
+vsubpd (xmm4, ptr[eax+ecx+3]); dump();
+vsubpd (xmm2, xmm1, xmm2); dump();
+vsubpd (xmm1, xmm3, ptr[eax+ecx+3]); dump();
+vsubpd (ymm6, ptr[eax+ecx+3]); dump();
+vsubpd (ymm0, ymm6); dump();
+vsubpd (ymm6, ymm3, ptr[eax+ecx+3]); dump();
+vsubpd (ymm3, ymm6, ymm2); dump();
+vsubps (xmm0, xmm6); dump();
+vsubps (xmm6, ptr[eax+ecx+3]); dump();
+vsubps (xmm7, xmm0, xmm0); dump();
+vsubps (xmm6, xmm6, ptr[eax+ecx+3]); dump();
+vsubps (ymm6, ptr[eax+ecx+3]); dump();
+vsubps (ymm4, ymm1); dump();
+vsubps (ymm7, ymm6, ptr[eax+ecx+3]); dump();
+vsubps (ymm1, ymm5, ymm4); dump();
+vsubsd (xmm0, xmm2); dump();
+vsubsd (xmm1, ptr[eax+ecx+3]); dump();
+vsubsd (xmm6, xmm6, xmm3); dump();
+vsubsd (xmm4, xmm7, ptr[eax+ecx+3]); dump();
+vsubss (xmm6, xmm6); dump();
+vsubss (xmm6, ptr[eax+ecx+3]); dump();
+vsubss (xmm2, xmm4, xmm2); dump();
+vsubss (xmm2, xmm0, ptr[eax+ecx+3]); dump();
+vmulpd (xmm6, xmm4); dump();
+vmulpd (xmm2, ptr[eax+ecx+3]); dump();
+vmulpd (xmm5, xmm1, xmm7); dump();
+vmulpd (xmm4, xmm1, ptr[eax+ecx+3]); dump();
+vmulpd (ymm6, ptr[eax+ecx+3]); dump();
+vmulpd (ymm5, ymm6); dump();
+vmulpd (ymm7, ymm3, ptr[eax+ecx+3]); dump();
+vmulpd (ymm2, ymm6, ymm2); dump();
+vmulps (xmm0, xmm5); dump();
+vmulps (xmm6, ptr[eax+ecx+3]); dump();
+vmulps (xmm6, xmm0, xmm3); dump();
+vmulps (xmm1, xmm3, ptr[eax+ecx+3]); dump();
+vmulps (ymm7, ptr[eax+ecx+3]); dump();
+vmulps (ymm7, ymm0); dump();
+vmulps (ymm2, ymm3, ptr[eax+ecx+3]); dump();
+vmulps (ymm0, ymm7, ymm2); dump();
+vmulsd (xmm3, xmm6); dump();
+vmulsd (xmm0, ptr[eax+ecx+3]); dump();
+vmulsd (xmm4, xmm7, xmm2); dump();
+vmulsd (xmm5, xmm2, ptr[eax+ecx+3]); dump();
+vmulss (xmm7, xmm1); dump();
+vmulss (xmm1, ptr[eax+ecx+3]); dump();
+vmulss (xmm0, xmm0, xmm5); dump();
+vmulss (xmm2, xmm1, ptr[eax+ecx+3]); dump();
+vdivpd (xmm4, xmm6); dump();
+vdivpd (xmm7, ptr[eax+ecx+3]); dump();
+vdivpd (xmm7, xmm0, xmm7); dump();
+vdivpd (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vdivpd (ymm0, ptr[eax+ecx+3]); dump();
+vdivpd (ymm3, ymm0); dump();
+vdivpd (ymm0, ymm6, ptr[eax+ecx+3]); dump();
+vdivpd (ymm2, ymm3, ymm1); dump();
+vdivps (xmm0, xmm1); dump();
+vdivps (xmm2, ptr[eax+ecx+3]); dump();
+vdivps (xmm5, xmm0, xmm0); dump();
+vdivps (xmm2, xmm2, ptr[eax+ecx+3]); dump();
+vdivps (ymm0, ptr[eax+ecx+3]); dump();
+vdivps (ymm6, ymm6); dump();
+vdivps (ymm1, ymm4, ptr[eax+ecx+3]); dump();
+vdivps (ymm6, ymm2, ymm7); dump();
+vdivsd (xmm3, xmm2); dump();
+vdivsd (xmm1, ptr[eax+ecx+3]); dump();
+vdivsd (xmm0, xmm1, xmm3); dump();
+vdivsd (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vdivss (xmm0, xmm0); dump();
+vdivss (xmm3, ptr[eax+ecx+3]); dump();
+vdivss (xmm0, xmm7, xmm7); dump();
+vdivss (xmm1, xmm1, ptr[eax+ecx+3]); dump();
+vmaxpd (xmm1, xmm0); dump();
+vmaxpd (xmm5, ptr[eax+ecx+3]); dump();
+vmaxpd (xmm7, xmm4, xmm2); dump();
+vmaxpd (xmm4, xmm3, ptr[eax+ecx+3]); dump();
+vmaxpd (ymm3, ptr[eax+ecx+3]); dump();
+vmaxpd (ymm5, ymm3); dump();
+vmaxpd (ymm4, ymm5, ptr[eax+ecx+3]); dump();
+vmaxpd (ymm5, ymm5, ymm4); dump();
+vmaxps (xmm1, xmm3); dump();
+vmaxps (xmm4, ptr[eax+ecx+3]); dump();
+vmaxps (xmm2, xmm3, xmm2); dump();
+vmaxps (xmm1, xmm5, ptr[eax+ecx+3]); dump();
+vmaxps (ymm6, ptr[eax+ecx+3]); dump();
+vmaxps (ymm2, ymm4); dump();
+vmaxps (ymm2, ymm7, ptr[eax+ecx+3]); dump();
+vmaxps (ymm3, ymm3, ymm2); dump();
+vmaxsd (xmm7, xmm4); dump();
+vmaxsd (xmm1, ptr[eax+ecx+3]); dump();
+vmaxsd (xmm0, xmm3, xmm0); dump();
+vmaxsd (xmm4, xmm0, ptr[eax+ecx+3]); dump();
+vmaxss (xmm6, xmm7); dump();
+vmaxss (xmm5, ptr[eax+ecx+3]); dump();
+vmaxss (xmm3, xmm7, xmm6); dump();
+vmaxss (xmm3, xmm6, ptr[eax+ecx+3]); dump();
+vminpd (xmm4, xmm5); dump();
+vminpd (xmm6, ptr[eax+ecx+3]); dump();
+vminpd (xmm0, xmm7, xmm4); dump();
+vminpd (xmm6, xmm2, ptr[eax+ecx+3]); dump();
+vminpd (ymm1, ptr[eax+ecx+3]); dump();
+vminpd (ymm4, ymm0); dump();
+vminpd (ymm0, ymm4, ptr[eax+ecx+3]); dump();
+vminpd (ymm7, ymm7, ymm1); dump();
+vminps (xmm3, xmm6); dump();
+vminps (xmm7, ptr[eax+ecx+3]); dump();
+vminps (xmm7, xmm0, xmm4); dump();
+vminps (xmm4, xmm3, ptr[eax+ecx+3]); dump();
+vminps (ymm6, ptr[eax+ecx+3]); dump();
+vminps (ymm7, ymm2); dump();
+vminps (ymm5, ymm5, ptr[eax+ecx+3]); dump();
+vminps (ymm2, ymm3, ymm0); dump();
+vminsd (xmm7, xmm2); dump();
+vminsd (xmm5, ptr[eax+ecx+3]); dump();
+vminsd (xmm2, xmm6, xmm6); dump();
+vminsd (xmm4, xmm5, ptr[eax+ecx+3]); dump();
+vminss (xmm5, xmm7); dump();
+vminss (xmm2, ptr[eax+ecx+3]); dump();
+vminss (xmm5, xmm0, xmm5); dump();
+vminss (xmm2, xmm4, ptr[eax+ecx+3]); dump();
+vandpd (xmm3, xmm1); dump();
+vandpd (xmm0, ptr[eax+ecx+3]); dump();
+vandpd (xmm2, xmm3, xmm5); dump();
+vandpd (xmm2, xmm5, ptr[eax+ecx+3]); dump();
+vandpd (ymm2, ptr[eax+ecx+3]); dump();
+vandpd (ymm2, ymm5); dump();
+vandpd (ymm7, ymm5, ptr[eax+ecx+3]); dump();
+vandpd (ymm3, ymm1, ymm2); dump();
+vandps (xmm7, xmm5); dump();
+vandps (xmm1, ptr[eax+ecx+3]); dump();
+vandps (xmm0, xmm5, xmm2); dump();
+vandps (xmm4, xmm5, ptr[eax+ecx+3]); dump();
+vandps (ymm4, ptr[eax+ecx+3]); dump();
+vandps (ymm6, ymm2); dump();
+vandps (ymm7, ymm6, ptr[eax+ecx+3]); dump();
+vandps (ymm5, ymm0, ymm1); dump();
+vandnpd (xmm3, xmm0); dump();
+vandnpd (xmm5, ptr[eax+ecx+3]); dump();
+vandnpd (xmm6, xmm2, xmm0); dump();
+vandnpd (xmm2, xmm6, ptr[eax+ecx+3]); dump();
+vandnpd (ymm3, ptr[eax+ecx+3]); dump();
+vandnpd (ymm6, ymm2); dump();
+vandnpd (ymm6, ymm7, ptr[eax+ecx+3]); dump();
+vandnpd (ymm6, ymm3, ymm2); dump();
+vandnps (xmm3, xmm6); dump();
+vandnps (xmm4, ptr[eax+ecx+3]); dump();
+vandnps (xmm0, xmm3, xmm5); dump();
+vandnps (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vandnps (ymm6, ptr[eax+ecx+3]); dump();
+vandnps (ymm4, ymm3); dump();
+vandnps (ymm5, ymm0, ptr[eax+ecx+3]); dump();
+vandnps (ymm6, ymm1, ymm2); dump();
+vorpd (xmm7, xmm4); dump();
+vorpd (xmm6, ptr[eax+ecx+3]); dump();
+vorpd (xmm5, xmm4, xmm0); dump();
+vorpd (xmm2, xmm3, ptr[eax+ecx+3]); dump();
+vorpd (ymm5, ptr[eax+ecx+3]); dump();
+vorpd (ymm0, ymm7); dump();
+vorpd (ymm4, ymm0, ptr[eax+ecx+3]); dump();
+vorpd (ymm2, ymm5, ymm0); dump();
+vorps (xmm6, xmm4); dump();
+vorps (xmm0, ptr[eax+ecx+3]); dump();
+vorps (xmm5, xmm4, xmm1); dump();
+vorps (xmm2, xmm3, ptr[eax+ecx+3]); dump();
+vorps (ymm2, ptr[eax+ecx+3]); dump();
+vorps (ymm6, ymm0); dump();
+vorps (ymm4, ymm3, ptr[eax+ecx+3]); dump();
+vorps (ymm2, ymm3, ymm6); dump();
+vxorpd (xmm4, xmm0); dump();
+vxorpd (xmm3, ptr[eax+ecx+3]); dump();
+vxorpd (xmm6, xmm5, xmm3); dump();
+vxorpd (xmm7, xmm7, ptr[eax+ecx+3]); dump();
+vxorpd (ymm5, ptr[eax+ecx+3]); dump();
+vxorpd (ymm3, ymm6); dump();
+vxorpd (ymm4, ymm7, ptr[eax+ecx+3]); dump();
+vxorpd (ymm4, ymm7, ymm4); dump();
+vxorps (xmm7, xmm1); dump();
+vxorps (xmm4, ptr[eax+ecx+3]); dump();
+vxorps (xmm0, xmm7, xmm7); dump();
+vxorps (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vxorps (ymm7, ptr[eax+ecx+3]); dump();
+vxorps (ymm1, ymm2); dump();
+vxorps (ymm1, ymm7, ptr[eax+ecx+3]); dump();
+vxorps (ymm4, ymm6, ymm5); dump();
+vaddsubpd (xmm4, xmm4); dump();
+vaddsubpd (xmm1, ptr[eax+ecx+3]); dump();
+vaddsubpd (xmm0, xmm3, xmm5); dump();
+vaddsubpd (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vaddsubpd (ymm2, ptr[eax+ecx+3]); dump();
+vaddsubpd (ymm3, ymm5); dump();
+vaddsubpd (ymm1, ymm4, ptr[eax+ecx+3]); dump();
+vaddsubpd (ymm5, ymm5, ymm4); dump();
+vaddsubps (xmm6, xmm5); dump();
+vaddsubps (xmm0, ptr[eax+ecx+3]); dump();
+vaddsubps (xmm6, xmm7, xmm5); dump();
+vaddsubps (xmm4, xmm4, ptr[eax+ecx+3]); dump();
+vaddsubps (ymm7, ptr[eax+ecx+3]); dump();
+vaddsubps (ymm4, ymm6); dump();
+vaddsubps (ymm4, ymm2, ptr[eax+ecx+3]); dump();
+vaddsubps (ymm7, ymm0, ymm7); dump();
+vhaddpd (xmm1, xmm3); dump();
+vhaddpd (xmm2, ptr[eax+ecx+3]); dump();
+vhaddpd (xmm1, xmm3, xmm7); dump();
+vhaddpd (xmm4, xmm7, ptr[eax+ecx+3]); dump();
+vhaddpd (ymm6, ptr[eax+ecx+3]); dump();
+vhaddpd (ymm0, ymm6); dump();
+vhaddpd (ymm2, ymm5, ptr[eax+ecx+3]); dump();
+vhaddpd (ymm7, ymm1, ymm0); dump();
+vhaddps (xmm7, xmm1); dump();
+vhaddps (xmm6, ptr[eax+ecx+3]); dump();
+vhaddps (xmm0, xmm0, xmm3); dump();
+vhaddps (xmm0, xmm6, ptr[eax+ecx+3]); dump();
+vhaddps (ymm0, ptr[eax+ecx+3]); dump();
+vhaddps (ymm0, ymm2); dump();
+vhaddps (ymm3, ymm7, ptr[eax+ecx+3]); dump();
+vhaddps (ymm2, ymm4, ymm2); dump();
+vhsubpd (xmm6, xmm2); dump();
+vhsubpd (xmm6, ptr[eax+ecx+3]); dump();
+vhsubpd (xmm7, xmm0, xmm2); dump();
+vhsubpd (xmm2, xmm6, ptr[eax+ecx+3]); dump();
+vhsubpd (ymm3, ptr[eax+ecx+3]); dump();
+vhsubpd (ymm0, ymm7); dump();
+vhsubpd (ymm7, ymm6, ptr[eax+ecx+3]); dump();
+vhsubpd (ymm0, ymm7, ymm4); dump();
+vhsubps (xmm5, xmm5); dump();
+vhsubps (xmm2, ptr[eax+ecx+3]); dump();
+vhsubps (xmm6, xmm5, xmm1); dump();
+vhsubps (xmm0, xmm6, ptr[eax+ecx+3]); dump();
+vhsubps (ymm3, ptr[eax+ecx+3]); dump();
+vhsubps (ymm5, ymm2); dump();
+vhsubps (ymm7, ymm2, ptr[eax+ecx+3]); dump();
+vhsubps (ymm1, ymm5, ymm7); dump();
+vextractps (ptr[eax+ecx+3], xmm6, 4); dump();
+vextractps (edx, xmm6, 4); dump();
+vextractps (eax, xmm2, 4); dump();
+vldmxcsr (ptr[eax+ecx+3]); dump();
+vstmxcsr (ptr[eax+ecx+3]); dump();
+vmaskmovdqu (xmm4, xmm2); dump();
+vmovd (xmm1, ptr[eax+ecx+3]); dump();
+vmovd (xmm6, ebp); dump();
+vmovd (xmm7, eax); dump();
+vmovd (ptr[eax+ecx+3], xmm2); dump();
+vmovd (edx, xmm7); dump();
+vmovd (eax, xmm1); dump();
+vmovhlps (xmm4, xmm1); dump();
+vmovhlps (xmm2, xmm5, xmm4); dump();
+vmovlhps (xmm7, xmm3); dump();
+vmovlhps (xmm3, xmm0, xmm5); dump();
+vmovhpd (xmm7, xmm7, ptr[eax+ecx+3]); dump();
+vmovhpd (xmm2, ptr[eax+ecx+3]); dump();
+vmovhpd (ptr[eax+ecx+3], xmm7); dump();
+vmovhps (xmm3, xmm4, ptr[eax+ecx+3]); dump();
+vmovhps (xmm1, ptr[eax+ecx+3]); dump();
+vmovhps (ptr[eax+ecx+3], xmm6); dump();
+vmovlpd (xmm0, xmm6, ptr[eax+ecx+3]); dump();
+vmovlpd (xmm2, ptr[eax+ecx+3]); dump();
+vmovlpd (ptr[eax+ecx+3], xmm1); dump();
+vmovlps (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vmovlps (xmm2, ptr[eax+ecx+3]); dump();
+vmovlps (ptr[eax+ecx+3], xmm6); dump();
+vmovmskpd (edi, xmm2); dump();
+vmovmskpd (edx, ymm6); dump();
+vmovmskpd (eax, xmm5); dump();
+vmovmskpd (eax, ymm5); dump();
+vmovmskps (edi, xmm5); dump();
+vmovmskps (edi, ymm2); dump();
+vmovmskps (eax, xmm5); dump();
+vmovmskps (eax, ymm5); dump();
+vmovntdq (ptr[eax+ecx+3], xmm2); dump();
+vmovntdq (ptr[eax+ecx+3], ymm5); dump();
+vmovntpd (ptr[eax+ecx+3], xmm4); dump();
+vmovntpd (ptr[eax+ecx+3], ymm3); dump();
+vmovntps (ptr[eax+ecx+3], xmm4); dump();
+vmovntps (ptr[eax+ecx+3], ymm2); dump();
+vmovntdqa (xmm0, ptr[eax+ecx+3]); dump();
+vmovsd (xmm6, xmm7, xmm6); dump();
+vmovsd (xmm0, xmm3); dump();
+vmovsd (xmm5, ptr[eax+ecx+3]); dump();
+vmovsd (ptr[eax+ecx+3], xmm2); dump();
+vmovss (xmm4, xmm5, xmm1); dump();
+vmovss (xmm4, xmm7); dump();
+vmovss (xmm6, ptr[eax+ecx+3]); dump();
+vmovss (ptr[eax+ecx+3], xmm1); dump();
+vpextrb (ptr[eax+ecx+3], xmm6, 4); dump();
+vpextrb (ecx, xmm0, 4); dump();
+vpextrb (eax, xmm0, 4); dump();
+vpextrw (edi, xmm3, 4); dump();
+vpextrw (eax, xmm2, 4); dump();
+vpextrd (ptr[eax+ecx+3], xmm2, 4); dump();
+vpextrd (edi, xmm6, 4); dump();
+vpextrd (eax, xmm2, 4); dump();
+vpinsrb (xmm0, xmm6, ptr[eax+ecx+3], 4); dump();
+vpinsrb (xmm2, xmm2, edi, 4); dump();
+vpinsrb (xmm6, xmm3, eax, 4); dump();
+vpinsrb (xmm5, ptr[eax+ecx+3], 4); dump();
+vpinsrb (xmm2, ecx, 4); dump();
+vpinsrb (xmm5, eax, 4); dump();
+vpinsrw (xmm6, xmm6, ptr[eax+ecx+3], 4); dump();
+vpinsrw (xmm2, xmm2, esi, 4); dump();
+vpinsrw (xmm3, xmm3, eax, 4); dump();
+vpinsrw (xmm3, ptr[eax+ecx+3], 4); dump();
+vpinsrw (xmm6, ebp, 4); dump();
+vpinsrw (xmm4, eax, 4); dump();
+vpinsrd (xmm2, xmm2, ptr[eax+ecx+3], 4); dump();
+vpinsrd (xmm3, xmm5, edx, 4); dump();
+vpinsrd (xmm0, xmm3, eax, 4); dump();
+vpinsrd (xmm0, ptr[eax+ecx+3], 4); dump();
+vpinsrd (xmm0, ecx, 4); dump();
+vpinsrd (xmm3, eax, 4); dump();
+vpmovmskb (edx, xmm5); dump();
+vpmovmskb (eax, xmm3); dump();
+vblendvpd (xmm1, xmm1, xmm5, xmm3); dump();
+vblendvpd (xmm6, xmm0, ptr[eax+ecx+3], xmm1); dump();
+vblendvpd (xmm2, xmm5, xmm4); dump();
+vblendvpd (xmm7, ptr[eax+ecx+3], xmm3); dump();
+vblendvpd (ymm6, ymm0, ptr[eax+ecx+3], ymm2); dump();
+vblendvpd (ymm0, ymm1, ymm2, ymm7); dump();
+vblendvpd (ymm1, ptr[eax+ecx+3], ymm0); dump();
+vblendvpd (ymm3, ymm6, ymm2); dump();
+vblendvps (xmm0, xmm3, xmm5, xmm7); dump();
+vblendvps (xmm5, xmm1, ptr[eax+ecx+3], xmm4); dump();
+vblendvps (xmm1, xmm0, xmm5); dump();
+vblendvps (xmm4, ptr[eax+ecx+3], xmm0); dump();
+vblendvps (ymm2, ymm0, ptr[eax+ecx+3], ymm1); dump();
+vblendvps (ymm0, ymm6, ymm3, ymm6); dump();
+vblendvps (ymm7, ptr[eax+ecx+3], ymm3); dump();
+vblendvps (ymm1, ymm0, ymm4); dump();
+vpblendvb (xmm2, xmm4, xmm5, xmm1); dump();
+vpblendvb (xmm0, xmm1, ptr[eax+ecx+3], xmm4); dump();
+vpblendvb (xmm2, xmm3, xmm0); dump();
+vpblendvb (xmm4, ptr[eax+ecx+3], xmm4); dump();
+vcvtss2si (ecx, xmm5); dump();
+vcvtss2si (ebx, ptr[eax+ecx+3]); dump();
+vcvtss2si (eax, xmm4); dump();
+vcvtss2si (eax, ptr[eax+ecx+3]); dump();
+vcvttss2si (ebx, xmm3); dump();
+vcvttss2si (edx, ptr[eax+ecx+3]); dump();
+vcvttss2si (eax, xmm3); dump();
+vcvttss2si (eax, ptr[eax+ecx+3]); dump();
+vcvtsd2si (ecx, xmm3); dump();
+vcvtsd2si (ecx, ptr[eax+ecx+3]); dump();
+vcvtsd2si (eax, xmm7); dump();
+vcvtsd2si (eax, ptr[eax+ecx+3]); dump();
+vcvttsd2si (esp, xmm7); dump();
+vcvttsd2si (ecx, ptr[eax+ecx+3]); dump();
+vcvttsd2si (eax, xmm1); dump();
+vcvttsd2si (eax, ptr[eax+ecx+3]); dump();
+vcvtsi2ss (xmm4, xmm1, ptr[eax+ecx+3]); dump();
+vcvtsi2ss (xmm6, xmm3, edi); dump();
+vcvtsi2ss (xmm1, xmm3, eax); dump();
+vcvtsi2ss (xmm1, ptr[eax+ecx+3]); dump();
+vcvtsi2ss (xmm7, ebp); dump();
+vcvtsi2ss (xmm4, eax); dump();
+vcvtsi2sd (xmm3, xmm6, ptr[eax+ecx+3]); dump();
+vcvtsi2sd (xmm6, xmm1, esp); dump();
+vcvtsi2sd (xmm3, xmm6, eax); dump();
+vcvtsi2sd (xmm3, ptr[eax+ecx+3]); dump();
+vcvtsi2sd (xmm6, esp); dump();
+vcvtsi2sd (xmm3, eax); dump();
+vcvtps2pd (xmm2, xmm0); dump();
+vcvtps2pd (xmm4, ptr[eax+ecx+3]); dump();
+vcvtps2pd (ymm4, xmm6); dump();
+vcvtps2pd (ymm1, ptr[eax+ecx+3]); dump();
+vcvtdq2pd (xmm2, xmm0); dump();
+vcvtdq2pd (xmm5, ptr[eax+ecx+3]); dump();
+vcvtdq2pd (ymm5, xmm1); dump();
+vcvtdq2pd (ymm2, ptr[eax+ecx+3]); dump();
+vcvtpd2ps (xmm5, xmm0); dump();
+vcvtpd2ps (xmm2, ptr[eax+ecx+3]); dump();
+vcvtpd2ps (xmm2, ymm3); dump();
+vcvtpd2dq (xmm5, xmm7); dump();
+vcvtpd2dq (xmm0, ptr[eax+ecx+3]); dump();
+vcvtpd2dq (xmm3, ymm7); dump();
+vcvttpd2dq (xmm2, xmm7); dump();
+vcvttpd2dq (xmm3, ptr[eax+ecx+3]); dump();
+vcvttpd2dq (xmm5, ymm6); dump();
+vaesenc (xmm5, xmm2); dump();
+vaesenc (xmm4, ptr[eax+ecx+3]); dump();
+vaesenc (xmm6, xmm6, xmm3); dump();
+vaesenc (xmm3, xmm4, ptr[eax+ecx+3]); dump();
+vaesenclast (xmm3, xmm6); dump();
+vaesenclast (xmm0, ptr[eax+ecx+3]); dump();
+vaesenclast (xmm5, xmm1, xmm0); dump();
+vaesenclast (xmm6, xmm5, ptr[eax+ecx+3]); dump();
+vaesdec (xmm5, xmm5); dump();
+vaesdec (xmm3, ptr[eax+ecx+3]); dump();
+vaesdec (xmm3, xmm4, xmm6); dump();
+vaesdec (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vaesdeclast (xmm2, xmm5); dump();
+vaesdeclast (xmm3, ptr[eax+ecx+3]); dump();
+vaesdeclast (xmm0, xmm2, xmm5); dump();
+vaesdeclast (xmm3, xmm6, ptr[eax+ecx+3]); dump();
+vcvtsd2ss (xmm0, xmm0); dump();
+vcvtsd2ss (xmm6, ptr[eax+ecx+3]); dump();
+vcvtsd2ss (xmm7, xmm2, xmm0); dump();
+vcvtsd2ss (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vcvtss2sd (xmm4, xmm4); dump();
+vcvtss2sd (xmm1, ptr[eax+ecx+3]); dump();
+vcvtss2sd (xmm3, xmm4, xmm4); dump();
+vcvtss2sd (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vpacksswb (xmm0, xmm3); dump();
+vpacksswb (xmm7, ptr[eax+ecx+3]); dump();
+vpacksswb (xmm1, xmm7, xmm7); dump();
+vpacksswb (xmm4, xmm1, ptr[eax+ecx+3]); dump();
+vpackssdw (xmm4, xmm1); dump();
+vpackssdw (xmm4, ptr[eax+ecx+3]); dump();
+vpackssdw (xmm0, xmm3, xmm4); dump();
+vpackssdw (xmm6, xmm1, ptr[eax+ecx+3]); dump();
+vpackuswb (xmm4, xmm5); dump();
+vpackuswb (xmm7, ptr[eax+ecx+3]); dump();
+vpackuswb (xmm6, xmm0, xmm7); dump();
+vpackuswb (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vpackusdw (xmm5, xmm0); dump();
+vpackusdw (xmm0, ptr[eax+ecx+3]); dump();
+vpackusdw (xmm3, xmm1, xmm0); dump();
+vpackusdw (xmm2, xmm4, ptr[eax+ecx+3]); dump();
+vpaddb (xmm4, xmm1); dump();
+vpaddb (xmm6, ptr[eax+ecx+3]); dump();
+vpaddb (xmm2, xmm5, xmm7); dump();
+vpaddb (xmm7, xmm4, ptr[eax+ecx+3]); dump();
+vpaddw (xmm7, xmm0); dump();
+vpaddw (xmm4, ptr[eax+ecx+3]); dump();
+vpaddw (xmm3, xmm3, xmm5); dump();
+vpaddw (xmm1, xmm2, ptr[eax+ecx+3]); dump();
+vpaddd (xmm5, xmm5); dump();
+vpaddd (xmm3, ptr[eax+ecx+3]); dump();
+vpaddd (xmm0, xmm6, xmm5); dump();
+vpaddd (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vpaddq (xmm5, xmm1); dump();
+vpaddq (xmm0, ptr[eax+ecx+3]); dump();
+vpaddq (xmm0, xmm3, xmm2); dump();
+vpaddq (xmm6, xmm0, ptr[eax+ecx+3]); dump();
+vpaddsb (xmm5, xmm0); dump();
+vpaddsb (xmm5, ptr[eax+ecx+3]); dump();
+vpaddsb (xmm5, xmm0, xmm3); dump();
+vpaddsb (xmm2, xmm7, ptr[eax+ecx+3]); dump();
+vpaddsw (xmm5, xmm5); dump();
+vpaddsw (xmm3, ptr[eax+ecx+3]); dump();
+vpaddsw (xmm1, xmm1, xmm5); dump();
+vpaddsw (xmm4, xmm7, ptr[eax+ecx+3]); dump();
+vpaddusb (xmm4, xmm5); dump();
+vpaddusb (xmm4, ptr[eax+ecx+3]); dump();
+vpaddusb (xmm1, xmm3, xmm6); dump();
+vpaddusb (xmm1, xmm1, ptr[eax+ecx+3]); dump();
+vpaddusw (xmm0, xmm4); dump();
+vpaddusw (xmm5, ptr[eax+ecx+3]); dump();
+vpaddusw (xmm7, xmm3, xmm3); dump();
+vpaddusw (xmm0, xmm3, ptr[eax+ecx+3]); dump();
+vpand (xmm4, xmm7); dump();
+vpand (xmm1, ptr[eax+ecx+3]); dump();
+vpand (xmm5, xmm0, xmm6); dump();
+vpand (xmm1, xmm5, ptr[eax+ecx+3]); dump();
+vpandn (xmm3, xmm2); dump();
+vpandn (xmm3, ptr[eax+ecx+3]); dump();
+vpandn (xmm7, xmm3, xmm3); dump();
+vpandn (xmm6, xmm4, ptr[eax+ecx+3]); dump();
+vpavgb (xmm4, xmm2); dump();
+vpavgb (xmm7, ptr[eax+ecx+3]); dump();
+vpavgb (xmm0, xmm4, xmm3); dump();
+vpavgb (xmm1, xmm4, ptr[eax+ecx+3]); dump();
+vpavgw (xmm5, xmm6); dump();
+vpavgw (xmm4, ptr[eax+ecx+3]); dump();
+vpavgw (xmm6, xmm7, xmm6); dump();
+vpavgw (xmm3, xmm0, ptr[eax+ecx+3]); dump();
+vpcmpeqb (xmm1, xmm2); dump();
+vpcmpeqb (xmm4, ptr[eax+ecx+3]); dump();
+vpcmpeqb (xmm2, xmm1, xmm4); dump();
+vpcmpeqb (xmm3, xmm6, ptr[eax+ecx+3]); dump();
+vpcmpeqw (xmm6, xmm0); dump();
+vpcmpeqw (xmm2, ptr[eax+ecx+3]); dump();
+vpcmpeqw (xmm0, xmm0, xmm7); dump();
+vpcmpeqw (xmm3, xmm2, ptr[eax+ecx+3]); dump();
+vpcmpeqd (xmm0, xmm7); dump();
+vpcmpeqd (xmm1, ptr[eax+ecx+3]); dump();
+vpcmpeqd (xmm2, xmm5, xmm7); dump();
+vpcmpeqd (xmm6, xmm0, ptr[eax+ecx+3]); dump();
+vpcmpgtb (xmm0, xmm0); dump();
+vpcmpgtb (xmm2, ptr[eax+ecx+3]); dump();
+vpcmpgtb (xmm4, xmm3, xmm4); dump();
+vpcmpgtb (xmm1, xmm7, ptr[eax+ecx+3]); dump();
+vpcmpgtw (xmm0, xmm3); dump();
+vpcmpgtw (xmm7, ptr[eax+ecx+3]); dump();
+vpcmpgtw (xmm6, xmm7, xmm1); dump();
+vpcmpgtw (xmm4, xmm2, ptr[eax+ecx+3]); dump();
+vpcmpgtd (xmm6, xmm1); dump();
+vpcmpgtd (xmm1, ptr[eax+ecx+3]); dump();
+vpcmpgtd (xmm1, xmm4, xmm0); dump();
+vpcmpgtd (xmm1, xmm3, ptr[eax+ecx+3]); dump();
+vphaddw (xmm7, xmm4); dump();
+vphaddw (xmm0, ptr[eax+ecx+3]); dump();
+vphaddw (xmm5, xmm2, xmm3); dump();
+vphaddw (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vphaddd (xmm1, xmm2); dump();
+vphaddd (xmm3, ptr[eax+ecx+3]); dump();
+vphaddd (xmm1, xmm2, xmm0); dump();
+vphaddd (xmm2, xmm6, ptr[eax+ecx+3]); dump();
+vphaddsw (xmm6, xmm3); dump();
+vphaddsw (xmm7, ptr[eax+ecx+3]); dump();
+vphaddsw (xmm0, xmm1, xmm2); dump();
+vphaddsw (xmm1, xmm2, ptr[eax+ecx+3]); dump();
+vphsubw (xmm1, xmm7); dump();
+vphsubw (xmm6, ptr[eax+ecx+3]); dump();
+vphsubw (xmm7, xmm3, xmm1); dump();
+vphsubw (xmm3, xmm3, ptr[eax+ecx+3]); dump();
+vphsubd (xmm2, xmm2); dump();
+vphsubd (xmm4, ptr[eax+ecx+3]); dump();
+vphsubd (xmm0, xmm5, xmm0); dump();
+vphsubd (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vphsubsw (xmm7, xmm4); dump();
+vphsubsw (xmm0, ptr[eax+ecx+3]); dump();
+vphsubsw (xmm2, xmm7, xmm0); dump();
+vphsubsw (xmm3, xmm6, ptr[eax+ecx+3]); dump();
+vpmaddwd (xmm7, xmm5); dump();
+vpmaddwd (xmm0, ptr[eax+ecx+3]); dump();
+vpmaddwd (xmm5, xmm6, xmm7); dump();
+vpmaddwd (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vpmaddubsw (xmm2, xmm1); dump();
+vpmaddubsw (xmm3, ptr[eax+ecx+3]); dump();
+vpmaddubsw (xmm0, xmm4, xmm4); dump();
+vpmaddubsw (xmm6, xmm3, ptr[eax+ecx+3]); dump();
+vpmaxsb (xmm4, xmm0); dump();
+vpmaxsb (xmm7, ptr[eax+ecx+3]); dump();
+vpmaxsb (xmm0, xmm0, xmm0); dump();
+vpmaxsb (xmm6, xmm3, ptr[eax+ecx+3]); dump();
+vpmaxsw (xmm7, xmm1); dump();
+vpmaxsw (xmm4, ptr[eax+ecx+3]); dump();
+vpmaxsw (xmm5, xmm2, xmm3); dump();
+vpmaxsw (xmm2, xmm1, ptr[eax+ecx+3]); dump();
+vpmaxsd (xmm1, xmm3); dump();
+vpmaxsd (xmm5, ptr[eax+ecx+3]); dump();
+vpmaxsd (xmm0, xmm5, xmm6); dump();
+vpmaxsd (xmm4, xmm2, ptr[eax+ecx+3]); dump();
+vpmaxub (xmm7, xmm6); dump();
+vpmaxub (xmm0, ptr[eax+ecx+3]); dump();
+vpmaxub (xmm0, xmm0, xmm3); dump();
+vpmaxub (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vpmaxuw (xmm7, xmm4); dump();
+vpmaxuw (xmm6, ptr[eax+ecx+3]); dump();
+vpmaxuw (xmm2, xmm1, xmm4); dump();
+vpmaxuw (xmm4, xmm1, ptr[eax+ecx+3]); dump();
+vpmaxud (xmm0, xmm2); dump();
+vpmaxud (xmm5, ptr[eax+ecx+3]); dump();
+vpmaxud (xmm5, xmm6, xmm0); dump();
+vpmaxud (xmm3, xmm3, ptr[eax+ecx+3]); dump();
+vpminsb (xmm2, xmm0); dump();
+vpminsb (xmm7, ptr[eax+ecx+3]); dump();
+vpminsb (xmm3, xmm7, xmm3); dump();
+vpminsb (xmm6, xmm6, ptr[eax+ecx+3]); dump();
+vpminsw (xmm3, xmm4); dump();
+vpminsw (xmm5, ptr[eax+ecx+3]); dump();
+vpminsw (xmm6, xmm6, xmm1); dump();
+vpminsw (xmm1, xmm2, ptr[eax+ecx+3]); dump();
+vpminsd (xmm3, xmm0); dump();
+vpminsd (xmm4, ptr[eax+ecx+3]); dump();
+vpminsd (xmm6, xmm1, xmm0); dump();
+vpminsd (xmm4, xmm4, ptr[eax+ecx+3]); dump();
+vpminub (xmm5, xmm5); dump();
+vpminub (xmm0, ptr[eax+ecx+3]); dump();
+vpminub (xmm6, xmm3, xmm1); dump();
+vpminub (xmm7, xmm2, ptr[eax+ecx+3]); dump();
+vpminuw (xmm0, xmm6); dump();
+vpminuw (xmm3, ptr[eax+ecx+3]); dump();
+vpminuw (xmm6, xmm0, xmm2); dump();
+vpminuw (xmm5, xmm2, ptr[eax+ecx+3]); dump();
+vpminud (xmm6, xmm6); dump();
+vpminud (xmm4, ptr[eax+ecx+3]); dump();
+vpminud (xmm5, xmm1, xmm3); dump();
+vpminud (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vpmulhuw (xmm5, xmm1); dump();
+vpmulhuw (xmm2, ptr[eax+ecx+3]); dump();
+vpmulhuw (xmm5, xmm0, xmm1); dump();
+vpmulhuw (xmm6, xmm0, ptr[eax+ecx+3]); dump();
+vpmulhrsw (xmm4, xmm7); dump();
+vpmulhrsw (xmm0, ptr[eax+ecx+3]); dump();
+vpmulhrsw (xmm4, xmm4, xmm0); dump();
+vpmulhrsw (xmm4, xmm2, ptr[eax+ecx+3]); dump();
+vpmulhw (xmm0, xmm0); dump();
+vpmulhw (xmm5, ptr[eax+ecx+3]); dump();
+vpmulhw (xmm3, xmm3, xmm4); dump();
+vpmulhw (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vpmullw (xmm1, xmm4); dump();
+vpmullw (xmm2, ptr[eax+ecx+3]); dump();
+vpmullw (xmm7, xmm5, xmm3); dump();
+vpmullw (xmm1, xmm2, ptr[eax+ecx+3]); dump();
+vpmulld (xmm4, xmm6); dump();
+vpmulld (xmm1, ptr[eax+ecx+3]); dump();
+vpmulld (xmm5, xmm5, xmm7); dump();
+vpmulld (xmm3, xmm0, ptr[eax+ecx+3]); dump();
+vpmuludq (xmm5, xmm1); dump();
+vpmuludq (xmm0, ptr[eax+ecx+3]); dump();
+vpmuludq (xmm4, xmm1, xmm1); dump();
+vpmuludq (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vpmuldq (xmm7, xmm6); dump();
+vpmuldq (xmm2, ptr[eax+ecx+3]); dump();
+vpmuldq (xmm0, xmm2, xmm5); dump();
+vpmuldq (xmm1, xmm3, ptr[eax+ecx+3]); dump();
+vpor (xmm1, xmm5); dump();
+vpor (xmm4, ptr[eax+ecx+3]); dump();
+vpor (xmm6, xmm7, xmm6); dump();
+vpor (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vpsadbw (xmm5, xmm6); dump();
+vpsadbw (xmm5, ptr[eax+ecx+3]); dump();
+vpsadbw (xmm6, xmm0, xmm5); dump();
+vpsadbw (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vpsignb (xmm6, xmm6); dump();
+vpsignb (xmm0, ptr[eax+ecx+3]); dump();
+vpsignb (xmm4, xmm7, xmm0); dump();
+vpsignb (xmm7, xmm7, ptr[eax+ecx+3]); dump();
+vpsignw (xmm5, xmm0); dump();
+vpsignw (xmm7, ptr[eax+ecx+3]); dump();
+vpsignw (xmm3, xmm6, xmm0); dump();
+vpsignw (xmm7, xmm1, ptr[eax+ecx+3]); dump();
+vpsignd (xmm4, xmm4); dump();
+vpsignd (xmm2, ptr[eax+ecx+3]); dump();
+vpsignd (xmm0, xmm7, xmm0); dump();
+vpsignd (xmm5, xmm7, ptr[eax+ecx+3]); dump();
+vpsllw (xmm7, xmm3); dump();
+vpsllw (xmm3, ptr[eax+ecx+3]); dump();
+vpsllw (xmm2, xmm0, xmm5); dump();
+vpsllw (xmm2, xmm0, ptr[eax+ecx+3]); dump();
+vpslld (xmm4, xmm3); dump();
+vpslld (xmm2, ptr[eax+ecx+3]); dump();
+vpslld (xmm4, xmm4, xmm0); dump();
+vpslld (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vpsllq (xmm1, xmm0); dump();
+vpsllq (xmm3, ptr[eax+ecx+3]); dump();
+vpsllq (xmm0, xmm3, xmm3); dump();
+vpsllq (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vpsraw (xmm3, xmm4); dump();
+vpsraw (xmm2, ptr[eax+ecx+3]); dump();
+vpsraw (xmm1, xmm4, xmm5); dump();
+vpsraw (xmm6, xmm6, ptr[eax+ecx+3]); dump();
+vpsrad (xmm0, xmm3); dump();
+vpsrad (xmm6, ptr[eax+ecx+3]); dump();
+vpsrad (xmm6, xmm3, xmm5); dump();
+vpsrad (xmm4, xmm0, ptr[eax+ecx+3]); dump();
+vpsrlw (xmm2, xmm7); dump();
+vpsrlw (xmm7, ptr[eax+ecx+3]); dump();
+vpsrlw (xmm1, xmm5, xmm7); dump();
+vpsrlw (xmm2, xmm1, ptr[eax+ecx+3]); dump();
+vpsrld (xmm3, xmm4); dump();
+vpsrld (xmm3, ptr[eax+ecx+3]); dump();
+vpsrld (xmm1, xmm3, xmm7); dump();
+vpsrld (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vpsrlq (xmm7, xmm0); dump();
+vpsrlq (xmm6, ptr[eax+ecx+3]); dump();
+vpsrlq (xmm2, xmm2, xmm7); dump();
+vpsrlq (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vpsubb (xmm5, xmm7); dump();
+vpsubb (xmm5, ptr[eax+ecx+3]); dump();
+vpsubb (xmm3, xmm7, xmm0); dump();
+vpsubb (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vpsubw (xmm0, xmm2); dump();
+vpsubw (xmm4, ptr[eax+ecx+3]); dump();
+vpsubw (xmm3, xmm5, xmm4); dump();
+vpsubw (xmm3, xmm2, ptr[eax+ecx+3]); dump();
+vpsubd (xmm6, xmm1); dump();
+vpsubd (xmm3, ptr[eax+ecx+3]); dump();
+vpsubd (xmm6, xmm3, xmm6); dump();
+vpsubd (xmm5, xmm1, ptr[eax+ecx+3]); dump();
+vpsubq (xmm2, xmm6); dump();
+vpsubq (xmm1, ptr[eax+ecx+3]); dump();
+vpsubq (xmm1, xmm5, xmm4); dump();
+vpsubq (xmm7, xmm0, ptr[eax+ecx+3]); dump();
+vpsubsb (xmm0, xmm1); dump();
+vpsubsb (xmm4, ptr[eax+ecx+3]); dump();
+vpsubsb (xmm0, xmm6, xmm0); dump();
+vpsubsb (xmm5, xmm7, ptr[eax+ecx+3]); dump();
+vpsubsw (xmm0, xmm6); dump();
+vpsubsw (xmm4, ptr[eax+ecx+3]); dump();
+vpsubsw (xmm2, xmm2, xmm5); dump();
+vpsubsw (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vpsubusb (xmm3, xmm0); dump();
+vpsubusb (xmm4, ptr[eax+ecx+3]); dump();
+vpsubusb (xmm6, xmm5, xmm7); dump();
+vpsubusb (xmm0, xmm4, ptr[eax+ecx+3]); dump();
+vpsubusw (xmm3, xmm2); dump();
+vpsubusw (xmm7, ptr[eax+ecx+3]); dump();
+vpsubusw (xmm5, xmm0, xmm3); dump();
+vpsubusw (xmm6, xmm3, ptr[eax+ecx+3]); dump();
+vpunpckhbw (xmm0, xmm4); dump();
+vpunpckhbw (xmm7, ptr[eax+ecx+3]); dump();
+vpunpckhbw (xmm6, xmm2, xmm3); dump();
+vpunpckhbw (xmm3, xmm7, ptr[eax+ecx+3]); dump();
+vpunpckhwd (xmm1, xmm0); dump();
+vpunpckhwd (xmm0, ptr[eax+ecx+3]); dump();
+vpunpckhwd (xmm2, xmm4, xmm0); dump();
+vpunpckhwd (xmm2, xmm3, ptr[eax+ecx+3]); dump();
+vpunpckhdq (xmm2, xmm6); dump();
+vpunpckhdq (xmm3, ptr[eax+ecx+3]); dump();
+vpunpckhdq (xmm1, xmm1, xmm5); dump();
+vpunpckhdq (xmm3, xmm5, ptr[eax+ecx+3]); dump();
+vpunpckhqdq (xmm4, xmm4); dump();
+vpunpckhqdq (xmm1, ptr[eax+ecx+3]); dump();
+vpunpckhqdq (xmm7, xmm7, xmm4); dump();
+vpunpckhqdq (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vpunpcklbw (xmm2, xmm2); dump();
+vpunpcklbw (xmm4, ptr[eax+ecx+3]); dump();
+vpunpcklbw (xmm5, xmm7, xmm7); dump();
+vpunpcklbw (xmm4, xmm1, ptr[eax+ecx+3]); dump();
+vpunpcklwd (xmm6, xmm1); dump();
+vpunpcklwd (xmm6, ptr[eax+ecx+3]); dump();
+vpunpcklwd (xmm6, xmm6, xmm2); dump();
+vpunpcklwd (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vpunpckldq (xmm0, xmm6); dump();
+vpunpckldq (xmm2, ptr[eax+ecx+3]); dump();
+vpunpckldq (xmm2, xmm1, xmm6); dump();
+vpunpckldq (xmm4, xmm2, ptr[eax+ecx+3]); dump();
+vpunpcklqdq (xmm0, xmm5); dump();
+vpunpcklqdq (xmm0, ptr[eax+ecx+3]); dump();
+vpunpcklqdq (xmm6, xmm3, xmm1); dump();
+vpunpcklqdq (xmm5, xmm7, ptr[eax+ecx+3]); dump();
+vpxor (xmm6, xmm6); dump();
+vpxor (xmm1, ptr[eax+ecx+3]); dump();
+vpxor (xmm7, xmm7, xmm1); dump();
+vpxor (xmm1, xmm1, ptr[eax+ecx+3]); dump();
+vsqrtsd (xmm7, xmm1); dump();
+vsqrtsd (xmm5, ptr[eax+ecx+3]); dump();
+vsqrtsd (xmm3, xmm7, xmm0); dump();
+vsqrtsd (xmm2, xmm1, ptr[eax+ecx+3]); dump();
+vsqrtss (xmm0, xmm1); dump();
+vsqrtss (xmm6, ptr[eax+ecx+3]); dump();
+vsqrtss (xmm4, xmm5, xmm3); dump();
+vsqrtss (xmm5, xmm0, ptr[eax+ecx+3]); dump();
+vunpckhpd (xmm6, xmm5); dump();
+vunpckhpd (xmm7, ptr[eax+ecx+3]); dump();
+vunpckhpd (xmm0, xmm5, xmm5); dump();
+vunpckhpd (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vunpckhpd (ymm1, ptr[eax+ecx+3]); dump();
+vunpckhpd (ymm7, ymm6); dump();
+vunpckhpd (ymm3, ymm2, ptr[eax+ecx+3]); dump();
+vunpckhpd (ymm1, ymm2, ymm6); dump();
+vunpckhps (xmm3, xmm0); dump();
+vunpckhps (xmm5, ptr[eax+ecx+3]); dump();
+vunpckhps (xmm6, xmm2, xmm4); dump();
+vunpckhps (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vunpckhps (ymm1, ptr[eax+ecx+3]); dump();
+vunpckhps (ymm0, ymm7); dump();
+vunpckhps (ymm4, ymm0, ptr[eax+ecx+3]); dump();
+vunpckhps (ymm1, ymm6, ymm1); dump();
+vunpcklpd (xmm1, xmm5); dump();
+vunpcklpd (xmm4, ptr[eax+ecx+3]); dump();
+vunpcklpd (xmm4, xmm5, xmm0); dump();
+vunpcklpd (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vunpcklpd (ymm2, ptr[eax+ecx+3]); dump();
+vunpcklpd (ymm2, ymm0); dump();
+vunpcklpd (ymm0, ymm6, ptr[eax+ecx+3]); dump();
+vunpcklpd (ymm5, ymm7, ymm0); dump();
+vunpcklps (xmm0, xmm0); dump();
+vunpcklps (xmm6, ptr[eax+ecx+3]); dump();
+vunpcklps (xmm0, xmm2, xmm0); dump();
+vunpcklps (xmm4, xmm4, ptr[eax+ecx+3]); dump();
+vunpcklps (ymm5, ptr[eax+ecx+3]); dump();
+vunpcklps (ymm2, ymm0); dump();
+vunpcklps (ymm1, ymm5, ptr[eax+ecx+3]); dump();
+vunpcklps (ymm2, ymm4, ymm1); dump();
+vblendpd (xmm1, xmm5, xmm2, 4); dump();
+vblendpd (xmm5, xmm2, ptr[eax+ecx+3], 4); dump();
+vblendpd (xmm5, xmm7, 4); dump();
+vblendpd (xmm4, ptr[eax+ecx+3], 4); dump();
+vblendpd (ymm3, ymm7, ptr[eax+ecx+3], 4); dump();
+vblendpd (ymm3, ymm2, ymm6, 4); dump();
+vblendpd (ymm5, ptr[eax+ecx+3], 4); dump();
+vblendpd (ymm7, ymm4, 4); dump();
+vblendps (xmm0, xmm0, xmm4, 4); dump();
+vblendps (xmm5, xmm4, ptr[eax+ecx+3], 4); dump();
+vblendps (xmm4, xmm2, 4); dump();
+vblendps (xmm0, ptr[eax+ecx+3], 4); dump();
+vblendps (ymm2, ymm1, ptr[eax+ecx+3], 4); dump();
+vblendps (ymm0, ymm3, ymm4, 4); dump();
+vblendps (ymm3, ptr[eax+ecx+3], 4); dump();
+vblendps (ymm1, ymm5, 4); dump();
+vdppd (xmm6, xmm2, xmm0, 4); dump();
+vdppd (xmm0, xmm4, ptr[eax+ecx+3], 4); dump();
+vdppd (xmm6, xmm6, 4); dump();
+vdppd (xmm2, ptr[eax+ecx+3], 4); dump();
+vdpps (xmm2, xmm1, xmm3, 4); dump();
+vdpps (xmm3, xmm5, ptr[eax+ecx+3], 4); dump();
+vdpps (xmm0, xmm2, 4); dump();
+vdpps (xmm2, ptr[eax+ecx+3], 4); dump();
+vdpps (ymm3, ymm7, ptr[eax+ecx+3], 4); dump();
+vdpps (ymm2, ymm2, ymm3, 4); dump();
+vdpps (ymm4, ptr[eax+ecx+3], 4); dump();
+vdpps (ymm2, ymm5, 4); dump();
+vmpsadbw (xmm3, xmm4, xmm5, 4); dump();
+vmpsadbw (xmm4, xmm6, ptr[eax+ecx+3], 4); dump();
+vmpsadbw (xmm4, xmm1, 4); dump();
+vmpsadbw (xmm3, ptr[eax+ecx+3], 4); dump();
+vpblendw (xmm5, xmm2, xmm5, 4); dump();
+vpblendw (xmm1, xmm7, ptr[eax+ecx+3], 4); dump();
+vpblendw (xmm0, xmm0, 4); dump();
+vpblendw (xmm5, ptr[eax+ecx+3], 4); dump();
+vroundsd (xmm5, xmm4, xmm7, 4); dump();
+vroundsd (xmm6, xmm5, ptr[eax+ecx+3], 4); dump();
+vroundsd (xmm2, xmm6, 4); dump();
+vroundsd (xmm6, ptr[eax+ecx+3], 4); dump();
+vroundss (xmm7, xmm6, xmm6, 4); dump();
+vroundss (xmm0, xmm3, ptr[eax+ecx+3], 4); dump();
+vroundss (xmm3, xmm7, 4); dump();
+vroundss (xmm2, ptr[eax+ecx+3], 4); dump();
+vpclmulqdq (xmm5, xmm7, xmm1, 4); dump();
+vpclmulqdq (xmm1, xmm0, ptr[eax+ecx+3], 4); dump();
+vpclmulqdq (xmm3, xmm5, 4); dump();
+vpclmulqdq (xmm5, ptr[eax+ecx+3], 4); dump();
+vcmppd (xmm2, xmm0, xmm5, 4); dump();
+vcmppd (xmm7, xmm1, ptr[eax+ecx+3], 4); dump();
+vcmppd (xmm5, xmm5, 4); dump();
+vcmppd (xmm7, ptr[eax+ecx+3], 4); dump();
+vcmppd (ymm1, ymm3, ptr[eax+ecx+3], 4); dump();
+vcmppd (ymm0, ymm5, ymm7, 4); dump();
+vcmppd (ymm6, ptr[eax+ecx+3], 4); dump();
+vcmppd (ymm2, ymm6, 4); dump();
+vcmpps (xmm5, xmm2, xmm0, 4); dump();
+vcmpps (xmm1, xmm3, ptr[eax+ecx+3], 4); dump();
+vcmpps (xmm5, xmm3, 4); dump();
+vcmpps (xmm0, ptr[eax+ecx+3], 4); dump();
+vcmpps (ymm0, ymm3, ptr[eax+ecx+3], 4); dump();
+vcmpps (ymm5, ymm5, ymm6, 4); dump();
+vcmpps (ymm0, ptr[eax+ecx+3], 4); dump();
+vcmpps (ymm4, ymm4, 4); dump();
+vcmpsd (xmm6, xmm2, xmm7, 4); dump();
+vcmpsd (xmm3, xmm7, ptr[eax+ecx+3], 4); dump();
+vcmpsd (xmm1, xmm3, 4); dump();
+vcmpsd (xmm6, ptr[eax+ecx+3], 4); dump();
+vcmpss (xmm4, xmm5, xmm0, 4); dump();
+vcmpss (xmm6, xmm2, ptr[eax+ecx+3], 4); dump();
+vcmpss (xmm5, xmm1, 4); dump();
+vcmpss (xmm6, ptr[eax+ecx+3], 4); dump();
+vinsertps (xmm2, xmm0, xmm7, 4); dump();
+vinsertps (xmm0, xmm6, ptr[eax+ecx+3], 4); dump();
+vinsertps (xmm4, xmm2, 4); dump();
+vinsertps (xmm5, ptr[eax+ecx+3], 4); dump();
+vpalignr (xmm1, xmm2, xmm5, 4); dump();
+vpalignr (xmm5, xmm4, ptr[eax+ecx+3], 4); dump();
+vpalignr (xmm6, xmm4, 4); dump();
+vpalignr (xmm1, ptr[eax+ecx+3], 4); dump();
+vshufpd (xmm7, xmm7, xmm7, 4); dump();
+vshufpd (xmm0, xmm4, ptr[eax+ecx+3], 4); dump();
+vshufpd (xmm1, xmm0, 4); dump();
+vshufpd (xmm5, ptr[eax+ecx+3], 4); dump();
+vshufpd (ymm1, ymm6, ptr[eax+ecx+3], 4); dump();
+vshufpd (ymm6, ymm3, ymm6, 4); dump();
+vshufpd (ymm7, ptr[eax+ecx+3], 4); dump();
+vshufpd (ymm3, ymm2, 4); dump();
+vshufps (xmm5, xmm5, xmm0, 4); dump();
+vshufps (xmm3, xmm6, ptr[eax+ecx+3], 4); dump();
+vshufps (xmm0, xmm7, 4); dump();
+vshufps (xmm1, ptr[eax+ecx+3], 4); dump();
+vshufps (ymm7, ymm6, ptr[eax+ecx+3], 4); dump();
+vshufps (ymm5, ymm4, ymm1, 4); dump();
+vshufps (ymm5, ptr[eax+ecx+3], 4); dump();
+vshufps (ymm3, ymm4, 4); dump();
+vroundpd (xmm6, xmm4, 4); dump();
+vroundpd (xmm2, ptr[eax+ecx+3], 4); dump();
+vroundpd (ymm5, ptr[eax+ecx+3], 4); dump();
+vroundpd (ymm7, ymm2, 4); dump();
+vroundps (xmm5, xmm2, 4); dump();
+vroundps (xmm3, ptr[eax+ecx+3], 4); dump();
+vroundps (ymm2, ptr[eax+ecx+3], 4); dump();
+vroundps (ymm5, ymm1, 4); dump();
+vpcmpestri (xmm6, xmm7, 4); dump();
+vpcmpestri (xmm2, ptr[eax+ecx+3], 4); dump();
+vpcmpestrm (xmm7, xmm7, 4); dump();
+vpcmpestrm (xmm1, ptr[eax+ecx+3], 4); dump();
+vpcmpistri (xmm1, xmm5, 4); dump();
+vpcmpistri (xmm7, ptr[eax+ecx+3], 4); dump();
+vpcmpistrm (xmm4, xmm1, 4); dump();
+vpcmpistrm (xmm4, ptr[eax+ecx+3], 4); dump();
+vpermilpd (xmm0, xmm4, 4); dump();
+vpermilpd (xmm5, ptr[eax+ecx+3], 4); dump();
+vpermilpd (ymm0, ptr[eax+ecx+3], 4); dump();
+vpermilpd (ymm2, ymm7, 4); dump();
+vpermilps (xmm6, xmm7, 4); dump();
+vpermilps (xmm4, ptr[eax+ecx+3], 4); dump();
+vpermilps (ymm7, ptr[eax+ecx+3], 4); dump();
+vpermilps (ymm7, ymm4, 4); dump();
+vaeskeygenassist (xmm7, xmm6, 4); dump();
+vaeskeygenassist (xmm7, ptr[eax+ecx+3], 4); dump();
+vpshufd (xmm4, xmm2, 4); dump();
+vpshufd (xmm3, ptr[eax+ecx+3], 4); dump();
+vpshufhw (xmm7, xmm0, 4); dump();
+vpshufhw (xmm6, ptr[eax+ecx+3], 4); dump();
+vpshuflw (xmm0, xmm6, 4); dump();
+vpshuflw (xmm0, ptr[eax+ecx+3], 4); dump();
+vpermilpd (xmm3, xmm0, xmm1); dump();
+vpermilpd (xmm1, xmm5, ptr[eax+ecx+3]); dump();
+vpermilpd (ymm5, ymm3, ptr[eax+ecx+3]); dump();
+vpermilpd (ymm7, ymm2, ymm4); dump();
+vpermilps (xmm7, xmm5, xmm7); dump();
+vpermilps (xmm3, xmm0, ptr[eax+ecx+3]); dump();
+vpermilps (ymm6, ymm6, ptr[eax+ecx+3]); dump();
+vpermilps (ymm0, ymm4, ymm7); dump();
+vpshufb (xmm0, xmm5, xmm3); dump();
+vpshufb (xmm6, xmm4, ptr[eax+ecx+3]); dump();
+vaesimc (xmm0, xmm5); dump();
+vaesimc (xmm3, ptr[eax+ecx+3]); dump();
+vtestps (xmm6, xmm1); dump();
+vtestps (xmm4, ptr[eax+ecx+3]); dump();
+vtestps (ymm2, ptr[eax+ecx+3]); dump();
+vtestps (ymm1, ymm4); dump();
+vtestpd (xmm2, xmm0); dump();
+vtestpd (xmm2, ptr[eax+ecx+3]); dump();
+vtestpd (ymm2, ptr[eax+ecx+3]); dump();
+vtestpd (ymm5, ymm7); dump();
+vcomisd (xmm7, xmm2); dump();
+vcomisd (xmm6, ptr[eax+ecx+3]); dump();
+vcomiss (xmm7, xmm6); dump();
+vcomiss (xmm7, ptr[eax+ecx+3]); dump();
+vcvtdq2ps (xmm4, xmm2); dump();
+vcvtdq2ps (xmm6, ptr[eax+ecx+3]); dump();
+vcvtdq2ps (ymm7, ptr[eax+ecx+3]); dump();
+vcvtdq2ps (ymm5, ymm4); dump();
+vcvtps2dq (xmm6, xmm2); dump();
+vcvtps2dq (xmm6, ptr[eax+ecx+3]); dump();
+vcvtps2dq (ymm2, ptr[eax+ecx+3]); dump();
+vcvtps2dq (ymm3, ymm2); dump();
+vcvttps2dq (xmm4, xmm6); dump();
+vcvttps2dq (xmm4, ptr[eax+ecx+3]); dump();
+vcvttps2dq (ymm4, ptr[eax+ecx+3]); dump();
+vcvttps2dq (ymm4, ymm4); dump();
+vmovapd (xmm0, xmm3); dump();
+vmovapd (xmm6, ptr[eax+ecx+3]); dump();
+vmovapd (ymm1, ptr[eax+ecx+3]); dump();
+vmovapd (ymm0, ymm4); dump();
+vmovaps (xmm4, xmm4); dump();
+vmovaps (xmm7, ptr[eax+ecx+3]); dump();
+vmovaps (ymm4, ptr[eax+ecx+3]); dump();
+vmovaps (ymm6, ymm0); dump();
+vmovddup (xmm5, xmm4); dump();
+vmovddup (xmm2, ptr[eax+ecx+3]); dump();
+vmovddup (ymm0, ptr[eax+ecx+3]); dump();
+vmovddup (ymm0, ymm4); dump();
+vmovdqa (xmm1, xmm5); dump();
+vmovdqa (xmm7, ptr[eax+ecx+3]); dump();
+vmovdqa (ymm3, ptr[eax+ecx+3]); dump();
+vmovdqa (ymm0, ymm2); dump();
+vmovdqu (xmm5, xmm5); dump();
+vmovdqu (xmm0, ptr[eax+ecx+3]); dump();
+vmovdqu (ymm7, ptr[eax+ecx+3]); dump();
+vmovdqu (ymm1, ymm3); dump();
+vmovupd (xmm3, xmm6); dump();
+vmovupd (xmm7, ptr[eax+ecx+3]); dump();
+vmovupd (ymm4, ptr[eax+ecx+3]); dump();
+vmovupd (ymm6, ymm1); dump();
+vmovups (xmm0, xmm6); dump();
+vmovups (xmm7, ptr[eax+ecx+3]); dump();
+vmovups (ymm4, ptr[eax+ecx+3]); dump();
+vmovups (ymm0, ymm4); dump();
+vpabsb (xmm3, xmm0); dump();
+vpabsb (xmm0, ptr[eax+ecx+3]); dump();
+vpabsw (xmm5, xmm1); dump();
+vpabsw (xmm6, ptr[eax+ecx+3]); dump();
+vpabsd (xmm4, xmm5); dump();
+vpabsd (xmm6, ptr[eax+ecx+3]); dump();
+vphminposuw (xmm4, xmm5); dump();
+vphminposuw (xmm7, ptr[eax+ecx+3]); dump();
+vpmovsxbw (xmm4, xmm4); dump();
+vpmovsxbw (xmm0, ptr[eax+ecx+3]); dump();
+vpmovsxbd (xmm0, xmm5); dump();
+vpmovsxbd (xmm6, ptr[eax+ecx+3]); dump();
+vpmovsxbq (xmm3, xmm3); dump();
+vpmovsxbq (xmm2, ptr[eax+ecx+3]); dump();
+vpmovsxwd (xmm4, xmm3); dump();
+vpmovsxwd (xmm7, ptr[eax+ecx+3]); dump();
+vpmovsxwq (xmm4, xmm0); dump();
+vpmovsxwq (xmm0, ptr[eax+ecx+3]); dump();
+vpmovsxdq (xmm0, xmm7); dump();
+vpmovsxdq (xmm0, ptr[eax+ecx+3]); dump();
+vpmovzxbw (xmm5, xmm5); dump();
+vpmovzxbw (xmm1, ptr[eax+ecx+3]); dump();
+vpmovzxbd (xmm2, xmm6); dump();
+vpmovzxbd (xmm5, ptr[eax+ecx+3]); dump();
+vpmovzxbq (xmm1, xmm5); dump();
+vpmovzxbq (xmm3, ptr[eax+ecx+3]); dump();
+vpmovzxwd (xmm0, xmm1); dump();
+vpmovzxwd (xmm4, ptr[eax+ecx+3]); dump();
+vpmovzxwq (xmm3, xmm6); dump();
+vpmovzxwq (xmm7, ptr[eax+ecx+3]); dump();
+vpmovzxdq (xmm1, xmm7); dump();
+vpmovzxdq (xmm4, ptr[eax+ecx+3]); dump();
+vptest (xmm5, xmm2); dump();
+vptest (xmm5, ptr[eax+ecx+3]); dump();
+vrcpps (xmm2, xmm4); dump();
+vrcpps (xmm2, ptr[eax+ecx+3]); dump();
+vrcpps (ymm1, ptr[eax+ecx+3]); dump();
+vrcpps (ymm3, ymm2); dump();
+vrcpss (xmm6, xmm0); dump();
+vrcpss (xmm7, ptr[eax+ecx+3]); dump();
+vrsqrtps (xmm4, xmm0); dump();
+vrsqrtps (xmm7, ptr[eax+ecx+3]); dump();
+vrsqrtps (ymm0, ptr[eax+ecx+3]); dump();
+vrsqrtps (ymm7, ymm4); dump();
+vrsqrtss (xmm7, xmm5); dump();
+vrsqrtss (xmm2, ptr[eax+ecx+3]); dump();
+vsqrtpd (xmm2, xmm4); dump();
+vsqrtpd (xmm5, ptr[eax+ecx+3]); dump();
+vsqrtpd (ymm6, ptr[eax+ecx+3]); dump();
+vsqrtpd (ymm5, ymm7); dump();
+vsqrtps (xmm6, xmm6); dump();
+vsqrtps (xmm2, ptr[eax+ecx+3]); dump();
+vsqrtps (ymm7, ptr[eax+ecx+3]); dump();
+vsqrtps (ymm2, ymm5); dump();
+vucomisd (xmm4, xmm7); dump();
+vucomisd (xmm3, ptr[eax+ecx+3]); dump();
+vucomiss (xmm6, xmm7); dump();
+vucomiss (xmm1, ptr[eax+ecx+3]); dump();
+vmovapd (ptr[eax+ecx+3], xmm6); dump();
+vmovapd (ptr[eax+ecx+3], ymm0); dump();
+vmovaps (ptr[eax+ecx+3], xmm3); dump();
+vmovaps (ptr[eax+ecx+3], ymm3); dump();
+vmovdqa (ptr[eax+ecx+3], xmm5); dump();
+vmovdqa (ptr[eax+ecx+3], ymm4); dump();
+vmovdqu (ptr[eax+ecx+3], xmm6); dump();
+vmovdqu (ptr[eax+ecx+3], ymm6); dump();
+vmovupd (ptr[eax+ecx+3], xmm4); dump();
+vmovupd (ptr[eax+ecx+3], ymm2); dump();
+vmovups (ptr[eax+ecx+3], xmm4); dump();
+vmovups (ptr[eax+ecx+3], ymm4); dump();
+vpslldq (xmm2, xmm1, 4); dump();
+vpslldq (xmm0, 4); dump();
+vpsrldq (xmm3, xmm7, 4); dump();
+vpsrldq (xmm2, 4); dump();
+vpsllw (xmm0, xmm3, 4); dump();
+vpsllw (xmm0, 4); dump();
+vpslld (xmm1, xmm6, 4); dump();
+vpslld (xmm3, 4); dump();
+vpsllq (xmm0, xmm4, 4); dump();
+vpsllq (xmm5, 4); dump();
+vpsraw (xmm4, xmm5, 4); dump();
+vpsraw (xmm1, 4); dump();
+vpsrad (xmm5, xmm1, 4); dump();
+vpsrad (xmm0, 4); dump();
+vpsrlw (xmm4, xmm1, 4); dump();
+vpsrlw (xmm5, 4); dump();
+vpsrld (xmm1, xmm3, 4); dump();
+vpsrld (xmm3, 4); dump();
+vpsrlq (xmm5, xmm2, 4); dump();
+vpsrlq (xmm4, 4); dump();
+vfmadd132pd (xmm4, xmm5, xmm2); dump();
+vfmadd132pd (xmm3, xmm0, ptr[eax+ecx+3]); dump();
+vfmadd132pd (ymm6, ymm5, ptr[eax+ecx+3]); dump();
+vfmadd132pd (ymm5, ymm1, ymm0); dump();
+vfmadd132ps (xmm7, xmm7, xmm0); dump();
+vfmadd132ps (xmm2, xmm4, ptr[eax+ecx+3]); dump();
+vfmadd132ps (ymm2, ymm7, ptr[eax+ecx+3]); dump();
+vfmadd132ps (ymm3, ymm3, ymm0); dump();
+vfmadd213pd (xmm7, xmm5, xmm4); dump();
+vfmadd213pd (xmm0, xmm6, ptr[eax+ecx+3]); dump();
+vfmadd213pd (ymm6, ymm0, ptr[eax+ecx+3]); dump();
+vfmadd213pd (ymm1, ymm2, ymm4); dump();
+vfmadd213ps (xmm3, xmm1, xmm2); dump();
+vfmadd213ps (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vfmadd213ps (ymm5, ymm6, ptr[eax+ecx+3]); dump();
+vfmadd213ps (ymm4, ymm0, ymm3); dump();
+vfmadd231pd (xmm3, xmm0, xmm2); dump();
+vfmadd231pd (xmm6, xmm4, ptr[eax+ecx+3]); dump();
+vfmadd231pd (ymm4, ymm1, ptr[eax+ecx+3]); dump();
+vfmadd231pd (ymm7, ymm2, ymm6); dump();
+vfmadd231ps (xmm6, xmm0, xmm7); dump();
+vfmadd231ps (xmm2, xmm7, ptr[eax+ecx+3]); dump();
+vfmadd231ps (ymm4, ymm0, ptr[eax+ecx+3]); dump();
+vfmadd231ps (ymm4, ymm6, ymm7); dump();
+vfmadd132sd (xmm6, xmm4, xmm3); dump();
+vfmadd132sd (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vfmadd132ss (xmm6, xmm2, xmm4); dump();
+vfmadd132ss (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vfmadd213sd (xmm2, xmm1, xmm0); dump();
+vfmadd213sd (xmm4, xmm6, ptr[eax+ecx+3]); dump();
+vfmadd213ss (xmm2, xmm4, xmm6); dump();
+vfmadd213ss (xmm0, xmm5, ptr[eax+ecx+3]); dump();
+vfmadd231sd (xmm0, xmm2, xmm5); dump();
+vfmadd231sd (xmm0, xmm7, ptr[eax+ecx+3]); dump();
+vfmadd231ss (xmm0, xmm5, xmm6); dump();
+vfmadd231ss (xmm2, xmm1, ptr[eax+ecx+3]); dump();
+vfmaddsub132pd (xmm3, xmm0, xmm5); dump();
+vfmaddsub132pd (xmm6, xmm7, ptr[eax+ecx+3]); dump();
+vfmaddsub132pd (ymm4, ymm7, ptr[eax+ecx+3]); dump();
+vfmaddsub132pd (ymm3, ymm4, ymm0); dump();
+vfmaddsub132ps (xmm3, xmm5, xmm5); dump();
+vfmaddsub132ps (xmm0, xmm5, ptr[eax+ecx+3]); dump();
+vfmaddsub132ps (ymm5, ymm5, ptr[eax+ecx+3]); dump();
+vfmaddsub132ps (ymm2, ymm6, ymm2); dump();
+vfmaddsub213pd (xmm6, xmm4, xmm6); dump();
+vfmaddsub213pd (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vfmaddsub213pd (ymm0, ymm2, ptr[eax+ecx+3]); dump();
+vfmaddsub213pd (ymm4, ymm0, ymm2); dump();
+vfmaddsub213ps (xmm7, xmm2, xmm2); dump();
+vfmaddsub213ps (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vfmaddsub213ps (ymm0, ymm0, ptr[eax+ecx+3]); dump();
+vfmaddsub213ps (ymm3, ymm0, ymm1); dump();
+vfmaddsub231pd (xmm4, xmm5, xmm4); dump();
+vfmaddsub231pd (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vfmaddsub231pd (ymm3, ymm5, ptr[eax+ecx+3]); dump();
+vfmaddsub231pd (ymm7, ymm0, ymm3); dump();
+vfmaddsub231ps (xmm7, xmm1, xmm3); dump();
+vfmaddsub231ps (xmm3, xmm5, ptr[eax+ecx+3]); dump();
+vfmaddsub231ps (ymm6, ymm3, ptr[eax+ecx+3]); dump();
+vfmaddsub231ps (ymm0, ymm2, ymm2); dump();
+vfmsubadd132pd (xmm5, xmm0, xmm0); dump();
+vfmsubadd132pd (xmm7, xmm4, ptr[eax+ecx+3]); dump();
+vfmsubadd132pd (ymm0, ymm1, ptr[eax+ecx+3]); dump();
+vfmsubadd132pd (ymm2, ymm7, ymm5); dump();
+vfmsubadd132ps (xmm4, xmm2, xmm2); dump();
+vfmsubadd132ps (xmm7, xmm0, ptr[eax+ecx+3]); dump();
+vfmsubadd132ps (ymm0, ymm5, ptr[eax+ecx+3]); dump();
+vfmsubadd132ps (ymm3, ymm0, ymm6); dump();
+vfmsubadd213pd (xmm5, xmm7, xmm7); dump();
+vfmsubadd213pd (xmm1, xmm5, ptr[eax+ecx+3]); dump();
+vfmsubadd213pd (ymm2, ymm3, ptr[eax+ecx+3]); dump();
+vfmsubadd213pd (ymm2, ymm3, ymm5); dump();
+vfmsubadd213ps (xmm2, xmm2, xmm4); dump();
+vfmsubadd213ps (xmm7, xmm4, ptr[eax+ecx+3]); dump();
+vfmsubadd213ps (ymm4, ymm7, ptr[eax+ecx+3]); dump();
+vfmsubadd213ps (ymm5, ymm7, ymm5); dump();
+vfmsubadd231pd (xmm6, xmm5, xmm1); dump();
+vfmsubadd231pd (xmm6, xmm1, ptr[eax+ecx+3]); dump();
+vfmsubadd231pd (ymm2, ymm4, ptr[eax+ecx+3]); dump();
+vfmsubadd231pd (ymm1, ymm3, ymm4); dump();
+vfmsubadd231ps (xmm1, xmm5, xmm0); dump();
+vfmsubadd231ps (xmm7, xmm6, ptr[eax+ecx+3]); dump();
+vfmsubadd231ps (ymm3, ymm0, ptr[eax+ecx+3]); dump();
+vfmsubadd231ps (ymm7, ymm5, ymm0); dump();
+vfmsub132pd (xmm2, xmm0, xmm0); dump();
+vfmsub132pd (xmm5, xmm5, ptr[eax+ecx+3]); dump();
+vfmsub132pd (ymm1, ymm1, ptr[eax+ecx+3]); dump();
+vfmsub132pd (ymm2, ymm0, ymm2); dump();
+vfmsub132ps (xmm4, xmm0, xmm6); dump();
+vfmsub132ps (xmm3, xmm2, ptr[eax+ecx+3]); dump();
+vfmsub132ps (ymm0, ymm1, ptr[eax+ecx+3]); dump();
+vfmsub132ps (ymm1, ymm1, ymm1); dump();
+vfmsub213pd (xmm3, xmm5, xmm7); dump();
+vfmsub213pd (xmm7, xmm2, ptr[eax+ecx+3]); dump();
+vfmsub213pd (ymm5, ymm3, ptr[eax+ecx+3]); dump();
+vfmsub213pd (ymm4, ymm0, ymm0); dump();
+vfmsub213ps (xmm2, xmm2, xmm2); dump();
+vfmsub213ps (xmm3, xmm4, ptr[eax+ecx+3]); dump();
+vfmsub213ps (ymm3, ymm7, ptr[eax+ecx+3]); dump();
+vfmsub213ps (ymm7, ymm2, ymm2); dump();
+vfmsub231pd (xmm6, xmm1, xmm2); dump();
+vfmsub231pd (xmm1, xmm0, ptr[eax+ecx+3]); dump();
+vfmsub231pd (ymm0, ymm3, ptr[eax+ecx+3]); dump();
+vfmsub231pd (ymm6, ymm0, ymm0); dump();
+vfmsub231ps (xmm3, xmm6, xmm3); dump();
+vfmsub231ps (xmm6, xmm3, ptr[eax+ecx+3]); dump();
+vfmsub231ps (ymm7, ymm3, ptr[eax+ecx+3]); dump();
+vfmsub231ps (ymm0, ymm4, ymm0); dump();
+vfmsub132sd (xmm6, xmm7, xmm7); dump();
+vfmsub132sd (xmm6, xmm6, ptr[eax+ecx+3]); dump();
+vfmsub132ss (xmm6, xmm4, xmm7); dump();
+vfmsub132ss (xmm1, xmm4, ptr[eax+ecx+3]); dump();
+vfmsub213sd (xmm3, xmm3, xmm1); dump();
+vfmsub213sd (xmm0, xmm1, ptr[eax+ecx+3]); dump();
+vfmsub213ss (xmm0, xmm5, xmm7); dump();
+vfmsub213ss (xmm1, xmm4, ptr[eax+ecx+3]); dump();
+vfmsub231sd (xmm3, xmm2, xmm3); dump();
+vfmsub231sd (xmm7, xmm0, ptr[eax+ecx+3]); dump();
+vfmsub231ss (xmm0, xmm6, xmm6); dump();
+vfmsub231ss (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vfnmadd132pd (xmm4, xmm2, xmm5); dump();
+vfnmadd132pd (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vfnmadd132pd (ymm1, ymm2, ptr[eax+ecx+3]); dump();
+vfnmadd132pd (ymm1, ymm2, ymm7); dump();
+vfnmadd132ps (xmm2, xmm0, xmm2); dump();
+vfnmadd132ps (xmm1, xmm7, ptr[eax+ecx+3]); dump();
+vfnmadd132ps (ymm1, ymm3, ptr[eax+ecx+3]); dump();
+vfnmadd132ps (ymm2, ymm2, ymm4); dump();
+vfnmadd213pd (xmm1, xmm2, xmm1); dump();
+vfnmadd213pd (xmm6, xmm6, ptr[eax+ecx+3]); dump();
+vfnmadd213pd (ymm1, ymm0, ptr[eax+ecx+3]); dump();
+vfnmadd213pd (ymm5, ymm1, ymm6); dump();
+vfnmadd213ps (xmm7, xmm3, xmm1); dump();
+vfnmadd213ps (xmm2, xmm5, ptr[eax+ecx+3]); dump();
+vfnmadd213ps (ymm0, ymm7, ptr[eax+ecx+3]); dump();
+vfnmadd213ps (ymm0, ymm6, ymm1); dump();
+vfnmadd231pd (xmm5, xmm0, xmm5); dump();
+vfnmadd231pd (xmm0, xmm0, ptr[eax+ecx+3]); dump();
+vfnmadd231pd (ymm5, ymm2, ptr[eax+ecx+3]); dump();
+vfnmadd231pd (ymm4, ymm7, ymm4); dump();
+vfnmadd231ps (xmm2, xmm6, xmm4); dump();
+vfnmadd231ps (xmm5, xmm3, ptr[eax+ecx+3]); dump();
+vfnmadd231ps (ymm4, ymm1, ptr[eax+ecx+3]); dump();
+vfnmadd231ps (ymm3, ymm2, ymm4); dump();
+vfnmadd132sd (xmm4, xmm2, xmm4); dump();
+vfnmadd132sd (xmm4, xmm2, ptr[eax+ecx+3]); dump();
+vfnmadd132ss (xmm4, xmm6, xmm1); dump();
+vfnmadd132ss (xmm1, xmm6, ptr[eax+ecx+3]); dump();
+vfnmadd213sd (xmm7, xmm1, xmm2); dump();
+vfnmadd213sd (xmm5, xmm6, ptr[eax+ecx+3]); dump();
+vfnmadd213ss (xmm0, xmm6, xmm4); dump();
+vfnmadd213ss (xmm2, xmm4, ptr[eax+ecx+3]); dump();
+vfnmadd231sd (xmm7, xmm6, xmm7); dump();
+vfnmadd231sd (xmm0, xmm1, ptr[eax+ecx+3]); dump();
+vfnmadd231ss (xmm4, xmm4, xmm4); dump();
+vfnmadd231ss (xmm6, xmm0, ptr[eax+ecx+3]); dump();
+vfnmsub132pd (xmm7, xmm5, xmm1); dump();
+vfnmsub132pd (xmm6, xmm4, ptr[eax+ecx+3]); dump();
+vfnmsub132pd (ymm6, ymm1, ptr[eax+ecx+3]); dump();
+vfnmsub132pd (ymm7, ymm5, ymm4); dump();
+vfnmsub132ps (xmm6, xmm3, xmm0); dump();
+vfnmsub132ps (xmm2, xmm5, ptr[eax+ecx+3]); dump();
+vfnmsub132ps (ymm0, ymm5, ptr[eax+ecx+3]); dump();
+vfnmsub132ps (ymm7, ymm3, ymm0); dump();
+vfnmsub213pd (xmm1, xmm6, xmm2); dump();
+vfnmsub213pd (xmm3, xmm4, ptr[eax+ecx+3]); dump();
+vfnmsub213pd (ymm0, ymm2, ptr[eax+ecx+3]); dump();
+vfnmsub213pd (ymm2, ymm1, ymm1); dump();
+vfnmsub213ps (xmm6, xmm7, xmm3); dump();
+vfnmsub213ps (xmm5, xmm4, ptr[eax+ecx+3]); dump();
+vfnmsub213ps (ymm7, ymm3, ptr[eax+ecx+3]); dump();
+vfnmsub213ps (ymm6, ymm4, ymm5); dump();
+vfnmsub231pd (xmm6, xmm2, xmm2); dump();
+vfnmsub231pd (xmm5, xmm2, ptr[eax+ecx+3]); dump();
+vfnmsub231pd (ymm6, ymm1, ptr[eax+ecx+3]); dump();
+vfnmsub231pd (ymm0, ymm5, ymm5); dump();
+vfnmsub231ps (xmm2, xmm4, xmm7); dump();
+vfnmsub231ps (xmm6, xmm4, ptr[eax+ecx+3]); dump();
+vfnmsub231ps (ymm7, ymm2, ptr[eax+ecx+3]); dump();
+vfnmsub231ps (ymm0, ymm5, ymm1); dump();
+vfnmsub132sd (xmm7, xmm5, xmm4); dump();
+vfnmsub132sd (xmm6, xmm1, ptr[eax+ecx+3]); dump();
+vfnmsub132ss (xmm3, xmm0, xmm1); dump();
+vfnmsub132ss (xmm4, xmm6, ptr[eax+ecx+3]); dump();
+vfnmsub213sd (xmm0, xmm2, xmm3); dump();
+vfnmsub213sd (xmm3, xmm1, ptr[eax+ecx+3]); dump();
+vfnmsub213ss (xmm0, xmm1, xmm5); dump();
+vfnmsub213ss (xmm6, xmm0, ptr[eax+ecx+3]); dump();
+vfnmsub231sd (xmm4, xmm0, xmm3); dump();
+vfnmsub231sd (xmm1, xmm6, ptr[eax+ecx+3]); dump();
+vfnmsub231ss (xmm3, xmm3, xmm2); dump();
+vfnmsub231ss (xmm6, xmm2, ptr[eax+ecx+3]); dump();
+vmaskmovps (xmm4, xmm3, ptr[eax+ecx+3]); dump();
+vmaskmovps (ymm4, ymm7, ptr[eax+ecx+3]); dump();
+vmaskmovpd (ymm5, ymm5, ptr[eax+ecx+3]); dump();
+vmaskmovpd (xmm1, xmm1, ptr[eax+ecx+3]); dump();
+vmaskmovps (ptr[eax+ecx+3], xmm7, xmm4); dump();
+vmaskmovpd (ptr[eax+ecx+3], xmm5, xmm2); dump();
+vbroadcastf128 (ymm2, ptr[eax+ecx+3]); dump();
+vbroadcastsd (ymm0, ptr[eax+ecx+3]); dump();
+vbroadcastss (xmm2, ptr[eax+ecx+3]); dump();
+vbroadcastss (ymm3, ptr[eax+ecx+3]); dump();
+vinsertf128 (ymm1, ymm6, xmm1, 4); dump();
+vinsertf128 (ymm3, ymm4, ptr[eax+ecx+3], 4); dump();
+vperm2f128 (ymm0, ymm2, ptr[eax+ecx+3], 4); dump();
+vperm2f128 (ymm0, ymm0, ymm5, 4); dump();
+    }
+    void gen()
+    {
+        gen0();
+    }
diff --git a/test/test_address.bat b/test/test_address.bat
index 36240dd..fe1b437 100644
--- a/test/test_address.bat
+++ b/test/test_address.bat
@@ -25,7 +25,7 @@
 address %1% > a.asm
 echo nasm -f %OPT3% -l a.lst a.asm
 nasm -f %OPT3% -l a.lst a.asm
-awk "{print $3}" < a.lst > ok.lst
+awk "!/warning:/ {print $3}" < a.lst > ok.lst
 echo address %1% jit > nm.cpp
 address %1% jit > nm.cpp
 echo cl -I../ -DXBYAK_TEST nm_frame.cpp %OPT% %OPT2%
diff --git a/test/test_nm.sh b/test/test_nm.sh
index b3eca1e..f85e3d0 100755
--- a/test/test_nm.sh
+++ b/test/test_nm.sh
@@ -1,5 +1,7 @@
 #!/bin/tcsh
+
 set FILTER=cat
+
 if ($1 == "Y") then
 	echo "yasm(32bit)"
 	set EXE=yasm
diff --git a/test/test_nm_all.bat b/test/test_nm_all.bat
index 698b093..af6cb77 100644
--- a/test/test_nm_all.bat
+++ b/test/test_nm_all.bat
@@ -7,3 +7,5 @@
 call test_nm 64
 echo *** yasm(64bit) ***
 call test_nm Y64
+
+call test_avx_all
diff --git a/xbyak.sln b/xbyak.sln
index 0c5abab..0f23415 100644
--- a/xbyak.sln
+++ b/xbyak.sln
@@ -13,6 +13,8 @@
 EndProject
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_util", "sample\test_util.vcproj", "{CFC9B272-FDA1-4C87-B4EF-CDCA9B57F4DD}"
 EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "calc2", "sample\calc2.vcproj", "{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Win32 = Debug|Win32
@@ -69,6 +71,14 @@
 		{CFC9B272-FDA1-4C87-B4EF-CDCA9B57F4DD}.Release|Win32.Build.0 = Release|Win32
 		{CFC9B272-FDA1-4C87-B4EF-CDCA9B57F4DD}.Release|x64.ActiveCfg = Release|x64
 		{CFC9B272-FDA1-4C87-B4EF-CDCA9B57F4DD}.Release|x64.Build.0 = Release|x64
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Debug|Win32.ActiveCfg = Debug|Win32
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Debug|Win32.Build.0 = Debug|Win32
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Debug|x64.ActiveCfg = Debug|x64
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Debug|x64.Build.0 = Debug|x64
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Release|Win32.ActiveCfg = Release|Win32
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Release|Win32.Build.0 = Release|Win32
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Release|x64.ActiveCfg = Release|x64
+		{8EC11C7F-1B5C-4787-8940-B9B3AAF1D204}.Release|x64.Build.0 = Release|x64
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index e6d269e..f4822f9 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -4,9 +4,9 @@
 	@file xbyak.h
 	@brief Xbyak ; JIT assembler for x86(IA32)/x64 by C++
 	@author herumi
-	@version $Revision: 1.196 $
+	@version $Revision: 1.238 $
 	@url http://homepage1.nifty.com/herumi/soft/xbyak.html
-	@date $Date: 2010/07/07 01:00:04 $
+	@date $Date: 2011/02/04 03:46:09 $
 	@note modified new BSD license
 	http://www.opensource.org/licenses/bsd-license.php
 */
@@ -15,6 +15,7 @@
 #include <assert.h>
 #include <map>
 #include <string>
+#include <algorithm>
 #ifdef _WIN32
 	#include <windows.h>
 #elif defined(__GNUC__)
@@ -55,7 +56,7 @@
 
 enum {
 	DEFAULT_MAX_CODE_SIZE = 4096,
-	VERSION = 0x2290, /* 0xABCD = A.BC(D) */
+	VERSION = 0x2990, /* 0xABCD = A.BC(D) */
 };
 
 #ifndef MIE_INTEGER_TYPE_DEFINED
@@ -173,7 +174,8 @@
 		REG = 1 << 3,
 		MMX = 1 << 4,
 		XMM = 1 << 5,
-		FPU = 1 << 6
+		FPU = 1 << 6,
+		YMM = 1 << 7
 	};
 	enum Code {
 #ifdef XBYAK64
@@ -201,11 +203,11 @@
 	bool isNone() const { return kind_ == 0; }
 	bool isMMX() const { return is(MMX); }
 	bool isXMM() const { return is(XMM); }
+	bool isYMM() const { return is(YMM); }
 	bool isREG(int bit = 0) const { return is(REG, bit); }
 	bool isMEM(int bit = 0) const { return is(MEM, bit); }
 	bool isFPU() const { return is(FPU); }
 	bool isExt8bit() const { return ext8bit_ != 0; }
-	Operand changeBit(int bit) const { return Operand(idx_, static_cast<Kind>(kind_), bit, ext8bit_); }
 	// any bit is accetable if bit == 0
 	bool is(int kind, uint32 bit = 0) const
 	{
@@ -227,12 +229,15 @@
 				{ "rax", "rcx", "rdx", "rbx", "rsp", "rbp", "rsi", "rdi", "r8", "r9", "r10",  "r11", "r12", "r13", "r14", "r15" },
 			};
 			return tbl[bit_ == 8 ? 0 : bit_ == 16 ? 1 : bit_ == 32 ? 2 : 3][idx_];
-		} else if (isMMX()) {
-			static const char tbl[8][4] = { "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" };
+		} else if (isYMM()) {
+			static const char tbl[16][5] = { "ym0", "ym1", "ym2", "ym3", "ym4", "ym5", "ym6", "ym7", "ym8", "ym9", "ym10", "ym11", "ym12", "ym13", "ym14", "ym15" };
 			return tbl[idx_];
 		} else if (isXMM()) {
 			static const char tbl[16][5] = { "xm0", "xm1", "xm2", "xm3", "xm4", "xm5", "xm6", "xm7", "xm8", "xm9", "xm10", "xm11", "xm12", "xm13", "xm14", "xm15" };
 			return tbl[idx_];
+		} else if (isMMX()) {
+			static const char tbl[8][4] = { "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7" };
+			return tbl[idx_];
 		} else if (isFPU()) {
 			static const char tbl[8][4] = { "st0", "st1", "st2", "st3", "st4", "st5", "st6", "st7" };
 			return tbl[idx_];
@@ -243,14 +248,15 @@
 
 class Reg : public Operand {
 	void operator=(const Reg&);
+	bool hasRex() const { return isExt8bit() | isREG(64) | isExtIdx(); }
 public:
 	Reg() { }
 	Reg(int idx, Kind kind, int bit = 0, int ext8bit = 0) : Operand(idx, kind, bit, ext8bit) { }
-	// reg = this
-	uint8 getRex(const Reg& index = Reg(), const Reg& base = Reg()) const
+	Reg changeBit(int bit) const { return Reg(getIdx(), getKind(), bit, isExt8bit()); }
+	bool isExtIdx() const { return getIdx() > 7; }
+	uint8 getRex(const Reg& base = Reg()) const
 	{
-		if ((!isExt8bit() && !index.isExt8bit() && !base.isExt8bit()) && (getIdx() | index.getIdx() | base.getIdx()) < 8) return 0;
-		return uint8(0x40 | ((getIdx() >> 3) << 2)| ((index.getIdx() >> 3) << 1) | (base.getIdx() >> 3));
+		return (hasRex() || base.hasRex()) ? uint8(0x40 | ((isREG(64) | base.isREG(64)) ? 8 : 0) | (isExtIdx() ? 4 : 0)| (base.isExtIdx() ? 1 : 0)) : 0;
 	}
 };
 
@@ -275,7 +281,13 @@
 class Xmm : public Mmx {
 	void operator=(const Xmm&);
 public:
-	explicit Xmm(int idx) : Mmx(idx, Operand::XMM, 128) { }
+	explicit Xmm(int idx, Kind kind = Operand::XMM, int bit = 128) : Mmx(idx, kind, bit) { }
+};
+
+class Ymm : public Xmm {
+	void operator=(const Ymm&);
+public:
+	explicit Ymm(int idx) : Xmm(idx, Operand::YMM, 256) { }
 };
 
 class Fpu : public Reg {
@@ -327,7 +339,7 @@
 	{
 		return operator+(r, -static_cast<int>(disp));
 	}
-	void operator=(const Reg32e&); // don't call
+	void operator=(const Reg32e&);
 public:
 	explicit Reg32e(int idx, int bit)
 		: Reg(idx, REG, bit)
@@ -407,7 +419,6 @@
 		, size_(0)
 	{
 		if (type_ == ALLOC_BUF && !protect(top_, maxSize, true)) {
-//			fprintf(stderr, "can't protect (addr=%p, size=%u, canExec=%d)\n", addr, size, canExec);
 			throw ERR_CANT_PROTECT;
 		}
 	}
@@ -541,11 +552,7 @@
 	uint64 getDisp() const { return disp_; }
 	uint8 getRex() const { return rex_; }
 	bool is64bitDisp() const { return is64bitDisp_; } // for moffset
-#ifdef XBYAK64
 	void setRex(uint8 rex) { rex_ = rex; }
-#else
-	void setRex(uint8) { }
-#endif
 };
 
 class AddressFrame {
@@ -611,7 +618,8 @@
 		} else if (mod == mod10 || (mod == mod00 && r.isNone())) {
 			frame.dd(r.disp_);
 		}
-		frame.setRex(Reg().getRex(r.index_, r));
+		uint8 rex = ((r.getIdx() | r.index_.getIdx()) < 8) ? 0 : uint8(0x40 | ((r.index_.getIdx() >> 3) << 1) | (r.getIdx() >> 3));
+		frame.setRex(rex);
 		return frame;
 	}
 };
@@ -785,35 +793,43 @@
 	{
 		return op1.isREG(i32e) && (op2.isXMM() || op2.isMEM());
 	}
-	void if16bit(const Operand& reg1, const Operand& reg2)
-	{
-		// except movsx(16bit, 32/64bit)
-		if ((reg1.isBit(16) && !reg2.isBit(i32e)) || (reg2.isBit(16) && !reg1.isBit(i32e))) db(0x66);
-	}
-	void rexAddr(const Address& addr, const Reg& reg = Reg())
-	{
-#ifdef XBYAK64
-		if (addr.is32bit_) db(0x67);
-#endif
-		if16bit(reg, addr);
-		uint32 rex = addr.getRex() | reg.getRex();
-		if (reg.isREG(64)) rex |= 0x48;
-		if (rex) db(rex);
-	}
 	void rex(const Operand& op1, const Operand& op2 = Operand())
 	{
-		if (op1.isMEM()) {
-			rexAddr(static_cast<const Address&>(op1), static_cast<const Reg&>(op2));
-		} else if (op2.isMEM()) {
-			rexAddr(static_cast<const Address&>(op2), static_cast<const Reg&>(op1));
+		uint8 rex = 0;
+		const Operand *p1 = &op1, *p2 = &op2;
+		if (p1->isMEM()) std::swap(p1, p2);
+		if (p1->isMEM()) throw ERR_BAD_COMBINATION;
+		if (p2->isMEM()) {
+			const Address& addr = static_cast<const Address&>(*p2);
+			if (BIT == 64 && addr.is32bit_) db(0x67);
+			rex = addr.getRex() | static_cast<const Reg&>(*p1).getRex();
 		} else {
-			const Reg& reg1 = static_cast<const Reg&>(op1);
-			const Reg& reg2 = static_cast<const Reg&>(op2);
 			// ModRM(reg, base);
-			if16bit(reg1, reg2);
-			uint8 rex = reg2.getRex(Reg(), reg1);
-			if (reg1.isREG(64) || reg2.isREG(64)) rex |= 0x48;
-			if (rex) db(rex);
+			rex = static_cast<const Reg&>(op2).getRex(static_cast<const Reg&>(op1));
+		}
+		// except movsx(16bit, 32/64bit)
+		if ((op1.isBit(16) && !op2.isBit(i32e)) || (op2.isBit(16) && !op1.isBit(i32e))) db(0x66);
+		if (rex) db(rex);
+	}
+	enum AVXtype {
+		PP_NONE = 1 << 0,
+		PP_66 = 1 << 1,
+		PP_F3 = 1 << 2,
+		PP_F2 = 1 << 3,
+		MM_RESERVED = 1 << 4,
+		MM_0F = 1 << 5,
+		MM_0F38 = 1 << 6,
+		MM_0F3A = 1 << 7
+	};
+	void vex(bool r, int idx, bool is256, int type, bool x = false, bool b = false, int w = 1)
+	{
+		uint32 pp = (type & PP_66) ? 1 : (type & PP_F3) ? 2 : (type & PP_F2) ? 3 : 0;
+		uint32 vvvv = (((~idx) & 15) << 3) | (is256 ? 4 : 0) | pp;
+		if (!b && !x && !w && (type & MM_0F)) {
+			db(0xC5); db((r ? 0 : 0x80) | vvvv);
+		} else {
+			uint32 mmmm = (type & MM_0F) ? 1 : (type & MM_0F38) ? 2 : (type & MM_0F3A) ? 3 : 0;
+			db(0xC4); db((r ? 0 : 0x80) | (x ? 0 : 0x40) | (b ? 0 : 0x20) | mmmm); db((w << 7) | vvvv);
 		}
 	}
 	Label label_;
@@ -900,8 +916,7 @@
 	}
 	void opMMX(const Mmx& mmx, const Operand& op, int code, int pref = 0x66, int imm8 = NONE, int preCode = NONE)
 	{
-		pref = mmx.isXMM() ? pref : NONE;
-		opGen(mmx, op, code, pref, isXMMorMMX_MEM, imm8, preCode);
+		opGen(mmx, op, code, mmx.isXMM() ? pref : NONE, isXMMorMMX_MEM, imm8, preCode);
 	}
 	void opMovXMM(const Operand& op1, const Operand& op2, int code, int pref)
 	{
@@ -923,28 +938,14 @@
 			opGen(mmx, op, code, 0x66, isXMM_REG32orMEM, imm, B00111010);
 		}
 	}
-	void opR_ModM(const Operand& op, int bit, uint8 mod, int ext, int code0, int code1 = NONE, int code2 = NONE,
-		bool
-#ifdef XBYAK64
-		disableRex // avoid warning
-#endif
-		= false)
+	void opR_ModM(const Operand& op, int bit, int ext, int code0, int code1 = NONE, int code2 = NONE, bool disableRex = false)
 	{
+		int opBit = op.getBit();
+		if (disableRex && opBit == 64) opBit = 32;
 		if (op.isREG(bit)) {
-#ifdef XBYAK64 // append for call/jmp(dirty hack)
-			if (disableRex) {
-				uint8 rex = Reg().getRex(Reg(), static_cast<const Reg&>(op));
-				if (op.isREG(16)) db(0x66);
-				if (rex) db(rex);
-			} else
-#endif
-			{
-				rex(op);
-			}
-			db(code0 | (op.isBit(8) ? 0 : 1)); if (code1 != NONE) db(code1); if (code2 != NONE) db(code2);
-			db(getModRM(mod, ext, op.getIdx()));
+			opModR(Reg(ext, Operand::REG, opBit), static_cast<const Reg&>(op).changeBit(opBit), code0, code1, code2);
 		} else if (op.isMEM()) {
-			opModM(static_cast<const Address&>(op), Reg(ext, Operand::REG, op.getBit()), code0, code1, code2);
+			opModM(static_cast<const Address&>(op), Reg(ext, Operand::REG, opBit), code0, code1, code2);
 		} else {
 			throw ERR_BAD_COMBINATION;
 		}
@@ -952,13 +953,13 @@
 	void opShift(const Operand& op, int imm, int ext)
 	{
 		verifyMemHasSize(op);
-		opR_ModM(op, 0, 3, ext, (B11000000 | ((imm == 1 ? 1 : 0) << 4)));
+		opR_ModM(op, 0, ext, (B11000000 | ((imm == 1 ? 1 : 0) << 4)));
 		if (imm != 1) db(imm);
 	}
 	void opShift(const Operand& op, const Reg8& cl, int ext)
 	{
 		if (cl.getIdx() != Operand::CL) throw ERR_BAD_COMBINATION;
-		opR_ModM(op, 0, 3, ext, B11010010);
+		opR_ModM(op, 0, ext, B11010010);
 	}
 	void opModRM(const Operand& op1, const Operand& op2, bool condR, bool condM, int code0, int code1 = NONE, int code2 = NONE)
 	{
@@ -991,20 +992,19 @@
 		verifyMemHasSize(op);
 		uint32 immBit = inner::IsInDisp8(imm) ? 8 : isInDisp16(imm) ? 16 : 32;
 		if (op.getBit() < immBit) throw ERR_IMM_IS_TOO_BIG;
-		if (op.isREG()) {
-			if (immBit == 16 && op.isBit(32|64)) immBit = 32; /* don't use MEM16 if 32/64bit mode */
-		}
+		if (op.isREG(32|64) && immBit == 16) immBit = 32; /* don't use MEM16 if 32/64bit mode */
 		if (op.isREG() && op.getIdx() == 0 && (op.getBit() == immBit || (op.isBit(64) && immBit == 32))) { // rax, eax, ax, al
 			rex(op);
 			db(code | 4 | (immBit == 8 ? 0 : 1));
 		} else {
-			int tmp = (op.getBit() > immBit && 32 > immBit) ? 2 : 0;
-			opR_ModM(op, 0, 3, ext, B10000000 | tmp);
+			int tmp = immBit < (std::min)(op.getBit(), 32U) ? 2 : 0;
+			opR_ModM(op, 0, ext, B10000000 | tmp);
 		}
 		db(imm, immBit / 8);
 	}
 	void opIncDec(const Operand& op, int code, int ext)
 	{
+		verifyMemHasSize(op);
 #ifndef XBYAK64
 		if (op.isREG() && !op.isBit(8)) {
 			rex(op); db(code | op.getIdx());
@@ -1014,21 +1014,15 @@
 		code = B11111110;
 		if (op.isREG()) {
 			opModR(Reg(ext, Operand::REG, op.getBit()), static_cast<const Reg&>(op), code);
-		} else if (op.isMEM() && op.getBit() > 0) {
-			opModM(static_cast<const Address&>(op), Reg(ext, Operand::REG, op.getBit()), code);
 		} else {
-			throw ERR_BAD_COMBINATION;
+			opModM(static_cast<const Address&>(op), Reg(ext, Operand::REG, op.getBit()), code);
 		}
 	}
 	void opPushPop(const Operand& op, int code, int ext, int alt)
 	{
 		if (op.isREG()) {
-#ifdef XBYAK64
 			if (op.isBit(16)) db(0x66);
 			if (static_cast<const Reg&>(op).getIdx() >= 8) db(0x41);
-#else
-			rex(op);
-#endif
 			db(alt | (op.getIdx() & 7));
 		} else if (op.isMEM()) {
 			opModM(static_cast<const Address&>(op), Reg(ext, Operand::REG, op.getBit()), code);
@@ -1077,7 +1071,9 @@
 	using CodeArray::db;
 	const Mmx mm0, mm1, mm2, mm3, mm4, mm5, mm6, mm7;
 	const Xmm xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7;
+	const Ymm ymm0, ymm1, ymm2, ymm3, ymm4, ymm5, ymm6, ymm7;
 	const Xmm &xm0, &xm1, &xm2, &xm3, &xm4, &xm5, &xm6, &xm7;
+	const Ymm &ym0, &ym1, &ym2, &ym3, &ym4, &ym5, &ym6, &ym7;
 	const Reg32 eax, ecx, edx, ebx, esp, ebp, esi, edi;
 	const Reg16 ax, cx, dx, bx, sp, bp, si, di;
 	const Reg8 al, cl, dl, bl, ah, ch, dh, bh;
@@ -1090,7 +1086,9 @@
 	const Reg8 r8b, r9b, r10b, r11b, r12b, r13b, r14b, r15b;
 	const Reg8 spl, bpl, sil, dil;
 	const Xmm xmm8, xmm9, xmm10, xmm11, xmm12, xmm13, xmm14, xmm15;
-	const Xmm &xm8, &xm9, &xm10, &xm11, &xm12, &xm13, &xm14, &xm15;
+	const Ymm ymm8, ymm9, ymm10, ymm11, ymm12, ymm13, ymm14, ymm15;
+	const Xmm &xm8, &xm9, &xm10, &xm11, &xm12, &xm13, &xm14, &xm15; // for my convenience
+	const Ymm &ym8, &ym9, &ym10, &ym11, &ym12, &ym13, &ym14, &ym15;
 	const RegRip rip;
 #endif
 
@@ -1110,11 +1108,11 @@
 	}
 	void jmp(const Operand& op)
 	{
-		opR_ModM(op, BIT, 3, 4, 0xFF, NONE, NONE, true);
+		opR_ModM(op, BIT, 4, 0xFF, NONE, NONE, true);
 	}
 	void call(const Operand& op)
 	{
-		opR_ModM(op, 16 | i32e, 3, 2, 0xFF, NONE, NONE, true);
+		opR_ModM(op, 16 | i32e, 2, 0xFF, NONE, NONE, true);
 	}
 	// (REG|MEM, REG)
 	void test(const Operand& op, const Reg& reg)
@@ -1129,10 +1127,9 @@
 			rex(op);
 			db(B10101000 | (op.isBit(8) ? 0 : 1));
 		} else {
-			opR_ModM(op, 0, 3, 0, B11110110);
+			opR_ModM(op, 0, 0, B11110110);
 		}
-		int size = op.getBit() / 8; if (size > 4) size = 4;
-		db(imm, size);
+		db(imm, (std::min)(op.getBit() / 8, 4U));
 	}
 	void ret(int imm = 0)
 	{
@@ -1338,6 +1335,16 @@
 		if (mmx.isXMM()) db(0x66);
 		opModR(mmx, reg, 0x0F, B01101110);
 	}
+	void pextrq(const Operand& op, const Xmm& xmm, uint8 imm)
+	{
+		if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION;
+		opGen(Reg64(xmm.getIdx()), op, 0x16, 0x66, 0, imm, B00111010); // force to 64bit
+	}
+	void pinsrq(const Xmm& xmm, const Operand& op, uint8 imm)
+	{
+		if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION;
+		opGen(Reg64(xmm.getIdx()), op, 0x22, 0x66, 0, imm, B00111010); // force to 64bit
+	}
 #endif
 	// MMX2 : pextrw : reg, mmx/xmm, imm
 	// SSE4 : pextrw, pextrb, pextrd, extractps : reg/mem, mmx/xmm, imm
@@ -1382,7 +1389,7 @@
 		bool is16bit = reg.isREG(16) && (op.isREG(16) || op.isMEM());
 		if (!is16bit && !(reg.isREG(i32e) && (op.isREG(i32e) || op.isMEM()))) throw ERR_BAD_COMBINATION;
 		if (is16bit) db(0x66);
-		db(0xF3); opModRM(Reg(reg.getIdx(), Operand::REG, i32e == 32 ? 32 : reg.getBit()), op, op.isREG(), true, 0x0F, 0xB8);
+		db(0xF3); opModRM(reg.changeBit(i32e == 32 ? 32 : reg.getBit()), op, op.isREG(), true, 0x0F, 0xB8);
 	}
 	void crc32(const Reg32e& reg, const Operand& op)
 	{
@@ -1390,13 +1397,81 @@
 		db(0xF2);
 		opModRM(reg, op, op.isREG(), op.isMEM(), 0x0F, 0x38, 0xF0 | (op.isBit(8) ? 0 : 1));
 	}
-public:
+	void vextractps(const Operand& op, const Xmm& xmm, uint8 imm)
+	{
+		if (!(op.isREG(32) || op.isMEM()) || xmm.isYMM()) throw ERR_BAD_COMBINATION;
+		opAVX_X_XM_IMM(xmm, cvtReg(op, op.isREG(), Operand::XMM), MM_0F3A | PP_66, 0x17, false, 0, imm);
+	}
+	// support (x, x, x/m), (y, y, y/m)
+	void opAVX_X_X_XM(const Xmm& xm1, const Operand& op1, const Operand& op2, int type, int code0, bool supportYMM, int w = -1)
+	{
+		const Xmm *xm2;
+		const Operand *op;
+		if (op2.isNone()) {
+			xm2 = &xm1;
+			op = &op1;
+		} else {
+			if (!(op1.isXMM() || (supportYMM && op1.isYMM()))) throw ERR_BAD_COMBINATION;
+			xm2 = static_cast<const Xmm*>(&op1);
+			op = &op2;
+		}
+		// (xm1, xm2, op)
+		if (!((xm1.isXMM() && xm2->isXMM()) || (supportYMM && xm1.isYMM() && xm2->isYMM()))) throw ERR_BAD_COMBINATION;
+		bool x, b;
+		if (op->isMEM()) {
+			const Address& addr = *static_cast<const Address*>(op);
+			uint8 rex = addr.getRex();
+			x = (rex & 2) != 0;
+			b = (rex & 1) != 0;
+			if (BIT == 64 && addr.is32bit_) db(0x67);
+			if (BIT == 64 && w == -1) w = (rex & 4) ? 1 : 0;
+		} else {
+			x = false;
+			b = static_cast<const Reg*>(op)->isExtIdx();
+		}
+		if (w == -1) w = 0;
+		vex(xm1.isExtIdx(), xm2->getIdx(), xm1.isYMM(), type, x, b, w);
+		db(code0);
+		if (op->isMEM()) {
+			const Address& addr = *static_cast<const Address*>(op);
+			addr.updateRegField(static_cast<uint8>(xm1.getIdx()));
+			db(addr.getCode(), static_cast<int>(addr.getSize()));
+		} else {
+			db(getModRM(3, xm1.getIdx(), op->getIdx()));
+		}
+	}
+	// if cvt then return pointer to Xmm(idx) (or Ymm(idx)), otherwise return op
+	const Operand& cvtReg(const Operand& op, bool cvt, Operand::Kind kind) const
+	{
+		if (!cvt) return op;
+		static const Xmm* xmTbl[] = {
+			&xm0, &xm1, &xm2, &xm3, &xm4, &xm5, &xm6, &xm7,
+#ifdef XBYAK64
+			&xm8, &xm9, &xm10, &xm11, &xm12, &xm13, &xm14, &xm15
+#endif
+		};
+		static const Ymm* ymTbl[] = {
+			&ym0, &ym1, &ym2, &ym3, &ym4, &ym5, &ym6, &ym7,
+#ifdef XBYAK64
+			&ym8, &ym9, &ym10, &ym11, &ym12, &ym13, &ym14, &ym15
+#endif
+		};
+		return (kind == Operand::XMM) ? *xmTbl[op.getIdx()] : *ymTbl[op.getIdx()];
+	}
+	// support (x, x/m, imm), (y, y/m, imm)
+	void opAVX_X_XM_IMM(const Xmm& xmm, const Operand& op, int type, int code, bool supportYMM, int w = -1, int imm = NONE)
+	{
+		opAVX_X_X_XM(xmm, xmm.isXMM() ? xm0 : ym0, op, type, code, supportYMM, w); if (imm != NONE) db((uint8)imm);
+	}
 	enum { NONE = 256 };
+public:
 	CodeGenerator(size_t maxSize = DEFAULT_MAX_CODE_SIZE, void *userPtr = 0)
 		: CodeArray(maxSize, userPtr)
 		, mm0(0), mm1(1), mm2(2), mm3(3), mm4(4), mm5(5), mm6(6), mm7(7)
 		, xmm0(0), xmm1(1), xmm2(2), xmm3(3), xmm4(4), xmm5(5), xmm6(6), xmm7(7)
+		, ymm0(0), ymm1(1), ymm2(2), ymm3(3), ymm4(4), ymm5(5), ymm6(6), ymm7(7)
 		, xm0(xmm0), xm1(xmm1), xm2(xmm2), xm3(xmm3), xm4(xmm4), xm5(xmm5), xm6(xmm6), xm7(xmm7) // for my convenience
+		, ym0(ymm0), ym1(ymm1), ym2(ymm2), ym3(ymm3), ym4(ymm4), ym5(ymm5), ym6(ymm6), ym7(ymm7) // for my convenience
 		, eax(Operand::EAX), ecx(Operand::ECX), edx(Operand::EDX), ebx(Operand::EBX), esp(Operand::ESP), ebp(Operand::EBP), esi(Operand::ESI), edi(Operand::EDI)
 		, ax(Operand::EAX), cx(Operand::ECX), dx(Operand::EDX), bx(Operand::EBX), sp(Operand::ESP), bp(Operand::EBP), si(Operand::ESI), di(Operand::EDI)
 		, al(Operand::AL), cl(Operand::CL), dl(Operand::DL), bl(Operand::BL), ah(Operand::AH), ch(Operand::CH), dh(Operand::DH), bh(Operand::BH)
@@ -1409,7 +1484,9 @@
 		, r8b(Operand::R8B), r9b(Operand::R9B), r10b(Operand::R10B), r11b(Operand::R11B), r12b(Operand::R12B), r13b(Operand::R13B), r14b(Operand::R14B), r15b(Operand::R15B)
 		, spl(Operand::SPL, 1), bpl(Operand::BPL, 1), sil(Operand::SIL, 1), dil(Operand::DIL, 1)
 		, xmm8(8), xmm9(9), xmm10(10), xmm11(11), xmm12(12), xmm13(13), xmm14(14), xmm15(15)
+		, ymm8(8), ymm9(9), ymm10(10), ymm11(11), ymm12(12), ymm13(13), ymm14(14), ymm15(15)
 		, xm8(xmm8), xm9(xmm9), xm10(xmm10), xm11(xmm11), xm12(xmm12), xm13(xmm13), xm14(xmm14), xm15(xmm15) // for my convenience
+		, ym8(ymm8), ym9(ymm9), ym10(ymm10), ym11(ymm11), ym12(ymm12), ym13(ymm13), ym14(ymm14), ym15(ymm15) // for my convenience
 		, rip()
 #endif
 	{
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index d44bd34..5a6e334 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "2.29"; }
+const char *getVersionString() const { return "2.99"; }
 void packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); }
 void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
 void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); }
@@ -184,94 +184,94 @@
 void movlpd(const Operand& op1, const Operand& op2) { opMovXMM(op1, op2, 0x12, 0x66); }
 void cmovo(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 0); }
 void jo(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x70, 0x80, 0x0F); }
-void seto(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 0); }
+void seto(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 0); }
 void cmovno(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 1); }
 void jno(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x71, 0x81, 0x0F); }
-void setno(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 1); }
+void setno(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 1); }
 void cmovb(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 2); }
 void jb(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x72, 0x82, 0x0F); }
-void setb(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 2); }
+void setb(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 2); }
 void cmovc(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 2); }
 void jc(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x72, 0x82, 0x0F); }
-void setc(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 2); }
+void setc(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 2); }
 void cmovnae(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 2); }
 void jnae(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x72, 0x82, 0x0F); }
-void setnae(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 2); }
+void setnae(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 2); }
 void cmovnb(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 3); }
 void jnb(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x73, 0x83, 0x0F); }
-void setnb(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 3); }
+void setnb(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 3); }
 void cmovae(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 3); }
 void jae(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x73, 0x83, 0x0F); }
-void setae(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 3); }
+void setae(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 3); }
 void cmovnc(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 3); }
 void jnc(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x73, 0x83, 0x0F); }
-void setnc(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 3); }
+void setnc(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 3); }
 void cmove(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 4); }
 void je(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x74, 0x84, 0x0F); }
-void sete(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 4); }
+void sete(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 4); }
 void cmovz(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 4); }
 void jz(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x74, 0x84, 0x0F); }
-void setz(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 4); }
+void setz(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 4); }
 void cmovne(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 5); }
 void jne(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x75, 0x85, 0x0F); }
-void setne(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 5); }
+void setne(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 5); }
 void cmovnz(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 5); }
 void jnz(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x75, 0x85, 0x0F); }
-void setnz(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 5); }
+void setnz(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 5); }
 void cmovbe(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 6); }
 void jbe(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x76, 0x86, 0x0F); }
-void setbe(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 6); }
+void setbe(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 6); }
 void cmovna(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 6); }
 void jna(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x76, 0x86, 0x0F); }
-void setna(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 6); }
+void setna(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 6); }
 void cmovnbe(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 7); }
 void jnbe(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x77, 0x87, 0x0F); }
-void setnbe(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 7); }
+void setnbe(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 7); }
 void cmova(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 7); }
 void ja(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x77, 0x87, 0x0F); }
-void seta(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 7); }
+void seta(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 7); }
 void cmovs(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 8); }
 void js(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x78, 0x88, 0x0F); }
-void sets(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 8); }
+void sets(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 8); }
 void cmovns(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 9); }
 void jns(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x79, 0x89, 0x0F); }
-void setns(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 9); }
+void setns(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 9); }
 void cmovp(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 10); }
 void jp(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7A, 0x8A, 0x0F); }
-void setp(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 10); }
+void setp(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 10); }
 void cmovpe(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 10); }
 void jpe(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7A, 0x8A, 0x0F); }
-void setpe(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 10); }
+void setpe(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 10); }
 void cmovnp(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 11); }
 void jnp(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7B, 0x8B, 0x0F); }
-void setnp(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 11); }
+void setnp(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 11); }
 void cmovpo(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 11); }
 void jpo(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7B, 0x8B, 0x0F); }
-void setpo(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 11); }
+void setpo(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 11); }
 void cmovl(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 12); }
 void jl(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7C, 0x8C, 0x0F); }
-void setl(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 12); }
+void setl(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 12); }
 void cmovnge(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 12); }
 void jnge(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7C, 0x8C, 0x0F); }
-void setnge(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 12); }
+void setnge(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 12); }
 void cmovnl(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 13); }
 void jnl(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7D, 0x8D, 0x0F); }
-void setnl(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 13); }
+void setnl(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 13); }
 void cmovge(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 13); }
 void jge(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7D, 0x8D, 0x0F); }
-void setge(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 13); }
+void setge(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 13); }
 void cmovle(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 14); }
 void jle(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7E, 0x8E, 0x0F); }
-void setle(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 14); }
+void setle(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 14); }
 void cmovng(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 14); }
 void jng(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7E, 0x8E, 0x0F); }
-void setng(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 14); }
+void setng(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 14); }
 void cmovnle(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 15); }
 void jnle(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7F, 0x8F, 0x0F); }
-void setnle(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 15); }
+void setnle(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 15); }
 void cmovg(const Reg32e& reg, const Operand& op) { opModRM(reg, op, op.isREG(i32e), op.isMEM(), 0x0F, B01000000 | 15); }
 void jg(const char *label, LabelType type = T_AUTO) { opJmp(label, type, 0x7F, 0x8F, 0x0F); }
-void setg(const Operand& op) { opR_ModM(op, 8, 3, 0, 0x0F, B10010000 | 15); }
+void setg(const Operand& op) { opR_ModM(op, 8, 0, 0x0F, B10010000 | 15); }
 #ifdef XBYAK64
 void cdqe() { db(0x48); db(0x98); }
 #else
@@ -314,12 +314,16 @@
 void rdmsr() { db(0x0F); db(0x32); }
 void rdpmc() { db(0x0F); db(0x33); }
 void rdtsc() { db(0x0F); db(0x31); }
+void rdtscp() { db(0x0F); db(0x01); db(0xF9); }
 void wait() { db(0x9B); }
 void wbinvd() { db(0x0F); db(0x09); }
 void wrmsr() { db(0x0F); db(0x30); }
 void xlatb() { db(0xD7); }
 void popf() { db(0x9D); }
 void pushf() { db(0x9C); }
+void vzeroall() { db(0xC5); db(0xFC); db(0x77); }
+void vzeroupper() { db(0xC5); db(0xF8); db(0x77); }
+void xgetbv() { db(0x0F); db(0x01); db(0xD0); }
 void f2xm1() { db(0xD9); db(0xF0); }
 void fabs() { db(0xD9); db(0xE1); }
 void faddp() { db(0xDE); db(0xC1); }
@@ -379,12 +383,12 @@
 void xor(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x30, 6); }
 void dec(const Operand& op) { opIncDec(op, 0x48, 1); }
 void inc(const Operand& op) { opIncDec(op, 0x40, 0); }
-void div(const Operand& op) { opR_ModM(op, 0, 3, 6, 0xF6); }
-void idiv(const Operand& op) { opR_ModM(op, 0, 3, 7, 0xF6); }
-void imul(const Operand& op) { opR_ModM(op, 0, 3, 5, 0xF6); }
-void mul(const Operand& op) { opR_ModM(op, 0, 3, 4, 0xF6); }
-void neg(const Operand& op) { opR_ModM(op, 0, 3, 3, 0xF6); }
-void not(const Operand& op) { opR_ModM(op, 0, 3, 2, 0xF6); }
+void div(const Operand& op) { opR_ModM(op, 0, 6, 0xF6); }
+void idiv(const Operand& op) { opR_ModM(op, 0, 7, 0xF6); }
+void imul(const Operand& op) { opR_ModM(op, 0, 5, 0xF6); }
+void mul(const Operand& op) { opR_ModM(op, 0, 4, 0xF6); }
+void neg(const Operand& op) { opR_ModM(op, 0, 3, 0xF6); }
+void not(const Operand& op) { opR_ModM(op, 0, 2, 0xF6); }
 void rcl(const Operand& op, int imm) { opShift(op, imm, 2); }
 void rcl(const Operand& op, const Reg8& cl) { opShift(op, cl, 2); }
 void rcr(const Operand& op, int imm) { opShift(op, imm, 3); }
@@ -407,52 +411,57 @@
 void shrd(const Operand& op, const Reg& reg, const Reg8& cl) { opShxd(op, reg, 0, 0xAC, &cl); }
 void bsf(const Reg&reg, const Operand& op) { opModRM(reg, op, op.isREG(16 | i32e), op.isMEM(), 0x0F, 0xBC); }
 void bsr(const Reg&reg, const Operand& op) { opModRM(reg, op, op.isREG(16 | i32e), op.isMEM(), 0x0F, 0xBD); }
-void pshufb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x00, 0x66, 256, 0x38); }
-void phaddw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x01, 0x66, 256, 0x38); }
-void phaddd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x02, 0x66, 256, 0x38); }
-void phaddsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x03, 0x66, 256, 0x38); }
-void pmaddubsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x04, 0x66, 256, 0x38); }
-void phsubw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x05, 0x66, 256, 0x38); }
-void phsubd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x06, 0x66, 256, 0x38); }
-void phsubsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x07, 0x66, 256, 0x38); }
-void psignb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x08, 0x66, 256, 0x38); }
-void psignw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x09, 0x66, 256, 0x38); }
-void psignd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x0A, 0x66, 256, 0x38); }
-void pmulhrsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x0B, 0x66, 256, 0x38); }
-void pabsb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1C, 0x66, 256, 0x38); }
-void pabsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1D, 0x66, 256, 0x38); }
-void pabsd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1E, 0x66, 256, 0x38); }
+void pshufb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x00, 0x66, NONE, 0x38); }
+void phaddw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x01, 0x66, NONE, 0x38); }
+void phaddd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x02, 0x66, NONE, 0x38); }
+void phaddsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x03, 0x66, NONE, 0x38); }
+void pmaddubsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x04, 0x66, NONE, 0x38); }
+void phsubw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x05, 0x66, NONE, 0x38); }
+void phsubd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x06, 0x66, NONE, 0x38); }
+void phsubsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x07, 0x66, NONE, 0x38); }
+void psignb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x08, 0x66, NONE, 0x38); }
+void psignw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x09, 0x66, NONE, 0x38); }
+void psignd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x0A, 0x66, NONE, 0x38); }
+void pmulhrsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x0B, 0x66, NONE, 0x38); }
+void pabsb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1C, 0x66, NONE, 0x38); }
+void pabsw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1D, 0x66, NONE, 0x38); }
+void pabsd(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x1E, 0x66, NONE, 0x38); }
 void palignr(const Mmx& mmx, const Operand& op, int imm) { opMMX(mmx, op, 0x0f, 0x66, static_cast<uint8>(imm), 0x3a); }
-void blendvpd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x15, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void blendvps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x14, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void packusdw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x2B, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pblendvb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x10, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pcmpeqq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x29, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void ptest(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x17, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxbw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x20, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxbd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x21, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxbq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x22, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxwd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x23, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxwq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x24, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovsxdq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x25, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxbw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x30, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxbd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x31, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxbq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x32, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxwd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x33, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxwq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x34, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmovzxdq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x35, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pminsb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x38, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pminsd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x39, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pminuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3A, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pminud(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3B, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmaxsb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3C, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmaxsd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3D, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmaxuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3E, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmaxud(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3F, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmuldq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x28, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pmulld(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x40, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void phminposuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x41, 0x66, isXMM_XMMorMEM, 256, 0x38); }
-void pcmpgtq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x37, 0x66, isXMM_XMMorMEM, 256, 0x38); }
+void blendvpd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x15, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void blendvps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x14, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void packusdw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x2B, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pblendvb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x10, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pcmpeqq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x29, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void ptest(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x17, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxbw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x20, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxbd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x21, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxbq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x22, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxwd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x23, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxwq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x24, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovsxdq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x25, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxbw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x30, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxbd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x31, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxbq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x32, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxwd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x33, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxwq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x34, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmovzxdq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x35, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pminsb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x38, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pminsd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x39, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pminuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3A, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pminud(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3B, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmaxsb(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3C, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmaxsd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3D, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmaxuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3E, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmaxud(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x3F, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmuldq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x28, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pmulld(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x40, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void phminposuw(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x41, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void pcmpgtq(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x37, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void aesdec(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xDE, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void aesdeclast(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xDF, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void aesenc(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xDC, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void aesenclast(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xDD, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
+void aesimc(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0xDB, 0x66, isXMM_XMMorMEM, NONE, 0x38); }
 void blendpd(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x0D, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
 void blendps(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x0C, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
 void dppd(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x41, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
@@ -467,6 +476,8 @@
 void pcmpestri(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x61, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
 void pcmpistrm(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x62, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
 void pcmpistri(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x63, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
+void pclmulqdq(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0x44, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
+void aeskeygenassist(const Xmm& xmm, const Operand& op, int imm) { opGen(xmm, op, 0xDF, 0x66, isXMM_XMMorMEM, static_cast<uint8>(imm), 0x3A); }
 void ldmxcsr(const Address& addr) { opModM(addr, Reg32(2), 0x0F, 0xAE); }
 void stmxcsr(const Address& addr) { opModM(addr, Reg32(3), 0x0F, 0xAE); }
 void clflush(const Address& addr) { opModM(addr, Reg32(7), 0x0F, 0xAE); }
@@ -530,3 +541,484 @@
 void fucom(const Fpu& reg) { opFpu(reg, 0xDD, 0xE0); }
 void fucomp(const Fpu& reg) { opFpu(reg, 0xDD, 0xE8); }
 void fxch(const Fpu& reg) { opFpu(reg, 0xD9, 0xC8); }
+void vaddpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x58, true); }
+void vaddps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x58, true); }
+void vaddsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x58, false); }
+void vaddss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x58, false); }
+void vsubpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x5C, true); }
+void vsubps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x5C, true); }
+void vsubsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x5C, false); }
+void vsubss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x5C, false); }
+void vmulpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x59, true); }
+void vmulps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x59, true); }
+void vmulsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x59, false); }
+void vmulss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x59, false); }
+void vdivpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x5E, true); }
+void vdivps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x5E, true); }
+void vdivsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x5E, false); }
+void vdivss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x5E, false); }
+void vmaxpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x5F, true); }
+void vmaxps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x5F, true); }
+void vmaxsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x5F, false); }
+void vmaxss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x5F, false); }
+void vminpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x5D, true); }
+void vminps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x5D, true); }
+void vminsd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x5D, false); }
+void vminss(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F3, 0x5D, false); }
+void vandpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x54, true); }
+void vandps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x54, true); }
+void vandnpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x55, true); }
+void vandnps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x55, true); }
+void vorpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x56, true); }
+void vorps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x56, true); }
+void vxorpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x57, true); }
+void vxorps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F, 0x57, true); }
+void vblendpd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0D, true, 0); db(imm); }
+void vblendpd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0D, true, 0); db(imm); }
+void vblendps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0C, true, 0); db(imm); }
+void vblendps(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0C, true, 0); db(imm); }
+void vdppd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x41, false, 0); db(imm); }
+void vdppd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x41, false, 0); db(imm); }
+void vdpps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x40, true, 0); db(imm); }
+void vdpps(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x40, true, 0); db(imm); }
+void vmpsadbw(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x42, false, 0); db(imm); }
+void vmpsadbw(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x42, false, 0); db(imm); }
+void vpblendw(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0E, false, 0); db(imm); }
+void vpblendw(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0E, false, 0); db(imm); }
+void vroundsd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0B, false, 0); db(imm); }
+void vroundsd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0B, false, 0); db(imm); }
+void vroundss(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0A, false, 0); db(imm); }
+void vroundss(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0A, false, 0); db(imm); }
+void vpclmulqdq(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x44, false, 0); db(imm); }
+void vpclmulqdq(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x44, false, 0); db(imm); }
+void vpermilps(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0C, true, 0); }
+void vpermilpd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0D, true, 0); }
+void vcmppd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); }
+void vcmppd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); }
+void vcmpps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0xC2, true, -1); db(imm); }
+void vcmpps(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F, 0xC2, true, -1); db(imm); }
+void vcmpsd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F2, 0xC2, false, -1); db(imm); }
+void vcmpsd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F2, 0xC2, false, -1); db(imm); }
+void vcmpss(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F3, 0xC2, false, -1); db(imm); }
+void vcmpss(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F3, 0xC2, false, -1); db(imm); }
+void vcvtsd2ss(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F2, 0x5A, false, -1); }
+void vcvtsd2ss(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F2, 0x5A, false, -1); }
+void vcvtss2sd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F3, 0x5A, false, -1); }
+void vcvtss2sd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F3, 0x5A, false, -1); }
+void vinsertps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x21, false, 0); db(imm); }
+void vinsertps(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x21, false, 0); db(imm); }
+void vpacksswb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x63, false, -1); }
+void vpacksswb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x63, false, -1); }
+void vpackssdw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x6B, false, -1); }
+void vpackssdw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x6B, false, -1); }
+void vpackuswb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x67, false, -1); }
+void vpackuswb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x67, false, -1); }
+void vpackusdw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x2B, false, -1); }
+void vpackusdw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x2B, false, -1); }
+void vpaddb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xFC, false, -1); }
+void vpaddb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xFC, false, -1); }
+void vpaddw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xFD, false, -1); }
+void vpaddw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xFD, false, -1); }
+void vpaddd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xFE, false, -1); }
+void vpaddd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xFE, false, -1); }
+void vpaddq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD4, false, -1); }
+void vpaddq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD4, false, -1); }
+void vpaddsb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEC, false, -1); }
+void vpaddsb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xEC, false, -1); }
+void vpaddsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xED, false, -1); }
+void vpaddsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xED, false, -1); }
+void vpaddusb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDC, false, -1); }
+void vpaddusb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDC, false, -1); }
+void vpaddusw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDD, false, -1); }
+void vpaddusw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDD, false, -1); }
+void vpalignr(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0F, false, -1); db(imm); }
+void vpalignr(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0F, false, -1); db(imm); }
+void vpand(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDB, false, -1); }
+void vpand(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDB, false, -1); }
+void vpandn(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDF, false, -1); }
+void vpandn(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDF, false, -1); }
+void vpavgb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE0, false, -1); }
+void vpavgb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE0, false, -1); }
+void vpavgw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE3, false, -1); }
+void vpavgw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE3, false, -1); }
+void vpcmpeqb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x74, false, -1); }
+void vpcmpeqb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x74, false, -1); }
+void vpcmpeqw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x75, false, -1); }
+void vpcmpeqw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x75, false, -1); }
+void vpcmpeqd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x76, false, -1); }
+void vpcmpeqd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x76, false, -1); }
+void vpcmpeqq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x29, false, -1); }
+void vpcmpeqq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x29, false, -1); }
+void vpcmpgtb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x64, false, -1); }
+void vpcmpgtb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x64, false, -1); }
+void vpcmpgtw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x65, false, -1); }
+void vpcmpgtw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x65, false, -1); }
+void vpcmpgtd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x66, false, -1); }
+void vpcmpgtd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x66, false, -1); }
+void vpcmpgtq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x37, false, -1); }
+void vpcmpgtq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x37, false, -1); }
+void vphaddw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x01, false, -1); }
+void vphaddw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x01, false, -1); }
+void vphaddd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x02, false, -1); }
+void vphaddd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x02, false, -1); }
+void vphaddsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x03, false, -1); }
+void vphaddsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x03, false, -1); }
+void vphsubw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x05, false, -1); }
+void vphsubw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x05, false, -1); }
+void vphsubd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x06, false, -1); }
+void vphsubd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x06, false, -1); }
+void vphsubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x07, false, -1); }
+void vphsubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x07, false, -1); }
+void vpmaddwd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF5, false, -1); }
+void vpmaddwd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF5, false, -1); }
+void vpmaddubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x04, false, -1); }
+void vpmaddubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x04, false, -1); }
+void vpmaxsb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3C, false, -1); }
+void vpmaxsb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3C, false, -1); }
+void vpmaxsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEE, false, -1); }
+void vpmaxsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xEE, false, -1); }
+void vpmaxsd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3D, false, -1); }
+void vpmaxsd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3D, false, -1); }
+void vpmaxub(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDE, false, -1); }
+void vpmaxub(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDE, false, -1); }
+void vpmaxuw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3E, false, -1); }
+void vpmaxuw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3E, false, -1); }
+void vpmaxud(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3F, false, -1); }
+void vpmaxud(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3F, false, -1); }
+void vpminsb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x38, false, -1); }
+void vpminsb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x38, false, -1); }
+void vpminsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEA, false, -1); }
+void vpminsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xEA, false, -1); }
+void vpminsd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x39, false, -1); }
+void vpminsd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x39, false, -1); }
+void vpminub(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDA, false, -1); }
+void vpminub(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDA, false, -1); }
+void vpminuw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3A, false, -1); }
+void vpminuw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3A, false, -1); }
+void vpminud(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3B, false, -1); }
+void vpminud(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3B, false, -1); }
+void vpmulhuw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE4, false, -1); }
+void vpmulhuw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE4, false, -1); }
+void vpmulhrsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0B, false, -1); }
+void vpmulhrsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x0B, false, -1); }
+void vpmulhw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE5, false, -1); }
+void vpmulhw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE5, false, -1); }
+void vpmullw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD5, false, -1); }
+void vpmullw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD5, false, -1); }
+void vpmulld(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x40, false, -1); }
+void vpmulld(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x40, false, -1); }
+void vpmuludq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF4, false, -1); }
+void vpmuludq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF4, false, -1); }
+void vpmuldq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x28, false, -1); }
+void vpmuldq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x28, false, -1); }
+void vpor(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEB, false, -1); }
+void vpor(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xEB, false, -1); }
+void vpsadbw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF6, false, -1); }
+void vpsadbw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF6, false, -1); }
+void vpshufb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x00, false, -1); }
+void vpsignb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x08, false, -1); }
+void vpsignb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x08, false, -1); }
+void vpsignw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x09, false, -1); }
+void vpsignw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x09, false, -1); }
+void vpsignd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0A, false, -1); }
+void vpsignd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x0A, false, -1); }
+void vpsllw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF1, false, -1); }
+void vpsllw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF1, false, -1); }
+void vpslld(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF2, false, -1); }
+void vpslld(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF2, false, -1); }
+void vpsllq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF3, false, -1); }
+void vpsllq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF3, false, -1); }
+void vpsraw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE1, false, -1); }
+void vpsraw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE1, false, -1); }
+void vpsrad(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE2, false, -1); }
+void vpsrad(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE2, false, -1); }
+void vpsrlw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD1, false, -1); }
+void vpsrlw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD1, false, -1); }
+void vpsrld(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD2, false, -1); }
+void vpsrld(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD2, false, -1); }
+void vpsrlq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD3, false, -1); }
+void vpsrlq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD3, false, -1); }
+void vpsubb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF8, false, -1); }
+void vpsubb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF8, false, -1); }
+void vpsubw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF9, false, -1); }
+void vpsubw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF9, false, -1); }
+void vpsubd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xFA, false, -1); }
+void vpsubd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xFA, false, -1); }
+void vpsubq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xFB, false, -1); }
+void vpsubq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xFB, false, -1); }
+void vpsubsb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE8, false, -1); }
+void vpsubsb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE8, false, -1); }
+void vpsubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xE9, false, -1); }
+void vpsubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xE9, false, -1); }
+void vpsubusb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD8, false, -1); }
+void vpsubusb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD8, false, -1); }
+void vpsubusw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xD9, false, -1); }
+void vpsubusw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xD9, false, -1); }
+void vpunpckhbw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x68, false, -1); }
+void vpunpckhbw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x68, false, -1); }
+void vpunpckhwd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x69, false, -1); }
+void vpunpckhwd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x69, false, -1); }
+void vpunpckhdq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x6A, false, -1); }
+void vpunpckhdq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x6A, false, -1); }
+void vpunpckhqdq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x6D, false, -1); }
+void vpunpckhqdq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x6D, false, -1); }
+void vpunpcklbw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x60, false, -1); }
+void vpunpcklbw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x60, false, -1); }
+void vpunpcklwd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x61, false, -1); }
+void vpunpcklwd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x61, false, -1); }
+void vpunpckldq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x62, false, -1); }
+void vpunpckldq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x62, false, -1); }
+void vpunpcklqdq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x6C, false, -1); }
+void vpunpcklqdq(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x6C, false, -1); }
+void vpxor(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEF, false, -1); }
+void vpxor(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xEF, false, -1); }
+void vrcpss(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F3, 0x53, false, -1); }
+void vrcpss(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F3, 0x53, false, -1); }
+void vrsqrtss(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F3, 0x52, false, -1); }
+void vrsqrtss(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F3, 0x52, false, -1); }
+void vshufpd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xC6, true, -1); db(imm); }
+void vshufpd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xC6, true, -1); db(imm); }
+void vshufps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0xC6, true, -1); db(imm); }
+void vshufps(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F, 0xC6, true, -1); db(imm); }
+void vsqrtsd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F2, 0x51, false, -1); }
+void vsqrtsd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F2, 0x51, false, -1); }
+void vsqrtss(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_F3, 0x51, false, -1); }
+void vsqrtss(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_F3, 0x51, false, -1); }
+void vunpckhpd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x15, true, -1); }
+void vunpckhpd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x15, true, -1); }
+void vunpckhps(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0x15, true, -1); }
+void vunpckhps(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F, 0x15, true, -1); }
+void vunpcklpd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0x14, true, -1); }
+void vunpcklpd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0x14, true, -1); }
+void vunpcklps(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0x14, true, -1); }
+void vunpcklps(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F, 0x14, true, -1); }
+void vaeskeygenassist(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0xDF, false, 0, imm); }
+void vroundpd(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x09, true, 0, imm); }
+void vroundps(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x08, true, 0, imm); }
+void vpermilpd(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x05, true, 0, imm); }
+void vpermilps(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x04, true, 0, imm); }
+void vpcmpestri(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x61, false, 0, imm); }
+void vpcmpestrm(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x60, false, 0, imm); }
+void vpcmpistri(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x63, false, 0, imm); }
+void vpcmpistrm(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F3A | PP_66, 0x62, false, 0, imm); }
+void vtestps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x0E, true, 0); }
+void vtestpd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x0F, true, 0); }
+void vcomisd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x2F, false, -1); }
+void vcomiss(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x2F, false, -1); }
+void vcvtdq2ps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x5B, true, -1); }
+void vcvtps2dq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x5B, true, -1); }
+void vcvttps2dq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F3, 0x5B, true, -1); }
+void vmovapd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x28, true, -1); }
+void vmovaps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x28, true, -1); }
+void vmovddup(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F2, 0x12, true, -1); }
+void vmovdqa(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x6F, true, -1); }
+void vmovdqu(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F3, 0x6F, true, -1); }
+void vmovshdup(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F3, 0x16, true, -1); }
+void vmovsldup(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F3, 0x12, true, -1); }
+void vmovupd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x10, true, -1); }
+void vmovups(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x10, true, -1); }
+void vpabsb(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x1C, false, -1); }
+void vpabsw(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x1D, false, -1); }
+void vpabsd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x1E, false, -1); }
+void vphminposuw(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x41, false, -1); }
+void vpmovsxbw(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x20, false, -1); }
+void vpmovsxbd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x21, false, -1); }
+void vpmovsxbq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x22, false, -1); }
+void vpmovsxwd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x23, false, -1); }
+void vpmovsxwq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x24, false, -1); }
+void vpmovsxdq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x25, false, -1); }
+void vpmovzxbw(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x30, false, -1); }
+void vpmovzxbd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x31, false, -1); }
+void vpmovzxbq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x32, false, -1); }
+void vpmovzxwd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x33, false, -1); }
+void vpmovzxwq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x34, false, -1); }
+void vpmovzxdq(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x35, false, -1); }
+void vpshufd(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x70, false, -1, imm); }
+void vpshufhw(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F3, 0x70, false, -1, imm); }
+void vpshuflw(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_F2, 0x70, false, -1, imm); }
+void vptest(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F38 | PP_66, 0x17, false, -1); }
+void vrcpps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x53, true, -1); }
+void vrsqrtps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x52, true, -1); }
+void vsqrtpd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x51, true, -1); }
+void vsqrtps(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x51, true, -1); }
+void vucomisd(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F | PP_66, 0x2E, false, -1); }
+void vucomiss(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, MM_0F, 0x2E, false, -1); }
+void vmovapd(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F | PP_66, 0x29, true, -1); }
+void vmovaps(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F, 0x29, true, -1); }
+void vmovdqa(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F | PP_66, 0x7F, true, -1); }
+void vmovdqu(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F | PP_F3, 0x7F, true, -1); }
+void vmovupd(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F | PP_66, 0x11, true, -1); }
+void vmovups(const Address& addr, const Xmm& xmm) { opAVX_X_XM_IMM(xmm, addr, MM_0F, 0x11, true, -1); }
+void vaddsubpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0xD0, true, -1); }
+void vaddsubps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0xD0, true, -1); }
+void vhaddpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x7C, true, -1); }
+void vhaddps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x7C, true, -1); }
+void vhsubpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_66, 0x7D, true, -1); }
+void vhsubps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F | PP_F2, 0x7D, true, -1); }
+void vaesenc(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xDC, false, 0); }
+void vaesenclast(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xDD, false, 0); }
+void vaesdec(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xDE, false, 0); }
+void vaesdeclast(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xDF, false, 0); }
+void vmaskmovps(const Xmm& xm1, const Xmm& xm2, const Address& addr) { opAVX_X_X_XM(xm1, xm2, addr, MM_0F38 | PP_66, 0x2C, true, 0); }
+void vmaskmovps(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x2E, true, 0); }
+void vmaskmovpd(const Xmm& xm1, const Xmm& xm2, const Address& addr) { opAVX_X_X_XM(xm1, xm2, addr, MM_0F38 | PP_66, 0x2D, true, 0); }
+void vmaskmovpd(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x2F, true, 0); }
+void vmovhpd(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !op2.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, op2, MM_0F | PP_66, 0x16, false); }
+void vmovhpd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x17, false); }
+void vmovhps(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !op2.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, op2, MM_0F, 0x16, false); }
+void vmovhps(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F, 0x17, false); }
+void vmovlpd(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !op2.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, op2, MM_0F | PP_66, 0x12, false); }
+void vmovlpd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x13, false); }
+void vmovlps(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !op2.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, op2, MM_0F, 0x12, false); }
+void vmovlps(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F, 0x13, false); }
+void vfmadd132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x98, true, 1); }
+void vfmadd213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA8, true, 1); }
+void vfmadd231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB8, true, 1); }
+void vfmadd132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x98, true, 0); }
+void vfmadd213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA8, true, 0); }
+void vfmadd231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB8, true, 0); }
+void vfmadd132sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x99, false, 1); }
+void vfmadd213sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA9, false, 1); }
+void vfmadd231sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB9, false, 1); }
+void vfmadd132ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x99, false, 0); }
+void vfmadd213ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA9, false, 0); }
+void vfmadd231ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB9, false, 0); }
+void vfmaddsub132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x96, true, 1); }
+void vfmaddsub213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA6, true, 1); }
+void vfmaddsub231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB6, true, 1); }
+void vfmaddsub132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x96, true, 0); }
+void vfmaddsub213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA6, true, 0); }
+void vfmaddsub231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB6, true, 0); }
+void vfmsubadd132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x97, true, 1); }
+void vfmsubadd213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA7, true, 1); }
+void vfmsubadd231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB7, true, 1); }
+void vfmsubadd132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x97, true, 0); }
+void vfmsubadd213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xA7, true, 0); }
+void vfmsubadd231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xB7, true, 0); }
+void vfmsub132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9A, true, 1); }
+void vfmsub213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAA, true, 1); }
+void vfmsub231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBA, true, 1); }
+void vfmsub132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9A, true, 0); }
+void vfmsub213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAA, true, 0); }
+void vfmsub231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBA, true, 0); }
+void vfmsub132sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9B, false, 1); }
+void vfmsub213sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAB, false, 1); }
+void vfmsub231sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBB, false, 1); }
+void vfmsub132ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9B, false, 0); }
+void vfmsub213ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAB, false, 0); }
+void vfmsub231ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBB, false, 0); }
+void vfnmadd132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9C, true, 1); }
+void vfnmadd213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAC, true, 1); }
+void vfnmadd231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBC, true, 1); }
+void vfnmadd132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9C, true, 0); }
+void vfnmadd213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAC, true, 0); }
+void vfnmadd231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBC, true, 0); }
+void vfnmadd132sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9D, false, 1); }
+void vfnmadd213sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAD, false, 1); }
+void vfnmadd231sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBD, false, 1); }
+void vfnmadd132ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9D, false, 0); }
+void vfnmadd213ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAD, false, 0); }
+void vfnmadd231ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBD, false, 0); }
+void vfnmsub132pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9E, true, 1); }
+void vfnmsub213pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAE, true, 1); }
+void vfnmsub231pd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBE, true, 1); }
+void vfnmsub132ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9E, true, 0); }
+void vfnmsub213ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAE, true, 0); }
+void vfnmsub231ps(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBE, true, 0); }
+void vfnmsub132sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9F, false, 1); }
+void vfnmsub213sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAF, false, 1); }
+void vfnmsub231sd(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBF, false, 1); }
+void vfnmsub132ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0x9F, false, 0); }
+void vfnmsub213ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xAF, false, 0); }
+void vfnmsub231ss(const Xmm& xmm, const Xmm& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, MM_0F38 | PP_66, 0xBF, false, 0); }
+void vaesimc(const Xmm& x, const Operand& op) { opAVX_X_XM_IMM(x, op, MM_0F38 | PP_66, 0xDB, false, 0); }
+void vbroadcastf128(const Ymm& y, const Address& addr) { opAVX_X_XM_IMM(y, addr, MM_0F38 | PP_66, 0x1A, true, 0); }
+void vbroadcastsd(const Ymm& y, const Address& addr) { opAVX_X_XM_IMM(y, addr, MM_0F38 | PP_66, 0x19, true, 0); }
+void vbroadcastss(const Xmm& x, const Address& addr) { opAVX_X_XM_IMM(x, addr, MM_0F38 | PP_66, 0x18, true, 0); }
+void vextractf128(const Operand& op, const Ymm& y, uint8 imm) { opAVX_X_XM_IMM(y, cvtReg(op, op.isXMM(), Operand::YMM), MM_0F3A | PP_66, 0x19, true, 0, imm); }
+void vinsertf128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { opAVX_X_X_XM(y1, y2, cvtReg(op, op.isXMM(), Operand::YMM), MM_0F3A | PP_66, 0x18, true, 0); db(imm); }
+void vperm2f128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { opAVX_X_X_XM(y1, y2, op, MM_0F3A | PP_66, 0x06, true, 0); db(imm); }
+void vlddqu(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_F2, 0xF0, true, 0); }
+void vldmxcsr(const Address& addr) { opAVX_X_X_XM(xm2, xm0, addr, MM_0F, 0xAE, false, -1); }
+void vstmxcsr(const Address& addr) { opAVX_X_X_XM(xm3, xm0, addr, MM_0F, 0xAE, false, -1); }
+void vmaskmovdqu(const Xmm& x1, const Xmm& x2) { opAVX_X_X_XM(x1, xm0, x2, MM_0F | PP_66, 0xF7, false, -1); }
+void vpextrb(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(i32e) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x14, false); db(imm); }
+void vpextrw(const Reg& r, const Xmm& x, uint8 imm) { opAVX_X_X_XM(x, xm0, Xmm(r.getIdx()), MM_0F | PP_66, 0xC5, false); db(imm); }
+void vpextrw(const Address& addr, const Xmm& x, uint8 imm) { opAVX_X_X_XM(x, xm0, addr, MM_0F3A | PP_66, 0x15, false); db(imm); }
+void vpextrd(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x16, false, 0); db(imm); }
+void vpinsrb(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x20, false); db(imm); }
+void vpinsrb(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x20, false); db(imm); }
+void vpinsrw(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F | PP_66, 0xC4, false); db(imm); }
+void vpinsrw(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F | PP_66, 0xC4, false); db(imm); }
+void vpinsrd(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 0); db(imm); }
+void vpinsrd(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 0); db(imm); }
+void vpmovmskb(const Reg32e& r, const Xmm& x) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, x, MM_0F | PP_66, 0xD7, false); }
+void vpslldq(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm7, x1, x2, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpslldq(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm7, x, x, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsrldq(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm3, x1, x2, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsrldq(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm3, x, x, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsllw(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm6, x1, x2, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpsllw(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm6, x, x, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpslld(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm6, x1, x2, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpslld(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm6, x, x, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpsllq(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm6, x1, x2, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsllq(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm6, x, x, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsraw(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm4, x1, x2, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpsraw(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm4, x, x, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpsrad(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm4, x1, x2, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpsrad(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm4, x, x, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpsrlw(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm2, x1, x2, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpsrlw(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm2, x, x, MM_0F | PP_66, 0x71, false); db(imm); }
+void vpsrld(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm2, x1, x2, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpsrld(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm2, x, x, MM_0F | PP_66, 0x72, false); db(imm); }
+void vpsrlq(const Xmm& x1, const Xmm& x2, uint8 imm) { opAVX_X_X_XM(xm2, x1, x2, MM_0F | PP_66, 0x73, false); db(imm); }
+void vpsrlq(const Xmm& x, uint8 imm) { opAVX_X_X_XM(xm2, x, x, MM_0F | PP_66, 0x73, false); db(imm); }
+void vblendvpd(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4B, true); db(x4.getIdx() << 4); }
+void vblendvpd(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4B, true); db(x4.getIdx() << 4); }
+void vblendvps(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4A, true); db(x4.getIdx() << 4); }
+void vblendvps(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4A, true); db(x4.getIdx() << 4); }
+void vpblendvb(const Xmm& x1, const Xmm& x2, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x2, op, MM_0F3A | PP_66, 0x4C, false); db(x4.getIdx() << 4); }
+void vpblendvb(const Xmm& x1, const Operand& op, const Xmm& x4) { opAVX_X_X_XM(x1, x1, op, MM_0F3A | PP_66, 0x4C, false); db(x4.getIdx() << 4); }
+void vmovd(const Xmm& x, const Reg32& reg) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x6E, false, 0); }
+void vmovd(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x6E, false, 0); }
+void vmovd(const Reg32& reg, const Xmm& x) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x7E, false, 0); }
+void vmovd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0x7E, false, 0); }
+void vmovhlps(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F, 0x12, false); }
+void vmovlhps(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F, 0x16, false); }
+void vmovmskpd(const Reg& r, const Xmm& x) { if (!r.isBit(i32e)) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x.isXMM() ? Xmm(r.getIdx()) : Ymm(r.getIdx()), x.isXMM() ? xm0 : ym0, x, MM_0F | PP_66, 0x50, true, 0); }
+void vmovmskps(const Reg& r, const Xmm& x) { if (!r.isBit(i32e)) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x.isXMM() ? Xmm(r.getIdx()) : Ymm(r.getIdx()), x.isXMM() ? xm0 : ym0, x, MM_0F, 0x50, true, 0); }
+void vmovntdq(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_66, 0xE7, true); }
+void vmovntpd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F | PP_66, 0x2B, true); }
+void vmovntps(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, addr, MM_0F, 0x2B, true); }
+void vmovntdqa(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F38 | PP_66, 0x2A, false); }
+void vmovsd(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F | PP_F2, 0x10, false); }
+void vmovsd(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F2, 0x10, false); }
+void vmovsd(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F2, 0x11, false); }
+void vmovss(const Xmm& x1, const Xmm& x2, const Operand& op = Operand()) { if (!op.isNone() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, op, MM_0F | PP_F3, 0x10, false); }
+void vmovss(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F3, 0x10, false); }
+void vmovss(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F3, 0x11, false); }
+void vcvtss2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2D, false, 0); }
+void vcvttss2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2C, false, 0); }
+void vcvtsd2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2D, false, 0); }
+void vcvttsd2si(const Reg32& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2C, false, 0); }
+void vcvtsi2ss(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !(op2.isREG(i32e) || op2.isMEM())) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, cvtReg(op2, op2.isREG(), Operand::XMM), MM_0F | PP_F3, 0x2A, false, (op1.isMEM() || op2.isMEM()) ? -1 : (op1.isREG(32) || op2.isREG(32)) ? 0 : 1); }
+void vcvtsi2sd(const Xmm& x, const Operand& op1, const Operand& op2 = Operand()) { if (!op2.isNone() && !(op2.isREG(i32e) || op2.isMEM())) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, op1, cvtReg(op2, op2.isREG(), Operand::XMM), MM_0F | PP_F2, 0x2A, false, (op1.isMEM() || op2.isMEM()) ? -1 : (op1.isREG(32) || op2.isREG(32)) ? 0 : 1); }
+void vcvtps2pd(const Xmm& x, const Operand& op) { if (!op.isMEM() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, cvtReg(op, !op.isMEM(), x.isXMM() ? Operand::XMM : Operand::YMM), MM_0F, 0x5A, true); }
+void vcvtdq2pd(const Xmm& x, const Operand& op) { if (!op.isMEM() && !op.isXMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x.isXMM() ? xm0 : ym0, cvtReg(op, !op.isMEM(), x.isXMM() ? Operand::XMM : Operand::YMM), MM_0F | PP_F3, 0xE6, true); }
+void vcvtpd2ps(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_66, 0x5A, true); }
+void vcvtpd2dq(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_F2, 0xE6, true); }
+void vcvttpd2dq(const Xmm& x, const Operand& op) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(op.isYMM() ? Ymm(x.getIdx()) : x, op.isYMM() ? ym0 : xm0, op, MM_0F | PP_66, 0xE6, true); }
+#ifdef XBYAK64
+void vmovq(const Xmm& x, const Reg64& reg) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x6E, false, 1); }
+void vmovq(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_F3, 0x7E, false, -1); }
+void vmovq(const Reg64& reg, const Xmm& x) { opAVX_X_X_XM(x, xm0, Xmm(reg.getIdx()), MM_0F | PP_66, 0x7E, false, 1); }
+void vmovq(const Address& addr, const Xmm& x) { opAVX_X_X_XM(x, xm0, addr, MM_0F | PP_66, 0xD6, false, -1); }
+void vmovq(const Xmm& x1, const Xmm& x2) { opAVX_X_X_XM(x1, xm0, x2, MM_0F | PP_F3, 0x7E, false, -1); }
+void vpextrq(const Operand& op, const Xmm& x, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, xm0, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x16, false, 1); db(imm); }
+void vpinsrq(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x1, x2, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 1); db(imm); }
+void vpinsrq(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(64) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(x, x, cvtReg(op, !op.isMEM(), Operand::XMM), MM_0F3A | PP_66, 0x22, false, 1); db(imm); }
+void vcvtss2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2D, false, 1); }
+void vcvttss2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F3, 0x2C, false, 1); }
+void vcvtsd2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2D, false, 1); }
+void vcvttsd2si(const Reg64& r, const Operand& op) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, op, MM_0F | PP_F2, 0x2C, false, 1); }
+#endif
diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h
index 1dc500a..65a949f 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -76,11 +76,17 @@
 		tSSE41 = 1 << 7,
 		tSSE42 = 1 << 8,
 		tPOPCNT = 1 << 9,
+		tAESNI = 1 << 10,
+		tSSE5 = 1 << 11,
+		tOSXSACE = 1 << 12,
+		tPCLMULQDQ = 1 << 13,
+		tAVX = 1 << 14,
+		tFMA = 1 << 15,
 
 		t3DN = 1 << 16,
 		tE3DN = 1 << 17,
 		tSSE4a = 1 << 18,
-		tSSE5 = 1 << 11,
+		tRDTSCP = 1 << 19,
 
 		tINTEL = 1 << 24,
 		tAMD = 1 << 25
@@ -99,9 +105,12 @@
 			if (data[3] & (1U << 15)) type_ |= tCMOV;
 			if (data[3] & (1U << 30)) type_ |= tE3DN;
 			if (data[3] & (1U << 22)) type_ |= tMMX2;
+			if (data[3] & (1U << 27)) type_ |= tRDTSCP;
 		}
 		if (data[2] == get32bitAsBE(intel)) {
 			type_ |= tINTEL;
+			getCpuid(0x80000001, data);
+			if (data[3] & (1U << 27)) type_ |= tRDTSCP;
 		}
 		getCpuid(1, data);
 		if (data[2] & (1U << 0)) type_ |= tSSE3;
@@ -109,6 +118,13 @@
 		if (data[2] & (1U << 19)) type_ |= tSSE41;
 		if (data[2] & (1U << 20)) type_ |= tSSE42;
 		if (data[2] & (1U << 23)) type_ |= tPOPCNT;
+		if (data[2] & (1U << 25)) type_ |= tAESNI;
+		if (data[2] & (1U << 1)) type_ |= tPCLMULQDQ;
+		if (data[2] & (1U << 27)) type_ |= tOSXSACE;
+		// QQQ
+		// should check XFEATURE_ENABLED_MASK[2:1] = '11b' by xgetvb
+		if (data[2] & (1U << 28)) type_ |= tAVX;
+		if (data[2] & (1U << 12)) type_ |= tFMA;
 
 		if (data[3] & (1U << 15)) type_ |= tCMOV;
 		if (data[3] & (1U << 23)) type_ |= tMMX;