// File: tdv[P]boss/boss/include/common/xml_property_bag.h
// Function: Boss::XmlPropertyBag::DeserializeItem(rapidxml::xml_node<char> const*) const
IBasePtr DeserializeItem(rapidxml::xml_node<> const *node) const
    {
      auto const *TypeAttr = node->first_attribute(Tags::TypeTag);
      if (!TypeAttr)
        throw std::runtime_error("Failed to get item type attribute.");
      std::string Type(TypeAttr->value(), TypeAttr->value_size());
      if (Type.empty())
        throw std::runtime_error("Failed to get item type.");
      if (Type == Tags::EntityIdTag)
      {
        std::string Id(node->value(), node->value_size());
        if (Id.empty())
          throw std::runtime_error("Empty EntityId value.");
        return Base<EntityId>::Create(FromString<UInt>(Id));
      }
      if (Type == Tags::StringTag)
      {
        std::string Str(node->value(), node->value_size());
        if (Str.empty())
          throw std::runtime_error("Empty string value.");
        return Base<String>::Create(Str);
      }
      if (Type == Tags::EnumTag)
      {
        auto NewEnum = Base<Enum>::Create();
        for (auto const *i = node->first_node(Tags::ItemTag) ; i ; i = i->next_sibling(Tags::ItemTag))
          NewEnum->AddItem(DeserializeItem(i));
        return NewEnum;
      }
      if (Type == Tags::PropertyBagTag)
      {
        auto NewPropBag = Base<XmlPropertyBag>::Create(std::string(node->name(), node->name_size()));
        for (auto const *i = node->first_node() ; i ; i = i->next_sibling())
        {
          std::string Name(i->name(), i->name_size());
          if (Name.empty())
            throw std::runtime_error("Failed to get node name.");
          NewPropBag->Props[Name] = DeserializeItem(i);
        }
        return IBasePtr(RefObjQIPtr<IBase>(NewPropBag).Get());
      }
      throw std::runtime_error("Unknown type.");
    }

// Assembly:
subq $0x268, %rsp            # imm = 0x268
movq %rdi, 0x108(%rsp)
movq %rdi, %rax
movq %rax, 0x110(%rsp)
movq %rdi, 0x260(%rsp)
movq %rsi, 0x258(%rsp)
movq %rdx, 0x250(%rsp)
movq 0x258(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x250(%rsp), %rdi
leaq 0xc4d79(%rip), %rsi     # 0xf7e8a
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
callq 0x34b80
movq %rax, 0x248(%rsp)
cmpq $0x0, 0x248(%rsp)
jne 0x33199
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x100(%rsp)
leaq 0xc3823(%rip), %rsi     # 0xf6974
callq 0x5b7e0
jmp 0x33158
movq 0x100(%rsp), %rdi
leaq 0x10ff09(%rip), %rsi    # 0x143070
leaq 0x1ecf2(%rip), %rdx     # 0x51e60
callq 0x48fd0
movq 0x100(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x33cb0
movq 0x248(%rsp), %rdi
callq 0x36d60
movq %rax, 0xe8(%rsp)
movq 0x248(%rsp), %rdi
callq 0x36da0
movq %rax, 0xf0(%rsp)
leaq 0x217(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x4a200
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq 0xf8(%rsp), %rcx
leaq 0x218(%rsp), %rdi
callq 0xc72f0
jmp 0x331ff
leaq 0x217(%rsp), %rdi
callq 0x4a220
leaq 0x218(%rsp), %rdi
callq 0xc4ee0
testb $0x1, %al
jne 0x33222
jmp 0x332cd
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0xe0(%rsp)
leaq 0xc3756(%rip), %rsi     # 0xf6997
callq 0x5b7e0
jmp 0x33248
movq 0xe0(%rsp), %rdi
leaq 0x10fe19(%rip), %rsi    # 0x143070
leaq 0x1ec02(%rip), %rdx     # 0x51e60
callq 0x48fd0
jmp 0x33cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x217(%rsp), %rdi
callq 0x4a220
jmp 0x33cb0
movq 0xe0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x33ca3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x33ca3
leaq 0xc4b9c(%rip), %rsi     # 0xf7e70
leaq 0x218(%rsp), %rdi
callq 0x377a0
movb %al, 0xdf(%rsp)
jmp 0x332ea
movb 0xdf(%rsp), %al
testb $0x1, %al
jne 0x332fa
jmp 0x334df
movq 0x250(%rsp), %rdi
callq 0x36d60
movq %rax, 0xd0(%rsp)
jmp 0x33311
movq 0x250(%rsp), %rdi
callq 0x36da0
movq %rax, 0xc0(%rsp)
leaq 0x1ef(%rsp), %rdi
movq %rdi, 0xc8(%rsp)
callq 0x4a200
movq 0xd0(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq 0xc8(%rsp), %rcx
leaq 0x1f0(%rsp), %rdi
callq 0xc72f0
jmp 0x33362
leaq 0x1ef(%rsp), %rdi
callq 0x4a220
leaq 0x1f0(%rsp), %rdi
callq 0xc4ee0
testb $0x1, %al
jne 0x33385
jmp 0x33430
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0xb8(%rsp)
leaq 0xc360c(%rip), %rsi     # 0xf69b0
callq 0x5b7e0
jmp 0x333ab
movq 0xb8(%rsp), %rdi
leaq 0x10fcb6(%rip), %rsi    # 0x143070
leaq 0x1ea9f(%rip), %rdx     # 0x51e60
callq 0x48fd0
jmp 0x33cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x1ef(%rsp), %rdi
callq 0x4a220
jmp 0x33ca3
movq 0xb8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x334cd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x334cd
leaq 0x1f0(%rsp), %rdi
callq 0x377d0
movl %eax, 0xb4(%rsp)
jmp 0x33446
movl 0xb4(%rsp), %eax
movl %eax, 0x1dc(%rsp)
leaq 0x1e0(%rsp), %rdi
leaq 0x1dc(%rsp), %rsi
callq 0x23f50
jmp 0x3346b
movq 0x108(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0x37850
jmp 0x33482
leaq 0x1e0(%rsp), %rdi
callq 0x24060
movl $0x1, 0x1d8(%rsp)
leaq 0x1f0(%rsp), %rdi
callq 0xc49c0
jmp 0x33c86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0x24060
leaq 0x1f0(%rsp), %rdi
callq 0xc49c0
jmp 0x33ca3
leaq 0xc498d(%rip), %rsi     # 0xf7e73
leaq 0x218(%rsp), %rdi
callq 0x377a0
movb %al, 0xb3(%rsp)
jmp 0x334fc
movb 0xb3(%rsp), %al
testb $0x1, %al
jne 0x3350c
jmp 0x336ca
movq 0x250(%rsp), %rdi
callq 0x36d60
movq %rax, 0xa8(%rsp)
jmp 0x33523
movq 0x250(%rsp), %rdi
callq 0x36da0
movq %rax, 0x98(%rsp)
leaq 0x1b7(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x4a200
movq 0xa8(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq 0xa0(%rsp), %rcx
leaq 0x1b8(%rsp), %rdi
callq 0xc72f0
jmp 0x33574
leaq 0x1b7(%rsp), %rdi
callq 0x4a220
leaq 0x1b8(%rsp), %rdi
callq 0xc4ee0
testb $0x1, %al
jne 0x33597
jmp 0x3363f
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x90(%rsp)
leaq 0xc3410(%rip), %rsi     # 0xf69c6
callq 0x5b7e0
jmp 0x335bd
movq 0x90(%rsp), %rdi
leaq 0x10faa4(%rip), %rsi    # 0x143070
leaq 0x1e88d(%rip), %rdx     # 0x51e60
callq 0x48fd0
jmp 0x33cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x1b7(%rsp), %rdi
callq 0x4a220
jmp 0x33ca3
movq 0x90(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x336b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x336b8
leaq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x2e370
jmp 0x33656
movq 0x108(%rsp), %rdi
leaq 0x1a8(%rsp), %rsi
callq 0x378b0
jmp 0x3366d
leaq 0x1a8(%rsp), %rdi
callq 0x2e4d0
movl $0x1, 0x1d8(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0xc49c0
jmp 0x33c86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x1a8(%rsp), %rdi
callq 0x2e4d0
leaq 0x1b8(%rsp), %rdi
callq 0xc49c0
jmp 0x33ca3
leaq 0xc47a9(%rip), %rsi     # 0xf7e7a
leaq 0x218(%rsp), %rdi
callq 0x377a0
movb %al, 0x8f(%rsp)
jmp 0x336e7
movb 0x8f(%rsp), %al
testb $0x1, %al
jne 0x336f7
jmp 0x33853
leaq 0x1a0(%rsp), %rdi
callq 0x23c80
jmp 0x33706
movq 0x250(%rsp), %rdi
leaq 0xc476a(%rip), %rsi     # 0xf7e7f
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
callq 0x32f50
movq %rax, 0x80(%rsp)
jmp 0x3372d
movq 0x80(%rsp), %rax
movq %rax, 0x198(%rsp)
cmpq $0x0, 0x198(%rsp)
je 0x3380d
leaq 0x1a0(%rsp), %rdi
callq 0x23e60
movq 0x118(%rsp), %rsi
movq %rax, 0x78(%rsp)
movq 0x198(%rsp), %rdx
leaq 0x190(%rsp), %rdi
callq 0x330c0
jmp 0x3377d
movq 0x78(%rsp), %rdi
leaq 0x190(%rsp), %rsi
callq 0x37910
jmp 0x33791
leaq 0x190(%rsp), %rdi
callq 0x23860
movq 0x198(%rsp), %rdi
leaq 0xc46d2(%rip), %rsi     # 0xf7e7f
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
callq 0x33cf0
movq %rax, 0x70(%rsp)
jmp 0x337c2
movq 0x70(%rsp), %rax
movq %rax, 0x198(%rsp)
jmp 0x3373d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x33841
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x190(%rsp), %rdi
callq 0x23860
jmp 0x33841
movq 0x108(%rsp), %rdi
leaq 0x1a0(%rsp), %rsi
callq 0x379b0
jmp 0x33824
movl $0x1, 0x1d8(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0x24300
jmp 0x33c86
leaq 0x1a0(%rsp), %rdi
callq 0x24300
jmp 0x33ca3
leaq 0xc462a(%rip), %rsi     # 0xf7e84
leaq 0x218(%rsp), %rdi
callq 0x377a0
movb %al, 0x6f(%rsp)
jmp 0x3386d
movb 0x6f(%rsp), %al
testb $0x1, %al
jne 0x3387a
jmp 0x33c29
movq 0x250(%rsp), %rdi
callq 0x33040
movq %rax, 0x50(%rsp)
movq 0x250(%rsp), %rdi
callq 0x33080
movq %rax, 0x58(%rsp)
leaq 0x167(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x4a200
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq 0x60(%rsp), %rcx
leaq 0x168(%rsp), %rdi
callq 0xc72f0
jmp 0x338ce
leaq 0x188(%rsp), %rdi
leaq 0x168(%rsp), %rsi
callq 0x37a10
jmp 0x338e5
leaq 0x168(%rsp), %rdi
callq 0xc49c0
leaq 0x167(%rsp), %rdi
callq 0x4a220
movq 0x250(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0x32f50
movq %rax, 0x48(%rsp)
jmp 0x3391f
movq 0x48(%rsp), %rax
movq %rax, 0x158(%rsp)
cmpq $0x0, 0x158(%rsp)
je 0x33b90
movq 0x158(%rsp), %rdi
callq 0x33040
movq %rax, 0x30(%rsp)
movq 0x158(%rsp), %rdi
callq 0x33080
movq %rax, 0x38(%rsp)
leaq 0x137(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x4a200
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
movq 0x40(%rsp), %rcx
leaq 0x138(%rsp), %rdi
callq 0xc72f0
jmp 0x3398f
leaq 0x137(%rsp), %rdi
callq 0x4a220
leaq 0x138(%rsp), %rdi
callq 0xc4ee0
testb $0x1, %al
jne 0x339b2
jmp 0x33ab6
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x28(%rsp)
leaq 0xc300c(%rip), %rsi     # 0xf69da
callq 0x5b7e0
jmp 0x339d5
movq 0x28(%rsp), %rdi
leaq 0x10f68f(%rip), %rsi    # 0x143070
leaq 0x1e478(%rip), %rdx     # 0x51e60
callq 0x48fd0
jmp 0x33cbd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x33a29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x168(%rsp), %rdi
callq 0xc49c0
leaq 0x167(%rsp), %rdi
callq 0x4a220
jmp 0x33ca3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x33c1a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x137(%rsp), %rdi
callq 0x4a220
jmp 0x33c1a
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x33b7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
jmp 0x33b7e
movq 0x118(%rsp), %rsi
movq 0x158(%rsp), %rdx
leaq 0x128(%rsp), %rdi
callq 0x330c0
jmp 0x33ad5
leaq 0x188(%rsp), %rdi
callq 0x22db0
movq %rax, %rdi
addq $0x48, %rdi
leaq 0x138(%rsp), %rsi
callq 0x33cc0
movq %rax, 0x20(%rsp)
jmp 0x33afd
movq 0x20(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x280b0
jmp 0x33b11
leaq 0x128(%rsp), %rdi
callq 0x23860
leaq 0x138(%rsp), %rdi
callq 0xc49c0
movq 0x158(%rsp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0x1, %ecx
movq %rdx, %rsi
callq 0x33cf0
movq %rax, 0x18(%rsp)
jmp 0x33b4b
movq 0x18(%rsp), %rax
movq %rax, 0x158(%rsp)
jmp 0x3392c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x128(%rsp), %rdi
callq 0x23860
leaq 0x138(%rsp), %rdi
callq 0xc49c0
jmp 0x33c1a
leaq 0x120(%rsp), %rdi
leaq 0x188(%rsp), %rsi
callq 0x37b10
jmp 0x33ba7
leaq 0x120(%rsp), %rdi
callq 0x37b60
movq %rax, 0x10(%rsp)
jmp 0x33bbb
movq 0x10(%rsp), %rsi
movq 0x108(%rsp), %rdi
callq 0x22dc0
jmp 0x33bcf
leaq 0x120(%rsp), %rdi
callq 0x261c0
movl $0x1, 0x1d8(%rsp)
leaq 0x188(%rsp), %rdi
callq 0x23af0
jmp 0x33c86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x261c0
leaq 0x188(%rsp), %rdi
callq 0x23af0
jmp 0x33ca3
movl $0x10, %edi
callq 0x47f80
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x8(%rsp)
leaq 0xc2dae(%rip), %rsi     # 0xf69f3
callq 0x5b7e0
jmp 0x33c4c
movq 0x8(%rsp), %rdi
leaq 0x10f418(%rip), %rsi    # 0x143070
leaq 0x1e201(%rip), %rdx     # 0x51e60
callq 0x48fd0
jmp 0x33cbd
movq 0x8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x240(%rsp)
movl %eax, 0x23c(%rsp)
callq 0x47fe0
jmp 0x33ca3
leaq 0x218(%rsp), %rdi
callq 0xc49c0
movq 0x110(%rsp), %rax
addq $0x268, %rsp            # imm = 0x268
retq
leaq 0x218(%rsp), %rdi
callq 0xc49c0
movq 0x240(%rsp), %rdi
callq 0xf31f0
nopl (%rax)