Function at 0x407e60
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c76fd
mov eax, dword fs:[0]
push eax
sub esp, 0xa4
mov eax, dword [0x4fc00c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x5c], ecx
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp + 0x14]
push eax
push dword [ebp + 8]
mov dword [ebp - 0x60], eax
call fcn.00406890
test al, al
je 0x4082be
call fcn.0041c1a0
movss xmm1, dword [0x4f3ef0]
lea ecx, [ebp - 0x48]
xorps xmm0, xmm0
mov byte [ebp - 0x4e], 2
mov dword [eax + 8], 5
xor eax, eax
movups xmmword [ebp - 0x40], xmm0
mov word [ebp - 0x44], ax
movups xmmword [ebp - 0x30], xmm0
call fcn.0044d160
call fcn.00420dc0
cmp byte [eax + 0x62], 0
jne 0x4082af
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
call fcn.00423ed0
lea ecx, [eax + 8]
call fcn.00445df0
call fcn.00420dc0
mov esi, eax
mov al, byte [esi + 0x61]
test al, 0xf0
je 0x407f3e
movzx ecx, al
and ecx, 0xf
push ecx
mov ecx, 0x4fe450
call fcn.00440a60
movzx eax, word [0x4fe456]
push ecx
push eax
movzx eax, word [0x4fe454]
mov ecx, 0x4fe450
push eax
call fcn.004407c0
mov byte [esi + 0x61], 0
cmp byte [esi + 0x60], 0
je 0x408284
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c290
call fcn.0042dc50
mov esi, eax
xor edx, edx
cmp byte [esi + 0x474], dl
jbe 0x407f95
xor ecx, ecx
nop word [eax + eax]
mov eax, dword [esi + 0x470]
lea ecx, [ecx + 0x260]
xor edi, edi
inc edx
mov word [eax + ecx - 0xc], di
movzx eax, byte [esi + 0x474]
cmp edx, eax
jl 0x407f70
mov edi, dword [sym.imp.WINMM.dll_timeGetTime]
call fcn.0041e7c0
mov esi, eax
mov al, byte [esi + 0x44]
mov byte [ebp - 0x4d], al
call fcn.00443960
movzx ecx, byte [ebp - 0x4d]
imul ecx, ecx, 0x208
cmp byte [ecx + eax + 0x144], 0
je 0x407ff2
mov al, byte [ecx + eax + 0x250]
test al, al
je 0x407ff2
mov al, byte [esi + 0x44]
mov byte [ebp - 0x4d], al
call fcn.00443960
movzx ecx, byte [ebp - 0x4d]
imul ecx, ecx, 0x208
push 6
add ecx, 0x13c
add ecx, eax
call fcn.00447bd0
test eax, eax
jne 0x408246
push 0x1b
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cwde
test eax, 0x10000
jne 0x408246
call edi
movsd xmm0, qword [ebp - 0x30]
addsd xmm0, qword [ebp - 0x38]
movsd xmm1, qword [0x4f3d58]
mov dword [ebp - 0x48], eax
xor eax, eax
comisd xmm0, xmm1
movsd qword [ebp - 0x38], xmm0
jb 0x408038
subsd xmm0, xmm1
mov eax, 1
movsd qword [ebp - 0x38], xmm0
movd xmm0, eax
lea eax, [ebp - 0xb0]
cvtdq2pd xmm0, xmm0
push eax
addsd xmm0, qword [ebp - 0x28]
movsd qword [ebp - 0x40], xmm0
call fcn.0041e7c0
mov ecx, eax
call fcn.0041def0
push dword [ebp - 0x58]
mov esi, dword [ebp - 0x5c]
mov ecx, esi
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x94], xmm0
movq xmm0, qword [eax + 0x10]
mov eax, dword [eax + 0x18]
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x94]
push eax
movq qword [ebp - 0x84], xmm0
call fcn.00407000
test al, al
je 0x4082af
call fcn.00420dc0
cmp byte [eax + 0xc], 0
je 0x4080df
mov ax, word [ebp - 0x44]
test ax, ax
je 0x4080df
mov ecx, 0xffff
add ax, cx
mov word [ebp - 0x44], ax
call edi
sub eax, dword [ebp - 0x48]
movsd xmm0, qword [ebp - 0x40]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x4f44f0]
comisd xmm0, xmm1
ja 0x4080b6
jmp 0x408284
mov eax, dword [0x4fe4d8]
movaps xmm0, xmmword [0x4f44a0]
push 0x4fe554
movups xmmword [ebp - 0x20], xmm0
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x54]
mov eax, dword [0x4fe4d8]
push 0x4fe56c
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0x58]
mov eax, dword [0x4fe490]
lea edx, [ebp - 0x78]
push edx
mov dword [ebp - 0x78], 0
mov dword [ebp - 0x74], 0
mov eax, dword [eax*4 + 0x4fe498]
mov dword [ebp - 0x70], eax
mov eax, dword [0x4fe4d8]
mov dword [ebp - 0x6c], 0xffffffff
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x64], 4
mov ecx, dword [eax]
push 1
push eax
call dword [ecx + 0x68]
mov eax, dword [0x4fe4d8]
push 0
push 0
push 0
mov ecx, dword [eax]
push ecx
mov dword [esp], 0x3f800000
push 3
push dword [0x4fe4c8]
push eax
call dword [ecx + 0xbc]
mov ecx, dword [0x4fe4d8]
lea eax, [ebp - 0x20]
push 0
push 0
push eax
mov eax, dword [0x4fe490]
mov edx, dword [ecx]
push dword [eax*4 + 0x4fe4ac]
push ecx
call dword [edx + 0xc0]
mov eax, dword [0x4fe490]
lea edx, [ebp - 0x4c]
push 0x4fe4c8
push 1
push edx
mov eax, dword [eax*4 + 0x4fe4ac]
mov dword [ebp - 0x4c], eax
mov eax, dword [0x4fe4d8]
push 1
push eax
mov ecx, dword [eax]
call dword [ecx + 0xb8]
sub esp, 8
mov ecx, esi
push dword [0x4fe4d8]
call fcn.00407870
push dword [0x4fe4d8]
call fcn.0041c1a0
mov ecx, eax
call fcn.0041c3a0
push 0
mov ecx, 0x4fe450
call fcn.004404e0
call edi
sub eax, dword [ebp - 0x48]
movsd xmm1, qword [ebp - 0x40]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x4f44f0]
comisd xmm1, xmm0
ja 0x408220
divsd xmm0, xmm1
cvttsd2si eax, xmm0
mov word [ebp - 0x44], ax
call edi
sub eax, dword [ebp - 0x48]
movsd xmm0, qword [ebp - 0x40]
movd xmm1, eax
cvtdq2pd xmm1, xmm1
shr eax, 0x1f
addsd xmm1, qword [eax*8 + 0x4f44f0]
comisd xmm0, xmm1
ja 0x408220
jmp 0x408284
xor eax, eax
mov word [ebp - 0x54], ax
push dword [ebp - 0x60]
lea ecx, [ebp - 0x54]
mov dword [ebp - 4], eax
push dword [ebp + 0x10]
call fcn.0040eee0
cmp eax, 1
je 0x408295
cmp eax, 2
je 0x408295
mov dword [ebp - 4], 2
push dword [ebp - 0x54]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
mov dword [ebp - 4], 0xffffffff
call fcn.00420dc0
cmp byte [eax + 0x62], 0
je 0x407ef3
jmp 0x4082af
mov byte [ebp - 0x4e], 1
mov dword [ebp - 4], 1
push dword [ebp - 0x54]
call fcn.0043add0
mov ecx, eax
call fcn.0043af50
call fcn.0041c1a0
mov dword [eax + 8], 3
mov al, byte [ebp - 0x4e]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0047d312
mov esp, ebp
pop ebp
ret 0x10