Function at 0x14004c990
Capabilities:
Log keystrokes via polling

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x90
mov r13, r9
movzx ebp, dl
mov rbx, rcx
mov edi, r8d
shr edi, 0x1f
not dil
and dil, 1
mov eax, r8d
shr eax, 0x18
and al, 1
movzx esi, al
mov edx, r8d
and edx, 0xc0000000
mov r14d, ebp
mov dword [rsp + 0xc8], ebp
mov r12d, esi
shl r12d, 8
add r12d, ebp
lea eax, [rbp - 0x5b]
cmp al, 1
jbe 0x14004d08f
lea rax, str._down
lea rcx, [0x14019d210]
test dil, dil
cmovne rcx, rax
lea r10, str._repeated
lea r9, [0x14019945a]
mov rax, r9
cmp edx, 0x40000000
cmove rax, r10
lea rdx, str.extended
test sil, sil
cmovne r9, rdx
mov dword [rsp + 0x38], r8d
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], ebp
lea r8, str._nPCtoX:__svirtKey_0x_02x_s_s__keyData_0x_08x_n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov edx, 8
lea rcx, vtable.Log.0
test dil, dil
jne 0x14004cbf2
lea r8, str.Release_the_associated_KeySym_when_this_VirtKey_was_pressed_n
call fcn.1400155a0
movzx eax, word [rbx + r12*2 + 0xaf8]
xor r15d, r15d
lea edx, [r15 + 8]
lea rcx, vtable.Log.0
test ax, ax
je 0x14004cabc
mov r9d, eax
mov dword [rsp + 0x20], eax
lea r8, str.__0x_04x___c_:
call fcn.1400155a0
mov word [rbx + r12*2 + 0xaf8], r15w
jmp 0x14004cac8
lea r8, str.__Control_character:
call fcn.1400155a0
mov r9d, dword [rbx + r12*4 + 0x2f8]
mov edx, 4
lea rcx, vtable.Log.0
cmp r9d, 0xffffff
je 0x14004cb63
lea r8, str.Send_KeySym_0x_08x__release__n
call fcn.1400155a0
mov ecx, dword [rbx + r12*4 + 0x2f8]
mov rax, qword [r13 + 0x4d38]
cmp byte [rax + 0x71], r15b
je 0x14004cb15
cmp byte [rax + 0x72], r15b
jne 0x14004cb55
cmp dword [rax + 0xb54], 1
je 0x14004cb55
mov rax, qword [r13 + 0x4d40]
cmp byte [rax + 0x28], r15b
je 0x14004cb28
cmp byte [rax + 0x29], r15b
jne 0x14004cb55
mov qword [rsp + 0x40], r15
mov word [rsp + 0x40], 4
bswap ecx
mov dword [rsp + 0x44], ecx
mov byte [rsp + 0x28], 1
mov r9b, 4
mov r8d, 8
lea rdx, [rsp + 0x40]
mov rcx, r13
call fcn.140026710
mov dword [rbx + r12*4 + 0x2f8], 0xffffff
jmp 0x14004cb6f
lea r8, str.No_associated_KeySym_n
call fcn.1400155a0
lea r8, reloc.WS2_32.dll_ioctlsocket
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
lea rcx, [rbx + 0x1f8]
call qword [sym.imp.USER32.dll_GetKeyboardState]
cmp byte [rbx + 0x20a], r15b
jge 0x14004cbaa
cmp byte [rbx + 0x209], r15b
jl 0x14004d08f
cmp word [rbx + 0xf10], r15w
je 0x14004d08f
cmp byte [0x1401ba687], r15b
je 0x14004d08f
mov byte [0x1401ba687], r15b
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov cl, 0x20
call qword [sym.imp.USER32.dll_keybd_event]
xor r9d, r9d
xor edx, edx
lea r8d, [r9 + 2]
mov cl, 0x20
call qword [sym.imp.USER32.dll_keybd_event]
jmp 0x14004d08f
mov edi, 0xffffff
lea r8, str.Looking_in_key_table
call fcn.1400155a0
xor r15d, r15d
mov ecx, r15d
lea rax, [0x14018b630]
cmp byte [rax + 4], bpl
jne 0x14004cc1e
mov edi, dword [rax]
cmp sil, byte [rax + 5]
je 0x14004cc95
inc ecx
add rax, 8
cmp ecx, 0x61
jb 0x14004cc10
xor al, al
mov edx, 8
cmp edi, 0xffffff
je 0x14004cc99
lea rcx, str.matched
lea r9, str.opposite
test al, al
cmovne r9, rcx
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], edi
lea r8, str.___keyMap_gives__from__s_extended_flag__KeySym__u__0x_08x__n
lea rcx, vtable.Log.0
call fcn.1400155a0
mov r9d, edi
mov r8d, r12d
mov rdx, r13
mov rcx, rbx
call fcn.14004d0b0
lea r8, reloc.WS2_32.dll_ioctlsocket
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
jmp 0x14004d08f
mov al, 1
jmp 0x14004cc2b
lea r8, str.___not_in_special_keyMap_n
lea rcx, vtable.Log.0
call fcn.1400155a0
lea rbp, [rbx + 0x1f8]
mov rcx, rbp
call qword [sym.imp.USER32.dll_GetKeyboardState]
mov qword [rsp + 0x78], r13
mov qword [rsp + 0x80], reloc.COMCTL32.dll_InitCommonControls
lea rax, str.Left_Ctrl
mov qword [rsp + 0x88], rax
mov qword [rsp + 0x60], r13
mov qword [rsp + 0x68], reloc.WS2_32.dll_select
lea rax, str.Left_Alt
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x48], r13
mov qword [rsp + 0x50], 0x112
lea rax, str.Right_Alt
mov qword [rsp + 0x58], rax
cmp byte [rbx + 0x20a], 0
jge 0x14004cd6f
cmp byte [rbx + 0x209], 0
jge 0x14004cd6f
lea r8, str.Ctrl_Alt_pressed:_n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
lea rdx, [rbx + 0x2f8]
lea rcx, [rsp + 0x78]
call fcn.14004a440
lea rdx, [rbx + 0x2f8]
lea rcx, [rsp + 0x60]
call fcn.14004a440
lea rdx, [rbx + 0x2f8]
lea rcx, [rsp + 0x48]
call fcn.14004a440
jmp 0x14004cd97
lea r8, str.Ctrl_Alt_not_pressed__fake_release_any_Ctrl_key_n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov word [rbx + 0x29a], 0
mov byte [rbx + 0x209], 0
cmp word [rbx + 0xf10], 0
je 0x14004ced8
lea r8, str._Storing_base_character_modifier_s___n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
movzx eax, byte [rbx + 0x208]
shr al, 7
movzx edx, al
movzx eax, dl
or al, 2
movzx ecx, al
cmp byte [rbx + 0x209], 0
cmovge ecx, edx
movzx r14d, cl
movzx ebp, byte [rbx + 0x20a]
movzx ecx, word [rbx + 0xf10]
call qword [sym.imp.USER32.dll_VkKeyScanW]
movsx rdi, ax
mov esi, edi
movzx r9d, word [rbx + 0xf10]
mov dword [rsp + 0x28], edi
mov dword [rsp + 0x20], r9d
lea r8, str._A_dead_key_was_stored__restoring_the_dead_key_state:_0x_02x___c__using_virtDeadKey_0x_02x_
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov rdx, rdi
shr rdx, 8
lea r8, [rbx + 0x1f8]
call fcn.14004ae80
lea r8, reloc.WS2_32.dll_ioctlsocket
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
lea rdi, [rbx + 0x1f0]
movzx ecx, sil
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 4
mov r9, rdi
lea r8, [rbx + 0x1f8]
xor edx, edx
call qword [sym.imp.USER32.dll_ToUnicode]
lea r8, str._Restoring_base_character_modifier_s__
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
movzx eax, r14b
or al, 4
movzx edx, al
test bpl, bpl
cmovns edx, r14d
lea rbp, [rbx + 0x1f8]
mov r8, rbp
call fcn.14004ae80
lea r8, reloc.WS2_32.dll_ioctlsocket
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov word [rbx + 0xf10], r15w
mov ecx, dword [rsp + 0xc8]
jmp 0x14004cee2
lea rdi, [rbx + 0x1f0]
mov ecx, r14d
mov dword [rsp + 0x28], r15d
mov dword [rsp + 0x20], 4
mov r9, rdi
mov r8, rbp
xor edx, edx
call qword [sym.imp.USER32.dll_ToUnicode]
mov esi, eax
test eax, eax
js 0x14004cf8f
cmp eax, 2
je 0x14004cf8f
mov edx, 8
lea rcx, vtable.Log.0
test eax, eax
jle 0x14004cf7e
mov r9d, eax
lea r8, str.ToUnicode_returns__d_character_s_:_n
call fcn.1400155a0
movsxd rsi, esi
test rsi, rsi
jle 0x14004d056
nop dword [rax + rax]
movzx edx, word [rdi]
mov rcx, rbx
call fcn.14004bf00
cmp eax, 0xffffff
je 0x14004cf6f
movzx ecx, word [rdi]
mov word [rbx + r12*2 + 0xaf8], cx
mov r9d, eax
mov r8d, r12d
mov rdx, r13
mov rcx, rbx
call fcn.14004d0b0
add rdi, 2
sub rsi, 1
jne 0x14004cf40
jmp 0x14004d056
lea r8, str.No_character_is_generated_by_this_key_event_n
call fcn.1400155a0
jmp 0x14004d056
movzx r9d, word [rdi]
mov dword [rsp + 0x20], r9d
lea r8, str.ToUnicode_returns_dead_key:_0x_02x___c_
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
movzx ecx, word [rdi]
cmp byte [rbx + 0xf12], 0
je 0x14004d025
lea rax, [0x14018b174]
cmp word [rax], cx
je 0x14004cfde
inc r15d
add rax, 8
cmp r15d, 9
jb 0x14004cfc3
lea r8, str.___not_in_deadKeyMap_n
jmp 0x14004d03a
mov eax, r15d
lea rcx, [0x14018b170]
mov edi, dword [rcx + rax*8]
cmp edi, 0xffffff
je 0x14004cfd5
mov dword [rsp + 0x20], edi
mov r9d, edi
lea r8, str.___deadKeyMap_gives_KeySym__u__0x_08x__n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov r9d, edi
mov r8d, r12d
mov rdx, r13
mov rcx, rbx
call fcn.14004d0b0
jmp 0x14004d04b
mov word [rbx + 0xf10], cx
mov byte [0x1401ba687], 1
lea r8, str.___Store_the_dead_key_state__wait_for_next_key_stroke_n
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
mov rdx, rbp
mov rcx, rbx
call fcn.14004ad50
lea r8, reloc.WS2_32.dll_ioctlsocket
mov edx, 8
lea rcx, vtable.Log.0
call fcn.1400155a0
nop
lea rcx, [rsp + 0x48]
call fcn.14004a510
nop
lea rcx, [rsp + 0x60]
call fcn.14004a510
nop
lea rcx, [rsp + 0x78]
call fcn.14004a510
lea r11, [rsp + 0x90]
mov rbx, qword [r11 + 0x30]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret