// File: /workspace/github_cpp_makefile_star2_O1/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 $0xb8, %rsp
movq %rsi, %rbx
movq %rdi, %r14
leaq 0xc27c(%rip), %rsi      # 0x12261
xorl %edx, %edx
callq 0xe9e8
testq %rax, %rax
je 0x6026
leaq 0xc269(%rip), %rsi      # 0x12261
movq %r14, %rdi
xorl %edx, %edx
callq 0xe9e8
movq %rax, %r15
movq 0x8(%rbx), %r12
movq %rax, %rdi
callq 0x4100
movq %rbx, %rdi
xorl %esi, %esi
movq %r12, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x4330
jmp 0x603c
movq 0x8(%rbx), %rdx
movl $0x1, %ecx
movq %rbx, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x4410
leaq 0xc37a(%rip), %rsi      # 0x123bd
movq %r14, %rdi
xorl %edx, %edx
callq 0xe9e8
testq %rax, %rax
je 0x6063
leaq 0xc364(%rip), %rsi      # 0x123bd
movq %r14, %rdi
callq 0x7936
jmp 0x606b
movss 0xbf99(%rip), %xmm0     # 0x12004
movss %xmm0, 0x40(%rbx)
leaq 0xc34e(%rip), %rsi      # 0x123c5
movq %r14, %rdi
xorl %edx, %edx
callq 0xe9e8
testq %rax, %rax
je 0x609a
leaq 0xc338(%rip), %rsi      # 0x123c5
movq %r14, %rdi
callq 0x7994
movb %al, 0x44(%rbx)
jmp 0x609e
movb $0x1, 0x44(%rbx)
leaq 0xc086(%rip), %rsi      # 0x1212b
movq %r14, %rdi
callq 0xd6a6
leaq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x5adb
testl %eax, %eax
je 0x60d5
movl %eax, %r15d
movl %r15d, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xc3f7(%rip), %rsi      # 0x124d3
movq %r14, %rdi
callq 0xd6a6
testq %rax, %rax
je 0x61f3
movq %rax, %r14
leaq -0xd0(%rbp), %r13
subq $-0x80, %rbx
xorl %r12d, %r12d
movq %r13, -0xe0(%rbp)
movq %r12, -0xd8(%rbp)
movb %r12b, -0xd0(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq %r12, -0xb8(%rbp)
movb %r12b, -0xb0(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x80(%rbp)
movq $0x1, -0x78(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x60(%r13)
movl $0x3f800000, -0x60(%rbp) # imm = 0x3F800000
movups %xmm0, 0x78(%r13)
movq %r12, 0xa0(%r13)
movups %xmm0, 0x90(%r13)
movq %r14, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x70d1
movl %eax, %r15d
testl %eax, %eax
jne 0x61ec
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x79c0
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x6195
callq 0x41c0
leaq -0x80(%rbp), %rdi
callq 0x7b34
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x61b6
callq 0x41c0
movq -0xe0(%rbp), %rdi
cmpq %r13, %rdi
je 0x61c7
callq 0x41c0
testl %r15d, %r15d
jne 0x61fb
movq %r14, %rdi
leaq 0xc2fd(%rip), %rsi      # 0x124d3
callq 0xd84e
movq %rax, %r14
testq %rax, %rax
jne 0x60fe
jmp 0x60c0
callq 0x477a
jmp 0x6187
xorl %r15d, %r15d
jmp 0x60c0
movl $0x1, %r15d
jmp 0x60c0
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x79fe
movq %rbx, %rdi
callq 0x43d0