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

Disassembly:
cmp dword [0x10092a4c], 0
je 0x10015ee3
mov ecx, dword [0x1009283c]
sub ecx, dword [0x10094840]
add ecx, dword [0x1009497c]
mov eax, dword [0x10094a28]
mov ecx, dword [ecx + eax]
call fcn.10006ae0
test eax, eax
jle 0x10015ee3
mov eax, dword [0x10094ba0]
cmp dword [eax], 1
jne 0x10015ee3
mov eax, dword [0x10092ae4]
cmp dword [eax], 0
je 0x10015ee3
mov cl, byte [0x100925dc]
mov al, byte [0x100925dd]
test cl, cl
je 0x10015cd1
test al, al
jne 0x10015cd1
mov eax, dword [0x10091b00]
mov byte [0x100925dd], 1
movss xmm0, dword [eax + 0x11c]
movss dword [0x10092814], xmm0
jmp 0x10015cd5
cmp al, 1
jne 0x10015cdc
mov byte [0x1009295c], 1
test cl, cl
jne 0x10015cec
mov byte [0x100925dd], cl
mov byte [0x1009295c], cl
mov eax, dword [0x10092a4c]
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
push edi
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
cmp eax, 1
jne 0x10015dcb
push 0x20
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015d5d
cmp byte [0x100954b0], 0
je 0x10015d35
cmp dword [0x100954b4], 0
je 0x10015d64
call esi
mov ecx, dword [0x100954b4]
add ecx, 0xa
cmp ecx, eax
ja 0x10015d64
mov byte [0x100954b0], 1
call esi
movss xmm0, dword [0x10092814]
addss xmm0, dword [0x1008b54c]
mov dword [0x100954b4], eax
movss dword [0x10092814], xmm0
jmp 0x10015d64
mov byte [0x100954b0], 0
push 0xa2
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015e88
cmp byte [0x100958c0], 0
je 0x10015da0
cmp dword [0x100958c4], 0
je 0x10015e8f
call esi
mov ecx, dword [0x100958c4]
add ecx, 0xa
cmp ecx, eax
ja 0x10015e8f
mov byte [0x100958c0], 1
call esi
movss xmm0, dword [0x10092814]
subss xmm0, dword [0x1008b54c]
mov dword [0x100958c4], eax
movss dword [0x10092814], xmm0
jmp 0x10015e8f
cmp eax, 2
jne 0x10015e8f
push 0x20
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015e29
cmp byte [0x100954b0], 0
je 0x10015e01
cmp dword [0x100954b4], 0
je 0x10015e30
call esi
mov ecx, dword [0x100954b4]
add ecx, 0xa
cmp ecx, eax
ja 0x10015e30
mov byte [0x100954b0], 1
call esi
movss xmm0, dword [0x10092814]
addss xmm0, dword [0x1008b548]
mov dword [0x100954b4], eax
movss dword [0x10092814], xmm0
jmp 0x10015e30
mov byte [0x100954b0], 0
push 0xa2
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015e88
cmp byte [0x100958c0], 0
je 0x10015e60
cmp dword [0x100958c4], 0
je 0x10015e8f
call esi
mov ecx, dword [0x100958c4]
add ecx, 0xa
cmp ecx, eax
ja 0x10015e8f
mov byte [0x100958c0], 1
call esi
movss xmm0, dword [0x10092814]
subss xmm0, dword [0x1008b548]
mov dword [0x100958c4], eax
movss dword [0x10092814], xmm0
jmp 0x10015e8f
mov byte [0x100958c0], 0
push 0x45
call edi
cwde
shr eax, 0x10
test eax, eax
je 0x10015eda
cmp byte [0x100955d8], 0
je 0x10015ebc
cmp dword [0x100955dc], 0
je 0x10015ee1
call esi
mov ecx, dword [0x100955dc]
add ecx, 0x64
cmp ecx, eax
ja 0x10015ee1
mov byte [0x100955d8], 1
call esi
cmp byte [0x100925dc], 0
mov dword [0x100955dc], eax
sete byte [0x100925dc]
jmp 0x10015ee1
mov byte [0x100955d8], 0
pop edi
pop esi
mov eax, dword [0x10094ba0]
mov eax, dword [eax]
cmp eax, 5
je 0x10015f18
cmp eax, 4
je 0x10015f18
mov ecx, dword [0x1009283c]
sub ecx, dword [0x10094840]
add ecx, dword [0x1009497c]
mov eax, dword [0x10094a28]
mov ecx, dword [ecx + eax]
call fcn.10006ae0
cmp eax, 1
jge 0x10015f1f
mov byte [0x100925dc], 0
ret