// File: tdv[P]boss/boss/examples/multy_component/client/main.cpp
// Function: main
int main()
{
  try
  {
    Boss::Loader Ldr("Registry.xml", "./" MAKE_MODULE_NAME("service_registry"),
                     "./" MAKE_MODULE_NAME("class_factory"));
    auto Obj1 = Boss::CreateObject<MyNs::IFace1>(MyNs::Service::Id::Face1);
    if (Obj1->Method() != Boss::Status::Ok)
      std::cerr << "Failed to call IFace1::Method" << std::endl;
    auto Obj2 = Boss::CreateObject<MyNs::IFace2>(MyNs::Service::Id::Face2);
    if (Obj2->Method() != Boss::Status::Ok)
      std::cerr << "Failed to call IFace2::Method" << std::endl;
  }
  catch (std::exception const &e)
  {
    std::cerr << "Error: " << e.what() << std::endl;
  }
  return 0;
}

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movl $0x0, 0x124(%rsp)
leaq 0xd7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x25ea0
movq 0x50(%rsp), %rdx
leaq 0xaed58(%rip), %rsi     # 0xc70e8
leaq 0xd8(%rsp), %rdi
callq 0x99370
jmp 0x1839f
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x25ea0
movq 0x48(%rsp), %rdx
leaq 0xaed38(%rip), %rsi     # 0xc70f5
leaq 0xa0(%rsp), %rdi
callq 0x99370
jmp 0x183cc
leaq 0x77(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x25ea0
movq 0x40(%rsp), %rdx
leaq 0xaed27(%rip), %rsi     # 0xc710e
leaq 0x78(%rsp), %rdi
callq 0x99370
jmp 0x183f3
leaq 0xf8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
leaq 0xa0(%rsp), %rdx
leaq 0x78(%rsp), %rcx
callq 0x18930
jmp 0x18417
leaq 0x78(%rsp), %rdi
callq 0x969f0
leaq 0x77(%rsp), %rdi
callq 0x25ec0
leaq 0xa0(%rsp), %rdi
callq 0x969f0
leaq 0x9f(%rsp), %rdi
callq 0x25ec0
leaq 0xd8(%rsp), %rdi
callq 0x969f0
leaq 0xd7(%rsp), %rdi
callq 0x25ec0
leaq 0x68(%rsp), %rdi
movl $0x1c3fa8af, %esi       # imm = 0x1C3FA8AF
callq 0x18c50
jmp 0x18470
leaq 0x68(%rsp), %rdi
callq 0x19090
movq %rax, 0x38(%rsp)
jmp 0x18481
movq 0x38(%rsp), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, 0x34(%rsp)
jmp 0x18495
movl 0x34(%rsp), %eax
cmpl $0x0, %eax
je 0x185a9
leaq 0xf0eb7(%rip), %rdi     # 0x109360
leaq 0xaec74(%rip), %rsi     # 0xc7124
callq 0x90240
movq %rax, 0x28(%rsp)
jmp 0x184bc
movq 0x28(%rsp), %rdi
leaq 0x77658(%rip), %rsi     # 0x8fb20
callq 0x8ed30
jmp 0x184cf
jmp 0x185a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x18565
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1854b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x18534
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x78(%rsp), %rdi
callq 0x969f0
leaq 0x77(%rsp), %rdi
callq 0x25ec0
leaq 0xa0(%rsp), %rdi
callq 0x969f0
leaq 0x9f(%rsp), %rdi
callq 0x25ec0
leaq 0xd8(%rsp), %rdi
callq 0x969f0
leaq 0xd7(%rsp), %rdi
callq 0x25ec0
jmp 0x18674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x18667
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x1865d
leaq 0x60(%rsp), %rdi
movl $0x8536f915, %esi       # imm = 0x8536F915
callq 0x190a0
jmp 0x185ba
leaq 0x60(%rsp), %rdi
callq 0x194e0
movq %rax, 0x20(%rsp)
jmp 0x185cb
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
movq 0x28(%rax), %rax
callq *%rax
movl %eax, 0x1c(%rsp)
jmp 0x185df
movl 0x1c(%rsp), %eax
cmpl $0x0, %eax
je 0x18637
leaq 0xf0d71(%rip), %rdi     # 0x109360
leaq 0xaeb4c(%rip), %rsi     # 0xc7142
callq 0x90240
movq %rax, 0x10(%rsp)
jmp 0x18602
movq 0x10(%rsp), %rdi
leaq 0x77512(%rip), %rsi     # 0x8fb20
callq 0x8ed30
jmp 0x18615
jmp 0x18637
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x194f0
jmp 0x1865d
leaq 0x60(%rsp), %rdi
callq 0x194f0
leaq 0x68(%rsp), %rdi
callq 0x19510
leaq 0xf8(%rsp), %rdi
callq 0x19530
jmp 0x186ec
leaq 0x68(%rsp), %rdi
callq 0x19510
leaq 0xf8(%rsp), %rdi
callq 0x19530
movl 0xc4(%rsp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x18713
movq 0xc8(%rsp), %rdi
callq 0x23e80
movq %rax, 0x58(%rsp)
leaq 0xf0cbf(%rip), %rdi     # 0x109360
leaq 0xaeab8(%rip), %rsi     # 0xc7160
callq 0x90240
movq %rax, 0x8(%rsp)
jmp 0x186b4
movq 0x58(%rsp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0x90240
movq %rax, (%rsp)
jmp 0x186d5
movq (%rsp), %rdi
leaq 0x77440(%rip), %rsi     # 0x8fb20
callq 0x8ed30
jmp 0x186e7
callq 0x23ef0
xorl %eax, %eax
addq $0x128, %rsp            # imm = 0x128
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
callq 0x23ef0
jmp 0x18711
jmp 0x18713
movq 0xc8(%rsp), %rdi
callq 0xc47b0
movq %rax, %rdi
callq 0x195c0
nopl (%rax,%rax)