// File: /workspace/github_c_makefile_star2_O0/mati75[P]evilwm/client_move.c
// Function: snap_client
static void snap_client(struct client *c, struct monitor *monitor) {
	int dx, dy;
	int dpy_width = monitor->width;
	int dpy_height = monitor->height;

	// Snap to other windows

	dx = dy = option.snap;
	for (struct list *iter = clients_tab_order; iter; iter = iter->next) {
		struct client *ci = iter->data;
		if (ci == c)
			continue;
		if (ci->screen != c->screen)
			continue;
		if (!is_fixed(ci) && ci->vdesk != c->screen->vdesk)
			continue;
		if (ci->is_dock && !c->screen->docks_visible)
			continue;
		if (ci->y - ci->border - c->border - c->height - c->y <= option.snap && c->y - c->border - ci->border - ci->height - ci->y <= option.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 <= option.snap && c->x - c->border - ci->border - ci->width - ci->x <= option.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) < option.snap)
		c->x += dx;
	if (abs(dy) < option.snap)
		c->y += dy;

	// Snap to screen border

	if (abs(c->x - c->border - monitor->x) < option.snap)
		c->x = monitor->x + c->border;
	if (abs(c->y - c->border - monitor->y) < option.snap)
		c->y = monitor->y + c->border;
	if (abs(c->x + c->width + c->border - monitor->x - dpy_width) < option.snap)
		c->x = monitor->x + dpy_width - c->width - c->border;
	if (abs(c->y + c->height + c->border - monitor->y - dpy_height) < option.snap)
		c->y = monitor->y + dpy_height - c->height - c->border;

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x20(%rbp)
leaq 0xbd0d(%rip), %rax      # 0x12f48
movl 0x30(%rax), %eax
movl %eax, -0x18(%rbp)
movl %eax, -0x14(%rbp)
leaq 0xbb15(%rip), %rax      # 0x12d60
movq (%rax), %rax
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x74e8
movq -0x28(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x8(%rbp), %rax
jne 0x7278
jmp 0x74d8
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
cmpq 0x10(%rcx), %rax
je 0x728f
jmp 0x74d8
movq -0x30(%rbp), %rax
cmpl $-0x1, 0x20(%rax)
je 0x72b2
movq -0x30(%rbp), %rax
movl 0x20(%rax), %eax
movq -0x8(%rbp), %rcx
movq 0x10(%rcx), %rcx
cmpl 0x60(%rcx), %eax
je 0x72b2
jmp 0x74d8
movq -0x30(%rbp), %rax
cmpl $0x0, 0x94(%rax)
je 0x72d2
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x68(%rax)
jne 0x72d2
jmp 0x74d8
movq -0x30(%rbp), %rax
movl 0x2c(%rax), %eax
movq -0x30(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x2c(%rcx), %eax
leaq 0xbc4c(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jg 0x73d4
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x34(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x2c(%rcx), %eax
leaq 0xbc19(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jg 0x73d4
movl -0x14(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
addl 0x3c(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x3c(%rax), %esi
callq 0x7e10
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x30(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x30(%rax), %esi
callq 0x7e10
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %edi
movq -0x30(%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 0x3c(%rax), %esi
movq -0x30(%rbp), %rax
subl 0x3c(%rax), %esi
callq 0x7e10
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x28(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x28(%rax), %esi
callq 0x7e10
movl %eax, -0x14(%rbp)
movq -0x30(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x30(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x30(%rcx), %eax
movq -0x8(%rbp), %rcx
subl 0x28(%rcx), %eax
leaq 0xbb4a(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jg 0x74d6
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x30(%rcx), %eax
movq -0x30(%rbp), %rcx
subl 0x28(%rcx), %eax
leaq 0xbb17(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jg 0x74d6
movl -0x18(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x2c(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x34(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
addl 0x3c(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x3c(%rax), %esi
callq 0x7e10
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x2c(%rax), %esi
movq -0x30(%rbp), %rax
addl 0x34(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x34(%rax), %esi
callq 0x7e10
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x34(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x3c(%rax), %esi
movq -0x30(%rbp), %rax
subl 0x3c(%rax), %esi
callq 0x7e10
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %edi
movq -0x30(%rbp), %rax
movl 0x2c(%rax), %esi
movq -0x8(%rbp), %rax
subl 0x2c(%rax), %esi
callq 0x7e10
movl %eax, -0x18(%rbp)
jmp 0x74d8
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0x7252
movl -0x14(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xba4f(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x750b
movl -0x14(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x28(%rax), %ecx
movl %ecx, 0x28(%rax)
movl -0x18(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xba2c(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x752e
movl -0x18(%rbp), %ecx
movq -0x8(%rbp), %rax
addl 0x2c(%rax), %ecx
movl %ecx, 0x2c(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x10(%rbp), %rcx
subl (%rcx), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xb9f8(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x7569
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
addl 0x3c(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %eax
movq -0x8(%rbp), %rcx
subl 0x3c(%rcx), %eax
movq -0x10(%rbp), %rcx
subl 0x4(%rcx), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xb9bc(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x75a6
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x8(%rbp), %rax
addl 0x3c(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x30(%rcx), %eax
movq -0x8(%rbp), %rcx
addl 0x3c(%rcx), %eax
movq -0x10(%rbp), %rcx
subl (%rcx), %eax
subl -0x1c(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xb976(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x75f5
movq -0x10(%rbp), %rax
movl (%rax), %ecx
addl -0x1c(%rbp), %ecx
movq -0x8(%rbp), %rax
subl 0x30(%rax), %ecx
movq -0x8(%rbp), %rax
subl 0x3c(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %eax
movq -0x8(%rbp), %rcx
addl 0x34(%rcx), %eax
movq -0x8(%rbp), %rcx
addl 0x3c(%rcx), %eax
movq -0x10(%rbp), %rcx
subl 0x4(%rcx), %eax
subl -0x20(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
leaq 0xb926(%rip), %rcx      # 0x12f48
cmpl 0x30(%rcx), %eax
jge 0x7646
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
addl -0x20(%rbp), %ecx
movq -0x8(%rbp), %rax
subl 0x34(%rax), %ecx
movq -0x8(%rbp), %rax
subl 0x3c(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x2c(%rax)
movq -0x8(%rbp), %rax
movl 0x28(%rax), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movq -0x10(%rbp), %rcx
movl (%rcx), %ecx
movq -0x8(%rbp), %rdx
addl 0x3c(%rdx), %ecx
cmpl %ecx, %eax
jne 0x767e
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
cmpl -0x1c(%rbp), %eax
jne 0x767e
movq -0x10(%rbp), %rax
movl (%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x28(%rax)
movq -0x8(%rbp), %rax
movl 0x2c(%rax), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %ecx
movq -0x8(%rbp), %rdx
addl 0x3c(%rdx), %ecx
cmpl %ecx, %eax
jne 0x76b8
movq -0x8(%rbp), %rax
movl 0x34(%rax), %eax
cmpl -0x20(%rbp), %eax
jne 0x76b8
movq -0x10(%rbp), %rax
movl 0x4(%rax), %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x2c(%rax)
addq $0x30, %rsp
popq %rbp
retq
nop