// File: /workspace/github_cpp_makefile_star2_O2/halsafar[P]libtmx-parser/./src/tmxparser.cpp
// Function: tmxparser::_parseObjectGroupNode(tinyxml2::XMLElement*, tmxparser::TmxObjectGroup*)
TmxReturn _parseObjectGroupNode(tinyxml2::XMLElement* element, TmxObjectGroup* outObjectGroup)
{
	TmxReturn error = TmxReturn::kSuccess;

	CHECK_AND_RETRIEVE_OPT_ATTRIBUTE_STRING(element, "name", outObjectGroup->name);

	if (element->Attribute("opacity") != NULL)
	{
		outObjectGroup->opacity = element->FloatAttribute("opacity");
	}
	else
	{
		outObjectGroup->opacity = 1.0f;
	}

	if (element->Attribute("visible") != NULL)
	{
		outObjectGroup->visible = element->BoolAttribute("visible");
	}
	else
	{
		outObjectGroup->visible = true;
	}

	error = _parsePropertyNode(element->FirstChildElement("properties"), &outObjectGroup->propertyMap);
	if (error)
	{
		return error;
	}

	for (tinyxml2::XMLElement* child = element->FirstChildElement("object"); child != NULL; child = child->NextSiblingElement("object"))
	{
		TmxObject obj;
		error = _parseObjectNode(child, &obj);
		if (error)
		{
			LOGE("Error parsing object node...");
			return TmxReturn::kErrorParsing;
		}
		outObjectGroup->objects.push_back(obj);
	}

	return error;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %r12
movq %rdi, %r14
leaq 0xad12(%rip), %rsi      # 0x10261
xorl %edx, %edx
callq 0xc8a0
testq %rax, %rax
je 0x5579
leaq 0xacff(%rip), %rsi      # 0x10261
movq %r14, %rdi
xorl %edx, %edx
callq 0xc8a0
movq %r12, %rdi
movq %rax, %rsi
callq 0x4420
jmp 0x5583
movq %r12, %rdi
xorl %esi, %esi
callq 0x43a0
leaq 0xae33(%rip), %rsi      # 0x103bd
movq %r14, %rdi
xorl %edx, %edx
callq 0xc8a0
testq %rax, %rax
je 0x55aa
leaq 0xae1d(%rip), %rsi      # 0x103bd
movq %r14, %rdi
callq 0x6cb6
jmp 0x55b2
movss 0xaa52(%rip), %xmm0     # 0x10004
movss %xmm0, 0x40(%r12)
leaq 0xae05(%rip), %rsi      # 0x103c5
movq %r14, %rdi
xorl %edx, %edx
callq 0xc8a0
testq %rax, %rax
je 0x55e0
leaq 0xadef(%rip), %rsi      # 0x103c5
movq %r14, %rdi
callq 0x6d3c
jmp 0x55e2
movb $0x1, %al
movb %al, 0x44(%r12)
leaq 0xab3d(%rip), %rsi      # 0x1012b
movq %r14, %rdi
callq 0xbae8
leaq 0x48(%r12), %rsi
movq %rax, %rdi
callq 0x5089
movl %eax, %r15d
testl %eax, %eax
jne 0x571f
leaq 0xaebe(%rip), %rsi      # 0x104d3
movq %r14, %rdi
callq 0xbae8
movq %rax, %r14
leaq -0xd8(%rbp), %rbx
subq $-0x80, %r12
movq %r12, -0x30(%rbp)
xorl %r15d, %r15d
leaq -0xe8(%rbp), %r13
testq %r14, %r14
je 0x571f
movq %rbx, -0xe8(%rbp)
andq $0x0, -0xe0(%rbp)
movb %r15b, -0xd8(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
andq $0x0, -0xc0(%rbp)
movb %r15b, -0xb8(%rbp)
leaq -0x58(%rbp), %rax
movq %rax, -0x88(%rbp)
movq $0x1, -0x80(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x60(%rbx)
movl $0x3f800000, -0x68(%rbp) # imm = 0x3F800000
movups %xmm0, 0x78(%rbx)
movups %xmm0, 0x90(%rbx)
andq $0x0, 0xa0(%rbx)
movq %r14, %rdi
movq %r13, %rsi
callq 0x646c
movl %eax, %r12d
testl %eax, %eax
jne 0x56eb
movq -0x30(%rbp), %rdi
movq %r13, %rsi
callq 0x6d5a
movq %r13, %rdi
callq 0x6d98
testl %r12d, %r12d
jne 0x571b
movq %r14, %rdi
leaq 0xadf5(%rip), %rsi      # 0x104d3
callq 0xbbb8
movq %rax, %r14
jmp 0x5639
movq 0x138de(%rip), %rax     # 0x18fd0
movq (%rax), %rcx
leaq 0xadde(%rip), %rdi      # 0x104da
pushq $0x2e
popq %rsi
pushq $0x1
popq %rdx
callq 0x4430
movq 0x138c2(%rip), %rax     # 0x18fd0
movq (%rax), %rsi
pushq $0xa
popq %rdi
callq 0x4270
jmp 0x56c7
pushq $0x1
popq %r15
movl %r15d, %eax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0x6d98
movq %rbx, %rdi
callq 0x43d0