// File: /workspace/github_c_makefile_star2_O3/azhai[P]mlite/mlite.c
// Function: xeval
cell xeval(cell x, int cbn) {
	cell	m2,	/* Root of result list */
		a,	/* Used to append to result */
		rib;	/* Temp storage for args */
	cell	n, new;
	int	s,	/* Current state */
		c;	/* Continue */
	cell	name;	/* Name of procedure to apply */

	save(x);
	save(State_stack);
	save(Stack_bottom);
	Stack_bottom = Stack;
	s = EV_ATOM;
	c = 0;
	while (!Error_flag) {
		if (Run_stats)
			count(&Reductions);
		if (symbol_p(x)) {		/* Symbol -> Value */
			if (cbn) {
				Acc = x;
				cbn = 0;
			}
			else {
				Acc = lookup(x, Environment, 1);
				if (Error_flag)
					break;
				Acc = box_value(Acc);
			}
		}
		else if (auto_quoting_p(x) || cbn == 2) {
			Acc = x;		/* Object -> Object */
			cbn = 0;
		}
		else {				/* (...) -> Value */
			/*
			 * This block is used to DESCEND into lists.
			 * The following structure is saved on the
			 * Stack: RIB = (args append result source)
			 * The current s is saved on the State_stack.
			 */
			Acc = x;
			x = car(x);
			save_state(s);
			/* Check call-by-name built-ins and flag */
			if (special_p(x) || cbn) {
				cbn = 0;
				rib = node(Acc, Acc);	/* result/source */
				rib = node(NIL, rib);	/* append */
				rib = node(NIL, rib);	/* args */
				x = NIL;
			}
			else {
				Tmp = node(NIL, NIL);
				rib = node(Tmp, Acc);	/* result/source */
				rib = node(Tmp, rib);	/* append */
				rib = node(cdr(Acc), rib); /* args */
				Tmp = NIL;
				x = car(Acc);
			}
			save(rib);
			s = EV_ARGS;
			continue;
		}
		/*
		 * The following loop is used to ASCEND back to the
		 * root of a list, thereby performing BETA REDUCTION.
		 */
		while (!Error_flag) {
		if (s == EV_BETA) {
			/* Finish BETA reduction */
			Environment = unsave(1);
			unsave(1);		/* source expression */
			s = restore_state();
		}
		else if (s == EV_ARGS) {	/* append to list, reduce */
			rib = car(Stack);
			x = rib_args(rib);
			a = rib_append(rib);
			m2 = rib_result(rib);
			if (a != NIL) 	/* Append new member */
				car(a) = Acc;
			if (x == NIL) {	/* End of list */
				Acc = m2;
				/* Remember name of caller */
				name = car(rib_source(rib));
				if (primitive_p(car(Acc))) {
					if (cadar(Acc) == Callcc_magic)
						c = cbn = 1;
					Cons_stats = 1;
					Acc = x = apply_primitive(Acc);
					Cons_stats = 0;
				}
				else if (special_p(car(Acc))) {
					Acc = x = apply_special(Acc, &c, &s);
				}
				else if (procedure_p(car(Acc))) {
					name = symbol_p(name)? name: NIL;
					Called_procedures[Proc_ptr] = name;
					Proc_ptr++;
					if (Proc_ptr >= Proc_max)
						Proc_ptr = 0;
					tail_call();
					x = fnmatch(Acc, &s);
					c = 2;
				}
				else if (continuation_p(car(Acc))) {
					Acc = resume(Acc);
				}
				else {
					error("application of non-procedure",
						name);
					x = NIL;
				}
				if (c != 2) {
					unsave(1); /* drop source expr */
					s = restore_state();
				}
				/* Leave the ASCENDING loop and descend */
				/* once more into X. */
				if (c)
					break;
			}
			else if (atom_p(x)) {
				error("syntax error", rib_source(rib));
				x = NIL;
				break;
			}
			else {		/* X =/= NIL: append to list */
				/* Create space for next argument */
				Acc = node(NIL, NIL);
				cdr(a) = Acc;
				rib_append(rib) = cdr(a);
				rib_args(rib) = cdr(x);
				x = car(x);	/* evaluate next member */
				break;
			}
		}
		else if (s == EV_GUARD) {
			if (Acc != FALSE) {
				x = cdddar(unsave(1));	/* cases */
				x = cadar(x);		/* current body */
			}
			else {
				x = car(Stack);		/* application */
				n = cddddr(car(x));	/* next case */
				x = next_case(x, n);
				unsave(1);
				Environment = cdr(Environment);
				cbn = 1;
			}
			s = EV_BETA;
			c = 1;
			break;
		}
		else if (s == EV_IF_PRED) {
			x = unsave(1);
			unsave(1);	/* source expression */
			s = restore_state();
			if (Acc != FALSE)
				x = cadr(x);
			else
				x = caddr(x);
			c = 1;
			break;
		}
		else if (s == EV_AND || s == EV_OR) {
			Stack = node(cdar(Stack), cdr(Stack));
			if (	(Acc == FALSE && s == EV_AND) ||
				(Acc != FALSE && s == EV_OR) ||
				car(Stack) == NIL
			) {
				unsave(2);	/* state, source expr */
				s = restore_state();
				x = Acc;
				cbn = 2;
			}
			else if (cdar(Stack) == NIL) {
				x = caar(Stack);
				unsave(2);	/* state, source expr */
				s = restore_state();
			}
			else {
				x = caar(Stack);
			}
			c = 1;
			break;
		}
		else if (s == EV_BEGIN) {
			Stack = node(cdar(Stack), cdr(Stack));
			if (cdar(Stack) == NIL) {
				x = caar(Stack);
				unsave(2);	/* state, source expr */
				s = restore_state();
			}
			else {
				x = caar(Stack);
			}
			c = 1;
			break;
		}
		else if (s == EV_SET_VAL || s == EV_MACRO) {
			char err[] = "define_syntax: expected fn, got";

			if (s == EV_MACRO) {
				if (procedure_p(Acc)) {
					Acc = new_atom(T_SYNTAX, Acc);
				}
				if (syntax_p(Acc)) {
					/* Acc = Acc; */
				}
				else {
					error(err, Acc);
					break;
				}
			}
			x = unsave(1);
			unsave(1);	/* source expression */
			s = restore_state();
			box_value(x) = Acc;
			Acc = x = UNIT;
			c = 0;
			break;
		}
		else if (s == EV_RAISE) {
			x = raise_exception(Acc);
			unsave(1);
			s = restore_state();
			c = 0;
			break;
		}
		else if (s == EV_INPUT || s == EV_OUTPUT) {
			char inerr[]  = ">>: expected instream, got";
			char outerr[] = "<<: expected outstream, got";

			if (	instream_p(car(Stack)) ||
				outstream_p(car(Stack))
			) {
				if (s == EV_INPUT) {
					Stream_flags[Instream] &= ~LOCK_TAG;
					Instream = stream_id(car(Stack));
				}
				else {
					Stream_flags[Outstream] &= ~LOCK_TAG;
					Outstream = stream_id(car(Stack));
				}
				unsave(2);
				s = restore_state();
			}
			else {
				x = car(Stack);
				if (s == EV_INPUT) {
					if (!instream_p(Acc))
						error(inerr, Acc);
					set(car(Stack), make_stream(Instream,
								T_INSTREAM));
					Instream = stream_id(Acc);
					Stream_flags[Instream] |= LOCK_TAG;
				}
				else {
					if (!outstream_p(Acc))
						error(outerr, Acc);
					set(car(Stack), make_stream(Outstream,
								T_OUTSTREAM));
					Outstream = stream_id(Acc);
					Stream_flags[Outstream] |= LOCK_TAG;
				}
				c = 1;
				break;
			}
		}
		else { /* s == EV_ATOM */
			break;
		}}
		if (c) {	/* Continue evaluation if requested */
			c = 0;
			continue;
		}
		if (Stack == Stack_bottom)
			break;
	}
	Stack = Stack_bottom;
	Stack_bottom = unsave(1);
	State_stack = unsave(1);
	unsave(1);
	return Acc;		/* Return the evaluated expr */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movl %esi, %ebx
movq %rdi, %r15
movq 0xb436(%rip), %rsi      # 0x1e128
xorl %r14d, %r14d
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xb425(%rip)      # 0x1e128
movq 0xb42e(%rip), %rdi      # 0x1e138
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xb40d(%rip)      # 0x1e128
movq 0xb40e(%rip), %rdi      # 0x1e130
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xb3f5(%rip)      # 0x1e128
movq %rax, 0xb3f6(%rip)      # 0x1e130
movl %r14d, -0x2c(%rbp)
movl %r14d, -0x30(%rbp)
cmpl %r14d, 0xb86b(%rip)     # 0x1e5b4
jne 0x13983
jmp 0x12dc0
movq $-0x1, %rcx
testq %rsi, %rsi
js 0x12d7d
testb $0x10, (%rdx,%rsi)
movl $0x0, %edi
je 0x12d7f
cmpq $-0x22, (%rax,%rsi,8)
movq $-0x1, %rax
cmovneq %rax, %rsi
movq %rsi, %rcx
jmp 0x12d7f
xorl %edi, %edi
movslq 0xb82a(%rip), %rax      # 0x1e5b0
leal 0x1(%rax), %edx
cmpl 0xb4fd(%rip), %edx      # 0x1e28c
leaq 0xb4fa(%rip), %rsi      # 0x1e290
movq %rcx, (%rsi,%rax,8)
cmovgel %edi, %edx
movl %edx, 0xb80d(%rip)      # 0x1e5b0
callq 0x13f3a
movq 0xb391(%rip), %rdi      # 0x1e140
leaq -0x2c(%rbp), %rsi
callq 0x13d94
movq %rax, %r15
jmp 0x13968
cmpl $0x0, 0xb859(%rip)      # 0x1e620
je 0x12dd5
leaq 0xbdf0(%rip), %rdi      # 0x1ebc0
callq 0x334f
movq %r15, %rax
testq %r15, %r15
js 0x12fcf
movq 0xb7f8(%rip), %rax      # 0x1e5e0
movzbl (%rax,%r15), %ecx
testb $0x10, %cl
je 0x12e43
movq 0xb377(%rip), %rax      # 0x1e170
cmpq $-0x22, (%rax,%r15,8)
jne 0x12e43
movq %r15, %rax
testl %ebx, %ebx
jne 0x12fcf
movq 0xb2f6(%rip), %rsi      # 0x1e108
movq %r15, %rdi
movl $0x1, %edx
callq 0xdb9e
movq %rax, 0xb31a(%rip)      # 0x1e140
cmpl $0x0, 0xb787(%rip)      # 0x1e5b4
jne 0x1397c
movq 0xb786(%rip), %rcx      # 0x1e5c0
movq (%rcx,%rax,8), %rax
jmp 0x12fcf
movq %r15, %rax
testb $0x1, %cl
jne 0x12fcf
movq %r15, %rax
testb $0x10, %cl
jne 0x12fcf
movq %r15, %rax
cmpl $0x2, %ebx
je 0x12fcf
movq %r15, 0xb2d2(%rip)      # 0x1e140
movq 0xb2fb(%rip), %rax      # 0x1e170
movq (%rax,%r15,8), %r14
movslq -0x2c(%rbp), %rdi
movq 0xb2b4(%rip), %rsi      # 0x1e138
movl $0x1, %edx
callq 0x36e8
movq %rax, 0xb2a3(%rip)      # 0x1e138
cmpq 0xb80c(%rip), %r14      # 0x1e6a8
je 0x13390
cmpq 0xb8af(%rip), %r14      # 0x1e758
je 0x13390
cmpq 0xb88a(%rip), %r14      # 0x1e740
je 0x13390
cmpq 0xb825(%rip), %r14      # 0x1e6e8
je 0x13390
cmpq 0xb830(%rip), %r14      # 0x1e700
je 0x13390
cmpq 0xb82b(%rip), %r14      # 0x1e708
je 0x13390
cmpq 0xb87e(%rip), %r14      # 0x1e768
je 0x13390
cmpq 0xb891(%rip), %r14      # 0x1e788
je 0x13390
cmpq 0xb834(%rip), %r14      # 0x1e738
je 0x13390
cmpq 0xb84f(%rip), %r14      # 0x1e760
je 0x13390
cmpq 0xb852(%rip), %r14      # 0x1e770
je 0x13390
cmpq 0xb81d(%rip), %r14      # 0x1e748
je 0x13390
cmpq 0xb818(%rip), %r14      # 0x1e750
je 0x13390
cmpq 0xb84b(%rip), %r14      # 0x1e790
je 0x13390
testl %ebx, %ebx
jne 0x13390
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xb1a1(%rip)      # 0x1e110
movq 0xb1ca(%rip), %rsi      # 0x1e140
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq 0xb189(%rip), %rdi      # 0x1e110
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0xb628(%rip), %rcx      # 0x1e5c0
movq 0xb1a1(%rip), %rdx      # 0x1e140
movq (%rcx,%rdx,8), %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq $-0x1, 0xb158(%rip) # 0x1e110
movq 0xb1b1(%rip), %rcx      # 0x1e170
movq 0xb17a(%rip), %rdx      # 0x1e140
movq (%rcx,%rdx,8), %r15
jmp 0x133ca
movq %rax, 0xb16a(%rip)      # 0x1e140
xorl %ebx, %ebx
cmpl $0x0, 0xb5d5(%rip)      # 0x1e5b4
je 0x12ffa
movq 0xb140(%rip), %rax      # 0x1e128
cmpq 0xb141(%rip), %rax      # 0x1e130
jne 0x1396f
jmp 0x1397c
xorl %r13d, %r13d
movl -0x2c(%rbp), %r14d
xorl %ebx, %ebx
leal -0x1(%r14), %eax
cmpl $0x3, %eax
ja 0x130fd
leaq 0x3125(%rip), %rcx      # 0x1613c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0xb149(%rip), %rax      # 0x1e170
movq 0xb0fa(%rip), %rcx      # 0x1e128
movq (%rax,%rcx,8), %r14
movq (%rax,%r14,8), %r15
movq 0xb583(%rip), %rdx      # 0x1e5c0
movq (%rdx,%r14,8), %rcx
movq (%rax,%rcx,8), %r12
movq (%rdx,%rcx,8), %rcx
movq (%rax,%rcx,8), %rdi
cmpq $-0x1, %r12
je 0x1305e
movq 0xb0e6(%rip), %rcx      # 0x1e140
movq %rcx, (%rax,%r12,8)
cmpq $-0x1, %r15
jne 0x135f1
movq %rdi, 0xb0d1(%rip)      # 0x1e140
movq (%rdx,%r14,8), %rcx
movq (%rdx,%rcx,8), %rcx
movq (%rdx,%rcx,8), %rcx
movq (%rax,%rcx,8), %rsi
movq (%rax,%rdi,8), %rcx
testq %rcx, %rcx
js 0x13236
movq 0xb54d(%rip), %r8       # 0x1e5e0
testb $0x1, (%r8,%rcx)
je 0x13236
cmpq $-0x1d, (%rax,%rcx,8)
jne 0x13236
movq (%rdx,%rcx,8), %rcx
movq (%rax,%rcx,8), %rax
xorl %r12d, %r12d
cmpq 0xbb2d(%rip), %rax      # 0x1ebe8
jne 0x130d5
movl $0x1, -0x30(%rbp)
movl $0x1, %r13d
movl $0x1, %r12d
movl $0x1, %ebx
movl $0x1, 0xb575(%rip)      # 0x1e654
callq 0x125fe
movq %rax, %r15
movq %rax, 0xb052(%rip)      # 0x1e140
movl $0x0, 0xb55c(%rip)      # 0x1e654
jmp 0x13339
movl %r14d, %eax
andl $-0x2, %eax
cmpl $0x8, %eax
je 0x1355d
cmpl $0x7, %r14d
je 0x1362c
leal -0x5(%r14), %ecx
cmpl $0x1, %ecx
jbe 0x136bb
cmpl $0xc, %r14d
je 0x137bc
cmpl $0xa, %eax
jne 0x1395f
movups 0x484e(%rip), %xmm0     # 0x1798b
movups %xmm0, -0x65(%rbp)
movaps 0x4838(%rip), %xmm0     # 0x17980
movaps %xmm0, -0x70(%rbp)
movups 0x4859(%rip), %xmm0     # 0x179ac
movups %xmm0, -0x44(%rbp)
movaps 0x4842(%rip), %xmm0     # 0x179a0
movaps %xmm0, -0x50(%rbp)
movq 0xb007(%rip), %rax      # 0x1e170
movq 0xafb8(%rip), %rcx      # 0x1e128
movq (%rax,%rcx,8), %r12
testq %r12, %r12
js 0x133f0
movq 0xb45c(%rip), %rdx      # 0x1e5e0
movb (%rdx,%r12), %dl
notb %dl
testb $0x21, %dl
jne 0x133f0
cmpq $-0x17, (%rax,%r12,8)
je 0x131a5
cmpq $-0x19, (%rax,%r12,8)
jne 0x133f0
cmpl $0xa, %r14d
leaq 0xb0d0(%rip), %rdx      # 0x1e280
leaq 0xb4e1(%rip), %rsi      # 0x1e698
cmoveq %rsi, %rdx
movslq (%rdx), %rsi
leaq 0xb43b(%rip), %rdi      # 0x1e600
andb $0x7f, (%rsi,%rdi)
movq 0xb3f0(%rip), %rsi      # 0x1e5c0
movq (%rax,%rcx,8), %rcx
movq (%rsi,%rcx,8), %rcx
movl (%rax,%rcx,8), %eax
movl %eax, (%rdx)
movl $0x2, %edi
jmp 0x131fa
movl $0x1, %edi
callq 0x384f
movq %rax, 0xaf13(%rip)      # 0x1e108
movl $0x1, %edi
callq 0x384f
movq 0xaf32(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xaf59(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %r14d
movq 0xb39e(%rip), %rcx      # 0x1e5c0
movq (%rcx,%rax,8), %rax
movq %rax, 0xaf0b(%rip)      # 0x1e138
movl %r14d, -0x2c(%rbp)
jmp 0x1337e
cmpq 0xb46b(%rip), %rcx      # 0x1e6a8
je 0x132fa
cmpq 0xb50e(%rip), %rcx      # 0x1e758
je 0x132fa
cmpq 0xb4e9(%rip), %rcx      # 0x1e740
je 0x132fa
cmpq 0xb484(%rip), %rcx      # 0x1e6e8
je 0x132fa
cmpq 0xb48f(%rip), %rcx      # 0x1e700
je 0x132fa
cmpq 0xb48a(%rip), %rcx      # 0x1e708
je 0x132fa
cmpq 0xb4e1(%rip), %rcx      # 0x1e768
je 0x132fa
cmpq 0xb4f8(%rip), %rcx      # 0x1e788
je 0x132fa
cmpq 0xb49f(%rip), %rcx      # 0x1e738
je 0x132fa
cmpq 0xb4be(%rip), %rcx      # 0x1e760
je 0x132fa
cmpq 0xb4c5(%rip), %rcx      # 0x1e770
je 0x132fa
cmpq 0xb494(%rip), %rcx      # 0x1e748
je 0x132fa
cmpq 0xb493(%rip), %rcx      # 0x1e750
je 0x132fa
cmpq 0xb4ca(%rip), %rcx      # 0x1e790
je 0x132fa
testq %rcx, %rcx
js 0x13323
movq 0xb30c(%rip), %rdx      # 0x1e5e0
testb $0x1, (%rdx,%rcx)
je 0x13323
cmpq $-0x1e, (%rax,%rcx,8)
je 0x12d51
cmpq $-0x25, (%rax,%rcx,8)
jne 0x13323
callq 0x105d1
movq %rax, 0xae48(%rip)      # 0x1e140
jmp 0x1332f
leaq -0x30(%rbp), %rsi
leaq -0x2c(%rbp), %rdx
callq 0xeecb
movq %rax, %r15
movq %rax, 0xae2f(%rip)      # 0x1e140
movl -0x30(%rbp), %r12d
movl %r12d, %r13d
cmpl $0x2, %r12d
jne 0x13339
jmp 0x13968
leaq 0x3e21(%rip), %rdi      # 0x1714b
callq 0x33eb
xorl %r12d, %r12d
movq $-0x1, %r15
movl $0x1, %edi
callq 0x384f
movq 0xadee(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xae15(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %r14d
movq 0xb25a(%rip), %rcx      # 0x1e5c0
movq (%rcx,%rax,8), %rax
movq %rax, 0xadc7(%rip)      # 0x1e138
movl %r14d, -0x2c(%rbp)
testl %r12d, %r12d
jne 0x1395f
cmpl $0x0, 0xb22f(%rip)      # 0x1e5b4
je 0x13003
jmp 0x1395f
movq 0xada9(%rip), %rdi      # 0x1e140
movq %rdi, %rsi
xorl %edx, %edx
callq 0x36e8
movq $-0x1, %r15
movq $-0x1, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq $-0x1, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x36e8
movq 0xad57(%rip), %rsi      # 0x1e128
xorl %ebx, %ebx
movq %rax, %rdi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xad44(%rip)      # 0x1e128
movl $0x1, -0x2c(%rbp)
jmp 0x1396f
movq 0xad49(%rip), %rsi      # 0x1e140
cmpl $0xa, %r14d
jne 0x13444
movq $-0x17, %r14
testq %rsi, %rsi
js 0x138b8
movq 0xb1cc(%rip), %rcx      # 0x1e5e0
movb (%rcx,%rsi), %cl
notb %cl
leaq -0x70(%rbp), %rdi
leaq 0xb274(%rip), %r15      # 0x1e698
testb $0x21, %cl
jne 0x138d0
cmpq $-0x17, (%rax,%rsi,8)
leaq 0xb25f(%rip), %r15      # 0x1e698
jne 0x138d0
jmp 0x138d5
movq $-0x19, %r14
testq %rsi, %rsi
js 0x138c5
movq 0xb185(%rip), %rcx      # 0x1e5e0
movb (%rcx,%rsi), %cl
notb %cl
leaq -0x50(%rbp), %rdi
leaq 0xae15(%rip), %r15      # 0x1e280
testb $0x21, %cl
jne 0x138d0
cmpq $-0x19, (%rax,%rsi,8)
leaq 0xae00(%rip), %r15      # 0x1e280
jne 0x138d0
jmp 0x138d5
cmpq $-0x3, 0xacad(%rip)     # 0x1e140
jne 0x1385c
movq 0xacd0(%rip), %rax      # 0x1e170
movq 0xac81(%rip), %rcx      # 0x1e128
movq (%rax,%rcx,8), %rdi
movq 0xb10e(%rip), %rcx      # 0x1e5c0
movq (%rax,%rdi,8), %rax
movq (%rcx,%rax,8), %rax
movq (%rcx,%rax,8), %rax
movq (%rcx,%rax,8), %rax
movq (%rcx,%rax,8), %rsi
callq 0x13d18
movq %rax, %r15
movl $0x1, %ebx
movl $0x1, %edi
callq 0x384f
movq 0xb0dc(%rip), %rax      # 0x1e5c0
movq 0xac1d(%rip), %rcx      # 0x1e108
movq (%rax,%rcx,8), %rax
movq %rax, 0xac12(%rip)      # 0x1e108
jmp 0x1389e
movl $0x1, %edi
callq 0x384f
movq %rax, %r12
movl $0x1, %edi
callq 0x384f
movq 0xac1f(%rip), %rdx      # 0x1e138
cmpq $-0x1, %rdx
je 0x139cc
movq 0xac46(%rip), %rax      # 0x1e170
movl (%rax,%rdx,8), %esi
movq 0xb08c(%rip), %rcx      # 0x1e5c0
movq (%rcx,%rdx,8), %rdx
movq %rdx, 0xabf9(%rip)      # 0x1e138
movl %esi, -0x2c(%rbp)
cmpq $-0x3, 0xabf6(%rip)     # 0x1e140
jne 0x13550
movq (%rcx,%r12,8), %r12
movq (%rcx,%r12,8), %rcx
movq (%rax,%rcx,8), %r15
jmp 0x13968
movq 0xb05c(%rip), %rax      # 0x1e5c0
movq 0xac05(%rip), %rcx      # 0x1e170
movq 0xabb6(%rip), %rdx      # 0x1e128
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq (%rax,%rdx,8), %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xab9c(%rip)      # 0x1e128
movq 0xabad(%rip), %rcx      # 0x1e140
cmpq $-0x3, %rcx
sete %dl
cmpl $0x8, %r14d
sete %sil
testb %dl, %sil
jne 0x13811
cmpq $-0x3, %rcx
setne %cl
cmpl $0x9, %r14d
sete %dl
testb %cl, %dl
jne 0x13811
movq 0xaba8(%rip), %rcx      # 0x1e170
movq (%rcx,%rax,8), %rax
cmpq $-0x1, %rax
je 0x13811
movq 0xafe3(%rip), %rdx      # 0x1e5c0
cmpq $-0x1, (%rdx,%rax,8)
movq (%rcx,%rax,8), %r15
jne 0x13968
jmp 0x1367c
testq %r15, %r15
js 0x13608
movq 0xafe3(%rip), %rax      # 0x1e5e0
testb $0x11, (%rax,%r15)
je 0x1391d
movq (%rdx,%r14,8), %rax
movq (%rdx,%rax,8), %rax
movq (%rdx,%rax,8), %rsi
leaq 0x35bb(%rip), %rdi      # 0x16bd6
callq 0x33eb
movq $-0x1, %r15
jmp 0x1395f
movq 0xaf8d(%rip), %rax      # 0x1e5c0
movq 0xab36(%rip), %rcx      # 0x1e170
movq 0xaae7(%rip), %rdx      # 0x1e128
movq (%rcx,%rdx,8), %rcx
movq (%rax,%rcx,8), %rdi
movq (%rax,%rdx,8), %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xaacd(%rip)      # 0x1e128
movq 0xaf5e(%rip), %rcx      # 0x1e5c0
movq 0xab07(%rip), %rdx      # 0x1e170
movq (%rdx,%rax,8), %rax
cmpq $-0x1, (%rcx,%rax,8)
movq (%rdx,%rax,8), %r15
jne 0x13968
movl $0x2, %edi
callq 0x384f
movq 0xaaab(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xaad2(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %ecx
movq 0xaf18(%rip), %rdx      # 0x1e5c0
movq (%rdx,%rax,8), %rax
movq %rax, 0xaa85(%rip)      # 0x1e138
movl %ecx, -0x2c(%rbp)
jmp 0x13968
movaps 0x42ae(%rip), %xmm0     # 0x17970
movaps %xmm0, -0x40(%rbp)
movaps 0x4293(%rip), %xmm0     # 0x17960
movaps %xmm0, -0x50(%rbp)
cmpl $0x6, %r14d
jne 0x13749
movq 0xaa62(%rip), %rsi      # 0x1e140
testq %rsi, %rsi
js 0x138aa
movq 0xaef2(%rip), %rax      # 0x1e5e0
testb $0x1, (%rax,%rsi)
je 0x13726
movq 0xaa75(%rip), %rax      # 0x1e170
cmpq $-0x1e, (%rax,%rsi,8)
jne 0x13726
movq $-0x23, %rdi
movl $0x1, %edx
callq 0x36e8
movq %rax, %rsi
movq %rax, 0xaa23(%rip)      # 0x1e140
testq %rax, %rax
js 0x138aa
movq 0xaeb3(%rip), %rax      # 0x1e5e0
testb $0x1, (%rax,%rsi)
je 0x138aa
movq 0xaa32(%rip), %rax      # 0x1e170
cmpq $-0x23, (%rax,%rsi,8)
jne 0x138aa
movl $0x1, %edi
callq 0x384f
movq %rax, %r12
movl $0x1, %edi
callq 0x384f
movq 0xa9d1(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xa9f8(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %ecx
movq 0xae3e(%rip), %rdx      # 0x1e5c0
movq (%rdx,%rax,8), %rax
movq %rax, 0xa9ab(%rip)      # 0x1e138
movl %ecx, -0x2c(%rbp)
movq 0xa9a9(%rip), %rax      # 0x1e140
movq %rax, (%rdx,%r12,8)
movq $-0x6, 0xa99a(%rip) # 0x1e140
movl $0x0, -0x30(%rbp)
movq $-0x6, %r15
xorl %r13d, %r13d
jmp 0x1395f
movq 0xa97d(%rip), %rdi      # 0x1e140
callq 0x13ff5
movq %rax, %r15
movl $0x1, %edi
callq 0x384f
movq 0xa95c(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xa983(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %ecx
movq 0xadc9(%rip), %rdx      # 0x1e5c0
movq (%rdx,%rax,8), %rax
movq %rax, 0xa936(%rip)      # 0x1e138
movl %ecx, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
jmp 0x12fe1
movl $0x2, %edi
callq 0x384f
movq 0xa916(%rip), %rax      # 0x1e138
cmpq $-0x1, %rax
je 0x139cc
movq 0xa93d(%rip), %rcx      # 0x1e170
movl (%rcx,%rax,8), %ecx
movq 0xad83(%rip), %rdx      # 0x1e5c0
movq (%rdx,%rax,8), %rax
movq %rax, 0xa8f0(%rip)      # 0x1e138
movl %ecx, -0x2c(%rbp)
movl $0x2, %ebx
movq 0xa8e9(%rip), %r15      # 0x1e140
jmp 0x13968
movq 0xad5d(%rip), %r14      # 0x1e5c0
movq 0xa906(%rip), %r15      # 0x1e170
movl $0x1, %edi
callq 0x384f
movq (%r15,%rax,8), %rax
movq (%r14,%rax,8), %rax
movq (%r14,%rax,8), %rax
movq (%r14,%rax,8), %rax
movq 0xa8e5(%rip), %rcx      # 0x1e170
movq 0xad2e(%rip), %rdx      # 0x1e5c0
movq (%rcx,%rax,8), %rax
movq (%rdx,%rax,8), %rax
movq (%rcx,%rax,8), %r15
movl $0x2, -0x2c(%rbp)
jmp 0x13968
leaq -0x50(%rbp), %rdi
callq 0x33eb
jmp 0x1395f
leaq -0x70(%rbp), %rdi
leaq 0xadd5(%rip), %r15      # 0x1e698
jmp 0x138d0
leaq -0x50(%rbp), %rdi
leaq 0xa9b0(%rip), %r15      # 0x1e280
callq 0x33eb
movl (%r15), %edi
movq %r14, %rsi
callq 0x116b8
movq 0xa889(%rip), %rcx      # 0x1e170
movq 0xa83a(%rip), %rdx      # 0x1e128
movq %rax, (%rcx,%rdx,8)
movq 0xacc7(%rip), %rax      # 0x1e5c0
movq 0xa840(%rip), %rdx      # 0x1e140
movq (%rax,%rdx,8), %rax
movq (%rcx,%rax,8), %rax
movl %eax, (%r15)
cltq
leaq 0xacec(%rip), %rcx      # 0x1e600
orb $-0x80, (%rax,%rcx)
movq %r12, %r15
jmp 0x13968
movq $-0x1, %rdi
movq $-0x1, %rsi
xorl %edx, %edx
callq 0x36e8
movq %rax, 0xa807(%rip)      # 0x1e140
movq 0xac80(%rip), %rcx      # 0x1e5c0
movq %rax, (%rcx,%r12,8)
movq 0xa825(%rip), %rdx      # 0x1e170
movq (%rcx,%r14,8), %rsi
movq %rax, (%rdx,%rsi,8)
movq (%rcx,%r15,8), %rax
movq %rax, (%rdx,%r14,8)
movq (%rdx,%r15,8), %r15
testl %r13d, %r13d
je 0x12fe1
movl $0x0, -0x30(%rbp)
cmpl $0x0, 0xac3e(%rip)      # 0x1e5b4
je 0x12dc0
movq 0xa7ad(%rip), %rax      # 0x1e130
movq %rax, 0xa79e(%rip)      # 0x1e128
movl $0x1, %edi
callq 0x384f
movq %rax, 0xa795(%rip)      # 0x1e130
movl $0x1, %edi
callq 0x384f
movq %rax, 0xa78c(%rip)      # 0x1e138
movl $0x1, %edi
callq 0x384f
movq 0xa783(%rip), %rax      # 0x1e140
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x373c(%rip), %rdi      # 0x1710f
callq 0x3ab4