// File: yanlinlin82[P]icpp/icpp.cpp
// Function: parse_declare()
void parse_declare()
{
	string type_name = parse_type_name();
	string type_prefix = type_name;
	string name = token; next();
	if (token == "(") { // function
		log<3>("[DEBUG] => function '%s', type='%s'\n", name.c_str(), type_name.c_str());
		if (!scopes.empty() && scopes.back().first != "function") {
			err("nesting function is not allowed!\n");
		}
		next();
		vector<pair<string, string>> args; // [ { type, name } ]
		if (token != ")") {
			for (;;) {
				string arg_type_name = parse_type_name();
				string arg_name = token; next();
				args.push_back(make_pair(arg_type_name, arg_name));
				if (token != ",") break;
				next();
			}
		}
		expect_token(")", "function " + name);
		string args_type = "(";
		for (size_t i = 0; i < args.size(); ++i) {
			args_type += (i == 0 ? "" : ",") + args[i].first;
		}
		args_type += ")";
		add_code_symbol(name, args_type, type_name, args.size());
		scopes.push_back(make_pair("function", name));
		current_function = make_tuple(name, args_type, type_name, args.size());
		next();
		expect_token("{", "function '" + name + "', '" + name + type_name + "'");
		size_t offset = add_assembly_code(ENTER);
		stack_frame_table.push_back(make_pair(offset + 1, unordered_map<string, tuple<int, int, string>>()));
		for (size_t i = 0; i < args.size(); ++i) {
			add_argument(args[i].second, args[i].first, args.size() - i + 1);
		}
	} else { // variable
		log<3>("[DEBUG] => variable '%s', type='%s'\n", name.c_str(), type_name.c_str());
		for (;;) {
			if (token == "[") {
				next();
				vector<int> dim;
				for (;;) {
					int size = 0; // size undetermined
					if (token != "]") {
						if (type != number) err("invalid array size '%s'! it should be a number.\n", token.c_str());
						size = eval_number(token);
						if (size <= 0) err("invalid array size '%s'! it should be a positive integer!\n", token.c_str());
						next();
						expect_token("]", "array");
						next();
					}
					dim.push_back(size);
					if (token != "[") break;
					next();
				}
				int size = 1; for (auto d : dim) size *= d;
				if (verbose >= 3) {
					log("array dim = ["); for (size_t i = 0; i < dim.size(); ++i) log("%s%d", (i > 0 ? "," : ""), dim[i]); log("]\n");
				}
				if (!size && token != "=") err("missing array size!\n");
				if (token == "=") {
					next();
					vector<int> dim2 = dim;
					vector<int> cursor;
					vector<pair<vector<int>, int>> init;
					parse_init_value(dim, dim2, cursor, init);
					if (verbose >= 3) {
						for (size_t i = 0; i < init.size(); ++i) {
							log("init[%zd]: [", i);
							for (size_t j = 0; j < init[i].first.size(); ++j) {
								log("%s%d", (j == 0 ? "" : ", "), init[i].first[j]);
							}
							log("] = %d\n", init[i].second);
						}
					}
					size = 1; for (auto d : dim2) size *= d;
					assert(size > 0);
					type_name += array_suffix(dim2);
					auto [ is_global, offset ] = add_variable(name, size, type_name);
					unordered_map<int, pair<string, int>> index_to_val;
					for (size_t i = 0; i < init.size(); ++i) {
						const auto& cursor = init[i].first;
						int val = init[i].second;
						size_t index = 0;
						for (size_t j = 0; j < dim2.size(); ++j) {
							index = index * dim2[j] + cursor[j];
						}
						string s = name + "[";
						for (size_t j = 0; j < cursor.size(); ++j) {
							if (j > 0) s += "][";
							s += to_string(cursor[j]);
						}
						s += "]";
						index_to_val.insert(make_pair(index, make_pair(s, val)));
					}
					if (is_global) {
						for (int i = 0; i < size; ++i) {
							auto it = index_to_val.find(i);
							data_sec[offset + i] = (it == index_to_val.end() ? 0 : it->second.second);
						}
					} else {
						for (int i = 0; i < size; ++i) {
							auto it = index_to_val.find(i);
							add_assembly_code(MOV, (it == index_to_val.end() ? 0 : it->second.second));
							add_assembly_code(LPUT, offset + i, it->second.first);
						}
					}
					symbol_dim.insert(make_pair(name, make_pair(size, dim2)));
				} else {
					type_name += array_suffix(dim);
					add_variable(name, size, type_name);
				}
			} else {
				auto [ is_global, offset ] = add_variable(name, 1, type_name); // TODO: support non-int type
				if (token == "=") {
					next();
					parse_expression(",");
					if (is_global) {
						add_assembly_code(PUT, offset, name + "\t" + type_name);
					} else {
						add_assembly_code(LPUT, offset, name + "\t" + type_name);
					}
				}
			}
			if (token != ",") break;
			next();
			type_name = type_prefix;
			while (token == "*" || token == "&") {
				type_name += token;
				next();
			}
			name = token; next();
			log<3>("[DEBUG] => another variable '%s', type='%s'\n", name.c_str(), type_name.c_str());
		}
		expect_token(";", "variable");
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc40, %rsp            # imm = 0xC40
leaq -0x20(%rbp), %rdi
movq %rdi, -0xa80(%rbp)
callq 0x7080
movq -0xa80(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0x3120
jmp 0xfcfd
leaq 0x407e4(%rip), %rsi     # 0x504e8
leaq -0x70(%rbp), %rdi
callq 0x3120
jmp 0xfd0f
callq 0x6030
jmp 0xfd16
leaq 0x407cb(%rip), %rdi     # 0x504e8
leaq 0x27be3(%rip), %rsi     # 0x37907
callq 0x1a9c0
movb %al, -0xa81(%rbp)
jmp 0xfd31
movb -0xa81(%rbp), %al
testb $0x1, %al
jne 0xfd40
jmp 0x10837
leaq -0x70(%rbp), %rdi
callq 0x3110
movq %rax, -0xa90(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3110
movq -0xa90(%rbp), %rsi
movq %rax, %rdx
leaq 0x27c18(%rip), %rdi     # 0x37982
xorl %eax, %eax
callq 0x19760
jmp 0xfd73
leaq 0x4078e(%rip), %rdi     # 0x50508
callq 0x1baf0
testb $0x1, %al
jne 0xfdf7
leaq 0x4077e(%rip), %rdi     # 0x50508
callq 0x1bb30
movq %rax, %rdi
leaq 0x278d3(%rip), %rsi     # 0x3766c
callq 0x1b450
movb %al, -0xa91(%rbp)
jmp 0xfda6
movb -0xa91(%rbp), %al
testb $0x1, %al
jne 0xfdb2
jmp 0xfdf7
leaq 0x27bee(%rip), %rdi     # 0x379a7
xorl %eax, %eax
callq 0x1a780
jmp 0xfdc2
jmp 0xfdf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11e33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11e2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11e21
callq 0x6030
jmp 0xfdfe
leaq -0x88(%rbp), %rdi
callq 0x19020
leaq 0x406d7(%rip), %rdi     # 0x504e8
leaq 0x27cb0(%rip), %rsi     # 0x37ac8
callq 0x1b450
movb %al, -0xa92(%rbp)
jmp 0xfe25
movb -0xa92(%rbp), %al
testb $0x1, %al
jne 0xfe34
jmp 0xff72
jmp 0xfe36
leaq -0xa8(%rbp), %rdi
callq 0x7080
jmp 0xfe44
leaq 0x4069d(%rip), %rsi     # 0x504e8
leaq -0xc8(%rbp), %rdi
callq 0x3120
jmp 0xfe59
callq 0x6030
jmp 0xfe60
leaq -0x108(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
callq 0x1bba0
jmp 0xfe7c
leaq -0x88(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x1bb70
jmp 0xfe91
leaq -0x108(%rbp), %rdi
callq 0x1bbe0
leaq 0x40644(%rip), %rdi     # 0x504e8
leaq 0x272a1(%rip), %rsi     # 0x3714c
callq 0x1b450
movb %al, -0xa93(%rbp)
jmp 0xfeb8
movb -0xa93(%rbp), %al
testb $0x1, %al
jne 0xfec4
jmp 0xff17
movl $0x2, -0x10c(%rbp)
jmp 0xff28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xff5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0xff53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x1bbe0
jmp 0xff53
callq 0x6030
jmp 0xff1e
movl $0x0, -0x10c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xa8(%rbp), %rdi
callq 0x34d8
movl -0x10c(%rbp), %eax
testl %eax, %eax
je 0xff4e
jmp 0xff4c
jmp 0xff70
jmp 0xfe36
leaq -0xc8(%rbp), %rdi
callq 0x34d8
leaq -0xa8(%rbp), %rdi
callq 0x34d8
jmp 0x10826
jmp 0xff72
leaq -0x131(%rbp), %rdi
movq %rdi, -0xaa0(%rbp)
callq 0x3470
movq -0xaa0(%rbp), %rdx
leaq 0x27b35(%rip), %rsi     # 0x37ac8
leaq -0x130(%rbp), %rdi
callq 0x199b0
jmp 0xffa1
leaq 0x27a21(%rip), %rsi     # 0x379c9
leaq -0x158(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x1b340
jmp 0xffba
leaq -0x130(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x6790
jmp 0xffcf
leaq -0x158(%rbp), %rdi
callq 0x34d8
leaq -0x130(%rbp), %rdi
callq 0x34d8
leaq -0x131(%rbp), %rdi
callq 0x32b0
leaq -0x179(%rbp), %rdi
movq %rdi, -0xaa8(%rbp)
callq 0x3470
movq -0xaa8(%rbp), %rdx
leaq 0x278f3(%rip), %rsi     # 0x37907
leaq -0x178(%rbp), %rdi
callq 0x199b0
jmp 0x10022
leaq -0x179(%rbp), %rdi
callq 0x32b0
movq $0x0, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0xab0(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x1bc10
movq %rax, %rcx
movq -0xab0(%rbp), %rax
cmpq %rcx, %rax
jae 0x10181
movq -0x188(%rbp), %rsi
testq %rsi, %rsi
leaq 0x2834d(%rip), %rcx     # 0x383c4
leaq 0x270ce(%rip), %rax     # 0x3714c
cmoveq %rcx, %rax
movq %rax, -0xab8(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x1bc30
movq -0xab8(%rbp), %rsi
movq %rax, %rdx
leaq -0x1a8(%rbp), %rdi
callq 0x1b340
jmp 0x100ad
leaq -0x178(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x3330
jmp 0x100c2
leaq -0x1a8(%rbp), %rdi
callq 0x34d8
movq -0x188(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x188(%rbp)
jmp 0x10039
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10125
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10119
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x34d8
leaq -0x130(%rbp), %rdi
callq 0x34d8
leaq -0x131(%rbp), %rdi
callq 0x32b0
jmp 0x10826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x179(%rbp), %rdi
callq 0x32b0
jmp 0x10826
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x34d8
jmp 0x1081a
leaq 0x27940(%rip), %rsi     # 0x37ac8
leaq -0x178(%rbp), %rdi
callq 0x3240
jmp 0x10196
leaq -0x1c8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3120
jmp 0x101a8
leaq -0x1e8(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x3120
jmp 0x101bd
leaq -0x208(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3120
jmp 0x101cf
leaq -0x88(%rbp), %rdi
callq 0x1bc10
movl %eax, %ecx
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
leaq -0x208(%rbp), %rdx
callq 0x5370
jmp 0x101f9
leaq -0x208(%rbp), %rdi
callq 0x34d8
leaq -0x1e8(%rbp), %rdi
callq 0x34d8
leaq -0x1c8(%rbp), %rdi
callq 0x34d8
leaq 0x27448(%rip), %rsi     # 0x3766c
leaq -0x270(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x1bc50
jmp 0x10236
leaq -0x248(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x1bc90
jmp 0x1024b
leaq 0x402b6(%rip), %rdi     # 0x50508
leaq -0x248(%rbp), %rsi
callq 0x1bb70
jmp 0x10260
leaq -0x248(%rbp), %rdi
callq 0x1bbe0
leaq -0x270(%rbp), %rdi
callq 0x1bd20
leaq -0x88(%rbp), %rdi
callq 0x1bc10
movq %rax, -0x2e0(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x178(%rbp), %rdx
leaq -0x20(%rbp), %rcx
leaq -0x2e0(%rbp), %r8
callq 0x1bd40
jmp 0x102af
leaq 0x40482(%rip), %rdi     # 0x50738
leaq -0x2d8(%rbp), %rsi
movq %rsi, -0xac0(%rbp)
callq 0x1bd90
movq -0xac0(%rbp), %rdi
callq 0x1bdd0
callq 0x6030
jmp 0x102dc
leaq -0x301(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x3470
movq -0xac8(%rbp), %rdx
leaq 0x270b5(%rip), %rsi     # 0x373b2
leaq -0x300(%rbp), %rdi
callq 0x199b0
jmp 0x1030b
leaq 0x27363(%rip), %rsi     # 0x37675
leaq -0x3a8(%rbp), %rdi
leaq -0x70(%rbp), %rdx
callq 0x1b340
jmp 0x10324
leaq 0x276a8(%rip), %rdx     # 0x379d3
leaq -0x388(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x1a4a0
jmp 0x10340
leaq -0x368(%rbp), %rdi
leaq -0x388(%rbp), %rsi
leaq -0x70(%rbp), %rdx
callq 0x1a4f0
jmp 0x10359
leaq -0x348(%rbp), %rdi
leaq -0x368(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x1a4f0
jmp 0x10372
leaq 0x2765d(%rip), %rdx     # 0x379d6
leaq -0x328(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0x1a4a0
jmp 0x1038e
leaq -0x300(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x6790
jmp 0x103a3
leaq -0x328(%rbp), %rdi
callq 0x34d8
leaq -0x348(%rbp), %rdi
callq 0x34d8
leaq -0x368(%rbp), %rdi
callq 0x34d8
leaq -0x388(%rbp), %rdi
callq 0x34d8
leaq -0x3a8(%rbp), %rdi
callq 0x34d8
leaq -0x300(%rbp), %rdi
callq 0x34d8
leaq -0x301(%rbp), %rdi
callq 0x32b0
leaq -0x3d1(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0x3470
movq -0xad0(%rbp), %rdx
leaq 0x27fac(%rip), %rsi     # 0x383c4
leaq -0x3d0(%rbp), %rdi
callq 0x199b0
jmp 0x10426
movl $0x23, %edi
xorl %esi, %esi
leaq -0x3d0(%rbp), %rdx
callq 0x56e0
movq %rax, -0xad8(%rbp)
jmp 0x10442
leaq -0x3d0(%rbp), %rdi
callq 0x34d8
leaq -0x3d1(%rbp), %rdi
callq 0x32b0
movq -0xad8(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movq -0x3b0(%rbp), %rax
incq %rax
movq %rax, -0x460(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x480(%rbp)
movaps %xmm0, -0x490(%rbp)
movaps %xmm0, -0x4a0(%rbp)
movq $0x0, -0x470(%rbp)
leaq -0x4a0(%rbp), %rdi
movq %rdi, -0xae0(%rbp)
callq 0x1be60
movq -0xae0(%rbp), %rdx
leaq -0x458(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x1be20
jmp 0x104cb
leaq -0x418(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0x1be80
jmp 0x104e0
leaq 0x400b1(%rip), %rdi     # 0x50598
leaq -0x418(%rbp), %rsi
callq 0x1bdf0
jmp 0x104f5
leaq -0x418(%rbp), %rdi
callq 0x1bec0
leaq -0x458(%rbp), %rdi
callq 0x1bee0
leaq -0x4a0(%rbp), %rdi
callq 0x1bf00
movq $0x0, -0x4a8(%rbp)
movq -0x4a8(%rbp), %rax
movq %rax, -0xae8(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x1bc10
movq %rax, %rcx
movq -0xae8(%rbp), %rax
cmpq %rcx, %rax
jae 0x107fd
movq -0x4a8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x1bc30
movq %rax, %rsi
addq $0x20, %rsi
leaq -0x4c8(%rbp), %rdi
callq 0x3120
jmp 0x10579
movq -0x4a8(%rbp), %rsi
leaq -0x88(%rbp), %rdi
callq 0x1bc30
movq %rax, %rsi
leaq -0x4e8(%rbp), %rdi
callq 0x3120
jmp 0x1059d
leaq -0x88(%rbp), %rdi
callq 0x1bc10
movq %rax, %rdx
movq -0x4a8(%rbp), %rax
subq %rax, %rdx
incq %rdx
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x5210
jmp 0x105ce
leaq -0x4e8(%rbp), %rdi
callq 0x34d8
leaq -0x4c8(%rbp), %rdi
callq 0x34d8
movq -0x4a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x4a8(%rbp)
jmp 0x10524
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1063d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10631
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x34d8
leaq -0x1e8(%rbp), %rdi
callq 0x34d8
leaq -0x1c8(%rbp), %rdi
callq 0x34d8
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x1bbe0
leaq -0x270(%rbp), %rdi
callq 0x1bd20
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10733
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10727
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1071b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1070f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10703
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x106f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x34d8
leaq -0x348(%rbp), %rdi
callq 0x34d8
leaq -0x368(%rbp), %rdi
callq 0x34d8
leaq -0x388(%rbp), %rdi
callq 0x34d8
leaq -0x3a8(%rbp), %rdi
callq 0x34d8
leaq -0x300(%rbp), %rdi
callq 0x34d8
leaq -0x301(%rbp), %rdi
callq 0x32b0
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1076a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x34d8
leaq -0x3d1(%rbp), %rdi
callq 0x32b0
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x107bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x107af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x1bec0
leaq -0x458(%rbp), %rdi
callq 0x1bee0
leaq -0x4a0(%rbp), %rdi
callq 0x1bf00
jmp 0x1081a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x107ef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x34d8
leaq -0x4c8(%rbp), %rdi
callq 0x34d8
jmp 0x1081a
leaq -0x178(%rbp), %rdi
callq 0x34d8
leaq -0x88(%rbp), %rdi
callq 0x19040
jmp 0x11dfd
leaq -0x178(%rbp), %rdi
callq 0x34d8
leaq -0x88(%rbp), %rdi
callq 0x19040
jmp 0x11e21
leaq -0x70(%rbp), %rdi
callq 0x3110
movq %rax, -0xaf0(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3110
movq -0xaf0(%rbp), %rsi
movq %rax, %rdx
leaq 0x27177(%rip), %rdi     # 0x379d8
xorl %eax, %eax
callq 0x19760
jmp 0x1086a
jmp 0x1086c
leaq 0x3fc75(%rip), %rdi     # 0x504e8
leaq 0x27228(%rip), %rsi     # 0x37aa2
callq 0x1a9c0
movb %al, -0xaf1(%rbp)
jmp 0x10887
movb -0xaf1(%rbp), %al
testb $0x1, %al
jne 0x10896
jmp 0x118c4
callq 0x6030
jmp 0x1089d
leaq -0x500(%rbp), %rdi
callq 0x190e0
movl $0x0, -0x504(%rbp)
leaq 0x3fc2e(%rip), %rdi     # 0x504e8
leaq 0x2688d(%rip), %rsi     # 0x3714e
callq 0x1b450
movb %al, -0xaf2(%rbp)
jmp 0x108ce
movb -0xaf2(%rbp), %al
testb $0x1, %al
jne 0x108dd
jmp 0x10ab0
cmpl $0x2, 0x3fbfc(%rip)     # 0x504e0
je 0x10918
leaq 0x3fbfb(%rip), %rdi     # 0x504e8
callq 0x3110
movq %rax, %rsi
leaq 0x27101(%rip), %rdi     # 0x379fd
xorl %eax, %eax
callq 0x1a780
jmp 0x10905
jmp 0x10918
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x118b3
leaq 0x3fbc9(%rip), %rsi     # 0x504e8
leaq -0x528(%rbp), %rdi
callq 0x3120
jmp 0x1092d
leaq -0x528(%rbp), %rdi
callq 0x6ba0
movl %eax, -0xaf8(%rbp)
jmp 0x10941
movl -0xaf8(%rbp), %eax
movl %eax, -0x504(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x34d8
cmpl $0x0, -0x504(%rbp)
jg 0x109a0
leaq 0x3fb7f(%rip), %rdi     # 0x504e8
callq 0x3110
movq %rax, %rsi
leaq 0x270b6(%rip), %rdi     # 0x37a2e
xorl %eax, %eax
callq 0x1a780
jmp 0x10981
jmp 0x109a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x528(%rbp), %rdi
callq 0x34d8
jmp 0x118b3
callq 0x6030
jmp 0x109a7
leaq -0x549(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
callq 0x3470
movq -0xb00(%rbp), %rdx
leaq 0x26786(%rip), %rsi     # 0x3714e
leaq -0x548(%rbp), %rdi
callq 0x199b0
jmp 0x109d6
leaq -0x571(%rbp), %rdi
movq %rdi, -0xb08(%rbp)
callq 0x3470
movq -0xb08(%rbp), %rdx
leaq 0x27072(%rip), %rsi     # 0x37a69
leaq -0x570(%rbp), %rdi
callq 0x199b0
jmp 0x10a05
leaq -0x548(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x6790
jmp 0x10a1a
leaq -0x570(%rbp), %rdi
callq 0x34d8
leaq -0x571(%rbp), %rdi
callq 0x32b0
leaq -0x548(%rbp), %rdi
callq 0x34d8
leaq -0x549(%rbp), %rdi
callq 0x32b0
callq 0x6030
jmp 0x10a51
jmp 0x10ab0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10a9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x10a87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x34d8
leaq -0x571(%rbp), %rdi
callq 0x32b0
leaq -0x548(%rbp), %rdi
callq 0x34d8
leaq -0x549(%rbp), %rdi
callq 0x32b0
jmp 0x118b3
leaq -0x500(%rbp), %rdi
leaq -0x504(%rbp), %rsi
callq 0x1a430
jmp 0x10ac5
leaq 0x3fa1c(%rip), %rdi     # 0x504e8
leaq 0x26fcf(%rip), %rsi     # 0x37aa2
callq 0x1b450
movb %al, -0xb09(%rbp)
jmp 0x10ae0
movb -0xb09(%rbp), %al
testb $0x1, %al
jne 0x10aec
jmp 0x10aee
jmp 0x10afa
callq 0x6030
jmp 0x10af5
jmp 0x108a9
movl $0x1, -0x578(%rbp)
leaq -0x500(%rbp), %rax
movq %rax, -0x580(%rbp)
movq -0x580(%rbp), %rdi
callq 0x19b80
movq %rax, -0x588(%rbp)
movq -0x580(%rbp), %rdi
callq 0x19b10
movq %rax, -0x590(%rbp)
leaq -0x588(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0x1bf20
testb $0x1, %al
jne 0x10b51
jmp 0x10b86
leaq -0x588(%rbp), %rdi
callq 0x1bf60
movl (%rax), %eax
movl %eax, -0x594(%rbp)
movl -0x594(%rbp), %eax
imull -0x578(%rbp), %eax
movl %eax, -0x578(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x1bf80
jmp 0x10b38
cmpl $0x3, 0x3fc9b(%rip)     # 0x50828
jl 0x10c4a
leaq 0x26ed5(%rip), %rdi     # 0x37a6f
xorl %eax, %eax
callq 0x19420
jmp 0x10ba3
movq $0x0, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rax
movq %rax, -0xb18(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x19990
movq %rax, %rcx
movq -0xb18(%rbp), %rax
cmpq %rcx, %rax
jae 0x10c38
movq -0x5a0(%rbp), %rsi
testq %rsi, %rsi
leaq 0x26564(%rip), %rcx     # 0x3714c
leaq 0x277d5(%rip), %rax     # 0x383c4
cmovneq %rcx, %rax
movq %rax, -0xb20(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x19cf0
movq -0xb20(%rbp), %rsi
movl (%rax), %edx
leaq 0x26e67(%rip), %rdi     # 0x37a7d
xorl %eax, %eax
callq 0x19420
jmp 0x10c1f
jmp 0x10c21
movq -0x5a0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5a0(%rbp)
jmp 0x10bae
leaq 0x27708(%rip), %rdi     # 0x38347
xorl %eax, %eax
callq 0x19420
jmp 0x10c48
jmp 0x10c4a
cmpl $0x0, -0x578(%rbp)
jne 0x10c8c
leaq 0x3f88e(%rip), %rdi     # 0x504e8
leaq 0x264c5(%rip), %rsi     # 0x37126
callq 0x1b450
movb %al, -0xb21(%rbp)
jmp 0x10c6e
movb -0xb21(%rbp), %al
testb $0x1, %al
jne 0x10c7a
jmp 0x10c8c
leaq 0x26e01(%rip), %rdi     # 0x37a82
xorl %eax, %eax
callq 0x1a780
jmp 0x10c8a
jmp 0x10c8c
leaq 0x3f855(%rip), %rdi     # 0x504e8
leaq 0x2648c(%rip), %rsi     # 0x37126
callq 0x1a9c0
movb %al, -0xb22(%rbp)
jmp 0x10ca7
movb -0xb22(%rbp), %al
testb $0x1, %al
jne 0x10cb6
jmp 0x11795
callq 0x6030
jmp 0x10cbd
leaq -0x5b8(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x1b870
jmp 0x10cd2
leaq -0x5d0(%rbp), %rdi
movq %rdi, -0xb38(%rbp)
callq 0x190e0
leaq -0x5e8(%rbp), %rdi
movq %rdi, -0xb30(%rbp)
callq 0x1bfa0
movq -0xb38(%rbp), %rdx
movq -0xb30(%rbp), %rcx
leaq -0x500(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0xf860
jmp 0x10d1b
cmpl $0x3, 0x3fb06(%rip)     # 0x50828
jl 0x10e87
movq $0x0, -0x5f0(%rbp)
movq -0x5f0(%rbp), %rax
movq %rax, -0xb40(%rbp)
leaq -0x5e8(%rbp), %rdi
callq 0x1bfc0
movq %rax, %rcx
movq -0xb40(%rbp), %rax
cmpq %rcx, %rax
jae 0x10e85
movq -0x5f0(%rbp), %rsi
leaq 0x26d29(%rip), %rdi     # 0x37a97
xorl %eax, %eax
callq 0x19420
jmp 0x10d77
movq $0x0, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rax
movq %rax, -0xb48(%rbp)
movq -0x5f0(%rbp), %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x1bfe0
movq %rax, %rdi
callq 0x19990
movq %rax, %rcx
movq -0xb48(%rbp), %rax
cmpq %rcx, %rax
jae 0x10e46
movq -0x5f8(%rbp), %rax
testq %rax, %rax
leaq 0x275f5(%rip), %rcx     # 0x383c4
leaq 0x263bc(%rip), %rax     # 0x37192
cmoveq %rcx, %rax
movq %rax, -0xb50(%rbp)
movq -0x5f0(%rbp), %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x1bfe0
movq %rax, %rdi
movq -0x5f8(%rbp), %rsi
callq 0x19cf0
movq -0xb50(%rbp), %rsi
movl (%rax), %edx
leaq 0x26c6a(%rip), %rdi     # 0x37a7d
xorl %eax, %eax
callq 0x19420
jmp 0x10e1c
jmp 0x10e1e
movq -0x5f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5f8(%rbp)
jmp 0x10d82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1176c
movq -0x5f0(%rbp), %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x1bfe0
movl 0x18(%rax), %esi
leaq 0x26c41(%rip), %rdi     # 0x37aa4
xorl %eax, %eax
callq 0x19420
jmp 0x10e6c
jmp 0x10e6e
movq -0x5f0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5f0(%rbp)
jmp 0x10d33
jmp 0x10e87
movl $0x1, -0x578(%rbp)
leaq -0x5b8(%rbp), %rax
movq %rax, -0x600(%rbp)
movq -0x600(%rbp), %rdi
callq 0x19b80
movq %rax, -0x608(%rbp)
movq -0x600(%rbp), %rdi
callq 0x19b10
movq %rax, -0x610(%rbp)
leaq -0x608(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0x1bf20
testb $0x1, %al
jne 0x10ede
jmp 0x10f13
leaq -0x608(%rbp), %rdi
callq 0x1bf60
movl (%rax), %eax
movl %eax, -0x614(%rbp)
movl -0x614(%rbp), %eax
imull -0x578(%rbp), %eax
movl %eax, -0x578(%rbp)
leaq -0x608(%rbp), %rdi
callq 0x1bf80
jmp 0x10ec5
cmpl $0x0, -0x578(%rbp)
jle 0x10f1e
jmp 0x10f3d
leaq 0x26b87(%rip), %rdi     # 0x37aac
leaq 0x2644b(%rip), %rsi     # 0x37377
movl $0x45f, %edx            # imm = 0x45F
leaq 0x26b7d(%rip), %rcx     # 0x37ab5
callq 0x31a0
leaq -0x638(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0xdd60
jmp 0x10f52
leaq -0x20(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x3330
jmp 0x10f64
leaq -0x638(%rbp), %rdi
callq 0x34d8
leaq -0x668(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3120
jmp 0x10f82
movl -0x578(%rbp), %eax
movl %eax, -0xb54(%rbp)
leaq -0x688(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3120
jmp 0x10fa0
movl -0xb54(%rbp), %esi
leaq -0x668(%rbp), %rdi
leaq -0x688(%rbp), %rdx
callq 0x4d00
movq %rdx, -0xb60(%rbp)
movb %al, -0xb55(%rbp)
jmp 0x10fc8
movq -0xb60(%rbp), %rax
movb -0xb55(%rbp), %cl
movb %cl, -0x648(%rbp)
movq %rax, -0x640(%rbp)
leaq -0x688(%rbp), %rdi
callq 0x34d8
leaq -0x668(%rbp), %rdi
callq 0x34d8
leaq -0x648(%rbp), %rdi
callq 0x1c000
movq %rax, -0x690(%rbp)
leaq -0x648(%rbp), %rdi
callq 0x1c020
movq %rax, -0x698(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x1c040
movq $0x0, -0x6d8(%rbp)
movq -0x6d8(%rbp), %rax
movq %rax, -0xb68(%rbp)
leaq -0x5e8(%rbp), %rdi
callq 0x1bfc0
movq %rax, %rcx
movq -0xb68(%rbp), %rax
cmpq %rcx, %rax
jae 0x113be
movq -0x6d8(%rbp), %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x1bfe0
movq %rax, -0x6e0(%rbp)
movq -0x6d8(%rbp), %rsi
leaq -0x5e8(%rbp), %rdi
callq 0x1bfe0
movl 0x18(%rax), %eax
movl %eax, -0x6e4(%rbp)
movq $0x0, -0x6f0(%rbp)
movq $0x0, -0x6f8(%rbp)
movq -0x6f8(%rbp), %rax
movq %rax, -0xb70(%rbp)
leaq -0x5b8(%rbp), %rdi
callq 0x19990
movq %rax, %rcx
movq -0xb70(%rbp), %rax
cmpq %rcx, %rax
jae 0x111ab
movq -0x6f0(%rbp), %rax
movq %rax, -0xb80(%rbp)
movq -0x6f8(%rbp), %rsi
leaq -0x5b8(%rbp), %rdi
callq 0x19cf0
movq %rax, %rcx
movq -0xb80(%rbp), %rax
movslq (%rcx), %rcx
imulq %rcx, %rax
movq %rax, -0xb78(%rbp)
movq -0x6e0(%rbp), %rdi
movq -0x6f8(%rbp), %rsi
callq 0x1a110
movq %rax, %rcx
movq -0xb78(%rbp), %rax
movslq (%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x6f0(%rbp)
movq -0x6f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x6f8(%rbp)
jmp 0x110b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x638(%rbp), %rdi
callq 0x34d8
jmp 0x1176c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1119a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x688(%rbp), %rdi
callq 0x34d8
leaq -0x668(%rbp), %rdi
callq 0x34d8
jmp 0x1176c
leaq 0x268f0(%rip), %rdx     # 0x37aa2
leaq -0x718(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1a540
jmp 0x111c4
movq $0x0, -0x720(%rbp)
movq -0x720(%rbp), %rax
movq %rax, -0xb88(%rbp)
movq -0x6e0(%rbp), %rdi
callq 0x19990
movq %rax, %rcx
movq -0xb88(%rbp), %rax
cmpq %rcx, %rax
jae 0x112b7
cmpq $0x0, -0x720(%rbp)
jbe 0x1123f
leaq 0x268bd(%rip), %rsi     # 0x37aca
leaq -0x718(%rbp), %rdi
callq 0x3240
jmp 0x1121b
jmp 0x1123f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11760
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x113ad
movq -0x6e0(%rbp), %rdi
movq -0x720(%rbp), %rsi
callq 0x1a110
movl (%rax), %esi
leaq -0x740(%rbp), %rdi
callq 0x1b670
jmp 0x11262
leaq -0x718(%rbp), %rdi
leaq -0x740(%rbp), %rsi
callq 0x3330
jmp 0x11277
leaq -0x740(%rbp), %rdi
callq 0x34d8
movq -0x720(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x720(%rbp)
jmp 0x111cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x740(%rbp), %rdi
callq 0x34d8
jmp 0x113ad
leaq 0x25e90(%rip), %rsi     # 0x3714e
leaq -0x718(%rbp), %rdi
callq 0x3240
jmp 0x112cc
leaq -0x798(%rbp), %rdi
leaq -0x718(%rbp), %rsi
leaq -0x6e4(%rbp), %rdx
callq 0x1c0e0
jmp 0x112e8
leaq -0x770(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
leaq -0x798(%rbp), %rdx
callq 0x1c0a0
jmp 0x11304
leaq -0x6d0(%rbp), %rdi
leaq -0x770(%rbp), %rsi
callq 0x1c060
movb %dl, -0xb91(%rbp)
movq %rax, -0xb90(%rbp)
jmp 0x11326
movb -0xb91(%rbp), %al
movq -0xb90(%rbp), %rcx
movq %rcx, -0x7a8(%rbp)
movb %al, -0x7a0(%rbp)
leaq -0x770(%rbp), %rdi
callq 0x1c120
leaq -0x798(%rbp), %rdi
callq 0x1c140
leaq -0x718(%rbp), %rdi
callq 0x34d8
movq -0x6d8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x6d8(%rbp)
jmp 0x11037
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x113a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x770(%rbp), %rdi
callq 0x1c120
leaq -0x798(%rbp), %rdi
callq 0x1c140
leaq -0x718(%rbp), %rdi
callq 0x34d8
jmp 0x11760
movq -0x690(%rbp), %rax
testb $0x1, (%rax)
je 0x114ac
movl $0x0, -0x7ac(%rbp)
movl -0x7ac(%rbp), %eax
cmpl -0x578(%rbp), %eax
jge 0x114a7
leaq -0x6d0(%rbp), %rdi
leaq -0x7ac(%rbp), %rsi
callq 0x1c160
movq %rax, -0xba0(%rbp)
jmp 0x11406
movq -0xba0(%rbp), %rax
movq %rax, -0x7b8(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x1c1c0
movq %rax, -0x7c0(%rbp)
leaq -0x7b8(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
callq 0x1c190
testb $0x1, %al
jne 0x11440
jmp 0x1144a
xorl %eax, %eax
movl %eax, -0xba4(%rbp)
jmp 0x1145f
leaq -0x7b8(%rbp), %rdi
callq 0x1c1f0
movl 0x28(%rax), %eax
movl %eax, -0xba4(%rbp)
movl -0xba4(%rbp), %eax
movl %eax, -0xba8(%rbp)
movq -0x698(%rbp), %rax
movq (%rax), %rsi
movslq -0x7ac(%rbp), %rax
addq %rax, %rsi
leaq 0x3f0ea(%rip), %rdi     # 0x50570
callq 0x19cf0
movl -0xba8(%rbp), %ecx
movl %ecx, (%rax)
movl -0x7ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7ac(%rbp)
jmp 0x113d8
jmp 0x11670
movl $0x0, -0x7c4(%rbp)
movl -0x7c4(%rbp), %eax
cmpl -0x578(%rbp), %eax
jge 0x1166e
leaq -0x6d0(%rbp), %rdi
leaq -0x7c4(%rbp), %rsi
callq 0x1c160
movq %rax, -0xbb0(%rbp)
jmp 0x114e4
movq -0xbb0(%rbp), %rax
movq %rax, -0x7d0(%rbp)
leaq -0x6d0(%rbp), %rdi
callq 0x1c1c0
movq %rax, -0x7d8(%rbp)
leaq -0x7d0(%rbp), %rdi
leaq -0x7d8(%rbp), %rsi
callq 0x1c190
testb $0x1, %al
jne 0x1151e
jmp 0x11528
xorl %eax, %eax
movl %eax, -0xbb4(%rbp)
jmp 0x1153d
leaq -0x7d0(%rbp), %rdi
callq 0x1c1f0
movl 0x28(%rax), %eax
movl %eax, -0xbb4(%rbp)
movl -0xbb4(%rbp), %eax
movl %eax, -0xbc4(%rbp)
leaq -0x7f9(%rbp), %rdi
movq %rdi, -0xbc0(%rbp)
callq 0x3470
movq -0xbc0(%rbp), %rdx
leaq 0x26e5a(%rip), %rsi     # 0x383c4
leaq -0x7f8(%rbp), %rdi
callq 0x199b0
jmp 0x11578
movl -0xbc4(%rbp), %esi
movl $0x4, %edi
leaq -0x7f8(%rbp), %rdx
callq 0x56e0
jmp 0x11591
leaq -0x7f8(%rbp), %rdi
callq 0x34d8
leaq -0x7f9(%rbp), %rdi
callq 0x32b0
movq -0x698(%rbp), %rax
movl (%rax), %eax
movl -0x7c4(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0xbc8(%rbp)
leaq -0x7d0(%rbp), %rdi
callq 0x1c1f0
movq %rax, %rsi
addq $0x8, %rsi
leaq -0x820(%rbp), %rdi
callq 0x3120
jmp 0x115e1
movl -0xbc8(%rbp), %esi
movl $0xa, %edi
leaq -0x820(%rbp), %rdx
callq 0x56e0
jmp 0x115fa
leaq -0x820(%rbp), %rdi
callq 0x34d8
movl -0x7c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c4(%rbp)
jmp 0x114b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11640
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x34d8
leaq -0x7f9(%rbp), %rdi
callq 0x32b0
jmp 0x11760
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x820(%rbp), %rdi
callq 0x34d8
jmp 0x11760
jmp 0x11670
leaq -0x880(%rbp), %rdi
leaq -0x578(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
callq 0x1c2a0
jmp 0x1168c
leaq -0x860(%rbp), %rdi
leaq -0x70(%rbp), %rsi
leaq -0x880(%rbp), %rdx
callq 0x1c260
jmp 0x116a5
leaq 0x3f01c(%rip), %rdi     # 0x506c8
leaq -0x860(%rbp), %rsi
callq 0x1c220
movb %dl, -0xbd1(%rbp)
movq %rax, -0xbd0(%rbp)
jmp 0x116c7
movb -0xbd1(%rbp), %al
movq -0xbd0(%rbp), %rcx
movq %rcx, -0x890(%rbp)
movb %al, -0x888(%rbp)
leaq -0x860(%rbp), %rdi
callq 0x1c2e0
leaq -0x880(%rbp), %rdi
callq 0x1c310
leaq -0x6d0(%rbp), %rdi
callq 0x1c330
leaq -0x5e8(%rbp), %rdi
callq 0x1c350
leaq -0x5d0(%rbp), %rdi
callq 0x18f40
leaq -0x5b8(%rbp), %rdi
callq 0x18f40
jmp 0x118a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11754
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x860(%rbp), %rdi
callq 0x1c2e0
leaq -0x880(%rbp), %rdi
callq 0x1c310
leaq -0x6d0(%rbp), %rdi
callq 0x1c330
leaq -0x5e8(%rbp), %rdi
callq 0x1c350
leaq -0x5d0(%rbp), %rdi
callq 0x18f40
leaq -0x5b8(%rbp), %rdi
callq 0x18f40
jmp 0x118b3
leaq -0x8b0(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0xdd60
jmp 0x117aa
leaq -0x20(%rbp), %rdi
leaq -0x8b0(%rbp), %rsi
callq 0x3330
jmp 0x117bc
leaq -0x8b0(%rbp), %rdi
callq 0x34d8
leaq -0x8d0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3120
jmp 0x117da
movl -0x578(%rbp), %eax
movl %eax, -0xbd8(%rbp)
leaq -0x8f0(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3120
jmp 0x117f8
movl -0xbd8(%rbp), %esi
leaq -0x8d0(%rbp), %rdi
leaq -0x8f0(%rbp), %rdx
callq 0x4d00
movq %rdx, -0xbe8(%rbp)
movb %al, -0xbd9(%rbp)
jmp 0x11820
movq -0xbe8(%rbp), %rax
movb -0xbd9(%rbp), %cl
movb %cl, -0x900(%rbp)
movq %rax, -0x8f8(%rbp)
leaq -0x8f0(%rbp), %rdi
callq 0x34d8
leaq -0x8d0(%rbp), %rdi
callq 0x34d8
jmp 0x118a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0x34d8
jmp 0x118b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11894
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x8f0(%rbp), %rdi
callq 0x34d8
leaq -0x8d0(%rbp), %rdi
callq 0x34d8
jmp 0x118b3
leaq -0x500(%rbp), %rdi
callq 0x18f40
jmp 0x11be9
leaq -0x500(%rbp), %rdi
callq 0x18f40
jmp 0x11e21
leaq -0x930(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x3120
jmp 0x118d6
leaq -0x950(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x3120
jmp 0x118e8
leaq -0x930(%rbp), %rdi
movl $0x1, %esi
leaq -0x950(%rbp), %rdx
callq 0x4d00
movq %rdx, -0xbf8(%rbp)
movb %al, -0xbe9(%rbp)
jmp 0x1190f
movq -0xbf8(%rbp), %rax
movb -0xbe9(%rbp), %cl
movb %cl, -0x910(%rbp)
movq %rax, -0x908(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x34d8
leaq -0x930(%rbp), %rdi
callq 0x34d8
leaq -0x910(%rbp), %rdi
movq %rdi, -0xc08(%rbp)
callq 0x1c000
movq -0xc08(%rbp), %rdi
movq %rax, -0x958(%rbp)
callq 0x1c020
movq %rax, -0x960(%rbp)
leaq 0x3eb73(%rip), %rdi     # 0x504e8
leaq 0x257aa(%rip), %rsi     # 0x37126
callq 0x1a9c0
movb %al, -0xbf9(%rbp)
jmp 0x11989
movb -0xbf9(%rbp), %al
testb $0x1, %al
jne 0x11998
jmp 0x11be7
callq 0x6030
jmp 0x1199f
leaq -0x9a1(%rbp), %rdi
movq %rdi, -0xc10(%rbp)
callq 0x3470
movq -0xc10(%rbp), %rdx
leaq 0x2578c(%rip), %rsi     # 0x3714c
leaq -0x9a0(%rbp), %rdi
callq 0x199b0
jmp 0x119ce
leaq -0x980(%rbp), %rdi
leaq -0x9a0(%rbp), %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0xa530
jmp 0x119ea
leaq -0x980(%rbp), %rdi
callq 0x34d8
leaq -0x9a0(%rbp), %rdi
callq 0x34d8
leaq -0x9a1(%rbp), %rdi
callq 0x32b0
movq -0x958(%rbp), %rax
testb $0x1, (%rax)
je 0x11b3a
movq -0x960(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xc14(%rbp)
leaq 0x2698f(%rip), %rdx     # 0x383c3
leaq -0x9e8(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1a540
jmp 0x11a46
leaq -0x9c8(%rbp), %rdi
leaq -0x9e8(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x1a4f0
jmp 0x11a5f
movl -0xc14(%rbp), %esi
movl $0x7, %edi
leaq -0x9c8(%rbp), %rdx
callq 0x56e0
jmp 0x11a78
leaq -0x9c8(%rbp), %rdi
callq 0x34d8
leaq -0x9e8(%rbp), %rdi
callq 0x34d8
jmp 0x11be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11abb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x34d8
leaq -0x930(%rbp), %rdi
callq 0x34d8
jmp 0x11e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11af2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9a0(%rbp), %rdi
callq 0x34d8
leaq -0x9a1(%rbp), %rdi
callq 0x32b0
jmp 0x11e21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11b29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x9c8(%rbp), %rdi
callq 0x34d8
leaq -0x9e8(%rbp), %rdi
callq 0x34d8
jmp 0x11e21
movq -0x960(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xc18(%rbp)
leaq 0x26873(%rip), %rdx     # 0x383c3
leaq -0xa28(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x1a540
jmp 0x11b62
leaq -0xa08(%rbp), %rdi
leaq -0xa28(%rbp), %rsi
leaq -0x20(%rbp), %rdx
callq 0x1a4f0
jmp 0x11b7b
movl -0xc18(%rbp), %esi
movl $0xa, %edi
leaq -0xa08(%rbp), %rdx
callq 0x56e0
jmp 0x11b94
leaq -0xa08(%rbp), %rdi
callq 0x34d8
leaq -0xa28(%rbp), %rdi
callq 0x34d8
jmp 0x11be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11bd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa08(%rbp), %rdi
callq 0x34d8
leaq -0xa28(%rbp), %rdi
callq 0x34d8
jmp 0x11e21
jmp 0x11be7
jmp 0x11be9
leaq 0x3e8f8(%rip), %rdi     # 0x504e8
leaq 0x25555(%rip), %rsi     # 0x3714c
callq 0x1b450
movb %al, -0xc19(%rbp)
jmp 0x11c04
movb -0xc19(%rbp), %al
testb $0x1, %al
jne 0x11c10
jmp 0x11c15
jmp 0x11cfe
callq 0x6030
jmp 0x11c1c
leaq -0x20(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3030
jmp 0x11c2b
jmp 0x11c2d
leaq 0x3e8b4(%rip), %rdi     # 0x504e8
leaq 0x254d6(%rip), %rsi     # 0x37111
callq 0x1a9c0
movb %al, -0xc1a(%rbp)
jmp 0x11c48
movb -0xc1a(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xc1b(%rbp)
jne 0x11c86
jmp 0x11c5d
leaq 0x3e884(%rip), %rdi     # 0x504e8
leaq 0x254c0(%rip), %rsi     # 0x3712b
callq 0x1a9c0
movb %al, -0xc1c(%rbp)
jmp 0x11c78
movb -0xc1c(%rbp), %al
movb %al, -0xc1b(%rbp)
jmp 0x11c86
movb -0xc1b(%rbp), %al
testb $0x1, %al
jne 0x11c92
jmp 0x11cad
leaq 0x3e84f(%rip), %rsi     # 0x504e8
leaq -0x20(%rbp), %rdi
callq 0x3330
jmp 0x11ca4
callq 0x6030
jmp 0x11cab
jmp 0x11c2d
leaq 0x3e834(%rip), %rsi     # 0x504e8
leaq -0x70(%rbp), %rdi
callq 0x3030
jmp 0x11cbf
callq 0x6030
jmp 0x11cc6
leaq -0x70(%rbp), %rdi
callq 0x3110
movq %rax, -0xc28(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x3110
movq -0xc28(%rbp), %rsi
movq %rax, %rdx
leaq 0x25ddd(%rip), %rdi     # 0x37acd
xorl %eax, %eax
callq 0x19760
jmp 0x11cf9
jmp 0x1086c
leaq -0xa49(%rbp), %rdi
movq %rdi, -0xc30(%rbp)
callq 0x3470
movq -0xc30(%rbp), %rdx
leaq 0x25433(%rip), %rsi     # 0x37152
leaq -0xa48(%rbp), %rdi
callq 0x199b0
jmp 0x11d2d
leaq -0xa71(%rbp), %rdi
movq %rdi, -0xc38(%rbp)
callq 0x3470
movq -0xc38(%rbp), %rdx
leaq 0x25dac(%rip), %rsi     # 0x37afa
leaq -0xa70(%rbp), %rdi
callq 0x199b0
jmp 0x11d5c
leaq -0xa48(%rbp), %rdi
leaq -0xa70(%rbp), %rsi
callq 0x6790
jmp 0x11d71
leaq -0xa70(%rbp), %rdi
callq 0x34d8
leaq -0xa71(%rbp), %rdi
callq 0x32b0
leaq -0xa48(%rbp), %rdi
callq 0x34d8
leaq -0xa49(%rbp), %rdi
callq 0x32b0
jmp 0x11dfd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11def
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x11dd7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xa70(%rbp), %rdi
callq 0x34d8
leaq -0xa71(%rbp), %rdi
callq 0x32b0
leaq -0xa48(%rbp), %rdi
callq 0x34d8
leaq -0xa49(%rbp), %rdi
callq 0x32b0
jmp 0x11e21
leaq -0x70(%rbp), %rdi
callq 0x34d8
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x20(%rbp), %rdi
callq 0x34d8
addq $0xc40, %rsp            # imm = 0xC40
popq %rbp
retq
leaq -0x70(%rbp), %rdi
callq 0x34d8
leaq -0x40(%rbp), %rdi
callq 0x34d8
leaq -0x20(%rbp), %rdi
callq 0x34d8
movq -0x48(%rbp), %rdi
callq 0x3460
nopw %cs:(%rax,%rax)