// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %ecx, %ebx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, -0x38(%rbp)
movq $0x0, 0x10(%rdi)
movq 0x8(%rsi), %rcx
movabsq $-0x1020304050608, %rax # imm = 0xFFFEFDFCFBFAF9F8
movq %rax, -0x78(%rbp)
movslq %edx, %rax
cmpq %rax, %rcx
movq %rsi, -0x70(%rbp)
jle 0xbe91
movq (%rsi), %rdx
movzbl (%rdx,%rax), %esi
cmpl $0x20, %esi
je 0xbe83
cmpl $0x9, %esi
jne 0xbe8b
incq %rax
cmpq %rax, %rcx
jg 0xbe75
movl %eax, %edx
movq -0x70(%rbp), %rsi
movq %rsi, %rdi
movl %edx, %esi
callq 0x3c1e
movq %rax, %r15
movl %ebx, -0x3c(%rbp)
movq %rax, %rdi
callq 0x641b
movq %rax, %r14
movq %r15, %rbx
addq $0x20, %rbx
movq %rbx, %rdi
callq 0x641b
movq %rax, %r12
leaq 0x20(%r14), %r13
movq %r15, %rdi
movq %r13, %rsi
callq 0x2110
leaq 0x20(%r12), %rsi
movq %rbx, %rdi
movq %rsi, -0x68(%rbp)
callq 0x2110
movq %r15, %rdi
movl $0x1, %esi
callq 0x3e40
movb %al, -0x29(%rbp)
movq %r15, %rdi
movl $0x2, %esi
callq 0x3e40
movb %al, -0x2a(%rbp)
cmpb $0x0, -0x29(%rbp)
je 0xbf2a
leaq -0x60(%rbp), %rsi
movb $0x38, (%rsi)
movq -0x38(%rbp), %rbx
movq %rbx, %rdi
callq 0x67f0
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xbf60
leaq 0x8(%rbx), %rax
movb -0x29(%rbp), %cl
jmp 0xbf56
testb %al, %al
je 0xbf69
leaq -0x60(%rbp), %rsi
movb $0x39, (%rsi)
movq -0x38(%rbp), %rbx
movq %rbx, %rdi
callq 0x67f0
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xc087
leaq 0x8(%rbx), %rax
movb -0x2a(%rbp), %cl
movb %cl, (%rsi)
incq (%rax)
jmp 0xc094
leaq -0x29(%rbp), %rdx
jmp 0xc08b
leaq 0x56c9(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0xbf8b
leaq 0x5240(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
leaq 0x526c(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0xbfad
leaq 0x525e(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
movq 0x28(%r14), %rbx
movl $0x8, %r14d
xorl %r12d, %r12d
leaq 0x9d2f(%rip), %r15      # 0x15cf0
movq (%r14,%r15), %rdx
cmpq %rbx, %rdx
jne 0xbfe9
testq %rdx, %rdx
je 0xc0a7
movq (%r13), %rsi
movq -0x8(%r14,%r15), %rdi
callq 0x21f0
testl %eax, %eax
je 0xc0a7
leaq 0x9b00(%rip), %rax      # 0x15af0
movq (%r14,%rax), %rdx
cmpq %rbx, %rdx
jne 0xc01f
testq %rdx, %rdx
je 0xc147
movq (%r13), %rsi
leaq 0x9ae3(%rip), %rax      # 0x15af0
movq -0x8(%r14,%rax), %rdi
callq 0x21f0
testl %eax, %eax
je 0xc147
decq %r12
addq $0x20, %r14
cmpq $-0x10, %r12
jne 0xbfc1
movq 0x8fa5(%rip), %rdi      # 0x14fd8
leaq 0x5472(%rip), %rsi      # 0x114ac
movl $0x12, %edx
callq 0x2210
movq -0x70(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x8f82(%rip), %rdi      # 0x14fd8
callq 0x2210
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x21b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
jmp 0xc094
leaq -0x2a(%rbp), %rdx
movq -0x38(%rbp), %rdi
callq 0x6920
movq -0x38(%rbp), %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %rbx
negq %rbx
testb $0x7, %bl
je 0xc1cd
xorl %r15d, %r15d
xorl %r13d, %r13d
movq -0x68(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x460a
xorl %r14d, %r14d
cmpq $0x7f, %rax
setg %r14b
incl %r14d
leaq -0x60(%rbp), %rdi
movq %rax, %rsi
movl %r14d, %edx
callq 0x4534
leaq -0x60(%rbp), %rsi
movq (%rsi), %r13
movq 0x8(%rsi), %rax
movq %rax, -0x70(%rbp)
movq 0x10(%rsi), %r15
addb %r14b, %r14b
movb $-0x7b, %al
subb %r14b, %al
movb %al, (%rsi)
movq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x67f0
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %r12d, %eax
cmpq $0x9, %rbx
cmovbq %rbx, %rax
leaq (%rax,%rbp), %rsi
addq $-0x78, %rsi
movq %r14, %rdi
callq 0x6734
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq %r13, %rdx
movq -0x70(%rbp), %rcx
callq 0x6a1a
jmp 0xc24f
movq %r12, %rbx
negq %rbx
leaq -0x60(%rbp), %rsi
testb $0x7, %bl
je 0xc210
movb $-0x80, (%rsi)
movq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x67f0
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %r12d, %eax
cmpq $0x9, %rbx
cmovbq %rbx, %rax
leaq (%rax,%rbp), %rsi
addq $-0x78, %rsi
xorl %r15d, %r15d
xorl %r13d, %r13d
movq %r14, %rdi
callq 0x6734
leaq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rsi
movl $0x1, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ff
movq -0x60(%rbp), %r13
movq -0x50(%rbp), %r15
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xc247
movb (%r13), %al
movb %al, (%rsi)
incq 0x8(%rdi)
jmp 0xc24f
leaq -0x60(%rbp), %rsi
movb $0x3d, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x67f0
leaq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rsi
movl $0x2, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ff
movq -0x60(%rbp), %r13
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %r15
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq %r13, %rdx
callq 0x6a1a
jmp 0xc24f
movb $0x3c, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x67f0
leaq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rsi
movl $0x1, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ff
movq -0x60(%rbp), %r13
movq -0x50(%rbp), %r15
movq -0x38(%rbp), %rdi
movq %r13, %rsi
callq 0x6734
jmp 0xc24f
movq %r13, %rdx
callq 0x6920
testq %r13, %r13
je 0xc094
subq %r13, %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0x21d0
jmp 0xc094
jmp 0xc28c
jmp 0xc28c
jmp 0xc27f
jmp 0xc28c
jmp 0xc28c
jmp 0xc28c
jmp 0xc28c
jmp 0xc27f
jmp 0xc27f
jmp 0xc28c
movq %rax, %r14
jmp 0xc295
jmp 0xc28c
jmp 0xc28c
jmp 0xc28c
jmp 0xc28c
movq %rax, %r14
xorl %r15d, %r15d
xorl %r13d, %r13d
testq %r13, %r13
je 0xc2a8
subq %r13, %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0x21d0
movq -0x38(%rbp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0xc2c4
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x21d0
movq %r14, %rdi
callq 0x2300