// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::member_attribute_qualifier[abi:cxx11](spirv_cross::SPIRType const&, unsigned int)
string CompilerMSL::member_attribute_qualifier(const SPIRType &type, uint32_t index)
{
	auto &execution = get_entry_point();

	uint32_t mbr_type_id = type.member_types[index];
	auto &mbr_type = get<SPIRType>(mbr_type_id);

	BuiltIn builtin;
	bool is_builtin = is_member_builtin(type, index, &builtin);

	// Vertex function inputs
	if (execution.model == ExecutionModelVertex && type.storage == StorageClassInput)
	{
		if (is_builtin)
		{
			switch (builtin)
			{
			case BuiltInVertexId:
			case BuiltInVertexIndex:
			case BuiltInBaseVertex:
			case BuiltInInstanceId:
			case BuiltInInstanceIndex:
			case BuiltInBaseInstance:
				return string(" [[") + builtin_qualifier(builtin) + "]]";

			case BuiltInDrawIndex:
				SPIRV_CROSS_THROW("DrawIndex is not supported in MSL.");

			default:
				return "";
			}
		}
		uint32_t locn = get_ordered_member_location(type.self, index);
		if (locn != k_unknown_location)
			return string(" [[attribute(") + convert_to_string(locn) + ")]]";
	}

	// Vertex function outputs
	if (execution.model == ExecutionModelVertex && type.storage == StorageClassOutput)
	{
		if (is_builtin)
		{
			switch (builtin)
			{
			case BuiltInPointSize:
				// Only mark the PointSize builtin if really rendering points.
				// Some shaders may include a PointSize builtin even when used to render
				// non-point topologies, and Metal will reject this builtin when compiling
				// the shader into a render pipeline that uses a non-point topology.
				return msl_options.enable_point_size_builtin ? (string(" [[") + builtin_qualifier(builtin) + "]]") : "";

			case BuiltInViewportIndex:
				if (!msl_options.supports_msl_version(2, 0))
					SPIRV_CROSS_THROW("ViewportIndex requires Metal 2.0.");
				/* fallthrough */
			case BuiltInPosition:
			case BuiltInLayer:
			case BuiltInClipDistance:
				return string(" [[") + builtin_qualifier(builtin) + "]]" + (mbr_type.array.empty() ? "" : " ");

			default:
				return "";
			}
		}
		uint32_t comp;
		uint32_t locn = get_ordered_member_location(type.self, index, &comp);
		if (locn != k_unknown_location)
		{
			if (comp != k_unknown_component)
				return string(" [[user(locn") + convert_to_string(locn) + "_" + convert_to_string(comp) + ")]]";
			else
				return string(" [[user(locn") + convert_to_string(locn) + ")]]";
		}
	}

	// Fragment function inputs
	if (execution.model == ExecutionModelFragment && type.storage == StorageClassInput)
	{
		string quals = "";
		if (is_builtin)
		{
			switch (builtin)
			{
			case BuiltInFrontFacing:
			case BuiltInPointCoord:
			case BuiltInFragCoord:
			case BuiltInSampleId:
			case BuiltInSampleMask:
			case BuiltInLayer:
				quals = builtin_qualifier(builtin);

			default:
				break;
			}
		}
		else
		{
			uint32_t comp;
			uint32_t locn = get_ordered_member_location(type.self, index, &comp);
			if (locn != k_unknown_location)
			{
				if (comp != k_unknown_component)
					quals = string("user(locn") + convert_to_string(locn) + "_" + convert_to_string(comp) + ")";
				else
					quals = string("user(locn") + convert_to_string(locn) + ")";
			}
		}
		// Don't bother decorating integers with the 'flat' attribute; it's
		// the default (in fact, the only option). Also don't bother with the
		// FragCoord builtin; it's always noperspective on Metal.
		if (!type_is_integral(mbr_type) && (!is_builtin || builtin != BuiltInFragCoord))
		{
			if (has_member_decoration(type.self, index, DecorationFlat))
			{
				if (!quals.empty())
					quals += ", ";
				quals += "flat";
			}
			else if (has_member_decoration(type.self, index, DecorationCentroid))
			{
				if (!quals.empty())
					quals += ", ";
				if (has_member_decoration(type.self, index, DecorationNoPerspective))
					quals += "centroid_no_perspective";
				else
					quals += "centroid_perspective";
			}
			else if (has_member_decoration(type.self, index, DecorationSample))
			{
				if (!quals.empty())
					quals += ", ";
				if (has_member_decoration(type.self, index, DecorationNoPerspective))
					quals += "sample_no_perspective";
				else
					quals += "sample_perspective";
			}
			else if (has_member_decoration(type.self, index, DecorationNoPerspective))
			{
				if (!quals.empty())
					quals += ", ";
				quals += "center_no_perspective";
			}
		}
		if (!quals.empty())
			return " [[" + quals + "]]";
	}

	// Fragment function outputs
	if (execution.model == ExecutionModelFragment && type.storage == StorageClassOutput)
	{
		if (is_builtin)
		{
			switch (builtin)
			{
			case BuiltInSampleMask:
			case BuiltInFragDepth:
				return string(" [[") + builtin_qualifier(builtin) + "]]";

			default:
				return "";
			}
		}
		uint32_t locn = get_ordered_member_location(type.self, index);
		if (locn != k_unknown_location && has_member_decoration(type.self, index, DecorationIndex))
			return join(" [[color(", locn, "), index(", get_member_decoration(type.self, index, DecorationIndex),
			            ")]]");
		else if (locn != k_unknown_location)
			return join(" [[color(", locn, ")]]");
		else if (has_member_decoration(type.self, index, DecorationIndex))
			return join(" [[index(", get_member_decoration(type.self, index, DecorationIndex), ")]]");
		else
			return "";
	}

	// Compute function inputs
	if (execution.model == ExecutionModelGLCompute && type.storage == StorageClassInput)
	{
		if (is_builtin)
		{
			switch (builtin)
			{
			case BuiltInGlobalInvocationId:
			case BuiltInWorkgroupId:
			case BuiltInNumWorkgroups:
			case BuiltInLocalInvocationId:
			case BuiltInLocalInvocationIndex:
				return string(" [[") + builtin_qualifier(builtin) + "]]";

			default:
				return "";
			}
		}
	}

	return "";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x128, %rsp            # imm = 0x128
movl %ecx, %ebp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, 0x8(%rsp)
movq %rsi, %rdi
callq 0x12fa4
movq %rax, %r13
movl %ebp, %eax
movq 0x68(%r15), %rcx
movl (%rcx,%rax,4), %esi
movq %r14, %rdi
callq 0x90a4
movq %rax, %rbx
leaq 0x4(%rsp), %rcx
movq %r14, %rdi
movq %r15, %rsi
movl %ebp, %edx
callq 0x10cdc
movl %eax, %r12d
movq %r13, 0x98(%rsp)
movl 0xb8(%r13), %eax
movl 0x64(%r15), %ecx
movl %ecx, %edx
xorl $0x1, %edx
orl %eax, %edx
jne 0x7af3b
testb %r12b, %r12b
je 0x7afd6
movl 0x4(%rsp), %eax
cmpq $0x2b, %rax
ja 0x7aed3
movabsq $0xc0000000060, %rcx    # imm = 0xC0000000060
btq %rax, %rcx
jb 0x7aee2
leal -0x1148(%rax), %ecx
cmpl $0x2, %ecx
jae 0x7b385
leaq 0x22db9(%rip), %rsi     # 0x9dca2
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
movq 0x8(%rsp), %r15
movl 0x4(%rsp), %edx
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x22e8c(%rip), %rdx     # 0x9ddb5
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
jmp 0x7b779
movl %ecx, %edx
xorl $0x3, %edx
orl %eax, %edx
jne 0x7b188
testb %r12b, %r12b
je 0x7b066
movl 0x4(%rsp), %eax
cmpq $0xa, %rax
ja 0x7b7ac
leaq 0x1fcce(%rip), %rcx     # 0x9ac34
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpb $0x1, 0x7dc(%r14)
movq 0x8(%rsp), %r15
jne 0x7b395
leaq 0x22d19(%rip), %rsi     # 0x9dca2
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
movl 0x4(%rsp), %edx
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x22df1(%rip), %rdx     # 0x9ddb5
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
jmp 0x7b779
movq %rbx, %r13
movl 0x8(%r15), %esi
movq %r14, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x7be18
cmpl $-0x1, %eax
je 0x7b044
movl %eax, %ebx
leaq 0x22cd2(%rip), %rsi     # 0x9dcc9
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
leaq 0x50(%rsp), %rdi
movl %ebx, %esi
callq 0x1c182
movq 0x8(%rsp), %r15
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x22ca5(%rip), %rdx     # 0x9dcd7
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
jmp 0x7b779
movq 0x98(%rsp), %rax
movl 0xb8(%rax), %eax
movl 0x64(%r15), %ecx
movl %ecx, %edx
xorl $0x3, %edx
orl %eax, %edx
movq %r13, %rbx
jne 0x7b188
movq %rbx, %r13
movl 0x8(%r15), %esi
leaq 0xe8(%rsp), %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x7be18
cmpl $-0x1, %eax
je 0x7b173
movl %eax, %ebx
cmpl $-0x1, 0xe8(%rsp)
je 0x7b331
leaq 0x22c5e(%rip), %rsi     # 0x9dcfd
leaq 0x78(%rsp), %rdi
leaq 0x108(%rsp), %rdx
callq 0x6100
movq 0x8(%rsp), %r15
leaq 0xa0(%rsp), %rdi
movl %ebx, %esi
callq 0x1c182
leaq 0x50(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x1743e
leaq 0x1de64(%rip), %rdx     # 0x98f47
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xab3f
movl 0xe8(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x1c182
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x1743e
leaq 0x22bb3(%rip), %rdx     # 0x9dcd7
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0x78(%rsp), %rdi
jmp 0x7b792
movq 0x98(%rsp), %rax
movl 0xb8(%rax), %eax
movl 0x64(%r15), %ecx
movq %r13, %rbx
movl %eax, %edx
xorl $0x4, %edx
movl %ecx, %esi
xorl $0x1, %esi
orl %edx, %esi
jne 0x7b676
leaq 0x146e6(%rip), %rsi     # 0x8f887
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6100
testb %r12b, %r12b
je 0x7b202
movl 0x4(%rsp), %edx
cmpl $0x14, %edx
ja 0x7b43e
movl $0x178200, %eax         # imm = 0x178200
btl %edx, %eax
jae 0x7b43e
movq %rbx, %r13
leaq 0x30(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rbx
movq %rbx, %rsi
callq 0x6320
movq %rbx, %rdi
callq 0x6548
movq %r13, %rbx
jmp 0x7b43e
movq %rbx, 0xe0(%rsp)
movl 0x8(%r15), %esi
leaq 0x74(%rsp), %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x7be18
movl %eax, %ebx
cmpl $-0x1, %eax
je 0x7b436
cmpl $-0x1, 0x74(%rsp)
je 0x7b3a6
leaq 0x22ac6(%rip), %rsi     # 0x9dd00
leaq 0xc0(%rsp), %rdi
leaq 0x73(%rsp), %rdx
callq 0x6100
leaq 0xe8(%rsp), %rdi
movl %ebx, %esi
callq 0x1c182
leaq 0xa0(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x1743e
leaq 0x1dcc8(%rip), %rdx     # 0x98f47
leaq 0x78(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
callq 0xab3f
movl 0x74(%rsp), %esi
leaq 0x108(%rsp), %rdi
callq 0x1c182
leaq 0x50(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x1743e
leaq 0x1a735(%rip), %rdx     # 0x959f5
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xab3f
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rbx
movq %rbx, %rsi
callq 0x6320
movq %rbx, %rdi
callq 0x6548
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0x108(%rsp), %rdi
callq 0x6548
leaq 0x78(%rsp), %rdi
callq 0x6548
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0xe8(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
jmp 0x7b431
leaq 0x229c5(%rip), %rsi     # 0x9dcfd
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
movq 0x8(%rsp), %r15
leaq 0x50(%rsp), %rdi
movl %ebx, %esi
callq 0x1c182
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x22964(%rip), %rdx     # 0x9dcd7
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
jmp 0x7b779
cmpl $0x114a, %eax           # imm = 0x114A
movq 0x8(%rsp), %r15
je 0x7b8f4
leaq 0x144eb(%rip), %rsi     # 0x8f887
leaq 0x10(%rsp), %rdx
jmp 0x7b7bd
leaq 0x22953(%rip), %rsi     # 0x9dd00
leaq 0x78(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
callq 0x6100
leaq 0xa0(%rsp), %rdi
movl %ebx, %esi
callq 0x1c182
leaq 0x50(%rsp), %rdi
leaq 0x78(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
callq 0x1743e
leaq 0x1a609(%rip), %rdx     # 0x959f5
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xab3f
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rbx
movq %rbx, %rsi
callq 0x6320
movq %rbx, %rdi
callq 0x6548
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0x78(%rsp), %rdi
callq 0x6548
movq 0xe0(%rsp), %rbx
movl 0xc(%rbx), %eax
andl $-0x4, %eax
cmpl $0x4, %eax
je 0x7b60f
cmpl $0xf, 0x4(%rsp)
sete %al
testb %al, %r12b
jne 0x7b60f
movl 0x8(%r15), %esi
pushq $0xe
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
testb %al, %al
je 0x7b49c
leaq 0x17401(%rip), %rbx     # 0x9287b
cmpq $0x0, 0x18(%rsp)
je 0x7b602
leaq 0x19bfe(%rip), %rsi     # 0x9508b
leaq 0x10(%rsp), %rdi
callq 0x64d0
jmp 0x7b602
movl 0x8(%r15), %esi
pushq $0x10
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
testb %al, %al
je 0x7b5ab
cmpq $0x0, 0x18(%rsp)
je 0x7b4ce
leaq 0x19bc7(%rip), %rsi     # 0x9508b
leaq 0x10(%rsp), %rdi
callq 0x64d0
movl 0x8(%r15), %esi
pushq $0xd
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
leaq 0x22824(%rip), %rcx     # 0x9dd0a
leaq 0x22835(%rip), %rbx     # 0x9dd22
jmp 0x7b5fc
cmpl $0x4e1f, 0x7d0(%r14) # imm = 0x4E1F
jbe 0x7b93f
leaq 0x22798(%rip), %rsi     # 0x9dca2
leaq 0x50(%rsp), %rdi
leaq 0xa0(%rsp), %rdx
callq 0x6100
movq 0x8(%rsp), %r15
movl 0x4(%rsp), %edx
leaq 0x78(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x30(%rsp), %rdi
leaq 0x50(%rsp), %rsi
leaq 0x78(%rsp), %rdx
callq 0x1743e
leaq 0x22868(%rip), %rdx     # 0x9ddb5
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xab3f
movq 0x20(%rbx), %rax
cmpq 0x28(%rbx), %rax
leaq 0x1431c(%rip), %rax     # 0x8f887
leaq 0x14314(%rip), %rdx     # 0x8f886
cmoveq %rax, %rdx
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
leaq 0x78(%rsp), %rdi
callq 0x6548
leaq 0x50(%rsp), %rdi
jmp 0x7b792
movl 0x8(%r15), %esi
pushq $0x11
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
testb %al, %al
je 0x7b8b2
cmpq $0x0, 0x18(%rsp)
je 0x7b5dd
leaq 0x19ab8(%rip), %rsi     # 0x9508b
leaq 0x10(%rsp), %rdi
callq 0x64d0
movl 0x8(%r15), %esi
pushq $0xd
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
leaq 0x22742(%rip), %rcx     # 0x9dd37
leaq 0x22751(%rip), %rbx     # 0x9dd4d
testb %al, %al
cmovneq %rcx, %rbx
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
callq 0x64d0
cmpq $0x0, 0x18(%rsp)
je 0x7b65a
leaq 0x22684(%rip), %rsi     # 0x9dca2
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x625ff
leaq 0x22781(%rip), %rdx     # 0x9ddb5
leaq 0x30(%rsp), %rsi
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0xab3f
leaq 0x30(%rsp), %rdi
callq 0x6548
leaq 0x10(%rsp), %rdi
jmp 0x7b792
leaq 0x10(%rsp), %rdi
callq 0x6548
movq 0x98(%rsp), %rax
movl 0xb8(%rax), %eax
movl 0x64(%r15), %ecx
cmpl $0x4, %eax
jne 0x7b6f2
cmpl $0x3, %ecx
jne 0x7b6f2
testb %r12b, %r12b
je 0x7b7c7
movl 0x4(%rsp), %eax
orl $0x2, %eax
cmpl $0x16, %eax
jne 0x7b7ac
leaq 0x22602(%rip), %rsi     # 0x9dca2
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
movq 0x8(%rsp), %r15
movl 0x4(%rsp), %edx
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x226d5(%rip), %rdx     # 0x9ddb5
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
jmp 0x7b779
xorl $0x5, %eax
xorl $0x1, %ecx
orl %eax, %ecx
sete %al
andb %al, %r12b
cmpb $0x1, %r12b
jne 0x7b7ac
movl 0x4(%rsp), %eax
cmpl $0x1d, %eax
movq 0x8(%rsp), %r15
ja 0x7b395
movl $0x3d000000, %ecx       # imm = 0x3D000000
btl %eax, %ecx
jae 0x7b395
leaq 0x22571(%rip), %rsi     # 0x9dca2
leaq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rdx
callq 0x6100
movl 0x4(%rsp), %edx
leaq 0x50(%rsp), %rdi
movq %r14, %rsi
callq 0x7bb9c
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x50(%rsp), %rdx
callq 0x1743e
leaq 0x22649(%rip), %rdx     # 0x9ddb5
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0xab3f
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
movq %r15, %rax
addq $0x128, %rsp            # imm = 0x128
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x140d4(%rip), %rsi     # 0x8f887
leaq 0x10(%rsp), %rdx
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x6100
jmp 0x7b797
movl 0x8(%r15), %esi
movq %r14, %rdi
movl %ebp, %edx
xorl %ecx, %ecx
callq 0x7be18
movl %eax, %ebx
movl %eax, 0x10(%rsp)
movl 0x8(%r15), %esi
pushq $0x20
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
cmpl $-0x1, %ebx
je 0x7b840
testb %al, %al
je 0x7b87c
movl 0x8(%r15), %esi
pushq $0x20
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x12036
leaq 0x30(%rsp), %r8
movl %eax, (%r8)
leaq 0x2255b(%rip), %rsi     # 0x9dd76
leaq 0x2255e(%rip), %rcx     # 0x9dd80
leaq 0x224ae(%rip), %r9      # 0x9dcd7
leaq 0x10(%rsp), %rdx
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x81f6d
jmp 0x7b797
testb %al, %al
je 0x7b8a1
movl 0x8(%r15), %esi
pushq $0x20
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x12036
leaq 0x30(%rsp), %rdx
movl %eax, (%rdx)
leaq 0x22527(%rip), %rsi     # 0x9dd8a
leaq 0x2246d(%rip), %rcx     # 0x9dcd7
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x82073
jmp 0x7b797
leaq 0x224f3(%rip), %rsi     # 0x9dd76
leaq 0x2244d(%rip), %rcx     # 0x9dcd7
leaq 0x10(%rsp), %rdx
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0x81ff9
jmp 0x7b797
leaq 0x13fdf(%rip), %rsi     # 0x8f887
leaq 0x30(%rsp), %rdx
jmp 0x7b7b8
movl 0x8(%r15), %esi
pushq $0xd
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
callq 0x117ba
testb %al, %al
je 0x7b60f
leaq 0x2248e(%rip), %rbx     # 0x9dd60
cmpq $0x0, 0x18(%rsp)
je 0x7b602
leaq 0x197a6(%rip), %rsi     # 0x9508b
leaq 0x10(%rsp), %rdi
callq 0x64d0
jmp 0x7b602
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %r14
leaq 0x223a0(%rip), %rsi     # 0x9dca6
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6100
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0x6b492(%rip), %rsi     # 0xe6dc0
movq 0x6c6ab(%rip), %rdx     # 0xe7fe0
movq %r14, %rdi
callq 0x6490
jmp 0x7b988
pushq $0x10
popq %rdi
callq 0x6140
movq %rax, %r14
leaq 0x2238a(%rip), %rsi     # 0x9dcdb
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x6100
movb $0x1, %bpl
leaq 0x10(%rsp), %rsi
movq %r14, %rdi
callq 0x6f6e
xorl %ebp, %ebp
leaq 0x6b447(%rip), %rsi     # 0xe6dc0
movq 0x6c660(%rip), %rdx     # 0xe7fe0
movq %r14, %rdi
callq 0x6490
jmp 0x7bb64
jmp 0x7bb73
jmp 0x7bb82
jmp 0x7b9a0
jmp 0x7b9b7
jmp 0x7bb91
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
testb %bpl, %bpl
jne 0x7b9ba
jmp 0x7bb94
movq %rax, %rbx
movq %r14, %rdi
callq 0x6200
jmp 0x7bb94
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6548
jmp 0x7b9d9
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x6548
jmp 0x7b9eb
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
jmp 0x7bb47
jmp 0x7bb58
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6548
jmp 0x7ba0c
movq %rax, %rbx
leaq 0x108(%rsp), %rdi
callq 0x6548
jmp 0x7ba1e
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x6548
jmp 0x7ba2d
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x6548
jmp 0x7ba3f
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0x6548
leaq 0xc0(%rsp), %rdi
jmp 0x7bb47
movq %rax, %rbx
jmp 0x7ba4c
jmp 0x7bb58
jmp 0x7bb64
jmp 0x7bb73
jmp 0x7bb82
jmp 0x7bb91
jmp 0x7bb64
jmp 0x7bb73
jmp 0x7bb82
jmp 0x7bb91
jmp 0x7bb64
jmp 0x7bb73
jmp 0x7bb82
jmp 0x7bb91
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x7bab1
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0x6548
jmp 0x7bac3
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x7bad2
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6548
jmp 0x7bae1
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0x6548
leaq 0x78(%rsp), %rdi
jmp 0x7bb8a
movq %rax, %rbx
jmp 0x7baee
jmp 0x7bb91
jmp 0x7bb58
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x7bb16
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x7bb25
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
callq 0x6548
jmp 0x7bb34
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
jmp 0x7bb8a
jmp 0x7bb91
jmp 0x7bb58
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x7bb5b
jmp 0x7bb58
jmp 0x7bb64
jmp 0x7bb73
jmp 0x7bb82
jmp 0x7bb91
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x7bb8a
jmp 0x7bb91
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x7bb76
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6548
jmp 0x7bb85
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x6548
jmp 0x7bb94
movq %rax, %rbx
movq %rbx, %rdi
callq 0x64b0