// File: /workspace/github_cpp_makefile_star2_O3/yanlinlin82[P]icpp/icpp.cpp
// Function: init_symbol()
void init_symbol()
{
	log<3>("[DEBUG] prepare external symbols\n");
	add_external_symbol("cout", "ostream");
	add_external_symbol("cerr", "ostream");
	add_external_symbol("endl", "endl_t", "void", 1);
	add_external_symbol("operator<<", "ostream,int", "ostream", 2);
	add_external_symbol("operator<<", "ostream,double", "ostream", 2);
	add_external_symbol("operator<<", "ostream,const char*", "ostream", 2);
	add_external_symbol("operator<<", "ostream,(*)(endl_t)", "ostream", 2);
	add_external_symbol("printf", "const char*,...", "int", -1);
	log<3>("[DEBUG] total %zd symbols are prepared\n", symbols.size());
	external_data_size = data_sec.size();
	external_code_size = code_sec.size();
	if (verbose >= 3) {
		size_t i = 0;
		for (auto it = symbols.begin(); it != symbols.end(); ++it) {
			auto name = it->first;
			auto [ is_code, offset, size, type_name, ret_type, arg_count ] = it->second;
			log("[DEBUG] [%zd] '%s': %s, offset=%zd, size=%zd, type='%s', ret_type='%s', arg_count=%d\n",
					i++, name.c_str(), (is_code ? "code" : "data"), offset, size, type_name.c_str(), ret_type.c_str(), arg_count);
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x388, %rsp            # imm = 0x388
leaq 0x9967(%rip), %rdi      # 0x1be89
xorl %eax, %eax
callq 0x151ad
leaq -0x338(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9970(%rip), %rsi      # 0x1beab
leaq 0x996d(%rip), %rdx      # 0x1beaf
leaq -0x348(%rbp), %rdi
callq 0x169e0
leaq -0x318(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9950(%rip), %rsi      # 0x1beb0
leaq 0x9950(%rip), %rdx      # 0x1beb7
leaq -0x328(%rbp), %rdi
callq 0x169e0
leaq -0x2f8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x9efb(%rip), %rdx      # 0x1c481
leaq -0x308(%rbp), %rdi
movq %rdx, %rsi
callq 0x169e0
leaq -0x348(%rbp), %rdi
leaq -0x328(%rbp), %rsi
leaq -0x308(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4fd9
movq -0x308(%rbp), %rdi
cmpq %r12, %rdi
je 0x125cc
movq -0x2f8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x328(%rbp), %rdi
cmpq %rbx, %rdi
je 0x125e7
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x348(%rbp), %rdi
cmpq %r14, %rdi
je 0x12602
movq -0x338(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x2d8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x98a4(%rip), %rsi      # 0x1beb8
leaq 0x98a1(%rip), %rdx      # 0x1bebc
leaq -0x2e8(%rbp), %rdi
callq 0x169e0
leaq -0x2b8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9877(%rip), %rsi      # 0x1beb0
leaq 0x9877(%rip), %rdx      # 0x1beb7
leaq -0x2c8(%rbp), %rdi
callq 0x169e0
leaq -0x298(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x9e22(%rip), %rdx      # 0x1c481
leaq -0x2a8(%rbp), %rdi
movq %rdx, %rsi
callq 0x169e0
leaq -0x2e8(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
leaq -0x2a8(%rbp), %rdx
xorl %ecx, %ecx
callq 0x4fd9
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x126a5
movq -0x298(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2c8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x126c0
movq -0x2b8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x126db
movq -0x2d8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x278(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x97d0(%rip), %rsi      # 0x1bebd
leaq 0x97cd(%rip), %rdx      # 0x1bec1
leaq -0x288(%rbp), %rdi
callq 0x169e0
leaq -0x258(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x97b0(%rip), %rsi      # 0x1bec2
leaq 0x97af(%rip), %rdx      # 0x1bec8
leaq -0x268(%rbp), %rdi
callq 0x169e0
leaq -0x238(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x9791(%rip), %rsi      # 0x1bec9
leaq 0x978e(%rip), %rdx      # 0x1becd
leaq -0x248(%rbp), %rdi
callq 0x169e0
leaq -0x288(%rbp), %rdi
leaq -0x268(%rbp), %rsi
leaq -0x248(%rbp), %rdx
movl $0x1, %ecx
callq 0x4fd9
movq -0x248(%rbp), %rdi
cmpq %r12, %rdi
je 0x12785
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x268(%rbp), %rdi
cmpq %rbx, %rdi
je 0x127a0
movq -0x258(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x288(%rbp), %rdi
cmpq %r14, %rdi
je 0x127bb
movq -0x278(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x218(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9701(%rip), %rsi      # 0x1bece
leaq 0x9704(%rip), %rdx      # 0x1bed8
leaq -0x228(%rbp), %rdi
callq 0x169e0
leaq -0x1f8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x96e7(%rip), %rsi      # 0x1bed9
leaq 0x96eb(%rip), %rdx      # 0x1bee4
leaq -0x208(%rbp), %rdi
callq 0x169e0
leaq -0x1d8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x9698(%rip), %rsi      # 0x1beb0
leaq 0x9698(%rip), %rdx      # 0x1beb7
leaq -0x1e8(%rbp), %rdi
callq 0x169e0
leaq -0x228(%rbp), %rdi
leaq -0x208(%rbp), %rsi
leaq -0x1e8(%rbp), %rdx
movl $0x2, %ecx
callq 0x4fd9
movq -0x1e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x12865
movq -0x1d8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x208(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12880
movq -0x1f8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x228(%rbp), %rdi
cmpq %r14, %rdi
je 0x1289b
movq -0x218(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x1b8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9621(%rip), %rsi      # 0x1bece
leaq 0x9624(%rip), %rdx      # 0x1bed8
leaq -0x1c8(%rbp), %rdi
callq 0x169e0
leaq -0x198(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9613(%rip), %rsi      # 0x1bee5
leaq 0x961a(%rip), %rdx      # 0x1bef3
leaq -0x1a8(%rbp), %rdi
callq 0x169e0
leaq -0x178(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x95b8(%rip), %rsi      # 0x1beb0
leaq 0x95b8(%rip), %rdx      # 0x1beb7
leaq -0x188(%rbp), %rdi
callq 0x169e0
leaq -0x1c8(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
leaq -0x188(%rbp), %rdx
movl $0x2, %ecx
callq 0x4fd9
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0x12945
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1a8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12960
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x1297b
movq -0x1b8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x158(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9541(%rip), %rsi      # 0x1bece
leaq 0x9544(%rip), %rdx      # 0x1bed8
leaq -0x168(%rbp), %rdi
callq 0x169e0
leaq -0x138(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9542(%rip), %rsi      # 0x1bef4
leaq 0x954e(%rip), %rdx      # 0x1bf07
leaq -0x148(%rbp), %rdi
callq 0x169e0
leaq -0x118(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x94d8(%rip), %rsi      # 0x1beb0
leaq 0x94d8(%rip), %rdx      # 0x1beb7
leaq -0x128(%rbp), %rdi
callq 0x169e0
leaq -0x168(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x128(%rbp), %rdx
movl $0x2, %ecx
callq 0x4fd9
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x12a25
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x148(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12a40
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x168(%rbp), %rdi
cmpq %r14, %rdi
je 0x12a5b
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xf8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9461(%rip), %rsi      # 0x1bece
leaq 0x9464(%rip), %rdx      # 0x1bed8
leaq -0x108(%rbp), %rdi
callq 0x169e0
leaq -0xd8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x9476(%rip), %rsi      # 0x1bf08
leaq 0x9482(%rip), %rdx      # 0x1bf1b
leaq -0xe8(%rbp), %rdi
callq 0x169e0
leaq -0xb8(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x93f8(%rip), %rsi      # 0x1beb0
leaq 0x93f8(%rip), %rdx      # 0x1beb7
leaq -0xc8(%rbp), %rdi
callq 0x169e0
leaq -0x108(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
movl $0x2, %ecx
callq 0x4fd9
movq -0xc8(%rbp), %rdi
cmpq %r12, %rdi
je 0x12b05
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xe8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12b20
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0x12b3b
movq -0xf8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x98(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x8a63(%rip), %rsi      # 0x1b5b0
leaq 0x8a62(%rip), %rdx      # 0x1b5b6
leaq -0xa8(%rbp), %rdi
callq 0x169e0
leaq -0x78(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x93ad(%rip), %rsi      # 0x1bf1c
leaq 0x93b5(%rip), %rdx      # 0x1bf2b
leaq -0x88(%rbp), %rdi
callq 0x169e0
leaq -0x58(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x934f(%rip), %rsi      # 0x1bee1
leaq 0x934b(%rip), %rdx      # 0x1bee4
leaq -0x68(%rbp), %rdi
callq 0x169e0
leaq -0xa8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0x68(%rbp), %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x4fd9
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x12bd3
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12beb
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xa8(%rbp), %rdi
cmpq %r14, %rdi
je 0x12c06
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x31d0
movq 0x107ab(%rip), %rsi     # 0x233b8
leaq 0x9318(%rip), %rdi      # 0x1bf2c
xorl %eax, %eax
callq 0x151ad
movq 0x1070e(%rip), %rax     # 0x23330
subq 0x106ff(%rip), %rax     # 0x23328
sarq $0x2, %rax
movq %rax, 0x1070c(%rip)     # 0x23340
movq 0x106dd(%rip), %rax     # 0x23318
subq 0x106ce(%rip), %rax     # 0x23310
sarq $0x2, %rax
movq %rax, 0x106fb(%rip)     # 0x23348
cmpl $0x3, 0x1098c(%rip)     # 0x235e0
jl 0x12d71
movq 0x1074f(%rip), %r13     # 0x233b0
testq %r13, %r13
je 0x12d71
leaq -0x38(%rbp), %rbx
leaq 0x8686(%rip), %r14      # 0x1b2fb
leaq 0x92d8(%rip), %r15      # 0x1bf54
xorl %r12d, %r12d
movq %rbx, -0x48(%rbp)
movq 0x8(%r13), %rsi
movq 0x10(%r13), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rdi
callq 0x16942
leaq 0x28(%r13), %rsi
leaq -0x3a8(%rbp), %rdi
callq 0x163a6
movq 0x70(%r13), %r9
movq %r9, -0x360(%rbp)
movq 0x78(%r13), %r8
movq %r8, -0x358(%rbp)
movb 0x80(%r13), %al
movb %al, -0x350(%rbp)
movq -0x48(%rbp), %rdx
testb $0x1, %al
movq %r14, %rcx
leaq 0x861c(%rip), %rax      # 0x1b2f6
cmovneq %rax, %rcx
movl -0x3a8(%rbp), %r10d
subq $0x8, %rsp
movq %r15, %rdi
movq %r12, %rsi
xorl %eax, %eax
pushq %r10
pushq -0x3a0(%rbp)
pushq -0x380(%rbp)
callq 0x15114
addq $0x20, %rsp
movq -0x380(%rbp), %rdi
leaq -0x370(%rbp), %rax
cmpq %rax, %rdi
je 0x12d2a
movq -0x370(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x3a0(%rbp), %rdi
leaq -0x390(%rbp), %rax
cmpq %rax, %rdi
je 0x12d4c
movq -0x390(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12d61
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x31d0
movq (%r13), %r13
incq %r12
testq %r13, %r13
jne 0x12c7f
addq $0x388, %rsp            # imm = 0x388
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
movq -0x68(%rbp), %rdi
cmpq %r12, %rdi
je 0x12da0
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12da0
movq %rax, %r15
movq -0x88(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12dbd
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12dbd
movq %rax, %r15
movq -0xa8(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x98(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0xc8(%rbp), %rdi
cmpq %r12, %rdi
je 0x12dfc
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12dfc
movq %rax, %r15
movq -0xe8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12e1c
movq -0xd8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12e1c
movq %rax, %r15
movq -0x108(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0xf8(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x128(%rbp), %rdi
cmpq %r12, %rdi
je 0x12e5b
movq -0x118(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12e5b
movq %rax, %r15
movq -0x148(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12e7b
movq -0x138(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12e7b
movq %rax, %r15
movq -0x168(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x158(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x188(%rbp), %rdi
cmpq %r12, %rdi
je 0x12eba
movq -0x178(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12eba
movq %rax, %r15
movq -0x1a8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12eda
movq -0x198(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12eda
movq %rax, %r15
movq -0x1c8(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x1b8(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x1e8(%rbp), %rdi
cmpq %r12, %rdi
je 0x12f19
movq -0x1d8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12f19
movq %rax, %r15
movq -0x208(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12f39
movq -0x1f8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12f39
movq %rax, %r15
movq -0x228(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x218(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x248(%rbp), %rdi
cmpq %r12, %rdi
je 0x12f78
movq -0x238(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12f78
movq %rax, %r15
movq -0x268(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12f98
movq -0x258(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12f98
movq %rax, %r15
movq -0x288(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x278(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x2a8(%rbp), %rdi
cmpq %r12, %rdi
je 0x12fd7
movq -0x298(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12fd7
movq %rax, %r15
movq -0x2c8(%rbp), %rdi
cmpq %rbx, %rdi
je 0x12ff7
movq -0x2b8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x12ff7
movq %rax, %r15
movq -0x2e8(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x2d8(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x308(%rbp), %rdi
cmpq %r12, %rdi
je 0x1302f
movq -0x2f8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x1302f
movq %rax, %r15
movq -0x328(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1304f
movq -0x318(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0x1304f
movq %rax, %r15
movq -0x348(%rbp), %rdi
cmpq %r14, %rdi
je 0x1307c
movq -0x338(%rbp), %rsi
jmp 0x13074
movq %rax, %r15
movq -0x48(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1307c
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %r15, %rdi
callq 0x3320