// File: /workspace/github_cpp_makefile_star2_O2/lindorx[P]train/HelpInsPro.cpp
// Function: BX_BP_SI_DI(char, char, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, int)
std::vector<unsigned char>BX_BP_SI_DI(char cmd1, char cmd2, std::string explain,std::string str,int num)
{
	using namespace std;
	bool n=false;
	short a=0, b=0;
	//��������
	

	vector<unsigned char>data;
	vector<unsigned char>d;
	if (cmd1 == 'b' && (cmd2 >= 0 && cmd2 < 8))n = true;//0<=cmd2<8˵��Ϊ16λ�Ĵ�����ֻ��16λ�Ĵ���ǰ��ָ����byte����Ҫ����0x3e
	if (cmd2 == 0){ a = 1; b = 0; }
	if (cmd2 == 1){ a = 1; b = 1; }
	if (cmd2 == 2){ a = 1; b = 2; }
	if (cmd2 == 3){ a = 1; b = 3; }
	if (cmd2 == 4){ a = 1; b = 4; }
	if (cmd2 == 5){ a = 1; b = 5; }
	if (cmd2 == 6){ a = 1; b = 6; }
	if (cmd2 == 7){ a = 1; b = 7; }
	if (cmd2 == 8){ a = 0; b = 0; }
	if (cmd2 == 9){ a = 0; b = 1; }
	if (cmd2 == 10){ a = 0; b = 2; }
	if (cmd2 == 11){ a = 0; b = 3; }
	if (cmd2 == 12){ a = 0; b = 4; }
	if (cmd2 == 13){ a = 0; b = 5; }
	if (cmd2 == 14){ a = 0; b = 6; }
	if (cmd2 == 15){ a = 0; b = 7; }
//*************************************************************
	if (str == "bx" || str == "BX"){
		if (n)
		data.push_back(0x3e);
		data.push_back(a1[a]);
		data.push_back(b1[b][0]);
		return data;
	}
	if (str == "bp" || str == "BP"){
		if (n)
		data.push_back(0x3e);
		data.push_back(a1[a]);
		data.push_back(b1[b][1]);
		data.push_back(0x00);
		return data;
	}
	if (str == "si" || str == "SI"){
		if (n)
		data.push_back(0x3e);
		data.push_back(a1[a]);
		data.push_back(b1[b][2]);
		
		return data;
	}
	if (str == "di" || str == "DI"){
		if (n)
		data.push_back(0x3e);
		data.push_back(a1[a]);
		data.push_back(b1[b][3]);
		return data;
	}
	//�ж�һ���Ƿ�Ϊ�����ַ���
	int number = IntNum(str, num);
	if (number>-1){//˵��number��һ��������ȡֵ��Ч
		if ((explain == "word" || explain == "WORD" || explain == "n") && cmd1 == 'b'&& cmd2<8){//��Ӧ��ָ����ʽ��mov byte 16λ�Ĵ�����[0x00]
			data.push_back(0x3e);
			data.push_back(0x8b);
			data.push_back(m_unch[cmd2]);
			d = NumToUc(number, 2);
			data.insert(data.end(), d.begin(), d.end());
			return data;
		}
		if (explain == "n" && cmd1 == 'b'&& cmd2 > 7){//��Ӧ��ָ����ʽ��mov byte 8λ�Ĵ�����[0x00]<==>mov 8λ�Ĵ�����[0x00]
			data.push_back(0x8a);
			data.push_back(m_unch[cmd2 - 8]);
			d = NumToUc(number, 2);
			data.insert(data.end(), d.begin(), d.end());
			return data;
		}
		if ((explain == "word" || explain == "WORD" || explain == "n") && cmd1 == 'w'&& cmd2<8){//��Ӧ��ָ����ʽ��mov word 16λ�Ĵ�����[0x00]<==>mov 16λ�Ĵ�����[0x00]
			if (cmd2 == 0)data.push_back(0xa1);
			else{
				data.push_back(0x8b);
				data.push_back(m_unch[cmd2]);
			}
			d = NumToUc(number, 2);
			data.insert(data.end(), d.begin(), d.end());
			return data;
		}
		if (explain == "n" && cmd1 == 'w'&& cmd2 > 7){//��Ӧ��ָ����ʽ��mov word 8λ�Ĵ�����[0x00];���ָ�ʽ�Ǵ�����
			cout << "����-012�����������룺" << str << endl;
			return data;
		}
		if ((explain == "byte" || explain == "BYTE") && cmd1 == 'b'&& cmd2<8){//��Ӧָ����ʽ mov	byte 16λ�Ĵ��� ,byte [0x23]��������Ŀ���Ĵ���ֻ����8λ�Ĵ���
			cout << "����-013��Ŀ���Ĵ���ֻ����8λ�Ĵ���:" <<str<< endl;
			return data;
		}
		if ((explain == "byte" || explain == "BYTE") && cmd1 == 'b'&& cmd2>7){//��Ӧָ����ʽ mov	byte 8λ�Ĵ��� ,byte [0x23]��
			if (cmd2 == 8)data.push_back(0xa0);
			else{
				data.push_back(0x8a);
				data.push_back(m_unch[cmd2 - 8]);
			}
			d = NumToUc(number, 2);
			data.insert(data.end(), d.begin(), d.end());
			return data;
		}//************************************************
		if ((explain == "byte" || explain == "BYTE") && cmd1 == 'w'){//��Ӧָ����ʽ mov	byte 16λ�Ĵ��� ,byte [0x23]��������Ŀ���Ĵ���ֻ����8λ�Ĵ���
			cout << "����-014��Ŀ���Ĵ���ֻ����16λ�Ĵ���:" << str << endl;
			return data;
		}
		if ((explain == "word" || explain == "WORD") && cmd1 == 'b'){//����
			cout << "����-015��Ŀ���Ĵ���Ӧָ��Ϊword:" << str << endl;
		}
	}
	cout << "[]�ڽ�����bx��bp��si��di,���������룺" << str << endl;
	return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
andq $0x0, 0x10(%rdi)
movl %edx, %r14d
andq $0x0, -0x60(%rbp)
movl %esi, -0x2c(%rbp)
cmpb $0x62, %sil
sete %al
xorl %ebx, %ebx
cmpb $0x1, %r14b
sete %bl
cmpb $0x2, %r14b
pushq $0x2
popq %rdx
cmovel %edx, %ebx
cmpb $0x3, %r14b
pushq $0x3
popq %rsi
cmovel %esi, %ebx
cmpb $0x4, %r14b
pushq $0x4
popq %rdx
cmovel %edx, %ebx
cmpb $0x5, %r14b
pushq $0x5
popq %r10
cmovel %r10d, %ebx
cmpb $0x6, %r14b
pushq $0x6
popq %r11
cmovel %r11d, %ebx
cmpb $0x7, %r14b
pushq $0x7
popq %r15
cmovel %r15d, %ebx
xorl %r13d, %r13d
cmpb $0x8, %r14b
cmovnel %ebx, %r13d
setb %bl
andb %al, %bl
cmpb $0x9, %r14b
pushq $0x1
popq %r12
cmovnel %r13d, %r12d
cmpb $0xa, %r14b
pushq $0x2
popq %rax
cmovel %eax, %r12d
cmpb $0xb, %r14b
cmovel %esi, %r12d
cmpb $0xc, %r14b
cmovel %edx, %r12d
cmpb $0xd, %r14b
cmovel %r10d, %r12d
movl %r9d, -0x54(%rbp)
cmpb $0xe, %r14b
cmovel %r11d, %r12d
movq %r8, %r13
cmpb $0xf, %r14b
cmovel %r15d, %r12d
movq %rdi, %r15
movq %rcx, -0x38(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movaps %xmm0, -0x70(%rbp)
leaq 0x851e(%rip), %rsi      # 0xd159
movq %r8, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4c5a
leaq 0x84f3(%rip), %rsi      # 0xd141
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x4cb6
testb %bl, %bl
je 0x4c6d
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %r15, %rdi
callq 0x5c1e
cmpb $0x8, %r14b
leaq 0x83d8(%rip), %rsi      # 0xd050
adcq $0x0, %rsi
movq %r15, %rdi
callq 0x5ae6
movzwl %r12w, %eax
leaq 0x83d1(%rip), %rcx      # 0xd060
leaq (%rcx,%rax,4), %rsi
movq %r15, %rdi
callq 0x5ae6
leaq -0x70(%rbp), %rdi
callq 0x5be8
movq %r15, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x84a2(%rip), %rsi      # 0xd15f
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4cdc
leaq 0x8477(%rip), %rsi      # 0xd147
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x4d34
testb %bl, %bl
je 0x4cef
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %r15, %rdi
callq 0x5c1e
cmpb $0x8, %r14b
leaq 0x8356(%rip), %rsi      # 0xd050
adcq $0x0, %rsi
movq %r15, %rdi
callq 0x5ae6
movzwl %r12w, %eax
leaq 0x834f(%rip), %rcx      # 0xd060
leaq (%rcx,%rax,4), %rsi
incq %rsi
movq %r15, %rdi
callq 0x5ae6
leaq -0x50(%rbp), %rsi
movb $0x0, (%rsi)
movq %r15, %rdi
callq 0x5c1e
jmp 0x4c9b
leaq 0x8427(%rip), %rsi      # 0xd162
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4d5a
leaq 0x83fc(%rip), %rsi      # 0xd14a
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x4d9c
testb %bl, %bl
je 0x4d6d
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %r15, %rdi
callq 0x5c1e
cmpb $0x8, %r14b
leaq 0x82d8(%rip), %rsi      # 0xd050
adcq $0x0, %rsi
movq %r15, %rdi
callq 0x5ae6
movzwl %r12w, %eax
leaq 0x82d1(%rip), %rcx      # 0xd060
leaq (%rcx,%rax,4), %rsi
addq $0x2, %rsi
jmp 0x4c93
leaq 0x83c2(%rip), %rsi      # 0xd165
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4dc2
leaq 0x8397(%rip), %rsi      # 0xd14d
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x4e04
testb %bl, %bl
je 0x4dd5
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %r15, %rdi
callq 0x5c1e
cmpb $0x8, %r14b
leaq 0x8270(%rip), %rsi      # 0xd050
adcq $0x0, %rsi
movq %r15, %rdi
callq 0x5ae6
movzwl %r12w, %eax
leaq 0x8269(%rip), %rcx      # 0xd060
leaq (%rcx,%rax,4), %rsi
addq $0x3, %rsi
jmp 0x4c93
movq %r13, %rdi
movl -0x54(%rbp), %esi
callq 0x3f4c
movq %rax, %r12
movq %r13, %rbx
leaq 0x84d6(%rip), %r13      # 0xd2f2
testl %r12d, %r12d
js 0x5127
leaq 0x83d2(%rip), %rsi      # 0xd1fe
movq -0x38(%rbp), %r13
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4e53
leaq 0x83c0(%rip), %rsi      # 0xd203
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x4f09
cmpb $0x8, %r14b
setge %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x4f34
leaq 0x87b1(%rip), %rsi      # 0xd621
movq -0x38(%rbp), %rdi
callq 0x5ad5
cmpb $0x8, %r14b
jl 0x4fb7
cmpb $0x62, -0x2c(%rbp)
jne 0x4fb7
testb %al, %al
je 0x4fb7
leaq -0x50(%rbp), %rsi
movb $-0x76, (%rsi)
movq %r15, %rdi
callq 0x5c1e
addl $-0x8, %r14d
leaq 0x81d1(%rip), %rsi      # 0xd080
addq %r14, %rsi
movq %r15, %rdi
callq 0x5ae6
movq %r15, %rbx
andl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
movq %r12, %rsi
callq 0x3e87
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq %rbx, %r15
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x4c9b
leaq 0x8711(%rip), %rsi      # 0xd621
movq %r13, %rdi
callq 0x5ad5
cmpb $0x7, %r14b
jg 0x4e69
cmpb $0x62, -0x2c(%rbp)
jne 0x4e69
testb %al, %al
je 0x4e69
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %r15, %rdi
callq 0x5c1e
leaq -0x50(%rbp), %rsi
movb $-0x75, (%rsi)
movq %r15, %rdi
callq 0x5c1e
movsbq %r14b, %rax
leaq 0x8123(%rip), %rsi      # 0xd080
addq %rax, %rsi
movq %r15, %rdi
callq 0x5ae6
movq %r15, %rbx
andl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
movq %r12, %rsi
callq 0x3e87
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq %rbx, %r15
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x4c9b
leaq 0x8240(%rip), %rsi      # 0xd1fe
movq -0x38(%rbp), %r13
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
jne 0x4fe1
leaq 0x822e(%rip), %rsi      # 0xd203
movq %r13, %rdi
callq 0x5ad5
testb %al, %al
je 0x5022
cmpb $0x8, %r14b
setge %al
cmpb $0x77, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5041
movq %r12, %r13
leaq 0x8624(%rip), %rsi      # 0xd621
movq -0x38(%rbp), %rdi
callq 0x5ad5
cmpb $0x8, %r14b
jl 0x506d
cmpb $0x77, -0x2c(%rbp)
jne 0x506d
testb %al, %al
je 0x506d
leaq 0x8251(%rip), %r13      # 0xd26e
jmp 0x5127
leaq 0x85f8(%rip), %rsi      # 0xd621
movq %r13, %rdi
callq 0x5ad5
cmpb $0x7, %r14b
jg 0x4ff3
cmpb $0x77, -0x2c(%rbp)
jne 0x4ff3
testb %al, %al
je 0x4ff3
leaq -0x50(%rbp), %rsi
testb %r14b, %r14b
je 0x50a1
movb $-0x75, (%rsi)
movq %r15, %rdi
callq 0x5c1e
movsbq %r14b, %rax
leaq 0x8020(%rip), %rsi      # 0xd080
addq %rax, %rsi
movq %r15, %rdi
callq 0x5ae6
jmp 0x50ac
movq %rbx, %r12
movq %r15, %rbx
leaq 0x85b6(%rip), %rsi      # 0xd630
movq -0x38(%rbp), %r15
movq %r15, %rdi
callq 0x5ad5
testb %al, %al
je 0x50fb
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
sete %cl
testb %cl, %al
jne 0x511a
jmp 0x514e
movb $-0x5f, (%rsi)
movq %r15, %rdi
callq 0x5c1e
movq %r15, %rbx
andl $0x7fffffff, %r12d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
movq %r12, %rsi
callq 0x3e87
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq %rbx, %r15
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x4c9b
leaq 0x80c1(%rip), %rsi      # 0xd1c3
movq %r15, %rdi
callq 0x5ad5
cmpb $0x7, %r14b
jg 0x514e
cmpb $0x62, -0x2c(%rbp)
jne 0x514e
testb %al, %al
je 0x514e
leaq 0x8164(%rip), %r13      # 0xd285
movq %rbx, %r15
movq %r12, %rbx
movq 0xbeaa(%rip), %rdi      # 0x10fd8
movq %r13, %rsi
callq 0x21b0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2190
movq %rax, %rdi
callq 0x2100
jmp 0x4c9b
leaq 0x84db(%rip), %rsi      # 0xd630
movq %r15, %rdi
callq 0x5ad5
testb %al, %al
je 0x5175
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5195
jmp 0x51af
leaq 0x8047(%rip), %rsi      # 0xd1c3
movq -0x38(%rbp), %rdi
callq 0x5ad5
cmpb $0x8, %r14b
jl 0x51af
cmpb $0x62, -0x2c(%rbp)
jne 0x51af
testb %al, %al
je 0x51af
leaq -0x50(%rbp), %rsi
cmpb $0x8, %r14b
jne 0x51d2
movb $-0x60, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
movq %r13, %rsi
jmp 0x51f9
leaq 0x847a(%rip), %rsi      # 0xd630
movq -0x38(%rbp), %rdi
callq 0x5ad5
testb %al, %al
je 0x5241
cmpb $0x77, -0x2c(%rbp)
je 0x525b
jmp 0x5267
movb $-0x76, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
addl $-0x8, %r14d
leaq 0x7e98(%rip), %rsi      # 0xd080
addq %r14, %rsi
movq %rbx, %r15
movq %rbx, %rdi
callq 0x5ae6
movq %r13, %rsi
andl $0x7fffffff, %esi       # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
callq 0x3e87
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq %rbx, %r15
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x4c9b
leaq 0x7f7b(%rip), %rsi      # 0xd1c3
movq -0x38(%rbp), %rdi
callq 0x5ad5
cmpb $0x77, -0x2c(%rbp)
jne 0x5267
testb %al, %al
je 0x5267
leaq 0x8048(%rip), %r13      # 0xd2aa
jmp 0x5121
leaq 0x7f90(%rip), %rsi      # 0xd1fe
movq -0x38(%rbp), %rdi
callq 0x5ad5
testb %al, %al
je 0x5283
cmpb $0x62, -0x2c(%rbp)
je 0x529d
jmp 0x52d5
leaq 0x7f79(%rip), %rsi      # 0xd203
movq -0x38(%rbp), %rdi
callq 0x5ad5
cmpb $0x62, -0x2c(%rbp)
jne 0x52d5
testb %al, %al
je 0x52d5
movq 0xbd34(%rip), %rdi      # 0x10fd8
leaq 0x8025(%rip), %rsi      # 0xd2d0
movq %rbx, %r15
callq 0x21b0
leaq 0x8038(%rip), %r13      # 0xd2f2
movq %r12, %rbx
movq %rax, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %rdi
callq 0x2100
jmp 0x5127
movq %rbx, %r15
movq %r12, %rbx
leaq 0x8010(%rip), %r13      # 0xd2f2
jmp 0x5127
jmp 0x5314
jmp 0x5314
jmp 0x5314
jmp 0x5314
jmp 0x5311
jmp 0x5311
jmp 0x5314
jmp 0x5314
jmp 0x5314
jmp 0x5314
jmp 0x5311
jmp 0x5314
jmp 0x5314
jmp 0x5311
jmp 0x5311
jmp 0x5311
jmp 0x5311
jmp 0x5311
jmp 0x5311
jmp 0x5311
jmp 0x5311
movq %r15, %rbx
movq %rax, %r14
leaq -0x70(%rbp), %rdi
callq 0x5be8
movq %rbx, %rdi
callq 0x5be8
movq %r14, %rdi
callq 0x2300