// File: /workspace/github_cpp_makefile_star2_O3/rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::to_component_argument[abi:cxx11](unsigned int)
string CompilerMSL::to_component_argument(uint32_t id)
{
	if (ir.ids[id].get_type() != TypeConstant)
	{
		SPIRV_CROSS_THROW("ID " + to_string(id) + " is not an OpConstant.");
		return "component::x";
	}

	uint32_t component_index = get<SPIRConstant>(id).scalar();
	switch (component_index)
	{
	case 0:
		return "component::x";
	case 1:
		return "component::y";
	case 2:
		return "component::z";
	case 3:
		return "component::w";

	default:
		SPIRV_CROSS_THROW("The value (" + to_string(component_index) + ") of OpConstant ID " + to_string(id) +
		                  " is not a valid Component index, which must be one of 0, 1, 2, or 3.");
		return "component::x";
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xc0, %rsp
movl %edx, %ebp
movl %edx, %eax
movq 0x20(%rsi), %rcx
shlq $0x4, %rax
cmpl $0x3, 0x8(%rcx,%rax)
jne 0x99fc2
movq %rdi, %rbx
movq %rsi, %rdi
movl %ebp, %esi
callq 0x1c036
movl 0x10(%rax), %r14d
cmpq $0x3, %r14
ja 0x9a01f
leaq 0x25d50(%rip), %rax     # 0xbfc94
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28c3d(%rip), %rsi     # 0xc2b98
leaq 0x28c42(%rip), %rdx     # 0xc2ba4
jmp 0x99fa7
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28c40(%rip), %rsi     # 0xc2bb2
leaq 0x28c45(%rip), %rdx     # 0xc2bbe
jmp 0x99fa7
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28c36(%rip), %rsi     # 0xc2bbf
leaq 0x28c3b(%rip), %rdx     # 0xc2bcb
jmp 0x99fa7
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28c05(%rip), %rsi     # 0xc2ba5
leaq 0x28c0a(%rip), %rdx     # 0xc2bb1
movq %rbx, %rdi
callq 0x7be0
movq %rbx, %rax
addq $0xc0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
movq %rsp, %rdi
movl %ebp, %esi
callq 0xa5f9b
leaq 0x28c08(%rip), %rsi     # 0xc2be8
leaq 0x40(%rsp), %rdi
movq %rsp, %rdx
callq 0x57b9a
leaq 0x28b8d(%rip), %rsi     # 0xc2b81
leaq 0x40(%rsp), %rdi
callq 0x64e0
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x9a087
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x9a094
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
movl %r14d, %esi
callq 0xa5f9b
leaq 0x28b8c(%rip), %rsi     # 0xc2bcc
leaq 0xa0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x57b9a
leaq 0x28b7f(%rip), %rsi     # 0xc2bd8
leaq 0xa0(%rsp), %rdi
callq 0x64e0
leaq 0x10(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x9a0e6
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x9a0f2
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
movq 0x8(%rax), %rdx
leaq 0x20(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %rbx, %rdi
callq 0x6320
leaq 0x61d06(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x61cde(%rip), %rsi     # 0xfbdb0
movq 0x62eff(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x9a1bc
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x80(%rsp), %rdi
movl %ebp, %esi
callq 0xa5f9b
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0x80(%rsp), %rdx
callq 0xa34a4
leaq 0x28ab7(%rip), %rsi     # 0xc2bec
leaq 0x40(%rsp), %rdi
callq 0x64e0
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x9a162
movups (%rcx), %xmm0
movups %xmm0, (%r12)
jmp 0x9a16f
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
movq 0x8(%rax), %rdx
leaq 0x20(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movb $0x1, %bpl
movq %rbx, %rdi
callq 0x6320
leaq 0x61c2b(%rip), %rax     # 0xfbdc8
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x61c03(%rip), %rsi     # 0xfbdb0
movq 0x62e24(%rip), %rdx     # 0xfcfd8
movq %rbx, %rdi
callq 0x6470
movq %rax, %r14
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x9a1de
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a1de
movq %rax, %r14
movb $0x1, %bpl
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a201
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a201
movq %rax, %r14
movb $0x1, %bpl
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a22a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a22a
movq %rax, %r14
movb $0x1, %bpl
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x9a248
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a248
movq %rax, %r14
movb $0x1, %bpl
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a269
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a2f4
movq 0x70(%rsp), %rsi
jmp 0x9a2ec
movq %rax, %r14
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a31e
movq 0x70(%rsp), %rsi
jmp 0x9a311
jmp 0x9a31b
movq %rax, %r14
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x9a2be
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a2be
movq %rax, %r14
movb $0x1, %bpl
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a2d9
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a2f4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
testb %bpl, %bpl
jne 0x9a31e
jmp 0x9a326
movq %rax, %r14
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9a31e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9a31e
movq %rax, %r14
movq %rbx, %rdi
callq 0x6200
movq %r14, %rdi
callq 0x64a0