Function at 0x40feb0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x24
mov eax, dword [0x54738c]
push ebx
mov eax, dword [eax + 0x94]
push esi
cmp eax, 4
push edi
mov esi, ecx
push ebp
je 0x40fedc
cmp eax, 6
je 0x40fedc
cmp eax, 7
je 0x40fedc
cmp eax, 5
jne 0x41017e
mov ecx, dword [0x54738c]
call fcn.00477550
test eax, eax
jne 0x41017e
mov eax, dword [0x54738c]
mov ecx, dword [eax + 0xc]
mov edx, dword [ecx + 0x8c0]
test edx, edx
je 0x41017e
call dword [sym.imp.USER32.dll_GetForegroundWindow]
mov ecx, dword [esi + 0x20]
cmp eax, dword [ecx + 4]
jne 0x41017e
mov ecx, 0x6e48b0
call fcn.00511290
test eax, eax
jne 0x41017e
mov ecx, 0x6e48b0
call fcn.00511270
test eax, eax
je 0x40ff49
mov ecx, 0x6e48b0
call fcn.00511270
cmp eax, esi
jne 0x41017e
lea eax, [esp + 0x24]
mov ecx, dword [esi + 0x20]
push eax
nop
mov edx, dword [ecx + 4]
xor edi, edi
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
lea ecx, [esp + 0x1c]
mov ebx, dword [sym.imp.USER32.dll_GetCursorPos]
push ecx
call ebx
xor bx, bx
mov eax, dword [0x54738c]
push 1
nop
mov ebp, dword [eax + 0xc]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jl 0x41015c
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jl 0x41015c
mov ecx, dword [ebp + 0x8c4]
mov eax, dword [esp + 0x24]
add eax, ecx
mov edx, dword [esp + 0x1c]
cmp eax, edx
jle 0x40ffb3
mov di, 0xffff
jmp 0x40ffc5
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, edx
jge 0x40ffc5
mov di, 1
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
add eax, ecx
cmp eax, edx
jle 0x40ffd9
mov bx, 0xffff
jmp 0x40ffeb
mov eax, dword [esp + 0x30]
sub eax, ecx
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jge 0x40ffeb
mov bx, 1
test di, di
jne 0x40fff9
test bx, bx
je 0x41015c
call dword [sym.imp.WINMM.dll_timeGetTime]
mov ecx, dword [esi + 0x368]
mov dword [esp + 0x18], eax
sub eax, ecx
mov ecx, dword [esi + 0x36c]
test ecx, ecx
jne 0x410029
mov dword [esi + 0x36c], 1
mov dword [esp + 0x10], 0x3f800000
jmp 0x410045
sub edx, edx
div dword [ebp + 0x8c8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], 0
fild qword [esp + 0x10]
fstp dword [esp + 0x10]
fld dword [ebp + 0x8cc]
fcomp dword [esp + 0x10]
fnstsw ax
test ah, 1
je 0x410060
mov eax, dword [ebp + 0x8cc]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x41015c
test di, di
je 0x410084
test bx, bx
je 0x410084
fld dword [esp + 0x10]
fmul dword [0x532a70]
fstp dword [esp + 0x10]
cmp di, 0xffff
jne 0x4100ab
mov ecx, dword [esi + 0x108]
sub esp, 4
fld dword [ecx + 0xe0]
fsub dword [esp + 0x14]
fld dword [ecx + 0xdc]
fsub dword [esp + 0x14]
fxch st(1)
jmp 0x4100d0
cmp di, 1
jne 0x4100de
mov ecx, dword [esi + 0x108]
sub esp, 4
fld dword [ecx + 0xe0]
fadd dword [esp + 0x14]
fld dword [ecx + 0xdc]
fadd dword [esp + 0x14]
fxch st(1)
fstp dword [esp]
sub esp, 4
fstp dword [esp]
call fcn.004ed820
cmp bx, 0xffff
jne 0x410105
mov ecx, dword [esi + 0x108]
sub esp, 4
fld dword [ecx + 0xe0]
fsub dword [esp + 0x14]
fld dword [ecx + 0xdc]
fadd dword [esp + 0x14]
fxch st(1)
jmp 0x41012a
cmp bx, 1
jne 0x410138
mov ecx, dword [esi + 0x108]
sub esp, 4
fld dword [ecx + 0xe0]
fadd dword [esp + 0x14]
fld dword [ecx + 0xdc]
fsub dword [esp + 0x14]
fxch st(1)
fstp dword [esp]
sub esp, 4
fstp dword [esp]
call fcn.004ed820
push 1
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0x20]
mov ecx, dword [esi + 0x364]
test ecx, ecx
je 0x410152
push 1
mov eax, dword [ecx]
call dword [eax + 0x20]
mov eax, dword [esp + 0x18]
mov dword [esi + 0x368], eax
test di, di
jne 0x410170
test bx, bx
jne 0x410170
mov dword [esi + 0x36c], 0
mov eax, dword [esi + 0x36c]
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x24
ret
xor eax, eax
pop ebp
mov dword [esi + 0x36c], 0
pop edi
pop esi
pop ebx
add esp, 0x24
ret