// File: /workspace/github_cpp_makefile_star2_O1/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 0x14d6e
movups 0x20(%r15), %xmm0
movups 0x30(%r15), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x748(%rsp), %rdx
movq %rbx, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x13fec
movq %r13, %rdi
callq 0x15538
movl (%r14), %eax
decl %eax
cmpl $0x6, %eax
ja 0x135c6
leaq 0x20(%r15), %rdx
leaq 0x6e72(%rip), %rcx      # 0x1918c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq %rdx, 0x18(%rsp)
jmpq *%rax
leaq 0x338(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x20(%r14), %rsi
movq 0x28(%r14), %rdx
addq %rsi, %rdx
leaq 0x328(%rsp), %rbx
movq %rbx, %rdi
callq 0x17a38
leaq 0x58(%rsp), %rdi
movq (%rsp), %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x149e0
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 0x12391
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x328(%rsp), %rdi
cmpq %r15, %rdi
je 0x135c6
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x135c6
movq %r12, 0x8(%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 0x17a38
leaq 0x40(%rsp), %rdi
leaq 0xd8(%r14), %rsi
callq 0xfd62
leaq 0x2b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2a8(%rsp), %rdi
callq 0x17a38
leaq 0x2a8(%rsp), %rsi
movq %r15, %rdi
callq 0x1041e
movl %eax, %ebx
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x12447
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bl, %bl
je 0x134f5
leaq 0x298(%rsp), %r12
movq %r12, -0x10(%r12)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x288(%rsp), %rdi
callq 0x17a38
leaq 0x288(%rsp), %rsi
movq %r15, %rdi
callq 0x14730
movb 0x40(%rax), %bl
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x124a6
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bl, %bl
movq (%rsp), %rbx
je 0x12f74
leaq 0x278(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
addq %rsi, %rdx
leaq 0x268(%rsp), %rdi
callq 0x17a38
leaq 0x268(%rsp), %rsi
movq %r15, %rdi
callq 0x14730
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 0x17a38
leaq 0x80(%rsp), %rdi
movq %rbp, %rsi
addq $0x28, %rsi
callq 0x105d8
movups 0x40(%rbp), %xmm0
movups %xmm0, 0x98(%rsp)
movq 0x268(%rsp), %rdi
cmpq %r13, %rdi
je 0x1254e
movq 0x278(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x88(%rsp), %rax
subq 0x80(%rsp), %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rbx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rbx
movq 0x48(%rsp), %r13
subq 0x40(%rsp), %r13
sarq $0x3, %r13
cmpq %r13, %rbx
movq %rbx, 0x10(%rsp)
jne 0x1301e
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
je 0x134c1
leaq 0x410(%rsp), %r14
xorl %r12d, %r12d
leaq 0x408(%rsp), %rbp
movq (%rax,%r12,8), %rbx
movq (%r15), %rax
movq %rax, 0x408(%rsp)
movq %r14, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
movq (%rsp), %rdi
movq %rbx, %rsi
movq %rbp, %rdx
callq 0x13fec
movq %r14, %rdi
callq 0x15538
incq %r12
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r12, %rcx
ja 0x125af
jmp 0x134c1
leaq 0x378(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x88(%r14), %rsi
movq 0x90(%r14), %rdx
addq %rsi, %rdx
leaq 0x368(%rsp), %r12
movq %r12, %rdi
callq 0x17a38
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x148f6
movl %eax, %ebx
movq (%r12), %rdi
cmpq %r13, %rdi
je 0x1266a
movq 0x378(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x88(%r14), %r12
testb %bl, %bl
je 0x12b7c
leaq 0x743e(%rip), %rsi      # 0x19abe
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rdx
callq 0xa33e
leaq 0x74d6(%rip), %rsi      # 0x19b6d
movq %rbx, %rdi
callq 0x33f0
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq (%rsp), %rdi
je 0x12fd2
movq %rdx, 0x248(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x258(%rsp)
jmp 0x12fd9
movq 0xa8(%r14), %rbx
movq 0xb0(%r14), %rbp
movq (%r15), %rax
movq %rdx, %r14
leaq 0x710(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %r12, 0x8(%rsp)
movq %r12, %rsi
callq 0x14d6e
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x708(%rsp), %rdx
movq (%rsp), %r12
movq %r12, %rdi
movq %rbx, %rsi
callq 0x12296
movl %eax, %ebx
movq %r13, %rdi
callq 0x15538
testb %bl, %bl
je 0x13a99
movq (%r15), %rax
leaq 0x6d0(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x6c8(%rsp), %rdx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x12296
movl %eax, %ebx
movq %r13, %rdi
callq 0x15538
testb %bl, %bl
je 0x13a99
movq (%r15), %rax
leaq 0x690(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x688(%rsp), %rdx
movq %r12, %rdi
movq %rbp, %rsi
callq 0x13fec
movq %r15, %rdi
jmp 0x12a1b
leaq 0x358(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x68(%r14), %rsi
movq 0x70(%r14), %rdx
addq %rsi, %rdx
leaq 0x348(%rsp), %rbx
movq %rbx, %rdi
callq 0x17a38
leaq 0x58(%rsp), %rdi
movq (%rsp), %r12
movq %r12, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x149e0
movq 0x348(%rsp), %rdi
cmpq %r15, %rdi
je 0x12845
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x60(%rsp), %rbx
cmpq $0x1, %rbx
jne 0x12c38
addq $0x68, %r14
leaq 0x58(%rsp), %rsi
movq %r14, %rdi
callq 0x3150
jmp 0x12c8f
movq 0xf0(%r14), %rbp
movq 0xf8(%r14), %rax
movq %rax, 0x10(%rsp)
movl 0x100(%r14), %eax
movq %rax, 0x118(%rsp)
movq (%r15), %rax
movq %rdx, %rbx
leaq 0x650(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %r12, 0x8(%rsp)
movq %r12, %rsi
callq 0x14d6e
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x648(%rsp), %rdx
movq (%rsp), %r12
movq %r12, %rdi
movq %rbp, 0xa8(%rsp)
movq %rbp, %rsi
callq 0x12296
movl %eax, %ebp
movb $0x1, %bl
testb %al, %al
je 0x1292d
movq (%r15), %rax
leaq 0x390(%rsp), %rdi
movq %rax, -0x8(%rdi)
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
leaq 0x388(%rsp), %rdx
movups %xmm1, 0x30(%rdx)
movups %xmm0, 0x20(%rdx)
movq %r12, %rdi
movq 0x10(%rsp), %rsi
callq 0x12296
movl %eax, %ebx
xorb $0x1, %bl
testb %bpl, %bpl
je 0x1293f
leaq 0x390(%rsp), %rdi
callq 0x15538
movq %r13, %rdi
callq 0x15538
testb %bl, %bl
jne 0x13a99
movq %r12, %rbp
movq 0x118(%rsp), %rcx
leal -0x13(%rcx), %edx
movq (%r15), %rax
cmpl $0xa, %edx
jb 0x12d6c
cmpl $0xb, %ecx
jb 0x12d6c
addl $-0xd, %ecx
cmpl $0x1, %ecx
jbe 0x12d6c
leaq 0x590(%rsp), %r14
movq %rax, -0x8(%r14)
movq %r14, %rdi
movq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x14d6e
movq 0x18(%rsp), %r12
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
leaq 0x588(%rsp), %rdx
movq %rbp, %rdi
movq 0xa8(%rsp), %rsi
callq 0x13fec
movq %r14, %rdi
callq 0x15538
movq (%r15), %rax
leaq 0x550(%rsp), %r14
movq %rax, -0x8(%r14)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x14d6e
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
leaq 0x548(%rsp), %rdx
movq %rbp, %rdi
movq 0x10(%rsp), %rsi
callq 0x13fec
movq %r14, %rdi
callq 0x15538
jmp 0x135c6
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 %rdx, %rbx
movq %rsi, 0x8(%rsp)
callq 0x14d6e
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x28(%rbp)
movups %xmm0, 0x18(%rbp)
leaq 0x508(%rsp), %rdx
movq (%rsp), %rdi
movq %r13, 0x10(%rsp)
movq %r13, %rsi
callq 0x12296
movl %eax, %ebx
movq %rbp, %rdi
callq 0x15538
testb %bl, %bl
je 0x13a99
leal -0x1(%r12), %eax
cmpl $0x2, %eax
jb 0x12cb9
cmpl $0x5, %r12d
je 0x12cb9
testl %r12d, %r12d
jne 0x130b5
movq (%r15), %rax
leaq 0x4d0(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x4c8(%rsp), %rdx
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x13fec
movq %rax, %rbx
movq %r15, %rdi
callq 0x15538
testq %rbx, %rbx
jg 0x135c6
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5053
leaq 0x706c(%rip), %rsi      # 0x19b8f
leaq 0x58(%rsp), %rdi
movq %r15, %rdx
callq 0x5cb5
leaq 0x7036(%rip), %rsi      # 0x19b6d
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 (%rsp), %rdi
je 0x137f1
movq %rdx, 0x168(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x178(%rsp)
jmp 0x137f8
leaq 0x318(%rsp), %r13
movq %r13, -0x10(%r13)
movq 0x88(%r14), %rsi
movq 0x90(%r14), %rdx
addq %rsi, %rdx
leaq 0x308(%rsp), %rbx
movq %rbx, %rdi
callq 0x17a38
movq %r15, %rdi
movq %rbx, %rsi
callq 0x1041e
movl %eax, %ebx
movq 0x308(%rsp), %rdi
cmpq %r13, %rdi
je 0x12bd3
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bl, %bl
jne 0x135c6
leaq 0x6f02(%rip), %rsi      # 0x19ae4
leaq 0x58(%rsp), %rbx
movq %rbx, %rdi
movq %r12, %rdx
callq 0xa33e
leaq 0x6f74(%rip), %rsi      # 0x19b6d
movq %rbx, %rdi
callq 0x33f0
leaq 0x238(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13105
movq %rdx, 0x228(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x238(%rsp)
jmp 0x1310c
leaq 0x2d8(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x6e51(%rip), %rsi      # 0x19a9c
leaq 0x6e6b(%rip), %rdx      # 0x19abd
leaq 0x2c8(%rsp), %rdi
callq 0x9052
leaq 0x2c8(%rsp), %rsi
movq %r12, %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x2c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x12c8f
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12caa
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
cmpq $0x1, %rbx
je 0x135c6
jmp 0x13a99
movq (%r15), %rax
leaq 0x490(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x488(%rsp), %rdx
movq (%rsp), %rdi
movq 0x10(%rsp), %rsi
callq 0x13fec
movq %rax, %rbx
movq %r15, %rdi
callq 0x15538
testq %rbx, %rbx
jle 0x135c6
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x5053
leaq 0x6e8b(%rip), %rcx      # 0x19bb7
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 0x131e2
movq %rdx, 0x58(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x68(%rsp)
jmp 0x131e9
movl %edx, 0xd4(%rsp)
leaq 0x610(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq 0x8(%rsp), %rbx
movq %rbx, %rsi
callq 0x14d6e
movq 0x18(%rsp), %r12
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x608(%rsp), %rdx
movq %rbp, %rdi
movq 0xa8(%rsp), %rsi
callq 0x13fec
movq %rax, 0x120(%rsp)
movq %r13, %rdi
callq 0x15538
movq (%r15), %rax
leaq 0x5d0(%rsp), %r13
movq %rax, -0x8(%r13)
movq %r13, %rdi
movq %rbx, %rsi
callq 0x14d6e
movups (%r12), %xmm0
movups 0x10(%r12), %xmm1
movups %xmm1, 0x28(%r13)
movups %xmm0, 0x18(%r13)
leaq 0x5c8(%rsp), %rdx
movq %rbp, %rdi
movq 0x10(%rsp), %rsi
callq 0x13fec
movq %rax, 0x10(%rsp)
movq %rbp, %r12
movq %r13, %rdi
callq 0x15538
movq 0x118(%rsp), %rbx
movl %ebx, %ebp
andl $0x1e, %ebp
cmpl $0x16, %ebp
je 0x12e46
cmpl $0x1c, %ebx
ja 0x12e96
movl $0x190007e0, %eax       # imm = 0x190007E0
btl %ebx, %eax
jae 0x12e96
movq (%r15), %rax
leaq 0x7d0(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
movq 0xa8(%rsp), %rax
movl (%rax), %eax
leal -0x3(%rax), %ecx
cmpl $0x2, %ecx
jae 0x13083
movq %r15, %rdi
callq 0x15538
movq 0x120(%rsp), %rsi
testq %rsi, %rsi
jle 0x13328
cmpl $0xa, %ebx
movq 0x10(%rsp), %r12
je 0x133e7
cmpl $0x4, %ebx
je 0x133e7
cmpl $0x1c, %ebx
je 0x133e7
movl %ebx, %eax
andl $0x1c, %eax
cmpl $0x18, %eax
je 0x133e7
cmpl $0x5, 0xd4(%rsp)
jb 0x133e7
cmpl $0x2, %ebp
je 0x133e7
cmpl $0x8, %ebp
je 0x133e7
testl %ebx, %ebx
sete %al
testq %r12, %r12
setg %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x135c6
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
callq 0x5053
leaq 0x6c1c(%rip), %rsi      # 0x19b3e
leaq 0xb0(%rsp), %rdi
movq %rbx, %rdx
callq 0x5cb5
leaq 0x6c2e(%rip), %rsi      # 0x19b67
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 0x13853
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x1385a
leaq 0x6b7e(%rip), %rsi      # 0x19af9
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0xa33e
leaq 0x6b7a(%rip), %rsi      # 0x19b0b
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 0x13170
movq %rdx, 0x208(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x218(%rsp)
jmp 0x13177
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 0x146a2
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x13154
movq 0x258(%rsp), %rsi
jmp 0x1314c
leaq 0x6afa(%rip), %rsi      # 0x19b1f
leaq 0xb0(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0xa33e
leaq 0x6b2f(%rip), %rsi      # 0x19b6d
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 0x13450
movq %rdx, 0x1e8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1f8(%rsp)
jmp 0x13458
cmpl $0x7, %eax
jne 0x132c5
movq 0xa8(%rsp), %rax
movl 0x110(%rax), %r12d
movq %r15, %rdi
callq 0x15538
testl %r12d, %r12d
movq (%rsp), %r12
jne 0x132cd
jmp 0x12e96
movq (%r15), %rax
leaq 0x790(%rsp), %rbp
movq %rax, -0x8(%rbp)
movq %rbp, %rdi
movq 0x8(%rsp), %r13
movq %r13, %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%rbp)
movups %xmm0, 0x18(%rbp)
movq 0x10(%rsp), %r12
movl (%r12), %eax
leal -0x3(%rax), %ecx
cmpl $0x2, %ecx
jae 0x133c1
movq %rbp, %rdi
jmp 0x12a1b
movups (%rcx), %xmm0
movups %xmm0, (%r15)
movq (%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 0x146a2
movq 0x228(%rsp), %rdi
cmpq %r15, %rdi
je 0x13154
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a99
movq 0x68(%rsp), %rsi
jmp 0x13a91
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 %rbx, %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x208(%rsp), %rdi
cmpq %r15, %rdi
je 0x131be
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13583
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13583
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 0x6963(%rip), %rsi      # 0x19b6f
callq 0x33f0
leaq 0x158(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x13242
movq %rdx, 0x148(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x158(%rsp)
jmp 0x1324a
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x13292
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x132a9
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a99
movq 0x30(%rsp), %rsi
jmp 0x13a91
movq %r15, %rdi
callq 0x15538
leaq 0x2f8(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x6892(%rip), %rsi      # 0x19b72
leaq 0x68a7(%rip), %rdx      # 0x19b8e
leaq 0x2e8(%rsp), %rbx
movq %rbx, %rdi
callq 0x9052
movq %r12, %rdi
movq %rbx, %rsi
movq 0xa8(%rsp), %rdx
callq 0x146a2
movq 0x2e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x13a99
movq 0x2f8(%rsp), %rsi
jmp 0x13a91
movq 0x10(%rsp), %r12
testq %r12, %r12
jle 0x135c6
cmpl $0xa, %ebx
je 0x13358
cmpl $0x4, %ebx
je 0x13358
cmpl $0xa, 0xd4(%rsp)
jb 0x13358
cmpl $0x2, %ebp
je 0x13358
cmpl $0x8, %ebp
jne 0x135c6
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
callq 0x5053
leaq 0x67cf(%rip), %rsi      # 0x19b3e
leaq 0xb0(%rsp), %rdi
movq %rbx, %rdx
callq 0x5cb5
leaq 0x67e1(%rip), %rsi      # 0x19b67
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 0x1392c
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x13933
cmpl $0x7, %eax
jne 0x135cd
movl 0x110(%r12), %ebx
movq %rbp, %rdi
callq 0x15538
testl %ebx, %ebx
jne 0x135d5
jmp 0x135c6
leaq 0xf8(%rsp), %rbx
movq %rbx, %rdi
callq 0x5053
leaq 0x6740(%rip), %rsi      # 0x19b3e
leaq 0xb0(%rsp), %rdi
movq %rbx, %rdx
callq 0x5cb5
leaq 0x6752(%rip), %rsi      # 0x19b67
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 0x13685
movq %rdx, 0x20(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x30(%rsp)
jmp 0x1368c
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x134a0
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x134c1
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x80(%rsp), %rdi
callq 0x9812
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x134ea
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3280
cmpq %r13, 0x10(%rsp)
jne 0x13583
movq 0x40(%rsp), %rax
cmpq %rax, 0x48(%rsp)
je 0x13587
leaq 0x3d0(%rsp), %r14
xorl %r12d, %r12d
leaq 0x3c8(%rsp), %r13
movq (%rax,%r12,8), %rbx
movq (%r15), %rax
movq %rax, 0x3c8(%rsp)
movq %r14, %rdi
movq 0x8(%rsp), %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r14)
movups %xmm0, 0x18(%r14)
movq (%rsp), %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x12296
movl %eax, %ebp
movq %r14, %rdi
callq 0x15538
testb %bpl, %bpl
je 0x1358a
incq %r12
movq 0x40(%rsp), %rax
movq 0x48(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r12, %rcx
ja 0x13518
jmp 0x1358a
xorl %ebp, %ebp
jmp 0x1358a
movb $0x1, %bpl
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x135a1
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x3280
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x135bd
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
testb %bpl, %bpl
je 0x13a99
movb $0x1, %al
jmp 0x13a9b
movq %rbp, %rdi
callq 0x15538
movq (%r15), %rax
leaq 0x450(%rsp), %r15
movq %rax, -0x8(%r15)
movq %r15, %rdi
movq %r13, %rsi
callq 0x14d6e
movq 0x18(%rsp), %rax
movups (%rax), %xmm0
movups 0x10(%rax), %xmm1
movups %xmm1, 0x28(%r15)
movups %xmm0, 0x18(%r15)
leaq 0x448(%rsp), %rdx
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x13fec
leaq 0x20(%rsp), %rdi
movq %rax, %rsi
callq 0x5053
leaq 0x65b3(%rip), %rsi      # 0x19be0
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x5cb5
leaq 0x652a(%rip), %rsi      # 0x19b6d
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 0x1375e
movq %rdx, 0x128(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x138(%rsp)
jmp 0x13766
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 0xd8(%rsp), %rdi
movq %r12, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1484e
leaq 0x649d(%rip), %rsi      # 0x19b6f
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 0x1370d
movq %rdx, 0x1c8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1d8(%rsp)
jmp 0x13715
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a04
movq 0x1d8(%rsp), %rsi
jmp 0x139fc
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x137ae
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x137c9
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x137e4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
movq %r15, %rdi
callq 0x15538
jmp 0x13a99
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 0x146a2
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x1383c
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x1329c
jmp 0x132a9
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 0xd8(%rsp), %rdi
movq %r12, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1484e
leaq 0x62cf(%rip), %rsi      # 0x19b6f
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 0x138db
movq %rdx, 0x1a8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b8(%rsp)
jmp 0x138e3
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a04
movq 0x1b8(%rsp), %rsi
jmp 0x139fc
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 0xd8(%rsp), %rdi
movq %r12, %rsi
callq 0x5053
leaq 0x58(%rsp), %rdi
leaq 0x20(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x1484e
leaq 0x61f6(%rip), %rsi      # 0x19b6f
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 0x139b4
movq %rdx, 0x188(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x198(%rsp)
jmp 0x139bc
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 (%rsp), %rdi
movq %r14, %rdx
callq 0x146a2
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x13a04
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a1f
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a40
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3280
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x13a57
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a78
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13a99
movq 0x108(%rsp), %rsi
incq %rsi
callq 0x3280
xorl %eax, %eax
addq $0x808, %rsp            # imm = 0x808
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x13bf0
movq 0x198(%rsp), %rsi
jmp 0x13be3
jmp 0x13bed
jmp 0x13c0d
jmp 0x13c33
jmp 0x13c4f
jmp 0x13c75
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13bf0
movq 0x1b8(%rsp), %rsi
jmp 0x13be3
jmp 0x13bed
jmp 0x13c0d
jmp 0x13c33
jmp 0x13c4f
jmp 0x13c75
movq %rax, %rbx
movq 0x168(%rsp), %rdi
cmpq %r15, %rdi
je 0x13b46
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13b46
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x13d48
jmp 0x13d5a
jmp 0x13d57
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r12, %rdi
je 0x13b87
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13b87
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13ba7
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13ba7
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13e18
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13e18
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13bf0
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13bf0
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13c10
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13c10
movq %rax, %rbx
leaq 0xe8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13c36
movq 0xe8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13c36
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r15, %rdi
je 0x13c52
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13c52
movq %rax, %rbx
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13c78
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13c78
movq %rax, %rbx
leaq 0x108(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13fe4
movq 0x108(%rsp), %rsi
jmp 0x13f93
jmp 0x13e15
movq %rax, %rbx
movq 0x2e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x13fe4
movq 0x2f8(%rsp), %rsi
jmp 0x13f93
jmp 0x13e15
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13cea
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13cea
movq %rax, %rbx
leaq 0xc0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13fb1
movq 0xc0(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13fb1
jmp 0x13fa1
movq %rax, %rbx
movq 0x148(%rsp), %rdi
cmpq %r12, %rdi
je 0x13d3e
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13d3e
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x13d5a
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13d5a
movq %rax, %rbx
leaq 0x30(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x13f89
movq %rax, %rbx
movq 0x60(%rsp), %rdi
cmpq %r12, %rdi
je 0x13e23
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13e23
movq %rax, %rbx
movq 0x208(%rsp), %rdi
cmpq %r15, %rdi
je 0x13db0
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13db0
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13fcd
movq 0x68(%rsp), %rsi
jmp 0x13f2f
jmp 0x13fbd
jmp 0x13fbd
jmp 0x13fd9
jmp 0x13de2
jmp 0x13fd9
movq %rax, %rbx
movq %r14, %rdi
jmp 0x13fdf
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r15, %rdi
je 0x13ef7
movq 0x238(%rsp), %rsi
jmp 0x13ec4
jmp 0x13e15
jmp 0x13ef4
movq %rax, %rbx
movq %r15, %rdi
jmp 0x13fdf
movq %rax, %rbx
movq 0x268(%rsp), %rdi
cmpq %r13, %rdi
je 0x13fcd
movq 0x278(%rsp), %rsi
jmp 0x13f2f
movq %rax, %rbx
movq 0x288(%rsp), %rdi
cmpq %r12, %rdi
je 0x13fcd
movq 0x298(%rsp), %rsi
jmp 0x13f2f
movq %rax, %rbx
movq 0x2c8(%rsp), %rdi
cmpq %r15, %rdi
je 0x13e9e
movq 0x2d8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13e9e
movq %rax, %rbx
leaq 0x390(%rsp), %rdi
callq 0x15538
jmp 0x13fdc
jmp 0x13e9b
movq %rax, %rbx
leaq 0x68(%rsp), %r15
movq -0x10(%r15), %rdi
jmp 0x13f52
movq %rax, %rbx
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x13ef7
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13ef7
jmp 0x13fd9
movq %rax, %rbx
movq 0x308(%rsp), %rdi
cmpq %r13, %rdi
je 0x13fe4
movq 0x318(%rsp), %rsi
jmp 0x13f93
movq %rax, %rbx
leaq 0x68(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x13fe4
movq 0x68(%rsp), %rsi
jmp 0x13f93
movq %rax, %rbx
movq 0x2a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x13fcd
movq 0x2b8(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13fcd
movq %rax, %rbx
movq %rbp, %rdi
jmp 0x13fdf
movq %rax, %rbx
movq 0x348(%rsp), %rdi
cmpq %r15, %rdi
je 0x13fe4
movq (%r15), %rsi
jmp 0x13f93
movq %rax, %rbx
movq 0x328(%rsp), %rdi
cmpq %r15, %rdi
je 0x13fe4
movq 0x338(%rsp), %rsi
jmp 0x13f93
jmp 0x13fd9
movq %rax, %rbx
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
je 0x13fe4
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x3280
jmp 0x13fe4
jmp 0x13fbd
jmp 0x13fd9
movq %rax, %rbx
jmp 0x13fb1
movq %rax, %rbx
movq %r14, %rdi
callq 0x15538
leaq 0x58(%rsp), %rdi
callq 0x103f6
jmp 0x13fcd
movq %rax, %rbx
jmp 0x13fcd
movq %rax, %rbx
movq %r14, %rdi
callq 0x15538
leaq 0x20(%rsp), %rdi
callq 0xff3a
jmp 0x13fe4
movq %rax, %rbx
movq %r13, %rdi
callq 0x15538
movq %rbx, %rdi
callq 0x33b0