// File: /workspace/github_cpp_makefile_star2_O3/Heptagon196[P]Gos/main.cpp
// Function: main
int main(int argc, char* argv[]) {
    reflIO();
    Gos::FileSystem::AddDirectory("Test");
    Gos::GosProject prj;
    // prj.AddScript(name);
    prj.ScanDirectory();
    ReflMgr::Instance().New("Lambda").Invoke("main")({ SharedObject::New<int>(2333) });
    /*
    const char* name;
    if (argc > 1) {
        name = argv[1];
    } else {
        name = "Lambda.gos";
    }
    std::ifstream fin;
    fin.open(name);
    Gos::GosScript script;
    script.Read(fin, name);
    fin.close();
    script.PrintIR(std::cout);
    script.Execute();
    auto f = script.CreateInstance().Invoke("main", {});
    f({ SharedObject::New<int>(1) });
    f({ SharedObject::New<int>(2) });
    f({ SharedObject::New<int>(3) });
    ReflMgr::Instance().InvokeStatic(TypeID::getRaw("Lambda"), "Greatings", {});
    */
    return 0;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x248, %rsp            # imm = 0x248
callq 0xb3284
leaq 0x1c9b0(%rip), %rsi     # 0xd02c9
leaq 0xb0(%rsp), %rbx
movq %rbx, %rdi
movl $0x2, %edx
callq 0xb5724
movq %rbx, %rdi
callq 0xb0e0c
leaq 0xb0(%rsp), %rdi
callq 0xaf2ce
leaq 0x1b0(%rsp), %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 0x1c0(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
leaq 0x40(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x97e0(%rip), %rsi      # 0xbd179
leaq 0x97da(%rip), %rdx      # 0xbd17a
leaq 0x30(%rsp), %rdi
callq 0x27370
leaq 0x90(%rsp), %rdx
xorps %xmm0, %xmm0
movaps %xmm0, (%rdx)
leaq 0x6ca5(%rip), %rax      # 0xba664
movq %rax, 0x18(%rdx)
leaq 0x6ca0(%rip), %rax      # 0xba66a
movq %rax, 0x10(%rdx)
leaq 0x180(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xaed84
movq 0xa0(%rsp), %rax
testq %rax, %rax
je 0xb39ff
leaq 0x90(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3a16
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x11360
callq 0x227b2
xorps %xmm0, %xmm0
leaq 0x70(%rsp), %r8
movaps %xmm0, (%r8)
movq $0x0, 0x10(%r8)
leaq 0x1c898(%rip), %rcx     # 0xd02ce
leaq 0x110(%rsp), %rdi
movl $0x6, %edx
movq %rax, %rsi
callq 0x23348
leaq 0x50(%rsp), %r8
xorps %xmm0, %xmm0
movaps %xmm0, (%r8)
movq $0x0, 0x10(%r8)
leaq 0x1c86f(%rip), %rcx     # 0xd02d5
leaq 0x148(%rsp), %rdi
leaq 0x110(%rsp), %rsi
movl $0x4, %edx
callq 0x1904c
leaq 0x2c(%rsp), %rsi
movl $0x91d, (%rsi)          # imm = 0x91D
leaq 0xd8(%rsp), %rdi
callq 0x87c4c
leaq 0x1e8(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x18b5c
leaq 0x10(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
leaq 0xf(%rsp), %rcx
movl $0x1, %edx
callq 0x26d36
leaq 0x210(%rsp), %rdi
leaq 0x148(%rsp), %rsi
leaq 0x10(%rsp), %rdx
callq 0x1a446
leaq 0x210(%rsp), %rdi
callq 0x1c65c
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb3b07
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0xd8(%rsp), %rdi
callq 0x1c65c
leaq 0x148(%rsp), %rdi
callq 0x1c65c
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xb3b38
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x110(%rsp), %rdi
callq 0x1c65c
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xb3b5f
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x1b8(%rsp), %rdi
callq 0xb57ac
leaq 0x180(%rsp), %rdi
callq 0xb5824
xorl %eax, %eax
addq $0x248, %rsp            # imm = 0x248
popq %rbx
popq %r14
retq
jmp 0xb3c4d
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xb3bac
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
jmp 0xb3bac
jmp 0xb3ba9
movq %rax, %rbx
leaq 0xd8(%rsp), %rdi
callq 0x1c65c
jmp 0xb3bbe
movq %rax, %rbx
leaq 0x148(%rsp), %rdi
callq 0x1c65c
jmp 0xb3bd0
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0xb3be7
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
leaq 0x110(%rsp), %rdi
callq 0x1c65c
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0xb3c58
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x11360
jmp 0xb3c58
movq %rax, %rbx
jmp 0xb3bf4
jmp 0xb3c55
movq %rax, %rbx
movq 0xa0(%rsp), %rax
testq %rax, %rax
je 0xb3c39
leaq 0x90(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3c58
movq 0x40(%rsp), %rsi
incq %rsi
jmp 0xb3c09
movq %rax, %rdi
callq 0x26e38
movq %rax, %rbx
leaq 0x1b8(%rsp), %rdi
callq 0xb57ac
leaq 0x180(%rsp), %rdi
callq 0xb5824
movq %rbx, %rdi
callq 0x11580
movq %rax, %rbx
leaq 0xb0(%rsp), %rdi
callq 0xaf2ce
jmp 0xb3c72