// File: /workspace/github_cpp_makefile_star2_O1/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 0x635f
leaq -0x420(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x430(%rbp), %rdi
callq 0x16d2e
leaq -0xc8(%rbp), %rax
movq %rax, -0x10(%rax)
movq 0x16808(%rip), %rsi     # 0x242a0
movq 0x16809(%rip), %rdx     # 0x242a8
addq %rsi, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x16d2e
callq 0x5790
leaq 0x167e6(%rip), %rdi     # 0x242a0
leaq 0xef03(%rip), %rsi      # 0x1c9c4
callq 0x30b0
movq -0xd8(%rbp), %rsi
movq -0x120(%rbp), %rdx
testl %eax, %eax
je 0xec85
leaq 0xefb2(%rip), %rdi      # 0x1ca95
xorl %eax, %eax
callq 0x1559d
leaq 0xf049(%rip), %r15      # 0x1cb3a
leaq 0xe6ee(%rip), %r14      # 0x1c1e6
leaq 0x167a1(%rip), %rdi     # 0x242a0
leaq 0xf059(%rip), %rsi      # 0x1cb5f
callq 0x30b0
testl %eax, %eax
je 0xdcff
leaq -0x240(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x250(%rbp), %rdi
callq 0x16d2e
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 0x16d2e
leaq -0x250(%rbp), %rdi
movl $0x1, %esi
movq %rbx, %rdx
callq 0x4599
movl %eax, %r13d
movq %rdx, %r12
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0xdba8
movq -0x340(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0xdbca
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x166cf(%rip), %rdi     # 0x242a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
jne 0xeb33
callq 0x5790
leaq -0x320(%rbp), %rax
movq %rax, -0x330(%rbp)
leaq -0x330(%rbp), %rbx
movq %rbx, %rdi
leaq 0xe604(%rip), %rsi      # 0x1c209
leaq 0xe5fe(%rip), %rdx      # 0x1c20a
callq 0x16dc8
leaq -0x598(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
movl $0x1, %ecx
callq 0x8e88
movq -0x598(%rbp), %rdi
leaq -0x588(%rbp), %rax
cmpq %rax, %rdi
je 0xdc49
movq -0x588(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0xdc6b
movq -0x320(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa8(%rbp), %rax
testb $0x1, %r13b
je 0xe730
movq %rax, -0xb8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x16d2e
movq %rbx, %rdi
leaq 0xf7d3(%rip), %rsi      # 0x1d480
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 0xea6b
movq %rdx, -0x230(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x220(%rbp)
jmp 0xea71
callq 0x5790
xorps %xmm0, %xmm0
movaps %xmm0, -0x180(%rbp)
movq $0x0, -0x170(%rbp)
movl $0x0, -0xb8(%rbp)
leaq 0x16576(%rip), %rdi     # 0x242a0
leaq 0xe4da(%rip), %rsi      # 0x1c20b
callq 0x30b0
testl %eax, %eax
je 0xde89
cmpl $0x2, 0x16553(%rip)     # 0x24298
je 0xdd5c
movq 0x16552(%rip), %rsi     # 0x242a0
leaq 0xed65(%rip), %rdi      # 0x1caba
xorl %eax, %eax
callq 0x1585f
leaq -0x2e0(%rbp), %rax
movq %rax, -0x2f0(%rbp)
movq 0x1652f(%rip), %rsi     # 0x242a0
movq 0x16530(%rip), %rdx     # 0x242a8
addq %rsi, %rdx
leaq -0x2f0(%rbp), %rdi
callq 0x16d2e
leaq -0x2f0(%rbp), %rdi
callq 0x6087
movl %eax, -0xb8(%rbp)
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0xddbb
movq -0x2e0(%rbp), %rsi
incq %rsi
callq 0x31d0
cmpl $0x0, -0xb8(%rbp)
jg 0xddd9
movq 0x164d5(%rip), %rsi     # 0x242a0
leaq 0xed19(%rip), %rdi      # 0x1caeb
xorl %eax, %eax
callq 0x1585f
callq 0x5790
leaq -0x2c0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq 0xe411(%rip), %rsi      # 0x1c20b
leaq 0xe40b(%rip), %rdx      # 0x1c20c
callq 0x16dc8
leaq -0x3c0(%rbp), %rax
movq %rax, -0x3d0(%rbp)
leaq -0x3d0(%rbp), %rbx
movq %rbx, %rdi
leaq 0xed01(%rip), %rsi      # 0x1cb26
leaq 0xecff(%rip), %rdx      # 0x1cb2b
callq 0x16dc8
leaq -0x2d0(%rbp), %rdi
movq %rbx, %rsi
callq 0x5d07
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0xde62
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0xde84
movq -0x2c0(%rbp), %rsi
incq %rsi
callq 0x31d0
callq 0x5790
movq -0x178(%rbp), %rsi
cmpq -0x170(%rbp), %rsi
je 0xdeae
movl -0xb8(%rbp), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, -0x178(%rbp)
jmp 0xdec1
leaq -0x180(%rbp), %rdi
leaq -0xb8(%rbp), %rdx
callq 0x19020
leaq 0x163d8(%rip), %rdi     # 0x242a0
leaq 0xec90(%rip), %rsi      # 0x1cb5f
callq 0x30b0
testl %eax, %eax
jne 0xdee7
movl %eax, %ebx
callq 0x5790
testl %ebx, %ebx
je 0xdd19
movq -0x180(%rbp), %rax
movq -0x178(%rbp), %rcx
movl $0x1, %r12d
cmpq %rcx, %rax
je 0xdf0a
imull (%rax), %r12d
addq $0x4, %rax
jmp 0xdefb
cmpl $0x2, 0x166cf(%rip)     # 0x245e0
jle 0xdf8a
leaq 0xec12(%rip), %rdi      # 0x1cb2c
xorl %eax, %eax
callq 0x15504
movq -0x180(%rbp), %rax
cmpq %rax, -0x178(%rbp)
leaq 0xf54b(%rip), %r13      # 0x1d481
leaq 0xe2cc(%rip), %r14      # 0x1c209
je 0xdf75
xorl %ebx, %ebx
testq %rbx, %rbx
movq %r14, %rsi
cmoveq %r13, %rsi
movl (%rax,%rbx,4), %edx
movq %r15, %rdi
xorl %eax, %eax
callq 0x15504
incq %rbx
movq -0x180(%rbp), %rax
movq -0x178(%rbp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %rcx, %rbx
jb 0xdf41
leaq 0xf488(%rip), %rdi      # 0x1d404
xorl %eax, %eax
callq 0x15504
leaq 0xe25c(%rip), %r14      # 0x1c1e6
testl %r12d, %r12d
jne 0xdfb0
leaq 0x1630a(%rip), %rdi     # 0x242a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
je 0xdfb0
leaq 0xeb96(%rip), %rdi      # 0x1cb3f
xorl %eax, %eax
callq 0x1585f
leaq 0x162e9(%rip), %rdi     # 0x242a0
movq %r14, %rsi
callq 0x30b0
testl %eax, %eax
je 0xe0c9
leaq -0xb8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xc12f
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 0xe016
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 0x16d2e
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 0x16d2e
leaq -0x270(%rbp), %rdi
movl %r12d, %esi
movq %rbx, %rdx
callq 0x4599
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0xe0a3
movq -0x360(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0xea4c
movq -0x260(%rbp), %rsi
incq %rsi
jmp 0xea47
callq 0x5790
leaq -0x50(%rbp), %r14
movq %r14, %rdi
leaq -0x180(%rbp), %rbx
movq %rbx, %rsi
callq 0x15b5a
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 0xd6b0
cmpl $0x3, 0x164bb(%rip)     # 0x245e0
jl 0xe1f3
movq -0x1d8(%rbp), %rax
cmpq -0x1e0(%rbp), %rax
je 0xe1f3
xorl %ebx, %ebx
leaq 0xea0c(%rip), %rdi      # 0x1cb54
movq %rbx, %rsi
xorl %eax, %eax
callq 0x15504
movq -0x1e0(%rbp), %rcx
movq %rbx, -0x30(%rbp)
movq %rbx, %r14
shlq $0x5, %r14
movq (%rcx,%r14), %rax
cmpq %rax, 0x8(%rcx,%r14)
leaq 0xf30d(%rip), %r12      # 0x1d481
leaq 0xe9bf(%rip), %r13      # 0x1cb3a
leaq 0xe0cd(%rip), %rbx      # 0x1c24f
je 0xe1be
xorl %r15d, %r15d
testq %r15, %r15
movq %rbx, %rsi
cmoveq %r12, %rsi
movl (%rax,%r15,4), %edx
movq %r13, %rdi
xorl %eax, %eax
callq 0x15504
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 0xe187
movl 0x18(%rcx,%r14), %esi
leaq 0xe997(%rip), %rdi      # 0x1cb61
xorl %eax, %eax
callq 0x15504
movq -0x30(%rbp), %rbx
incq %rbx
movq -0x1d8(%rbp), %rax
subq -0x1e0(%rbp), %rax
sarq $0x5, %rax
cmpq %rax, %rbx
jb 0xe141
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 0xe225
imull (%rax), %r15d
addq $0x4, %rax
jmp 0xe216
testl %r15d, %r15d
jle 0xf6f8
leaq -0x50(%rbp), %rsi
callq 0xc12f
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 0xe273
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 0x16d2e
leaq -0x280(%rbp), %rax
movq %rax, -0x290(%rbp)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x16d2e
leaq -0x2b0(%rbp), %rdi
movl %r15d, %esi
movq %rbx, %rdx
callq 0x4599
movb %al, -0x31(%rbp)
movq %rdx, -0x1f0(%rbp)
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0xe303
movq -0x280(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0xe325
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 0xe676
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 0xe3bd
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 0xe3a4
jmp 0xe3c0
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 0x16d2e
movq %r14, %rdi
leaq 0xe764(%rip), %rsi      # 0x1cb5f
callq 0x3360
movq 0x8(%rbx), %rax
cmpq (%rbx), %rax
je 0xe51f
xorl %r14d, %r14d
movq %rbx, -0x30(%rbp)
testq %r14, %r14
je 0xe42c
leaq -0xf8(%rbp), %rdi
leaq 0xe760(%rip), %rsi      # 0x1cb87
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 0xe48d
movl $0x4, %r12d
movl %ebx, %eax
cmpl $0x63, %eax
jbe 0xe484
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xe48a
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xe48d
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 0xe44f
addl $-0x3, %r12d
jmp 0xe48d
addl $-0x2, %r12d
jmp 0xe48d
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 0x16894
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 0xe504
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r14
movq -0x30(%rbp), %rbx
movq 0x8(%rbx), %rax
subq (%rbx), %rax
sarq $0x2, %rax
cmpq %rax, %r14
jb 0xe414
leaq -0xf8(%rbp), %rdi
leaq 0xdcde(%rip), %rsi      # 0x1c20b
callq 0x3360
leaq -0x150(%rbp), %rbx
movq %rbx, -0x160(%rbp)
movq -0xf8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x160(%rbp), %rdi
callq 0x16d2e
leaq -0xa0(%rbp), %r14
movl -0x1e4(%rbp), %ecx
movl %ecx, -0x140(%rbp)
movq %r15, -0xb8(%rbp)
movq %r14, -0xb0(%rbp)
movq -0x160(%rbp), %rax
cmpq %rbx, %rax
je 0xe5a1
movq %rax, -0xb0(%rbp)
movq -0x150(%rbp), %rax
movq %rax, -0xa0(%rbp)
jmp 0xe5a8
movups (%rbx), %xmm0
movups %xmm0, (%r14)
movl -0xfc(%rbp), %r15d
movq -0x158(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq %rbx, -0x160(%rbp)
movq $0x0, -0x158(%rbp)
movb $0x0, -0x150(%rbp)
movl %ecx, -0x90(%rbp)
leaq -0x1c0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x1a14c
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0xe60a
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %rbx, %rdi
leaq -0xf8(%rbp), %r14
je 0xe62c
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xe64e
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 0xe370
testb $0x1, -0x31(%rbp)
je 0xe7b3
movq -0x1c0(%rbp), %r8
movq -0x1b8(%rbp), %r9
movq -0x1f0(%rbp), %r14
shlq $0x2, %r14
addq 0x15c88(%rip), %r14     # 0x24328
cmpl $0x2, %r15d
movl $0x1, %r10d
cmovgel %r15d, %r10d
xorl %ecx, %ecx
movq %rcx, %rax
xorl %edx, %edx
divq %r9
movq %rdx, %rsi
movq (%r8,%rdx,8), %rdx
movl $0x0, %eax
testq %rdx, %rdx
je 0xe707
movq (%rdx), %r11
movl 0x8(%r11), %edi
movq %rdx, %rax
cmpq %rdi, %rcx
je 0xe707
movq %r11, %rbx
movq (%r11), %r11
testq %r11, %r11
je 0xe705
movslq 0x8(%r11), %rdi
movq %rdi, %rax
xorl %edx, %edx
divq %r9
movl $0x0, %eax
cmpq %rsi, %rdx
jne 0xe707
movl %edi, %edx
movq %rbx, %rax
cmpq %rdx, %rcx
jne 0xe6d8
jmp 0xe707
xorl %eax, %eax
testq %rax, %rax
je 0xe711
movq (%rax), %rax
jmp 0xe713
xorl %eax, %eax
testq %rax, %rax
je 0xe71d
movl 0x30(%rax), %eax
jmp 0xe71f
xorl %eax, %eax
movl %eax, (%r14,%rcx,4)
incq %rcx
cmpq %r10, %rcx
jne 0xe6b0
jmp 0xe910
movq %rax, -0xb8(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x16d2e
movq %rbx, %rdi
leaq 0xed1f(%rip), %rsi      # 0x1d480
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 0xeabb
movq %rdx, -0x210(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x200(%rbp)
jmp 0xeac1
cmpl $0x2, %r15d
movl $0x1, %r14d
cmovgel %r15d, %r14d
xorl %r13d, %r13d
movq -0x1c0(%rbp), %rsi
movq -0x1b8(%rbp), %rdi
movq %r13, %rax
xorl %edx, %edx
divq %rdi
movq %rdx, %rcx
movq (%rsi,%rdx,8), %rdx
movl $0x0, %eax
testq %rdx, %rdx
je 0xe829
movq (%rdx), %r8
movl 0x8(%r8), %esi
movq %rdx, %rax
cmpq %rsi, %r13
je 0xe829
movq %r8, %r9
movq (%r8), %r8
testq %r8, %r8
je 0xe827
movslq 0x8(%r8), %rsi
movq %rsi, %rax
xorl %edx, %edx
divq %rdi
movl $0x0, %eax
cmpq %rcx, %rdx
jne 0xe829
movl %esi, %edx
movq %r9, %rax
cmpq %rdx, %r13
jne 0xe7fa
jmp 0xe829
xorl %eax, %eax
testq %rax, %rax
je 0xe833
movq (%rax), %r15
jmp 0xe836
xorl %r15d, %r15d
testq %r15, %r15
je 0xe841
movl 0x30(%r15), %ebx
jmp 0xe843
xorl %ebx, %ebx
leaq -0x3a0(%rbp), %rax
movq %rax, -0x3b0(%rbp)
leaq -0x3b0(%rbp), %r12
movq %r12, %rdi
leaq 0xec1f(%rip), %rdx      # 0x1d481
movq %rdx, %rsi
callq 0x16dc8
movl $0x4, %edi
movl %ebx, %esi
movq %r12, %rdx
callq 0x4d8b
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0xe89b
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 0x16d2e
movq -0x1f0(%rbp), %rax
leal (%rax,%r13), %esi
movl $0xa, %edi
movq %rbx, %rdx
callq 0x4d8b
movl -0xfc(%rbp), %r15d
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0xe904
movq -0x380(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %r13
cmpq %r14, %r13
jne 0xe7c4
movl %r15d, -0x160(%rbp)
leaq -0x158(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x15b5a
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 0x16d2e
movl -0x160(%rbp), %eax
movl %eax, -0x98(%rbp)
movq -0x158(%rbp), %rax
movq %rax, -0x90(%rbp)
movups -0x150(%rbp), %xmm0
movups %xmm0, -0x88(%rbp)
xorps %xmm0, %xmm0
leaq -0x158(%rbp), %rax
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
leaq 0x15ae7(%rip), %rdi     # 0x24480
movq %rbx, %rsi
callq 0x1a4be
leaq 0xe192(%rip), %r15      # 0x1cb3a
leaq 0xd837(%rip), %r14      # 0x1c1e6
movq -0x90(%rbp), %rdi
testq %rdi, %rdi
je 0xe9c7
movq -0x80(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xe9e9
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x158(%rbp), %rdi
testq %rdi, %rdi
je 0xea04
movq -0x148(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
leaq -0x1c0(%rbp), %rdi
callq 0x16bfa
leaq -0x1e0(%rbp), %rdi
callq 0x15c62
movq -0x310(%rbp), %rdi
testq %rdi, %rdi
je 0xea37
movq -0x300(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0xea4c
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0xeb33
movq -0x170(%rbp), %rsi
subq %rdi, %rsi
jmp 0xeb2e
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 0x4d8b
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0xeb11
movq -0x220(%rbp), %rsi
jmp 0xeb09
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 0x4d8b
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0xeb11
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xeb33
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x15766(%rip), %rdi     # 0x242a0
leaq 0xd6c8(%rip), %rsi      # 0x1c209
callq 0x30b0
testl %eax, %eax
jne 0xebe9
callq 0x5790
leaq -0x120(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x3110
leaq 0x15733(%rip), %rbx     # 0x242a0
movq %rbx, %rdi
leaq 0xd65a(%rip), %rsi      # 0x1c1d1
callq 0x30b0
testl %eax, %eax
je 0xeb93
movq %rbx, %rdi
leaq 0xd661(%rip), %rsi      # 0x1c1eb
callq 0x30b0
testl %eax, %eax
jne 0xebb4
movq 0x15706(%rip), %rsi     # 0x242a0
movq 0x15707(%rip), %rdx     # 0x242a8
leaq -0x120(%rbp), %rdi
callq 0x30c0
callq 0x5790
jmp 0xeb66
leaq -0xd8(%rbp), %rdi
movq %rbx, %rsi
callq 0x3110
callq 0x5790
movq -0xd8(%rbp), %rsi
movq -0x120(%rbp), %rdx
leaq 0xdfad(%rip), %rdi      # 0x1cb8a
xorl %eax, %eax
callq 0x1559d
jmp 0xdaf8
leaq -0x488(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xd614(%rip), %rsi      # 0x1c20f
leaq 0xd60e(%rip), %rdx      # 0x1c210
leaq -0x498(%rbp), %rdi
callq 0x16dc8
leaq -0x468(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xdf97(%rip), %rsi      # 0x1cbb7
leaq 0xdf98(%rip), %rdx      # 0x1cbbf
leaq -0x478(%rbp), %rdi
callq 0x16dc8
leaq -0x498(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x5d07
movq -0x478(%rbp), %rdi
cmpq %r14, %rdi
je 0xec61
movq -0x468(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x498(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf683
movq -0x488(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf683
leaq 0xddb3(%rip), %rdi      # 0x1ca3f
xorl %eax, %eax
callq 0x1559d
movq 0x1562e(%rip), %rdi     # 0x242c8
cmpq %rdi, 0x1561f(%rip)     # 0x242c0
je 0xecc5
addq $-0x40, %rdi
leaq 0xda7b(%rip), %rsi      # 0x1c729
callq 0x30b0
testl %eax, %eax
je 0xecc5
leaq 0xdda6(%rip), %rdi      # 0x1ca64
xorl %eax, %eax
callq 0x1585f
callq 0x5790
xorps %xmm0, %xmm0
movaps %xmm0, -0x50(%rbp)
movq $0x0, -0x40(%rbp)
leaq 0x155c0(%rip), %rdi     # 0x242a0
leaq 0xde9e(%rip), %rsi      # 0x1cb85
callq 0x30b0
testl %eax, %eax
je 0xee00
leaq -0x150(%rbp), %r12
leaq -0x1c0(%rbp), %rbx
leaq -0x160(%rbp), %r14
leaq -0xb8(%rbp), %r15
movq %rbx, %rdi
callq 0x635f
movq %r12, -0x160(%rbp)
movq 0x1557a(%rip), %rsi     # 0x242a0
movq 0x1557b(%rip), %rdx     # 0x242a8
addq %rsi, %rdx
movq %r14, %rdi
callq 0x16d2e
callq 0x5790
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x16906
leaq -0x50(%rbp), %rdi
movq %r15, %rsi
callq 0x19c9a
movq -0x98(%rbp), %rdi
leaq -0x88(%rbp), %rax
cmpq %rax, %rdi
je 0xed79
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xed9b
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0x154fe(%rip), %rdi     # 0x242a0
leaq 0xd460(%rip), %rsi      # 0x1c209
callq 0x30b0
movl %eax, %r13d
testl %eax, %eax
jne 0xedba
callq 0x5790
movq -0x160(%rbp), %rdi
cmpq %r12, %rdi
je 0xedd5
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0xedf7
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
testl %r13d, %r13d
je 0xed10
leaq -0x548(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0xdd73(%rip), %rsi      # 0x1cb85
leaq 0xdd6d(%rip), %rdx      # 0x1cb86
leaq -0x558(%rbp), %rdi
callq 0x16dc8
leaq 0xdc5a(%rip), %rsi      # 0x1ca86
leaq -0x578(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x15a35
leaq -0x558(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x5d07
leaq -0x568(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xee71
movq -0x568(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x558(%rbp), %rdi
cmpq %rbx, %rdi
je 0xee8c
movq -0x548(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0xdb26(%rip), %rsi      # 0x1c9c4
leaq 0xdb20(%rip), %rdx      # 0x1c9c5
leaq -0xf8(%rbp), %rdi
callq 0x16dc8
movq -0x50(%rbp), %rdx
cmpq %rdx, -0x48(%rbp)
je 0xef49
xorl %r12d, %r12d
leaq 0xd340(%rip), %r15      # 0x1c209
leaq -0xb8(%rbp), %rbx
leaq -0xf8(%rbp), %r14
xorl %r13d, %r13d
testq %r13, %r13
movq %r15, %rsi
leaq 0xe59a(%rip), %rax      # 0x1d481
cmoveq %rax, %rsi
addq %r12, %rdx
movq %rbx, %rdi
callq 0x15a35
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 0xef2e
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 0xeeda
leaq 0xdc35(%rip), %rsi      # 0x1cb85
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 0x16d2e
leaq -0x508(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0xf8(%rbp), %rsi
movq -0xf0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x518(%rbp), %rdi
callq 0x16d2e
leaq -0x4e8(%rbp), %r15
movq %r15, -0x10(%r15)
movq -0x120(%rbp), %rsi
movq -0x118(%rbp), %rdx
addq %rsi, %rdx
leaq -0x4f8(%rbp), %rdi
callq 0x16d2e
movq -0x48(%rbp), %rcx
subq -0x50(%rbp), %rcx
shrq $0x6, %rcx
leaq -0x538(%rbp), %rdi
leaq -0x518(%rbp), %rsi
leaq -0x4f8(%rbp), %rdx
callq 0x4a32
movq -0x4f8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf015
movq -0x4e8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x518(%rbp), %rdi
cmpq %r14, %rdi
je 0xf030
movq -0x508(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x538(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf04b
movq -0x528(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq 0xd6d7(%rip), %rax      # 0x1c729
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 0x16d2e
movq -0x1c0(%rbp), %rsi
leaq -0xb8(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0x1567c
leaq -0x88(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x1b8(%rbp), %rax
cmpq %rbx, %rax
je 0xf0c6
movq %rax, -0x98(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0xf0cd
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 0x151c1(%rip), %rdi     # 0x242c0
callq 0x19c9a
movq -0x98(%rbp), %rdi
cmpq %r14, %rdi
je 0xf11f
movq -0x88(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa8(%rbp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0xf13e
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1b8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf159
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 0x16974
leaq 0x15359(%rip), %rdi     # 0x244f0
leaq -0xb8(%rbp), %rsi
callq 0x19f24
leaq -0x60(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf1bc
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf1d5
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0xa0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf1f4
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
callq 0x5790
leaq -0x4c8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xd264(%rip), %rsi      # 0x1c46f
leaq 0xd25e(%rip), %rdx      # 0x1c470
leaq -0x4d8(%rbp), %rdi
callq 0x16dc8
leaq 0xd50d(%rip), %rsi      # 0x1c732
leaq -0x180(%rbp), %rdi
leaq -0xd8(%rbp), %rdx
callq 0x15a35
leaq 0xd851(%rip), %rsi      # 0x1ca90
leaq -0x180(%rbp), %rdi
callq 0x3360
leaq -0x150(%rbp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf278
movq %rdx, -0x160(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x150(%rbp)
jmp 0xf280
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
leaq -0x160(%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 0xf2de
movq %rdx, -0x1c0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x1b0(%rbp)
jmp 0xf2e4
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 0xf33e
movq %rdx, -0xb8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xa8(%rbp)
jmp 0xf345
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 0xd729(%rip), %rsi      # 0x1ca93
callq 0x3360
leaq -0x448(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf39d
movq %rdx, -0x458(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x448(%rbp)
jmp 0xf3a5
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 0x5d07
movq -0x458(%rbp), %rdi
cmpq %r12, %rdi
je 0xf3ea
movq -0x448(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf405
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf420
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0xf43b
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf45a
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x4d8(%rbp), %rdi
cmpq %r14, %rdi
je 0xf475
movq -0x4c8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x4a8(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0xdffa(%rip), %rdx      # 0x1d481
leaq -0x4b8(%rbp), %rdi
movq %rdx, %rsi
callq 0x16dc8
leaq -0x4b8(%rbp), %rdx
movl $0x23, %edi
xorl %esi, %esi
callq 0x4d8b
movq %rax, %rbx
movq -0x4b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xf4c7
movq -0x4a8(%rbp), %rsi
incq %rsi
callq 0x31d0
incq %rbx
xorps %xmm0, %xmm0
leaq -0x130(%rbp), %rax
movaps %xmm0, -0x30(%rax)
movaps %xmm0, -0x10(%rax)
movaps %xmm0, -0x20(%rax)
movq $0x0, (%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq -0x1b8(%rbp), %r14
movq %rbx, -0x8(%r14)
leaq -0x160(%rbp), %rdx
movq %r14, %rdi
movq %rdx, %rsi
callq 0x16a80
movl -0x8(%r14), %eax
leaq -0xb0(%rbp), %r15
movl %eax, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
movq %r14, %rdx
callq 0x16a80
leaq 0x14e11(%rip), %rdi     # 0x24350
leaq -0xb8(%rbp), %rsi
callq 0x19f62
movq %r15, %rdi
callq 0x16afe
movq %r14, %rdi
callq 0x16afe
leaq -0x160(%rbp), %rdi
callq 0x16afe
movq -0x50(%rbp), %rax
cmpq %rax, -0x48(%rbp)
je 0xf658
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 0x16d2e
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 0x16d2e
movq -0x48(%rbp), %rdx
subq -0x50(%rbp), %rdx
sarq $0x6, %rdx
addq %r12, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4911
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0xf614
movq -0x3e0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0xf636
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 0xf58f
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xf67a
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x50(%rbp), %rdi
callq 0x153c6
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xf6a5
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0xf6c7
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x110(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf6e6
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 0xd46a(%rip), %rdi      # 0x1cb69
leaq 0xcd2e(%rip), %rsi      # 0x1c434
leaq 0xd465(%rip), %rcx      # 0x1cb72
movl $0x45f, %edx            # imm = 0x45F
callq 0x3130
movq %rax, -0x30(%rbp)
movq %r15, %rdi
callq 0x16afe
movq %r14, %rdi
callq 0x16afe
leaq -0x160(%rbp), %rdi
callq 0x16afe
jmp 0xfbe4
movq %rax, -0x30(%rbp)
movq -0x4b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xfbe4
movq -0x4a8(%rbp), %rsi
jmp 0xfbd6
jmp 0xfbe0
movq %rax, -0x30(%rbp)
movq -0x458(%rbp), %rdi
cmpq %r12, %rdi
je 0xf786
movq -0x448(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf786
movq %rax, -0x30(%rbp)
movq -0xb8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf7a7
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf7a7
movq %rax, -0x30(%rbp)
movq -0x1c0(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf7c8
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf7c8
movq %rax, -0x30(%rbp)
movq -0x160(%rbp), %rdi
cmpq %r13, %rdi
je 0xf7e9
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf7e9
movq %rax, -0x30(%rbp)
leaq -0x170(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf80e
movq -0x170(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf80e
movq %rax, -0x30(%rbp)
movq -0x4d8(%rbp), %rdi
cmpq %r14, %rdi
je 0xfbe4
movq -0x4c8(%rbp), %rsi
jmp 0xfbd6
jmp 0xfbe0
movq %rax, %rdi
callq 0x15f09
jmp 0xfbe0
movq %rax, -0x30(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x15bda
jmp 0xf852
movq %rax, -0x30(%rbp)
movq -0x1b8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfbe4
movq -0x1a8(%rbp), %rsi
jmp 0xfbd6
jmp 0xfbe0
movq %rax, -0x30(%rbp)
movq -0x4f8(%rbp), %rdi
cmpq %r15, %rdi
je 0xf898
movq -0x4e8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf898
movq %rax, -0x30(%rbp)
movq -0x518(%rbp), %rdi
cmpq %r14, %rdi
je 0xf8b9
movq -0x508(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf8b9
movq %rax, -0x30(%rbp)
movq -0x538(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfbe4
movq -0x528(%rbp), %rsi
jmp 0xfbd6
jmp 0xfc00
movq %rax, -0x30(%rbp)
leaq -0x568(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xf903
movq -0x568(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf903
movq %rax, -0x30(%rbp)
movq -0x558(%rbp), %rdi
cmpq %rbx, %rdi
je 0xfc66
movq -0x548(%rbp), %rsi
jmp 0xfc5e
jmp 0xfc00
movq %rax, %r15
movq -0x478(%rbp), %rdi
cmpq %r14, %rdi
je 0xf947
movq -0x468(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xf947
movq %rax, %r15
movq -0x498(%rbp), %rdi
cmpq %rbx, %rdi
je 0xf962
movq -0x488(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %r15, %rbx
jmp 0xfead
jmp 0xfeaa
movq %rax, %rbx
jmp 0xfecf
movq %rax, %rbx
jmp 0xfef1
jmp 0xfbe0
jmp 0xf9ae
jmp 0xf9ae
jmp 0xfeaa
movq %rax, %rbx
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0xf9dd
movq -0x220(%rbp), %rsi
jmp 0xf9d5
jmp 0xf9ae
movq %rax, %rbx
jmp 0xf9dd
jmp 0xfeaa
movq %rax, %rbx
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0xf9dd
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfead
movq -0xa8(%rbp), %rsi
jmp 0xfcc5
jmp 0xfeaa
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0x15c20
jmp 0xfa19
movq %rax, %rbx
movq -0x158(%rbp), %rdi
testq %rdi, %rdi
je 0xfe45
movq -0x148(%rbp), %rsi
subq %rdi, %rsi
jmp 0xfe40
jmp 0xfd68
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfe51
movq -0xa8(%rbp), %rsi
jmp 0xfab1
jmp 0xfabe
jmp 0xfabe
jmp 0xfdef
movq %rax, %rbx
movq -0x290(%rbp), %rdi
leaq -0x280(%rbp), %rax
cmpq %rax, %rdi
je 0xfa93
movq -0x280(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfa93
movq %rax, %rbx
movq -0x2b0(%rbp), %rdi
leaq -0x2a0(%rbp), %rax
cmpq %rax, %rdi
je 0xfe51
movq -0x2a0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfe51
movq %rax, %rbx
jmp 0xfe51
movq %rax, %rbx
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0xfaf0
movq -0x360(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfaf0
movq %rax, %rbx
movq -0x270(%rbp), %rdi
leaq -0x260(%rbp), %rax
cmpq %rax, %rdi
je 0xfe8d
movq -0x260(%rbp), %rsi
jmp 0xfde2
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfe8d
movq -0xa8(%rbp), %rsi
jmp 0xfde2
jmp 0xfdef
movq %rax, %rbx
movq -0x330(%rbp), %rdi
leaq -0x320(%rbp), %rax
cmpq %rax, %rdi
je 0xfead
movq -0x320(%rbp), %rsi
jmp 0xfcc5
jmp 0xfeaa
jmp 0xfeaa
jmp 0xfbe0
movq %rax, -0x30(%rbp)
movq -0x3f0(%rbp), %rdi
leaq -0x3e0(%rbp), %rax
cmpq %rax, %rdi
je 0xfb9c
movq -0x3e0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfb9c
movq %rax, -0x30(%rbp)
movq -0x410(%rbp), %rdi
leaq -0x400(%rbp), %rax
cmpq %rax, %rdi
je 0xfbe4
movq -0x400(%rbp), %rsi
jmp 0xfbd6
movq %rax, -0x30(%rbp)
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfbe4
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfbe4
movq %rax, -0x30(%rbp)
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xfc66
movq -0xe8(%rbp), %rsi
jmp 0xfc5e
movq %rax, -0x30(%rbp)
jmp 0xfc66
movq %rax, -0x30(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x15bda
jmp 0xfc29
jmp 0xfc25
movq %rax, -0x30(%rbp)
jmp 0xfc44
jmp 0xfdef
movq %rax, -0x30(%rbp)
movq -0x160(%rbp), %rdi
cmpq %r12, %rdi
je 0xfc44
movq -0x150(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x1c0(%rbp), %rdi
leaq -0x1b0(%rbp), %rax
cmpq %rax, %rdi
je 0xfc66
movq -0x1b0(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x50(%rbp), %rdi
callq 0x153c6
movq -0x30(%rbp), %rbx
jmp 0xfead
jmp 0xfeaa
movq %rax, %rbx
jmp 0xfca7
movq %rax, %rbx
movq -0x350(%rbp), %rdi
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0xfca7
movq -0x340(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x250(%rbp), %rdi
leaq -0x240(%rbp), %rax
cmpq %rax, %rdi
je 0xfead
movq -0x240(%rbp), %rsi
incq %rsi
jmp 0xfea3
movq %rax, %rbx
movq -0x390(%rbp), %rdi
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0xfe45
movq -0x380(%rbp), %rsi
jmp 0xfe3d
jmp 0xfd68
movq %rax, %rbx
movq -0x3b0(%rbp), %rdi
leaq -0x3a0(%rbp), %rax
cmpq %rax, %rdi
je 0xfe45
movq -0x3a0(%rbp), %rsi
jmp 0xfe3d
jmp 0xfd68
jmp 0xfdf9
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
cmpq %r14, %rdi
je 0xfd40
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x160(%rbp), %rdi
leaq -0x150(%rbp), %rax
cmpq %rax, %rdi
je 0xfe23
movq -0x150(%rbp), %rsi
jmp 0xfe1b
jmp 0xfdf9
movq %rax, %rbx
jmp 0xfe45
jmp 0xfdf9
jmp 0xfdef
movq %rax, %rbx
movq -0x2f0(%rbp), %rdi
leaq -0x2e0(%rbp), %rax
cmpq %rax, %rdi
je 0xfe8d
movq -0x2e0(%rbp), %rsi
jmp 0xfde2
movq %rax, %rbx
movq -0x3d0(%rbp), %rdi
leaq -0x3c0(%rbp), %rax
cmpq %rax, %rdi
je 0xfdc4
movq -0x3c0(%rbp), %rsi
incq %rsi
callq 0x31d0
jmp 0xfdc4
movq %rax, %rbx
movq -0x2d0(%rbp), %rdi
leaq -0x2c0(%rbp), %rax
cmpq %rax, %rdi
je 0xfe8d
movq -0x2c0(%rbp), %rsi
incq %rsi
jmp 0xfe88
jmp 0xfeaa
movq %rax, %rbx
jmp 0xfe8d
jmp 0xfdf9
movq %rax, %rbx
jmp 0xfe23
movq %rax, %rbx
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0xfe23
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0xfe45
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x1c0(%rbp), %rdi
callq 0x16bfa
leaq -0x1e0(%rbp), %rdi
callq 0x15c62
movq -0x310(%rbp), %rdi
testq %rdi, %rdi
je 0xfe78
movq -0x300(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x50(%rbp), %rdi
testq %rdi, %rdi
je 0xfe8d
movq -0x40(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0xfead
movq -0x170(%rbp), %rsi
subq %rdi, %rsi
callq 0x31d0
jmp 0xfead
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0xfecf
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x31d0
movq -0x430(%rbp), %rdi
leaq -0x420(%rbp), %rax
cmpq %rax, %rdi
je 0xfef1
movq -0x420(%rbp), %rsi
incq %rsi
callq 0x31d0
leaq -0x110(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xff10
movq -0x110(%rbp), %rsi
incq %rsi
callq 0x31d0
movq %rbx, %rdi
callq 0x3320