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

Disassembly:
sub esp, 0x24
or al, byte [esp + 0x30]
push ebx
push ebp
mov ebp, dword [esp + 0x3c]
push esi
mov byte [esp + 0xc], al
mov al, byte [esp + 0x34]
push edi
call fcn.0043de03
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
xor ebx, ebx
inc ebx
cmp byte [esp + 0x38], 0x4c
mov byte [esp + 0x44], al
mov edi, 0x8000
jne 0x413de4
cmp dword [0x45f458], ebx
jne 0x413de4
cmp byte [0x45c8ec], 0
jne 0x413de4
cmp dword [esp + 0x50], 0
jne 0x413de4
cmp byte [0x460217], 0
je 0x413de4
test byte [esp + 0x10], 0xc0
jne 0x413de4
test byte [0x45ffe9], 0xc0
je 0x413de4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x45ffe0]
cmp eax, 0x32
jae 0x413de4
test ebp, ebp
jle 0x414023
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [0x45fb18]
jne 0x413de4
push 0x5b
call esi
test di, ax
jne 0x413dc8
push 0x5c
call esi
test di, ax
je 0x413de4
and dword [0x45b0d4], 0
push ebx
push 0x8000012f
call fcn.0040d9dd
pop ecx
pop ecx
mov dword [0x45b0d4], ebx
jmp 0x413db6
test ebp, ebp
jle 0x414023
mov dword [esp + 0x14], ebp
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
cmp dword [0x45f458], 0
jne 0x413e53
mov ebx, dword [sym.imp.KERNEL32.dll_GetTickCount]
call ebx
sub eax, dword [0x460024]
mov ecx, dword [0x45b170]
cmp eax, dword [ecx + 0xb0]
jbe 0x413e53
xor eax, eax
push eax
push eax
push eax
push eax
lea eax, [esp + 0x28]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x413e4c
and dword [0x45b0d4], 0
push 1
push 0xffffffffffffffff
call fcn.0040d9dd
pop ecx
pop ecx
mov dword [0x45b0d4], 1
call ebx
mov dword [0x460024], eax
cmp byte [esp + 0x4c], 0
jne 0x413fc1
cmp dword [0x45f458], 0
je 0x413e71
mov al, byte [0x45c8f8]
jmp 0x413fa7
cmp dword [0x45db00], 0
je 0x413e84
mov al, byte [0x45d9e8]
jmp 0x413fa7
xor bl, bl
cmp byte [0x460211], bl
jne 0x413f02
cmp byte [0x460212], bl
jne 0x413f02
push 0xa0
call esi
test di, ax
je 0x413ea5
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x413eb4
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x413ec3
or bl, 1
push 0xa3
call esi
test di, ax
je 0x413ed2
or bl, 2
push 0xa4
call esi
test di, ax
je 0x413ee1
or bl, 4
push 0xa5
call esi
test di, ax
je 0x413ef0
or bl, 8
push 0x5b
call esi
test di, ax
je 0x413efc
or bl, 0x40
push 0x5c
call esi
jmp 0x413f62
push 0x10
call esi
test di, ax
jne 0x413f14
push 0x10
call ebp
test di, ax
je 0x413f16
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x413f28
push 0x11
call ebp
test di, ax
je 0x413f2b
or bl, 1
push 0x12
call esi
test di, ax
jne 0x413f3d
push 0x12
call ebp
test di, ax
je 0x413f40
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x413f52
push 0x5b
call ebp
test di, ax
je 0x413f55
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x413f67
push 0x5c
call ebp
test di, ax
je 0x413f6a
or bl, 0x80
cmp dword [0x45db00], 0
je 0x413fa3
mov al, bl
not al
and al, byte [0x45d9e8]
je 0x413fa3
not al
and byte [0x45d9ea], al
and byte [0x45d9e8], al
and byte [0x45d9e9], al
mov cl, byte [0x45d9ea]
mov eax, 0x45d9f0
call fcn.00411ad2
xor eax, eax
mov al, bl
push 1
push 0
push dword [esp + 0x58]
push eax
push dword [esp + 0x20]
mov eax, 0xffc3d44f
call fcn.00412104
add esp, 0x14
cmp byte [esp + 0x44], 0
je 0x413ffa
cmp dword [esp + 0x50], 0
jne 0x413ffa
push dword [esp + 0x5c]
mov eax, dword [0x45b170]
movzx eax, byte [eax + 0xc7]
push dword [esp + 0x4c]
push eax
push dword [esp + 0x64]
xor eax, eax
push dword [esp + 0x64]
inc eax
push dword [esp + 0x4c]
call fcn.00412e12
jmp 0x414016
push 0xffc3d44d
push 1
push dword [esp + 0x58]
push dword [esp + 0x48]
push dword [esp + 0x48]
push dword [esp + 0x5c]
call fcn.00412730
add esp, 0x18
dec dword [esp + 0x14]
jne 0x413df6
cmp byte [esp + 0x4c], 0
jne 0x4141ab
cmp dword [0x45f458], 0
je 0x414042
mov cl, byte [0x45c8f8]
jmp 0x41417d
cmp dword [0x45db00], 0
je 0x414056
mov cl, byte [0x45d9e8]
jmp 0x41417d
xor bl, bl
cmp byte [0x460211], bl
jne 0x4140d4
cmp byte [0x460212], bl
jne 0x4140d4
push 0xa0
call esi
test di, ax
je 0x414077
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x414086
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x414095
or bl, 1
push 0xa3
call esi
test di, ax
je 0x4140a4
or bl, 2
push 0xa4
call esi
test di, ax
je 0x4140b3
or bl, 4
push 0xa5
call esi
test di, ax
je 0x4140c2
or bl, 8
push 0x5b
call esi
test di, ax
je 0x4140ce
or bl, 0x40
push 0x5c
call esi
jmp 0x41413a
push 0x10
call esi
test di, ax
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
jne 0x4140ec
push 0x10
call ebp
test di, ax
je 0x4140ee
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x414100
push 0x11
call ebp
test di, ax
je 0x414103
or bl, 1
push 0x12
call esi
test di, ax
jne 0x414115
push 0x12
call ebp
test di, ax
je 0x414118
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x41412a
push 0x5b
call ebp
test di, ax
je 0x41412d
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x41413f
push 0x5c
call ebp
test di, ax
je 0x414142
or bl, 0x80
cmp dword [0x45db00], 0
je 0x41417b
mov al, bl
not al
and al, byte [0x45d9e8]
je 0x41417b
not al
and byte [0x45d9ea], al
and byte [0x45d9e8], al
and byte [0x45d9e9], al
mov cl, byte [0x45d9ea]
mov eax, 0x45d9f0
call fcn.00411ad2
mov cl, bl
mov al, cl
xor al, byte [esp + 0x40]
mov byte [esp + 0x4c], cl
and al, cl
and al, 0xcc
je 0x4141ab
push 0
not al
push 1
push dword [esp + 0x58]
and al, cl
push dword [esp + 0x58]
push eax
mov eax, 0xffc3d44d
call fcn.00412104
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x24
ret