// File: /workspace/github_cpp_makefile_star2_O2/lindorx[P]train/InsPro.cpp
// Function: Subtraction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, int, int)
std::vector<unsigned char>Subtraction(const std::string& str, int n, int num)
{
	using namespace std;
	vector<unsigned char>data;
	vector<unsigned char>w;
	unsigned char a, b, c, d, f;
	string ch[2];
	ch[0] = CutStr(str, n);
	ch[1] = CutStr(str, str.find(',') + 1);
	a = TwoRegBin(ch, 1);
	b = TwoRegBin(ch, 2);
	c = TwoRegBin(ch, 3);
	//�����Ƿ�Ϊ�Ĵ���֮�丳ֵ
	if (a){
		data.push_back(0x28);
		data.push_back(a);
		return data;
	}
	else if (b){
		data.push_back(0x29);
		data.push_back(b);
		return data;
	}
	else if (c){
		cout << "�μĴ�������ֱ�Ӳ�������!-error-007!" << endl;
	}
	//˵��ch[1]��һ�������ַ���������
	//�����Ƿ���ax�Ĵ���
	else if (ch[0] == "ax" || ch[0] == "AX"){
		data.push_back(0x2d);
		w = Num(ch[1], 2, num);
		data.insert(data.end(), w.begin(), w.end());
		return data;
	}
	else if (ch[0] == "al" || ch[0] == "AL"){
		data.push_back(0x2c);
		w = Num(ch[1], 1, num);
		data.insert(data.end(), w.begin(), w.end());
		return data;
	}
	else{
		//�жϼĴ���λ��
		d = regsub(ch[0], 1);//������ֵ��Ϊ0����˵��ch[0]��8λ�Ĵ�������
		f = regsub(ch[0], 2);//������ֵ��Ϊ0����˵��ch[1]��16λ�Ĵ�������
		if (d){
			//�ж�Ϊ8λ�Ĵ���
			data.push_back(0x80);
			data.push_back(d);
			w = Num(ch[1], 1, num);
			data.insert(data.end(), w.begin(), w.end());
			return data;
		}
		else if (f){
			//�ж�Ϊ16λ�Ĵ���
			if (IntNum(ch[1], num) > 0x7f){
				//��ֵӦת��Ϊ2�ֽ�
				w = Num(ch[1], 2, num);
				data.push_back(0x81);
				data.push_back(f);
				data.insert(data.end(), w.begin(), w.end());
				return data;
			}
			else{
				w = Num(ch[1], 1, num);
				data.push_back(0x83);
				data.push_back(f);
				data.insert(data.end(), w.begin(), w.end());
				return data;
			}
		}
	}
	return data;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %ecx, %r14d
movq %rsi, %r15
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
andq $0x0, 0x10(%rdi)
movaps %xmm0, -0x70(%rbp)
andq $0x0, -0x60(%rbp)
pushq $0x10
popq %rax
leaq (%rax,%rbp), %rcx
addq $-0xb0, %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0x50, %rax
jne 0x8bb3
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
callq 0x35dc
leaq -0xb0(%rbp), %rdi
leaq -0x50(%rbp), %r12
movq %r12, %rsi
callq 0x2220
movq %r12, %rdi
callq 0x2358
pushq $0x2c
popq %rsi
movq %r15, %rdi
xorl %edx, %edx
callq 0x2240
leal 0x1(%rax), %edx
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
callq 0x35dc
leaq -0x90(%rbp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x2220
movq %r12, %rdi
callq 0x2358
leaq -0xb0(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0x38b4
movl %eax, %r12d
movb %al, -0x2c(%rbp)
leaq -0xb0(%rbp), %rdi
pushq $0x2
popq %rsi
callq 0x38b4
movl %eax, %r13d
movb %al, -0x2b(%rbp)
leaq -0xb0(%rbp), %rdi
pushq $0x3
popq %rsi
callq 0x38b4
testb %r12b, %r12b
je 0x8c84
leaq -0x50(%rbp), %rsi
movb $0x28, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
leaq -0x2c(%rbp), %rsi
jmp 0x8c9c
testb %r13b, %r13b
je 0x8ce0
leaq -0x50(%rbp), %rsi
movb $0x29, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
leaq -0x2b(%rbp), %rsi
movq %rbx, %rdi
callq 0x5ae6
pushq $0x20
popq %r14
leaq (%r14,%rbp), %rdi
addq $-0xb0, %rdi
callq 0x2358
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x8ca8
leaq -0x70(%rbp), %rdi
callq 0x5be8
movq %rbx, %rax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
testb %al, %al
je 0x8d01
movq 0x82ed(%rip), %rdi      # 0x10fd8
leaq 0x476d(%rip), %rsi      # 0xd45f
callq 0x21b0
movq %rax, %rdi
callq 0x2100
jmp 0x8ca4
leaq 0x4448(%rip), %rsi      # 0xd150
leaq -0xb0(%rbp), %rdi
callq 0x5ad5
testb %al, %al
jne 0x8d2f
leaq 0x4419(%rip), %rsi      # 0xd138
leaq -0xb0(%rbp), %rdi
callq 0x5ad5
testb %al, %al
je 0x8d83
leaq -0x50(%rbp), %rsi
movb $0x2d, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
movq %r15, %rsi
movl %r14d, %ecx
callq 0x420a
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x8ca4
leaq 0x4399(%rip), %rsi      # 0xd123
leaq -0xb0(%rbp), %rdi
callq 0x5ad5
testb %al, %al
jne 0x8db1
leaq 0x436a(%rip), %rsi      # 0xd10b
leaq -0xb0(%rbp), %rdi
callq 0x5ad5
testb %al, %al
je 0x8e05
leaq -0x50(%rbp), %rsi
movb $0x2c, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
leaq -0x50(%rbp), %rdi
pushq $0x1
popq %rdx
movq %r15, %rsi
movl %r14d, %ecx
callq 0x420a
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x8ca4
leaq -0xb0(%rbp), %rdi
pushq $0x1
popq %rsi
callq 0x464d
movl %eax, %r12d
movb %al, -0x2a(%rbp)
leaq -0xb0(%rbp), %rdi
pushq $0x2
popq %rsi
callq 0x464d
movb %al, -0x29(%rbp)
testb %r12b, %r12b
je 0x8e91
leaq -0x50(%rbp), %rsi
movb $-0x80, (%rsi)
movq %rbx, %rdi
callq 0x5c1e
leaq -0x2a(%rbp), %rsi
movq %rbx, %rdi
callq 0x5ae6
leaq -0x50(%rbp), %rdi
pushq $0x1
popq %rdx
movq %r15, %rsi
movl %r14d, %ecx
callq 0x420a
leaq -0x70(%rbp), %r14
leaq -0x50(%rbp), %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x5d96
movq %r15, %rdi
callq 0x5be8
movq 0x8(%rbx), %rsi
movq (%r14), %rdx
movq 0x8(%r14), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x8ca4
testb %al, %al
je 0x8ca4
movq %r15, %rdi
movl %r14d, %esi
callq 0x3f4c
cmpq $0x80, %rax
jl 0x8f0b
leaq -0x50(%rbp), %rdi
pushq $0x2
popq %rdx
movq %r15, %rsi
movl %r14d, %ecx
callq 0x420a
leaq -0x70(%rbp), %rdi
leaq -0x50(%rbp), %r14
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movb $-0x7f, (%r14)
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x5c1e
leaq -0x29(%rbp), %rsi
movq %rbx, %rdi
callq 0x5ae6
movq 0x8(%rbx), %rsi
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x8ca4
leaq -0x50(%rbp), %rdi
pushq $0x1
popq %rdx
movq %r15, %rsi
movl %r14d, %ecx
callq 0x420a
leaq -0x70(%rbp), %rdi
leaq -0x50(%rbp), %r14
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movb $-0x7d, (%r14)
leaq -0x50(%rbp), %rsi
movq %rbx, %rdi
callq 0x5c1e
leaq -0x29(%rbp), %rsi
movq %rbx, %rdi
callq 0x5ae6
movq 0x8(%rbx), %rsi
movq -0x70(%rbp), %rdx
movq -0x68(%rbp), %rcx
movq %rbx, %rdi
callq 0x5b08
jmp 0x8ca4
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
jmp 0x8f90
movq %rax, %r14
pushq $0x20
popq %r15
leaq (%r15,%rbp), %rdi
addq $-0xb0, %rdi
callq 0x2358
addq $-0x20, %r15
cmpq $-0x20, %r15
jne 0x8f97
leaq -0x70(%rbp), %rdi
callq 0x5be8
movq %rbx, %rdi
callq 0x5be8
movq %r14, %rdi
callq 0x2300