// File: /workspace/github_cpp_makefile_star2_O3/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 $0x48, %rsp
movl %ecx, %r14d
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, -0x70(%rbp)
movslq %edx, %rax
cmpq %rax, %rcx
movq %rsi, -0x68(%rbp)
jle 0xbc96
movq (%rsi), %rdx
movzbl (%rdx,%rax), %esi
cmpl $0x20, %esi
je 0xbc88
cmpl $0x9, %esi
jne 0xbc90
incq %rax
cmpq %rax, %rcx
jg 0xbc7a
movl %eax, %edx
movq -0x68(%rbp), %rsi
movq %rsi, %rdi
movl %edx, %esi
callq 0x3c1c
movq %rax, %rbx
movl %r14d, -0x3c(%rbp)
movq %rax, %rdi
callq 0x62c1
movq %rax, %r14
movq %rbx, %r15
addq $0x20, %r15
movq %r15, %rdi
callq 0x62c1
movq %rax, %r12
leaq 0x20(%r14), %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2110
leaq 0x20(%r12), %rsi
movq %r15, %rdi
movq %rsi, -0x60(%rbp)
callq 0x2110
movq %rbx, %rdi
movl $0x1, %esi
callq 0x3e24
movl %eax, %r15d
movb %al, -0x2a(%rbp)
movq %rbx, %rdi
movl $0x2, %esi
callq 0x3e24
movl %eax, %ebx
movb %al, -0x29(%rbp)
testb %r15b, %r15b
je 0xbd34
leaq -0x58(%rbp), %rsi
movb $0x38, (%rsi)
movq -0x38(%rbp), %rbx
movq %rbx, %rdi
callq 0x6694
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xbd67
leaq 0x8(%rbx), %rax
movb %r15b, (%rsi)
jmp 0xbd5f
testb %bl, %bl
je 0xbd70
leaq -0x58(%rbp), %rsi
movb $0x39, (%rsi)
movq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x6694
movq 0x8(%r14), %rsi
cmpq 0x10(%r14), %rsi
je 0xbe8d
leaq 0x8(%r14), %rax
movb %bl, (%rsi)
incq (%rax)
jmp 0xbe9a
leaq -0x2a(%rbp), %rdx
jmp 0xbe91
leaq 0x58c2(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0xbd92
leaq 0x5439(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
leaq 0x5465(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0xbdb4
leaq 0x5457(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
movq 0x28(%r14), %r14
movl $0x8, %ebx
xorl %r12d, %r12d
leaq 0x9f29(%rip), %r15      # 0x15cf0
cmpq %r14, (%rbx,%r15)
jne 0xbdef
testq %r14, %r14
je 0xbead
movq (%r13), %rsi
movq -0x8(%rbx,%r15), %rdi
movq %r14, %rdx
callq 0x21f0
testl %eax, %eax
je 0xbead
leaq 0x9cfa(%rip), %rax      # 0x15af0
cmpq %r14, (%rbx,%rax)
jne 0xbe25
testq %r14, %r14
je 0xbf4d
movq (%r13), %rsi
leaq 0x9ce0(%rip), %rax      # 0x15af0
movq -0x8(%rbx,%rax), %rdi
movq %r14, %rdx
callq 0x21f0
testl %eax, %eax
je 0xbf4d
decq %r12
addq $0x20, %rbx
cmpq $-0x10, %r12
jne 0xbdc7
movq 0x919f(%rip), %rdi      # 0x14fd8
leaq 0x566c(%rip), %rsi      # 0x114ac
movl $0x12, %edx
callq 0x2210
movq -0x68(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq 0x917c(%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 0xbe9a
leaq -0x29(%rbp), %rdx
movq -0x38(%rbp), %rdi
callq 0x67cc
movq -0x38(%rbp), %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r12, %rbx
negq %rbx
testb $0x7, %bl
je 0xbfd3
xorl %r15d, %r15d
xorl %r13d, %r13d
movq -0x60(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x45f9
xorl %r14d, %r14d
cmpq $0x7f, %rax
setg %r14b
incl %r14d
leaq -0x58(%rbp), %rdi
movq %rax, %rsi
movl %r14d, %edx
callq 0x4523
leaq -0x58(%rbp), %rsi
movq (%rsi), %r13
movq 0x8(%rsi), %rax
movq %rax, -0x68(%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 0x6694
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %r12d, %eax
cmpq $0x9, %rbx
cmovbq %rbx, %rax
leaq (%rax,%rbp), %rsi
addq $-0x70, %rsi
movq %r14, %rdi
callq 0x65d4
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq %r13, %rdx
movq -0x68(%rbp), %rcx
callq 0x68c6
jmp 0xc055
movq %r12, %rbx
negq %rbx
leaq -0x58(%rbp), %rsi
testb $0x7, %bl
je 0xc016
movb $-0x80, (%rsi)
movq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x6694
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %r12d, %eax
cmpq $0x9, %rbx
cmovbq %rbx, %rax
leaq (%rax,%rbp), %rsi
addq $-0x70, %rsi
xorl %r15d, %r15d
xorl %r13d, %r13d
movq %r14, %rdi
callq 0x65d4
leaq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
movl $0x1, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r13
movq -0x48(%rbp), %r15
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
cmpq 0x10(%rdi), %rsi
je 0xc04d
movb (%r13), %al
movb %al, (%rsi)
incq 0x8(%rdi)
jmp 0xc05e
leaq -0x58(%rbp), %rsi
movb $0x3d, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x6694
leaq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
movl $0x2, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r13
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %r15
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq %r13, %rdx
callq 0x68c6
jmp 0xc055
movb $0x3c, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x6694
leaq -0x58(%rbp), %rdi
movq -0x60(%rbp), %rsi
movl $0x1, %edx
movl -0x3c(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r13
movq -0x48(%rbp), %r15
movq -0x38(%rbp), %rdi
movq %r13, %rsi
callq 0x65d4
jmp 0xc055
movq %r13, %rdx
callq 0x67cc
testq %r13, %r13
je 0xbe9a
subq %r13, %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0x21d0
jmp 0xbe9a
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc085
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc085
jmp 0xc085
jmp 0xc0a5
movq %rax, %r14
testq %r13, %r13
je 0xc0a8
subq %r13, %r15
movq %r13, %rdi
movq %r15, %rsi
callq 0x21d0
jmp 0xc0a8
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc0a5
jmp 0xc0a5
movq %rax, %r14
movq -0x38(%rbp), %rax
movq (%rax), %rdi
testq %rdi, %rdi
je 0xc0c4
movq -0x38(%rbp), %rax
movq 0x10(%rax), %rsi
subq %rdi, %rsi
callq 0x21d0
movq %r14, %rdi
callq 0x2300