Function at 0x458e9d
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
push ebx
push esi
push edi
mov edi, ecx
mov eax, dword [edi + 0x2e0]
mov ecx, dword [edi + 0x2e4]
test eax, eax
js 0x458e32
cmp eax, dword [edi + 0x120]
jge 0x458e32
test ecx, ecx
js 0x458e32
cmp ecx, dword [edi + 0x128]
jl 0x458e42
mov ecx, edi
call fcn.00492352
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ebx, dword [edi + 0x2e0]
mov esi, dword [edi + 0x2e4]
xor eax, eax
push 0x11
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je case.0x458e88.46
mov eax, dword [ebp + 8]
add eax, 0xffffffd3
cmp eax, 0x3e
ja case.0x458e88.46
movzx edx, byte [eax + 0x459710]
jmp dword [edx*4 + 0x4596f8]
mov eax, dword [edi]
mov edx, dword [eax + 0x18c]
mov ecx, edi
call edx
jmp case.0x458e88.46
mov eax, edi
call fcn.00460060
mov eax, dword [edi + 0x20]
push 1
push 0
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
jmp case.0x458e88.46
mov edx, dword [edi]
mov eax, dword [edx + 0x180]
jmp 0x458ed0
mov edx, dword [edi]
mov eax, dword [edx + 0x184]
jmp 0x458ed0
mov edx, dword [edi]
mov eax, dword [edx + 0x188]
mov ecx, edi
call eax
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
mov eax, dword [ebp + 8]
je 0x458f0a
cmp eax, 0x2d
jne 0x458f0a
mov edx, dword [edi]
mov eax, dword [edx + 0x188]
mov ecx, edi
call eax
mov ecx, edi
call fcn.00492352
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp eax, 0x2e
jne 0x458f20
mov edx, dword [edi]
mov eax, dword [edx + 0x160]
mov ecx, edi
call eax
jmp 0x4594c4
cmp eax, 0x28
jne 0x458f77
mov eax, dword [edi + 0x120]
mov ecx, ebx
inc ebx
mov dword [esp + 0x28], ebx
cmp ebx, eax
jge 0x458f63
test ebx, ebx
js 0x458f56
cmp ebx, eax
jge 0x458f56
cmp ebx, dword [edi + 0x138]
jge 0x458f6e
mov edx, dword [edi + 0x134]
cmp dword [edx + ebx*4], 0
jg 0x45930c
inc ebx
cmp ebx, dword [edi + 0x120]
jl 0x458f36
mov dword [esp + 0x28], ebx
mov ebx, ecx
mov dword [esp + 0x28], ebx
jmp 0x4594c4
mov dword [esp + 0x28], ebx
call fcn.0048a0e3
cmp eax, 0x26
jne 0x458fd5
mov eax, ebx
dec ebx
mov dword [esp + 0x28], ebx
cmp ebx, dword [edi + 0x124]
jl 0x4590d9
nop
test ebx, ebx
js 0x458fb4
cmp ebx, dword [edi + 0x120]
jge 0x458fb4
cmp ebx, dword [edi + 0x138]
jge 0x458fcc
mov ecx, dword [edi + 0x134]
cmp dword [ecx + ebx*4], 0
jg 0x45930c
dec ebx
cmp ebx, dword [edi + 0x124]
jge 0x458f90
mov dword [esp + 0x28], ebx
mov ebx, eax
mov dword [esp + 0x28], ebx
jmp 0x4594c4
mov dword [esp + 0x28], ebx
call fcn.0048a0e3
cmp eax, 0x27
je 0x4593e6
mov eax, dword [ebp + 8]
cmp eax, 9
jne 0x45907f
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov edx, 0x8000
test dx, ax
je 0x4593ac
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x458e32
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], esi
dec esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], esi
cmp eax, 9
jne 0x45936e
mov eax, dword [edi + 0x12c]
dec eax
cmp esi, eax
jne 0x459367
mov eax, dword [edi + 0x124]
cmp ebx, eax
jle 0x459367
dec ebx
mov dword [esp + 0x28], ebx
cmp ebx, eax
jle 0x459352
lea ecx, [ecx]
mov eax, ebx
mov ecx, edi
call fcn.0045fbf0
test eax, eax
jg 0x459346
dec ebx
cmp ebx, dword [edi + 0x124]
jg 0x459060
jmp 0x45934e
cmp eax, 0x25
je 0x459019
cmp eax, 0x22
jne 0x4590f4
lea edx, [esp + 0x14]
push edx
mov esi, edi
call fcn.0045d140
mov eax, dword [edi + 0x20]
push 0
push 3
push 0x115
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x14], 1
call fcn.0045d140
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x14]
je 0x4590e4
add ebx, eax
mov eax, dword [edi + 0x120]
dec eax
mov dword [esp + 0x28], ebx
cmp ebx, eax
jle 0x4594c4
mov ebx, eax
mov dword [esp + 0x28], ebx
jmp 0x4594c4
mov ebx, dword [edi + 0x120]
dec ebx
mov dword [esp + 0x28], ebx
jmp 0x4594c4
cmp eax, 0x21
jne 0x459162
lea edx, [esp + 0x14]
push edx
mov esi, edi
call fcn.0045d140
mov eax, dword [edi + 0x20]
push 0
push 2
push 0x115
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
lea ecx, [esp + 0x20]
push ecx
mov dword [esp + 0x14], 1
call fcn.0045d140
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x14]
je 0x459153
add ebx, eax
mov eax, dword [edi + 0x124]
mov dword [esp + 0x28], ebx
cmp ebx, eax
jge 0x4594c4
mov ebx, eax
mov dword [esp + 0x28], ebx
jmp 0x4594c4
mov ebx, dword [edi + 0x124]
mov dword [esp + 0x28], ebx
jmp 0x4594c4
cmp eax, 0x24
jne 0x459238
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov edx, 0x8000
push 0
push 6
test dx, ax
je 0x4591ba
mov eax, dword [edi + 0x20]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0x115
push eax
call esi
mov ecx, dword [edi + 0x20]
push 0
push 6
push 0x114
push ecx
call esi
mov ebx, dword [edi + 0x124]
mov eax, 1
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x28], ebx
jmp 0x4591d1
mov edx, dword [edi + 0x20]
push 0x114
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0xc], 1
mov eax, dword [edi + 0x128]
mov esi, dword [edi + 0x12c]
dec eax
mov dword [esp + 0x2c], esi
cmp esi, eax
jge 0x459203
mov eax, esi
mov ecx, edi
call fcn.0045fc20
test eax, eax
jg 0x4591ff
mov ecx, dword [edi + 0x128]
inc esi
dec ecx
cmp esi, ecx
jl 0x4591e6
mov dword [esp + 0x2c], esi
mov edx, dword [edi + 0x120]
dec edx
cmp ebx, edx
jge 0x4594c4
mov eax, ebx
mov ecx, edi
call fcn.0045fbf0
test eax, eax
jg 0x45930c
mov eax, dword [edi + 0x120]
inc ebx
dec eax
cmp ebx, eax
jl 0x459212
mov dword [esp + 0x28], ebx
jmp 0x4594c4
cmp eax, 0x23
jne 0x459315
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
push 0
push 7
test cx, ax
je 0x45929a
mov edx, dword [edi + 0x20]
mov esi, dword [sym.imp.USER32.dll_SendMessageW]
push 0x115
push edx
call esi
mov eax, dword [edi + 0x20]
push 0
push 7
push 0x114
push eax
call esi
mov ebx, dword [edi + 0x120]
mov esi, dword [edi + 0x128]
mov eax, 1
sub ebx, eax
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], ebx
sub esi, eax
jmp 0x4592b8
mov ecx, dword [edi + 0x20]
push 0x114
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov esi, dword [edi + 0x128]
mov dword [esp + 0xc], 1
dec esi
mov edx, dword [edi + 0x12c]
inc edx
mov dword [esp + 0x2c], esi
cmp esi, edx
jle 0x4592e4
mov eax, esi
mov ecx, edi
call fcn.0045fc20
test eax, eax
jg 0x4592e0
mov eax, dword [edi + 0x12c]
dec esi
inc eax
cmp esi, eax
jg 0x4592c7
mov dword [esp + 0x2c], esi
mov ecx, dword [edi + 0x124]
inc ecx
cmp ebx, ecx
jle 0x4594c4
mov eax, ebx
mov ecx, edi
call fcn.0045fbf0
test eax, eax
jg 0x45930c
mov edx, dword [edi + 0x124]
dec ebx
inc edx
cmp ebx, edx
jg 0x4592f3
mov dword [esp + 0x28], ebx
jmp 0x4594c4
cmp eax, 0x71
jne 0x458e32
mov edx, dword [edi]
mov edx, dword [edx + 0x1bc]
or eax, 0xffffffff
or ecx, eax
push 1
push ecx
mov ecx, dword [edi + 0x2e0]
push eax
mov eax, dword [edi + 0x2e4]
push eax
push ecx
mov ecx, edi
call edx
jmp 0x4594c4
mov dword [esp + 0x14], 1
mov dword [esp + 0x28], ebx
mov esi, dword [edi + 0x128]
dec esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], 1
jmp 0x45936e
mov ecx, edi
call fcn.00492352
cmp esi, dword [edi + 0x12c]
jl 0x459394
mov eax, esi
mov ecx, edi
call fcn.0045fc20
test eax, eax
jg 0x4594c0
dec esi
cmp esi, dword [edi + 0x12c]
jge 0x459376
mov dword [esp + 0x2c], esi
cmp dword [esp + 0x14], 0
jne 0x4594c4
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], ecx
jmp 0x4594c4
cmp byte [edi + 0x4ba], 0
je 0x4593e6
mov edx, dword [edi + 0x20]
push edx
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.004923f8
test eax, eax
je 0x459621
mov eax, dword [eax + 0x20]
push 0
push 0
push 0x28
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov dword [esp + 0x20], esi
inc esi
cmp dword [ebp + 8], 9
mov dword [esp + 0x14], 0
mov dword [esp + 0x2c], esi
jne 0x45945f
cmp esi, dword [edi + 0x128]
jne 0x459458
mov eax, dword [edi + 0x120]
lea ecx, [eax - 1]
cmp ebx, ecx
jge 0x459458
inc ebx
mov dword [esp + 0x28], ebx
cmp ebx, eax
jge 0x459444
jmp 0x459420
mov eax, ebx
mov ecx, edi
call fcn.0045fbf0
test eax, eax
jg 0x459438
inc ebx
cmp ebx, dword [edi + 0x120]
jl 0x459420
jmp 0x459440
mov dword [esp + 0x14], 1
mov dword [esp + 0x28], ebx
mov esi, dword [edi + 0x12c]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x1c], 1
jmp 0x45945f
mov ecx, edi
call fcn.00492352
mov ecx, dword [edi + 0x128]
cmp esi, ecx
jge 0x4594a6
lea esp, [esp]
test esi, esi
js 0x459499
cmp esi, ecx
jge 0x459499
mov edx, dword [edi + 0x49c]
mov eax, dword [edx + esi*4]
test eax, eax
js 0x4594b7
cmp eax, dword [edi + 0x14c]
jge 0x4594b7
mov edx, dword [edi + 0x148]
cmp dword [edx + eax*4], 0
jg 0x4594c0
inc esi
cmp esi, dword [edi + 0x128]
jl 0x459470
mov dword [esp + 0x2c], esi
cmp dword [esp + 0x14], 0
jne 0x4594c4
mov eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jmp 0x4594c4
mov dword [esp + 0x2c], esi
call fcn.0048a0e3
mov dword [esp + 0x2c], esi
cmp ebx, dword [edi + 0x2e0]
jne 0x4594dc
mov ecx, dword [esp + 0x2c]
cmp ecx, dword [edi + 0x2e4]
je 0x459621
cmp dword [edi + 0x2b4], 0
jne 0x459560
lea esi, [edi + 0x324]
call fcn.00465040
mov edx, dword [edi + 0xc8]
neg edx
sbb edx, edx
add edx, 4
push 0x10
mov dword [edi + 0x2b4], edx
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x45951f
cmp dword [ebp + 8], 9
jne 0x459531
mov esi, dword [esp + 0x2c]
mov dword [edi + 0x2d8], ebx
mov dword [edi + 0x2dc], esi
jmp 0x459535
mov esi, dword [esp + 0x2c]
push 0xffffffffffffff9c
push esi
push ebx
mov eax, edi
call fcn.004583e0
lea ecx, [esp + 0x28]
mov eax, edi
call fcn.0045b420
push 0xffffffffffffff9b
push esi
push ebx
mov eax, edi
call fcn.004583e0
mov dword [edi + 0x2b4], 0
mov edx, dword [esp + 0x2c]
push edx
push ebx
lea eax, [esp + 0x28]
push eax
mov esi, edi
call fcn.0045aaf0
mov ecx, dword [esp + 0x2c]
push ebx
mov edx, edi
call fcn.00460cd0
test eax, eax
jne 0x4595e0
mov eax, dword [ebp + 8]
add eax, 0xfffffff7
cmp eax, 0x1f
ja case.0x459594.10
movzx ecx, byte [eax + 0x459768]
jmp dword [ecx*4 + 0x459750]
mov edx, dword [edi + 0x20]
push 0
push 1
push 0x114
push edx
jmp 0x4595b7
push 0
push 0
mov eax, dword [edi + 0x20]
push 0x114
push eax
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 0x2c]
push ecx
push ebx
mov ecx, edi
call fcn.00460900
mov edx, dword [edi + 0x20]
push 1
push 0
push edx
call dword [sym.imp.USER32.dll_InvalidateRect]
mov eax, dword [esp + 0x2c]
push eax
push ebx
mov ecx, edi
call fcn.00460900
cmp dword [esp + 0xc], 0
je 0x459607
mov ecx, dword [edi + 0x20]
push 0
push 8
push 0x114
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
cmp dword [esp + 0x10], 0
je 0x459621
mov edx, dword [edi + 0x20]
push 0
push 8
push 0x115
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [edi + 0x20]
push 0
push 1
push 0x115
push ecx
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0x10], 1
jmp case.0x459594.10
mov edx, dword [edi + 0x20]
push 0
push 0
push 0x115
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov dword [esp + 0x10], 1
jmp case.0x459594.10
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
push 0
test cx, ax
je 0x4596c1
cmp dword [esp + 0x20], 0
push 0
je 0x4596b3
mov edx, dword [edi + 0x20]
push 0x115
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
mov eax, dword [edi + 0x15c]
push eax
push 0
mov ecx, edi
mov dword [esp + 0x18], 1
call fcn.0045d5e0
jmp case.0x459594.10
mov ecx, dword [edi + 0x20]
push 0x114
push ecx
jmp 0x4595b7
cmp dword [esp + 0x20], 0
push 1
je 0x4595ae
mov edx, dword [edi + 0x20]
push 0x115
push edx
call dword [sym.imp.USER32.dll_SendMessageW]
push 0
push 0
mov ecx, edi
mov dword [esp + 0x18], 1
call fcn.0045d5e0
jmp case.0x459594.10