// File: /workspace/github_cpp_makefile_star2_O1/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 0x9ac98
movq %rdi, %rbx
movq %rsi, %rdi
movl %ebp, %esi
callq 0x1c66e
movl 0x10(%rax), %r14d
cmpq $0x3, %r14
ja 0x9acf9
leaq 0x2606a(%rip), %rax     # 0xc0c84
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28f97(%rip), %rsi     # 0xc3bc8
leaq 0x28f9c(%rip), %rdx     # 0xc3bd4
jmp 0x9ac7d
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28f9a(%rip), %rsi     # 0xc3be2
leaq 0x28f9f(%rip), %rdx     # 0xc3bee
jmp 0x9ac7d
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28f90(%rip), %rsi     # 0xc3bef
leaq 0x28f95(%rip), %rdx     # 0xc3bfb
jmp 0x9ac7d
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x28f5f(%rip), %rsi     # 0xc3bd5
leaq 0x28f64(%rip), %rdx     # 0xc3be1
movq %rbx, %rdi
callq 0x7c64
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
leaq 0x20(%rsp), %rdi
movl %ebp, %esi
callq 0xa6ea7
leaq 0x28f60(%rip), %rsi     # 0xc3c18
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x58394
leaq 0x28ee3(%rip), %rsi     # 0xc3bb1
leaq 0x40(%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 0x9ad67
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x9ad73
movl $0x10, %edi
callq 0x6140
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
movl %r14d, %esi
callq 0xa6ea7
leaq 0x28edf(%rip), %rsi     # 0xc3bfc
leaq 0xa0(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x58394
leaq 0x28ecf(%rip), %rsi     # 0xc3c08
leaq 0xa0(%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 0x9adc3
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x9add0
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rax), %rdx
movq %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 0x61ff9(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x61fd1(%rip), %rsi     # 0xfcd80
movq 0x63222(%rip), %rdx     # 0xfdfd8
movq %rbx, %rdi
callq 0x6470
jmp 0x9ae93
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x60(%rsp), %rdi
movl %ebp, %esi
callq 0xa6ea7
leaq 0x40(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0xa43b0
leaq 0x28e0d(%rip), %rsi     # 0xc3c1c
leaq 0x40(%rsp), %rdi
callq 0x64e0
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x9ae3c
movups (%rcx), %xmm0
movups %xmm0, (%r12)
jmp 0x9ae48
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
movq 0x8(%rax), %rdx
movq %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 0x61f24(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%rbx)
xorl %ebp, %ebp
leaq 0x61efc(%rip), %rsi     # 0xfcd80
movq 0x6314d(%rip), %rdx     # 0xfdfd8
movq %rbx, %rdi
callq 0x6470
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x9aeb4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9aeb4
movq %rax, %r14
movb $0x1, %bpl
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9aed7
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9aed7
movq %rax, %r14
movb $0x1, %bpl
leaq 0x70(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9aefa
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9aefa
movq %rax, %r14
movb $0x1, %bpl
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x9af19
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9af19
movq %rax, %r14
movb $0x1, %bpl
leaq 0xb0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9af42
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9af42
movq %rax, %r14
movb $0x1, %bpl
leaq 0x90(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9afc6
movq 0x90(%rsp), %rsi
jmp 0x9afb6
jmp 0x9afc0
movq %rax, %r14
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x9af80
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9af80
movq %rax, %r14
movb $0x1, %bpl
leaq 0x50(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9afa3
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9afa3
movq %rax, %r14
movb $0x1, %bpl
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9afc6
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x9afc6
movq %rax, %r14
movb $0x1, %bpl
testb %bpl, %bpl
je 0x9afd3
movq %rbx, %rdi
callq 0x6200
movq %r14, %rdi
callq 0x64a0
nop