// File: /workspace/github_c_makefile_star2_O2/mattn[P]orelang/ore.c
// Function: ore_eval
static ore_value
ore_eval(ore_context* ore, mpc_ast_t* t) {
  int i, r;
  if (!t) return ore_value_nil();

  khiter_t k;
  k = kh_get(ast, ore->ast, (khint64_t)(uintptr_t)t);
  if (k != kh_end(ore->ast)) {
    return kh_value(ore->ast, k);
  }

  if (is_a(t, "eof") || is_a(t, "comment")) {
    return ore_value_nil();
  }
  if (is_a(t, "true")) {
    return ore_value_true();
  }
  if (is_a(t, "false")) {
    return ore_value_false();
  }
  if (is_a(t, "nil")) {
    return ore_value_nil();
  }
  if (is_a(t, "number")) {
	ore_value v = ore_parse_num(ore, t->contents);
	k = kh_put(ast, ore->ast, (khint64_t)(uintptr_t)t, &r);
	kh_value(ore->ast, k) = v;
    return v;
  }
  if (is_a(t, "string")) {
	ore_value v = ore_parse_str(ore, t->contents);
	k = kh_put(ast, ore->ast, (khint64_t)(uintptr_t)t, &r);
	kh_value(ore->ast, k) = v;
    return v;
  }
  if (is_a(t, "array")) {
    ore_array_t* a = kl_init(value);
    for (i = 1; i < t->children_num - 1; i += 2) {
      *kl_pushp(value, a) = ore_eval(ore, t->children[i]);
    }
    return ore_value_array_from_klist(ore, a);
  }
  if (is_a(t, "hash")) {
    ore_hash_t* h = kh_init(value);
    for (i = 1; i < t->children_num - 1; i += 2) {
      ore_value key = ore_eval(ore, t->children[i]->children[0]);
      ore_value val = ore_eval(ore, t->children[i]->children[2]);
      khint_t k = kh_put(value, h, key.v.s->p, &r);
      kh_value(h, k) = val;
    }
    return ore_value_hash_from_khash(ore, h);
  }
  if (is_a(t, "regexp")) {
    ore_value v = ore_parse_str(ore, t->contents);
    v.t = ORE_TYPE_REGEXP;
	k = kh_put(ast, ore->ast, (khint64_t)(uintptr_t)t, &r);
	kh_value(ore->ast, k) = v;
    return v;
  }
  if (is_a(t, "item")) {
    ore_value v = ore_eval(ore, t->children[0]);
    for (i = 2; i < t->children_num; i += 3) {
      ore_value key = ore_eval(ore, t->children[i]);
      ore_value* r = ore_index_ref(ore, v, key, 0);
      v = r == NULL ? ore_value_nil() : *r;
    }
    return v;
  }
  if (is_a(t, "prop")) {
    ore_value v = ore_eval(ore, t->children[0]);
    ore_context* this = v.t == ORE_TYPE_OBJECT ? (ore_context*) v.v.o->e : NULL;
    for (i = 2; i < t->children_num; i += 2) {
      if (v.t != ORE_TYPE_OBJECT) {
        fprintf(stderr, "invalid operation for %s\n", ore_kind(v));
        ore->err = ORE_ERROR_EXCEPTION;
        return ore_value_nil();
      }
      v = ore_prop(this, t->children[i]->contents);
      if (v.t == ORE_TYPE_OBJECT) this = (ore_context*) v.v.o->e;
    }
    return v;
  }
  if (is_a(t, "ident")) {
    return ore_get(ore, t->contents);
  }
  if (is_a(t, "factor")) {
    return ore_eval(ore, t->children[1]);
  }
  if (is_a(t, "lexp") || is_a(t, "term")) {
    return ore_expr(ore, t);
  }
  if (is_a(t, "let_v")) {
    const char* op = t->children[1]->contents;
    ore_value rhs = ore_eval(ore, t->children[2]);
    ore_value lhs = *op != '=' ?
      ore_expr0(ore, ore_eval(ore, t->children[0]), op, rhs) : rhs;
    ore_set(ore, t->children[0]->contents, lhs);
    return lhs;
  }
  if (is_a(t, "let_a")) {
    ore_value lhs = ore_eval(ore, t->children[0]->children[0]);
    const char* op = t->children[1]->contents;
    ore_value* r = NULL;
    for (i = 2; i < t->children[0]->children_num - 1; i += 3) {
      ore_value key = ore_eval(ore, t->children[0]->children[i]);
      r = ore_index_ref(ore, lhs, key, 1);
      lhs = r == NULL ? ore_value_nil() : *r;
    }
    if (r == NULL) {
      return ore_value_nil();
    }
    ore_value rhs = ore_eval(ore, t->children[2]);
    if (*op != '=') lhs = ore_expr0(ore, lhs, op, rhs);
    ore_value_ref(rhs);
    *r = rhs;
    return rhs;
  }
  if (is_a(t, "let_p")) {
    ore_value lhs = ore_eval(ore, t->children[0]->children[0]);
    const char* op = t->children[1]->contents;
    ore_value* r = NULL;
    for (i = 2; i < t->children[0]->children_num; i += 2) {
      ore_value key = ore_value_str_from_ptr(ore, t->children[0]->children[i]->contents, -1);
      r = ore_index_ref(ore, lhs, key, 0);
      lhs = r == NULL ? ore_value_nil() : *r;
    }
    if (r == NULL) {
      return ore_value_nil();
    }
    ore_value rhs = ore_eval(ore, t->children[2]);
    if (*op != '=') lhs = ore_expr0(ore, lhs, op, rhs);
    ore_value_ref(rhs);
    *r = rhs;
    return rhs;
  }
  if (is_a(t, "var")) {
    ore_value v = ore_eval(ore, t->children[3]);
    ore_define(ore, t->children[1]->contents, v);
    return v;
  }
  if (is_a(t, "cmp")) {
    ore_value lhs = ore_eval(ore, t->children[0]);
    ore_value rhs = ore_eval(ore, t->children[2]);
    return ore_cmp(ore, lhs, t->children[1]->contents, rhs);
  }
  if (is_a(t, "func")) {
    ore_value v = { ORE_TYPE_FUNC };
    v.v.f.ore = ore;
    v.v.f.num_in = -1;
    v.v.f.max_in = -1;
    v.v.f.x.o = t;
    v.v.f.u = NULL;
    ore_define(ore, t->children[1]->contents, v);
    return v;
  }
  if (is_a(t, "lambda")) {
    ore_value v = { ORE_TYPE_FUNC };
    v.v.f.ore = ore;
    v.v.f.num_in = -1;
    v.v.f.max_in = -1;
    v.v.f.x.o = t;
    v.v.f.u = NULL;
    return v;
  }
  if (is_a(t, "class_ext")) {
    return ore_define_class(ore, t->children[1], t->children[5], t->children[3]->contents);
  }
  if (is_a(t, "class")) {
    return ore_define_class(ore, t->children[1], t->children[3], NULL);
  }
  if (is_a(t, "new")) {
    return ore_object_new(ore, t);
  }
  if (is_a(t, "call")) {
    return ore_call(ore, t);
  }
  if (is_a(t, "return")) {
    ore_value v = ore_eval(ore, t->children[1]);
    ore->err = ORE_ERROR_RETURN;
    ore_value_ref(v);
    return v;
  }
  if (is_a(t, "break")) {
    ore->err = ORE_ERROR_BREAK;
    return ore_value_nil();
  }
  if (is_a(t, "continue")) {
    ore->err = ORE_ERROR_CONTINUE;
    return ore_value_nil();
  }
  if (is_a(t, "if_stmt")) {
    if (ore_is_true(ore_eval(ore, t->children[2]))) {
      return ore_eval(ore, ore_find_statements(t));
    }
    return ore_value_nil();
  }
  if (is_a(t, "if")) {
    int i;
    for (i = 0; i < t->children_num; i++) {
      int r = 0;
      mpc_ast_t* f = t->children[i];
      if (is_a(f, "if_stmt")) {
        r = ore_is_true(ore_eval(ore, f->children[2]));
      } else if (is_a(f, "else_if")) {
        r = ore_is_true(ore_eval(ore, f->children[3]));
      } else {
        r = 1;
      }
      if (r)
        return ore_eval(ore, ore_find_statements(f));
    }
    return ore_value_nil();
  }
  if (is_a(t, "while")) {
    ore_context* env = ore_new(ore);
    while (ore_is_true(ore_eval(env, t->children[2]))) {
      ore_eval(env, ore_find_statements(t));
      if (env->err != ORE_ERROR_NONE) {
        if (env->err == ORE_ERROR_CONTINUE) {
          env->err = ORE_ERROR_NONE;
          continue;
        }
        break;
      }
    }
    if (env->err == ORE_ERROR_RETURN)
      ore->err = ORE_ERROR_RETURN;
    ore_destroy(env);
    return ore_value_nil();
  }
  if (is_a(t, "for_in")) {
    ore_value l = ore_eval(ore, t->children[4]);
    if (l.t != ORE_TYPE_ARRAY) {
      fprintf(stderr, "expected array for argument\n");
      ore->err = ORE_ERROR_EXCEPTION;
    }
    ore_array_t* a = (ore_array_t*) l.v.a->p;
    ore_array_iter_t *k;
    ore_context* env = ore_new(ore);
    for (k = kl_begin(a); k != kl_end(a); k = kl_next(k)) {
      ore_define(env, t->children[2]->contents, kl_val(k));
      ore_eval(env, ore_find_statements(t));
      if (env->err != ORE_ERROR_NONE) {
        if (env->err == ORE_ERROR_CONTINUE) {
          env->err = ORE_ERROR_NONE;
          continue;
        }
        break;
      }
    }
    if (env->err == ORE_ERROR_RETURN)
      ore->err = ORE_ERROR_RETURN;
    ore_destroy(env);
    return ore_value_nil();
  }
  if (is_a(t, "stmts") || is_a(t, "template") || t->tag[0] == '>') {
    ore_value v;
    for (i = 0; i < t->children_num; i++) {
      v = ore_eval(ore, t->children[i]);
      if (ore->err != ORE_ERROR_NONE)
        return v;
    }
    return ore_value_nil();
  }
  if (is_a(t, "stmt")) {
    return ore_eval(ore, t->children[0]);
  }
  if (is_a(t, "char") && !strcmp(t->contents, ";")) {
    return ore_value_nil();
  }
  fprintf(stderr, "unknown operation '%s'\n", t->contents);
  ore->err = ORE_ERROR_EXCEPTION;
  return ore_value_nil();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rdi, %rbx
testq %rdx, %rdx
je 0xb282
movq %rdx, %r15
movq %rsi, %r14
movq 0x28(%rsi), %r13
movl (%r13), %eax
testl %eax, %eax
je 0xb251
pushq $0x1
popq %rsi
leal -0x1(%rax), %edi
movq %r15, %r8
shrq $0x21, %r8
movl %r15d, %ecx
shll $0xb, %ecx
xorl %ecx, %r8d
xorl %r15d, %r8d
andl %edi, %r8d
movq 0x10(%r13), %r9
movl %r8d, %edx
movl %edx, %ecx
shrl $0x4, %ecx
movl (%r9,%rcx,4), %r10d
leal (%rdx,%rdx), %ecx
andl $0x1e, %ecx
movl %r10d, %r11d
shrl %cl, %r11d
testb $0x2, %r11b
jne 0xb245
testb $0x1, %r11b
jne 0xb238
movq 0x18(%r13), %r11
movl %edx, %r12d
cmpq %r15, (%r11,%r12,8)
je 0xb245
addl %esi, %edx
andl %edi, %edx
incl %esi
cmpl %r8d, %edx
jne 0xb20a
jmp 0xb257
shrl %cl, %r10d
testb $0x3, %r10b
cmovnel %eax, %edx
jmp 0xb253
xorl %edx, %edx
cmpl %eax, %edx
jne 0xb296
movq (%r15), %r12
leaq 0x6c36(%rip), %rsi      # 0x11e97
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
jne 0xb282
leaq 0x5909(%rip), %rsi      # 0x10b7e
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb2d2
pxor %xmm0, %xmm0
movdqu %xmm0, 0x10(%rbx)
movdqu %xmm0, (%rbx)
andq $0x0, 0x20(%rbx)
jmp 0xb2bd
movq 0x20(%r13), %rax
movl %edx, %ecx
imulq $0x28, %rcx, %rcx
movq 0x20(%rax,%rcx), %rdx
movq %rdx, 0x20(%rbx)
movdqu (%rax,%rcx), %xmm0
movupd 0x10(%rax,%rcx), %xmm1
movupd %xmm1, 0x10(%rbx)
movdqu %xmm0, (%rbx)
movq %rbx, %rax
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x57dc(%rip), %rsi      # 0x10ab5
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb302
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
andq $0x0, 0x20(%rbx)
movupd %xmm0, 0x10(%rbx)
pushq $0x1
popq %rax
movl %eax, (%rbx)
movl %eax, 0x8(%rbx)
jmp 0xb2bd
leaq 0x57b1(%rip), %rsi      # 0x10aba
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb330
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
andq $0x0, 0x20(%rbx)
movl $0x1, (%rbx)
jmp 0xb2bd
leaq 0x5789(%rip), %rsi      # 0x10ac0
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
jne 0xb282
leaq 0x5191(%rip), %rsi      # 0x104e0
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb3bf
movq 0x8(%r15), %r12
xorps %xmm0, %xmm0
andq $0x0, 0x20(%rbx)
movups %xmm0, 0x10(%rbx)
movups %xmm0, (%rbx)
cmpb $0x30, (%r12)
jne 0xb39a
cmpb $0x78, 0x1(%r12)
jne 0xb39a
movl $0x2, (%rbx)
pushq $0x10
popq %rdx
movq %r12, %rdi
xorl %esi, %esi
callq 0x2180
movl %eax, 0x8(%rbx)
movq 0x28(%r14), %r13
jmp 0xb401
pushq $0x2e
popq %rsi
movq %r12, %rdi
callq 0x20d0
testq %rax, %rax
je 0xb3f0
movl $0x3, (%rbx)
movq %r12, %rdi
callq 0x20a0
movsd %xmm0, 0x8(%rbx)
jmp 0xb401
leaq 0x6ab0(%rip), %rsi      # 0x11e76
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb444
movq 0x8(%r15), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe66f
movq 0x28(%r14), %rdi
leaq 0xa0(%rsp), %rdx
jmp 0xb40c
movl $0x2, (%rbx)
movq %r12, %rdi
callq 0x2220
movl %eax, 0x8(%rbx)
leaq 0xa0(%rsp), %rdx
movq %r13, %rdi
movq %r15, %rsi
callq 0xe4e4
movq 0x28(%r14), %rcx
movq 0x20(%rcx), %rcx
movl %eax, %eax
imulq $0x28, %rax, %rax
movq 0x20(%rbx), %rdx
movq %rdx, 0x20(%rcx,%rax)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd %xmm1, 0x10(%rcx,%rax)
movupd %xmm0, (%rcx,%rax)
jmp 0xb2bd
leaq 0x5679(%rip), %rsi      # 0x10ac4
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb4d4
pushq $0x1
popq %r13
callq 0xb0dd
movq %rax, %r12
movslq 0x28(%r15), %rax
decq %rax
cmpq %rax, %r13
jge 0xb4c1
movq %r12, %rdi
callq 0xb123
movq %rax, %rbp
movq 0x30(%r15), %rax
movq (%rax,%r13,8), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rbp)
movupd 0xd0(%rsp), %xmm0
movupd 0xe0(%rsp), %xmm1
movupd %xmm1, 0x10(%rbp)
movupd %xmm0, (%rbp)
addq $0x2, %r13
jmp 0xb464
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0xb14a
jmp 0xb2bd
leaq 0x55f4(%rip), %rsi      # 0x10acf
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb5af
pushq $0x1
popq %rbp
callq 0xcefc
movq %rax, %r12
leaq 0xa0(%rsp), %r13
movslq 0x28(%r15), %rax
decq %rax
cmpq %rax, %rbp
jge 0xb59c
movq 0x30(%r15), %rax
movq (%rax,%rbp,8), %rax
movq 0x30(%rax), %rax
movq (%rax), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq (%rax,%rbp,8), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rdx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xd8(%rsp), %rax
movq (%rax), %rsi
movq %r12, %rdi
movq %r13, %rdx
callq 0xa8ea
movq 0x20(%r12), %rcx
movl %eax, %eax
imulq $0x28, %rax, %rax
movupd 0x70(%rsp), %xmm0
movupd 0x80(%rsp), %xmm1
movupd %xmm0, (%rcx,%rax)
movupd %xmm1, 0x10(%rcx,%rax)
movq 0x90(%rsp), %rdx
movq %rdx, 0x20(%rcx,%rax)
addq $0x2, %rbp
jmp 0xb4ff
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0xe7ab
jmp 0xb2bd
leaq 0x551e(%rip), %rsi      # 0x10ad4
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb5dd
movq 0x8(%r15), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe66f
movl $0x7, (%rbx)
jmp 0xb3e2
leaq 0x5501(%rip), %rsi      # 0x10ae5
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb6bd
movq 0x30(%r15), %rax
movq (%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
pushq $0x2
popq %r13
leaq 0xd0(%rsp), %r12
movslq 0x28(%r15), %rax
cmpq %rax, %r13
jge 0xb2bd
movq 0x30(%r15), %rax
movq (%rax,%r13,8), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xf0(%rsp), %rax
movq %rax, 0x48(%rsp)
movups 0xd0(%rsp), %xmm0
movups 0xe0(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r14, %rdi
xorl %esi, %esi
callq 0xe819
testq %rax, %rax
je 0xb6a2
movq 0x20(%rax), %rcx
movq %rcx, 0x20(%rbx)
movupd (%rax), %xmm0
movupd 0x10(%rax), %xmm1
movupd %xmm1, 0x10(%rbx)
movupd %xmm0, (%rbx)
jmp 0xb6b4
xorpd %xmm0, %xmm0
movupd %xmm0, 0x10(%rbx)
movupd %xmm0, (%rbx)
andq $0x0, 0x20(%rbx)
addq $0x3, %r13
jmp 0xb613
leaq 0x5426(%rip), %rsi      # 0x10aea
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb702
movq 0x30(%r15), %rax
movq (%rax), %rdx
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
movl (%r12), %eax
cmpl $0xd, %eax
jne 0xb72e
movq 0xd8(%rsp), %rcx
movq 0x10(%rcx), %r12
jmp 0xb731
leaq 0x53a1(%rip), %rsi      # 0x10aaa
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb7b5
movq 0x8(%r15), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xa73c
jmp 0xb2bd
xorl %r12d, %r12d
pushq $0x2
popq %rbp
leaq 0x70(%rsp), %r13
movslq 0x28(%r15), %rcx
cmpq %rcx, %rbp
jge 0xce53
cmpl $0xd, %eax
jne 0xb8d1
movq 0x30(%r15), %rax
movq (%rax,%rbp,8), %rax
movq 0x8(%rax), %rdx
movq %r13, %rdi
movq %r12, %rsi
callq 0xa61d
movq 0x90(%rsp), %rax
movq %rax, 0xf0(%rsp)
movdqu 0x70(%rsp), %xmm0
movupd 0x80(%rsp), %xmm1
movapd %xmm1, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
movl 0xd0(%rsp), %eax
cmpl $0xd, %eax
jne 0xb7af
movq 0xd8(%rsp), %rcx
movq 0x10(%rcx), %r12
addq $0x2, %rbp
jmp 0xb739
leaq 0x4d54(%rip), %rsi      # 0x10510
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb7e1
movq 0x30(%r15), %rax
movq 0x8(%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
jmp 0xb2bd
leaq 0x5307(%rip), %rsi      # 0x10aef
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
jne 0xb80d
leaq 0x4d0f(%rip), %rsi      # 0x1050b
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb934
movq 0x30(%r15), %rax
movq (%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
pushq $0x1
popq %r12
leaq 0x70(%rsp), %r13
movslq 0x28(%r15), %rax
cmpq %rax, %r12
jge 0xb2bd
movq 0x30(%r15), %rax
movq (%rax,%r12,8), %rcx
movq 0x8(%rcx), %rbp
movq 0x8(%rax,%r12,8), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xf0(%rsp), %rax
movq %rax, 0x48(%rsp)
movups 0xd0(%rsp), %xmm0
movups 0xe0(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %r13, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0xea9c
movq 0x90(%rsp), %rax
movq %rax, 0x20(%rbx)
movupd 0x70(%rsp), %xmm0
movupd 0x80(%rsp), %xmm1
movupd %xmm1, 0x10(%rbx)
movupd %xmm0, (%rbx)
addq $0x2, %r12
jmp 0xb828
movq 0xc720(%rip), %rax      # 0x17ff8
movq (%rax), %r15
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
movups 0xd0(%rsp), %xmm0
movups 0xe0(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
callq 0xea7b
leaq 0x660d(%rip), %rsi      # 0x11f1a
movq %r15, %rdi
movq %rax, %rdx
xorl %eax, %eax
callq 0x2160
movl $0x1, 0x20(%r14)
pxor %xmm0, %xmm0
movdqu %xmm0, (%rbx)
movdqu %xmm0, 0x10(%rbx)
jmp 0xb28f
leaq 0x51bf(%rip), %rsi      # 0x10afa
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xb99b
movq 0x30(%r15), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rcx), %r12
movq 0x10(%rax), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
cmpb $0x3d, (%r12)
jne 0xbacd
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rbx)
movups 0xd0(%rsp), %xmm0
movups 0xe0(%rsp), %xmm1
movups %xmm1, 0x10(%rbx)
movups %xmm0, (%rbx)
jmp 0xbb38
leaq 0x515e(%rip), %rsi      # 0x10b00
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xbb6d
movq 0x30(%r15), %rax
movq (%rax), %rax
movq 0x30(%rax), %rax
movq (%rax), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x50(%rsp)
pushq $0x2
popq %rbp
xorl %r13d, %r13d
pushq $0x1
popq %r12
movq (%rax), %rcx
movslq 0x28(%rcx), %rdx
decq %rdx
cmpq %rdx, %rbp
jge 0xbca2
movq 0x30(%rcx), %rax
movq (%rax,%rbp,8), %rdx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x90(%rsp), %rax
movq %rax, 0x48(%rsp)
movups 0x70(%rsp), %xmm0
movups 0x80(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
movdqa 0xd0(%rsp), %xmm0
movapd 0xe0(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
movq %r14, %rdi
movl %r12d, %esi
callq 0xe819
movq %rax, %r13
testq %rax, %rax
je 0xbaa1
movq 0x20(%r13), %rax
movq %rax, 0xf0(%rsp)
movdqu (%r13), %xmm0
movupd 0x10(%r13), %xmm1
movapd %xmm1, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
jmp 0xbac0
pxor %xmm0, %xmm0
movdqa %xmm0, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
andq $0x0, 0xf0(%rsp)
addq $0x3, %rbp
movq 0x30(%r15), %rax
jmp 0xb9ec
movq 0x30(%r15), %rax
movq (%rax), %rdx
leaq 0x2a0(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xf0(%rsp), %rax
movq %rax, 0x48(%rsp)
movups 0xd0(%rsp), %xmm0
movups 0xe0(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0x20(%r13), %rax
movq %rax, 0x20(%rsp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0xea9c
movq 0x30(%r15), %rax
movq (%rax), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r14, %rdi
callq 0xa7e7
jmp 0xb2bd
leaq 0x4f92(%rip), %rsi      # 0x10b06
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xbd7e
movq 0x30(%r15), %rax
movq (%rax), %rax
movq 0x30(%rax), %rax
movq (%rax), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq 0x8(%rax), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, 0x50(%rsp)
pushq $0x2
popq %rbp
xorl %r13d, %r13d
pushq $-0x1
popq %r12
movq (%rax), %rcx
movslq 0x28(%rcx), %rdx
cmpq %rdx, %rbp
jge 0xbca2
movq 0x30(%rcx), %rax
movq (%rax,%rbp,8), %rax
movq 0x8(%rax), %rdx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
movl %r12d, %ecx
callq 0xe0cb
movq 0x90(%rsp), %rax
movq %rax, 0x48(%rsp)
movups 0x70(%rsp), %xmm0
movups 0x80(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
movdqa 0xd0(%rsp), %xmm0
movapd 0xe0(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
movq %r14, %rdi
xorl %esi, %esi
callq 0xe819
movq %rax, %r13
testq %rax, %rax
je 0xbc76
movq 0x20(%r13), %rax
movq %rax, 0xf0(%rsp)
movdqu (%r13), %xmm0
movupd 0x10(%r13), %xmm1
movapd %xmm1, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
jmp 0xbc95
pxor %xmm0, %xmm0
movdqa %xmm0, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
andq $0x0, 0xf0(%rsp)
addq $0x2, %rbp
movq 0x30(%r15), %rax
jmp 0xbbbe
testq %r13, %r13
je 0xb282
movq 0x10(%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x50(%rsp), %rax
cmpb $0x3d, (%rax)
je 0xbd42
movq 0x20(%rbx), %rax
movq %rax, 0x48(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
movaps 0xd0(%rsp), %xmm0
movaps 0xe0(%rsp), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x70(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq 0x50(%rsp), %rdx
callq 0xea9c
movq 0x20(%r15), %rax
movq %rax, 0xf0(%rsp)
movdqu (%r15), %xmm0
movupd 0x10(%r15), %xmm1
movapd %xmm1, 0xe0(%rsp)
movdqa %xmm0, 0xd0(%rsp)
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
callq 0xa424
movq 0x20(%rbx), %rax
movq %rax, 0x20(%r13)
movups (%rbx), %xmm0
movups 0x10(%rbx), %xmm1
movups %xmm1, 0x10(%r13)
movups %xmm0, (%r13)
jmp 0xb2bd
leaq 0x4db8(%rip), %rsi      # 0x10b3d
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xbddb
movq 0x30(%r15), %rax
movq 0x18(%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
movq %r14, %rdi
callq 0xaad0
jmp 0xb2bd
leaq 0x4cf9(%rip), %rsi      # 0x10adb
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xbf48
movq 0x30(%r15), %rax
movq (%rax), %rdx
leaq 0x278(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq 0x10(%rax), %rdx
leaq 0x250(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x30(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rax
movq 0x20(%r13), %rcx
movq %rcx, 0xc0(%rsp)
movups (%r13), %xmm0
movups 0x10(%r13), %xmm1
movaps %xmm1, 0xb0(%rsp)
movaps %xmm0, 0xa0(%rsp)
movq 0x20(%r12), %rcx
movq %rcx, 0x190(%rsp)
movupd (%r12), %xmm0
movupd 0x10(%r12), %xmm1
movapd %xmm1, 0x180(%rsp)
movapd %xmm0, 0x170(%rsp)
movzbl (%rax), %ecx
cmpl $0x21, %ecx
je 0xbfb1
cmpl $0x3c, %ecx
je 0xc040
cmpl $0x3e, %ecx
je 0xc0a2
cmpl $0x3d, %ecx
jne 0xb316
movzbl 0x1(%rax), %ecx
cmpl $0x7e, %ecx
je 0xc130
cmpl $0x3d, %ecx
jne 0xb316
cmpb $0x0, 0x2(%rax)
jne 0xb316
movq 0xc0(%rsp), %rax
movq %rax, 0x48(%rsp)
movaps 0xa0(%rsp), %xmm0
movaps 0xb0(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x20(%rsp)
movapd 0x170(%rsp), %xmm0
movapd 0x180(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
callq 0xf2e0
andq $0x0, 0x20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
movl $0x1, (%rbx)
testl %eax, %eax
jne 0xc4ba
jmp 0xb2bd
leaq 0x4bf9(%rip), %rsi      # 0x10b48
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xbf7d
andq $0x0, (%rbx)
movl $0x8, (%rbx)
movq %r14, 0x8(%rbx)
orq $-0x1, 0x10(%rbx)
movq %r15, 0x18(%rbx)
andq $0x0, 0x20(%rbx)
jmp 0xbda5
leaq 0x4bbd(%rip), %rsi      # 0x10b41
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc0f9
andq $0x0, (%rbx)
movl $0x8, (%rbx)
movq %r14, 0x8(%rbx)
orq $-0x1, 0x10(%rbx)
movq %r15, 0x18(%rbx)
jmp 0xb28f
cmpb $0x3d, 0x1(%rax)
jne 0xb316
cmpb $0x0, 0x2(%rax)
jne 0xb316
movq 0xc0(%rsp), %rax
movq %rax, 0x48(%rsp)
movaps 0xa0(%rsp), %xmm0
movaps 0xb0(%rsp), %xmm1
movups %xmm1, 0x38(%rsp)
movups %xmm0, 0x28(%rsp)
movq 0x190(%rsp), %rax
movq %rax, 0x20(%rsp)
movapd 0x170(%rsp), %xmm0
movapd 0x180(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
callq 0xf2e0
andq $0x0, 0x20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
movl $0x1, (%rbx)
testl %eax, %eax
jne 0xb2bd
jmp 0xc4ba
movzbl 0x1(%rax), %ecx
cmpl $0x3d, %ecx
je 0xc24a
testl %ecx, %ecx
jne 0xb316
movl 0xa0(%rsp), %eax
xorl %r15d, %r15d
cmpl %eax, 0x170(%rsp)
jne 0xc30c
movq 0xa8(%rsp), %xmm0
movq 0x178(%rsp), %xmm1
cmpl $0x3, %eax
je 0xc303
cmpl $0x2, %eax
jne 0xc8b2
movq %xmm1, %r15
movq %xmm0, %rax
subl %eax, %r15d
jmp 0xc30c
cmpb $0x0, 0x1(%rax)
jne 0xb316
movl 0xa0(%rsp), %eax
xorl %r15d, %r15d
cmpl %eax, 0x170(%rsp)
jne 0xc2dd
movq 0xa8(%rsp), %xmm0
movq 0x178(%rsp), %xmm1
cmpl $0x3, %eax
je 0xc2d4
cmpl $0x2, %eax
jne 0xc72c
movq %xmm1, %r15
movq %xmm0, %rax
subl %eax, %r15d
jmp 0xc2dd
leaq 0x4a5c(%rip), %rsi      # 0x10b5c
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc2a1
movq 0x30(%r15), %rax
movq 0x28(%rax), %rcx
movq 0x8(%rax), %rdx
movq 0x18(%rax), %rax
movq 0x8(%rax), %r8
movq %rbx, %rdi
movq %r14, %rsi
jmp 0xc2ca
cmpb $0x0, 0x2(%rax)
jne 0xb316
cmpl $0x4, 0x170(%rsp)
jne 0xb282
cmpl $0x7, 0xa0(%rsp)
jne 0xb282
movq 0x178(%rsp), %r12
movq 0xa8(%rsp), %r13
leaq 0xd0(%rsp), %r15
movl $0xa0, %edx
movq %r15, %rdi
xorl %esi, %esi
callq 0x2100
movq (%r13), %rdi
movq (%r12), %rsi
movl 0x8(%r12), %edx
pushq $0xa
popq %r8
movq %r15, %rcx
xorl %r9d, %r9d
callq 0x9450
testl %eax, %eax
jle 0xb282
pushq $0x8
popq %r15
callq 0xb0dd
movq %rax, 0x50(%rsp)
cmpq $0xa8, %r15
je 0xc480
movq 0xc8(%rsp,%r15), %rbp
testq %rbp, %rbp
je 0xc480
movslq 0xd0(%rsp,%r15), %r12
leaq 0x1(%r12), %rsi
pushq $0x1
popq %rdi
callq 0x2140
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0x2190
movq 0x50(%rsp), %rdi
callq 0xb123
movq %rax, %r12
movl 0xd0(%rsp,%r15), %ecx
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0xe0cb
movq 0x90(%rsp), %rax
movq %rax, 0x20(%r12)
movupd 0x70(%rsp), %xmm0
movupd 0x80(%rsp), %xmm1
movupd %xmm1, 0x10(%r12)
movupd %xmm0, (%r12)
addq $0x10, %r15
jmp 0xc1af
cmpb $0x0, 0x2(%rax)
jne 0xb316
movl 0xa0(%rsp), %eax
xorl %r15d, %r15d
cmpl %eax, 0x170(%rsp)
jne 0xc499
movq 0xa8(%rsp), %xmm0
movq 0x178(%rsp), %xmm1
cmpl $0x3, %eax
je 0xc490
cmpl $0x2, %eax
jne 0xca52
movq %xmm1, %r15
movq %xmm0, %rax
subl %eax, %r15d
jmp 0xc499
leaq 0x48ae(%rip), %rsi      # 0x10b56
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc332
movq 0x30(%r15), %rax
movq 0x8(%rax), %rdx
movq 0x18(%rax), %rcx
movq %rbx, %rdi
movq %r14, %rsi
xorl %r8d, %r8d
callq 0xedba
jmp 0xb2bd
subsd %xmm0, %xmm1
cvttsd2si %xmm1, %r15d
andq $0x0, 0x20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
movl $0x1, (%rbx)
testl %r15d, %r15d
jg 0xc4ba
jmp 0xb2bd
subsd %xmm0, %xmm1
cvttsd2si %xmm1, %r15d
andq $0x0, 0x20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
movl $0x1, (%rbx)
testl %r15d, %r15d
jns 0xb2bd
jmp 0xc4ba
leaq 0x482d(%rip), %rsi      # 0x10b66
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc4c6
movq 0x30(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xf401
andq $0x0, 0x180(%rsp)
pxor %xmm0, %xmm0
movdqa %xmm0, 0x170(%rsp)
movl (%r12), %eax
cmpl $0xc, %eax
je 0xc664
cmpl $0xb, %eax
jne 0xcabd
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rsp)
movups 0xd0(%rsp), %xmm0
movupd 0xe0(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x70(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0xf421
movsd (%r13), %xmm0
movaps %xmm0, 0x50(%rsp)
movq 0x8(%r13), %r12
movups 0x10(%r13), %xmm0
movaps %xmm0, 0x170(%rsp)
movq 0x20(%r13), %rax
movq %rax, 0x180(%rsp)
movq 0x10(%r12), %rsi
leaq 0x5c65(%rip), %rdx      # 0x12066
leaq 0xa0(%rsp), %r13
movq %r13, %rdi
callq 0xa61d
cmpl $0x8, (%r13)
jne 0xc6a7
movq 0xb8(%rsp), %rsi
movq 0x10(%r12), %rdx
movq %r14, %rdi
movq %r15, %rcx
callq 0xf5c4
movq %rax, %rcx
movq 0x10(%r12), %rsi
movl 0x28(%r15), %eax
pushq $0x2
popq %rdi
cltd
idivl %edi
leal -0x1(%rax), %edx
movq 0xc0(%rsp), %rax
movq %rax, 0x20(%rsp)
movups 0xa0(%rsp), %xmm0
movupd 0xb0(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movups %xmm0, (%rsp)
leaq 0x70(%rsp), %rdi
callq 0xadac
jmp 0xc6a7
movq %rbx, %rdi
movq %r14, %rsi
movq 0x50(%rsp), %rdx
jmp 0xb4ca
subsd %xmm0, %xmm1
cvttsd2si %xmm1, %r15d
andq $0x0, 0x20(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, (%rbx)
movupd %xmm0, 0x10(%rbx)
movl $0x1, (%rbx)
testl %r15d, %r15d
jg 0xb2bd
movl $0x1, 0x8(%rbx)
jmp 0xb2bd
leaq 0x46ac(%rip), %rsi      # 0x10b79
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc6d2
movq 0x30(%r15), %rax
movq (%rax), %r12
movq (%r12), %r13
leaq 0x45ba(%rip), %rsi      # 0x10aaa
movq %r13, %rdi
callq 0x2290
testq %rax, %rax
je 0xc755
movq 0x8(%r12), %rdx
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
movq %rdx, 0x68(%rsp)
callq 0xa73c
movl (%r12), %r13d
movq 0x8(%r12), %rbp
movq 0x10(%r12), %xmm0
movdqa %xmm0, 0x1a0(%rsp)
movq 0x18(%r12), %rax
movq %rax, 0x50(%rsp)
movq 0x20(%r12), %rax
movq %rax, 0xc8(%rsp)
cmpl $0x0, 0x20(%r14)
jne 0xb282
leal -0xa(%r13), %eax
cmpl $-0x3, %eax
jbe 0xcb49
pxor %xmm0, %xmm0
movdqa %xmm0, 0x80(%rsp)
movdqa %xmm0, 0x70(%rsp)
andq $0x0, 0x90(%rsp)
cmpl $0x9, %r13d
jne 0xc900
movl 0x28(%r15), %ebp
pushq $0x2
popq %rcx
movl %ebp, %eax
cltd
idivl %ecx
leal -0x1(%rax), %ecx
movl %ecx, 0x68(%rsp)
movdqa 0x1a0(%rsp), %xmm0
movd %xmm0, %ecx
cmpl %ecx, %eax
jle 0xcb64
pshufd $0x55, 0x1a0(%rsp), %xmm0 # xmm0 = mem[1,1,1,1]
movd %xmm0, %eax
cmpl $-0x1, %eax
setne %dl
cmpl %eax, 0x68(%rsp)
setg %al
andb %dl, %al
cmpb $0x1, %al
je 0xcb64
movslq 0x68(%rsp), %rax
imulq $0x28, %rax, %rdi
callq 0x21a0
movq %rax, 0x1a0(%rsp)
testq %rax, %rax
je 0xca7b
pushq $0x2
popq %r13
movq 0x1a0(%rsp), %r12
decl %ebp
movslq %ebp, %rax
cmpq %rax, %r13
jge 0xc9b4
movq 0x30(%r15), %rax
movq (%rax,%r13,8), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%r12)
movdqu 0xd0(%rsp), %xmm0
movupd 0xe0(%rsp), %xmm1
movupd %xmm1, 0x10(%r12)
movdqu %xmm0, (%r12)
addq $0x2, %r13
movl 0x28(%r15), %ebp
addq $0x28, %r12
jmp 0xc604
pushq $0x20
popq %rdi
callq 0x21a0
testq %rax, %rax
je 0xca7b
movq %rax, %r12
movl $0xc, (%rax)
movq 0xd8(%rsp), %rax
movq %rax, 0x8(%r12)
movq 0x8(%rax), %rax
movq %rax, 0x10(%r12)
orl $-0x1, 0x18(%r12)
movss 0x430e(%rip), %xmm0     # 0x109b0
movaps %xmm0, 0x50(%rsp)
movaps 0x50(%rsp), %xmm0
movlps %xmm0, (%rbx)
movq %r12, 0x8(%rbx)
movapd 0x170(%rsp), %xmm0
movupd %xmm0, 0x10(%rbx)
movq 0x180(%rsp), %rax
movq %rax, 0x20(%rbx)
jmp 0xb2bd
leaq 0x3f2c(%rip), %rsi      # 0x10605
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xc8db
movq 0x30(%r15), %rax
movq 0x8(%rax), %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xb1b8
movl $0x2, 0x20(%r14)
movq 0x20(%rbx), %rax
movq %rax, 0x20(%rsp)
movupd (%rbx), %xmm0
movupd 0x10(%rbx), %xmm1
movupd %xmm1, 0x10(%rsp)
movupd %xmm0, (%rsp)
callq 0xa424
jmp 0xb2bd
movq 0xb8c5(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x5917(%rip), %rdi      # 0x12054
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
movl $0x1, 0x20(%r14)
jmp 0xc2dd
leaq 0x438e(%rip), %rsi      # 0x10aea
movq %r13, %rdi
callq 0x2290
testq %rax, %rax
je 0xc9fd
movq 0x30(%r12), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, 0x68(%rsp)
leaq 0xd0(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0xb1b8
movq %r13, %rcx
movl (%r13), %r13d
movq 0x8(%rcx), %rbp
movq 0x10(%rcx), %xmm0
movdqa %xmm0, 0x1a0(%rsp)
movq 0x18(%rcx), %rax
movq %rax, 0x50(%rsp)
movq 0x20(%rcx), %rax
movq %rax, 0xc8(%rsp)
testl %r13d, %r13d
jne 0xc54e
movq 0x30(%r15), %rax
movq (%rax), %rax
movq 0x30(%rax), %rax
movq (%rax), %rdx
leaq 0xd0(%rsp), %rdi
movq %r14, %rsi
callq 0xb1b8
xorl %r13d, %r13d
leaq 0x5895(%rip), %r12      # 0x12089
movq 0xd8(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x70(%rsp), %rdi
movq %r12, %rdx
callq 0xa61d
movq 0x90(%rsp), %rax
movq %rax, 0xf0(%rsp)
movups 0x70(%rsp), %xmm0
movupd 0x80(%rsp), %xmm1
movapd %xmm1, 0xe0(%rsp)
movaps %xmm0, 0xd0(%rsp)
cmpl $0x0, 0xd0(%rsp)
je 0xc54e
movq 0xd8(%rsp), %rax
movq 0x10(%rax), %rsi
leaq 0x70(%rsp), %rdi
movq 0x68(%rsp), %rdx
callq 0xa61d
movl 0x70(%rsp), %r13d
movq 0x78(%rsp), %rbp
movq 0x80(%rsp), %xmm0
movdqa %xmm0, 0x1a0(%rsp)
movq 0x88(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x90(%rsp), %rax
movq %rax, 0xc8(%rsp)
movl %r13d, %eax
andl $-0x2, %eax
cmpl $0x8, %eax
jne 0xc7f4
jmp 0xc54e
movq 0xb73f(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x5791(%rip), %rdi      # 0x12054
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
movl $0x1, 0x20(%r14)
jmp 0xc30c
leaq 0x424c(%rip), %rsi      # 0x10b2e
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xca9c
movl $0x3, 0x20(%r14)
jmp 0xb282
movq %rbp, %rdi
callq 0xaca5
movq %rax, %r13
movq 0x50(%rsp), %rdi
callq 0xef75
testq %rax, %rax
je 0xc9df
movq %rax, %r12
movq %r14, %rdi
movq 0x50(%rsp), %rsi
movq %r13, %rdx
movq %r15, %rcx
callq 0xf5c4
movq %rax, %r15
leaq 0x70(%rsp), %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0xb1b8
cmpl $0x1, 0x20(%r13)
jne 0xc956
movl $0x1, 0x20(%r14)
movq (%r13), %rdx
leaq 0x414f(%rip), %rsi      # 0x10ab0
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
xorl %eax, %eax
callq 0x2240
leaq 0xa0(%rsp), %rbp
movq %rbp, %rdi
movq %r13, %rsi
callq 0xa564
movq 0x20(%rbp), %rax
movq %rax, 0x20(%rsp)
movdqu (%rbp), %xmm0
movupd 0x10(%rbp), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
movq %r14, %rdi
movq %r12, %rsi
callq 0xaad0
movq %r15, %rdi
jmp 0xc9da
leaq 0x70(%rsp), %rdi
movq %r14, %rsi
movl 0x68(%rsp), %edx
movq 0x1a0(%rsp), %r14
movq %r14, %rcx
movq 0xc8(%rsp), %r8
callq *0x50(%rsp)
movq %r14, %rdi
callq 0x22c0
movq 0x90(%rsp), %rax
movq %rax, 0x20(%rbx)
movaps 0x70(%rsp), %xmm0
movaps 0x80(%rsp), %xmm1
jmp 0xb2b4
leaq 0xd0(%rsp), %r13
movq %r13, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0xb1b8
movq %r13, %rcx
movl (%r13), %r13d
movq 0x8(%rcx), %rbp
movq 0x10(%rcx), %xmm0
movdqa %xmm0, 0x1a0(%rsp)
movq 0x18(%rcx), %rax
movq %rax, 0x50(%rsp)
movq 0x20(%rcx), %rax
movq %rax, 0xc8(%rsp)
leaq 0x564c(%rip), %rax      # 0x12094
movq %rax, 0x68(%rsp)
jmp 0xc54e
movq 0xb59f(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x55f1(%rip), %rdi      # 0x12054
pushq $0x11
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
movl $0x1, 0x20(%r14)
jmp 0xc499
movq 0xb576(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x3fba(%rip), %rdi      # 0x10a46
pushq $0x1a
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
jmp 0xb91a
leaq 0x4091(%rip), %rsi      # 0x10b34
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcadf
movl $0x4, 0x20(%r14)
jmp 0xb282
movq 0xb534(%rip), %rax      # 0x17ff8
movq (%rax), %rdi
movq 0x30(%r15), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x559b(%rip), %rsi      # 0x12075
jmp 0xb913
leaq 0x4026(%rip), %rsi      # 0x10b0c
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcb85
movq 0x30(%r15), %rax
movq 0x10(%rax), %rdx
leaq 0x228(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x20(%r12), %rax
movq %rax, 0x20(%rsp)
movdqu (%r12), %xmm0
movupd 0x10(%r12), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
callq 0xeeb3
testl %eax, %eax
je 0xb282
movq %r15, %rdi
jmp 0xcc47
movq 0xb4a8(%rip), %rax      # 0x17ff8
movq (%rax), %rdi
leaq 0x5546(%rip), %rsi      # 0x120a0
movq 0x68(%rsp), %rdx
jmp 0xb913
movq 0xb48d(%rip), %rax      # 0x17ff8
movq (%rax), %rdi
leaq 0x3f05(%rip), %rsi      # 0x10a7a
movl 0x68(%rsp), %edx
xorl %eax, %eax
callq 0x2160
jmp 0xb91a
leaq 0x3f8d(%rip), %rsi      # 0x10b19
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcc5a
xorl %ebp, %ebp
movslq 0x28(%r15), %rax
cmpq %rax, %rbp
jge 0xb282
movq 0x30(%r15), %rax
movq (%rax,%rbp,8), %rax
movq %rax, 0x50(%rsp)
movq (%rax), %r12
movq %r12, %rdi
leaq 0x3f46(%rip), %rsi      # 0x10b0c
callq 0x2290
pushq $0x10
popq %rcx
leaq 0x200(%rsp), %r13
testq %rax, %rax
jne 0xcbfa
movq %r12, %rdi
leaq 0x3f2f(%rip), %rsi      # 0x10b14
callq 0x2290
pushq $0x18
popq %rcx
leaq 0x1d8(%rsp), %r13
testq %rax, %rax
je 0xcc42
movq 0x50(%rsp), %rax
movq 0x30(%rax), %rax
movq (%rax,%rcx), %rdx
movq %r13, %rdi
movq %r14, %rsi
callq 0xb1b8
movq 0x20(%r13), %rax
movq %rax, 0x20(%rsp)
movdqu (%r13), %xmm0
movupd 0x10(%r13), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
callq 0xeeb3
incq %rbp
testl %eax, %eax
je 0xcb9f
movq 0x50(%rsp), %rdi
callq 0xef75
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
jmp 0xb7d7
leaq 0x3ec0(%rip), %rsi      # 0x10b21
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcd07
movq %r14, %rdi
callq 0xaca5
movq %rax, %r12
leaq 0x1b0(%rsp), %r13
leaq 0xd0(%rsp), %rbp
movq 0x30(%r15), %rax
movq 0x10(%rax), %rdx
movq %r13, %rdi
movq %r12, %rsi
callq 0xb1b8
movq 0x1d0(%rsp), %rax
movq %rax, 0x20(%rsp)
movdqu 0x1b0(%rsp), %xmm0
movupd 0x1c0(%rsp), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
callq 0xeeb3
testl %eax, %eax
je 0xcdcc
movq %r15, %rdi
callq 0xef75
movq %rbp, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0xb1b8
movl 0x20(%r12), %eax
testl %eax, %eax
je 0xcc8d
cmpl $0x4, %eax
jne 0xcdd1
andl $0x0, 0x20(%r12)
jmp 0xcc8d
leaq 0x3e19(%rip), %rsi      # 0x10b27
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcdeb
movq 0x30(%r15), %rax
movq 0x20(%rax), %rdx
leaq 0xd0(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
cmpl $0x5, (%r12)
jne 0xce76
movq 0xd8(%rsp), %rax
movq (%rax), %r13
movq %r14, %rdi
callq 0xaca5
movq %rax, %r12
movq %r13, %rbp
movq (%rbp), %rbp
cmpq 0x8(%r13), %rbp
je 0xcdcc
movq 0x30(%r15), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
movq 0x20(%rbp), %rax
movq %rax, 0x20(%rsp)
movdqu (%rbp), %xmm0
movupd 0x10(%rbp), %xmm1
movupd %xmm1, 0x10(%rsp)
movdqu %xmm0, (%rsp)
movq %r12, %rdi
callq 0xaad0
movq %r15, %rdi
callq 0xef75
leaq 0x70(%rsp), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0xb1b8
movl 0x20(%r12), %eax
testl %eax, %eax
je 0xcdc6
cmpl $0x4, %eax
jne 0xcdd1
andl $0x0, 0x20(%r12)
addq $0x28, %rbp
jmp 0xcd5e
movl 0x20(%r12), %eax
cmpl $0x2, %eax
jne 0xcdde
movl $0x2, 0x20(%r14)
movq %r12, %rdi
callq 0xcf07
jmp 0xb282
leaq 0x3d94(%rip), %rsi      # 0x10b86
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
jne 0xce1e
leaq 0x3d47(%rip), %rsi      # 0x10b4d
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
jne 0xce1e
cmpb $0x3e, (%r12)
jne 0xce9f
xorl %r13d, %r13d
leaq 0xd0(%rsp), %r12
movslq 0x28(%r15), %rax
cmpq %rax, %r13
jge 0xb282
movq 0x30(%r15), %rax
movq (%rax,%r13,8), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0xb1b8
incq %r13
cmpl $0x0, 0x20(%r14)
je 0xce29
movq 0xf0(%rsp), %rax
movq %rax, 0x20(%rbx)
movdqu 0xd0(%rsp), %xmm0
movupd 0xe0(%rsp), %xmm1
jmp 0xb2b4
movq 0xb17b(%rip), %rax      # 0x17ff8
movq (%rax), %rcx
leaq 0x50ad(%rip), %rdi      # 0x11f34
pushq $0x1c
popq %rsi
pushq $0x1
popq %rdx
callq 0x2260
movl $0x1, 0x20(%r14)
jmp 0xcd45
leaq 0x3c69(%rip), %rsi      # 0x10b0f
movq %r12, %rdi
callq 0x2290
testq %rax, %rax
je 0xcebf
movq 0x30(%r15), %rax
movq (%rax), %rdx
jmp 0xb7d1
leaq 0x3632(%rip), %rsi      # 0x104f8
movq %r12, %rdi
callq 0x2290
movq 0x8(%r15), %rdx
testq %rax, %rax
je 0xcee6
cmpb $0x3b, (%rdx)
jne 0xcee6
cmpb $0x0, 0x1(%rdx)
je 0xb282
movq 0xb10b(%rip), %rax      # 0x17ff8
movq (%rax), %rdi
leaq 0x505a(%rip), %rsi      # 0x11f51
jmp 0xb913