Function at 0x5f2038
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc4
push ebx
push esi
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
mov edx, eax
cmp edx, 0x101
jg 0x5f2074
je 0x5f2240
sub edx, 7
je 0x5f209d
dec edx
je 0x5f20b3
sub edx, 0xf8
je 0x5f2228
jmp 0x5f2337
sub edx, 0x102
je 0x5f2210
add edx, 0xfffffffe
sub edx, 2
jb 0x5f2258
sub edx, 0xfe
je 0x5f21ad
jmp 0x5f2337
mov eax, dword [ebp - 0x20]
call fcn.005f1920
mov si, 0xffe7
call fcn.00403fa8
jmp 0x5f2337
xor eax, eax
push ebp
push 0x5f21a6
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x20]
cmp byte [eax + 0x2c], 0
je 0x5f20e9
push ebp
call fcn.005f1ff4
pop ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
call fcn.004046e8
jmp 0x5f24e8
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [0x5c48c8]
call fcn.00403f38
test al, al
je 0x5f2187
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
mov ebx, eax
call sub.user32.dll_GetFocus
cmp ebx, eax
jne 0x5f2127
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
mov ebx, eax
jmp 0x5f2134
call sub.user32.dll_GetFocus
push eax
call sub.user32.dll_GetParent
mov ebx, eax
mov eax, ebx
call fcn.00465f68
mov edx, dword [0x5c48c8]
call fcn.00403f38
test al, al
jne 0x5f2152
push ebx
call sub.user32.dll_GetParent
mov ebx, eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
cmp ebx, eax
je 0x5f2187
push ebp
call fcn.005f1ff4
pop ecx
push ebp
call fcn.005f1fc8
pop ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
call fcn.004046e8
jmp 0x5f24e8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5f2337
mov eax, dword [ebp - 0x20]
call fcn.005f1920
mov si, 0xffe6
call fcn.00403fa8
ret
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
call fcn.0040851c
push 1
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_MapWindowPoints
mov dx, word [ebp - 0x28]
mov ax, word [ebp - 0x2c]
call fcn.00408550
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
push eax
call sub.user32.dll_SendMessageA
mov edx, dword [ebp - 0x24]
mov dword [edx + 0xc], eax
jmp 0x5f24e8
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.005f1ae8
test al, al
jne 0x5f24e8
jmp 0x5f2337
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.005f1ab8
test al, al
jne 0x5f24e8
jmp 0x5f2337
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x20]
call fcn.005f1b18
test al, al
jne 0x5f24e8
jmp 0x5f2337
mov edx, dword [ebp - 0x24]
cmp eax, 0x104
jne 0x5f226a
mov eax, dword [ebp - 0x20]
inc dword [eax + 0x34]
jmp 0x5f227d
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x34], 0
je 0x5f24e8
mov eax, dword [ebp - 0x20]
dec dword [eax + 0x34]
push 0x12
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jl 0x5f2337
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
jne 0x5f22a5
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x105
jne 0x5f2337
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x34], edx
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x79
jne 0x5f22d4
push 0x10
call sub.user32.dll_GetAsyncKeyState
test ax, ax
jl 0x5f24e8
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
jne 0x5f22e4
mov byte [0x6c2661], 1
mov byte [0x6c2662], 1
xor eax, eax
push ebp
push 0x5f2330
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
push 0
call fcn.005cf0f0
dec eax
jne 0x5f231b
call fcn.004046e8
jmp 0x5f24e8
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5f2337
mov byte [0x6c2662], 0
ret
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x100
jne 0x5f23eb
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
sub eax, 9
je 0x5f23a8
sub eax, 4
je 0x5f235f
sub eax, 0xe
jne 0x5f23df
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x144]
push ebp
call fcn.005f1fc8
pop ecx
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x1b
jne 0x5f2395
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x20]
mov ecx, dword [eax]
call dword [ecx + 0x154]
jmp 0x5f24e8
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [eax]
call dword [edx + 0x178]
jmp 0x5f24e8
push ebp
call fcn.005f1fc8
pop ecx
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
push eax
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
push eax
call sub.user32.dll_SendMessageA
mov edx, dword [ebp - 0x24]
mov dword [edx + 0xc], eax
jmp 0x5f24e8
push ebp
call fcn.005f1ff4
pop ecx
jmp 0x5f24e8
mov eax, dword [ebp - 0x24]
mov eax, dword [eax]
cmp eax, 0x200
jb 0x5f2480
mov edx, dword [ebp - 0x24]
cmp eax, 0x20a
ja 0x5f2480
lea edx, [ebp - 0x2c]
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 8]
call fcn.0040851c
push 1
lea eax, [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
call fcn.0046fb3c
push eax
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_MapWindowPoints
call sub.user32.dll_GetCapture
mov edx, dword [ebp - 0x20]
cmp eax, dword [edx + 0x30]
je 0x5f2480
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
lea edx, [ebp - 0x3c]
mov eax, dword [ebp - 0x20]
call fcn.005f1928
lea eax, [ebp - 0x3c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
jne 0x5f2480
push dword [ebp - 0x28]
push dword [ebp - 0x2c]
lea ecx, [ebp - 0x3c]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x20]
mov edx, dword [ebp - 0x20]
call fcn.005e3178
lea eax, [ebp - 0x3c]
push eax
call sub.user32.dll_PtInRect
test eax, eax
jne 0x5f24e8
mov eax, dword [ebp - 0x24]
cmp dword [eax], 2
jne 0x5f2495
xor edx, edx
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax]
call dword [ecx + 0xc8]
mov eax, dword [ebp - 0x24]
cmp dword [eax], 0x104
jne 0x5f24a9
mov eax, dword [ebp - 0x24]
cmp dword [eax + 4], 0x12
je 0x5f24b0
push ebp
call fcn.005f1ff4
pop ecx
mov eax, dword [ebp - 0x24]
cmp dword [eax], 2
jne 0x5f24e8
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x38]
push eax
push 0xfffffffffffffffc
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x30]
push eax
call sub.user32.dll_SetWindowLongA
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x28]
call fcn.0042ce0c
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x28], edx
mov eax, dword [ebp - 0x20]
xor edx, edx
mov dword [eax + 0x30], edx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret