// File: /workspace/github_c_makefile_star2_O0/baskerville[P]bspwm/src/query.c
// Function: node_matches
bool node_matches(coordinates_t *loc, coordinates_t *ref, node_select_t *sel)
{
	if (loc->node == NULL) {
		return false;
	}

	if (sel->focused != OPTION_NONE &&
	    loc->node != mon->desk->focus
	    ? sel->focused == OPTION_TRUE
	    : sel->focused == OPTION_FALSE) {
		return false;
	}

	if (sel->active != OPTION_NONE &&
	    loc->node != loc->desktop->focus
	    ? sel->active == OPTION_TRUE
	    : sel->active == OPTION_FALSE) {
		return false;
	}

	if (sel->automatic != OPTION_NONE &&
	    loc->node->presel != NULL
	    ? sel->automatic == OPTION_TRUE
	    : sel->automatic == OPTION_FALSE) {
		return false;
	}

	if (sel->local != OPTION_NONE &&
	    loc->desktop != ref->desktop
	    ? sel->local == OPTION_TRUE
	    : sel->local == OPTION_FALSE) {
		return false;
	}

	if (sel->active != OPTION_NONE &&
	    loc->desktop != loc->monitor->desk
	    ? sel->active == OPTION_TRUE
	    : sel->active == OPTION_FALSE) {
		return false;
	}

	if (sel->leaf != OPTION_NONE &&
	    !is_leaf(loc->node)
	    ? sel->leaf == OPTION_TRUE
	    : sel->leaf == OPTION_FALSE) {
		return false;
	}

	if (sel->window != OPTION_NONE &&
	    loc->node->client == NULL
	    ? sel->window == OPTION_TRUE
	    : sel->window == OPTION_FALSE) {
		return false;
	}

#define NFLAG(p) \
	if (sel->p != OPTION_NONE && \
	    !loc->node->p \
	    ? sel->p == OPTION_TRUE \
	    : sel->p == OPTION_FALSE) { \
		return false; \
	}
	NFLAG(hidden)
	NFLAG(sticky)
	NFLAG(private)
	NFLAG(locked)
	NFLAG(marked)
#undef NFLAG

#define NSPLIT(p, e) \
	if (sel->p != OPTION_NONE && \
	    loc->node->split_type != e \
	    ? sel->p == OPTION_TRUE \
	    : sel->p == OPTION_FALSE) { \
		return false; \
	}
	NSPLIT(horizontal, TYPE_HORIZONTAL)
	NSPLIT(vertical, TYPE_VERTICAL)
#undef NSPLIT

	if (sel->descendant_of != OPTION_NONE &&
	    !is_descendant(loc->node, ref->node)
	    ? sel->descendant_of == OPTION_TRUE
	    : sel->descendant_of == OPTION_FALSE) {
		return false;
	}

	if (sel->ancestor_of != OPTION_NONE &&
	    !is_descendant(ref->node, loc->node)
	    ? sel->ancestor_of == OPTION_TRUE
	    : sel->ancestor_of == OPTION_FALSE) {
		return false;
	}

	if (loc->node->client == NULL) {
		if (sel->same_class == OPTION_TRUE ||
		    sel->tiled == OPTION_TRUE ||
		    sel->pseudo_tiled == OPTION_TRUE ||
		    sel->floating == OPTION_TRUE ||
		    sel->fullscreen == OPTION_TRUE ||
		    sel->below == OPTION_TRUE ||
		    sel->normal == OPTION_TRUE ||
		    sel->above == OPTION_TRUE ||
		    sel->urgent == OPTION_TRUE) {
			return false;
		}
		return true;
	}

	if (ref->node != NULL && ref->node->client != NULL &&
	    sel->same_class != OPTION_NONE &&
	    streq(loc->node->client->class_name, ref->node->client->class_name)
	    ? sel->same_class == OPTION_FALSE
	    : sel->same_class == OPTION_TRUE) {
		return false;
	}

#define WSTATE(p, e) \
	if (sel->p != OPTION_NONE && \
	    loc->node->client->state != e \
	    ? sel->p == OPTION_TRUE \
	    : sel->p == OPTION_FALSE) { \
		return false; \
	}
	WSTATE(tiled, STATE_TILED)
	WSTATE(pseudo_tiled, STATE_PSEUDO_TILED)
	WSTATE(floating, STATE_FLOATING)
	WSTATE(fullscreen, STATE_FULLSCREEN)
#undef WSTATE

#define WLAYER(p, e) \
	if (sel->p != OPTION_NONE && \
	    loc->node->client->layer != e \
	    ? sel->p == OPTION_TRUE \
	    : sel->p == OPTION_FALSE) { \
		return false; \
	}
	WLAYER(below, LAYER_BELOW)
	WLAYER(normal, LAYER_NORMAL)
	WLAYER(above, LAYER_ABOVE)
#undef WLAYER

#define WFLAG(p) \
	if (sel->p != OPTION_NONE && \
	    !loc->node->client->p \
	    ? sel->p == OPTION_TRUE \
	    : sel->p == OPTION_FALSE) { \
		return false; \
	}
	WFLAG(urgent)
#undef WFLAG

	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x23e18
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0x23e4a
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0x118cf(%rip), %rcx     # 0x35700
movq (%rcx), %rcx
movq 0x58(%rcx), %rcx
cmpq 0x38(%rcx), %rax
je 0x23e4a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x4(%rax)
je 0x23e54
jmp 0x23e5d
movq -0x20(%rbp), %rax
cmpl $0x2, 0x4(%rax)
jne 0x23e5d
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x23e89
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x8(%rcx), %rcx
cmpq 0x38(%rcx), %rax
je 0x23e89
movq -0x20(%rbp), %rax
cmpl $0x1, 0x8(%rax)
je 0x23e93
jmp 0x23e9c
movq -0x20(%rbp), %rax
cmpl $0x2, 0x8(%rax)
jne 0x23e9c
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, (%rax)
je 0x23ebf
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0x23ebf
movq -0x20(%rbp), %rax
cmpl $0x1, (%rax)
je 0x23ec8
jmp 0x23ed1
movq -0x20(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x23ed1
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0xc(%rax)
je 0x23ef9
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x18(%rbp), %rcx
cmpq 0x8(%rcx), %rax
je 0x23ef9
movq -0x20(%rbp), %rax
cmpl $0x1, 0xc(%rax)
je 0x23f03
jmp 0x23f0c
movq -0x20(%rbp), %rax
cmpl $0x2, 0xc(%rax)
jne 0x23f0c
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x23f37
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x10(%rbp), %rcx
movq (%rcx), %rcx
cmpq 0x58(%rcx), %rax
je 0x23f37
movq -0x20(%rbp), %rax
cmpl $0x1, 0x8(%rax)
je 0x23f41
jmp 0x23f4a
movq -0x20(%rbp), %rax
cmpl $0x2, 0x8(%rax)
jne 0x23f4a
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x23f71
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0xb870
testb $0x1, %al
jne 0x23f71
movq -0x20(%rbp), %rax
cmpl $0x1, 0x10(%rax)
je 0x23f7b
jmp 0x23f84
movq -0x20(%rbp), %rax
cmpl $0x2, 0x10(%rax)
jne 0x23f84
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x14(%rax)
je 0x23fa9
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x48(%rax)
jne 0x23fa9
movq -0x20(%rbp), %rax
cmpl $0x1, 0x14(%rax)
je 0x23fb3
jmp 0x23fbc
movq -0x20(%rbp), %rax
cmpl $0x2, 0x14(%rax)
jne 0x23fbc
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x28(%rax)
je 0x23fe0
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
testb $0x1, 0x25(%rax)
jne 0x23fe0
movq -0x20(%rbp), %rax
cmpl $0x1, 0x28(%rax)
je 0x23fea
jmp 0x23ff3
movq -0x20(%rbp), %rax
cmpl $0x2, 0x28(%rax)
jne 0x23ff3
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x2c(%rax)
je 0x24017
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
testb $0x1, 0x26(%rax)
jne 0x24017
movq -0x20(%rbp), %rax
cmpl $0x1, 0x2c(%rax)
je 0x24021
jmp 0x2402a
movq -0x20(%rbp), %rax
cmpl $0x2, 0x2c(%rax)
jne 0x2402a
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x30(%rax)
je 0x2404e
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
testb $0x1, 0x27(%rax)
jne 0x2404e
movq -0x20(%rbp), %rax
cmpl $0x1, 0x30(%rax)
je 0x24058
jmp 0x24061
movq -0x20(%rbp), %rax
cmpl $0x2, 0x30(%rax)
jne 0x24061
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x34(%rax)
je 0x24085
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
testb $0x1, 0x28(%rax)
jne 0x24085
movq -0x20(%rbp), %rax
cmpl $0x1, 0x34(%rax)
je 0x2408f
jmp 0x24098
movq -0x20(%rbp), %rax
cmpl $0x2, 0x34(%rax)
jne 0x24098
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x38(%rax)
je 0x240bc
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
testb $0x1, 0x29(%rax)
jne 0x240bc
movq -0x20(%rbp), %rax
cmpl $0x1, 0x38(%rax)
je 0x240c6
jmp 0x240cf
movq -0x20(%rbp), %rax
cmpl $0x2, 0x38(%rax)
jne 0x240cf
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x58(%rax)
je 0x240f3
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x240f3
movq -0x20(%rbp), %rax
cmpl $0x1, 0x58(%rax)
je 0x240fd
jmp 0x24106
movq -0x20(%rbp), %rax
cmpl $0x2, 0x58(%rax)
jne 0x24106
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
je 0x2412a
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, 0x4(%rax)
je 0x2412a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x5c(%rax)
je 0x24134
jmp 0x2413d
movq -0x20(%rbp), %rax
cmpl $0x2, 0x5c(%rax)
jne 0x2413d
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x44(%rax)
je 0x2416c
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xd040
testb $0x1, %al
jne 0x2416c
movq -0x20(%rbp), %rax
cmpl $0x1, 0x44(%rax)
je 0x24176
jmp 0x2417f
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x2417f
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x48(%rax)
je 0x241ae
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0xd040
testb $0x1, %al
jne 0x241ae
movq -0x20(%rbp), %rax
cmpl $0x1, 0x48(%rax)
je 0x241b8
jmp 0x241c1
movq -0x20(%rbp), %rax
cmpl $0x2, 0x48(%rax)
jne 0x241c1
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x48(%rax)
jne 0x2423c
movq -0x20(%rbp), %rax
cmpl $0x1, 0x40(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x18(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x1c(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x20(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x24(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x4c(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x50(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x54(%rax)
je 0x2422a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x3c(%rax)
jne 0x24233
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movb $0x1, -0x1(%rbp)
jmp 0x2448c
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x2428e
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x48(%rax)
je 0x2428e
movq -0x20(%rbp), %rax
cmpl $0x0, 0x40(%rax)
je 0x2428e
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rdi
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rsi
callq 0x4800
cmpl $0x0, %eax
jne 0x2428e
movq -0x20(%rbp), %rax
cmpl $0x2, 0x40(%rax)
je 0x24298
jmp 0x242a1
movq -0x20(%rbp), %rax
cmpl $0x1, 0x40(%rax)
jne 0x242a1
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x18(%rax)
je 0x242cc
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x308(%rax)
je 0x242cc
movq -0x20(%rbp), %rax
cmpl $0x1, 0x18(%rax)
je 0x242d6
jmp 0x242df
movq -0x20(%rbp), %rax
cmpl $0x2, 0x18(%rax)
jne 0x242df
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x1c(%rax)
je 0x2430a
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x1, 0x308(%rax)
je 0x2430a
movq -0x20(%rbp), %rax
cmpl $0x1, 0x1c(%rax)
je 0x24314
jmp 0x2431d
movq -0x20(%rbp), %rax
cmpl $0x2, 0x1c(%rax)
jne 0x2431d
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x20(%rax)
je 0x24348
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x2, 0x308(%rax)
je 0x24348
movq -0x20(%rbp), %rax
cmpl $0x1, 0x20(%rax)
je 0x24352
jmp 0x2435b
movq -0x20(%rbp), %rax
cmpl $0x2, 0x20(%rax)
jne 0x2435b
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x24386
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x3, 0x308(%rax)
je 0x24386
movq -0x20(%rbp), %rax
cmpl $0x1, 0x24(%rax)
je 0x24390
jmp 0x24399
movq -0x20(%rbp), %rax
cmpl $0x2, 0x24(%rax)
jne 0x24399
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x4c(%rax)
je 0x243c4
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x0, 0x310(%rax)
je 0x243c4
movq -0x20(%rbp), %rax
cmpl $0x1, 0x4c(%rax)
je 0x243ce
jmp 0x243d7
movq -0x20(%rbp), %rax
cmpl $0x2, 0x4c(%rax)
jne 0x243d7
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x50(%rax)
je 0x24402
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x1, 0x310(%rax)
je 0x24402
movq -0x20(%rbp), %rax
cmpl $0x1, 0x50(%rax)
je 0x2440c
jmp 0x24412
movq -0x20(%rbp), %rax
cmpl $0x2, 0x50(%rax)
jne 0x24412
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x54(%rax)
je 0x2443d
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
cmpl $0x2, 0x310(%rax)
je 0x2443d
movq -0x20(%rbp), %rax
cmpl $0x1, 0x54(%rax)
je 0x24447
jmp 0x2444d
movq -0x20(%rbp), %rax
cmpl $0x2, 0x54(%rax)
jne 0x2444d
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movq -0x20(%rbp), %rax
cmpl $0x0, 0x3c(%rax)
je 0x24478
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x48(%rax), %rax
testb $0x1, 0x304(%rax)
jne 0x24478
movq -0x20(%rbp), %rax
cmpl $0x1, 0x3c(%rax)
je 0x24482
jmp 0x24488
movq -0x20(%rbp), %rax
cmpl $0x2, 0x3c(%rax)
jne 0x24488
movb $0x0, -0x1(%rbp)
jmp 0x2448c
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)