// File: /workspace/github_cpp_makefile_star2_O2/lindorx[P]train/main.cpp
// Function: CompileCode()
void CompileCode(void)
{
	using namespace std;
	ifstream fin(fin_src);
	if (!fin.is_open()){
		cout << "Դ�ļ�����ʧ��!" << endl;
		return;
	}
	string Line;//����һ���ı�
	string CodeStr;//����ָ���ַ���
	vector<unsigned char>d;
	int i = 0;//line���ַ���λ��
	while (getline(fin, Line)) {
		cout << Line_num << "\t" << Line << endl;//�������ڴ������ı���
		//��2��while�����ã����˵��ı��п�ͷ�Ŀո���������ע�ͣ����е��޹��ַ�����֤������
		//���������ı���֮���Բ�ʹ��while(?)i++;��Ϊ�˱�֤��ȡ������֮����ָ������������
		while (i < (int)Line.size() && Line[i] != '\n' && Line[i] != '\0' && Line[i] != ';') {
			//�����ո���TAB
			if (Line[i] == 0x20 || Line[i] == '\t' || Line[i] == ':' || Line[i] == ',') {
				i++; continue;
			}
			//�ж��Ƿ��������ţ���������û��ð�š�������
			CodeStr = CutStrCode(Line, i);
			i += CodeStr.size();
			if (is_Title) {
				t.str = CodeStr;
				t.num = Number;
				t.s = FileSize;
				Title.push_back(t);
				is_Title = false;
			}
			else {//����ָ���ж�
				if (MOV) {
					d = MOVE(Line, i, Number);
					if (d.size() > 1 && d.size() < 4) {
						Data_put(d);
					}
					else if (d.size() > 3) {
						//�ж�Ϊ����,���������ַ���
						t.str = CutStr(Line, Line.find(',') + 1);
						t.s = FileSize;
						t.num = Number;
						Mov_place.push_back(t);
						//��������
						Data.insert(Data.end(), d.begin(), d.end() - (int)d[3]);
						FileSize += (d.size() - (int)d[3]);
						Number += (d.size() - (int)d[3]);
					}
				}
				else if (DB) {
					Data_put(DataBWD(Line, i, 1, Number));

				}
				else if (DW) {
					Data_put(DataBWD(Line, i, 2, Number));
				}
				else if (DD) {
					Data_put(DataBWD(Line, i, 4, Number));
				}
				else if (ADD) {
					Data_put(Additive(Line, i, Number));
				}
				else if (SUB) {
					Data_put(Subtraction(Line, i, Number));
				}
				else if (JMP) {
					d = Jemp();
					//����������jp����
					t.str = CutStr(Line, i);
					t.s = FileSize;
					t.num = Number;
					Data_put(d);
					jp_p.push_back(t);
				}
				else if (JE || JZ) {
					d = Je();
					//����������jp����
					t.str = CutStr(Line, i);
					t.s = FileSize;
					t.num = Number;
					Data_put(d);
					je_p.push_back(t);
				}
				else if (JB) {
					d = Jb();
					//����������jp����
					t.str = CutStr(Line, i);
					t.s = FileSize;
					t.num = Number;
					Data_put(d);
					jb_p.push_back(t);
				}
				else if (JBE) {
					d = Jbe();
					//����������jp����
					t.str = CutStr(Line, i);
					t.s = FileSize;
					t.num = Number;
					Data_put(d);
					jbe_p.push_back(t);
				}
				else if (SHR) {
					Data_put(Shl_Shr(Line, i, Number, 0xe8));
				}
				else if (SHR) {
					Data_put(Shl_Shr(Line, i, Number, 0xe0));
				}
				else if (PUSH) {
					d = Push(Line, i, Number);
					if ((int)d.size() > 0) {
						Data_put(d);
					}
					else {
						//˵��Ϊ���ţ�������ֵ����push_p����
						t.str = CutStr(Line, i);
						t.num = Number;
						t.s = FileSize;
						push_p.push_back(t);
						//д�������ֽ�0x6a��0x00
						Data.push_back(0x6a);
						Data.push_back(0x00);
						Number += 2;
						FileSize += 2;
					}
				}
				else if (POP) {
					Data_put(Pop(Line, i));
				}
				else if (CMP) {
					Data_put(Cmp(Line, i, Number));
				}//�˷�ָ��
				else if (MUL) {
					Data_put(Mul(Line, i));
				}
				else if (OR) {
					Data_put(Logic(Line, i, Number, 'o'));
				}
				else if (XOR) {
					Data_put(Logic(Line, i, Number, 'x'));
				}
				else if (AND) {
					Data_put(Logic(Line, i, Number, 'a'));
				}
				else if (NOT) {
					Data_put(Not(Line, i));
				}
				else if (RESB) {
					DataChar(ReserveByte(Line, i, FileSize), '\0');
				}
				else if (INT) {
					Data_put(Int(Line, i, Number));
				}
				else if (ORG) {
					Number = Organ(Line, i, Number);
				}
				else if (HLT) {
					Data.push_back(0xf4);
					FileSize++;
					Number++;
				}
				else if (IN) {
					Data_put(In_Out(Line, i, Number, 'i'));
				}
				else if (OUT) {
					Data_put(In_Out(Line, i, Number, 'o'));
				}
				else {
					cout << "����ָ���޷�ʶ�������������룡error-" << Line_num << endl << endl;
				}
			}
			break;
		}
		i = 0;
		Line_num++;
	}
	//ѭ���������ر��ļ�
	fin.close();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4a8, %rsp            # imm = 0x4A8
leaq 0x72cd(%rip), %rsi      # 0x12018
leaq -0x4d0(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x22a0
leaq -0x458(%rbp), %rdi
callq 0x2070
testb %al, %al
je 0xbd54
leaq -0x90(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
leaq -0x38(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
xorl %edx, %edx
movb %dl, (%rax)
movb %dl, (%rcx)
xorps %xmm0, %xmm0
leaq -0x60(%rbp), %rax
andq $0x0, 0x10(%rax)
movaps %xmm0, (%rax)
leaq -0xa0(%rbp), %r15
movabsq $0x400100100000200, %r13 # imm = 0x400100100000200
leaq -0x4d0(%rbp), %rdi
movq %r15, %rsi
callq 0x2050
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xbd71
movl 0x7224(%rip), %esi      # 0x11ffc
movq 0x61f9(%rip), %rdi      # 0x10fd8
callq 0x22e0
movq %rax, %rdi
leaq 0x283f(%rip), %rsi      # 0xd62d
callq 0x21b0
movq %rax, %rdi
movq %r15, %rsi
callq 0x2190
movq %rax, %rdi
callq 0x2100
movl -0x98(%rbp), %eax
movq -0xa0(%rbp), %rcx
testl %eax, %eax
movl $0x0, %edx
cmovlel %edx, %eax
xorl %ebx, %ebx
cmpq %rbx, %rax
je 0xae49
movzbl (%rcx,%rbx), %edx
cmpq $0x3b, %rdx
ja 0xae54
btq %rdx, %r13
jae 0xae39
incq %rbx
jmp 0xae1f
movabsq $0x800000000000401, %rax # imm = 0x800000000000401
btq %rdx, %rax
jae 0xae54
incl 0x71ad(%rip)            # 0x11ffc
jmp 0xadb1
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0xc1fb
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x2220
movq %r14, %rdi
callq 0x2358
cmpb $0x1, 0x72a5(%rip)      # 0x12128
jne 0xaec8
leaq 0x71e4(%rip), %rdi      # 0x12070
movq %r12, %rsi
callq 0x2120
movl 0x715e(%rip), %eax      # 0x11ff8
movl %eax, 0x71f0(%rip)      # 0x12090
movl 0x714e(%rip), %eax      # 0x11ff4
movl %eax, 0x71e8(%rip)      # 0x12094
leaq 0x71a5(%rip), %rdi      # 0x12058
leaq 0x71b6(%rip), %rsi      # 0x12070
callq 0xca74
movb $0x0, 0x7262(%rip)      # 0x12128
jmp 0xae49
addq -0x40(%rbp), %rbx
movq %r12, %rdi
leaq 0x277d(%rip), %rsi      # 0xd653
callq 0x5ad5
testb %al, %al
jne 0xaef2
movq %r12, %rdi
leaq 0x276e(%rip), %rsi      # 0xd657
callq 0x5ad5
testb %al, %al
je 0xaf56
movl 0x7100(%rip), %ecx      # 0x11ff8
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x836e
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq -0x58(%rbp), %rax
subq -0x60(%rbp), %rax
cmpq $0x2, %rax
jb 0xae49
cmpq $0x3, %rax
ja 0xafdd
leaq -0x2c8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x2c8(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
jmp 0xafd0
movq %r12, %rdi
leaq 0x26fb(%rip), %rsi      # 0xd65b
callq 0x5ad5
testb %al, %al
jne 0xafa6
movq %r12, %rdi
leaq 0x26eb(%rip), %rsi      # 0xd65e
callq 0x5ad5
testb %al, %al
jne 0xafa6
movq %r12, %rdi
leaq 0x26db(%rip), %rsi      # 0xd661
callq 0x5ad5
testb %al, %al
jne 0xafa6
movq %r12, %rdi
leaq 0x26cb(%rip), %rsi      # 0xd664
callq 0x5ad5
testb %al, %al
je 0xb087
movl 0x704b(%rip), %r8d      # 0x11ff8
leaq -0x2b0(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x1
popq %rcx
callq 0x8495
leaq -0x2b0(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
movq %rbx, %rdi
callq 0x5be8
jmp 0xae49
movq %r15, %rdi
pushq $0x2c
popq %rsi
xorl %edx, %edx
callq 0x2240
leal 0x1(%rax), %edx
leaq -0x80(%rbp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x35dc
leaq 0x706d(%rip), %r14      # 0x12070
movq %r14, %rdi
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x6fd8(%rip), %eax      # 0x11ff4
movl %eax, 0x7072(%rip)      # 0x12094
movl 0x6fd0(%rip), %eax      # 0x11ff8
movl %eax, 0x7062(%rip)      # 0x12090
leaq 0x7063(%rip), %rdi      # 0x12098
movq %r14, %rsi
callq 0xca74
movq 0x6fc4(%rip), %rsi      # 0x12008
movq -0x60(%rbp), %rdx
movq -0x58(%rbp), %rcx
movzbl 0x3(%rdx), %eax
subq %rax, %rcx
leaq 0x6fa6(%rip), %rdi      # 0x12000
callq 0x5b08
movl -0x58(%rbp), %eax
movq -0x60(%rbp), %rcx
subl %ecx, %eax
movzbl 0x3(%rcx), %edx
movl %eax, %esi
subl %edx, %esi
addl %esi, 0x6f7e(%rip)      # 0x11ff4
movzbl 0x3(%rcx), %ecx
subl %ecx, %eax
addl %eax, 0x6f76(%rip)      # 0x11ff8
jmp 0xae49
movq %r12, %rdi
leaq 0x25d6(%rip), %rsi      # 0xd667
callq 0x5ad5
testb %al, %al
jne 0xb0d3
movq %r12, %rdi
leaq 0x25c6(%rip), %rsi      # 0xd66a
callq 0x5ad5
testb %al, %al
jne 0xb0d3
movq %r12, %rdi
leaq 0x25b6(%rip), %rsi      # 0xd66d
callq 0x5ad5
testb %al, %al
jne 0xb0d3
movq %r12, %rdi
leaq 0x25a6(%rip), %rsi      # 0xd670
callq 0x5ad5
testb %al, %al
je 0xb102
movl 0x6f1e(%rip), %r8d      # 0x11ff8
leaq -0x298(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x2
popq %rcx
callq 0x8495
leaq -0x298(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
jmp 0xafd0
movq %r12, %rdi
leaq 0x256e(%rip), %rsi      # 0xd67a
callq 0x5ad5
testb %al, %al
jne 0xb14e
movq %r12, %rdi
leaq 0x255f(%rip), %rsi      # 0xd67e
callq 0x5ad5
testb %al, %al
jne 0xb14e
movq %r12, %rdi
leaq 0x2541(%rip), %rsi      # 0xd673
callq 0x5ad5
testb %al, %al
jne 0xb14e
movq %r12, %rdi
leaq 0x2531(%rip), %rsi      # 0xd676
callq 0x5ad5
testb %al, %al
je 0xb17d
movl 0x6ea3(%rip), %r8d      # 0x11ff8
leaq -0x280(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x4
popq %rcx
callq 0x8495
leaq -0x280(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
jmp 0xafd0
movq %r12, %rdi
leaq 0x24f2(%rip), %rsi      # 0xd679
callq 0x5ad5
testb %al, %al
jne 0xb1a4
leaq -0x48(%rbp), %rdi
leaq 0x24e2(%rip), %rsi      # 0xd67d
callq 0x5ad5
testb %al, %al
je 0xb1d3
movl 0x6e4e(%rip), %ecx      # 0x11ff8
leaq -0x208(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x8734
leaq -0x208(%rbp), %rdi
callq 0xc2d7
leaq -0x208(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x24a3(%rip), %rsi      # 0xd681
callq 0x5ad5
testb %al, %al
jne 0xb1fb
leaq -0x48(%rbp), %rdi
leaq 0x2493(%rip), %rsi      # 0xd685
callq 0x5ad5
testb %al, %al
je 0xb22a
movl 0x6df7(%rip), %ecx      # 0x11ff8
leaq -0x1f0(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x8b7f
leaq -0x1f0(%rbp), %rdi
callq 0xc2d7
leaq -0x1f0(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x2454(%rip), %rsi      # 0xd689
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x2440(%rip), %rsi      # 0xd68d
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x2430(%rip), %rsi      # 0xd691
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x2420(%rip), %rsi      # 0xd695
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x2410(%rip), %rsi      # 0xd699
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x2400(%rip), %rsi      # 0xd69d
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x23f0(%rip), %rsi      # 0xd6a1
callq 0x5ad5
testb %al, %al
jne 0xb2d2
leaq -0x48(%rbp), %rdi
leaq 0x23e0(%rip), %rsi      # 0xd6a5
callq 0x5ad5
testb %al, %al
je 0xb371
leaq -0x80(%rbp), %rdi
callq 0x8fca
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x35dc
leaq 0x6d6d(%rip), %rdi      # 0x12070
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x6cd7(%rip), %eax      # 0x11ff4
movl %eax, 0x6d71(%rip)      # 0x12094
movl 0x6ccf(%rip), %eax      # 0x11ff8
movl %eax, 0x6d61(%rip)      # 0x12090
leaq -0x268(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x268(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
movq %rbx, %rdi
leaq 0x6d58(%rip), %rbx      # 0x120b0
callq 0x5be8
movq %rbx, %rdi
leaq 0x6d09(%rip), %rsi      # 0x12070
callq 0xca74
jmp 0xae49
leaq -0x48(%rbp), %rdi
leaq 0x232d(%rip), %rsi      # 0xd6a9
callq 0x5ad5
testb %al, %al
jne 0xb3c5
leaq -0x48(%rbp), %rdi
leaq 0x231c(%rip), %rsi      # 0xd6ac
callq 0x5ad5
testb %al, %al
jne 0xb3c5
leaq -0x48(%rbp), %rdi
leaq 0x230b(%rip), %rsi      # 0xd6af
callq 0x5ad5
testb %al, %al
jne 0xb3c5
leaq -0x48(%rbp), %rdi
leaq 0x22fa(%rip), %rsi      # 0xd6b2
callq 0x5ad5
testb %al, %al
je 0xb450
leaq -0x80(%rbp), %rdi
callq 0x8ff2
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x35dc
leaq 0x6c7a(%rip), %rdi      # 0x12070
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x6be4(%rip), %eax      # 0x11ff4
movl %eax, 0x6c7e(%rip)      # 0x12094
movl 0x6bdc(%rip), %eax      # 0x11ff8
movl %eax, 0x6c6e(%rip)      # 0x12090
leaq -0x250(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x250(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
movq %rbx, %rdi
leaq 0x6c95(%rip), %rbx      # 0x120e0
jmp 0xb358
leaq -0x48(%rbp), %rdi
leaq 0x225a(%rip), %rsi      # 0xd6b5
callq 0x5ad5
testb %al, %al
jne 0xb47c
leaq -0x48(%rbp), %rdi
leaq 0x2249(%rip), %rsi      # 0xd6b8
callq 0x5ad5
testb %al, %al
je 0xb507
leaq -0x80(%rbp), %rdi
callq 0x9042
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x35dc
leaq 0x6bc3(%rip), %rdi      # 0x12070
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x6b2d(%rip), %eax      # 0x11ff4
movl %eax, 0x6bc7(%rip)      # 0x12094
movl 0x6b25(%rip), %eax      # 0x11ff8
movl %eax, 0x6bb7(%rip)      # 0x12090
leaq -0x238(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x238(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
movq %rbx, %rdi
leaq 0x6c0e(%rip), %rbx      # 0x12110
jmp 0xb358
leaq -0x48(%rbp), %rdi
leaq 0x21a9(%rip), %rsi      # 0xd6bb
callq 0x5ad5
testb %al, %al
jne 0xb533
leaq -0x48(%rbp), %rdi
leaq 0x2199(%rip), %rsi      # 0xd6bf
callq 0x5ad5
testb %al, %al
je 0xb5be
leaq -0x80(%rbp), %rdi
callq 0x901a
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movq %r14, %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x35dc
leaq 0x6b0c(%rip), %rdi      # 0x12070
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x6a76(%rip), %eax      # 0x11ff4
movl %eax, 0x6b10(%rip)      # 0x12094
movl 0x6a6e(%rip), %eax      # 0x11ff8
movl %eax, 0x6b00(%rip)      # 0x12090
leaq -0x220(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x220(%rbp), %rbx
movq %rbx, %rdi
callq 0xc2d7
movq %rbx, %rdi
leaq 0x6b3f(%rip), %rbx      # 0x120f8
jmp 0xb358
leaq -0x48(%rbp), %rdi
leaq 0x20fa(%rip), %rsi      # 0xd6c3
callq 0x5ad5
testb %al, %al
jne 0xb5e6
leaq -0x48(%rbp), %rdi
leaq 0x20ea(%rip), %rsi      # 0xd6c7
callq 0x5ad5
testb %al, %al
je 0xb61b
movl 0x6a0c(%rip), %ecx      # 0x11ff8
leaq -0x1d8(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
movl $0xe8, %r8d
callq 0x9d06
leaq -0x1d8(%rbp), %rdi
callq 0xc2d7
leaq -0x1d8(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x209d(%rip), %rsi      # 0xd6c3
callq 0x5ad5
testb %al, %al
jne 0xb643
leaq -0x48(%rbp), %rdi
leaq 0x208d(%rip), %rsi      # 0xd6c7
callq 0x5ad5
testb %al, %al
je 0xb678
movl 0x69af(%rip), %ecx      # 0x11ff8
leaq -0x1c0(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
movl $0xe0, %r8d
callq 0x9d06
leaq -0x1c0(%rbp), %rdi
callq 0xc2d7
leaq -0x1c0(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x2048(%rip), %rsi      # 0xd6cb
callq 0x5ad5
testb %al, %al
jne 0xb6a4
leaq -0x48(%rbp), %rdi
leaq 0x2039(%rip), %rsi      # 0xd6d0
callq 0x5ad5
testb %al, %al
je 0xb78c
movl 0x694e(%rip), %ecx      # 0x11ff8
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x906a
leaq -0x60(%rbp), %rdi
movq %r14, %rsi
callq 0x5d96
movq %r14, %rdi
callq 0x5be8
movl -0x58(%rbp), %eax
subl -0x60(%rbp), %eax
testl %eax, %eax
jle 0xb6fe
leaq -0x1a8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xcab0
leaq -0x1a8(%rbp), %rdi
callq 0xc2d7
leaq -0x1a8(%rbp), %rdi
jmp 0xafd3
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x35dc
leaq 0x695d(%rip), %r14      # 0x12070
movq %r14, %rdi
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x2220
movq %rbx, %rdi
callq 0x2358
movl 0x68c8(%rip), %eax      # 0x11ff8
movl %eax, 0x695a(%rip)      # 0x12090
movl 0x68b8(%rip), %eax      # 0x11ff4
movl %eax, 0x6952(%rip)      # 0x12094
leaq 0x697f(%rip), %rdi      # 0x120c8
movq %r14, %rsi
callq 0xca74
movb $0x6a, -0x80(%rbp)
leaq 0x68a4(%rip), %rdi      # 0x12000
leaq -0x80(%rbp), %rsi
callq 0x5c1e
movb $0x0, -0x80(%rbp)
leaq 0x6890(%rip), %rdi      # 0x12000
leaq -0x80(%rbp), %rsi
callq 0x5c1e
addl $0x2, 0x6878(%rip)      # 0x11ff8
addl $0x2, 0x686d(%rip)      # 0x11ff4
jmp 0xae49
leaq -0x48(%rbp), %rdi
leaq 0x1f3e(%rip), %rsi      # 0xd6d5
callq 0x5ad5
testb %al, %al
jne 0xb7b4
leaq -0x48(%rbp), %rdi
leaq 0x1f2e(%rip), %rsi      # 0xd6d9
callq 0x5ad5
testb %al, %al
je 0xb7dd
leaq -0x190(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x94c0
leaq -0x190(%rbp), %rdi
callq 0xc2d7
leaq -0x190(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1ef5(%rip), %rsi      # 0xd6dd
callq 0x5ad5
testb %al, %al
jne 0xb805
leaq -0x48(%rbp), %rdi
leaq 0x1ee5(%rip), %rsi      # 0xd6e1
callq 0x5ad5
testb %al, %al
je 0xb834
movl 0x67ed(%rip), %ecx      # 0x11ff8
leaq -0x178(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x9944
leaq -0x178(%rbp), %rdi
callq 0xc2d7
leaq -0x178(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1ea6(%rip), %rsi      # 0xd6e5
callq 0x5ad5
testb %al, %al
jne 0xb85c
leaq -0x48(%rbp), %rdi
leaq 0x1e96(%rip), %rsi      # 0xd6e9
callq 0x5ad5
testb %al, %al
je 0xb885
leaq -0x160(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0xa4f1
leaq -0x160(%rbp), %rdi
callq 0xc2d7
leaq -0x160(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1e5e(%rip), %rsi      # 0xd6ee
callq 0x5ad5
testb %al, %al
jne 0xb8ad
leaq -0x48(%rbp), %rdi
leaq 0x1e4e(%rip), %rsi      # 0xd6f2
callq 0x5ad5
testb %al, %al
je 0xb8e0
movl 0x6745(%rip), %ecx      # 0x11ff8
leaq -0x148(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x6f
popq %r8
callq 0xa09b
leaq -0x148(%rbp), %rdi
callq 0xc2d7
leaq -0x148(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1e02(%rip), %rsi      # 0xd6ed
callq 0x5ad5
testb %al, %al
jne 0xb908
leaq -0x48(%rbp), %rdi
leaq 0x1df2(%rip), %rsi      # 0xd6f1
callq 0x5ad5
testb %al, %al
je 0xb93b
movl 0x66ea(%rip), %ecx      # 0x11ff8
leaq -0x130(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x78
popq %r8
callq 0xa09b
leaq -0x130(%rbp), %rdi
callq 0xc2d7
leaq -0x130(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1daf(%rip), %rsi      # 0xd6f5
callq 0x5ad5
testb %al, %al
jne 0xb963
leaq -0x48(%rbp), %rdi
leaq 0x1d9f(%rip), %rsi      # 0xd6f9
callq 0x5ad5
testb %al, %al
je 0xb996
movl 0x668f(%rip), %ecx      # 0x11ff8
leaq -0x118(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x61
popq %r8
callq 0xa09b
leaq -0x118(%rbp), %rdi
callq 0xc2d7
leaq -0x118(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1d5c(%rip), %rsi      # 0xd6fd
callq 0x5ad5
testb %al, %al
jne 0xb9be
leaq -0x48(%rbp), %rdi
leaq 0x1d4c(%rip), %rsi      # 0xd701
callq 0x5ad5
testb %al, %al
je 0xb9e7
leaq -0x100(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0xa3cb
leaq -0x100(%rbp), %rdi
callq 0xc2d7
leaq -0x100(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1d13(%rip), %rsi      # 0xd705
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1d00(%rip), %rsi      # 0xd70a
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1ced(%rip), %rsi      # 0xd70f
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1cda(%rip), %rsi      # 0xd714
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1cc7(%rip), %rsi      # 0xd719
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1ca5(%rip), %rsi      # 0xd70f
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c9c(%rip), %rsi      # 0xd71e
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c89(%rip), %rsi      # 0xd723
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c76(%rip), %rsi      # 0xd728
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c63(%rip), %rsi      # 0xd72d
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c50(%rip), %rsi      # 0xd732
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c41(%rip), %rsi      # 0xd737
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c32(%rip), %rsi      # 0xd73c
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c23(%rip), %rsi      # 0xd741
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c14(%rip), %rsi      # 0xd746
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1c05(%rip), %rsi      # 0xd74b
callq 0x5ad5
testb %al, %al
jne 0xbb63
leaq -0x48(%rbp), %rdi
leaq 0x1bf6(%rip), %rsi      # 0xd750
callq 0x5ad5
testb %al, %al
je 0xbb81
movl 0x648b(%rip), %edx      # 0x11ff4
movq %r15, %rdi
movl %ebx, %esi
callq 0x86e1
movl %eax, %edi
xorl %esi, %esi
callq 0xc312
jmp 0xae49
leaq -0x48(%rbp), %rdi
leaq 0x1bc9(%rip), %rsi      # 0xd755
callq 0x5ad5
testb %al, %al
jne 0xbba9
leaq -0x48(%rbp), %rdi
leaq 0x1bb9(%rip), %rsi      # 0xd759
callq 0x5ad5
testb %al, %al
je 0xbbd8
movl 0x6449(%rip), %ecx      # 0x11ff8
leaq -0xe8(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
callq 0x9870
leaq -0xe8(%rbp), %rdi
callq 0xc2d7
leaq -0xe8(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1b7a(%rip), %rsi      # 0xd75d
callq 0x5ad5
testb %al, %al
jne 0xbc00
leaq -0x48(%rbp), %rdi
leaq 0x1b6a(%rip), %rsi      # 0xd761
callq 0x5ad5
testb %al, %al
je 0xbc1b
movl 0x63f2(%rip), %edx      # 0x11ff8
movq %r15, %rdi
movl %ebx, %esi
callq 0x868d
movl %eax, 0x63e2(%rip)      # 0x11ff8
jmp 0xae49
leaq -0x48(%rbp), %rdi
leaq 0x1b3f(%rip), %rsi      # 0xd765
callq 0x5ad5
testb %al, %al
jne 0xbc43
leaq -0x48(%rbp), %rdi
leaq 0x1b2f(%rip), %rsi      # 0xd769
callq 0x5ad5
testb %al, %al
je 0xbc68
movb $-0xc, -0x80(%rbp)
leaq 0x63b2(%rip), %rdi      # 0x12000
leaq -0x80(%rbp), %rsi
callq 0x5c1e
incl 0x6397(%rip)            # 0x11ff4
incl 0x6395(%rip)            # 0x11ff8
jmp 0xae49
leaq -0x48(%rbp), %rdi
leaq 0x1afa(%rip), %rsi      # 0xd76d
callq 0x5ad5
testb %al, %al
jne 0xbc90
leaq -0x48(%rbp), %rdi
leaq 0x1999(%rip), %rsi      # 0xd620
callq 0x5ad5
testb %al, %al
je 0xbcc3
movl 0x6362(%rip), %ecx      # 0x11ff8
leaq -0xd0(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x69
popq %r8
callq 0x9eb7
leaq -0xd0(%rbp), %rdi
callq 0xc2d7
leaq -0xd0(%rbp), %rdi
jmp 0xafd3
leaq -0x48(%rbp), %rdi
leaq 0x1aa2(%rip), %rsi      # 0xd770
callq 0x5ad5
testb %al, %al
jne 0xbceb
leaq -0x48(%rbp), %rdi
leaq 0x1a92(%rip), %rsi      # 0xd774
callq 0x5ad5
testb %al, %al
je 0xbd1e
movl 0x6307(%rip), %ecx      # 0x11ff8
leaq -0xb8(%rbp), %rdi
movq %r15, %rsi
movl %ebx, %edx
pushq $0x6f
popq %r8
callq 0x9eb7
leaq -0xb8(%rbp), %rdi
callq 0xc2d7
leaq -0xb8(%rbp), %rdi
jmp 0xafd3
movq 0x52b3(%rip), %rdi      # 0x10fd8
leaq 0x1a4c(%rip), %rsi      # 0xd778
callq 0x21b0
movl 0x62c5(%rip), %esi      # 0x11ffc
movq %rax, %rdi
callq 0x22e0
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
callq 0x2100
jmp 0xae49
movq 0x527d(%rip), %rdi      # 0x10fd8
leaq 0x18e1(%rip), %rsi      # 0xd643
callq 0x21b0
movq %rax, %rdi
callq 0x2100
jmp 0xbd9b
leaq -0x4d0(%rbp), %rdi
callq 0x2060
leaq -0x60(%rbp), %rdi
callq 0x5be8
leaq -0x48(%rbp), %rdi
callq 0x2358
leaq -0xa0(%rbp), %rdi
callq 0x2358
leaq -0x4d0(%rbp), %rdi
callq 0x2090
addq $0x4a8, %rsp            # imm = 0x4A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x250(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
leaq -0x160(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x178(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x190(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
jmp 0xbf40
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x100(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x1c0(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x1d8(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x220(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
leaq -0x268(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x1f0(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x208(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x280(%rbp), %rdi
jmp 0xbf2e
movq %rax, %rbx
leaq -0x298(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
movq %rax, %rbx
leaq -0x2c8(%rbp), %rdi
jmp 0xbf2e
jmp 0xbf40
movq %rax, %rbx
leaq -0x2b0(%rbp), %rdi
callq 0x5be8
jmp 0xbf43
jmp 0xbf40
jmp 0xbf40
movq %rax, %rbx
jmp 0xbf61
jmp 0xbf40
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0x5be8
leaq -0x48(%rbp), %rdi
callq 0x2358
leaq -0xa0(%rbp), %rdi
callq 0x2358
leaq -0x4d0(%rbp), %rdi
callq 0x2090
movq %rbx, %rdi
callq 0x2300