// File: /workspace/github_c_makefile_star2_O2/mattn[P]orelang/ore.c
// Function: main
int
main(int argc, char **argv) {
  int f = parse_args(argc, argv);
  if (f < 0) {
    usage(argv[0]);
    exit(1);
  }

  mpc_parser_t* m_true       = mpc_new("true");
  mpc_parser_t* m_false      = mpc_new("false");
  mpc_parser_t* m_nil        = mpc_new("nil");
  mpc_parser_t* m_number     = mpc_new("number");
  mpc_parser_t* m_factor     = mpc_new("factor");
  mpc_parser_t* m_string     = mpc_new("string");
  mpc_parser_t* m_array      = mpc_new("array");
  mpc_parser_t* m_pair       = mpc_new("pair");
  mpc_parser_t* m_hash       = mpc_new("hash");
  mpc_parser_t* m_regexp     = mpc_new("regexp");
  mpc_parser_t* m_ident      = mpc_new("ident");
  mpc_parser_t* m_cmp        = mpc_new("cmp");
  mpc_parser_t* m_term       = mpc_new("term");
  mpc_parser_t* m_value      = mpc_new("value");
  mpc_parser_t* m_item       = mpc_new("item");
  mpc_parser_t* m_prop       = mpc_new("prop");
  mpc_parser_t* m_lexp       = mpc_new("lexp");
  mpc_parser_t* m_leto       = mpc_new("let_o");
  mpc_parser_t* m_letv       = mpc_new("let_v");
  mpc_parser_t* m_leta       = mpc_new("let_a");
  mpc_parser_t* m_letp       = mpc_new("let_p");
  mpc_parser_t* m_if         = mpc_new("if");
  mpc_parser_t* m_ifstmt     = mpc_new("if_stmt");
  mpc_parser_t* m_elseif     = mpc_new("else_if");
  mpc_parser_t* m_else       = mpc_new("else");
  mpc_parser_t* m_while      = mpc_new("while");
  mpc_parser_t* m_forin      = mpc_new("for_in");
  mpc_parser_t* m_break      = mpc_new("break");
  mpc_parser_t* m_continue   = mpc_new("continue");
  mpc_parser_t* m_var        = mpc_new("var");
  mpc_parser_t* m_vararg     = mpc_new("vararg");
  mpc_parser_t* m_lambda     = mpc_new("lambda");
  mpc_parser_t* m_func       = mpc_new("func");
  mpc_parser_t* m_template   = mpc_new("template");
  mpc_parser_t* m_class      = mpc_new("class");
  mpc_parser_t* m_classext   = mpc_new("class_ext");
  mpc_parser_t* m_new        = mpc_new("new");
  mpc_parser_t* m_call       = mpc_new("call");
  mpc_parser_t* m_anoncall   = mpc_new("anoncall");
  mpc_parser_t* m_methodcall = mpc_new("methodcall");
  mpc_parser_t* m_return     = mpc_new("return");
  mpc_parser_t* m_comment    = mpc_new("comment");
  mpc_parser_t* m_eof        = mpc_new("eof");
  mpc_parser_t* m_stmt       = mpc_new("stmt");
  mpc_parser_t* m_stmts      = mpc_new("stmts");
  mpc_parser_t* m_program    = mpc_new("program");

#define NODES \
m_true,\
m_false,\
m_nil,\
m_number,\
m_factor,\
m_string,\
m_array,\
m_pair,\
m_hash,\
m_regexp,\
m_ident,\
m_cmp,\
m_term,\
m_lexp,\
m_value,\
m_item,\
m_prop,\
m_leto,\
m_leta,\
m_letv,\
m_letp,\
m_if,\
m_ifstmt,\
m_elseif,\
m_else,\
m_while,\
m_forin,\
m_break,\
m_continue,\
m_var,\
m_vararg,\
m_lambda,\
m_func,\
m_template,\
m_class,\
m_classext,\
m_new,\
m_call,\
m_anoncall,\
m_methodcall,\
m_return,\
m_comment,\
m_eof,\
m_stmt,\
m_stmts,\
m_program

  mpc_err_t* err = mpca_lang(MPCA_LANG_DEFAULT, STRUCTURE, NODES);
  if (err != NULL) {
    ore_err_print(err);
    mpc_err_delete(err);
    goto leave;
  }

  mpc_result_t result;
  ore_parse_context pc;
  pc.root = mpc_ast_new(">", "");
  pc.program = m_program;

  ore_context* ore = ore_new(NULL);
  ore_define_cfunc(ore, "dump_env", 0, 0, ore_cfunc_dump_env, NULL);
  ore_define_cfunc(ore, "to_string", 1, 1, ore_cfunc_to_string, NULL);
  ore_define_cfunc(ore, "print", 0, -1, ore_cfunc_print, NULL);
  ore_define_cfunc(ore, "println", 0, -1, ore_cfunc_println, NULL);
  ore_define_cfunc(ore, "puts", 0, -1, ore_cfunc_println, NULL);
  ore_define_cfunc(ore, "len", 1, 1, ore_cfunc_len, NULL);
  ore_define_cfunc(ore, "range", 1, 2, ore_cfunc_range, NULL);
  ore_define_cfunc(ore, "typeof", 1, 1, ore_cfunc_typeof, NULL);
  ore_define_cfunc(ore, "load", 1, 1, ore_cfunc_load, &pc);
  ore_define_cfunc(ore, "environ", 0, 1, ore_cfunc_environ, &pc);
  ore_define_cfunc(ore, "exit", 1, 1, ore_cfunc_exit, NULL);
  ore_array_t* args = kl_init(value);
  int i;
  for (i = f+1; i < argc; i++) {
    char* parg = strdup(argv[i]);
    if (!parg) {
      fprintf(stderr, "failed to allocate memory\n");
      exit(1);
    }
    *kl_pushp(value, args) = ore_value_str_from_ptr(ore, parg, -1);
  }
  ore_define(ore, "args", ore_value_array_from_klist(ore, args));

  if (f > 0) {
    if (!mpc_parse_contents(argv[f], m_program, &result)) {
      ore_err_print(result.error);
      mpc_err_delete(result.error);
    } else {
      if (verbose)
        mpc_ast_print(result.output);
      mpc_ast_add_child(pc.root, result.output);
      ore_eval(ore, result.output);
      mpc_ast_delete(result.output);
    }
  } else {
    char buf[BUFSIZ];
    while (1) {
      printf("> ");
      if (!fgets(buf, sizeof(buf), stdin)) {
        break;
      }
      int l = strlen(buf);
      if (l > 0 && buf[l-1] == '\n') { buf[l-1] = 0; l--; }
      if (l == 0) continue;
      if (!mpc_parse(argv[0], buf, m_stmt, &result)) {
        ore_err_print(result.error);
        mpc_err_delete(result.error);
        continue;
      }
      if (verbose)
        mpc_ast_print(result.output);
      ore_eval(ore, result.output);
      mpc_ast_add_child(pc.root, result.output);
    }
    mpc_ast_delete(pc.root);
  }
  ore_destroy(ore);

leave:
  mpc_cleanup(44, NODES);
  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x21f8, %rsp           # imm = 0x21F8
movslq %edi, %rcx
cmpl $0x2, %ecx
pushq $0x1
popq %rax
movl %edi, 0x2c(%rsp)
cmovgel %edi, %eax
pushq $0x1
popq %rdx
cmpq %rcx, %rdx
jge 0xcfcc
movq (%rsi,%rdx,8), %rdi
cmpb $0x2d, (%rdi)
jne 0xcfca
cmpb $0x76, 0x1(%rdi)
jne 0xda31
movl $0x1, 0xb243(%rip)      # 0x18208
incq %rdx
jmp 0xcfa3
movl %edx, %eax
xorl %ecx, %ecx
cmpl 0x2c(%rsp), %eax
je 0xcfde
movl %eax, %ecx
testl %eax, %eax
js 0xda31
movl %ecx, 0x28(%rsp)
movq %rsi, 0x50(%rsp)
leaq 0x3ac7(%rip), %rdi      # 0x10ab5
callq 0x395e
movq %rax, 0x40(%rsp)
leaq 0x3abb(%rip), %rdi      # 0x10aba
callq 0x395e
movq %rax, 0x130(%rsp)
leaq 0x3aad(%rip), %rdi      # 0x10ac0
callq 0x395e
movq %rax, 0x128(%rsp)
leaq 0x34b9(%rip), %rdi      # 0x104e0
callq 0x395e
movq %rax, 0x38(%rsp)
leaq 0x34d8(%rip), %rdi      # 0x10510
callq 0x395e
movq %rax, 0x110(%rsp)
leaq 0x4e2a(%rip), %rdi      # 0x11e76
callq 0x395e
movq %rax, 0x60(%rsp)
leaq 0x3a67(%rip), %rdi      # 0x10ac4
callq 0x395e
movq %rax, 0x150(%rsp)
leaq 0x3a59(%rip), %rdi      # 0x10aca
callq 0x395e
movq %rax, 0x30(%rsp)
leaq 0x3a4d(%rip), %rdi      # 0x10acf
callq 0x395e
movq %rax, 0x148(%rsp)
leaq 0x3a3e(%rip), %rdi      # 0x10ad4
callq 0x395e
movq %rax, 0x58(%rsp)
leaq 0x3a03(%rip), %rdi      # 0x10aaa
callq 0x395e
movq %rax, 0x20(%rsp)
leaq 0x3a23(%rip), %rdi      # 0x10adb
callq 0x395e
movq %rax, 0x140(%rsp)
leaq 0x343f(%rip), %rdi      # 0x1050b
callq 0x395e
movq %rax, 0x138(%rsp)
leaq 0x39ff(%rip), %rdi      # 0x10adf
callq 0x395e
movq %rax, 0x120(%rsp)
leaq 0x39f1(%rip), %rdi      # 0x10ae5
callq 0x395e
movq %rax, 0x118(%rsp)
leaq 0x39e2(%rip), %rdi      # 0x10aea
callq 0x395e
movq %rax, 0x108(%rsp)
leaq 0x39d3(%rip), %rdi      # 0x10aef
callq 0x395e
movq %rax, 0x100(%rsp)
leaq 0x39c4(%rip), %rdi      # 0x10af4
callq 0x395e
movq %rax, 0xf8(%rsp)
leaq 0x39b6(%rip), %rdi      # 0x10afa
callq 0x395e
movq %rax, 0xf0(%rsp)
leaq 0x39a8(%rip), %rdi      # 0x10b00
callq 0x395e
movq %rax, 0xe8(%rsp)
leaq 0x399a(%rip), %rdi      # 0x10b06
callq 0x395e
movq %rax, 0xe0(%rsp)
leaq 0x3999(%rip), %rdi      # 0x10b19
callq 0x395e
movq %rax, 0xd8(%rsp)
leaq 0x3978(%rip), %rdi      # 0x10b0c
callq 0x395e
movq %rax, 0xd0(%rsp)
leaq 0x396c(%rip), %rdi      # 0x10b14
callq 0x395e
movq %rax, 0xc8(%rsp)
leaq 0x3960(%rip), %rdi      # 0x10b1c
callq 0x395e
movq %rax, 0xc0(%rsp)
leaq 0x3951(%rip), %rdi      # 0x10b21
callq 0x395e
movq %rax, 0xb8(%rsp)
leaq 0x3943(%rip), %rdi      # 0x10b27
callq 0x395e
movq %rax, 0xb0(%rsp)
leaq 0x3936(%rip), %rdi      # 0x10b2e
callq 0x395e
movq %rax, 0x18(%rsp)
leaq 0x392b(%rip), %rdi      # 0x10b34
callq 0x395e
movq %rax, 0x10(%rsp)
leaq 0x3923(%rip), %rdi      # 0x10b3d
callq 0x395e
movq %rax, 0xa8(%rsp)
leaq 0x3875(%rip), %rdi      # 0x10aa3
callq 0x395e
movq %rax, 0xa0(%rsp)
leaq 0x38ff(%rip), %rdi      # 0x10b41
callq 0x395e
movq %rax, 0x98(%rsp)
leaq 0x38f2(%rip), %rdi      # 0x10b48
callq 0x395e
movq %rax, 0x90(%rsp)
leaq 0x38e3(%rip), %rdi      # 0x10b4d
callq 0x395e
movq %rax, 0x88(%rsp)
leaq 0x38d8(%rip), %rdi      # 0x10b56
callq 0x395e
movq %rax, 0x8(%rsp)
leaq 0x38cd(%rip), %rdi      # 0x10b5c
callq 0x395e
movq %rax, 0x80(%rsp)
leaq 0x38c3(%rip), %rdi      # 0x10b66
callq 0x395e
movq %rax, 0x78(%rsp)
leaq 0x38c5(%rip), %rdi      # 0x10b79
callq 0x395e
movq %rax, 0x70(%rsp)
leaq 0x38a5(%rip), %rdi      # 0x10b6a
callq 0x395e
movq %rax, 0x68(%rsp)
leaq 0x389d(%rip), %rdi      # 0x10b73
callq 0x395e
movq %rax, %r15
leaq 0x3320(%rip), %rdi      # 0x10605
callq 0x395e
movq %rax, %r13
leaq 0x388a(%rip), %rdi      # 0x10b7e
callq 0x395e
movq %rax, %rbp
leaq 0x4b94(%rip), %rdi      # 0x11e97
callq 0x395e
movq %rax, %rbx
leaq 0x37fd(%rip), %rdi      # 0x10b0f
callq 0x395e
movq %rax, %r14
leaq 0x3865(%rip), %rdi      # 0x10b86
callq 0x395e
movq %rax, %r12
leaq 0x385c(%rip), %rdi      # 0x10b8c
callq 0x395e
movq %rax, %r10
movq %rax, 0x48(%rsp)
leaq 0x3850(%rip), %rsi      # 0x10b94
xorl %edi, %edi
movq 0x40(%rsp), %rdx
movq 0x130(%rsp), %rcx
movq 0x128(%rsp), %r8
movq 0x38(%rsp), %r9
xorl %eax, %eax
pushq %r10
movq %r12, 0x170(%rsp)
pushq %r12
movq 0x40(%rsp), %r12
movq %r14, 0x168(%rsp)
pushq %r14
movq 0x78(%rsp), %r14
movq %rbx, 0x188(%rsp)
pushq %rbx
movq %rbp, 0x198(%rsp)
pushq %rbp
movq %r13, 0x1a8(%rsp)
pushq %r13
movq 0x178(%rsp), %rbx
movq %r15, 0x1b8(%rsp)
pushq %r15
movq 0x170(%rsp), %r10
pushq 0xa0(%rsp)
pushq 0xb0(%rsp)
pushq 0xc0(%rsp)
pushq 0xd0(%rsp)
pushq 0x60(%rsp)
pushq 0xe8(%rsp)
movq 0x1b8(%rsp), %r11
pushq 0xf8(%rsp)
pushq 0x108(%rsp)
pushq 0x118(%rsp)
pushq 0x128(%rsp)
pushq 0x98(%rsp)
pushq 0xa8(%rsp)
pushq 0x148(%rsp)
pushq 0x158(%rsp)
pushq 0x168(%rsp)
pushq 0x178(%rsp)
pushq 0x188(%rsp)
pushq 0x198(%rsp)
pushq 0x1a8(%rsp)
pushq 0x1c0(%rsp)
pushq 0x1c0(%rsp)
pushq 0x1d8(%rsp)
pushq 0x1f0(%rsp)
pushq 0x208(%rsp)
pushq 0x218(%rsp)
pushq 0x200(%rsp)
pushq %r10
pushq 0x250(%rsp)
pushq 0x138(%rsp)
movq 0x178(%rsp), %r10
movq %r10, %rbp
pushq %r10
pushq %rbx
pushq %r12
pushq %r11
pushq %r14
pushq 0x258(%rsp)
callq 0x7746
addq $0x150, %rsp            # imm = 0x150
testq %rax, %rax
movq 0x48(%rsp), %r13
je 0xd4ed
movq %rax, %rbx
movq %rax, %rdi
callq 0xda7a
movq %rbx, %rdi
callq 0x23bc
movq 0x20(%rsp), %r11
movq 0x40(%rsp), %rsi
movq 0x18(%rsp), %r13
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %r15
movq %rbp, %r10
movq 0x38(%rsp), %r8
jmp 0xd8f8
leaq 0x3217(%rip), %rdi      # 0x1070b
leaq 0x31cd(%rip), %rsi      # 0x106c8
callq 0x61f1
leaq 0x190(%rsp), %r12
movq %rax, (%r12)
movq %r13, 0x8(%r12)
xorl %edi, %edi
callq 0xaca5
movq %rax, %r14
leaq 0x4948(%rip), %rsi      # 0x11e6a
leaq 0x595(%rip), %r8        # 0xdabe
movq %rax, %rdi
xorl %edx, %edx
xorl %ecx, %ecx
xorl %r9d, %r9d
callq 0xad61
leaq 0x4934(%rip), %rsi      # 0x11e73
leaq 0x69e(%rip), %r8        # 0xdbe4
pushq $0x1
popq %rbp
movq %r14, %rdi
movl %ebp, %edx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0xad61
leaq 0x491e(%rip), %rsi      # 0x11e7d
leaq 0x6c5(%rip), %r8        # 0xdc2b
pushq $-0x1
popq %r15
movq %r14, %rdi
xorl %edx, %edx
movl %r15d, %ecx
xorl %r9d, %r9d
callq 0xad61
leaq 0x4902(%rip), %rsi      # 0x11e83
leaq -0x2f9d(%rip), %rbx     # 0xa5eb
movq %r14, %rdi
xorl %edx, %edx
movl %r15d, %ecx
movq %rbx, %r8
xorl %r9d, %r9d
callq 0xad61
leaq 0x48e9(%rip), %rsi      # 0x11e8b
movq %r14, %rdi
xorl %edx, %edx
movl %r15d, %ecx
movq %rbx, %r8
xorl %r9d, %r9d
callq 0xad61
leaq 0x48d4(%rip), %rsi      # 0x11e90
leaq 0x711(%rip), %r8        # 0xdcd4
movq %r14, %rdi
movl %ebp, %edx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0xad61
leaq 0x2f43(%rip), %rsi      # 0x1051c
leaq 0x794(%rip), %r8        # 0xdd74
pushq $0x2
popq %rcx
movq %r14, %rdi
movl %ebp, %edx
xorl %r9d, %r9d
callq 0xad61
leaq 0x489d(%rip), %rsi      # 0x11e94
leaq 0x839(%rip), %r8        # 0xde37
movq %r14, %rdi
movl %ebp, %edx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0xad61
leaq 0x4887(%rip), %rsi      # 0x11e9b
leaq 0x863(%rip), %r8        # 0xde7e
movq %r14, %rdi
movl %ebp, %edx
movl %ebp, %ecx
movq %r12, %r9
callq 0xad61
leaq 0x486f(%rip), %rsi      # 0x11ea0
leaq 0x90f(%rip), %r8        # 0xdf47
movq %r14, %rdi
xorl %edx, %edx
movl %ebp, %ecx
movq %r12, %r9
callq 0xad61
leaq 0x485a(%rip), %rsi      # 0x11ea8
leaq 0xa21(%rip), %r8        # 0xe076
movq %r14, %rdi
movl %ebp, %edx
movl %ebp, %ecx
xorl %r9d, %r9d
callq 0xad61
callq 0xb0dd
movq %rax, %rbp
movl 0x28(%rsp), %r12d
leaq 0x1f0(%rsp), %r15
movq %r12, 0x160(%rsp)
leal 0x1(%r12), %eax
cmpl 0x2c(%rsp), %eax
jge 0xd6f3
movq 0x50(%rsp), %rax
movq 0x8(%rax,%r12,8), %rdi
callq 0x2270
testq %rax, %rax
je 0xda3b
movq %rax, %rbx
movq %rbp, %rdi
callq 0xb123
movq %rax, %r13
movq %r15, %rdi
movq %r14, %rsi
movq %rbx, %rdx
pushq $-0x1
popq %rcx
callq 0xe0cb
movq 0x210(%rsp), %rax
movq %rax, 0x20(%r13)
movups 0x1f0(%rsp), %xmm0
movups 0x200(%rsp), %xmm1
movups %xmm1, 0x10(%r13)
movups %xmm0, (%r13)
incq %r12
movq 0x48(%rsp), %r13
jmp 0xd681
leaq 0x1c8(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0xb14a
subq $0x30, %rsp
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x4780(%rip), %rsi      # 0x11ead
movq %r14, %rdi
callq 0xaad0
addq $0x30, %rsp
cmpl $0x0, 0x28(%rsp)
je 0xd7c6
movq 0x50(%rsp), %rax
movq 0x160(%rsp), %rcx
movq (%rax,%rcx,8), %rdi
movq %rsp, %rdx
movq %r13, %rsi
callq 0x378a
testl %eax, %eax
je 0xd8ae
cmpl $0x0, 0xaa99(%rip)      # 0x18208
movq 0x30(%rsp), %r12
movq 0x20(%rsp), %rbp
movq 0x18(%rsp), %r13
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %r15
je 0xd793
movq (%rsp), %rdi
callq 0x651f
movq 0x190(%rsp), %rdi
movq (%rsp), %rsi
callq 0x6348
movq (%rsp), %rdx
leaq 0x1f0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq (%rsp), %rdi
callq 0x61a1
jmp 0xd8d9
leaq 0x46e5(%rip), %rbx      # 0x11eb2
movq 0xa7fc(%rip), %r15      # 0x17fd0
leaq 0x1f0(%rsp), %r13
movq %rsp, %rbp
leaq 0x1a0(%rsp), %r12
movq %rbx, %rdi
xorl %eax, %eax
callq 0x20e0
movq (%r15), %rdx
movq %r13, %rdi
movl $0x2000, %esi           # imm = 0x2000
callq 0x2130
testq %rax, %rax
je 0xd89f
movq %r13, %rdi
callq 0x20c0
testl %eax, %eax
jle 0xd82e
movl %eax, %ecx
decl %ecx
cmpb $0xa, 0x1f0(%rsp,%rcx)
jne 0xd832
movb $0x0, 0x1f0(%rsp,%rcx)
decl %eax
testl %eax, %eax
je 0xd7e7
movq 0x50(%rsp), %rax
movq (%rax), %rdi
movq %r13, %rsi
movq 0x158(%rsp), %rdx
movq %rbp, %rcx
callq 0x34c7
testl %eax, %eax
je 0xd888
cmpl $0x0, 0xa9b0(%rip)      # 0x18208
je 0xd863
movq (%rsp), %rdi
callq 0x651f
movq (%rsp), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x190(%rsp), %rdi
movq (%rsp), %rsi
callq 0x6348
jmp 0xd7e7
movq (%rsp), %rdi
callq 0xda7a
movq (%rsp), %rdi
callq 0x23bc
jmp 0xd7e7
movq 0x190(%rsp), %rdi
callq 0x61a1
jmp 0xd8c0
movq (%rsp), %rdi
callq 0xda7a
movq (%rsp), %rdi
callq 0x23bc
movq 0x30(%rsp), %r12
movq 0x20(%rsp), %rbp
movq 0x18(%rsp), %r13
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %r15
movq %r14, %rdi
callq 0xcf07
movq 0x58(%rsp), %r10
movq 0x38(%rsp), %r8
movq 0x60(%rsp), %r14
movq 0x40(%rsp), %rsi
movq %rbp, %r11
subq $0x8, %rsp
pushq $0x2c
popq %rdi
movq 0x138(%rsp), %rdx
movq 0x130(%rsp), %rcx
movq 0x118(%rsp), %r9
xorl %eax, %eax
pushq 0x50(%rsp)
pushq 0x178(%rsp)
pushq 0x170(%rsp)
pushq 0x190(%rsp)
pushq 0x1a0(%rsp)
pushq 0x1b0(%rsp)
pushq 0x1c0(%rsp)
pushq 0xa8(%rsp)
pushq 0xb8(%rsp)
pushq 0xc8(%rsp)
pushq 0xd8(%rsp)
pushq %r15
pushq 0xf0(%rsp)
pushq 0x100(%rsp)
pushq 0x110(%rsp)
pushq 0x120(%rsp)
pushq 0x130(%rsp)
pushq %rbx
pushq %r13
pushq 0x150(%rsp)
pushq 0x160(%rsp)
pushq 0x170(%rsp)
pushq 0x180(%rsp)
pushq 0x190(%rsp)
pushq 0x1a0(%rsp)
pushq 0x1b0(%rsp)
pushq 0x1c8(%rsp)
pushq 0x1c8(%rsp)
pushq 0x1e0(%rsp)
pushq 0x1f8(%rsp)
pushq 0x210(%rsp)
pushq 0x220(%rsp)
pushq 0x208(%rsp)
pushq 0x248(%rsp)
pushq 0x258(%rsp)
pushq %r11
pushq %r10
pushq 0x278(%rsp)
pushq %r12
pushq 0x290(%rsp)
pushq %r14
callq 0x3cc2
addq $0x150, %rsp            # imm = 0x150
xorl %eax, %eax
addq $0x21f8, %rsp           # imm = 0x21F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq (%rsi), %rdi
callq 0xda5f
jmp 0xda57
movq 0xa5b6(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x2ffa(%rip), %rdi      # 0x10a46
pushq $0x1a
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
pushq $0x1
popq %rdi
callq 0x2250