// File: /workspace/github_c_makefile_star2_O1/oridb[P]mc/6/simp.c
// Function: rval
static Node *
rval(Simp *s, Node *n, Node *dst)
{
	Node *t, *u, *v; /* temporary nodes */
	Node *r; /* expression result */
	Node **args;
	vlong idx, nelt;
	size_t i;
	Type *ty;

	r = NULL;
	args = n->expr.args;
	switch (exprop(n)) {
	case Osize:
		r = mkintlit(n->loc, size(args[0]));
		r->expr.type = exprtype(n);
		break;
	case Oslice:
		r = simpslice(s, n, dst);
		break;
	case Oidx:
		t = rval(s, n->expr.args[0], NULL);
		u = idxaddr(s, t, n->expr.args[1]);
		r = load(u);
		break;
	case Otupmemb:
	case Omemb:
		t = membaddr(s, n);
		r = load(t);
		break;
	case Osllen:
		r = seqlen(s, args[0], exprtype(n));
		break;
	case Oucon:
		r = simpucon(s, n, dst);
		break;
	case Outag:
		r = uconid(s, args[0]);
		break;
	case Oudata:
		r = simpuget(s, n, dst);
		break;
	case Otup:
		r = simptup(s, n, dst);
		break;
	case Oarr:
		if (!dst)
			dst = temp(s, n);
		ty = exprtype(dst);
		t = addr(s, dst, exprtype(dst));
		if (!getintlit(ty->asize, &nelt))
			die("array missing size");
		/* we only need to clear if we don't have things fully initialized */
		idx = 0;
		if (nelt != n->expr.nargs)
			append(s, mkexpr(n->loc, Oclear, t, mkintlit(n->loc, size(n)), NULL));
		for (i = 0; i < n->expr.nargs; i++) {
			if (!args[i]->expr.idx)
				idx++;
			else if (!getintlit(args[i]->expr.idx, &idx))
				die("non-numeric array size");
			assert(idx < nelt);
			assignat(s, t, size(args[i])*idx, rval(s, args[i], NULL));
		}
		r = dst;
		break;
	case Ostruct:
		if (!dst)
		dst = temp(s, n);
		u = mkexpr(dst->loc, Odef, dst, NULL);
		u->expr.type = mktype(u->loc, Tyvoid);
		append(s, u);
		t = addr(s, dst, exprtype(dst));
		ty = exprtype(n);
		/* we only need to clear if we don't have things fully initialized */
		if (tybase(ty)->nmemb != n->expr.nargs)
			append(s, mkexpr(n->loc, Oclear, t, mkintlit(n->loc, size(n)), NULL));
		for (i = 0; i < n->expr.nargs; i++)
			assignat(s, t, offset(n, args[i]->expr.idx), rval(s, args[i], NULL));
		r = dst;
		break;
	case Ocast:
		r = simpcast(s, args[0], exprtype(n));
		break;

	/* ++expr(x)
	 *  => args[0] = args[0] + 1
	 *     expr(x) */
	case Olit:
		switch (args[0]->lit.littype) {
		case Lvoid:
		case Lchr:
		case Lbool:
		case Llbl:
			r = n;
			break;
		case Lint:
			/* we can only have up to 4 byte immediates, but they
			 * can be moved into 64 bit regs */
			if ((uint64_t)args[0]->lit.intval < 0x7fffffffULL)
				r = n;
			else
				r = simpblob(s, n);
			break;
		case Lstr: case Lflt:
			r = simpblob(s, n);
			break;
		case Lfunc:
			r = capture(s, n, dst);
			break;
		}
		break;
	case Ovar:
		r = loadvar(s, n, dst);
		break;;
	case Ogap:
		fatal(n, "'_' may not be an rvalue");
		break;
	case Oret:
		/*
		 * Compute and put the correct value into s->ret. In the case of ArgBig
		 * and ArgReg, exfiltrate the value from the function. In the case of
		 * ArgAggr_XYZ, put a pointer to the value where the function
		 * epilogue can access it.
		 */
		switch (s->rettype) {
		case ArgAggrI:
		case ArgAggrF:
		case ArgAggrII:
		case ArgAggrIF:
		case ArgAggrFI:
		case ArgAggrFF:
			t = s->ret;
			u = rval(s, args[0], NULL);
			u = addr(s, u, exprtype(args[0]));
			v = set(t, u);
			append(s, v);
		case ArgBig:
			t = rval(s, args[0], NULL);
			t = addr(s, t, exprtype(args[0]));
			u = disp(n->loc, size(args[0]));
			v = mkexpr(n->loc, Oblit, s->ret, t, u, NULL);
			append(s, v);
			break;
		case ArgVoid:
			rval(s, args[0], NULL);
			break;
		case ArgReg:
			t = s->ret;
			u = rval(s, args[0], NULL);
			t = set(t, u);
			append(s, t);
			break;
		}
		append(s, mkexpr(n->loc, Oret, NULL));
		break;
	case Oasn:
		r = assign(s, args[0], args[1]);
		break;
	case Ocall:
		r = simpcall(s, n, dst);
		break;
	case Oaddr:
		t = lval(s, args[0]);
		if (exprop(t) == Ovar) /* Ovar is the only one that doesn't return Oderef(Oaddr(...)) */
			r = addr(s, t, exprtype(t));
		else
			r = t->expr.args[0];
		break;
	case Oneg:
		if (istyfloat(exprtype(n))) {
			t = mkfloat(n->loc, -1.0);
			u = mkexpr(n->loc, Olit, t, NULL);
			t->lit.type = n->expr.type;
			u->expr.type = n->expr.type;
			v = simpblob(s, u);
			r = mkexpr(n->loc, Ofmul, v, rval(s, args[0], NULL), NULL);
			r->expr.type = n->expr.type;
		} else {
			r = visit(s, n);
		}
		break;
	case Otupget:
		assert(exprop(args[1]) == Olit);
		i = args[1]->expr.args[0]->lit.intval;
		t = rval(s, args[0], NULL);
		r = tupget(s, t, i, dst);
		break;
	case Olor: case Oland:
	case Oaddeq: case Osubeq: case Omuleq: case Odiveq: case Omodeq:
	case Oboreq: case Obandeq: case Obxoreq: case Obsleq: case Obsreq:
	case Opreinc: case Opredec:
	case Opostinc: case Opostdec:
                die("invalid operator: should have been removed");
	case Obad:
		die("bad operator");
		break;
	default:
		if (istyfloat(exprtype(n))) {
			switch (exprop(n)) {
			case Oadd:	n->expr.op = Ofadd;	break;
			case Osub:	n->expr.op = Ofsub;	break;
			case Omul:	n->expr.op = Ofmul;	break;
			case Odiv:	n->expr.op = Ofdiv;	break;
			default:	break;
			}
		}
		r = visit(s, n);
		break;
	}
	return r;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r15
movq %rsi, %rbp
movq %rdi, %rbx
movq 0x50(%rsi), %r14
movq %rsi, %rdi
callq 0x1d672
cmpl $0x45, %eax
ja 0x101c0
movl %eax, %eax
leaq 0x225c8(%rip), %rcx     # 0x32110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
movq %rbp, 0x8(%rsp)
jmpq *%rax
movq %rbx, %r15
movq 0x50(%rbp), %rbx
movq (%rbx), %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
movq %rbp, %r12
movl (%rax), %ebp
movq (%rbx), %rsi
movq %r15, %rdi
callq 0x1144e
movq %rax, %r14
cmpl $0x12, %ebp
je 0xfb9e
movq %r12, %rdi
callq 0x1e5d4
movq %r15, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %r14
movq (%rbx), %rdi
movq 0x8(%rbx), %rsi
callq 0x12b14
movq (%r12), %rdi
movl %eax, %esi
callq 0x1d7ca
movq 0x5176c(%rip), %rcx     # 0x61328
movq %rcx, 0x20(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0xf90b
movq %rax, %rbx
movq (%r12), %rdi
movq 0x20(%r12), %rsi
callq 0x231bc
movq %rax, 0x20(%rbx)
movq %rbx, %rdi
jmp 0x10330
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
movq %rax, %r13
movq 0x50(%rbp), %rax
movq (%rax), %rsi
movq %r13, %rdi
callq 0x233cc
testq %rax, %rax
je 0x10b78
movq %rax, %r12
testq %r15, %r15
jne 0xfc29
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq %r13, %rdi
callq 0x22c7f
testl %eax, %eax
je 0x10848
movq %r15, %rdi
movq %rbp, %rsi
callq 0xf970
jmp 0x1054f
movq (%r14), %r14
movq %rbp, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10dcc
movq %r15, 0x18(%rsp)
movq 0x8(%r14), %rdi
callq 0x1d672
cmpl $0x35, %eax
jne 0x10b81
movq (%r14), %rsi
movq 0x8(%r14), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq 0x30(%rax), %r15
xorl %r14d, %r14d
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, 0x8(%rsp)
movq %rax, %rdi
callq 0x1e5d4
movq %rax, %r12
cmpq $0x0, 0x70(%rax)
movl $0x0, %r13d
je 0x10964
xorl %r14d, %r14d
xorl %r13d, %r13d
movq 0x68(%r12), %rax
movq (%rax,%r14,8), %rdi
callq 0x1282d
movq %r13, %rdi
movq %rax, %rsi
callq 0x2e697
movq %rax, %rbp
cmpq %r14, %r15
je 0x1095b
movq 0x68(%r12), %rax
movq (%rax,%r14,8), %rdi
callq 0x125dd
movq %rax, %r13
addq %rbp, %r13
incq %r14
cmpq 0x70(%r12), %r14
jb 0xfccd
jmp 0x10961
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r15
movq %rax, %rdi
callq 0x1d672
movl %eax, %ebp
movq %r15, %rdi
callq 0x1e5d4
cmpl $0x36, %ebp
jne 0x1055a
movq 0x50(%r15), %rcx
movq (%rcx), %rsi
movq %rax, %rdi
callq 0x233cc
movl 0x8(%rax), %esi
movq (%rax), %rdi
callq 0x1d7ca
movq %rax, %r15
movq 0x515cc(%rip), %rax     # 0x61330
jmp 0x102a4
movl 0x28(%rbx), %eax
cmpq $0x8, %rax
ja 0xfe35
leaq 0x224ab(%rip), %rcx     # 0x32228
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x20(%rbx), %r13
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r12
movq (%r14), %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0xf094
movq %r13, %rdi
movq %rax, %rsi
callq 0xf970
movq %rbx, %rdi
movq %rax, %rsi
callq 0xfaab
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r12
movq (%r14), %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %r12
movq (%r14), %rdi
callq 0x1281a
movq (%rbp), %rdi
movl %eax, %esi
callq 0x1d7ca
movq 0x5151f(%rip), %rcx     # 0x61328
movq %rcx, 0x20(%rax)
movq 0x20(%rbx), %rdx
movq (%rbp), %rdi
movl $0x46, %esi
movq %r12, %rcx
movq %rax, %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x1d832
movq %rbx, %rdi
movq %rax, %rsi
callq 0xfaab
movq (%rbp), %rdi
xorl %r15d, %r15d
movl $0x2f, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x1d832
jmp 0x1054f
testq %r15, %r15
jne 0xfe62
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq %r15, 0x18(%rsp)
movq 0x50(%rbp), %rax
movq (%rax), %r13
movq %r13, %rdi
callq 0x1d672
cmpl $0x39, %eax
jne 0xfe86
cmpq $0x0, 0x40(%r13)
je 0x10a91
movq %rbx, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r13
movq 0x50(%rbp), %rax
movq 0x8(%rax), %rdx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x115d0
movq %rax, 0x8(%rsp)
movq 0x50(%rbp), %rax
movq 0x8(%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %rdi
callq 0x1172b
movq %rax, %r12
movq 0x50(%rbp), %rax
movq 0x10(%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %rdi
callq 0x1172b
movq %rax, %rbp
movq (%rax), %rdi
movl $0x3, %esi
movq %rax, %rdx
movq %r12, %rcx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x1d832
movq %rax, %r15
movq 0x20(%rbp), %rax
movq %rax, 0x20(%r15)
movq 0x5141e(%rip), %rdx     # 0x61330
movq %rbx, %rdi
movq %r13, %rsi
callq 0x10dcc
testq %rax, %rax
je 0xff35
movq %rbx, %rdi
movl $0x1c, %esi
movq %rax, %rdx
movq %rbp, %rcx
callq 0x11782
movq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
cmpl $0x12, (%rax)
movq 0x513d4(%rip), %rdx     # 0x61328
jne 0x10592
movq (%r14), %rdi
movq %rdx, %rsi
callq 0x231bc
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x10e30
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0xf970
movq %rax, %r12
movq 0x5139e(%rip), %rsi     # 0x61328
movq (%r14), %rdi
callq 0x231bc
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x10e30
jmp 0x105c9
movq (%r14), %rax
movl 0x18(%rax), %ecx
cmpq $0x7, %rcx
ja 0x10af4
leaq 0x22290(%rip), %rdx     # 0x3224c
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movq %rbp, %r15
jmp 0x10a6e
testq %r15, %r15
jne 0xffe0
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq (%r15), %rdi
movl $0x3d, %esi
movq %r15, %rdx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x1d832
movq %rax, %r12
movq (%rax), %rdi
movl $0x1, %esi
callq 0x22d38
movq %rax, 0x20(%r12)
movq %rbx, %rdi
movq %r12, %rsi
callq 0xfaab
movq %r15, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %r12
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
movq 0x78(%rax), %rax
cmpq 0x40(%rbp), %rax
je 0x1007f
movq %rbp, %rdi
callq 0x1281a
movq (%rbp), %rdi
movq %rax, %rsi
callq 0x1d7ca
movq (%rbp), %rdi
movl $0x47, %esi
movq %r12, %rdx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x1d832
movq %rbx, %rdi
movq %rax, %rsi
callq 0xfaab
cmpq $0x0, 0x40(%rbp)
je 0x10a6e
movq %r15, 0x18(%rsp)
movq %rbx, %r15
xorl %ebx, %ebx
movq (%r14,%rbx,8), %rax
movq 0x48(%rax), %rsi
movq %rbp, %rdi
callq 0x12b14
movq %rax, %r13
movq (%r14,%rbx,8), %rsi
movq %r15, %rdi
xorl %edx, %edx
callq 0xfb13
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
movq %rax, %rcx
callq 0xf157
incq %rbx
cmpq 0x40(%rbp), %rbx
jb 0x10094
jmp 0x10604
movq 0x50(%rbp), %r14
testq %r15, %r15
jne 0x100eb
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq %r15, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
cmpq $0x0, 0x40(%rbp)
je 0x10a6e
movq %rax, %r12
movq %r15, 0x18(%rsp)
xorl %r13d, %r13d
movq %rbx, %r15
xorl %ebx, %ebx
movq (%r14,%rbx,8), %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x1282d
movq %r13, %rdi
movq %rax, %rsi
callq 0x2e697
movq %rax, %rbp
movq (%r14,%rbx,8), %rsi
movq %r15, %rdi
xorl %edx, %edx
callq 0xfb13
movq %r15, %rdi
movq %r12, %rsi
movq %rbp, %rdx
movq %rax, %rcx
callq 0xf157
movq (%r14,%rbx,8), %rdi
callq 0x1281a
movq %rax, %r13
addq %rbp, %r13
incq %rbx
movq 0x8(%rsp), %rax
cmpq 0x40(%rax), %rbx
jb 0x1011c
jmp 0x10604
movq (%r14), %r14
movq %rbp, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10e30
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbx, %rdi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x11338
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x234b0
testl %eax, %eax
je 0x102ad
movq %rbp, %rdi
callq 0x1d672
leal -0x2(%rax), %ecx
cmpl $0x3, %ecx
ja 0x102ad
addl $0x4d, %eax
movl %eax, 0x18(%rbp)
jmp 0x102ad
movq (%r14), %rdi
callq 0x1281a
movq (%rbp), %rdi
movq %rax, %rsi
callq 0x1d7ca
movq %rax, %r15
movq %rbp, %rdi
callq 0x1e5d4
jmp 0x102a4
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x234b0
testl %eax, %eax
je 0x102ad
movq (%rbp), %rdi
movsd 0x21ecd(%rip), %xmm0    # 0x32108
callq 0x1e1c0
movq %rax, %r12
movq (%rbp), %rdi
movl $0x35, %esi
movq %rax, %rdx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x1d832
movq 0x20(%rbp), %rcx
movq %rcx, 0x20(%r12)
movq 0x20(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10ffd
movq %rax, %r12
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq (%rbp), %rdi
movl $0x51, %esi
movq %r12, %rdx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x1d832
movq %rax, %r15
movq 0x20(%rbp), %rax
movq %rax, 0x20(%r15)
jmp 0x10a6e
movq %rbx, %rdi
movq %rbp, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1153c
movq (%r14), %rsi
movq %rbx, %rdi
callq 0x1144e
movq %rax, %r14
movq %rax, %rdi
callq 0x1d672
cmpl $0x33, %eax
jne 0x1060e
movq %r14, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xf094
movq 0x50(%rbp), %rax
movq (%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq 0x50(%rbp), %rcx
movq 0x8(%rcx), %rdx
movq %rbx, %rdi
movq %rax, %rsi
callq 0x10c6a
movq %rax, %rdi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10bc3
movq 0x50(%rbp), %rax
movq (%rax), %r13
movq %r13, %rdi
callq 0x28e87
testl %eax, %eax
jne 0x10366
movq %rbx, %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r13
movq %r13, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
movq %rax, %r12
movq %rbp, %rdi
callq 0x1e5d4
cmpl $0x1, (%rax)
jne 0x1061a
xorl %r15d, %r15d
jmp 0x10641
testq %r15, %r15
jne 0x103a5
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq %r15, %rdi
callq 0x1e5d4
movq %rax, %r13
movq %r15, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %r12
movq 0x88(%r13), %rdi
leaq 0x20(%rsp), %rsi
callq 0x14638
testl %eax, %eax
je 0x10ba0
movq $0x0, 0x10(%rsp)
movq 0x20(%rsp), %rax
cmpq 0x40(%rbp), %rax
je 0x1042e
movq %rbp, %rdi
callq 0x1281a
movq (%rbp), %rdi
movq %rax, %rsi
callq 0x1d7ca
movq (%rbp), %rdi
movl $0x47, %esi
movq %r12, %rdx
movq %rax, %rcx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x1d832
movq %rbx, %rdi
movq %rax, %rsi
callq 0xfaab
cmpq $0x0, 0x40(%rbp)
je 0x10a6e
xorl %r13d, %r13d
movq (%r14,%r13,8), %rax
movq 0x48(%rax), %rdi
testq %rdi, %rdi
je 0x1045c
leaq 0x10(%rsp), %rsi
callq 0x14638
testl %eax, %eax
jne 0x10461
jmp 0x10b6a
incq 0x10(%rsp)
movq 0x10(%rsp), %rax
cmpq 0x20(%rsp), %rax
jge 0x10b42
movq (%r14,%r13,8), %rdi
callq 0x1281a
movq %rax, %rbp
imulq 0x10(%rsp), %rbp
movq (%r14,%r13,8), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rbx, %rdi
movq %r12, %rsi
movq %rbp, %rdx
movq %rax, %rcx
callq 0xf157
incq %r13
movq 0x8(%rsp), %rax
cmpq 0x40(%rax), %r13
jb 0x1043c
jmp 0x10a6e
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xeea6
testq %r15, %r15
jne 0x104e4
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
movq 0x50(%rbp), %rax
movq (%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %r12
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x1282d
movl $0x4, %edi
movq %rax, %rsi
callq 0x2e697
movq %rax, %r13
movq %rbp, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %rdi
movq %r13, %rsi
callq 0x10c3a
movq %rax, %rdi
callq 0x10bc3
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x11338
movq %rbx, %rdi
movq %rax, %rsi
jmp 0x10a69
movq %rax, %rdi
callq 0x22c44
movq %rax, %rdi
callq 0x22c7f
testl %eax, %eax
jne 0x10a6e
movq (%r15), %rdi
movl $0xc, %esi
callq 0x22d38
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
jmp 0x1032d
movq %rbx, %rdi
movq %r14, %rsi
callq 0xf094
movq %rax, %rdi
xorl %esi, %esi
callq 0xfa23
movq %rax, %rdi
movq 0x8(%rsp), %rsi
callq 0xf970
movq %rax, %r12
movq 0x50d6a(%rip), %rdx     # 0x61328
movq %rbx, %rdi
movq %r14, %rsi
callq 0xf094
movl $0x8, %esi
movq %rax, %rdi
callq 0x10c3a
movq %rax, %rdi
xorl %esi, %esi
callq 0xfa23
movq %rax, %rdi
movq %r15, %rsi
callq 0xf970
movq %rax, %r15
movq %rbx, %rdi
movq %r12, %rsi
callq 0xfaab
movq %rbx, %rdi
movq %r15, %rsi
callq 0xfaab
movq 0x18(%rsp), %r15
jmp 0x10a6e
movq 0x50(%r14), %rax
movq (%rax), %r15
jmp 0x10a6e
movq %rbp, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c1c
testq %r15, %r15
je 0x10633
testl %eax, %eax
jne 0x10641
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xef46
movq %rax, %r15
xorl %eax, %eax
leaq 0x20(%rsp), %r14
movq %rax, (%r14)
leaq 0x10(%rsp), %rbp
movq %rax, (%rbp)
movq %rbx, %rdi
movq %r13, %rsi
callq 0xefb4
movq %r14, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x2d3ff
movq %r13, %rdi
callq 0x28e87
movl $0x2d, %ecx
testl %eax, %eax
jne 0x106a0
movq %rbx, %rdi
movq %r13, %rsi
callq 0x11a94
leaq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %rdx
callq 0x2d3ff
movl $0x48, %ecx
movl %ecx, 0x18(%rsp)
movq 0x8(%rsp), %r13
movq %r13, %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x12b78
leal -0x2(%rax), %ecx
cmpl $0x7, %ecx
jae 0x10a80
movq %r13, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %rdx
leaq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x2d3ff
movl $0x1, %r14d
cmpq $0x2, 0x40(%r13)
jb 0x107ca
leaq 0x10(%rsp), %rbp
movq 0x8(%rsp), %r13
cmpq 0x70(%r12), %r14
jae 0x1073f
movq 0x68(%r12), %rax
movq (%rax,%r14,8), %rdi
callq 0x22c44
cmpl $0x11, (%rax)
jne 0x1073f
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x11af3
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x2d3ff
movq 0x50(%r13), %rax
movq (%rax,%r14,8), %rdi
callq 0x1e5d4
movq %rax, %rdi
callq 0x22c44
cmpl $0x1, (%rax)
je 0x107bd
movq 0x50(%r13), %rax
movq (%rax,%r14,8), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
leaq 0x20(%rsp), %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0x2d3ff
movq 0x50(%r13), %rax
movq (%rax,%r14,8), %rdi
callq 0x1d672
cmpl $0x12, %eax
jne 0x107bd
movq 0x50(%r13), %rax
movq (%rax,%r14,8), %rax
movq 0x50(%rax), %rax
movq (%rax), %rdi
callq 0x1d672
cmpl $0x33, %eax
jne 0x107bd
movq 0x50(%r13), %rax
movq (%rax,%r14,8), %rax
movq 0x50(%rax), %rax
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x11a51
incq %r14
cmpq 0x40(%r13), %r14
jb 0x10708
cmpq 0x70(%r12), %r14
movq 0x8(%rsp), %r13
jae 0x10806
movq 0x68(%r12), %rax
movq (%rax,%r14,8), %rdi
callq 0x22c44
cmpl $0x11, (%rax)
jne 0x10806
movq %rbx, %rdi
movq %r13, %rsi
callq 0x11af3
leaq 0x20(%rsp), %rdi
leaq 0x10(%rsp), %rsi
movq %rax, %rdx
callq 0x2d3ff
testq %r15, %r15
je 0x10816
movq %rbx, %rdi
movq %r15, %rsi
callq 0x11a51
movq 0x20(%rsp), %rdx
movq 0x10(%rsp), %rcx
movq (%r13), %rdi
movl 0x18(%rsp), %esi
callq 0x1d99d
movq %rax, %r12
movq %r13, %rdi
callq 0x1e5d4
movq %rax, 0x20(%r12)
movq %rbx, %rdi
movq %r12, %rsi
jmp 0x10a69
movq (%rbp), %rdi
movl $0xc, %esi
callq 0x22d38
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0xf094
movq %rax, %r13
movq 0x8(%r12), %rsi
movq (%rbp), %rdi
callq 0x1d7ca
movq %rbp, %r14
movq %rax, %rbp
movq (%r14), %rdi
movl $0xc, %esi
callq 0x22d38
movq %rax, 0x20(%rbp)
movq 0x50a9d(%rip), %rsi     # 0x61330
movq %r13, %rdi
callq 0xfa23
movq %rax, %rdi
movq %rbp, %rsi
callq 0xf970
movq %rbx, %rdi
movq %rax, %rsi
callq 0xfaab
cmpq $0x0, 0x28(%r12)
je 0x10a6e
movq 0x50(%r14), %rax
movq 0x8(%rax), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %rax, %rbp
movq 0x28(%r12), %rdi
callq 0x1282d
movl $0x4, %edi
movq %rax, %rsi
callq 0x2e697
movq %r13, %rdi
movq %rax, %rsi
callq 0x10c3a
movq %rax, %r13
movq 0x28(%r12), %rdi
callq 0x22c1c
movq 0x28(%r12), %rdx
testl %eax, %eax
je 0x10b2f
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xf094
movq %rax, %rbp
movq 0x28(%r12), %rdi
callq 0x125dd
movq (%r14), %rdi
movl %eax, %esi
callq 0x1d7ca
movq 0x509f1(%rip), %rcx     # 0x61328
movq %rcx, 0x20(%rax)
movq (%r14), %rdi
movl $0x46, %esi
movq %r13, %rdx
movq %rbp, %rcx
movq %rax, %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x1d832
jmp 0x1054f
movq %r15, %r14
movq %rbp, %r13
movl %r13d, %r13d
movq 0x18(%rsp), %rbp
testq %rbp, %rbp
jne 0x109ab
movq 0x68(%r12), %rax
movq (%rax,%r15,8), %rsi
movq 0x8(%rsp), %rax
movq (%rax), %rdi
leaq 0x10(%rsp), %rdx
callq 0x1e345
movq %rax, %rbp
movq 0x68(%r12), %rax
movq (%rax,%r15,8), %rdi
callq 0x22c1c
testl %eax, %eax
je 0x109ab
movq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0xf7c2
movq 0x68(%r12), %rax
movq (%rax,%r14,8), %rdx
movq %rbx, %rdi
movq 0x8(%rsp), %r14
movq %r14, %rsi
callq 0xf094
movq %rax, %r12
movq (%r14), %rdi
movq %r13, %rsi
callq 0x1d7ca
movq 0x5094f(%rip), %rcx     # 0x61328
movq %rcx, 0x20(%rax)
movq %r12, %rdi
movq %rax, %rsi
callq 0xf90b
movq %rax, %r15
movq %rbp, %rdi
callq 0xee80
testl %eax, %eax
je 0x10a4d
movq %rbp, %rdi
callq 0x1281a
movq (%rbp), %rdi
movl %eax, %esi
callq 0x1d7ca
movq %rax, %r12
movq 0x50914(%rip), %rax     # 0x61328
movq %rax, 0x20(%r12)
movq %rbp, %rdi
callq 0x1e5d4
movq %rbx, %rdi
movq %rbp, %rsi
movq %rax, %rdx
callq 0xf094
movq (%rbp), %rdi
movl $0x46, %esi
movq %rax, %rdx
movq %r15, %rcx
movq %r12, %r8
xorl %r9d, %r9d
xorl %eax, %eax
callq 0x1d832
jmp 0x10a60
movq %r15, %rdi
callq 0x10bc3
movq %rbp, %rdi
movq %rax, %rsi
callq 0xf970
movq %rax, %rsi
movq %rbp, %r15
movq %rbx, %rdi
callq 0xfaab
movq %r15, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %r15, %rdx
cmpl $0x1, %eax
je 0x106de
jmp 0x106ed
movq (%rbp), %rdi
xorl %esi, %esi
callq 0x1d7ca
movq 0x50885(%rip), %rcx     # 0x61328
movq %rax, 0x8(%rsp)
movq %rcx, 0x20(%rax)
jmp 0xfeae
movq %rbx, %rdi
movq %rbp, %rsi
movq %r15, %rdx
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1106f
cmpq $0x7fffffff, 0x30(%rax) # imm = 0x7FFFFFFF
jb 0xffc5
movq %rbx, %rdi
movq %rbp, %rsi
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10ffd
xorl %r15d, %r15d
jmp 0x10a6e
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
jmp 0xfe35
movq 0x20(%rbx), %r12
movq (%r14), %rsi
movq %rbx, %rdi
xorl %edx, %edx
callq 0xfb13
movq %r12, %rdi
movq %rax, %rsi
callq 0xf970
jmp 0xfe2a
movq %r13, %rdi
movq %rdx, %rsi
callq 0xfa23
movq %rax, %rdi
jmp 0xfc3c
leaq 0x21963(%rip), %rdi     # 0x324ac
leaq 0x21784(%rip), %rsi     # 0x322d4
leaq 0x21960(%rip), %rcx     # 0x324b7
movl $0x4aa, %edx            # imm = 0x4AA
callq 0x4180
leaq 0x219a3(%rip), %rdi     # 0x3250b
jmp 0x10b71
leaq 0x1e506(%rip), %rdi     # 0x2f077
xorl %eax, %eax
callq 0x13a00
leaq 0x21a2c(%rip), %rdi     # 0x325ab
jmp 0x10b71
leaq 0x2196b(%rip), %rdi     # 0x324f3
leaq 0x21745(%rip), %rsi     # 0x322d4
leaq 0x21921(%rip), %rcx     # 0x324b7
movl $0x524, %edx            # imm = 0x524
callq 0x4180
leaq 0x1e4bd(%rip), %rdi     # 0x2f064
jmp 0x10b71
leaq 0x21986(%rip), %rdi     # 0x32536
jmp 0x10b71
leaq 0x21921(%rip), %rsi     # 0x324da
movq %rbp, %rdi
xorl %eax, %eax
callq 0x13aa3