Function at 0x10004390
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
cmp byte [0x100473e4], 0
push ebx
push esi
push edi
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
jne 0x100043b5
push 1
call edi
cmp byte [0x100473e4], 0
je 0x100043a8
movups xmm0, xmmword [0x100473d4]
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
lea eax, [ebp - 0x14]
push eax
call fcn.1000b360
sub esp, 0xc
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0x30]
mulsd xmm0, qword [0x10034860]
cvtpd2ps xmm2, xmm0
movss xmm0, dword [ebp - 0x18]
cvtps2pd xmm0, xmm0
movss dword [0x10047398], xmm2
mulsd xmm0, qword [0x10034860]
cvtpd2ps xmm0, xmm0
movss dword [esp + 8], xmm0
movss dword [0x1004739c], xmm0
movss xmm0, dword [0x10047394]
movss dword [esp + 4], xmm2
movss dword [esp], xmm0
push eax
call fcn.1000b1b0
sub esp, 0x10
mov ecx, esp
sub esp, 0x10
movups xmm0, xmmword [eax]
mov eax, esp
movups xmmword [ecx], xmm0
movups xmm0, xmmword [0x100473d4]
movups xmmword [eax], xmm0
call fcn.1000b310
push ecx
fstp dword [esp]
call fcn.10006900
movsd xmm0, qword [0x10034848]
add esp, 4
fstp qword [ebp - 0x10]
comisd xmm0, xmmword [ebp - 0x10]
jbe 0x100044be
movss xmm0, dword [0x1004739c]
cvtps2pd xmm0, xmm0
subsd xmm0, qword [0x10034870]
cvtpd2ps xmm3, xmm0
movss xmm0, dword [0x10047398]
cvtps2pd xmm0, xmm0
movss dword [0x1004739c], xmm3
addsd xmm0, qword [0x10034870]
mulsd xmm0, qword [0x10034888]
cvtpd2ps xmm2, xmm0
movss dword [0x10047398], xmm2
jmp 0x100044ce
movss xmm3, dword [0x1004739c]
movss xmm2, dword [0x10047398]
movss xmm5, dword [0x10034880]
comiss xmm2, xmm5
movsd xmm1, qword [0x10034878]
jbe 0x100044f6
cvtps2pd xmm0, xmm2
subsd xmm0, xmm1
cvtpd2ps xmm2, xmm0
movss dword [0x10047398], xmm2
xorps xmm4, xmm4
comiss xmm4, xmm2
jbe 0x10004511
cvtps2pd xmm0, xmm2
addsd xmm0, xmm1
cvtpd2ps xmm2, xmm0
movss dword [0x10047398], xmm2
comiss xmm3, xmm5
jbe 0x10004529
cvtps2pd xmm0, xmm3
subsd xmm0, xmm1
cvtpd2ps xmm3, xmm0
movss dword [0x1004739c], xmm3
comiss xmm4, xmm3
jbe 0x10004541
cvtps2pd xmm0, xmm3
addsd xmm0, xmm1
cvtpd2ps xmm3, xmm0
movss dword [0x1004739c], xmm3
movss xmm0, dword [0x10047394]
lea eax, [ebp - 0x30]
sub esp, 0xc
movss dword [esp + 8], xmm3
movss dword [esp + 4], xmm2
movss dword [esp], xmm0
push eax
call fcn.1000b1b0
movss xmm1, dword [0x10034830]
mov edx, eax
sub esp, 0xc
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x18]
mov ecx, esp
sub esp, 0x10
movups xmm0, xmmword [edx]
movups xmmword [0x100473d4], xmm0
xorps xmm0, xmm0
unpcklps xmm0, xmm1
movq qword [ecx], xmm0
movups xmm0, xmmword [edx]
mov dword [ecx + 8], eax
mov eax, esp
movups xmmword [eax], xmm0
lea eax, [ebp - 0x14]
push eax
call fcn.1000b050
movss xmm1, dword [0x100473c4]
add esp, 0x20
cmp byte [0x10047385], 0
movsd xmm2, qword [0x10034838]
movq xmm0, qword [eax]
movq qword [ebp - 0x20], xmm0
movss xmm0, dword [ebp - 0x20]
cvtps2pd xmm0, xmm0
mov eax, dword [eax + 8]
mov dword [ebp - 0x18], eax
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm2
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss xmm1, dword [0x100473c8]
movss dword [0x100473c4], xmm0
movss xmm0, dword [ebp - 0x1c]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm2
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss xmm1, dword [0x100473cc]
movss dword [0x100473c8], xmm0
movss xmm0, dword [ebp - 0x18]
cvtps2pd xmm0, xmm0
cvtps2pd xmm1, xmm1
mulsd xmm0, xmm2
subsd xmm1, xmm0
cvtpd2ps xmm0, xmm1
movss dword [0x100473cc], xmm0
je 0x10004a4f
mov ebx, dword [sym.imp.USER32.dll_GetCursorPos]
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
movd xmm0, dword [0x10046070]
lea eax, [ebp - 0x10]
cvtdq2ps xmm0, xmm0
push eax
movss dword [ebp - 4], xmm0
movd xmm0, dword [0x10046074]
cvtdq2ps xmm0, xmm0
movss dword [ebp - 8], xmm0
call ebx
test eax, eax
je 0x100046eb
cmp byte [0x10047386], 0
jne 0x100046eb
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [0x100473ac]
cvtps2pd xmm2, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, dword [ebp - 0x10]
mulsd xmm2, qword [0x10034840]
subsd xmm0, xmm2
cvtpd2ps xmm0, xmm0
movss dword [ebp - 4], xmm0
xorps xmm0, xmm0
cvtsi2ss xmm0, dword [0x100473b0]
cvtps2pd xmm1, xmm0
xorps xmm0, xmm0
mulsd xmm1, qword [0x10034840]
cvtsi2sd xmm0, dword [ebp - 0xc]
cvttsd2si eax, xmm1
subsd xmm0, xmm1
push eax
cvttsd2si eax, xmm2
cvtpd2ps xmm0, xmm0
push eax
movss dword [ebp - 8], xmm0
call dword [sym.imp.USER32.dll_SetCursorPos]
movss xmm1, dword [ebp - 4]
cvtps2pd xmm1, xmm1
movss xmm0, dword [0x10047390]
divsd xmm1, qword [0x10034858]
movss xmm2, dword [0x10047398]
cvtps2pd xmm0, xmm0
cvtps2pd xmm2, xmm2
mulsd xmm1, xmm0
movss xmm0, dword [0x1004738c]
movss xmm5, dword [0x10034880]
cvtps2pd xmm0, xmm0
subsd xmm2, xmm1
movss xmm1, dword [ebp - 8]
cvtps2pd xmm1, xmm1
cvtpd2ps xmm3, xmm2
divsd xmm1, qword [0x10034858]
comiss xmm3, xmm5
movss xmm2, dword [0x1004739c]
cvtps2pd xmm2, xmm2
mulsd xmm1, xmm0
movss dword [0x10047398], xmm3
subsd xmm2, xmm1
cvtpd2ps xmm1, xmm2
movsd xmm2, qword [0x10034878]
movss dword [0x1004739c], xmm1
jbe 0x10004787
cvtps2pd xmm0, xmm3
subsd xmm0, xmm2
cvtpd2ps xmm3, xmm0
movss dword [0x10047398], xmm3
xorps xmm4, xmm4
comiss xmm4, xmm3
jbe 0x100047a2
cvtps2pd xmm0, xmm3
addsd xmm0, xmm2
cvtpd2ps xmm3, xmm0
movss dword [0x10047398], xmm3
comiss xmm1, xmm5
jbe 0x100047ba
cvtps2pd xmm0, xmm1
subsd xmm0, xmm2
cvtpd2ps xmm1, xmm0
movss dword [0x1004739c], xmm1
comiss xmm4, xmm1
jbe 0x100047d2
cvtps2pd xmm0, xmm1
addsd xmm0, xmm2
cvtpd2ps xmm1, xmm0
movss dword [0x1004739c], xmm1
movss xmm0, dword [0x10047394]
lea eax, [ebp - 0x40]
sub esp, 0xc
movss dword [esp + 8], xmm1
movss dword [esp + 4], xmm3
movss dword [esp], xmm0
push eax
call fcn.1000b1b0
movss xmm1, dword [0x10034830]
mov edx, eax
sub esp, 0xc
mov dword [ebp - 0x18], 0
mov eax, dword [ebp - 0x18]
mov ecx, esp
sub esp, 0x10
movups xmm0, xmmword [edx]
movups xmmword [0x100473d4], xmm0
xorps xmm0, xmm0
unpcklps xmm0, xmm1
movq qword [ecx], xmm0
movups xmm0, xmmword [edx]
mov dword [ecx + 8], eax
mov eax, esp
movups xmmword [eax], xmm0
lea eax, [ebp - 0x2c]
push eax
call fcn.1000b050
add esp, 0x20
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
push 0xa0
movq qword [ebp - 0x20], xmm0
mov dword [ebp - 0x18], eax
call esi
bt ax, 0xf
jb 0x10004873
push 0xa1
call esi
bt ax, 0xf
jb 0x10004873
movss xmm0, dword [0x100473a0]
jmp 0x1000487b
movss xmm0, dword [0x100473a4]
cvtps2pd xmm0, xmm0
movsx eax, byte [0x100473ea]
push eax
divsd xmm0, qword [0x10034868]
cvtpd2ps xmm0, xmm0
movss dword [0x100473a8], xmm0
call esi
bt ax, 0xf
jae 0x100048ee
movss xmm1, dword [0x100473a8]
movaps xmm0, xmm1
mulss xmm0, dword [ebp - 0x20]
addss xmm0, dword [0x100473c4]
movss dword [0x100473c4], xmm0
movaps xmm0, xmm1
mulss xmm0, dword [ebp - 0x1c]
addss xmm0, dword [0x100473c8]
movss dword [0x100473c8], xmm0
movss xmm0, dword [ebp - 0x18]
mulss xmm0, xmm1
addss xmm0, dword [0x100473cc]
jmp 0x10004954
movsx eax, byte [0x100473eb]
push eax
call esi
bt ax, 0xf
jae 0x1000495c
movss xmm2, dword [0x100473a8]
movss xmm0, dword [0x100473c4]
movaps xmm1, xmm2
mulss xmm1, dword [ebp - 0x20]
subss xmm0, xmm1
movaps xmm1, xmm2
mulss xmm1, dword [ebp - 0x1c]
movss dword [0x100473c4], xmm0
movss xmm0, dword [0x100473c8]
subss xmm0, xmm1
movss xmm1, dword [ebp - 0x18]
mulss xmm1, xmm2
movss dword [0x100473c8], xmm0
movss xmm0, dword [0x100473cc]
subss xmm0, xmm1
movss dword [0x100473cc], xmm0
movsx eax, byte [0x100473ec]
push eax
call esi
bt ax, 0xf
jae 0x100049a8
movss xmm2, dword [0x100473a8]
movss xmm0, dword [0x100473c4]
movaps xmm1, xmm2
mulss xmm1, dword [ebp - 0x1c]
mulss xmm2, dword [ebp - 0x20]
subss xmm0, xmm1
addss xmm2, dword [0x100473c8]
movss dword [0x100473c4], xmm0
movss dword [0x100473c8], xmm2
jmp 0x100049f2
movsx eax, byte [0x100473ed]
push eax
call esi
bt ax, 0xf
jae 0x100049f2
movss xmm1, dword [0x100473a8]
movaps xmm0, xmm1
mulss xmm1, dword [ebp - 0x20]
mulss xmm0, dword [ebp - 0x1c]
addss xmm0, dword [0x100473c4]
movss dword [0x100473c4], xmm0
movss xmm0, dword [0x100473c8]
subss xmm0, xmm1
movss dword [0x100473c8], xmm0
movsx eax, byte [0x100473ee]
push eax
call esi
bt ax, 0xf
jae 0x10004a15
movss xmm0, dword [0x100473a8]
addss xmm0, dword [0x100473cc]
jmp 0x10004a36
movsx eax, byte [0x100473ef]
push eax
call esi
bt ax, 0xf
jae 0x10004a3e
movss xmm0, dword [0x100473cc]
subss xmm0, dword [0x100473a8]
movss dword [0x100473cc], xmm0
push 1
call edi
cmp byte [0x10047385], 0
jne 0x10004652
push 0
call dword [sym.imp.KERNEL32.dll_ExitThread]