// File: lindorx[P]train/InsPro.cpp
// Function: Move1(STRINF*, STRINF*, int)
std::vector<unsigned char>Move1( STRINF *m1, STRINF *m2,int num)
{
	using namespace std;
	vector<unsigned char>data;
	vector<unsigned char>w;
	unsigned char a,b,c,c_s,d,f;
	string ch[2];
	ch[0] = m1->str;
	ch[1] = m2->str;
	a=TwoRegBin(ch,1);
	b=TwoRegBin(ch,2);
	c=TwoRegBin(ch,3);
	c_s = TwoRegBin(ch, 4);
	//�����Ƿ�Ϊ�Ĵ���֮�丳ֵ
	if (a){
		data.push_back(0x88);
		data.push_back(a);
		return data;
	}
	else if (b){
		data.push_back(0x89);
		data.push_back(b);
		return data;
	}
	else if (c){
		data.push_back(0x8c);
		data.push_back(c);
		return data;
	}
	else if (c_s){
		data.push_back(0x8e);
		data.push_back(c_s);
		return data;
	}
	else{
		d = RegACDB(ch[0], 1);//�ж�8λ�Ĵ���
		f = RegACDB(ch[0], 2);//�ж�16λ�Ĵ���
		if(d){//��d���棬˵�����ϸߵ�λ�Ĵ���
			data.push_back(d);
			//�����ж��Ƿ�Ϊ�ַ���$���������ǣ�д��3����Ԫ�أ���data�Ĵ�С���ڵ���4,���򷵻ؽ��Ĵ���������ֵת�����Ľ���
			if (ch[1] != "$"){
				//д���Ĵ�����������������ֵ������������16���ƻ�ʮ�����ַ���
				w = Num(ch[1], 1,num);
				if (w.size() > 0){
					data.insert(data.end(), w.begin(), w.end());
					return data;
				}
				else{
					//��ʱdata�Ĵ�СΪ4������ȷ����Ϊ����
					data.insert(data.end(), 2, 0x00);
					data.push_back(2);
					return data;
				}
			}
			else {
				w = NumToUc(num, 1);
				data.insert(data.end(), w.begin(), w.end());
				return data;
			}
		}
		else if(f){
			data.push_back(f);//д���Ĵ���
			//ͬ��
			if (ch[1] != "$"){
				//д���Ĵ�����������������ֵ������������16���ƻ�ʮ�����ַ���
				w = Num(ch[1], 2,num);
				//�ж��Ƿ��Ǳ����ַ���
				if (w.size() > 0){
					data.insert(data.end(), w.begin(), w.end());
					return data;
				}
				else{
					//��ʱdata�Ĵ�СΪ4������ȷ����Ϊ����
					data.insert(data.end(), 2, 0x00);
					data.push_back(1);
					return data;
				}
			}
			else {
				w = NumToUc(num, 2);
				data.insert(data.end(), w.begin(), w.end());
				return data;
			}
		}
		else{
			cout << "����MOVָ��������error-005!" << endl;
			return data;
		}
		cout << "����MOVָ��������error-019!" << endl;
		return data;
	}
	//���䣬֮ǰû�з��ֶμĴ����ĸ�ֵ
	
	return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movq %rdi, -0x208(%rbp)
movq %rdi, %rax
movq %rax, -0x200(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movb $0x0, -0x1d(%rbp)
callq 0xa8d0
leaq -0x38(%rbp), %rdi
callq 0xa8d0
leaq -0x80(%rbp), %rax
movq %rax, %rcx
addq $0x40, %rcx
movq %rcx, -0x1f8(%rbp)
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x3330
movq -0x210(%rbp), %rax
movq -0x1f8(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x1f0(%rbp)
jne 0xcfd6
movq -0x10(%rbp), %rsi
addq $0x20, %rsi
leaq -0x80(%rbp), %rdi
callq 0x3050
jmp 0xd01a
movq -0x18(%rbp), %rsi
addq $0x20, %rsi
leaq -0x60(%rbp), %rdi
callq 0x3050
jmp 0xd02d
leaq -0x80(%rbp), %rdi
movl $0x1, %esi
callq 0x6d30
movb %al, -0x211(%rbp)
jmp 0xd043
movb -0x211(%rbp), %al
movb %al, -0x39(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x2, %esi
callq 0x6d30
movb %al, -0x212(%rbp)
jmp 0xd062
movb -0x212(%rbp), %al
movb %al, -0x3a(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x3, %esi
callq 0x6d30
movb %al, -0x213(%rbp)
jmp 0xd081
movb -0x213(%rbp), %al
movb %al, -0x3b(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x4, %esi
callq 0x6d30
movb %al, -0x214(%rbp)
jmp 0xd0a0
movb -0x214(%rbp), %al
movb %al, -0x3c(%rbp)
cmpb $0x0, -0x39(%rbp)
je 0xd11d
movq -0x208(%rbp), %rdi
movb $-0x78, -0x8d(%rbp)
leaq -0x8d(%rbp), %rsi
callq 0xa8f0
jmp 0xd0cb
movq -0x208(%rbp), %rdi
leaq -0x39(%rbp), %rsi
callq 0xaa00
jmp 0xd0dd
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x228(%rbp)
addq $0x40, %rax
movq %rax, -0x220(%rbp)
jmp 0xd7e6
cmpb $0x0, -0x3a(%rbp)
je 0xd164
movq -0x208(%rbp), %rdi
movb $-0x77, -0x95(%rbp)
leaq -0x95(%rbp), %rsi
callq 0xa8f0
jmp 0xd13f
movq -0x208(%rbp), %rdi
leaq -0x3a(%rbp), %rsi
callq 0xaa00
jmp 0xd151
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
cmpb $0x0, -0x3b(%rbp)
je 0xd1ab
movq -0x208(%rbp), %rdi
movb $-0x74, -0x96(%rbp)
leaq -0x96(%rbp), %rsi
callq 0xa8f0
jmp 0xd186
movq -0x208(%rbp), %rdi
leaq -0x3b(%rbp), %rsi
callq 0xaa00
jmp 0xd198
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
cmpb $0x0, -0x3c(%rbp)
je 0xd1f2
movq -0x208(%rbp), %rdi
movb $-0x72, -0x97(%rbp)
leaq -0x97(%rbp), %rsi
callq 0xa8f0
jmp 0xd1cd
movq -0x208(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
callq 0xaa00
jmp 0xd1df
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
leaq -0x80(%rbp), %rdi
movl $0x1, %esi
callq 0x7030
movb %al, -0x229(%rbp)
jmp 0xd208
movb -0x229(%rbp), %al
movb %al, -0x3d(%rbp)
leaq -0x80(%rbp), %rdi
movl $0x2, %esi
callq 0x7030
movb %al, -0x22a(%rbp)
jmp 0xd227
movb -0x22a(%rbp), %al
movb %al, -0x3e(%rbp)
cmpb $0x0, -0x3d(%rbp)
je 0xd4c1
movq -0x208(%rbp), %rdi
leaq -0x3d(%rbp), %rsi
callq 0xaa00
jmp 0xd24c
leaq -0x60(%rbp), %rdi
leaq 0xdfda(%rip), %rsi      # 0x1b231
callq 0x15690
movb %al, -0x22b(%rbp)
jmp 0xd264
movb -0x22b(%rbp), %al
testb $0x1, %al
jne 0xd273
jmp 0xd3e9
leaq -0x60(%rbp), %rsi
movl -0x1c(%rbp), %ecx
leaq -0xb0(%rbp), %rdi
movl $0x1, %edx
callq 0x7be0
jmp 0xd28d
leaq -0x38(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xa9b0
leaq -0xb0(%rbp), %rdi
callq 0xa920
leaq -0x38(%rbp), %rdi
callq 0xa9e0
cmpq $0x0, %rax
jbe 0xd357
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0xab70
leaq -0x38(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0xabb0
movq -0x240(%rbp), %rdi
movq %rax, -0xc8(%rbp)
callq 0xab40
movq -0x208(%rbp), %rdi
movq %rax, -0xd0(%rbp)
movq -0xb8(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movq -0xd0(%rbp), %rcx
callq 0xaa90
movq %rax, -0x238(%rbp)
jmp 0xd336
movq -0x238(%rbp), %rax
movq %rax, -0xd8(%rbp)
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0xe8(%rbp)
leaq -0xe0(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xab70
movq -0x208(%rbp), %rdi
movb $0x0, -0xe9(%rbp)
movq -0xe0(%rbp), %rsi
movl $0x2, %edx
leaq -0xe9(%rbp), %rcx
callq 0x156c0
movq %rax, -0x248(%rbp)
jmp 0xd3ac
movq -0x208(%rbp), %rdi
movq -0x248(%rbp), %rax
movq %rax, -0xf8(%rbp)
movb $0x2, -0xf9(%rbp)
leaq -0xf9(%rbp), %rsi
callq 0xa8f0
jmp 0xd3d6
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movslq -0x1c(%rbp), %rsi
leaq -0x118(%rbp), %rdi
movl $0x1, %edx
callq 0x75f0
jmp 0xd400
leaq -0x38(%rbp), %rdi
movq %rdi, -0x258(%rbp)
leaq -0x118(%rbp), %rsi
movq %rsi, -0x260(%rbp)
callq 0xa9b0
movq -0x260(%rbp), %rdi
callq 0xa920
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0x128(%rbp)
leaq -0x120(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0xab70
movq -0x258(%rbp), %rdi
callq 0xabb0
movq -0x258(%rbp), %rdi
movq %rax, -0x130(%rbp)
callq 0xab40
movq -0x208(%rbp), %rdi
movq %rax, -0x138(%rbp)
movq -0x120(%rbp), %rsi
movq -0x130(%rbp), %rdx
movq -0x138(%rbp), %rcx
callq 0xaa90
movq %rax, -0x250(%rbp)
jmp 0xd4a0
movq -0x250(%rbp), %rax
movq %rax, -0x140(%rbp)
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
cmpb $0x0, -0x3e(%rbp)
je 0xd74f
movq -0x208(%rbp), %rdi
leaq -0x3e(%rbp), %rsi
callq 0xaa00
jmp 0xd4dd
leaq -0x60(%rbp), %rdi
leaq 0xdd49(%rip), %rsi      # 0x1b231
callq 0x15690
movb %al, -0x261(%rbp)
jmp 0xd4f5
movb -0x261(%rbp), %al
testb $0x1, %al
jne 0xd504
jmp 0xd67a
leaq -0x60(%rbp), %rsi
movl -0x1c(%rbp), %ecx
leaq -0x158(%rbp), %rdi
movl $0x2, %edx
callq 0x7be0
jmp 0xd51e
leaq -0x38(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0xa9b0
leaq -0x158(%rbp), %rdi
callq 0xa920
leaq -0x38(%rbp), %rdi
callq 0xa9e0
cmpq $0x0, %rax
jbe 0xd5e8
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0x168(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xab70
leaq -0x38(%rbp), %rdi
movq %rdi, -0x278(%rbp)
callq 0xabb0
movq -0x278(%rbp), %rdi
movq %rax, -0x170(%rbp)
callq 0xab40
movq -0x208(%rbp), %rdi
movq %rax, -0x178(%rbp)
movq -0x160(%rbp), %rsi
movq -0x170(%rbp), %rdx
movq -0x178(%rbp), %rcx
callq 0xaa90
movq %rax, -0x270(%rbp)
jmp 0xd5c7
movq -0x270(%rbp), %rax
movq %rax, -0x180(%rbp)
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0x190(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xab70
movq -0x208(%rbp), %rdi
movb $0x0, -0x191(%rbp)
movq -0x188(%rbp), %rsi
movl $0x2, %edx
leaq -0x191(%rbp), %rcx
callq 0x156c0
movq %rax, -0x280(%rbp)
jmp 0xd63d
movq -0x208(%rbp), %rdi
movq -0x280(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movb $0x1, -0x1a1(%rbp)
leaq -0x1a1(%rbp), %rsi
callq 0xa8f0
jmp 0xd667
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movslq -0x1c(%rbp), %rsi
leaq -0x1c0(%rbp), %rdi
movl $0x2, %edx
callq 0x75f0
jmp 0xd691
leaq -0x38(%rbp), %rdi
movq %rdi, -0x290(%rbp)
leaq -0x1c0(%rbp), %rsi
movq %rsi, -0x298(%rbp)
callq 0xa9b0
movq -0x298(%rbp), %rdi
callq 0xa920
movq -0x208(%rbp), %rdi
callq 0xab40
movq %rax, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xab70
movq -0x290(%rbp), %rdi
callq 0xabb0
movq -0x290(%rbp), %rdi
movq %rax, -0x1d8(%rbp)
callq 0xab40
movq -0x208(%rbp), %rdi
movq %rax, -0x1e0(%rbp)
movq -0x1c8(%rbp), %rsi
movq -0x1d8(%rbp), %rdx
movq -0x1e0(%rbp), %rcx
callq 0xaa90
movq %rax, -0x288(%rbp)
jmp 0xd731
movq -0x288(%rbp), %rax
movq %rax, -0x1e8(%rbp)
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
jmp 0xd78e
movq 0x13882(%rip), %rdi     # 0x20fd8
leaq 0xdc9a(%rip), %rsi      # 0x1b3f7
callq 0x31f0
movq %rax, -0x2a0(%rbp)
jmp 0xd76b
movq -0x2a0(%rbp), %rdi
movq 0x13847(%rip), %rsi     # 0x20fc0
callq 0x3240
jmp 0xd780
movb $0x1, -0x1d(%rbp)
movl $0x1, -0x94(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x2b0(%rbp)
addq $0x40, %rax
movq %rax, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2b8(%rbp)
callq 0x3468
movq -0x2b0(%rbp), %rcx
movq -0x2b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x2a8(%rbp)
jne 0xd7a4
leaq -0x38(%rbp), %rdi
callq 0xa920
testb $0x1, -0x1d(%rbp)
jne 0xd83a
jmp 0xd82e
movq -0x220(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x3468
movq -0x228(%rbp), %rcx
movq -0x2c0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x220(%rbp)
jne 0xd7e6
leaq -0x38(%rbp), %rdi
callq 0xa920
movq -0x208(%rbp), %rdi
callq 0xa920
jmp 0xd84a
movq -0x208(%rbp), %rdi
callq 0xa920
movq -0x200(%rbp), %rax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq -0x88(%rbp), %rdi
callq 0x33f0
nopw %cs:(%rax,%rax)