// File: /workspace/github_cpp_makefile_star2_O2/yanlinlin82[P]icpp/icpp.cpp
// Function: show()
int show()
{
	if (verbose >= 1) {
		for (size_t i = 0; i < external_code_size;) {
			i = print_code(code_sec, i);
		}
	}
	for (size_t i = 0; i < src.size(); ++i) {
		print_source_code_line(i);
		auto it = offset.find(i + 1);
		if (it != offset.end()) {
			log(COLOR_BLUE);
			for (size_t j = it->second.first; j <= it->second.second;) {
				j = print_code(code_sec, j);
			}
			log(COLOR_NORMAL);
		}
	}
	log("\n");

	for (size_t i = (verbose >= 1 ? 0 : external_data_size); i < data_sec.size(); ++i) {
		auto it = data_symbol_dict.find(i);
		if (it != data_symbol_dict.end()) {
			auto name = it->second;
			auto [ is_code, offset, size, type, ret_type, arg_count ] = symbols[name];
			string data_type = "word";
			if (type == "const char*") data_type = "byte";
			log(COLOR_YELLOW "%-10zd", i);
			log(COLOR_BLUE ".%-13s", data_type.c_str());
			size_t width = 0;
			if (type == "const char*") {
				log("\""); ++width;
				const char* s = reinterpret_cast<const char*>(&data_sec[offset]);
				for (size_t i = 0; i + 1 < size * sizeof(int); ++i) {
					switch (s[i]) {
						default: log("%c", s[i]); ++width; break;
						case '\t': log("\\t"); width += 2; break;
						case '\r': log("\\r"); width += 2; break;
						case '\n': log("\\n"); width += 2; break;
						case '\\': log("\\\\"); width += 2; break;
						case '\'': log("\\\'"); width += 2; break;
						case '\"': log("\\\""); width += 2; break;
						case '\0': log("\\0"); width += 2; break;
					}
				}
				log("\""); ++width;
			} else {
				for (size_t i = 0; i < size; ++i) {
					if (i > 0) { log("  "); width += 2; }
					log("0x%08X", static_cast<unsigned int>(data_sec[offset + i]));
					width += 10;
				}
			}
			if (width > 25) {
				log("\n%*s", (10 + 14 + 25), "");
			} else {
				log("%*s", 25 - width, "");
			}
			log(" ; %s %s" COLOR_NORMAL "\n", type.c_str(), name.c_str());
		}
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
cmpl $0x0, 0x13926(%rip)     # 0x215d0
jle 0xdccd
xorl %eax, %eax
leaq 0x1364b(%rip), %rbx     # 0x21300
cmpq 0x1367c(%rip), %rax     # 0x21338
jae 0xdccd
movq %rbx, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x48e3
jmp 0xdcb5
leaq 0x137d4(%rip), %rbx     # 0x214a8
leaq -0xb8(%rbp), %r14
leaq 0x1361e(%rip), %r13     # 0x21300
xorl %r15d, %r15d
movq 0x1357c(%rip), %rax     # 0x21268
subq 0x1356d(%rip), %rax     # 0x21260
sarq $0x5, %rax
cmpq %rax, %r15
jae 0xdd5a
movq %r15, %rdi
callq 0x40ad
incq %r15
movq %r15, -0xb8(%rbp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x12d18
testq %rax, %rax
je 0xdce5
movq %rax, %r12
leaq 0x86a2(%rip), %rdi      # 0x163ca
xorl %eax, %eax
callq 0xf09e
movq 0x10(%r12), %rax
cmpq 0x18(%r12), %rax
ja 0xdd4a
movq %r13, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x48e3
jmp 0xdd34
leaq 0x9774(%rip), %rdi      # 0x174c5
xorl %eax, %eax
callq 0xf09e
jmp 0xdce5
leaq 0x95b4(%rip), %rdi      # 0x17315
xorl %r15d, %r15d
xorl %eax, %eax
callq 0xf09e
cmpl $0x0, 0x1385e(%rip)     # 0x215d0
jg 0xdd7b
movq 0x135b5(%rip), %r15     # 0x21330
leaq -0x90(%rbp), %r13
leaq -0xd8(%rbp), %r12
pushq $0x2
popq %r14
leaq 0x9376(%rip), %rbx      # 0x1710a
movq %r15, -0x38(%rbp)
movq 0x13581(%rip), %rax     # 0x21320
subq 0x13572(%rip), %rax     # 0x21318
sarq $0x2, %rax
cmpq %rax, %r15
jae 0xe018
leaq 0x1360e(%rip), %rdi     # 0x213c8
leaq -0x38(%rbp), %rsi
callq 0x12cf6
testq %rax, %rax
je 0xe00c
addq $0x10, %rax
movq %r12, %rdi
movq %rax, %rsi
callq 0x3270
leaq 0x135ae(%rip), %rdi     # 0x21390
movq %r12, %rsi
callq 0x11408
leaq -0xb8(%rbp), %rdi
movq %rax, %rsi
callq 0x104b4
leaq -0x58(%rbp), %rdi
leaq 0x92cf(%rip), %rsi      # 0x170d3
leaq -0x29(%rbp), %rdx
callq 0xf1f8
movq %r13, %rdi
leaq 0x90e8(%rip), %rsi      # 0x16eff
callq 0xf4c8
testb %al, %al
je 0xde30
leaq -0x58(%rbp), %rdi
leaq 0x92ad(%rip), %rsi      # 0x170d8
callq 0x3340
movq -0x38(%rbp), %rsi
leaq 0x92a2(%rip), %rdi      # 0x170dd
xorl %eax, %eax
callq 0xf09e
movq -0x58(%rbp), %rsi
leaq 0x929c(%rip), %rdi      # 0x170e9
xorl %eax, %eax
callq 0xf09e
movq %r13, %rdi
leaq 0x90a1(%rip), %rsi      # 0x16eff
callq 0xf4c8
testb %al, %al
je 0xdf30
leaq 0x895e(%rip), %rdi      # 0x167d0
xorl %eax, %eax
callq 0xf09e
movq -0x68(%rbp), %r12
shlq $0x2, %r12
addq 0x13490(%rip), %r12     # 0x21318
pushq $0x1
popq %r15
movq %r15, %r13
movq -0x70(%rbp), %rax
shlq $0x2, %rax
cmpq %rax, %r13
jae 0xdf79
movzbl -0x1(%r12,%r13), %eax
testl %eax, %eax
je 0xdeec
cmpl $0x9, %eax
je 0xdf14
cmpl $0xa, %eax
je 0xdf0b
cmpl $0xd, %eax
je 0xded1
cmpl $0x22, %eax
je 0xdee3
cmpl $0x27, %eax
je 0xdeda
cmpl $0x5c, %eax
jne 0xdef5
leaq 0x922f(%rip), %rdi      # 0x170fe
jmp 0xdf1b
leaq 0x9220(%rip), %rdi      # 0x170f8
jmp 0xdf1b
leaq 0x9220(%rip), %rdi      # 0x17101
jmp 0xdf1b
leaq 0x921a(%rip), %rdi      # 0x17104
jmp 0xdf1b
leaq 0x9214(%rip), %rdi      # 0x17107
jmp 0xdf1b
movsbl %al, %esi
leaq 0x837a(%rip), %rdi      # 0x16279
xorl %eax, %eax
callq 0xf09e
pushq $0x1
popq %rax
jmp 0xdf25
leaq 0x91e9(%rip), %rdi      # 0x170fb
jmp 0xdf1b
leaq 0x91da(%rip), %rdi      # 0x170f5
xorl %eax, %eax
callq 0xf09e
movq %r14, %rax
addq %rax, %r15
incq %r13
jmp 0xde8f
xorl %r15d, %r15d
xorl %r12d, %r12d
cmpq -0x70(%rbp), %r12
jae 0xdf91
testq %r12, %r12
je 0xdf53
leaq 0x8337(%rip), %rdi      # 0x1627f
xorl %eax, %eax
callq 0xf09e
addq $0x2, %r15
movq -0x68(%rbp), %rax
shlq $0x2, %rax
addq 0x133b6(%rip), %rax     # 0x21318
movl (%rax,%r12,4), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0xf09e
addq $0xa, %r15
incq %r12
jmp 0xdf36
leaq 0x8850(%rip), %rdi      # 0x167d0
xorl %eax, %eax
callq 0xf09e
incq %r15
leaq -0x90(%rbp), %r13
cmpq $0x1a, %r15
leaq -0xd8(%rbp), %r12
jb 0xdfb8
leaq 0x916c(%rip), %rdi      # 0x17111
pushq $0x31
popq %rsi
leaq 0x94d5(%rip), %rdx      # 0x17484
xorl %eax, %eax
callq 0xf09e
jmp 0xdfd3
pushq $0x19
popq %rsi
subq %r15, %rsi
leaq 0x914d(%rip), %rdi      # 0x17112
leaq 0x94b8(%rip), %rdx      # 0x17484
xorl %eax, %eax
callq 0xf09e
movq -0x90(%rbp), %rsi
movq -0xd8(%rbp), %rdx
leaq 0x912e(%rip), %rdi      # 0x17116
xorl %eax, %eax
callq 0xf09e
leaq -0x58(%rbp), %rdi
callq 0x3368
leaq -0xb8(%rbp), %rdi
callq 0xf1d4
movq %r12, %rdi
callq 0x3368
movq -0x38(%rbp), %r15
incq %r15
jmp 0xdd94
xorl %eax, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x3368
jmp 0xe03d
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0xf1d4
jmp 0xe04e
movq %rax, %rbx
leaq -0xd8(%rbp), %rdi
callq 0x3368
movq %rbx, %rdi
callq 0x3310