Function at 0x10015000
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling

Disassembly:
cmp dword [0x100916b4], 0
je 0x10015293
mov ecx, dword [0x10091494]
sub ecx, dword [0x100934b0]
add ecx, dword [0x100935f8]
mov eax, dword [0x100936a4]
mov ecx, dword [ecx + eax]
call fcn.10006ac0
test eax, eax
jle 0x10015293
mov eax, dword [0x10093834]
cmp dword [eax], 1
jne 0x10015293
mov eax, dword [0x10091758]
cmp dword [eax], 0
je 0x10015293
mov cl, byte [0x10091574]
mov al, byte [0x10091575]
test cl, cl
je 0x10015081
test al, al
jne 0x10015081
mov eax, dword [0x10091320]
mov byte [0x10091575], 1
movss xmm0, dword [eax + 0x11c]
movss dword [0x10091468], xmm0
jmp 0x10015085
cmp al, 1
jne 0x1001508c
mov byte [0x100915bf], 1
test cl, cl
jne 0x1001509c
mov byte [0x10091575], cl
mov byte [0x100915bf], cl
mov eax, dword [0x100916b4]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
cmp eax, 1
jne 0x1001517b
push 0x20
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x1001510d
cmp byte [0x10094140], 0
je 0x100150e5
cmp dword [0x10094144], 0
je 0x10015114
call esi
mov ecx, dword [0x10094144]
add ecx, 0xa
cmp ecx, eax
ja 0x10015114
mov byte [0x10094140], 1
call esi
movss xmm0, dword [0x10091468]
addss xmm0, dword [0x1008a58c]
mov dword [0x10094144], eax
movss dword [0x10091468], xmm0
jmp 0x10015114
mov byte [0x10094140], 0
push 0xa2
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015238
cmp byte [0x10094550], 0
je 0x10015150
cmp dword [0x10094554], 0
je 0x1001523f
call esi
mov ecx, dword [0x10094554]
add ecx, 0xa
cmp ecx, eax
ja 0x1001523f
mov byte [0x10094550], 1
call esi
movss xmm0, dword [0x10091468]
subss xmm0, dword [0x1008a58c]
mov dword [0x10094554], eax
movss dword [0x10091468], xmm0
jmp 0x1001523f
cmp eax, 2
jne 0x1001523f
push 0x20
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x100151d9
cmp byte [0x10094140], 0
je 0x100151b1
cmp dword [0x10094144], 0
je 0x100151e0
call esi
mov ecx, dword [0x10094144]
add ecx, 0xa
cmp ecx, eax
ja 0x100151e0
mov byte [0x10094140], 1
call esi
movss xmm0, dword [0x10091468]
addss xmm0, dword [0x1008a588]
mov dword [0x10094144], eax
movss dword [0x10091468], xmm0
jmp 0x100151e0
mov byte [0x10094140], 0
push 0xa2
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015238
cmp byte [0x10094550], 0
je 0x10015210
cmp dword [0x10094554], 0
je 0x1001523f
call esi
mov ecx, dword [0x10094554]
add ecx, 0xa
cmp ecx, eax
ja 0x1001523f
mov byte [0x10094550], 1
call esi
movss xmm0, dword [0x10091468]
subss xmm0, dword [0x1008a588]
mov dword [0x10094554], eax
movss dword [0x10091468], xmm0
jmp 0x1001523f
mov byte [0x10094550], 0
push 0x45
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x1001528a
cmp byte [0x10094268], 0
je 0x1001526c
cmp dword [0x1009426c], 0
je 0x10015291
call esi
mov ecx, dword [0x1009426c]
add ecx, 0x64
cmp ecx, eax
ja 0x10015291
mov byte [0x10094268], 1
call esi
cmp byte [0x10091574], 0
mov dword [0x1009426c], eax
sete byte [0x10091574]
jmp 0x10015291
mov byte [0x10094268], 0
pop edi
pop esi
mov eax, dword [0x10093834]
mov eax, dword [eax]
cmp eax, 5
je 0x100152c8
cmp eax, 4
je 0x100152c8
mov ecx, dword [0x10091494]
sub ecx, dword [0x100934b0]
add ecx, dword [0x100935f8]
mov eax, dword [0x100936a4]
mov ecx, dword [ecx + eax]
call fcn.10006ac0
cmp eax, 1
jge 0x100152cf
mov byte [0x10091574], 0
ret