// File: /workspace/github_cpp_makefile_star2_O1/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, -0x54(%rbp)
cmpb $0xd, %r14b
cmovel %r11d, %r12d
cmpb $0xe, %r14b
cmovel %ebx, %r12d
movq %rcx, -0x60(%rbp)
cmpb $0xf, %r14b
cmovel %r13d, %r12d
movq %r8, %r13
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
leaq 0xbc0e(%rip), %rsi      # 0x11159
movq %r8, %rdi
callq 0x20a0
testl %eax, %eax
je 0x56dc
leaq 0xbbdf(%rip), %rsi      # 0x11141
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x56dc
leaq 0xbbe6(%rip), %rsi      # 0x1115f
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5713
leaq 0xbbb7(%rip), %rsi      # 0x11147
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5713
leaq 0xbbbb(%rip), %rsi      # 0x11162
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x578c
leaq 0xbb8c(%rip), %rsi      # 0x1114a
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x578c
leaq 0xbb90(%rip), %rsi      # 0x11165
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x583a
leaq 0xbb61(%rip), %rsi      # 0x1114d
movq %r13, %rdi
callq 0x20a0
testl %eax, %eax
je 0x583a
movq %r13, %rdi
movl -0x54(%rbp), %esi
callq 0x460a
movq %rax, %r15
testl %r15d, %r15d
movq -0x60(%rbp), %r12
js 0x5bf9
leaq 0xbbe0(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x58a2
leaq 0xbbce(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x58a2
leaq 0xbfde(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x58b8
cmpb $0x62, -0x2c(%rbp)
jne 0x58b8
testl %eax, %eax
jne 0x58b8
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x67f0
leaq -0x50(%rbp), %rsi
movb $-0x75, (%rsi)
movq %rbx, %rdi
callq 0x67f0
movsbq %r14b, %rax
leaq 0xb9e7(%rip), %rsi      # 0x11080
addq %rax, %rsi
movq %rbx, %rdi
callq 0x6734
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4534
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x6a1a
jmp 0x5815
testb %r15b, %r15b
je 0x56f0
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x67f0
cmpb $0x8, %r14b
leaq 0xb955(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5751
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x5759
testb %r15b, %r15b
je 0x5727
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x67f0
cmpb $0x8, %r14b
leaq 0xb91e(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x57ca
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x57d2
movq %rbx, %rdi
callq 0x6920
movzwl %r12w, %eax
leaq 0xb8fc(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x577f
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x580f
movq %rbx, %rdi
callq 0x6920
jmp 0x580f
testb %r15b, %r15b
je 0x57a0
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x67f0
cmpb $0x8, %r14b
leaq 0xb8a5(%rip), %rdx      # 0x11050
adcq $0x0, %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x5882
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x588a
movq %rbx, %rdi
callq 0x6920
movzwl %r12w, %eax
leaq 0xb883(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
incq %rdx
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x57f8
movb (%rdx), %al
movb %al, (%rsi)
incq 0x8(%rbx)
jmp 0x5800
movq %rbx, %rdi
callq 0x6920
leaq -0x50(%rbp), %rsi
movb $0x0, (%rsi)
movq %rbx, %rdi
callq 0x67f0
xorl %r14d, %r14d
xorl %r12d, %r12d
testq %r12, %r12
je 0x5828
subq %r12, %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x21d0
movq %rbx, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %r15b, %r15b
je 0x584e
leaq -0x50(%rbp), %rsi
movb $0x3e, (%rsi)
movq %rbx, %rdi
callq 0x67f0
cmpb $0x8, %r14b
leaq 0xb7f7(%rip), %rsi      # 0x11050
adcq $0x0, %rsi
movq %rbx, %rdi
callq 0x6734
movzwl %r12w, %eax
leaq 0xb7f0(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rsi
addq $0x3, %rsi
movq %rbx, %rdi
callq 0x6734
jmp 0x580f
movq %rbx, %rdi
callq 0x6920
movzwl %r12w, %eax
leaq 0xb7cb(%rip), %rcx      # 0x11060
leaq (%rcx,%rax,4), %rdx
addq $0x2, %rdx
jmp 0x5768
cmpb $0x8, %r14b
setge %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5670
leaq 0xbd6b(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x5934
cmpb $0x62, -0x2c(%rbp)
jne 0x5934
testl %eax, %eax
jne 0x5934
leaq -0x50(%rbp), %rsi
movb $-0x76, (%rsi)
movq %rbx, %rdi
callq 0x67f0
addl $-0x8, %r14d
leaq 0xb78f(%rip), %rsi      # 0x11080
addq %r14, %rsi
movq %rbx, %rdi
callq 0x6734
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4534
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x6a1a
jmp 0x5815
leaq 0xb8c3(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x59ac
leaq 0xb8b5(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x59ac
leaq 0xbcc9(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x59be
cmpb $0x77, -0x2c(%rbp)
jne 0x59be
testl %eax, %eax
jne 0x59be
leaq -0x50(%rbp), %rsi
testb %r14b, %r14b
je 0x5a33
movb $-0x75, (%rsi)
movq %rbx, %rdi
callq 0x67f0
movsbq %r14b, %rax
leaq 0xb6e4(%rip), %rsi      # 0x11080
addq %rax, %rsi
movq %rbx, %rdi
callq 0x6734
jmp 0x5a3e
cmpb $0x8, %r14b
setge %al
cmpb $0x77, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5979
leaq 0xbc65(%rip), %rsi      # 0x1162a
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x59ef
cmpb $0x77, -0x2c(%rbp)
jne 0x59ef
testl %eax, %eax
jne 0x59ef
movl $0x16, %r14d
leaq 0xb884(%rip), %r15      # 0x1126e
jmp 0x5c06
leaq 0xbc43(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5a76
leaq 0xb7ba(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x7, %r14b
jg 0x5a88
cmpb $0x62, -0x2c(%rbp)
jne 0x5a88
testl %eax, %eax
jne 0x5a88
movl $0x24, %r14d
leaq 0xb857(%rip), %r15      # 0x11285
jmp 0x5c06
movb $-0x5f, (%rsi)
movq %rbx, %rdi
callq 0x67f0
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4534
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x6a1a
jmp 0x5815
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
sete %cl
testb %cl, %al
jne 0x5a21
leaq 0xbbaa(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5ad1
leaq 0xb721(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x8, %r14b
jl 0x5ae3
cmpb $0x62, -0x2c(%rbp)
jne 0x5ae3
testl %eax, %eax
jne 0x5ae3
leaq -0x50(%rbp), %rsi
cmpb $0x8, %r14b
jne 0x5b25
movb $-0x60, (%rsi)
movq %rbx, %rdi
callq 0x67f0
jmp 0x5b46
cmpb $0x8, %r14b
setl %al
cmpb $0x62, -0x2c(%rbp)
setne %cl
orb %al, %cl
je 0x5aba
leaq 0xbb4f(%rip), %rsi      # 0x11639
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5b7e
leaq 0xb6c2(%rip), %rsi      # 0x111c3
movq %r12, %rdi
callq 0x20a0
cmpb $0x77, -0x2c(%rbp)
jne 0x5b84
testl %eax, %eax
jne 0x5b84
leaq 0xb790(%rip), %r15      # 0x112aa
movl $0x25, %r14d
jmp 0x5c06
movb $-0x76, (%rsi)
movq %rbx, %rdi
callq 0x67f0
addl $-0x8, %r14d
leaq 0xb545(%rip), %rsi      # 0x11080
addq %r14, %rsi
movq %rbx, %rdi
callq 0x6734
andl $0x7fffffff, %r15d      # imm = 0x7FFFFFFF
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
movl $0x2, %edx
callq 0x4534
movq -0x50(%rbp), %r12
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r12, %rdx
callq 0x6a1a
jmp 0x5815
cmpb $0x77, -0x2c(%rbp)
je 0x5b13
leaq 0xb673(%rip), %rsi      # 0x111fe
movq %r12, %rdi
callq 0x20a0
testl %eax, %eax
je 0x5bf3
leaq 0xb665(%rip), %rsi      # 0x11203
movq %r12, %rdi
callq 0x20a0
cmpb $0x62, -0x2c(%rbp)
jne 0x5bf9
testl %eax, %eax
jne 0x5bf9
movq 0xf421(%rip), %rdi      # 0x14fd8
leaq 0xb712(%rip), %rsi      # 0x112d0
movl $0x21, %edx
callq 0x2210
movl $0x25, %r14d
leaq 0xb71d(%rip), %r15      # 0x112f2
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq 0xf3f4(%rip), %rdi      # 0x14fd8
callq 0x2210
movq %rax, %rdi
callq 0x20f0
jmp 0x5c06
cmpb $0x62, -0x2c(%rbp)
je 0x5bb0
movl $0x25, %r14d
leaq 0xb6ec(%rip), %r15      # 0x112f2
movq 0xf3cb(%rip), %rdi      # 0x14fd8
movq %r15, %rsi
movq %r14, %rdx
callq 0x2210
movq (%r13), %rsi
movq 0x8(%r13), %rdx
movq 0xf3b1(%rip), %rdi      # 0x14fd8
callq 0x2210
movq %rax, %rdi
callq 0x20f0
jmp 0x580f
jmp 0x5c66
jmp 0x5c66
jmp 0x5c4f
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c4f
jmp 0x5c66
jmp 0x5c4f
jmp 0x5c66
jmp 0x5c66
movq %rax, %r15
jmp 0x5c6f
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
jmp 0x5c66
movq %rax, %r15
xorl %r14d, %r14d
xorl %r12d, %r12d
testq %r12, %r12
je 0x5c82
subq %r12, %r14
movq %r12, %rdi
movq %r14, %rsi
callq 0x21d0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x5c96
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21d0
movq %r15, %rdi
callq 0x2300