// File: rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::emit_header()
void CompilerGLSL::emit_header()
{
	auto &execution = get_entry_point();
	statement("#version ", options.version, options.es && options.version > 100 ? " es" : "");

	if (!options.es && options.version < 420)
	{
		// Needed for binding = # on UBOs, etc.
		if (options.enable_420pack_extension)
		{
			statement("#ifdef GL_ARB_shading_language_420pack");
			statement("#extension GL_ARB_shading_language_420pack : require");
			statement("#endif");
		}
		// Needed for: layout(early_fragment_tests) in;
		if (execution.flags.get(ExecutionModeEarlyFragmentTests))
			require_extension_internal("GL_ARB_shader_image_load_store");
	}

	for (auto &ext : forced_extensions)
	{
		if (ext == "GL_AMD_gpu_shader_half_float" && !options.vulkan_semantics)
		{
			// Special case, this extension has a potential fallback to another vendor extension in normal GLSL.
			// GL_AMD_gpu_shader_half_float is a superset, so try that first.
			statement("#if defined(GL_AMD_gpu_shader_half_float)");
			statement("#extension GL_AMD_gpu_shader_half_float : require");
			statement("#elif defined(GL_NV_gpu_shader5)");
			statement("#extension GL_NV_gpu_shader5 : require");
			statement("#else");
			statement("#error No extension available for FP16.");
			statement("#endif");
		}
		else
			statement("#extension ", ext, " : require");
	}

	for (auto &header : header_lines)
		statement(header);

	vector<string> inputs;
	vector<string> outputs;

	switch (execution.model)
	{
	case ExecutionModelGeometry:
		outputs.push_back(join("max_vertices = ", execution.output_vertices));
		if ((execution.flags.get(ExecutionModeInvocations)) && execution.invocations != 1)
			inputs.push_back(join("invocations = ", execution.invocations));
		if (execution.flags.get(ExecutionModeInputPoints))
			inputs.push_back("points");
		if (execution.flags.get(ExecutionModeInputLines))
			inputs.push_back("lines");
		if (execution.flags.get(ExecutionModeInputLinesAdjacency))
			inputs.push_back("lines_adjacency");
		if (execution.flags.get(ExecutionModeTriangles))
			inputs.push_back("triangles");
		if (execution.flags.get(ExecutionModeInputTrianglesAdjacency))
			inputs.push_back("triangles_adjacency");
		if (execution.flags.get(ExecutionModeOutputTriangleStrip))
			outputs.push_back("triangle_strip");
		if (execution.flags.get(ExecutionModeOutputPoints))
			outputs.push_back("points");
		if (execution.flags.get(ExecutionModeOutputLineStrip))
			outputs.push_back("line_strip");
		break;

	case ExecutionModelTessellationControl:
		if (execution.flags.get(ExecutionModeOutputVertices))
			outputs.push_back(join("vertices = ", execution.output_vertices));
		break;

	case ExecutionModelTessellationEvaluation:
		if (execution.flags.get(ExecutionModeQuads))
			inputs.push_back("quads");
		if (execution.flags.get(ExecutionModeTriangles))
			inputs.push_back("triangles");
		if (execution.flags.get(ExecutionModeIsolines))
			inputs.push_back("isolines");
		if (execution.flags.get(ExecutionModePointMode))
			inputs.push_back("point_mode");

		if (!execution.flags.get(ExecutionModeIsolines))
		{
			if (execution.flags.get(ExecutionModeVertexOrderCw))
				inputs.push_back("cw");
			if (execution.flags.get(ExecutionModeVertexOrderCcw))
				inputs.push_back("ccw");
		}

		if (execution.flags.get(ExecutionModeSpacingFractionalEven))
			inputs.push_back("fractional_even_spacing");
		if (execution.flags.get(ExecutionModeSpacingFractionalOdd))
			inputs.push_back("fractional_odd_spacing");
		if (execution.flags.get(ExecutionModeSpacingEqual))
			inputs.push_back("equal_spacing");
		break;

	case ExecutionModelGLCompute:
	{
		if (execution.workgroup_size.constant != 0)
		{
			SpecializationConstant wg_x, wg_y, wg_z;
			get_work_group_size_specialization_constants(wg_x, wg_y, wg_z);

			if (wg_x.id)
			{
				if (options.vulkan_semantics)
					inputs.push_back(join("local_size_x_id = ", wg_x.constant_id));
				else
					inputs.push_back(join("local_size_x = ", get<SPIRConstant>(wg_x.id).scalar()));
			}
			else
				inputs.push_back(join("local_size_x = ", execution.workgroup_size.x));

			if (wg_y.id)
			{
				if (options.vulkan_semantics)
					inputs.push_back(join("local_size_y_id = ", wg_y.constant_id));
				else
					inputs.push_back(join("local_size_y = ", get<SPIRConstant>(wg_y.id).scalar()));
			}
			else
				inputs.push_back(join("local_size_y = ", execution.workgroup_size.y));

			if (wg_z.id)
			{
				if (options.vulkan_semantics)
					inputs.push_back(join("local_size_z_id = ", wg_z.constant_id));
				else
					inputs.push_back(join("local_size_z = ", get<SPIRConstant>(wg_z.id).scalar()));
			}
			else
				inputs.push_back(join("local_size_z = ", execution.workgroup_size.z));
		}
		else
		{
			inputs.push_back(join("local_size_x = ", execution.workgroup_size.x));
			inputs.push_back(join("local_size_y = ", execution.workgroup_size.y));
			inputs.push_back(join("local_size_z = ", execution.workgroup_size.z));
		}
		break;
	}

	case ExecutionModelFragment:
		if (options.es)
		{
			switch (options.fragment.default_float_precision)
			{
			case Options::Lowp:
				statement("precision lowp float;");
				break;

			case Options::Mediump:
				statement("precision mediump float;");
				break;

			case Options::Highp:
				statement("precision highp float;");
				break;

			default:
				break;
			}

			switch (options.fragment.default_int_precision)
			{
			case Options::Lowp:
				statement("precision lowp int;");
				break;

			case Options::Mediump:
				statement("precision mediump int;");
				break;

			case Options::Highp:
				statement("precision highp int;");
				break;

			default:
				break;
			}
		}

		if (execution.flags.get(ExecutionModeEarlyFragmentTests))
			inputs.push_back("early_fragment_tests");
		if (execution.flags.get(ExecutionModeDepthGreater))
			inputs.push_back("depth_greater");
		if (execution.flags.get(ExecutionModeDepthLess))
			inputs.push_back("depth_less");

		break;

	default:
		break;
	}

	if (!inputs.empty())
		statement("layout(", merge(inputs), ") in;");
	if (!outputs.empty())
		statement("layout(", merge(outputs), ") out;");

	statement("");
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7d0, %rsp            # imm = 0x7D0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x25150
movq -0x648(%rbp), %rcx
movq %rax, -0x10(%rbp)
movq %rcx, %rax
addq $0x438, %rax            # imm = 0x438
movq %rax, -0x640(%rbp)
xorl %eax, %eax
testb $0x1, 0x43c(%rcx)
movb %al, -0x631(%rbp)
je 0x5a2d2
movq -0x648(%rbp), %rax
cmpl $0x64, 0x438(%rax)
seta %al
movb %al, -0x631(%rbp)
movq -0x648(%rbp), %rdi
movq -0x640(%rbp), %rdx
movb -0x631(%rbp), %sil
leaq 0xe45b0(%rip), %rax     # 0x13e89e
leaq 0xe68e7(%rip), %rcx     # 0x140bdc
testb $0x1, %sil
cmovneq %rcx, %rax
movq %rax, -0x18(%rbp)
leaq 0xe68ca(%rip), %rsi     # 0x140bd2
leaq -0x18(%rbp), %rcx
callq 0x9e3a0
movq -0x648(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x5a422
movq -0x648(%rbp), %rax
cmpl $0x1a4, 0x438(%rax)     # imm = 0x1A4
jae 0x5a422
movq -0x648(%rbp), %rax
testb $0x1, 0x441(%rax)
je 0x5a385
movq -0x648(%rbp), %rdi
leaq 0xe6886(%rip), %rsi     # 0x140be0
callq 0x9e4d0
movq -0x648(%rbp), %rdi
leaq 0xe689a(%rip), %rsi     # 0x140c07
callq 0x9e5f0
movq -0x648(%rbp), %rdi
leaq 0xe68bc(%rip), %rsi     # 0x140c3c
callq 0x9e710
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x9, %esi
callq 0xef50
testb $0x1, %al
jne 0x5a3a0
jmp 0x5a420
leaq -0x39(%rbp), %rdi
movq %rdi, -0x650(%rbp)
callq 0x7650
movq -0x650(%rbp), %rdx
leaq 0xe6885(%rip), %rsi     # 0x140c43
leaq -0x38(%rbp), %rdi
callq 0x7520
jmp 0x5a3c9
movq -0x648(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x589d0
jmp 0x5a3db
leaq -0x38(%rbp), %rdi
callq 0x7708
leaq -0x39(%rbp), %rdi
callq 0x73d0
jmp 0x5a420
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a412
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x7708
leaq -0x39(%rbp), %rdi
callq 0x73d0
jmp 0x5beb6
jmp 0x5a422
movq -0x648(%rbp), %rax
addq $0x720, %rax            # imm = 0x720
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x10140
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
callq 0x10170
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x101a0
testb $0x1, %al
jne 0x5a463
jmp 0x5a552
leaq -0x60(%rbp), %rdi
callq 0x101e0
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rdi
leaq 0xe6618(%rip), %rsi     # 0x140a93
callq 0x2f7c0
testb $0x1, %al
jne 0x5a489
jmp 0x5a524
movq -0x648(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5a524
movq -0x648(%rbp), %rdi
leaq 0xe67b7(%rip), %rsi     # 0x140c62
callq 0x9e830
movq -0x648(%rbp), %rdi
leaq 0xe67ce(%rip), %rsi     # 0x140c8c
callq 0x107c0
movq -0x648(%rbp), %rdi
leaq 0xe67ed(%rip), %rsi     # 0x140cbe
callq 0x9e950
movq -0x648(%rbp), %rdi
leaq 0xe67fb(%rip), %rsi     # 0x140cdf
callq 0x9e4d0
movq -0x648(%rbp), %rdi
leaq 0xe680f(%rip), %rsi     # 0x140d06
callq 0x9ea70
movq -0x648(%rbp), %rdi
leaq 0xe6802(%rip), %rsi     # 0x140d0c
callq 0xff00
movq -0x648(%rbp), %rdi
leaq 0xe671f(%rip), %rsi     # 0x140c3c
callq 0x9e710
jmp 0x5a542
movq -0x648(%rbp), %rdi
movq -0x70(%rbp), %rdx
leaq 0xe67fe(%rip), %rsi     # 0x140d34
leaq 0xe67be(%rip), %rcx     # 0x140cfb
callq 0x9eb90
jmp 0x5a544
leaq -0x60(%rbp), %rdi
callq 0x10320
jmp 0x5a44d
movq -0x648(%rbp), %rax
addq $0x738, %rax            # imm = 0x738
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rdi
callq 0x10140
movq %rax, -0x80(%rbp)
movq -0x78(%rbp), %rdi
callq 0x10170
movq %rax, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x101a0
testb $0x1, %al
jne 0x5a596
jmp 0x5a5c4
leaq -0x80(%rbp), %rdi
callq 0x101e0
movq -0x648(%rbp), %rdi
movq %rax, -0x90(%rbp)
movq -0x90(%rbp), %rsi
callq 0x10200
leaq -0x80(%rbp), %rdi
callq 0x10320
jmp 0x5a580
leaq -0xa8(%rbp), %rdi
callq 0x30390
leaq -0xc0(%rbp), %rdi
callq 0x30390
movq -0x10(%rbp), %rax
movl 0xb8(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x658(%rbp)
subl $0x4, %eax
ja 0x5bd83
movq -0x658(%rbp), %rax
leaq 0xe5924(%rip), %rcx     # 0x13ff2c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdx
addq $0xb4, %rdx
leaq 0xe671d(%rip), %rsi     # 0x140d40
leaq -0xe0(%rbp), %rdi
callq 0x9ecc0
jmp 0x5a631
leaq -0xc0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xecd0
jmp 0x5a646
leaq -0xe0(%rbp), %rdi
callq 0x7708
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
xorl %esi, %esi
callq 0xef50
movb %al, -0x659(%rbp)
jmp 0x5a669
movb -0x659(%rbp), %al
testb $0x1, %al
jne 0x5a678
jmp 0x5a717
movq -0x10(%rbp), %rax
cmpl $0x1, 0xb0(%rax)
je 0x5a717
movq -0x10(%rbp), %rdx
addq $0xb0, %rdx
leaq 0xe66b5(%rip), %rsi     # 0x140d50
leaq -0x100(%rbp), %rdi
callq 0x9ed70
jmp 0x5a6a9
leaq -0xa8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xecd0
jmp 0x5a6be
leaq -0x100(%rbp), %rdi
callq 0x7708
jmp 0x5a717
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5be9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x13, %esi
callq 0xef50
movb %al, -0x65a(%rbp)
jmp 0x5a731
movb -0x65a(%rbp), %al
testb $0x1, %al
jne 0x5a740
jmp 0x5a7d5
leaq -0x121(%rbp), %rdi
movq %rdi, -0x668(%rbp)
callq 0x7650
movq -0x668(%rbp), %rdx
leaq 0xe65fe(%rip), %rsi     # 0x140d5f
leaq -0x120(%rbp), %rdi
callq 0x7520
jmp 0x5a76f
leaq -0xa8(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0xecd0
jmp 0x5a784
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x121(%rbp), %rdi
callq 0x73d0
jmp 0x5a7d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a7c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x121(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x14, %esi
callq 0xef50
movb %al, -0x669(%rbp)
jmp 0x5a7ef
movb -0x669(%rbp), %al
testb $0x1, %al
jne 0x5a7fe
jmp 0x5a893
leaq -0x149(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x7650
movq -0x678(%rbp), %rdx
leaq 0xe6598(%rip), %rsi     # 0x140db7
leaq -0x148(%rbp), %rdi
callq 0x7520
jmp 0x5a82d
leaq -0xa8(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xecd0
jmp 0x5a842
leaq -0x148(%rbp), %rdi
callq 0x7708
leaq -0x149(%rbp), %rdi
callq 0x73d0
jmp 0x5a893
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a882
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x7708
leaq -0x149(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x15, %esi
callq 0xef50
movb %al, -0x679(%rbp)
jmp 0x5a8ad
movb -0x679(%rbp), %al
testb $0x1, %al
jne 0x5a8bc
jmp 0x5a951
leaq -0x171(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x7650
movq -0x688(%rbp), %rdx
leaq 0xe6489(%rip), %rsi     # 0x140d66
leaq -0x170(%rbp), %rdi
callq 0x7520
jmp 0x5a8eb
leaq -0xa8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xecd0
jmp 0x5a900
leaq -0x170(%rbp), %rdi
callq 0x7708
leaq -0x171(%rbp), %rdi
callq 0x73d0
jmp 0x5a951
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a940
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x7708
leaq -0x171(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x16, %esi
callq 0xef50
movb %al, -0x689(%rbp)
jmp 0x5a96b
movb -0x689(%rbp), %al
testb $0x1, %al
jne 0x5a97a
jmp 0x5aa0f
leaq -0x199(%rbp), %rdi
movq %rdi, -0x698(%rbp)
callq 0x7650
movq -0x698(%rbp), %rdx
leaq 0xe63db(%rip), %rsi     # 0x140d76
leaq -0x198(%rbp), %rdi
callq 0x7520
jmp 0x5a9a9
leaq -0xa8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xecd0
jmp 0x5a9be
leaq -0x198(%rbp), %rdi
callq 0x7708
leaq -0x199(%rbp), %rdi
callq 0x73d0
jmp 0x5aa0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a9fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x7708
leaq -0x199(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x17, %esi
callq 0xef50
movb %al, -0x699(%rbp)
jmp 0x5aa29
movb -0x699(%rbp), %al
testb $0x1, %al
jne 0x5aa38
jmp 0x5aacd
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x7650
movq -0x6a8(%rbp), %rdx
leaq 0xe6327(%rip), %rsi     # 0x140d80
leaq -0x1c0(%rbp), %rdi
callq 0x7520
jmp 0x5aa67
leaq -0xa8(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0xecd0
jmp 0x5aa7c
leaq -0x1c0(%rbp), %rdi
callq 0x7708
leaq -0x1c1(%rbp), %rdi
callq 0x73d0
jmp 0x5aacd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5aabc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x7708
leaq -0x1c1(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x1d, %esi
callq 0xef50
movb %al, -0x6a9(%rbp)
jmp 0x5aae7
movb -0x6a9(%rbp), %al
testb $0x1, %al
jne 0x5aaf6
jmp 0x5ab8b
leaq -0x1e9(%rbp), %rdi
movq %rdi, -0x6b8(%rbp)
callq 0x7650
movq -0x6b8(%rbp), %rdx
leaq 0xe627d(%rip), %rsi     # 0x140d94
leaq -0x1e8(%rbp), %rdi
callq 0x7520
jmp 0x5ab25
leaq -0xc0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0xecd0
jmp 0x5ab3a
leaq -0x1e8(%rbp), %rdi
callq 0x7708
leaq -0x1e9(%rbp), %rdi
callq 0x73d0
jmp 0x5ab8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ab7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x7708
leaq -0x1e9(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x1b, %esi
callq 0xef50
movb %al, -0x6b9(%rbp)
jmp 0x5aba5
movb -0x6b9(%rbp), %al
testb $0x1, %al
jne 0x5abb4
jmp 0x5ac49
leaq -0x211(%rbp), %rdi
movq %rdi, -0x6c8(%rbp)
callq 0x7650
movq -0x6c8(%rbp), %rdx
leaq 0xe618a(%rip), %rsi     # 0x140d5f
leaq -0x210(%rbp), %rdi
callq 0x7520
jmp 0x5abe3
leaq -0xc0(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0xecd0
jmp 0x5abf8
leaq -0x210(%rbp), %rdi
callq 0x7708
leaq -0x211(%rbp), %rdi
callq 0x73d0
jmp 0x5ac49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ac38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x210(%rbp), %rdi
callq 0x7708
leaq -0x211(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x1c, %esi
callq 0xef50
movb %al, -0x6c9(%rbp)
jmp 0x5ac63
movb -0x6c9(%rbp), %al
testb $0x1, %al
jne 0x5ac72
jmp 0x5ad07
leaq -0x239(%rbp), %rdi
movq %rdi, -0x6d8(%rbp)
callq 0x7650
movq -0x6d8(%rbp), %rdx
leaq 0xe6110(%rip), %rsi     # 0x140da3
leaq -0x238(%rbp), %rdi
callq 0x7520
jmp 0x5aca1
leaq -0xc0(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0xecd0
jmp 0x5acb6
leaq -0x238(%rbp), %rdi
callq 0x7708
leaq -0x239(%rbp), %rdi
callq 0x73d0
jmp 0x5ad07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5acf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x7708
leaq -0x239(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
jmp 0x5bd85
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x1a, %esi
callq 0xef50
movb %al, -0x6d9(%rbp)
jmp 0x5ad26
movb -0x6d9(%rbp), %al
testb $0x1, %al
jne 0x5ad32
jmp 0x5ad92
movq -0x10(%rbp), %rdx
addq $0xb4, %rdx
leaq 0xe6000(%rip), %rsi     # 0x140d44
leaq -0x260(%rbp), %rdi
callq 0x9ee20
jmp 0x5ad52
leaq -0xc0(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xecd0
jmp 0x5ad67
leaq -0x260(%rbp), %rdi
callq 0x7708
jmp 0x5ad92
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5bd85
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x18, %esi
callq 0xef50
movb %al, -0x6da(%rbp)
jmp 0x5adb1
movb -0x6da(%rbp), %al
testb $0x1, %al
jne 0x5adc0
jmp 0x5ae55
leaq -0x281(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x7650
movq -0x6e8(%rbp), %rdx
leaq 0xe5fcd(%rip), %rsi     # 0x140dae
leaq -0x280(%rbp), %rdi
callq 0x7520
jmp 0x5adef
leaq -0xa8(%rbp), %rdi
leaq -0x280(%rbp), %rsi
callq 0xecd0
jmp 0x5ae04
leaq -0x280(%rbp), %rdi
callq 0x7708
leaq -0x281(%rbp), %rdi
callq 0x73d0
jmp 0x5ae55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5ae44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x280(%rbp), %rdi
callq 0x7708
leaq -0x281(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x16, %esi
callq 0xef50
movb %al, -0x6e9(%rbp)
jmp 0x5ae6f
movb -0x6e9(%rbp), %al
testb $0x1, %al
jne 0x5ae7e
jmp 0x5af13
leaq -0x2a9(%rbp), %rdi
movq %rdi, -0x6f8(%rbp)
callq 0x7650
movq -0x6f8(%rbp), %rdx
leaq 0xe5ed7(%rip), %rsi     # 0x140d76
leaq -0x2a8(%rbp), %rdi
callq 0x7520
jmp 0x5aead
leaq -0xa8(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0xecd0
jmp 0x5aec2
leaq -0x2a8(%rbp), %rdi
callq 0x7708
leaq -0x2a9(%rbp), %rdi
callq 0x73d0
jmp 0x5af13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5af02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x7708
leaq -0x2a9(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x19, %esi
callq 0xef50
movb %al, -0x6f9(%rbp)
jmp 0x5af2d
movb -0x6f9(%rbp), %al
testb $0x1, %al
jne 0x5af3c
jmp 0x5afd1
leaq -0x2d1(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x7650
movq -0x708(%rbp), %rdx
leaq 0xe5e57(%rip), %rsi     # 0x140db4
leaq -0x2d0(%rbp), %rdi
callq 0x7520
jmp 0x5af6b
leaq -0xa8(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0xecd0
jmp 0x5af80
leaq -0x2d0(%rbp), %rdi
callq 0x7708
leaq -0x2d1(%rbp), %rdi
callq 0x73d0
jmp 0x5afd1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5afc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x7708
leaq -0x2d1(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0xa, %esi
callq 0xef50
movb %al, -0x709(%rbp)
jmp 0x5afeb
movb -0x709(%rbp), %al
testb $0x1, %al
jne 0x5affa
jmp 0x5b08f
leaq -0x2f9(%rbp), %rdi
movq %rdi, -0x718(%rbp)
callq 0x7650
movq -0x718(%rbp), %rdx
leaq 0xe5da2(%rip), %rsi     # 0x140dbd
leaq -0x2f8(%rbp), %rdi
callq 0x7520
jmp 0x5b029
leaq -0xa8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xecd0
jmp 0x5b03e
leaq -0x2f8(%rbp), %rdi
callq 0x7708
leaq -0x2f9(%rbp), %rdi
callq 0x73d0
jmp 0x5b08f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b07e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x7708
leaq -0x2f9(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x19, %esi
callq 0xef50
movb %al, -0x719(%rbp)
jmp 0x5b0a9
movb -0x719(%rbp), %al
testb $0x1, %al
jne 0x5b237
jmp 0x5b0b9
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x4, %esi
callq 0xef50
movb %al, -0x71a(%rbp)
jmp 0x5b0d3
movb -0x71a(%rbp), %al
testb $0x1, %al
jne 0x5b0e2
jmp 0x5b177
leaq -0x321(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x7650
movq -0x728(%rbp), %rdx
leaq 0xe5cc6(%rip), %rsi     # 0x140dc9
leaq -0x320(%rbp), %rdi
callq 0x7520
jmp 0x5b111
leaq -0xa8(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0xecd0
jmp 0x5b126
leaq -0x320(%rbp), %rdi
callq 0x7708
leaq -0x321(%rbp), %rdi
callq 0x73d0
jmp 0x5b177
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b166
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x7708
leaq -0x321(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x5, %esi
callq 0xef50
movb %al, -0x729(%rbp)
jmp 0x5b191
movb -0x729(%rbp), %al
testb $0x1, %al
jne 0x5b1a0
jmp 0x5b235
leaq -0x349(%rbp), %rdi
movq %rdi, -0x738(%rbp)
callq 0x7650
movq -0x738(%rbp), %rdx
leaq 0xe5c07(%rip), %rsi     # 0x140dc8
leaq -0x348(%rbp), %rdi
callq 0x7520
jmp 0x5b1cf
leaq -0xa8(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0xecd0
jmp 0x5b1e4
leaq -0x348(%rbp), %rdi
callq 0x7708
leaq -0x349(%rbp), %rdi
callq 0x73d0
jmp 0x5b235
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b224
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x7708
leaq -0x349(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
jmp 0x5b237
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x2, %esi
callq 0xef50
movb %al, -0x739(%rbp)
jmp 0x5b251
movb -0x739(%rbp), %al
testb $0x1, %al
jne 0x5b260
jmp 0x5b2f5
leaq -0x371(%rbp), %rdi
movq %rdi, -0x748(%rbp)
callq 0x7650
movq -0x748(%rbp), %rdx
leaq 0xe5b4b(%rip), %rsi     # 0x140dcc
leaq -0x370(%rbp), %rdi
callq 0x7520
jmp 0x5b28f
leaq -0xa8(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xecd0
jmp 0x5b2a4
leaq -0x370(%rbp), %rdi
callq 0x7708
leaq -0x371(%rbp), %rdi
callq 0x73d0
jmp 0x5b2f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b2e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x7708
leaq -0x371(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x3, %esi
callq 0xef50
movb %al, -0x749(%rbp)
jmp 0x5b30f
movb -0x749(%rbp), %al
testb $0x1, %al
jne 0x5b31e
jmp 0x5b3b3
leaq -0x399(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x7650
movq -0x758(%rbp), %rdx
leaq 0xe5aa5(%rip), %rsi     # 0x140de4
leaq -0x398(%rbp), %rdi
callq 0x7520
jmp 0x5b34d
leaq -0xa8(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0xecd0
jmp 0x5b362
leaq -0x398(%rbp), %rdi
callq 0x7708
leaq -0x399(%rbp), %rdi
callq 0x73d0
jmp 0x5b3b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b3a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x7708
leaq -0x399(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x1, %esi
callq 0xef50
movb %al, -0x759(%rbp)
jmp 0x5b3cd
movb -0x759(%rbp), %al
testb $0x1, %al
jne 0x5b3dc
jmp 0x5b471
leaq -0x3c1(%rbp), %rdi
movq %rdi, -0x768(%rbp)
callq 0x7650
movq -0x768(%rbp), %rdx
leaq 0xe59fe(%rip), %rsi     # 0x140dfb
leaq -0x3c0(%rbp), %rdi
callq 0x7520
jmp 0x5b40b
leaq -0xa8(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0xecd0
jmp 0x5b420
leaq -0x3c0(%rbp), %rdi
callq 0x7708
leaq -0x3c1(%rbp), %rdi
callq 0x73d0
jmp 0x5b471
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5b460
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x7708
leaq -0x3c1(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
jmp 0x5bd85
movq -0x10(%rbp), %rax
cmpl $0x0, 0xac(%rax)
je 0x5b91a
movq -0x648(%rbp), %rdi
leaq -0x3cc(%rbp), %rsi
leaq -0x3d4(%rbp), %rdx
leaq -0x3dc(%rbp), %rcx
callq 0x251e0
jmp 0x5b4aa
cmpl $0x0, -0x3cc(%rbp)
je 0x5b5c3
movq -0x648(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5b526
leaq -0x3c8(%rbp), %rdx
leaq 0xe5934(%rip), %rsi     # 0x140e09
leaq -0x400(%rbp), %rdi
callq 0x9eed0
jmp 0x5b4e3
leaq -0xa8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0xecd0
jmp 0x5b4f8
leaq -0x400(%rbp), %rdi
callq 0x7708
jmp 0x5b5c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq -0x648(%rbp), %rdi
movl -0x3cc(%rbp), %esi
callq 0x31910
movq %rax, -0x770(%rbp)
jmp 0x5b541
movq -0x770(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x2f560
movl %eax, -0x774(%rbp)
jmp 0x5b559
movl -0x774(%rbp), %eax
movl %eax, -0x424(%rbp)
leaq 0xe58b0(%rip), %rsi     # 0x140e1c
leaq -0x420(%rbp), %rdi
leaq -0x424(%rbp), %rdx
callq 0x9ef80
jmp 0x5b581
leaq -0xa8(%rbp), %rdi
leaq -0x420(%rbp), %rsi
callq 0xecd0
jmp 0x5b596
leaq -0x420(%rbp), %rdi
callq 0x7708
jmp 0x5b5c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x420(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5b623
movq -0x10(%rbp), %rdx
addq $0xa0, %rdx
leaq 0xe5847(%rip), %rsi     # 0x140e1c
leaq -0x448(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b5e3
leaq -0xa8(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0xecd0
jmp 0x5b5f8
leaq -0x448(%rbp), %rdi
callq 0x7708
jmp 0x5b623
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
cmpl $0x0, -0x3d4(%rbp)
je 0x5b73c
movq -0x648(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5b69f
leaq -0x3d0(%rbp), %rdx
leaq 0xe57de(%rip), %rsi     # 0x140e2c
leaq -0x468(%rbp), %rdi
callq 0x9eed0
jmp 0x5b65c
leaq -0xa8(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0xecd0
jmp 0x5b671
leaq -0x468(%rbp), %rdi
callq 0x7708
jmp 0x5b73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq -0x648(%rbp), %rdi
movl -0x3d4(%rbp), %esi
callq 0x31910
movq %rax, -0x780(%rbp)
jmp 0x5b6ba
movq -0x780(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x2f560
movl %eax, -0x784(%rbp)
jmp 0x5b6d2
movl -0x784(%rbp), %eax
movl %eax, -0x48c(%rbp)
leaq 0xe575a(%rip), %rsi     # 0x140e3f
leaq -0x488(%rbp), %rdi
leaq -0x48c(%rbp), %rdx
callq 0x9ef80
jmp 0x5b6fa
leaq -0xa8(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0xecd0
jmp 0x5b70f
leaq -0x488(%rbp), %rdi
callq 0x7708
jmp 0x5b73a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5b79c
movq -0x10(%rbp), %rdx
addq $0xa4, %rdx
leaq 0xe56f1(%rip), %rsi     # 0x140e3f
leaq -0x4b0(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b75c
leaq -0xa8(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0xecd0
jmp 0x5b771
leaq -0x4b0(%rbp), %rdi
callq 0x7708
jmp 0x5b79c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
cmpl $0x0, -0x3dc(%rbp)
je 0x5b8b5
movq -0x648(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5b818
leaq -0x3d8(%rbp), %rdx
leaq 0xe5688(%rip), %rsi     # 0x140e4f
leaq -0x4d0(%rbp), %rdi
callq 0x9eed0
jmp 0x5b7d5
leaq -0xa8(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0xecd0
jmp 0x5b7ea
leaq -0x4d0(%rbp), %rdi
callq 0x7708
jmp 0x5b8b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq -0x648(%rbp), %rdi
movl -0x3dc(%rbp), %esi
callq 0x31910
movq %rax, -0x790(%rbp)
jmp 0x5b833
movq -0x790(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x2f560
movl %eax, -0x794(%rbp)
jmp 0x5b84b
movl -0x794(%rbp), %eax
movl %eax, -0x4f4(%rbp)
leaq 0xe5604(%rip), %rsi     # 0x140e62
leaq -0x4f0(%rbp), %rdi
leaq -0x4f4(%rbp), %rdx
callq 0x9ef80
jmp 0x5b873
leaq -0xa8(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0xecd0
jmp 0x5b888
leaq -0x4f0(%rbp), %rdi
callq 0x7708
jmp 0x5b8b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5b915
movq -0x10(%rbp), %rdx
addq $0xa8, %rdx
leaq 0xe559b(%rip), %rsi     # 0x140e62
leaq -0x518(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b8d5
leaq -0xa8(%rbp), %rdi
leaq -0x518(%rbp), %rsi
callq 0xecd0
jmp 0x5b8ea
leaq -0x518(%rbp), %rdi
callq 0x7708
jmp 0x5b915
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x518(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5ba36
movq -0x10(%rbp), %rdx
addq $0xa0, %rdx
leaq 0xe54f0(%rip), %rsi     # 0x140e1c
leaq -0x538(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b93a
leaq -0xa8(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0xecd0
jmp 0x5b94f
leaq -0x538(%rbp), %rdi
callq 0x7708
movq -0x10(%rbp), %rdx
addq $0xa4, %rdx
leaq 0xe54d2(%rip), %rsi     # 0x140e3f
leaq -0x558(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b97b
leaq -0xa8(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0xecd0
jmp 0x5b990
leaq -0x558(%rbp), %rdi
callq 0x7708
movq -0x10(%rbp), %rdx
addq $0xa8, %rdx
leaq 0xe54b4(%rip), %rsi     # 0x140e62
leaq -0x578(%rbp), %rdi
callq 0x9ecc0
jmp 0x5b9bc
leaq -0xa8(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0xecd0
jmp 0x5b9d1
leaq -0x578(%rbp), %rdi
callq 0x7708
jmp 0x5ba36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x558(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x578(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
jmp 0x5bd85
movq -0x648(%rbp), %rax
testb $0x1, 0x43c(%rax)
je 0x5bb47
movq -0x648(%rbp), %rax
movl 0x448(%rax), %eax
movl %eax, -0x798(%rbp)
subl $0x1, %eax
je 0x5ba83
jmp 0x5ba69
movl -0x798(%rbp), %eax
subl $0x2, %eax
je 0x5ba9a
jmp 0x5ba76
movl -0x798(%rbp), %eax
subl $0x3, %eax
je 0x5bab1
jmp 0x5bac8
movq -0x648(%rbp), %rdi
leaq 0xe53e1(%rip), %rsi     # 0x140e72
callq 0x110f0
jmp 0x5ba98
jmp 0x5baca
movq -0x648(%rbp), %rdi
leaq 0xe53e0(%rip), %rsi     # 0x140e88
callq 0x9f030
jmp 0x5baaf
jmp 0x5baca
movq -0x648(%rbp), %rdi
leaq 0xe53e2(%rip), %rsi     # 0x140ea1
callq 0x10fd0
jmp 0x5bac6
jmp 0x5baca
jmp 0x5baca
movq -0x648(%rbp), %rax
movl 0x44c(%rax), %eax
movl %eax, -0x79c(%rbp)
subl $0x1, %eax
je 0x5bafe
jmp 0x5bae4
movl -0x79c(%rbp), %eax
subl $0x2, %eax
je 0x5bb15
jmp 0x5baf1
movl -0x79c(%rbp), %eax
subl $0x3, %eax
je 0x5bb2c
jmp 0x5bb43
movq -0x648(%rbp), %rdi
leaq 0xe53ac(%rip), %rsi     # 0x140eb8
callq 0x11210
jmp 0x5bb13
jmp 0x5bb45
movq -0x648(%rbp), %rdi
leaq 0xe53a9(%rip), %rsi     # 0x140ecc
callq 0x10fd0
jmp 0x5bb2a
jmp 0x5bb45
movq -0x648(%rbp), %rdi
leaq 0xe53a9(%rip), %rsi     # 0x140ee3
callq 0x11f80
jmp 0x5bb41
jmp 0x5bb45
jmp 0x5bb45
jmp 0x5bb47
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0x9, %esi
callq 0xef50
movb %al, -0x79d(%rbp)
jmp 0x5bb61
movb -0x79d(%rbp), %al
testb $0x1, %al
jne 0x5bb70
jmp 0x5bc05
leaq -0x599(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
callq 0x7650
movq -0x7a8(%rbp), %rdx
leaq 0xe5367(%rip), %rsi     # 0x140ef8
leaq -0x598(%rbp), %rdi
callq 0x7520
jmp 0x5bb9f
leaq -0xa8(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0xecd0
jmp 0x5bbb4
leaq -0x598(%rbp), %rdi
callq 0x7708
leaq -0x599(%rbp), %rdi
callq 0x73d0
jmp 0x5bc05
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bbf4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x7708
leaq -0x599(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0xe, %esi
callq 0xef50
movb %al, -0x7a9(%rbp)
jmp 0x5bc1f
movb -0x7a9(%rbp), %al
testb $0x1, %al
jne 0x5bc2e
jmp 0x5bcc3
leaq -0x5c1(%rbp), %rdi
movq %rdi, -0x7b8(%rbp)
callq 0x7650
movq -0x7b8(%rbp), %rdx
leaq 0xe52be(%rip), %rsi     # 0x140f0d
leaq -0x5c0(%rbp), %rdi
callq 0x7520
jmp 0x5bc5d
leaq -0xa8(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
callq 0xecd0
jmp 0x5bc72
leaq -0x5c0(%rbp), %rdi
callq 0x7708
leaq -0x5c1(%rbp), %rdi
callq 0x73d0
jmp 0x5bcc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bcb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x7708
leaq -0x5c1(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
movq -0x10(%rbp), %rdi
addq $0x60, %rdi
movl $0xf, %esi
callq 0xef50
movb %al, -0x7b9(%rbp)
jmp 0x5bcdd
movb -0x7b9(%rbp), %al
testb $0x1, %al
jne 0x5bcec
jmp 0x5bd81
leaq -0x5e9(%rbp), %rdi
movq %rdi, -0x7c8(%rbp)
callq 0x7650
movq -0x7c8(%rbp), %rdx
leaq 0xe520e(%rip), %rsi     # 0x140f1b
leaq -0x5e8(%rbp), %rdi
callq 0x7520
jmp 0x5bd1b
leaq -0xa8(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0xecd0
jmp 0x5bd30
leaq -0x5e8(%rbp), %rdi
callq 0x7708
leaq -0x5e9(%rbp), %rdi
callq 0x73d0
jmp 0x5bd81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5bd70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x5e8(%rbp), %rdi
callq 0x7708
leaq -0x5e9(%rbp), %rdi
callq 0x73d0
jmp 0x5be9e
jmp 0x5bd85
jmp 0x5bd85
leaq -0xa8(%rbp), %rdi
callq 0x9f150
testb $0x1, %al
jne 0x5bdf8
leaq -0x610(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x9f2c0
jmp 0x5bdaa
movq -0x648(%rbp), %rdi
leaq 0xe516e(%rip), %rsi     # 0x140f26
leaq 0xe516f(%rip), %rcx     # 0x140f2e
leaq -0x610(%rbp), %rdx
callq 0x9f190
jmp 0x5bdcd
leaq -0x610(%rbp), %rdi
callq 0x7708
jmp 0x5bdf8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x610(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
leaq -0xc0(%rbp), %rdi
callq 0x9f150
testb $0x1, %al
jne 0x5be68
leaq -0x630(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x9f2c0
jmp 0x5be1d
movq -0x648(%rbp), %rdi
leaq 0xe50fb(%rip), %rsi     # 0x140f26
leaq 0xe5102(%rip), %rcx     # 0x140f34
leaq -0x630(%rbp), %rdx
callq 0x9f3c0
jmp 0x5be40
leaq -0x630(%rbp), %rdi
callq 0x7708
jmp 0x5be68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x630(%rbp), %rdi
callq 0x7708
jmp 0x5be9e
movq -0x648(%rbp), %rdi
leaq 0xe2a28(%rip), %rsi     # 0x13e89e
callq 0xedf0
jmp 0x5be7d
leaq -0xc0(%rbp), %rdi
callq 0x14cd0
leaq -0xa8(%rbp), %rdi
callq 0x14cd0
addq $0x7d0, %rsp            # imm = 0x7D0
popq %rbp
retq
leaq -0xc0(%rbp), %rdi
callq 0x14cd0
leaq -0xa8(%rbp), %rdi
callq 0x14cd0
movq -0x48(%rbp), %rdi
callq 0x7640
nop