// File: /workspace/github_cpp_makefile_star2_O3/theanarkh[P]js_runtime_loader/core/loader.cc
// Function: No::Loader::Compile(v8::FunctionCallbackInfo<v8::Value> const&)
void No::Loader::Compile(V8_ARGS) {
    V8_ISOLATE
    V8_CONTEXT
    String::Utf8Value filename(isolate, args[0].As<String>());
    int fd = open(*filename, 0 , O_RDONLY);
    std::string content;
    char buffer[4096];
    while (1)
    {
      memset(buffer, 0, 4096);
      int ret = read(fd, buffer, 4096);
      if (ret == -1) {
        return args.GetReturnValue().Set(newStringToLcal(isolate, "read file error"));
      }
      if (ret == 0) {
        break;
      }
      content.append(buffer, ret);
    }
    close(fd);
    ScriptCompiler::Source script_source(newStringToLcal(isolate, content.c_str()));
    Local<String> params[] = {
      newStringToLcal(isolate, "require"),
      newStringToLcal(isolate, "exports"),
      newStringToLcal(isolate, "module"),
    };
    MaybeLocal<Function> fun =
    ScriptCompiler::CompileFunctionInContext(context, &script_source, 3, params, 0, nullptr);
    if (fun.IsEmpty()) {
      args.GetReturnValue().Set(Undefined(isolate));
    } else {
      args.GetReturnValue().Set(fun.ToLocalChecked());
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1098, %rsp           # imm = 0x1098
movq %rdi, %r14
movq (%rdi), %rax
movq 0x8(%rax), %rbx
movq %rbx, %rdi
callq 0x100200
cmpl $0x0, 0x10(%r14)
movq %rax, -0x50(%rbp)
jle 0xf010b
movq 0x8(%r14), %rdx
jmp 0xf0117
movq (%r14), %rax
movl $0xa0, %edx
addq 0x8(%rax), %rdx
leaq -0x60(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x12d4f0
movq (%r15), %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0xe6600
movl %eax, %r12d
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq -0x10c0(%rbp), %r13
leaq -0x48(%rbp), %r15
movl $0x1000, %edx           # imm = 0x1000
movq %r13, %rdi
xorl %esi, %esi
callq 0xe63e0
movl $0x1000, %edx           # imm = 0x1000
movl %r12d, %edi
movq %r13, %rsi
callq 0xe6ae0
testl %eax, %eax
je 0xf01b6
cmpl $-0x1, %eax
je 0xf018d
movslq %eax, %rdx
movq %r15, %rdi
movq %r13, %rsi
callq 0xe6440
jmp 0xf0155
movq (%r14), %r14
leaq 0xdf3e76(%rip), %rsi    # 0xee400d
movq %rbx, %rdi
xorl %edx, %edx
callq 0xf0528
testq %rax, %rax
je 0xf02cc
movq (%rax), %rax
movq %rax, 0x18(%r14)
jmp 0xf0298
movl %r12d, %edi
callq 0xe6290
movq -0x48(%rbp), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xf0528
leaq -0x90(%rbp), %r12
movq %rax, -0x30(%r12)
movq $0x0, -0x28(%r12)
movl $0x0, -0x18(%r12)
leaq -0x88(%rbp), %r13
xorps %xmm0, %xmm0
movups %xmm0, -0x18(%r13)
movups %xmm0, -0x8(%r13)
leaq 0xdf3e18(%rip), %rsi    # 0xee401d
movq %rbx, %rdi
xorl %edx, %edx
callq 0xf0528
movq %rax, -0x80(%rbp)
leaq 0xdf3e0b(%rip), %rsi    # 0xee4025
movq %rbx, %rdi
xorl %edx, %edx
callq 0xf0528
movq %rax, -0x78(%rbp)
leaq 0xe0a9fa(%rip), %rsi    # 0xefac29
xorl %r15d, %r15d
movq %rbx, %rdi
xorl %edx, %edx
callq 0xf0528
leaq -0x80(%rbp), %rcx
movq %rax, 0x10(%rcx)
subq $0x8, %rsp
leaq -0xc0(%rbp), %rsi
movl $0x3, %edx
movq -0x50(%rbp), %rdi
xorl %r8d, %r8d
xorl %r9d, %r9d
pushq $0x0
pushq %r15
pushq %r15
callq 0x100e40
addq $0x20, %rsp
movq (%r14), %rcx
testq %rax, %rax
jne 0xf0281
addq $0xa0, %rbx
je 0xf02d5
movq %rbx, %rax
movq (%rax), %rax
movq %rax, 0x18(%rcx)
movq %r13, %rdi
callq 0xf039e
movq %r12, %rdi
callq 0xf03d2
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xf02b1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0xe6110
leaq -0x60(%rbp), %rdi
callq 0x12d720
addq $0x1098, %rsp           # imm = 0x1098
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x10(%r14), %rax
jmp 0xf01ad
leaq 0x10(%rcx), %rax
jmp 0xf0281
jmp 0xf02e8
jmp 0xf02fd
jmp 0xf02fd
jmp 0xf02fd
movq %rax, %rbx
jmp 0xf0319
movq %rax, %rbx
movq %r13, %rdi
callq 0xf039e
movq %r12, %rdi
callq 0xf03d2
jmp 0xf0300
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0xf0319
movq -0x38(%rbp), %rsi
incq %rsi
callq 0xe6110
leaq -0x60(%rbp), %rdi
callq 0x12d720
movq %rbx, %rdi
callq 0xe6940