// File: /workspace/github_cpp_makefile_star2_O2/tdv[P]boss/boss/examples/string_enum/main.cpp
// Function: main
int main()
{
  try
  {
    Boss::RefObjPtr<MyNs::ISimpleObject> Obj = Boss::Base<MyNs::SimpleObject>::Create();
    Boss::RefObjPtr<Boss::IEnum> Strings;
    if (Obj->GetStrings(Strings.GetPPtr()) != Boss::Status::Ok)
    {
      std::cerr << "failed to get strings." << std::endl;
      return -1;
    }
    Boss::EnumHelper<Boss::IString> Enum(Strings);
    for (Boss::RefObjPtr<Boss::IString> i = Enum.First() ; i.Get() ; i = Enum.Next())
      std::cout << Boss::StringHelper(i).GetString<Boss::IString::AnsiString>() << std::endl;
  }
  catch (std::exception const &e)
  {
    std::cerr << "Error: " << e.what() << std::endl;
  }
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
leaq 0x38(%rsp), %rdi
callq 0x1749a
leaq 0x38(%rsp), %rdi
movq (%rdi), %rax
leaq 0x8(%rax), %rcx
testq %rax, %rax
cmoveq %rax, %rcx
movq %rcx, 0x20(%rsp)
andq $0x0, (%rdi)
callq 0x1750a
leaq 0x18(%rsp), %rsi
andq $0x0, (%rsi)
movq 0x20(%rsp), %rdi
movq (%rdi), %rax
callq *0x28(%rax)
movl %eax, %ebx
testl %eax, %eax
je 0x17279
leaq 0xe50e3(%rip), %rdi     # 0xfc340
leaq 0xa6da0(%rip), %rsi     # 0xbe004
callq 0x85bb0
movq %rax, %rdi
callq 0x85490
pushq $-0x1
popq %rbp
jmp 0x17372
movq 0x18(%rsp), %rdi
movq %rdi, 0x10(%rsp)
testq %rdi, %rdi
je 0x1728e
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x8(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x1751a
leaq 0x10(%rsp), %rdi
callq 0x17590
movq %rsp, %rdi
leaq 0x8(%rsp), %rsi
callq 0x175a0
leaq 0x30(%rsp), %r14
leaq 0x28(%rsp), %r15
leaq 0x38(%rsp), %r12
leaq 0xe5196(%rip), %r13     # 0xfc460
leaq 0x8(%rsp), %rbp
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x1735e
movq %rdi, 0x28(%rsp)
movq (%rdi), %rax
callq *0x10(%rax)
movq %r14, %rdi
movq %r15, %rsi
callq 0x175e6
movq %r12, %rdi
movq %r14, %rsi
callq 0x1765c
movq %r13, %rdi
movq %r12, %rsi
callq 0x8ed90
movq %rax, %rdi
callq 0x85490
movq %r12, %rdi
callq 0x8c360
movq %r14, %rdi
callq 0x17786
movq %r15, %rdi
callq 0x17786
movq %r12, %rdi
movq %rbp, %rsi
callq 0x17796
movq (%rsp), %rdi
testq %rdi, %rdi
je 0x17342
movq (%rdi), %rax
callq *0x18(%rax)
movq 0x38(%rsp), %rax
movq %rax, (%rsp)
andq $0x0, 0x38(%rsp)
movq %r12, %rdi
callq 0x17786
jmp 0x172cf
movq %rsp, %rdi
callq 0x17786
leaq 0x8(%rsp), %rdi
callq 0x17590
xorl %ebp, %ebp
leaq 0x18(%rsp), %rdi
callq 0x1786c
leaq 0x20(%rsp), %rdi
callq 0x1787c
testl %ebx, %ebx
jne 0x1738c
xorl %ebp, %ebp
movl %ebp, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x173bc
movq %rdx, %r14
movq %rax, %rbx
jmp 0x17417
movq %rdx, %r14
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
jmp 0x1741c
movq %rdx, %r14
movq %rax, %rbx
jmp 0x17435
movq %rdx, %r14
movq %rax, %rbx
jmp 0x17421
movq %rdx, %r14
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
jmp 0x1740a
movq %rdx, %r14
movq %rax, %rbx
jmp 0x17405
movq %rdx, %r14
movq %rax, %rbx
jmp 0x173fb
jmp 0x173e3
movq %rdx, %r14
movq %rax, %rbx
jmp 0x1740f
movq %rdx, %r14
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x8c360
leaq 0x30(%rsp), %rdi
callq 0x17786
leaq 0x28(%rsp), %rdi
callq 0x17786
movq %rsp, %rdi
callq 0x17786
leaq 0x8(%rsp), %rdi
callq 0x17590
leaq 0x18(%rsp), %rdi
callq 0x1786c
leaq 0x20(%rsp), %rdi
callq 0x1787c
cmpl $0x1, %r14d
jne 0x1748a
movq %rbx, %rdi
callq 0x19e60
movq %rax, %rbx
leaq 0xe4ef3(%rip), %rdi     # 0xfc340
leaq 0xa6bc7(%rip), %rsi     # 0xbe01b
callq 0x85bb0
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x85bb0
movq %rax, %rdi
callq 0x85490
callq 0x19ed0
jmp 0x1738a
movq %rax, %rbx
callq 0x19ed0
movq %rbx, %rdi
callq 0xbadf0
movq %rax, %rdi
callq 0x1788c