Function at 0x4e49f0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51c6b8
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push ebx
push esi
push edi
mov eax, dword [0x57b728]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
movss xmm0, dword [edi + 0x78]
movss dword [ebp - 0x2c], xmm0
movss xmm0, dword [edi + 0x7c]
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [edi + 0x80]
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x30], vtable.fPoint.0
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [edi + 0x88]
lea eax, [edi + 0x84]
movss dword [ebp - 0x3c], xmm0
movss xmm0, dword [eax + 8]
movss dword [ebp - 0x38], xmm0
movss xmm0, dword [eax + 0xc]
mov dword [ebp - 4], 0
mov dword [ebp - 0x40], vtable.fPoint.0
movss dword [ebp - 0x34], xmm0
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
call esi
push 0x10
shr eax, 0xf
and eax, 0xffffff01
mov dword [ebp - 0x10], eax
call esi
mov ecx, dword [edi + 0x1b0]
movzx ebx, ax
shr ebx, 0xf
and bl, 1
test ecx, ecx
je 0x4e4ac1
lea edx, [ecx + 0x3c]
push edx
lea eax, [ebp - 0x60]
add ecx, 0x4c
push eax
call fcn.004467a0
mov ecx, 1
jmp 0x4e4ae5
mov dword [ebp - 0x20], vtable.fPoint.0
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
lea eax, [ebp - 0x20]
mov ecx, 2
movss xmm2, dword [eax + 4]
movss xmm1, dword [eax + 8]
movss xmm0, dword [eax + 0xc]
mov dword [ebp - 0x50], vtable.fPoint.0
movss dword [ebp - 0x4c], xmm2
movss dword [ebp - 0x48], xmm1
movss dword [ebp - 0x44], xmm0
mov byte [ebp - 4], 2
test cl, 2
je 0x4e4b16
and ecx, 0xfffffffd
test cl, 1
mov eax, vtable.Streamable.0
cmove eax, dword [ebp - 0x60]
comiss xmm2, xmm0
mov dword [ebp - 0x60], eax
ja 0x4e4b2d
movaps xmm2, xmm0
mov eax, dword [ebp - 0x10]
test al, al
je 0x4e4b3e
divss xmm2, dword [0x548f68]
jmp 0x4e4b46
divss xmm2, dword [0x548f74]
cmp dword [edi + 0x1c0], 0
movss dword [ebp - 0x10], xmm2
jne 0x4e4ccd
cmp byte [edi + 0xc0], 0
movss xmm3, dword [0x51ea50]
je 0x4e4b91
test bl, bl
je 0x4e4b83
movss xmm0, dword [edi + 0x88]
addss xmm0, xmm3
movss dword [edi + 0x88], xmm0
jmp 0x4e4b91
movss xmm0, dword [edi + 0x7c]
subss xmm0, xmm2
movss dword [edi + 0x7c], xmm0
cmp byte [edi + 0xbe], 0
je 0x4e4bc2
test bl, bl
je 0x4e4bb4
movss xmm0, dword [edi + 0x88]
subss xmm0, xmm3
movss dword [edi + 0x88], xmm0
jmp 0x4e4bc2
movss xmm0, dword [edi + 0x7c]
addss xmm0, xmm2
movss dword [edi + 0x7c], xmm0
cmp byte [edi + 0xbd], 0
je 0x4e4bf3
test bl, bl
je 0x4e4be5
movss xmm0, dword [edi + 0x8c]
subss xmm0, xmm3
movss dword [edi + 0x8c], xmm0
jmp 0x4e4bf3
movss xmm0, dword [edi + 0x78]
subss xmm0, xmm2
movss dword [edi + 0x78], xmm0
cmp byte [edi + 0xbf], 0
je 0x4e4c24
test bl, bl
je 0x4e4c16
movss xmm0, dword [edi + 0x8c]
addss xmm0, xmm3
movss dword [edi + 0x8c], xmm0
jmp 0x4e4c24
movss xmm0, dword [edi + 0x78]
addss xmm0, xmm2
movss dword [edi + 0x78], xmm0
cmp byte [edi + 0xb9], 0
movss xmm4, dword [0x5484f8]
movss xmm5, dword [0x5484fc]
je 0x4e4c7c
test bl, bl
je 0x4e4c57
movss xmm0, dword [edi + 0x90]
addss xmm0, xmm3
movss dword [edi + 0x90], xmm0
jmp 0x4e4c7c
movaps xmm2, xmm1
test al, al
je 0x4e4c64
divss xmm2, xmm4
jmp 0x4e4c68
divss xmm2, xmm5
movss xmm0, dword [edi + 0x80]
subss xmm0, xmm2
movss dword [edi + 0x80], xmm0
cmp byte [edi + 0xba], 0
je 0x4e5003
test bl, bl
je 0x4e4ca6
movss xmm0, dword [edi + 0x90]
subss xmm0, xmm3
movss dword [edi + 0x90], xmm0
jmp 0x4e5003
test al, al
je 0x4e4cb0
divss xmm1, xmm4
jmp 0x4e4cb4
divss xmm1, xmm5
movss xmm0, dword [edi + 0x80]
addss xmm0, xmm1
movss dword [edi + 0x80], xmm0
jmp 0x4e5003
cmp byte [edi + 0xb9], 0
je 0x4e4d00
test al, al
je 0x4e4ced
divss xmm1, dword [0x5484f8]
movss xmm0, dword [edi + 0x7c]
addss xmm0, xmm1
jmp 0x4e4d28
divss xmm1, dword [0x5484fc]
movss xmm0, dword [edi + 0x7c]
addss xmm0, xmm1
jmp 0x4e4d28
cmp byte [edi + 0xba], 0
je 0x4e4d2d
test al, al
je 0x4e4d17
divss xmm1, dword [0x5484f8]
jmp 0x4e4d1f
divss xmm1, dword [0x5484fc]
movss xmm0, dword [edi + 0x7c]
subss xmm0, xmm1
movss dword [edi + 0x7c], xmm0
cmp byte [edi + 0xbe], 0
movsd xmm2, qword [0x548f38]
movss xmm1, dword [0x51ea44]
jne 0x4e4e0b
cmp byte [edi + 0xf2], 0
jne 0x4e4e0b
cmp byte [edi + 0xc0], 0
jne 0x4e4d6d
cmp byte [edi + 0xeb], 0
je 0x4e4eb8
test bl, bl
je 0x4e4d8a
movss xmm0, dword [edi + 0x88]
addss xmm0, xmm1
movss dword [edi + 0x88], xmm0
jmp 0x4e4eb8
movss xmm0, dword [edi + 0x8c]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
movsd qword [ebp - 0x18], xmm0
call fcn.004f1070
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [edi + 0x78]
mulss xmm1, dword [ebp - 0x10]
subss xmm0, xmm1
movss dword [edi + 0x78], xmm0
movss xmm0, dword [edi + 0x88]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x548f38]
call fcn.004f1070
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movsd xmm0, qword [ebp - 0x18]
mulss xmm1, dword [ebp - 0x10]
addss xmm1, dword [edi + 0x7c]
movss dword [edi + 0x7c], xmm1
call fcn.004f0eb0
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 0x10]
addss xmm0, dword [edi + 0x80]
jmp 0x4e4ea8
test bl, bl
je 0x4e4e28
movss xmm0, dword [edi + 0x88]
subss xmm0, xmm1
movss dword [edi + 0x88], xmm0
jmp 0x4e4eb8
movss xmm0, dword [edi + 0x8c]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
movsd qword [ebp - 0x18], xmm0
call fcn.004f1070
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 0x10]
addss xmm0, dword [edi + 0x78]
movss dword [edi + 0x78], xmm0
movss xmm0, dword [edi + 0x88]
cvtps2pd xmm0, xmm0
mulsd xmm0, qword [0x548f38]
call fcn.004f1070
movss xmm1, dword [edi + 0x7c]
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
movsd xmm0, qword [ebp - 0x18]
mulss xmm2, dword [ebp - 0x10]
subss xmm1, xmm2
movss dword [edi + 0x7c], xmm1
call fcn.004f0eb0
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [edi + 0x80]
mulss xmm1, dword [ebp - 0x10]
subss xmm0, xmm1
movsd xmm2, qword [0x548f38]
movss dword [edi + 0x80], xmm0
cmp byte [edi + 0xbd], 0
je 0x4e4ec5
test bl, bl
je 0x4e4ece
cmp byte [edi + 0xd9], 0
je 0x4e4f35
movss xmm0, dword [edi + 0x8c]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
movsd qword [ebp - 0x18], xmm0
call fcn.004f0eb0
mulsd xmm0, qword [0x548f40]
movss xmm1, dword [edi + 0x78]
xorps xmm2, xmm2
cvtsd2ss xmm2, xmm0
movsd xmm0, qword [ebp - 0x18]
mulss xmm2, dword [ebp - 0x10]
subss xmm1, xmm2
movss dword [edi + 0x78], xmm1
call fcn.004f1070
mulsd xmm0, qword [0x548f40]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movss xmm0, dword [edi + 0x80]
mulss xmm1, dword [ebp - 0x10]
subss xmm0, xmm1
jmp 0x4e4fa5
cmp byte [edi + 0xbf], 0
je 0x4e4f42
test bl, bl
je 0x4e4f4b
cmp byte [edi + 0xdd], 0
je 0x4e4fad
movss xmm0, dword [edi + 0x8c]
cvtps2pd xmm0, xmm0
mulsd xmm0, xmm2
movsd qword [ebp - 0x18], xmm0
call fcn.004f0eb0
mulsd xmm0, qword [0x548f40]
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movsd xmm0, qword [ebp - 0x18]
mulss xmm1, dword [ebp - 0x10]
addss xmm1, dword [edi + 0x78]
movss dword [edi + 0x78], xmm1
call fcn.004f1070
mulsd xmm0, qword [0x548f40]
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [ebp - 0x10]
addss xmm0, dword [edi + 0x80]
movss dword [edi + 0x80], xmm0
cmp byte [edi + 0xbd], 0
je 0x4e4fba
test bl, bl
jne 0x4e4fc3
cmp byte [edi + 0xe9], 0
je 0x4e4fd5
movss xmm0, dword [edi + 0x8c]
subss xmm0, dword [0x51ea44]
jmp 0x4e4ffb
cmp byte [edi + 0xbf], 0
je 0x4e4fe2
test bl, bl
jne 0x4e4feb
cmp byte [edi + 0xdc], 0
je 0x4e5003
movss xmm0, dword [edi + 0x8c]
addss xmm0, dword [0x51ea44]
movss dword [edi + 0x8c], xmm0
movss xmm0, dword [edi + 0x88]
push ecx
movss dword [esp], xmm0
call fcn.00402d10
fstp dword [edi + 0x88]
movss xmm0, dword [edi + 0x8c]
movss dword [esp], xmm0
call fcn.00402d10
fstp dword [edi + 0x8c]
movss xmm0, dword [edi + 0x90]
movss dword [esp], xmm0
call fcn.00402d10
fstp dword [edi + 0x90]
add esp, 4
cmp dword [edi + 0x1b4], 0
je 0x4e5093
lea esi, [edi + 0x74]
push esi
lea ecx, [ebp - 0x30]
call fcn.004023e0
test al, al
je 0x4e5074
mov ecx, dword [edi + 0x1b4]
push esi
mov eax, dword [ecx]
call dword [eax + 8]
lea esi, [edi + 0x84]
push esi
lea ecx, [ebp - 0x40]
call fcn.004023e0
test al, al
je 0x4e5093
mov ecx, dword [edi + 0x1b4]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret