// File: /workspace/github_c_makefile_star2_O0/kek[P]evilwm/screen.c
// Function: snap_client
static void snap_client(Client *c) {
	int dx, dy;
	int dpy_width = DisplayWidth(dpy, c->screen->screen);
	int dpy_height = DisplayHeight(dpy, c->screen->screen);
	struct list *iter;
	Client *ci;

	/* snap to other windows */
	dx = dy = opt_snap;
	for (iter = clients_tab_order; iter; iter = iter->next) {
		ci = iter->data;
		if (ci == c) continue;
		if (ci->screen != c->screen) continue;
#ifdef VWM
		if (!is_fixed(ci) && ci->vdesk != c->screen->vdesk) continue;
#endif
		if (ci->is_dock && !c->screen->docks_visible) continue;
		if (ci->y - ci->border - c->border - c->height - c->y <= opt_snap && c->y - c->border - ci->border - ci->height - ci->y <= opt_snap) {
			dx = absmin(dx, ci->x + ci->width - c->x + c->border + ci->border);
			dx = absmin(dx, ci->x + ci->width - c->x - c->width);
			dx = absmin(dx, ci->x - c->x - c->width - c->border - ci->border);
			dx = absmin(dx, ci->x - c->x);
		}
		if (ci->x - ci->border - c->border - c->width - c->x <= opt_snap && c->x - c->border - ci->border - ci->width - ci->x <= opt_snap) {
			dy = absmin(dy, ci->y + ci->height - c->y + c->border + ci->border);
			dy = absmin(dy, ci->y + ci->height - c->y - c->height);
			dy = absmin(dy, ci->y - c->y - c->height - c->border - ci->border);
			dy = absmin(dy, ci->y - c->y);
		}
	}
	if (abs(dx) < opt_snap)
		c->x += dx;
	if (abs(dy) < opt_snap)
		c->y += dy;

	/* snap to screen border */
	if (abs(c->x - c->border) < opt_snap) c->x = c->border;
	if (abs(c->y - c->border) < opt_snap) c->y = c->border;
	if (abs(c->x + c->width + c->border - dpy_width) < opt_snap)
		c->x = dpy_width - c->width - c->border;
	if (abs(c->y + c->height + c->border - dpy_height) < opt_snap)
		c->y = dpy_height - c->height - c->border;

	if (abs(c->x) == c->border && c->width == dpy_width)
		c->x = 0;
	if (abs(c->y) == c->border && c->height == dpy_height)
		c->y = 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
leaq 0x5dad(%rip), %rax      # 0xf980
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movslq (%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x18(%rax), %eax
movl %eax, -0x14(%rbp)
leaq 0x5d84(%rip), %rax      # 0xf980
movq (%rax), %rax
movq 0xe8(%rax), %rax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
movslq (%rcx), %rcx
shlq $0x7, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
movl %eax, -0x18(%rbp)
leaq 0x5cff(%rip), %rax      # 0xf924
movl (%rax), %eax
movl %eax, -0x10(%rbp)
movl %eax, -0xc(%rbp)
leaq 0x5d04(%rip), %rax      # 0xf938
movq (%rax), %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0x9eca
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq -0x8(%rbp), %rax
jne 0x9c61
jmp 0x9eba
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x9c78
jmp 0x9eba
movq -0x28(%rbp), %rax
cmpl $-0x1, 0x74(%rax)
je 0x9c9b
movq -0x28(%rbp), %rax
movl 0x74(%rax), %eax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x40(%rcx), %eax
je 0x9c9b
jmp 0x9eba
movq -0x28(%rbp), %rax
cmpl $0x0, 0x78(%rax)
je 0x9cb8
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x68(%rax)
jne 0x9cb8
jmp 0x9eba
movq -0x28(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x30(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x28(%rcx), %eax
leaq 0x5c42(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jg 0x9db8
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x30(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x28(%rcx), %eax
leaq 0x5c10(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jg 0x9db8
movl -0xc(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x24(%rax), %esi
movq -0x8(%rbp), %rax
addl 0x34(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x34(%rax), %esi
callq 0xac80
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x24(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
callq 0xac80
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x24(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x34(%rax), %esi
movq -0x28(%rbp), %rax
subl 0x34(%rax), %esi
callq 0xac80
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x24(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x24(%rax), %esi
callq 0xac80
movl %eax, -0xc(%rbp)
movq -0x28(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x28(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x2c(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x24(%rcx), %eax
leaq 0x5b42(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jg 0x9eb8
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x2c(%rcx), %eax
movq -0x28(%rbp), %rcx
subl 0x24(%rcx), %eax
leaq 0x5b10(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jg 0x9eb8
movl -0x10(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
addl 0x34(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x34(%rax), %esi
callq 0xac80
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x28(%rbp), %rax
addl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x30(%rax), %esi
callq 0xac80
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x34(%rax), %esi
movq -0x28(%rbp), %rax
subl 0x34(%rax), %esi
callq 0xac80
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %edi
movq -0x28(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
callq 0xac80
movl %eax, -0x10(%rbp)
jmp 0x9eba
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
jmp 0x9c3b
movl -0xc(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x5a49(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9eec
movl -0xc(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x24(%rax), %ecx
movl %ecx, 0x24(%rax)
movl -0x10(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x5a27(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9f0e
movl -0x10(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x59fa(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9f3c
movq -0x8(%rbp), %rax
movl 0x34(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x59cc(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9f6a
movq -0x8(%rbp), %rax
movl 0x34(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x2c(%rcx), %eax
movq -0x8(%rbp), %rcx
addl 0x34(%rcx), %eax
subl -0x14(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x5994(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9fac
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %ecx
movq -0x8(%rbp), %rax
subl 0x34(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x24(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x30(%rcx), %eax
movq -0x8(%rbp), %rcx
addl 0x34(%rcx), %eax
subl -0x18(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0x5952(%rip), %rcx      # 0xf924
cmpl (%rcx), %eax
jge 0x9fee
movl -0x18(%rbp), %ecx
movq -0x8(%rbp), %rax
subl 0x30(%rax), %ecx
movq -0x8(%rbp), %rax
subl 0x34(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movq -0x8(%rbp), %rcx
cmpl 0x34(%rcx), %eax
jne 0xa01c
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0xa01c
movq -0x8(%rbp), %rax
movl $0x0, 0x24(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movq -0x8(%rbp), %rcx
cmpl 0x34(%rcx), %eax
jne 0xa04a
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
cmpl -0x18(%rbp), %eax
jne 0xa04a
movq -0x8(%rbp), %rax
movl $0x0, 0x28(%rax)
addq $0x30, %rsp
popq %rbp
retq