Function at 0x412653
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.004440c9
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 0x4128b9
mov dword [esp + 0x44], eax
cmp dword [0x4660f0], ebx
jne 0x4126ea
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
sub eax, dword [0x4652cc]
cmp eax, dword [0x464360]
jbe 0x4126ea
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 0x4126df
push 1
push 0xffffffffffffffff
mov byte [0x462069], 0
call fcn.0040be3b
pop ecx
pop ecx
mov byte [0x462069], 1
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [0x4652cc], eax
cmp byte [esp + 0x4c], 0
jne 0x41285b
cmp dword [0x4660f0], ebx
je 0x412707
mov al, byte [0x466078]
jmp 0x412842
cmp dword [0x4644b0], ebx
je 0x412719
mov al, byte [0x46439c]
jmp 0x412842
xor bl, bl
cmp byte [0x4654b9], bl
jne 0x412797
cmp byte [0x4654ba], bl
jne 0x412797
push 0xa0
call esi
test di, ax
je 0x41273a
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x412749
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x412758
or bl, 1
push 0xa3
call esi
test di, ax
je 0x412767
or bl, 2
push 0xa4
call esi
test di, ax
je 0x412776
or bl, 4
push 0xa5
call esi
test di, ax
je 0x412785
or bl, 8
push 0x5b
call esi
test di, ax
je 0x412791
or bl, 0x40
push 0x5c
call esi
jmp 0x4127f7
push 0x10
call esi
test di, ax
jne 0x4127a9
push 0x10
call ebp
test di, ax
je 0x4127ab
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x4127bd
push 0x11
call ebp
test di, ax
je 0x4127c0
or bl, 1
push 0x12
call esi
test di, ax
jne 0x4127d2
push 0x12
call ebp
test di, ax
je 0x4127d5
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x4127e7
push 0x5b
call ebp
test di, ax
je 0x4127ea
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x4127fc
push 0x5c
call ebp
test di, ax
je 0x4127ff
or bl, 0x80
cmp dword [0x4644b0], 0
je 0x41283c
mov al, bl
not al
and al, byte [0x46439c]
je 0x41283c
not al
and byte [0x46439e], al
and byte [0x46439c], al
and byte [0x46439d], al
xor eax, eax
mov al, byte [0x46439e]
push eax
push 0x4643a0
call fcn.004103f5
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.00410a19
add esp, 0x18
cmp byte [esp + 0x3c], 0
je 0x412890
cmp dword [esp + 0x50], ebx
jne 0x412890
push dword [esp + 0x5c]
movzx eax, byte [0x46436f]
push dword [esp + 0x4c]
push eax
push 1
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x4c]
call fcn.00411753
add esp, 0x1c
jmp 0x4128af
push 0xffc3d44d
push 1
push dword [esp + 0x58]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00411044
add esp, 0x18
dec dword [esp + 0x44]
jne 0x412697
cmp byte [esp + 0x4c], 0
jne 0x412a3e
cmp dword [0x4660f0], ebx
je 0x4128d7
mov cl, byte [0x466078]
jmp 0x412a11
cmp dword [0x4644b0], ebx
je 0x4128ea
mov cl, byte [0x46439c]
jmp 0x412a11
xor bl, bl
cmp byte [0x4654b9], bl
jne 0x412968
cmp byte [0x4654ba], bl
jne 0x412968
push 0xa0
call esi
test di, ax
je 0x41290b
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x41291a
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x412929
or bl, 1
push 0xa3
call esi
test di, ax
je 0x412938
or bl, 2
push 0xa4
call esi
test di, ax
je 0x412947
or bl, 4
push 0xa5
call esi
test di, ax
je 0x412956
or bl, 8
push 0x5b
call esi
test di, ax
je 0x412962
or bl, 0x40
push 0x5c
call esi
jmp 0x4129c8
push 0x10
call esi
test di, ax
jne 0x41297a
push 0x10
call ebp
test di, ax
je 0x41297c
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x41298e
push 0x11
call ebp
test di, ax
je 0x412991
or bl, 1
push 0x12
call esi
test di, ax
jne 0x4129a3
push 0x12
call ebp
test di, ax
je 0x4129a6
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x4129b8
push 0x5b
call ebp
test di, ax
je 0x4129bb
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x4129cd
push 0x5c
call ebp
test di, ax
je 0x4129d0
or bl, 0x80
cmp dword [0x4644b0], 0
je 0x412a0d
mov al, bl
not al
and al, byte [0x46439c]
je 0x412a0d
not al
and byte [0x46439e], al
and byte [0x46439c], al
and byte [0x46439d], al
xor eax, eax
mov al, byte [0x46439e]
push eax
push 0x4643a0
call fcn.004103f5
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 0x412a3e
push 0xffc3d44d
push ebx
not al
push 1
push dword [esp + 0x5c]
and al, cl
push dword [esp + 0x5c]
push eax
call fcn.00410a19
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret