// File: /workspace/github_cpp_makefile_star2_O2/Heptagon196[P]Gos/main.cpp
// Function: reflIO()
void reflIO() {
    ReflMgrTool::Init();
    auto& refl = ReflMgr::Instance();
    refl.AddClass<IO>();
    refl.AddClass<unknown>();
    ReflMgrTool::AutoRegister<Array>();
    refl.AddClass<Array>();
    refl.AddMethod<Array>(std::function([](Array* self, int size) -> decltype(auto) {
        self->cont.resize(size);
    }), "__ctor");;
    refl.AddMethod<SharedObject>(std::function([&refl](SharedObject* self, ReflMgr::Any val) -> decltype(auto) {
        (*self) = refl.New(val.GetType());
        return self->assign(val);
    }), "__assign");
    refl.AddAliasClass("any", TypeID::get<ReflMgr::Any>().getName());
    refl.AddAliasClass("array", "Array");
    refl.AddAliasClass("string", TypeID::get<std::string>().getName());
    refl.AddMethod(std::function([](std::vector<SharedObject>* self, int size) { self->resize(size); }), "resize");
    refl.AddMethod(&IO::count, "count");
    refl.AddMethod(MethodType<void, IO, ReflMgr::Any>::Type(&IO::print), "print");
    refl.AddMethod(MethodType<void, IO, int&>::Type(&IO::read), "read");
    refl.AddMethod(MethodType<void, IO, std::string&>::Type(&IO::read), "read");
    refl.AddMethod(MethodType<void, IO, SharedObject&>::Type(&IO::read), "read");
    refl.AddMethod(&IO::Greatings, "Greatings");
    refl.AddStaticMethod(TypeID::get<IO>(), &IO::Hello, "hello");
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x168, %rsp            # imm = 0x168
callq 0x1a1db
callq 0x1df9e
leaq 0x120(%rsp), %rcx
andq $0x0, -0x10(%rcx)
movq %rax, %rbx
movq %rcx, -0x30(%rcx)
movq $0x1, -0x28(%rcx)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rcx)
movl $0x3f800000, -0x10(%rcx) # imm = 0x3F800000
movups %xmm0, -0x8(%rcx)
leaq 0xf0(%rsp), %rsi
movq %rax, %rdi
callq 0x8fb16
leaq 0xf0(%rsp), %rdi
callq 0x2b990
leaq 0xe8(%rsp), %rax
andq $0x0, -0x10(%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq 0xb8(%rsp), %rsi
movq %rbx, %rdi
callq 0x8fb76
leaq 0xb8(%rsp), %rdi
callq 0x2b990
callq 0x8fbd6
leaq 0xb0(%rsp), %rax
andq $0x0, -0x10(%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq 0x80(%rsp), %rsi
movq %rbx, %rdi
callq 0x8fd1a
leaq 0x80(%rsp), %rdi
callq 0x2b990
leaq 0x40(%rsp), %rsi
xorps %xmm0, %xmm0
movaps %xmm0, (%rsi)
leaq 0x6b8(%rip), %rax       # 0x8f9de
movq %rax, 0x18(%rsi)
leaq 0x6b9(%rip), %rax       # 0x8f9ea
movq %rax, 0x10(%rsi)
leaq 0x6aaa(%rip), %rcx      # 0x95de6
pushq $0x6
popq %rdx
movq %rbx, %rdi
callq 0x8fd7a
leaq 0x40(%rsp), %rdi
callq 0x21f04
leaq 0x60(%rsp), %rsi
andq $0x0, 0x8(%rsi)
movq %rbx, (%rsi)
leaq 0x69d(%rip), %rax       # 0x8fa02
movq %rax, 0x18(%rsi)
leaq 0x75c(%rip), %rax       # 0x8facc
movq %rax, 0x10(%rsi)
leaq 0x6aa1(%rip), %rcx      # 0x95e1c
pushq $0x8
popq %rdx
movq %rbx, %rdi
callq 0x8fe90
leaq 0x60(%rsp), %rdi
callq 0x21f04
leaq 0x128(%rsp), %r14
movq %r14, %rdi
callq 0x21ea6
movq %r14, %rdi
callq 0x1b9ce
movq %rdx, %r8
leaq 0x1b91e(%rip), %rdx     # 0xaacd0
pushq $0x3
popq %rsi
movq %rbx, %rdi
movq %rax, %rcx
callq 0x1ec06
leaq 0x1b90d(%rip), %rdx     # 0xaacd4
leaq 0x1b90c(%rip), %r8      # 0xaacda
pushq $0x5
popq %rcx
movq %rbx, %rdi
movq %rcx, %rsi
callq 0x1ec06
leaq 0x128(%rsp), %r14
movq %r14, %rdi
callq 0x2140e
movq %r14, %rdi
callq 0x1b9ce
movq %rdx, %r8
leaq 0x1a081(%rip), %rdx     # 0xa947f
pushq $0x6
popq %r14
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rcx
callq 0x1ec06
xorps %xmm0, %xmm0
leaq 0x20(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x6d0(%rip), %rax       # 0x8faf2
movq %rax, 0x18(%rsi)
leaq 0x6d1(%rip), %rax       # 0x8fafe
movq %rax, 0x10(%rsi)
leaq 0x1b8a8(%rip), %rcx     # 0xaace0
movq %rbx, %rdi
movq %r14, %rdx
callq 0x8ffa6
leaq 0x20(%rsp), %rdi
callq 0x21f04
leaq 0xd5c(%rip), %rsi       # 0x901b0
leaq 0x1b88c(%rip), %r8      # 0xaace7
pushq $0x5
popq %r14
movq %rbx, %rdi
xorl %edx, %edx
movq %r14, %rcx
callq 0x900bc
leaq 0xe41(%rip), %rsi       # 0x902b4
leaq 0x1b873(%rip), %r8      # 0xaaced
movq %rbx, %rdi
xorl %edx, %edx
movq %r14, %rcx
callq 0x901c0
leaq 0xf30(%rip), %rsi       # 0x903be
leaq 0x1b85e(%rip), %r15     # 0xaacf3
pushq $0x4
popq %r12
movq %rbx, %rdi
xorl %edx, %edx
movq %r12, %rcx
movq %r15, %r8
callq 0x902ca
leaq 0x100e(%rip), %rsi      # 0x904be
movq %rbx, %rdi
xorl %edx, %edx
movq %r12, %rcx
movq %r15, %r8
callq 0x903ca
leaq 0x10f7(%rip), %rsi      # 0x905be
movq %rbx, %rdi
xorl %edx, %edx
movq %r12, %rcx
movq %r15, %r8
callq 0x904ca
leaq 0x121c(%rip), %rsi      # 0x906fa
leaq 0x1b813(%rip), %r8      # 0xaacf8
pushq $0x9
popq %rcx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x90606
leaq 0x148(%rsp), %r15
movq %r15, %rdi
callq 0x9082e
movups (%r15), %xmm0
movups 0x10(%r15), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x134f(%rip), %rsi      # 0x9086a
leaq 0x1b7e0(%rip), %rcx     # 0xaad02
movq %rbx, %rdi
movq %r14, %rdx
callq 0x90718
addq $0x168, %rsp            # imm = 0x168
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
jmp 0x8f558
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
jmp 0x8f558
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x21f04
jmp 0x8f589
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
jmp 0x8f584
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
jmp 0x8f584
movq %rax, %rbx
leaq 0xf0(%rsp), %rdi
callq 0x2b990
movq %rbx, %rdi
callq 0x11570