// File: rossy[P]crossc/SPIRV-Cross/spirv_msl.cpp
// Function: spirv_cross::CompilerMSL::to_function_args[abi:cxx11](unsigned int, spirv_cross::SPIRType const&, bool, bool, bool, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, bool*)
string CompilerMSL::to_function_args(uint32_t img, const SPIRType &imgtype, bool is_fetch, bool is_gather, bool is_proj,
                                     uint32_t coord, uint32_t, uint32_t dref, uint32_t grad_x, uint32_t grad_y,
                                     uint32_t lod, uint32_t coffset, uint32_t offset, uint32_t bias, uint32_t comp,
                                     uint32_t sample, bool *p_forward)
{
	string farg_str;
	if (!is_fetch)
		farg_str += to_sampler_expression(img);

	if (msl_options.swizzle_texture_samples && is_gather)
	{
		if (!farg_str.empty())
			farg_str += ", ";

		auto *combined = maybe_get<SPIRCombinedImageSampler>(img);
		farg_str += to_expression(combined ? combined->image : img);
	}

	// Texture coordinates
	bool forward = should_forward(coord);
	auto coord_expr = to_enclosed_expression(coord);
	auto &coord_type = expression_type(coord);
	bool coord_is_fp = type_is_floating_point(coord_type);
	bool is_cube_fetch = false;

	string tex_coords = coord_expr;
	const char *alt_coord = "";

	switch (imgtype.image.dim)
	{

	case Dim1D:
		if (coord_type.vecsize > 1)
			tex_coords += ".x";

		if (is_fetch)
			tex_coords = "uint(" + round_fp_tex_coords(tex_coords, coord_is_fp) + ")";

		alt_coord = ".y";

		break;

	case DimBuffer:
		if (coord_type.vecsize > 1)
			tex_coords += ".x";

		// Metal texel buffer textures are 2D, so convert 1D coord to 2D.
		if (is_fetch)
			tex_coords = "spvTexelBufferCoord(" + round_fp_tex_coords(tex_coords, coord_is_fp) + ")";

		alt_coord = ".y";

		break;

	case DimSubpassData:
		if (imgtype.image.ms)
			tex_coords = "uint2(gl_FragCoord.xy)";
		else
			tex_coords = join("uint2(gl_FragCoord.xy), 0");
		break;

	case Dim2D:
		if (coord_type.vecsize > 2)
			tex_coords += ".xy";

		if (is_fetch)
			tex_coords = "uint2(" + round_fp_tex_coords(tex_coords, coord_is_fp) + ")";

		alt_coord = ".z";

		break;

	case Dim3D:
		if (coord_type.vecsize > 3)
			tex_coords += ".xyz";

		if (is_fetch)
			tex_coords = "uint3(" + round_fp_tex_coords(tex_coords, coord_is_fp) + ")";

		alt_coord = ".w";

		break;

	case DimCube:
		if (is_fetch)
		{
			is_cube_fetch = true;
			tex_coords += ".xy";
			tex_coords = "uint2(" + round_fp_tex_coords(tex_coords, coord_is_fp) + ")";
		}
		else
		{
			if (coord_type.vecsize > 3)
				tex_coords += ".xyz";
		}

		alt_coord = ".w";

		break;

	default:
		break;
	}

	if (is_fetch && offset)
	{
		// Fetch offsets must be applied directly to the coordinate.
		forward = forward && should_forward(offset);
		auto &type = expression_type(offset);
		if (type.basetype != SPIRType::UInt)
			tex_coords += " + " + bitcast_expression(SPIRType::UInt, offset);
		else
			tex_coords += " + " + to_enclosed_expression(offset);
	}
	else if (is_fetch && coffset)
	{
		// Fetch offsets must be applied directly to the coordinate.
		forward = forward && should_forward(coffset);
		auto &type = expression_type(coffset);
		if (type.basetype != SPIRType::UInt)
			tex_coords += " + " + bitcast_expression(SPIRType::UInt, coffset);
		else
			tex_coords += " + " + to_enclosed_expression(coffset);
	}

	// If projection, use alt coord as divisor
	if (is_proj)
		tex_coords += " / " + coord_expr + alt_coord;

	if (!farg_str.empty())
		farg_str += ", ";
	farg_str += tex_coords;

	// If fetch from cube, add face explicitly
	if (is_cube_fetch)
	{
		// Special case for cube arrays, face and layer are packed in one dimension.
		if (imgtype.image.arrayed)
			farg_str += ", uint(" + join(coord_expr, ".z) % 6u");
		else
			farg_str += ", uint(" + round_fp_tex_coords(coord_expr + ".z", coord_is_fp) + ")";
	}

	// If array, use alt coord
	if (imgtype.image.arrayed)
	{
		// Special case for cube arrays, face and layer are packed in one dimension.
		if (imgtype.image.dim == DimCube && is_fetch)
			farg_str += ", uint(" + join(coord_expr, ".z) / 6u");
		else
			farg_str += ", uint(" + round_fp_tex_coords(coord_expr + alt_coord, coord_is_fp) + ")";
	}

	// Depth compare reference value
	if (dref)
	{
		forward = forward && should_forward(dref);
		farg_str += ", ";
		farg_str += to_expression(dref);
	}

	// LOD Options
	// Metal does not support LOD for 1D textures.
	if (bias && imgtype.image.dim != Dim1D)
	{
		forward = forward && should_forward(bias);
		farg_str += ", bias(" + to_expression(bias) + ")";
	}

	// Metal does not support LOD for 1D textures.
	if (lod && imgtype.image.dim != Dim1D)
	{
		forward = forward && should_forward(lod);
		if (is_fetch)
		{
			farg_str += ", " + to_expression(lod);
		}
		else
		{
			farg_str += ", level(" + to_expression(lod) + ")";
		}
	}
	else if (is_fetch && !lod && imgtype.image.dim != Dim1D && imgtype.image.dim != DimBuffer && !imgtype.image.ms &&
	         imgtype.image.sampled != 2)
	{
		// Lod argument is optional in OpImageFetch, but we require a LOD value, pick 0 as the default.
		// Check for sampled type as well, because is_fetch is also used for OpImageRead in MSL.
		farg_str += ", 0";
	}

	// Metal does not support LOD for 1D textures.
	if ((grad_x || grad_y) && imgtype.image.dim != Dim1D)
	{
		forward = forward && should_forward(grad_x);
		forward = forward && should_forward(grad_y);
		string grad_opt;
		switch (imgtype.image.dim)
		{
		case Dim2D:
			grad_opt = "2d";
			break;
		case Dim3D:
			grad_opt = "3d";
			break;
		case DimCube:
			grad_opt = "cube";
			break;
		default:
			grad_opt = "unsupported_gradient_dimension";
			break;
		}
		farg_str += ", gradient" + grad_opt + "(" + to_expression(grad_x) + ", " + to_expression(grad_y) + ")";
	}

	// Add offsets
	string offset_expr;
	if (coffset && !is_fetch)
	{
		forward = forward && should_forward(coffset);
		offset_expr = to_expression(coffset);
	}
	else if (offset && !is_fetch)
	{
		forward = forward && should_forward(offset);
		offset_expr = to_expression(offset);
	}

	if (!offset_expr.empty())
	{
		switch (imgtype.image.dim)
		{
		case Dim2D:
			if (coord_type.vecsize > 2)
				offset_expr = enclose_expression(offset_expr) + ".xy";

			farg_str += ", " + offset_expr;
			break;

		case Dim3D:
			if (coord_type.vecsize > 3)
				offset_expr = enclose_expression(offset_expr) + ".xyz";

			farg_str += ", " + offset_expr;
			break;

		default:
			break;
		}
	}

	if (comp)
	{
		// If 2D has gather component, ensure it also has an offset arg
		if (imgtype.image.dim == Dim2D && offset_expr.empty())
			farg_str += ", int2(0)";

		forward = forward && should_forward(comp);
		farg_str += ", " + to_component_argument(comp);
	}

	if (sample)
	{
		farg_str += ", ";
		farg_str += to_expression(sample);
	}

	if (msl_options.swizzle_texture_samples && is_sampled_image_type(imgtype))
	{
		// Add the swizzle constant from the swizzle buffer.
		if (!is_gather)
			farg_str += ")";
		// Get the original input variable for this image.
		uint32_t img_var = img;

		auto *combined = maybe_get<SPIRCombinedImageSampler>(img_var);
		if (combined)
			img_var = combined->image;

		if (auto *var = maybe_get_backing_variable(img_var))
		{
			if (var->parameter && !var->parameter->alias_global_variable)
				SPIRV_CROSS_THROW("Cannot yet map non-aliased parameter to Metal resource!");
			img_var = var->self;
		}
		auto &aux_type = expression_type(aux_buffer_id);
		farg_str += ", " + to_name(aux_buffer_id) + "." + to_member_name(aux_type, k_aux_mbr_idx_swizzle_const) + "[" +
		            convert_to_string(get_metal_resource_index(get<SPIRVariable>(img_var), SPIRType::Image)) + "]";
		used_aux_buffer = true;
	}

	*p_forward = forward;

	return farg_str;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc50, %rsp            # imm = 0xC50
movl %r9d, -0xba4(%rbp)
movl %r8d, %eax
movq %rcx, %r8
movl -0xba4(%rbp), %ecx
movq %r8, -0xba0(%rbp)
movl %edx, %r8d
movq %rsi, %r9
movq -0xba0(%rbp), %rsi
movq %rdi, -0xb98(%rbp)
movb %al, %dl
movq %rdi, %rax
movq %rax, -0xb90(%rbp)
movq 0x70(%rbp), %rax
movl 0x68(%rbp), %eax
movl 0x60(%rbp), %eax
movl 0x58(%rbp), %eax
movl 0x50(%rbp), %eax
movl 0x48(%rbp), %eax
movl 0x40(%rbp), %eax
movl 0x38(%rbp), %eax
movl 0x30(%rbp), %eax
movl 0x28(%rbp), %eax
movl 0x20(%rbp), %eax
movl 0x18(%rbp), %eax
movb 0x10(%rbp), %al
movq %rdi, -0x8(%rbp)
movq %r9, -0x10(%rbp)
movl %r8d, -0x14(%rbp)
movq %rsi, -0x20(%rbp)
andb $0x1, %dl
movb %dl, -0x21(%rbp)
andb $0x1, %cl
movb %cl, -0x22(%rbp)
andb $0x1, %al
movb %al, -0x23(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb88(%rbp)
movb $0x0, -0x24(%rbp)
callq 0x7530
testb $0x1, -0x21(%rbp)
jne 0x103865
movq -0xb88(%rbp), %rsi
movl -0x14(%rbp), %edx
leaq -0x48(%rbp), %rdi
callq 0xf3250
jmp 0x10381d
movq -0xb98(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x7470
jmp 0x10382f
leaq -0x48(%rbp), %rdi
callq 0x7708
jmp 0x103865
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105bb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x7708
jmp 0x105bb0
movq -0xb88(%rbp), %rax
testb $0x1, 0x7df(%rax)
je 0x10393b
testb $0x1, -0x22(%rbp)
je 0x10393b
movq -0xb98(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x1038aa
movq -0xb98(%rbp), %rdi
leaq 0x40cee(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x1038a8
jmp 0x1038aa
movq -0xb88(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0xdc700
movq %rax, -0xbb0(%rbp)
jmp 0x1038c2
movq -0xbb0(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x1038e3
movq -0x60(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0xbb4(%rbp)
jmp 0x1038ec
movl -0x14(%rbp), %eax
movl %eax, -0xbb4(%rbp)
movq -0xb88(%rbp), %rsi
movl -0xbb4(%rbp), %edx
leaq -0x80(%rbp), %rdi
callq 0x71b50
jmp 0x103904
movq -0xb98(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x7470
jmp 0x103916
leaq -0x80(%rbp), %rdi
callq 0x7708
jmp 0x10393b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x7708
jmp 0x105bb0
movq -0xb88(%rbp), %rdi
movl 0x18(%rbp), %esi
callq 0x78810
movb %al, -0xbb5(%rbp)
jmp 0x103952
movq -0xb88(%rbp), %rsi
movb -0xbb5(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x18(%rbp), %edx
leaq -0xa8(%rbp), %rdi
callq 0x72630
jmp 0x103978
movq -0xb88(%rbp), %rdi
movl 0x18(%rbp), %esi
callq 0x1f760
movq %rax, -0xbc0(%rbp)
jmp 0x103990
movq -0xbc0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0xfa4a0
movb %al, -0xbc1(%rbp)
jmp 0x1039b2
movb -0xbc1(%rbp), %al
andb $0x1, %al
movb %al, -0xb1(%rbp)
movb $0x0, -0xb2(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x7170
jmp 0x1039dc
leaq 0x3aebb(%rip), %rax     # 0x13e89e
movq %rax, -0xe0(%rbp)
movq -0x20(%rbp), %rax
movl 0x84(%rax), %eax
movq %rax, -0xbd0(%rbp)
subq $0x6, %rax
ja 0x104128
movq -0xbd0(%rbp), %rax
leaq 0x468c5(%rip), %rcx     # 0x14a2d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b86
movq -0xb0(%rbp), %rax
cmpl $0x1, 0x14(%rax)
jbe 0x103a62
leaq 0x4081f(%rip), %rsi     # 0x144260
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x103a4f
jmp 0x103a62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b7a
testb $0x1, -0x21(%rbp)
je 0x103b75
leaq -0x160(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7170
jmp 0x103a81
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x140(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0x105bd0
jmp 0x103aa7
leaq 0x496f3(%rip), %rsi     # 0x14d1a1
leaq -0x120(%rbp), %rdi
leaq -0x140(%rbp), %rdx
callq 0xa6db0
jmp 0x103ac3
leaq 0x4142f(%rip), %rdx     # 0x144ef9
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x11910
jmp 0x103adf
leaq -0xd8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x7430
leaq -0x100(%rbp), %rdi
callq 0x7708
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x140(%rbp), %rdi
callq 0x7708
leaq -0x160(%rbp), %rdi
callq 0x7708
jmp 0x103b75
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103b64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103b58
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x140(%rbp), %rdi
callq 0x7708
leaq -0x160(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq 0x4169d(%rip), %rax     # 0x145219
movq %rax, -0xe0(%rbp)
jmp 0x10412a
movq -0xb0(%rbp), %rax
cmpl $0x1, 0x14(%rax)
jbe 0x103bac
leaq 0x406c4(%rip), %rsi     # 0x144260
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x103baa
jmp 0x103bac
testb $0x1, -0x21(%rbp)
je 0x103cbf
leaq -0x1e0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7170
jmp 0x103bcb
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x1c0(%rbp), %rdi
leaq -0x1e0(%rbp), %rdx
callq 0x105bd0
jmp 0x103bf1
leaq 0x49553(%rip), %rsi     # 0x14d14b
leaq -0x1a0(%rbp), %rdi
leaq -0x1c0(%rbp), %rdx
callq 0xa6db0
jmp 0x103c0d
leaq 0x412e5(%rip), %rdx     # 0x144ef9
leaq -0x180(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x11910
jmp 0x103c29
leaq -0xd8(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x7430
leaq -0x180(%rbp), %rdi
callq 0x7708
leaq -0x1a0(%rbp), %rdi
callq 0x7708
leaq -0x1c0(%rbp), %rdi
callq 0x7708
leaq -0x1e0(%rbp), %rdi
callq 0x7708
jmp 0x103cbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103cae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103ca2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x7708
leaq -0x1c0(%rbp), %rdi
callq 0x7708
leaq -0x1e0(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq 0x41553(%rip), %rax     # 0x145219
movq %rax, -0xe0(%rbp)
jmp 0x10412a
movq -0x20(%rbp), %rax
testb $0x1, 0x8a(%rax)
je 0x103cf6
leaq 0x4947a(%rip), %rsi     # 0x14d160
leaq -0xd8(%rbp), %rdi
callq 0x7510
jmp 0x103cf4
jmp 0x103d2a
leaq 0x4947a(%rip), %rsi     # 0x14d177
leaq -0x200(%rbp), %rdi
callq 0xe2c00
jmp 0x103d0b
leaq -0xd8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x7430
leaq -0x200(%rbp), %rdi
callq 0x7708
jmp 0x10412a
movq -0xb0(%rbp), %rax
cmpl $0x2, 0x14(%rax)
jbe 0x103d53
leaq 0x3edf6(%rip), %rsi     # 0x142b39
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x103d51
jmp 0x103d53
testb $0x1, -0x21(%rbp)
je 0x103e66
leaq -0x280(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7170
jmp 0x103d72
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x260(%rbp), %rdi
leaq -0x280(%rbp), %rdx
callq 0x105bd0
jmp 0x103d98
leaq 0x493f2(%rip), %rsi     # 0x14d191
leaq -0x240(%rbp), %rdi
leaq -0x260(%rbp), %rdx
callq 0xa6db0
jmp 0x103db4
leaq 0x4113e(%rip), %rdx     # 0x144ef9
leaq -0x220(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x11910
jmp 0x103dd0
leaq -0xd8(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x7430
leaq -0x220(%rbp), %rdi
callq 0x7708
leaq -0x240(%rbp), %rdi
callq 0x7708
leaq -0x260(%rbp), %rdi
callq 0x7708
leaq -0x280(%rbp), %rdi
callq 0x7708
jmp 0x103e66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103e55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103e49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x7708
leaq -0x260(%rbp), %rdi
callq 0x7708
leaq -0x280(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq 0x413af(%rip), %rax     # 0x14521c
movq %rax, -0xe0(%rbp)
jmp 0x10412a
movq -0xb0(%rbp), %rax
cmpl $0x3, 0x14(%rax)
jbe 0x103e9d
leaq 0x41387(%rip), %rsi     # 0x145214
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x103e9b
jmp 0x103e9d
testb $0x1, -0x21(%rbp)
je 0x103fb0
leaq -0x300(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7170
jmp 0x103ebc
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x2e0(%rbp), %rdi
leaq -0x300(%rbp), %rdx
callq 0x105bd0
jmp 0x103ee2
leaq 0x492af(%rip), %rsi     # 0x14d198
leaq -0x2c0(%rbp), %rdi
leaq -0x2e0(%rbp), %rdx
callq 0xa6db0
jmp 0x103efe
leaq 0x40ff4(%rip), %rdx     # 0x144ef9
leaq -0x2a0(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x11910
jmp 0x103f1a
leaq -0xd8(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x7430
leaq -0x2a0(%rbp), %rdi
callq 0x7708
leaq -0x2c0(%rbp), %rdi
callq 0x7708
leaq -0x2e0(%rbp), %rdi
callq 0x7708
leaq -0x300(%rbp), %rdi
callq 0x7708
jmp 0x103fb0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103f9f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x103f93
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x7708
leaq -0x2e0(%rbp), %rdi
callq 0x7708
leaq -0x300(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq 0x41268(%rip), %rax     # 0x14521f
movq %rax, -0xe0(%rbp)
jmp 0x10412a
testb $0x1, -0x21(%rbp)
je 0x1040f2
movb $0x1, -0xb2(%rbp)
leaq 0x3eb5e(%rip), %rsi     # 0x142b39
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x103fe9
leaq -0x380(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7170
jmp 0x103ffe
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x360(%rbp), %rdi
leaq -0x380(%rbp), %rdx
callq 0x105bd0
jmp 0x104024
leaq 0x49166(%rip), %rsi     # 0x14d191
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rdx
callq 0xa6db0
jmp 0x104040
leaq 0x40eb2(%rip), %rdx     # 0x144ef9
leaq -0x320(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0x11910
jmp 0x10405c
leaq -0xd8(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x7430
leaq -0x320(%rbp), %rdi
callq 0x7708
leaq -0x340(%rbp), %rdi
callq 0x7708
leaq -0x360(%rbp), %rdi
callq 0x7708
leaq -0x380(%rbp), %rdi
callq 0x7708
jmp 0x104118
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1040e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1040d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x7708
leaq -0x360(%rbp), %rdi
callq 0x7708
leaq -0x380(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xb0(%rbp), %rax
cmpl $0x3, 0x14(%rax)
jbe 0x104116
leaq 0x4110e(%rip), %rsi     # 0x145214
leaq -0xd8(%rbp), %rdi
callq 0x7340
jmp 0x104114
jmp 0x104116
jmp 0x104118
leaq 0x41100(%rip), %rax     # 0x14521f
movq %rax, -0xe0(%rbp)
jmp 0x10412a
jmp 0x10412a
testb $0x1, -0x21(%rbp)
je 0x1042fa
cmpl $0x0, 0x50(%rbp)
je 0x1042fa
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbd1(%rbp)
je 0x104174
movq -0xb88(%rbp), %rdi
movl 0x50(%rbp), %esi
callq 0x78810
movb %al, -0xbd2(%rbp)
jmp 0x104166
movb -0xbd2(%rbp), %al
movb %al, -0xbd1(%rbp)
jmp 0x104174
movq -0xb88(%rbp), %rdi
movb -0xbd1(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x50(%rbp), %esi
callq 0x1f760
movq %rax, -0xbe0(%rbp)
jmp 0x10419a
movq -0xbe0(%rbp), %rax
movq %rax, -0x388(%rbp)
movq -0x388(%rbp), %rax
cmpl $0x5, 0xc(%rax)
je 0x10425b
movq -0xb88(%rbp), %rsi
movl 0x50(%rbp), %ecx
leaq -0x3c8(%rbp), %rdi
movl $0x5, %edx
callq 0x82a00
jmp 0x1041d6
leaq 0x49154(%rip), %rsi     # 0x14d331
leaq -0x3a8(%rbp), %rdi
leaq -0x3c8(%rbp), %rdx
callq 0xa6db0
jmp 0x1041f2
leaq -0xd8(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0x7470
jmp 0x104207
leaq -0x3a8(%rbp), %rdi
callq 0x7708
leaq -0x3c8(%rbp), %rdi
callq 0x7708
jmp 0x1042f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10424a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x7708
leaq -0x3c8(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xb88(%rbp), %rsi
movl 0x50(%rbp), %edx
leaq -0x408(%rbp), %rdi
callq 0x72630
jmp 0x104273
leaq 0x490b7(%rip), %rsi     # 0x14d331
leaq -0x3e8(%rbp), %rdi
leaq -0x408(%rbp), %rdx
callq 0xa6db0
jmp 0x10428f
leaq -0xd8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0x7470
jmp 0x1042a4
leaq -0x3e8(%rbp), %rdi
callq 0x7708
leaq -0x408(%rbp), %rdi
callq 0x7708
jmp 0x1042f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1042e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x7708
leaq -0x408(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
jmp 0x1044c9
testb $0x1, -0x21(%rbp)
je 0x1044c7
cmpl $0x0, 0x48(%rbp)
je 0x1044c7
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbe1(%rbp)
je 0x104344
movq -0xb88(%rbp), %rdi
movl 0x48(%rbp), %esi
callq 0x78810
movb %al, -0xbe2(%rbp)
jmp 0x104336
movb -0xbe2(%rbp), %al
movb %al, -0xbe1(%rbp)
jmp 0x104344
movq -0xb88(%rbp), %rdi
movb -0xbe1(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x48(%rbp), %esi
callq 0x1f760
movq %rax, -0xbf0(%rbp)
jmp 0x10436a
movq -0xbf0(%rbp), %rax
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rax
cmpl $0x5, 0xc(%rax)
je 0x10442b
movq -0xb88(%rbp), %rsi
movl 0x48(%rbp), %ecx
leaq -0x450(%rbp), %rdi
movl $0x5, %edx
callq 0x82a00
jmp 0x1043a6
leaq 0x48f84(%rip), %rsi     # 0x14d331
leaq -0x430(%rbp), %rdi
leaq -0x450(%rbp), %rdx
callq 0xa6db0
jmp 0x1043c2
leaq -0xd8(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0x7470
jmp 0x1043d7
leaq -0x430(%rbp), %rdi
callq 0x7708
leaq -0x450(%rbp), %rdi
callq 0x7708
jmp 0x1044c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10441a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x7708
leaq -0x450(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xb88(%rbp), %rsi
movl 0x48(%rbp), %edx
leaq -0x490(%rbp), %rdi
callq 0x72630
jmp 0x104443
leaq 0x48ee7(%rip), %rsi     # 0x14d331
leaq -0x470(%rbp), %rdi
leaq -0x490(%rbp), %rdx
callq 0xa6db0
jmp 0x10445f
leaq -0xd8(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0x7470
jmp 0x104474
leaq -0x470(%rbp), %rdi
callq 0x7708
leaq -0x490(%rbp), %rdi
callq 0x7708
jmp 0x1044c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1044b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x470(%rbp), %rdi
callq 0x7708
leaq -0x490(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
jmp 0x1044c7
jmp 0x1044c9
testb $0x1, -0x23(%rbp)
je 0x104571
leaq 0x46cd5(%rip), %rsi     # 0x14b1af
leaq -0x4d0(%rbp), %rdi
leaq -0xa8(%rbp), %rdx
callq 0xdc760
jmp 0x1044ef
movq -0xe0(%rbp), %rdx
leaq -0x4b0(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x11910
jmp 0x10450b
leaq -0xd8(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
callq 0x7470
jmp 0x104520
leaq -0x4b0(%rbp), %rdi
callq 0x7708
leaq -0x4d0(%rbp), %rdi
callq 0x7708
jmp 0x104571
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104560
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0x7708
leaq -0x4d0(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xb98(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x104598
movq -0xb98(%rbp), %rdi
leaq 0x40000(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x104596
jmp 0x104598
movq -0xb98(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x7470
jmp 0x1045ad
testb $0x1, -0xb2(%rbp)
je 0x10479a
movq -0x20(%rbp), %rax
testb $0x1, 0x89(%rax)
je 0x10466c
leaq 0x48bd5(%rip), %rdx     # 0x14d1a7
leaq -0x510(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x117020
jmp 0x1045e7
leaq 0x48bb1(%rip), %rsi     # 0x14d19f
leaq -0x4f0(%rbp), %rdi
leaq -0x510(%rbp), %rdx
callq 0xa6db0
jmp 0x104603
movq -0xb98(%rbp), %rdi
leaq -0x4f0(%rbp), %rsi
callq 0x7470
jmp 0x104618
leaq -0x4f0(%rbp), %rdi
callq 0x7708
leaq -0x510(%rbp), %rdi
callq 0x7708
jmp 0x104798
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10465b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x7708
leaq -0x510(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq 0x40ba9(%rip), %rdx     # 0x14521c
leaq -0x590(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2f8c0
jmp 0x104688
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x570(%rbp), %rdi
leaq -0x590(%rbp), %rdx
callq 0x105bd0
jmp 0x1046ae
leaq 0x48aea(%rip), %rsi     # 0x14d19f
leaq -0x550(%rbp), %rdi
leaq -0x570(%rbp), %rdx
callq 0xa6db0
jmp 0x1046ca
leaq 0x40828(%rip), %rdx     # 0x144ef9
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
callq 0x11910
jmp 0x1046e6
movq -0xb98(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x7470
jmp 0x1046fb
leaq -0x530(%rbp), %rdi
callq 0x7708
leaq -0x550(%rbp), %rdi
callq 0x7708
leaq -0x570(%rbp), %rdi
callq 0x7708
leaq -0x590(%rbp), %rdi
callq 0x7708
jmp 0x104798
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104787
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10477b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10476f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x530(%rbp), %rdi
callq 0x7708
leaq -0x550(%rbp), %rdi
callq 0x7708
leaq -0x570(%rbp), %rdi
callq 0x7708
leaq -0x590(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
jmp 0x10479a
movq -0x20(%rbp), %rax
testb $0x1, 0x89(%rax)
je 0x104995
movq -0x20(%rbp), %rax
cmpl $0x3, 0x84(%rax)
jne 0x104867
testb $0x1, -0x21(%rbp)
je 0x104867
leaq 0x489e3(%rip), %rdx     # 0x14d1b0
leaq -0x5d0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x117020
jmp 0x1047e2
leaq 0x489b6(%rip), %rsi     # 0x14d19f
leaq -0x5b0(%rbp), %rdi
leaq -0x5d0(%rbp), %rdx
callq 0xa6db0
jmp 0x1047fe
movq -0xb98(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x7470
jmp 0x104813
leaq -0x5b0(%rbp), %rdi
callq 0x7708
leaq -0x5d0(%rbp), %rdi
callq 0x7708
jmp 0x104993
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104856
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5b0(%rbp), %rdi
callq 0x7708
leaq -0x5d0(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xe0(%rbp), %rdx
leaq -0x650(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x2f8c0
jmp 0x104883
movq -0xb88(%rbp), %rsi
movzbl -0xb1(%rbp), %ecx
andl $0x1, %ecx
leaq -0x630(%rbp), %rdi
leaq -0x650(%rbp), %rdx
callq 0x105bd0
jmp 0x1048a9
leaq 0x488ef(%rip), %rsi     # 0x14d19f
leaq -0x610(%rbp), %rdi
leaq -0x630(%rbp), %rdx
callq 0xa6db0
jmp 0x1048c5
leaq 0x4062d(%rip), %rdx     # 0x144ef9
leaq -0x5f0(%rbp), %rdi
leaq -0x610(%rbp), %rsi
callq 0x11910
jmp 0x1048e1
movq -0xb98(%rbp), %rdi
leaq -0x5f0(%rbp), %rsi
callq 0x7470
jmp 0x1048f6
leaq -0x5f0(%rbp), %rdi
callq 0x7708
leaq -0x610(%rbp), %rdi
callq 0x7708
leaq -0x630(%rbp), %rdi
callq 0x7708
leaq -0x650(%rbp), %rdi
callq 0x7708
jmp 0x104993
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104982
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104976
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10496a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5f0(%rbp), %rdi
callq 0x7708
leaq -0x610(%rbp), %rdi
callq 0x7708
leaq -0x630(%rbp), %rdi
callq 0x7708
leaq -0x650(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
jmp 0x104995
cmpl $0x0, 0x28(%rbp)
je 0x104a50
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbf1(%rbp)
je 0x1049d5
movq -0xb88(%rbp), %rdi
movl 0x28(%rbp), %esi
callq 0x78810
movb %al, -0xbf2(%rbp)
jmp 0x1049c7
movb -0xbf2(%rbp), %al
movb %al, -0xbf1(%rbp)
jmp 0x1049d5
movq -0xb98(%rbp), %rdi
movb -0xbf1(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
leaq 0x3fb9e(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x1049f8
movq -0xb88(%rbp), %rsi
movl 0x28(%rbp), %edx
leaq -0x670(%rbp), %rdi
callq 0x71b50
jmp 0x104a10
movq -0xb98(%rbp), %rdi
leaq -0x670(%rbp), %rsi
callq 0x7470
jmp 0x104a25
leaq -0x670(%rbp), %rdi
callq 0x7708
jmp 0x104a50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x670(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
cmpl $0x0, 0x58(%rbp)
je 0x104b8b
movq -0x20(%rbp), %rax
cmpl $0x0, 0x84(%rax)
je 0x104b8b
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbf3(%rbp)
je 0x104aa1
movq -0xb88(%rbp), %rdi
movl 0x58(%rbp), %esi
callq 0x78810
movb %al, -0xbf4(%rbp)
jmp 0x104a93
movb -0xbf4(%rbp), %al
movb %al, -0xbf3(%rbp)
jmp 0x104aa1
movq -0xb88(%rbp), %rsi
movb -0xbf3(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x58(%rbp), %edx
leaq -0x6d0(%rbp), %rdi
callq 0x71b50
jmp 0x104ac7
leaq 0x486eb(%rip), %rsi     # 0x14d1b9
leaq -0x6b0(%rbp), %rdi
leaq -0x6d0(%rbp), %rdx
callq 0xa6db0
jmp 0x104ae3
leaq 0x4040f(%rip), %rdx     # 0x144ef9
leaq -0x690(%rbp), %rdi
leaq -0x6b0(%rbp), %rsi
callq 0x11910
jmp 0x104aff
movq -0xb98(%rbp), %rdi
leaq -0x690(%rbp), %rsi
callq 0x7470
jmp 0x104b14
leaq -0x690(%rbp), %rdi
callq 0x7708
leaq -0x6b0(%rbp), %rdi
callq 0x7708
leaq -0x6d0(%rbp), %rdi
callq 0x7708
jmp 0x104b8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104b7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104b6e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x690(%rbp), %rdi
callq 0x7708
leaq -0x6b0(%rbp), %rdi
callq 0x7708
leaq -0x6d0(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
cmpl $0x0, 0x40(%rbp)
je 0x104d6f
movq -0x20(%rbp), %rax
cmpl $0x0, 0x84(%rax)
je 0x104d6f
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbf5(%rbp)
je 0x104bdc
movq -0xb88(%rbp), %rdi
movl 0x40(%rbp), %esi
callq 0x78810
movb %al, -0xbf6(%rbp)
jmp 0x104bce
movb -0xbf6(%rbp), %al
movb %al, -0xbf5(%rbp)
jmp 0x104bdc
movb -0xbf5(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
testb $0x1, -0x21(%rbp)
je 0x104c91
movq -0xb88(%rbp), %rsi
movl 0x40(%rbp), %edx
leaq -0x710(%rbp), %rdi
callq 0x71b50
jmp 0x104c0c
leaq 0x3f97c(%rip), %rsi     # 0x14458f
leaq -0x6f0(%rbp), %rdi
leaq -0x710(%rbp), %rdx
callq 0xa6db0
jmp 0x104c28
movq -0xb98(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x7470
jmp 0x104c3d
leaq -0x6f0(%rbp), %rdi
callq 0x7708
leaq -0x710(%rbp), %rdi
callq 0x7708
jmp 0x104d6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104c80
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x7708
leaq -0x710(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
movq -0xb88(%rbp), %rsi
movl 0x40(%rbp), %edx
leaq -0x770(%rbp), %rdi
callq 0x71b50
jmp 0x104ca9
leaq 0x48511(%rip), %rsi     # 0x14d1c1
leaq -0x750(%rbp), %rdi
leaq -0x770(%rbp), %rdx
callq 0xa6db0
jmp 0x104cc5
leaq 0x4022d(%rip), %rdx     # 0x144ef9
leaq -0x730(%rbp), %rdi
leaq -0x750(%rbp), %rsi
callq 0x11910
jmp 0x104ce1
movq -0xb98(%rbp), %rdi
leaq -0x730(%rbp), %rsi
callq 0x7470
jmp 0x104cf6
leaq -0x730(%rbp), %rdi
callq 0x7708
leaq -0x750(%rbp), %rdi
callq 0x7708
leaq -0x770(%rbp), %rdi
callq 0x7708
jmp 0x104d6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104d5c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x104d50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x730(%rbp), %rdi
callq 0x7708
leaq -0x750(%rbp), %rdi
callq 0x7708
leaq -0x770(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
jmp 0x104dc8
testb $0x1, -0x21(%rbp)
je 0x104dc6
cmpl $0x0, 0x40(%rbp)
jne 0x104dc6
movq -0x20(%rbp), %rax
cmpl $0x0, 0x84(%rax)
je 0x104dc6
movq -0x20(%rbp), %rax
cmpl $0x5, 0x84(%rax)
je 0x104dc6
movq -0x20(%rbp), %rax
testb $0x1, 0x8a(%rax)
jne 0x104dc6
movq -0x20(%rbp), %rax
cmpl $0x2, 0x8c(%rax)
je 0x104dc6
movq -0xb98(%rbp), %rdi
leaq 0x483d0(%rip), %rsi     # 0x14d18d
callq 0x7340
jmp 0x104dc4
jmp 0x104dc6
jmp 0x104dc8
cmpl $0x0, 0x30(%rbp)
jne 0x104dd8
cmpl $0x0, 0x38(%rbp)
je 0x105161
movq -0x20(%rbp), %rax
cmpl $0x0, 0x84(%rax)
je 0x105161
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbf7(%rbp)
je 0x104e1f
movq -0xb88(%rbp), %rdi
movl 0x30(%rbp), %esi
callq 0x78810
movb %al, -0xbf8(%rbp)
jmp 0x104e11
movb -0xbf8(%rbp), %al
movb %al, -0xbf7(%rbp)
jmp 0x104e1f
movb -0xbf7(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xbf9(%rbp)
je 0x104e63
movq -0xb88(%rbp), %rdi
movl 0x38(%rbp), %esi
callq 0x78810
movb %al, -0xbfa(%rbp)
jmp 0x104e55
movb -0xbfa(%rbp), %al
movb %al, -0xbf9(%rbp)
jmp 0x104e63
movb -0xbf9(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
leaq -0x790(%rbp), %rdi
callq 0x7530
movq -0x20(%rbp), %rax
movl 0x84(%rax), %eax
movl %eax, -0xc00(%rbp)
subl $0x1, %eax
je 0x104eae
jmp 0x104e94
movl -0xc00(%rbp), %eax
subl $0x2, %eax
je 0x104ed6
jmp 0x104ea1
movl -0xc00(%rbp), %eax
subl $0x3, %eax
je 0x104eed
jmp 0x104f04
leaq 0x489c2(%rip), %rsi     # 0x14d877
leaq -0x790(%rbp), %rdi
callq 0x7510
jmp 0x104ec3
jmp 0x104f1b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105150
leaq 0x489a4(%rip), %rsi     # 0x14d881
leaq -0x790(%rbp), %rdi
callq 0x7510
jmp 0x104eeb
jmp 0x104f1b
leaq 0x489a9(%rip), %rsi     # 0x14d89d
leaq -0x790(%rbp), %rdi
callq 0x7510
jmp 0x104f02
jmp 0x104f1b
leaq 0x482bf(%rip), %rsi     # 0x14d1ca
leaq -0x790(%rbp), %rdi
callq 0x7510
jmp 0x104f19
jmp 0x104f1b
leaq 0x482c7(%rip), %rsi     # 0x14d1e9
leaq -0x850(%rbp), %rdi
leaq -0x790(%rbp), %rdx
callq 0xdc760
jmp 0x104f37
leaq 0x483ef(%rip), %rdx     # 0x14d32d
leaq -0x830(%rbp), %rdi
leaq -0x850(%rbp), %rsi
callq 0x11910
jmp 0x104f53
movq -0xb88(%rbp), %rsi
movl 0x30(%rbp), %edx
leaq -0x870(%rbp), %rdi
callq 0x71b50
jmp 0x104f6b
leaq -0x810(%rbp), %rdi
leaq -0x830(%rbp), %rsi
leaq -0x870(%rbp), %rdx
callq 0x2f7f0
jmp 0x104f87
leaq 0x3f601(%rip), %rdx     # 0x14458f
leaq -0x7f0(%rbp), %rdi
leaq -0x810(%rbp), %rsi
callq 0x11910
jmp 0x104fa3
movq -0xb88(%rbp), %rsi
movl 0x38(%rbp), %edx
leaq -0x890(%rbp), %rdi
callq 0x71b50
jmp 0x104fbb
leaq -0x7d0(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
leaq -0x890(%rbp), %rdx
callq 0x2f7f0
jmp 0x104fd7
leaq 0x3ff1b(%rip), %rdx     # 0x144ef9
leaq -0x7b0(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x11910
jmp 0x104ff3
movq -0xb98(%rbp), %rdi
leaq -0x7b0(%rbp), %rsi
callq 0x7470
jmp 0x105008
leaq -0x7b0(%rbp), %rdi
callq 0x7708
leaq -0x7d0(%rbp), %rdi
callq 0x7708
leaq -0x890(%rbp), %rdi
callq 0x7708
leaq -0x7f0(%rbp), %rdi
callq 0x7708
leaq -0x810(%rbp), %rdi
callq 0x7708
leaq -0x870(%rbp), %rdi
callq 0x7708
leaq -0x830(%rbp), %rdi
callq 0x7708
leaq -0x850(%rbp), %rdi
callq 0x7708
leaq -0x790(%rbp), %rdi
callq 0x7708
jmp 0x105161
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105144
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105138
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x10512c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105120
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105114
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105108
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1050fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x7b0(%rbp), %rdi
callq 0x7708
leaq -0x7d0(%rbp), %rdi
callq 0x7708
leaq -0x890(%rbp), %rdi
callq 0x7708
leaq -0x7f0(%rbp), %rdi
callq 0x7708
leaq -0x810(%rbp), %rdi
callq 0x7708
leaq -0x870(%rbp), %rdi
callq 0x7708
leaq -0x830(%rbp), %rdi
callq 0x7708
leaq -0x850(%rbp), %rdi
callq 0x7708
leaq -0x790(%rbp), %rdi
callq 0x7708
jmp 0x105b7a
leaq -0x8b0(%rbp), %rdi
callq 0x7530
cmpl $0x0, 0x48(%rbp)
je 0x105212
testb $0x1, -0x21(%rbp)
jne 0x105212
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xc01(%rbp)
je 0x1051b7
movq -0xb88(%rbp), %rdi
movl 0x48(%rbp), %esi
callq 0x78810
movb %al, -0xc02(%rbp)
jmp 0x1051a9
movb -0xc02(%rbp), %al
movb %al, -0xc01(%rbp)
jmp 0x1051b7
movq -0xb88(%rbp), %rsi
movb -0xc01(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x48(%rbp), %edx
leaq -0x8d0(%rbp), %rdi
callq 0x71b50
jmp 0x1051dd
leaq -0x8b0(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
callq 0x7430
leaq -0x8d0(%rbp), %rdi
callq 0x7708
jmp 0x10529f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b6e
cmpl $0x0, 0x50(%rbp)
je 0x10529d
testb $0x1, -0x21(%rbp)
jne 0x10529d
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xc03(%rbp)
je 0x105258
movq -0xb88(%rbp), %rdi
movl 0x50(%rbp), %esi
callq 0x78810
movb %al, -0xc04(%rbp)
jmp 0x10524a
movb -0xc04(%rbp), %al
movb %al, -0xc03(%rbp)
jmp 0x105258
movq -0xb88(%rbp), %rsi
movb -0xc03(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x50(%rbp), %edx
leaq -0x8f0(%rbp), %rdi
callq 0x71b50
jmp 0x10527e
leaq -0x8b0(%rbp), %rdi
leaq -0x8f0(%rbp), %rsi
callq 0x7430
leaq -0x8f0(%rbp), %rdi
callq 0x7708
jmp 0x10529f
leaq -0x8b0(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x1054c3
movq -0x20(%rbp), %rax
movl 0x84(%rax), %eax
movl %eax, -0xc08(%rbp)
subl $0x1, %eax
je 0x1052de
jmp 0x1052ca
movl -0xc08(%rbp), %eax
subl $0x2, %eax
je 0x1053d0
jmp 0x1054bf
movq -0xb0(%rbp), %rax
cmpl $0x2, 0x14(%rax)
jbe 0x105371
movq -0xb88(%rbp), %rsi
leaq -0x930(%rbp), %rdi
leaq -0x8b0(%rbp), %rdx
callq 0x6ff50
jmp 0x10530b
leaq 0x3d827(%rip), %rdx     # 0x142b39
leaq -0x910(%rbp), %rdi
leaq -0x930(%rbp), %rsi
callq 0x11910
jmp 0x105327
leaq -0x8b0(%rbp), %rdi
leaq -0x910(%rbp), %rsi
callq 0x7430
leaq -0x910(%rbp), %rdi
callq 0x7708
leaq -0x930(%rbp), %rdi
callq 0x7708
jmp 0x105371
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x930(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
leaq 0x3f217(%rip), %rsi     # 0x14458f
leaq -0x950(%rbp), %rdi
leaq -0x8b0(%rbp), %rdx
callq 0xdc760
jmp 0x10538d
movq -0xb98(%rbp), %rdi
leaq -0x950(%rbp), %rsi
callq 0x7470
jmp 0x1053a2
leaq -0x950(%rbp), %rdi
callq 0x7708
jmp 0x1054c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x950(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
movq -0xb0(%rbp), %rax
cmpl $0x3, 0x14(%rax)
jbe 0x105463
movq -0xb88(%rbp), %rsi
leaq -0x990(%rbp), %rdi
leaq -0x8b0(%rbp), %rdx
callq 0x6ff50
jmp 0x1053fd
leaq 0x3fe10(%rip), %rdx     # 0x145214
leaq -0x970(%rbp), %rdi
leaq -0x990(%rbp), %rsi
callq 0x11910
jmp 0x105419
leaq -0x8b0(%rbp), %rdi
leaq -0x970(%rbp), %rsi
callq 0x7430
leaq -0x970(%rbp), %rdi
callq 0x7708
leaq -0x990(%rbp), %rdi
callq 0x7708
jmp 0x105463
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x990(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
leaq 0x3f125(%rip), %rsi     # 0x14458f
leaq -0x9b0(%rbp), %rdi
leaq -0x8b0(%rbp), %rdx
callq 0xdc760
jmp 0x10547f
movq -0xb98(%rbp), %rdi
leaq -0x9b0(%rbp), %rsi
callq 0x7470
jmp 0x105494
leaq -0x9b0(%rbp), %rdi
callq 0x7708
jmp 0x1054c1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x9b0(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
jmp 0x1054c1
jmp 0x1054c3
cmpl $0x0, 0x60(%rbp)
je 0x1055e1
movq -0x20(%rbp), %rax
cmpl $0x1, 0x84(%rax)
jne 0x105503
leaq -0x8b0(%rbp), %rdi
callq 0x75f0
testb $0x1, %al
jne 0x1054ec
jmp 0x105503
movq -0xb98(%rbp), %rdi
leaq 0x47cfa(%rip), %rsi     # 0x14d1f4
callq 0x7340
jmp 0x105501
jmp 0x105503
xorl %eax, %eax
testb $0x1, -0x81(%rbp)
movb %al, -0xc09(%rbp)
je 0x105539
movq -0xb88(%rbp), %rdi
movl 0x60(%rbp), %esi
callq 0x78810
movb %al, -0xc0a(%rbp)
jmp 0x10552b
movb -0xc0a(%rbp), %al
movb %al, -0xc09(%rbp)
jmp 0x105539
movq -0xb88(%rbp), %rsi
movb -0xc09(%rbp), %al
andb $0x1, %al
movb %al, -0x81(%rbp)
movl 0x60(%rbp), %edx
leaq -0x9f0(%rbp), %rdi
callq 0x105ca0
jmp 0x10555f
leaq 0x3f029(%rip), %rsi     # 0x14458f
leaq -0x9d0(%rbp), %rdi
leaq -0x9f0(%rbp), %rdx
callq 0xa6db0
jmp 0x10557b
movq -0xb98(%rbp), %rdi
leaq -0x9d0(%rbp), %rsi
callq 0x7470
jmp 0x105590
leaq -0x9d0(%rbp), %rdi
callq 0x7708
leaq -0x9f0(%rbp), %rdi
callq 0x7708
jmp 0x1055e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1055d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x9d0(%rbp), %rdi
callq 0x7708
leaq -0x9f0(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
cmpl $0x0, 0x68(%rbp)
je 0x105654
movq -0xb98(%rbp), %rdi
leaq 0x3ef9a(%rip), %rsi     # 0x14458f
callq 0x7340
jmp 0x1055fc
movq -0xb88(%rbp), %rsi
movl 0x68(%rbp), %edx
leaq -0xa10(%rbp), %rdi
callq 0x71b50
jmp 0x105614
movq -0xb98(%rbp), %rdi
leaq -0xa10(%rbp), %rsi
callq 0x7470
jmp 0x105629
leaq -0xa10(%rbp), %rdi
callq 0x7708
jmp 0x105654
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa10(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
movq -0xb88(%rbp), %rax
testb $0x1, 0x7df(%rax)
je 0x105b2f
movq -0xb88(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x22ec0
movb %al, -0xc0b(%rbp)
jmp 0x105680
movb -0xc0b(%rbp), %al
testb $0x1, %al
jne 0x10568f
jmp 0x105b2f
testb $0x1, -0x22(%rbp)
jne 0x1056ac
movq -0xb98(%rbp), %rdi
leaq 0x3f856(%rip), %rsi     # 0x144ef9
callq 0x7340
jmp 0x1056aa
jmp 0x1056ac
movq -0xb88(%rbp), %rdi
movl -0x14(%rbp), %eax
movl %eax, -0xa14(%rbp)
movl -0xa14(%rbp), %esi
callq 0xdc700
movq %rax, -0xc18(%rbp)
jmp 0x1056d0
movq -0xc18(%rbp), %rax
movq %rax, -0xa20(%rbp)
cmpq $0x0, -0xa20(%rbp)
je 0x1056f8
movq -0xa20(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0xa14(%rbp)
movq -0xb88(%rbp), %rdi
movl -0xa14(%rbp), %esi
callq 0x1fa90
movq %rax, -0xc20(%rbp)
jmp 0x105713
movq -0xc20(%rbp), %rax
movq %rax, -0xa28(%rbp)
cmpq $0x0, -0xa28(%rbp)
je 0x105836
movq -0xa28(%rbp), %rax
cmpq $0x0, 0x68(%rax)
je 0x105826
movq -0xa28(%rbp), %rax
movq 0x68(%rax), %rax
testb $0x1, 0x10(%rax)
jne 0x105826
movb $0x1, -0xa4a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0xc30(%rbp)
leaq -0xa49(%rbp), %rdi
movq %rdi, -0xc28(%rbp)
callq 0x7650
movq -0xc28(%rbp), %rdx
leaq 0x47a6f(%rip), %rsi     # 0x14d1fe
leaq -0xa48(%rbp), %rdi
callq 0x7520
jmp 0x10579d
movq -0xc30(%rbp), %rdi
leaq -0xa48(%rbp), %rsi
callq 0x9c50
jmp 0x1057b2
movq -0xc30(%rbp), %rdi
movb $0x0, -0xa4a(%rbp)
leaq 0xa8611(%rip), %rsi     # 0x1addd8
leaq -0xfbb3e(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x105bc5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x1057fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa48(%rbp), %rdi
callq 0x7708
leaq -0xa49(%rbp), %rdi
callq 0x73d0
testb $0x1, -0xa4a(%rbp)
jne 0x105815
jmp 0x105821
movq -0xc30(%rbp), %rdi
callq 0x72c0
jmp 0x105b6e
movq -0xa28(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0xa14(%rbp)
movq -0xb88(%rbp), %rdi
movl 0x7c8(%rdi), %esi
callq 0x1f760
movq %rax, -0xc38(%rbp)
jmp 0x105851
movq -0xb88(%rbp), %rsi
movq -0xc38(%rbp), %rax
movq %rax, -0xa58(%rbp)
movl 0x7c8(%rsi), %edx
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0xb38(%rbp), %rdi
movl $0x1, %ecx
callq *%rax
jmp 0x105883
leaq 0x3ed05(%rip), %rsi     # 0x14458f
leaq -0xb18(%rbp), %rdi
leaq -0xb38(%rbp), %rdx
callq 0xa6db0
jmp 0x10589f
leaq 0x3f487(%rip), %rdx     # 0x144d2d
leaq -0xaf8(%rbp), %rdi
leaq -0xb18(%rbp), %rsi
callq 0x11910
jmp 0x1058bb
movq -0xb88(%rbp), %rsi
movq -0xa58(%rbp), %rdx
leaq -0xb58(%rbp), %rdi
xorl %ecx, %ecx
callq 0x62230
jmp 0x1058d9
leaq -0xad8(%rbp), %rdi
leaq -0xaf8(%rbp), %rsi
leaq -0xb58(%rbp), %rdx
callq 0x2f7f0
jmp 0x1058f5
leaq 0x47aac(%rip), %rdx     # 0x14d3a8
leaq -0xab8(%rbp), %rdi
leaq -0xad8(%rbp), %rsi
callq 0x11910
jmp 0x105911
movq -0xb88(%rbp), %rdi
movl -0xa14(%rbp), %esi
callq 0xfec0
movq %rax, -0xc40(%rbp)
jmp 0x10592c
movq -0xc40(%rbp), %rsi
movq -0xb88(%rbp), %rdi
movl $0xd, %edx
callq 0x1061b0
movl %eax, -0xc44(%rbp)
jmp 0x10594c
movl -0xc44(%rbp), %eax
movl %eax, -0xb7c(%rbp)
leaq -0xb78(%rbp), %rdi
leaq -0xb7c(%rbp), %rsi
callq 0xa22d0
jmp 0x10596d
leaq -0xa98(%rbp), %rdi
leaq -0xab8(%rbp), %rsi
leaq -0xb78(%rbp), %rdx
callq 0x2f7f0
jmp 0x105989
leaq 0x42715(%rip), %rdx     # 0x1480a5
leaq -0xa78(%rbp), %rdi
leaq -0xa98(%rbp), %rsi
callq 0x11910
jmp 0x1059a5
movq -0xb98(%rbp), %rdi
leaq -0xa78(%rbp), %rsi
callq 0x7470
jmp 0x1059ba
leaq -0xa78(%rbp), %rdi
callq 0x7708
leaq -0xa98(%rbp), %rdi
callq 0x7708
leaq -0xb78(%rbp), %rdi
callq 0x7708
leaq -0xab8(%rbp), %rdi
callq 0x7708
leaq -0xad8(%rbp), %rdi
callq 0x7708
leaq -0xb58(%rbp), %rdi
callq 0x7708
leaq -0xaf8(%rbp), %rdi
callq 0x7708
leaq -0xb18(%rbp), %rdi
callq 0x7708
leaq -0xb38(%rbp), %rdi
callq 0x7708
movq -0xb88(%rbp), %rax
movb $0x1, 0x938(%rax)
jmp 0x105b2f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105b09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105af1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105ae5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105ad9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x105acd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa78(%rbp), %rdi
callq 0x7708
leaq -0xa98(%rbp), %rdi
callq 0x7708
leaq -0xb78(%rbp), %rdi
callq 0x7708
leaq -0xab8(%rbp), %rdi
callq 0x7708
leaq -0xad8(%rbp), %rdi
callq 0x7708
leaq -0xb58(%rbp), %rdi
callq 0x7708
leaq -0xaf8(%rbp), %rdi
callq 0x7708
leaq -0xb18(%rbp), %rdi
callq 0x7708
leaq -0xb38(%rbp), %rdi
callq 0x7708
jmp 0x105b6e
movb -0x81(%rbp), %cl
movq 0x70(%rbp), %rax
andb $0x1, %cl
movb %cl, (%rax)
movb $0x1, -0x24(%rbp)
leaq -0x8b0(%rbp), %rdi
callq 0x7708
leaq -0xd8(%rbp), %rdi
callq 0x7708
leaq -0xa8(%rbp), %rdi
callq 0x7708
testb $0x1, -0x24(%rbp)
jne 0x105ba0
jmp 0x105b94
leaq -0x8b0(%rbp), %rdi
callq 0x7708
leaq -0xd8(%rbp), %rdi
callq 0x7708
leaq -0xa8(%rbp), %rdi
callq 0x7708
jmp 0x105bb0
movq -0xb98(%rbp), %rdi
callq 0x7708
movq -0xb90(%rbp), %rax
addq $0xc50, %rsp            # imm = 0xC50
popq %rbp
retq
movq -0xb98(%rbp), %rdi
callq 0x7708
movq -0x50(%rbp), %rdi
callq 0x7640
nopw %cs:(%rax,%rax)