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

Disassembly:
push 0xffffffffffffffff
push 0x5a678c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
push ecx
mov al, byte [0x8c3140]
push ebx
push esi
mov ebx, 1
test bl, al
push edi
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, ecx
jne 0x4103ec
or dword [0x8c3140], ebx
mov dword [esp + 0x18], 0
call edi
mov dword [0x8c313c], eax
mov dword [esp + 0x18], 0xffffffff
mov cl, byte [0x8c3140]
mov eax, 2
test al, cl
jne 0x410414
or dword [0x8c3140], eax
mov dword [esp + 0x18], ebx
call edi
mov dword [0x8c3138], eax
mov dword [esp + 0x18], 0xffffffff
call edi
mov ecx, dword [0x8c313c]
mov dword [esi + 4], eax
sub eax, ecx
mov ecx, eax
cmp dword [0x6fb230], ebx
mov dword [0x8c2908], ecx
jne 0x410457
mov eax, dword [0x709928]
test eax, eax
je 0x410443
mov eax, dword [0x7091a8]
test eax, eax
jne 0x410457
mov eax, dword [esi + 4]
push eax
mov ecx, 0x6fb120
call fcn.00508670
mov ecx, dword [0x8c2908]
cmp ecx, dword [esi + 0x18]
jae 0x410475
call edi
pop edi
pop esi
mov dword [0x8c314c], eax
pop ebx
mov ecx, dword [esp + 4]
mov dword fs:[0], ecx
add esp, 0x10
ret
cmp dword [0x8c3110], 0x28
jne 0x41049e
mov eax, 0xcccccccd
mul dword [0x8c290c]
shr edx, 5
mov dword [esi + 0x14], edx
mov ecx, dword [0x8c2908]
xor eax, eax
mov dword [0x8c290c], eax
jmp 0x4104a4
mov eax, dword [0x8c3110]
inc eax
mov dword [0x8c3110], eax
mov edx, dword [esi + 4]
mov dword [0x8c313c], edx
add dword [0x8c290c], ecx
xor edx, edx
mov eax, ecx
div dword [esi + 0x18]
test ecx, ecx
mov dword [esp + 0xc], ecx
fild dword [esp + 0xc]
mov dword [0x8c3134], eax
jge 0x4104d6
fadd dword [0x5b6344]
fmul dword [0x5b6340]
push ecx
mov ecx, 0x6f960c
fstp dword [esp]
call fcn.00410180
cmp dword [esi + 0x20], ebx
jne 0x410517
mov ecx, 0x709930
call fcn.004d0280
mov ecx, 0x709128
call fcn.004125f0
mov ecx, 0x8170a8
call fcn.00410b10
mov ecx, 0x816e40
call fcn.00423d20
call edi
mov ecx, dword [esi + 4]
mov dword [0x8c3130], eax
sub eax, ecx
mov dword [esi + 8], eax
cmp dword [esi + 0x1c], ebx
jne 0x41056c
mov ecx, 0x8170a8
call fcn.00410a70
mov dword [0x5f0498], eax
mov eax, dword [0x817068]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x88]
mov ecx, 0x816e40
call fcn.00423cf0
call fcn.00506020
mov ecx, eax
call fcn.00505e00
mov eax, dword [0x817068]
mov edx, dword [eax]
push eax
call dword [edx + 0x8c]
call edi
mov ecx, dword [0x8c3130]
mov dword [0x8c312c], eax
sub eax, ecx
mov dword [esi + 0xc], eax
cmp dword [esi + 0x20], ebx
jne 0x41058d
mov ecx, 0x816e40
call fcn.0040c860
mov ecx, 0x8170a8
call fcn.00411c20
call edi
sub eax, dword [0x8c312c]
mov dword [esi + 0x10], eax
call edi
push 0x2c
mov dword [0x8c314c], eax
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jge 0x4105f6
call fcn.00435cf0
mov ecx, dword [0x8c3144]
test ecx, ecx
jne 0x4105f6
mov ecx, dword [0x8170ac]
test ecx, ecx
je 0x4105f6
test eax, eax
mov esi, dword [ecx]
mov ecx, dword [0x60d19c]
je 0x4105e2
push 0x1b3
jmp 0x4105e7
push 0x1b4
call fcn.004fef50
mov ecx, dword [0x8170ac]
push eax
call dword [esi + 0x7c]
mov ecx, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x10
ret