// File: /workspace/github_cpp_makefile_star2_O2/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 $0x68, %rsp
movl %ecx, %r14d
movq %rsi, %r15
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, -0x38(%rbp)
andq $0x0, 0x10(%rdi)
movaps %xmm0, -0x80(%rbp)
andq $0x0, -0x70(%rbp)
movq 0x8(%rsi), %rax
movabsq $-0x1020304050608, %rcx # imm = 0xFFFEFDFCFBFAF9F8
movq %rcx, -0x88(%rbp)
movq (%rsi), %rcx
movslq %edx, %rsi
cmpq %rsi, %rax
movq %rsi, %rdx
cmovgq %rax, %rdx
cmpq %rsi, %rax
jle 0x99b0
movzbl (%rcx,%rsi), %edi
cmpl $0x20, %edi
je 0x99ab
cmpl $0x9, %edi
jne 0x99b3
incq %rsi
jmp 0x9998
movq %rdx, %rsi
movq %r15, %rdi
callq 0x36cf
movq %rax, %rbx
movl %r14d, -0x3c(%rbp)
movq %rax, %rdi
callq 0x57e4
movq %rax, %r13
movq %rbx, %r12
addq $0x20, %r12
movq %r12, %rdi
callq 0x57e4
movq %rax, %r14
addq $0x20, %r13
movq %rbx, %rdi
movq %r13, %rsi
callq 0x2120
leaq 0x20(%r14), %rsi
movq %r12, %rdi
movq %rsi, -0x48(%rbp)
callq 0x2120
pushq $0x1
popq %rsi
movq %rbx, %rdi
callq 0x38b4
movl %eax, %r12d
movb %al, -0x2a(%rbp)
pushq $0x2
popq %rsi
movq %rbx, %rdi
callq 0x38b4
movb %al, -0x29(%rbp)
testb %r12b, %r12b
je 0x9a38
leaq -0x60(%rbp), %rsi
movb $0x38, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x5c1e
leaq -0x2a(%rbp), %rsi
jmp 0x9a50
testb %al, %al
je 0x9a75
leaq -0x60(%rbp), %rsi
movb $0x39, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x5c1e
leaq -0x29(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x5ae6
leaq -0x80(%rbp), %rdi
callq 0x5be8
movq -0x38(%rbp), %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x3bb4(%rip), %rsi      # 0xd630
movq %r14, %rdi
callq 0x5ad5
testb %al, %al
jne 0x9a97
leaq 0x3734(%rip), %rsi      # 0xd1c3
movq %r14, %rdi
callq 0x5ad5
leaq 0x3760(%rip), %rsi      # 0xd1fe
movq %r14, %rdi
callq 0x5ad5
testb %al, %al
jne 0x9ab9
leaq 0x3752(%rip), %rsi      # 0xd203
movq %r14, %rdi
callq 0x5ad5
leaq 0x8030(%rip), %r14      # 0x11af0
leaq 0x8229(%rip), %r12      # 0x11cf0
xorl %ebx, %ebx
cmpq $-0x10, %rbx
je 0x9afe
movq %r12, %rdi
movq %r13, %rsi
callq 0x5aa9
testb %al, %al
jne 0x9b29
movq %r14, %rdi
movq %r13, %rsi
callq 0x5aa9
testb %al, %al
jne 0x9bd1
decq %rbx
addq $0x20, %r14
addq $0x20, %r12
jmp 0x9ac9
movq 0x74d3(%rip), %rdi      # 0x10fd8
leaq 0x3987(%rip), %rsi      # 0xd493
callq 0x21b0
movq %rax, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %rdi
callq 0x2100
jmp 0x9a59
movq %rbx, %r12
negq %r12
testb $0x7, %r12b
je 0x9c2b
movq -0x48(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x3f4c
xorl %r14d, %r14d
cmpq $0x7f, %rax
setg %r14b
incl %r14d
leaq -0x60(%rbp), %rdi
movq %rax, %rsi
movl %r14d, %edx
callq 0x3e87
leaq -0x80(%rbp), %rdi
leaq -0x60(%rbp), %r15
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
addb %r14b, %r14b
movb $-0x7b, %al
subb %r14b, %al
movb %al, (%r15)
leaq -0x60(%rbp), %rsi
movq -0x38(%rbp), %r14
movq %r14, %rdi
callq 0x5c1e
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %ebx, %eax
cmpq $0x9, %r12
cmovbq %r12, %rax
leaq (%rax,%rbp), %rsi
addq $-0x88, %rsi
movq %r14, %rdi
callq 0x5ae6
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq -0x80(%rbp), %rdx
movq -0x78(%rbp), %rcx
callq 0x5b08
jmp 0x9a59
movq %rbx, %r14
negq %r14
leaq -0x60(%rbp), %rsi
testb $0x7, %r14b
je 0x9c82
movb $-0x80, (%rsi)
movq -0x38(%rbp), %r15
movq %r15, %rdi
callq 0x5c1e
movl $0xfffffff8, %eax       # imm = 0xFFFFFFF8
subl %ebx, %eax
cmpq $0x9, %r14
cmovbq %r14, %rax
leaq (%rax,%rbp), %rsi
addq $-0x88, %rsi
movq %r15, %rdi
callq 0x5ae6
leaq -0x60(%rbp), %rdi
pushq $0x1
popq %rdx
movq -0x48(%rbp), %rsi
movl -0x3c(%rbp), %ecx
callq 0x420a
jmp 0x9ca1
leaq -0x60(%rbp), %rsi
movb $0x3d, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x5c1e
movl -0x3c(%rbp), %ecx
leaq -0x60(%rbp), %rdi
pushq $0x2
popq %rdx
movq -0x48(%rbp), %rsi
callq 0x420a
leaq -0x80(%rbp), %rbx
leaq -0x60(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq -0x38(%rbp), %rdi
movq 0x8(%rdi), %rsi
movq (%rbx), %rdx
movq 0x8(%rbx), %rcx
callq 0x5b08
jmp 0x9a59
movb $0x3c, (%rsi)
movq -0x38(%rbp), %rdi
callq 0x5c1e
leaq -0x60(%rbp), %rdi
pushq $0x1
popq %rdx
movq -0x48(%rbp), %rsi
movl -0x3c(%rbp), %ecx
callq 0x420a
leaq -0x80(%rbp), %rdi
leaq -0x60(%rbp), %rbx
movq %rbx, %rsi
callq 0x5d96
movq %rbx, %rdi
callq 0x5be8
movq -0x80(%rbp), %rsi
movq -0x38(%rbp), %rdi
callq 0x5ae6
jmp 0x9a59
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
jmp 0x9ce9
movq %rax, %r14
leaq -0x80(%rbp), %rdi
callq 0x5be8
movq -0x38(%rbp), %rdi
callq 0x5be8
movq %r14, %rdi
callq 0x2300