// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdi, %rbx
callq 0x12fa4
movq %rax, %r14
leaq 0x438(%rbx), %rdx
cmpl $0x65, 0x438(%rbx)
leaq 0x6f783(%rip), %rax     # 0x916d8
leaq 0x6d92b(%rip), %rcx     # 0x8f887
cmovbq %rcx, %rax
cmpb $0x0, 0x43c(%rbx)
cmoveq %rcx, %rax
leaq 0x8(%rsp), %rcx
movq %rax, (%rcx)
leaq 0x6f754(%rip), %rsi     # 0x916ce
movq %rbx, %rdi
callq 0x40fbc
cmpb $0x0, 0x43c(%rbx)
jne 0x22001
cmpl $0x1a3, 0x438(%rbx)     # imm = 0x1A3
ja 0x22001
cmpb $0x1, 0x441(%rbx)
jne 0x21fcd
leaq 0x6f735(%rip), %rsi     # 0x916dc
movq %rbx, %rdi
callq 0x41096
leaq 0x6f74d(%rip), %rsi     # 0x91703
movq %rbx, %rdi
callq 0x41152
leaq 0x6f773(%rip), %rsi     # 0x91738
movq %rbx, %rdi
callq 0x4120e
testb $0x2, 0x61(%r14)
je 0x22001
leaq 0x6f764(%rip), %rsi     # 0x9173f
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6100
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x21390
leaq 0x8(%rsp), %rdi
callq 0x6548
movq %r14, 0x80(%rsp)
movq 0x720(%rbx), %r15
movq 0x728(%rbx), %r13
leaq 0x6f571(%rip), %r12     # 0x9158f
leaq 0x6f80b(%rip), %rbp     # 0x91830
leaq 0x6f7cb(%rip), %r14     # 0x917f7
cmpq %r13, %r15
je 0x220d2
movq %r15, %rdi
movq %r12, %rsi
callq 0x17431
testb %al, %al
je 0x2204d
cmpb $0x0, 0x43e(%rbx)
je 0x22060
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x414fe
jmp 0x220c9
movq %rbx, %rdi
leaq 0x6f6f4(%rip), %rsi     # 0x9175e
callq 0x412ca
movq %rbx, %rdi
leaq 0x6f70f(%rip), %rsi     # 0x91788
callq 0xa09c
movq %rbx, %rdi
leaq 0x6f732(%rip), %rsi     # 0x917ba
callq 0x41386
movq %rbx, %rdi
leaq 0x6f744(%rip), %rsi     # 0x917db
callq 0x41096
movq %rbx, %rdi
leaq 0x6f75c(%rip), %rsi     # 0x91802
callq 0x41442
movq %rbx, %rdi
leaq 0x6f753(%rip), %rsi     # 0x91808
callq 0x9c24
movq %rbx, %rdi
leaq 0x6f674(%rip), %rsi     # 0x91738
callq 0x4120e
addq $0x20, %r15
jmp 0x2202c
movq 0x738(%rbx), %r14
movq 0x740(%rbx), %r15
cmpq %r15, %r14
je 0x220f6
movq %rbx, %rdi
movq %r14, %rsi
callq 0x9da6
addq $0x20, %r14
jmp 0x220e0
xorps %xmm0, %xmm0
andq $0x0, 0x40(%rsp)
movaps %xmm0, 0x30(%rsp)
andq $0x0, 0x60(%rsp)
movaps %xmm0, 0x50(%rsp)
movq 0x80(%rsp), %r15
movl 0xb8(%r15), %eax
decl %eax
cmpl $0x4, %eax
ja 0x2299a
leaq 0x6e4d0(%rip), %rcx     # 0x90600
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
testb $0x4, 0x63(%r15)
je 0x2299a
addq $0xb4, %r15
leaq 0x6f6ee(%rip), %rsi     # 0x91840
leaq 0x8(%rsp), %rdi
movq %r15, %rdx
callq 0x416ac
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
leaq 0xa0(%r15), %r14
cmpl $0x0, 0xac(%r15)
je 0x2265e
leaq 0x28(%rsp), %rsi
leaq 0x78(%rsp), %rdx
leaq 0x70(%rsp), %rcx
movq %rbx, %rdi
callq 0x12fd6
movl 0x28(%rsp), %esi
testl %esi, %esi
je 0x226eb
cmpb $0x1, 0x43e(%rbx)
jne 0x22710
leaq 0x2c(%rsp), %rdx
leaq 0x6f741(%rip), %rsi     # 0x91905
leaq 0x8(%rsp), %rdi
callq 0x41716
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22742
leaq 0xb4(%r15), %rdx
leaq 0x6f64c(%rip), %rsi     # 0x9183c
leaq 0x8(%rsp), %rdi
callq 0x415d8
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testb $0x1, %al
je 0x2225d
cmpl $0x1, 0xb0(%r15)
je 0x2225d
movq %r15, %rdx
addq $0xb0, %rdx
leaq 0x6f616(%rip), %rsi     # 0x9184c
leaq 0x8(%rsp), %rdi
callq 0x41642
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x13, %eax
jae 0x22296
leaq 0x6f5f1(%rip), %rsi     # 0x9185b
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x14, %eax
jae 0x222cf
leaq 0x6f610(%rip), %rsi     # 0x918b3
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x15, %eax
jae 0x22308
leaq 0x6f586(%rip), %rsi     # 0x91862
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x16, %eax
jae 0x22341
leaq 0x6f55d(%rip), %rsi     # 0x91872
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x17, %eax
jae 0x2237a
leaq 0x6f52e(%rip), %rsi     # 0x9187c
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x1d, %eax
jae 0x223b3
leaq 0x6f509(%rip), %rsi     # 0x91890
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x1b, %eax
jae 0x223ec
leaq 0x6f49b(%rip), %rsi     # 0x9185b
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x1c, %eax
jae 0x2299a
leaq 0x6f4a2(%rip), %rsi     # 0x9189f
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
cmpb $0x1, 0x43c(%rbx)
jne 0x228f0
movl 0x448(%rbx), %eax
cmpl $0x3, %eax
je 0x2289b
cmpl $0x2, %eax
je 0x2288a
cmpl $0x1, %eax
jne 0x228aa
leaq 0x6f519(%rip), %rsi     # 0x9196e
movq %rbx, %rdi
callq 0xa6d6
jmp 0x228aa
movq 0x60(%r15), %rax
btl $0x18, %eax
jae 0x2249f
leaq 0x6f437(%rip), %rsi     # 0x918aa
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x16, %eax
jae 0x224d8
leaq 0x6f3c6(%rip), %rsi     # 0x91872
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x19, %eax
jae 0x22511
leaq 0x6f3cb(%rip), %rsi     # 0x918b0
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0xa, %eax
jae 0x2254a
leaq 0x6f39b(%rip), %rsi     # 0x918b9
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0x19, %eax
jb 0x225be
testb $0x10, %al
je 0x22587
leaq 0x6f36a(%rip), %rsi     # 0x918c5
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testb $0x20, %al
je 0x225be
leaq 0x6f332(%rip), %rsi     # 0x918c4
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testb $0x4, %al
je 0x225f5
leaq 0x6f2ff(%rip), %rsi     # 0x918c8
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testb $0x8, %al
je 0x2262c
leaq 0x6f2e0(%rip), %rsi     # 0x918e0
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testb $0x2, %al
je 0x2299a
leaq 0x6f2bc(%rip), %rsi     # 0x918f7
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
leaq 0x6f2b3(%rip), %rsi     # 0x91918
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
leaq 0xa4(%r15), %rdx
leaq 0x6f2a2(%rip), %rsi     # 0x9193b
leaq 0x8(%rsp), %rdi
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
addq $0xa8, %r15
leaq 0x6f294(%rip), %rsi     # 0x9195e
leaq 0x8(%rsp), %rdi
movq %r15, %rdx
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
leaq 0x6f226(%rip), %rsi     # 0x91918
leaq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22742
movq %rbx, %rdi
callq 0x17bce
movl 0x10(%rax), %eax
leaq 0x4c(%rsp), %rdx
movl %eax, (%rdx)
leaq 0x6f1ef(%rip), %rsi     # 0x91918
leaq 0x8(%rsp), %rdi
callq 0x41780
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movl 0x78(%rsp), %esi
testl %esi, %esi
je 0x22784
cmpb $0x1, 0x43e(%rbx)
jne 0x227ad
leaq 0x7c(%rsp), %rdx
leaq 0x6f1bf(%rip), %rsi     # 0x91928
leaq 0x8(%rsp), %rdi
callq 0x41716
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x227df
leaq 0xa4(%r15), %rdx
leaq 0x6f1a9(%rip), %rsi     # 0x9193b
leaq 0x8(%rsp), %rdi
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x227df
movq %rbx, %rdi
callq 0x17bce
movl 0x10(%rax), %eax
leaq 0x4c(%rsp), %rdx
movl %eax, (%rdx)
leaq 0x6f175(%rip), %rsi     # 0x9193b
leaq 0x8(%rsp), %rdi
callq 0x41780
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movl 0x70(%rsp), %esi
testl %esi, %esi
je 0x22824
cmpb $0x1, 0x43e(%rbx)
jne 0x22853
leaq 0x74(%rsp), %rdx
leaq 0x6f145(%rip), %rsi     # 0x9194b
leaq 0x8(%rsp), %rdi
callq 0x41716
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
addq $0xa8, %r15
leaq 0x6f12c(%rip), %rsi     # 0x9195e
leaq 0x8(%rsp), %rdi
movq %r15, %rdx
callq 0x415d8
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
movq %rbx, %rdi
callq 0x17bce
movl 0x10(%rax), %eax
leaq 0x4c(%rsp), %rdx
movl %eax, (%rdx)
leaq 0x6f0f2(%rip), %rsi     # 0x9195e
leaq 0x8(%rsp), %rdi
callq 0x41780
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
jmp 0x22990
leaq 0x6f0f3(%rip), %rsi     # 0x91984
movq %rbx, %rdi
callq 0x417ea
jmp 0x228aa
leaq 0x6f0fb(%rip), %rsi     # 0x9199d
movq %rbx, %rdi
callq 0xa61a
movl 0x44c(%rbx), %eax
cmpl $0x3, %eax
je 0x228e1
cmpl $0x2, %eax
je 0x228d0
cmpl $0x1, %eax
jne 0x228f0
leaq 0x6f0ee(%rip), %rsi     # 0x919b4
movq %rbx, %rdi
callq 0xa792
jmp 0x228f0
leaq 0x6f0f1(%rip), %rsi     # 0x919c8
movq %rbx, %rdi
callq 0xa61a
jmp 0x228f0
leaq 0x6f0f7(%rip), %rsi     # 0x919df
movq %rbx, %rdi
callq 0xaf42
movq 0x60(%r15), %rax
btl $0x9, %eax
jae 0x2292d
leaq 0x6f0f3(%rip), %rsi     # 0x919f4
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
btl $0xe, %eax
jae 0x22966
leaq 0x6f0cf(%rip), %rsi     # 0x91a09
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x60(%r15), %rax
testw %ax, %ax
jns 0x2299a
leaq 0x6f0a5(%rip), %rsi     # 0x91a17
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x6100
leaq 0x30(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0xcc8c
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x30(%rsp), %rax
cmpq 0x38(%rsp), %rax
je 0x229da
leaq 0x8(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0x41980
leaq 0x6f066(%rip), %rsi     # 0x91a22
leaq 0x6f067(%rip), %rcx     # 0x91a2a
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x418a6
leaq 0x8(%rsp), %rdi
callq 0x6548
movq 0x50(%rsp), %rax
cmpq 0x58(%rsp), %rax
je 0x22a1a
leaq 0x8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x41980
leaq 0x6f026(%rip), %rsi     # 0x91a22
leaq 0x6f02d(%rip), %rcx     # 0x91a30
leaq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x419fc
leaq 0x8(%rsp), %rdi
callq 0x6548
leaq 0x6ce66(%rip), %rsi     # 0x8f887
movq %rbx, %rdi
callq 0x928e
leaq 0x50(%rsp), %rdi
callq 0xb98a
leaq 0x30(%rsp), %rdi
callq 0xb98a
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b51
jmp 0x22b51
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b51
jmp 0x22b40
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
jmp 0x22b40
jmp 0x22b40
jmp 0x22b51
jmp 0x22b51
jmp 0x22b51
jmp 0x22b51
jmp 0x22b40
jmp 0x22b51
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6548
jmp 0x22b68
movq %rax, %rbx
jmp 0x22b68
jmp 0x22b40
jmp 0x22b51
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6548
jmp 0x22b54
jmp 0x22b51
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xb98a
leaq 0x30(%rsp), %rdi
callq 0xb98a
movq %rbx, %rdi
callq 0x64b0