// File: /workspace/github_c_makefile_star2_O0/saltyJeff[P]uClibcpp/extra/config/./expr.c
// Function: expr_eliminate_yn
struct expr *expr_eliminate_yn(struct expr *e)
{
	struct expr *tmp;

	if (e) switch (e->type) {
	case E_AND:
		e->left.expr = expr_eliminate_yn(e->left.expr);
		e->right.expr = expr_eliminate_yn(e->right.expr);
		if (e->left.expr->type == E_SYMBOL) {
			if (e->left.expr->left.sym == &symbol_no) {
				expr_free(e->left.expr);
				expr_free(e->right.expr);
				e->type = E_SYMBOL;
				e->left.sym = &symbol_no;
				e->right.expr = NULL;
				return e;
			} else if (e->left.expr->left.sym == &symbol_yes) {
				free(e->left.expr);
				tmp = e->right.expr;
				*e = *(e->right.expr);
				free(tmp);
				return e;
			}
		}
		if (e->right.expr->type == E_SYMBOL) {
			if (e->right.expr->left.sym == &symbol_no) {
				expr_free(e->left.expr);
				expr_free(e->right.expr);
				e->type = E_SYMBOL;
				e->left.sym = &symbol_no;
				e->right.expr = NULL;
				return e;
			} else if (e->right.expr->left.sym == &symbol_yes) {
				free(e->right.expr);
				tmp = e->left.expr;
				*e = *(e->left.expr);
				free(tmp);
				return e;
			}
		}
		break;
	case E_OR:
		e->left.expr = expr_eliminate_yn(e->left.expr);
		e->right.expr = expr_eliminate_yn(e->right.expr);
		if (e->left.expr->type == E_SYMBOL) {
			if (e->left.expr->left.sym == &symbol_no) {
				free(e->left.expr);
				tmp = e->right.expr;
				*e = *(e->right.expr);
				free(tmp);
				return e;
			} else if (e->left.expr->left.sym == &symbol_yes) {
				expr_free(e->left.expr);
				expr_free(e->right.expr);
				e->type = E_SYMBOL;
				e->left.sym = &symbol_yes;
				e->right.expr = NULL;
				return e;
			}
		}
		if (e->right.expr->type == E_SYMBOL) {
			if (e->right.expr->left.sym == &symbol_no) {
				free(e->right.expr);
				tmp = e->left.expr;
				*e = *(e->left.expr);
				free(tmp);
				return e;
			} else if (e->right.expr->left.sym == &symbol_yes) {
				expr_free(e->left.expr);
				expr_free(e->right.expr);
				e->type = E_SYMBOL;
				e->left.sym = &symbol_yes;
				e->right.expr = NULL;
				return e;
			}
		}
		break;
	default:
		;
	}
	return e;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
cmpq $0x0, 0x18(%rsp)
je 0xc32f
movq 0x18(%rsp), %rax
movl (%rax), %eax
movl %eax, 0xc(%rsp)
subl $0x1, %eax
je 0xc11f
jmp 0xbefb
movl 0xc(%rsp), %eax
subl $0x2, %eax
jne 0xc32b
jmp 0xbf0a
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbed0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbed0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x7, (%rax)
jne 0xc02c
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0xd2b8(%rip), %rcx      # 0x19218
cmpq %rcx, 0x8(%rax)
jne 0xbfb9
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movl $0x7, (%rax)
movq 0x18(%rsp), %rax
leaq 0xd27f(%rip), %rcx      # 0x19218
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0xd2bf(%rip), %rcx      # 0x19288
cmpq %rcx, 0x8(%rax)
jne 0xc028
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rsp), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
jmp 0xc02a
jmp 0xc02c
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
cmpl $0x7, (%rax)
jne 0xc11a
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
leaq 0xd1ca(%rip), %rcx      # 0x19218
cmpq %rcx, 0x8(%rax)
jne 0xc0a7
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movl $0x7, (%rax)
movq 0x18(%rsp), %rax
leaq 0xd191(%rip), %rcx      # 0x19218
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
leaq 0xd1d1(%rip), %rcx      # 0x19288
cmpq %rcx, 0x8(%rax)
jne 0xc116
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
jmp 0xc118
jmp 0xc11a
jmp 0xc32d
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbed0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbed0
movq %rax, %rcx
movq 0x18(%rsp), %rax
movq %rcx, 0x10(%rax)
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
cmpl $0x7, (%rax)
jne 0xc241
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0xd0a3(%rip), %rcx      # 0x19218
cmpq %rcx, 0x8(%rax)
jne 0xc1d4
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rsp), %rcx
movq 0x10(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0xd0a4(%rip), %rcx      # 0x19288
cmpq %rcx, 0x8(%rax)
jne 0xc23d
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movl $0x7, (%rax)
movq 0x18(%rsp), %rax
leaq 0xd06b(%rip), %rcx      # 0x19288
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
jmp 0xc23f
jmp 0xc241
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
cmpl $0x7, (%rax)
jne 0xc329
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
leaq 0xcfb5(%rip), %rcx      # 0x19218
cmpq %rcx, 0x8(%rax)
jne 0xc2bf
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
movq 0x18(%rsp), %rcx
movq 0x8(%rcx), %rcx
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rax)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rax)
movq 0x10(%rsp), %rdi
callq 0x2040
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
leaq 0xcfb9(%rip), %rcx      # 0x19288
cmpq %rcx, 0x8(%rax)
jne 0xc325
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
callq 0xbb90
movq 0x18(%rsp), %rax
movl $0x7, (%rax)
movq 0x18(%rsp), %rax
leaq 0xcf80(%rip), %rcx      # 0x19288
movq %rcx, 0x8(%rax)
movq 0x18(%rsp), %rax
movq $0x0, 0x10(%rax)
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0xc339
jmp 0xc327
jmp 0xc329
jmp 0xc32d
jmp 0xc32d
jmp 0xc32f
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x20(%rsp), %rax
addq $0x28, %rsp
retq
nopw %cs:(%rax,%rax)