// File: /workspace/github_cpp_makefile_star2_O3/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 $0x78, %rsp
movl %ecx, -0x30(%rbp)
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movl $0x10, %eax
leaq (%rax,%rbp), %rcx
addq $-0xa0, %rcx
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0x50, %rax
jne 0xac91
leaq -0x58(%rbp), %rdi
movq %r14, %rsi
callq 0x3b1c
leaq -0xa0(%rbp), %rdi
leaq -0x58(%rbp), %r15
movq %r15, %rsi
callq 0x2230
movq (%r15), %rdi
leaq -0x48(%rbp), %r15
cmpq %r15, %rdi
je 0xacec
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x21d0
movq %r14, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x2240
leal 0x1(%rax), %edx
leaq -0x58(%rbp), %rdi
movq %r14, %rsi
callq 0x3b1c
leaq -0x80(%rbp), %rdi
leaq -0x58(%rbp), %r14
movq %r14, %rsi
callq 0x2230
movq (%r14), %rdi
cmpq %r15, %rdi
je 0xad2e
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x21d0
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x1, %esi
callq 0x3e24
movl %eax, %r12d
movb %al, -0x34(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x2, %esi
callq 0x3e24
movl %eax, %r13d
movb %al, -0x33(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x3, %esi
callq 0x3e24
testb %r12b, %r12b
je 0xada9
leaq -0x58(%rbp), %rsi
movb $0x28, (%rsi)
movq %rbx, %rdi
callq 0x6694
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xade3
movq %rbx, %rax
addq $0x8, %rax
movb %r12b, (%rsi)
jmp 0xadd5
testb %r13b, %r13b
je 0xade9
leaq -0x58(%rbp), %rsi
movb $0x29, (%rsi)
movq %rbx, %rdi
callq 0x6694
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xae52
movq %rbx, %rax
addq $0x8, %rax
movb %r13b, (%rsi)
incq (%rax)
xorl %r14d, %r14d
xorl %r15d, %r15d
jmp 0xae64
leaq -0x34(%rbp), %rdx
jmp 0xae56
testb %al, %al
je 0xaeb3
xorl %r14d, %r14d
movq 0xa1dd(%rip), %r12      # 0x14fd8
leaq 0x6676(%rip), %rsi      # 0x11478
movl $0x24, %edx
xorl %r15d, %r15d
movq %r12, %rdi
callq 0x2210
movq (%r12), %rax
addq -0x18(%rax), %r12
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %r12, %rdi
movl $0xa, %esi
callq 0x21b0
xorl %r14d, %r14d
movsbl %al, %esi
movq 0xa19e(%rip), %rdi      # 0x14fd8
xorl %r15d, %r15d
callq 0x2040
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %rax, %rdi
callq 0x2130
jmp 0xae64
leaq -0x33(%rbp), %rdx
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0x67cc
movq $-0x40, %r12
leaq -0x70(%rbp), %r13
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0xae84
movq (%r13), %rsi
incq %rsi
callq 0x21d0
addq $-0x20, %r13
addq $0x20, %r12
jne 0xae6f
testq %r15, %r15
je 0xaea1
subq %r15, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x21d0
movq %rbx, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6296(%rip), %rsi      # 0x11150
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xafb5
leaq 0x6263(%rip), %rsi      # 0x11138
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xafb5
leaq 0x6233(%rip), %rsi      # 0x11123
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xaff9
leaq 0x6200(%rip), %rsi      # 0x1110b
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xaff9
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x1, %esi
callq 0x4d20
movl %eax, %r12d
movb %al, -0x32(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x2, %esi
callq 0x4d20
movb %al, -0x31(%rbp)
testb %r12b, %r12b
je 0xb03d
leaq -0x58(%rbp), %rsi
movb $-0x80, (%rsi)
movq %rbx, %rdi
callq 0x6694
xorl %r14d, %r14d
leaq -0x32(%rbp), %rsi
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0x65d4
leaq -0x58(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x1, %edx
movl -0x30(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r15
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0xae64
leaq -0x58(%rbp), %rsi
movb $0x2d, (%rsi)
movq %rbx, %rdi
callq 0x6694
leaq -0x58(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x2, %edx
movl -0x30(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r15
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0xae64
leaq -0x58(%rbp), %rsi
movb $0x2c, (%rsi)
movq %rbx, %rdi
callq 0x6694
leaq -0x58(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x1, %edx
movl -0x30(%rbp), %ecx
callq 0x48ee
movq -0x58(%rbp), %r15
movq -0x50(%rbp), %rcx
movq -0x48(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x68c6
jmp 0xae64
testb %al, %al
je 0xadd8
xorl %r14d, %r14d
xorl %r15d, %r15d
leaq -0x80(%rbp), %rdi
movl -0x30(%rbp), %esi
callq 0x45f9
cmpq $0x80, %rax
jl 0xb0b1
leaq -0x58(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x2, %edx
movl -0x30(%rbp), %ecx
callq 0x48ee
leaq -0x58(%rbp), %rsi
movq (%rsi), %r15
movq 0x8(%rsi), %r12
movq 0x10(%rsi), %r14
movb $-0x7f, (%rsi)
movq %rbx, %rdi
callq 0x6694
leaq -0x31(%rbp), %rsi
movq %rbx, %rdi
callq 0x65d4
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x68c6
jmp 0xae64
leaq -0x58(%rbp), %rdi
leaq -0x80(%rbp), %rsi
movl $0x1, %edx
movl -0x30(%rbp), %ecx
callq 0x48ee
leaq -0x58(%rbp), %rsi
movq (%rsi), %r15
movq 0x8(%rsi), %r12
movq 0x10(%rsi), %r14
movb $-0x7d, (%rsi)
movq %rbx, %rdi
callq 0x6694
leaq -0x31(%rbp), %rsi
movq %rbx, %rdi
callq 0x65d4
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x68c6
jmp 0xae64
jmp 0xb133
jmp 0xb133
jmp 0xb133
jmp 0xb133
jmp 0xb127
jmp 0xb127
jmp 0xb133
jmp 0xb127
jmp 0xb127
jmp 0xb133
jmp 0xb127
jmp 0xb127
jmp 0xb133
jmp 0xb127
jmp 0xb127
jmp 0xb127
jmp 0xb127
jmp 0xb127
movq %rax, -0x30(%rbp)
xorl %r14d, %r14d
xorl %r15d, %r15d
jmp 0xb137
movq %rax, -0x30(%rbp)
movq $-0x40, %r13
leaq -0x70(%rbp), %r12
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0xb158
movq (%r12), %rsi
incq %rsi
callq 0x21d0
addq $-0x20, %r12
addq $0x20, %r13
jne 0xb142
testq %r15, %r15
je 0xb175
subq %r15, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x21d0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0xb189
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21d0
movq -0x30(%rbp), %rdi
callq 0x2300