// File: yanlinlin82[P]icpp/icpp.cpp
// Function: build_code_for_op(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string build_code_for_op(string a_type, string op_name, string b_type)
{
	if (a_type == "int" && b_type == "int") {
		if      (op_name == "+" ) add_assembly_code(ADD);
		else if (op_name == "-" ) add_assembly_code(SUB);
		else if (op_name == "*" ) add_assembly_code(MUL);
		else if (op_name == "/" ) add_assembly_code(DIV);
		else if (op_name == "%" ) add_assembly_code(MOD);
		else if (op_name == "<<") add_assembly_code(SHL);
		else if (op_name == ">>") add_assembly_code(SHR);
		else if (op_name == "&" ) add_assembly_code(AND);
		else if (op_name == "|" ) add_assembly_code(OR);
		else if (op_name == "==") add_assembly_code(EQ);
		else if (op_name == "!=") add_assembly_code(NE);
		else if (op_name == ">=") add_assembly_code(GE);
		else if (op_name == ">" ) add_assembly_code(GT);
		else if (op_name == "<=") add_assembly_code(LE);
		else if (op_name == "<" ) add_assembly_code(LT);
		else if (op_name == "&&") add_assembly_code(LAND);
		else if (op_name == "||") add_assembly_code(LOR);
		else err("Unsupported operator '%s'\n", op_name.c_str());
		return "int";
	} else {
		string name = "operator" + op_name + "(" + a_type + "," + b_type + ")";
		auto it = symbols.find(name);
		if (it == symbols.end()) {
			err("Unknown function '%s'\n", name.c_str());
		}
		auto [ is_code, offset, size, type_name, ret_type, arg_count ] = it->second;
		if (!is_code) {
			err("symbol '%s' is not a function!\n", name.c_str());
		}
		add_assembly_code(PUSH);
		add_assembly_code(CALL, offset, ret_type + " " + name);
		return ret_type;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x580, %rsp            # imm = 0x580
movq %rcx, -0x4c8(%rbp)
movq %rdx, -0x4c0(%rbp)
movq %rsi, -0x4b8(%rbp)
movq %rdi, %rax
movq -0x4b8(%rbp), %rdi
movq %rax, -0x4b0(%rbp)
movq %rax, %rsi
movq %rsi, -0x4a8(%rbp)
movq %rax, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
leaq 0x2f372(%rip), %rsi     # 0x37e24
callq 0x1a9c0
testb $0x1, %al
jne 0x8ac0
jmp 0x973d
movq -0x4c8(%rbp), %rdi
leaq 0x2f356(%rip), %rsi     # 0x37e24
callq 0x1a9c0
testb $0x1, %al
jne 0x8adc
jmp 0x973d
movq -0x4c0(%rbp), %rdi
leaq 0x2e61f(%rip), %rsi     # 0x37109
callq 0x1a9c0
testb $0x1, %al
jne 0x8af8
jmp 0x8b7b
leaq -0x41(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x3470
movq -0x4d0(%rbp), %rdx
leaq 0x2f8ae(%rip), %rsi     # 0x383c4
leaq -0x40(%rbp), %rdi
callq 0x199b0
jmp 0x8b21
movl $0xd, %edi
xorl %esi, %esi
leaq -0x40(%rbp), %rdx
callq 0x56e0
jmp 0x8b33
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x41(%rbp), %rdi
callq 0x32b0
jmp 0x96e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8b6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x41(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e583(%rip), %rsi     # 0x3710c
callq 0x1a9c0
testb $0x1, %al
jne 0x8b97
jmp 0x8c1a
leaq -0x79(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x3470
movq -0x4d8(%rbp), %rdx
leaq 0x2f80f(%rip), %rsi     # 0x383c4
leaq -0x78(%rbp), %rdi
callq 0x199b0
jmp 0x8bc0
movl $0xe, %edi
xorl %esi, %esi
leaq -0x78(%rbp), %rdx
callq 0x56e0
jmp 0x8bd2
leaq -0x78(%rbp), %rdi
callq 0x34d8
leaq -0x79(%rbp), %rdi
callq 0x32b0
jmp 0x96de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8c0c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x34d8
leaq -0x79(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e4e9(%rip), %rsi     # 0x37111
callq 0x1a9c0
testb $0x1, %al
jne 0x8c36
jmp 0x8cce
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x3470
movq -0x4e0(%rbp), %rdx
leaq 0x2f76d(%rip), %rsi     # 0x383c4
leaq -0xa0(%rbp), %rdi
callq 0x199b0
jmp 0x8c65
movl $0xf, %edi
xorl %esi, %esi
leaq -0xa0(%rbp), %rdx
callq 0x56e0
jmp 0x8c7a
leaq -0xa0(%rbp), %rdi
callq 0x34d8
leaq -0xa1(%rbp), %rdi
callq 0x32b0
jmp 0x96dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x34d8
leaq -0xa1(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e43b(%rip), %rsi     # 0x37117
callq 0x1a9c0
testb $0x1, %al
jne 0x8cea
jmp 0x8d82
leaq -0xc9(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x3470
movq -0x4e8(%rbp), %rdx
leaq 0x2f6b9(%rip), %rsi     # 0x383c4
leaq -0xc8(%rbp), %rdi
callq 0x199b0
jmp 0x8d19
movl $0x10, %edi
xorl %esi, %esi
leaq -0xc8(%rbp), %rdx
callq 0x56e0
jmp 0x8d2e
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xc9(%rbp), %rdi
callq 0x32b0
jmp 0x96da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8d71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xc9(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e389(%rip), %rsi     # 0x37119
callq 0x1a9c0
testb $0x1, %al
jne 0x8d9e
jmp 0x8e36
leaq -0xf1(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x3470
movq -0x4f0(%rbp), %rdx
leaq 0x2f605(%rip), %rsi     # 0x383c4
leaq -0xf0(%rbp), %rdi
callq 0x199b0
jmp 0x8dcd
movl $0x11, %edi
xorl %esi, %esi
leaq -0xf0(%rbp), %rdx
callq 0x56e0
jmp 0x8de2
leaq -0xf0(%rbp), %rdi
callq 0x34d8
leaq -0xf1(%rbp), %rdi
callq 0x32b0
jmp 0x96d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8e25
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x34d8
leaq -0xf1(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2efd5(%rip), %rsi     # 0x37e19
callq 0x1a9c0
testb $0x1, %al
jne 0x8e52
jmp 0x8eea
leaq -0x119(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x3470
movq -0x4f8(%rbp), %rdx
leaq 0x2f551(%rip), %rsi     # 0x383c4
leaq -0x118(%rbp), %rdi
callq 0x199b0
jmp 0x8e81
movl $0x15, %edi
xorl %esi, %esi
leaq -0x118(%rbp), %rdx
callq 0x56e0
jmp 0x8e96
leaq -0x118(%rbp), %rdi
callq 0x34d8
leaq -0x119(%rbp), %rdi
callq 0x32b0
jmp 0x96d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8ed9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x34d8
leaq -0x119(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e223(%rip), %rsi     # 0x3711b
callq 0x1a9c0
testb $0x1, %al
jne 0x8f06
jmp 0x8f9e
leaq -0x141(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x3470
movq -0x500(%rbp), %rdx
leaq 0x2f49d(%rip), %rsi     # 0x383c4
leaq -0x140(%rbp), %rdi
callq 0x199b0
jmp 0x8f35
movl $0x16, %edi
xorl %esi, %esi
leaq -0x140(%rbp), %rdx
callq 0x56e0
jmp 0x8f4a
leaq -0x140(%rbp), %rdi
callq 0x34d8
leaq -0x141(%rbp), %rdi
callq 0x32b0
jmp 0x96d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x8f8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x34d8
leaq -0x141(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e17f(%rip), %rsi     # 0x3712b
callq 0x1a9c0
testb $0x1, %al
jne 0x8fba
jmp 0x9052
leaq -0x169(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x3470
movq -0x508(%rbp), %rdx
leaq 0x2f3e9(%rip), %rsi     # 0x383c4
leaq -0x168(%rbp), %rdi
callq 0x199b0
jmp 0x8fe9
movl $0x17, %edi
xorl %esi, %esi
leaq -0x168(%rbp), %rdx
callq 0x56e0
jmp 0x8ffe
leaq -0x168(%rbp), %rdi
callq 0x34d8
leaq -0x169(%rbp), %rdi
callq 0x32b0
jmp 0x96d2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9041
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x34d8
leaq -0x169(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e0ce(%rip), %rsi     # 0x3712e
callq 0x1a9c0
testb $0x1, %al
jne 0x906e
jmp 0x9106
leaq -0x191(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x3470
movq -0x510(%rbp), %rdx
leaq 0x2f335(%rip), %rsi     # 0x383c4
leaq -0x190(%rbp), %rdi
callq 0x199b0
jmp 0x909d
movl $0x18, %edi
xorl %esi, %esi
leaq -0x190(%rbp), %rdx
callq 0x56e0
jmp 0x90b2
leaq -0x190(%rbp), %rdi
callq 0x34d8
leaq -0x191(%rbp), %rdi
callq 0x32b0
jmp 0x96d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x90f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x34d8
leaq -0x191(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e00e(%rip), %rsi     # 0x37122
callq 0x1a9c0
testb $0x1, %al
jne 0x9122
jmp 0x91ba
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x518(%rbp)
callq 0x3470
movq -0x518(%rbp), %rdx
leaq 0x2f281(%rip), %rsi     # 0x383c4
leaq -0x1b8(%rbp), %rdi
callq 0x199b0
jmp 0x9151
movl $0x1a, %edi
xorl %esi, %esi
leaq -0x1b8(%rbp), %rdx
callq 0x56e0
jmp 0x9166
leaq -0x1b8(%rbp), %rdi
callq 0x34d8
leaq -0x1b9(%rbp), %rdi
callq 0x32b0
jmp 0x96ce
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x91a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x34d8
leaq -0x1b9(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2df5d(%rip), %rsi     # 0x37125
callq 0x1a9c0
testb $0x1, %al
jne 0x91d6
jmp 0x926e
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x3470
movq -0x520(%rbp), %rdx
leaq 0x2f1cd(%rip), %rsi     # 0x383c4
leaq -0x1e0(%rbp), %rdi
callq 0x199b0
jmp 0x9205
movl $0x1b, %edi
xorl %esi, %esi
leaq -0x1e0(%rbp), %rdx
callq 0x56e0
jmp 0x921a
leaq -0x1e0(%rbp), %rdi
callq 0x34d8
leaq -0x1e1(%rbp), %rdi
callq 0x32b0
jmp 0x96cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x925d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x34d8
leaq -0x1e1(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2dec6(%rip), %rsi     # 0x37142
callq 0x1a9c0
testb $0x1, %al
jne 0x928a
jmp 0x9322
leaq -0x209(%rbp), %rdi
movq %rdi, -0x528(%rbp)
callq 0x3470
movq -0x528(%rbp), %rdx
leaq 0x2f119(%rip), %rsi     # 0x383c4
leaq -0x208(%rbp), %rdi
callq 0x199b0
jmp 0x92b9
movl $0x1c, %edi
xorl %esi, %esi
leaq -0x208(%rbp), %rdx
callq 0x56e0
jmp 0x92ce
leaq -0x208(%rbp), %rdi
callq 0x34d8
leaq -0x209(%rbp), %rdi
callq 0x32b0
jmp 0x96ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9311
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x34d8
leaq -0x209(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e07d(%rip), %rsi     # 0x373ad
callq 0x1a9c0
testb $0x1, %al
jne 0x933e
jmp 0x93d6
leaq -0x231(%rbp), %rdi
movq %rdi, -0x530(%rbp)
callq 0x3470
movq -0x530(%rbp), %rdx
leaq 0x2f065(%rip), %rsi     # 0x383c4
leaq -0x230(%rbp), %rdi
callq 0x199b0
jmp 0x936d
movl $0x1d, %edi
xorl %esi, %esi
leaq -0x230(%rbp), %rdx
callq 0x56e0
jmp 0x9382
leaq -0x230(%rbp), %rdi
callq 0x34d8
leaq -0x231(%rbp), %rdi
callq 0x32b0
jmp 0x96c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x93c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x34d8
leaq -0x231(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2dd62(%rip), %rsi     # 0x37146
callq 0x1a9c0
testb $0x1, %al
jne 0x93f2
jmp 0x948a
leaq -0x259(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x3470
movq -0x538(%rbp), %rdx
leaq 0x2efb1(%rip), %rsi     # 0x383c4
leaq -0x258(%rbp), %rdi
callq 0x199b0
jmp 0x9421
movl $0x1e, %edi
xorl %esi, %esi
leaq -0x258(%rbp), %rdx
callq 0x56e0
jmp 0x9436
leaq -0x258(%rbp), %rdi
callq 0x34d8
leaq -0x259(%rbp), %rdi
callq 0x32b0
jmp 0x96c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9479
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x34d8
leaq -0x259(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2e982(%rip), %rsi     # 0x37e1a
callq 0x1a9c0
testb $0x1, %al
jne 0x94a6
jmp 0x953e
leaq -0x281(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x3470
movq -0x540(%rbp), %rdx
leaq 0x2eefd(%rip), %rsi     # 0x383c4
leaq -0x280(%rbp), %rdi
callq 0x199b0
jmp 0x94d5
movl $0x1f, %edi
xorl %esi, %esi
leaq -0x280(%rbp), %rdx
callq 0x56e0
jmp 0x94ea
leaq -0x280(%rbp), %rdi
callq 0x34d8
leaq -0x281(%rbp), %rdi
callq 0x32b0
jmp 0x96c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x952d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x34d8
leaq -0x281(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2dbde(%rip), %rsi     # 0x3712a
callq 0x1a9c0
testb $0x1, %al
jne 0x955a
jmp 0x95f2
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x3470
movq -0x548(%rbp), %rdx
leaq 0x2ee49(%rip), %rsi     # 0x383c4
leaq -0x2a8(%rbp), %rdi
callq 0x199b0
jmp 0x9589
movl $0x20, %edi
xorl %esi, %esi
leaq -0x2a8(%rbp), %rdx
callq 0x56e0
jmp 0x959e
leaq -0x2a8(%rbp), %rdi
callq 0x34d8
leaq -0x2a9(%rbp), %rdi
callq 0x32b0
jmp 0x96c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x95e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x34d8
leaq -0x2a9(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
leaq 0x2db2d(%rip), %rsi     # 0x3712d
callq 0x1a9c0
testb $0x1, %al
jne 0x960e
jmp 0x96a3
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x3470
movq -0x550(%rbp), %rdx
leaq 0x2ed95(%rip), %rsi     # 0x383c4
leaq -0x2d0(%rbp), %rdi
callq 0x199b0
jmp 0x963d
movl $0x21, %edi
xorl %esi, %esi
leaq -0x2d0(%rbp), %rdx
callq 0x56e0
jmp 0x9652
leaq -0x2d0(%rbp), %rdi
callq 0x34d8
leaq -0x2d1(%rbp), %rdi
callq 0x32b0
jmp 0x96c0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9692
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x34d8
leaq -0x2d1(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq 0x2df40(%rip), %rdi     # 0x375f9
movb $0x0, %al
callq 0x1a780
jmp 0x96c2
jmp 0x96c4
jmp 0x96c6
jmp 0x96c8
jmp 0x96ca
jmp 0x96cc
jmp 0x96ce
jmp 0x96d0
jmp 0x96d2
jmp 0x96d4
jmp 0x96d6
jmp 0x96d8
jmp 0x96da
jmp 0x96dc
jmp 0x96de
jmp 0x96e0
leaq -0x2d2(%rbp), %rdi
movq %rdi, -0x558(%rbp)
callq 0x3470
movq -0x4b0(%rbp), %rdi
movq -0x558(%rbp), %rdx
leaq 0x2e71c(%rip), %rsi     # 0x37e24
callq 0x199b0
jmp 0x970f
leaq -0x2d2(%rbp), %rdi
callq 0x32b0
jmp 0x9b90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2d2(%rbp), %rdi
callq 0x32b0
jmp 0x9ba0
movq -0x4c0(%rbp), %rdx
leaq 0x2dec9(%rip), %rsi     # 0x37614
leaq -0x398(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x1b340
movq -0x560(%rbp), %rsi
leaq 0x2e19b(%rip), %rdx     # 0x37907
leaq -0x378(%rbp), %rdi
callq 0x1a4a0
jmp 0x977a
movq -0x4b8(%rbp), %rdx
leaq -0x358(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0x1a4f0
jmp 0x9796
leaq 0x2d9af(%rip), %rdx     # 0x3714c
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x1a4a0
jmp 0x97b2
movq -0x4c8(%rbp), %rdx
leaq -0x318(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x1a4f0
jmp 0x97ce
leaq 0x2e2f3(%rip), %rdx     # 0x37ac8
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x1a4a0
jmp 0x97ea
leaq -0x318(%rbp), %rdi
callq 0x34d8
leaq -0x338(%rbp), %rdi
callq 0x34d8
leaq -0x358(%rbp), %rdi
callq 0x34d8
leaq -0x378(%rbp), %rdi
callq 0x34d8
leaq -0x398(%rbp), %rdi
callq 0x34d8
leaq 0x46dbb(%rip), %rdi     # 0x505e8
leaq -0x2f8(%rbp), %rsi
callq 0x1af30
movq %rax, -0x568(%rbp)
jmp 0x9842
movq -0x568(%rbp), %rax
movq %rax, -0x3a0(%rbp)
leaq 0x46d91(%rip), %rdi     # 0x505e8
callq 0x1af90
movq %rax, -0x3a8(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x1af60
testb $0x1, %al
jne 0x987f
jmp 0x9939
leaq -0x2f8(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq 0x2dd88(%rip), %rdi     # 0x3761d
xorl %eax, %eax
callq 0x1a780
jmp 0x989e
jmp 0x9939
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9917
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x990b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x98ff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x98f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x34d8
leaq -0x338(%rbp), %rdi
callq 0x34d8
leaq -0x358(%rbp), %rdi
callq 0x34d8
leaq -0x378(%rbp), %rdi
callq 0x34d8
leaq -0x398(%rbp), %rdi
callq 0x34d8
jmp 0x9ba0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9b82
leaq -0x3a0(%rbp), %rdi
callq 0x1afc0
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x408(%rbp), %rdi
callq 0x1aff0
jmp 0x995a
leaq -0x408(%rbp), %rdi
callq 0x1b020
movq %rax, -0x410(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1b040
movq %rax, -0x418(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1b060
movq %rax, -0x420(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1b080
movq %rax, -0x428(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1b0a0
movq %rax, -0x430(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x1b0c0
movq %rax, -0x438(%rbp)
movq -0x410(%rbp), %rax
testb $0x1, (%rax)
jne 0x9a0a
leaq -0x2f8(%rbp), %rdi
callq 0x3110
movq %rax, %rsi
leaq 0x2dc46(%rip), %rdi     # 0x37634
xorl %eax, %eax
callq 0x1a780
jmp 0x99f7
jmp 0x9a0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9b76
leaq -0x459(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x3470
movq -0x570(%rbp), %rdx
leaq 0x2e999(%rip), %rsi     # 0x383c4
leaq -0x458(%rbp), %rdi
callq 0x199b0
jmp 0x9a39
movl $0x1, %edi
xorl %esi, %esi
leaq -0x458(%rbp), %rdx
callq 0x56e0
jmp 0x9a4e
leaq -0x458(%rbp), %rdi
callq 0x34d8
leaq -0x459(%rbp), %rdi
callq 0x32b0
movq -0x418(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x574(%rbp)
movq -0x430(%rbp), %rsi
leaq 0x2d73d(%rip), %rdx     # 0x371c0
leaq -0x4a0(%rbp), %rdi
callq 0x1a540
jmp 0x9a91
leaq -0x480(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
callq 0x1a4f0
jmp 0x9aad
movl -0x574(%rbp), %esi
movl $0x25, %edi
leaq -0x480(%rbp), %rdx
callq 0x56e0
jmp 0x9ac6
leaq -0x480(%rbp), %rdi
callq 0x34d8
leaq -0x4a0(%rbp), %rdi
callq 0x34d8
movq -0x4b0(%rbp), %rdi
movq -0x430(%rbp), %rsi
callq 0x3120
jmp 0x9af3
leaq -0x408(%rbp), %rdi
callq 0x198d0
leaq -0x2f8(%rbp), %rdi
callq 0x34d8
jmp 0x9b90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9b36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x34d8
leaq -0x459(%rbp), %rdi
callq 0x32b0
jmp 0x9b76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9b6a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x34d8
leaq -0x4a0(%rbp), %rdi
callq 0x34d8
leaq -0x408(%rbp), %rdi
callq 0x198d0
leaq -0x2f8(%rbp), %rdi
callq 0x34d8
jmp 0x9ba0
movq -0x4a8(%rbp), %rax
addq $0x580, %rsp            # imm = 0x580
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x3460
nopl (%rax)