// File: jliesch[P]ofxget/pugixml/pugixml.cpp
// Function: pugi::xml_node::path[abi:cxx11](char) const
PUGI__FN string_t xml_node::path(char_t delimiter) const
	{
		if (!_root) return string_t();

		size_t offset = 0;

		for (xml_node_struct* i = _root; i; i = i->parent)
		{
			offset += (i != _root);
			offset += i->name ? impl::strlength(i->name) : 0;
		}

		string_t result;
		result.resize(offset);

		for (xml_node_struct* j = _root; j; j = j->parent)
		{
			if (j != _root)
				result[--offset] = delimiter;

			if (j->name)
			{
				size_t length = impl::strlength(j->name);

				offset -= length;
				memcpy(&result[offset], j->name, length * sizeof(char_t));
			}
		}

		assert(offset == 0);

		return result;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x68(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x60(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, (%rax)
jne 0x4530f
movq -0x68(%rbp), %rdi
callq 0x7320
jmp 0x454c5
movq -0x58(%rbp), %rax
movq $0x0, -0x20(%rbp)
movq (%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x45384
movq -0x58(%rbp), %rcx
movq -0x28(%rbp), %rax
cmpq (%rcx), %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x45362
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x418f0
movq %rax, -0x70(%rbp)
jmp 0x4536a
xorl %eax, %eax
movq %rax, -0x70(%rbp)
jmp 0x4536a
movq -0x70(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x45322
movq -0x68(%rbp), %rdi
movb $0x0, -0x29(%rbp)
callq 0x7320
movq -0x68(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x73c0
jmp 0x453a0
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x45488
movq -0x58(%rbp), %rcx
movq -0x48(%rbp), %rax
cmpq (%rcx), %rax
je 0x45408
movq -0x68(%rbp), %rdi
movb -0x11(%rbp), %al
movb %al, -0x79(%rbp)
movq -0x20(%rbp), %rsi
decq %rsi
movq %rsi, -0x20(%rbp)
callq 0x7ab0
movq %rax, -0x78(%rbp)
jmp 0x453e3
movq -0x78(%rbp), %rax
movb -0x79(%rbp), %cl
movb %cl, (%rax)
jmp 0x45408
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x7b88
jmp 0x454d2
movq -0x48(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x45475
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x418f0
movq %rax, -0x88(%rbp)
jmp 0x45429
movq -0x68(%rbp), %rdi
movq -0x88(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rcx
movq -0x20(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rsi
callq 0x7ab0
movq %rax, -0x90(%rbp)
jmp 0x45459
movq -0x90(%rbp), %rdi
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x50(%rbp), %rdx
shlq $0x0, %rdx
callq 0x70b0
jmp 0x45477
movq -0x48(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x453ab
cmpq $0x0, -0x20(%rbp)
jne 0x45491
jmp 0x454b0
leaq 0x25fb9(%rip), %rdi     # 0x6b451
leaq 0x25eb6(%rip), %rsi     # 0x6b355
movl $0x180e, %edx           # imm = 0x180E
leaq 0x25fb2(%rip), %rcx     # 0x6b45d
callq 0x7180
movb $0x1, -0x29(%rbp)
testb $0x1, -0x29(%rbp)
jne 0x454c3
movq -0x68(%rbp), %rdi
callq 0x7b88
jmp 0x454c5
movq -0x60(%rbp), %rax
addq $0x90, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x7600
nopl (%rax,%rax)