// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::emit_struct_member(spirv_cross::SPIRType const&, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int)
void CompilerMSL::emit_struct_member(const SPIRType &type, uint32_t member_type_id, uint32_t index,
                                     const string &qualifier, uint32_t)
{
	auto &membertype = get<SPIRType>(member_type_id);

	// If this member requires padding to maintain alignment, emit a dummy padding member.
	MSLStructMemberKey key = get_struct_member_key(type.self, index);
	uint32_t pad_len = struct_member_padding[key];
	if (pad_len > 0)
		statement("char pad", to_string(index), "[", to_string(pad_len), "];");

	// If this member is packed, mark it as so.
	string pack_pfx = "";
	if (member_is_packed_type(type, index))
	{
		pack_pfx = "packed_";

		// If we're packing a matrix, output an appropriate typedef
		if (membertype.vecsize > 1 && membertype.columns > 1)
		{
			string base_type = membertype.width == 16 ? "half" : "float";
			string td_line = "typedef ";
			td_line += base_type + to_string(membertype.vecsize) + "x" + to_string(membertype.columns);
			td_line += " " + pack_pfx;
			td_line += base_type + to_string(membertype.columns) + "x" + to_string(membertype.vecsize);
			td_line += ";";
			add_typedef_line(td_line);
		}
	}

	statement(pack_pfx, type_to_glsl(membertype), " ", qualifier, to_member_name(type, index),
	          member_attribute_qualifier(type, index), type_to_array_glsl(membertype), ";");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %r8, %rbx
movl %ecx, %ebp
movq %rsi, %r12
movq %rdi, %r14
movl %edx, %esi
callq 0x90a4
movq %rax, %r15
movl 0x8(%r12), %eax
shlq $0x20, %rax
movl %ebp, %ecx
orq %rax, %rcx
leaq 0x100(%rsp), %rsi
movq %rcx, (%rsi)
leaq 0x848(%r14), %rdi
callq 0x85208
movl (%rax), %r13d
testl %r13d, %r13d
je 0x7a9fa
leaq 0x80(%rsp), %rdi
movl %ebp, %esi
callq 0x1c182
leaq 0x20(%rsp), %rdi
movl %r13d, %esi
callq 0x1c182
leaq 0x232c8(%rip), %rsi     # 0x9dc88
leaq 0x232dd(%rip), %rcx     # 0x9dca4
leaq 0x1d0a4(%rip), %r9      # 0x97a72
leaq 0x80(%rsp), %rdx
leaq 0x20(%rsp), %r8
movq %r14, %rdi
callq 0x81d1c
leaq 0x20(%rsp), %rdi
callq 0x6548
leaq 0x80(%rsp), %rdi
callq 0x6548
leaq 0x14e86(%rip), %rsi     # 0x8f887
leaq 0x80(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x6100
movq %r14, %rdi
movq %r12, %rsi
movl %ebp, %edx
callq 0x3573a
testb %al, %al
je 0x7ac4a
leaq 0x23262(%rip), %rsi     # 0x9dc91
leaq 0x80(%rsp), %rdi
callq 0x64e0
cmpl $0x2, 0x14(%r15)
jb 0x7ac4a
cmpl $0x2, 0x18(%r15)
jb 0x7ac4a
cmpl $0x10, 0x10(%r15)
leaq 0x17e3d(%rip), %rax     # 0x9289b
leaq 0x22f80(%rip), %rsi     # 0x9d9e5
cmoveq %rax, %rsi
leaq 0x20(%rsp), %rdi
leaq 0x40(%rsp), %rdx
callq 0x6100
leaq 0x2321a(%rip), %rsi     # 0x9dc99
leaq 0x40(%rsp), %rdi
movq %rsp, %rdx
callq 0x6100
movl 0x14(%r15), %esi
leaq 0xc0(%rsp), %rdi
callq 0x1c182
leaq 0xe0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x81e11
leaq 0x1a29f(%rip), %rdx     # 0x94d5d
leaq 0x60(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0xab3f
movl 0x18(%r15), %esi
leaq 0xa0(%rsp), %rdi
callq 0x1c182
movq %rsp, %rdi
leaq 0x60(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x1743e
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x64f0
movq %rsp, %rdi
callq 0x6548
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0x60(%rsp), %rdi
callq 0x6548
leaq 0xe0(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
callq 0x6548
leaq 0x14d43(%rip), %rsi     # 0x8f886
movq %rsp, %rdi
leaq 0x80(%rsp), %rdx
callq 0x625ff
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x64f0
movq %rsp, %rdi
callq 0x6548
movl 0x18(%r15), %esi
leaq 0xc0(%rsp), %rdi
callq 0x1c182
leaq 0xe0(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x81e11
leaq 0x1a1c3(%rip), %rdx     # 0x94d5d
leaq 0x60(%rsp), %rdi
leaq 0xe0(%rsp), %rsi
callq 0xab3f
movl 0x14(%r15), %esi
leaq 0xa0(%rsp), %rdi
callq 0x1c182
movq %rsp, %rdi
leaq 0x60(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x1743e
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
callq 0x64f0
movq %rsp, %rdi
callq 0x6548
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0x60(%rsp), %rdi
callq 0x6548
leaq 0xe0(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
callq 0x6548
leaq 0x1ee62(%rip), %rsi     # 0x99a81
leaq 0x40(%rsp), %rdi
callq 0x64d0
leaq 0x40(%rsp), %rsi
movq %r14, %rdi
callq 0x73f44
leaq 0x40(%rsp), %rdi
callq 0x6548
leaq 0x20(%rsp), %rdi
callq 0x6548
movq (%r14), %rax
leaq 0x20(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq *0x98(%rax)
leaq 0x40(%rsp), %rdi
movq %r14, %rsi
movq %r12, %rdx
movl %ebp, %ecx
callq 0x25cca
movq %rsp, %r13
movq %r13, %rdi
movq %r14, %rsi
movq %r12, %rdx
movl %ebp, %ecx
callq 0x7ae3e
leaq 0x60(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x2547c
subq $0x8, %rsp
leaq 0x1edde(%rip), %rax     # 0x99a81
leaq 0x14bdc(%rip), %rcx     # 0x8f886
leaq 0x88(%rsp), %rsi
leaq 0x28(%rsp), %rdx
leaq 0x48(%rsp), %r9
movq %r14, %rdi
movq %rbx, %r8
pushq %rax
pushq %r12
pushq %r13
callq 0x81e36
addq $0x20, %rsp
leaq 0x60(%rsp), %rdi
callq 0x6548
movq %rsp, %rdi
callq 0x6548
leaq 0x40(%rsp), %rdi
callq 0x6548
leaq 0x20(%rsp), %rdi
callq 0x6548
leaq 0x80(%rsp), %rdi
callq 0x6548
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6548
jmp 0x7ad25
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x6548
jmp 0x7ad37
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x6548
jmp 0x7ad46
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x6548
jmp 0x7ada9
movq %rax, %rbx
jmp 0x7ada9
jmp 0x7adc1
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x7adb1
jmp 0x7adc1
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6548
jmp 0x7ad76
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x6548
jmp 0x7ad88
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x6548
jmp 0x7ad97
movq %rax, %rbx
leaq 0xe0(%rsp), %rdi
callq 0x6548
jmp 0x7ada9
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x6548
jmp 0x7adc4
jmp 0x7adc1
movq %rax, %rbx
jmp 0x7ae12
jmp 0x7ae25
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x6548
jmp 0x7ae12
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x6548
jmp 0x7ae28
movq %rax, %rbx
jmp 0x7ae28
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x6548
jmp 0x7adf6
movq %rax, %rbx
movq %rsp, %rdi
callq 0x6548
jmp 0x7ae03
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x6548
jmp 0x7ae12
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x6548
jmp 0x7ae28
jmp 0x7ae25
movq %rax, %rbx
jmp 0x7ae35
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x6548
movq %rbx, %rdi
callq 0x64b0
nop