// File: /workspace/github_cpp_makefile_star2_O1/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, %rbx
movl %edi, %ebp
movl (%rsi), %eax
movl 0x4(%rsi), %edx
movq 0xf1d3(%rip), %rsi      # 0x15300
imulq $0x68, %rax, %rax
movq (%rsi,%rax), %rsi
leaq 0x963f(%rip), %rdi      # 0xf77b
xorl %r12d, %r12d
xorl %eax, %eax
callq 0x2290
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
movq 0x10(%rbx), %r14
movq 0x18(%rbx), %rax
movq %rax, 0x90(%rsp)
cmpq %rax, %r14
je 0x6b2c
movl %ebp, 0x84(%rsp)
leaq 0xf3f2(%rip), %r13      # 0x15570
leaq 0x18(%rsp), %rbx
leaq 0xf376(%rip), %rax      # 0x15500
movq %rax, 0x78(%rsp)
xorl %r12d, %r12d
movq %r13, 0x10(%rsp)
movl %r12d, %edi
movl (%r14), %ebp
leal -0x14(%rbp), %r15d
cmpl $0x10, %r15d
jae 0x6222
movb 0xf643(%rip), %al       # 0x157f0
testb %al, %al
je 0x6700
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 0x650c
movslq %r15d, %rcx
movq %r13, %rdx
leaq (%rcx,%rcx,4), %r13
movl 0x20(%rdx,%r13,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 0x6332
movq %rdx, 0x18(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x28(%rsp)
jmp 0x6338
leal -0x1(%rbp), %eax
cmpl $0xb, %eax
ja 0x66db
leaq 0x8e47(%rip), %rcx      # 0xf07c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movb 0xf31c(%rip), %al       # 0x15560
testb %al, %al
je 0x6a63
movq 0x68(%rsp), %r12
cmpq %r12, 0x60(%rsp)
je 0x6523
movb %dil, 0xf(%rsp)
leaq -0x28(%r12), %r15
cmpl $0x0, -0x8(%r12)
jle 0x62d9
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq $0x0, 0x20(%rsp)
movb $0x0, 0x28(%rsp)
movq %rbx, %rdi
movl $0x28, %esi
callq 0x2220
movq -0x28(%r12), %rsi
movq -0x20(%r12), %rdx
movq %rbx, %rdi
callq 0x20e0
movq %rbx, %rdi
movl $0x29, %esi
callq 0x2220
movq %r15, %rdi
movq %rbx, %rsi
callq 0x22e0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x62d9
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movslq %ebp, %rax
shlq $0x5, %rax
leaq 0xf219(%rip), %rcx      # 0x15500
leaq (%rax,%rcx), %rsi
addq $-0x140, %rsi           # imm = 0xFEC0
movq %rbx, %rdi
movq %r15, %rdx
callq 0x71b4
movq %r15, %rdi
movq %rbx, %rsi
callq 0x22e0
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6324
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movl $0x0, -0x8(%r12)
jmp 0x6505
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), %rax
leaq -0x28(%rax), %rcx
movq %rcx, 0x68(%rsp)
movq -0x28(%rax), %rdi
addq $-0x18, %rax
cmpq %rax, %rdi
leaq 0x40(%rsp), %r15
je 0x6383
movq (%rax), %rsi
incq %rsi
callq 0x2260
movq 0x68(%rsp), %r12
cmpl 0x38(%rsp), %ebp
jge 0x63f9
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 %rbx, %rdi
movq %r15, %rsi
callq 0x22e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x63f9
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
leaq -0x28(%r12), %r15
cmpl -0x8(%r12), %ebp
jge 0x649b
movq %r14, 0x88(%rsp)
movl %ebp, %r14d
movq %r13, %rbp
movq %rbx, %r13
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movb $0x0, 0x50(%rsp)
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
movl $0x28, %esi
callq 0x2220
movq -0x28(%r12), %rsi
movq -0x20(%r12), %rdx
movq %rbx, %rdi
callq 0x20e0
movq %rbx, %rdi
movl $0x29, %esi
callq 0x2220
movq %r15, %rdi
movq %rbx, %rsi
callq 0x22e0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x648a
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movq %r13, %rbx
movq %rbp, %r13
movl %r14d, %ebp
movq 0x88(%rsp), %r14
leaq 0xf0ce(%rip), %rax      # 0x15570
leaq (%rax,%r13,8), %rsi
movq %rax, %r13
leaq 0x40(%rsp), %rdi
movq %rbx, %rdx
callq 0x71b4
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 0x64e4
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movl %ebp, -0x8(%r12)
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6505
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movb 0xf(%rsp), %al
movl %eax, %r12d
addq $0xc, %r14
cmpq 0x90(%rsp), %r14
jne 0x6197
jmp 0x6b25
movb $0x1, %r12b
jmp 0x650c
movl %edi, %ebp
movl 0x4(%r14), %ecx
movl $0x6, %esi
movq %rbx, %r15
leaq 0x40(%rsp), %rbx
movq %rbx, %rdi
leaq 0x9241(%rip), %rdx      # 0xf786
xorl %eax, %eax
callq 0x2380
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq %rbx, %rdi
callq 0x2130
leaq (%rsp,%rax), %rdx
addq $0x40, %rdx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x7e88
movl $0x0, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %r15, %rsi
callq 0x74ba
movq %r15, %rbx
jmp 0x65d3
movl %edi, %ebp
movl 0x8(%r14), %eax
movq 0xedb8(%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 %rbx, %rdi
callq 0x77de
movl $0x0, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x74ba
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x65ef
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movl %ebp, %r12d
jmp 0x650c
movl %edi, %r12d
movl 0x8(%r14), %eax
movq 0xecfb(%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 0x77de
cmpl $0x0, 0x4(%r14)
je 0x666c
movl 0x4(%r14), %ecx
movl $0x6, %esi
movq %rbx, %rdi
leaq 0x9140(%rip), %rdx      # 0xf786
xorl %eax, %eax
callq 0x2380
movq %r15, %rdi
movl $0x2b, %esi
callq 0x2220
movq %r15, %rdi
movq %rbx, %rsi
callq 0x2440
movl $0x3, %ebp
jmp 0x666e
xorl %ebp, %ebp
leaq 0x28(%rsp), %rax
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x77de
movl %ebp, 0x38(%rsp)
leaq 0x60(%rsp), %rdi
movq %rbx, %rsi
callq 0x74ba
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x66ba
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x66d6
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
jmp 0x650c
movq 0xe8f6(%rip), %rax      # 0x14fd8
movl %edi, %r15d
movq (%rax), %rdi
leaq 0x90ce(%rip), %rsi      # 0xf7bd
movl %ebp, %edx
xorl %eax, %eax
callq 0x2310
movl %r15d, %r12d
jmp 0x650c
movl %edi, %ebp
leaq 0xf0e7(%rip), %rdi      # 0x157f0
callq 0x23f0
movl %ebp, %edi
testl %eax, %eax
je 0x61b5
leaq 0xee61(%rip), %rax      # 0x15580
movq %rax, 0xee4a(%rip)      # 0x15570
movq %r13, %rdi
leaq 0x9066(%rip), %rsi      # 0xf796
leaq 0x9061(%rip), %rdx      # 0xf798
callq 0x7e88
movl $0x1, 0xee4a(%rip)      # 0x15590
leaq 0xee5b(%rip), %rax      # 0x155a8
movq %rax, 0xee44(%rip)      # 0x15598
leaq 0xee3d(%rip), %rdi      # 0x15598
leaq 0x9035(%rip), %rsi      # 0xf797
leaq 0x902f(%rip), %rdx      # 0xf798
callq 0x7e88
movl $0x2, 0xee40(%rip)      # 0x155b8
leaq 0xee51(%rip), %rax      # 0x155d0
movq %rax, 0xee3a(%rip)      # 0x155c0
leaq 0xee33(%rip), %rdi      # 0x155c0
leaq 0x9005(%rip), %rsi      # 0xf799
leaq 0x8fff(%rip), %rdx      # 0xf79a
callq 0x7e88
movl $0x2, 0xee36(%rip)      # 0x155e0
leaq 0xee47(%rip), %rax      # 0x155f8
movq %rax, 0xee30(%rip)      # 0x155e8
leaq 0xee29(%rip), %rdi      # 0x155e8
leaq 0x8fd5(%rip), %rsi      # 0xf79b
leaq 0x8fd3(%rip), %rdx      # 0xf7a0
callq 0x7e88
movl $0x2, 0xee2c(%rip)      # 0x15608
leaq 0xee3d(%rip), %rax      # 0x15620
movq %rax, 0xee26(%rip)      # 0x15610
leaq 0xee1f(%rip), %rdi      # 0x15610
leaq 0x8fa9(%rip), %rsi      # 0xf7a1
leaq 0x8fa4(%rip), %rdx      # 0xf7a3
callq 0x7e88
movl $0x2, 0xee22(%rip)      # 0x15630
leaq 0xee33(%rip), %rax      # 0x15648
movq %rax, 0xee1c(%rip)      # 0x15638
leaq 0xee15(%rip), %rdi      # 0x15638
leaq 0x8f7a(%rip), %rsi      # 0xf7a4
leaq 0x8f75(%rip), %rdx      # 0xf7a6
callq 0x7e88
movl $0x2, 0xee18(%rip)      # 0x15658
leaq 0xee29(%rip), %rax      # 0x15670
movq %rax, 0xee12(%rip)      # 0x15660
leaq 0xee0b(%rip), %rdi      # 0x15660
leaq 0x8f4b(%rip), %rsi      # 0xf7a7
leaq 0x8f45(%rip), %rdx      # 0xf7a8
callq 0x7e88
movl $0x3, 0xee0e(%rip)      # 0x15680
leaq 0xee1f(%rip), %rax      # 0x15698
movq %rax, 0xee08(%rip)      # 0x15688
leaq 0xee01(%rip), %rdi      # 0x15688
leaq 0x8f04(%rip), %rsi      # 0xf792
leaq 0x8efe(%rip), %rdx      # 0xf793
callq 0x7e88
movl $0x3, 0xee04(%rip)      # 0x156a8
leaq 0xee15(%rip), %rax      # 0x156c0
movq %rax, 0xedfe(%rip)      # 0x156b0
leaq 0xedf7(%rip), %rdi      # 0x156b0
leaq 0x8ee9(%rip), %rsi      # 0xf7a9
leaq 0x8ee3(%rip), %rdx      # 0xf7aa
callq 0x7e88
movl $0x4, 0xedfa(%rip)      # 0x156d0
leaq 0xee0b(%rip), %rax      # 0x156e8
movq %rax, 0xedf4(%rip)      # 0x156d8
leaq 0xeded(%rip), %rdi      # 0x156d8
leaq 0x8eb9(%rip), %rsi      # 0xf7ab
leaq 0x8eb3(%rip), %rdx      # 0xf7ac
callq 0x7e88
movl $0x5, 0xedf0(%rip)      # 0x156f8
leaq 0xee01(%rip), %rax      # 0x15710
movq %rax, 0xedea(%rip)      # 0x15700
leaq 0xede3(%rip), %rdi      # 0x15700
leaq 0x8e89(%rip), %rsi      # 0xf7ad
leaq 0x8e83(%rip), %rdx      # 0xf7ae
callq 0x7e88
movl $0x5, 0xede6(%rip)      # 0x15720
leaq 0xedf7(%rip), %rax      # 0x15738
movq %rax, 0xede0(%rip)      # 0x15728
leaq 0xedd9(%rip), %rdi      # 0x15728
leaq 0x8e59(%rip), %rsi      # 0xf7af
leaq 0x8e53(%rip), %rdx      # 0xf7b0
callq 0x7e88
movl $0x6, 0xeddc(%rip)      # 0x15748
leaq 0xeded(%rip), %rax      # 0x15760
movq %rax, 0xedd6(%rip)      # 0x15750
leaq 0xedcf(%rip), %rdi      # 0x15750
leaq 0x8e1a(%rip), %rsi      # 0xf7a2
leaq 0x8e14(%rip), %rdx      # 0xf7a3
callq 0x7e88
movl $0x6, 0xedd2(%rip)      # 0x15770
leaq 0xede3(%rip), %rax      # 0x15788
movq %rax, 0xedcc(%rip)      # 0x15778
leaq 0xedc5(%rip), %rdi      # 0x15778
leaq 0x8deb(%rip), %rsi      # 0xf7a5
leaq 0x8de5(%rip), %rdx      # 0xf7a6
callq 0x7e88
movl $0x6, 0xedc8(%rip)      # 0x15798
leaq 0xedd9(%rip), %rax      # 0x157b0
movq %rax, 0xedc2(%rip)      # 0x157a0
leaq 0xedbb(%rip), %rdi      # 0x157a0
leaq 0x8dc5(%rip), %rsi      # 0xf7b1
leaq 0x8dc3(%rip), %rdx      # 0xf7b6
callq 0x7e88
movl $0x6, 0xedbe(%rip)      # 0x157c0
leaq 0xedcf(%rip), %rax      # 0x157d8
movq %rax, 0xedb8(%rip)      # 0x157c8
leaq 0xedb1(%rip), %rdi      # 0x157c8
leaq 0x8d99(%rip), %rsi      # 0xf7b7
leaq 0x8d97(%rip), %rdx      # 0xf7bc
callq 0x7e88
movl $0x6, 0xedb4(%rip)      # 0x157e8
leaq -0x42e3(%rip), %rdi     # 0x2758
xorl %esi, %esi
leaq 0xe7fc(%rip), %rdx      # 0x15240
callq 0x2230
leaq 0xeda0(%rip), %rdi      # 0x157f0
callq 0x21b0
leaq 0xeb14(%rip), %r13      # 0x15570
movl %ebp, %edi
jmp 0x61b5
movl %edi, %r15d
leaq 0xeaf3(%rip), %rdi      # 0x15560
callq 0x23f0
movl %r15d, %edi
testl %eax, %eax
je 0x624c
leaq 0xea8c(%rip), %rax      # 0x15510
movq %rax, 0xea75(%rip)      # 0x15500
leaq 0xea6e(%rip), %rdi      # 0x15500
leaq 0x8cf3(%rip), %rsi      # 0xf78c
leaq 0x8cf1(%rip), %rdx      # 0xf791
callq 0x7e88
leaq 0xea84(%rip), %rax      # 0x15530
movq %rax, 0xea6d(%rip)      # 0x15520
leaq 0xea66(%rip), %rdi      # 0x15520
leaq 0x8cd1(%rip), %rsi      # 0xf792
leaq 0x8ccb(%rip), %rdx      # 0xf793
callq 0x7e88
leaq 0xea7c(%rip), %rax      # 0x15550
movq %rax, 0xea65(%rip)      # 0x15540
leaq 0xea5e(%rip), %rdi      # 0x15540
leaq 0x8cab(%rip), %rsi      # 0xf794
leaq 0x8ca5(%rip), %rdx      # 0xf795
callq 0x7e88
leaq -0x43df(%rip), %rdi     # 0x271d
xorl %esi, %esi
leaq 0xe73b(%rip), %rdx      # 0x15240
callq 0x2230
leaq 0xea4f(%rip), %rdi      # 0x15560
callq 0x21b0
leaq 0xea53(%rip), %r13      # 0x15570
movl %r15d, %edi
jmp 0x624c
movl 0x84(%rsp), %ebp
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
movq %rcx, %rdx
subq %rax, %rdx
cmpq $0x28, %rdx
jne 0x6b64
movq 0xe48f(%rip), %rcx      # 0x14fd8
movq (%rcx), %rdi
movq (%rax), %rdx
leaq 0x8c88(%rip), %rsi      # 0xf7de
xorl %eax, %eax
callq 0x2310
testb %bpl, %bpl
jne 0x6b87
jmp 0x6b8d
cmpq %rcx, %rax
sete %al
orb %r12b, %al
movq 0xe464(%rip), %rcx      # 0x14fd8
movq (%rcx), %rdi
testb $0x1, %al
je 0x6b82
callq 0x2508
jmp 0x6b87
callq 0x24ed
incl 0xe72b(%rip)            # 0x152b8
leaq 0x60(%rsp), %rdi
callq 0x7526
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
xorl %eax, %eax
leaq 0xec13(%rip), %rcx      # 0x157c8
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xebda(%rip), %rcx      # 0x157a0
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xeba1(%rip), %rcx      # 0x15778
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xeb68(%rip), %rcx      # 0x15750
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xeb2f(%rip), %rcx      # 0x15728
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xeaf6(%rip), %rcx      # 0x15700
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xeac0(%rip), %rcx      # 0x156d8
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xea8a(%rip), %rcx      # 0x156b0
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xea54(%rip), %rcx      # 0x15688
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xea1e(%rip), %rcx      # 0x15660
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xe9e8(%rip), %rcx      # 0x15638
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xe9b2(%rip), %rcx      # 0x15610
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xe97c(%rip), %rcx      # 0x155e8
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xe946(%rip), %rcx      # 0x155c0
jmp 0x6c88
movq %rax, %r15
xorl %eax, %eax
leaq 0xe910(%rip), %rcx      # 0x15598
movq %rcx, 0x10(%rsp)
testb %al, %al
movq 0x10(%rsp), %r14
jne 0x6cbe
leaq 0xe8d3(%rip), %rbx      # 0x15570
movq -0x28(%r14), %rdi
leaq -0x18(%r14), %rax
cmpq %rdi, %rax
je 0x6cb5
movq (%rax), %rsi
incq %rsi
callq 0x2260
addq $-0x28, %r14
cmpq %rbx, %r14
jne 0x6c9d
leaq 0xeb2b(%rip), %rdi      # 0x157f0
callq 0x21a0
jmp 0x6dce
movq %rax, %r15
movb $0x1, %al
jmp 0x6c8d
movq %rax, %r15
xorl %eax, %eax
leaq 0xe85e(%rip), %rcx      # 0x15540
jmp 0x6cf0
movq %rax, %r15
xorl %eax, %eax
leaq 0xe830(%rip), %rcx      # 0x15520
movq %rcx, 0x78(%rsp)
jmp 0x6cfc
movq %rax, %r15
movb $0x1, %al
testb %al, %al
movq 0x78(%rsp), %r14
jne 0x6d34
addq $-0x10, %r14
leaq 0xe7f0(%rip), %rbx      # 0x15500
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x6d24
movq (%r14), %rsi
incq %rsi
callq 0x2260
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %rbx, %r14
movq %rax, %r14
jne 0x6d10
leaq 0xe825(%rip), %rdi      # 0x15560
jmp 0x6cc5
jmp 0x6d6a
movq %rax, %r15
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6d6d
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
jmp 0x6d6d
jmp 0x6d83
jmp 0x6d8c
jmp 0x6d83
jmp 0x6d8c
jmp 0x6d83
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6dce
movq 0x50(%rsp), %rsi
jmp 0x6dc6
movq %rax, %r15
jmp 0x6dce
jmp 0x6d8c
jmp 0x6d93
movq %rax, %r15
jmp 0x6db2
jmp 0x6d93
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x6db2
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x2260
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x6dce
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x2260
leaq 0x60(%rsp), %rdi
callq 0x7526
movq %r15, %rdi
callq 0x23c0