// File: /workspace/github_cpp_makefile_star2_O3/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 0x25e0b
leaq 0x18(%rsp), %r12
leaq 0x8(%rsp), %r13
cmpl $0x1, 0x8(%r14)
jne 0x25dfe
movq %r14, %rdi
callq 0xb052
movq %rax, %r15
movl 0xc(%rax), %eax
cmpl $0xb, %eax
jne 0x25d64
cmpb $0x1, 0x43c(%rbx)
je 0x261db
cmpl $0x18f, 0x438(%rbx)     # imm = 0x18F
ja 0x25dfe
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x90821(%rip), %rsi     # 0xb6553
leaq 0x90830(%rip), %rdx     # 0xb6569
callq 0x7be0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x25d60
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xc(%r15), %eax
movl %eax, %ecx
andl $-0x2, %ecx
cmpl $0x6, %ecx
jne 0x25dbc
cmpb $0x1, 0x43c(%rbx)
je 0x2623b
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x9080d(%rip), %rsi     # 0xb6597
leaq 0x9081d(%rip), %rdx     # 0xb65ae
callq 0x7be0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x25db8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0xc(%r15), %eax
cmpl $0x9, %eax
jne 0x25dfe
movq %r12, 0x8(%rsp)
movq %r13, %rdi
leaq 0x907df(%rip), %rsi     # 0xb65af
leaq 0x907f4(%rip), %rdx     # 0xb65cb
callq 0x7be0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x25dfe
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
addq $0x10, %r14
cmpq %rbp, %r14
jne 0x25ce8
movq %rbx, %rdi
callq 0x15f76
movq %rax, %r14
movl 0xb8(%rax), %eax
leal -0x1(%rax), %ecx
cmpl $0x2, %ecx
jb 0x25f20
cmpl $0x3, %eax
je 0x25fee
cmpl $0x5, %eax
jne 0x26104
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
cmpl $0x1ae, %eax            # imm = 0x1AE
setae %dl
orb %cl, %dl
jne 0x25ea3
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x9076a(%rip), %rsi     # 0xb65cc
leaq 0x90778(%rip), %rdx     # 0xb65e1
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x25e97
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
testb $0x1, %cl
je 0x26104
cmpl $0x135, %eax            # imm = 0x135
ja 0x26104
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x9070e(%rip), %rsi     # 0xb65e2
leaq 0x90737(%rip), %rdx     # 0xb6612
leaq 0x8(%rsp), %rdi
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd5ecc(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd5ea4(%rip), %rsi     # 0xfbdb0
movq 0xd70c5(%rip), %rdx     # 0xfcfd8
movq %r14, %rdi
callq 0x6470
jmp 0x26299
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
cmpl $0x140, %eax            # imm = 0x140
setb %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x25f8c
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x9070a(%rip), %rsi     # 0xb6655
leaq 0x9071d(%rip), %rdx     # 0xb666f
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x25f80
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
testb $0x1, %cl
jne 0x26104
cmpl $0x18f, %eax            # imm = 0x18F
ja 0x26104
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x906c0(%rip), %rsi     # 0xb6670
leaq 0x906d3(%rip), %rdx     # 0xb668a
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x26104
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x26104
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
cmpl $0x140, %eax            # imm = 0x140
setb %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x2605a
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x905fa(%rip), %rsi     # 0xb6613
leaq 0x90609(%rip), %rdx     # 0xb6629
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x2604e
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
movb 0x43c(%rbx), %cl
movl 0x438(%rbx), %eax
testb $0x1, %cl
jne 0x260ab
cmpl $0x95, %eax
ja 0x260ab
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x905b4(%rip), %rsi     # 0xb662a
leaq 0x905c4(%rip), %rdx     # 0xb6641
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x260ab
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb $0x1, 0x60(%r14)
je 0x26104
cmpl $0x1, 0xb0(%r14)
je 0x26104
cmpb $0x0, 0x43c(%rbx)
jne 0x26104
cmpl $0x18f, 0x438(%rbx)     # imm = 0x18F
ja 0x26104
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90561(%rip), %rsi     # 0xb6642
leaq 0x9056c(%rip), %rdx     # 0xb6654
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
jmp 0x25fce
movq 0x758(%rbx), %rax
cmpq 0x760(%rbx), %rax
jne 0x26124
movq 0x770(%rbx), %rax
cmpq 0x778(%rbx), %rax
je 0x26169
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90557(%rip), %rsi     # 0xb668b
leaq 0x90571(%rip), %rdx     # 0xb66ac
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x26169
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x43f(%rbx)
jne 0x261cc
cmpb $0x0, 0x43c(%rbx)
jne 0x261cc
cmpl $0x199, 0x438(%rbx)     # imm = 0x199
ja 0x261cc
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x90516(%rip), %rsi     # 0xb66ad
leaq 0x9052d(%rip), %rdx     # 0xb66cb
leaq 0x8(%rsp), %rdi
callq 0x7be0
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x26356
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x261cc
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 0x9033a(%rip), %rsi     # 0xb6531
leaq 0x90354(%rip), %rdx     # 0xb6552
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd5bae(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd5b86(%rip), %rsi     # 0xfbdb0
movq 0xd6da7(%rip), %rdx     # 0xfcfd8
movq %r14, %rdi
callq 0x6470
jmp 0x26299
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
leaq 0x8(%rsp), %rdi
movq %r12, (%rdi)
leaq 0x90313(%rip), %rsi     # 0xb656a
leaq 0x90338(%rip), %rdx     # 0xb6596
callq 0x7be0
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %r14, %rdi
callq 0x6320
leaq 0xd5b4e(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebp, %ebp
leaq 0xd5b26(%rip), %rsi     # 0xfbdb0
movq 0xd6d47(%rip), %rdx     # 0xfcfd8
movq %r14, %rdi
callq 0x6470
jmp 0x262e3
jmp 0x2634a
jmp 0x262a7
jmp 0x2634a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x2633b
jmp 0x2634d
jmp 0x262e3
jmp 0x2634a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x26305
jmp 0x26312
jmp 0x26319
jmp 0x2634a
jmp 0x262e3
jmp 0x2634a
jmp 0x262e3
jmp 0x2634a
jmp 0x262e3
jmp 0x2634a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x2633b
jmp 0x2634d
jmp 0x2634a
jmp 0x262f8
jmp 0x26319
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x26312
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x2631c
jmp 0x2634d
movq %rax, %rbx
movq %r14, %rdi
callq 0x6200
jmp 0x2634d
jmp 0x2632e
jmp 0x2634a
jmp 0x2632e
jmp 0x2634a
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x2634d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x2634d
movq %rax, %rbx
movq %rbx, %rdi
callq 0x64a0
nop