// File: /workspace/github_cpp_makefile_star2_O3/CobaltXII[P]cxcc/./semantic/semantic_analyzer.hpp
// Function: semantic_analyzer_t::validate_expression(expression_t*, symbol_table_t)
bool validate_expression(expression_t* expression, symbol_table_t symbols) {
		expression_type(expression, symbols);
		if (expression->type == et_character_literal) {
			// Expand the character literal.
			character_t expanded_literal = expand_literal(expression->character_literal, expression);
			if (expanded_literal.length() != 1) {
				die("multi-character character literal", expression);
				return false;
			}
			expression->character_literal = expanded_literal;
		} else if (expression->type == et_string_literal) {
			expression->string_literal = expand_literal(expression->string_literal, expression);
		} else if (expression->type == et_identifier) {
			// Identifiers are invalid if they are undefined or reserved.
			if (is_reserved(expression->identifier)) {
				die("cannot refer to reserved identifier '" + expression->identifier + "'", expression);
				return false;
			}
			else if (!symbols.exists(expression->identifier)) {
				die("unknown identifier '" + expression->identifier + "'", expression);
				return false;
			}
		} else if (expression->type == et_indexing) {
			indexing_expression_t indexing = expression->indexing;
			// An indexing expression is invalid if the array is invalid or
			// the index is invalid.
			if (!validate_expression(indexing.array, symbols)) {
				return false;
			} else if (!validate_expression(indexing.index, symbols)) {
				return false;
			}
			// An indexing expression is invalid if the index expression's
			// return type cannot be converted to int.
			type_t index_type = expression_type(indexing.index, symbols);
			if (!can_convert(index_type, {0})) {
				die("cannot convert index expression of type '" + prettyprint_type(index_type) + "' to 'int'", expression);
				return false;
			}
		} else if (expression->type == et_function_call) {
			function_call_expression_t function_call = expression->function_call;
			// It is valid to refer to functions that have not been defined.
			// However, there are many rules that can render an expression
			// invalid if the function being referred to has been defined.
			if (symbols.exists(function_call.function)) {
				// A function call expression is invalid if there is a
				// non-function symbol under the function call's function
				// identifier.
				if (!symbols.fetch(function_call.function).is_function) {
					die("called variable '" + function_call.function + "' is not a function", expression);
					return false;
				}
				// A function call expression is invalid if it's parameter count
				// is not equal to the parameter count of it's registered symbol.
				symbol_t function = symbols.fetch(function_call.function);
				if (function.parameters.size() != function_call.arguments.size()) {
					die("no matching function call to '" + function_call.function + "'", expression);
					return false;
				}
				// A function call expression is invalid if any of it's parameter
				// expression types cannot be converted to it's corresponding type
				// as defined in the function's registered symbol.
				for (int i = 0; i < function_call.arguments.size(); i++) {
					type_t parameter_type = expression_type(function_call.arguments[i], symbols);
					type_t expected_type = function.parameters[i].type;
					if (!can_convert(parameter_type, expected_type)) {
						die("cannot convert parameter expression of type '" + prettyprint_type(parameter_type) + "' to '" + prettyprint_type(expected_type) + "'", function_call.arguments[i]);
						return false;
					}
				}
			}
			// A function call expression is invalid if any of it's parameter
			// expressions are invalid.
			for (int i = 0; i < function_call.arguments.size(); i++) {
				if (!validate_expression(function_call.arguments[i], symbols)) {
					return false;
				}
			}
		} else if (expression->type == et_binary) {
			binary_expression_t binary = expression->binary;
			// Any binary expression is invalid if the operands are invalid.
			if (!validate_expression(binary.left_operand, symbols) ||
				!validate_expression(binary.right_operand, symbols))
			{
				return false;
			} else if (binary.binary_operator == bi_addition ||
					   binary.binary_operator == bi_subtraction ||
					   binary.binary_operator == bi_multiplication ||
					   binary.binary_operator == bi_division ||
					   binary.binary_operator == bi_modulo ||
					   binary.binary_operator == bi_assignment ||
					   binary.binary_operator == bi_addition_assignment ||
					   binary.binary_operator == bi_subtraction_assignment ||
					   binary.binary_operator == bi_multiplication_assignment ||
					   binary.binary_operator == bi_division_assignment ||
					   binary.binary_operator == bi_modulo_assignment ||
					   binary.binary_operator == bi_binary_and ||
					   binary.binary_operator == bi_binary_or ||
					   binary.binary_operator == bi_binary_xor ||
					   binary.binary_operator == bi_binary_and_assignment ||
					   binary.binary_operator == bi_binary_or_assignment ||
					   binary.binary_operator == bi_binary_xor_assignment ||
					   binary.binary_operator == bi_binary_left_shift ||
					   binary.binary_operator == bi_binary_right_shift ||
					   binary.binary_operator == bi_binary_left_shift_assignment ||
					   binary.binary_operator == bi_binary_right_shift_assignment ||

					   binary.binary_operator == bi_relational_equal ||
					   binary.binary_operator == bi_relational_non_equal)
			{
				// A binary expression of this type is invalid if the return
				// type of the right-hand operand cannot be converted to the
				// return type of the left-hand operand.
				type_t left_type = expression_type(binary.left_operand, symbols);
				type_t right_type = expression_type(binary.right_operand, symbols);
				if (!can_convert(left_type, right_type)) {
					die("invalid operands to binary expression ('" + prettyprint_type(left_type) + "' and '" + prettyprint_type(right_type) + "')", expression);
					return false;
				}
				if (binary.binary_operator == bi_assignment ||
				    binary.binary_operator == bi_addition_assignment ||
				    binary.binary_operator == bi_subtraction_assignment ||
				    binary.binary_operator == bi_multiplication_assignment ||
				    binary.binary_operator == bi_division_assignment ||
				    binary.binary_operator == bi_modulo_assignment ||
				    binary.binary_operator == bi_binary_and_assignment ||
					binary.binary_operator == bi_binary_or_assignment ||
					binary.binary_operator == bi_binary_xor_assignment ||
					binary.binary_operator == bi_binary_left_shift_assignment ||
					binary.binary_operator == bi_binary_right_shift_assignment)
				{
					// A binary expression of this type is invalid if the
					// left-hand operand is an rvalue.
					if (is_rvalue(binary.left_operand, symbols)) {
						die("expression is not assignable", binary.left_operand);
						return false;
					}
				}
				if (left_type.pointer_depth > 0) {
					if (binary.binary_operator == bi_multiplication ||
						binary.binary_operator == bi_division ||
						binary.binary_operator == bi_modulo ||
						binary.binary_operator == bi_multiplication_assignment ||
						binary.binary_operator == bi_division_assignment ||
						binary.binary_operator == bi_modulo_assignment ||
						binary.binary_operator == bi_binary_and ||
						binary.binary_operator == bi_binary_or ||
						binary.binary_operator == bi_binary_xor ||
						binary.binary_operator == bi_binary_and_assignment ||
						binary.binary_operator == bi_binary_or_assignment ||
						binary.binary_operator == bi_binary_xor_assignment ||
						binary.binary_operator == bi_binary_left_shift ||
						binary.binary_operator == bi_binary_right_shift ||
						binary.binary_operator == bi_binary_left_shift_assignment ||
						binary.binary_operator == bi_binary_right_shift_assignment)
					{
						// A binary expression of this type is invalid if the
						// left-hand operand is a pointer and the operator is
						// multiplication, division, modulo or any bitwise
						// operator.
						die("invalid operands to binary expression ('" + prettyprint_type(left_type) + "' and '" + prettyprint_type(right_type) + "')", expression);
						return false;
					} else if (binary.binary_operator == bi_addition) {
						if (right_type.pointer_depth > 0) {
							// It is invalid to add pointers.
							die("invalid operands to binary expression ('" + prettyprint_type(left_type) + "' and '" + prettyprint_type(right_type) + "')", expression);
							return false;
						}
					}
				} else if (right_type.pointer_depth > 0) {
					if (binary.binary_operator == bi_multiplication ||
						binary.binary_operator == bi_division ||
						binary.binary_operator == bi_modulo ||
						binary.binary_operator == bi_multiplication_assignment ||
						binary.binary_operator == bi_division_assignment ||
						binary.binary_operator == bi_modulo_assignment ||
						binary.binary_operator == bi_binary_and ||
						binary.binary_operator == bi_binary_or ||
						binary.binary_operator == bi_binary_xor ||
						binary.binary_operator == bi_binary_and_assignment ||
						binary.binary_operator == bi_binary_or_assignment ||
						binary.binary_operator == bi_binary_xor_assignment ||
						binary.binary_operator == bi_binary_left_shift ||
						binary.binary_operator == bi_binary_right_shift ||
						binary.binary_operator == bi_binary_left_shift_assignment ||
						binary.binary_operator == bi_binary_right_shift_assignment)
					{
						// A binary expression of this type is invalid if the
						// right-hand operand is a pointer and the operator is
						// multiplication, division, modulo or any bitwise
						// operator.
						die("invalid operands to binary expression ('" + prettyprint_type(left_type) + "' and '" + prettyprint_type(right_type) + "')", expression);
						return false;
					}
				}
			} else {
				// bi_logical_and
				// bi_logical_or
				// bi_relational_greater_than
				// bi_relational_lesser_than
				// bi_relational_greater_than_or_equal_to
				// bi_relational_lesser_than_or_equal_to
				//
				// A binary expression of this type is invalid if the return
				// type of either operand cannot be converted to int.
				type_t left_type = expression_type(binary.left_operand, symbols);
				type_t right_type = expression_type(binary.right_operand, symbols);
				if (!can_convert(left_type, {0}) ||
					!can_convert(right_type, {0}))
				{
					die("invalid operands to binary expression ('" + prettyprint_type(left_type) + "' and '" + prettyprint_type(right_type) + "')", expression);
					return false;
				}
			}
		} else if (expression->type == et_unary) {
			unary_expression_t unary = expression->unary;
			// Any unary expression is invalid if the operand is invalid.
			if (!validate_expression(unary.operand, symbols)) {
				return false;
			}
			else if (unary.unary_operator == un_value_of) {
				// A unary expression of this type is invalid if the operand's
				// pointer depth is less than 1.
				type_t operand_type = expression_type(unary.operand, symbols);
				if (operand_type.pointer_depth < 1) {
					die("cannot dereference expression of type '" + prettyprint_type(operand_type) + "'", expression);
					return false;
				}
			} else if (unary.unary_operator == un_arithmetic_positive ||
					   unary.unary_operator == un_arithmetic_negative ||
					   unary.unary_operator == un_binary_not)
			{
				// A unary expression of this type is invalid if the operand
				// is a pointer.
				type_t operand_type = expression_type(unary.operand, symbols);
				if (operand_type.pointer_depth > 0) {
					die("wrong type argument to unary operator ('" + prettyprint_type(operand_type) + "')", expression);
					return false;
				}
			} else {
				// un_address_of
				//
				// A unary expression of this type is invalid if the operand
				// is an rvalue.
				if (is_rvalue(unary.operand, symbols)) {
					die("cannot take the address of an rvalue of type '" + prettyprint_type(expression_type(unary.operand, symbols)) + "'", expression);
					return false;
				}
			}
		}
		return true;
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x808, %rsp            # imm = 0x808
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq (%rdx), %rax
leaq 0x750(%rsp), %r13
movq %rax, -0x8(%r13)
leaq 0x8(%rdx), %r12
movq %r13, %rdi
movq %r12, %rsi
callq 0x147b2
movups 0x20(%r15), %xmm0
movups 0x30(%r15), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x748(%rsp), %rdx
movq %rbx, 0x8(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x13a42
movq %r13, %rdi
callq 0x1553e
movl (%r14), %eax
decl %eax
cmpl $0x6, %eax
ja 0x12e83
leaq 0x20(%r15), %rbx
leaq 0x7465(%rip), %rcx      # 0x191bc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x338(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%r14), %rsi
movq 0x28(%r14), %rdx
addq %rsi, %rdx
leaq 0x328(%rsp), %r15
movq %r15, %rdi
callq 0x179ce
leaq 0x58(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x14400
addq $0x20, %r14
leaq 0x58(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32f0
movq (%rbx), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x11dcb
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x328(%rsp), %rdi
cmpq %r12, %rdi
je 0x12e83
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x12e83
movq %r12, 0x10(%rsp)
leaq 0x30(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0xb8(%r14), %rsi
movq 0xc0(%r14), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x179ce
leaq 0x40(%rsp), %rdi
leaq 0xd8(%r14), %rsi
callq 0xf82a
leaq 0x2b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2a8(%rsp), %rdi
callq 0x179ce
leaq 0x2a8(%rsp), %rsi
movq %r15, %rdi
callq 0xfef4
movl %eax, %ebp
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x11e81
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bpl, %bpl
je 0x12db6
leaq 0x298(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0x179ce
leaq 0x288(%rsp), %rsi
movq %r15, %rdi
callq 0x14186
movb 0x40(%rax), %bpl
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x11ee2
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bpl, %bpl
movq 0x8(%rsp), %r12
je 0x12792
leaq 0x278(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x268(%rsp), %rdi
callq 0x179ce
leaq 0x268(%rsp), %rsi
movq %r15, %rdi
callq 0x14186
movq %rax, %rbp
movq (%rax), %rax
leaq 0x60(%rsp), %rdi
movq %rax, -0x8(%rdi)
leaq 0x70(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x8(%rbp), %rsi
movq 0x10(%rbp), %rdx
addq %rsi, %rdx
callq 0x179ce
leaq 0x80(%rsp), %rdi
movq %rbp, %rsi
addq $0x28, %rsi
callq 0x10074
movups 0x40(%rbp), %xmm0
movups %xmm0, 0x98(%rsp)
movq 0x268(%rsp), %rdi
cmpq %r13, %rdi
je 0x11f8c
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x88(%rsp), %rax
subq 0x80(%rsp), %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %r13 # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %r13
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
movq %rcx, %rbp
subq %rax, %rbp
sarq $0x3, %rbp
cmpq %rbp, %r13
movq %r13, 0x18(%rsp)
movq %rbp, 0xd8(%rsp)
jne 0x12a37
cmpq %rax, %rcx
je 0x12d7a
leaq 0x410(%rsp), %r14
xorl %r12d, %r12d
leaq 0x408(%rsp), %rbp
movq (%rax,%r12,8), %r13
movq (%r15), %rax
movq %rax, 0x408(%rsp)
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
movq 0x8(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0x13a42
movq %r14, %rdi
callq 0x1553e
incq %r12
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r12, %rcx
ja 0x11ff4
jmp 0x12d7a
leaq 0x378(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x88(%r14), %rsi
movq 0x90(%r14), %rdx
addq %rsi, %rdx
leaq 0x368(%rsp), %r12
movq %r12, %rdi
callq 0x179ce
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x14310
movl %eax, %ebp
movq (%r12), %rdi
cmpq %rbx, %rdi
je 0x120ac
movq 0x378(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x88(%r14), %r12
testb %bpl, %bpl
je 0x12598
leaq 0x7a2b(%rip), %rsi      # 0x19aee
leaq 0x58(%rsp), %r15
movq %r15, %rdi
movq %r12, %rdx
callq 0xa256
leaq 0x7ac3(%rip), %rsi      # 0x19b9d
movq %r15, %rdi
callq 0x33f0
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x8(%rsp), %rdi
je 0x127f0
movq %rdx, 0x248(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x258(%rsp)
jmp 0x127f7
movq 0xa8(%r14), %rbp
movq 0xb0(%r14), %rax
movq %rax, 0x10(%rsp)
movq (%r15), %rax
leaq 0x710(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %r12, %r14
movq %r12, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x708(%rsp), %rdx
movq 0x8(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
callq 0x11cd2
movl %eax, %ebp
movq %r13, %rdi
callq 0x1553e
testb %bpl, %bpl
je 0x134aa
movq (%r15), %rax
leaq 0x6d0(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %r14, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x6c8(%rsp), %rdx
movq %r12, %rdi
movq 0x10(%rsp), %rsi
callq 0x11cd2
movl %eax, %ebp
movq %r13, %rdi
callq 0x1553e
testb %bpl, %bpl
je 0x134aa
movq (%r15), %rax
leaq 0x690(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq %r14, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x688(%rsp), %rdx
movq %r12, %rdi
movq 0x10(%rsp), %rsi
callq 0x13a42
movq %r15, %rdi
jmp 0x12add
leaq 0x358(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x68(%r14), %rsi
movq 0x70(%r14), %rdx
addq %rsi, %rdx
leaq 0x348(%rsp), %r15
movq %r15, %rdi
callq 0x179ce
leaq 0x58(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r15, %rdx
movq %r14, %rcx
callq 0x14400
movq 0x348(%rsp), %rdi
cmpq %r12, %rdi
je 0x1227f
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x60(%rsp), %rbx
cmpq $0x1, %rbx
movq 0x8(%rsp), %r12
jne 0x12655
addq $0x68, %r14
leaq 0x58(%rsp), %rsi
movq %r14, %rdi
callq 0x3150
jmp 0x126ac
movq 0xf0(%r14), %rbp
movq 0xf8(%r14), %rax
movq %rax, 0x18(%rsp)
movl 0x100(%r14), %eax
movq %rax, 0xd8(%rsp)
movq (%r15), %rax
leaq 0x650(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %r12, 0x10(%rsp)
movq %r12, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x648(%rsp), %rdx
movq 0x8(%rsp), %r12
movq %r12, %rdi
movq %rbp, %rsi
callq 0x11cd2
testb %al, %al
je 0x126d6
movq (%r15), %rax
leaq 0x390(%rsp), %rdi
movq %rax, -0x8(%rdi)
movq 0x10(%rsp), %rsi
callq 0x147b2
movq %rbp, 0xa8(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
leaq 0x388(%rsp), %rdx
movups %xmm1, 0x30(%rdx)
movups %xmm0, 0x20(%rdx)
movq %r12, %rdi
movq 0x18(%rsp), %rsi
callq 0x11cd2
movl %eax, %ebp
leaq 0x390(%rsp), %rdi
callq 0x1553e
movq %r13, %rdi
callq 0x1553e
testb %bpl, %bpl
je 0x134aa
movq 0xd8(%rsp), %rcx
leal -0x13(%rcx), %edx
movq (%r15), %rax
cmpl $0xa, %edx
jb 0x1283c
cmpl $0xb, %ecx
jb 0x1283c
addl $-0xd, %ecx
cmpl $0x1, %ecx
jbe 0x1283c
leaq 0x590(%rsp), %r14
movq %rax, -0x8(%r14)
movq %r14, %rdi
movq 0x10(%rsp), %r13
movq %r13, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
leaq 0x588(%rsp), %rdx
movq %r12, %rdi
movq 0xa8(%rsp), %rsi
callq 0x13a42
movq %r14, %rdi
callq 0x1553e
movq (%r15), %rax
leaq 0x550(%rsp), %r14
movq %rax, -0x8(%r14)
movq %r14, %rdi
movq %r13, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
leaq 0x548(%rsp), %rdx
movq %r12, %rdi
movq 0x18(%rsp), %rsi
callq 0x13a42
movq %r14, %rdi
jmp 0x12add
movq 0x108(%r14), %r13
movq %r12, %rsi
movl 0x110(%r14), %r12d
movq (%r15), %rax
leaq 0x510(%rsp), %rbp
movq %rax, -0x8(%rbp)
movq %rbp, %rdi
movq %rsi, 0x10(%rsp)
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%rbp)
movups %xmm0, 0x18(%rbp)
leaq 0x508(%rsp), %rdx
movq 0x8(%rsp), %rdi
movq %r13, 0x18(%rsp)
movq %r13, %rsi
callq 0x11cd2
movl %eax, %r13d
movq %rbp, %rdi
callq 0x1553e
testb %r13b, %r13b
je 0x134aa
leal -0x1(%r12), %eax
cmpl $0x2, %eax
jb 0x126e3
cmpl $0x5, %r12d
je 0x126e3
testl %r12d, %r12d
movq 0x18(%rsp), %r13
jne 0x12a9c
movq (%r15), %rax
leaq 0x4d0(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x4c8(%rsp), %rdx
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x13a42
movq %rax, %r12
movq %r15, %rdi
callq 0x1553e
testq %r12, %r12
jg 0x12e83
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x5053
leaq 0x7681(%rip), %rsi      # 0x19bbf
leaq 0x58(%rsp), %rdi
movq %r15, %rdx
callq 0x5cb8
leaq 0x764b(%rip), %rsi      # 0x19b9d
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x178(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x8(%rsp), %rdi
je 0x13129
movq %rdx, 0x168(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x178(%rsp)
jmp 0x13130
leaq 0x318(%rsp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x88(%r14), %rsi
movq 0x90(%r14), %rdx
addq %rsi, %rdx
leaq 0x308(%rsp), %r13
movq %r13, %rdi
callq 0x179ce
movq %r15, %rdi
movq %r13, %rsi
callq 0xfef4
movl %eax, %ebp
movq 0x308(%rsp), %rdi
cmpq %rbx, %rdi
je 0x125ef
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bpl, %bpl
jne 0x12e83
leaq 0x7515(%rip), %rsi      # 0x19b14
leaq 0x58(%rsp), %r15
movq %r15, %rdi
movq %r12, %rdx
callq 0xa256
leaq 0x7587(%rip), %rsi      # 0x19b9d
movq %r15, %rdi
callq 0x33f0
leaq 0x238(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12ae7
movq %rdx, 0x228(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x238(%rsp)
jmp 0x12aee
leaq 0x2d8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7464(%rip), %rsi      # 0x19acc
leaq 0x747e(%rip), %rdx      # 0x19aed
leaq 0x2c8(%rsp), %rdi
callq 0x8faa
leaq 0x2c8(%rsp), %rsi
movq %r12, %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x2c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x126ac
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x126c7
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
cmpq $0x1, %rbx
je 0x12e83
jmp 0x134aa
movq %r13, %rdi
callq 0x1553e
jmp 0x134aa
movq (%r15), %rax
leaq 0x490(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x488(%rsp), %rdx
movq 0x8(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x13a42
movq %rax, %r12
movq %r15, %rdi
callq 0x1553e
testq %r12, %r12
jle 0x12e83
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x5053
leaq 0x7495(%rip), %rcx      # 0x19be7
movl $0x28, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x32a0
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12bc5
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x12bcc
leaq 0x7390(%rip), %rsi      # 0x19b29
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0xa256
leaq 0x738c(%rip), %rsi      # 0x19b3b
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x218(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12b53
movq %rdx, 0x208(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x218(%rsp)
jmp 0x12b5a
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x248(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r14, %rdx
callq 0x140f8
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x12b37
movq 0x258(%rsp), %rsi
jmp 0x12b2f
movl %edx, 0xd4(%rsp)
leaq 0x610(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq 0x10(%rsp), %rbp
movq %rbp, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x608(%rsp), %rdx
movq %r12, %rdi
movq 0xa8(%rsp), %rsi
callq 0x13a42
movq %rax, 0x120(%rsp)
movq %r13, %rdi
callq 0x1553e
movq (%r15), %rax
leaq 0x5d0(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x5c8(%rsp), %rdx
movq %r12, %rdi
movq 0x18(%rsp), %rsi
callq 0x13a42
movq %rax, 0x18(%rsp)
movq %r13, %rdi
callq 0x1553e
movq 0xd8(%rsp), %r13
movl %r13d, %ebp
andl $0x1e, %ebp
cmpl $0x16, %ebp
je 0x12909
cmpl $0x1c, %r13d
ja 0x12954
movl $0x190007e0, %eax       # imm = 0x190007E0
btl %r13d, %eax
jae 0x12954
movq (%r15), %rax
leaq 0x7d0(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x10(%rsp), %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
movq 0xa8(%rsp), %rax
movl (%rax), %eax
leal -0x3(%rax), %ecx
cmpl $0x2, %ecx
jae 0x12cb1
movq %r15, %rdi
callq 0x1553e
movq 0x120(%rsp), %rsi
testq %rsi, %rsi
jle 0x12eed
cmpl $0xa, %r13d
movq 0x18(%rsp), %rbx
je 0x13031
cmpl $0x4, %r13d
je 0x13031
cmpl $0x1c, %r13d
je 0x13031
movl %r13d, %eax
andl $0x1c, %eax
cmpl $0x18, %eax
je 0x13031
cmpl $0x5, 0xd4(%rsp)
jb 0x13031
cmpl $0x2, %ebp
je 0x13031
cmpl $0x8, %ebp
je 0x13031
testl %r13d, %r13d
sete %al
testq %rbx, %rbx
setg %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x12e83
leaq 0x100(%rsp), %r15
movq %r15, %rdi
callq 0x5053
leaq 0x7189(%rip), %rsi      # 0x19b6e
leaq 0xb0(%rsp), %rdi
movq %r15, %rdx
callq 0x5cb8
leaq 0x719b(%rip), %rsi      # 0x19b97
leaq 0xb0(%rsp), %rdi
callq 0x33f0
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13265
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x1326c
leaq 0x7111(%rip), %rsi      # 0x19b4f
leaq 0xb0(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0xa256
leaq 0x7146(%rip), %rsi      # 0x19b9d
leaq 0xb0(%rsp), %rdi
callq 0x33f0
leaq 0x1f8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12d08
movq %rdx, 0x1e8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1f8(%rsp)
jmp 0x12d10
movq (%r15), %rax
leaq 0x790(%rsp), %rbp
movq %rax, -0x8(%rbp)
movq %rbp, %rdi
movq 0x10(%rsp), %r12
movq %r12, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%rbp)
movups %xmm0, 0x18(%rbp)
movl (%r13), %eax
leal -0x3(%rax), %ecx
cmpl $0x2, %ecx
jae 0x12cdd
movq %rbp, %rdi
callq 0x1553e
jmp 0x12e83
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rsp), %rdi
movq 0x8(%rax), %rdx
leaq 0x228(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r14, %rdx
callq 0x140f8
movq 0x228(%rsp), %rdi
cmpq %r15, %rdi
je 0x12b37
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x134aa
movq 0x68(%rsp), %rsi
jmp 0x12ca4
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x208(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x208(%rsp), %rdi
cmpq %r15, %rdi
je 0x12ba1
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12e40
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x12e40
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x58(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x6fb0(%rip), %rsi      # 0x19b9f
callq 0x33f0
leaq 0x158(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x12c25
movq %rdx, 0x148(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x158(%rsp)
jmp 0x12c2d
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x148(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x12c76
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x12c8d
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x134aa
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x134aa
cmpl $0x7, %eax
jne 0x12e8a
movq 0xa8(%rsp), %rax
movl 0x110(%rax), %ebx
movq %r15, %rdi
callq 0x1553e
testl %ebx, %ebx
jne 0x12e92
jmp 0x12954
cmpl $0x7, %eax
jne 0x12f84
movl 0x110(%r13), %r12d
movq %rbp, %rdi
callq 0x1553e
testl %r12d, %r12d
movq 0x10(%rsp), %r12
jne 0x12f8c
jmp 0x12e83
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x1e8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12d59
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12d7a
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x80(%rsp), %rdi
callq 0x9730
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x12da3
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0xd8(%rsp), %rax
cmpq %rax, 0x18(%rsp)
jne 0x12e40
movq 0x40(%rsp), %rdi
cmpq %rdi, 0x48(%rsp)
je 0x12e49
leaq 0x3d0(%rsp), %r14
xorl %r12d, %r12d
leaq 0x3c8(%rsp), %r13
movq (%rdi,%r12,8), %rbp
movq (%r15), %rax
movq %rax, 0x3c8(%rsp)
movq %r14, %rdi
movq 0x10(%rsp), %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
movq 0x8(%rsp), %rdi
movq %rbp, %rsi
movq %r13, %rdx
callq 0x11cd2
movl %eax, %ebp
movq %r14, %rdi
callq 0x1553e
testb %bpl, %bpl
je 0x12e42
incq %r12
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rax
subq %rdi, %rax
sarq $0x3, %rax
cmpq %r12, %rax
ja 0x12dd9
jmp 0x12e42
xorl %ebp, %ebp
movq 0x40(%rsp), %rdi
jmp 0x12e4c
movb $0x1, %bpl
testq %rdi, %rdi
je 0x12e5e
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3280
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x12e7a
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bpl, %bpl
je 0x134aa
movb $0x1, %al
jmp 0x134ac
movq %r15, %rdi
callq 0x1553e
leaq 0x2f8(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x6cfd(%rip), %rsi      # 0x19ba2
leaq 0x6d12(%rip), %rdx      # 0x19bbe
leaq 0x2e8(%rsp), %r14
movq %r14, %rdi
callq 0x8faa
movq %r12, %rdi
movq %r14, %rsi
movq 0xa8(%rsp), %rdx
callq 0x140f8
movq 0x2e8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x134aa
movq 0x2f8(%rsp), %rsi
jmp 0x12ca4
movq 0x18(%rsp), %rbx
testq %rbx, %rbx
jle 0x12e83
cmpl $0xa, %r13d
je 0x12f1b
cmpl $0x4, %r13d
je 0x12f1b
cmpl $0xa, 0xd4(%rsp)
jb 0x12f1b
cmpl $0x2, %ebp
je 0x12f1b
cmpl $0x8, %ebp
jne 0x12e83
leaq 0x100(%rsp), %r15
movq %r15, %rdi
callq 0x5053
leaq 0x6c3c(%rip), %rsi      # 0x19b6e
leaq 0xb0(%rsp), %rdi
movq %r15, %rdx
callq 0x5cb8
leaq 0x6c4e(%rip), %rsi      # 0x19b97
leaq 0xb0(%rsp), %rdi
callq 0x33f0
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1333f
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x13346
movq %rbp, %rdi
callq 0x1553e
movq (%r15), %rax
leaq 0x450(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq %r12, %rsi
callq 0x147b2
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x448(%rsp), %rdx
movq 0x8(%rsp), %rdi
movq %r13, %rsi
callq 0x13a42
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x5053
leaq 0x6c30(%rip), %rsi      # 0x19c10
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x5cb8
leaq 0x6ba7(%rip), %rsi      # 0x19b9d
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x138(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1309a
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x130a2
leaq 0x100(%rsp), %r15
movq %r15, %rdi
callq 0x5053
leaq 0x6b26(%rip), %rsi      # 0x19b6e
leaq 0xb0(%rsp), %rdi
movq %r15, %rdx
callq 0x5cb8
leaq 0x6b38(%rip), %rsi      # 0x19b97
leaq 0xb0(%rsp), %rdi
callq 0x33f0
leaq 0x30(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x1318b
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x13192
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x128(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x130eb
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13106
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13121
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
movq %r15, %rdi
jmp 0x126d9
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
leaq 0x168(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r14, %rdx
callq 0x140f8
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x13174
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x12c80
jmp 0x12c8d
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x14267
leaq 0x69c7(%rip), %rsi      # 0x19b9f
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13213
movq %rdx, 0x1c8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d8(%rsp)
jmp 0x1321b
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x1c8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13418
movq 0x1d8(%rsp), %rsi
jmp 0x13410
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x14267
leaq 0x68ed(%rip), %rsi      # 0x19b9f
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x132ed
movq %rdx, 0x1a8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b8(%rsp)
jmp 0x132f5
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x1a8(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13418
movq 0x1b8(%rsp), %rsi
jmp 0x13410
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x28(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0xe0(%rsp), %rdi
movq %rbx, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x14267
leaq 0x6813(%rip), %rsi      # 0x19b9f
leaq 0x58(%rsp), %rdi
callq 0x33f0
leaq 0x198(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x133c7
movq %rdx, 0x188(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x198(%rsp)
jmp 0x133cf
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq 0x188(%rsp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x8(%rsp), %rdi
movq %r14, %rdx
callq 0x140f8
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x13418
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13433
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13454
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x1346b
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1348c
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x134aa
movq 0x110(%rsp), %rsi
jmp 0x12ca4
xorl %eax, %eax
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, 0x8(%rsp)
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x13545
movq 0x198(%rsp), %rsi
jmp 0x13536
jmp 0x13540
jmp 0x13562
jmp 0x1358a
jmp 0x135a8
jmp 0x135d0
movq %rax, 0x8(%rsp)
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13545
movq 0x1b8(%rsp), %rsi
jmp 0x13536
jmp 0x13540
jmp 0x13562
jmp 0x1358a
jmp 0x135a8
jmp 0x135d0
movq %rax, 0x8(%rsp)
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13545
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13545
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13567
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13567
movq %rax, 0x8(%rsp)
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1358f
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x1358f
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x135ad
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x135ad
movq %rax, 0x8(%rsp)
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x135d5
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x135d5
movq %rax, 0x8(%rsp)
leaq 0x110(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a37
movq 0x110(%rsp), %rsi
jmp 0x139dc
movq %rax, 0x8(%rsp)
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x13620
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13620
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x1377c
jmp 0x13790
jmp 0x1378b
movq %rax, 0x8(%rsp)
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x13665
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13665
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13687
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13687
movq %rax, 0x8(%rsp)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13841
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13841
movq %rax, 0x8(%rsp)
movq 0x2e8(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13a37
movq 0x2f8(%rsp), %rsi
jmp 0x139dc
jmp 0x1383c
jmp 0x1383c
movq %rax, 0x8(%rsp)
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13701
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13701
movq %rax, 0x8(%rsp)
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x139fe
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x139fe
jmp 0x139ea
jmp 0x13a2a
jmp 0x1373c
jmp 0x13a2a
movq %rax, 0x8(%rsp)
movq %r14, %rdi
jmp 0x13a32
movq %rax, 0x8(%rsp)
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x13772
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13772
movq %rax, 0x8(%rsp)
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x13790
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13790
movq %rax, 0x8(%rsp)
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x139d2
movq %rax, 0x8(%rsp)
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x1384e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x1384e
movq %rax, 0x8(%rsp)
movq 0x208(%rsp), %rdi
cmpq %r15, %rdi
je 0x137ec
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x137ec
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a1e
movq 0x68(%rsp), %rsi
jmp 0x1396b
jmp 0x13a0a
jmp 0x13a0a
movq %rax, 0x8(%rsp)
movq 0x228(%rsp), %rdi
cmpq %r15, %rdi
je 0x13931
movq 0x238(%rsp), %rsi
jmp 0x138fa
jmp 0x1383c
jmp 0x1392c
movq %rax, 0x8(%rsp)
movq %r15, %rdi
jmp 0x13a32
movq %rax, 0x8(%rsp)
movq 0x268(%rsp), %rdi
cmpq %r13, %rdi
je 0x13a1e
movq 0x278(%rsp), %rsi
jmp 0x1396b
movq %rax, 0x8(%rsp)
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a1e
movq 0x298(%rsp), %rsi
jmp 0x1396b
movq %rax, 0x8(%rsp)
movq 0x2c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x138d1
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x138d1
movq %rax, 0x8(%rsp)
leaq 0x390(%rsp), %rdi
callq 0x1553e
jmp 0x13a2f
jmp 0x138cc
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %r12
movq -0x10(%r12), %rdi
jmp 0x13992
movq %rax, 0x8(%rsp)
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x13931
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13931
jmp 0x13a2a
movq %rax, 0x8(%rsp)
movq 0x308(%rsp), %rdi
cmpq %rbx, %rdi
je 0x13a37
movq 0x318(%rsp), %rsi
jmp 0x139dc
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a37
movq 0x68(%rsp), %rsi
jmp 0x139dc
movq %rax, 0x8(%rsp)
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a1e
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13a1e
movq %rax, 0x8(%rsp)
movq %rbp, %rdi
jmp 0x13a32
movq %rax, 0x8(%rsp)
movq 0x348(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a37
movq (%r12), %rsi
jmp 0x139dc
movq %rax, 0x8(%rsp)
movq 0x328(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a37
movq 0x338(%rsp), %rsi
jmp 0x139dc
jmp 0x13a2a
movq %rax, 0x8(%rsp)
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x13a37
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13a37
jmp 0x13a0a
jmp 0x13a2a
movq %rax, 0x8(%rsp)
jmp 0x139fe
movq %rax, 0x8(%rsp)
movq %r14, %rdi
callq 0x1553e
leaq 0x58(%rsp), %rdi
callq 0xfecc
jmp 0x13a1e
movq %rax, 0x8(%rsp)
jmp 0x13a1e
movq %rax, 0x8(%rsp)
movq %r14, %rdi
callq 0x1553e
leaq 0x20(%rsp), %rdi
callq 0xfa02
jmp 0x13a37
movq %rax, 0x8(%rsp)
movq %r13, %rdi
callq 0x1553e
movq 0x8(%rsp), %rdi
callq 0x33b0
nop