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

Disassembly:
sub esp, 0x20
push ebx
mov bl, byte [esp + 0x30]
or bl, byte [esp + 0x34]
push ebp
push esi
push edi
push dword [esp + 0x34]
mov byte [esp + 0x14], bl
call fcn.00445190
cmp byte [esp + 0x38], 0x4c
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ebp, dword [esp + 0x48]
pop ecx
mov byte [esp + 0x3c], al
mov edi, 0x8000
jne 0x41442a
cmp dword [0x469480], 1
jne 0x41442a
cmp byte [0x4693fc], 0
jne 0x41442a
cmp dword [esp + 0x50], 0
jne 0x41442a
cmp byte [0x46839f], 0
je 0x41442a
test bl, 0xc0
jne 0x41442a
test byte [0x468171], 0xc0
je 0x41442a
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
sub eax, dword [0x468168]
cmp eax, 0x32
jae 0x41442a
test ebp, ebp
jle 0x41466f
call dword [sym.imp.KERNEL32.DLL_GetCurrentThreadId]
cmp eax, dword [0x467c9c]
jne 0x41442a
push 0x5b
call esi
test di, ax
jne 0x41440b
push 0x5c
call esi
test di, ax
je 0x41442a
and dword [0x46506c], 0
xor ebx, ebx
inc ebx
push ebx
push 0x8000012f
call fcn.0040de6e
pop ecx
pop ecx
mov dword [0x46506c], ebx
jmp 0x4143f9
test ebp, ebp
jle 0x41466f
xor ebx, ebx
mov dword [esp + 0x44], ebp
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
inc ebx
cmp dword [0x469480], 0
jne 0x414499
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
sub eax, dword [0x4681ac]
mov ecx, dword [0x465108]
cmp eax, dword [ecx + 0xb0]
jbe 0x414499
xor eax, eax
push eax
push eax
push eax
push eax
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.USER32.dll_PeekMessageA]
test eax, eax
je 0x41448e
and dword [0x46506c], 0
push ebx
push 0xffffffffffffffff
call fcn.0040de6e
pop ecx
pop ecx
mov dword [0x46506c], ebx
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [0x4681ac], eax
cmp byte [esp + 0x4c], 0
jne 0x41460d
cmp dword [0x469480], 0
je 0x4144b7
mov al, byte [0x469408]
jmp 0x4145f4
cmp dword [0x467388], 0
je 0x4144ca
mov al, byte [0x467270]
jmp 0x4145f4
xor bl, bl
cmp byte [0x468399], bl
jne 0x414548
cmp byte [0x46839a], bl
jne 0x414548
push 0xa0
call esi
test di, ax
je 0x4144eb
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x4144fa
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x414509
or bl, 1
push 0xa3
call esi
test di, ax
je 0x414518
or bl, 2
push 0xa4
call esi
test di, ax
je 0x414527
or bl, 4
push 0xa5
call esi
test di, ax
je 0x414536
or bl, 8
push 0x5b
call esi
test di, ax
je 0x414542
or bl, 0x40
push 0x5c
call esi
jmp 0x4145a8
push 0x10
call esi
test di, ax
jne 0x41455a
push 0x10
call ebp
test di, ax
je 0x41455c
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x41456e
push 0x11
call ebp
test di, ax
je 0x414571
or bl, 1
push 0x12
call esi
test di, ax
jne 0x414583
push 0x12
call ebp
test di, ax
je 0x414586
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x414598
push 0x5b
call ebp
test di, ax
je 0x41459b
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x4145ad
push 0x5c
call ebp
test di, ax
je 0x4145b0
or bl, 0x80
cmp dword [0x467388], 0
je 0x4145ed
mov al, bl
not al
and al, byte [0x467270]
je 0x4145ed
not al
and byte [0x467272], al
and byte [0x467270], al
and byte [0x467271], al
xor eax, eax
mov al, byte [0x467272]
push eax
push 0x467278
call fcn.00412040
pop ecx
pop ecx
xor eax, eax
mov al, bl
xor ebx, ebx
inc ebx
push 0xffc3d44f
push ebx
push 0
push dword [esp + 0x5c]
push eax
push dword [esp + 0x24]
call fcn.004126cc
add esp, 0x18
cmp byte [esp + 0x3c], 0
je 0x414647
cmp dword [esp + 0x50], 0
jne 0x414647
push dword [esp + 0x5c]
mov eax, dword [0x465108]
push dword [esp + 0x4c]
movzx eax, byte [eax + 0xc7]
push eax
push ebx
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x4c]
call fcn.0041340e
add esp, 0x1c
jmp 0x414665
push 0xffc3d44d
push ebx
push dword [esp + 0x58]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00412cfd
add esp, 0x18
dec dword [esp + 0x44]
jne 0x41443f
cmp byte [esp + 0x4c], 0
jne 0x4147fb
cmp dword [0x469480], 0
je 0x41468e
mov cl, byte [0x469408]
jmp 0x4147cd
cmp dword [0x467388], 0
je 0x4146a2
mov cl, byte [0x467270]
jmp 0x4147cd
xor bl, bl
cmp byte [0x468399], bl
jne 0x414720
cmp byte [0x46839a], bl
jne 0x414720
push 0xa0
call esi
test di, ax
je 0x4146c3
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x4146d2
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x4146e1
or bl, 1
push 0xa3
call esi
test di, ax
je 0x4146f0
or bl, 2
push 0xa4
call esi
test di, ax
je 0x4146ff
or bl, 4
push 0xa5
call esi
test di, ax
je 0x41470e
or bl, 8
push 0x5b
call esi
test di, ax
je 0x41471a
or bl, 0x40
push 0x5c
call esi
jmp 0x414786
push 0x10
call esi
test di, ax
mov ebp, dword [sym.imp.USER32.dll_GetKeyState]
jne 0x414738
push 0x10
call ebp
test di, ax
je 0x41473a
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x41474c
push 0x11
call ebp
test di, ax
je 0x41474f
or bl, 1
push 0x12
call esi
test di, ax
jne 0x414761
push 0x12
call ebp
test di, ax
je 0x414764
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x414776
push 0x5b
call ebp
test di, ax
je 0x414779
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x41478b
push 0x5c
call ebp
test di, ax
je 0x41478e
or bl, 0x80
cmp dword [0x467388], 0
je 0x4147cb
mov al, bl
not al
and al, byte [0x467270]
je 0x4147cb
not al
and byte [0x467272], al
and byte [0x467270], al
and byte [0x467271], al
xor eax, eax
mov al, byte [0x467272]
push eax
push 0x467278
call fcn.00412040
pop ecx
pop ecx
mov cl, bl
mov al, cl
xor al, byte [esp + 0x40]
mov byte [esp + 0x4c], cl
and al, cl
and al, 0xcc
je 0x4147fb
push 0xffc3d44d
push 0
not al
push 1
push dword [esp + 0x5c]
and al, cl
push dword [esp + 0x5c]
push eax
call fcn.004126cc
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret