// File: /workspace/github_cpp_makefile_star2_O2/tdv[P]boss/boss/include/plugin/factory_tools.h
// Function: Boss::RefObjPtr<MyNs::ISum> Boss::CreateObject<MyNs::ISum>(unsigned int)
inline RefObjPtr<T> CreateObject(ClassId clsId)
  {
    auto Locator = Private::GetServiceLocator();
    if (!Locator.Get())
      throw FactoryToolsException("Failed to get ServiceLocator.");
    RefObjPtr<IBase> FactoryInst;
    if (Locator->GetService(Service::Locator::Id::ClassFactoryService, FactoryInst.GetPPtr()) != Status::Ok)
      throw FactoryToolsException("ClassFactory not found.");
    RefObjQIPtr<IClassFactory> Factory(FactoryInst);
    if (!Factory.Get())
      throw FactoryToolsException("Interface IClassFactory not found.");
    RefObjPtr<IBase> Inst;
    if (Factory->CreateObject(clsId, Inst.GetPPtr()) != Status::Ok)
      throw FactoryToolsException("Failed to create object.");
    RefObjQIPtr<T> Ret(Inst);
    if (!Ret.Get())
      throw FactoryToolsException("Interface not found.");
    return std::move(Ret);
  }

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
movl %esi, %ebp
movq %rdi, %rbx
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x170c3
movq (%r14), %rdi
testq %rdi, %rdi
je 0x175c1
leaq 0x20(%rsp), %rdx
andq $0x0, (%rdx)
movq (%rdi), %rax
movl $0x16d1a76d, %esi       # imm = 0x16D1A76D
callq *0x28(%rax)
testl %eax, %eax
jne 0x175f6
leaq 0x18(%rsp), %rdi
leaq 0x20(%rsp), %rsi
callq 0x19e54
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1762b
leaq 0x10(%rsp), %rdx
andq $0x0, (%rdx)
movq (%rdi), %rax
movl %ebp, %esi
callq *0x28(%rax)
testl %eax, %eax
jne 0x1765d
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x19e9a
cmpq $0x0, 0x8(%rsp)
je 0x1768f
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x19eca
leaq 0x8(%rsp), %rdi
callq 0x19efc
leaq 0x10(%rsp), %rdi
callq 0x180d2
leaq 0x18(%rsp), %rdi
callq 0x19be4
leaq 0x20(%rsp), %rdi
callq 0x180d2
leaq 0x28(%rsp), %rdi
callq 0x177cc
movq %rbx, %rax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x1a4f0
movq %rax, %r14
leaq 0xa6f16(%rip), %rsi     # 0xbe4e9
movq %rax, %rdi
callq 0x19e28
leaq 0xdeac6(%rip), %rsi     # 0xf60a8
leaq 0xcb47(%rip), %rdx      # 0x24130
movq %r14, %rdi
callq 0x1b540
jmp 0x176bf
pushq $0x10
popq %rdi
callq 0x1a4f0
movq %rax, %r14
leaq 0xa6f0a(%rip), %rsi     # 0xbe512
movq %rax, %rdi
callq 0x19e3e
leaq 0xdea91(%rip), %rsi     # 0xf60a8
leaq 0xcb12(%rip), %rdx      # 0x24130
movq %r14, %rdi
callq 0x1b540
jmp 0x176bf
pushq $0x10
popq %rdi
callq 0x1a4f0
movq %rax, %r14
leaq 0xa6eca(%rip), %rsi     # 0xbe507
movq %rax, %rdi
callq 0x19e6e
leaq 0xdea5c(%rip), %rsi     # 0xf60a8
leaq 0xcadd(%rip), %rdx      # 0x24130
movq %r14, %rdi
callq 0x1b540
jmp 0x176bf
pushq $0x10
popq %rdi
callq 0x1a4f0
movq %rax, %r14
leaq 0xa6b1f(%rip), %rsi     # 0xbe18e
movq %rax, %rdi
callq 0x19e84
leaq 0xdea2a(%rip), %rsi     # 0xf60a8
leaq 0xcaab(%rip), %rdx      # 0x24130
movq %r14, %rdi
callq 0x1b540
jmp 0x176bf
pushq $0x10
popq %rdi
callq 0x1a4f0
movq %rax, %r14
leaq 0xa6ac7(%rip), %rsi     # 0xbe168
movq %rax, %rdi
callq 0x19eb4
leaq 0xde9f8(%rip), %rsi     # 0xf60a8
leaq 0xca79(%rip), %rdx      # 0x24130
movq %r14, %rdi
callq 0x1b540
movq %rax, %rbx
movq %r14, %rdi
callq 0x1a550
jmp 0x17711
movq %rax, %rbx
movq %r14, %rdi
callq 0x1a550
jmp 0x17720
movq %rax, %rbx
jmp 0x1772a
movq %rax, %rbx
movq %r14, %rdi
callq 0x1a550
jmp 0x1772a
movq %rax, %rbx
movq %r14, %rdi
callq 0x1a550
jmp 0x17739
movq %rax, %rbx
jmp 0x17743
movq %rax, %rbx
movq %r14, %rdi
callq 0x1a550
jmp 0x17743
jmp 0x1771d
jmp 0x17736
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x19efc
jmp 0x17720
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x180d2
leaq 0x18(%rsp), %rdi
callq 0x19be4
jmp 0x17739
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x180d2
leaq 0x28(%rsp), %rdi
callq 0x177cc
movq %rbx, %rdi
callq 0xbaf20
nop