// File: /workspace/github_cpp_makefile_star2_O2/jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::impl::(anonymous namespace)::xpath_ast_node::eval_string(pugi::impl::(anonymous namespace)::xpath_context const&, pugi::impl::(anonymous namespace)::xpath_stack const&)
xpath_string eval_string(const xpath_context& c, const xpath_stack& stack)
		{
			switch (_type)
			{
			case ast_string_constant:
				return xpath_string::from_const(_data.string);

			case ast_func_local_name_0:
			{
				xpath_node na = c.n;

				return xpath_string::from_const(local_name(na));
			}

			case ast_func_local_name_1:
			{
				xpath_allocator_capture cr(stack.result);

				xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first);
				xpath_node na = ns.first();

				return xpath_string::from_const(local_name(na));
			}

			case ast_func_name_0:
			{
				xpath_node na = c.n;

				return xpath_string::from_const(qualified_name(na));
			}

			case ast_func_name_1:
			{
				xpath_allocator_capture cr(stack.result);

				xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first);
				xpath_node na = ns.first();

				return xpath_string::from_const(qualified_name(na));
			}

			case ast_func_namespace_uri_0:
			{
				xpath_node na = c.n;

				return xpath_string::from_const(namespace_uri(na));
			}

			case ast_func_namespace_uri_1:
			{
				xpath_allocator_capture cr(stack.result);

				xpath_node_set_raw ns = _left->eval_node_set(c, stack, nodeset_eval_first);
				xpath_node na = ns.first();

				return xpath_string::from_const(namespace_uri(na));
			}

			case ast_func_string_0:
				return string_value(c.n, stack.result);

			case ast_func_string_1:
				return _left->eval_string(c, stack);

			case ast_func_concat:
				return eval_string_concat(c, stack);

			case ast_func_substring_before:
			{
				xpath_allocator_capture cr(stack.temp);

				xpath_stack swapped_stack = {stack.temp, stack.result};

				xpath_string s = _left->eval_string(c, swapped_stack);
				xpath_string p = _right->eval_string(c, swapped_stack);

				const char_t* pos = find_substring(s.c_str(), p.c_str());

				return pos ? xpath_string::from_heap(s.c_str(), pos, stack.result) : xpath_string();
			}

			case ast_func_substring_after:
			{
				xpath_allocator_capture cr(stack.temp);

				xpath_stack swapped_stack = {stack.temp, stack.result};

				xpath_string s = _left->eval_string(c, swapped_stack);
				xpath_string p = _right->eval_string(c, swapped_stack);

				const char_t* pos = find_substring(s.c_str(), p.c_str());
				if (!pos) return xpath_string();

				const char_t* rbegin = pos + p.length();
				const char_t* rend = s.c_str() + s.length();

				return s.uses_heap() ? xpath_string::from_heap(rbegin, rend, stack.result) : xpath_string::from_const(rbegin);
			}

			case ast_func_substring_2:
			{
				xpath_allocator_capture cr(stack.temp);

				xpath_stack swapped_stack = {stack.temp, stack.result};

				xpath_string s = _left->eval_string(c, swapped_stack);
				size_t s_length = s.length();

				double first = round_nearest(_right->eval_number(c, stack));

				if (is_nan(first)) return xpath_string(); // NaN
				else if (first >= s_length + 1) return xpath_string();

				size_t pos = first < 1 ? 1 : static_cast<size_t>(first);
				assert(1 <= pos && pos <= s_length + 1);

				const char_t* rbegin = s.c_str() + (pos - 1);
				const char_t* rend = s.c_str() + s.length();

				return s.uses_heap() ? xpath_string::from_heap(rbegin, rend, stack.result) : xpath_string::from_const(rbegin);
			}

			case ast_func_substring_3:
			{
				xpath_allocator_capture cr(stack.temp);

				xpath_stack swapped_stack = {stack.temp, stack.result};

				xpath_string s = _left->eval_string(c, swapped_stack);
				size_t s_length = s.length();

				double first = round_nearest(_right->eval_number(c, stack));
				double last = first + round_nearest(_right->_next->eval_number(c, stack));

				if (is_nan(first) || is_nan(last)) return xpath_string();
				else if (first >= s_length + 1) return xpath_string();
				else if (first >= last) return xpath_string();
				else if (last < 1) return xpath_string();

				size_t pos = first < 1 ? 1 : static_cast<size_t>(first);
				size_t end = last >= s_length + 1 ? s_length + 1 : static_cast<size_t>(last);

				assert(1 <= pos && pos <= end && end <= s_length + 1);
				const char_t* rbegin = s.c_str() + (pos - 1);
				const char_t* rend = s.c_str() + (end - 1);

				return (end == s_length + 1 && !s.uses_heap()) ? xpath_string::from_const(rbegin) : xpath_string::from_heap(rbegin, rend, stack.result);
			}

			case ast_func_normalize_space_0:
			{
				xpath_string s = string_value(c.n, stack.result);

				char_t* begin = s.data(stack.result);
				if (!begin) return xpath_string();

				char_t* end = normalize_space(begin);

				return xpath_string::from_heap_preallocated(begin, end);
			}

			case ast_func_normalize_space_1:
			{
				xpath_string s = _left->eval_string(c, stack);

				char_t* begin = s.data(stack.result);
				if (!begin) return xpath_string();

				char_t* end = normalize_space(begin);

				return xpath_string::from_heap_preallocated(begin, end);
			}

			case ast_func_translate:
			{
				xpath_allocator_capture cr(stack.temp);

				xpath_stack swapped_stack = {stack.temp, stack.result};

				xpath_string s = _left->eval_string(c, stack);
				xpath_string from = _right->eval_string(c, swapped_stack);
				xpath_string to = _right->_next->eval_string(c, swapped_stack);

				char_t* begin = s.data(stack.result);
				if (!begin) return xpath_string();

				char_t* end = translate(begin, from.c_str(), to.c_str(), to.length());

				return xpath_string::from_heap_preallocated(begin, end);
			}

			case ast_opt_translate_table:
			{
				xpath_string s = _left->eval_string(c, stack);

				char_t* begin = s.data(stack.result);
				if (!begin) return xpath_string();

				char_t* end = translate_table(begin, _data.table);

				return xpath_string::from_heap_preallocated(begin, end);
			}

			case ast_variable:
			{
				assert(_rettype == _data.variable->type());

				if (_rettype == xpath_type_string)
					return xpath_string::from_const(_data.variable->get_string());
			}

			// fallthrough
			default:
			{
				switch (_rettype)
				{
				case xpath_type_boolean:
					return xpath_string::from_const(eval_boolean(c, stack) ? PUGIXML_TEXT("true") : PUGIXML_TEXT("false"));

				case xpath_type_number:
					return convert_number_to_string(eval_number(c, stack), stack.result);

				case xpath_type_node_set:
				{
					xpath_allocator_capture cr(stack.temp);

					xpath_stack swapped_stack = {stack.temp, stack.result};

					xpath_node_set_raw ns = eval_node_set(c, swapped_stack, nodeset_eval_first);
					return ns.empty() ? xpath_string() : string_value(ns.first(), stack.result);
				}

				default:
					assert(false && "Wrong expression for return type string"); // unreachable
					return xpath_string();
				}
			}
			}
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rcx, %rbx
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %r14
leaq 0xb2b8(%rip), %rax      # 0x2b93c
movzbl (%r12), %ecx
addl $-0x12, %ecx
cmpl $0x28, %ecx
ja 0x20e6d
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%r12), %r12
jmp 0x20684
movq 0x8(%r12), %rsi
movq %rbx, %r12
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %r12, %rcx
callq 0x20660
jmp 0x20a6f
movq (%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %r8
movq %r15, %rdx
movq %rbx, %rcx
callq 0x217e0
leaq 0x30(%rsp), %rdi
callq 0x22628
testq %rdx, %rdx
jne 0x20711
testq %rax, %rax
je 0x21022
movq %rax, %rdx
movq 0x8(%rdx), %rcx
testq %rcx, %rcx
leaq 0x99ea(%rip), %rax      # 0x2a109
cmovneq %rcx, %rax
jmp 0x21047
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x70(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x20660
leaq 0x30(%rsp), %rdi
callq 0x214ba
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1ffb8
addsd 0xb01f(%rip), %xmm0     # 0x2b7a8
callq 0x60d0
movsd %xmm0, 0x28(%rsp)
movq 0x10(%r12), %rax
movq 0x18(%rax), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1ffb8
addsd 0xaff8(%rip), %xmm0     # 0x2b7a8
callq 0x60d0
movsd 0x28(%rsp), %xmm3
movsd %xmm3, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
leaq 0x9935(%rip), %rsi      # 0x2a109
jne 0x207f6
jp 0x207f6
addsd %xmm3, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
jne 0x207f6
jnp 0x2109b
movq %rsi, (%r14)
jmp 0x2104a
movq (%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %r8
movq %r15, %rdx
movq %rbx, %rcx
callq 0x217e0
leaq 0x30(%rsp), %rdi
callq 0x22628
leaq 0x70(%rsp), %rdi
movq %rax, (%rdi)
movq %rdx, 0x8(%rdi)
callq 0x27fab
jmp 0x21047
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x58(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x20660
movq %rbx, %r13
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x58(%rsp), %rcx
movq %r15, %rdx
callq 0x20660
movq 0x30(%rsp), %rbx
movq 0x70(%rsp), %rsi
movq %rbx, %rdi
callq 0x6300
testq %rax, %rax
je 0x21022
movq (%r13), %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x280f2
jmp 0x21054
movq (%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %r8
movq %r15, %rdx
movq %rbx, %rcx
callq 0x217e0
leaq 0x30(%rsp), %rdi
callq 0x22628
leaq 0x70(%rsp), %rdi
movq %rax, (%rdi)
movq %rdx, 0x8(%rdi)
callq 0x27ff3
jmp 0x21047
movupd (%r15), %xmm0
movq %rsp, %rdi
movapd %xmm0, (%rdi)
callq 0x27fab
jmp 0x20c2f
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x58(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x20660
movq %rbx, %r13
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x58(%rsp), %rcx
movq %r15, %rdx
callq 0x20660
movq 0x30(%rsp), %rdi
movq 0x70(%rsp), %rsi
callq 0x6300
testq %rax, %rax
je 0x21071
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0x214ba
addq %rax, %rbx
leaq 0x30(%rsp), %r12
movq (%r12), %r15
movq %r12, %rdi
callq 0x214ba
cmpb $0x1, 0x8(%r12)
jne 0x21078
addq %rax, %r15
movq (%r13), %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x280f2
jmp 0x21054
movupd (%r15), %xmm0
movq %rsp, %rdi
movapd %xmm0, (%rdi)
callq 0x27ff3
jmp 0x20c2f
movq (%rbx), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x27c4d
jmp 0x2105c
movq 0x20(%r12), %rax
jmp 0x20c2f
movsbl 0x1(%r12), %eax
movq 0x20(%r12), %rcx
cmpl %eax, (%rcx)
jne 0x2133e
cmpb $0x3, %al
jne 0x20e72
movq 0x10(%rcx), %rax
testq %rax, %rax
leaq 0x96ba(%rip), %rcx      # 0x2a109
cmovneq %rax, %rcx
movq %rcx, (%r14)
jmp 0x20c32
movq (%rbx), %rdx
movq %rbx, %r12
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x27c4d
movq (%r12), %rsi
movq %rbx, %rdi
callq 0x28164
testq %rax, %rax
je 0x20c28
movq %rax, %rbx
movq %rax, %rdi
callq 0x281ab
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
jmp 0x20eca
movq 0x8(%r15), %rax
testq %rax, %rax
jne 0x20ab2
movq (%r15), %rax
testq %rax, %rax
je 0x20c28
movq 0x8(%rax), %rcx
testq %rcx, %rcx
leaq 0x9649(%rip), %rax      # 0x2a109
cmovneq %rcx, %rax
jmp 0x20c2f
movq %r14, 0x28(%rsp)
movq 0x8(%rbx), %rdi
movq %rdi, (%rsp)
movupd (%rdi), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rdi), %rax
movq %rax, 0x18(%rsp)
leaq 0x10(%r12), %rbp
pushq $0x18
popq %rsi
xorl %r14d, %r14d
movq %rbp, %rax
movq (%rax), %rax
testq %rax, %rax
je 0x20b0c
addq $0x18, %rax
incq %r14
addq $0x18, %rsi
jmp 0x20af7
callq 0x26c58
movq %rax, 0x50(%rsp)
testq %rax, %rax
je 0x2103b
movq %rbx, 0x90(%rsp)
movdqu (%rbx), %xmm0
pshufd $0x4e, %xmm0, %xmm0     # xmm0 = xmm0[2,3,0,1]
leaq 0x70(%rsp), %rcx
movdqa %xmm0, (%rcx)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x20660
leaq 0x1(%r14), %rax
movq %rax, 0x88(%rsp)
leaq 0x30(%rsp), %r12
movq 0x10(%r12), %rax
movq 0x50(%rsp), %r13
movq %rax, 0x10(%r13)
movupd (%r12), %xmm0
movupd %xmm0, (%r13)
addq $0x18, %r13
leaq 0x70(%rsp), %rbx
movq (%rbp), %rbp
testq %rbp, %rbp
je 0x20eec
movq %r12, %rdi
movq %rbp, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x20660
movq 0x40(%rsp), %rax
movq %rax, 0x10(%r13)
movupd 0x30(%rsp), %xmm0
movupd %xmm0, (%r13)
addq $0x18, %rbp
decq %r14
addq $0x18, %r13
jmp 0x20b7f
movq 0x8(%r12), %rsi
movq %rbx, %r13
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %r13, %rcx
callq 0x20660
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x28164
testq %rax, %rax
je 0x20c28
movq 0x20(%r12), %rcx
pushq $0x1
popq %rsi
movq %rax, %rdx
movq %rax, %rdi
movzbl (%rdi), %r8d
testq %r8, %r8
je 0x20ec1
movq %rsi, %r9
testb %r8b, %r8b
js 0x20c1a
movb (%rcx,%r8), %r8b
xorl %r9d, %r9d
testb %r8b, %r8b
setns %r9b
incq %rdi
addq %rdx, %r9
movb %r8b, (%rdx)
movq %r9, %rdx
jmp 0x20bf7
leaq 0x94da(%rip), %rax      # 0x2a109
movq %rax, (%r14)
movb $0x0, 0x8(%r14)
andq $0x0, 0x10(%r14)
jmp 0x2105c
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x70(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
callq 0x20660
leaq 0x30(%rsp), %rdi
callq 0x214ba
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1ffb8
addsd 0xab06(%rip), %xmm0     # 0x2b7a8
callq 0x60d0
movsd %xmm0, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
leaq 0x9449(%rip), %r15      # 0x2a109
jne 0x20eb9
jp 0x20eb9
incq %r13
movq %r13, %xmm1
punpckldq 0xaa84(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0xaa8c(%rip), %xmm1     # 0x2b770
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
ucomisd %xmm2, %xmm0
jae 0x20eb9
movsd 0xaa96(%rip), %xmm1     # 0x2b798
maxsd %xmm0, %xmm1
cvttsd2si %xmm1, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
subsd 0xaa96(%rip), %xmm1     # 0x2b7b0
cvttsd2si %xmm1, %rax
andq %rdx, %rax
orq %rcx, %rax
leaq -0x1(%rax), %rcx
cmpq %r13, %rcx
jae 0x213d9
movq %rbx, %rbp
leaq 0x30(%rsp), %r12
movq (%r12), %rbx
leaq (%rbx,%rax), %r15
decq %r15
movq %r12, %rdi
callq 0x214ba
cmpb $0x1, 0x8(%r12)
jne 0x20eb9
addq %rax, %rbx
movq (%rbp), %rcx
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x280f2
jmp 0x21054
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
movq %rax, 0x98(%rsp)
movq (%rbx), %rax
movq %rax, 0xa0(%rsp)
movq 0x8(%r12), %rsi
leaq 0x30(%rsp), %rdi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x20660
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %r15, %rdx
callq 0x20660
movq 0x10(%r12), %rax
movq 0x18(%rax), %rsi
leaq 0x58(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %r15, %rdx
callq 0x20660
movq (%rbx), %rsi
leaq 0x30(%rsp), %rdi
callq 0x28164
movq %rax, %rbp
testq %rax, %rax
je 0x21022
movq %r14, 0x28(%rsp)
movq 0x70(%rsp), %r15
leaq 0x58(%rsp), %rdi
movq (%rdi), %rax
movq %rax, 0x50(%rsp)
callq 0x214ba
movq %rax, %r13
movq %rbp, %r12
movq %rbp, %r14
incq %r14
movq %r14, %rcx
movsbl -0x1(%rcx), %ebx
testl %ebx, %ebx
je 0x20ed4
movq %rcx, %r14
movq %r15, %rdi
movl %ebx, %esi
callq 0x63a0
testq %rax, %rax
je 0x20e64
subq %r15, %rax
leaq 0x1(%r14), %rcx
cmpq %r13, %rax
jae 0x20e32
movq 0x50(%rsp), %rcx
movb (%rcx,%rax), %bl
movb %bl, (%r12)
incq %r12
jmp 0x20e2c
movb 0x1(%r12), %al
cmpb $0x1, %al
je 0x20fb5
movzbl %al, %eax
cmpl $0x2, %eax
je 0x20f7a
cmpl $0x4, %eax
jne 0x2137c
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1f176
leaq 0xd165(%rip), %rcx      # 0x2e009
leaq 0xc4bd(%rip), %rdx      # 0x2d368
testb %al, %al
cmovneq %rcx, %rdx
movq %rdx, (%r14)
jmp 0x20c32
movq %r15, (%r14)
jmp 0x2104a
movb $0x0, (%rdx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x2820e
jmp 0x2105c
movb $0x0, (%r12)
movq 0x28(%rsp), %r14
movq %r14, %rdi
movq %rbp, %rsi
movq %r12, %rdx
jmp 0x21034
testq %r14, %r14
jne 0x2135d
xorl %ebx, %ebx
movq 0x50(%rsp), %r15
movq 0x88(%rsp), %r14
subq $0x1, %r14
jb 0x20f1b
movq %r15, %rdi
callq 0x214ba
addq %rax, %rbx
addq $0x18, %r15
jmp 0x20f04
movq 0x90(%rsp), %rax
movq (%rax), %rdi
incq %rbx
movq %rbx, %rsi
callq 0x26c58
testq %rax, %rax
movq 0x28(%rsp), %r14
movq 0x50(%rsp), %r8
movq 0x88(%rsp), %r9
je 0x21022
xorl %ecx, %ecx
movq %rax, %rdx
cmpq %rcx, %r9
je 0x2102b
imulq $0x18, %rcx, %rsi
movq (%r8,%rsi), %rsi
movb (%rsi), %dil
testb %dil, %dil
je 0x20f75
movb %dil, (%rdx)
incq %rdx
incq %rsi
jmp 0x20f62
incq %rcx
jmp 0x20f51
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x1ffb8
movq (%rbx), %r15
movsd %xmm0, (%rsp)
movsd (%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm2
jne 0x2107d
jp 0x2107d
leaq 0xbb26(%rip), %rax      # 0x2cad6
jmp 0x20c2f
movq 0x8(%rbx), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x70(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbx), %rax
movq %rax, 0x8(%rcx)
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %r8
movq %r12, %rsi
movq %r15, %rdx
callq 0x217e0
movq 0x38(%rsp), %rax
cmpq 0x40(%rsp), %rax
je 0x21022
leaq 0x30(%rsp), %rdi
callq 0x22628
leaq 0x58(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq (%rbx), %rdx
movq %r14, %rdi
callq 0x27c4d
jmp 0x21054
leaq 0x90e0(%rip), %rax      # 0x2a109
jmp 0x21047
movb $0x0, (%rdx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x2820e
jmp 0x21054
leaq 0x90c7(%rip), %rax      # 0x2a109
movq 0x28(%rsp), %r14
movq %rax, (%r14)
movb $0x0, 0x8(%r14)
andq $0x0, 0x10(%r14)
movq %rsp, %rdi
callq 0x27be6
movq %r14, %rax
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x9091(%rip), %rbx      # 0x2a109
movq %rbx, (%r14)
jmp 0x2104a
movsd (%rsp), %xmm1
ucomisd (%rsp), %xmm1
jne 0x2108f
jnp 0x21176
leaq 0xdc5b(%rip), %rax      # 0x2ecf1
jmp 0x20c2f
incq %r13
movq %r13, %xmm2
punpckldq 0xa6b5(%rip), %xmm2 # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
subpd 0xa6bd(%rip), %xmm2     # 0x2b770
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm3
jae 0x207f6
ucomisd %xmm0, %xmm3
jae 0x207f6
movsd 0xa6bd(%rip), %xmm2     # 0x2b798
ucomisd %xmm0, %xmm2
ja 0x207f6
maxsd %xmm3, %xmm2
cvttsd2si %xmm2, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
movsd 0xa6b3(%rip), %xmm3     # 0x2b7b0
subsd %xmm3, %xmm2
cvttsd2si %xmm2, %rax
andq %rdx, %rax
orq %rcx, %rax
movapd %xmm0, %xmm2
subsd %xmm3, %xmm2
cvttsd2si %xmm2, %rdx
cvttsd2si %xmm0, %rsi
movq %rsi, %rcx
sarq $0x3f, %rcx
andq %rdx, %rcx
orq %rsi, %rcx
ucomisd %xmm1, %xmm0
cmovaeq %r13, %rcx
leaq -0x1(%rax), %rdx
cmpq %rcx, %rdx
jae 0x213f8
cmpq %r13, %rcx
ja 0x213f8
movq 0x30(%rsp), %rdx
leaq -0x1(%rdx,%rax), %rsi
jne 0x21160
cmpb $0x1, 0x38(%rsp)
jne 0x207f6
addq %rcx, %rdx
decq %rdx
movq (%rbx), %rcx
movq %r14, %rdi
callq 0x280f2
jmp 0x21054
movsd (%rsp), %xmm1
addsd %xmm1, %xmm1
ucomisd (%rsp), %xmm1
jne 0x211a7
jp 0x211a7
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0xdb5f(%rip), %rcx      # 0x2ecf6
leaq 0xdb57(%rip), %rax      # 0x2ecf5
cmovaq %rcx, %rax
jmp 0x20c2f
movq %r14, %r13
leaq 0xdb4e(%rip), %rdx      # 0x2ecff
movq %rsp, %rbx
pushq $0x20
popq %rsi
pushq $0xf
popq %rcx
movq %rbx, %rdi
movsd %xmm0, 0x28(%rsp)
movb $0x1, %al
callq 0x6370
pushq $0x65
popq %rsi
movq %rbx, %rdi
callq 0x63a0
testq %rax, %rax
je 0x21436
movq %rax, %r14
leaq 0x1(%rax), %rdi
callq 0x61d0
xorl %ecx, %ecx
cmpb $0x2d, (%rsp)
movl %eax, %r12d
sete %cl
movb (%rsp,%rcx), %al
cmpb $0x30, %al
je 0x21417
leaq (%rsp,%rcx), %rbx
cmpb $0x2e, 0x1(%rbx)
jne 0x21417
incq %rbx
movb %al, (%rbx)
cmpq %rbx, %r14
je 0x2122c
leaq -0x1(%r14), %rax
cmpb $0x30, -0x1(%r14)
movq %rax, %r14
je 0x21214
incq %rax
jmp 0x2122f
movq %rbx, %rax
leal 0x1(%r12), %ebp
movb $0x0, (%rax)
movq %rsp, %rdi
callq 0x6260
movl %ebp, %ecx
negl %ecx
cmovsl %ebp, %ecx
leaq (%rcx,%rax), %r14
addq $0x4, %r14
movq %r15, %rdi
movq %r14, %rsi
callq 0x26c58
testq %rax, %rax
je 0x212c4
xorpd %xmm0, %xmm0
ucomisd 0x28(%rsp), %xmm0
movq %rax, %rdx
jbe 0x21274
leaq 0x1(%rax), %rdx
movb $0x2d, (%rax)
testl %r12d, %r12d
js 0x212e1
pushq $0x30
popq %rcx
testl %ebp, %ebp
jle 0x212c0
movb (%rbx), %sil
testb %sil, %sil
sete %dil
movsbl %sil, %r8d
addl $-0x30, %r8d
cmpl $0xa, %r8d
setb %r8b
orb %dil, %r8b
je 0x2139b
xorl %edi, %edi
testb %sil, %sil
setne %dil
movzbl %sil, %esi
cmovel %ecx, %esi
addq %rdi, %rbx
movb %sil, (%rdx)
incq %rdx
decl %ebp
jmp 0x2127c
xorl %ebp, %ebp
jmp 0x212e7
leaq 0x8e3e(%rip), %rax      # 0x2a109
movq %r13, %r14
movq %rax, (%r13)
movb $0x0, 0x8(%r13)
andq $0x0, 0x10(%r13)
jmp 0x2105c
movb $0x30, (%rdx)
incq %rdx
cmpb $0x0, (%rbx)
je 0x21321
movb $0x2e, (%rdx)
testl %ebp, %ebp
jns 0x212fd
incq %rdx
movb $0x30, (%rdx)
incl %ebp
jmp 0x212ef
pushq $0x1
popq %rcx
movsbl -0x1(%rbx,%rcx), %esi
testl %esi, %esi
je 0x2131e
leal -0x30(%rsi), %edi
cmpl $0xa, %edi
jae 0x213ba
movb %sil, (%rdx,%rcx)
incq %rcx
jmp 0x21300
addq %rcx, %rdx
movq %rax, %rcx
addq %r14, %rcx
cmpq %rcx, %rdx
jae 0x21455
movb $0x0, (%rdx)
movq %r13, %r14
movq %r13, %rdi
jmp 0x20ec7
leaq 0xd05e(%rip), %rdi      # 0x2e3a3
leaq 0xabe9(%rip), %rsi      # 0x2bf35
leaq 0xd655(%rip), %rcx      # 0x2e9a8
movl $0x29c4, %edx           # imm = 0x29C4
callq 0x6100
leaq 0xd79c(%rip), %rdi      # 0x2eb00
leaq 0xabca(%rip), %rsi      # 0x2bf35
leaq 0xd70f(%rip), %rcx      # 0x2ea81
movl $0x28e2, %edx           # imm = 0x28E2
callq 0x6100
leaq 0xd6cb(%rip), %rdi      # 0x2ea4e
leaq 0xabab(%rip), %rsi      # 0x2bf35
leaq 0xd617(%rip), %rcx      # 0x2e9a8
movl $0x29e0, %edx           # imm = 0x29E0
callq 0x6100
leaq 0xd890(%rip), %rdi      # 0x2ec32
leaq 0xab8c(%rip), %rsi      # 0x2bf35
leaq 0xd8c4(%rip), %rcx      # 0x2ec74
movl $0x2016, %edx           # imm = 0x2016
callq 0x6100
leaq 0xd883(%rip), %rdi      # 0x2ec44
leaq 0xab6d(%rip), %rsi      # 0x2bf35
leaq 0xd8a5(%rip), %rcx      # 0x2ec74
movl $0x202c, %edx           # imm = 0x202C
callq 0x6100
leaq 0xd5a8(%rip), %rdi      # 0x2e988
leaq 0xab4e(%rip), %rsi      # 0x2bf35
leaq 0xd5ba(%rip), %rcx      # 0x2e9a8
movl $0x2969, %edx           # imm = 0x2969
callq 0x6100
leaq 0xd621(%rip), %rdi      # 0x2ea20
leaq 0xab2f(%rip), %rsi      # 0x2bf35
leaq 0xd59b(%rip), %rcx      # 0x2e9a8
movl $0x2985, %edx           # imm = 0x2985
callq 0x6100
leaq 0xd968(%rip), %rdi      # 0x2ed86
leaq 0xab10(%rip), %rsi      # 0x2bf35
leaq 0xd8e8(%rip), %rcx      # 0x2ed14
movl $0x1fe5, %edx           # imm = 0x1FE5
callq 0x6100
leaq 0xd8c7(%rip), %rdi      # 0x2ed04
leaq 0xaaf1(%rip), %rsi      # 0x2bf35
leaq 0xd8c9(%rip), %rcx      # 0x2ed14
movl $0x1fdf, %edx           # imm = 0x1FDF
callq 0x6100
leaq 0xd87c(%rip), %rdi      # 0x2ecd8
leaq 0xaad2(%rip), %rsi      # 0x2bf35
leaq 0xd80a(%rip), %rcx      # 0x2ec74
movl $0x2032, %edx           # imm = 0x2032
callq 0x6100
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
jmp 0x214a6
movq %rax, %rbx
movq %rsp, %rdi
callq 0x27be6
movq %rbx, %rdi
callq 0x6460
nop