Function at 0x10049340
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
movsd xmm0, qword [0x100ea588]
xorps xmm1, xmm1
ucomisd xmm0, xmm1
push ebx
push esi
mov esi, ecx
movsd qword [ebp - 0xc], xmm1
lahf
test ah, 0x44
jnp 0x10049379
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.10041480
test byte [eax], 1
jne 0x10049379
mov bl, 1
jmp 0x1004937b
xor bl, bl
movsd xmm0, qword [0x100ea4f0]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x10049405
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.10041480
test byte [eax], 1
je 0x10049405
call fcn.10045930
mov dword [ebp - 0x28], 0
movq xmm0, qword [eax + 0xc4]
mov eax, dword [eax + 0xcc]
movq qword [ebp - 0x18], xmm0
movss xmm0, dword [ebp - 0x14]
movss xmm1, dword [ebp - 0x18]
mulss xmm0, xmm0
mov dword [ebp - 0x10], eax
mulss xmm1, xmm1
addss xmm1, xmm0
movss xmm0, dword [ebp - 0x10]
mulss xmm0, xmm0
addss xmm1, xmm0
movss dword [ebp - 4], xmm1
sqrtss xmm0, dword [ebp - 4]
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [ebp - 0x28]
comiss xmm0, dword [0x1008d540]
jbe 0x10049405
mov bh, 1
jmp 0x10049407
xor bh, bh
movsd xmm0, qword [0x100ea400]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x10049432
cvttsd2si eax, qword [0x100ea3b8]
push eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x10049432
mov al, 1
jmp 0x10049434
xor al, al
test bl, bl
jne 0x1004943c
test bh, bh
je 0x10049444
test al, al
je 0x10049448
test bl, bl
jne 0x10049448
mov al, 1
jmp 0x1004944a
xor al, al
test bl, bl
je 0x1004945b
mov dword [esi], 2
mov ecx, 2
jmp 0x1004945d
mov ecx, dword [esi]
test bh, bh
je 0x1004946c
mov dword [esi], 1
mov ecx, 1
test al, al
je 0x10049478
mov dword [esi], 0
xor ecx, ecx
call fcn.10069010
mov eax, dword [eax + 0x20]
movsd xmm0, qword [eax]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x10049494
call fcn.100496f0
mov ecx, dword [esi]
call fcn.10069010
mov eax, dword [eax + 4]
movsd xmm0, qword [eax]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x10049533
mov ecx, dword [esi]
push edi
call fcn.10069010
mov ecx, dword [esi]
mov eax, dword [eax + 8]
cvttsd2si edi, qword [eax]
call fcn.10069010
mov eax, dword [eax + 0xc]
movss xmm1, dword [0x100e876c]
cvttsd2si eax, qword [eax]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
comiss xmm1, xmm0
jbe 0x100494ed
xorps xmm1, xmm1
movss dword [0x100e876c], xmm1
cmp dword [esi], 2
jne 0x10049510
mov eax, dword [0x100e8ffc]
mov ecx, dword [eax]
call fcn.10041480
test byte [eax], 1
je 0x10049508
xorps xmm1, xmm1
jmp 0x10049510
movss xmm1, dword [0x100e876c]
mov eax, dword [0x100e8810]
movd xmm0, edi
cvtdq2ps xmm0, xmm0
pop edi
addss xmm0, xmm1
movss dword [0x100e876c], xmm0
addss xmm0, dword [eax + 0x10]
movss dword [eax + 0x10], xmm0
mov ecx, dword [esi]
call fcn.10069010
mov eax, dword [eax + 0x10]
movsd xmm0, qword [eax]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x10049553
mov ecx, esi
call fcn.100495e0
mov ecx, dword [esi]
call fcn.10069010
mov ecx, dword [0x100e8810]
mov eax, dword [eax + 0x30]
cvttsd2si eax, qword [eax]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ecx + 0x10]
movss dword [ecx + 0x10], xmm0
call fcn.10049b90
push ecx
mov ecx, eax
call fcn.100501a0
test al, al
je 0x1004959b
mov eax, dword [0x100e8810]
movss xmm0, dword [0x100e87f0]
movss dword [eax + 0x10], xmm0
mov ecx, dword [esi]
call fcn.10069010
mov eax, dword [eax + 0x24]
movsd xmm0, qword [eax]
ucomisd xmm0, qword [ebp - 0xc]
lahf
test ah, 0x44
jnp 0x100495c2
mov ecx, esi
call fcn.10048460
mov ecx, esi
call fcn.10048230
mov eax, dword [0x100e8810]
pop esi
pop ebx
mov dword [eax + 0xc], 0x42b20000
mov esp, ebp
pop ebp
ret