// File: lindorx[P]train/InsPro.cpp
// Function: Mul(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int)
std::vector<unsigned char>Mul(const std::string& str, int n)
{
	using namespace std;
	string ch = CutStr(str, n);
	vector<unsigned char>data;
	for (int i = 0; i < 16; ++i){
		if (ch == reg_1[i]){
			data.push_back(0xf6);
			if (i>7)data.push_back(logic_and[i - 8]);
			else data.push_back(logic_and[8]);
			return data;
		}
		if (ch == reg2[i]){
			data.push_back(0xf7);
			if (i>7)data.push_back(logic_and[i - 8]);
			else data.push_back(logic_and[8]);
			return data;
		}
	}
	//�ж��Ƿ�������
	int lk, rk, str_size = str.size();
	lk=str.find('[');
	rk = str.find(']');
	if (lk < str_size && rk < str_size && !(rk < 0) && !(lk < 0)){
		ch.clear();
		while (n <str_size && (str[n] == 0x20 || str[n] == '\t'))n++;
		while (n < str_size && (str[n] != '\n' || str[n] == '\0')){
			if (str[n] == 0x20 || str[n] == '\t')break;
			if (isalnum(str[n]))ch.push_back(str[n]);
			n++;
		}
		if (ch == "word" || ch == "WORD")data.push_back(0xf7);
		else if (ch == "byte" || ch == "BYTE")data.push_back(0xf6);
		else {
			cout << "����-027������������:" << str << endl; return data;
		}
		ch.clear(); ch = str.substr(lk+1, rk - lk-1);
		if (ch == "bx" || ch == "BX"){
			data.push_back(0x27); return data;
		}
		else if (ch == "bp" || ch == "BP"){
			data.push_back(0x66); data.push_back(0x00);
			return data;
		}
		else if (ch == "si" || ch == "SI"){
			data.push_back(0x24); return data;
		}
		else if (ch == "di" || ch == "DI"){
			data.push_back(0x25); return data;
		}
		else {
			data.clear();
			cout << "����-028������������:" << str << endl; return data;
		}
	}
	cout << "����-029������������:" << str << endl; return data;
	return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0xa0(%rbp)
movq %rdi, %rax
movq %rax, -0xa8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
leaq -0x38(%rbp), %rdi
callq 0x67d0
movq -0xa0(%rbp), %rdi
movb $0x0, -0x39(%rbp)
callq 0xa8d0
movl $0x0, -0x40(%rbp)
cmpl $0x10, -0x40(%rbp)
jge 0x1508d
movslq -0x40(%rbp), %rax
leaq 0xcc2d(%rip), %rsi      # 0x21b80
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0xa810
testb $0x1, %al
jne 0x14f6c
jmp 0x14ff7
movq -0xa0(%rbp), %rdi
movb $-0xa, -0x41(%rbp)
leaq -0x41(%rbp), %rsi
callq 0xa8f0
jmp 0x14f82
cmpl $0x7, -0x40(%rbp)
jle 0x14fd0
movq -0xa0(%rbp), %rdi
movl -0x40(%rbp), %eax
addl $-0x8, %eax
cltq
leaq 0x66a5(%rip), %rsi      # 0x1b643
addq %rax, %rsi
callq 0xaa00
jmp 0x14fa8
jmp 0x14fe7
movq -0xa0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0xa920
leaq -0x38(%rbp), %rdi
callq 0x3468
jmp 0x15682
movq -0xa0(%rbp), %rdi
leaq 0x666d(%rip), %rsi      # 0x1b64b
callq 0xaa00
jmp 0x14fe5
jmp 0x14fe7
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
movslq -0x40(%rbp), %rax
leaq 0xcd7e(%rip), %rsi      # 0x21d80
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x38(%rbp), %rdi
callq 0xa810
testb $0x1, %al
jne 0x15018
jmp 0x1507d
movq -0xa0(%rbp), %rdi
movb $-0x9, -0x59(%rbp)
leaq -0x59(%rbp), %rsi
callq 0xa8f0
jmp 0x1502e
cmpl $0x7, -0x40(%rbp)
jle 0x15056
movq -0xa0(%rbp), %rdi
movl -0x40(%rbp), %eax
addl $-0x8, %eax
cltq
leaq 0x65f9(%rip), %rsi      # 0x1b643
addq %rax, %rsi
callq 0xaa00
jmp 0x15054
jmp 0x1506d
movq -0xa0(%rbp), %rdi
leaq 0x65e7(%rip), %rsi      # 0x1b64b
callq 0xaa00
jmp 0x1506b
jmp 0x1506d
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
jmp 0x1507f
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x14f3e
movq -0x10(%rbp), %rdi
callq 0x3160
movl %eax, -0x68(%rbp)
movq -0x10(%rbp), %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3300
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
movl $0x5d, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3300
movl %eax, -0x64(%rbp)
movl -0x60(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x15602
movl -0x64(%rbp), %eax
cmpl -0x68(%rbp), %eax
jge 0x15602
cmpl $0x0, -0x64(%rbp)
jl 0x15602
cmpl $0x0, -0x60(%rbp)
jl 0x15602
leaq -0x38(%rbp), %rdi
callq 0x3310
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x68(%rbp), %ecx
movb %al, -0xa9(%rbp)
jge 0x1514d
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x20, %ecx
movb %al, -0xaa(%rbp)
je 0x15141
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %eax
cmpl $0x9, %eax
sete %al
movb %al, -0xaa(%rbp)
movb -0xaa(%rbp), %al
movb %al, -0xa9(%rbp)
movb -0xa9(%rbp), %al
testb $0x1, %al
jne 0x15159
jmp 0x15164
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x150f8
jmp 0x15166
movl -0x14(%rbp), %ecx
xorl %eax, %eax
cmpl -0x68(%rbp), %ecx
movb %al, -0xab(%rbp)
jge 0x151bb
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0xa, %ecx
movb %al, -0xac(%rbp)
jne 0x151af
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %eax
cmpl $0x0, %eax
sete %al
movb %al, -0xac(%rbp)
movb -0xac(%rbp), %al
movb %al, -0xab(%rbp)
movb -0xab(%rbp), %al
testb $0x1, %al
jne 0x151c7
jmp 0x15238
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %eax
cmpl $0x20, %eax
je 0x151f1
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %eax
cmpl $0x9, %eax
jne 0x151f3
jmp 0x15238
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %edi
callq 0x3220
cmpl $0x0, %eax
je 0x1522a
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %esi
leaq -0x38(%rbp), %rdi
callq 0x31c0
jmp 0x15228
jmp 0x1522a
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x15166
leaq 0x602f(%rip), %rsi      # 0x1b26e
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xad(%rbp)
jmp 0x15250
movb -0xad(%rbp), %al
testb $0x1, %al
jne 0x15280
jmp 0x1525c
leaq 0x6010(%rip), %rsi      # 0x1b273
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xae(%rbp)
jmp 0x15274
movb -0xae(%rbp), %al
testb $0x1, %al
jne 0x15280
jmp 0x1529b
movq -0xa0(%rbp), %rdi
movb $-0x9, -0x69(%rbp)
leaq -0x69(%rbp), %rsi
callq 0xa8f0
jmp 0x15296
jmp 0x15357
leaq 0x6401(%rip), %rsi      # 0x1b6a3
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xaf(%rbp)
jmp 0x152b3
movb -0xaf(%rbp), %al
testb $0x1, %al
jne 0x152e3
jmp 0x152bf
leaq 0x5f6d(%rip), %rsi      # 0x1b233
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xb0(%rbp)
jmp 0x152d7
movb -0xb0(%rbp), %al
testb $0x1, %al
jne 0x152e3
jmp 0x152fb
movq -0xa0(%rbp), %rdi
movb $-0xa, -0x6a(%rbp)
leaq -0x6a(%rbp), %rsi
callq 0xa8f0
jmp 0x152f9
jmp 0x15355
movq 0xbcd6(%rip), %rdi      # 0x20fd8
leaq 0x62a8(%rip), %rsi      # 0x1b5b1
callq 0x31f0
movq %rax, -0xb8(%rbp)
jmp 0x15317
movq -0xb8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x31e0
movq %rax, -0xc0(%rbp)
jmp 0x15330
movq -0xc0(%rbp), %rdi
movq 0xbc82(%rip), %rsi      # 0x20fc0
callq 0x3240
jmp 0x15345
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
jmp 0x15357
leaq -0x38(%rbp), %rdi
callq 0x3310
movq -0x10(%rbp), %rsi
movl -0x60(%rbp), %eax
movl %eax, %ecx
incl %ecx
movslq %ecx, %rdx
movl -0x64(%rbp), %ecx
notl %eax
addl %ecx, %eax
movslq %eax, %rcx
leaq -0x90(%rbp), %rdi
callq 0x3230
jmp 0x15386
leaq -0x38(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
leaq -0x90(%rbp), %rsi
movq %rsi, -0xd8(%rbp)
callq 0x32c0
movq -0xd8(%rbp), %rdi
callq 0x3468
movq -0xd0(%rbp), %rdi
leaq 0x5e0b(%rip), %rsi      # 0x1b1c9
callq 0xa8a0
movb %al, -0xc1(%rbp)
jmp 0x153cb
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0x153fb
jmp 0x153d7
leaq 0x5dd3(%rip), %rsi      # 0x1b1b1
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xd9(%rbp)
jmp 0x153ef
movb -0xd9(%rbp), %al
testb $0x1, %al
jne 0x153fb
jmp 0x15427
movq -0xa0(%rbp), %rdi
movb $0x27, -0x91(%rbp)
leaq -0x91(%rbp), %rsi
callq 0xa8f0
jmp 0x15417
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
leaq 0x5da1(%rip), %rsi      # 0x1b1cf
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xda(%rbp)
jmp 0x1543f
movb -0xda(%rbp), %al
testb $0x1, %al
jne 0x1546f
jmp 0x1544b
leaq 0x5d65(%rip), %rsi      # 0x1b1b7
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xdb(%rbp)
jmp 0x15463
movb -0xdb(%rbp), %al
testb $0x1, %al
jne 0x1546f
jmp 0x154b7
movq -0xa0(%rbp), %rdi
movb $0x66, -0x92(%rbp)
leaq -0x92(%rbp), %rsi
callq 0xa8f0
jmp 0x1548b
movq -0xa0(%rbp), %rdi
movb $0x0, -0x93(%rbp)
leaq -0x93(%rbp), %rsi
callq 0xa8f0
jmp 0x154a7
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
leaq 0x5d14(%rip), %rsi      # 0x1b1d2
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xdc(%rbp)
jmp 0x154cf
movb -0xdc(%rbp), %al
testb $0x1, %al
jne 0x154ff
jmp 0x154db
leaq 0x5cd8(%rip), %rsi      # 0x1b1ba
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xdd(%rbp)
jmp 0x154f3
movb -0xdd(%rbp), %al
testb $0x1, %al
jne 0x154ff
jmp 0x1552b
movq -0xa0(%rbp), %rdi
movb $0x24, -0x94(%rbp)
leaq -0x94(%rbp), %rsi
callq 0xa8f0
jmp 0x1551b
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
leaq 0x5ca3(%rip), %rsi      # 0x1b1d5
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xde(%rbp)
jmp 0x15543
movb -0xde(%rbp), %al
testb $0x1, %al
jne 0x15573
jmp 0x1554f
leaq 0x5c67(%rip), %rsi      # 0x1b1bd
leaq -0x38(%rbp), %rdi
callq 0xa8a0
movb %al, -0xdf(%rbp)
jmp 0x15567
movb -0xdf(%rbp), %al
testb $0x1, %al
jne 0x15573
jmp 0x1559f
movq -0xa0(%rbp), %rdi
movb $0x25, -0x95(%rbp)
leaq -0x95(%rbp), %rsi
callq 0xa8f0
jmp 0x1558f
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
movq -0xa0(%rbp), %rdi
callq 0x157e0
movq 0xba26(%rip), %rdi      # 0x20fd8
leaq 0x600e(%rip), %rsi      # 0x1b5c7
callq 0x31f0
movq %rax, -0xe8(%rbp)
jmp 0x155c7
movq -0xe8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x31e0
movq %rax, -0xf0(%rbp)
jmp 0x155e0
movq -0xf0(%rbp), %rdi
movq 0xb9d2(%rip), %rsi      # 0x20fc0
callq 0x3240
jmp 0x155f5
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
jmp 0x15657
movq 0xb9cf(%rip), %rdi      # 0x20fd8
leaq 0x5fcd(%rip), %rsi      # 0x1b5dd
callq 0x31f0
movq %rax, -0xf8(%rbp)
jmp 0x1561e
movq -0xf8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x31e0
movq %rax, -0x100(%rbp)
jmp 0x15637
movq -0x100(%rbp), %rdi
movq 0xb97b(%rip), %rsi      # 0x20fc0
callq 0x3240
jmp 0x1564c
movb $0x1, -0x39(%rbp)
movl $0x1, -0x58(%rbp)
testb $0x1, -0x39(%rbp)
jne 0x15669
movq -0xa0(%rbp), %rdi
callq 0xa920
leaq -0x38(%rbp), %rdi
callq 0x3468
movq -0xa8(%rbp), %rax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x33f0
nopl (%rax,%rax)