// File: roberty65[P]bServer/common/src/ConfigProperty.cpp
// Function: ConfigProperty::getChildren[abi:cxx11](char const*) const
std::set<std::string> ConfigProperty::getChildren(const char *name) const
{
	std::set<std::string> result;

	char prefix[CP_NAME_MAX];
	snprintf(prefix, sizeof prefix, "%s.", name);
	prefix[sizeof(prefix) - 1] = 0;

	int nlen = strlen(prefix);
	const_iterator first = properties.lower_bound(std::string(prefix));

	snprintf(prefix, sizeof prefix, "%s/", name);
	prefix[sizeof(prefix) - 1] = 0;
	const_iterator end = properties.upper_bound(std::string(prefix));

	for (const_iterator iter = first; iter != end; ++iter) {
		std::size_t dot = iter->first.find_first_of('.', nlen);
		if (dot != std::string::npos) {
			// after {name}. and next DOT
			result.insert(iter->first.substr(nlen, dot - nlen));
		}
	}

	return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x240, %rsp            # imm = 0x240
movq %rdi, -0x208(%rbp)
movq %rdi, %rax
movq %rax, -0x200(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq %rax, -0x1f0(%rbp)
movb $0x0, -0x19(%rbp)
callq 0xeb80
movq -0x18(%rbp), %rcx
leaq 0x4e5f(%rip), %rdx      # 0x1354d
xorl %eax, %eax
leaq -0x120(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
movl $0x100, %esi            # imm = 0x100
callq 0x3620
movq -0x1e8(%rbp), %rdi
movb $0x0, -0x21(%rbp)
callq 0x3170
movl %eax, -0x124(%rbp)
leaq -0x151(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x36a0
movq -0x1e8(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
leaq -0x150(%rbp), %rdi
callq 0x4a20
jmp 0xe74d
movq -0x1f8(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0xeba0
movq %rax, -0x210(%rbp)
jmp 0xe769
movq -0x210(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x3220
leaq -0x151(%rbp), %rdi
callq 0x3420
movq -0x18(%rbp), %rcx
leaq 0x4db7(%rip), %rdx      # 0x13551
xorl %eax, %eax
leaq -0x120(%rbp), %rdi
movq %rdi, -0x220(%rbp)
movl $0x100, %esi            # imm = 0x100
callq 0x3620
movq -0x1f0(%rbp), %rax
movb $0x0, -0x21(%rbp)
movq %rax, -0x228(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0x36a0
movq -0x220(%rbp), %rsi
movq -0x218(%rbp), %rdx
leaq -0x190(%rbp), %rdi
callq 0x4a20
jmp 0xe7f5
movq -0x228(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xebd0
movq %rax, -0x230(%rbp)
jmp 0xe811
movq -0x230(%rbp), %rax
movq %rax, -0x170(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x3220
leaq -0x191(%rbp), %rdi
callq 0x3420
movq -0x130(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xec00
testb $0x1, %al
jne 0xe861
jmp 0xe9db
leaq -0x1a0(%rbp), %rdi
callq 0xeb60
movq %rax, %rdi
movslq -0x124(%rbp), %rdx
movl $0x2e, %esi
callq 0x3230
movq %rax, -0x1a8(%rbp)
cmpq $-0x1, -0x1a8(%rbp)
je 0xe9c8
leaq -0x1a0(%rbp), %rdi
callq 0xeb60
movq %rax, %rsi
movslq -0x124(%rbp), %rdx
movq -0x1a8(%rbp), %rcx
subq %rdx, %rcx
leaq -0x1c8(%rbp), %rdi
callq 0x33e0
jmp 0xe8c4
movq -0x208(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xec30
movb %dl, -0x239(%rbp)
movq %rax, -0x238(%rbp)
jmp 0xe8e6
movb -0x239(%rbp), %al
movq -0x238(%rbp), %rcx
movq %rcx, -0x1d8(%rbp)
movb %al, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x3220
jmp 0xe9c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0xe943
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x3220
leaq -0x151(%rbp), %rdi
callq 0x3420
jmp 0xea01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0xe986
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x3220
leaq -0x191(%rbp), %rdi
callq 0x3420
jmp 0xea01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
jmp 0xea01
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x160(%rbp)
movl %eax, -0x164(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x3220
jmp 0xea01
jmp 0xe9ca
leaq -0x1a0(%rbp), %rdi
callq 0xec80
jmp 0xe845
movb $0x1, -0x19(%rbp)
testb $0x1, -0x19(%rbp)
jne 0xe9f1
movq -0x208(%rbp), %rdi
callq 0x53f0
movq -0x200(%rbp), %rax
addq $0x240, %rsp            # imm = 0x240
popq %rbp
retq
movq -0x208(%rbp), %rdi
callq 0x53f0
movq -0x160(%rbp), %rdi
callq 0x3690
nopl (%rax)