// File: /workspace/github_cpp_makefile_star2_O1/rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::emit_entry_point_declarations()
void CompilerMSL::emit_entry_point_declarations()
{
	// FIXME: Get test coverage here ...

	// Emit constexpr samplers here.
	for (auto &samp : constexpr_samplers)
	{
		auto &var = get<SPIRVariable>(samp.first);
		auto &type = get<SPIRType>(var.basetype);
		if (type.basetype == SPIRType::Sampler)
			add_resource_name(samp.first);

		vector<string> args;
		auto &s = samp.second;

		if (s.coord != MSL_SAMPLER_COORD_NORMALIZED)
			args.push_back("coord::pixel");

		if (s.min_filter == s.mag_filter)
		{
			if (s.min_filter != MSL_SAMPLER_FILTER_NEAREST)
				args.push_back("filter::linear");
		}
		else
		{
			if (s.min_filter != MSL_SAMPLER_FILTER_NEAREST)
				args.push_back("min_filter::linear");
			if (s.mag_filter != MSL_SAMPLER_FILTER_NEAREST)
				args.push_back("mag_filter::linear");
		}

		switch (s.mip_filter)
		{
		case MSL_SAMPLER_MIP_FILTER_NONE:
			// Default
			break;
		case MSL_SAMPLER_MIP_FILTER_NEAREST:
			args.push_back("mip_filter::nearest");
			break;
		case MSL_SAMPLER_MIP_FILTER_LINEAR:
			args.push_back("mip_filter::linear");
			break;
		default:
			SPIRV_CROSS_THROW("Invalid mip filter.");
		}

		if (s.s_address == s.t_address && s.s_address == s.r_address)
		{
			if (s.s_address != MSL_SAMPLER_ADDRESS_CLAMP_TO_EDGE)
				args.push_back(create_sampler_address("", s.s_address));
		}
		else
		{
			if (s.s_address != MSL_SAMPLER_ADDRESS_CLAMP_TO_EDGE)
				args.push_back(create_sampler_address("s_", s.s_address));
			if (s.t_address != MSL_SAMPLER_ADDRESS_CLAMP_TO_EDGE)
				args.push_back(create_sampler_address("t_", s.t_address));
			if (s.r_address != MSL_SAMPLER_ADDRESS_CLAMP_TO_EDGE)
				args.push_back(create_sampler_address("r_", s.r_address));
		}

		if (s.compare_enable)
		{
			switch (s.compare_func)
			{
			case MSL_SAMPLER_COMPARE_FUNC_ALWAYS:
				args.push_back("compare_func::always");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_NEVER:
				args.push_back("compare_func::never");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_EQUAL:
				args.push_back("compare_func::equal");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_NOT_EQUAL:
				args.push_back("compare_func::not_equal");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_LESS:
				args.push_back("compare_func::less");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_LESS_EQUAL:
				args.push_back("compare_func::less_equal");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_GREATER:
				args.push_back("compare_func::greater");
				break;
			case MSL_SAMPLER_COMPARE_FUNC_GREATER_EQUAL:
				args.push_back("compare_func::greater_equal");
				break;
			default:
				SPIRV_CROSS_THROW("Invalid sampler compare function.");
			}
		}

		if (s.s_address == MSL_SAMPLER_ADDRESS_CLAMP_TO_BORDER || s.t_address == MSL_SAMPLER_ADDRESS_CLAMP_TO_BORDER ||
		    s.r_address == MSL_SAMPLER_ADDRESS_CLAMP_TO_BORDER)
		{
			switch (s.border_color)
			{
			case MSL_SAMPLER_BORDER_COLOR_OPAQUE_BLACK:
				args.push_back("border_color::opaque_black");
				break;
			case MSL_SAMPLER_BORDER_COLOR_OPAQUE_WHITE:
				args.push_back("border_color::opaque_white");
				break;
			case MSL_SAMPLER_BORDER_COLOR_TRANSPARENT_BLACK:
				args.push_back("border_color::transparent_black");
				break;
			default:
				SPIRV_CROSS_THROW("Invalid sampler border color.");
			}
		}

		if (s.anisotropy_enable)
			args.push_back(join("max_anisotropy(", s.max_anisotropy, ")"));
		if (s.lod_clamp_enable)
		{
			args.push_back(
			    join("lod_clamp(", convert_to_string(s.lod_clamp_min), ", ", convert_to_string(s.lod_clamp_max), ")"));
		}

		statement("constexpr sampler ",
		          type.basetype == SPIRType::SampledImage ? to_sampler_expression(samp.first) : to_name(samp.first),
		          "(", merge(args), ");");
	}

	// Emit buffer arrays here.
	for (uint32_t array_id : buffer_arrays)
	{
		const auto &var = get<SPIRVariable>(array_id);
		const auto &type = get<SPIRType>(var.basetype);
		string name = get_name(array_id);
		statement(get_argument_address_space(var) + " " + type_to_glsl(type) + "* " + name + "[] =");
		begin_scope();
		for (uint32_t i = 0; i < type.array[0]; ++i)
			statement(name + "_" + convert_to_string(i) + ",");
		end_scope_decl();
		statement("");
	}
	// For some reason, without this, we end up emitting the arrays twice.
	buffer_arrays.clear();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movq %rdi, %r13
movq 0x9d8(%rdi), %r14
testq %r14, %r14
movq %rdi, 0x108(%rsp)
je 0x8932b
movq %rsp, %r12
leaq 0x60(%rsp), %rbx
leaq 0x325f0(%rip), %r15     # 0xbb0bb
leaq 0x40(%rsp), %rbp
movl 0x8(%r14), %esi
movq %r13, %rdi
callq 0xb40a
movl 0xc(%rax), %esi
movq %r13, %rdi
callq 0xa426
movq %rax, 0xc0(%rsp)
cmpl $0xf, 0xc(%rax)
jne 0x88b01
movl 0x8(%r14), %esi
movq %r13, %rdi
callq 0x287ea
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
cmpl $0x0, 0xc(%r14)
je 0x88b5e
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38667(%rip), %rsi     # 0xc1193
leaq 0x3866c(%rip), %rdx     # 0xc119f
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88b5e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x10(%r14), %eax
cmpl 0x14(%r14), %eax
jne 0x88b9c
testl %eax, %eax
je 0x88c31
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38634(%rip), %rsi     # 0xc11b7
leaq 0x3863b(%rip), %rdx     # 0xc11c5
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88c16
testl %eax, %eax
je 0x88be5
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x385ed(%rip), %rsi     # 0xc11a0
leaq 0x385f8(%rip), %rdx     # 0xc11b2
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88be5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
cmpl $0x0, 0x14(%r14)
je 0x88c31
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x385b4(%rip), %rsi     # 0xc11b3
leaq 0x385bf(%rip), %rdx     # 0xc11c5
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88c31
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x18(%r14), %eax
testl %eax, %eax
je 0x88cb8
cmpl $0x2, %eax
je 0x88c73
cmpl $0x1, %eax
jne 0x899f0
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x3856c(%rip), %rsi     # 0xc11c6
leaq 0x38578(%rip), %rdx     # 0xc11d9
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88c9d
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38554(%rip), %rsi     # 0xc11da
leaq 0x3855f(%rip), %rdx     # 0xc11ec
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88cb8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x1c(%r14), %eax
cmpl 0x20(%r14), %eax
jne 0x88cf4
cmpl 0x24(%r14), %eax
jne 0x88cf4
cmpl $0x1, %eax
je 0x88dae
movl 0x1c(%r14), %edx
movq %r12, %rdi
leaq 0x2cbd0(%rip), %rsi     # 0xb58af
callq 0x89eda
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88d93
cmpl $0x1, %eax
je 0x88d32
movl 0x1c(%r14), %edx
movq %r12, %rdi
leaq 0x384fa(%rip), %rsi     # 0xc1201
callq 0x89eda
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88d32
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x20(%r14), %edx
cmpl $0x1, %edx
je 0x88d70
movq %r12, %rdi
leaq 0x35d6f(%rip), %rsi     # 0xbeab4
callq 0x89eda
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88d70
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movl 0x24(%r14), %edx
cmpl $0x1, %edx
je 0x88dae
movq %r12, %rdi
leaq 0x2c4d4(%rip), %rsi     # 0xb5257
callq 0x89eda
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88dae
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x3c(%r14)
jne 0x88f5f
movl 0x28(%r14), %eax
cmpq $0x7, %rax
ja 0x89ab3
leaq 0x37a72(%rip), %rcx     # 0xc0840
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x3842f(%rip), %rsi     # 0xc1219
leaq 0x3843b(%rip), %rdx     # 0xc122c
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38482(%rip), %rsi     # 0xc129b
leaq 0x38496(%rip), %rdx     # 0xc12b6
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38424(%rip), %rsi     # 0xc126c
leaq 0x38435(%rip), %rdx     # 0xc1284
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x3840e(%rip), %rsi     # 0xc1285
leaq 0x3841c(%rip), %rdx     # 0xc129a
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x3835e(%rip), %rsi     # 0xc1204
leaq 0x3836b(%rip), %rdx     # 0xc1218
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38384(%rip), %rsi     # 0xc1259
leaq 0x3838f(%rip), %rdx     # 0xc126b
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x3832c(%rip), %rsi     # 0xc122d
leaq 0x38338(%rip), %rdx     # 0xc1240
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x88f44
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38314(%rip), %rsi     # 0xc1241
leaq 0x38324(%rip), %rdx     # 0xc1258
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x88f5f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
cmpl $0x2, 0x1c(%r14)
je 0x88f78
cmpl $0x2, 0x20(%r14)
je 0x88f78
cmpl $0x2, 0x24(%r14)
jne 0x8902b
movl 0x2c(%r14), %eax
testl %eax, %eax
je 0x88fe6
cmpl $0x2, %eax
je 0x88fba
cmpl $0x1, %eax
jne 0x89a53
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38338(%rip), %rsi     # 0xc12d9
leaq 0x3834b(%rip), %rdx     # 0xc12f3
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x89010
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38327(%rip), %rsi     # 0xc12f4
leaq 0x3833a(%rip), %rdx     # 0xc130e
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
jmp 0x89010
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r12, %rdi
leaq 0x38316(%rip), %rsi     # 0xc130f
leaq 0x3832e(%rip), %rdx     # 0xc132e
callq 0x7c64
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x8902b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x3e(%r14)
jne 0x89072
leaq 0x38(%r14), %rdx
movq %r12, %rdi
leaq 0x3830d(%rip), %rsi     # 0xc134d
leaq 0x329de(%rip), %rcx     # 0xbba25
callq 0xa3eff
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x89072
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
cmpb $0x1, 0x3d(%r14)
jne 0x8922a
xorps %xmm0, %xmm0
cvtss2sd 0x30(%r14), %xmm0
movq %r12, %rdi
leaq 0x32ca3(%rip), %rsi     # 0xbbd33
movb $0x1, %al
callq 0x6060
movq %r12, %rdi
movl $0x2e, %esi
callq 0x60e0
testq %rax, %rax
jne 0x890ce
movq %r12, %rdi
movl $0x65, %esi
callq 0x60e0
testq %rax, %rax
jne 0x890ce
movq %r12, %rdi
callq 0x6120
movw $0x302e, (%rsp,%rax)    # imm = 0x302E
movb $0x0, 0x2(%rsp,%rax)
leaq 0x90(%rsp), %rax
movq %rax, 0x80(%rsp)
movq %r12, %rdi
callq 0x6120
leaq (%rsp,%rax), %rdx
leaq 0x80(%rsp), %rdi
movq %r12, %rsi
callq 0x7c64
xorps %xmm0, %xmm0
cvtss2sd 0x34(%r14), %xmm0
movq %r12, %rdi
leaq 0x32c26(%rip), %rsi     # 0xbbd33
movb $0x1, %al
callq 0x6060
movq %r12, %rdi
movl $0x2e, %esi
callq 0x60e0
testq %rax, %rax
jne 0x8914b
movq %r12, %rdi
movl $0x65, %esi
callq 0x60e0
testq %rax, %rax
jne 0x8914b
movq %r12, %rdi
callq 0x6120
movw $0x302e, (%rsp,%rax)    # imm = 0x302E
movb $0x0, 0x2(%rsp,%rax)
leaq 0xb0(%rsp), %rax
movq %rax, 0xa0(%rsp)
movq %r12, %rdi
callq 0x6120
leaq (%rsp,%rax), %rdx
leaq 0xa0(%rsp), %r15
movq %r15, %rdi
movq %r12, %rbp
movq %r12, %rsi
callq 0x7c64
leaq 0x40(%rsp), %r12
movq %r12, %rdi
leaq 0x381d1(%rip), %rsi     # 0xc135d
leaq 0x80(%rsp), %rdx
leaq 0x31f20(%rip), %rcx     # 0xbb0bb
movq %r15, %r8
leaq 0x32880(%rip), %r9      # 0xbba25
callq 0xa3f9b
movq %rbx, %rdi
movq %r12, %rsi
callq 0xebe6
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
leaq 0x31ef2(%rip), %r15     # 0xbb0bb
je 0x891d8
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
movq %rbp, %r12
je 0x89200
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
leaq 0x40(%rsp), %rbp
je 0x8922a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xc0(%rsp), %rax
cmpl $0xe, 0xc(%rax)
movl 0x8(%r14), %edx
jne 0x89249
movq %r12, %rdi
movq %r13, %rsi
callq 0x89ff8
jmp 0x8925b
movq (%r13), %rax
movq %r12, %rdi
movq %r13, %rsi
movl $0x1, %ecx
callq *0x38(%rax)
leaq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x48(%rsp)
movb $0x0, 0x50(%rsp)
movq 0x60(%rsp), %rbx
movq 0x68(%rsp), %r13
cmpq %r13, %rbx
je 0x892b0
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq %rbp, %rdi
callq 0x60b0
movq 0x68(%rsp), %rax
addq $-0x20, %rax
cmpq %rax, %rbx
je 0x892aa
movq %rbp, %rdi
movq %r15, %rsi
callq 0x64e0
addq $0x20, %rbx
jmp 0x8927d
movq 0x108(%rsp), %r13
movq %r13, %rdi
leaq 0x380a6(%rip), %rsi     # 0xc1368
movq %r12, %rdx
leaq 0x3a9d5(%rip), %rcx     # 0xc3ca1
movq %rbp, %r8
leaq 0x36812(%rip), %r9      # 0xbfae8
callq 0xa4050
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
leaq 0x60(%rsp), %rbx
je 0x892fc
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x89317
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movq %rbx, %rdi
callq 0xda64
movq (%r14), %r14
testq %r14, %r14
jne 0x88ad0
movq 0xa00(%r13), %rax
movq 0xa08(%r13), %rcx
movq %rcx, 0x110(%rsp)
cmpq %rcx, %rax
je 0x899c7
leaq 0xa0(%rsp), %r12
movl $0xd1b71759, %ebx       # imm = 0xD1B71759
movq %rax, 0xc0(%rsp)
movl (%rax), %ebp
movq %r13, %rdi
movl %ebp, %esi
callq 0xb40a
movq %rax, %r14
movl 0xc(%rax), %esi
movq %r13, %rdi
callq 0xa426
movq %rax, %r15
movq %r13, %rdi
movl %ebp, %esi
callq 0x14eba
leaq 0x10(%rsp), %rcx
movq %rcx, (%rsp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0xe480
leaq 0x118(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x8a250
movq %rbp, %rdi
leaq 0x2c4ed(%rip), %rsi     # 0xb58ae
callq 0x64e0
leaq 0xd8(%rsp), %rbp
movq %rbp, 0xc8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x108(%rsp), %r13
leaq 0xb0(%rsp), %r14
je 0x8940a
movq %rdx, 0xc8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xd8(%rsp)
jmp 0x89411
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0xd0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%r13), %rax
leaq 0xe8(%rsp), %rdi
movq %r13, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq *0x98(%rax)
movq 0xc8(%rsp), %rcx
movl $0xf, %esi
cmpq %rbp, %rcx
je 0x89460
movq 0xd8(%rsp), %rsi
movq 0xd0(%rsp), %r8
movq 0xf0(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x8949d
movl $0xf, %esi
leaq 0xf8(%rsp), %rdi
cmpq %rdi, 0xe8(%rsp)
je 0x89498
movq 0xf8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x894b4
movq 0xe8(%rsp), %rsi
leaq 0xc8(%rsp), %rdi
callq 0x60b0
jmp 0x894c5
leaq 0xe8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
leaq 0x70(%rsp), %rsi
movq %rsi, 0x60(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x894ea
movq %rdx, 0x60(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x70(%rsp)
jmp 0x894f0
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x68(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x60(%rsp), %rdi
leaq 0x3103c(%rip), %rsi     # 0xba555
callq 0x64e0
movq %r14, 0xa0(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8954a
movq %rdx, 0xa0(%rsp)
movq (%rcx), %rdx
movq %rdx, 0xb0(%rsp)
jmp 0x89551
movups (%rcx), %xmm0
movups %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0xa8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r12, %rdi
callq 0x60b0
leaq 0x90(%rsp), %rsi
movq %rsi, 0x80(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x895b1
movq %rdx, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0x895b7
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x80(%rsp), %rdi
leaq 0x37d9a(%rip), %rsi     # 0xc137b
callq 0x64e0
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x8960e
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x89614
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
callq 0xa4208
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x89655
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x8967a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x89697
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x896b3
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x896d8
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x896f5
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x8971a
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x6260
movq %r13, %rdi
callq 0x28804
movq 0x20(%r15), %rax
cmpl $0x0, (%rax)
je 0x8997b
xorl %ebp, %ebp
movq %r14, 0xa0(%rsp)
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0xe480
movq %r12, %rdi
leaq 0x35858(%rip), %rsi     # 0xbefaf
callq 0x64e0
movl $0x1, %eax
cmpl $0xa, %ebp
jb 0x897a5
movl $0x4, %eax
movl %ebp, %ecx
cmpl $0x63, %ecx
jbe 0x8979e
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x897a3
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x897a5
movl %ecx, %edx
imulq %rbx, %rdx
shrq $0x2d, %rdx
addl $0x4, %eax
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x8976d
addl $-0x3, %eax
jmp 0x897a5
addl $-0x2, %eax
jmp 0x897a5
decl %eax
movl %eax, %esi
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
leaq 0x60(%rsp), %rdi
xorl %edx, %edx
callq 0x62f0
movq 0x60(%rsp), %rdi
movl 0x68(%rsp), %esi
movl %ebp, %edx
callq 0x21251
movq 0xa0(%rsp), %rcx
movl $0xf, %esi
cmpq %r14, %rcx
je 0x897e7
movq 0xb0(%rsp), %rsi
movq 0xa8(%rsp), %r8
movq 0x68(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
jbe 0x89818
movl $0xf, %esi
leaq 0x70(%rsp), %rdi
cmpq %rdi, 0x60(%rsp)
je 0x89813
movq 0x70(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x89827
movq 0x60(%rsp), %rsi
movq %r12, %rdi
callq 0x60b0
jmp 0x89835
leaq 0x60(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x62c0
leaq 0x90(%rsp), %rsi
movq %rsi, 0x80(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0x89866
movq %rdx, 0x80(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x90(%rsp)
jmp 0x8986c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x88(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x80(%rsp), %rdi
leaq 0x39122(%rip), %rsi     # 0xc29bd
callq 0x64e0
leaq 0x50(%rsp), %rsi
movq %rsi, 0x40(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x898c8
movq %rdx, 0x40(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x50(%rsp)
jmp 0x898ce
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x48(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r13, %rdi
leaq 0x40(%rsp), %rsi
callq 0xa4208
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x8990f
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x89934
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x89950
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x8996d
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
incl %ebp
movq 0x20(%r15), %rax
cmpl (%rax), %ebp
jb 0x89731
movq %r13, %rdi
callq 0x2889c
movq %r13, %rdi
leaq 0x2bf22(%rip), %rsi     # 0xb58af
callq 0xa700
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x899ad
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xc0(%rsp), %rax
addq $0x4, %rax
cmpq 0x110(%rsp), %rax
jne 0x89357
movq 0xa00(%r13), %rax
cmpq %rax, 0xa08(%r13)
je 0x899de
movq %rax, 0xa08(%r13)
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
leaq 0x377de(%rip), %rsi     # 0xc11ed
leaq 0x377ea(%rip), %rdx     # 0xc1200
callq 0x7c64
movb $0x1, %bl
movq %rsp, %rsi
movq %r14, %rdi
callq 0x6320
leaq 0x73369(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebx, %ebx
leaq 0x73341(%rip), %rsi     # 0xfcd80
movq 0x74592(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x89b11
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
leaq 0x378bd(%rip), %rsi     # 0xc132f
leaq 0x378d3(%rip), %rdx     # 0xc134c
callq 0x7c64
movb $0x1, %bl
movq %rsp, %rsi
movq %r14, %rdi
callq 0x6320
leaq 0x73306(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebx, %ebx
leaq 0x732de(%rip), %rsi     # 0xfcd80
movq 0x7452f(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x89b11
movl $0x10, %edi
callq 0x6140
movq %rax, %r14
movq %rsp, %rdi
leaq 0x10(%rsp), %rax
movq %rax, (%rdi)
leaq 0x377e5(%rip), %rsi     # 0xc12b7
leaq 0x377ff(%rip), %rdx     # 0xc12d8
callq 0x7c64
movb $0x1, %bl
movq %rsp, %rsi
movq %r14, %rdi
callq 0x6320
leaq 0x732a6(%rip), %rax     # 0xfcd98
addq $0x10, %rax
movq %rax, (%r14)
xorl %ebx, %ebx
leaq 0x7327e(%rip), %rsi     # 0xfcd80
movq 0x744cf(%rip), %rdx     # 0xfdfd8
movq %r14, %rdi
callq 0x6470
jmp 0x89b8a
jmp 0x89baa
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89b8a
jmp 0x89baa
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
movq %rax, %r15
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x89baf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89baf
movq %rax, %r15
movb $0x1, %bl
testb %bl, %bl
je 0x89ec8
movq %r14, %rdi
callq 0x6200
jmp 0x89ec8
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89dd4
jmp 0x89ca6
jmp 0x89ca6
movq %rax, %r15
jmp 0x89c7b
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x89c56
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89c56
jmp 0x89dd4
jmp 0x89dd4
movq %rax, %r15
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x89c7b
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x89ec8
movq 0x90(%rsp), %rsi
jmp 0x89ec0
jmp 0x89dd4
movq %rax, %r15
jmp 0x89ead
jmp 0x89e4c
movq %rax, %r15
jmp 0x89da9
movq %rax, %r15
jmp 0x89d8c
movq %rax, %r15
jmp 0x89d5f
movq %rax, %r15
jmp 0x89d43
movq %rax, %r15
jmp 0x89d1e
movq %rax, %r15
jmp 0x89cf9
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x89cf9
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0x89d1e
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0x89d43
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x89d5f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x89d84
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0xd8(%rsp), %rbp
movq 0xc8(%rsp), %rdi
cmpq %rbp, %rdi
je 0x89da9
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x6260
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rax
cmpq %rax, %rdi
je 0x89e71
movq 0x128(%rsp), %rsi
jmp 0x89e69
jmp 0x89e8e
movq %rax, %r15
jmp 0x89ec8
jmp 0x89e4c
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x89e02
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89e02
movq %rax, %r15
leaq 0x90(%rsp), %rax
movq 0x80(%rsp), %rdi
cmpq %rax, %rdi
je 0x89e2e
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89e2e
jmp 0x89e51
movq %rax, %r15
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x89e54
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89e54
movq %rax, %r15
jmp 0x89e71
movq %rax, %r15
movq 0xa0(%rsp), %rdi
cmpq %r14, %rdi
je 0x89e71
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x6260
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x89ed2
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
jmp 0x89ed2
movq %rax, %r15
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x89ead
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x6260
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x89ec8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x6260
leaq 0x60(%rsp), %rdi
callq 0xda64
movq %r15, %rdi
callq 0x64a0