Function at 0x4422ea
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push esi
mov esi, ecx
mov ecx, dword [ebp + 8]
push edi
xor edi, edi
cmp ecx, 0x102
jne 0x442308
xor eax, eax
jmp 0x44258c
cmp ecx, 0x100
je 0x4424bb
cmp ecx, 0x104
je 0x4424bb
cmp ecx, 0x101
je 0x442453
cmp ecx, 0x105
je 0x442453
cmp ecx, 8
jne 0x442358
lea eax, [ebp + 0xc]
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.004158d2
mov edi, eax
mov eax, edi
jmp 0x44258c
mov eax, 0x2111
cmp ecx, eax
jne 0x4423ad
mov ecx, dword [ebp + 0xc]
shr ecx, 0x10
mov edx, 0x300
cmp cx, dx
jne 0x442385
lea ecx, [ebp + 0xc]
push ecx
push dword [ebp + 0x10]
mov ecx, esi
push dword [ebp + 0xc]
push eax
call fcn.00440bec
jmp 0x44234f
mov eax, 0x400
cmp cx, ax
jne 0x442351
lea eax, [ebp - 0x10]
push eax
push dword [esi + 4]
call dword [sym.imp.USER32.dll_GetClientRect]
push 0
lea eax, [ebp - 0x10]
push eax
push dword [esi + 4]
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp 0x442351
cmp ecx, 0x2133
je 0x4423d0
cmp ecx, 0x2138
je 0x4423d0
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.00413882
jmp 0x44258c
mov ecx, dword [esi + 0x20]
call fcn.00440eaf
cmp eax, 0xffffffff
je 0x442301
push 1
push dword [ebp + 0xc]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ecx, dword [esi + 0x20]
call fcn.00426795
mov ecx, eax
shr ecx, 8
movzx edx, al
movzx ecx, cl
shl edx, 8
shr eax, 0x10
or ecx, edx
movzx eax, al
shl ecx, 8
or ecx, eax
push ecx
push dword [ebp + 0xc]
call dword [sym.imp.GDI32.dll_SetTextColor]
cmp dword [esi + 0x24], edi
jne 0x44244b
mov ecx, dword [esi + 0x20]
call fcn.00440eaf
mov ecx, eax
shr ecx, 8
movzx edx, al
movzx ecx, cl
shl edx, 8
shr eax, 0x10
or ecx, edx
movzx eax, al
shl ecx, 8
or ecx, eax
push ecx
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esi + 0x24], eax
mov eax, dword [esi + 0x24]
jmp 0x44258c
mov ecx, dword [esi + 0x20]
call fcn.00441233
cmp eax, 1
jae 0x442301
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x44247a
push 0
jmp 0x44247c
push 1
call fcn.004411d4
push 0x10
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x442491
push 0
jmp 0x442493
push 1
call fcn.004411b2
push 0x11
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x4424a8
push 0
jmp 0x4424aa
push 1
call fcn.00441190
mov ecx, esi
call fcn.004421c3
jmp 0x442301
mov ecx, dword [esi + 0x20]
call fcn.00441209
test eax, eax
je 0x4424cf
mov ecx, dword [esi + 0x20]
call fcn.00441241
mov ecx, dword [esi + 0x20]
call fcn.00441217
test eax, eax
je 0x4424e3
mov ecx, dword [esi + 0x20]
call fcn.00441251
mov ecx, dword [esi + 0x20]
call fcn.00441225
test eax, eax
je 0x4424f7
mov ecx, dword [esi + 0x20]
call fcn.00441261
mov ecx, dword [esi + 0x20]
call fcn.00441233
mov ecx, dword [esi + 0x20]
push 0
mov edx, eax
call fcn.004411f6
test edx, edx
jbe 0x442518
mov ecx, dword [esi + 0x20]
push edx
call fcn.00441271
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x44252e
push 0
jmp 0x442530
push 1
call fcn.004411d4
push 0x10
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x442545
push 0
jmp 0x442547
push 1
call fcn.004411b2
push 0x11
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x44255c
push 0
jmp 0x44255e
push 1
call fcn.00441190
mov eax, dword [ebp + 0xc]
test eax, eax
jbe 0x442582
cmp eax, 0x11
je 0x442582
cmp eax, 0x10
je 0x442582
cmp eax, 0x12
je 0x442582
mov ecx, dword [esi + 0x20]
push eax
call fcn.004411f6
mov ecx, esi
call fcn.004421c3
or eax, 0xffffffff
pop edi
pop esi
leave
ret 0xc