// File: /workspace/github_cpp_makefile_star2_O1/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, %r12d
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 0xae8a
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x3b1c
leaq -0xa0(%rbp), %rdi
leaq -0x60(%rbp), %r15
movq %r15, %rsi
callq 0x2230
movq (%r15), %rdi
leaq -0x50(%rbp), %r15
cmpq %r15, %rdi
je 0xaee5
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x21d0
movq %r14, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x2240
leal 0x1(%rax), %edx
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x3b1c
leaq -0x80(%rbp), %r13
leaq -0x60(%rbp), %r14
movq %r13, %rdi
movq %r14, %rsi
callq 0x2230
movq (%r14), %rdi
cmpq %r15, %rdi
je 0xaf2a
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x21d0
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x1, %esi
callq 0x3e40
movb %al, -0x2a(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x2, %esi
callq 0x3e40
movb %al, -0x29(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x3, %esi
callq 0x3e40
cmpb $0x0, -0x2a(%rbp)
je 0xafa0
leaq -0x60(%rbp), %rsi
movb $0x28, (%rsi)
movq %rbx, %rdi
callq 0x67f0
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xafdd
movq %rbx, %rax
addq $0x8, %rax
movb -0x2a(%rbp), %cl
jmp 0xafcd
cmpb $0x0, -0x29(%rbp)
je 0xafe3
leaq -0x60(%rbp), %rsi
movb $0x29, (%rsi)
movq %rbx, %rdi
callq 0x67f0
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0xb04c
movq %rbx, %rax
addq $0x8, %rax
movb -0x29(%rbp), %cl
movb %cl, (%rsi)
incq (%rax)
xorl %r14d, %r14d
xorl %r15d, %r15d
jmp 0xb05e
leaq -0x2a(%rbp), %rdx
jmp 0xb050
testb %al, %al
je 0xb0ad
xorl %r14d, %r14d
movq 0x9fe3(%rip), %r12      # 0x14fd8
leaq 0x647c(%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 0x9fa4(%rip), %rdi      # 0x14fd8
xorl %r15d, %r15d
callq 0x2040
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %rax, %rdi
callq 0x2130
jmp 0xb05e
leaq -0x29(%rbp), %rdx
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0x6920
movq $-0x40, %r12
leaq -0x70(%rbp), %r13
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0xb07e
movq (%r13), %rsi
incq %rsi
callq 0x21d0
addq $-0x20, %r13
addq $0x20, %r12
jne 0xb069
testq %r15, %r15
je 0xb09b
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 0x609c(%rip), %rsi      # 0x11150
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xb1ac
leaq 0x6069(%rip), %rsi      # 0x11138
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xb1ac
leaq 0x6039(%rip), %rsi      # 0x11123
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xb1ef
leaq 0x6006(%rip), %rsi      # 0x1110b
leaq -0xa0(%rbp), %rdi
callq 0x20a0
testl %eax, %eax
je 0xb1ef
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x1, %esi
callq 0x4d31
movb %al, -0x2c(%rbp)
xorl %r14d, %r14d
leaq -0xa0(%rbp), %rdi
xorl %r15d, %r15d
movl $0x2, %esi
callq 0x4d31
movb %al, -0x2b(%rbp)
cmpb $0x0, -0x2c(%rbp)
je 0xb232
leaq -0x60(%rbp), %rsi
movb $-0x80, (%rsi)
movq %rbx, %rdi
callq 0x67f0
xorl %r14d, %r14d
leaq -0x2c(%rbp), %rsi
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0x6734
leaq -0x60(%rbp), %rdi
movq %r13, %rsi
movl $0x1, %edx
movl %r12d, %ecx
callq 0x48ff
movq -0x60(%rbp), %r15
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x6a1a
jmp 0xb05e
leaq -0x60(%rbp), %rsi
movb $0x2d, (%rsi)
movq %rbx, %rdi
callq 0x67f0
leaq -0x60(%rbp), %rdi
movq %r13, %rsi
movl $0x2, %edx
movl %r12d, %ecx
callq 0x48ff
movq -0x60(%rbp), %r15
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x6a1a
jmp 0xb05e
leaq -0x60(%rbp), %rsi
movb $0x2c, (%rsi)
movq %rbx, %rdi
callq 0x67f0
leaq -0x60(%rbp), %rdi
movq %r13, %rsi
movl $0x1, %edx
movl %r12d, %ecx
callq 0x48ff
movq -0x60(%rbp), %r15
movq -0x58(%rbp), %rcx
movq -0x50(%rbp), %r14
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
callq 0x6a1a
jmp 0xb05e
testb %al, %al
je 0xafd2
xorl %r14d, %r14d
xorl %r15d, %r15d
movq %r13, %rdi
movl %r12d, %esi
callq 0x460a
cmpq $0x80, %rax
jl 0xb2a4
leaq -0x60(%rbp), %rdi
movq %r13, %rsi
movl $0x2, %edx
movl %r12d, %ecx
callq 0x48ff
leaq -0x60(%rbp), %rsi
movq (%rsi), %r15
movq 0x8(%rsi), %r12
movq 0x10(%rsi), %r14
movb $-0x7f, (%rsi)
movq %rbx, %rdi
callq 0x67f0
leaq -0x2b(%rbp), %rsi
movq %rbx, %rdi
callq 0x6734
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x6a1a
jmp 0xb05e
leaq -0x60(%rbp), %rdi
movq %r13, %rsi
movl $0x1, %edx
movl %r12d, %ecx
callq 0x48ff
leaq -0x60(%rbp), %rsi
movq (%rsi), %r15
movq 0x8(%rsi), %r12
movq 0x10(%rsi), %r14
movb $-0x7d, (%rsi)
movq %rbx, %rdi
callq 0x67f0
leaq -0x2b(%rbp), %rsi
movq %rbx, %rdi
callq 0x6734
movq 0x8(%rbx), %rsi
movq %rbx, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x6a1a
jmp 0xb05e
jmp 0xb325
jmp 0xb325
jmp 0xb325
jmp 0xb325
jmp 0xb319
jmp 0xb319
jmp 0xb325
jmp 0xb319
jmp 0xb319
jmp 0xb325
jmp 0xb319
jmp 0xb319
jmp 0xb325
jmp 0xb319
jmp 0xb319
jmp 0xb319
jmp 0xb319
jmp 0xb319
movq %rax, -0x38(%rbp)
xorl %r14d, %r14d
xorl %r15d, %r15d
jmp 0xb329
movq %rax, -0x38(%rbp)
movq $-0x40, %r13
leaq -0x70(%rbp), %r12
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0xb34a
movq (%r12), %rsi
incq %rsi
callq 0x21d0
addq $-0x20, %r12
addq $0x20, %r13
jne 0xb334
testq %r15, %r15
je 0xb367
subq %r15, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x21d0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0xb37b
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x21d0
movq -0x38(%rbp), %rdi
callq 0x2300