// File: /workspace/github_c_makefile_star2_O1/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 $0x2208, %rsp           # imm = 0x2208
movl $0x1, %eax
cmpl $0x2, %edi
jl 0xf02f
movl %edi, %ecx
movl $0x1, %eax
movq (%rsi,%rax,8), %rdx
cmpb $0x2d, (%rdx)
jne 0xf02f
cmpb $0x76, 0x1(%rdx)
jne 0xfb12
movl $0x1, 0xd1e3(%rip)      # 0x1c208
incq %rax
cmpq %rax, %rcx
jne 0xf008
movl %ecx, %eax
xorl %ecx, %ecx
cmpl %edi, %eax
cmovnel %eax, %ecx
movl %edi, 0x3c(%rsp)
movq %rsi, 0x48(%rsp)
movq %rcx, 0x68(%rsp)
testl %ecx, %ecx
js 0xff9c
leaq 0x5b12(%rip), %rdi      # 0x14b65
callq 0x45d9
movq %rax, 0x60(%rsp)
leaq 0x5b06(%rip), %rdi      # 0x14b6a
callq 0x45d9
movq %rax, 0x130(%rsp)
leaq 0x5af8(%rip), %rdi      # 0x14b70
callq 0x45d9
movq %rax, 0x58(%rsp)
leaq 0x5457(%rip), %rdi      # 0x144e0
callq 0x45d9
movq %rax, 0x120(%rsp)
leaq 0x5473(%rip), %rdi      # 0x14510
callq 0x45d9
movq %rax, 0x110(%rsp)
leaq 0x6e75(%rip), %rdi      # 0x15f26
callq 0x45d9
movq %rax, 0x40(%rsp)
leaq 0x5ab2(%rip), %rdi      # 0x14b74
callq 0x45d9
movq %rax, 0x168(%rsp)
leaq 0x5aa4(%rip), %rdi      # 0x14b7a
callq 0x45d9
movq %rax, 0x160(%rsp)
leaq 0x5a95(%rip), %rdi      # 0x14b7f
callq 0x45d9
movq %rax, 0x158(%rsp)
leaq 0x5a86(%rip), %rdi      # 0x14b84
callq 0x45d9
movq %rax, 0x150(%rsp)
leaq 0x5a48(%rip), %rdi      # 0x14b5a
callq 0x45d9
movq %rax, 0x148(%rsp)
leaq 0x5a65(%rip), %rdi      # 0x14b8b
callq 0x45d9
movq %rax, 0x140(%rsp)
leaq 0x53d1(%rip), %rdi      # 0x1450b
callq 0x45d9
movq %rax, 0x138(%rsp)
leaq 0x5a41(%rip), %rdi      # 0x14b8f
callq 0x45d9
movq %rax, 0x128(%rsp)
leaq 0x5a33(%rip), %rdi      # 0x14b95
callq 0x45d9
movq %rax, 0x118(%rsp)
leaq 0x5a24(%rip), %rdi      # 0x14b9a
callq 0x45d9
movq %rax, 0x108(%rsp)
leaq 0x5a15(%rip), %rdi      # 0x14b9f
callq 0x45d9
movq %rax, 0x100(%rsp)
leaq 0x5a06(%rip), %rdi      # 0x14ba4
callq 0x45d9
movq %rax, 0xf8(%rsp)
leaq 0x59f8(%rip), %rdi      # 0x14baa
callq 0x45d9
movq %rax, 0xf0(%rsp)
leaq 0x59ea(%rip), %rdi      # 0x14bb0
callq 0x45d9
movq %rax, 0xe8(%rsp)
leaq 0x59dc(%rip), %rdi      # 0x14bb6
callq 0x45d9
movq %rax, 0xe0(%rsp)
leaq 0x59db(%rip), %rdi      # 0x14bc9
callq 0x45d9
movq %rax, 0xd8(%rsp)
leaq 0x59ba(%rip), %rdi      # 0x14bbc
callq 0x45d9
movq %rax, 0xd0(%rsp)
leaq 0x59ae(%rip), %rdi      # 0x14bc4
callq 0x45d9
movq %rax, 0xc8(%rsp)
leaq 0x59a2(%rip), %rdi      # 0x14bcc
callq 0x45d9
movq %rax, 0xc0(%rsp)
leaq 0x5993(%rip), %rdi      # 0x14bd1
callq 0x45d9
movq %rax, 0x30(%rsp)
leaq 0x5988(%rip), %rdi      # 0x14bd7
callq 0x45d9
movq %rax, 0xb8(%rsp)
leaq 0x597b(%rip), %rdi      # 0x14bde
callq 0x45d9
movq %rax, 0x28(%rsp)
leaq 0x5970(%rip), %rdi      # 0x14be4
callq 0x45d9
movq %rax, 0xb0(%rsp)
leaq 0x5965(%rip), %rdi      # 0x14bed
callq 0x45d9
movq %rax, 0xa8(%rsp)
leaq 0x58b7(%rip), %rdi      # 0x14b53
callq 0x45d9
movq %rax, 0xa0(%rsp)
leaq 0x5941(%rip), %rdi      # 0x14bf1
callq 0x45d9
movq %rax, 0x98(%rsp)
leaq 0x5934(%rip), %rdi      # 0x14bf8
callq 0x45d9
movq %rax, 0x90(%rsp)
leaq 0x5925(%rip), %rdi      # 0x14bfd
callq 0x45d9
movq %rax, 0x88(%rsp)
leaq 0x591a(%rip), %rdi      # 0x14c06
callq 0x45d9
movq %rax, 0x20(%rsp)
leaq 0x590f(%rip), %rdi      # 0x14c0c
callq 0x45d9
movq %rax, 0x18(%rsp)
leaq 0x5908(%rip), %rdi      # 0x14c16
callq 0x45d9
movq %rax, 0x80(%rsp)
leaq 0x5907(%rip), %rdi      # 0x14c29
callq 0x45d9
movq %rax, 0x78(%rsp)
leaq 0x58e7(%rip), %rdi      # 0x14c1a
callq 0x45d9
movq %rax, 0x70(%rsp)
leaq 0x58df(%rip), %rdi      # 0x14c23
callq 0x45d9
movq %rax, %r14
leaq 0x52b4(%rip), %rdi      # 0x14607
callq 0x45d9
movq %rax, %r13
leaq 0x58cc(%rip), %rdi      # 0x14c2e
callq 0x45d9
movq %rax, %r15
leaq 0x6bd6(%rip), %rdi      # 0x15f47
callq 0x45d9
movq %rax, %rbx
leaq 0x583f(%rip), %rdi      # 0x14bbf
callq 0x45d9
movq %rax, %rbp
leaq 0x58a7(%rip), %rdi      # 0x14c36
callq 0x45d9
movq %rax, %r12
leaq 0x589e(%rip), %rdi      # 0x14c3c
callq 0x45d9
movq %rax, %r10
leaq 0x5897(%rip), %rsi      # 0x14c44
xorl %edi, %edi
movq 0x60(%rsp), %rdx
movq 0x130(%rsp), %rcx
movq 0x58(%rsp), %r8
movq 0x120(%rsp), %r9
xorl %eax, %eax
movq %r10, 0x50(%rsp)
pushq %r10
movq %r12, 0x180(%rsp)
pushq %r12
movq 0x50(%rsp), %r12
movq %rbp, 0x180(%rsp)
pushq %rbp
movq 0x168(%rsp), %rbp
movq %rbx, 0x198(%rsp)
pushq %rbx
movq %r15, 0x1a8(%rsp)
pushq %r15
movq 0x190(%rsp), %r10
movq %r13, 0x1b8(%rsp)
pushq %r13
movq 0x188(%rsp), %rbx
movq %r14, 0x1c8(%rsp)
pushq %r14
movq 0x160(%rsp), %r14
movq 0x198(%rsp), %r11
pushq 0xa8(%rsp)
pushq 0xb8(%rsp)
pushq 0xc8(%rsp)
pushq 0x68(%rsp)
pushq 0x78(%rsp)
pushq 0xe8(%rsp)
pushq 0xf8(%rsp)
pushq 0x108(%rsp)
pushq 0x118(%rsp)
pushq 0x128(%rsp)
pushq 0x138(%rsp)
pushq 0xb8(%rsp)
pushq 0x150(%rsp)
pushq 0xd0(%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 %r14
pushq 0x200(%rsp)
pushq 0x240(%rsp)
pushq 0x250(%rsp)
pushq 0x260(%rsp)
pushq %rbp
pushq %rbx
pushq %r11
pushq %r10
pushq %r12
pushq 0x258(%rsp)
callq 0x997f
addq $0x150, %rsp            # imm = 0x150
testq %rax, %rax
je 0xf54f
movq %rax, %rbx
movq %rax, %rdi
callq 0xffb3
movq %rbx, %rdi
callq 0x2b1c
movq 0x60(%rsp), %rsi
movq 0x58(%rsp), %rcx
movq 0x30(%rsp), %r15
movq 0x28(%rsp), %rbp
movq 0x20(%rsp), %r14
movq 0x18(%rsp), %r13
jmp 0xfe52
leaq 0x51b7(%rip), %rdi      # 0x1470d
leaq 0x516d(%rip), %rsi      # 0x146ca
callq 0x7a30
leaq 0x1a0(%rsp), %r15
movq %rax, (%r15)
movq 0x50(%rsp), %rax
movq %rax, 0x8(%r15)
xorl %r14d, %r14d
xorl %edi, %edi
callq 0xd863
movq %rax, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl $0x9, %ebp
movl %ebp, 0x200(%rsp)
movq %rax, 0x208(%rsp)
movq %r14, 0x210(%rsp)
leaq 0xa36(%rip), %rax       # 0xfff7
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x6928(%rip), %rsi      # 0x15f1a
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movabsq $0x100000001, %rax      # imm = 0x100000001
movq %rax, 0x210(%rsp)
leaq 0xae6(%rip), %rax       # 0x10127
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x68b1(%rip), %rsi      # 0x15f23
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movabsq $-0x100000000, %r12     # imm = 0xFFFFFFFF00000000
movq %r12, 0x210(%rsp)
leaq 0xaaf(%rip), %rax       # 0x10170
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x683b(%rip), %rsi      # 0x15f2d
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movq %r12, 0x210(%rsp)
leaq -0x28a5(%rip), %r13     # 0xce92
movq %r13, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x67cb(%rip), %rsi      # 0x15f33
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movq %r12, 0x210(%rsp)
movq %r13, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x6764(%rip), %rsi      # 0x15f3b
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movabsq $0x100000001, %r12      # imm = 0x100000001
movq %r12, 0x210(%rsp)
leaq 0x9f7(%rip), %rax       # 0x1021d
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x66e9(%rip), %rsi      # 0x15f40
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movabsq $0x200000001, %rax      # imm = 0x200000001
movq %rax, 0x210(%rsp)
leaq 0x9e3(%rip), %rax       # 0x10289
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x4c45(%rip), %rsi      # 0x1451c
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movq %r12, 0x210(%rsp)
leaq 0xac1(%rip), %rax       # 0x103dd
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x65f7(%rip), %rsi      # 0x15f44
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movq %r12, 0x210(%rsp)
leaq 0xa88(%rip), %rax       # 0x10412
movq %rax, 0x218(%rsp)
movq %r15, 0x220(%rsp)
subq $0x30, %rsp
movq %r15, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x6588(%rip), %rsi      # 0x15f4b
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movabsq $0x100000000, %rax      # imm = 0x100000000
movq %rax, 0x210(%rsp)
leaq 0xaae(%rip), %rax       # 0x104b8
movq %rax, 0x218(%rsp)
movq %r15, 0x220(%rsp)
subq $0x30, %rsp
movq %r15, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x650d(%rip), %rsi      # 0x15f50
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
xorps %xmm0, %xmm0
movaps %xmm0, 0x200(%rsp)
movaps %xmm0, 0x210(%rsp)
movq %r14, 0x220(%rsp)
movl %ebp, 0x200(%rsp)
movq %rbx, 0x208(%rsp)
movq %r12, 0x210(%rsp)
leaq 0xb83(%rip), %rax       # 0x1060b
movq %rax, 0x218(%rsp)
subq $0x30, %rsp
movq %r14, 0x20(%rsp)
movaps 0x230(%rsp), %xmm0
movaps 0x240(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x649f(%rip), %rsi      # 0x15f58
movq %rbx, 0x40(%rsp)
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
movl $0x1, %edi
movl $0x20, %esi
callq 0x2140
movq %rax, %r15
movl $0x1, %edi
movl $0x20, %esi
callq 0x2140
incq (%rax)
movq %rax, 0x10(%r15)
movq 0x8(%rax), %rcx
testq %rcx, %rcx
movl 0x3c(%rsp), %ebx
je 0xfb1c
movq 0x18(%rax), %rdx
leaq -0x1(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq -0x8(%rdx,%rcx,8), %rax
jmp 0xfb2b
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
jmp 0xf036
movl $0x1, %edi
movl $0x30, %esi
callq 0x2140
movq %rax, 0x8(%r15)
movq %rax, (%r15)
movq $0x0, 0x28(%rax)
movq 0x68(%rsp), %rax
leal 0x1(%rax), %r12d
cmpl %ebx, %r12d
jge 0xfc09
movl %r12d, %eax
movq 0x48(%rsp), %rcx
leaq (%rcx,%rax,8), %r13
leaq 0x200(%rsp), %rbp
movq (%r13), %rdi
callq 0x2270
testq %rax, %rax
je 0xff97
movq %rax, %r14
movq 0x10(%r15), %rax
incq (%rax)
movq 0x8(%rax), %rcx
testq %rcx, %rcx
je 0xfb98
movq 0x18(%rax), %rdx
leaq -0x1(%rcx), %rsi
movq %rsi, 0x8(%rax)
movq -0x8(%rdx,%rcx,8), %rax
jmp 0xfba7
movl $0x1, %edi
movl $0x30, %esi
callq 0x2140
movq 0x8(%r15), %rbx
movq $0x0, 0x28(%rax)
movq %rax, 0x28(%rbx)
movq %rax, 0x8(%r15)
incq 0x18(%r15)
movq %rbp, %rdi
movq 0x10(%rsp), %rsi
movq %r14, %rdx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
callq 0x1062c
movq 0x220(%rsp), %rax
movq %rax, 0x20(%rbx)
movups 0x200(%rsp), %xmm0
movups 0x210(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
addq $0x8, %r13
incl %r12d
cmpl 0x3c(%rsp), %r12d
jl 0xfb60
leaq 0x1d8(%rsp), %r14
movq %r14, %rdi
movq 0x10(%rsp), %rbx
movq %rbx, %rsi
movq %r15, %rdx
callq 0xde8c
subq $0x30, %rsp
movq 0x20(%r14), %rax
movq %rax, 0x20(%rsp)
movups (%r14), %xmm0
movups 0x10(%r14), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x6313(%rip), %rsi      # 0x15f5d
movq %rbx, %rdi
callq 0xd5d3
addq $0x30, %rsp
movq 0x68(%rsp), %rax
testl %eax, %eax
movq 0x50(%rsp), %rsi
je 0xfcec
movl %eax, %eax
movq 0x48(%rsp), %rcx
movq (%rcx,%rax,8), %rdi
leaq 0x8(%rsp), %rdx
callq 0x43d5
testl %eax, %eax
je 0xfe0b
cmpl $0x0, 0xc57c(%rip)      # 0x1c208
movq 0x40(%rsp), %rbx
movq 0x30(%rsp), %r15
movq 0x28(%rsp), %rbp
movq 0x20(%rsp), %r14
movq 0x18(%rsp), %r13
je 0xfcb1
movq 0x8(%rsp), %rdi
callq 0x7db8
movq 0x1a0(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x7bbc
movq 0x8(%rsp), %rdx
leaq 0x200(%rsp), %rdi
movq 0x10(%rsp), %r12
movq %r12, %rsi
callq 0xdee3
movq 0x8(%rsp), %rdi
callq 0x79d8
jmp 0xfe3d
leaq 0x626f(%rip), %rdi      # 0x15f62
xorl %eax, %eax
callq 0x20e0
movq 0xc2cf(%rip), %r14      # 0x1bfd0
movq (%r14), %rdx
leaq 0x200(%rsp), %rdi
movl $0x2000, %esi           # imm = 0x2000
callq 0x2130
testq %rax, %rax
je 0xfdfc
leaq 0x200(%rsp), %r15
leaq 0x6234(%rip), %r13      # 0x15f62
leaq 0x8(%rsp), %rbp
leaq 0x1b0(%rsp), %rbx
movq %r15, %rdi
callq 0x20c0
testl %eax, %eax
jle 0xfd67
movl %eax, %edx
decl %edx
movl $0x1, %ecx
cmpb $0xa, 0x200(%rsp,%rdx)
jne 0xfd69
movb $0x0, 0x200(%rsp,%rdx)
leal -0x1(%rax), %ecx
jmp 0xfd69
movl %eax, %ecx
testl %ecx, %ecx
je 0xfdd9
movq 0x48(%rsp), %rax
movq (%rax), %rdi
movq %r15, %rsi
movq 0x170(%rsp), %rdx
movq %rbp, %rcx
callq 0x4100
testl %eax, %eax
je 0xfdc5
cmpl $0x0, 0xc475(%rip)      # 0x1c208
je 0xfd9f
movq 0x8(%rsp), %rdi
callq 0x7db8
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
movq 0x10(%rsp), %rsi
callq 0xdee3
movq 0x1a0(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x7bbc
jmp 0xfdd9
movq 0x8(%rsp), %rdi
callq 0xffb3
movq 0x8(%rsp), %rdi
callq 0x2b1c
movq %r13, %rdi
xorl %eax, %eax
callq 0x20e0
movq (%r14), %rdx
movq %r15, %rdi
movl $0x2000, %esi           # imm = 0x2000
callq 0x2130
testq %rax, %rax
jne 0xfd3b
movq 0x1a0(%rsp), %rdi
callq 0x79d8
jmp 0xfe1f
movq 0x8(%rsp), %rdi
callq 0xffb3
movq 0x8(%rsp), %rdi
callq 0x2b1c
movq 0x40(%rsp), %rbx
movq 0x30(%rsp), %r15
movq 0x28(%rsp), %rbp
movq 0x20(%rsp), %r14
movq 0x18(%rsp), %r13
movq 0x10(%rsp), %r12
movq %r12, %rdi
callq 0xef79
movq %rbx, %r12
movq 0x58(%rsp), %rcx
movq 0x60(%rsp), %rsi
subq $0x8, %rsp
movl $0x2c, %edi
movq 0x138(%rsp), %rdx
movq 0x128(%rsp), %r8
movq 0x118(%rsp), %r9
xorl %eax, %eax
pushq 0x58(%rsp)
pushq 0x188(%rsp)
pushq 0x188(%rsp)
pushq 0x1a0(%rsp)
pushq 0x1b0(%rsp)
pushq 0x1c0(%rsp)
pushq 0x1d0(%rsp)
pushq 0xb0(%rsp)
pushq 0xc0(%rsp)
pushq 0xd0(%rsp)
pushq %r13
pushq %r14
pushq 0xf0(%rsp)
pushq 0x100(%rsp)
pushq 0x110(%rsp)
pushq 0x120(%rsp)
pushq 0x130(%rsp)
pushq 0x140(%rsp)
pushq %rbp
pushq 0x158(%rsp)
pushq %r15
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 0x228(%rsp)
pushq 0x208(%rsp)
pushq 0x248(%rsp)
pushq 0x258(%rsp)
pushq 0x268(%rsp)
pushq 0x278(%rsp)
pushq 0x288(%rsp)
pushq 0x298(%rsp)
pushq 0x2a8(%rsp)
pushq %r12
callq 0x4998
addq $0x150, %rsp            # imm = 0x150
xorl %eax, %eax
addq $0x2208, %rsp           # imm = 0x2208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x2460
movq 0x48(%rsp), %rax
movq (%rax), %rdi
callq 0x22d0
movl $0x1, %edi
callq 0x2250