// File: rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::entry_point_args[abi:cxx11](bool)
string CompilerMSL::entry_point_args(bool append_comma)
{
	string ep_args;

	// Stage-in structure
	if (stage_in_var_id)
	{
		auto &var = get<SPIRVariable>(stage_in_var_id);
		auto &type = get<SPIRType>(var.basetype);

		if (!ep_args.empty())
			ep_args += ", ";

		ep_args += type_to_glsl(type) + " " + to_name(var.self) + " [[stage_in]]";
	}

	// Output resources, sorted by resource index & type
	// We need to sort to work around a bug on macOS 10.13 with NVidia drivers where switching between shaders
	// with different order of buffers can result in issues with buffer assignments inside the driver.
	struct Resource
	{
		Variant *id;
		string name;
		SPIRType::BaseType basetype;
		uint32_t index;
	};

	vector<Resource> resources;

	for (auto &id : ir.ids)
	{
		if (id.get_type() == TypeVariable)
		{
			auto &var = id.get<SPIRVariable>();
			auto &type = get<SPIRType>(var.basetype);

			uint32_t var_id = var.self;

			if ((var.storage == StorageClassUniform || var.storage == StorageClassUniformConstant ||
			     var.storage == StorageClassPushConstant || var.storage == StorageClassStorageBuffer) &&
			    !is_hidden_variable(var))
			{
				if (type.basetype == SPIRType::SampledImage)
				{
					resources.push_back(
					    { &id, to_name(var_id), SPIRType::Image, get_metal_resource_index(var, SPIRType::Image) });

					if (type.image.dim != DimBuffer && constexpr_samplers.count(var_id) == 0)
					{
						resources.push_back({ &id, to_sampler_expression(var_id), SPIRType::Sampler,
						                      get_metal_resource_index(var, SPIRType::Sampler) });
					}
				}
				else if (constexpr_samplers.count(var_id) == 0)
				{
					// constexpr samplers are not declared as resources.
					resources.push_back(
					    { &id, to_name(var_id), type.basetype, get_metal_resource_index(var, type.basetype) });
				}
			}
		}
	}

	std::sort(resources.begin(), resources.end(), [](const Resource &lhs, const Resource &rhs) {
		return tie(lhs.basetype, lhs.index) < tie(rhs.basetype, rhs.index);
	});

	for (auto &r : resources)
	{
		auto &var = r.id->get<SPIRVariable>();
		auto &type = get<SPIRType>(var.basetype);

		uint32_t var_id = var.self;

		switch (r.basetype)
		{
		case SPIRType::Struct:
		{
			auto &m = ir.meta.at(type.self);
			if (m.members.size() == 0)
				break;
			if (!type.array.empty())
			{
				if (type.array.size() > 1)
					SPIRV_CROSS_THROW("Arrays of arrays of buffers are not supported.");

				// Metal doesn't directly support this, so we must expand the
				// array. We'll declare a local array to hold these elements
				// later.
				uint32_t array_size =
				    type.array_size_literal.back() ? type.array.back() : get<SPIRConstant>(type.array.back()).scalar();

				if (array_size == 0)
					SPIRV_CROSS_THROW("Unsized arrays of buffers are not supported in MSL.");

				buffer_arrays.push_back(var_id);
				for (uint32_t i = 0; i < array_size; ++i)
				{
					if (!ep_args.empty())
						ep_args += ", ";
					ep_args += get_argument_address_space(var) + " " + type_to_glsl(type) + "* " + r.name + "_" +
					           convert_to_string(i);
					ep_args += " [[buffer(" + convert_to_string(r.index + i) + ")]]";
				}
			}
			else
			{
				if (!ep_args.empty())
					ep_args += ", ";
				ep_args += get_argument_address_space(var) + " " + type_to_glsl(type) + "& " + r.name;
				ep_args += " [[buffer(" + convert_to_string(r.index) + ")]]";
			}
			break;
		}
		case SPIRType::Sampler:
			if (!ep_args.empty())
				ep_args += ", ";
			ep_args += sampler_type(type) + " " + r.name;
			ep_args += " [[sampler(" + convert_to_string(r.index) + ")]]";
			break;
		case SPIRType::Image:
			if (!ep_args.empty())
				ep_args += ", ";
			ep_args += image_type_glsl(type, var_id) + " " + r.name;
			ep_args += " [[texture(" + convert_to_string(r.index) + ")]]";
			break;
		default:
			SPIRV_CROSS_THROW("Unexpected resource type");
			break;
		}
	}

	// Builtin variables
	for (auto &id : ir.ids)
	{
		if (id.get_type() == TypeVariable)
		{
			auto &var = id.get<SPIRVariable>();

			uint32_t var_id = var.self;
			BuiltIn bi_type = ir.meta[var_id].decoration.builtin_type;

			// Don't emit SamplePosition as a separate parameter. In the entry
			// point, we get that by calling get_sample_position() on the sample ID.
			if (var.storage == StorageClassInput && is_builtin_variable(var))
			{
				if (bi_type != BuiltInSamplePosition)
				{
					if (!ep_args.empty())
						ep_args += ", ";

					ep_args += builtin_type_decl(bi_type) + " " + to_expression(var_id);
					ep_args += " [[" + builtin_qualifier(bi_type) + "]]";
				}
				else
				{
					auto &entry_func = get<SPIRFunction>(ir.default_entry_point);
					entry_func.fixup_hooks_in.push_back([=]() {
						statement(builtin_type_decl(bi_type), " ", to_expression(var_id), " = get_sample_position(",
						          to_expression(builtin_sample_id_id), ");");
					});
				}
			}
		}
	}

	// Vertex and instance index built-ins
	if (needs_vertex_idx_arg)
		ep_args += built_in_func_arg(BuiltInVertexIndex, !ep_args.empty());

	if (needs_instance_idx_arg)
		ep_args += built_in_func_arg(BuiltInInstanceIndex, !ep_args.empty());

	if (!ep_args.empty() && append_comma)
		ep_args += ", ";

	return ep_args;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9a0, %rsp            # imm = 0x9A0
movq %rdi, -0x860(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x858(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x850(%rbp)
movb $0x0, -0x12(%rbp)
callq 0x7530
movq -0x850(%rbp), %rax
cmpl $0x0, 0x92c(%rax)
je 0x100c83
movq -0x850(%rbp), %rdi
movl 0x92c(%rdi), %esi
callq 0xfec0
movq %rax, -0x868(%rbp)
jmp 0x100abe
movq -0x850(%rbp), %rdi
movq -0x868(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x870(%rbp)
jmp 0x100ae5
movq -0x860(%rbp), %rdi
movq -0x870(%rbp), %rax
movq %rax, -0x38(%rbp)
callq 0x75f0
testb $0x1, %al
jne 0x100b28
movq -0x860(%rbp), %rdi
leaq 0x43a81(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x100b15
jmp 0x100b28
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x102661
movq -0x850(%rbp), %rsi
movq -0x38(%rbp), %rdx
movq (%rsi), %rax
movq 0x98(%rax), %rax
leaq -0xb8(%rbp), %rdi
xorl %ecx, %ecx
callq *%rax
jmp 0x100b4a
leaq 0x3dd4c(%rip), %rdx     # 0x13e89d
leaq -0x98(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x11910
jmp 0x100b66
movq -0x850(%rbp), %rsi
movq -0x20(%rbp), %rax
movl 0x8(%rax), %edx
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0xd8(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x100b8b
leaq -0x78(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x2f7f0
jmp 0x100ba4
leaq 0x4c93d(%rip), %rdx     # 0x14d4e8
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x11910
jmp 0x100bba
movq -0x860(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x7470
jmp 0x100bcc
leaq -0x58(%rbp), %rdi
callq 0x7708
leaq -0x78(%rbp), %rdi
callq 0x7708
leaq -0xd8(%rbp), %rdi
callq 0x7708
leaq -0x98(%rbp), %rdi
callq 0x7708
leaq -0xb8(%rbp), %rdi
callq 0x7708
jmp 0x100c83
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x100c72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x100c66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x100c5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x100c51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x7708
leaq -0x78(%rbp), %rdi
callq 0x7708
leaq -0xd8(%rbp), %rdi
callq 0x7708
leaq -0x98(%rbp), %rdi
callq 0x7708
leaq -0xb8(%rbp), %rdi
callq 0x7708
jmp 0x102661
leaq -0xf0(%rbp), %rdi
callq 0x10a1d0
movq -0x850(%rbp), %rax
addq $0x8, %rax
addq $0x18, %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xf940
movq %rax, -0x100(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xf970
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xf9a0
testb $0x1, %al
jne 0x100ce7
jmp 0x101138
leaq -0x100(%rbp), %rdi
callq 0xf9e0
movq %rax, -0x110(%rbp)
movq -0x110(%rbp), %rdi
callq 0xfa00
movl %eax, -0x874(%rbp)
jmp 0x100d0e
movl -0x874(%rbp), %eax
cmpl $0x2, %eax
jne 0x101125
movq -0x110(%rbp), %rdi
callq 0xfd10
movq %rax, -0x880(%rbp)
jmp 0x100d32
movq -0x850(%rbp), %rdi
movq -0x880(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x888(%rbp)
jmp 0x100d5f
movq -0x888(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x118(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x124(%rbp)
movq -0x118(%rbp), %rax
cmpl $0x2, 0x10(%rax)
je 0x100db5
movq -0x118(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x100db5
movq -0x118(%rbp), %rax
cmpl $0x9, 0x10(%rax)
je 0x100db5
movq -0x118(%rbp), %rax
cmpl $0xc, 0x10(%rax)
jne 0x101123
movq -0x850(%rbp), %rdi
movq -0x118(%rbp), %rsi
xorl %edx, %edx
callq 0x20460
movb %al, -0x889(%rbp)
jmp 0x100dd2
movb -0x889(%rbp), %al
testb $0x1, %al
jne 0x101123
jmp 0x100de2
movq -0x120(%rbp), %rax
cmpl $0xe, 0xc(%rax)
jne 0x101003
movq -0x850(%rbp), %rsi
movq -0x110(%rbp), %rax
movq %rax, -0x158(%rbp)
leaq -0x150(%rbp), %rdi
movq %rdi, -0x898(%rbp)
movl -0x124(%rbp), %edx
movq (%rsi), %rax
movq 0x38(%rax), %rax
movl $0x1, %ecx
callq *%rax
jmp 0x100e2c
movq -0x850(%rbp), %rdi
movl $0xd, -0x130(%rbp)
leaq -0x12c(%rbp), %rax
movq %rax, -0x8a8(%rbp)
movq -0x118(%rbp), %rsi
movl $0xd, %edx
callq 0x1061b0
movl %eax, -0x89c(%rbp)
jmp 0x100e64
movq -0x8a8(%rbp), %rax
movl -0x89c(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xf0(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x10a1f0
jmp 0x100e88
leaq -0x158(%rbp), %rdi
callq 0x10a220
movq -0x120(%rbp), %rax
cmpl $0x5, 0x84(%rax)
je 0x100ffe
movq -0x850(%rbp), %rdi
addq $0x9c8, %rdi            # imm = 0x9C8
leaq -0x124(%rbp), %rsi
callq 0x117970
movq %rax, -0x8b0(%rbp)
jmp 0x100ecb
movq -0x8b0(%rbp), %rax
cmpq $0x0, %rax
jne 0x100ffe
movq -0x850(%rbp), %rsi
movq -0x110(%rbp), %rax
movq %rax, -0x188(%rbp)
leaq -0x180(%rbp), %rdi
movq %rdi, -0x8b8(%rbp)
movl -0x124(%rbp), %edx
callq 0xf3250
jmp 0x100f0c
movq -0x850(%rbp), %rdi
movl $0xf, -0x160(%rbp)
leaq -0x15c(%rbp), %rax
movq %rax, -0x8c8(%rbp)
movq -0x118(%rbp), %rsi
movl $0xf, %edx
callq 0x1061b0
movl %eax, -0x8bc(%rbp)
jmp 0x100f44
movq -0x8c8(%rbp), %rax
movl -0x8bc(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xf0(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x10a1f0
jmp 0x100f68
leaq -0x188(%rbp), %rdi
callq 0x10a220
jmp 0x100ffe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x102637
movq -0x898(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x10a220
jmp 0x102637
movq -0x8b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x10a220
jmp 0x102637
jmp 0x101121
movq -0x850(%rbp), %rdi
addq $0x9c8, %rdi            # imm = 0x9C8
leaq -0x124(%rbp), %rsi
callq 0x117970
movq %rax, -0x8d0(%rbp)
jmp 0x101026
movq -0x8d0(%rbp), %rax
cmpq $0x0, %rax
jne 0x10111f
movq -0x850(%rbp), %rsi
movq -0x110(%rbp), %rax
movq %rax, -0x1b8(%rbp)
leaq -0x1b0(%rbp), %rdi
movq %rdi, -0x8d8(%rbp)
movl -0x124(%rbp), %edx
movq (%rsi), %rax
movq 0x38(%rax), %rax
movl $0x1, %ecx
callq *%rax
jmp 0x101070
movq -0x850(%rbp), %rdi
movq -0x120(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x190(%rbp)
leaq -0x18c(%rbp), %rax
movq %rax, -0x8e8(%rbp)
movq -0x118(%rbp), %rsi
movq -0x120(%rbp), %rax
movl 0xc(%rax), %edx
callq 0x1061b0
movl %eax, -0x8dc(%rbp)
jmp 0x1010b3
movq -0x8e8(%rbp), %rax
movl -0x8dc(%rbp), %ecx
movl %ecx, (%rax)
leaq -0xf0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x10a1f0
jmp 0x1010d7
leaq -0x1b8(%rbp), %rdi
callq 0x10a220
jmp 0x10111f
movq -0x8d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x10a220
jmp 0x102637
jmp 0x101121
jmp 0x101123
jmp 0x101125
jmp 0x101127
leaq -0x100(%rbp), %rdi
callq 0xfbd0
jmp 0x100ccb
leaq -0xf0(%rbp), %rdi
movq %rdi, -0x8f0(%rbp)
callq 0x10a280
movq -0x8f0(%rbp), %rdi
movq %rax, -0x1c0(%rbp)
callq 0x10a2b0
movq %rax, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
callq 0x10a240
jmp 0x10117a
leaq -0xf0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x10a280
movq %rax, -0x1e0(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x10a2b0
movq %rax, -0x1e8(%rbp)
leaq -0x1e0(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0x10a2e0
testb $0x1, %al
jne 0x1011ca
jmp 0x1020d2
leaq -0x1e0(%rbp), %rdi
callq 0x10a320
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
movq (%rax), %rdi
callq 0xfd10
movq %rax, -0x8f8(%rbp)
jmp 0x1011f5
movq -0x850(%rbp), %rdi
movq -0x8f8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x900(%rbp)
jmp 0x101222
movq -0x900(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0x1f8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x204(%rbp)
movq -0x1f0(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, -0x904(%rbp)
subl $0xc, %eax
je 0x10127c
jmp 0x101257
movl -0x904(%rbp), %eax
subl $0xd, %eax
je 0x101df9
jmp 0x101268
movl -0x904(%rbp), %eax
subl $0xf, %eax
je 0x101c10
jmp 0x101fef
movq -0x850(%rbp), %rdi
addq $0x38, %rdi
movq -0x200(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0x2f5c0
movq %rax, -0x910(%rbp)
jmp 0x1012a1
movq -0x910(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rdi
addq $0xd0, %rdi
callq 0x2eca0
cmpq $0x0, %rax
jne 0x1012cd
jmp 0x1020bf
movq -0x200(%rbp), %rdi
addq $0x20, %rdi
callq 0x8690
testb $0x1, %al
jne 0x101950
movq -0x200(%rbp), %rdi
addq $0x20, %rdi
callq 0x8650
cmpq $0x1, %rax
jbe 0x1013cf
movb $0x1, -0x232(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x920(%rbp)
leaq -0x231(%rbp), %rdi
movq %rdi, -0x918(%rbp)
callq 0x7650
movq -0x918(%rbp), %rdx
leaq 0x4c1be(%rip), %rsi     # 0x14d4f6
leaq -0x230(%rbp), %rdi
callq 0x7520
jmp 0x101346
movq -0x920(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x9c50
jmp 0x10135b
movq -0x920(%rbp), %rdi
movb $0x0, -0x232(%rbp)
leaq 0xaca68(%rip), %rsi     # 0x1addd8
leaq -0xf76e7(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x102676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1013a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x7708
leaq -0x231(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x232(%rbp)
jne 0x1013be
jmp 0x1013ca
movq -0x920(%rbp), %rdi
callq 0x72c0
jmp 0x102637
movq -0x200(%rbp), %rdi
addq $0x38, %rdi
callq 0x327d0
movq %rdx, -0x930(%rbp)
movq %rax, -0x928(%rbp)
jmp 0x1013ef
movq -0x930(%rbp), %rax
movq -0x928(%rbp), %rcx
movq %rcx, -0x248(%rbp)
movq %rax, -0x240(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x1d8d0
testb $0x1, %al
jne 0x10141d
jmp 0x101437
movq -0x200(%rbp), %rdi
addq $0x20, %rdi
callq 0x32840
movl (%rax), %eax
movl %eax, -0x934(%rbp)
jmp 0x101484
movq -0x200(%rbp), %rdi
addq $0x20, %rdi
callq 0x32840
movq -0x850(%rbp), %rdi
movl (%rax), %esi
callq 0x31910
movq %rax, -0x940(%rbp)
jmp 0x10145e
movq -0x940(%rbp), %rdi
xorl %edx, %edx
movl %edx, %esi
callq 0x2f560
movl %eax, -0x944(%rbp)
jmp 0x101476
movl -0x944(%rbp), %eax
movl %eax, -0x934(%rbp)
jmp 0x101484
movl -0x934(%rbp), %eax
movl %eax, -0x238(%rbp)
cmpl $0x0, -0x238(%rbp)
jne 0x10156d
movb $0x1, -0x26a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x958(%rbp)
leaq -0x269(%rbp), %rdi
movq %rdi, -0x950(%rbp)
callq 0x7650
movq -0x950(%rbp), %rdx
leaq 0x4c04f(%rip), %rsi     # 0x14d525
leaq -0x268(%rbp), %rdi
callq 0x7520
jmp 0x1014e4
movq -0x958(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x9c50
jmp 0x1014f9
movq -0x958(%rbp), %rdi
movb $0x0, -0x26a(%rbp)
leaq 0xac8ca(%rip), %rsi     # 0x1addd8
leaq -0xf7885(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x102676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101545
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x7708
leaq -0x269(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x26a(%rbp)
jne 0x10155c
jmp 0x101568
movq -0x958(%rbp), %rdi
callq 0x72c0
jmp 0x102637
movq -0x850(%rbp), %rdi
addq $0xa00, %rdi            # imm = 0xA00
leaq -0x204(%rbp), %rsi
callq 0x88f0
jmp 0x101589
movl $0x0, -0x270(%rbp)
movl -0x270(%rbp), %eax
cmpl -0x238(%rbp), %eax
jae 0x10194b
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x1015cc
movq -0x860(%rbp), %rdi
leaq 0x42fcc(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x1015ca
jmp 0x1015cc
movq -0x850(%rbp), %rsi
movq -0x1f8(%rbp), %rdx
leaq -0x350(%rbp), %rdi
callq 0xf34c0
jmp 0x1015e8
leaq 0x3d2ae(%rip), %rdx     # 0x13e89d
leaq -0x330(%rbp), %rdi
leaq -0x350(%rbp), %rsi
callq 0x11910
jmp 0x101604
movq -0x850(%rbp), %rsi
movq -0x200(%rbp), %rdx
movq (%rsi), %rax
movq 0x98(%rax), %rax
leaq -0x370(%rbp), %rdi
xorl %ecx, %ecx
callq *%rax
jmp 0x101629
leaq -0x310(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x370(%rbp), %rdx
callq 0x2f7f0
jmp 0x101645
leaq 0x423dd(%rip), %rdx     # 0x143a29
leaq -0x2f0(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x11910
jmp 0x101661
movq -0x1f0(%rbp), %rdx
addq $0x8, %rdx
leaq -0x2d0(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0xa1530
jmp 0x101681
leaq 0x46e96(%rip), %rdx     # 0x14851e
leaq -0x2b0(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x11910
jmp 0x10169d
leaq -0x390(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x2f940
jmp 0x1016b2
leaq -0x290(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
leaq -0x390(%rbp), %rdx
callq 0x2f7f0
jmp 0x1016ce
movq -0x860(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x7470
jmp 0x1016e3
leaq -0x290(%rbp), %rdi
callq 0x7708
leaq -0x390(%rbp), %rdi
callq 0x7708
leaq -0x2b0(%rbp), %rdi
callq 0x7708
leaq -0x2d0(%rbp), %rdi
callq 0x7708
leaq -0x2f0(%rbp), %rdi
callq 0x7708
leaq -0x310(%rbp), %rdi
callq 0x7708
leaq -0x370(%rbp), %rdi
callq 0x7708
leaq -0x330(%rbp), %rdi
callq 0x7708
leaq -0x350(%rbp), %rdi
callq 0x7708
movq -0x1f0(%rbp), %rax
movl 0x2c(%rax), %eax
movl -0x270(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x3f4(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x3f4(%rbp), %rsi
callq 0xa22d0
jmp 0x10177c
leaq 0x4bdd6(%rip), %rsi     # 0x14d559
leaq -0x3d0(%rbp), %rdi
leaq -0x3f0(%rbp), %rdx
callq 0xa6db0
jmp 0x101798
leaq 0x4bc3c(%rip), %rdx     # 0x14d3db
leaq -0x3b0(%rbp), %rdi
leaq -0x3d0(%rbp), %rsi
callq 0x11910
jmp 0x1017b4
movq -0x860(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x7470
jmp 0x1017c9
leaq -0x3b0(%rbp), %rdi
callq 0x7708
leaq -0x3d0(%rbp), %rdi
callq 0x7708
leaq -0x3f0(%rbp), %rdi
callq 0x7708
movl -0x270(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x270(%rbp)
jmp 0x101593
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1018a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101895
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x7708
leaq -0x390(%rbp), %rdi
callq 0x7708
leaq -0x2b0(%rbp), %rdi
callq 0x7708
leaq -0x2d0(%rbp), %rdi
callq 0x7708
leaq -0x2f0(%rbp), %rdi
callq 0x7708
leaq -0x310(%rbp), %rdi
callq 0x7708
leaq -0x370(%rbp), %rdi
callq 0x7708
leaq -0x330(%rbp), %rdi
callq 0x7708
leaq -0x350(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x10193a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x10192e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x7708
leaq -0x3d0(%rbp), %rdi
callq 0x7708
leaq -0x3f0(%rbp), %rdi
callq 0x7708
jmp 0x102637
jmp 0x101c0b
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x101977
movq -0x860(%rbp), %rdi
leaq 0x42c21(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x101975
jmp 0x101977
movq -0x850(%rbp), %rsi
movq -0x1f8(%rbp), %rdx
leaq -0x498(%rbp), %rdi
callq 0xf34c0
jmp 0x101993
leaq 0x3cf03(%rip), %rdx     # 0x13e89d
leaq -0x478(%rbp), %rdi
leaq -0x498(%rbp), %rsi
callq 0x11910
jmp 0x1019af
movq -0x850(%rbp), %rsi
movq -0x200(%rbp), %rdx
movq (%rsi), %rax
movq 0x98(%rax), %rax
leaq -0x4b8(%rbp), %rdi
xorl %ecx, %ecx
callq *%rax
jmp 0x1019d4
leaq -0x458(%rbp), %rdi
leaq -0x478(%rbp), %rsi
leaq -0x4b8(%rbp), %rdx
callq 0x2f7f0
jmp 0x1019f0
leaq 0x4bb6d(%rip), %rdx     # 0x14d564
leaq -0x438(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0x11910
jmp 0x101a0c
movq -0x1f0(%rbp), %rdx
addq $0x8, %rdx
leaq -0x418(%rbp), %rdi
leaq -0x438(%rbp), %rsi
callq 0xa1530
jmp 0x101a2c
movq -0x860(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x7470
jmp 0x101a41
leaq -0x418(%rbp), %rdi
callq 0x7708
leaq -0x438(%rbp), %rdi
callq 0x7708
leaq -0x458(%rbp), %rdi
callq 0x7708
leaq -0x4b8(%rbp), %rdi
callq 0x7708
leaq -0x478(%rbp), %rdi
callq 0x7708
leaq -0x498(%rbp), %rdi
callq 0x7708
movq -0x1f0(%rbp), %rsi
addq $0x2c, %rsi
leaq -0x518(%rbp), %rdi
callq 0x2f940
jmp 0x101aa2
leaq 0x4bab0(%rip), %rsi     # 0x14d559
leaq -0x4f8(%rbp), %rdi
leaq -0x518(%rbp), %rdx
callq 0xa6db0
jmp 0x101abe
leaq 0x4b916(%rip), %rdx     # 0x14d3db
leaq -0x4d8(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0x11910
jmp 0x101ada
movq -0x860(%rbp), %rdi
leaq -0x4d8(%rbp), %rsi
callq 0x7470
jmp 0x101aef
leaq -0x4d8(%rbp), %rdi
callq 0x7708
leaq -0x4f8(%rbp), %rdi
callq 0x7708
leaq -0x518(%rbp), %rdi
callq 0x7708
jmp 0x101c0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101ba9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101b9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101b91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101b85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101b79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x7708
leaq -0x438(%rbp), %rdi
callq 0x7708
leaq -0x458(%rbp), %rdi
callq 0x7708
leaq -0x4b8(%rbp), %rdi
callq 0x7708
leaq -0x478(%rbp), %rdi
callq 0x7708
leaq -0x498(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101bfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101bee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0x7708
leaq -0x4f8(%rbp), %rdi
callq 0x7708
leaq -0x518(%rbp), %rdi
callq 0x7708
jmp 0x102637
jmp 0x1020bf
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x101c37
movq -0x860(%rbp), %rdi
leaq 0x42961(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x101c35
jmp 0x101c37
movq -0x850(%rbp), %rsi
movq -0x200(%rbp), %rdx
leaq -0x578(%rbp), %rdi
callq 0x102c40
jmp 0x101c53
leaq 0x3cc43(%rip), %rdx     # 0x13e89d
leaq -0x558(%rbp), %rdi
leaq -0x578(%rbp), %rsi
callq 0x11910
jmp 0x101c6f
movq -0x1f0(%rbp), %rdx
addq $0x8, %rdx
leaq -0x538(%rbp), %rdi
leaq -0x558(%rbp), %rsi
callq 0xa1530
jmp 0x101c8f
movq -0x860(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x7470
jmp 0x101ca4
leaq -0x538(%rbp), %rdi
callq 0x7708
leaq -0x558(%rbp), %rdi
callq 0x7708
leaq -0x578(%rbp), %rdi
callq 0x7708
movq -0x1f0(%rbp), %rsi
addq $0x2c, %rsi
leaq -0x5d8(%rbp), %rdi
callq 0x2f940
jmp 0x101ce1
leaq 0x4b87f(%rip), %rsi     # 0x14d567
leaq -0x5b8(%rbp), %rdi
leaq -0x5d8(%rbp), %rdx
callq 0xa6db0
jmp 0x101cfd
leaq 0x4b6d7(%rip), %rdx     # 0x14d3db
leaq -0x598(%rbp), %rdi
leaq -0x5b8(%rbp), %rsi
callq 0x11910
jmp 0x101d19
movq -0x860(%rbp), %rdi
leaq -0x598(%rbp), %rsi
callq 0x7470
jmp 0x101d2e
leaq -0x598(%rbp), %rdi
callq 0x7708
leaq -0x5b8(%rbp), %rdi
callq 0x7708
leaq -0x5d8(%rbp), %rdi
callq 0x7708
jmp 0x1020bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101d97
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101d8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x7708
leaq -0x558(%rbp), %rdi
callq 0x7708
leaq -0x578(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101ddc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x598(%rbp), %rdi
callq 0x7708
leaq -0x5b8(%rbp), %rdi
callq 0x7708
leaq -0x5d8(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x101e20
movq -0x860(%rbp), %rdi
leaq 0x42778(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x101e1e
jmp 0x101e20
movq -0x850(%rbp), %rsi
movq -0x200(%rbp), %rdx
movl -0x204(%rbp), %ecx
movq (%rsi), %rax
movq 0xb0(%rax), %rax
leaq -0x638(%rbp), %rdi
callq *%rax
jmp 0x101e49
leaq 0x3ca4d(%rip), %rdx     # 0x13e89d
leaq -0x618(%rbp), %rdi
leaq -0x638(%rbp), %rsi
callq 0x11910
jmp 0x101e65
movq -0x1f0(%rbp), %rdx
addq $0x8, %rdx
leaq -0x5f8(%rbp), %rdi
leaq -0x618(%rbp), %rsi
callq 0xa1530
jmp 0x101e85
movq -0x860(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x7470
jmp 0x101e9a
leaq -0x5f8(%rbp), %rdi
callq 0x7708
leaq -0x618(%rbp), %rdi
callq 0x7708
leaq -0x638(%rbp), %rdi
callq 0x7708
movq -0x1f0(%rbp), %rsi
addq $0x2c, %rsi
leaq -0x698(%rbp), %rdi
callq 0x2f940
jmp 0x101ed7
leaq 0x4b695(%rip), %rsi     # 0x14d573
leaq -0x678(%rbp), %rdi
leaq -0x698(%rbp), %rdx
callq 0xa6db0
jmp 0x101ef3
leaq 0x4b4e1(%rip), %rdx     # 0x14d3db
leaq -0x658(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x11910
jmp 0x101f0f
movq -0x860(%rbp), %rdi
leaq -0x658(%rbp), %rsi
callq 0x7470
jmp 0x101f24
leaq -0x658(%rbp), %rdi
callq 0x7708
leaq -0x678(%rbp), %rdi
callq 0x7708
leaq -0x698(%rbp), %rdi
callq 0x7708
jmp 0x1020bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101f8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101f81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x7708
leaq -0x618(%rbp), %rdi
callq 0x7708
leaq -0x638(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101fde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x101fd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x658(%rbp), %rdi
callq 0x7708
leaq -0x678(%rbp), %rdi
callq 0x7708
leaq -0x698(%rbp), %rdi
callq 0x7708
jmp 0x102637
movb $0x1, -0x6ba(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x968(%rbp)
leaq -0x6b9(%rbp), %rdi
movq %rdi, -0x960(%rbp)
callq 0x7650
movq -0x960(%rbp), %rdx
leaq 0x4b557(%rip), %rsi     # 0x14d57f
leaq -0x6b8(%rbp), %rdi
callq 0x7520
jmp 0x102036
movq -0x968(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0x9c50
jmp 0x10204b
movq -0x968(%rbp), %rdi
movb $0x0, -0x6ba(%rbp)
leaq 0xabd78(%rip), %rsi     # 0x1addd8
leaq -0xf83d7(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x102676
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x102097
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0x7708
leaq -0x6b9(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x6ba(%rbp)
jne 0x1020ae
jmp 0x1020ba
movq -0x968(%rbp), %rdi
callq 0x72c0
jmp 0x102637
jmp 0x1020c1
leaq -0x1e0(%rbp), %rdi
callq 0x10a340
jmp 0x1011ae
movq -0x850(%rbp), %rax
addq $0x8, %rax
addq $0x18, %rax
movq %rax, -0x6c8(%rbp)
movq -0x6c8(%rbp), %rdi
callq 0xf940
movq %rax, -0x6d0(%rbp)
movq -0x6c8(%rbp), %rdi
callq 0xf970
movq %rax, -0x6d8(%rbp)
leaq -0x6d0(%rbp), %rdi
leaq -0x6d8(%rbp), %rsi
callq 0xf9a0
testb $0x1, %al
jne 0x10212a
jmp 0x1024ff
leaq -0x6d0(%rbp), %rdi
callq 0xf9e0
movq %rax, -0x6e0(%rbp)
movq -0x6e0(%rbp), %rdi
callq 0xfa00
movl %eax, -0x96c(%rbp)
jmp 0x102151
movl -0x96c(%rbp), %eax
cmpl $0x2, %eax
jne 0x1024ec
movq -0x6e0(%rbp), %rdi
callq 0xfd10
movq %rax, -0x978(%rbp)
jmp 0x102175
movq -0x850(%rbp), %rdi
movq -0x978(%rbp), %rax
movq %rax, -0x6e8(%rbp)
movq -0x6e8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x6ec(%rbp)
addq $0x8, %rdi
addq $0x30, %rdi
movl -0x6ec(%rbp), %eax
movl %eax, %esi
callq 0xead0
movl 0xa0(%rax), %eax
movl %eax, -0x6f0(%rbp)
movq -0x6e8(%rbp), %rax
cmpl $0x1, 0x10(%rax)
jne 0x1024ea
movq -0x850(%rbp), %rdi
movq -0x6e8(%rbp), %rsi
callq 0x205a0
movb %al, -0x979(%rbp)
jmp 0x1021e7
movb -0x979(%rbp), %al
testb $0x1, %al
jne 0x1021f6
jmp 0x1024ea
cmpl $0x13, -0x6f0(%rbp)
je 0x10242a
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x10222a
movq -0x860(%rbp), %rdi
leaq 0x4236e(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x102228
jmp 0x10222a
movq -0x850(%rbp), %rsi
movl -0x6f0(%rbp), %edx
leaq -0x750(%rbp), %rdi
callq 0x10a360
jmp 0x102245
leaq 0x3c651(%rip), %rdx     # 0x13e89d
leaq -0x730(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x11910
jmp 0x102261
movq -0x850(%rbp), %rsi
movl -0x6ec(%rbp), %edx
leaq -0x770(%rbp), %rdi
callq 0x71b50
jmp 0x10227c
leaq -0x710(%rbp), %rdi
leaq -0x730(%rbp), %rsi
leaq -0x770(%rbp), %rdx
callq 0x2f7f0
jmp 0x102298
movq -0x860(%rbp), %rdi
leaq -0x710(%rbp), %rsi
callq 0x7470
jmp 0x1022ad
leaq -0x710(%rbp), %rdi
callq 0x7708
leaq -0x770(%rbp), %rdi
callq 0x7708
leaq -0x730(%rbp), %rdi
callq 0x7708
leaq -0x750(%rbp), %rdi
callq 0x7708
movq -0x850(%rbp), %rsi
movl -0x6f0(%rbp), %edx
leaq -0x7d0(%rbp), %rdi
callq 0x109330
jmp 0x1022f8
leaq 0x4b0a7(%rip), %rsi     # 0x14d3a6
leaq -0x7b0(%rbp), %rdi
leaq -0x7d0(%rbp), %rdx
callq 0xa6db0
jmp 0x102314
leaq 0x4b19e(%rip), %rdx     # 0x14d4b9
leaq -0x790(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0x11910
jmp 0x102330
movq -0x860(%rbp), %rdi
leaq -0x790(%rbp), %rsi
callq 0x7470
jmp 0x102345
leaq -0x790(%rbp), %rdi
callq 0x7708
leaq -0x7b0(%rbp), %rdi
callq 0x7708
leaq -0x7d0(%rbp), %rdi
callq 0x7708
jmp 0x1024e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1023c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1023bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x1023b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x710(%rbp), %rdi
callq 0x7708
leaq -0x770(%rbp), %rdi
callq 0x7708
leaq -0x730(%rbp), %rdi
callq 0x7708
leaq -0x750(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x102419
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x10240d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x7708
leaq -0x7b0(%rbp), %rdi
callq 0x7708
leaq -0x7d0(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq -0x850(%rbp), %rdi
movl 0x108(%rdi), %esi
callq 0x106d0
movq %rax, -0x988(%rbp)
jmp 0x102445
movq -0x850(%rbp), %rax
movq -0x988(%rbp), %rcx
movq %rcx, -0x7d8(%rbp)
movq -0x7d8(%rbp), %rcx
addq $0xb0, %rcx
movq %rcx, -0x998(%rbp)
movq %rax, -0x808(%rbp)
movl -0x6f0(%rbp), %eax
movl %eax, -0x800(%rbp)
movl -0x6ec(%rbp), %eax
movl %eax, -0x7fc(%rbp)
leaq -0x7f8(%rbp), %rdi
movq %rdi, -0x990(%rbp)
leaq -0x808(%rbp), %rsi
callq 0x10add0
movq -0x998(%rbp), %rdi
movq -0x990(%rbp), %rsi
callq 0x113fc0
jmp 0x1024bd
leaq -0x7f8(%rbp), %rdi
callq 0x113ff0
jmp 0x1024e8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x7f8(%rbp), %rdi
callq 0x113ff0
jmp 0x102637
jmp 0x1024ea
jmp 0x1024ec
jmp 0x1024ee
leaq -0x6d0(%rbp), %rdi
callq 0xfbd0
jmp 0x10210e
movq -0x850(%rbp), %rax
testb $0x1, 0x935(%rax)
je 0x10257a
movq -0x860(%rbp), %rdi
callq 0x75f0
movq -0x850(%rbp), %rsi
xorb $0x1, %al
movzbl %al, %ecx
leaq -0x828(%rbp), %rdi
movl $0x2a, %edx
callq 0x10ae60
jmp 0x10253a
movq -0x860(%rbp), %rdi
leaq -0x828(%rbp), %rsi
callq 0x7470
jmp 0x10254f
leaq -0x828(%rbp), %rdi
callq 0x7708
jmp 0x10257a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq -0x850(%rbp), %rax
testb $0x1, 0x936(%rax)
je 0x1025f2
movq -0x860(%rbp), %rdi
callq 0x75f0
movq -0x850(%rbp), %rsi
xorb $0x1, %al
movzbl %al, %ecx
leaq -0x848(%rbp), %rdi
movl $0x2b, %edx
callq 0x10ae60
jmp 0x1025b5
movq -0x860(%rbp), %rdi
leaq -0x848(%rbp), %rsi
callq 0x7470
jmp 0x1025ca
leaq -0x848(%rbp), %rdi
callq 0x7708
jmp 0x1025f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x848(%rbp), %rdi
callq 0x7708
jmp 0x102637
movq -0x860(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x10261f
testb $0x1, -0x11(%rbp)
je 0x10261f
movq -0x860(%rbp), %rdi
leaq 0x41f79(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x10261d
jmp 0x10261f
movb $0x1, -0x12(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x10b0d0
testb $0x1, -0x12(%rbp)
jne 0x102651
jmp 0x102645
leaq -0xf0(%rbp), %rdi
callq 0x10b0d0
jmp 0x102661
movq -0x860(%rbp), %rdi
callq 0x7708
movq -0x858(%rbp), %rax
addq $0x9a0, %rsp            # imm = 0x9A0
popq %rbp
retq
movq -0x860(%rbp), %rdi
callq 0x7708
movq -0x28(%rbp), %rdi
callq 0x7640
nopw %cs:(%rax,%rax)