// File: /workspace/github_cpp_makefile_star2_O3/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 $0x38, %rsp
movl %edx, %r14d
movl %esi, -0x2c(%rbp)
cmpb $0x62, %sil
sete %al
xorl %r15d, %r15d
cmpb $0x1, %r14b
sete %r15b
cmpb $0x2, %r14b
movl $0x2, %edx
cmovel %edx, %r15d
cmpb $0x3, %r14b
movl $0x3, %esi
cmovel %esi, %r15d
cmpb $0x4, %r14b
movl $0x4, %r10d
cmovel %r10d, %r15d
cmpb $0x5, %r14b
movl $0x5, %r11d
cmovel %r11d, %r15d
cmpb $0x6, %r14b
movl $0x6, %ebx
cmovel %ebx, %r15d
cmpb $0x7, %r14b
movl $0x7, %r13d
cmovel %r13d, %r15d
xorl %edx, %edx
cmpb $0x8, %r14b
cmovnel %r15d, %edx
setb %r15b
andb %al, %r15b
cmpb $0x9, %r14b
movl $0x1, %r12d
cmovnel %edx, %r12d
cmpb $0xa, %r14b
movl $0x2, %eax
cmovel %eax, %r12d
cmpb $0xb, %r14b
cmovel %esi, %r12d
cmpb $0xc, %r14b
cmovel %r10d, %r12d
movl %r9d, -0x4c(%rbp)
cmpb $0xd, %r14b
cmovel %r11d, %r12d
cmpb $0xe, %r14b
cmovel %ebx, %r12d
movq %rcx, -0x58(%rbp)
cmpb $0xf, %r14b
cmovel %r13d, %r12d
movq %r8, %r13
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq 0xbc1f(%rip), %rsi      # 0x11159
movq %r8, %rdi
callq 0x20a0
testl %eax, %eax
je 0x56cb
leaq 0xbbf0(%rip), %rsi      # 0x11141
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x56cb
leaq 0xbbf7(%rip), %rsi      # 0x1115f
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5709
leaq 0xbbc8(%rip), %rsi      # 0x11147
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5709
leaq 0xbbcc(%rip), %rsi      # 0x11162
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5789
leaq 0xbb9d(%rip), %rsi      # 0x1114a
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5789
leaq 0xbba1(%rip), %rsi      # 0x11165
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5825
leaq 0xbb72(%rip), %rsi      # 0x1114d
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5825
movq %r13, %rdi
movl -0x4c(%rbp), %esi
callq 0x45f9
movq %rax, %r15
testl %r15d, %r15d
movq -0x58(%rbp), %r12
js 0x5c0b
leaq 0xbbf1(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5891
leaq 0xbbdf(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5891
leaq 0xbfef(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x58a7
cmpb $0x62, -0x2c(%rbp)
jne 0x58a7
testl %eax, %eax
jne 0x58a7
leaq -0x48(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x6694
leaq -0x48(%rbp), %rsi
movb $-0x75, (%rsi)
movq %rbx, %rdi
callq 0x6694
movsbq %r14b, %rax
leaq 0xb9f8(%rip), %rsi      # 0x11080
addq %rax, %rsi
movq %rbx, %rdi
callq 0x65d4
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x48(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4523
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %r12
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0x5a6c
testb %r15b, %r15b
je 0x56df
leaq -0x48(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x6694
cmpb $0x8, %r14b
leaq 0xb966(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x574e
movb (%rdx), %al
movb %al, (%rsi)
movq 0x8(%rbx), %rsi
incq %rsi
movq %rsi, 0x8(%rbx)
jmp 0x575a
testb %r15b, %r15b
je 0x571d
leaq -0x48(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x6694
cmpb $0x8, %r14b
leaq 0xb928(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x57ce
movb (%rdx), %al
movb %al, (%rsi)
movq 0x8(%rbx), %rsi
incq %rsi
movq %rsi, 0x8(%rbx)
jmp 0x57da
movq %rbx, %rdi
callq 0x67cc
movq 0x8(%rbx), %rsi
movzwl %r12w, %eax
leaq 0xb8fb(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
cmpq 0x10(%rbx), %rsi
je 0x577c
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x5813
movq %rbx, %rdi
callq 0x67cc
jmp 0x5813
testb %r15b, %r15b
je 0x579d
leaq -0x48(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x6694
cmpb $0x8, %r14b
leaq 0xb8a8(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x586d
movb (%rdx), %al
movb %al, (%rsi)
movq 0x8(%rbx), %rsi
incq %rsi
movq %rsi, 0x8(%rbx)
jmp 0x5879
movq %rbx, %rdi
callq 0x67cc
movq 0x8(%rbx), %rsi
movzwl %r12w, %eax
leaq 0xb87b(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
incq %rdx
cmpq 0x10(%rbx), %rsi
je 0x57fc
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x5804
movq %rbx, %rdi
callq 0x67cc
leaq -0x48(%rbp), %rsi
movb $0x0, (%rsi)
movq %rbx, %rdi
callq 0x6694
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %r15b, %r15b
je 0x5839
leaq -0x48(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x6694
cmpb $0x8, %r14b
leaq 0xb80c(%rip), %rsi      # 0x11050
adcq $0x0, %rsi
movq %rbx, %rdi
callq 0x65d4
movzwl %r12w, %eax
leaq 0xb805(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rsi
addq $0x3, %rsi
movq %rbx, %rdi
callq 0x65d4
jmp 0x5813
movq %rbx, %rdi
callq 0x67cc
movq 0x8(%rbx), %rsi
movzwl %r12w, %eax
leaq 0xb7dc(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
addq $0x2, %rdx
jmp 0x5769
cmpb $0x8, %r14b
setge %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x565f
leaq 0xbd7c(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x5923
cmpb $0x62, -0x2c(%rbp)
jne 0x5923
testl %eax, %eax
jne 0x5923
leaq -0x48(%rbp), %rsi
movb $-0x76, (%rsi)
movq %rbx, %rdi
callq 0x6694
addl $-0x8, %r14d
leaq 0xb7a0(%rip), %rsi      # 0x11080
addq %r14, %rsi
movq %rbx, %rdi
callq 0x65d4
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x48(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4523
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %r12
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0x5a6c
leaq 0xb8d4(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x599b
leaq 0xb8c6(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x599b
leaq 0xbcda(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x59ad
cmpb $0x77, -0x2c(%rbp)
jne 0x59ad
testl %eax, %eax
jne 0x59ad
leaq -0x48(%rbp), %rsi
testb %r14b, %r14b
je 0x5a2e
movb $-0x75, (%rsi)
movq %rbx, %rdi
callq 0x6694
movsbq %r14b, %rax
leaq 0xb6f5(%rip), %rsi      # 0x11080
addq %rax, %rsi
movq %rbx, %rdi
callq 0x65d4
jmp 0x5a39
cmpb $0x8, %r14b
setge %al
cmpb $0x77, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5968
leaq 0xbc76(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x59de
cmpb $0x77, -0x2c(%rbp)
jne 0x59de
testl %eax, %eax
jne 0x59de
movl $0x16, %r14d
leaq 0xb895(%rip), %r15      # 0x1126e
jmp 0x5c18
leaq 0xbc54(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5a88
leaq 0xb7c7(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x5a9a
cmpb $0x62, -0x2c(%rbp)
jne 0x5a9a
testl %eax, %eax
jne 0x5a9a
movl $0x24, %r14d
leaq 0xb85c(%rip), %r15      # 0x11285
jmp 0x5c18
movb $-0x5f, (%rsi)
movq %rbx, %rdi
callq 0x6694
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x48(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4523
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %r12
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
testq %r15, %r15
je 0x5813
subq %r15, %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x21d0
jmp 0x5813
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
sete %cl
testb %cl, %al
jne 0x5a1c
leaq 0xbb98(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5ae3
leaq 0xb70f(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x5af5
cmpb $0x62, -0x2c(%rbp)
jne 0x5af5
testl %eax, %eax
jne 0x5af5
leaq -0x48(%rbp), %rsi
cmpb $0x8, %r14b
jne 0x5b37
movb $-0x60, (%rsi)
movq %rbx, %rdi
callq 0x6694
jmp 0x5b58
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5acc
leaq 0xbb3d(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5b90
leaq 0xb6b0(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x77, -0x2c(%rbp)
jne 0x5b96
testl %eax, %eax
jne 0x5b96
leaq 0xb77e(%rip), %r15      # 0x112aa
movl $0x25, %r14d
jmp 0x5c18
movb $-0x76, (%rsi)
movq %rbx, %rdi
callq 0x6694
addl $-0x8, %r14d
leaq 0xb533(%rip), %rsi      # 0x11080
addq %r14, %rsi
movq %rbx, %rdi
callq 0x65d4
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x48(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4523
movq -0x48(%rbp), %r15
movq -0x40(%rbp), %rcx
movq -0x38(%rbp), %r12
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0x5a6c
cmpb $0x77, -0x2c(%rbp)
je 0x5b25
leaq 0xb661(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5c05
leaq 0xb653(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
cmpb $0x62, -0x2c(%rbp)
jne 0x5c0b
testl %eax, %eax
jne 0x5c0b
movq 0xf40f(%rip), %rdi      # 0x14fd8
leaq 0xb700(%rip), %rsi      # 0x112d0
movl $0x21, %edx
callq 0x2210
movl $0x25, %r14d
leaq 0xb70b(%rip), %r15      # 0x112f2
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq 0xf3e2(%rip), %rdi      # 0x14fd8
callq 0x2210
movq %rax, %rdi
callq 0x20f0
jmp 0x5c18
cmpb $0x62, -0x2c(%rbp)
je 0x5bc2
movl $0x25, %r14d
leaq 0xb6da(%rip), %r15      # 0x112f2
movq 0xf3b9(%rip), %rdi      # 0x14fd8
movq %r15, %rsi
movq %r14, %rdx
callq 0x2210
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq 0xf39f(%rip), %rdi      # 0x14fd8
callq 0x2210
movq %rax, %rdi
callq 0x20f0
jmp 0x5813
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c61
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c61
jmp 0x5c8b
jmp 0x5c61
jmp 0x5c8b
jmp 0x5c8b
movq %rax, %r14
testq %r15, %r15
je 0x5c8e
subq %r15, %r12
movq %r15, %rdi
movq %r12, %rsi
callq 0x21d0
jmp 0x5c8e
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
jmp 0x5c8b
movq %rax, %r14
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x5ca2
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21d0
movq %r14, %rdi
callq 0x2300