// File: rossy[P]crossc/SPIRV-Cross/spirv_glsl.cpp
// Function: spirv_cross::CompilerGLSL::layout_for_variable[abi:cxx11](spirv_cross::SPIRVariable const&)
string CompilerGLSL::layout_for_variable(const SPIRVariable &var)
{
	// FIXME: Come up with a better solution for when to disable layouts.
	// Having layouts depend on extensions as well as which types
	// of layouts are used. For now, the simple solution is to just disable
	// layouts for legacy versions.
	if (is_legacy())
		return "";

	vector<string> attr;

	auto &dec = ir.meta[var.self].decoration;
	auto &type = get<SPIRType>(var.basetype);
	auto flags = dec.decoration_flags;
	auto typeflags = ir.meta[type.self].decoration.decoration_flags;

	if (options.vulkan_semantics && var.storage == StorageClassPushConstant)
		attr.push_back("push_constant");

	if (flags.get(DecorationRowMajor))
		attr.push_back("row_major");
	if (flags.get(DecorationColMajor))
		attr.push_back("column_major");

	if (options.vulkan_semantics)
	{
		if (flags.get(DecorationInputAttachmentIndex))
			attr.push_back(join("input_attachment_index = ", dec.input_attachment));
	}

	bool is_block = has_decoration(type.self, DecorationBlock);
	if (flags.get(DecorationLocation) && can_use_io_location(var.storage, is_block))
	{
		Bitset combined_decoration;
		for (uint32_t i = 0; i < ir.meta[type.self].members.size(); i++)
			combined_decoration.merge_or(combined_decoration_for_member(type, i));

		// If our members have location decorations, we don't need to
		// emit location decorations at the top as well (looks weird).
		if (!combined_decoration.get(DecorationLocation))
			attr.push_back(join("location = ", dec.location));
	}

	// Can only declare Component if we can declare location.
	if (flags.get(DecorationComponent) && can_use_io_location(var.storage, is_block))
	{
		if (!options.es)
		{
			if (options.version < 440 && options.version >= 140)
				require_extension_internal("GL_ARB_enhanced_layouts");
			else if (options.version < 140)
				SPIRV_CROSS_THROW("Component decoration is not supported in targets below GLSL 1.40.");
			attr.push_back(join("component = ", dec.component));
		}
		else
			SPIRV_CROSS_THROW("Component decoration is not supported in ES targets.");
	}

	if (flags.get(DecorationIndex))
		attr.push_back(join("index = ", dec.index));

	// Do not emit set = decoration in regular GLSL output, but
	// we need to preserve it in Vulkan GLSL mode.
	if (var.storage != StorageClassPushConstant)
	{
		if (flags.get(DecorationDescriptorSet) && options.vulkan_semantics)
			attr.push_back(join("set = ", dec.set));
	}

	// GL 3.0/GLSL 1.30 is not considered legacy, but it doesn't have UBOs ...
	bool can_use_buffer_blocks = (options.es && options.version >= 300) || (!options.es && options.version >= 140);

	bool can_use_binding;
	if (options.es)
		can_use_binding = options.version >= 310;
	else
		can_use_binding = options.enable_420pack_extension || (options.version >= 420);

	// Make sure we don't emit binding layout for a classic uniform on GLSL 1.30.
	if (!can_use_buffer_blocks && var.storage == StorageClassUniform)
		can_use_binding = false;

	if (can_use_binding && flags.get(DecorationBinding))
		attr.push_back(join("binding = ", dec.binding));

	if (flags.get(DecorationOffset))
		attr.push_back(join("offset = ", dec.offset));

	bool push_constant_block = options.vulkan_semantics && var.storage == StorageClassPushConstant;
	bool ssbo_block = var.storage == StorageClassStorageBuffer ||
	                  (var.storage == StorageClassUniform && typeflags.get(DecorationBufferBlock));

	// Instead of adding explicit offsets for every element here, just assume we're using std140 or std430.
	// If SPIR-V does not comply with either layout, we cannot really work around it.
	if (can_use_buffer_blocks && var.storage == StorageClassUniform && typeflags.get(DecorationBlock))
	{
		if (buffer_is_packing_standard(type, BufferPackingStd140))
			attr.push_back("std140");
		else if (buffer_is_packing_standard(type, BufferPackingStd140EnhancedLayout))
		{
			attr.push_back("std140");
			// Fallback time. We might be able to use the ARB_enhanced_layouts to deal with this difference,
			// however, we can only use layout(offset) on the block itself, not any substructs, so the substructs better be the appropriate layout.
			// Enhanced layouts seem to always work in Vulkan GLSL, so no need for extensions there.
			if (options.es && !options.vulkan_semantics)
				SPIRV_CROSS_THROW("Push constant block cannot be expressed as neither std430 nor std140. ES-targets do "
				                  "not support GL_ARB_enhanced_layouts.");
			if (!options.es && !options.vulkan_semantics && options.version < 440)
				require_extension_internal("GL_ARB_enhanced_layouts");

			// This is a very last minute to check for this, but use this unused decoration to mark that we should emit
			// explicit offsets for this block type.
			// layout_for_variable() will be called before the actual buffer emit.
			// The alternative is a full pass before codegen where we deduce this decoration,
			// but then we are just doing the exact same work twice, and more complexity.
			set_decoration(type.self, DecorationCPacked);
		}
		else
		{
			SPIRV_CROSS_THROW("Uniform buffer cannot be expressed as std140, even with enhanced layouts. You can try "
			                  "flattening this block to "
			                  "support a more flexible layout.");
		}
	}
	else if (can_use_buffer_blocks && (push_constant_block || ssbo_block))
	{
		if (buffer_is_packing_standard(type, BufferPackingStd430))
			attr.push_back("std430");
		else if (buffer_is_packing_standard(type, BufferPackingStd140))
			attr.push_back("std140");
		else if (buffer_is_packing_standard(type, BufferPackingStd140EnhancedLayout))
		{
			attr.push_back("std140");

			// Fallback time. We might be able to use the ARB_enhanced_layouts to deal with this difference,
			// however, we can only use layout(offset) on the block itself, not any substructs, so the substructs better be the appropriate layout.
			// Enhanced layouts seem to always work in Vulkan GLSL, so no need for extensions there.
			if (options.es && !options.vulkan_semantics)
				SPIRV_CROSS_THROW("Push constant block cannot be expressed as neither std430 nor std140. ES-targets do "
				                  "not support GL_ARB_enhanced_layouts.");
			if (!options.es && !options.vulkan_semantics && options.version < 440)
				require_extension_internal("GL_ARB_enhanced_layouts");

			set_decoration(type.self, DecorationCPacked);
		}
		else if (buffer_is_packing_standard(type, BufferPackingStd430EnhancedLayout))
		{
			attr.push_back("std430");
			if (options.es && !options.vulkan_semantics)
				SPIRV_CROSS_THROW("Push constant block cannot be expressed as neither std430 nor std140. ES-targets do "
				                  "not support GL_ARB_enhanced_layouts.");
			if (!options.es && !options.vulkan_semantics && options.version < 440)
				require_extension_internal("GL_ARB_enhanced_layouts");

			set_decoration(type.self, DecorationCPacked);
		}
		else
		{
			SPIRV_CROSS_THROW("Buffer block cannot be expressed as neither std430 nor std140, even with enhanced "
			                  "layouts. You can try flattening this block to support a more flexible layout.");
		}
	}

	// For images, the type itself adds a layout qualifer.
	// Only emit the format for storage images.
	if (type.basetype == SPIRType::Image && type.image.sampled == 2)
	{
		const char *fmt = format_to_glsl(type.image.format);
		if (fmt)
			attr.push_back(fmt);
	}

	if (attr.empty())
		return "";

	string res = "layout(";
	res += merge(attr);
	res += ") ";
	return res;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x760, %rsp            # imm = 0x760
movq %rdi, -0x5e8(%rbp)
movq %rdi, %rax
movq %rax, -0x5e0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x5d8(%rbp)
callq 0x9f610
testb $0x1, %al
jne 0x5e4fe
jmp 0x5e552
leaq -0x19(%rbp), %rdi
movq %rdi, -0x5f0(%rbp)
callq 0x7650
movq -0x5e8(%rbp), %rdi
movq -0x5f0(%rbp), %rdx
leaq 0xe037b(%rip), %rsi     # 0x13e89e
callq 0x7520
jmp 0x5e52a
leaq -0x19(%rbp), %rdi
callq 0x73d0
jmp 0x6013f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x19(%rbp), %rdi
callq 0x73d0
jmp 0x6014f
leaq -0x48(%rbp), %rdi
callq 0x30390
movq -0x5d8(%rbp), %rdi
addq $0x38, %rdi
movq -0x18(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0xead0
movq -0x5d8(%rbp), %rdi
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movl 0xc(%rax), %esi
callq 0xea90
movq %rax, -0x5f8(%rbp)
jmp 0x5e594
movq -0x5f8(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rsi
addq $0x60, %rsi
leaq -0x98(%rbp), %rdi
callq 0xef10
jmp 0x5e5b5
movq -0x5d8(%rbp), %rdi
addq $0x38, %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0xead0
movq %rax, %rsi
addq $0x60, %rsi
leaq -0xd8(%rbp), %rdi
callq 0xef10
jmp 0x5e5e3
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5e6b9
movq -0x18(%rbp), %rax
cmpl $0x9, 0x10(%rax)
jne 0x5e6b9
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x600(%rbp)
callq 0x7650
movq -0x600(%rbp), %rdx
leaq 0xe2c9a(%rip), %rsi     # 0x1412c0
leaq -0xf8(%rbp), %rdi
callq 0x7520
jmp 0x5e634
leaq -0x48(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0xecd0
jmp 0x5e646
leaq -0xf8(%rbp), %rdi
callq 0x7708
leaq -0xf9(%rbp), %rdi
callq 0x73d0
jmp 0x5e6b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x60134
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x60128
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5e6a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x7708
leaq -0xf9(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
leaq -0x98(%rbp), %rdi
movl $0x4, %esi
callq 0xef50
movb %al, -0x601(%rbp)
jmp 0x5e6d2
movb -0x601(%rbp), %al
testb $0x1, %al
jne 0x5e6e1
jmp 0x5e784
leaq -0x121(%rbp), %rdi
movq %rdi, -0x610(%rbp)
callq 0x7650
movq -0x610(%rbp), %rdx
leaq 0xe28a8(%rip), %rsi     # 0x140faa
leaq -0x120(%rbp), %rdi
callq 0x7520
jmp 0x5e710
leaq -0x48(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0xecd0
jmp 0x5e722
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x121(%rbp), %rdi
callq 0x73d0
jmp 0x5e784
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x6011c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5e773
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x7708
leaq -0x121(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
leaq -0x98(%rbp), %rdi
movl $0x5, %esi
callq 0xef50
movb %al, -0x611(%rbp)
jmp 0x5e79d
movb -0x611(%rbp), %al
testb $0x1, %al
jne 0x5e7ac
jmp 0x5e83e
leaq -0x149(%rbp), %rdi
movq %rdi, -0x620(%rbp)
callq 0x7650
movq -0x620(%rbp), %rdx
leaq 0xe2b01(%rip), %rsi     # 0x1412ce
leaq -0x148(%rbp), %rdi
callq 0x7520
jmp 0x5e7db
leaq -0x48(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xecd0
jmp 0x5e7ed
leaq -0x148(%rbp), %rdi
callq 0x7708
leaq -0x149(%rbp), %rdi
callq 0x73d0
jmp 0x5e83e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5e82d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x7708
leaq -0x149(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5e8d6
leaq -0x98(%rbp), %rdi
movl $0x2b, %esi
callq 0xef50
movb %al, -0x621(%rbp)
jmp 0x5e86b
movb -0x621(%rbp), %al
testb $0x1, %al
jne 0x5e877
jmp 0x5e8d4
movq -0x50(%rbp), %rdx
addq $0xc0, %rdx
leaq 0xe2a52(%rip), %rsi     # 0x1412db
leaq -0x170(%rbp), %rdi
callq 0x9f860
jmp 0x5e897
leaq -0x48(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xecd0
jmp 0x5e8a9
leaq -0x170(%rbp), %rdi
callq 0x7708
jmp 0x5e8d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x7708
jmp 0x6011c
jmp 0x5e8d6
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %esi
movl $0x2, %edx
callq 0x1f560
movb %al, -0x622(%rbp)
jmp 0x5e8f6
movb -0x622(%rbp), %al
andb $0x1, %al
movb %al, -0x171(%rbp)
leaq -0x98(%rbp), %rdi
movl $0x1e, %esi
callq 0xef50
movb %al, -0x623(%rbp)
jmp 0x5e91d
movb -0x623(%rbp), %al
testb $0x1, %al
jne 0x5e92c
jmp 0x5eae2
movq -0x5d8(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x10(%rax), %esi
movzbl -0x171(%rbp), %edx
andl $0x1, %edx
callq 0x5cf90
movb %al, -0x624(%rbp)
jmp 0x5e951
movb -0x624(%rbp), %al
testb $0x1, %al
jne 0x5e960
jmp 0x5eae2
leaq -0x1b8(%rbp), %rdi
callq 0x10710
movl $0x0, -0x1bc(%rbp)
movq -0x5d8(%rbp), %rdi
movl -0x1bc(%rbp), %eax
movq %rax, -0x630(%rbp)
addq $0x8, %rdi
addq $0x30, %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, %esi
callq 0xead0
movq %rax, %rdi
addq $0xd0, %rdi
callq 0x2eca0
movq %rax, %rcx
movq -0x630(%rbp), %rax
cmpq %rcx, %rax
jae 0x5ea44
movq -0x5d8(%rbp), %rsi
movq -0x58(%rbp), %rdx
movl -0x1bc(%rbp), %ecx
leaq -0x200(%rbp), %rdi
callq 0x2c660
jmp 0x5e9e1
leaq -0x1b8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x32b70
jmp 0x5e9f6
leaq -0x200(%rbp), %rdi
callq 0xf250
movl -0x1bc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1bc(%rbp)
jmp 0x5e976
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5ead1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xf250
jmp 0x5ead1
leaq -0x1b8(%rbp), %rdi
movl $0x1e, %esi
callq 0xef50
movb %al, -0x631(%rbp)
jmp 0x5ea5d
movb -0x631(%rbp), %al
testb $0x1, %al
jne 0x5eac3
jmp 0x5ea69
movq -0x50(%rbp), %rdx
addq $0xa4, %rdx
leaq 0xe2539(%rip), %rsi     # 0x140fb4
leaq -0x220(%rbp), %rdi
callq 0x9ee20
jmp 0x5ea89
leaq -0x48(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xecd0
jmp 0x5ea9b
leaq -0x220(%rbp), %rdi
callq 0x7708
jmp 0x5eac3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x7708
jmp 0x5ead1
leaq -0x1b8(%rbp), %rdi
callq 0xf250
jmp 0x5eae2
leaq -0x1b8(%rbp), %rdi
callq 0xf250
jmp 0x6011c
leaq -0x98(%rbp), %rdi
movl $0x1f, %esi
callq 0xef50
movb %al, -0x632(%rbp)
jmp 0x5eafb
movb -0x632(%rbp), %al
testb $0x1, %al
jne 0x5eb0a
jmp 0x5ee33
movq -0x5d8(%rbp), %rdi
movq -0x18(%rbp), %rax
movl 0x10(%rax), %esi
movzbl -0x171(%rbp), %edx
andl $0x1, %edx
callq 0x5cf90
movb %al, -0x633(%rbp)
jmp 0x5eb2f
movb -0x633(%rbp), %al
testb $0x1, %al
jne 0x5eb3e
jmp 0x5ee33
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x5ed61
movq -0x5d8(%rbp), %rax
cmpl $0x1b8, 0x438(%rax)     # imm = 0x1B8
jae 0x5ec18
movq -0x5d8(%rbp), %rax
cmpl $0x8c, 0x438(%rax)
jb 0x5ec18
leaq -0x241(%rbp), %rdi
movq %rdi, -0x640(%rbp)
callq 0x7650
movq -0x640(%rbp), %rdx
leaq 0xe241f(%rip), %rsi     # 0x140fc0
leaq -0x240(%rbp), %rdi
callq 0x7520
jmp 0x5ebaf
movq -0x5d8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x589d0
jmp 0x5ebc4
leaq -0x240(%rbp), %rdi
callq 0x7708
leaq -0x241(%rbp), %rdi
callq 0x73d0
jmp 0x5ed01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5ec07
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x7708
leaq -0x241(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rax
cmpl $0x8c, 0x438(%rax)
jae 0x5ecff
movb $0x1, -0x26a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x650(%rbp)
leaq -0x269(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x7650
movq -0x648(%rbp), %rdx
leaq 0xe2370(%rip), %rsi     # 0x140fd8
leaq -0x268(%rbp), %rdi
callq 0x7520
jmp 0x5ec76
movq -0x650(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x9c50
jmp 0x5ec8b
movq -0x650(%rbp), %rdi
movb $0x0, -0x26a(%rbp)
leaq 0x14f138(%rip), %rsi    # 0x1addd8
leaq -0x55017(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5ecd7
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 0x5ecee
jmp 0x5ecfa
movq -0x650(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
jmp 0x5ed01
movq -0x50(%rbp), %rdx
addq $0xa8, %rdx
leaq 0xe2307(%rip), %rsi     # 0x14101a
leaq -0x290(%rbp), %rdi
callq 0x9f680
jmp 0x5ed21
leaq -0x48(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0xecd0
jmp 0x5ed33
leaq -0x290(%rbp), %rdi
callq 0x7708
jmp 0x5ee31
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x7708
jmp 0x6011c
movb $0x1, -0x2b2(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x660(%rbp)
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x7650
movq -0x658(%rbp), %rdx
leaq 0xe228d(%rip), %rsi     # 0x141027
leaq -0x2b0(%rbp), %rdi
callq 0x7520
jmp 0x5eda8
movq -0x660(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x9c50
jmp 0x5edbd
movq -0x660(%rbp), %rdi
movb $0x0, -0x2b2(%rbp)
leaq 0x14f006(%rip), %rsi    # 0x1addd8
leaq -0x55149(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5ee09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x7708
leaq -0x2b1(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x2b2(%rbp)
jne 0x5ee20
jmp 0x5ee2c
movq -0x660(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
jmp 0x5ee33
leaq -0x98(%rbp), %rdi
movl $0x20, %esi
callq 0xef50
movb %al, -0x661(%rbp)
jmp 0x5ee4c
movb -0x661(%rbp), %al
testb $0x1, %al
jne 0x5ee58
jmp 0x5eeb5
movq -0x50(%rbp), %rdx
addq $0xc8, %rdx
leaq 0xe2482(%rip), %rsi     # 0x1412ec
leaq -0x2d8(%rbp), %rdi
callq 0x9f910
jmp 0x5ee78
leaq -0x48(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0xecd0
jmp 0x5ee8a
leaq -0x2d8(%rbp), %rdi
callq 0x7708
jmp 0x5eeb5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x7708
jmp 0x6011c
movq -0x18(%rbp), %rax
cmpl $0x9, 0x10(%rax)
je 0x5ef57
leaq -0x98(%rbp), %rdi
movl $0x22, %esi
callq 0xef50
movb %al, -0x662(%rbp)
jmp 0x5eedc
movb -0x662(%rbp), %al
testb $0x1, %al
jne 0x5eee8
jmp 0x5ef55
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
je 0x5ef55
movq -0x50(%rbp), %rdx
addq $0xac, %rdx
leaq 0xe2155(%rip), %rsi     # 0x14105f
leaq -0x2f8(%rbp), %rdi
callq 0x9f9c0
jmp 0x5ef18
leaq -0x48(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0xecd0
jmp 0x5ef2a
leaq -0x2f8(%rbp), %rdi
callq 0x7708
jmp 0x5ef55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x7708
jmp 0x6011c
jmp 0x5ef57
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
je 0x5ef82
movq -0x5d8(%rbp), %rcx
movb $0x1, %al
cmpl $0x12c, 0x438(%rcx)     # imm = 0x12C
movb %al, -0x663(%rbp)
jae 0x5efc0
movq -0x5d8(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x43c(%rcx)
movb %al, -0x664(%rbp)
jne 0x5efb4
movq -0x5d8(%rbp), %rax
cmpl $0x8c, 0x438(%rax)
setae %al
movb %al, -0x664(%rbp)
movb -0x664(%rbp), %al
movb %al, -0x663(%rbp)
movq -0x5d8(%rbp), %rax
movb -0x663(%rbp), %cl
andb $0x1, %cl
movb %cl, -0x2f9(%rbp)
testb $0x1, 0x43c(%rax)
je 0x5effd
movq -0x5d8(%rbp), %rax
cmpl $0x136, 0x438(%rax)     # imm = 0x136
setae %al
andb $0x1, %al
movb %al, -0x2fa(%rbp)
jmp 0x5f03d
movq -0x5d8(%rbp), %rcx
movb $0x1, %al
testb $0x1, 0x441(%rcx)
movb %al, -0x665(%rbp)
jne 0x5f02f
movq -0x5d8(%rbp), %rax
cmpl $0x1a4, 0x438(%rax)     # imm = 0x1A4
setae %al
movb %al, -0x665(%rbp)
movb -0x665(%rbp), %al
andb $0x1, %al
movb %al, -0x2fa(%rbp)
testb $0x1, -0x2f9(%rbp)
jne 0x5f057
movq -0x18(%rbp), %rax
cmpl $0x2, 0x10(%rax)
jne 0x5f057
movb $0x0, -0x2fa(%rbp)
testb $0x1, -0x2fa(%rbp)
je 0x5f0e6
leaq -0x98(%rbp), %rdi
movl $0x21, %esi
callq 0xef50
movb %al, -0x666(%rbp)
jmp 0x5f07d
movb -0x666(%rbp), %al
testb $0x1, %al
jne 0x5f089
jmp 0x5f0e6
movq -0x50(%rbp), %rdx
addq $0xb0, %rdx
leaq 0xe225a(%rip), %rsi     # 0x1412f5
leaq -0x320(%rbp), %rdi
callq 0x9fa70
jmp 0x5f0a9
leaq -0x48(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0xecd0
jmp 0x5f0bb
leaq -0x320(%rbp), %rdi
callq 0x7708
jmp 0x5f0e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x7708
jmp 0x6011c
leaq -0x98(%rbp), %rdi
movl $0x23, %esi
callq 0xef50
movb %al, -0x667(%rbp)
jmp 0x5f0ff
movb -0x667(%rbp), %al
testb $0x1, %al
jne 0x5f10b
jmp 0x5f168
movq -0x50(%rbp), %rdx
addq $0xb4, %rdx
leaq 0xe1f3f(%rip), %rsi     # 0x14105c
leaq -0x340(%rbp), %rdi
callq 0x9f730
jmp 0x5f12b
leaq -0x48(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0xecd0
jmp 0x5f13d
leaq -0x340(%rbp), %rdi
callq 0x7708
jmp 0x5f168
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x7708
jmp 0x6011c
movq -0x5d8(%rbp), %rcx
xorl %eax, %eax
testb $0x1, 0x43e(%rcx)
movb %al, -0x668(%rbp)
je 0x5f191
movq -0x18(%rbp), %rax
cmpl $0x9, 0x10(%rax)
sete %al
movb %al, -0x668(%rbp)
movb -0x668(%rbp), %al
andb $0x1, %al
movb %al, -0x341(%rbp)
movq -0x18(%rbp), %rcx
movb $0x1, %al
cmpl $0xc, 0x10(%rcx)
movb %al, -0x669(%rbp)
je 0x5f1f6
movq -0x18(%rbp), %rcx
xorl %eax, %eax
cmpl $0x2, 0x10(%rcx)
movb %al, -0x66a(%rbp)
jne 0x5f1ea
leaq -0xd8(%rbp), %rdi
movl $0x3, %esi
callq 0xef50
movb %al, -0x66b(%rbp)
jmp 0x5f1dc
movb -0x66b(%rbp), %al
movb %al, -0x66a(%rbp)
jmp 0x5f1ea
movb -0x66a(%rbp), %al
movb %al, -0x669(%rbp)
movb -0x669(%rbp), %al
andb $0x1, %al
movb %al, -0x342(%rbp)
testb $0x1, -0x2f9(%rbp)
je 0x5f695
movq -0x18(%rbp), %rax
cmpl $0x2, 0x10(%rax)
jne 0x5f695
leaq -0xd8(%rbp), %rdi
movl $0x2, %esi
callq 0xef50
movb %al, -0x66c(%rbp)
jmp 0x5f238
movb -0x66c(%rbp), %al
testb $0x1, %al
jne 0x5f247
jmp 0x5f695
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl %ecx, %edx
callq 0x5e040
movb %al, -0x66d(%rbp)
jmp 0x5f269
movb -0x66d(%rbp), %al
testb $0x1, %al
jne 0x5f278
jmp 0x5f30d
leaq -0x369(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x7650
movq -0x678(%rbp), %rdx
leaq 0xe2067(%rip), %rsi     # 0x141300
leaq -0x368(%rbp), %rdi
callq 0x7520
jmp 0x5f2a7
leaq -0x48(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0xecd0
jmp 0x5f2b9
leaq -0x368(%rbp), %rdi
callq 0x7708
leaq -0x369(%rbp), %rdi
callq 0x73d0
jmp 0x5f690
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f2fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x368(%rbp), %rdi
callq 0x7708
leaq -0x369(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x5e040
movb %al, -0x679(%rbp)
jmp 0x5f332
movb -0x679(%rbp), %al
testb $0x1, %al
jne 0x5f341
jmp 0x5f5be
leaq -0x391(%rbp), %rdi
movq %rdi, -0x688(%rbp)
callq 0x7650
movq -0x688(%rbp), %rdx
leaq 0xe1f9e(%rip), %rsi     # 0x141300
leaq -0x390(%rbp), %rdi
callq 0x7520
jmp 0x5f370
leaq -0x48(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0xecd0
jmp 0x5f382
leaq -0x390(%rbp), %rdi
callq 0x7708
leaq -0x391(%rbp), %rdi
callq 0x73d0
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
je 0x5f4c9
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5f4c9
movb $0x1, -0x3ba(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x698(%rbp)
leaq -0x3b9(%rbp), %rdi
movq %rdi, -0x690(%rbp)
callq 0x7650
movq -0x690(%rbp), %rdx
leaq 0xe1f0c(%rip), %rsi     # 0x141307
leaq -0x3b8(%rbp), %rdi
callq 0x7520
jmp 0x5f409
movq -0x698(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x9c50
jmp 0x5f41e
movq -0x698(%rbp), %rdi
movb $0x0, -0x3ba(%rbp)
leaq 0x14e9a5(%rip), %rsi    # 0x1addd8
leaq -0x557aa(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f46a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x7708
leaq -0x391(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f4a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x7708
leaq -0x3b9(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x3ba(%rbp)
jne 0x5f4b8
jmp 0x5f4c4
movq -0x698(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x5f59d
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5f59d
movq -0x5d8(%rbp), %rax
cmpl $0x1b8, 0x438(%rax)     # imm = 0x1B8
jae 0x5f59d
leaq -0x3e1(%rbp), %rdi
movq %rdi, -0x6a0(%rbp)
callq 0x7650
movq -0x6a0(%rbp), %rdx
leaq 0xe1a97(%rip), %rsi     # 0x140fc0
leaq -0x3e0(%rbp), %rdi
callq 0x7520
jmp 0x5f537
movq -0x5d8(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x589d0
jmp 0x5f54c
leaq -0x3e0(%rbp), %rdi
callq 0x7708
leaq -0x3e1(%rbp), %rdi
callq 0x73d0
jmp 0x5f59d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f58c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x7708
leaq -0x3e1(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %esi
movl $0xa, %edx
xorl %ecx, %ecx
callq 0x232d0
jmp 0x5f5b9
jmp 0x5f68e
movb $0x1, -0x40a(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x6b0(%rbp)
leaq -0x409(%rbp), %rdi
movq %rdi, -0x6a8(%rbp)
callq 0x7650
movq -0x6a8(%rbp), %rdx
leaq 0xe1d89(%rip), %rsi     # 0x141380
leaq -0x408(%rbp), %rdi
callq 0x7520
jmp 0x5f605
movq -0x6b0(%rbp), %rdi
leaq -0x408(%rbp), %rsi
callq 0x9c50
jmp 0x5f61a
movq -0x6b0(%rbp), %rdi
movb $0x0, -0x40a(%rbp)
leaq 0x14e7a9(%rip), %rsi    # 0x1addd8
leaq -0x559a6(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f666
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x408(%rbp), %rdi
callq 0x7708
leaq -0x409(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x40a(%rbp)
jne 0x5f67d
jmp 0x5f689
movq -0x6b0(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
jmp 0x5f690
jmp 0x5fe83
testb $0x1, -0x2f9(%rbp)
je 0x5fe81
testb $0x1, -0x341(%rbp)
jne 0x5f6b8
testb $0x1, -0x342(%rbp)
je 0x5fe81
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x5e040
movb %al, -0x6b1(%rbp)
jmp 0x5f6dd
movb -0x6b1(%rbp), %al
testb $0x1, %al
jne 0x5f6ec
jmp 0x5f781
leaq -0x431(%rbp), %rdi
movq %rdi, -0x6c0(%rbp)
callq 0x7650
movq -0x6c0(%rbp), %rdx
leaq 0xe1d02(%rip), %rsi     # 0x14140f
leaq -0x430(%rbp), %rdi
callq 0x7520
jmp 0x5f71b
leaq -0x48(%rbp), %rdi
leaq -0x430(%rbp), %rsi
callq 0xecd0
jmp 0x5f72d
leaq -0x430(%rbp), %rdi
callq 0x7708
leaq -0x431(%rbp), %rdi
callq 0x73d0
jmp 0x5fe7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f770
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x7708
leaq -0x431(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movl %ecx, %edx
callq 0x5e040
movb %al, -0x6c1(%rbp)
jmp 0x5f7a3
movb -0x6c1(%rbp), %al
testb $0x1, %al
jne 0x5f7b2
jmp 0x5f847
leaq -0x459(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0x7650
movq -0x6d0(%rbp), %rdx
leaq 0xe1b2d(%rip), %rsi     # 0x141300
leaq -0x458(%rbp), %rdi
callq 0x7520
jmp 0x5f7e1
leaq -0x48(%rbp), %rdi
leaq -0x458(%rbp), %rsi
callq 0xecd0
jmp 0x5f7f3
leaq -0x458(%rbp), %rdi
callq 0x7708
leaq -0x459(%rbp), %rdi
callq 0x73d0
jmp 0x5fe7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f836
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x458(%rbp), %rdi
callq 0x7708
leaq -0x459(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl $0x2, %edx
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x5e040
movb %al, -0x6d1(%rbp)
jmp 0x5f86c
movb -0x6d1(%rbp), %al
testb $0x1, %al
jne 0x5f87b
jmp 0x5faf8
leaq -0x481(%rbp), %rdi
movq %rdi, -0x6e0(%rbp)
callq 0x7650
movq -0x6e0(%rbp), %rdx
leaq 0xe1a64(%rip), %rsi     # 0x141300
leaq -0x480(%rbp), %rdi
callq 0x7520
jmp 0x5f8aa
leaq -0x48(%rbp), %rdi
leaq -0x480(%rbp), %rsi
callq 0xecd0
jmp 0x5f8bc
leaq -0x480(%rbp), %rdi
callq 0x7708
leaq -0x481(%rbp), %rdi
callq 0x73d0
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
je 0x5fa03
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5fa03
movb $0x1, -0x4aa(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x6f0(%rbp)
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x6e8(%rbp)
callq 0x7650
movq -0x6e8(%rbp), %rdx
leaq 0xe19d2(%rip), %rsi     # 0x141307
leaq -0x4a8(%rbp), %rdi
callq 0x7520
jmp 0x5f943
movq -0x6f0(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
callq 0x9c50
jmp 0x5f958
movq -0x6f0(%rbp), %rdi
movb $0x0, -0x4aa(%rbp)
leaq 0x14e46b(%rip), %rsi    # 0x1addd8
leaq -0x55ce4(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f9a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x7708
leaq -0x481(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5f9db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x4a8(%rbp), %rdi
callq 0x7708
leaq -0x4a9(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x4aa(%rbp)
jne 0x5f9f2
jmp 0x5f9fe
movq -0x6f0(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x5fad7
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5fad7
movq -0x5d8(%rbp), %rax
cmpl $0x1b8, 0x438(%rax)     # imm = 0x1B8
jae 0x5fad7
leaq -0x4d1(%rbp), %rdi
movq %rdi, -0x6f8(%rbp)
callq 0x7650
movq -0x6f8(%rbp), %rdx
leaq 0xe155d(%rip), %rsi     # 0x140fc0
leaq -0x4d0(%rbp), %rdi
callq 0x7520
jmp 0x5fa71
movq -0x5d8(%rbp), %rdi
leaq -0x4d0(%rbp), %rsi
callq 0x589d0
jmp 0x5fa86
leaq -0x4d0(%rbp), %rdi
callq 0x7708
leaq -0x4d1(%rbp), %rdi
callq 0x73d0
jmp 0x5fad7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5fac6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x4d0(%rbp), %rdi
callq 0x7708
leaq -0x4d1(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %esi
movl $0xa, %edx
xorl %ecx, %ecx
callq 0x232d0
jmp 0x5faf3
jmp 0x5fe7b
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rsi
movl $0x3, %edx
xorl %ecx, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
callq 0x5e040
movb %al, -0x6f9(%rbp)
jmp 0x5fb1d
movb -0x6f9(%rbp), %al
testb $0x1, %al
jne 0x5fb2c
jmp 0x5fda9
leaq -0x4f9(%rbp), %rdi
movq %rdi, -0x708(%rbp)
callq 0x7650
movq -0x708(%rbp), %rdx
leaq 0xe18c2(%rip), %rsi     # 0x14140f
leaq -0x4f8(%rbp), %rdi
callq 0x7520
jmp 0x5fb5b
leaq -0x48(%rbp), %rdi
leaq -0x4f8(%rbp), %rsi
callq 0xecd0
jmp 0x5fb6d
leaq -0x4f8(%rbp), %rdi
callq 0x7708
leaq -0x4f9(%rbp), %rdi
callq 0x73d0
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
je 0x5fcb4
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5fcb4
movb $0x1, -0x522(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x718(%rbp)
leaq -0x521(%rbp), %rdi
movq %rdi, -0x710(%rbp)
callq 0x7650
movq -0x710(%rbp), %rdx
leaq 0xe1721(%rip), %rsi     # 0x141307
leaq -0x520(%rbp), %rdi
callq 0x7520
jmp 0x5fbf4
movq -0x718(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0x9c50
jmp 0x5fc09
movq -0x718(%rbp), %rdi
movb $0x0, -0x522(%rbp)
leaq 0x14e1ba(%rip), %rsi    # 0x1addd8
leaq -0x55f95(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5fc55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x4f8(%rbp), %rdi
callq 0x7708
leaq -0x4f9(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5fc8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x520(%rbp), %rdi
callq 0x7708
leaq -0x521(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x522(%rbp)
jne 0x5fca3
jmp 0x5fcaf
movq -0x718(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43c(%rax)
jne 0x5fd88
movq -0x5d8(%rbp), %rax
testb $0x1, 0x43e(%rax)
jne 0x5fd88
movq -0x5d8(%rbp), %rax
cmpl $0x1b8, 0x438(%rax)     # imm = 0x1B8
jae 0x5fd88
leaq -0x549(%rbp), %rdi
movq %rdi, -0x720(%rbp)
callq 0x7650
movq -0x720(%rbp), %rdx
leaq 0xe12ac(%rip), %rsi     # 0x140fc0
leaq -0x548(%rbp), %rdi
callq 0x7520
jmp 0x5fd22
movq -0x5d8(%rbp), %rdi
leaq -0x548(%rbp), %rsi
callq 0x589d0
jmp 0x5fd37
leaq -0x548(%rbp), %rdi
callq 0x7708
leaq -0x549(%rbp), %rdi
callq 0x73d0
jmp 0x5fd88
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5fd77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x7708
leaq -0x549(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x8(%rax), %esi
movl $0xa, %edx
xorl %ecx, %ecx
callq 0x232d0
jmp 0x5fda4
jmp 0x5fe79
movb $0x1, -0x572(%rbp)
movl $0x10, %edi
callq 0x71a0
movq %rax, -0x730(%rbp)
leaq -0x571(%rbp), %rdi
movq %rdi, -0x728(%rbp)
callq 0x7650
movq -0x728(%rbp), %rdx
leaq 0xe1634(%rip), %rsi     # 0x141416
leaq -0x570(%rbp), %rdi
callq 0x7520
jmp 0x5fdf0
movq -0x730(%rbp), %rdi
leaq -0x570(%rbp), %rsi
callq 0x9c50
jmp 0x5fe05
movq -0x730(%rbp), %rdi
movb $0x0, -0x572(%rbp)
leaq 0x14dfbe(%rip), %rsi    # 0x1addd8
leaq -0x56191(%rip), %rdx    # 0x9c90
callq 0x7610
jmp 0x60158
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5fe51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x570(%rbp), %rdi
callq 0x7708
leaq -0x571(%rbp), %rdi
callq 0x73d0
testb $0x1, -0x572(%rbp)
jne 0x5fe68
jmp 0x5fe74
movq -0x730(%rbp), %rdi
callq 0x72c0
jmp 0x6011c
jmp 0x5fe7b
jmp 0x5fe7d
jmp 0x5fe7f
jmp 0x5fe81
jmp 0x5fe83
movq -0x58(%rbp), %rax
cmpl $0xd, 0xc(%rax)
jne 0x5ff7f
movq -0x58(%rbp), %rax
cmpl $0x2, 0x8c(%rax)
jne 0x5ff7f
movq -0x5d8(%rbp), %rdi
movq -0x58(%rbp), %rax
movl 0x90(%rax), %esi
callq 0x5d120
movq %rax, -0x738(%rbp)
jmp 0x5fec1
movq -0x738(%rbp), %rax
movq %rax, -0x580(%rbp)
cmpq $0x0, -0x580(%rbp)
je 0x5ff7d
movq -0x580(%rbp), %rax
movq %rax, -0x748(%rbp)
leaq -0x5a1(%rbp), %rdi
movq %rdi, -0x740(%rbp)
callq 0x7650
movq -0x748(%rbp), %rsi
movq -0x740(%rbp), %rdx
leaq -0x5a0(%rbp), %rdi
callq 0x7520
jmp 0x5ff1a
leaq -0x48(%rbp), %rdi
leaq -0x5a0(%rbp), %rsi
callq 0xecd0
jmp 0x5ff2c
leaq -0x5a0(%rbp), %rdi
callq 0x7708
leaq -0x5a1(%rbp), %rdi
callq 0x73d0
jmp 0x5ff7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x5ff6c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5a0(%rbp), %rdi
callq 0x7708
leaq -0x5a1(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
jmp 0x5ff7f
leaq -0x48(%rbp), %rdi
callq 0x9f150
testb $0x1, %al
jne 0x5ff8e
jmp 0x5fff5
leaq -0x5a2(%rbp), %rdi
movq %rdi, -0x750(%rbp)
callq 0x7650
movq -0x5e8(%rbp), %rdi
movq -0x750(%rbp), %rdx
leaq 0xde8e8(%rip), %rsi     # 0x13e89e
callq 0x7520
jmp 0x5ffbd
leaq -0x5a2(%rbp), %rdi
callq 0x73d0
movl $0x1, -0x5a8(%rbp)
jmp 0x600f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5a2(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movb $0x0, -0x5a9(%rbp)
leaq -0x5aa(%rbp), %rdi
movq %rdi, -0x758(%rbp)
callq 0x7650
movq -0x5e8(%rbp), %rdi
movq -0x758(%rbp), %rdx
leaq 0xe0f02(%rip), %rsi     # 0x140f26
callq 0x7520
jmp 0x6002b
leaq -0x5aa(%rbp), %rdi
callq 0x73d0
leaq -0x5d0(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x9f2c0
jmp 0x60049
movq -0x5e8(%rbp), %rdi
leaq -0x5d0(%rbp), %rsi
callq 0x7470
jmp 0x6005e
leaq -0x5d0(%rbp), %rdi
callq 0x7708
movq -0x5e8(%rbp), %rdi
leaq 0xe5271(%rip), %rsi     # 0x1452e9
callq 0x7340
jmp 0x6007f
movb $0x1, -0x5a9(%rbp)
movl $0x1, -0x5a8(%rbp)
testb $0x1, -0x5a9(%rbp)
jne 0x600e9
jmp 0x600dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5aa(%rbp), %rdi
callq 0x73d0
jmp 0x6011c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
jmp 0x600eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x28(%rbp)
movl %eax, -0x2c(%rbp)
leaq -0x5d0(%rbp), %rdi
callq 0x7708
jmp 0x600eb
movq -0x5e8(%rbp), %rdi
callq 0x7708
jmp 0x600f9
movq -0x5e8(%rbp), %rdi
callq 0x7708
jmp 0x6011c
leaq -0xd8(%rbp), %rdi
callq 0xf250
leaq -0x98(%rbp), %rdi
callq 0xf250
leaq -0x48(%rbp), %rdi
callq 0x14cd0
jmp 0x6013f
leaq -0xd8(%rbp), %rdi
callq 0xf250
leaq -0x98(%rbp), %rdi
callq 0xf250
leaq -0x48(%rbp), %rdi
callq 0x14cd0
jmp 0x6014f
movq -0x5e0(%rbp), %rax
addq $0x760, %rsp            # imm = 0x760
popq %rbp
retq
movq -0x28(%rbp), %rdi
callq 0x7640
nopl (%rax,%rax)