// File: /workspace/github_cpp_makefile_star2_O2/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 %r14
pushq %rbx
subq $0xc0, %rsp
movl %edx, %ebp
movl %edx, %eax
movq 0x20(%rsi), %rcx
shlq $0x4, %rax
cmpl $0x3, 0x8(%rcx,%rax)
jne 0x79fd9
movq %rdi, %rbx
movq %rsi, %rdi
movl %ebp, %esi
callq 0x17bce
movl 0x10(%rax), %r14d
cmpq $0x3, %r14
ja 0x7a045
leaq 0x20c90(%rip), %rax     # 0x9ac24
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x23bac(%rip), %rsi     # 0x9db50
jmp 0x79fbf
leaq 0x23bbd(%rip), %rsi     # 0x9db6a
jmp 0x79fbf
leaq 0x23bc1(%rip), %rsi     # 0x9db77
jmp 0x79fbf
leaq 0x23b9e(%rip), %rsi     # 0x9db5d
movq %rsp, %rdx
movq %rbx, %rdi
callq 0x6100
movq %rbx, %rax
addq $0xc0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
movl %ebp, %esi
callq 0x1c182
leaq 0x23ba9(%rip), %rsi     # 0x9dba0
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x463dd
leaq 0x23b2c(%rip), %rdx     # 0x9db39
movq %rsp, %rdi
leaq 0x40(%rsp), %rsi
callq 0xab3f
movb $0x1, %bpl
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0x6cd8f(%rip), %rsi     # 0xe6dc0
movq 0x6dfa8(%rip), %rdx     # 0xe7fe0
movq %rbx, %rdi
callq 0x6490
jmp 0x7a0ef
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
movl %r14d, %esi
callq 0x1c182
leaq 0x23b1d(%rip), %rsi     # 0x9db84
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x463dd
leaq 0x23b0d(%rip), %rdx     # 0x9db90
leaq 0x20(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xab3f
leaq 0x60(%rsp), %rdi
movl %ebp, %esi
callq 0x1c182
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x1743e
leaq 0x23ae8(%rip), %rdx     # 0x9dba4
movq %rsp, %rdi
leaq 0x40(%rsp), %rsi
callq 0xab3f
movb $0x1, %bpl
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0x6cce0(%rip), %rsi     # 0xe6dc0
movq 0x6def9(%rip), %rdx     # 0xe7fe0
movq %rbx, %rdi
callq 0x6490
movq %rax, %r14
movq %rsp, %rdi
callq 0x6548
jmp 0x7a102
movq %rax, %r14
movb $0x1, %bpl
leaq 0x40(%rsp), %rdi
callq 0x6548
jmp 0x7a114
movq %rax, %r14
movb $0x1, %bpl
leaq 0x60(%rsp), %rdi
callq 0x6548
jmp 0x7a126
movq %rax, %r14
movb $0x1, %bpl
leaq 0x20(%rsp), %rdi
callq 0x6548
jmp 0x7a138
movq %rax, %r14
movb $0x1, %bpl
leaq 0xa0(%rsp), %rdi
callq 0x6548
jmp 0x7a14d
movq %rax, %r14
movb $0x1, %bpl
leaq 0x80(%rsp), %rdi
jmp 0x7a183
jmp 0x7a18f
movq %rax, %r14
movq %rsp, %rdi
callq 0x6548
jmp 0x7a16c
movq %rax, %r14
movb $0x1, %bpl
leaq 0x40(%rsp), %rdi
callq 0x6548
jmp 0x7a17e
movq %rax, %r14
movb $0x1, %bpl
leaq 0x20(%rsp), %rdi
callq 0x6548
testb %bpl, %bpl
jne 0x7a192
jmp 0x7a19a
movq %rax, %r14
movq %rbx, %rdi
callq 0x6200
movq %r14, %rdi
callq 0x64b0