// File: /workspace/github_c_makefile_star2_O0/oridb[P]mc/parse/fold.c
// Function: fold
Node *
fold(Node *n, int foldvar)
{
	Node **args, *r;
	Type *t;
	vlong a, b;
	Ucon *uc;
	size_t i;

	if (!n)
		return NULL;
	if (n->type != Nexpr)
		return n;

	r = NULL;
	args = n->expr.args;
	if (n->expr.idx)
		n->expr.idx = fold(n->expr.idx, foldvar);
	for (i = 0; i < n->expr.nargs; i++)
		args[i] = fold(args[i], foldvar);
	switch (exprop(n)) {
	case Outag:
		if (exprop(args[0]) != Oucon)
			break;
		uc = finducon(tybase(exprtype(args[0])), args[0]->expr.args[0]);
		r = val(n->loc, uc->id, exprtype(n));
		break;
	case Oudata:
		if (exprop(args[0]) != Oucon || args[0]->expr.nargs != 2)
			break;
		r = args[0]->expr.args[1];
		break;
	case Ovar:
		if (foldvar && issmallconst(decls[n->expr.did]))
			r = fold(decls[n->expr.did]->decl.init, foldvar);
		break;
	case Oadd:
		/* x + 0 = 0 */
		if (isintval(args[0], 0))
			r = args[1];
		if (isintval(args[1], 0))
			r = args[0];
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a + b, exprtype(n));
		break;
	case Osub:
		/* x - 0 = 0 */
		if (isintval(args[1], 0))
			r = args[0];
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, (uint64_t)a - b, exprtype(n));
		break;
	case Omul:
		/* 1 * x = x */
		if (isintval(args[0], 1))
			r = args[1];
		if (isintval(args[1], 1))
			r = args[0];
		/* 0 * x = 0 */
		if (isintval(args[0], 0))
			r = args[0];
		if (isintval(args[1], 0))
			r = args[1];
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a * b, exprtype(n));
		break;
	case Odiv:
		/* x/0 = error */
		if (isintval(args[1], 0))
			fatal(args[1], "division by zero");
		/* x/1 = x */
		if (isintval(args[1], 1))
			r = args[0];
		/* 0/x = 0 */
		if (isintval(args[1], 0))
			r = args[1];
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a / b, exprtype(n));
		break;
	case Omod:
		/* x%0 = error */
		if (isintval(args[1], 0))
			fatal(args[1], "division by zero");
		/* x%1 = 0 */
		if (isintval(args[1], 1))
			r = val(n->loc, 0, exprtype(n));
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a % b, exprtype(n));
		break;
	case Oneg:
		if (getintlit(args[0], &a))
			r = val(n->loc, -a, exprtype(n));
		break;
	case Obsl:
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, (uint64_t)a << b, exprtype(n));
		break;
	case Obsr:
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a >> b, exprtype(n));
		break;
	case Obor:
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a | b, exprtype(n));
		break;
	case Oband:
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a & b, exprtype(n));
		break;
	case Obxor:
		if (getintlit(args[0], &a) && getintlit(args[1], &b))
			r = val(n->loc, a ^ b, exprtype(n));
		break;
	case Omemb:
		t = tybase(exprtype(args[0]));
		/* we only fold lengths right now */
		if (t->type == Tyarray && !strcmp(namestr(args[1]), "len")) {
			r = t->asize;
			r->expr.type = exprtype(n);
		} else if (t->type == Tyunion && !strcmp(namestr(args[1]), "tag")) {
			r = mkexpr(n->loc, Outag, args[0], NULL);
			r->expr.type = mktype(n->loc, Tyint32);
		}
		break;
	case Oarr:
                if (n->expr.nargs > 0)
                    qsort(n->expr.args, n->expr.nargs, sizeof(Node*), idxcmp);
		break;
	case Ocast:
		r = foldcast(n);
		break;
	case Osize:
		if (sizefn)
			r = val(n->loc, sizefn(n->expr.args[0]), exprtype(n));
		break;
	default:
		break;
	}

	if (r && n->expr.idx)
		r->expr.idx = n->expr.idx;

	if (r)
		return r;
	else
		return n;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0x1f3b6
movq $0x0, -0x8(%rbp)
jmp 0x1fdaa
movq -0x10(%rbp), %rax
cmpl $0x8, 0x8(%rax)
je 0x1f3cd
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1fdaa
movq $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x1f407
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rdi
movl -0x14(%rbp), %esi
callq 0x1f390
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x48(%rax)
movq $0x0, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq -0x10(%rbp), %rcx
cmpq 0x40(%rcx), %rax
jae 0x1f44e
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0x14(%rbp), %esi
callq 0x1f390
movq %rax, %rdx
movq -0x20(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x1f40f
movq -0x10(%rbp), %rdi
callq 0x2f210
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x58(%rbp)
subl $0x42, %eax
ja 0x1fd6d
movq -0x58(%rbp), %rax
leaq 0x2f798(%rip), %rcx     # 0x4ec0c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x2f210
cmpl $0x36, %eax
je 0x1f493
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x30340
movq %rax, %rdi
callq 0x36a30
movq %rax, %rdi
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq 0x50(%rax), %rax
movq (%rax), %rsi
callq 0x377a0
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x48(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x68(%rbp), %rsi
movq %rax, %rdx
movq -0x60(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x2f210
cmpl $0x36, %eax
jne 0x1f519
movq -0x20(%rbp), %rax
movq (%rax), %rax
cmpq $0x2, 0x40(%rax)
je 0x1f51e
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq 0x50(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
cmpl $0x0, -0x14(%rbp)
je 0x1f582
leaq 0x5df45(%rip), %rax     # 0x7d488
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x38(%rcx), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x1fe30
cmpl $0x0, %eax
je 0x1f582
leaq 0x5df25(%rip), %rax     # 0x7d488
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x38(%rcx), %rcx
movq (%rax,%rcx,8), %rax
movq 0x30(%rax), %rdi
movl -0x14(%rbp), %esi
callq 0x1f390
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f5a8
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f5c9
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f628
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f628
movq -0x10(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x38(%rbp), %rax
addq -0x40(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x78(%rbp), %rsi
movq %rax, %rdx
movq -0x70(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f64e
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f6b3
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f6b3
movq -0x10(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x38(%rbp), %rax
subq -0x40(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x88(%rbp), %rsi
movq %rax, %rdx
movq -0x80(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movl $0x1, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f6da
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f6fc
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f71c
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f73e
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f7aa
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f7aa
movq -0x10(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x38(%rbp), %rax
imulq -0x40(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x98(%rbp), %rsi
movq %rax, %rdx
movq -0x90(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f7db
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x2f5aa(%rip), %rsi     # 0x4ed7e
movb $0x0, %al
callq 0x1dfe0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f7fd
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f81f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f88c
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f88c
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x38(%rbp), %rax
cqto
idivq -0x40(%rbp)
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0xa8(%rbp), %rsi
movq %rax, %rdx
movq -0xa0(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f8bd
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0x2f4c8(%rip), %rsi     # 0x4ed7e
movb $0x0, %al
callq 0x1dfe0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movl $0x1, %esi
callq 0x1fea0
cmpl $0x0, %eax
je 0x1f902
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, %rdx
movq -0xb0(%rbp), %rax
movq (%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f96f
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f96f
movq -0x10(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x38(%rbp), %rax
cqto
idivq -0x40(%rbp)
movq %rdx, -0xc0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0xc0(%rbp), %rsi
movq %rax, %rdx
movq -0xb8(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1f9c7
movq -0x10(%rbp), %rax
movq %rax, -0xc8(%rbp)
xorl %eax, %eax
subq -0x38(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0xd0(%rbp), %rsi
movq %rax, %rdx
movq -0xc8(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fa3a
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fa3a
movq -0x10(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0x38(%rbp), %rax
movq -0x40(%rbp), %rcx
shlq %cl, %rax
movq %rax, -0xe0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0xe0(%rbp), %rsi
movq %rax, %rdx
movq -0xd8(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1faad
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1faad
movq -0x10(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0x38(%rbp), %rax
movq -0x40(%rbp), %rcx
sarq %cl, %rax
movq %rax, -0xf0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0xf0(%rbp), %rsi
movq %rax, %rdx
movq -0xe8(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fb1d
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fb1d
movq -0x10(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0x38(%rbp), %rax
orq -0x40(%rbp), %rax
movq %rax, -0x100(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x100(%rbp), %rsi
movq %rax, %rdx
movq -0xf8(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fb8d
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fb8d
movq -0x10(%rbp), %rax
movq %rax, -0x108(%rbp)
movq -0x38(%rbp), %rax
andq -0x40(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x110(%rbp), %rsi
movq %rax, %rdx
movq -0x108(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fbfd
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
leaq -0x40(%rbp), %rsi
callq 0x1f230
cmpl $0x0, %eax
je 0x1fbfd
movq -0x10(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x38(%rbp), %rax
xorq -0x40(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x120(%rbp), %rsi
movq %rax, %rdx
movq -0x118(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x30340
movq %rax, %rdi
callq 0x36a30
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpl $0x15, (%rax)
jne 0x1fc69
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x30600
movq %rax, %rdi
leaq 0x3533e(%rip), %rsi     # 0x54f78
callq 0x6220
cmpl $0x0, %eax
jne 0x1fc69
movq -0x30(%rbp), %rax
movq 0x88(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x1fcd3
movq -0x30(%rbp), %rax
cmpl $0x18, (%rax)
jne 0x1fcd1
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x30600
movq %rax, %rdi
leaq 0x32fda(%rip), %rsi     # 0x52c63
callq 0x6220
cmpl $0x0, %eax
jne 0x1fcd1
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq (%rcx), %rdx
movq (%rax), %rdi
movl $0x43, %esi
xorl %eax, %eax
movl %eax, %ecx
movb $0x0, %al
callq 0x2f400
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
movl $0x7, %esi
callq 0x36c10
movq %rax, %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x1fcd3
jmp 0x1fd6f
movq -0x10(%rbp), %rax
cmpq $0x0, 0x40(%rax)
jbe 0x1fd04
movq -0x10(%rbp), %rax
movq 0x50(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rsi
movl $0x8, %edx
leaq -0xa3f(%rip), %rcx      # 0x1f2c0
callq 0x60b0
jmp 0x1fd6f
movq -0x10(%rbp), %rdi
callq 0x1fef0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
cmpq $0x0, 0x5d14b(%rip)     # 0x7ce68
je 0x1fd6b
movq -0x10(%rbp), %rax
movq %rax, -0x128(%rbp)
movq 0x5d137(%rip), %rax     # 0x7ce68
movq -0x10(%rbp), %rcx
movq 0x50(%rcx), %rcx
movq (%rcx), %rdi
callq *%rax
movq %rax, -0x130(%rbp)
movq -0x10(%rbp), %rdi
callq 0x30340
movq -0x130(%rbp), %rsi
movq %rax, %rdx
movq -0x128(%rbp), %rax
movq (%rax), %rdi
callq 0x1fdc0
movq %rax, -0x28(%rbp)
jmp 0x1fd6f
jmp 0x1fd6f
cmpq $0x0, -0x28(%rbp)
je 0x1fd91
movq -0x10(%rbp), %rax
cmpq $0x0, 0x48(%rax)
je 0x1fd91
movq -0x10(%rbp), %rax
movq 0x48(%rax), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x48(%rax)
cmpq $0x0, -0x28(%rbp)
je 0x1fda2
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x1fdaa
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopw (%rax,%rax)