// File: /workspace/github_cpp_makefile_star2_O1/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 $0x98, %rsp
movq %rcx, %rbp
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %r14
leaq 0xbea2(%rip), %rax      # 0x3292c
movzbl (%r12), %ecx
addl $-0x12, %ecx
cmpl $0x28, %ecx
ja 0x26dc6
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%r12), %r12
jmp 0x26a8a
movq 0x8(%r12), %rsi
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %rbp, %rcx
callq 0x26a66
jmp 0x26e23
movq (%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
movq %rbp, %rcx
movl $0x2, %r8d
callq 0x27cf4
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movl 0x20(%rsp), %edx
callq 0x245b1
testq %rdx, %rdx
jne 0x26b20
testq %rax, %rax
je 0x275ae
movq %rax, %rdx
movq 0x8(%rdx), %rcx
testq %rcx, %rcx
leaq 0xa5db(%rip), %rax      # 0x31109
cmovneq %rcx, %rax
jmp 0x275b5
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x68(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0x26a66
cmpb $0x1, 0x28(%rsp)
jne 0x271c9
movq 0x30(%rsp), %r13
jmp 0x271d6
movq (%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
movq %rbp, %rcx
movl $0x2, %r8d
callq 0x27cf4
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movl 0x20(%rsp), %edx
callq 0x245b1
leaq 0x68(%rsp), %rdi
movq %rax, (%rdi)
movq %rdx, 0x8(%rdi)
callq 0x2db46
jmp 0x275b5
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x50(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0x26a66
movq 0x10(%r12), %rsi
leaq 0x68(%rsp), %rdi
leaq 0x50(%rsp), %rcx
movq %r15, %rdx
callq 0x26a66
movq 0x20(%rsp), %rbx
movq 0x68(%rsp), %rsi
movq %rbx, %rdi
callq 0x62f0
testq %rax, %rax
je 0x275ae
movq (%rbp), %rcx
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2dcbe
jmp 0x27611
movq (%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
movq %rbp, %rcx
movl $0x2, %r8d
callq 0x27cf4
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
movl 0x20(%rsp), %edx
callq 0x245b1
leaq 0x68(%rsp), %rdi
movq %rax, (%rdi)
movq %rdx, 0x8(%rdi)
callq 0x2db87
jmp 0x275b5
movupd (%r15), %xmm0
movq %rsp, %rdi
movapd %xmm0, (%rdi)
callq 0x2db46
jmp 0x27655
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movups (%rax), %xmm0
movups %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x50(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0x26a66
movq 0x10(%r12), %rsi
leaq 0x68(%rsp), %rdi
leaq 0x50(%rsp), %rcx
movq %r15, %rdx
callq 0x26a66
movq 0x20(%rsp), %rdi
movq 0x68(%rsp), %rbx
movq %rbx, %rsi
callq 0x62f0
testq %rax, %rax
je 0x27415
movq %rax, %r15
cmpb $0x1, 0x70(%rsp)
jne 0x2741e
movq 0x78(%rsp), %r12
jmp 0x27429
movupd (%r15), %xmm0
movq %rsp, %rdi
movapd %xmm0, (%rdi)
callq 0x2db87
jmp 0x27655
movq (%rbp), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x2d721
jmp 0x27665
movq 0x20(%r12), %rax
jmp 0x27655
movsbl 0x1(%r12), %edx
movq 0x20(%r12), %rax
movl (%rax), %ecx
cmpl %edx, %ecx
jne 0x2786b
cmpb $0x3, %dl
jne 0x26dc6
cmpl $0x3, %ecx
jne 0x274dc
movq 0x10(%rax), %rax
jmp 0x274de
movzbl 0x1(%r12), %eax
cmpl $0x1, %eax
je 0x2714f
cmpl $0x2, %eax
je 0x2710e
cmpl $0x4, %eax
jne 0x278a9
movq %r12, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x2544a
leaq 0xe24d(%rip), %rcx      # 0x35049
leaq 0xd525(%rip), %rdx      # 0x34328
testb %al, %al
cmovneq %rcx, %rdx
movq %rdx, (%r14)
jmp 0x27658
movq (%rbp), %rdx
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2d721
movq (%rbp), %rsi
movq %rbx, %rdi
callq 0x2dd5c
testq %rax, %rax
je 0x26ff6
movq %rax, %rbx
movq %rax, %rdi
callq 0x2ddcd
movq %r14, %rdi
movq %rbx, %rsi
movq %rax, %rdx
jmp 0x26fec
movq 0x8(%r15), %rax
testq %rax, %rax
jne 0x26e66
movq (%r15), %rax
testq %rax, %rax
je 0x26ff6
movq 0x8(%rax), %rcx
testq %rcx, %rcx
leaq 0xa295(%rip), %rax      # 0x31109
cmovneq %rcx, %rax
jmp 0x27655
movq 0x8(%rbp), %rdi
movq %rdi, (%rsp)
movq 0x10(%rdi), %rax
movq %rax, 0x18(%rsp)
movupd (%rdi), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%r12), %rax
movl $0x1, %r13d
testq %rax, %rax
je 0x26eb1
incq %r13
movq 0x18(%rax), %rax
jmp 0x26ea3
leaq (,%r13,8), %rax
leaq (%rax,%rax,2), %rsi
callq 0x2c52c
movq %rax, %rbx
testq %rax, %rax
je 0x275ae
movq 0x8(%rbp), %rax
leaq 0x68(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0x26a66
movq %rbp, 0x80(%rsp)
movq %r14, 0x48(%rsp)
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x20(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x10(%r12), %r12
testq %r12, %r12
movq %rbx, 0x40(%rsp)
je 0x274f4
leaq 0x18(%rbx), %rbp
movl $0x1, %r14d
leaq 0x68(%rsp), %rbx
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x26a66
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rbp)
movupd 0x20(%rsp), %xmm0
movupd %xmm0, (%rbp)
incq %r14
movq 0x18(%r12), %r12
addq $0x18, %rbp
testq %r12, %r12
jne 0x26f36
jmp 0x274fa
movq 0x8(%r12), %rsi
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %rbp, %rcx
callq 0x26a66
movq (%rbp), %rsi
movq %rbx, %rdi
callq 0x2dd5c
testq %rax, %rax
je 0x26ff6
movb (%rax), %dil
movq %rax, %rdx
testb %dil, %dil
je 0x26fe3
movq 0x20(%r12), %rcx
movq %rax, %rsi
incq %rsi
movq %rax, %rdx
testb %dil, %dil
js 0x26fd2
movzbl %dil, %edi
movb (%rcx,%rdi), %dil
movb %dil, (%rdx)
xorl %r8d, %r8d
testb %dil, %dil
setns %r8b
addq %r8, %rdx
jmp 0x26fd8
movb %dil, (%rdx)
incq %rdx
movb (%rsi), %dil
incq %rsi
testb %dil, %dil
jne 0x26fb3
movb $0x0, (%rdx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x2de38
jmp 0x27665
leaq 0xa10c(%rip), %rax      # 0x31109
jmp 0x27655
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x68(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
callq 0x26a66
cmpb $0x1, 0x28(%rsp)
jne 0x27343
movq 0x30(%rsp), %r13
jmp 0x27350
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
movq %rax, 0x88(%rsp)
movq (%rbp), %rax
movq %rax, 0x90(%rsp)
movq 0x8(%r12), %rsi
leaq 0x20(%rsp), %rdi
movq %r15, %rdx
movq %rbp, %rcx
callq 0x26a66
movq 0x10(%r12), %rsi
leaq 0x68(%rsp), %rdi
leaq 0x88(%rsp), %rcx
movq %r15, %rdx
callq 0x26a66
movq 0x10(%r12), %rax
movq 0x18(%rax), %rsi
leaq 0x50(%rsp), %rdi
leaq 0x88(%rsp), %rcx
movq %r15, %rdx
callq 0x26a66
movq (%rbp), %rsi
leaq 0x20(%rsp), %rdi
callq 0x2dd5c
movq %rax, %rbp
testq %rax, %rax
je 0x275ae
movq 0x68(%rsp), %r15
movq 0x50(%rsp), %r12
cmpb $0x1, 0x58(%rsp)
movq %r14, 0x48(%rsp)
jne 0x27470
movq 0x60(%rsp), %r13
jmp 0x2747b
movq %r14, 0x48(%rsp)
movq %r12, %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x2636c
movq (%rbp), %r14
movsd %xmm0, (%rsp)
movsd (%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm2
jne 0x275ba
jp 0x275ba
leaq 0xc94c(%rip), %rax      # 0x33a96
jmp 0x2764b
movq 0x8(%rbp), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
leaq 0x68(%rsp), %rcx
movq %rax, (%rcx)
movq (%rbp), %rax
movq %rax, 0x8(%rcx)
leaq 0x20(%rsp), %rdi
movq %r12, %rsi
movq %r15, %rdx
movl $0x2, %r8d
callq 0x27cf4
movq 0x28(%rsp), %rdi
movq 0x30(%rsp), %rsi
cmpq %rsi, %rdi
je 0x275ae
movl 0x20(%rsp), %edx
callq 0x245b1
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
movq %rdx, 0x8(%rsi)
movq (%rbp), %rdx
movq %r14, %rdi
callq 0x2d721
jmp 0x27611
movq 0x20(%rsp), %rdi
callq 0x1d2a2
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x2636c
addsd 0xb5aa(%rip), %xmm0     # 0x32798
callq 0x60e0
movsd %xmm0, 0x40(%rsp)
movq 0x10(%r12), %rax
movq 0x18(%rax), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x2636c
addsd 0xb583(%rip), %xmm0     # 0x32798
callq 0x60e0
movsd 0x40(%rsp), %xmm3
movsd %xmm3, 0x50(%rsp)
movsd 0x50(%rsp), %xmm1
ucomisd 0x50(%rsp), %xmm1
leaq 0x9ed0(%rip), %rsi      # 0x31109
jne 0x27601
jp 0x27601
addsd %xmm3, %xmm0
movsd %xmm0, 0x50(%rsp)
movsd 0x50(%rsp), %xmm1
ucomisd 0x50(%rsp), %xmm1
jne 0x27601
jp 0x27601
incq %r13
movq %r13, %xmm2
punpckldq 0xb4d9(%rip), %xmm2 # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
subpd 0xb4e1(%rip), %xmm2     # 0x32760
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm3
jae 0x27601
ucomisd %xmm0, %xmm3
jae 0x27601
movsd 0xb4e1(%rip), %xmm2     # 0x32788
ucomisd %xmm0, %xmm2
ja 0x27601
maxsd %xmm3, %xmm2
cvttsd2si %xmm2, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
movsd 0xb4d7(%rip), %xmm3     # 0x327a0
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 0x27944
cmpq %r13, %rcx
ja 0x27944
movq 0x20(%rsp), %rdx
leaq -0x1(%rdx,%rax), %rsi
jne 0x2732c
cmpb $0x1, 0x28(%rsp)
jne 0x27601
addq %rcx, %rdx
decq %rdx
movq (%rbp), %rcx
movq %r14, %rdi
callq 0x2dcbe
jmp 0x27611
movq 0x20(%rsp), %rdi
callq 0x1d2a2
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %rbp, %rdx
callq 0x2636c
addsd 0xb430(%rip), %xmm0     # 0x32798
callq 0x60e0
movsd %xmm0, 0x50(%rsp)
movsd 0x50(%rsp), %xmm1
ucomisd 0x50(%rsp), %xmm1
leaq 0x9d83(%rip), %rsi      # 0x31109
jne 0x27601
jp 0x27601
incq %r13
movq %r13, %xmm1
punpckldq 0xb3ae(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0xb3b6(%rip), %xmm1     # 0x32760
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
ucomisd %xmm2, %xmm0
jae 0x27601
movq %r14, %r15
movsd 0xb3bd(%rip), %xmm1     # 0x32788
maxsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0xb3bd(%rip), %xmm1     # 0x327a0
cvttsd2si %xmm1, %r14
andq %rcx, %r14
orq %rax, %r14
leaq -0x1(%r14), %rax
cmpq %r13, %rax
jae 0x27906
movq 0x20(%rsp), %rbx
cmpb $0x1, 0x28(%rsp)
jne 0x275d1
movq 0x30(%rsp), %rax
jmp 0x275d9
leaq 0x9ced(%rip), %r15      # 0x31109
jmp 0x27468
movq %rbx, %rdi
callq 0x1d2a2
movq %rax, %r12
movq 0x20(%rsp), %rbx
cmpb $0x1, 0x28(%rsp)
jne 0x2743c
movq 0x30(%rsp), %rax
jmp 0x27444
movq %rbx, %rdi
callq 0x1d2a2
addq %r12, %r15
cmpb $0x1, 0x28(%rsp)
jne 0x27468
addq %rax, %rbx
movq (%rbp), %rcx
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x2dcbe
jmp 0x27611
movq %r15, (%r14)
jmp 0x27604
movq %r12, %rdi
callq 0x1d2a2
movq %rax, %r13
movb (%rbp), %r14b
movq %rbp, 0x40(%rsp)
testb %r14b, %r14b
je 0x274c3
movq 0x40(%rsp), %rbp
movq %rbp, %rbx
incq %rbx
movsbl %r14b, %esi
movq %r15, %rdi
callq 0x6390
testq %rax, %rax
je 0x274b1
subq %r15, %rax
cmpq %r13, %rax
jae 0x274b8
movb (%r12,%rax), %r14b
movb %r14b, (%rbp)
incq %rbp
movb (%rbx), %r14b
incq %rbx
testb %r14b, %r14b
jne 0x27494
movb $0x0, (%rbp)
movq 0x48(%rsp), %r14
movq %r14, %rdi
movq 0x40(%rsp), %rsi
movq %rbp, %rdx
jmp 0x275a7
xorl %eax, %eax
testq %rax, %rax
leaq 0x9c21(%rip), %rcx      # 0x31109
cmovneq %rax, %rcx
movq %rcx, (%r14)
jmp 0x27658
movl $0x1, %r14d
cmpq %r13, %r14
jne 0x2788a
testq %r13, %r13
movq 0x80(%rsp), %r12
movq 0x40(%rsp), %rbx
je 0x27544
addq $0x10, %rbx
xorl %r15d, %r15d
movq %r13, %r14
cmpb $0x1, -0x8(%rbx)
jne 0x2752a
movq (%rbx), %rax
jmp 0x27533
movq -0x10(%rbx), %rdi
callq 0x1d2a2
addq %rax, %r15
addq $0x18, %rbx
decq %r14
jne 0x2751f
incq %r15
jmp 0x2754a
movl $0x1, %r15d
movq (%r12), %rdi
movq %r15, %rsi
callq 0x2c52c
movq 0x48(%rsp), %r14
testq %rax, %rax
movq 0x40(%rsp), %r8
je 0x275ae
movq %rax, %rdx
testq %r13, %r13
je 0x2759e
xorl %ecx, %ecx
movq %rax, %rdx
leaq (%rcx,%rcx,2), %rsi
movq (%r8,%rsi,8), %rsi
movb (%rsi), %dil
testb %dil, %dil
je 0x27596
incq %rsi
movb %dil, (%rdx)
incq %rdx
movb (%rsi), %dil
incq %rsi
testb %dil, %dil
jne 0x27585
incq %rcx
cmpq %r13, %rcx
jne 0x27572
movb $0x0, (%rdx)
movq %r14, %rdi
movq %rax, %rsi
callq 0x2de38
jmp 0x27611
leaq 0x9b54(%rip), %rax      # 0x31109
movq %rax, (%r14)
jmp 0x27604
movsd (%rsp), %xmm1
ucomisd (%rsp), %xmm1
jne 0x275c8
jnp 0x2761b
leaq 0xe6c9(%rip), %rax      # 0x35c98
jmp 0x2764b
movq %rbx, %rdi
callq 0x1d2a2
leaq (%rbx,%r14), %rsi
decq %rsi
cmpb $0x1, 0x28(%rsp)
jne 0x275fe
addq %rax, %rbx
movq (%rbp), %rcx
movq %r15, %r14
movq %r15, %rdi
movq %rbx, %rdx
callq 0x2dcbe
jmp 0x27611
movq %r15, %r14
movq %rsi, (%r14)
movb $0x0, 0x8(%r14)
movq $0x0, 0x10(%r14)
movq %rsp, %rdi
callq 0x2d6a0
jmp 0x27665
movsd (%rsp), %xmm1
addsd %xmm1, %xmm1
ucomisd (%rsp), %xmm1
jne 0x27649
jp 0x27649
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0xe661(%rip), %rcx      # 0x35c9d
leaq 0xe659(%rip), %rax      # 0x35c9c
cmovaq %rcx, %rax
jmp 0x2764b
xorl %eax, %eax
testq %rax, %rax
je 0x2767a
movq 0x48(%rsp), %r14
movq %rax, (%r14)
movb $0x0, 0x8(%r14)
movq $0x0, 0x10(%r14)
movq %r14, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xe625(%rip), %rdx      # 0x35ca6
movq %rsp, %rbx
movl $0x20, %esi
movq %rbx, %rdi
movl $0xf, %ecx
movsd %xmm0, 0x40(%rsp)
movb $0x1, %al
callq 0x6360
movq %rbx, %rdi
movl $0x65, %esi
callq 0x6390
testq %rax, %rax
je 0x278e7
movq %rax, %r15
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 0x278c8
leaq (%rsp,%rcx), %rbx
cmpb $0x2e, 0x1(%rbx)
jne 0x278c8
incq %rbx
movb %al, (%rbx)
cmpq %rbx, %r15
je 0x27702
leaq -0x1(%r15), %rax
cmpb $0x30, -0x1(%r15)
movq %rax, %r15
je 0x276ea
incq %rax
jmp 0x27705
movq %rbx, %rax
leal 0x1(%r12), %ebp
movb $0x0, (%rax)
movq %rsp, %rdi
callq 0x6270
movl %ebp, %ecx
negl %ecx
cmovsl %ebp, %ecx
leaq (%rcx,%rax), %r15
addq $0x4, %r15
movq %r14, %rdi
movq %r15, %rsi
callq 0x2c52c
testq %rax, %rax
je 0x2779d
movq %rax, %r14
xorpd %xmm0, %xmm0
ucomisd 0x40(%rsp), %xmm0
movq %rax, %r13
jbe 0x2774e
leaq 0x1(%r14), %r13
movb $0x2d, (%r14)
testl %r12d, %r12d
js 0x277a9
addl $0x2, %r12d
movl $0x30, %eax
movb (%rbx), %cl
testb %cl, %cl
sete %dl
movsbl %cl, %esi
addl $-0x30, %esi
cmpl $0xa, %esi
setb %sil
orb %dl, %sil
je 0x2782d
xorl %edx, %edx
testb %cl, %cl
setne %dl
movzbl %cl, %ecx
cmovel %eax, %ecx
addq %rdx, %rbx
movb %cl, (%r13)
incq %r13
decl %r12d
cmpl $0x1, %r12d
jg 0x2775c
xorl %ebp, %ebp
jmp 0x277b1
leaq 0x9965(%rip), %rax      # 0x31109
jmp 0x27650
movb $0x30, (%r13)
incq %r13
cmpb $0x0, (%rbx)
je 0x27808
movb $0x2e, (%r13)
leaq 0x1(%r13), %rdx
testl %ebp, %ebp
jns 0x277e4
movl %ebp, %eax
negl %eax
movq %rdx, %rdi
movl $0x30, %esi
movq %rax, %rdx
callq 0x61b0
movl $0x1, %eax
subl %ebp, %eax
addq %rax, %r13
movq %r13, %rdx
movb (%rbx), %al
testb %al, %al
je 0x2780b
incq %rbx
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x2784c
movb %al, (%rdx)
incq %rdx
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x277ed
jmp 0x2780b
movq %r13, %rdx
movq %r14, %rax
addq %r15, %rax
cmpq %rax, %rdx
jae 0x27925
movb $0x0, (%rdx)
movq 0x48(%rsp), %rdi
movq %r14, %rsi
movq %rdi, %r14
jmp 0x26fec
leaq 0xe3a5(%rip), %rdi      # 0x35bd9
leaq 0xb6ba(%rip), %rsi      # 0x32ef5
leaq 0xe3d9(%rip), %rcx      # 0x35c1b
movl $0x2016, %edx           # imm = 0x2016
callq 0x6120
leaq 0xe398(%rip), %rdi      # 0x35beb
leaq 0xb69b(%rip), %rsi      # 0x32ef5
leaq 0xe3ba(%rip), %rcx      # 0x35c1b
movl $0x202c, %edx           # imm = 0x202C
callq 0x6120
leaq 0xdad8(%rip), %rdi      # 0x3534a
leaq 0xb67c(%rip), %rsi      # 0x32ef5
leaq 0xe0cf(%rip), %rcx      # 0x3594f
movl $0x29c4, %edx           # imm = 0x29C4
callq 0x6120
leaq 0xe216(%rip), %rdi      # 0x35aa7
leaq 0xb65d(%rip), %rsi      # 0x32ef5
leaq 0xe189(%rip), %rcx      # 0x35a28
movl $0x28e2, %edx           # imm = 0x28E2
callq 0x6120
leaq 0xe145(%rip), %rdi      # 0x359f5
leaq 0xb63e(%rip), %rsi      # 0x32ef5
leaq 0xe091(%rip), %rcx      # 0x3594f
movl $0x29e0, %edx           # imm = 0x29E0
callq 0x6120
leaq 0xe45e(%rip), %rdi      # 0x35d2d
leaq 0xb61f(%rip), %rsi      # 0x32ef5
leaq 0xe3de(%rip), %rcx      # 0x35cbb
movl $0x1fe5, %edx           # imm = 0x1FE5
callq 0x6120
leaq 0xe3bd(%rip), %rdi      # 0x35cab
leaq 0xb600(%rip), %rsi      # 0x32ef5
leaq 0xe3bf(%rip), %rcx      # 0x35cbb
movl $0x1fdf, %edx           # imm = 0x1FDF
callq 0x6120
leaq 0xe022(%rip), %rdi      # 0x3592f
leaq 0xb5e1(%rip), %rsi      # 0x32ef5
leaq 0xe034(%rip), %rcx      # 0x3594f
movl $0x2969, %edx           # imm = 0x2969
callq 0x6120
leaq 0xe353(%rip), %rdi      # 0x35c7f
leaq 0xb5c2(%rip), %rsi      # 0x32ef5
leaq 0xe2e1(%rip), %rcx      # 0x35c1b
movl $0x2032, %edx           # imm = 0x2032
callq 0x6120
leaq 0xe07c(%rip), %rdi      # 0x359c7
leaq 0xb5a3(%rip), %rsi      # 0x32ef5
leaq 0xdff6(%rip), %rcx      # 0x3594f
movl $0x2985, %edx           # imm = 0x2985
callq 0x6120
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
jmp 0x27995
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2d6a0
movq %rbx, %rdi
callq 0x6430