// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./menu.c
// Function: menu_finalize
void menu_finalize(struct menu *parent)
{
	struct menu *menu, *last_menu;
	struct symbol *sym;
	struct property *prop;
	struct expr *parentdep, *basedep, *dep, *dep2, **ep;

	sym = parent->sym;
	if (parent->list) {
		if (sym && sym_is_choice(sym)) {
			/* find the first choice value and find out choice type */
			for (menu = parent->list; menu; menu = menu->next) {
				if (menu->sym) {
					current_entry = parent;
					menu_set_type(menu->sym->type);
					current_entry = menu;
					menu_set_type(sym->type);
					break;
				}
			}
			parentdep = expr_alloc_symbol(sym);
		} else if (parent->prompt)
			parentdep = parent->prompt->visible.expr;
		else
			parentdep = parent->dep;

		for (menu = parent->list; menu; menu = menu->next) {
			basedep = expr_transform(menu->dep);
			basedep = expr_alloc_and(expr_copy(parentdep), basedep);
			basedep = expr_eliminate_dups(basedep);
			menu->dep = basedep;
			if (menu->sym)
				prop = menu->sym->prop;
			else
				prop = menu->prompt;
			for (; prop; prop = prop->next) {
				if (prop->menu != menu)
					continue;
				dep = expr_transform(prop->visible.expr);
				dep = expr_alloc_and(expr_copy(basedep), dep);
				dep = expr_eliminate_dups(dep);
				if (menu->sym && menu->sym->type != S_TRISTATE)
					dep = expr_trans_bool(dep);
				prop->visible.expr = dep;
				if (prop->type == P_SELECT) {
					struct symbol *es = prop_get_symbol(prop);
					es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
							expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
				}
			}
		}
		for (menu = parent->list; menu; menu = menu->next)
			menu_finalize(menu);
	} else if (sym) {
		basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
		basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
		basedep = expr_eliminate_dups(expr_transform(basedep));
		last_menu = NULL;
		for (menu = parent->next; menu; menu = menu->next) {
			dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
			if (!expr_contains_symbol(dep, sym))
				break;
			if (expr_depends_symbol(dep, sym))
				goto next;
			dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);
			dep = expr_eliminate_dups(expr_transform(dep));
			dep2 = expr_copy(basedep);
			expr_eliminate_eq(&dep, &dep2);
			expr_free(dep);
			if (!expr_is_yes(dep2)) {
				expr_free(dep2);
				break;
			}
			expr_free(dep2);
		next:
			menu_finalize(menu);
			menu->parent = parent;
			last_menu = menu;
		}
		if (last_menu) {
			parent->list = parent->next;
			parent->next = last_menu->next;
			last_menu->next = NULL;
		}
	}
	for (menu = parent->list; menu; menu = menu->next) {
		if (sym && sym_is_choice(sym) && menu->sym) {
			menu->sym->flags |= SYMBOL_CHOICEVAL;
			if (!menu->prompt)
				fprintf(stderr, "%s:%d:warning: choice value must have a prompt\n",
					menu->file->name, menu->lineno);
			for (prop = menu->sym->prop; prop; prop = prop->next) {
				if (prop->type == P_PROMPT && prop->menu != menu) {
					fprintf(stderr, "%s:%d:warning: choice values currently only support a single prompt\n",
						prop->file->name, prop->lineno);
					
				}
				if (prop->type == P_DEFAULT)
					fprintf(stderr, "%s:%d:warning: defaults for choice values not supported\n",
						prop->file->name, prop->lineno);
			}
			current_entry = menu;
			menu_set_type(sym->type);
			menu_add_symbol(P_CHOICE, sym, NULL);
			prop = sym_get_choice_prop(sym);
			for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
				;
			*ep = expr_alloc_one(E_CHOICE, NULL);
			(*ep)->right.sym = menu->sym;
		}
		if (menu->list && (!menu->prompt || !menu->prompt->text)) {
			for (last_menu = menu->list; ; last_menu = last_menu->next) {
				last_menu->parent = parent;
				if (!last_menu->next)
					break;
			}
			last_menu->next = menu->next;
			menu->next = menu->list;
			menu->list = NULL;
		}
	}

	if (sym && !(sym->flags & SYMBOL_WARNED)) {
		struct symbol *sym2;
		if (sym->type == S_UNKNOWN)
			fprintf(stderr, "%s:%d:warning: config symbol defined without type\n",
				parent->file->name, parent->lineno);

		if (sym_is_choice(sym) && !parent->prompt)
			fprintf(stderr, "%s:%d:warning: choice must have a prompt\n",
				parent->file->name, parent->lineno);

		for (prop = sym->prop; prop; prop = prop->next) {
			switch (prop->type) {
			case P_DEFAULT:
				if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
				    prop->expr->type != E_SYMBOL)
					fprintf(stderr, "%s:%d:warning: default must be a single symbol\n",
						prop->file->name, prop->lineno);
				break;
			case P_SELECT:
				sym2 = prop_get_symbol(prop);
				if ((sym->type != S_BOOLEAN) || (sym2->type != S_BOOLEAN))
					fprintf(stderr, "%s:%d:warning: enable is only allowed with booleans\n",
						prop->file->name, prop->lineno);
				break;
			case P_RANGE:
				if (sym->type != S_INT && sym->type != S_HEX)
					fprintf(stderr, "%s:%d:warning: range is only allowed for int or hex symbols\n",
						prop->file->name, prop->lineno);
				if (!sym_string_valid(sym, prop->expr->left.sym->name) ||
				    !sym_string_valid(sym, prop->expr->right.sym->name))
					fprintf(stderr, "%s:%d:warning: range is invalid\n",
						prop->file->name, prop->lineno);
				break;
			default:
				;
			}
		}
		sym->flags |= SYMBOL_WARNED;
	}

	if (sym && !sym_is_optional(sym) && parent->prompt) {
		sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
				expr_alloc_and(parent->prompt->visible.expr,
					expr_alloc_symbol(&symbol_mod)));
	}
}

// Assembly:
subq $0x98, %rsp
movq %rdi, 0x90(%rsp)
movq 0x90(%rsp), %rax
movq 0x18(%rax), %rax
movq %rax, 0x78(%rsp)
movq 0x90(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x6fd2
cmpq $0x0, 0x78(%rsp)
je 0x6d69
movq 0x78(%rsp), %rdi
callq 0x7da0
testb $0x1, %al
jne 0x6cd2
jmp 0x6d69
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x6d58
movq 0x88(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x6d41
movq 0x90(%rsp), %rax
movq %rax, 0x12791(%rip)     # 0x194a0
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movl 0x18(%rax), %edi
callq 0x6210
movq 0x88(%rsp), %rax
movq %rax, 0x1276e(%rip)     # 0x194a0
movq 0x78(%rsp), %rax
movl 0x18(%rax), %edi
callq 0x6210
jmp 0x6d58
jmp 0x6d43
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
jmp 0x6ce6
movq 0x78(%rsp), %rdi
callq 0x6840
movq %rax, 0x68(%rsp)
jmp 0x6da2
movq 0x90(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x6d8f
movq 0x90(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, 0x68(%rsp)
jmp 0x6da0
movq 0x90(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x68(%rsp)
jmp 0x6da2
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x6f8c
movq 0x88(%rsp), %rax
movq 0x28(%rax), %rdi
callq 0xd540
movq %rax, 0x60(%rsp)
movq 0x68(%rsp), %rdi
callq 0xba40
movq %rax, %rdi
movq 0x60(%rsp), %rsi
callq 0xb960
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0xd020
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rcx
movq 0x88(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x88(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x6e3d
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x48(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x6e4e
movq 0x88(%rsp), %rax
movq 0x20(%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x6e50
cmpq $0x0, 0x70(%rsp)
je 0x6f72
movq 0x70(%rsp), %rax
movq 0x38(%rax), %rax
cmpq 0x88(%rsp), %rax
je 0x6e74
jmp 0x6f60
movq 0x70(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0xd540
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
callq 0xba40
movq %rax, %rdi
movq 0x58(%rsp), %rsi
callq 0xb960
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0xd020
movq %rax, 0x58(%rsp)
movq 0x88(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x6ee2
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
cmpl $0x2, 0x18(%rax)
je 0x6ee2
movq 0x58(%rsp), %rdi
callq 0xc560
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rcx
movq 0x70(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x70(%rsp), %rax
cmpl $0x6, 0x10(%rax)
jne 0x6f5e
movq 0x70(%rsp), %rdi
callq 0xa440
movq %rax, 0x40(%rsp)
movq 0x40(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, 0x30(%rsp)
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rdi
callq 0x6840
movq %rax, 0x28(%rsp)
movq 0x58(%rsp), %rdi
callq 0xba40
movq 0x28(%rsp), %rdi
movq %rax, %rsi
callq 0xb960
movq 0x30(%rsp), %rdi
movq %rax, %rsi
callq 0xb9d0
movq %rax, %rcx
movq 0x40(%rsp), %rax
movq %rcx, 0x60(%rax)
jmp 0x6f60
movq 0x70(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x6e50
jmp 0x6f74
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
jmp 0x6db6
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x6fcd
movq 0x88(%rsp), %rdi
callq 0x6c80
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
jmp 0x6fa0
jmp 0x71fb
cmpq $0x0, 0x78(%rsp)
je 0x71f9
movq 0x90(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x7004
movq 0x90(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, 0x20(%rsp)
jmp 0x700d
xorl %eax, %eax
movq %rax, 0x20(%rsp)
jmp 0x700d
movq 0x20(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
movl $0x5, %esi
leaq 0x121f0(%rip), %rdx     # 0x19218
callq 0xdf30
movq %rax, 0x60(%rsp)
movq 0x60(%rsp), %rdi
callq 0xd540
movq %rax, %rdi
callq 0xd020
movq %rax, 0x60(%rsp)
movq $0x0, 0x80(%rsp)
movq 0x90(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x71b0
movq 0x88(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x709d
movq 0x88(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, 0x18(%rsp)
jmp 0x70ae
movq 0x88(%rsp), %rax
movq 0x28(%rax), %rax
movq %rax, 0x18(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0xda60
cmpl $0x0, %eax
jne 0x70d1
jmp 0x71b0
movq 0x58(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0xdb80
testb $0x1, %al
jne 0x70e6
jmp 0x70e8
jmp 0x7167
movq 0x58(%rsp), %rdi
movl $0x5, %esi
leaq 0x1211f(%rip), %rdx     # 0x19218
callq 0xdf30
movq %rax, 0x58(%rsp)
movq 0x58(%rsp), %rdi
callq 0xd540
movq %rax, %rdi
callq 0xd020
movq %rax, 0x58(%rsp)
movq 0x60(%rsp), %rdi
callq 0xba40
movq %rax, 0x50(%rsp)
leaq 0x58(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xbc30
movq 0x58(%rsp), %rdi
callq 0xbb90
movq 0x50(%rsp), %rdi
callq 0x7dd0
cmpl $0x0, %eax
jne 0x715d
movq 0x50(%rsp), %rdi
callq 0xbb90
jmp 0x71b0
movq 0x50(%rsp), %rdi
callq 0xbb90
movq 0x88(%rsp), %rdi
callq 0x6c80
movq 0x90(%rsp), %rcx
movq 0x88(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x88(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
jmp 0x7068
cmpq $0x0, 0x80(%rsp)
je 0x71f7
movq 0x90(%rsp), %rax
movq (%rax), %rcx
movq 0x90(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x80(%rsp), %rax
movq (%rax), %rcx
movq 0x90(%rsp), %rax
movq %rcx, (%rax)
movq 0x80(%rsp), %rax
movq $0x0, (%rax)
jmp 0x71f9
jmp 0x71fb
movq 0x90(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x88(%rsp)
cmpq $0x0, 0x88(%rsp)
je 0x74db
cmpq $0x0, 0x78(%rsp)
je 0x73fc
movq 0x78(%rsp), %rdi
callq 0x7da0
testb $0x1, %al
jne 0x723d
jmp 0x73fc
movq 0x88(%rsp), %rax
cmpq $0x0, 0x18(%rax)
je 0x73fc
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movl 0x44(%rax), %ecx
orl $0x20, %ecx
movl %ecx, 0x44(%rax)
movq 0x88(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x72a7
movq 0x11d7d(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x88(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x88(%rsp), %rax
movl 0x40(%rax), %ecx
leaq 0xebec(%rip), %rsi      # 0x15e8c
movb $0x0, %al
callq 0x21a0
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rax
movq 0x48(%rax), %rax
movq %rax, 0x70(%rsp)
cmpq $0x0, 0x70(%rsp)
je 0x735f
movq 0x70(%rsp), %rax
cmpl $0x1, 0x10(%rax)
jne 0x7313
movq 0x70(%rsp), %rax
movq 0x38(%rax), %rax
cmpq 0x88(%rsp), %rax
je 0x7313
movq 0x11d0b(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xebb0(%rip), %rsi      # 0x15ebc
movb $0x0, %al
callq 0x21a0
movq 0x70(%rsp), %rax
cmpl $0x4, 0x10(%rax)
jne 0x734b
movq 0x11cd3(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xebbd(%rip), %rsi      # 0x15f01
movb $0x0, %al
callq 0x21a0
jmp 0x734d
movq 0x70(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x72bc
movq 0x88(%rsp), %rax
movq %rax, 0x12132(%rip)     # 0x194a0
movq 0x78(%rsp), %rax
movl 0x18(%rax), %edi
callq 0x6210
movq 0x78(%rsp), %rsi
movl $0x5, %edi
xorl %eax, %eax
movl %eax, %edx
callq 0x6370
movq 0x78(%rsp), %rdi
callq 0xa490
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x48(%rsp)
movq 0x48(%rsp), %rax
cmpq $0x0, (%rax)
je 0x73cb
jmp 0x73b8
movq 0x48(%rsp), %rax
movq (%rax), %rax
addq $0x8, %rax
movq %rax, 0x48(%rsp)
jmp 0x73ab
movl $0x6, %edi
xorl %eax, %eax
movl %eax, %esi
callq 0x6890
movq %rax, %rcx
movq 0x48(%rsp), %rax
movq %rcx, (%rax)
movq 0x88(%rsp), %rax
movq 0x18(%rax), %rcx
movq 0x48(%rsp), %rax
movq (%rax), %rax
movq %rcx, 0x10(%rax)
movq 0x88(%rsp), %rax
cmpq $0x0, 0x10(%rax)
je 0x74c1
movq 0x88(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x7435
movq 0x88(%rsp), %rax
movq 0x20(%rax), %rax
cmpq $0x0, 0x18(%rax)
jne 0x74c1
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x80(%rsp)
movq 0x90(%rsp), %rcx
movq 0x80(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x80(%rsp), %rax
cmpq $0x0, (%rax)
jne 0x746d
jmp 0x7484
jmp 0x746f
movq 0x80(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x80(%rsp)
jmp 0x7449
movq 0x88(%rsp), %rax
movq (%rax), %rcx
movq 0x80(%rsp), %rax
movq %rcx, (%rax)
movq 0x88(%rsp), %rax
movq 0x10(%rax), %rcx
movq 0x88(%rsp), %rax
movq %rcx, (%rax)
movq 0x88(%rsp), %rax
movq $0x0, 0x10(%rax)
jmp 0x74c3
movq 0x88(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x88(%rsp)
jmp 0x720f
cmpq $0x0, 0x78(%rsp)
je 0x7768
movq 0x78(%rsp), %rax
movl 0x44(%rax), %eax
andl $0x8000, %eax           # imm = 0x8000
cmpl $0x0, %eax
jne 0x7768
movq 0x78(%rsp), %rax
cmpl $0x0, 0x18(%rax)
jne 0x753b
movq 0x11ae9(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x90(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x90(%rsp), %rax
movl 0x40(%rax), %ecx
leaq 0xea06(%rip), %rsi      # 0x15f3a
movb $0x0, %al
callq 0x21a0
movq 0x78(%rsp), %rdi
callq 0x7da0
testb $0x1, %al
jne 0x754b
jmp 0x758d
movq 0x90(%rsp), %rax
cmpq $0x0, 0x20(%rax)
jne 0x758d
movq 0x11a97(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x90(%rsp), %rax
movq 0x38(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x90(%rsp), %rax
movl 0x40(%rax), %ecx
leaq 0xe9e7(%rip), %rsi      # 0x15f6d
movb $0x0, %al
callq 0x21a0
movq 0x78(%rsp), %rax
movq 0x48(%rax), %rax
movq %rax, 0x70(%rsp)
cmpq $0x0, 0x70(%rsp)
je 0x7757
movq 0x70(%rsp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x14(%rsp)
subl $0x4, %eax
je 0x75d7
jmp 0x75ba
movl 0x14(%rsp), %eax
subl $0x6, %eax
je 0x7638
jmp 0x75c5
movl 0x14(%rsp), %eax
subl $0x7, %eax
je 0x768f
jmp 0x7741
movq 0x78(%rsp), %rax
cmpl $0x5, 0x18(%rax)
je 0x75f8
movq 0x78(%rsp), %rax
cmpl $0x3, 0x18(%rax)
je 0x75f8
movq 0x78(%rsp), %rax
cmpl $0x4, 0x18(%rax)
jne 0x7633
movq 0x70(%rsp), %rax
movq 0x30(%rax), %rax
cmpl $0x7, (%rax)
je 0x7633
movq 0x119eb(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xe96b(%rip), %rsi      # 0x15f97
movb $0x0, %al
callq 0x21a0
jmp 0x7743
movq 0x70(%rsp), %rdi
callq 0xa440
movq %rax, 0x38(%rsp)
movq 0x78(%rsp), %rax
cmpl $0x1, 0x18(%rax)
jne 0x765d
movq 0x38(%rsp), %rax
cmpl $0x1, 0x18(%rax)
je 0x768a
movq 0x11994(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xe944(%rip), %rsi      # 0x15fc7
movb $0x0, %al
callq 0x21a0
jmp 0x7743
movq 0x78(%rsp), %rax
cmpl $0x3, 0x18(%rax)
je 0x76d2
movq 0x78(%rsp), %rax
cmpl $0x4, 0x18(%rax)
je 0x76d2
movq 0x1194c(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xe931(%rip), %rsi      # 0x15ffc
movb $0x0, %al
callq 0x21a0
movq 0x78(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xa200
testb $0x1, %al
jne 0x76f3
jmp 0x7712
movq 0x78(%rsp), %rdi
movq 0x70(%rsp), %rax
movq 0x30(%rax), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rsi
callq 0xa200
testb $0x1, %al
jne 0x773f
movq 0x118df(%rip), %rax     # 0x18ff8
movq (%rax), %rdi
movq 0x70(%rsp), %rax
movq 0x40(%rax), %rax
movq 0x10(%rax), %rdx
movq 0x70(%rsp), %rax
movl 0x48(%rax), %ecx
leaq 0xe901(%rip), %rsi      # 0x16039
movb $0x0, %al
callq 0x21a0
jmp 0x7743
jmp 0x7743
jmp 0x7745
movq 0x70(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x70(%rsp)
jmp 0x759b
movq 0x78(%rsp), %rax
movl 0x44(%rax), %ecx
orl $0x8000, %ecx           # imm = 0x8000
movl %ecx, 0x44(%rax)
cmpq $0x0, 0x78(%rsp)
je 0x77e0
movq 0x78(%rsp), %rdi
callq 0xf6c0
testb $0x1, %al
jne 0x77e0
movq 0x90(%rsp), %rax
cmpq $0x0, 0x20(%rax)
je 0x77e0
movq 0x78(%rsp), %rax
movq 0x60(%rax), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rax
movq 0x20(%rax), %rax
movq 0x20(%rax), %rax
movq %rax, (%rsp)
leaq 0x11b42(%rip), %rdi     # 0x192f8
callq 0x6840
movq (%rsp), %rdi
movq %rax, %rsi
callq 0xb960
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xb9d0
movq %rax, %rcx
movq 0x78(%rsp), %rax
movq %rcx, 0x60(%rax)
addq $0x98, %rsp
retq
nopl (%rax,%rax)