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

Disassembly:
sub esp, 0x20
mov al, byte [esp + 0x2c]
or al, byte [esp + 0x30]
push ebx
push ebp
push esi
push edi
push dword [esp + 0x34]
mov byte [esp + 0x14], al
call fcn.004444da
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
mov byte [esp + 0x40], al
mov eax, dword [esp + 0x48]
xor ebx, ebx
cmp eax, ebx
pop ecx
mov edi, 0x8000
jle 0x412794
mov dword [esp + 0x44], eax
cmp dword [0x4650d0], ebx
jne 0x4125c5
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
sub eax, dword [0x4642ac]
cmp eax, dword [0x463340]
jbe 0x4125c5
push ebx
push ebx
push ebx
push ebx
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x4125ba
push 1
push 0xffffffffffffffff
mov byte [0x461069], 0
call fcn.0040bd90
pop ecx
pop ecx
mov byte [0x461069], 1
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [0x4642ac], eax
cmp byte [esp + 0x4c], 0
jne 0x412736
cmp dword [0x4650d0], ebx
je 0x4125e2
mov al, byte [0x465058]
jmp 0x41271d
cmp dword [0x463490], ebx
je 0x4125f4
mov al, byte [0x46337c]
jmp 0x41271d
xor bl, bl
cmp byte [0x464499], bl
jne 0x412672
cmp byte [0x46449a], bl
jne 0x412672
push 0xa0
call esi
test di, ax
je 0x412615
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x412624
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x412633
or bl, 1
push 0xa3
call esi
test di, ax
je 0x412642
or bl, 2
push 0xa4
call esi
test di, ax
je 0x412651
or bl, 4
push 0xa5
call esi
test di, ax
je 0x412660
or bl, 8
push 0x5b
call esi
test di, ax
je 0x41266c
or bl, 0x40
push 0x5c
call esi
jmp 0x4126d2
push 0x10
call esi
test di, ax
jne 0x412684
push 0x10
call ebp
test di, ax
je 0x412686
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x412698
push 0x11
call ebp
test di, ax
je 0x41269b
or bl, 1
push 0x12
call esi
test di, ax
jne 0x4126ad
push 0x12
call ebp
test di, ax
je 0x4126b0
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x4126c2
push 0x5b
call ebp
test di, ax
je 0x4126c5
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x4126d7
push 0x5c
call ebp
test di, ax
je 0x4126da
or bl, 0x80
cmp dword [0x463490], 0
je 0x412717
mov al, bl
not al
and al, byte [0x46337c]
je 0x412717
not al
and byte [0x46337e], al
and byte [0x46337c], al
and byte [0x46337d], al
xor eax, eax
mov al, byte [0x46337e]
push eax
push 0x463380
call fcn.004102d0
pop ecx
pop ecx
xor eax, eax
mov al, bl
xor ebx, ebx
push 0xffc3d44f
push 1
push ebx
push dword [esp + 0x5c]
push eax
push dword [esp + 0x24]
call fcn.004108f4
add esp, 0x18
cmp byte [esp + 0x3c], 0
je 0x41276b
cmp dword [esp + 0x50], ebx
jne 0x41276b
push dword [esp + 0x5c]
movzx eax, byte [0x46334f]
push dword [esp + 0x4c]
push eax
push 1
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x4c]
call fcn.0041162e
add esp, 0x1c
jmp 0x41278a
push 0xffc3d44d
push 1
push dword [esp + 0x58]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00410f1f
add esp, 0x18
dec dword [esp + 0x44]
jne 0x412572
cmp byte [esp + 0x4c], 0
jne 0x412919
cmp dword [0x4650d0], ebx
je 0x4127b2
mov cl, byte [0x465058]
jmp 0x4128ec
cmp dword [0x463490], ebx
je 0x4127c5
mov cl, byte [0x46337c]
jmp 0x4128ec
xor bl, bl
cmp byte [0x464499], bl
jne 0x412843
cmp byte [0x46449a], bl
jne 0x412843
push 0xa0
call esi
test di, ax
je 0x4127e6
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x4127f5
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x412804
or bl, 1
push 0xa3
call esi
test di, ax
je 0x412813
or bl, 2
push 0xa4
call esi
test di, ax
je 0x412822
or bl, 4
push 0xa5
call esi
test di, ax
je 0x412831
or bl, 8
push 0x5b
call esi
test di, ax
je 0x41283d
or bl, 0x40
push 0x5c
call esi
jmp 0x4128a3
push 0x10
call esi
test di, ax
jne 0x412855
push 0x10
call ebp
test di, ax
je 0x412857
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x412869
push 0x11
call ebp
test di, ax
je 0x41286c
or bl, 1
push 0x12
call esi
test di, ax
jne 0x41287e
push 0x12
call ebp
test di, ax
je 0x412881
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x412893
push 0x5b
call ebp
test di, ax
je 0x412896
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x4128a8
push 0x5c
call ebp
test di, ax
je 0x4128ab
or bl, 0x80
cmp dword [0x463490], 0
je 0x4128e8
mov al, bl
not al
and al, byte [0x46337c]
je 0x4128e8
not al
and byte [0x46337e], al
and byte [0x46337c], al
and byte [0x46337d], al
xor eax, eax
mov al, byte [0x46337e]
push eax
push 0x463380
call fcn.004102d0
pop ecx
pop ecx
mov cl, bl
xor ebx, ebx
mov al, cl
xor al, byte [esp + 0x40]
mov byte [esp + 0x4c], cl
and al, cl
and al, 0xcc
je 0x412919
push 0xffc3d44d
push ebx
not al
push 1
push dword [esp + 0x5c]
and al, cl
push dword [esp + 0x5c]
push eax
call fcn.004108f4
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret