// File: /workspace/github_c_makefile_star2_O1/aimerneige[P]st/x.c
// Function: kpress
void
kpress(XEvent *ev)
{
	XKeyEvent *e = &ev->xkey;
	KeySym ksym;
	char buf[64], *customkey;
	int len;
	Rune c;
	Status status;
	Shortcut *bp;

	if (xw.pointerisvisible) {
		XDefineCursor(xw.dpy, xw.win, xw.bpointer);
		xsetpointermotion(1);
		xw.pointerisvisible = 0;
	}

	if (IS_SET(MODE_KBDLOCK))
		return;

	if (xw.ime.xic)
		len = XmbLookupString(xw.ime.xic, e, buf, sizeof buf, &ksym, &status);
	else
		len = XLookupString(e, buf, sizeof buf, &ksym, NULL);
	/* 1. shortcuts */
	for (bp = shortcuts; bp < shortcuts + LEN(shortcuts); bp++) {
		if (ksym == bp->keysym && match(bp->mod, e->state)) {
			bp->func(&(bp->arg));
			return;
		}
	}

	/* 2. custom keys from config.h */
	if ((customkey = kmap(ksym, e->state))) {
		ttywrite(customkey, strlen(customkey), 1);
		return;
	}

	/* 3. composed string from input method */
	if (len == 0)
		return;
	if (len == 1 && e->state & Mod1Mask) {
		if (IS_SET(MODE_8BIT)) {
			if (*buf < 0177) {
				c = *buf | 0x80;
				len = utf8encode(c, buf);
			}
		} else {
			buf[1] = buf[0];
			buf[0] = '\033';
			len = 2;
		}
	}
	ttywrite(buf, len, 1);
}

// Assembly:
pushq %rbx
subq $0x50, %rsp
movq %rdi, %rbx
cmpl $0x0, 0xf7da(%rip)      # 0x1ce00
je 0xd672
movq 0xf6d9(%rip), %rdi      # 0x1cd08
movq 0xf6e2(%rip), %rsi      # 0x1cd18
movq 0xf7bb(%rip), %rdx      # 0x1cdf8
callq 0x5750
orb $0x40, 0xf77f(%rip)     # 0x1cdc8
movq 0xf6b8(%rip), %rdi      # 0x1cd08
movq 0xf6c1(%rip), %rsi      # 0x1cd18
leaq 0xf722(%rip), %rcx      # 0x1cd80
movl $0x800, %edx            # imm = 0x800
callq 0x5940
movl $0x0, 0xf78e(%rip)      # 0x1ce00
testb $0x40, 0xf7cf(%rip)     # 0x1ce48
jne 0xd84b
movq 0xf6d2(%rip), %rdi      # 0x1cd58
testq %rdi, %rdi
je 0xd6a7
leaq 0x10(%rsp), %rdx
movq %rsp, %r8
leaq 0xc(%rsp), %r9
movq %rbx, %rsi
movl $0x40, %ecx
callq 0x5760
jmp 0xd6bf
leaq 0x10(%rsp), %rsi
movq %rsp, %rcx
movq %rbx, %rdi
movl $0x40, %edx
xorl %r8d, %r8d
callq 0x5150
movl $0x18, %ecx
movq (%rsp), %rsi
leaq 0x8fb1(%rip), %rdx      # 0x16680
movl $0xffffdfef, %edi       # imm = 0xFFFFDFEF
cmpq -0x10(%rcx,%rdx), %rsi
jne 0xd6f2
movl -0x18(%rcx,%rdx), %r8d
cmpl $-0x1, %r8d
je 0xd73e
movl 0x50(%rbx), %r9d
andl %edi, %r9d
cmpl %r8d, %r9d
je 0xd73e
leaq 0x20(%rcx), %r8
addq $-0x18, %rcx
cmpq $0x220, %rcx            # imm = 0x220
movq %r8, %rcx
jb 0xd6d4
movq (%rsp), %rdx
movl 0x50(%rbx), %ecx
xorl %edi, %edi
movl %edi, %esi
cmpq $-0x1, %rdx
je 0xd720
movb $0x1, %dil
testb $0x1, %sil
je 0xd70f
movl %edx, %edi
andl $0xff00, %edi           # imm = 0xFF00
cmpl $0xfd00, %edi           # imm = 0xFD00
setb %dil
testb %sil, %dil
je 0xd74b
xorl %ebx, %ebx
jmp 0xd7d5
leaq (%rdx,%rcx), %rdi
callq *-0x8(%rcx,%rdx)
jmp 0xd84b
movl %ecx, %esi
andl $0xffffdfef, %esi       # imm = 0xFFFFDFEF
movq $-0x20, %rdi
movl 0xf6e7(%rip), %r9d      # 0x1ce48
leaq 0x6c08(%rip), %r8       # 0x14370
xorl %ebx, %ebx
cmpq %rdx, 0x20(%rdi,%r8)
jne 0xd7c8
movl 0x28(%rdi,%r8), %r10d
cmpl $-0x1, %r10d
setne %r11b
cmpl %r10d, %esi
setne %r10b
testb %r10b, %r11b
jne 0xd7c8
movb 0x38(%rdi,%r8), %r10b
testb $0x4, %r9b
jne 0xd79c
testb %r10b, %r10b
jg 0xd7c8
jmp 0xd7a1
testb %r10b, %r10b
js 0xd7c8
btl $0x11, %r9d
jae 0xd7b0
cmpb $0x2, 0x38(%rdi,%r8)
je 0xd7c8
btl $0x8, %r9d
movb 0x39(%rdi,%r8), %r10b
jb 0xd7c3
testb %r10b, %r10b
jg 0xd7c8
jmp 0xd81a
testb %r10b, %r10b
jns 0xd81a
addq $0x20, %rdi
cmpq $0x1a00, %rdi           # imm = 0x1A00
jb 0xd76a
testq %rbx, %rbx
je 0xd7ea
movq %rbx, %rdi
callq 0x5370
movq %rbx, %rdi
movq %rax, %rsi
jmp 0xd841
testl %eax, %eax
je 0xd84b
cmpl $0x1, %eax
jne 0xd839
movl $0x1, %eax
testb $0x8, %cl
je 0xd839
testb $0x4, 0xf645(%rip)      # 0x1ce49
movb 0x10(%rsp), %cl
jne 0xd821
movb %cl, 0x11(%rsp)
movb $0x1b, 0x10(%rsp)
movl $0x2, %eax
jmp 0xd839
movq 0x30(%rdi,%r8), %rbx
jmp 0xd7d5
cmpb $0x7f, %cl
je 0xd839
movsbl %cl, %edi
orl $0x80, %edi
leaq 0x10(%rsp), %rsi
callq 0x6024
movslq %eax, %rsi
leaq 0x10(%rsp), %rdi
movl $0x1, %edx
callq 0x6e41
addq $0x50, %rsp
popq %rbx
retq