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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xc
push ebx
mov bl, byte [ebp + 8]
mov bh, byte [ebp + 0xc]
push esi
push edi
mov esi, ecx
test bl, bl
jne 0x44ecb8
test bh, bh
jne 0x44ecb8
cmp byte [ebp + 0x10], bh
jne 0x44ecb8
cmp byte [ebp + 0x14], bh
jne 0x44ecb8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, 0x2d
cmp eax, dword [esi + 0x15c]
jb 0x44f076
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
push 0x10
call edi
shr eax, 0xf
and eax, 0xffffff01
mov dword [ebp + 0xc], eax
test bl, bl
jne 0x44ed35
push 0x25
call edi
mov ecx, 0x8000
test cx, ax
jne 0x44ed35
mov ecx, 0x1b5
call fcn.0056d1a0
cmp eax, 0xffffffff
je 0x44ed2e
mov edi, dword [0x77e31c]
mov edx, 1
mov ecx, eax
shl edx, cl
mov dword [ebp + 8], edx
xor edx, edx
test edi, edi
je 0x44ed1c
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp eax, edi
je 0x44ed1c
nop
mov ecx, dword [eax]
add eax, 4
or edx, dword [ecx + 8]
cmp eax, edi
jne 0x44ed10
mov eax, dword [ebp + 8]
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
test eax, edx
setne al
test al, al
jne 0x44ed35
xor al, al
mov byte [ebp + 0xb], al
jmp 0x44ed39
mov byte [ebp + 0xb], 1
test bh, bh
jne 0x44ed91
push 0x27
call edi
mov ecx, 0x8000
test cx, ax
jne 0x44ed91
mov ecx, 0x1b7
call fcn.0056d1a0
cmp eax, 0xffffffff
je 0x44ed8d
mov edi, dword [0x77e31c]
mov ebx, 1
mov ecx, eax
shl ebx, cl
xor edx, edx
test edi, edi
je 0x44ed84
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp eax, edi
je 0x44ed84
mov ecx, dword [eax]
add eax, 4
or edx, dword [ecx + 8]
cmp eax, edi
jne 0x44ed78
test ebx, edx
setne al
test al, al
jne 0x44ed91
xor bh, bh
jmp 0x44ed93
mov bh, 1
cmp byte [ebp + 0x10], 0
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
jne 0x44ee00
push 0x26
call edi
mov ecx, 0x8000
test cx, ax
jne 0x44ee00
mov ecx, 0x1b6
call fcn.0056d1a0
cmp eax, 0xffffffff
je 0x44edfc
mov edi, dword [0x77e31c]
mov edx, 1
mov ecx, eax
shl edx, cl
mov dword [ebp + 0x10], edx
xor edx, edx
test edi, edi
je 0x44edec
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp eax, edi
je 0x44edec
lea ecx, [ecx]
mov ecx, dword [eax]
add eax, 4
or edx, dword [ecx + 8]
cmp eax, edi
jne 0x44ede0
test dword [ebp + 0x10], edx
mov edi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
setne al
test al, al
jne 0x44ee00
xor bl, bl
jmp 0x44ee02
mov bl, 1
cmp byte [ebp + 0x14], 0
jne 0x44ee62
push 0x28
call edi
mov ecx, 0x8000
test cx, ax
jne 0x44ee62
mov ecx, 0x1b8
call fcn.0056d1a0
cmp eax, 0xffffffff
je 0x44ee5e
mov edi, dword [0x77e31c]
mov ecx, eax
mov eax, 1
shl eax, cl
xor edx, edx
mov dword [ebp + 0x10], eax
test edi, edi
je 0x44ee55
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp eax, edi
je 0x44ee52
mov ecx, dword [eax]
add eax, 4
or edx, dword [ecx + 8]
cmp eax, edi
jne 0x44ee46
mov eax, dword [ebp + 0x10]
test eax, edx
setne al
test al, al
jne 0x44ee62
xor cl, cl
jmp 0x44ee64
mov cl, 1
mov dl, byte [ebp + 0xb]
xor edi, edi
test dl, dl
jne 0x44ee79
test bh, bh
jne 0x44ee79
test bl, bl
jne 0x44ee79
test cl, cl
je 0x44ee8e
mov edi, 1
test bh, bh
jne 0x44eea9
test dl, dl
jne 0x44eea9
test bl, bl
jne 0x44eea9
test cl, cl
jne 0x44eea9
mov byte [esi + 0x158], 0
mov dword [esi + 0x154], 0
mov dword [esi + 0x150], 0
cmp byte [ebp + 0xc], 0
jne 0x44ef1d
test bh, bh
jne 0x44eeca
test dl, dl
je 0x44eee5
cmp dword [esi + 0x150], 0
jle 0x44eeca
mov dword [esi + 0x150], 0
test dl, dl
jne 0x44eee5
test bh, bh
je 0x44eee5
cmp dword [esi + 0x150], 0
jge 0x44eee5
mov dword [esi + 0x150], 0
test cl, cl
jne 0x44ef00
test bl, bl
je 0x44ef55
cmp dword [esi + 0x154], 0
jle 0x44ef00
mov dword [esi + 0x154], 0
test bl, bl
jne 0x44ef55
test cl, cl
je 0x44ef55
cmp dword [esi + 0x154], 0
jge 0x44ef55
mov dword [esi + 0x154], 0
jmp 0x44ef55
test dl, dl
je 0x44ef2b
mov dword [esi + 0x150], 0xffffffd8
test bh, bh
je 0x44ef39
mov dword [esi + 0x150], 0x28
test bl, bl
je 0x44ef47
mov dword [esi + 0x154], 0xffffffd8
test cl, cl
je 0x44ef55
mov dword [esi + 0x154], 0x28
test bh, bh
jne 0x44ef6b
test dl, dl
jne 0x44ef6f
test bl, bl
jne 0x44efb9
test cl, cl
je 0x44f033
jmp 0x44efb9
test dl, dl
je 0x44ef8e
mov eax, dword [esi + 0x150]
cmp eax, 0xffffffe2
jle 0x44ef8e
test eax, eax
je 0x44ef83
add eax, 0xfffffffe
jmp 0x44ef88
mov eax, 0xfffffffe
mov dword [esi + 0x150], eax
test bh, bh
je 0x44efb1
mov eax, dword [esi + 0x150]
cmp eax, 0x1e
jge 0x44efb1
test eax, eax
je 0x44efa6
add eax, 2
jmp 0x44efab
mov eax, 2
mov dword [esi + 0x150], eax
test dl, dl
jne 0x44efcf
test bh, bh
jne 0x44efcf
mov eax, dword [esi + 0x150]
test eax, eax
jle 0x44efc6
dec eax
jmp 0x44efc9
jns 0x44efcf
inc eax
mov dword [esi + 0x150], eax
test bl, bl
je 0x44eff2
mov eax, dword [esi + 0x154]
cmp eax, 0xffffffe2
jle 0x44eff2
test eax, eax
je 0x44efe7
add eax, 0xfffffffe
jmp 0x44efec
mov eax, 0xfffffffe
mov dword [esi + 0x154], eax
test cl, cl
je 0x44f015
mov eax, dword [esi + 0x154]
cmp eax, 0x1e
jge 0x44f015
test eax, eax
je 0x44f00a
add eax, 2
jmp 0x44f00f
mov eax, 2
mov dword [esi + 0x154], eax
test bl, bl
jne 0x44f033
test cl, cl
jne 0x44f033
mov eax, dword [esi + 0x154]
test eax, eax
jle 0x44f02a
dec eax
jmp 0x44f02d
jns 0x44f033
inc eax
mov dword [esi + 0x154], eax
test edi, edi
je 0x44f06a
lea eax, [ebp - 8]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x44f063
mov eax, dword [esi + 0x154]
sar eax, 1
add eax, dword [ebp - 4]
push eax
mov eax, dword [esi + 0x150]
sar eax, 1
add eax, dword [ebp - 8]
push eax
call dword [sym.imp.USER32.dll_SetCursorPos]
mov byte [esi + 0x158], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x15c], eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10