// File: rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::emit_pls()
void CompilerGLSL::emit_pls()
{
	auto &execution = get_entry_point();
	if (execution.model != ExecutionModelFragment)
		SPIRV_CROSS_THROW("Pixel local storage only supported in fragment shaders.");

	if (!options.es)
		SPIRV_CROSS_THROW("Pixel local storage only supported in OpenGL ES.");

	if (options.version < 300)
		SPIRV_CROSS_THROW("Pixel local storage only supported in ESSL 3.0 and above.");

	if (!pls_inputs.empty())
	{
		statement("__pixel_local_inEXT _PLSIn");
		begin_scope();
		for (auto &input : pls_inputs)
			statement(pls_decl(input), ";");
		end_scope_decl();
		statement("");
	}

	if (!pls_outputs.empty())
	{
		statement("__pixel_local_outEXT _PLSOut");
		begin_scope();
		for (auto &output : pls_outputs)
			statement(pls_decl(output), ";");
		end_scope_decl();
		statement("");
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x25150
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x4, 0xb8(%rax)
je 0x7071c
movb $0x1, -0x45(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x130(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x7650
movq -0x128(%rbp), %rdx
leaq 0xd1c38(%rip), %rsi     # 0x1422cf
leaq -0x30(%rbp), %rdi
callq 0x7520
jmp 0x706a2
movq -0x130(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x9c50
jmp 0x706b4
movq -0x130(%rbp), %rdi
movb $0x0, -0x45(%rbp)
leaq 0x13d712(%rip), %rsi    # 0x1addd8
leaq -0x66a3d(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x70b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x706fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x7708
leaq -0x31(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x45(%rbp)
jne 0x7070b
jmp 0x70717
movq -0x130(%rbp), %rdi
callq 0x72c0
jmp 0x70b47
movq -0x120(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x707e8
movb $0x1, -0x6a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x140(%rbp)
leaq -0x69(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x7650
movq -0x138(%rbp), %rdx
leaq 0xd1ba4(%rip), %rsi     # 0x142307
leaq -0x68(%rbp), %rdi
callq 0x7520
jmp 0x7076e
movq -0x140(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x9c50
jmp 0x70780
movq -0x140(%rbp), %rdi
movb $0x0, -0x6a(%rbp)
leaq 0x13d646(%rip), %rsi    # 0x1addd8
leaq -0x66b09(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x70b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x707c6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x7708
leaq -0x69(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x6a(%rbp)
jne 0x707d7
jmp 0x707e3
movq -0x140(%rbp), %rdi
callq 0x72c0
jmp 0x70b47
movq -0x120(%rbp), %rax
cmpl $0x12c, 0x438(%rax)     # imm = 0x12C
jae 0x708cf
movb $0x1, -0x92(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x150(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x7650
movq -0x148(%rbp), %rdx
leaq 0xd1b00(%rip), %rsi     # 0x142338
leaq -0x90(%rbp), %rdi
callq 0x7520
jmp 0x70846
movq -0x150(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x9c50
jmp 0x7085b
movq -0x150(%rbp), %rdi
movb $0x0, -0x92(%rbp)
leaq 0x13d568(%rip), %rsi    # 0x1addd8
leaq -0x66be7(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x70b50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x708a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x7708
leaq -0x91(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x92(%rbp)
jne 0x708be
jmp 0x708ca
movq -0x150(%rbp), %rdi
callq 0x72c0
jmp 0x70b47
movq -0x120(%rbp), %rdi
addq $0x758, %rdi            # imm = 0x758
callq 0x9e330
testb $0x1, %al
jne 0x70a08
movq -0x120(%rbp), %rdi
leaq 0xd1a7a(%rip), %rsi     # 0x142372
callq 0xa0940
movq -0x120(%rbp), %rdi
callq 0x5c200
movq -0x120(%rbp), %rax
addq $0x758, %rax            # imm = 0x758
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x9e250
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0x9e280
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x9e2b0
testb $0x1, %al
jne 0x7095f
jmp 0x709e9
leaq -0xa8(%rbp), %rdi
callq 0x9e2f0
movq -0x120(%rbp), %rsi
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0x70b50
movq -0x120(%rbp), %rdi
movq -0x158(%rbp), %rsi
leaq 0xd86fe(%rip), %rdx     # 0x1490a6
callq 0xf270
jmp 0x709af
leaq -0xd8(%rbp), %rdi
callq 0x7708
leaq -0xa8(%rbp), %rdi
callq 0x9e310
jmp 0x70943
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x7708
jmp 0x70b47
movq -0x120(%rbp), %rdi
callq 0x5c350
movq -0x120(%rbp), %rdi
leaq 0xcde9b(%rip), %rsi     # 0x13e89e
callq 0xedf0
movq -0x120(%rbp), %rdi
addq $0x770, %rdi            # imm = 0x770
callq 0x9e330
testb $0x1, %al
jne 0x70b3e
movq -0x120(%rbp), %rdi
leaq 0xd195c(%rip), %rsi     # 0x14238d
callq 0x11e60
movq -0x120(%rbp), %rdi
callq 0x5c200
movq -0x120(%rbp), %rax
addq $0x770, %rax            # imm = 0x770
movq %rax, -0xe0(%rbp)
movq -0xe0(%rbp), %rdi
callq 0x9e250
movq %rax, -0xe8(%rbp)
movq -0xe0(%rbp), %rdi
callq 0x9e280
movq %rax, -0xf0(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x9e2b0
testb $0x1, %al
jne 0x70a98
jmp 0x70b1f
leaq -0xe8(%rbp), %rdi
callq 0x9e2f0
movq -0x120(%rbp), %rsi
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdx
leaq -0x118(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0x70b50
movq -0x120(%rbp), %rdi
movq -0x160(%rbp), %rsi
leaq 0xd85c5(%rip), %rdx     # 0x1490a6
callq 0xf270
jmp 0x70ae8
leaq -0x118(%rbp), %rdi
callq 0x7708
leaq -0xe8(%rbp), %rdi
callq 0x9e310
jmp 0x70a7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x7708
jmp 0x70b47
movq -0x120(%rbp), %rdi
callq 0x5c350
movq -0x120(%rbp), %rdi
leaq 0xcdd65(%rip), %rsi     # 0x13e89e
callq 0xedf0
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x7640