// File: /workspace/github_cpp_makefile_star2_O3/ksherlock[P]wdc-utils/link.cpp
// Function: expr_error(bool, expression const&, char const*)
inline void expr_error(bool fatal, const expression &e, const char *msg) {
	warnx("%s:%04x %s", sections[e.section].name.c_str(), e.offset, msg);

	// pretty-print the expression...
	bool underflow = false;

	struct pair { std::string name; int precedence = 0; };

	std::vector<pair> stack;

	int p;
	for (auto &x : e.stack) {
		auto tag = x.tag;
		switch(tag) {

			case OP_VAL: {
				p = 0;
				char buffer[6];
				snprintf(buffer, sizeof(buffer), "$%02x", x.value);
				stack.emplace_back(pair{buffer, p});
				break;
			}
			case OP_SYM: {
				p = 0;
				stack.emplace_back(pair{symbols[x.section].name, p});
				break;
			}
			case OP_LOC: {
				p = 0;
				std::string tmp = sections[x.section].name;
				if (x.value) {
					char buffer[6];
					snprintf(buffer, sizeof(buffer), "$%02x", x.value);
					tmp.push_back('+');
					tmp.append(buffer);
					p = 3;
				}
				stack.emplace_back(pair{tmp, p});
				break;
			}

			case OP_NOT:
			case OP_NEG:
			case OP_FLP: {
				static const std::string ops[] = {
					".NOT.", "-", "\\"
				};
				p = 0;
				if (stack.empty()) {
					underflow = true;
				} else {
					auto &back = stack.back();
					if (p < back.precedence) {
						back.name = parenthesize(back.name);
					}
					back.name = ops[tag - OP_UNA] + back.name;
					back.precedence = p;
				}
				break;
			}

			case OP_EXP:
			case OP_MUL:
			case OP_DIV:
			case OP_MOD:
			case OP_SHR:
			case OP_SHL:
			case OP_ADD:
			case OP_SUB:
			case OP_AND:
			case OP_OR:
			case OP_XOR:
			case OP_EQ:
			case OP_GT:
			case OP_LT:
			case OP_UGT:
			case OP_ULT: {
				static const pair ops[] = {
					{ "**", 1 },
					{ "*", 2 },
					{ "/", 2 },
					{ ".MOD.", 2 },
					{ ">>", 2 },
					{ "<<", 2 },
					{ "+", 3 },
					{ "-", 3 },
					{ "&", 4 },
					{ "|", 5 },
					{ "^", 5 },
					{ "=", 6 },
					{ ">",  6},
					{ "<",  6},
					{ ".UGT.",  6},
					{ ".ULT.", 6 }
				};


				p = ops[tag - OP_BIN].precedence;
				if (stack.size() < 2) {
					underflow = true;
				} else {
					pair b = std::move(stack.back());
					stack.pop_back();
					pair &a = stack.back();

					if (p < b.precedence) b.name = parenthesize(b.name);
					if (p < a.precedence) a.name = parenthesize(a.name);

					a.name += ops[tag - OP_BIN].name + b.name;
					a.precedence = p;
				}
				break;
			}
			default:
				fprintf(stderr, "Unrecognized expression op %02x\n", tag);
				break;
		}

	}
	if (stack.size() == 1) {
		fprintf(stderr, "Expression: %s\n", stack.front().name.c_str());
	} else if (stack.empty() || underflow) {
		fprintf(stderr, "Expression underflow error.\n");
		fatal = true;
	} else {
		fprintf(stderr, "Expression overflow error.\n");
		fatal = true;
	}

	if (fatal) flags.errors++;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rdx, %rcx
movq %rsi, %r14
movl %edi, %ebp
movl (%rsi), %eax
movl 0x4(%rsi), %edx
movq 0xf242(%rip), %rsi      # 0x15300
imulq $0x68, %rax, %rax
movq (%rsi,%rax), %rsi
leaq 0x96ae(%rip), %rdi      # 0xf77b
xorl %r12d, %r12d
xorl %eax, %eax
callq 0x2290
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
movq 0x10(%r14), %rbx
movq 0x18(%r14), %r13
cmpq %r13, %rbx
jne 0x60fe
xorl %eax, %eax
xorl %ecx, %ecx
jmp 0x6abf
movl %ebp, 0x84(%rsp)
leaq 0xf48c(%rip), %rax      # 0x15598
movq %rax, 0x10(%rsp)
leaq 0x18(%rsp), %r14
leaq 0xf403(%rip), %rax      # 0x15520
movq %rax, 0x88(%rsp)
xorl %r12d, %r12d
movq %r13, 0x78(%rsp)
movl %r12d, %edi
movl (%rbx), %ebp
leal -0x14(%rbp), %r15d
cmpl $0x10, %r15d
jae 0x61b8
movb 0xf6ae(%rip), %al       # 0x157f0
testb %al, %al
je 0x6689
movq 0x68(%rsp), %rax
movq %rax, %rcx
subq 0x60(%rsp), %rcx
sarq $0x3, %rcx
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rdx, %rcx
movb $0x1, %r12b
cmpq $0x2, %rcx
jb 0x6655
leaq (%r15,%r15,4), %r12
leaq 0xf3ef(%rip), %rcx      # 0x15570
movl 0x20(%rcx,%r12,8), %ebp
leaq 0x28(%rsp), %rsi
movq %rsi, 0x18(%rsp)
movq -0x28(%rax), %rdx
leaq -0x18(%rax), %rcx
cmpq %rcx, %rdx
movb %dil, 0xf(%rsp)
je 0x62ca
movq %rdx, 0x18(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x28(%rsp)
jmp 0x62d0
leal -0x1(%rbp), %eax
cmpl $0xb, %eax
ja 0x6667
leaq 0x8eb1(%rip), %rcx      # 0xf07c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb 0xf386(%rip), %al       # 0x15560
testb %al, %al
je 0x69ee
movq 0x68(%rsp), %r12
cmpq %r12, 0x60(%rsp)
je 0x64a6
movb %dil, 0xf(%rsp)
leaq -0x28(%r12), %r15
cmpl $0x0, -0x8(%r12)
jle 0x626f
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
movb $0x0, 0x28(%rsp)
movq %r14, %rdi
movl $0x28, %esi
callq 0x2220
movq -0x28(%r12), %rsi
movq -0x20(%r12), %rdx
movq %r14, %rdi
callq 0x20e0
movq %r14, %rdi
movl $0x29, %esi
callq 0x2220
movq %r15, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x626f
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
addl $-0xa, %ebp
shlq $0x5, %rbp
leaq 0xf283(%rip), %rax      # 0x15500
addq %rax, %rbp
movq %r14, %rdi
movq %rbp, %rsi
movq %r15, %rdx
callq 0x70ea
movq %r15, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x62b5
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movl $0x0, -0x8(%r12)
movb 0xf(%rsp), %al
movl %eax, %r12d
jmp 0x6655
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq -0x20(%rax), %rdx
movq %rdx, 0x20(%rsp)
movq %rcx, -0x28(%rax)
movq $0x0, -0x20(%rax)
movb $0x0, -0x18(%rax)
movl -0x8(%rax), %eax
movl %eax, 0x38(%rsp)
movq 0x68(%rsp), %rcx
leaq -0x28(%rcx), %r13
movq %r13, 0x68(%rsp)
movq -0x28(%rcx), %rdi
addq $-0x18, %rcx
cmpq %rcx, %rdi
leaq 0x40(%rsp), %r15
je 0x6324
movq (%rcx), %rsi
incq %rsi
callq 0x2260
movq 0x68(%rsp), %r13
movl 0x38(%rsp), %eax
cmpl %eax, %ebp
jge 0x6393
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movb $0x0, 0x50(%rsp)
movq %r15, %rdi
movl $0x28, %esi
callq 0x2220
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
movq %r15, %rdi
callq 0x20e0
movq %r15, %rdi
movl $0x29, %esi
callq 0x2220
movq %r14, %rdi
movq %r15, %rsi
callq 0x22e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6393
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
leaq -0x28(%r13), %r15
cmpl -0x8(%r13), %ebp
jge 0x642f
movq %rbx, 0x90(%rsp)
movl %ebp, %ebx
movq %r12, %rbp
movq %r14, %r12
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movb $0x0, 0x50(%rsp)
leaq 0x40(%rsp), %r14
movq %r14, %rdi
movl $0x28, %esi
callq 0x2220
movq -0x28(%r13), %rsi
movq -0x20(%r13), %rdx
movq %r14, %rdi
callq 0x20e0
movq %r14, %rdi
movl $0x29, %esi
callq 0x2220
movq %r15, %rdi
movq %r14, %rsi
callq 0x22e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x641f
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movq %r12, %r14
movq %rbp, %r12
movl %ebx, %ebp
movq 0x90(%rsp), %rbx
leaq 0xf13a(%rip), %rax      # 0x15570
leaq (%rax,%r12,8), %rsi
leaq 0x40(%rsp), %rdi
movq %r14, %rdx
callq 0x70ea
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r15, %rdi
callq 0x20e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6475
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movl %ebp, -0x8(%r13)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6495
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movb 0xf(%rsp), %al
movl %eax, %r12d
movq 0x78(%rsp), %r13
jmp 0x6655
movb $0x1, %r12b
jmp 0x6655
movl %edi, %ebp
movl 0x4(%rbx), %ecx
movl $0x6, %esi
movq %r14, %r15
leaq 0x40(%rsp), %r14
movq %r14, %rdi
leaq 0x92bc(%rip), %rdx      # 0xf786
xorl %eax, %eax
callq 0x2380
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %r14, %rdi
callq 0x2130
leaq (%rsp,%rax), %rdx
addq $0x40, %rdx
movq %r15, %rdi
movq %r14, %rsi
callq 0x7dd6
movl $0x0, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %r15, %rsi
callq 0x7408
movq %r15, %r14
jmp 0x6557
movl %edi, %ebp
movl 0x8(%rbx), %eax
movq 0xee34(%rip), %rcx      # 0x15350
leaq (%rax,%rax,2), %rax
shlq $0x4, %rax
leaq 0x28(%rsp), %rdx
movq %rdx, 0x18(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x7736
movl $0x0, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %r14, %rsi
callq 0x7408
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6573
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movl %ebp, %r12d
jmp 0x6655
movl %edi, %r12d
movl 0x8(%rbx), %eax
movq 0xed78(%rip), %rcx      # 0x15300
imulq $0x68, %rax, %rax
leaq 0x50(%rsp), %rdx
movq %rdx, 0x40(%rsp)
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %r15
movq %r15, %rdi
callq 0x7736
movl 0x4(%rbx), %ecx
testl %ecx, %ecx
je 0x65eb
movl $0x6, %esi
movq %r14, %rdi
leaq 0x91c1(%rip), %rdx      # 0xf786
xorl %eax, %eax
callq 0x2380
movq %r15, %rdi
movl $0x2b, %esi
callq 0x2220
movq %r15, %rdi
movq %r14, %rsi
callq 0x2440
movl $0x3, %ebp
jmp 0x65ed
xorl %ebp, %ebp
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x7736
movl %ebp, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %r14, %rsi
callq 0x7408
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6639
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6655
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
addq $0xc, %rbx
cmpq %r13, %rbx
jne 0x612d
jmp 0x6aae
movq 0xe96a(%rip), %rax      # 0x14fd8
movl %edi, %r15d
movq (%rax), %rdi
leaq 0x9142(%rip), %rsi      # 0xf7bd
movl %ebp, %edx
xorl %eax, %eax
callq 0x2310
movl %r15d, %r12d
jmp 0x6655
movl %edi, %ebp
leaq 0xf15e(%rip), %rdi      # 0x157f0
callq 0x23f0
movl %ebp, %edi
testl %eax, %eax
je 0x614a
leaq 0xeed8(%rip), %rax      # 0x15580
movq %rax, 0xeec1(%rip)      # 0x15570
leaq 0xeeba(%rip), %rdi      # 0x15570
leaq 0x90d9(%rip), %rsi      # 0xf796
leaq 0x90d4(%rip), %rdx      # 0xf798
callq 0x7dd6
movl $0x1, 0xeebd(%rip)      # 0x15590
leaq 0xeece(%rip), %rax      # 0x155a8
movq %rax, 0xeeb7(%rip)      # 0x15598
leaq 0xeeb0(%rip), %rdi      # 0x15598
leaq 0x90a8(%rip), %rsi      # 0xf797
leaq 0x90a2(%rip), %rdx      # 0xf798
callq 0x7dd6
movl $0x2, 0xeeb3(%rip)      # 0x155b8
leaq 0xeec4(%rip), %rax      # 0x155d0
movq %rax, 0xeead(%rip)      # 0x155c0
leaq 0xeea6(%rip), %rdi      # 0x155c0
leaq 0x9078(%rip), %rsi      # 0xf799
leaq 0x9072(%rip), %rdx      # 0xf79a
callq 0x7dd6
movl $0x2, 0xeea9(%rip)      # 0x155e0
leaq 0xeeba(%rip), %rax      # 0x155f8
movq %rax, 0xeea3(%rip)      # 0x155e8
leaq 0xee9c(%rip), %rdi      # 0x155e8
leaq 0x9048(%rip), %rsi      # 0xf79b
leaq 0x9046(%rip), %rdx      # 0xf7a0
callq 0x7dd6
movl $0x2, 0xee9f(%rip)      # 0x15608
leaq 0xeeb0(%rip), %rax      # 0x15620
movq %rax, 0xee99(%rip)      # 0x15610
leaq 0xee92(%rip), %rdi      # 0x15610
leaq 0x901c(%rip), %rsi      # 0xf7a1
leaq 0x9017(%rip), %rdx      # 0xf7a3
callq 0x7dd6
movl $0x2, 0xee95(%rip)      # 0x15630
leaq 0xeea6(%rip), %rax      # 0x15648
movq %rax, 0xee8f(%rip)      # 0x15638
leaq 0xee88(%rip), %rdi      # 0x15638
leaq 0x8fed(%rip), %rsi      # 0xf7a4
leaq 0x8fe8(%rip), %rdx      # 0xf7a6
callq 0x7dd6
movl $0x2, 0xee8b(%rip)      # 0x15658
leaq 0xee9c(%rip), %rax      # 0x15670
movq %rax, 0xee85(%rip)      # 0x15660
leaq 0xee7e(%rip), %rdi      # 0x15660
leaq 0x8fbe(%rip), %rsi      # 0xf7a7
leaq 0x8fb8(%rip), %rdx      # 0xf7a8
callq 0x7dd6
movl $0x3, 0xee81(%rip)      # 0x15680
leaq 0xee92(%rip), %rax      # 0x15698
movq %rax, 0xee7b(%rip)      # 0x15688
leaq 0xee74(%rip), %rdi      # 0x15688
leaq 0x8f77(%rip), %rsi      # 0xf792
leaq 0x8f71(%rip), %rdx      # 0xf793
callq 0x7dd6
movl $0x3, 0xee77(%rip)      # 0x156a8
leaq 0xee88(%rip), %rax      # 0x156c0
movq %rax, 0xee71(%rip)      # 0x156b0
leaq 0xee6a(%rip), %rdi      # 0x156b0
leaq 0x8f5c(%rip), %rsi      # 0xf7a9
leaq 0x8f56(%rip), %rdx      # 0xf7aa
callq 0x7dd6
movl $0x4, 0xee6d(%rip)      # 0x156d0
leaq 0xee7e(%rip), %rax      # 0x156e8
movq %rax, 0xee67(%rip)      # 0x156d8
leaq 0xee60(%rip), %rdi      # 0x156d8
leaq 0x8f2c(%rip), %rsi      # 0xf7ab
leaq 0x8f26(%rip), %rdx      # 0xf7ac
callq 0x7dd6
movl $0x5, 0xee63(%rip)      # 0x156f8
leaq 0xee74(%rip), %rax      # 0x15710
movq %rax, 0xee5d(%rip)      # 0x15700
leaq 0xee56(%rip), %rdi      # 0x15700
leaq 0x8efc(%rip), %rsi      # 0xf7ad
leaq 0x8ef6(%rip), %rdx      # 0xf7ae
callq 0x7dd6
movl $0x5, 0xee59(%rip)      # 0x15720
leaq 0xee6a(%rip), %rax      # 0x15738
movq %rax, 0xee53(%rip)      # 0x15728
leaq 0xee4c(%rip), %rdi      # 0x15728
leaq 0x8ecc(%rip), %rsi      # 0xf7af
leaq 0x8ec6(%rip), %rdx      # 0xf7b0
callq 0x7dd6
movl $0x6, 0xee4f(%rip)      # 0x15748
leaq 0xee60(%rip), %rax      # 0x15760
movq %rax, 0xee49(%rip)      # 0x15750
leaq 0xee42(%rip), %rdi      # 0x15750
leaq 0x8e8d(%rip), %rsi      # 0xf7a2
leaq 0x8e87(%rip), %rdx      # 0xf7a3
callq 0x7dd6
movl $0x6, 0xee45(%rip)      # 0x15770
leaq 0xee56(%rip), %rax      # 0x15788
movq %rax, 0xee3f(%rip)      # 0x15778
leaq 0xee38(%rip), %rdi      # 0x15778
leaq 0x8e5e(%rip), %rsi      # 0xf7a5
leaq 0x8e58(%rip), %rdx      # 0xf7a6
callq 0x7dd6
movl $0x6, 0xee3b(%rip)      # 0x15798
leaq 0xee4c(%rip), %rax      # 0x157b0
movq %rax, 0xee35(%rip)      # 0x157a0
leaq 0xee2e(%rip), %rdi      # 0x157a0
leaq 0x8e38(%rip), %rsi      # 0xf7b1
leaq 0x8e36(%rip), %rdx      # 0xf7b6
callq 0x7dd6
movl $0x6, 0xee31(%rip)      # 0x157c0
leaq 0xee42(%rip), %rax      # 0x157d8
movq %rax, 0xee2b(%rip)      # 0x157c8
leaq 0xee24(%rip), %rdi      # 0x157c8
leaq 0x8e0c(%rip), %rsi      # 0xf7b7
leaq 0x8e0a(%rip), %rdx      # 0xf7bc
callq 0x7dd6
movl $0x6, 0xee27(%rip)      # 0x157e8
leaq -0x4250(%rip), %rdi     # 0x2778
xorl %esi, %esi
leaq 0xe86f(%rip), %rdx      # 0x15240
callq 0x2230
leaq 0xee13(%rip), %rdi      # 0x157f0
callq 0x21b0
movq 0x78(%rsp), %r13
movl %ebp, %edi
jmp 0x614a
movl %edi, %r15d
leaq 0xeb68(%rip), %rdi      # 0x15560
callq 0x23f0
movl %r15d, %edi
testl %eax, %eax
je 0x61e2
leaq 0xeb01(%rip), %rax      # 0x15510
movq %rax, 0xeaea(%rip)      # 0x15500
leaq 0xeae3(%rip), %rdi      # 0x15500
leaq 0x8d68(%rip), %rsi      # 0xf78c
leaq 0x8d66(%rip), %rdx      # 0xf791
callq 0x7dd6
leaq 0xeaf9(%rip), %rax      # 0x15530
movq %rax, 0xeae2(%rip)      # 0x15520
leaq 0xeadb(%rip), %rdi      # 0x15520
leaq 0x8d46(%rip), %rsi      # 0xf792
leaq 0x8d40(%rip), %rdx      # 0xf793
callq 0x7dd6
leaq 0xeaf1(%rip), %rax      # 0x15550
movq %rax, 0xeada(%rip)      # 0x15540
leaq 0xead3(%rip), %rdi      # 0x15540
leaq 0x8d20(%rip), %rsi      # 0xf794
leaq 0x8d1a(%rip), %rdx      # 0xf795
callq 0x7dd6
leaq -0x434a(%rip), %rdi     # 0x273d
xorl %esi, %esi
leaq 0xe7b0(%rip), %rdx      # 0x15240
callq 0x2230
leaq 0xeac4(%rip), %rdi      # 0x15560
callq 0x21b0
movq 0x78(%rsp), %r13
movl %r15d, %edi
jmp 0x61e2
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
movl 0x84(%rsp), %ebp
movq %rcx, %rdx
subq %rax, %rdx
cmpq $0x28, %rdx
jne 0x6aed
movq 0xe506(%rip), %rcx      # 0x14fd8
movq (%rcx), %rdi
movq (%rax), %rdx
leaq 0x8cff(%rip), %rsi      # 0xf7de
xorl %eax, %eax
callq 0x2310
testb %bpl, %bpl
jne 0x6b10
jmp 0x6b16
cmpq %rcx, %rax
sete %al
orb %r12b, %al
movq 0xe4db(%rip), %rcx      # 0x14fd8
movq (%rcx), %rdi
testb $0x1, %al
je 0x6b0b
callq 0x2508
jmp 0x6b10
callq 0x24ed
incl 0xe7a2(%rip)            # 0x152b8
leaq 0x60(%rsp), %rdi
callq 0x747c
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xec8c(%rip), %rax      # 0x157c8
jmp 0x6be1
movq %rax, %r14
leaq 0xec55(%rip), %rax      # 0x157a0
jmp 0x6be1
movq %rax, %r14
leaq 0xec1e(%rip), %rax      # 0x15778
jmp 0x6be1
movq %rax, %r14
leaq 0xebe7(%rip), %rax      # 0x15750
jmp 0x6be1
movq %rax, %r14
leaq 0xebb3(%rip), %rax      # 0x15728
jmp 0x6be1
movq %rax, %r14
leaq 0xeb7f(%rip), %rax      # 0x15700
jmp 0x6be1
movq %rax, %r14
leaq 0xeb4b(%rip), %rax      # 0x156d8
jmp 0x6be1
movq %rax, %r14
leaq 0xeb17(%rip), %rax      # 0x156b0
jmp 0x6be1
movq %rax, %r14
leaq 0xeae3(%rip), %rax      # 0x15688
jmp 0x6be1
movq %rax, %r14
leaq 0xeaaf(%rip), %rax      # 0x15660
jmp 0x6be1
movq %rax, %r14
leaq 0xea7b(%rip), %rax      # 0x15638
jmp 0x6be1
movq %rax, %r14
leaq 0xea47(%rip), %rax      # 0x15610
jmp 0x6be1
movq %rax, %r14
leaq 0xea13(%rip), %rax      # 0x155e8
jmp 0x6be1
movq %rax, %r14
leaq 0xe9df(%rip), %rax      # 0x155c0
movq %rax, 0x10(%rsp)
movq 0x10(%rsp), %rbx
movq -0x28(%rbx), %rdi
leaq -0x18(%rbx), %rax
cmpq %rdi, %rax
je 0x6c03
movq (%rax), %rsi
incq %rsi
callq 0x2260
addq $-0x28, %rbx
leaq 0xe962(%rip), %rax      # 0x15570
cmpq %rax, %rbx
jne 0x6beb
leaq 0xebd6(%rip), %rdi      # 0x157f0
callq 0x21a0
jmp 0x6d1b
movq %rax, %r14
jmp 0x6be6
movq %rax, %r14
jmp 0x6c13
movq %rax, %r14
leaq 0xe908(%rip), %rax      # 0x15540
movq %rax, 0x88(%rsp)
jmp 0x6c45
movq %rax, %r14
movq 0x88(%rsp), %rbx
addq $-0x10, %rbx
movq -0x10(%rbx), %rdi
cmpq %rdi, %rbx
je 0x6c65
movq (%rbx), %rsi
incq %rsi
callq 0x2260
leaq -0x20(%rbx), %rax
addq $-0x10, %rbx
leaq 0xe88c(%rip), %rcx      # 0x15500
cmpq %rcx, %rbx
movq %rax, %rbx
jne 0x6c51
jmp 0x6c81
movq %rax, %r14
leaq 0xe8d8(%rip), %rdi      # 0x15560
jmp 0x6c1a
jmp 0x6cb7
movq %rax, %r14
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6cba
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
jmp 0x6cba
jmp 0x6cd0
jmp 0x6cd9
jmp 0x6cd0
jmp 0x6cd9
jmp 0x6cd0
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6d1b
movq 0x50(%rsp), %rsi
jmp 0x6d13
movq %rax, %r14
jmp 0x6d1b
jmp 0x6cd9
jmp 0x6ce0
movq %rax, %r14
jmp 0x6cff
jmp 0x6ce0
movq %rax, %r14
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6cff
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6d1b
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
leaq 0x60(%rsp), %rdi
callq 0x747c
movq %r14, %rdi
callq 0x23c0
nop