// File: /workspace/github_cpp_makefile_star2_O1/rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::find_static_extensions()
void CompilerGLSL::find_static_extensions()
{
	for (auto &id : ir.ids)
	{
		if (id.get_type() == TypeType)
		{
			auto &type = id.get<SPIRType>();
			if (type.basetype == SPIRType::Double)
			{
				if (options.es)
					SPIRV_CROSS_THROW("FP64 not supported in ES profile.");
				if (!options.es && options.version < 400)
					require_extension_internal("GL_ARB_gpu_shader_fp64");
			}

			if (type.basetype == SPIRType::Int64 || type.basetype == SPIRType::UInt64)
			{
				if (options.es)
					SPIRV_CROSS_THROW("64-bit integers not supported in ES profile.");
				if (!options.es)
					require_extension_internal("GL_ARB_gpu_shader_int64");
			}

			if (type.basetype == SPIRType::Half)
				require_extension_internal("GL_AMD_gpu_shader_half_float");
		}
	}

	auto &execution = get_entry_point();
	switch (execution.model)
	{
	case ExecutionModelGLCompute:
		if (!options.es && options.version < 430)
			require_extension_internal("GL_ARB_compute_shader");
		if (options.es && options.version < 310)
			SPIRV_CROSS_THROW("At least ESSL 3.10 required for compute shaders.");
		break;

	case ExecutionModelGeometry:
		if (options.es && options.version < 320)
			require_extension_internal("GL_EXT_geometry_shader");
		if (!options.es && options.version < 150)
			require_extension_internal("GL_ARB_geometry_shader4");

		if (execution.flags.get(ExecutionModeInvocations) && execution.invocations != 1)
		{
			// Instanced GS is part of 400 core or this extension.
			if (!options.es && options.version < 400)
				require_extension_internal("GL_ARB_gpu_shader5");
		}
		break;

	case ExecutionModelTessellationEvaluation:
	case ExecutionModelTessellationControl:
		if (options.es && options.version < 320)
			require_extension_internal("GL_EXT_tessellation_shader");
		if (!options.es && options.version < 400)
			require_extension_internal("GL_ARB_tessellation_shader");
		break;

	default:
		break;
	}

	if (!pls_inputs.empty() || !pls_outputs.empty())
		require_extension_internal("GL_EXT_shader_pixel_local_storage");

	if (options.separate_shader_objects && !options.es && options.version < 410)
		require_extension_internal("GL_ARB_separate_shader_objects");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq 0x20(%rdi), %r14
movq 0x28(%rdi), %rbp
cmpq %rbp, %r14
je 0x264d5
leaq 0x18(%rsp), %r12
leaq 0x8(%rsp), %r13
cmpl $0x1, 0x8(%r14)
jne 0x264c8
movq %r14, %rdi
callq 0xb08e
movq %rax, %r15
cmpl $0xb, 0xc(%rax)
jne 0x2642e
cmpb $0x1, 0x43c(%rbx)
je 0x268ed
cmpl $0x18f, 0x438(%rbx)     # imm = 0x18F
ja 0x2642e
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x91163(%rip), %rsi     # 0xb7563
leaq 0x91172(%rip), %rdx     # 0xb7579
callq 0x7c64
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2642e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xc(%r15), %eax
andl $-0x2, %eax
cmpl $0x6, %eax
jne 0x26484
cmpb $0x1, 0x43c(%rbx)
je 0x2688d
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x91151(%rip), %rsi     # 0xb75a7
leaq 0x91161(%rip), %rdx     # 0xb75be
callq 0x7c64
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x26484
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpl $0x9, 0xc(%r15)
jne 0x264c8
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x91125(%rip), %rsi     # 0xb75bf
leaq 0x9113a(%rip), %rdx     # 0xb75db
callq 0x7c64
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x264c8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
addq $0x10, %r14
cmpq %rbp, %r14
jne 0x263bc
movq %rbx, %rdi
callq 0x16254
movq %rax, %r14
movl 0xb8(%rax), %eax
leal -0x1(%rax), %ecx
cmpl $0x2, %ecx
jb 0x265e4
cmpl $0x3, %eax
je 0x266a9
cmpl $0x5, %eax
jne 0x267b6
cmpb $0x0, 0x43c(%rbx)
jne 0x2655e
cmpl $0x1ad, 0x438(%rbx)     # imm = 0x1AD
ja 0x2655e
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x910b3(%rip), %rsi     # 0xb75dc
leaq 0x910c1(%rip), %rdx     # 0xb75f1
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2655e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x43c(%rbx)
jne 0x267b6
cmpl $0x135, 0x438(%rbx)     # imm = 0x135
ja 0x267b6
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x9105a(%rip), %rsi     # 0xb75f2
leaq 0x91083(%rip), %rdx     # 0xb7622
leaq 0x8(%rsp), %rdi
callq 0x7c64
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd67d8(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd67b0(%rip), %rsi     # 0xfcd80
movq 0xd7a01(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x2694b
cmpb $0x1, 0x43c(%rbx)
jne 0x2663e
cmpl $0x13f, 0x438(%rbx)     # imm = 0x13F
ja 0x2663e
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x9105c(%rip), %rsi     # 0xb7665
leaq 0x9106f(%rip), %rdx     # 0xb767f
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2663e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x0, 0x43c(%rbx)
jne 0x267b6
cmpl $0x18f, 0x438(%rbx)     # imm = 0x18F
ja 0x267b6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x91015(%rip), %rsi     # 0xb7680
leaq 0x91028(%rip), %rdx     # 0xb769a
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x267b6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x267b6
cmpb $0x1, 0x43c(%rbx)
jne 0x26703
cmpl $0x13f, 0x438(%rbx)     # imm = 0x13F
ja 0x26703
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x90f55(%rip), %rsi     # 0xb7623
leaq 0x90f64(%rip), %rdx     # 0xb7639
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x26703
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x0, 0x43c(%rbx)
jne 0x2675d
cmpl $0x95, 0x438(%rbx)
ja 0x2675d
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x90f12(%rip), %rsi     # 0xb763a
leaq 0x90f22(%rip), %rdx     # 0xb7651
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2675d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb $0x1, 0x60(%r14)
je 0x267b6
cmpl $0x1, 0xb0(%r14)
je 0x267b6
cmpb $0x0, 0x43c(%rbx)
jne 0x267b6
cmpl $0x18f, 0x438(%rbx)     # imm = 0x18F
ja 0x267b6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90ebf(%rip), %rsi     # 0xb7652
leaq 0x90eca(%rip), %rdx     # 0xb7664
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
jmp 0x26689
movq 0x758(%rbx), %rax
cmpq 0x760(%rbx), %rax
jne 0x267d6
movq 0x770(%rbx), %rax
cmpq 0x778(%rbx), %rax
je 0x2681b
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90eb5(%rip), %rsi     # 0xb769b
leaq 0x90ecf(%rip), %rdx     # 0xb76bc
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2681b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x43f(%rbx)
jne 0x2687e
cmpb $0x0, 0x43c(%rbx)
jne 0x2687e
cmpl $0x199, 0x438(%rbx)     # imm = 0x199
ja 0x2687e
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90e74(%rip), %rsi     # 0xb76bd
leaq 0x90e8b(%rip), %rdx     # 0xb76db
leaq 0x8(%rsp), %rdi
callq 0x7c64
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26a0a
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x2687e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x90cd1(%rip), %rsi     # 0xb757a
leaq 0x90cf6(%rip), %rdx     # 0xb75a6
callq 0x7c64
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd64cc(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd64a4(%rip), %rsi     # 0xfcd80
movq 0xd76f5(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x2694b
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x90c38(%rip), %rsi     # 0xb7541
leaq 0x90c52(%rip), %rdx     # 0xb7562
callq 0x7c64
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd646c(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd6444(%rip), %rsi     # 0xfcd80
movq 0xd7695(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x26995
jmp 0x269ff
jmp 0x26959
jmp 0x269ff
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x269f0
jmp 0x26a02
jmp 0x26995
jmp 0x269ff
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x269b7
jmp 0x269cc
jmp 0x269c6
jmp 0x269ff
jmp 0x26995
jmp 0x269ff
jmp 0x26995
jmp 0x269ff
jmp 0x26995
jmp 0x269ff
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x269f0
jmp 0x26a02
jmp 0x269ff
jmp 0x269aa
jmp 0x269c6
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x269cc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x269cc
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x26a02
movq %r14, %rdi
callq 0x6200
jmp 0x26a02
jmp 0x269e3
jmp 0x269ff
jmp 0x269e3
jmp 0x269ff
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x26a02
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x26a02
movq %rax, %rbx
movq %rbx, %rdi
callq 0x64a0