Function at 0x490f60
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x1c]
sub esp, 8
test eax, eax
mov edx, 1
cmovne edx, eax
push ebx
push esi
push edi
mov edi, ecx
push dword [edi]
mov dword [edi + 0x80], edx
call dword [sym.imp.USER32.dll_IsWindow]
mov ebx, dword [ebp + 8]
test eax, eax
jne 0x490f9b
push ebx
call fcn.0049d840
push eax
mov ecx, edi
call fcn.0048f040
xor esi, esi
mov dword [ebp + 0x1c], esi
mov dword [ebp - 4], esi
test ebx, ebx
je 0x490fff
mov ecx, dword [edi]
test ecx, ecx
je 0x490fff
mov eax, dword [ebx]
push ecx
mov ecx, ebx
call dword [eax + 0x3c]
push 0
mov esi, eax
mov ecx, ebx
push 0
mov dword [ebp + 0x1c], esi
call fcn.0047bb00
test eax, 0x2000000
je 0x490fd5
mov dword [ebp - 4], 1
jmp 0x490fff
test esi, esi
je 0x490fff
push 0
push 0
mov ecx, ebx
call fcn.0047bb00
test eax, 0x1000
je 0x490fff
call fcn.0049f6b0
xor edx, edx
test eax, eax
mov eax, 1
cmove edx, eax
mov dword [ebp - 4], edx
xor ecx, ecx
test esi, esi
sete cl
mov dword [ebp - 8], ecx
test ecx, ecx
jne 0x49102e
test ebx, ebx
je 0x49101e
push ecx
push ecx
mov ecx, ebx
call fcn.0047bb00
test al, 4
jne 0x491027
cmp byte [edi + 0x90], 0
je 0x49102e
mov dword [ebp - 8], 1
mov esi, dword [ebp + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x78], eax
test esi, esi
je 0x491068
mov eax, dword [edi + 0x48]
test eax, eax
jns 0x491047
or edx, 0xffffffff
jmp 0x49104e
xor edx, edx
test eax, eax
setg dl
test esi, esi
jns 0x491057
or ecx, 0xffffffff
jmp 0x49105e
xor ecx, ecx
test esi, esi
setg cl
xor ebx, ebx
cmp edx, ecx
cmovne eax, ebx
mov dword [edi + 0x48], eax
mov ebx, dword [edi + 4]
cmp ebx, 1
jne 0x49107a
cmp dword [edi + 0x3c], 0
jne 0x491087
xor ebx, ebx
jmp 0x491087
cmp ebx, 3
jne 0x491087
xor ebx, ebx
cmp dword [edi + 0x3c], ebx
setne bl
test byte [edi + 0x34], 8
jne 0x4910b5
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x4910b5
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x4910b5
mov ecx, 0x515d60
call fcn.0045ffc0
test eax, eax
je 0x4910b7
xor ebx, ebx
mov eax, dword [edi + 0x34]
mov ecx, 4
mov edx, dword [edi + 0x64]
test al, 0x40
cmovne ebx, ecx
mov ecx, dword [ebp + 0x1c]
test dl, 1
je 0x4910db
test ecx, ecx
jne 0x4910db
mov ebx, edx
shr ebx, 0xa
and ebx, 4
test eax, 0x4000000
mov eax, 1
cmovne ebx, eax
test esi, esi
je 0x491176
cmp dword [edi + 0x80], eax
je 0x491176
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov edx, dword [edi + 0x80]
cmp eax, edx
jge 0x491152
test ecx, ecx
cmovne eax, esi
add dword [edi + 0x84], eax
mov eax, dword [edi + 0x84]
cdq
xor eax, edx
sub eax, edx
cmp eax, dword [edi + 0x80]
jl 0x4911e7
test ecx, ecx
je 0x491137
mov esi, dword [edi + 0x84]
jmp 0x491176
push esi
call fcn.0042adf0
imul eax, dword [edi + 0x84]
add esp, 4
cdq
idiv dword [edi + 0x80]
mov esi, eax
jmp 0x491176
test ebx, ebx
jne 0x49115c
test byte [edi + 0x34], 2
jne 0x491176
lea eax, [edx - 1]
xor ecx, ecx
cmp dword [edi + 0x84], eax
mov eax, esi
cdq
setge cl
idiv dword [edi + 0x80]
lea esi, [eax + ecx]
cmp dword [ebp - 8], 0
mov dword [ebp + 0xc], esi
je 0x49118c
push dword [ebp + 0x20]
mov ecx, edi
push esi
call fcn.0048db40
mov esi, eax
add dword [edi + 0x48], esi
cmp dword [ebp + 0x18], 0
je 0x4911f5
mov eax, dword [edi + 0x4c]
test eax, eax
je 0x4911f5
cmp dword [ebp + 0x24], 0
je 0x4911e7
cdq
mov esi, eax
mov eax, dword [edi + 0x48]
xor esi, edx
sub esi, edx
cdq
xor eax, edx
sub eax, edx
lea ecx, [esi + esi]
cmp eax, ecx
jle 0x4911e7
mov ecx, dword [edi + 0x48]
test ecx, ecx
jns 0x4911d8
or eax, 0xffffffff
imul esi, eax
mov eax, 2
add esi, esi
mov dword [edi + 0x48], esi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
xor eax, eax
test ecx, ecx
setg al
imul esi, eax
add esi, esi
mov dword [edi + 0x48], esi
pop edi
pop esi
mov eax, 2
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
push dword [ebp + 0x30]
mov esi, dword [ebp + 8]
mov ecx, edi
push 2
push dword [ebp + 0x2c]
push esi
call fcn.00490520
cmp eax, 1
jne 0x491239
mov ecx, dword [ebp + 8]
mov esi, dword [esi + 0xc]
call fcn.0047bfe0
push eax
mov ecx, esi
call fcn.004260d0
test eax, eax
je 0x49124c
mov dword [edi + 0x48], 0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret 0x2c
test eax, eax
je 0x49131f
cmp eax, 2
je 0x49131f
jmp 0x49124f
mov esi, dword [ebp + 8]
cmp dword [edi + 0x34], 0
jne 0x491273
cmp dword [edi + 0x74], 0
je 0x491273
push 0
push 0
mov ecx, esi
call fcn.0047bb00
test eax, 0x4000
je 0x491273
xor eax, eax
xor ebx, ebx
jmp 0x491276
mov eax, dword [ebp + 0x1c]
xor ecx, ecx
cmp ebx, 5
ja case.0x491281.3
jmp dword [ebx*4 + 0x491328]
push eax
push 1
mov ecx, edi
call fcn.0048fbd0
jmp 0x4912f0
push dword [ebp - 4]
mov ecx, edi
push dword [ebp + 0x28]
push eax
push 1
push dword [ebp + 0x14]
push dword [edi]
call fcn.0048f6b0
jmp 0x4912f0
test dword [edi + 0x34], 0x400000
mov ecx, edi
push 1
push dword [ebp + 0x28]
je 0x4912c9
push dword [edi]
push dword [edi + 0x38]
push 1
call fcn.0048dcd0
jmp 0x4912f0
push dword [edi + 0x3c]
push dword [edi + 0x38]
push 1
call fcn.0048dcd0
jmp 0x4912f0
push dword [edi]
mov ecx, edi
push 1
call fcn.0048f4f0
jmp 0x4912f0
push dword [edi]
mov ecx, edi
push 1
call fcn.0048e490
mov ecx, eax
test ecx, ecx
jle case.0x491281.3
mov eax, dword [ebp + 0xc]
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jg case.0x491281.3
mov dword [edi + 0x48], 0
mov dword [edi + 0x4c], ecx
test ecx, ecx
jg 0x49122b
xor eax, eax
test ecx, ecx
sets al
add eax, 2
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x2c