// File: rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::constant_expression_vector[abi:cxx11](spirv_cross::SPIRConstant const&, unsigned int)
string CompilerGLSL::constant_expression_vector(const SPIRConstant &c, uint32_t vector)
{
	auto type = get<SPIRType>(c.constant_type);
	type.columns = 1;

	string res;
	bool splat = backend.use_constructor_splatting && c.vector_size() > 1;
	bool swizzle_splat = backend.can_swizzle_scalar && c.vector_size() > 1;

	if (!type_is_floating_point(type))
	{
		// Cannot swizzle literal integers as a special case.
		swizzle_splat = false;
	}

	if (splat || swizzle_splat)
	{
		// Cannot use constant splatting if we have specialization constants somewhere in the vector.
		for (uint32_t i = 0; i < c.vector_size(); i++)
		{
			if (options.vulkan_semantics && c.specialization_constant_id(vector, i) != 0)
			{
				splat = false;
				swizzle_splat = false;
				break;
			}
		}
	}

	if (splat || swizzle_splat)
	{
		if (type.width == 64)
		{
			uint64_t ident = c.scalar_u64(vector, 0);
			for (uint32_t i = 1; i < c.vector_size(); i++)
			{
				if (ident != c.scalar_u64(vector, i))
				{
					splat = false;
					swizzle_splat = false;
					break;
				}
			}
		}
		else
		{
			uint32_t ident = c.scalar(vector, 0);
			for (uint32_t i = 1; i < c.vector_size(); i++)
			{
				if (ident != c.scalar(vector, i))
				{
					splat = false;
					swizzle_splat = false;
				}
			}
		}
	}

	if (c.vector_size() > 1 && !swizzle_splat)
		res += type_to_glsl(type) + "(";

	switch (type.basetype)
	{
	case SPIRType::Half:
		if (splat || swizzle_splat)
		{
			res += convert_half_to_string(c, vector, 0);
			if (swizzle_splat)
				res = remap_swizzle(get<SPIRType>(c.constant_type), 1, res);
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
					res += convert_half_to_string(c, vector, i);

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::Float:
		if (splat || swizzle_splat)
		{
			res += convert_float_to_string(c, vector, 0);
			if (swizzle_splat)
				res = remap_swizzle(get<SPIRType>(c.constant_type), 1, res);
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
					res += convert_float_to_string(c, vector, i);

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::Double:
		if (splat || swizzle_splat)
		{
			res += convert_double_to_string(c, vector, 0);
			if (swizzle_splat)
				res = remap_swizzle(get<SPIRType>(c.constant_type), 1, res);
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
					res += convert_double_to_string(c, vector, i);

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::Int64:
		if (splat)
		{
			res += convert_to_string(c.scalar_i64(vector, 0));
			if (backend.long_long_literal_suffix)
				res += "ll";
			else
				res += "l";
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
				{
					res += convert_to_string(c.scalar_i64(vector, i));
					if (backend.long_long_literal_suffix)
						res += "ll";
					else
						res += "l";
				}

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::UInt64:
		if (splat)
		{
			res += convert_to_string(c.scalar_u64(vector, 0));
			if (backend.long_long_literal_suffix)
				res += "ull";
			else
				res += "ul";
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
				{
					res += convert_to_string(c.scalar_u64(vector, i));
					if (backend.long_long_literal_suffix)
						res += "ull";
					else
						res += "ul";
				}

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::UInt:
		if (splat)
		{
			res += convert_to_string(c.scalar(vector, 0));
			if (is_legacy())
			{
				// Fake unsigned constant literals with signed ones if possible.
				// Things like array sizes, etc, tend to be unsigned even though they could just as easily be signed.
				if (c.scalar_i32(vector, 0) < 0)
					SPIRV_CROSS_THROW("Tried to convert uint literal into int, but this made the literal negative.");
			}
			else if (backend.uint32_t_literal_suffix)
				res += "u";
		}
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
				{
					res += convert_to_string(c.scalar(vector, i));
					if (is_legacy())
					{
						// Fake unsigned constant literals with signed ones if possible.
						// Things like array sizes, etc, tend to be unsigned even though they could just as easily be signed.
						if (c.scalar_i32(vector, i) < 0)
							SPIRV_CROSS_THROW(
							    "Tried to convert uint literal into int, but this made the literal negative.");
					}
					else if (backend.uint32_t_literal_suffix)
						res += "u";
				}

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::Int:
		if (splat)
			res += convert_to_string(c.scalar_i32(vector, 0));
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
					res += convert_to_string(c.scalar_i32(vector, i));
				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	case SPIRType::Boolean:
		if (splat)
			res += c.scalar(vector, 0) ? "true" : "false";
		else
		{
			for (uint32_t i = 0; i < c.vector_size(); i++)
			{
				if (options.vulkan_semantics && c.vector_size() > 1 && c.specialization_constant_id(vector, i) != 0)
					res += to_name(c.specialization_constant_id(vector, i));
				else
					res += c.scalar(vector, i) ? "true" : "false";

				if (i + 1 < c.vector_size())
					res += ", ";
			}
		}
		break;

	default:
		SPIRV_CROSS_THROW("Invalid constant expression basetype.");
	}

	if (c.vector_size() > 1 && !swizzle_splat)
		res += ")";

	return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x780, %rsp            # imm = 0x780
movq %rdi, -0x580(%rbp)
movq %rdi, %rax
movq %rax, -0x588(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x578(%rbp)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, %rsi
leaq -0xf8(%rbp), %rdi
callq 0x3d730
movq -0x580(%rbp), %rdi
movl $0x1, -0xe0(%rbp)
movb $0x0, -0xf9(%rbp)
callq 0x7530
movq -0x578(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x629(%rcx)
movb %al, -0x56b(%rbp)
je 0x76169
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x58c(%rbp)
jmp 0x76157
movl -0x58c(%rbp), %eax
cmpl $0x1, %eax
seta %al
movb %al, -0x56b(%rbp)
movq -0x578(%rbp), %rcx
movb -0x56b(%rbp), %al
andb $0x1, %al
movb %al, -0xfa(%rbp)
xorl %eax, %eax
testb $0x1, 0x62c(%rcx)
movb %al, -0x58d(%rbp)
je 0x761b2
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x594(%rbp)
jmp 0x761a0
movl -0x594(%rbp), %eax
cmpl $0x1, %eax
seta %al
movb %al, -0x58d(%rbp)
movb -0x58d(%rbp), %al
andb $0x1, %al
movb %al, -0x10d(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x77f50
movb %al, -0x595(%rbp)
jmp 0x761d4
movb -0x595(%rbp), %al
testb $0x1, %al
jne 0x76200
jmp 0x761e0
movb $0x0, -0x10d(%rbp)
jmp 0x76200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x77f2c
testb $0x1, -0xfa(%rbp)
jne 0x76216
testb $0x1, -0x10d(%rbp)
je 0x762aa
movl $0x0, -0x114(%rbp)
movl -0x114(%rbp), %eax
movl %eax, -0x5a0(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x59c(%rbp)
jmp 0x7623d
movl -0x5a0(%rbp), %eax
movl -0x59c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x762a8
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x76292
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x114(%rbp), %edx
callq 0xa2210
movl %eax, -0x5a4(%rbp)
jmp 0x76277
movl -0x5a4(%rbp), %eax
cmpl $0x0, %eax
je 0x76292
movb $0x0, -0xfa(%rbp)
movb $0x0, -0x10d(%rbp)
jmp 0x762a8
jmp 0x76294
movl -0x114(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x114(%rbp)
jmp 0x76220
jmp 0x762aa
testb $0x1, -0xfa(%rbp)
jne 0x762c0
testb $0x1, -0x10d(%rbp)
je 0x76447
cmpl $0x40, -0xe8(%rbp)
jne 0x76390
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0xa2020
movq %rax, -0x5b0(%rbp)
jmp 0x762e4
movq -0x5b0(%rbp), %rax
movq %rax, -0x120(%rbp)
movl $0x1, -0x124(%rbp)
movl -0x124(%rbp), %eax
movl %eax, -0x5b8(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x5b4(%rbp)
jmp 0x76319
movl -0x5b8(%rbp), %eax
movl -0x5b4(%rbp), %ecx
cmpl %ecx, %eax
jae 0x7638b
movq -0x120(%rbp), %rax
movq %rax, -0x5c8(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x124(%rbp), %edx
callq 0xa2020
movq %rax, -0x5c0(%rbp)
jmp 0x76352
movq -0x5c8(%rbp), %rax
movq -0x5c0(%rbp), %rcx
cmpq %rcx, %rax
je 0x76375
movb $0x0, -0xfa(%rbp)
movb $0x0, -0x10d(%rbp)
jmp 0x7638b
jmp 0x76377
movl -0x124(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x124(%rbp)
jmp 0x762fc
jmp 0x76445
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0x2f560
movl %eax, -0x5cc(%rbp)
jmp 0x763a6
movl -0x5cc(%rbp), %eax
movl %eax, -0x128(%rbp)
movl $0x1, -0x12c(%rbp)
movl -0x12c(%rbp), %eax
movl %eax, -0x5d4(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x5d0(%rbp)
jmp 0x763d9
movl -0x5d4(%rbp), %eax
movl -0x5d0(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76443
movl -0x128(%rbp), %eax
movl %eax, -0x5dc(%rbp)
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x12c(%rbp), %edx
callq 0x2f560
movl %eax, -0x5d8(%rbp)
jmp 0x7640f
movl -0x5dc(%rbp), %eax
movl -0x5d8(%rbp), %ecx
cmpl %ecx, %eax
je 0x7642d
movb $0x0, -0xfa(%rbp)
movb $0x0, -0x10d(%rbp)
jmp 0x7642f
movl -0x12c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x12c(%rbp)
jmp 0x763bc
jmp 0x76445
jmp 0x76447
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x5e0(%rbp)
jmp 0x76458
movl -0x5e0(%rbp), %eax
cmpl $0x1, %eax
jbe 0x76527
testb $0x1, -0x10d(%rbp)
jne 0x76527
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x98(%rax), %rax
leaq -0x170(%rbp), %rdi
leaq -0xf8(%rbp), %rdx
xorl %ecx, %ecx
callq *%rax
jmp 0x76499
leaq 0xd6e8d(%rip), %rdx     # 0x14d32d
leaq -0x150(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0x11910
jmp 0x764b5
movq -0x580(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x7470
jmp 0x764ca
leaq -0x150(%rbp), %rdi
callq 0x7708
leaq -0x170(%rbp), %rdi
callq 0x7708
jmp 0x76527
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x76516
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x7708
leaq -0x170(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl -0xec(%rbp), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x5e8(%rbp)
subl $0x9, %eax
ja 0x77ddf
movq -0x5e8(%rbp), %rax
leaq 0xc9f4c(%rip), %rcx     # 0x14049c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testb $0x1, -0xfa(%rbp)
jne 0x7656f
testb $0x1, -0x10d(%rbp)
je 0x76649
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
leaq -0x190(%rbp), %rdi
xorl %r8d, %r8d
callq 0x74b10
jmp 0x7658e
movq -0x580(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x7470
jmp 0x765a3
leaq -0x190(%rbp), %rdi
callq 0x7708
testb $0x1, -0x10d(%rbp)
je 0x76644
movq -0x578(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x5f0(%rbp)
jmp 0x765d8
movq -0x580(%rbp), %r8
movq -0x5f0(%rbp), %rdx
movq -0x578(%rbp), %rsi
leaq -0x1b0(%rbp), %rdi
movl $0x1, %ecx
callq 0x6fd00
jmp 0x76600
movq -0x580(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x7430
leaq -0x1b0(%rbp), %rdi
callq 0x7708
jmp 0x76644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
jmp 0x7682f
movl $0x0, -0x1b4(%rbp)
movl -0x1b4(%rbp), %eax
movl %eax, -0x5f8(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x5f4(%rbp)
jmp 0x76670
movl -0x5f8(%rbp), %eax
movl -0x5f4(%rbp), %ecx
cmpl %ecx, %eax
jae 0x7682d
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x76768
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x5fc(%rbp)
jmp 0x766a9
movl -0x5fc(%rbp), %eax
cmpl $0x1, %eax
jbe 0x76768
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x1b4(%rbp), %edx
callq 0xa2210
movl %eax, -0x600(%rbp)
jmp 0x766d2
movl -0x600(%rbp), %eax
cmpl $0x0, %eax
je 0x76768
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x1b4(%rbp), %edx
callq 0xa2210
movl %eax, -0x604(%rbp)
jmp 0x766fb
movl -0x604(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x1d8(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x7671f
movq -0x580(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x7470
jmp 0x76734
leaq -0x1d8(%rbp), %rdi
callq 0x7708
jmp 0x767d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
movl -0x1b4(%rbp), %r8d
leaq -0x1f8(%rbp), %rdi
callq 0x74b10
jmp 0x7678b
movq -0x580(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x7470
jmp 0x767a0
leaq -0x1f8(%rbp), %rdi
callq 0x7708
jmp 0x767d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl -0x1b4(%rbp), %eax
incl %eax
movl %eax, -0x60c(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x608(%rbp)
jmp 0x767f0
movl -0x60c(%rbp), %eax
movl -0x608(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76817
movq -0x580(%rbp), %rdi
leaq 0xcdd81(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x76815
jmp 0x76817
jmp 0x76819
movl -0x1b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1b4(%rbp)
jmp 0x76653
jmp 0x7682f
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
jne 0x7684a
testb $0x1, -0x10d(%rbp)
je 0x76924
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
leaq -0x218(%rbp), %rdi
xorl %r8d, %r8d
callq 0x75380
jmp 0x76869
movq -0x580(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0x7470
jmp 0x7687e
leaq -0x218(%rbp), %rdi
callq 0x7708
testb $0x1, -0x10d(%rbp)
je 0x7691f
movq -0x578(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x618(%rbp)
jmp 0x768b3
movq -0x580(%rbp), %r8
movq -0x618(%rbp), %rdx
movq -0x578(%rbp), %rsi
leaq -0x238(%rbp), %rdi
movl $0x1, %ecx
callq 0x6fd00
jmp 0x768db
movq -0x580(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x7430
leaq -0x238(%rbp), %rdi
callq 0x7708
jmp 0x7691f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
jmp 0x76b0a
movl $0x0, -0x23c(%rbp)
movl -0x23c(%rbp), %eax
movl %eax, -0x620(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x61c(%rbp)
jmp 0x7694b
movl -0x620(%rbp), %eax
movl -0x61c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76b08
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x76a43
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x624(%rbp)
jmp 0x76984
movl -0x624(%rbp), %eax
cmpl $0x1, %eax
jbe 0x76a43
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x23c(%rbp), %edx
callq 0xa2210
movl %eax, -0x628(%rbp)
jmp 0x769ad
movl -0x628(%rbp), %eax
cmpl $0x0, %eax
je 0x76a43
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x23c(%rbp), %edx
callq 0xa2210
movl %eax, -0x62c(%rbp)
jmp 0x769d6
movl -0x62c(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x260(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x769fa
movq -0x580(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0x7470
jmp 0x76a0f
leaq -0x260(%rbp), %rdi
callq 0x7708
jmp 0x76aac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
movl -0x23c(%rbp), %r8d
leaq -0x280(%rbp), %rdi
callq 0x75380
jmp 0x76a66
movq -0x580(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0x7470
jmp 0x76a7b
leaq -0x280(%rbp), %rdi
callq 0x7708
jmp 0x76aac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl -0x23c(%rbp), %eax
incl %eax
movl %eax, -0x634(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x630(%rbp)
jmp 0x76acb
movl -0x634(%rbp), %eax
movl -0x630(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76af2
movq -0x580(%rbp), %rdi
leaq 0xcdaa6(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x76af0
jmp 0x76af2
jmp 0x76af4
movl -0x23c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x23c(%rbp)
jmp 0x7692e
jmp 0x76b0a
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
jne 0x76b25
testb $0x1, -0x10d(%rbp)
je 0x76bff
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
leaq -0x2a0(%rbp), %rdi
xorl %r8d, %r8d
callq 0x75880
jmp 0x76b44
movq -0x580(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x7470
jmp 0x76b59
leaq -0x2a0(%rbp), %rdi
callq 0x7708
testb $0x1, -0x10d(%rbp)
je 0x76bfa
movq -0x578(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x640(%rbp)
jmp 0x76b8e
movq -0x580(%rbp), %r8
movq -0x640(%rbp), %rdx
movq -0x578(%rbp), %rsi
leaq -0x2c0(%rbp), %rdi
movl $0x1, %ecx
callq 0x6fd00
jmp 0x76bb6
movq -0x580(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x7430
leaq -0x2c0(%rbp), %rdi
callq 0x7708
jmp 0x76bfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
jmp 0x76de5
movl $0x0, -0x2c4(%rbp)
movl -0x2c4(%rbp), %eax
movl %eax, -0x648(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x644(%rbp)
jmp 0x76c26
movl -0x648(%rbp), %eax
movl -0x644(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76de3
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x76d1e
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x64c(%rbp)
jmp 0x76c5f
movl -0x64c(%rbp), %eax
cmpl $0x1, %eax
jbe 0x76d1e
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x2c4(%rbp), %edx
callq 0xa2210
movl %eax, -0x650(%rbp)
jmp 0x76c88
movl -0x650(%rbp), %eax
cmpl $0x0, %eax
je 0x76d1e
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x2c4(%rbp), %edx
callq 0xa2210
movl %eax, -0x654(%rbp)
jmp 0x76cb1
movl -0x654(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x2e8(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x76cd5
movq -0x580(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x7470
jmp 0x76cea
leaq -0x2e8(%rbp), %rdi
callq 0x7708
jmp 0x76d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x578(%rbp), %rsi
movq -0x18(%rbp), %rdx
movl -0x1c(%rbp), %ecx
movl -0x2c4(%rbp), %r8d
leaq -0x308(%rbp), %rdi
callq 0x75880
jmp 0x76d41
movq -0x580(%rbp), %rdi
leaq -0x308(%rbp), %rsi
callq 0x7470
jmp 0x76d56
leaq -0x308(%rbp), %rdi
callq 0x7708
jmp 0x76d87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl -0x2c4(%rbp), %eax
incl %eax
movl %eax, -0x65c(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x658(%rbp)
jmp 0x76da6
movl -0x65c(%rbp), %eax
movl -0x658(%rbp), %ecx
cmpl %ecx, %eax
jae 0x76dcd
movq -0x580(%rbp), %rdi
leaq 0xcd7cb(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x76dcb
jmp 0x76dcd
jmp 0x76dcf
movl -0x2c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c4(%rbp)
jmp 0x76c09
jmp 0x76de5
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
je 0x76eb8
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0xa2270
movq %rax, -0x668(%rbp)
jmp 0x76e0e
movq -0x668(%rbp), %rax
movq %rax, -0x330(%rbp)
leaq -0x328(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0xa2240
jmp 0x76e31
movq -0x580(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0x7470
jmp 0x76e46
leaq -0x328(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rax
testb $0x1, 0x603(%rax)
je 0x76e9c
movq -0x580(%rbp), %rdi
leaq 0xcc2e2(%rip), %rsi     # 0x143152
callq 0x7340
jmp 0x76e77
jmp 0x76eb3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x580(%rbp), %rdi
leaq 0xd002d(%rip), %rsi     # 0x146ed7
callq 0x7340
jmp 0x76eb1
jmp 0x76eb3
jmp 0x770f7
movl $0x0, -0x334(%rbp)
movl -0x334(%rbp), %eax
movl %eax, -0x670(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x66c(%rbp)
jmp 0x76edf
movl -0x670(%rbp), %eax
movl -0x66c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x770f5
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x76fd7
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x674(%rbp)
jmp 0x76f18
movl -0x674(%rbp), %eax
cmpl $0x1, %eax
jbe 0x76fd7
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x334(%rbp), %edx
callq 0xa2210
movl %eax, -0x678(%rbp)
jmp 0x76f41
movl -0x678(%rbp), %eax
cmpl $0x0, %eax
je 0x76fd7
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x334(%rbp), %edx
callq 0xa2210
movl %eax, -0x67c(%rbp)
jmp 0x76f6a
movl -0x67c(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x358(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x76f8e
movq -0x580(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x7470
jmp 0x76fa3
leaq -0x358(%rbp), %rdi
callq 0x7708
jmp 0x77099
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x334(%rbp), %edx
callq 0xa2270
movq %rax, -0x688(%rbp)
jmp 0x76ff2
movq -0x688(%rbp), %rax
movq %rax, -0x380(%rbp)
leaq -0x378(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0xa2240
jmp 0x77015
movq -0x580(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0x7470
jmp 0x7702a
leaq -0x378(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rax
testb $0x1, 0x603(%rax)
je 0x77080
movq -0x580(%rbp), %rdi
leaq 0xcc0fe(%rip), %rsi     # 0x143152
callq 0x7340
jmp 0x7705b
jmp 0x77097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x580(%rbp), %rdi
leaq 0xcfe49(%rip), %rsi     # 0x146ed7
callq 0x7340
jmp 0x77095
jmp 0x77097
jmp 0x77099
movl -0x334(%rbp), %eax
incl %eax
movl %eax, -0x690(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x68c(%rbp)
jmp 0x770b8
movl -0x690(%rbp), %eax
movl -0x68c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x770df
movq -0x580(%rbp), %rdi
leaq 0xcd4b9(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x770dd
jmp 0x770df
jmp 0x770e1
movl -0x334(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x334(%rbp)
jmp 0x76ec2
jmp 0x770f7
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
je 0x771ca
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0xa2020
movq %rax, -0x698(%rbp)
jmp 0x77120
movq -0x698(%rbp), %rax
movq %rax, -0x3a8(%rbp)
leaq -0x3a0(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0xa22a0
jmp 0x77143
movq -0x580(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0x7470
jmp 0x77158
leaq -0x3a0(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rax
testb $0x1, 0x603(%rax)
je 0x771ae
movq -0x580(%rbp), %rdi
leaq 0xcb5cb(%rip), %rsi     # 0x14274d
callq 0x7340
jmp 0x77189
jmp 0x771c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x3a0(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x580(%rbp), %rdi
leaq 0xcc049(%rip), %rsi     # 0x143205
callq 0x7340
jmp 0x771c3
jmp 0x771c5
jmp 0x77409
movl $0x0, -0x3ac(%rbp)
movl -0x3ac(%rbp), %eax
movl %eax, -0x6a0(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x69c(%rbp)
jmp 0x771f1
movl -0x6a0(%rbp), %eax
movl -0x69c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77407
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x772e9
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x6a4(%rbp)
jmp 0x7722a
movl -0x6a4(%rbp), %eax
cmpl $0x1, %eax
jbe 0x772e9
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x3ac(%rbp), %edx
callq 0xa2210
movl %eax, -0x6a8(%rbp)
jmp 0x77253
movl -0x6a8(%rbp), %eax
cmpl $0x0, %eax
je 0x772e9
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x3ac(%rbp), %edx
callq 0xa2210
movl %eax, -0x6ac(%rbp)
jmp 0x7727c
movl -0x6ac(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x3d0(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x772a0
movq -0x580(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x7470
jmp 0x772b5
leaq -0x3d0(%rbp), %rdi
callq 0x7708
jmp 0x773ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x3ac(%rbp), %edx
callq 0xa2020
movq %rax, -0x6b8(%rbp)
jmp 0x77304
movq -0x6b8(%rbp), %rax
movq %rax, -0x3f8(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0xa22a0
jmp 0x77327
movq -0x580(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0x7470
jmp 0x7733c
leaq -0x3f0(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rax
testb $0x1, 0x603(%rax)
je 0x77392
movq -0x580(%rbp), %rdi
leaq 0xcb3e7(%rip), %rsi     # 0x14274d
callq 0x7340
jmp 0x7736d
jmp 0x773a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x580(%rbp), %rdi
leaq 0xcbe65(%rip), %rsi     # 0x143205
callq 0x7340
jmp 0x773a7
jmp 0x773a9
jmp 0x773ab
movl -0x3ac(%rbp), %eax
incl %eax
movl %eax, -0x6c0(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x6bc(%rbp)
jmp 0x773ca
movl -0x6c0(%rbp), %eax
movl -0x6bc(%rbp), %ecx
cmpl %ecx, %eax
jae 0x773f1
movq -0x580(%rbp), %rdi
leaq 0xcd1a7(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x773ef
jmp 0x773f1
jmp 0x773f3
movl -0x3ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3ac(%rbp)
jmp 0x771d4
jmp 0x77409
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
je 0x775ea
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0x2f560
movl %eax, -0x6c4(%rbp)
jmp 0x77431
movl -0x6c4(%rbp), %eax
movl %eax, -0x41c(%rbp)
leaq -0x418(%rbp), %rdi
leaq -0x41c(%rbp), %rsi
callq 0xa22d0
jmp 0x77452
movq -0x580(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x7470
jmp 0x77467
leaq -0x418(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rdi
callq 0x9f610
movb %al, -0x6c5(%rbp)
jmp 0x77487
movb -0x6c5(%rbp), %al
testb $0x1, %al
jne 0x77496
jmp 0x775bc
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0xa2300
movl %eax, -0x6cc(%rbp)
jmp 0x774ac
movl -0x6cc(%rbp), %eax
cmpl $0x0, %eax
jge 0x775ba
movb $0x1, -0x442(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x6e0(%rbp)
leaq -0x441(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0x7650
movq -0x6d8(%rbp), %rdx
leaq 0xcb28e(%rip), %rsi     # 0x142782
leaq -0x440(%rbp), %rdi
callq 0x7520
jmp 0x77502
movq -0x6e0(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x9c50
jmp 0x77517
movq -0x6e0(%rbp), %rdi
movb $0x0, -0x442(%rbp)
leaq 0x1368ac(%rip), %rsi    # 0x1addd8
leaq -0x6d8a3(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x77f50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x77592
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x7708
leaq -0x441(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x442(%rbp)
jne 0x775a9
jmp 0x775b5
movq -0x6e0(%rbp), %rdi
callq 0x72c0
jmp 0x77f2c
jmp 0x775e5
movq -0x578(%rbp), %rax
testb $0x1, 0x602(%rax)
je 0x775e3
movq -0x580(%rbp), %rdi
leaq 0xccb73(%rip), %rsi     # 0x14414d
callq 0x7340
jmp 0x775e1
jmp 0x775e3
jmp 0x775e5
jmp 0x7793b
movl $0x0, -0x448(%rbp)
movl -0x448(%rbp), %eax
movl %eax, -0x6e8(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x6e4(%rbp)
jmp 0x77611
movl -0x6e8(%rbp), %eax
movl -0x6e4(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77939
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x77709
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x6ec(%rbp)
jmp 0x7764a
movl -0x6ec(%rbp), %eax
cmpl $0x1, %eax
jbe 0x77709
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x448(%rbp), %edx
callq 0xa2210
movl %eax, -0x6f0(%rbp)
jmp 0x77673
movl -0x6f0(%rbp), %eax
cmpl $0x0, %eax
je 0x77709
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x448(%rbp), %edx
callq 0xa2210
movl %eax, -0x6f4(%rbp)
jmp 0x7769c
movl -0x6f4(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x468(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x776c0
movq -0x580(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0x7470
jmp 0x776d5
leaq -0x468(%rbp), %rdi
callq 0x7708
jmp 0x778dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x448(%rbp), %edx
callq 0x2f560
movl %eax, -0x6f8(%rbp)
jmp 0x77723
movl -0x6f8(%rbp), %eax
movl %eax, -0x48c(%rbp)
leaq -0x488(%rbp), %rdi
leaq -0x48c(%rbp), %rsi
callq 0xa22d0
jmp 0x77744
movq -0x580(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x7470
jmp 0x77759
leaq -0x488(%rbp), %rdi
callq 0x7708
movq -0x578(%rbp), %rdi
callq 0x9f610
movb %al, -0x6f9(%rbp)
jmp 0x77779
movb -0x6f9(%rbp), %al
testb $0x1, %al
jne 0x77788
jmp 0x778b2
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x448(%rbp), %edx
callq 0xa2300
movl %eax, -0x700(%rbp)
jmp 0x777a2
movl -0x700(%rbp), %eax
cmpl $0x0, %eax
jge 0x778b0
movb $0x1, -0x4b2(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x710(%rbp)
leaq -0x4b1(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x7650
movq -0x708(%rbp), %rdx
leaq 0xcaf98(%rip), %rsi     # 0x142782
leaq -0x4b0(%rbp), %rdi
callq 0x7520
jmp 0x777f8
movq -0x710(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x9c50
jmp 0x7780d
movq -0x710(%rbp), %rdi
movb $0x0, -0x4b2(%rbp)
leaq 0x1365b6(%rip), %rsi    # 0x1addd8
leaq -0x6db99(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x77f50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x77888
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x7708
leaq -0x4b1(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x4b2(%rbp)
jne 0x7789f
jmp 0x778ab
movq -0x710(%rbp), %rdi
callq 0x72c0
jmp 0x77f2c
jmp 0x778db
movq -0x578(%rbp), %rax
testb $0x1, 0x602(%rax)
je 0x778d9
movq -0x580(%rbp), %rdi
leaq 0xcc87d(%rip), %rsi     # 0x14414d
callq 0x7340
jmp 0x778d7
jmp 0x778d9
jmp 0x778db
jmp 0x778dd
movl -0x448(%rbp), %eax
incl %eax
movl %eax, -0x718(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x714(%rbp)
jmp 0x778fc
movl -0x718(%rbp), %eax
movl -0x714(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77923
movq -0x580(%rbp), %rdi
leaq 0xccc75(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x77921
jmp 0x77923
jmp 0x77925
movl -0x448(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x448(%rbp)
jmp 0x775f4
jmp 0x7793b
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
je 0x779cd
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0xa2300
movl %eax, -0x71c(%rbp)
jmp 0x77963
movl -0x71c(%rbp), %eax
movl %eax, -0x4dc(%rbp)
leaq -0x4d8(%rbp), %rdi
leaq -0x4dc(%rbp), %rsi
callq 0xa2330
jmp 0x77984
movq -0x580(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x7470
jmp 0x77999
leaq -0x4d8(%rbp), %rdi
callq 0x7708
jmp 0x77bcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl $0x0, -0x4e0(%rbp)
movl -0x4e0(%rbp), %eax
movl %eax, -0x724(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x720(%rbp)
jmp 0x779f4
movl -0x724(%rbp), %eax
movl -0x720(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77bc9
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x77aec
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x728(%rbp)
jmp 0x77a2d
movl -0x728(%rbp), %eax
cmpl $0x1, %eax
jbe 0x77aec
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x4e0(%rbp), %edx
callq 0xa2210
movl %eax, -0x72c(%rbp)
jmp 0x77a56
movl -0x72c(%rbp), %eax
cmpl $0x0, %eax
je 0x77aec
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x4e0(%rbp), %edx
callq 0xa2210
movl %eax, -0x730(%rbp)
jmp 0x77a7f
movl -0x730(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x500(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x77aa3
movq -0x580(%rbp), %rdi
leaq -0x500(%rbp), %rsi
callq 0x7470
jmp 0x77ab8
leaq -0x500(%rbp), %rdi
callq 0x7708
jmp 0x77b6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x500(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x4e0(%rbp), %edx
callq 0xa2300
movl %eax, -0x734(%rbp)
jmp 0x77b06
movl -0x734(%rbp), %eax
movl %eax, -0x524(%rbp)
leaq -0x520(%rbp), %rdi
leaq -0x524(%rbp), %rsi
callq 0xa2330
jmp 0x77b27
movq -0x580(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x7470
jmp 0x77b3c
leaq -0x520(%rbp), %rdi
callq 0x7708
jmp 0x77b6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movl -0x4e0(%rbp), %eax
incl %eax
movl %eax, -0x73c(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x738(%rbp)
jmp 0x77b8c
movl -0x73c(%rbp), %eax
movl -0x738(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77bb3
movq -0x580(%rbp), %rdi
leaq 0xcc9e5(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x77bb1
jmp 0x77bb3
jmp 0x77bb5
movl -0x4e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4e0(%rbp)
jmp 0x779d7
jmp 0x77bcb
jmp 0x77eb8
testb $0x1, -0xfa(%rbp)
je 0x77c1c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
xorl %edx, %edx
callq 0x2f560
movl %eax, -0x740(%rbp)
jmp 0x77bef
movq -0x580(%rbp), %rdi
movl -0x740(%rbp), %eax
testl %eax, %eax
leaq 0xca468(%rip), %rax     # 0x14206d
leaq 0xca160(%rip), %rsi     # 0x141d6c
cmovneq %rax, %rsi
callq 0x7340
jmp 0x77c17
jmp 0x77dda
movl $0x0, -0x528(%rbp)
movl -0x528(%rbp), %eax
movl %eax, -0x748(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x744(%rbp)
jmp 0x77c43
movl -0x748(%rbp), %eax
movl -0x744(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77dd8
movq -0x578(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x77d38
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x74c(%rbp)
jmp 0x77c7c
movl -0x74c(%rbp), %eax
cmpl $0x1, %eax
jbe 0x77d38
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x528(%rbp), %edx
callq 0xa2210
movl %eax, -0x750(%rbp)
jmp 0x77ca5
movl -0x750(%rbp), %eax
cmpl $0x0, %eax
je 0x77d38
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x528(%rbp), %edx
callq 0xa2210
movl %eax, -0x754(%rbp)
jmp 0x77cce
movl -0x754(%rbp), %edx
movq -0x578(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x548(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x77cf2
movq -0x580(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x7470
jmp 0x77d07
leaq -0x548(%rbp), %rdi
callq 0x7708
jmp 0x77d7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x7708
jmp 0x77f2c
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
movl -0x528(%rbp), %edx
callq 0x2f560
movl %eax, -0x758(%rbp)
jmp 0x77d52
movq -0x580(%rbp), %rdi
movl -0x758(%rbp), %eax
testl %eax, %eax
leaq 0xca305(%rip), %rax     # 0x14206d
leaq 0xc9ffd(%rip), %rsi     # 0x141d6c
cmovneq %rax, %rsi
callq 0x7340
jmp 0x77d7a
jmp 0x77d7c
movl -0x528(%rbp), %eax
incl %eax
movl %eax, -0x760(%rbp)
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x75c(%rbp)
jmp 0x77d9b
movl -0x760(%rbp), %eax
movl -0x75c(%rbp), %ecx
cmpl %ecx, %eax
jae 0x77dc2
movq -0x580(%rbp), %rdi
leaq 0xcc7d6(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x77dc0
jmp 0x77dc2
jmp 0x77dc4
movl -0x528(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x528(%rbp)
jmp 0x77c26
jmp 0x77dda
jmp 0x77eb8
movb $0x1, -0x56a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x770(%rbp)
leaq -0x569(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x7650
movq -0x768(%rbp), %rdx
leaq 0xca9b6(%rip), %rsi     # 0x1427ce
leaq -0x568(%rbp), %rdi
callq 0x7520
jmp 0x77e26
movq -0x770(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x9c50
jmp 0x77e3b
movq -0x770(%rbp), %rdi
movb $0x0, -0x56a(%rbp)
leaq 0x135f88(%rip), %rsi    # 0x1addd8
leaq -0x6e1c7(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x77f50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
jmp 0x77e93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x7708
leaq -0x569(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x56a(%rbp)
jne 0x77eaa
jmp 0x77eb6
movq -0x770(%rbp), %rdi
callq 0x72c0
jmp 0x77f2c
movq -0x18(%rbp), %rdi
callq 0xa21f0
movl %eax, -0x774(%rbp)
jmp 0x77ec9
movl -0x774(%rbp), %eax
cmpl $0x1, %eax
jbe 0x77ef4
testb $0x1, -0x10d(%rbp)
jne 0x77ef4
movq -0x580(%rbp), %rdi
leaq 0xcd00e(%rip), %rsi     # 0x144ef9
callq 0x7340
jmp 0x77ef2
jmp 0x77ef4
movb $0x1, -0xf9(%rbp)
testb $0x1, -0xf9(%rbp)
jne 0x77f10
movq -0x580(%rbp), %rdi
callq 0x7708
leaq -0xf8(%rbp), %rdi
callq 0x314e0
movq -0x588(%rbp), %rax
addq $0x780, %rsp            # imm = 0x780
popq %rbp
retq
movq -0x580(%rbp), %rdi
callq 0x7708
leaq -0xf8(%rbp), %rdi
callq 0x314e0
movq -0x108(%rbp), %rdi
callq 0x7640