
#include <iostream>
#include <ostream>
#include <sstream>

const char *regs[] = { 
	"eax", 
	"ebx", 
	"ecx", 
	"edx", 
	"ebp", 
	"esp", 
	"esi", 
	"edi"
};

const char *size[] = {
	"byte",
	"word",
	"dword"
};

int offsets[] = { 0, 0x10, 0xffff };

int main() {
	for(int base = -1; base < 8; ++base) {
		for(int index = -1; index < 8; ++index) {
			for(int offset = 0; offset < 3; ++offset) {
				for(int scale = 0; scale < 4; ++scale) {
					for(int sz = 0; sz < 3; ++sz) {	
						std::stringstream ss;

						ss << "inc " << size[sz] << " [";


						if(base >= 0) {
							ss << regs[base];
						}


						if(index >= 0) {

							if(base >= 0) {
								ss << "+";
							}

							ss << regs[index];

							if(scale != 0) {
								ss << "*" << (1 << scale);
							}
						}

						if(offset > 0) {
							if(index >= 0 || base >= 0) {
								ss << "+";
							}
							ss << offsets[offset];
						}


						ss << "]";

						if(index == 5 && scale != 0) {
							continue;
						}

						if(index == 5 && base == 5) {
							continue;
						}

						if(base == -1 && index == -1 && offset == 0) {
							continue;
						}


						std::cout << ss.str() << std::endl;
					}
				}
			}
		}	
	}
}
