Function at 0x4104b1
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x4963dc]
xor eax, ebp
mov dword [ebp - 4], eax
and dword [ebp - 0x18], 0
push ebx
push esi
mov esi, dword [ebp + 0x10]
xor ebx, ebx
push edi
mov edi, dword [ebp + 8]
inc ebx
mov dword [ebp - 0x28], ecx
mov ecx, edi
mov dword [ebp - 0x1c], edx
call fcn.004129f9
mov ecx, dword [ebp - 0x1c]
test eax, eax
mov edx, 0x112
cmovne ecx, eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x1c], ecx
cmp eax, edx
ja 0x4108fb
je 0x410868
cmp eax, 0x21
ja 0x4106d6
je 0x410694
cmp eax, 2
je 0x41064f
cmp eax, 6
je 0x41062f
cmp eax, 7
je 0x410609
cmp eax, 0xf
jbe 0x410567
cmp eax, 0x11
jbe 0x41058a
cmp eax, 0x20
jne 0x410567
cmp byte [0x4999d4], 0
jne 0x410553
mov edx, dword [ebp + 0x14]
mov ecx, dword [0x49b2dc]
call fcn.0040119a
mov eax, ebx
jmp 0x41056c
mov eax, dword [0x49b164]
mov ecx, dword [eax + 0x16]
test ecx, ecx
je 0x410584
mov edx, dword [ebp + 0x14]
call fcn.0040119a
xor ebx, ebx
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x28]
pop edi
pop esi
mov dword [ecx], ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
pop ebx
call fcn.0048dc69
mov esp, ebp
pop ebp
ret 0x10
and dword [eax + 0x1a], 0
jmp 0x410567
mov ecx, edi
call fcn.00407997
test eax, eax
je 0x4105aa
push 0x24
push 0
xor edx, edx
mov ecx, 0xf0003
call fcn.0040bc05
cmp eax, 7
je 0x410569
mov eax, dword [0x49b200]
test al, 1
je 0x4105ea
mov esi, dword [0x499a30]
mov ecx, edi
call fcn.00449038
test eax, eax
je 0x4105d3
mov eax, dword [0x49b03c]
mov eax, dword [eax + 0x4239]
and eax, ebx
jmp 0x4105d5
xor eax, eax
mov dword [0x499a30], esi
mov dword [0x49b03c], esi
test eax, eax
jne 0x410567
mov eax, dword [0x49b200]
test al, 2
jne 0x410567
push ecx
push ecx
mov ecx, edi
call fcn.00413b6f
cmp eax, 2
je 0x410569
jmp 0x410567
mov ecx, edi
call fcn.00412a13
test eax, eax
jne 0x410623
push edi
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
jne 0x410567
xor ecx, ecx
call fcn.00488704
jmp 0x410569
mov ecx, edi
call fcn.0041325b
test eax, eax
je 0x410567
xor eax, eax
test esi, esi
cmovne eax, edi
mov dword [0x499a08], eax
jmp 0x410567
mov edx, 0x600
cmp ecx, edx
jne 0x410665
push dword [0x497914]
mov ecx, edi
call fcn.00410c6f
mov ecx, edi
call fcn.0041325b
test eax, eax
jne 0x410567
mov edx, dword [ebp - 0x1c]
and edx, 0xff00
cmp edx, 0xc00
je 0x410567
mov dword [0x49b04c], ebx
jmp 0x410567
mov ecx, edi
call fcn.0041325b
test eax, eax
jne 0x4106c6
mov edx, dword [ebp - 0x1c]
and edx, 0xff00
cmp edx, 0xc00
je 0x4106c6
cmp edi, dword [0x4999fc]
je 0x4106c6
cmp word [ebp + 0x14], bx
jne 0x4106c6
push 2
pop eax
jmp 0x41056c
mov eax, dword [0x49b164]
cmp byte [eax], 0
je 0x410940
jmp 0x4106be
sub eax, 0x22
je 0x410788
sub eax, 0x5f
je 0x41076f
sub eax, 1
je 0x410729
sub eax, 0x8f
jne 0x410567
cmp word [ebp + 0x14], ax
jne 0x410567
cmp esi, 0xf000
jb 0x41071b
push dword [ebp + 0x14]
push esi
push edx
push edi
call dword [sym.imp.USER32.dll_PostMessageA]
jmp 0x410569
mov edx, esi
mov ecx, edi
call fcn.0041166c
jmp 0x410569
mov edx, 0x600
cmp ecx, edx
jne 0x41073f
push dword [0x497918]
mov ecx, edi
call fcn.00410c6f
push 2
push edi
call dword [sym.imp.USER32.dll_GetWindowLongA]
test eax, eax
je 0x410758
push eax
push dword [0x499a14]
call fcn.00483654
push 0
push 2
push edi
call dword [sym.imp.USER32.dll_SetWindowLongA]
mov ecx, edi
call fcn.00413232
jmp 0x410567
mov esi, dword [sym.imp.USER32.dll_SetWindowLongA]
push 0
push 0
push edi
call esi
push 0
push 2
push edi
call esi
jmp 0x410567
push 2
push edi
call dword [sym.imp.USER32.dll_GetWindowLongA]
test eax, eax
je 0x410567
cmp dword [0x4999f8], 0
jne 0x410567
mov ecx, edi
call fcn.0041325b
test eax, eax
jne 0x410567
cmp edi, dword [0x4999fc]
je 0x410567
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push ebx
call esi
mov ecx, 0x8000
test cx, ax
jne 0x4107e6
push 2
call esi
mov ecx, 0x8000
test cx, ax
je 0x410567
push edi
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
jne 0x410567
lea eax, [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
lea eax, [ebp - 0x14]
push eax
push edi
call dword [sym.imp.USER32.dll_GetWindowRect]
push dword [ebp - 0x20]
lea eax, [ebp - 0x14]
push dword [ebp - 0x24]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x410567
movzx ecx, word [ebp - 0x20]
movzx eax, word [ebp - 0x24]
shl ecx, 0x10
or ecx, eax
push ecx
push 0
push 0x84
push edi
call dword [sym.imp.USER32.dll_SendMessageA]
cmp eax, 2
je 0x41085a
cmp eax, 4
je 0x41085a
cmp eax, 9
jbe 0x410567
cmp eax, 0x11
ja 0x410567
push 0
push 0
push 0x5f9
jmp 0x41070f
cmp dword [0x4999a8], 0
je 0x41087d
mov ecx, esi
call fcn.0040c108
jmp 0x410569
and esi, 0xfff0
sub esi, 0xf020
je 0x4108e4
sub esi, 0x10
je 0x4108a6
sub esi, 0x10
je 0x4108cb
sub esi, 0x20
je 0x4108c1
sub esi, 0xc0
jne 0x410567
cmp edi, dword [0x4999fc]
jne 0x410567
push ebx
mov edx, edi
mov ecx, edi
call fcn.00410b07
jmp 0x410567
call fcn.004011e2
jmp 0x410567
mov ecx, edi
call fcn.0041325b
test eax, eax
jne 0x410567
call fcn.00410f1f
jmp 0x410569
push 2
mov edx, edi
mov ecx, edi
call fcn.00410b07
push edi
call dword [sym.imp.USER32.dll_UpdateWindow]
jmp 0x410567
mov ecx, 0x222
cmp eax, ecx
ja 0x410a08
je 0x4109b6
cmp eax, 0x114
jb 0x410567
cmp eax, 0x115
jbe 0x41099f
cmp eax, 0x117
je 0x41097f
cmp eax, 0x11f
je 0x410965
cmp eax, 0x121
je 0x410952
cmp eax, 0x201
jne 0x410567
cmp dword [0x4999a8], 0
je 0x410567
jmp 0x4106be
mov ecx, ebx
call fcn.00411e6b
mov ecx, esi
call fcn.0040fee7
jmp 0x410569
mov ecx, dword [0x49b164]
mov eax, dword [ebp + 0x14]
mov dword [ecx + 0x158], esi
mov dword [ecx + 0x15c], eax
jmp 0x410569
mov eax, dword [ebp + 0x14]
test eax, 0xffff0000
jne 0x410569
movzx eax, ax
mov edx, esi
push eax
mov ecx, edi
call fcn.004117aa
jmp 0x410569
cmp dword [0x4999a8], 0
mov eax, dword [ebp - 0x18]
jne 0x41056c
xor ebx, ebx
jmp 0x41056c
cmp dword [ebp + 0x14], 0
jne 0x4109c8
xor ecx, ecx
call fcn.00410dc1
jmp 0x410567
cmp dword [ebp + 0x14], edi
jne 0x410567
push 2
push edi
call dword [sym.imp.USER32.dll_GetWindowLongA]
test eax, eax
je 0x410567
mov ecx, edi
call fcn.00412a13
test eax, eax
jne 0x4109fc
push edi
call dword [sym.imp.USER32.dll_IsWindowEnabled]
test eax, eax
je 0x4109fc
mov ecx, edi
jmp 0x4109be
xor ecx, ecx
call fcn.00410dc1
jmp 0x410569
sub eax, 0x30f
je 0x410a77
dec eax
sub eax, 1
je 0x410a5c
sub eax, 0x2e7
je 0x410a48
sub eax, 1
jne 0x410567
mov ecx, edi
call fcn.0041325b
test eax, eax
jne 0x410569
mov ecx, edi
call fcn.00412a13
test eax, eax
cmovne edi, dword [0x4999fc]
mov ecx, edi
jmp 0x4109fe
mov eax, 0xc04
cmp word [ebp + 0x14], ax
jne 0x410567
jmp 0x41054f
cmp esi, dword [0x4999c0]
je 0x410567
mov ecx, esi
call fcn.004136b1
test eax, eax
jne 0x410567
mov ecx, edi
call fcn.0041325b
test eax, eax
je 0x410567
mov eax, dword [0x49b164]
cmp dword [eax + 0x72], 0
je 0x410567
push edi
call dword [sym.imp.USER32.dll_GetDC]
mov esi, eax
mov dword [ebp - 0x1c], esi
test esi, esi
jne 0x410ab1
xor ecx, ecx
call fcn.00483127
jmp 0x410567
mov ecx, esi
call fcn.0048301f
mov eax, dword [0x49b164]
push 0
push dword [eax + 0x72]
push esi
call dword [sym.imp.GDI32.dll_SelectPalette]
mov dword [ebp - 0x20], eax
test eax, eax
je 0x410af3
push esi
mov esi, dword [sym.imp.GDI32.dll_RealizePalette]
call esi
push ebx
push dword [ebp - 0x20]
mov dword [ebp - 0x18], eax
push dword [ebp - 0x1c]
call dword [sym.imp.GDI32.dll_SelectPalette]
push dword [ebp - 0x1c]
call esi
mov esi, dword [ebp - 0x1c]
jmp 0x410af7
and dword [ebp - 0x18], 0
push 0
mov edx, esi
mov ecx, edi
call fcn.00482deb
jmp 0x410569