// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2f210
movl %eax, %ecx
movq %rcx, -0x68(%rbp)
subl $0x45, %eax
ja 0x182e2
movq -0x68(%rbp), %rax
leaq 0x3660a(%rip), %rcx     # 0x4de38
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x1c480
movq %rax, %rsi
movq -0x70(%rbp), %rax
movq (%rax), %rdi
callq 0x2f3c0
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x18450
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x18710
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x18380
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x188d0
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x18380
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
movq %rax, %rdx
callq 0x189d0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x18a70
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
callq 0x18cf0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x18dd0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x18eb0
movq %rax, -0x38(%rbp)
jmp 0x18372
cmpq $0x0, -0x18(%rbp)
jne 0x179b3
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16940
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x30340
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rdi
callq 0x30340
movq -0x90(%rbp), %rdi
movq -0x88(%rbp), %rsi
movq %rax, %rdx
callq 0x16af0
movq %rax, -0x20(%rbp)
movq -0x60(%rbp), %rax
movq 0x88(%rax), %rdi
leaq -0x50(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
jne 0x17a20
leaq 0x3364f(%rip), %rdi     # 0x4b068
movb $0x0, %al
callq 0x1df20
movq $0x0, -0x48(%rbp)
movq -0x50(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x40(%rcx), %rax
je 0x17ab1
movq -0x8(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c480
movq %rax, %rsi
movq -0xb0(%rbp), %rax
movq (%rax), %rdi
callq 0x2f3c0
movq -0xa8(%rbp), %rdx
movq %rax, %rcx
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
movl $0x47, %esi
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x2f400
movq -0x98(%rbp), %rdi
movq %rax, %rsi
callq 0x17710
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x17bbf
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
cmpq $0x0, 0x48(%rax)
jne 0x17aec
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x17b1a
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x48(%rax), %rdi
leaq -0x48(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
jne 0x17b18
leaq 0x3356a(%rip), %rdi     # 0x4b07b
movb $0x0, %al
callq 0x1df20
jmp 0x17b1a
movq -0x48(%rbp), %rax
cmpq -0x50(%rbp), %rax
jge 0x17b26
jmp 0x17b45
leaq 0x3678b(%rip), %rdi     # 0x4e2b8
leaq 0x365ac(%rip), %rsi     # 0x4e0e0
movl $0x4aa, %edx            # imm = 0x4AA
leaq 0x36783(%rip), %rcx     # 0x4e2c3
callq 0x6160
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1c480
imulq -0x48(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq -0xc8(%rbp), %rdi
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movq %rax, %rcx
callq 0x16b90
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x17ab9
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x18372
cmpq $0x0, -0x18(%rbp)
jne 0x17be4
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16940
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq -0x18(%rbp), %rdx
movq (%rax), %rdi
movl $0x3d, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x2f400
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x36c10
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x17710
movq -0x8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x30340
movq -0xd8(%rbp), %rdi
movq -0xd0(%rbp), %rsi
movq %rax, %rdx
callq 0x16af0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x36a30
movq 0x78(%rax), %rax
movq -0x10(%rbp), %rcx
cmpq 0x40(%rcx), %rax
je 0x17d04
movq -0x8(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x1c480
movq %rax, %rsi
movq -0xf8(%rbp), %rax
movq (%rax), %rdi
callq 0x2f3c0
movq -0xf0(%rbp), %rdx
movq %rax, %rcx
movq -0xe8(%rbp), %rax
movq (%rax), %rdi
movl $0x47, %esi
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x2f400
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0x17710
movq $0x0, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x17d97
movq -0x8(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x10(%rbp), %rdi
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq 0x48(%rax), %rsi
callq 0x1c8f0
movq %rax, -0x100(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq -0x58(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq -0x110(%rbp), %rdi
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rdx
movq %rax, %rcx
callq 0x16b90
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
jmp 0x17d0c
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x118(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x120(%rbp), %rdi
movq -0x118(%rbp), %rsi
movq %rax, %rdx
callq 0x18fe0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x40(%rbp), %rax
movq (%rax), %rax
movl 0x18(%rax), %eax
movq %rax, -0x128(%rbp)
subq $0x7, %rax
ja 0x17e73
movq -0x128(%rbp), %rax
leaq 0x3616a(%rip), %rcx     # 0x4df74
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x17e73
movq -0x40(%rbp), %rax
movq (%rax), %rax
cmpq $0x7fffffff, 0x30(%rax) # imm = 0x7FFFFFFF
jae 0x17e38
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
jmp 0x17e49
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19440
movq %rax, -0x38(%rbp)
jmp 0x17e73
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19440
movq %rax, -0x38(%rbp)
jmp 0x17e73
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x194d0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x16850
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x10(%rbp), %rdi
leaq 0x36449(%rip), %rsi     # 0x4e2e6
movb $0x0, %al
callq 0x1dfe0
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq %rax, -0x130(%rbp)
subq $0x8, %rax
ja 0x18067
movq -0x130(%rbp), %rax
leaq 0x36086(%rip), %rcx     # 0x4df50
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x140(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x30340
movq -0x140(%rbp), %rdi
movq -0x138(%rbp), %rsi
movq %rax, %rdx
callq 0x16af0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x17580
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x17710
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x30340
movq -0x158(%rbp), %rdi
movq -0x150(%rbp), %rsi
movq %rax, %rdx
callq 0x16af0
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x148(%rbp)
movq -0x40(%rbp), %rax
movq (%rax), %rdi
callq 0x1c480
movq %rax, %rcx
movq -0x148(%rbp), %rax
movl %ecx, %esi
movq (%rax), %rdi
callq 0x17540
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq -0x8(%rbp), %rcx
movq 0x20(%rcx), %rdx
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
movq (%rax), %rdi
movl $0x46, %esi
xorl %eax, %eax
movl %eax, %r9d
movb $0x0, %al
callq 0x2f400
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x17710
jmp 0x18067
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
jmp 0x18067
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x17580
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x17710
movq -0x8(%rbp), %rax
movq %rax, -0x160(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movl $0x2f, %esi
xorl %eax, %eax
movl %eax, %edx
movb $0x0, %al
callq 0x2f400
movq -0x160(%rbp), %rdi
movq %rax, %rsi
callq 0x17710
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x19910
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x19aa0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
callq 0x19e00
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x2f210
cmpl $0x33, %eax
jne 0x18135
movq -0x8(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x20(%rbp), %rdi
callq 0x30340
movq -0x170(%rbp), %rdi
movq -0x168(%rbp), %rsi
movq %rax, %rdx
callq 0x16af0
movq %rax, -0x38(%rbp)
jmp 0x18144
movq -0x20(%rbp), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, %rdi
callq 0x37930
cmpl $0x0, %eax
je 0x18230
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movsd 0x35cbe(%rip), %xmm0    # 0x4de30
callq 0x2fe40
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rdx
movq (%rax), %rdi
movl $0x35, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x2f400
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x19440
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq -0x180(%rbp), %rdx
movq %rax, %rcx
movq -0x178(%rbp), %rax
movq (%rax), %rdi
movl $0x51, %esi
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x2f400
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x18241
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19fb0
movq %rax, -0x38(%rbp)
jmp 0x18372
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2f210
cmpl $0x35, %eax
jne 0x1825a
jmp 0x18279
leaq 0x3609e(%rip), %rdi     # 0x4e2ff
leaq 0x35e78(%rip), %rsi     # 0x4e0e0
movl $0x524, %edx            # imm = 0x524
leaq 0x3604f(%rip), %rcx     # 0x4e2c3
callq 0x6160
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x50(%rax), %rax
movq (%rax), %rax
movq 0x30(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
movq -0x40(%rbp), %rax
movq (%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x177e0
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq -0x18(%rbp), %rcx
callq 0x1a090
movq %rax, -0x38(%rbp)
jmp 0x18372
leaq 0x3604a(%rip), %rdi     # 0x4e317
movb $0x0, %al
callq 0x1df20
leaq 0x36067(%rip), %rdi     # 0x4e342
movb $0x0, %al
callq 0x1df20
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, %rdi
callq 0x37930
cmpl $0x0, %eax
je 0x18361
movq -0x10(%rbp), %rdi
callq 0x2f210
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x188(%rbp)
subl $0x3, %eax
ja 0x1835d
movq -0x188(%rbp), %rax
leaq 0x35c74(%rip), %rcx     # 0x4df94
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movl $0x4f, 0x18(%rax)
jmp 0x1835f
movq -0x10(%rbp), %rax
movl $0x50, 0x18(%rax)
jmp 0x1835f
movq -0x10(%rbp), %rax
movl $0x51, 0x18(%rax)
jmp 0x1835f
movq -0x10(%rbp), %rax
movl $0x52, 0x18(%rax)
jmp 0x1835f
jmp 0x1835f
jmp 0x18361
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19fb0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nop