// File: tdv[P]boss/boss/include/common/xml_property_bag.h
// Function: Boss::XmlPropertyBag::Save(Boss::IOStream*)
virtual RetCode BOSS_CALL Save(IOStream *stream)
    {
      if (!stream)
        return Status::InvalidArgument;
      try
      {
        std::lock_guard<std::recursive_mutex> Lock(Mtx);
        rapidxml::xml_document<> Doc;
        auto *RootNode = Doc.allocate_node(rapidxml::node_element, RootName.c_str());
        Doc.append_node(RootNode);
        for (auto &prop : Props)
          SerializeItem(prop.first, prop.second.Get(), &Doc, RootNode);
        std::stringstream Io;
        rapidxml::print(std::ostream_iterator<char>(Io), Doc, 0);
        std::string Xml(Io.str());
        return stream->Write(Xml.c_str(), Xml.length());
      }
      catch (...)
      {
        return Status::Fail;
      }
    }

// Assembly:
subq $0x102e8, %rsp          # imm = 0x102E8
movq %rdi, 0x102d8(%rsp)
movq %rsi, 0x102d0(%rsp)
movq 0x102d8(%rsp), %rax
movq %rax, 0x38(%rsp)
cmpq $0x0, 0x102d0(%rsp)
jne 0x2abff
movl $0x5, 0x102e4(%rsp)
jmp 0x2aed9
movq 0x38(%rsp), %rsi
addq $0x20, %rsi
leaq 0x102c8(%rsp), %rdi
callq 0x22340
jmp 0x2ac17
leaq 0x230(%rsp), %rdi
callq 0x32dc0
jmp 0x2ac26
movq 0x38(%rsp), %rdi
leaq 0x290(%rsp), %rax
movq %rax, 0x28(%rsp)
subq $-0x80, %rdi
callq 0xc6400
movq 0x28(%rsp), %rdi
movq %rax, %rdx
xorl %eax, %eax
movl %eax, %r9d
movl $0x1, %esi
movq %r9, %rcx
movq %r9, %r8
callq 0x35870
movq %rax, 0x30(%rsp)
jmp 0x2ac65
movq 0x30(%rsp), %rax
movq %rax, 0x228(%rsp)
movq 0x228(%rsp), %rsi
leaq 0x230(%rsp), %rdi
callq 0x34a20
jmp 0x2ac89
movq 0x38(%rsp), %rax
addq $0x48, %rax
movq %rax, 0x220(%rsp)
movq 0x220(%rsp), %rdi
callq 0x2d400
movq %rax, 0x218(%rsp)
movq 0x220(%rsp), %rdi
callq 0x2c790
movq %rax, 0x210(%rsp)
leaq 0x218(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x2d430
testb $0x1, %al
jne 0x2ace2
jmp 0x2ad8d
leaq 0x218(%rsp), %rdi
callq 0x2d450
movq %rax, 0x208(%rsp)
movq 0x208(%rsp), %rdi
movq %rdi, 0x20(%rsp)
addq $0x20, %rdi
callq 0x280f0
movq 0x38(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %rax, %rdx
movq 0x228(%rsp), %r8
leaq 0x230(%rsp), %rcx
callq 0x38700
jmp 0x2ad31
jmp 0x2ad33
leaq 0x218(%rsp), %rdi
callq 0x2d640
jmp 0x2acc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x102c0(%rsp)
movl %eax, 0x102bc(%rsp)
jmp 0x2aebc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x102c0(%rsp)
movl %eax, 0x102bc(%rsp)
jmp 0x2aeaf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x102c0(%rsp)
movl %eax, 0x102bc(%rsp)
jmp 0x2aea2
leaq 0x80(%rsp), %rdi
callq 0xbdc30
jmp 0x2ad9c
leaq 0x90(%rsp), %rsi
leaq 0x70(%rsp), %rdi
callq 0x39760
jmp 0x2adb0
leaq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rsi
leaq 0x230(%rsp), %rdx
xorl %ecx, %ecx
callq 0x39700
jmp 0x2adcb
leaq 0x40(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xbec00
jmp 0x2addf
movq 0x102d0(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x40(%rsp), %rdi
movq %rdi, (%rsp)
callq 0xc6400
movq (%rsp), %rdi
movq %rax, 0x10(%rsp)
callq 0xc4bf0
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %rsi
movl %eax, %edx
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, 0x1c(%rsp)
jmp 0x2ae23
movl 0x1c(%rsp), %eax
movl %eax, 0x102e4(%rsp)
leaq 0x40(%rsp), %rdi
callq 0xc49c0
leaq 0x80(%rsp), %rdi
callq 0xba050
leaq 0x230(%rsp), %rdi
callq 0x33e60
leaq 0x102c8(%rsp), %rdi
callq 0x22460
jmp 0x2aed9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x102c0(%rsp)
movl %eax, 0x102bc(%rsp)
jmp 0x2ae95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x102c0(%rsp)
movl %eax, 0x102bc(%rsp)
leaq 0x40(%rsp), %rdi
callq 0xc49c0
leaq 0x80(%rsp), %rdi
callq 0xba050
leaq 0x230(%rsp), %rdi
callq 0x33e60
leaq 0x102c8(%rsp), %rdi
callq 0x22460
movq 0x102c0(%rsp), %rdi
callq 0x480e0
movl $0x2, 0x102e4(%rsp)
callq 0x48150
movl 0x102e4(%rsp), %eax
addq $0x102e8, %rsp          # imm = 0x102E8
retq
nopl (%rax,%rax)