// File: lindorx[P]train/InsPro.cpp
// Function: Cmp(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, int)
std::vector<unsigned char>Cmp(const std::string& str,int n,int num)
{
	using namespace std;
	vector<unsigned char>data;
	vector<unsigned char>d;
	long str_size = str.size();
	short a;//��������˵���ַ������ͣ�byteΪ1��wordΪ2
	string *ch;
	unsigned char w[] = {0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff};
	unsigned char a1, a2;
	while (n<str_size && (str[n] == 0x20 || str[n] == '\t'))n++;
	ch = CS(str,n);
	STRINF *cm0 = hep(ch[0]);
	STRINF *cm1 = hep(ch[1]);
	ch[0] = cm0->str;
	ch[1] = cm1->str;
	a1 = TwoRegBin(ch, 1);//8λ�Ĵ���֮��
	a2 = TwoRegBin(ch, 2);//16λ�Ĵ���֮��
	if (a1){
		data.push_back(0x38);
		data.push_back(a1);
		return data;
	}
	if (a2){
		data.push_back(0x39);
		data.push_back(a2);
		return data;
	}
	if (cm1->explain == "byte" || cm1->explain == "BYTE")a = 1;
	if (cm1->explain == "word" || cm1->explain == "WORD")a = 2;
	for (int i = 0; i < 16; ++i){
		if (reg2[i] == cm0->str){
			if (i==0 ||i==8){
				data.push_back(0x3d);
				d = Num(cm1->str, 2, num);
				data.insert(data.end(), d.begin(), d.end());
				return data;
			}
			str_size = IntNum(cm1->str,num);
			if (str_size>0x7f)a = 2;
			else a = 1;
			d = NumToUc(str_size, a);
			data.push_back(0x85 - 2 * a);
			if (i>8)data.push_back(w[i-8]);
			else data.push_back(w[i]);
			data.insert(data.end(), d.begin(), d.end());
			return data;

		}
		if (reg_1[i] == cm0->str){
			if (i == 0 || i == 8){
				data.push_back(0x3c);
				d = Num(cm1->str, 1, num);
				data.push_back(d[0]);
				return data;
			}
			data.push_back(0x80);
			if (i>8)data.push_back(w[i - 8]);
			else data.push_back(w[i]);
			d = Num(cm1->str, 1, num);
			data.push_back(d[0]);
			return data;

		}
	}
	cout << "���������������룺" << str << endl;
	return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x170(%rbp)
movq %rdi, %rax
movq %rax, -0x168(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movb $0x0, -0x19(%rbp)
callq 0xa8d0
leaq -0x38(%rbp), %rdi
callq 0xa8d0
movq -0x10(%rbp), %rdi
callq 0x3160
movq %rax, -0x40(%rbp)
movq 0x7d3b(%rip), %rax      # 0x1b63b
movq %rax, -0x58(%rbp)
movslq -0x14(%rbp), %rcx
xorl %eax, %eax
cmpq -0x40(%rbp), %rcx
movb %al, -0x171(%rbp)
jge 0x1395b
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0x20, %ecx
movb %al, -0x172(%rbp)
je 0x1394f
movq -0x10(%rbp), %rdi
movslq -0x14(%rbp), %rsi
callq 0x3280
movsbl (%rax), %eax
cmpl $0x9, %eax
sete %al
movb %al, -0x172(%rbp)
movb -0x172(%rbp), %al
movb %al, -0x171(%rbp)
movb -0x171(%rbp), %al
testb $0x1, %al
jne 0x13967
jmp 0x13972
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x13904
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x6a20
movq %rax, -0x180(%rbp)
jmp 0x13987
movq -0x180(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0xa380
movq %rax, -0x188(%rbp)
jmp 0x139a4
movq -0x188(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x50(%rbp), %rdi
addq $0x20, %rdi
callq 0xa380
movq %rax, -0x190(%rbp)
jmp 0x139c5
movq -0x190(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rsi
addq $0x20, %rsi
movq -0x50(%rbp), %rdi
callq 0x3050
jmp 0x139e3
movq -0x80(%rbp), %rsi
addq $0x20, %rsi
movq -0x50(%rbp), %rdi
addq $0x20, %rdi
callq 0x3050
jmp 0x139fa
movq -0x50(%rbp), %rdi
movl $0x1, %esi
callq 0x6d30
movb %al, -0x191(%rbp)
jmp 0x13a10
movb -0x191(%rbp), %al
movb %al, -0x59(%rbp)
movq -0x50(%rbp), %rdi
movl $0x2, %esi
callq 0x6d30
movb %al, -0x192(%rbp)
jmp 0x13a2f
movb -0x192(%rbp), %al
movb %al, -0x5a(%rbp)
cmpb $0x0, -0x59(%rbp)
je 0x13aa5
movq -0x170(%rbp), %rdi
movb $0x38, -0x81(%rbp)
leaq -0x81(%rbp), %rsi
callq 0xa8f0
jmp 0x13a5a
movq -0x170(%rbp), %rdi
leaq -0x59(%rbp), %rsi
callq 0xaa00
jmp 0x13a6c
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xa920
movq -0x170(%rbp), %rdi
callq 0xa920
jmp 0x1409d
cmpb $0x0, -0x5a(%rbp)
je 0x13aec
movq -0x170(%rbp), %rdi
movb $0x39, -0x89(%rbp)
leaq -0x89(%rbp), %rsi
callq 0xa8f0
jmp 0x13ac7
movq -0x170(%rbp), %rdi
leaq -0x5a(%rbp), %rsi
callq 0xaa00
jmp 0x13ad9
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
movq -0x80(%rbp), %rdi
leaq 0x7bac(%rip), %rsi      # 0x1b6a3
callq 0xa8a0
movb %al, -0x193(%rbp)
jmp 0x13b04
movb -0x193(%rbp), %al
testb $0x1, %al
jne 0x13b34
jmp 0x13b10
movq -0x80(%rbp), %rdi
leaq 0x7718(%rip), %rsi      # 0x1b233
callq 0xa8a0
movb %al, -0x194(%rbp)
jmp 0x13b28
movb -0x194(%rbp), %al
testb $0x1, %al
jne 0x13b34
jmp 0x13b3a
movw $0x1, -0x42(%rbp)
movq -0x80(%rbp), %rdi
leaq 0x7729(%rip), %rsi      # 0x1b26e
callq 0xa8a0
movb %al, -0x195(%rbp)
jmp 0x13b52
movb -0x195(%rbp), %al
testb $0x1, %al
jne 0x13b82
jmp 0x13b5e
movq -0x80(%rbp), %rdi
leaq 0x770a(%rip), %rsi      # 0x1b273
callq 0xa8a0
movb %al, -0x196(%rbp)
jmp 0x13b76
movb -0x196(%rbp), %al
testb $0x1, %al
jne 0x13b82
jmp 0x13b88
movw $0x2, -0x42(%rbp)
movl $0x0, -0x90(%rbp)
cmpl $0x10, -0x90(%rbp)
jge 0x1401a
movslq -0x90(%rbp), %rax
leaq 0xe1d3(%rip), %rdi      # 0x21d80
shlq $0x5, %rax
addq %rax, %rdi
movq -0x78(%rbp), %rsi
addq $0x20, %rsi
callq 0xa810
testb $0x1, %al
jne 0x13bca
jmp 0x13e51
cmpl $0x0, -0x90(%rbp)
je 0x13be0
cmpl $0x8, -0x90(%rbp)
jne 0x13cdb
movq -0x170(%rbp), %rdi
movb $0x3d, -0x91(%rbp)
leaq -0x91(%rbp), %rsi
callq 0xa8f0
jmp 0x13bfc
movq -0x80(%rbp), %rsi
addq $0x20, %rsi
movl -0x18(%rbp), %ecx
leaq -0xb0(%rbp), %rdi
movl $0x2, %edx
callq 0x7be0
jmp 0x13c1a
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
leaq -0xb0(%rbp), %rsi
movq %rsi, -0x1b0(%rbp)
callq 0xa9b0
movq -0x1b0(%rbp), %rdi
callq 0xa920
movq -0x170(%rbp), %rdi
callq 0xab40
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xab70
movq -0x1a8(%rbp), %rdi
callq 0xabb0
movq -0x1a8(%rbp), %rdi
movq %rax, -0xc8(%rbp)
callq 0xab40
movq -0x170(%rbp), %rdi
movq %rax, -0xd0(%rbp)
movq -0xb8(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movq -0xd0(%rbp), %rcx
callq 0xaa90
movq %rax, -0x1a0(%rbp)
jmp 0x13cba
movq -0x1a0(%rbp), %rax
movq %rax, -0xd8(%rbp)
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
movq -0x80(%rbp), %rdi
addq $0x20, %rdi
movl -0x18(%rbp), %esi
callq 0x7720
movq %rax, -0x1b8(%rbp)
jmp 0x13cf4
movq -0x1b8(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpq $0x7f, -0x40(%rbp)
jle 0x13d0e
movw $0x2, -0x42(%rbp)
jmp 0x13d14
movw $0x1, -0x42(%rbp)
movq -0x40(%rbp), %rsi
movswl -0x42(%rbp), %edx
leaq -0xf0(%rbp), %rdi
callq 0x75f0
jmp 0x13d2a
leaq -0x38(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
movq %rsi, -0x1c0(%rbp)
callq 0xa9b0
movq -0x1c0(%rbp), %rdi
callq 0xa920
movq -0x170(%rbp), %rdi
movb -0x42(%rbp), %cl
addb %cl, %cl
movb $-0x7b, %al
subb %cl, %al
movb %al, -0xf1(%rbp)
leaq -0xf1(%rbp), %rsi
callq 0xa8f0
jmp 0x13d71
cmpl $0x8, -0x90(%rbp)
jle 0x13d9a
movq -0x170(%rbp), %rdi
movl -0x90(%rbp), %eax
addl $-0x8, %eax
cltq
leaq -0x58(%rbp,%rax), %rsi
callq 0xaa00
jmp 0x13d98
jmp 0x13db6
movq -0x170(%rbp), %rdi
movslq -0x90(%rbp), %rax
leaq -0x58(%rbp,%rax), %rsi
callq 0xaa00
jmp 0x13db4
jmp 0x13db6
movq -0x170(%rbp), %rdi
callq 0xab40
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xab70
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0xabb0
movq -0x1d0(%rbp), %rdi
movq %rax, -0x110(%rbp)
callq 0xab40
movq -0x170(%rbp), %rdi
movq %rax, -0x118(%rbp)
movq -0x100(%rbp), %rsi
movq -0x110(%rbp), %rdx
movq -0x118(%rbp), %rcx
callq 0xaa90
movq %rax, -0x1c8(%rbp)
jmp 0x13e30
movq -0x1c8(%rbp), %rax
movq %rax, -0x120(%rbp)
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
movslq -0x90(%rbp), %rax
leaq 0xdd21(%rip), %rdi      # 0x21b80
shlq $0x5, %rax
addq %rax, %rdi
movq -0x78(%rbp), %rsi
addq $0x20, %rsi
callq 0xa810
testb $0x1, %al
jne 0x13e7c
jmp 0x14004
cmpl $0x0, -0x90(%rbp)
je 0x13e92
cmpl $0x8, -0x90(%rbp)
jne 0x13f2a
movq -0x170(%rbp), %rdi
movb $0x3c, -0x121(%rbp)
leaq -0x121(%rbp), %rsi
callq 0xa8f0
jmp 0x13eae
movq -0x80(%rbp), %rsi
addq $0x20, %rsi
movl -0x18(%rbp), %ecx
leaq -0x140(%rbp), %rdi
movl $0x1, %edx
callq 0x7be0
jmp 0x13ecc
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
leaq -0x140(%rbp), %rsi
movq %rsi, -0x1e0(%rbp)
callq 0xa9b0
movq -0x1e0(%rbp), %rdi
callq 0xa920
movq -0x1d8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xaa70
movq -0x170(%rbp), %rdi
movq %rax, %rsi
callq 0xaa00
jmp 0x13f17
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
movq -0x170(%rbp), %rdi
movb $-0x80, -0x141(%rbp)
leaq -0x141(%rbp), %rsi
callq 0xa8f0
jmp 0x13f46
cmpl $0x8, -0x90(%rbp)
jle 0x13f6f
movq -0x170(%rbp), %rdi
movl -0x90(%rbp), %eax
addl $-0x8, %eax
cltq
leaq -0x58(%rbp,%rax), %rsi
callq 0xaa00
jmp 0x13f6d
jmp 0x13f8b
movq -0x170(%rbp), %rdi
movslq -0x90(%rbp), %rax
leaq -0x58(%rbp,%rax), %rsi
callq 0xaa00
jmp 0x13f89
jmp 0x13f8b
movq -0x80(%rbp), %rsi
addq $0x20, %rsi
movl -0x18(%rbp), %ecx
leaq -0x160(%rbp), %rdi
movl $0x1, %edx
callq 0x7be0
jmp 0x13fa9
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
leaq -0x160(%rbp), %rsi
movq %rsi, -0x1f0(%rbp)
callq 0xa9b0
movq -0x1f0(%rbp), %rdi
callq 0xa920
movq -0x1e8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xaa70
movq -0x170(%rbp), %rdi
movq %rax, %rsi
callq 0xaa00
jmp 0x13ff4
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
jmp 0x14072
jmp 0x14006
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x13b92
movq 0xcfb7(%rip), %rdi      # 0x20fd8
leaq 0x74db(%rip), %rsi      # 0x1b503
callq 0x31f0
movq %rax, -0x1f8(%rbp)
jmp 0x14036
movq -0x1f8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x31e0
movq %rax, -0x200(%rbp)
jmp 0x1404f
movq -0x200(%rbp), %rdi
movq 0xcf63(%rip), %rsi      # 0x20fc0
callq 0x3240
jmp 0x14064
movb $0x1, -0x19(%rbp)
movl $0x1, -0x88(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xa920
testb $0x1, -0x19(%rbp)
jne 0x1408d
movq -0x170(%rbp), %rdi
callq 0xa920
movq -0x168(%rbp), %rax
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0x33f0
nopw %cs:(%rax,%rax)