Function at 0x40f84c
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x24
push esi
mov esi, ecx
lea edx, [esi + 0x29c]
push edx
call fcn.004093a6
test eax, eax
jne 0x40f86f
call fcn.004309fb
jmp 0x40fee7
mov eax, dword [edx]
push ebx
mov ebx, dword [edx + 4]
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
mov dword [ebp - 0x24], eax
xor eax, eax
push 0x11
mov dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
call edi
mov ecx, 0x8000
test cx, ax
je 0x40f8e3
mov eax, dword [ebp + 8]
sub eax, 0x2d
je 0x40f8d9
sub eax, 0x14
je 0x40f8cd
dec eax
dec eax
je 0x40f8d9
sub eax, 0x13
je 0x40f8c1
dec eax
dec eax
jne 0x40f8e3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x15c]
jmp 0x40f8e3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x164]
jmp 0x40f8e3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x168]
jmp 0x40f8e3
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x160]
push 0x10
call edi
mov ecx, 0x8000
test cx, ax
je 0x40f901
cmp dword [ebp + 8], 0x2d
jne 0x40f901
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x164]
mov eax, dword [ebp + 8]
mov edi, dword [sym.imp.USER32.dll_SendMessageA]
cmp eax, 0x2e
jne 0x40f91e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x13c]
jmp 0x40fd39
cmp eax, 0x28
jne 0x40f951
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
inc eax
mov dword [ebp - 0x24], eax
jmp 0x40f947
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fd39
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [esi + 0xec]
jl 0x40f92f
jmp 0x40f982
cmp eax, 0x26
jne 0x40f98a
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x14], eax
dec eax
mov dword [ebp - 0x24], eax
jmp 0x40f97a
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fd39
dec dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [esi + 0xf0]
jge 0x40f962
mov eax, dword [ebp - 0x14]
jmp 0x40fa87
cmp eax, 0x27
je 0x40fca0
cmp eax, 9
jne 0x40f9ae
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x40fca0
cmp dword [ebp + 8], 0x25
je 0x40fc13
cmp dword [ebp + 8], 9
jne 0x40f9d4
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
jne 0x40fc13
mov eax, dword [ebp + 8]
cmp eax, 0x22
jne 0x40fa31
push 0
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call fcn.0040a51e
push 0
push 3
push 0x115
push dword [esi + 0x20]
call edi
push 0
lea eax, [ebp - 0x18]
push eax
mov ecx, esi
mov dword [ebp - 8], 1
call fcn.0040a51e
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0x10]
je 0x40fa28
add dword [ebp - 0x24], eax
mov eax, dword [esi + 0xec]
dec eax
cmp dword [ebp - 0x24], eax
jle 0x40fd39
jmp 0x40fa87
mov eax, dword [esi + 0xec]
dec eax
jmp 0x40fa87
cmp eax, 0x21
jne 0x40fa8f
push 0
lea eax, [ebp - 0x10]
push eax
mov ecx, esi
call fcn.0040a51e
push 0
push 2
push 0x115
push dword [esi + 0x20]
call edi
push 0
lea eax, [ebp - 0x18]
push eax
mov ecx, esi
mov dword [ebp - 8], 1
call fcn.0040a51e
mov eax, dword [ebp - 0x18]
sub eax, dword [ebp - 0x10]
je 0x40fa81
add dword [ebp - 0x24], eax
mov eax, dword [esi + 0xf0]
cmp dword [ebp - 0x24], eax
jge 0x40fd39
jmp 0x40fa87
mov eax, dword [esi + 0xf0]
mov dword [ebp - 0x24], eax
jmp 0x40fd39
cmp eax, 0x24
jne 0x40fb36
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
push 0
push 6
test cx, ax
je 0x40fada
push 0x115
push dword [esi + 0x20]
call edi
push 0
push 6
push 0x114
push dword [esi + 0x20]
call edi
xor eax, eax
inc eax
mov dword [ebp - 8], eax
mov dword [ebp - 4], eax
mov eax, dword [esi + 0xf0]
mov dword [ebp - 0x24], eax
jmp 0x40faeb
push 0x114
push dword [esi + 0x20]
call edi
mov dword [ebp - 4], 1
mov ebx, dword [esi + 0xf8]
jmp 0x40fb00
push ebx
mov ecx, esi
call fcn.00409e37
test eax, eax
jg 0x40fb25
inc ebx
mov eax, dword [esi + 0xf4]
dec eax
cmp ebx, eax
mov dword [ebp - 0x20], ebx
jl 0x40faf3
jmp 0x40fb25
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fd39
inc dword [ebp - 0x24]
mov eax, dword [esi + 0xec]
dec eax
cmp dword [ebp - 0x24], eax
jl 0x40fb10
jmp 0x40fd39
cmp eax, 0x23
jne 0x40fbde
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
push 0
push 7
test cx, ax
je 0x40fb82
push 0x115
push dword [esi + 0x20]
call edi
push 0
push 7
push 0x114
push dword [esi + 0x20]
call edi
xor eax, eax
inc eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
mov eax, dword [esi + 0xec]
dec eax
mov dword [ebp - 0x24], eax
jmp 0x40fb93
push 0x114
push dword [esi + 0x20]
call edi
mov dword [ebp - 4], 1
mov ebx, dword [esi + 0xf4]
jmp 0x40fba7
push ebx
mov ecx, esi
call fcn.00409e37
test eax, eax
jg 0x40fbcd
mov eax, dword [esi + 0xf8]
dec ebx
inc eax
cmp ebx, eax
mov dword [ebp - 0x20], ebx
jg 0x40fb9b
jmp 0x40fbcd
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fd39
dec dword [ebp - 0x24]
mov eax, dword [esi + 0xf0]
inc eax
cmp dword [ebp - 0x24], eax
jg 0x40fbb8
jmp 0x40fd39
cmp eax, 0x71
jne 0x40fc07
mov edx, dword [esi]
push 1
or ecx, 0xffffffff
push ecx
mov eax, ecx
push eax
push dword [esi + 0x2a0]
mov ecx, esi
push dword [esi + 0x29c]
call dword [edx + 0x198]
jmp 0x40fd39
mov ecx, esi
call fcn.004309fb
jmp 0x40fee5
and dword [ebp - 0xc], 0
mov dword [ebp - 0x14], ebx
dec ebx
cmp dword [ebp + 8], 9
mov dword [ebp - 0x20], ebx
jne 0x40fc93
mov eax, dword [esi + 0xf8]
dec eax
cmp ebx, eax
jne 0x40fc76
mov eax, dword [esi + 0xf0]
cmp dword [ebp - 0x24], eax
jle 0x40fc76
dec dword [ebp - 0x24]
cmp dword [ebp - 0x24], eax
jle 0x40fc67
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fc60
dec dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [esi + 0xf0]
jg 0x40fc42
jmp 0x40fc67
mov dword [ebp - 0xc], 1
mov ebx, dword [esi + 0xf4]
mov dword [ebp - 0x1c], 1
jmp 0x40fc8f
mov ecx, esi
call fcn.004309fb
jmp 0x40fc93
push ebx
mov ecx, esi
call fcn.00409e37
test eax, eax
jg 0x40fd26
dec ebx
mov dword [ebp - 0x20], ebx
cmp ebx, dword [esi + 0xf8]
jge 0x40fc7f
jmp 0x40fd2d
and dword [ebp - 0xc], 0
mov dword [ebp - 0x14], ebx
inc ebx
cmp dword [ebp + 8], 9
mov dword [ebp - 0x20], ebx
jne 0x40fd1c
cmp ebx, dword [esi + 0xf4]
jne 0x40fd03
mov eax, dword [esi + 0xec]
lea ecx, [eax - 1]
cmp dword [ebp - 0x24], ecx
jge 0x40fd03
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], eax
jge 0x40fcf4
push dword [ebp - 0x24]
mov ecx, esi
call fcn.00409e13
test eax, eax
jg 0x40fced
inc dword [ebp - 0x24]
mov eax, dword [ebp - 0x24]
cmp eax, dword [esi + 0xec]
jl 0x40fccf
jmp 0x40fcf4
mov dword [ebp - 0xc], 1
mov ebx, dword [esi + 0xf8]
mov dword [ebp - 0x1c], 1
jmp 0x40fd19
mov ecx, esi
call fcn.004309fb
jmp 0x40fd1c
push ebx
mov ecx, esi
call fcn.00409e37
test eax, eax
jg 0x40fd26
inc ebx
mov dword [ebp - 0x20], ebx
cmp ebx, dword [esi + 0xf4]
jl 0x40fd0c
jmp 0x40fd2d
mov dword [ebp - 0xc], 1
cmp dword [ebp - 0xc], 0
jne 0x40fd39
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x20], ebx
lea eax, [esi + 0x29c]
push eax
lea ecx, [ebp - 0x24]
call fcn.00408f85
test eax, eax
jne 0x40fee5
cmp dword [esi + 0x270], eax
jne 0x40fdc9
lea ecx, [esi + 0x2e0]
call fcn.004097f4
mov eax, dword [esi + 0x98]
neg eax
sbb eax, eax
add eax, 4
push 0x10
mov dword [esi + 0x270], eax
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x40fd8e
cmp dword [ebp + 8], 9
jne 0x40fd9d
mov eax, dword [ebp - 0x24]
mov dword [esi + 0x294], eax
mov dword [esi + 0x298], ebx
push 0xffffffffffffff9c
push ebx
push dword [ebp - 0x24]
mov ecx, esi
call fcn.0040a2b8
lea eax, [ebp - 0x24]
push eax
mov ecx, esi
call fcn.0040e84d
push 0xffffffffffffff9b
push ebx
push dword [ebp - 0x24]
mov ecx, esi
call fcn.0040a2b8
and dword [esi + 0x270], 0
push ebx
push dword [ebp - 0x24]
lea eax, [ebp - 0x18]
push eax
mov ecx, esi
call fcn.0040e16d
push ebx
push dword [ebp - 0x24]
mov ecx, esi
call fcn.0040b7f2
test eax, eax
jne 0x40feb2
mov eax, dword [ebp + 8]
sub eax, 9
je 0x40fe2b
sub eax, 0x1c
je 0x40fe25
dec eax
je 0x40fe0e
dec eax
je 0x40fe85
dec eax
jne 0x40fe9a
push eax
push 1
jmp 0x40fe12
push 0
push 0
push 0x115
push dword [esi + 0x20]
call edi
mov dword [ebp - 8], 1
jmp 0x40fe9a
push 0
push 0
jmp 0x40fe89
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
mov ecx, 0x8000
test cx, ax
je 0x40fe69
cmp dword [ebp - 0x1c], 0
push 0
push 0
je 0x40fe89
push 0x115
push dword [esi + 0x20]
call edi
xor eax, eax
inc eax
push eax
push dword [esi + 0x128]
push 0
mov ecx, esi
mov dword [ebp - 8], eax
call fcn.00409493
jmp 0x40fe9a
cmp dword [ebp - 0x1c], 0
je 0x40fe85
push 0
push 1
push 0x115
push dword [esi + 0x20]
call edi
xor eax, eax
inc eax
push eax
push 0
jmp 0x40fe5b
push 0
push 1
push 0x114
push dword [esi + 0x20]
call edi
mov dword [ebp - 4], 1
push ebx
push dword [ebp - 0x24]
mov ecx, esi
call fcn.0040ace3
push 1
push 0
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_InvalidateRect]
push ebx
push dword [ebp - 0x24]
mov ecx, esi
call fcn.0040ace3
cmp dword [ebp - 4], 0
je 0x40fed1
push 0
push 8
push 0x114
push dword [esi + 0x20]
call edi
cmp dword [ebp - 8], 0
je 0x40fee5
push 0
push 8
push 0x115
push dword [esi + 0x20]
call edi
pop edi
pop ebx
pop esi
leave
ret 0xc