// File: /workspace/github_cpp_makefile_star2_O3/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 0xc27f(%rip), %rsi      # 0x12261
xorl %edx, %edx
callq 0xe806
testq %rax, %rax
je 0x6023
leaq 0xc26c(%rip), %rsi      # 0x12261
movq %r14, %rdi
xorl %edx, %edx
callq 0xe806
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 0x6039
movq 0x8(%rbx), %rdx
movl $0x1, %ecx
movq %rbx, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x4410
leaq 0xc37d(%rip), %rsi      # 0x123bd
movq %r14, %rdi
xorl %edx, %edx
callq 0xe806
testq %rax, %rax
je 0x6060
leaq 0xc367(%rip), %rsi      # 0x123bd
movq %r14, %rdi
callq 0x7930
jmp 0x6068
movss 0xbf9c(%rip), %xmm0     # 0x12004
movss %xmm0, 0x40(%rbx)
leaq 0xc351(%rip), %rsi      # 0x123c5
movq %r14, %rdi
xorl %edx, %edx
callq 0xe806
testq %rax, %rax
je 0x6094
leaq 0xc33b(%rip), %rsi      # 0x123c5
movq %r14, %rdi
callq 0x799a
jmp 0x6096
movb $0x1, %al
movb %al, 0x44(%rbx)
leaq 0xc08b(%rip), %rsi      # 0x1212b
movq %r14, %rdi
callq 0xd5f8
leaq 0x48(%rbx), %rsi
movq %rax, %rdi
callq 0x5ac0
testl %eax, %eax
jne 0x61e0
leaq 0xc410(%rip), %rsi      # 0x124d3
movq %r14, %rdi
callq 0xd5f8
testq %rax, %rax
je 0x61d7
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 0x70eb
movl %eax, %r15d
testl %eax, %eax
jne 0x61d0
movq %rbx, %rdi
leaq -0xe0(%rbp), %rsi
callq 0x79cc
movq -0x40(%rbp), %rdi
testq %rdi, %rdi
je 0x617c
callq 0x41c0
leaq -0x80(%rbp), %rdi
callq 0x7b40
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x619d
callq 0x41c0
movq -0xe0(%rbp), %rdi
cmpq %r13, %rdi
je 0x61ae
callq 0x41c0
testl %r15d, %r15d
jne 0x61db
movq %r14, %rdi
leaq 0xc316(%rip), %rsi      # 0x124d3
callq 0xd720
movq %rax, %r14
testq %rax, %rax
jne 0x60e5
jmp 0x61d7
callq 0x477a
jmp 0x616e
xorl %eax, %eax
jmp 0x61e0
movl $0x1, %eax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe0(%rbp), %rdi
callq 0x7a0a
movq %rbx, %rdi
callq 0x43d0