Function at 0x404460
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x427f20
mov eax, dword fs:[0]
push eax
sub esp, 0x54
mov eax, dword [0x43400c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 4]
cmp eax, 0x14
jne 0x4044ea
mov esi, dword [ebx + 8]
mov eax, dword [edi + 4]
test eax, eax
je 0x40492d
lea ecx, [ebp - 0x40]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
test esi, esi
je 0x404932
push 0xff
push esi
call dword [sym.imp.GDI32.dll_SetBkColor]
push 0
push 0
push 0
lea eax, [ebp - 0x40]
push eax
push 2
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov dword [ebx + 0x1c], 1
mov al, 1
jmp 0x40490f
cmp eax, 0x83
jne 0x404525
cmp byte [edi + 0xd], 0
mov esi, dword [ebx + 0xc]
push esi
push dword [ebx + 8]
push eax
push dword [edi + 4]
je 0x40450a
call dword [sym.imp.COMCTL32.dll_DefSubclassProc]
jmp 0x404510
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov dword [ebx + 0x1c], eax
mov al, 1
inc dword [esi]
dec dword [esi + 8]
inc dword [esi + 4]
dec dword [esi + 0xc]
jmp 0x40490f
cmp eax, 0x85
jne 0x404704
cmp byte [edi + 0xd], 0
push dword [ebx + 0xc]
push dword [ebx + 8]
push eax
push dword [edi + 4]
je 0x404548
call dword [sym.imp.COMCTL32.dll_DefSubclassProc]
jmp 0x40454e
call dword [sym.imp.USER32.dll_DefWindowProcW]
mov dword [ebx + 0x1c], eax
mov eax, dword [ebx + 8]
mov ebx, dword [edi + 4]
test ebx, ebx
je 0x40492d
test eax, eax
je 0x404570
cmp eax, 1
je 0x404570
push 0x83
push eax
jmp 0x404574
push 3
push 0
push ebx
call dword [sym.imp.USER32.dll_GetDCEx]
mov esi, eax
test esi, esi
je 0x4044e3
push dword [edi + 4]
lea eax, [ebp - 0x40]
mov ecx, edi
push eax
call fcn.0040b0b1
mov eax, dword [edi + 4]
test eax, eax
je 0x404937
lea ecx, [ebp - 0x30]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x40]
inc eax
mov edi, dword [ebp - 0x30]
neg ecx
mov edx, dword [ebp - 0x3c]
add eax, ecx
dec edi
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x24]
add edi, ecx
mov ecx, dword [ebp - 0x2c]
neg edx
inc eax
mov dword [ebp - 0x30], edi
dec ecx
add ecx, edx
add edx, eax
mov eax, dword [ebp - 0x28]
sub eax, edi
mov dword [ebp - 0x2c], ecx
mov edi, edx
mov dword [ebp - 0x24], edx
sub edi, ecx
mov dword [ebp - 0x44], eax
cmp eax, 1
jb 0x4046f5
cmp edi, 1
jb 0x4046f5
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x20], eax
lea eax, [edx - 1]
push 0xff00
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x28]
push esi
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x14], edx
call dword [sym.imp.GDI32.dll_SetBkColor]
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
push 2
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp edi, 2
jb 0x4046f5
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x20], eax
add eax, dword [ebp - 0x44]
mov dword [ebp - 0x18], eax
push 0xff00
lea eax, [ecx + 1]
mov dword [ebp - 0x1c], ecx
push esi
mov dword [ebp - 0x14], eax
call dword [sym.imp.GDI32.dll_SetBkColor]
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
push 2
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp edi, 3
jb 0x4046f5
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
inc ecx
mov dword [ebp - 0x20], eax
inc eax
mov dword [ebp - 0x18], eax
push 0xff00
lea eax, [ecx - 2]
mov dword [ebp - 0x1c], ecx
add eax, edi
push esi
mov dword [ebp - 0x14], eax
call dword [sym.imp.GDI32.dll_SetBkColor]
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
push 2
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [ebp - 0x44], 2
jb 0x4046f5
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x2c]
dec eax
inc ecx
mov dword [ebp - 0x20], eax
inc eax
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x18], eax
push 0xff00
lea eax, [ecx - 2]
add eax, edi
push esi
mov dword [ebp - 0x14], eax
call dword [sym.imp.GDI32.dll_SetBkColor]
push 0
push 0
push 0
lea eax, [ebp - 0x20]
push eax
push 2
push 0
push 0
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push esi
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
mov al, 1
jmp 0x40490f
cmp eax, 0x24
jne 0x404719
mov esi, dword [ebx + 0xc]
push ebx
call fcn.0040acc0
add dword [esi + 0x1c], 3
mov eax, dword [ebx + 4]
cmp eax, 0x111
je 0x404727
cmp eax, 0x112
jne 0x40473b
movzx eax, word [ebx + 8]
mov ecx, edi
push eax
call fcn.00404950
test al, al
jne 0x4044e3
mov eax, dword [ebx + 4]
cmp eax, 0x113
jne 0x404756
push dword [ebx + 8]
mov ecx, edi
call fcn.00404a50
mov al, 1
jmp 0x40490f
cmp eax, 5
jne 0x40477b
mov eax, dword [edi + 4]
test eax, eax
je 0x40493c
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, edi
call fcn.004078c0
mov eax, dword [ebx + 4]
cmp eax, 0x231
jne 0x404793
mov ecx, edi
mov byte [edi + 0x118], 1
call fcn.004078c0
mov eax, dword [ebx + 4]
cmp eax, 0x232
jne 0x4047b2
mov ecx, edi
mov byte [edi + 0x118], 0
call fcn.004078c0
mov ecx, edi
call fcn.00407c80
mov eax, dword [ebx + 4]
cmp eax, 0xa3
jne 0x4047c8
push 0x9c44
mov ecx, edi
call fcn.00404950
mov eax, dword [ebx + 4]
cmp eax, 0x100
jne 0x404892
mov eax, dword [ebx + 8]
cmp eax, 0x1b
jne 0x4047fc
cmp dword [edi + 0x1f0], 0
mov ecx, edi
jne 0x4047f0
call fcn.00407750
jmp 0x404892
push 1
call fcn.00404f50
jmp 0x404892
cmp eax, 0x70
jne 0x404825
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, 0x9c4b
test al, 1
mov eax, 0x9c44
cmovne eax, ecx
mov ecx, edi
push eax
call fcn.00404950
jmp 0x404892
cmp eax, 0x71
jne 0x404838
push 0x9c48
mov ecx, edi
call fcn.00404950
jmp 0x404892
cmp eax, 0x72
jne 0x40484b
push 0x9c4c
mov ecx, edi
call fcn.00404950
jmp 0x404892
cmp eax, 0x7b
jne 0x404874
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
shr eax, 0xf
mov ecx, 0x90
test al, 1
mov eax, 0xf0
cmove eax, ecx
add eax, edi
push eax
call fcn.00407d10
jmp 0x404892
cmp eax, 0x25
je 0x404888
cmp eax, 0x27
je 0x404888
cmp eax, 0x26
je 0x404888
cmp eax, 0x28
jne 0x404892
sub esp, 8
mov ecx, edi
call fcn.00404b00
mov eax, dword [ebx + 4]
cmp eax, 0x312
jne 0x4048ba
cmp dword [ebx + 8], 0x1234
jne 0x4048ba
cmp dword [edi + 0x1f0], 0
je 0x4048ba
push 0
mov ecx, edi
call fcn.00404f50
mov eax, dword [ebx + 4]
cmp eax, 0x84
jne 0x4048e8
cmp dword [edi + 0x1f0], 0
je 0x404907
push ebx
mov ecx, edi
call fcn.0040acc0
mov eax, dword [ebx + 0x1c]
sub eax, 0xa
cmp eax, 7
ja 0x4048e4
mov dword [ebx + 0x1c], 0x12
mov al, 1
jmp 0x40490f
cmp eax, 2
jne 0x404907
cmp dword [edi + 0x1f0], 0
je 0x4048ff
push 1
mov ecx, edi
call fcn.00404f50
lea ecx, [edi + 0x48]
call fcn.004033d0
push ebx
mov ecx, edi
call fcn.0040ac57
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004102b9
mov esp, ebp
pop ebp
ret 4
call fcn.0041906a
call fcn.0041906a
call fcn.0041906a
call fcn.0041906a
int3