// File: /workspace/github_cpp_makefile_star2_O3/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, %r14
movq %rdx, %r15
movq %rsi, %r12
movq %rdi, %rbp
leaq 0xb258(%rip), %rax      # 0x3192c
movzbl (%r12), %ecx
addl $-0x12, %ecx
cmpl $0x28, %ecx
ja 0x26d86
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%r12), %r12
jmp 0x266d4
movq 0x8(%r12), %rsi
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x266b0
jmp 0x26a99
movq (%r14), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
movq %r14, %rcx
movl $0x2, %r8d
callq 0x279d6
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl 0x28(%rsp), %edx
callq 0x24167
testq %rdx, %rdx
jne 0x26769
testq %rax, %rax
je 0x26e71
movq %rax, %rdx
movq 0x8(%rdx), %rcx
testq %rcx, %rcx
leaq 0x9992(%rip), %rax      # 0x30109
cmovneq %rcx, %rax
jmp 0x26e78
movq 0x8(%r14), %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 (%r14), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x266b0
cmpb $0x1, 0x30(%rsp)
jne 0x26e81
movq 0x38(%rsp), %r13
jmp 0x26e8e
movq (%r14), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
movq %r14, %rcx
movl $0x2, %r8d
callq 0x279d6
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl 0x28(%rsp), %edx
callq 0x24167
testq %rdx, %rdx
jne 0x2682a
testq %rax, %rax
je 0x27296
movq %rax, %rdx
movq 0x8(%rdx), %rax
testq %rax, %rax
leaq 0x98d1(%rip), %rbx      # 0x30109
cmovneq %rax, %rbx
movq %rbx, %rdi
movl $0x3a, %esi
callq 0x6390
leaq 0x1(%rax), %rcx
testq %rax, %rax
cmoveq %rbx, %rcx
movq %rcx, (%rbp)
jmp 0x272d1
movq 0x8(%r14), %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 (%r14), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x266b0
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x58(%rsp), %rcx
movq %r15, %rdx
callq 0x266b0
movq 0x28(%rsp), %rbx
movq 0x70(%rsp), %rsi
movq %rbx, %rdi
callq 0x62f0
testq %rax, %rax
je 0x26e71
movq (%r14), %rcx
movq %rbp, %rdi
movq %rbx, %rsi
movq %rax, %rdx
callq 0x2d732
jmp 0x272dd
movq (%r14), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
movq %r14, %rcx
movl $0x2, %r8d
callq 0x279d6
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl 0x28(%rsp), %edx
callq 0x24167
leaq 0x70(%rsp), %rdi
movq %rax, (%rdi)
movq %rdx, 0x8(%rdi)
callq 0x2d63d
jmp 0x26e78
movq 0x8(%r15), %rax
testq %rax, %rax
jne 0x26952
movq (%r15), %rax
testq %rax, %rax
je 0x2728a
movq 0x8(%rax), %rax
testq %rax, %rax
leaq 0x97a9(%rip), %rbx      # 0x30109
cmovneq %rax, %rbx
movq %rbx, %rdi
movl $0x3a, %esi
callq 0x6390
leaq 0x1(%rax), %rcx
testq %rax, %rax
cmoveq %rbx, %rcx
jmp 0x26a7b
movq 0x8(%r14), %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 (%r14), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x266b0
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x58(%rsp), %rcx
movq %r15, %rdx
callq 0x266b0
movq 0x28(%rsp), %r12
movq 0x70(%rsp), %rbx
movq %r12, %rdi
movq %rbx, %rsi
callq 0x62f0
testq %rax, %rax
je 0x270ce
movq %rax, %r15
cmpb $0x1, 0x78(%rsp)
jne 0x270d7
movq 0x80(%rsp), %rbx
jmp 0x270e7
movupd (%r15), %xmm0
movq %rsp, %rdi
movapd %xmm0, (%rdi)
callq 0x2d63d
jmp 0x26c68
movq (%r14), %rcx
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %rbp, %rdi
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2d2a6
movq 0x20(%r12), %rax
jmp 0x26c68
movsbl 0x1(%r12), %eax
movq 0x20(%r12), %rcx
cmpl %eax, (%rcx)
jne 0x27511
cmpb $0x3, %al
jne 0x26d8b
movq 0x10(%rcx), %rax
testq %rax, %rax
leaq 0x9692(%rip), %rcx      # 0x30109
cmovneq %rax, %rcx
movq %rcx, (%rbp)
jmp 0x26c6c
movq (%r14), %rcx
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x2d2a6
movq (%r14), %rsi
movq %rbx, %rdi
callq 0x2d7bc
testq %rax, %rax
je 0x26c61
movq %rax, %rbx
movq %rax, %rdi
callq 0x2d826
movq %rbp, %rdi
movq %rbx, %rsi
movq %rax, %rdx
jmp 0x26c57
movq 0x8(%r15), %rax
testq %rax, %rax
jne 0x26adb
movq (%r15), %rax
testq %rax, %rax
je 0x26c61
movq 0x8(%rax), %rcx
testq %rcx, %rcx
leaq 0x9620(%rip), %rax      # 0x30109
cmovneq %rcx, %rax
jmp 0x26c68
movq 0x8(%r14), %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 0x26b26
incq %r13
movq 0x18(%rax), %rax
jmp 0x26b18
leaq (,%r13,8), %rax
leaq (%rax,%rax,2), %rsi
callq 0x2bfc0
movq %rax, %rbx
testq %rax, %rax
je 0x26e71
movdqu (%r14), %xmm0
pshufd $0x4e, %xmm0, %xmm0     # xmm0 = xmm0[2,3,0,1]
leaq 0x70(%rsp), %rcx
movdqa %xmm0, (%rcx)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x266b0
movq %r14, 0x90(%rsp)
movq %rbp, 0x50(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rbx)
movupd 0x28(%rsp), %xmm0
movupd %xmm0, (%rbx)
movq 0x10(%r12), %r12
testq %r12, %r12
movq %rbx, 0x48(%rsp)
je 0x27198
leaq 0x18(%rbx), %rbp
movl $0x1, %r14d
leaq 0x70(%rsp), %rbx
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %rbx, %rcx
callq 0x266b0
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rbp)
movupd 0x28(%rsp), %xmm0
movupd %xmm0, (%rbp)
incq %r14
movq 0x18(%r12), %r12
addq $0x18, %rbp
testq %r12, %r12
jne 0x26baa
jmp 0x2719e
movq 0x8(%r12), %rsi
movq %rsp, %rbx
movq %rbx, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x266b0
movq (%r14), %rsi
movq %rbx, %rdi
callq 0x2d7bc
testq %rax, %rax
je 0x26c61
movb (%rax), %cl
movq %rax, %rdx
testb %cl, %cl
je 0x26c4e
movq 0x20(%r12), %rsi
movq %rax, %rdi
incq %rdi
movq %rax, %r8
testb %cl, %cl
js 0x26c37
movzbl %cl, %ecx
movb (%rsi,%rcx), %cl
xorl %edx, %edx
testb %cl, %cl
setns %dl
jmp 0x26c3c
movl $0x1, %edx
addq %r8, %rdx
movb %cl, (%r8)
movb (%rdi), %cl
incq %rdi
movq %rdx, %r8
testb %cl, %cl
jne 0x26c24
movb $0x0, (%rdx)
movq %rbp, %rdi
movq %rax, %rsi
callq 0x2d894
jmp 0x272e5
leaq 0x94a1(%rip), %rax      # 0x30109
movq %rax, (%rbp)
movb $0x0, 0x8(%rbp)
movq $0x0, 0x10(%rbp)
jmp 0x272e5
movq 0x8(%r14), %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 (%r14), %rax
movq %rax, 0x8(%rcx)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
callq 0x266b0
cmpb $0x1, 0x30(%rsp)
jne 0x26ffa
movq 0x38(%rsp), %r13
jmp 0x27007
movq 0x8(%r14), %rax
movq %rax, (%rsp)
movupd (%rax), %xmm0
movupd %xmm0, 0x8(%rsp)
movq 0x10(%rax), %rcx
movq %rcx, 0x18(%rsp)
movq %rax, 0x98(%rsp)
movq (%r14), %rax
movq %rax, 0xa0(%rsp)
movq 0x8(%r12), %rsi
leaq 0x28(%rsp), %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x266b0
movq 0x10(%r12), %rsi
leaq 0x70(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %r15, %rdx
callq 0x266b0
movq 0x10(%r12), %rax
movq 0x18(%rax), %rsi
leaq 0x58(%rsp), %rdi
leaq 0x98(%rsp), %rcx
movq %r15, %rdx
callq 0x266b0
movq (%r14), %rsi
leaq 0x28(%rsp), %rdi
callq 0x2d7bc
movq %rax, %rbx
testq %rax, %rax
je 0x26e71
movq 0x70(%rsp), %r15
movq 0x58(%rsp), %r12
cmpb $0x1, 0x60(%rsp)
movq %rbp, 0x50(%rsp)
jne 0x2712d
movq 0x68(%rsp), %r13
jmp 0x27138
movb 0x1(%r12), %al
cmpb $0x1, %al
je 0x26e06
movzbl %al, %eax
cmpl $0x2, %eax
je 0x26dcb
cmpl $0x4, %eax
jne 0x2754f
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x250c4
leaq 0xd0ea(%rip), %rcx      # 0x33e9f
leaq 0xc5b9(%rip), %rdx      # 0x33375
testb %al, %al
cmovneq %rcx, %rdx
movq %rdx, (%rbp)
jmp 0x26c6c
movq %r12, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x25fbc
movq (%r14), %r14
movsd %xmm0, (%rsp)
movsd (%rsp), %xmm2
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm2
jne 0x27270
jp 0x27270
leaq 0xbcc5(%rip), %rax      # 0x32ac6
jmp 0x26c68
movq 0x8(%r14), %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 (%r14), %rax
movq %rax, 0x8(%rcx)
leaq 0x28(%rsp), %rdi
movq %r12, %rsi
movq %r15, %rdx
movl $0x2, %r8d
callq 0x279d6
movq 0x30(%rsp), %rdi
movq 0x38(%rsp), %rsi
cmpq %rsi, %rdi
je 0x26e71
movl 0x28(%rsp), %edx
callq 0x24167
movq (%r14), %rcx
movq %rbp, %rdi
movq %rax, %rsi
callq 0x2d2a6
jmp 0x272dd
leaq 0x9291(%rip), %rax      # 0x30109
movq %rax, (%rbp)
jmp 0x272d1
movq 0x28(%rsp), %rdi
callq 0x1d379
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x25fbc
addsd 0xa8f2(%rip), %xmm0     # 0x31798
callq 0x60e0
movsd %xmm0, 0x48(%rsp)
movq 0x10(%r12), %rax
movq 0x18(%rax), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x25fbc
addsd 0xa8cb(%rip), %xmm0     # 0x31798
callq 0x60e0
movsd 0x48(%rsp), %xmm3
movsd %xmm3, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
leaq 0x9218(%rip), %rsi      # 0x30109
jne 0x272cd
jp 0x272cd
addsd %xmm3, %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
jne 0x272cd
jp 0x272cd
incq %r13
movq %r13, %xmm2
punpckldq 0xa821(%rip), %xmm2 # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
subpd 0xa829(%rip), %xmm2     # 0x31760
movapd %xmm2, %xmm1
unpckhpd %xmm2, %xmm1            # xmm1 = xmm1[1],xmm2[1]
addsd %xmm2, %xmm1
ucomisd %xmm1, %xmm3
jae 0x272cd
ucomisd %xmm0, %xmm3
jae 0x272cd
movsd 0xa829(%rip), %xmm2     # 0x31788
ucomisd %xmm0, %xmm2
ja 0x272cd
maxsd %xmm3, %xmm2
cvttsd2si %xmm2, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
movsd 0xa81f(%rip), %xmm3     # 0x317a0
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 0x275cb
cmpq %r13, %rcx
ja 0x275cb
movq 0x28(%rsp), %rdx
leaq -0x1(%rdx,%rax), %rsi
jne 0x26fe4
cmpb $0x1, 0x30(%rsp)
jne 0x272cd
addq %rcx, %rdx
decq %rdx
movq (%r14), %rcx
movq %rbp, %rdi
callq 0x2d732
jmp 0x272dd
movq 0x28(%rsp), %rdi
callq 0x1d379
movq %rax, %r13
movq 0x10(%r12), %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x25fbc
addsd 0xa779(%rip), %xmm0     # 0x31798
callq 0x60e0
movsd %xmm0, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
ucomisd 0x58(%rsp), %xmm1
leaq 0x90cc(%rip), %rsi      # 0x30109
jne 0x272cd
jp 0x272cd
incq %r13
movq %r13, %xmm1
punpckldq 0xa6f7(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0xa6ff(%rip), %xmm1     # 0x31760
movapd %xmm1, %xmm2
unpckhpd %xmm1, %xmm2            # xmm2 = xmm2[1],xmm1[1]
addsd %xmm1, %xmm2
ucomisd %xmm2, %xmm0
jae 0x272cd
movq %r14, %r15
movsd 0xa706(%rip), %xmm1     # 0x31788
maxsd %xmm0, %xmm1
cvttsd2si %xmm1, %rax
movq %rax, %rcx
sarq $0x3f, %rcx
subsd 0xa706(%rip), %xmm1     # 0x317a0
cvttsd2si %xmm1, %r14
andq %rcx, %r14
orq %rax, %r14
leaq -0x1(%r14), %rax
cmpq %r13, %rax
jae 0x275ac
movq 0x28(%rsp), %rbx
movb 0x30(%rsp), %cl
cmpb $0x1, %cl
jne 0x272a2
movq 0x38(%rsp), %rax
jmp 0x272ae
leaq 0x9034(%rip), %r15      # 0x30109
jmp 0x27124
movq %rbx, %rdi
callq 0x1d379
movq %rax, %rbx
movq 0x28(%rsp), %r12
movb 0x30(%rsp), %cl
cmpb $0x1, %cl
jne 0x270f7
movq 0x38(%rsp), %rax
jmp 0x27103
movq %r12, %rdi
callq 0x1d379
movb 0x30(%rsp), %cl
addq %rbx, %r15
testb $0x1, %cl
je 0x27124
addq %rax, %r12
movq (%r14), %rcx
movq %rbp, %rdi
movq %r15, %rsi
movq %r12, %rdx
callq 0x2d732
jmp 0x272dd
movq %r15, (%rbp)
jmp 0x272d1
movq %r12, %rdi
callq 0x1d379
movq %rax, %r13
movb (%rbx), %r14b
movq %rbx, 0x48(%rsp)
movq %rbx, %rbp
testb %r14b, %r14b
je 0x27182
movq 0x48(%rsp), %rbp
movq %rbp, %rbx
incq %rbx
movsbl %r14b, %esi
movq %r15, %rdi
callq 0x6390
testq %rax, %rax
je 0x27170
subq %r15, %rax
cmpq %r13, %rax
jae 0x27177
movb (%r12,%rax), %r14b
movb %r14b, (%rbp)
incq %rbp
movb (%rbx), %r14b
incq %rbx
testb %r14b, %r14b
jne 0x27153
movb $0x0, (%rbp)
movq 0x50(%rsp), %rdi
movq 0x48(%rsp), %rsi
movq %rbp, %rdx
jmp 0x2724a
movl $0x1, %r14d
cmpq %r13, %r14
jne 0x27530
testq %r13, %r13
movq 0x50(%rsp), %r12
movq 0x48(%rsp), %rbx
je 0x271e5
addq $0x10, %rbx
xorl %r15d, %r15d
movq %r13, %r14
cmpb $0x1, -0x8(%rbx)
jne 0x271cb
movq (%rbx), %rax
jmp 0x271d4
movq -0x10(%rbx), %rdi
callq 0x1d379
addq %rax, %r15
addq $0x18, %rbx
decq %r14
jne 0x271c0
incq %r15
jmp 0x271eb
movl $0x1, %r15d
movq 0x90(%rsp), %rax
movq (%rax), %rdi
movq %r15, %rsi
callq 0x2bfc0
testq %rax, %rax
movq 0x48(%rsp), %r8
je 0x27254
movq %rax, %rdx
testq %r13, %r13
je 0x27241
xorl %ecx, %ecx
movq %rax, %rdx
leaq (%rcx,%rcx,2), %rsi
movq (%r8,%rsi,8), %rsi
movb (%rsi), %dil
testb %dil, %dil
je 0x27239
incq %rsi
movb %dil, (%rdx)
incq %rdx
movb (%rsi), %dil
incq %rsi
testb %dil, %dil
jne 0x27228
incq %rcx
cmpq %r13, %rcx
jne 0x27215
movb $0x0, (%rdx)
movq %r12, %rdi
movq %rax, %rsi
callq 0x2d894
jmp 0x272dd
leaq 0x8eae(%rip), %rax      # 0x30109
movq %rax, (%r12)
movb $0x0, 0x8(%r12)
movq $0x0, 0x10(%r12)
jmp 0x272dd
movsd (%rsp), %xmm1
ucomisd (%rsp), %xmm1
jne 0x2727e
jnp 0x272f7
leaq 0xd869(%rip), %rax      # 0x34aee
jmp 0x26c68
leaq 0x8e78(%rip), %rbx      # 0x30109
jmp 0x26964
leaq 0x8e6c(%rip), %rbx      # 0x30109
jmp 0x2683c
movq %rbx, %rdi
callq 0x1d379
movb 0x30(%rsp), %cl
leaq (%rbx,%r14), %rsi
decq %rsi
testb $0x1, %cl
je 0x272cd
addq %rax, %rbx
movq (%r15), %rcx
movq %rbp, %rdi
movq %rbx, %rdx
callq 0x2d732
jmp 0x272dd
movq %rsi, (%rbp)
movb $0x0, 0x8(%rbp)
movq $0x0, 0x10(%rbp)
movq %rsp, %rdi
callq 0x2d264
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movsd (%rsp), %xmm1
addsd %xmm1, %xmm1
ucomisd (%rsp), %xmm1
jne 0x27328
jp 0x27328
xorpd %xmm1, %xmm1
ucomisd %xmm1, %xmm0
leaq 0xd7db(%rip), %rcx      # 0x34af3
leaq 0xd7d3(%rip), %rax      # 0x34af2
cmovaq %rcx, %rax
jmp 0x26c68
leaq 0xd7cd(%rip), %rdx      # 0x34afc
movq %rsp, %rbx
movl $0x20, %esi
movq %rbx, %rdi
movl $0xf, %ecx
movsd %xmm0, 0x48(%rsp)
movb $0x1, %al
callq 0x6360
movq %rbx, %rdi
movl $0x65, %esi
callq 0x6390
testq %rax, %rax
je 0x27609
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 0x275ea
leaq (%rsp,%rcx), %rbx
cmpb $0x2e, 0x1(%rbx)
jne 0x275ea
incq %rbx
movb %al, (%rbx)
cmpq %rbx, %r15
je 0x273b3
leaq -0x1(%r15), %rax
cmpb $0x30, -0x1(%r15)
movq %rax, %r15
je 0x27398
movq %rbp, %r13
incq %rax
jmp 0x273b9
movq %rbp, %r13
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 0x2bfc0
testq %rax, %rax
je 0x27464
movq %rax, %r14
xorpd %xmm0, %xmm0
ucomisd 0x48(%rsp), %xmm0
movq %rax, %rdx
movq %r13, %rdi
jbe 0x27405
leaq 0x1(%r14), %rdx
movb $0x2d, (%r14)
testl %r12d, %r12d
js 0x27481
addl $0x2, %r12d
movl $0x30, %eax
movb (%rbx), %cl
testb %cl, %cl
sete %sil
movsbl %cl, %r8d
addl $-0x30, %r8d
cmpl $0xa, %r8d
setb %r8b
orb %sil, %r8b
je 0x2756e
xorl %esi, %esi
testb %cl, %cl
setne %sil
movzbl %cl, %ecx
cmovel %eax, %ecx
addq %rsi, %rbx
movb %cl, (%rdx)
incq %rdx
decl %r12d
cmpl $0x1, %r12d
jg 0x27413
cmpb $0x0, (%rbx)
je 0x274f7
movb $0x2e, (%rdx)
incq %rdx
jmp 0x274cc
leaq 0x8c9e(%rip), %rax      # 0x30109
movq %rax, (%r13)
movb $0x0, 0x8(%r13)
movq $0x0, 0x10(%r13)
jmp 0x272e5
leaq 0x1(%rdx), %r13
movb $0x30, (%rdx)
cmpb $0x0, (%rbx)
je 0x274f4
movb $0x2e, 0x1(%rdx)
addq $0x2, %rdx
cmpl $-0x1, %r12d
je 0x274cc
movq %rdi, 0x50(%rsp)
movl $0xfffffffe, %ebp       # imm = 0xFFFFFFFE
subl %r12d, %ebp
leaq 0x1(%rbp), %rax
movq %rdx, %rdi
movl $0x30, %esi
movq %rax, %rdx
callq 0x61b0
leaq 0x2(,%rbp), %rdx
addq %r13, %rdx
movq 0x50(%rsp), %rdi
movb (%rbx), %al
testb %al, %al
je 0x274f7
incq %rbx
movsbl %al, %ecx
addl $-0x30, %ecx
cmpl $0xa, %ecx
jae 0x2758d
movb %al, (%rdx)
incq %rdx
movb (%rbx), %al
incq %rbx
testb %al, %al
jne 0x274d5
jmp 0x274f7
movq %r13, %rdx
movq %r14, %rax
addq %r15, %rax
cmpq %rax, %rdx
jae 0x27628
movb $0x0, (%rdx)
movq %r14, %rsi
jmp 0x26c57
leaq 0xcc88(%rip), %rdi      # 0x341a0
leaq 0xaa06(%rip), %rsi      # 0x31f25
leaq 0xd27f(%rip), %rcx      # 0x347a5
movl $0x29c4, %edx           # imm = 0x29C4
callq 0x6120
leaq 0xd3c6(%rip), %rdi      # 0x348fd
leaq 0xa9e7(%rip), %rsi      # 0x31f25
leaq 0xd339(%rip), %rcx      # 0x3487e
movl $0x28e2, %edx           # imm = 0x28E2
callq 0x6120
leaq 0xd2f5(%rip), %rdi      # 0x3484b
leaq 0xa9c8(%rip), %rsi      # 0x31f25
leaq 0xd241(%rip), %rcx      # 0x347a5
movl $0x29e0, %edx           # imm = 0x29E0
callq 0x6120
leaq 0xd4ba(%rip), %rdi      # 0x34a2f
leaq 0xa9a9(%rip), %rsi      # 0x31f25
leaq 0xd4ee(%rip), %rcx      # 0x34a71
movl $0x2016, %edx           # imm = 0x2016
callq 0x6120
leaq 0xd4ad(%rip), %rdi      # 0x34a41
leaq 0xa98a(%rip), %rsi      # 0x31f25
leaq 0xd4cf(%rip), %rcx      # 0x34a71
movl $0x202c, %edx           # imm = 0x202C
callq 0x6120
leaq 0xd1d2(%rip), %rdi      # 0x34785
leaq 0xa96b(%rip), %rsi      # 0x31f25
leaq 0xd1e4(%rip), %rcx      # 0x347a5
movl $0x2969, %edx           # imm = 0x2969
callq 0x6120
leaq 0xd24b(%rip), %rdi      # 0x3481d
leaq 0xa94c(%rip), %rsi      # 0x31f25
leaq 0xd1c5(%rip), %rcx      # 0x347a5
movl $0x2985, %edx           # imm = 0x2985
callq 0x6120
leaq 0xd592(%rip), %rdi      # 0x34b83
leaq 0xa92d(%rip), %rsi      # 0x31f25
leaq 0xd512(%rip), %rcx      # 0x34b11
movl $0x1fe5, %edx           # imm = 0x1FE5
callq 0x6120
leaq 0xd4f1(%rip), %rdi      # 0x34b01
leaq 0xa90e(%rip), %rsi      # 0x31f25
leaq 0xd4f3(%rip), %rcx      # 0x34b11
movl $0x1fdf, %edx           # imm = 0x1FDF
callq 0x6120
leaq 0xd4a6(%rip), %rdi      # 0x34ad5
leaq 0xa8ef(%rip), %rsi      # 0x31f25
leaq 0xd434(%rip), %rcx      # 0x34a71
movl $0x2032, %edx           # imm = 0x2032
callq 0x6120
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
jmp 0x27679
movq %rax, %rbx
movq %rsp, %rdi
callq 0x2d264
movq %rbx, %rdi
callq 0x6430