// File: /workspace/github_cpp_makefile_star2_O3/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 %rbp
pushq %r14
pushq %rbx
subq $0x170, %rsp            # imm = 0x170
callq 0x1d04c
callq 0x227b2
movq %rax, %rbx
leaq 0x168(%rsp), %rax
movq $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 0x138(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb3e08
leaq 0x138(%rsp), %rdi
callq 0x36ac6
leaq 0x130(%rsp), %rax
movq $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 0x100(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb3e90
leaq 0x100(%rsp), %rdi
callq 0x36ac6
callq 0xb3f17
leaq 0xf8(%rsp), %rax
movq $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 0xc8(%rsp), %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb40da
leaq 0xc8(%rsp), %rdi
callq 0x36ac6
leaq 0x60(%rsp), %rsi
xorps %xmm0, %xmm0
movaps %xmm0, (%rsi)
leaq 0x8ef(%rip), %rax       # 0xb3c8c
movq %rax, 0x18(%rsi)
leaq 0x8f0(%rip), %rax       # 0xb3c98
movq %rax, 0x10(%rsi)
leaq 0x8a0c(%rip), %rcx      # 0xbbdbf
movl $0x6, %edx
movq %rbx, %rdi
callq 0xb4162
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xb33d9
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x88(%rsp), %rsi
movq $0x0, 0x8(%rsi)
movq %rbx, (%rsi)
leaq 0x8bd(%rip), %rax       # 0xb3cb0
movq %rax, 0x18(%rsi)
leaq 0x9c0(%rip), %rax       # 0xb3dbe
movq %rax, 0x10(%rsi)
leaq 0x89ec(%rip), %rcx      # 0xbbdf5
movl $0x8, %edx
movq %rbx, %rdi
callq 0xb439a
movq 0x98(%rsp), %rax
testq %rax, %rax
je 0xb3435
leaq 0x88(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movabsq $-0x23244b0fbd3d03de, %rax # imm = 0xDCDBB4F042C2FC22
leaq 0xa8(%rsp), %r14
movq %rax, (%r14)
movq $0xc, 0x8(%r14)
leaq 0x8afd(%rip), %rax      # 0xbbf56
movq %rax, 0x10(%r14)
xorl %ebp, %ebp
movw %bp, 0x18(%r14)
movq %r14, %rdi
callq 0x1f5e2
movq %rdx, %r8
leaq 0x1ce16(%rip), %rdx     # 0xd028c
movl $0x3, %esi
movq %rbx, %rdi
movq %rax, %rcx
callq 0x2377c
leaq 0x1ce03(%rip), %rdx     # 0xd0290
leaq 0x1ce02(%rip), %r8      # 0xd0296
movl $0x5, %esi
movl $0x5, %ecx
movq %rbx, %rdi
callq 0x2377c
movabsq $-0x22bfd0b2172c96aa, %rax # imm = 0xDD402F4DE8D36956
movq %rax, (%r14)
movq $0x17, 0x8(%r14)
leaq 0x8970(%rip), %rax      # 0xbbe32
movq %rax, 0x10(%r14)
movw %bp, 0x18(%r14)
leaq 0xa8(%rsp), %rdi
callq 0x1f5e2
movq %rdx, %r8
leaq 0x1bd85(%rip), %rdx     # 0xcf267
movl $0x6, %esi
movq %rbx, %rdi
movq %rax, %rcx
callq 0x2377c
xorps %xmm0, %xmm0
leaq 0x40(%rsp), %rsi
movaps %xmm0, (%rsi)
leaq 0x8e0(%rip), %rax       # 0xb3de4
movq %rax, 0x18(%rsi)
leaq 0x8e1(%rip), %rax       # 0xb3df0
movq %rax, 0x10(%rsi)
leaq 0x1cd82(%rip), %rcx     # 0xd029c
movl $0x6, %edx
movq %rbx, %rdi
callq 0xb45d2
movq 0x50(%rsp), %rax
testq %rax, %rax
je 0xb3540
leaq 0x40(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq 0x14ab(%rip), %rsi      # 0xb49f2
leaq 0x1cd55(%rip), %r8      # 0xd02a3
movl $0x5, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xb480a
leaq 0x1686(%rip), %rsi      # 0xb4bea
leaq 0x1cd3e(%rip), %r8      # 0xd02a9
movl $0x5, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xb4a02
leaq 0x1889(%rip), %rsi      # 0xb4e0a
leaq 0x1cd27(%rip), %r14     # 0xd02af
movl $0x4, %ecx
movq %rbx, %rdi
xorl %edx, %edx
movq %r14, %r8
callq 0xb4c22
leaq 0x1a5d(%rip), %rsi      # 0xb4ffe
movl $0x4, %ecx
movq %rbx, %rdi
xorl %edx, %edx
movq %r14, %r8
callq 0xb4e16
leaq 0x1c38(%rip), %rsi      # 0xb51f2
movl $0x4, %ecx
movq %rbx, %rdi
xorl %edx, %edx
movq %r14, %r8
callq 0xb500a
leaq 0x1e7b(%rip), %rsi      # 0xb544e
leaq 0x1ccda(%rip), %r8      # 0xd02b4
movl $0x9, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0xb5266
movabsq $0x9241907b5b8e8f1, %rax # imm = 0x9241907B5B8E8F1
movq %rax, 0x20(%rsp)
movq $0x2, 0x28(%rsp)
leaq 0x1cd12(%rip), %rax     # 0xd031a
movq %rax, 0x30(%rsp)
movw $0x0, 0x38(%rsp)
movups 0x20(%rsp), %xmm0
movups 0x30(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x207c(%rip), %rsi      # 0xb56aa
leaq 0x1cc89(%rip), %rcx     # 0xd02be
movl $0x5, %edx
movq %rbx, %rdi
callq 0xb5492
addq $0x170, %rsp            # imm = 0x170
popq %rbx
popq %r14
popq %rbp
retq
jmp 0xb36b8
jmp 0xb36b8
jmp 0xb36b8
movq %rax, %rbx
movq 0x50(%rsp), %rax
testq %rax, %rax
je 0xb36cf
leaq 0x40(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xb36cf
jmp 0xb36b8
movq %rax, %rbx
movq 0x98(%rsp), %rax
testq %rax, %rax
je 0xb36cf
leaq 0x88(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xb36cf
jmp 0xb36b8
movq %rax, %rbx
movq 0x70(%rsp), %rax
testq %rax, %rax
je 0xb36cf
leaq 0x60(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xb36cf
movq %rax, %rdi
callq 0x26e38
jmp 0xb36c4
jmp 0xb36c4
movq %rax, %rbx
movq %r14, %rdi
callq 0x36ac6
movq %rbx, %rdi
callq 0x11580