Function at 0x43f227
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 0x43f245
xor eax, eax
jmp 0x43f4c9
cmp ecx, 0x100
je 0x43f3f8
cmp ecx, 0x104
je 0x43f3f8
cmp ecx, 0x101
je 0x43f390
cmp ecx, 0x105
je 0x43f390
cmp ecx, 8
jne 0x43f295
lea eax, [ebp + 0xc]
push eax
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.0043db28
mov edi, eax
mov eax, edi
jmp 0x43f4c9
mov eax, 0x2111
cmp ecx, eax
jne 0x43f2ea
mov ecx, dword [ebp + 0xc]
shr ecx, 0x10
mov edx, 0x300
cmp cx, dx
jne 0x43f2c2
lea ecx, [ebp + 0xc]
push ecx
push dword [ebp + 0x10]
mov ecx, esi
push dword [ebp + 0xc]
push eax
call fcn.00411feb
jmp 0x43f28c
mov eax, 0x400
cmp cx, ax
jne 0x43f28e
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 0x43f28e
cmp ecx, 0x2133
je 0x43f30d
cmp ecx, 0x2138
je 0x43f30d
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push ecx
mov ecx, esi
call fcn.00410784
jmp 0x43f4c9
mov ecx, dword [esi + 0x20]
call fcn.0043dd93
cmp eax, 0xffffffff
je 0x43f23e
push 1
push dword [ebp + 0xc]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ecx, dword [esi + 0x20]
call fcn.004236b2
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 0x43f388
mov ecx, dword [esi + 0x20]
call fcn.0043dd93
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 0x43f4c9
mov ecx, dword [esi + 0x20]
call fcn.0043e16e
cmp eax, 1
jae 0x43f23e
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f3b7
push 0
jmp 0x43f3b9
push 1
call fcn.0043e10f
push 0x10
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f3ce
push 0
jmp 0x43f3d0
push 1
call fcn.0043e0ed
push 0x11
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f3e5
push 0
jmp 0x43f3e7
push 1
call fcn.0043e0cb
mov ecx, esi
call fcn.0043f100
jmp 0x43f23e
mov ecx, dword [esi + 0x20]
call fcn.0043e144
test eax, eax
je 0x43f40c
mov ecx, dword [esi + 0x20]
call fcn.0043e17c
mov ecx, dword [esi + 0x20]
call fcn.0043e152
test eax, eax
je 0x43f420
mov ecx, dword [esi + 0x20]
call fcn.0043e18c
mov ecx, dword [esi + 0x20]
call fcn.0043e160
test eax, eax
je 0x43f434
mov ecx, dword [esi + 0x20]
call fcn.0043e19c
mov ecx, dword [esi + 0x20]
call fcn.0043e16e
mov ecx, dword [esi + 0x20]
push 0
mov edx, eax
call fcn.0043e131
test edx, edx
jbe 0x43f455
mov ecx, dword [esi + 0x20]
push edx
call fcn.0043e1ac
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x12
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f46b
push 0
jmp 0x43f46d
push 1
call fcn.0043e10f
push 0x10
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f482
push 0
jmp 0x43f484
push 1
call fcn.0043e0ed
push 0x11
call edi
mov ecx, dword [esi + 0x20]
test ax, ax
jge 0x43f499
push 0
jmp 0x43f49b
push 1
call fcn.0043e0cb
mov eax, dword [ebp + 0xc]
test eax, eax
jbe 0x43f4bf
cmp eax, 0x11
je 0x43f4bf
cmp eax, 0x10
je 0x43f4bf
cmp eax, 0x12
je 0x43f4bf
mov ecx, dword [esi + 0x20]
push eax
call fcn.0043e131
mov ecx, esi
call fcn.0043f100
or eax, 0xffffffff
pop edi
pop esi
leave
ret 0xc