Function at 0x10013b00
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
mov eax, dword fs:[0x2c]
sub esp, 0x80
mov ecx, dword [0x100fbfac]
push ebx
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x1017df04]
mov ebx, dword [ebp + 0x10]
push esi
push edi
cmp eax, dword [ecx + 4]
jle 0x10013b56
push 0x1017df04
call fcn.100d136a
add esp, 4
cmp dword [0x1017df04], 0xffffffff
jne 0x10013b56
mov eax, dword [ebx + 8]
push 0x1017df04
mov dword [0x1017df08], eax
call fcn.100d1320
add esp, 4
cmp byte [0x100f9060], 0
je 0x10014070
mov esi, dword [ebp + 0xc]
mov ecx, esi
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x30], 0
mov eax, dword [esi]
mov dword [ebp - 0x34], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x20], 0x7f7fffff
mov dword [ebp - 0x1c], 0x7f7fffff
mov dword [ebp - 0x18], 0xffffffff
mov byte [ebp - 0x14], 0
mov eax, dword [eax + 0x5e4]
call eax
mov ecx, dword [0x100f9068]
mov edx, eax
mov dword [ebp - 8], edx
cmp ecx, 1
jne 0x10013bda
mov al, byte [ebx + 0x24]
and al, cl
jmp 0x10013bf7
test ecx, ecx
jne 0x10013be3
lea eax, [ecx + 1]
jmp 0x10013bf2
push ecx
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edx, dword [ebp - 8]
and eax, 0x8000
test eax, eax
setne al
mov byte [ebp + 0x13], al
test al, al
je 0x10013c13
cmp byte [0x100f9148], 0
je 0x10013c13
cmp edx, 0x12
jne 0x10013c13
or dword [ebx + 0x24], 0x800
push esi
push dword [ebp + 8]
call fcn.10012170
test al, al
je 0x10014070
mov eax, dword [0x100f9110]
sub eax, 0
je 0x10013c45
sub eax, 1
je 0x10013c3c
mov dword [ebp - 0xc], 0
jmp 0x10013c4c
mov dword [ebp - 0xc], 2
jmp 0x10013c4c
mov dword [ebp - 0xc], 1
mov ecx, dword [0x1017def8]
lea eax, [ebp - 0xc]
sub ecx, dword [0x1017def4]
push eax
mov eax, 0x2aaaaaab
imul ecx
mov ecx, dword [0x1017def4]
sar edx, 3
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x1017def8]
push eax
call fcn.1000f120
mov eax, dword [0x1017def8]
add esp, 8
mov esi, dword [0x1017def4]
mov dword [ebp - 0x10], eax
cmp esi, eax
je 0x10014070
mov edi, dword [ebp + 8]
nop dword [eax + eax]
push esi
push ecx
push edi
call fcn.10013160
test al, al
jne 0x10013cbd
add esi, 0x30
cmp esi, dword [ebp - 0x10]
jne 0x10013ca0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp byte [ebp + 0x13], 0
mov eax, dword [esi]
mov dword [ebp - 0x40], eax
mov eax, dword [esi + 4]
mov dword [ebp - 0x3c], eax
movss xmm0, dword [esi + 8]
movss dword [ebp - 0x38], xmm0
movss xmm0, dword [esi + 0xc]
movss dword [ebp - 0x34], xmm0
movss xmm0, dword [esi + 0x10]
movss dword [ebp - 0x30], xmm0
movss xmm0, dword [esi + 0x14]
movss dword [ebp - 0x2c], xmm0
movss xmm0, dword [esi + 0x18]
movss dword [ebp - 0x28], xmm0
movss xmm0, dword [esi + 0x1c]
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [esi + 0x20]
movss dword [ebp - 0x20], xmm0
movss xmm0, dword [esi + 0x24]
movss dword [ebp - 0x1c], xmm0
mov eax, dword [esi + 0x28]
mov dword [ebp - 0x18], eax
mov al, byte [esi + 0x2c]
mov byte [ebp - 0x14], al
je 0x10014070
cmp dword [ebp - 8], 0x3d
je 0x10013d8e
mov ecx, edi
call fcn.10010c10
mov esi, dword [ebp + 0xc]
cmp eax, 2
jne 0x10013d91
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x51c]
call eax
test eax, eax
jne 0x10013d91
mov ecx, edi
call fcn.1000e8d0
shr eax, 1
and al, 1
cmp byte [0x100f90f8], 0
je 0x10013d7b
test al, al
jne 0x10013d7b
or dword [ebx + 0x24], 0x800
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
cmp byte [0x100f9130], 0
je 0x10013d91
test al, al
je 0x10014070
jmp 0x10013d91
mov esi, dword [ebp + 0xc]
cmp byte [0x100f9088], 0
je 0x10013dc1
cmp dword [0x100fb360], 0
je 0x10013dc1
cmp dword [0x100fb364], 0
je 0x10013dc1
push dword [0x100f9090]
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jne 0x10014070
mov ecx, dword [ebp - 0x40]
add ecx, 8
mov eax, dword [ecx]
mov eax, dword [eax + 0x24]
call eax
cmp dword [0x100f9150], 2
mov dword [0x100fb358], eax
sete al
mov byte [0x100fb377], 1
cmp byte [0x100f9158], 0
mov byte [0x100fb374], al
je 0x10013e04
cmp byte [0x100fb379], 0
je 0x10013e04
mov byte [0x100fb374], 0
jmp 0x10013e2f
test al, al
je 0x10013e2f
movss xmm0, dword [ebp - 0x38]
movss dword [0x100fb394], xmm0
movss xmm0, dword [ebp - 0x34]
movss dword [0x100fb398], xmm0
movss xmm0, dword [ebp - 0x30]
movss dword [0x100fb39c], xmm0
lea eax, [ebp - 0x2c]
push eax
push ebx
call fcn.100132d0
lea eax, [ebp - 0x40]
push eax
push ebx
push esi
push edi
call fcn.10013510
test al, al
je 0x10013fbb
cmp dword [ebp - 8], 0x12
mov ecx, dword [ebx + 0x24]
jne 0x10013e5f
or ecx, 0x800
mov dword [ebx + 0x24], ecx
mov edx, dword [0x100fb35c]
mov eax, ecx
cmp edx, 0x8c
je 0x10013e77
cmp edx, 0x43e
jne 0x10013e7f
or eax, 0x800
mov dword [ebx + 0x24], eax
or eax, 1
mov dword [ebx + 0x24], eax
mov ecx, eax
cmp byte [0x100f9078], 0
je 0x10013eb5
cmp byte [0x100f9080], 0
je 0x10013eb5
cmp dword [0x100fb364], 0
jne 0x10013eb5
cmp dword [0x100fb360], 0
jne 0x10013eb5
mov byte [0x100fb37e], 1
mov ecx, dword [ebx + 0x24]
cmp byte [0x100fb373], 0
je 0x10013ecd
cmp byte [0x100fb371], 0
jne 0x10013ecd
and ecx, 0xfffffffe
mov dword [ebx + 0x24], ecx
mov eax, dword [0x100f90f0]
test eax, eax
je 0x10013fbb
cmp dword [ebp - 8], 0x12
jne 0x10013fbb
cmp eax, 1
jne 0x10013f49
mov eax, dword [edi]
mov ecx, edi
mov eax, dword [eax + 0x24]
call eax
mov esi, dword [ebp - 0x40]
mov edi, eax
mov ecx, dword [esi]
mov edx, dword [ecx + 0x24]
mov ecx, esi
call edx
movss xmm2, dword [edi]
movss xmm0, dword [edi + 4]
movss xmm1, dword [edi + 8]
subss xmm0, dword [eax + 4]
subss xmm2, dword [eax]
subss xmm1, dword [eax + 8]
mulss xmm0, xmm0
mulss xmm2, xmm2
mulss xmm1, xmm1
addss xmm0, xmm2
addss xmm0, xmm1
call fcn.1000fd60
comiss xmm0, dword [0x100f0870]
seta al
test al, al
je 0x10013fbb
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
mov ecx, esi
call fcn.10011ab0
xorps xmm1, xmm1
ucomiss xmm0, xmm1
lahf
test ah, 0x44
jnp 0x10013fbb
mov ecx, edi
call fcn.100108f0
mov ecx, esi
movd xmm0, eax
mov eax, dword [0x100fc33c]
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [eax + 0x1c]
movss dword [ebp + 0xc], xmm0
call fcn.10011700
movss xmm1, dword [ebp + 0xc]
lea eax, [ebp - 0x80]
subss xmm1, xmm0
mov ecx, esi
push eax
movss dword [ebp + 0xc], xmm1
call fcn.10011850
cmp dword [eax + 4], 1
jle 0x10013fa9
movss xmm0, dword [0x100f0604]
jmp 0x10013fb1
movss xmm0, dword [0x100f06c4]
comiss xmm0, dword [ebp + 0xc]
jb 0x10013fbb
and dword [ebx + 0x24], 0xfffffffe
test byte [ebx + 0x24], 1
je 0x10013ff8
cmp byte [0x100fb371], 0
je 0x10013ff8
cmp byte [0x100f9098], 0
mov cl, 1
mov byte [0x100fb37b], cl
je 0x10013ffa
mov esi, dword [ebx + 8]
mov eax, esi
sub eax, dword [0x1017df08]
cdq
xor eax, edx
sub eax, edx
cmp eax, 1
jle 0x10013ffa
mov dword [0x1017df08], esi
jmp 0x10013ffa
xor cl, cl
cmp byte [0x100f9070], 0
je 0x10014070
cmp dword [ebp - 0x3c], 1
jne 0x10014070
test cl, cl
je 0x10014070
mov eax, dword [0x100fc388]
mov ecx, dword [eax + 0x1c]
mov eax, dword [0x100fc38c]
movss xmm0, dword [ecx + 0x2c]
mov eax, dword [eax + 0x1c]
mov ecx, dword [ebp - 0x40]
divss xmm0, dword [eax + 0x2c]
mov eax, dword [0x100fc380]
mov eax, dword [eax + 0x1c]
movss dword [ebp + 8], xmm0
movss xmm0, dword [eax + 0x2c]
movss dword [ebp + 0xc], xmm0
call fcn.10010a20
mov eax, dword [0x100fc33c]
movaps xmm1, xmm0
movss xmm0, dword [ebp + 0xc]
maxss xmm0, dword [ebp + 8]
addss xmm1, xmm0
divss xmm1, dword [eax + 0x1c]
addss xmm1, dword [0x100f0654]
cvttss2si eax, xmm1
mov dword [ebx + 8], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc