// File: /workspace/github_cpp_makefile_star2_O3/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x578, %rsp            # imm = 0x578
leaq -0x120(%rbp), %rbx
movq %rbx, %rdi
callq 0x629a
leaq -0x420(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x430(%rbp), %rdi
callq 0x16942
leaq -0xc8(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x15959(%rip), %rsi     # 0x232a0
movq 0x1595a(%rip), %rdx     # 0x232a8
addq %rsi, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x16942
callq 0x572d
leaq 0x15937(%rip), %rdi     # 0x232a0
leaq 0xe054(%rip), %rsi      # 0x1b9c4
callq 0x30b0
movq -0xd8(%rbp), %rsi
movq -0x120(%rbp), %rdx
testl %eax, %eax
je 0xeae1
leaq 0xe103(%rip), %rdi      # 0x1ba95
xorl %eax, %eax
callq 0x151ad
leaq 0xe19a(%rip), %r15      # 0x1bb3a
leaq 0xd83f(%rip), %r14      # 0x1b1e6
leaq 0x158f2(%rip), %rdi     # 0x232a0
leaq 0xe1aa(%rip), %rsi      # 0x1bb5f
callq 0x30b0
testl %eax, %eax
je 0xdbae
leaq -0x240(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x250(%rbp), %rdi
callq 0x16942
leaq -0x340(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
leaq -0x350(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
leaq -0x250(%rbp), %rdi
movl $0x1, %esi
movq %rbx, %rdx
callq 0x459c
movl %eax, %r13d
movq %rdx, %r12
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0xda57
movq -0x340(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0xda79
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x15820(%rip), %rdi     # 0x232a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
jne 0xe98f
callq 0x572d
leaq -0x320(%rbp), %rax
movq %rax, -0x330(%rbp)
leaq -0x330(%rbp), %rbx
movq %rbx, %rdi
leaq 0xd755(%rip), %rsi      # 0x1b209
leaq 0xd74f(%rip), %rdx      # 0x1b20a
callq 0x169e0
leaq -0x598(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x8d9d
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xdaf8
movq -0x588(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0xdb1a
movq -0x320(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa8(%rbp), %rax
testb $0x1, %r13b
je 0xe5b0
movq %rax, -0xb8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
movq %rbx, %rdi
leaq 0xe924(%rip), %rsi      # 0x1c480
callq 0x3360
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq %rbx, %rdi
callq 0x30c0
leaq -0x220(%rbp), %rsi
movq %rsi, -0x230(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xe8c7
movq %rdx, -0x230(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x220(%rbp)
jmp 0xe8cd
callq 0x572d
xorps %xmm0, %xmm0
movaps %xmm0, -0x180(%rbp)
movq $0x0, -0x170(%rbp)
movl $0x0, -0xb8(%rbp)
leaq 0x156c7(%rip), %rdi     # 0x232a0
leaq 0xd62b(%rip), %rsi      # 0x1b20b
callq 0x30b0
testl %eax, %eax
je 0xdd39
cmpl $0x2, 0x156a4(%rip)     # 0x23298
je 0xdc0b
movq 0x156a3(%rip), %rsi     # 0x232a0
leaq 0xdeb6(%rip), %rdi      # 0x1baba
xorl %eax, %eax
callq 0x1546f
leaq -0x2e0(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq 0x15680(%rip), %rsi     # 0x232a0
movq 0x15681(%rip), %rdx     # 0x232a8
addq %rsi, %rdx
leaq -0x2f0(%rbp), %rdi
callq 0x16942
leaq -0x2f0(%rbp), %rdi
callq 0x5fc6
movl %eax, -0xb8(%rbp)
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rcx
cmpq %rcx, %rdi
je 0xdc70
movq -0x2e0(%rbp), %rsi
incq %rsi
callq 0x31d0
movl -0xb8(%rbp), %eax
testl %eax, %eax
jg 0xdc89
movq 0x15625(%rip), %rsi     # 0x232a0
leaq 0xde69(%rip), %rdi      # 0x1baeb
xorl %eax, %eax
callq 0x1546f
callq 0x572d
leaq -0x2c0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq 0xd561(%rip), %rsi      # 0x1b20b
leaq 0xd55b(%rip), %rdx      # 0x1b20c
callq 0x169e0
leaq -0x3c0(%rbp), %rax
movq %rax, -0x3d0(%rbp)
leaq -0x3d0(%rbp), %rbx
movq %rbx, %rdi
leaq 0xde51(%rip), %rsi      # 0x1bb26
leaq 0xde4f(%rip), %rdx      # 0x1bb2b
callq 0x169e0
leaq -0x2d0(%rbp), %rdi
movq %rbx, %rsi
callq 0x5c40
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0xdd12
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0xdd34
movq -0x2c0(%rbp), %rsi
incq %rsi
callq 0x31d0
callq 0x572d
movq -0x178(%rbp), %rsi
cmpq -0x170(%rbp), %rsi
je 0xdd5e
movl -0xb8(%rbp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, -0x178(%rbp)
jmp 0xdd71
leaq -0x180(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0x18c22
leaq 0x15528(%rip), %rdi     # 0x232a0
leaq 0xdde0(%rip), %rsi      # 0x1bb5f
callq 0x30b0
testl %eax, %eax
jne 0xdd92
callq 0x572d
jmp 0xdbc8
movq -0x180(%rbp), %rax
movq -0x178(%rbp), %rcx
movl $0x1, %r12d
cmpq %rcx, %rax
je 0xddb5
imull (%rax), %r12d
addq $0x4, %rax
jmp 0xdda6
cmpl $0x2, 0x15824(%rip)     # 0x235e0
jle 0xde35
leaq 0xdd67(%rip), %rdi      # 0x1bb2c
xorl %eax, %eax
callq 0x15114
movq -0x180(%rbp), %rax
cmpq %rax, -0x178(%rbp)
leaq 0xe6a0(%rip), %r13      # 0x1c481
leaq 0xd421(%rip), %r14      # 0x1b209
je 0xde20
xorl %ebx, %ebx
testq %rbx, %rbx
movq %r14, %rsi
cmoveq %r13, %rsi
movl (%rax,%rbx,4), %edx
movq %r15, %rdi
xorl %eax, %eax
callq 0x15114
incq %rbx
movq -0x180(%rbp), %rax
movq -0x178(%rbp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rcx, %rbx
jb 0xddec
leaq 0xe5dd(%rip), %rdi      # 0x1c404
xorl %eax, %eax
callq 0x15114
leaq 0xd3b1(%rip), %r14      # 0x1b1e6
testl %r12d, %r12d
jne 0xde5b
leaq 0x1545f(%rip), %rdi     # 0x232a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
je 0xde5b
leaq 0xdceb(%rip), %rdi      # 0x1bb3f
xorl %eax, %eax
callq 0x1546f
leaq 0x1543e(%rip), %rdi     # 0x232a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
je 0xdf74
leaq -0xb8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xc02c
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0x30c0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xdec1
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x260(%rbp), %rax
movq %rax, -0x270(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x270(%rbp), %rdi
callq 0x16942
leaq -0x360(%rbp), %rax
movq %rax, -0x370(%rbp)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
leaq -0x370(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
leaq -0x270(%rbp), %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x459c
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0xdf4e
movq -0x360(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0xe8a8
movq -0x260(%rbp), %rsi
incq %rsi
jmp 0xe8a3
callq 0x572d
leaq -0x50(%rbp), %r14
movq %r14, %rdi
leaq -0x180(%rbp), %rbx
movq %rbx, %rsi
callq 0x1576c
xorps %xmm0, %xmm0
movaps %xmm0, -0x310(%rbp)
xorl %eax, %eax
movq %rax, -0x300(%rbp)
movq %rax, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movq %rbx, %rdi
movq %r14, %rsi
leaq -0x310(%rbp), %rdx
leaq -0x1e0(%rbp), %rcx
callq 0xd55f
cmpl $0x3, 0x15610(%rip)     # 0x235e0
jl 0xe09e
movq -0x1d8(%rbp), %rax
cmpq -0x1e0(%rbp), %rax
je 0xe09e
xorl %ebx, %ebx
leaq 0xdb61(%rip), %rdi      # 0x1bb54
movq %rbx, %rsi
xorl %eax, %eax
callq 0x15114
movq -0x1e0(%rbp), %rcx
movq %rbx, -0x30(%rbp)
movq %rbx, %r14
shlq $0x5, %r14
movq (%rcx,%r14), %rax
cmpq %rax, 0x8(%rcx,%r14)
leaq 0xe462(%rip), %r12      # 0x1c481
leaq 0xdb14(%rip), %r13      # 0x1bb3a
leaq 0xd222(%rip), %rbx      # 0x1b24f
je 0xe069
xorl %r15d, %r15d
testq %r15, %r15
movq %rbx, %rsi
cmoveq %r12, %rsi
movl (%rax,%r15,4), %edx
movq %r13, %rdi
xorl %eax, %eax
callq 0x15114
incq %r15
movq -0x1e0(%rbp), %rcx
movq (%rcx,%r14), %rax
movq 0x8(%rcx,%r14), %rdx
subq %rax, %rdx
sarq $0x2, %rdx
cmpq %rdx, %r15
jb 0xe032
movl 0x18(%rcx,%r14), %esi
leaq 0xdaec(%rip), %rdi      # 0x1bb61
xorl %eax, %eax
callq 0x15114
movq -0x30(%rbp), %rbx
incq %rbx
movq -0x1d8(%rbp), %rax
subq -0x1e0(%rbp), %rax
sarq $0x5, %rax
cmpq %rax, %rbx
jb 0xdfec
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movl $0x1, %r15d
leaq -0xb8(%rbp), %rdi
leaq -0x290(%rbp), %rbx
leaq -0xf8(%rbp), %r14
cmpq %rcx, %rax
je 0xe0dc
imull (%rax), %r15d
addq $0x4, %rax
cmpq %rcx, %rax
jne 0xe0c6
testl %r15d, %r15d
jle 0xf54d
leaq -0x50(%rbp), %rsi
callq 0xc02c
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0x30c0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xe121
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x2a0(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2b0(%rbp), %rdi
callq 0x16942
leaq -0x280(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x16942
leaq -0x2b0(%rbp), %rdi
movl %r15d, %esi
movq %rbx, %rdx
callq 0x459c
movb %al, -0x31(%rbp)
movq %rdx, -0x1f0(%rbp)
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0xe1b1
movq -0x280(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0xe1d3
movq -0x2a0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x190(%rbp), %rax
movq %rax, -0x1c0(%rbp)
movq $0x1, -0x1b8(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x1a0(%rbp) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
movq -0x1e0(%rbp), %rax
cmpq %rax, -0x1d8(%rbp)
movl %r15d, -0xfc(%rbp)
je 0xe527
xorl %edx, %edx
movq %rdx, -0x438(%rbp)
movq %rdx, %rcx
shlq $0x5, %rcx
leaq (%rax,%rcx), %rbx
movq -0x50(%rbp), %rdx
movq -0x48(%rbp), %rsi
subq %rdx, %rsi
je 0xe26b
sarq $0x2, %rsi
movq (%rbx), %rdi
cmpq $0x1, %rsi
adcq $0x0, %rsi
xorl %r8d, %r8d
xorl %r15d, %r15d
movslq (%rdx,%r8,4), %r9
imulq %r15, %r9
movslq (%rdi,%r8,4), %r15
addq %r9, %r15
incq %r8
cmpq %r8, %rsi
jne 0xe252
jmp 0xe26e
xorl %r15d, %r15d
movl 0x18(%rax,%rcx), %eax
movl %eax, -0x1e4(%rbp)
leaq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x16942
movq %r14, %rdi
leaq 0xd8b6(%rip), %rsi      # 0x1bb5f
callq 0x3360
movq (%rbx), %rax
cmpq %rax, 0x8(%rbx)
je 0xe3d0
xorl %r14d, %r14d
movq %rbx, -0x30(%rbp)
testq %r14, %r14
je 0xe2dd
leaq -0xf8(%rbp), %rdi
leaq 0xd8b2(%rip), %rsi      # 0x1bb87
callq 0x3360
movq (%rbx), %rax
movl (%rax,%r14,4), %r13d
movl %r13d, %ebx
negl %ebx
cmovsl %r13d, %ebx
movl $0x1, %r12d
cmpl $0xa, %ebx
jb 0xe33b
movl $0x4, %r12d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0xe332
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xe338
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xe33b
movl %eax, %ecx
movl $0xd1b71759, %edx       # imm = 0xD1B71759
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r12d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xe2fd
addl $-0x3, %r12d
jmp 0xe33b
addl $-0x2, %r12d
jmp 0xe33b
decl %r12d
shrl $0x1f, %r13d
leal (%r12,%r13), %esi
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
leaq -0xb8(%rbp), %rdi
movl $0x2d, %edx
callq 0x3220
addq -0xb8(%rbp), %r13
movq %r13, %rdi
movl %r12d, %esi
movl %ebx, %edx
callq 0x164ac
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0xf8(%rbp), %rdi
callq 0x30c0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xe3b2
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r14
movq -0x30(%rbp), %rbx
movq (%rbx), %rax
movq 0x8(%rbx), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rcx, %r14
jb 0xe2c2
leaq -0xf8(%rbp), %rdi
leaq 0xce2d(%rip), %rsi      # 0x1b20b
callq 0x3360
leaq -0x148(%rbp), %rbx
movq %rbx, -0x158(%rbp)
movq -0xf8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x158(%rbp), %rdi
callq 0x16942
leaq -0xa0(%rbp), %r14
movl -0x1e4(%rbp), %ecx
movl %ecx, -0x138(%rbp)
movq %r15, -0xb8(%rbp)
movq %r14, -0xb0(%rbp)
movq -0x158(%rbp), %rax
cmpq %rbx, %rax
je 0xe452
movq %rax, -0xb0(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0xe459
movups (%rbx), %xmm0
movups %xmm0, (%r14)
movl -0xfc(%rbp), %r15d
movq -0x150(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq %rbx, -0x158(%rbp)
movq $0x0, -0x150(%rbp)
movb $0x0, -0x148(%rbp)
movl %ecx, -0x90(%rbp)
leaq -0x1c0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x19d3e
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0xe4bb
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x158(%rbp), %rdi
cmpq %rbx, %rdi
leaq -0xf8(%rbp), %r14
je 0xe4dd
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xe4ff
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x438(%rbp), %rdx
incq %rdx
movq -0x1e0(%rbp), %rax
movq -0x1d8(%rbp), %rcx
subq %rax, %rcx
sarq $0x5, %rcx
cmpq %rcx, %rdx
jb 0xe21e
movl %r15d, %r14d
testb $0x1, -0x31(%rbp)
je 0xe633
movq -0x1c0(%rbp), %r8
movq -0x1b8(%rbp), %r9
movq -0x1f0(%rbp), %rbx
shlq $0x2, %rbx
addq 0x14dd4(%rip), %rbx     # 0x23328
xorl %ecx, %ecx
movq %rcx, %rax
xorl %edx, %edx
divq %r9
movq (%r8,%rdx,8), %rax
testq %rax, %rax
je 0xe596
movq %rdx, %rsi
movq (%rax), %r10
movl 0x8(%r10), %eax
cmpq %rax, %rcx
je 0xe59b
movq (%r10), %r10
testq %r10, %r10
je 0xe596
movslq 0x8(%r10), %rdi
xorl %r11d, %r11d
movq %rdi, %rax
xorl %edx, %edx
divq %r9
cmpq %rsi, %rdx
jne 0xe59f
movl %edi, %eax
jmp 0xe571
xorl %r11d, %r11d
jmp 0xe59f
movl 0x30(%r10), %r11d
movl %r11d, (%rbx,%rcx,4)
incq %rcx
cmpq %r14, %rcx
jne 0xe556
jmp 0xe76c
movq %rax, -0xb8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
movq %rbx, %rdi
leaq 0xde9f(%rip), %rsi      # 0x1c480
callq 0x3360
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
movq %rbx, %rdi
callq 0x30c0
leaq -0x200(%rbp), %rsi
movq %rsi, -0x210(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xe917
movq %rdx, -0x210(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x200(%rbp)
jmp 0xe91d
xorl %r13d, %r13d
movq -0x1c0(%rbp), %rsi
movq -0x1b8(%rbp), %rdi
xorl %r15d, %r15d
movq %r13, %rax
xorl %edx, %edx
divq %rdi
movq (%rsi,%rdx,8), %rax
movl $0x0, %ebx
testq %rax, %rax
je 0xe69f
movq %rdx, %rcx
movq (%rax), %r8
movl 0x8(%r8), %eax
cmpq %rax, %r13
je 0xe691
movq (%r8), %r8
testq %r8, %r8
je 0xe69a
movslq 0x8(%r8), %rsi
xorl %r15d, %r15d
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
movl $0x0, %ebx
cmpq %rcx, %rdx
jne 0xe69f
movl %esi, %eax
jmp 0xe667
movl 0x30(%r8), %ebx
movq %r8, %r15
jmp 0xe69f
xorl %r15d, %r15d
xorl %ebx, %ebx
leaq -0x3a0(%rbp), %rax
movq %rax, -0x3b0(%rbp)
leaq -0x3b0(%rbp), %r12
movq %r12, %rdi
leaq 0xddc3(%rip), %rdx      # 0x1c481
movq %rdx, %rsi
callq 0x169e0
movl $0x4, %edi
movl %ebx, %esi
movq %r12, %rdx
callq 0x4d40
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0xe6f7
movq -0x3a0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x380(%rbp), %rax
movq %rax, -0x390(%rbp)
movq 0x10(%r15), %rsi
movq 0x18(%r15), %rdx
addq %rsi, %rdx
leaq -0x390(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
movq -0x1f0(%rbp), %rax
leal (%rax,%r13), %esi
movl $0xa, %edi
movq %rbx, %rdx
callq 0x4d40
movl -0xfc(%rbp), %r15d
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0xe760
movq -0x380(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r13
cmpq %r14, %r13
jne 0xe636
movl %r15d, -0x158(%rbp)
leaq -0x150(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1576c
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x16942
movl -0x158(%rbp), %eax
movl %eax, -0x98(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0x90(%rbp)
movups -0x148(%rbp), %xmm0
movups %xmm0, -0x88(%rbp)
xorps %xmm0, %xmm0
leaq -0x150(%rbp), %rax
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x14c8b(%rip), %rdi     # 0x23480
movq %rbx, %rsi
callq 0x1a066
leaq 0xd336(%rip), %r15      # 0x1bb3a
leaq 0xc9db(%rip), %r14      # 0x1b1e6
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0xe823
movq -0x80(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xe845
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x150(%rbp), %rdi
testq %rdi, %rdi
je 0xe860
movq -0x140(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
leaq -0x1c0(%rbp), %rdi
callq 0x16810
leaq -0x1e0(%rbp), %rdi
callq 0x15874
movq -0x310(%rbp), %rdi
testq %rdi, %rdi
je 0xe893
movq -0x300(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0xe8a8
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0xe98f
movq -0x170(%rbp), %rsi
subq %rdi, %rsi
jmp 0xe98a
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x228(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0x7, %edi
movl %r12d, %esi
leaq -0x230(%rbp), %rdx
callq 0x4d40
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0xe96d
movq -0x220(%rbp), %rsi
jmp 0xe965
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x208(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movl $0xa, %edi
movl %r12d, %esi
leaq -0x210(%rbp), %rdx
callq 0x4d40
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0xe96d
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xe98f
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x1490a(%rip), %rdi     # 0x232a0
leaq 0xc86c(%rip), %rsi      # 0x1b209
callq 0x30b0
testl %eax, %eax
jne 0xea45
callq 0x572d
leaq -0x120(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x3110
leaq 0x148d7(%rip), %rbx     # 0x232a0
movq %rbx, %rdi
leaq 0xc7fe(%rip), %rsi      # 0x1b1d1
callq 0x30b0
testl %eax, %eax
je 0xe9ef
movq %rbx, %rdi
leaq 0xc805(%rip), %rsi      # 0x1b1eb
callq 0x30b0
testl %eax, %eax
jne 0xea10
movq 0x148aa(%rip), %rsi     # 0x232a0
movq 0x148ab(%rip), %rdx     # 0x232a8
leaq -0x120(%rbp), %rdi
callq 0x30c0
callq 0x572d
jmp 0xe9c2
leaq -0xd8(%rbp), %rdi
movq %rbx, %rsi
callq 0x3110
callq 0x572d
movq -0xd8(%rbp), %rsi
movq -0x120(%rbp), %rdx
leaq 0xd151(%rip), %rdi      # 0x1bb8a
xorl %eax, %eax
callq 0x151ad
jmp 0xd9a7
leaq -0x488(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xc7b8(%rip), %rsi      # 0x1b20f
leaq 0xc7b2(%rip), %rdx      # 0x1b210
leaq -0x498(%rbp), %rdi
callq 0x169e0
leaq -0x468(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xd13b(%rip), %rsi      # 0x1bbb7
leaq 0xd13c(%rip), %rdx      # 0x1bbbf
leaq -0x478(%rbp), %rdi
callq 0x169e0
leaq -0x498(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x5c40
movq -0x478(%rbp), %rdi
cmpq %r14, %rdi
je 0xeabd
movq -0x468(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x498(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf4d8
movq -0x488(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf4d8
leaq 0xcf57(%rip), %rdi      # 0x1ba3f
xorl %eax, %eax
callq 0x151ad
movq 0x147d2(%rip), %rdi     # 0x232c8
cmpq %rdi, 0x147c3(%rip)     # 0x232c0
je 0xeb21
addq $-0x40, %rdi
leaq 0xcc1f(%rip), %rsi      # 0x1b729
callq 0x30b0
testl %eax, %eax
je 0xeb21
leaq 0xcf4a(%rip), %rdi      # 0x1ba64
xorl %eax, %eax
callq 0x1546f
callq 0x572d
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq $0x0, -0x40(%rbp)
leaq 0x14764(%rip), %rdi     # 0x232a0
leaq 0xd042(%rip), %rsi      # 0x1bb85
callq 0x30b0
testl %eax, %eax
je 0xec5c
leaq -0x148(%rbp), %r12
leaq -0x1c0(%rbp), %rbx
leaq -0x158(%rbp), %r14
leaq -0xb8(%rbp), %r15
movq %rbx, %rdi
callq 0x629a
movq %r12, -0x158(%rbp)
movq 0x1471e(%rip), %rsi     # 0x232a0
movq 0x1471f(%rip), %rdx     # 0x232a8
addq %rsi, %rdx
movq %r14, %rdi
callq 0x16942
callq 0x572d
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1651e
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
callq 0x19880
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xebd5
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xebf7
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x146a2(%rip), %rdi     # 0x232a0
leaq 0xc604(%rip), %rsi      # 0x1b209
callq 0x30b0
movl %eax, %r13d
testl %eax, %eax
jne 0xec16
callq 0x572d
movq -0x158(%rbp), %rdi
cmpq %r12, %rdi
je 0xec31
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0xec53
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
testl %r13d, %r13d
je 0xeb6c
leaq -0x548(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xcf17(%rip), %rsi      # 0x1bb85
leaq 0xcf11(%rip), %rdx      # 0x1bb86
leaq -0x558(%rbp), %rdi
callq 0x169e0
leaq 0xcdfe(%rip), %rsi      # 0x1ba86
leaq -0x578(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x15648
leaq -0x558(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x5c40
leaq -0x568(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xeccd
movq -0x568(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x558(%rbp), %rdi
cmpq %rbx, %rdi
je 0xece8
movq -0x548(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xccca(%rip), %rsi      # 0x1b9c4
leaq 0xccc4(%rip), %rdx      # 0x1b9c5
leaq -0xf8(%rbp), %rdi
callq 0x169e0
movq -0x50(%rbp), %rdx
cmpq %rdx, -0x48(%rbp)
je 0xeda5
xorl %r12d, %r12d
leaq 0xc4e4(%rip), %r15      # 0x1b209
leaq -0xb8(%rbp), %rbx
leaq -0xf8(%rbp), %r14
xorl %r13d, %r13d
testq %r13, %r13
movq %r15, %rsi
leaq 0xd73e(%rip), %rax      # 0x1c481
cmoveq %rax, %rsi
addq %r12, %rdx
movq %rbx, %rdi
callq 0x15648
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
movq %r14, %rdi
callq 0x30c0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xed8a
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r13
movq -0x50(%rbp), %rdx
movq -0x48(%rbp), %rax
subq %rdx, %rax
sarq $0x6, %rax
addq $0x40, %r12
cmpq %rax, %r13
jb 0xed36
leaq 0xcdd9(%rip), %rsi      # 0x1bb85
leaq -0xf8(%rbp), %rdi
callq 0x3360
leaq -0x528(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x538(%rbp), %rdi
callq 0x16942
leaq -0x508(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xf8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x518(%rbp), %rdi
callq 0x16942
leaq -0x4e8(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4f8(%rbp), %rdi
callq 0x16942
movq -0x48(%rbp), %rcx
subq -0x50(%rbp), %rcx
shrq $0x6, %rcx
leaq -0x538(%rbp), %rdi
leaq -0x518(%rbp), %rsi
leaq -0x4f8(%rbp), %rdx
callq 0x4a35
movq -0x4f8(%rbp), %rdi
cmpq %r15, %rdi
je 0xee71
movq -0x4e8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x518(%rbp), %rdi
cmpq %r14, %rdi
je 0xee8c
movq -0x508(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x538(%rbp), %rdi
cmpq %rbx, %rdi
je 0xeea7
movq -0x528(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0xc87b(%rip), %rax      # 0x1b729
leaq -0x1b8(%rbp), %rdi
movq %rax, -0x8(%rdi)
leaq -0x1a8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
callq 0x16942
movq -0x1c0(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
leaq -0x158(%rbp), %rdx
callq 0x1528c
leaq -0x88(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x1b8(%rbp), %rax
cmpq %rbx, %rax
je 0xef22
movq %rax, -0x98(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0xef29
movups (%rbx), %xmm0
movups %xmm0, (%r14)
movq -0x1b0(%rbp), %rax
leaq -0xb8(%rbp), %rsi
movq %rax, 0x28(%rsi)
movq %rbx, -0x1b8(%rbp)
movq $0x0, -0x1b0(%rbp)
movb $0x0, -0x1a8(%rbp)
leaq 0x14365(%rip), %rdi     # 0x232c0
callq 0x19880
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xef7b
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa8(%rbp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0xef9a
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1b8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xefb5
movq -0x1a8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x48(%rbp), %rax
subq -0x50(%rbp), %rax
sarq $0x6, %rax
leaq -0x1c0(%rbp), %r8
movq %rax, (%r8)
leaq -0xb8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
leaq -0xf8(%rbp), %rdx
leaq -0x120(%rbp), %rcx
callq 0x1658c
leaq 0x144fd(%rip), %rdi     # 0x234f0
leaq -0xb8(%rbp), %rsi
callq 0x19b10
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf018
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf031
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf050
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
callq 0x572d
leaq -0x4c8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xc408(%rip), %rsi      # 0x1b46f
leaq 0xc402(%rip), %rdx      # 0x1b470
leaq -0x4d8(%rbp), %rdi
callq 0x169e0
leaq 0xc6b1(%rip), %rsi      # 0x1b732
leaq -0x180(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x15648
leaq 0xc9f5(%rip), %rsi      # 0x1ba90
leaq -0x180(%rbp), %rdi
callq 0x3360
leaq -0x148(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf0d4
movq %rdx, -0x158(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x148(%rbp)
jmp 0xf0dc
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x158(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
callq 0x30c0
leaq -0x1b0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf13a
movq %rdx, -0x1c0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1b0(%rbp)
jmp 0xf140
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
leaq -0x1c0(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
callq 0x30c0
movq %r15, -0xb8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf19a
movq %rdx, -0xb8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa8(%rbp)
jmp 0xf1a1
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq -0xb8(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xc8cd(%rip), %rsi      # 0x1ba93
callq 0x3360
leaq -0x448(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf1f9
movq %rdx, -0x458(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x448(%rbp)
jmp 0xf201
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0x458(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x4d8(%rbp), %rdi
callq 0x5c40
movq -0x458(%rbp), %rdi
cmpq %r12, %rdi
je 0xf246
movq -0x448(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf261
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf27c
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x158(%rbp), %rdi
cmpq %r13, %rdi
je 0xf297
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf2b6
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x4d8(%rbp), %rdi
cmpq %r14, %rdi
je 0xf2d1
movq -0x4c8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x4a8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xd19e(%rip), %rdx      # 0x1c481
leaq -0x4b8(%rbp), %rdi
movq %rdx, %rsi
callq 0x169e0
leaq -0x4b8(%rbp), %rdx
movl $0x23, %edi
xorl %esi, %esi
callq 0x4d40
movq %rax, %rbx
movq -0x4b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xf323
movq -0x4a8(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %rbx
leaq -0x128(%rbp), %rax
movq $0x0, -0x10(%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq -0x1b8(%rbp), %r14
movq %rbx, -0x8(%r14)
leaq -0x158(%rbp), %rdx
movq %r14, %rdi
movq %rdx, %rsi
callq 0x16698
movl -0x8(%r14), %eax
leaq -0xb0(%rbp), %r15
movl %eax, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16698
leaq 0x13fbc(%rip), %rdi     # 0x23350
leaq -0xb8(%rbp), %rsi
callq 0x19b4e
movq %r15, %rdi
callq 0x16714
movq %r14, %rdi
callq 0x16714
leaq -0x158(%rbp), %rdi
callq 0x16714
movq -0x50(%rbp), %rax
cmpq %rax, -0x48(%rbp)
je 0xf4ad
movl $0x1, %r12d
xorl %r15d, %r15d
leaq -0x410(%rbp), %rbx
leaq -0x3f0(%rbp), %r14
xorl %r13d, %r13d
leaq -0x400(%rbp), %rcx
movq %rcx, -0x410(%rbp)
movq 0x20(%rax,%r15), %rsi
movq 0x28(%rax,%r15), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x16942
movq -0x50(%rbp), %rax
leaq -0x3e0(%rbp), %rcx
movq %rcx, -0x3f0(%rbp)
movq (%rax,%r15), %rsi
movq 0x8(%rax,%r15), %rdx
addq %rsi, %rdx
movq %r14, %rdi
callq 0x16942
movq -0x48(%rbp), %rdx
subq -0x50(%rbp), %rdx
sarq $0x6, %rdx
addq %r12, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4914
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0xf469
movq -0x3e0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0xf48b
movq -0x400(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r13
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
subq %rax, %rcx
sarq $0x6, %rcx
decq %r12
addq $0x40, %r15
cmpq %rcx, %r13
jb 0xf3e4
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xf4cf
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x50(%rbp), %rdi
callq 0x14fd0
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xf4fa
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0xf51c
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x110(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf53b
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x31d0
addq $0x578, %rsp            # imm = 0x578
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc615(%rip), %rdi      # 0x1bb69
leaq 0xbed9(%rip), %rsi      # 0x1b434
leaq 0xc610(%rip), %rcx      # 0x1bb72
movl $0x45f, %edx            # imm = 0x45F
callq 0x3130
movq %rax, -0x30(%rbp)
movq %r15, %rdi
callq 0x16714
movq %r14, %rdi
callq 0x16714
leaq -0x158(%rbp), %rdi
callq 0x16714
jmp 0xfa39
movq %rax, -0x30(%rbp)
movq -0x4b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xfa39
movq -0x4a8(%rbp), %rsi
jmp 0xfa2b
jmp 0xfa35
movq %rax, -0x30(%rbp)
movq -0x458(%rbp), %rdi
cmpq %r12, %rdi
je 0xf5db
movq -0x448(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf5db
movq %rax, -0x30(%rbp)
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf5fc
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf5fc
movq %rax, -0x30(%rbp)
movq -0x1c0(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf61d
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf61d
movq %rax, -0x30(%rbp)
movq -0x158(%rbp), %rdi
cmpq %r13, %rdi
je 0xf63e
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf63e
movq %rax, -0x30(%rbp)
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf663
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf663
movq %rax, -0x30(%rbp)
movq -0x4d8(%rbp), %rdi
cmpq %r14, %rdi
je 0xfa39
movq -0x4c8(%rbp), %rsi
jmp 0xfa2b
jmp 0xfa35
movq %rax, %rdi
callq 0x15b21
jmp 0xfa35
movq %rax, -0x30(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x157ec
jmp 0xf6a7
movq %rax, -0x30(%rbp)
movq -0x1b8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfa39
movq -0x1a8(%rbp), %rsi
jmp 0xfa2b
jmp 0xfa35
movq %rax, -0x30(%rbp)
movq -0x4f8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf6ed
movq -0x4e8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf6ed
movq %rax, -0x30(%rbp)
movq -0x518(%rbp), %rdi
cmpq %r14, %rdi
je 0xf70e
movq -0x508(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf70e
movq %rax, -0x30(%rbp)
movq -0x538(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfa39
movq -0x528(%rbp), %rsi
jmp 0xfa2b
jmp 0xfa5b
movq %rax, -0x30(%rbp)
leaq -0x568(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf758
movq -0x568(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf758
movq %rax, -0x30(%rbp)
movq -0x558(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfabb
movq -0x548(%rbp), %rsi
jmp 0xfab3
jmp 0xfa5b
movq %rax, %r15
movq -0x478(%rbp), %rdi
cmpq %r14, %rdi
je 0xf79c
movq -0x468(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf79c
movq %rax, %r15
movq -0x498(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf7b7
movq -0x488(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %r15, %rbx
jmp 0xfd02
jmp 0xfcff
movq %rax, %rbx
jmp 0xfd24
movq %rax, %rbx
jmp 0xfd46
jmp 0xfa35
movq %rax, %rbx
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0xf82d
movq -0x220(%rbp), %rsi
jmp 0xf81e
jmp 0xf82a
jmp 0xf82a
jmp 0xfcff
movq %rax, %rbx
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0xf82d
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf82d
jmp 0xf82a
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfd02
movq -0xa8(%rbp), %rsi
jmp 0xfb1a
jmp 0xfcff
jmp 0xfcff
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0x15832
jmp 0xf86e
movq %rax, %rbx
movq -0x150(%rbp), %rdi
testq %rdi, %rdi
je 0xfc9a
movq -0x140(%rbp), %rsi
subq %rdi, %rsi
jmp 0xfc95
jmp 0xfbc2
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0xf8bc
movq -0x280(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf8bc
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0xfca6
movq -0x2a0(%rbp), %rsi
jmp 0xf8ff
jmp 0xf90e
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfca6
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfca6
jmp 0xf90e
movq %rax, %rbx
jmp 0xfca6
jmp 0xfc46
movq %rax, %rbx
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0xf945
movq -0x360(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf945
movq %rax, %rbx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0xfce2
movq -0x260(%rbp), %rsi
jmp 0xfc3c
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfce2
movq -0xa8(%rbp), %rsi
jmp 0xfc3c
jmp 0xfc46
movq %rax, %rbx
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0xfd02
movq -0x320(%rbp), %rsi
jmp 0xfb1a
jmp 0xfcff
jmp 0xfcff
movq %rax, -0x30(%rbp)
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0xf9ef
movq -0x3e0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf9ef
movq %rax, -0x30(%rbp)
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0xfa39
movq -0x400(%rbp), %rsi
jmp 0xfa2b
jmp 0xfa35
movq %rax, -0x30(%rbp)
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfa39
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfa39
movq %rax, -0x30(%rbp)
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xfabb
movq -0xe8(%rbp), %rsi
jmp 0xfab3
movq %rax, -0x30(%rbp)
jmp 0xfa99
movq %rax, -0x30(%rbp)
jmp 0xfabb
movq %rax, -0x30(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x157ec
jmp 0xfa7e
jmp 0xfa7a
jmp 0xfc46
movq %rax, -0x30(%rbp)
movq -0x158(%rbp), %rdi
cmpq %r12, %rdi
je 0xfa99
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0xfabb
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x50(%rbp), %rdi
callq 0x14fd0
movq -0x30(%rbp), %rbx
jmp 0xfd02
jmp 0xfcff
movq %rax, %rbx
jmp 0xfafc
movq %rax, %rbx
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0xfafc
movq -0x340(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0xfd02
movq -0x240(%rbp), %rsi
incq %rsi
jmp 0xfcf8
movq %rax, %rbx
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0xfc9a
movq -0x380(%rbp), %rsi
jmp 0xfc92
jmp 0xfbc2
movq %rax, %rbx
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0xfc9a
movq -0x3a0(%rbp), %rsi
jmp 0xfc92
jmp 0xfbc2
jmp 0xfc4e
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0xfb95
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0xfc78
movq -0x148(%rbp), %rsi
jmp 0xfc70
jmp 0xfc4e
jmp 0xfc4e
movq %rax, %rbx
jmp 0xfc9a
jmp 0xfcff
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0xfce2
movq -0x2e0(%rbp), %rsi
jmp 0xfc3c
jmp 0xfc46
movq %rax, %rbx
jmp 0xfc1e
movq %rax, %rbx
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0xfc1e
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0xfce2
movq -0x2c0(%rbp), %rsi
incq %rsi
jmp 0xfcdd
jmp 0xfc4e
movq %rax, %rbx
jmp 0xfce2
movq %rax, %rbx
jmp 0xfc78
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfc78
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xfc9a
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x1c0(%rbp), %rdi
callq 0x16810
leaq -0x1e0(%rbp), %rdi
callq 0x15874
movq -0x310(%rbp), %rdi
testq %rdi, %rdi
je 0xfccd
movq -0x300(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0xfce2
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0xfd02
movq -0x170(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
jmp 0xfd02
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xfd24
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0xfd46
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x110(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xfd65
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %rbx, %rdi
callq 0x3320