Function at 0x1ffcbdd0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push ebx
push esi
push edi
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push ebp
mov edi, 1
push 0x10
call esi
test ax, ax
jl 0x1ffcbded
xor edi, edi
push 0x11
mov ebx, 1
call esi
test ax, ax
jl 0x1ffcbdfd
xor ebx, ebx
push 0x12
call esi
test ax, ax
mov eax, 1
jl 0x1ffcbe0d
xor eax, eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x18], eax
je 0x1ffcc25b
xor eax, eax
mov ebp, dword [esp + 0x20]
mov ax, word [0x1ffe7a88]
push eax
push ebp
call dword [sym.imp.USER32.dll_GetPropA]
test eax, eax
je 0x1ffcbe84
xor eax, eax
mov ax, word [0x1ffe7a88]
push eax
push ebp
call dword [sym.imp.USER32.dll_GetPropA]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFlags]
cmp eax, 0x8000
je 0x1ffcbe84
xor eax, eax
mov ax, word [0x1ffe7a88]
push eax
push ebp
call dword [sym.imp.USER32.dll_GetPropA]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov esi, eax
xor eax, eax
mov ax, word [0x1ffe7a88]
push eax
push ebp
call dword [sym.imp.USER32.dll_GetPropA]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
jmp 0x1ffcbe86
xor esi, esi
mov eax, dword [esi + 0x2e0]
test eax, eax
je 0x1ffcbebe
push eax
call dword [sym.imp.KERNEL32.dll_GlobalFlags]
cmp eax, 0x8000
je 0x1ffcbebe
mov eax, dword [esi + 0x2e0]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x2e0]
push eax
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
jmp 0x1ffcbec6
mov dword [esp + 0x10], 0
cmp dword [esp + 0x10], 0
je 0x1ffcbf10
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x1c], 0
je 0x1ffcbf10
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
and eax, 0xffff
and ecx, 0xffff
shl eax, 0x10
mov edx, dword [esp + 0x24]
or eax, ecx
mov ecx, dword [esi + 0x2f0]
push eax
push edx
push 0x100
push ebp
push ecx
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xc
ret
mov ecx, dword [esp + 0x24]
sub ecx, 8
cmp ecx, 0x72
ja case.0x1ffcbf28.20
xor eax, eax
mov al, byte [ecx + 0x1ffcc298]
jmp dword [eax*4 + 0x1ffcc264]
cmp dword [esp + 0x18], 0
je case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
jne case.0x1ffcbf28.20
push esi
call fcn.1ffc4a80
jmp case.0x1ffcbf28.20
test byte [esp + 0x31], 0x40
jne case.0x1ffcbf28.20
test byte [esi + 0x2e4], 1
je case.0x1ffcbf28.20
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea ecx, [esp + 0x10]
push ecx
push ebp
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ecx, dword [esp + 0x14]
push 5
mov edx, dword [esp + 0x14]
push ecx
push edx
push ebp
call fcn.1ffcb6a0
add esp, 0x10
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test edi, edi
je 0x1ffcbfc8
test ebx, ebx
jne 0x1ffcbfc0
push esi
push ebp
call fcn.1ffc6c70
add esp, 8
jmp case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
je case.0x1ffcbf28.20
test esi, esi
je 0x1ffcbfdb
push esi
call dword [sym.imp.KERNEL32.dll_GlobalHandle]
mov edi, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne 0x1ffcc03e
test edi, edi
je 0x1ffcc010
push edi
call dword [sym.imp.KERNEL32.dll_GlobalFlags]
cmp eax, 0x8000
je 0x1ffcc010
push edi
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, eax
push edi
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
jmp 0x1ffcc012
xor ebx, ebx
test ebx, ebx
je 0x1ffcc03e
mov dword [esp + 0x10], 0
cmp dword [ebx + 0x28], 0
je 0x1ffcc028
inc dword [esp + 0x10]
mov eax, dword [ebx + 8]
test eax, eax
je 0x1ffcc03e
lea ecx, [esp + 0x10]
push 0
push 1
push ecx
push eax
call fcn.1ffbac20
cmp dword [esp + 0x10], 0
je case.0x1ffcbf28.20
push 0
mov eax, dword [esi + 0x2e0]
push 2
push 0x1ffe4978
push eax
push esi
call fcn.1ffc7a20
test eax, eax
je case.0x1ffcbf28.20
mov edi, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne 0x1ffcc088
push 2
push 1
push 1
push 1
push 4
push edi
call fcn.1ffba950
mov edi, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne case.0x1ffcbf28.20
push 2
push 1
push 0
push 1
push 1
push edi
call fcn.1ffba950
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test ebx, ebx
jne case.0x1ffcbf28.20
push 1
test edi, edi
push esi
push ebp
je 0x1ffcc0da
call fcn.1ffc6920
add esp, 0xc
jmp case.0x1ffcbf28.20
call fcn.1ffc7200
add esp, 0xc
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
je case.0x1ffcbf28.20
test esi, esi
je 0x1ffcc10d
push esi
call dword [sym.imp.KERNEL32.dll_GlobalHandle]
mov ebx, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne 0x1ffcc170
test ebx, ebx
je 0x1ffcc142
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalFlags]
cmp eax, 0x8000
je 0x1ffcc142
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov edi, eax
push ebx
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
jmp 0x1ffcc144
xor edi, edi
test edi, edi
je 0x1ffcc170
mov dword [esp + 0x10], 0
cmp dword [edi + 0x28], 0
je 0x1ffcc15a
inc dword [esp + 0x10]
mov eax, dword [edi + 8]
test eax, eax
je 0x1ffcc170
lea ecx, [esp + 0x10]
push 0
push 1
push ecx
push eax
call fcn.1ffbac20
cmp dword [esp + 0x10], 0
je case.0x1ffcbf28.20
push 0
mov eax, dword [esi + 0x2e0]
push 2
push 0x1ffe4978
push eax
push esi
call fcn.1ffc7a20
test eax, eax
je case.0x1ffcbf28.20
mov edi, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne 0x1ffcc1ba
push 2
push 1
push 1
push 1
push 4
push edi
call fcn.1ffba950
mov edi, dword [esi + 0x2e0]
push 0
call sub.LTKRN13N.dll_Ordinal_196
test eax, eax
jne case.0x1ffcbf28.20
push 2
push 1
push 0
push 1
push 1
push edi
call fcn.1ffba950
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
je case.0x1ffcbf28.20
push esi
push ebp
call fcn.1ffc6c70
add esp, 8
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
je case.0x1ffcbf28.20
push 1
push esi
push ebp
call fcn.1ffc6920
add esp, 0xc
jmp case.0x1ffcbf28.20
cmp dword [esp + 0x18], 0
jne case.0x1ffcbf28.20
test edi, edi
jne case.0x1ffcbf28.20
test ebx, ebx
je case.0x1ffcbf28.20
push esi
call fcn.1ffc4a80
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
and eax, 0xffff
and ecx, 0xffff
shl eax, 0x10
mov edx, dword [esp + 0x24]
or eax, ecx
mov ecx, dword [esi + 0x2f0]
push eax
push edx
push 0x100
push ebp
push ecx
call dword [sym.imp.USER32.dll_CallWindowProcA]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0xc
ret