Function at 0x1000fa60
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword [0x1015eee4]
sub esp, 8
push esi
push edi
mov edi, ecx
mov ecx, dword [eax]
mov eax, dword [ecx + 0x25c]
cmp eax, 9
je 0x1000fd57
cmp eax, 8
je 0x1000fd57
call fcn.1000e400
mov eax, dword [eax]
mov dword [0x101256a0], eax
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e720
movss xmm0, dword [eax + 8]
mov eax, dword [0x1015eee4]
movss dword [0x101256a8], xmm0
mov ecx, dword [eax]
call fcn.1000e260
movss xmm0, dword [eax]
movss dword [0x101236bc], xmm0
movss xmm0, dword [eax + 4]
movss dword [0x101236c0], xmm0
movss xmm0, dword [eax + 8]
mov eax, dword [0x1015eee4]
movss dword [0x101236c4], xmm0
mov ecx, dword [eax]
call fcn.1000e720
push dword [0x1015ef8c]
movss xmm0, dword [eax]
movss dword [0x101236a4], xmm0
movss xmm0, dword [eax + 4]
movss dword [0x101236a8], xmm0
movss xmm0, dword [eax + 8]
movss dword [0x101236ac], xmm0
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
je 0x1000fbbb
cmp byte [0x1015bcf8], 0
je 0x1000fbbb
cmp byte [0x10125699], 0
mov eax, dword [0x101256ac]
mov dword [edi + 0x30], eax
je 0x1000fbbb
movss xmm1, dword [0x1015b780]
lea eax, [edi + 0x10]
movss xmm0, dword [0x1015b77c]
lea ecx, [edi + 0xc]
addss xmm1, dword [0x1015b774]
movss xmm2, dword [0x1015b784]
addss xmm0, dword [0x1015b770]
addss xmm2, dword [0x1015b778]
movss dword [eax], xmm1
lea eax, [edi + 0x14]
movss dword [edi + 0xc], xmm0
movss dword [eax], xmm2
call fcn.1000a040
lea ecx, [edi + 0xc]
call fcn.1000a100
mov eax, dword [edi + 0xc]
mov dword [edi + 0xc], eax
movss xmm0, dword [0x101236b0]
movss dword [edi + 0x28], xmm0
movss xmm0, dword [0x101236b4]
movss dword [edi + 0x24], xmm0
mov ecx, dword [0x1015b830]
push str.sv_gravity
mov eax, dword [ecx]
mov eax, dword [eax + 0x44]
call eax
mov ecx, eax
mov edx, dword [eax]
mov eax, dword [edx + 0x30]
call eax
fmul dword [0x100e04a8]
mov eax, dword [0x1015b820]
mov ecx, dword [0x1012535c]
fstp dword [esp + 8]
movss xmm0, dword [esp + 8]
mulss xmm0, dword [eax + 0x20]
mov eax, dword fs:[0x2c]
movss dword [0x101256a4], xmm0
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1015f420]
cmp eax, dword [ecx + 4]
jle 0x1000fc47
push 0x1015f420
call fcn.10079ad7
add esp, 4
cmp dword [0x1015f420], 0xffffffff
jne 0x1000fc47
movss xmm0, dword [0x101256a8]
push 0x1015f420
movss dword [0x1015f42c], xmm0
call fcn.10079a86
add esp, 4
movss xmm0, dword [0x101256a4]
xorps xmm0, xmmword [0x100e0950]
comiss xmm0, dword [0x1015f42c]
jbe 0x1000fcc1
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e720
push ecx
fld dword [eax + 8]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
fstp dword [esp + 0x10]
fld dword [0x101256a4]
fstp dword [esp]
call sub.api_ms_win_crt_math_l1_1_0.dll_roundf
movss xmm0, dword [esp + 0x10]
add esp, 4
fstp dword [esp + 8]
movss xmm1, dword [esp + 8]
xorps xmm1, xmmword [0x100e0950]
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jp 0x1000fcc1
mov ecx, dword [0x1015eee4]
mov eax, dword [ecx]
cmp dword [eax + 0x25c], 9
je 0x1000fcc7
mov al, 1
jmp 0x1000fcc9
mov ecx, dword [0x1015eee4]
xor al, al
movss xmm0, dword [0x101256a8]
mov ecx, dword [ecx]
mov byte [0x1015bcf8], al
movss dword [0x1015f42c], xmm0
call fcn.1000e400
cmp byte [0x1015bd04], 0
je 0x1000fd03
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e400
test byte [eax], 1
jne 0x1000fd03
or dword [edi + 0x30], 4
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e400
test byte [eax], 1
je 0x1000fd32
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e720
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100e03e8]
lahf
test ah, 0x44
jnp 0x1000fd50
mov eax, dword [0x1015eee4]
mov ecx, dword [eax]
call fcn.1000e720
movss xmm0, dword [eax + 8]
ucomiss xmm0, dword [0x100e06c0]
lahf
test ah, 0x44
jnp 0x1000fd57
mov byte [0x1015bd04], 0
pop edi
pop esi
mov esp, ebp
pop ebp
ret