Function at 0x4141c8
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.00444b50
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 0x41443b
mov dword [esp + 0x44], eax
cmp dword [0x468480], ebx
jne 0x414267
call dword [sym.imp.KERNEL32.dll_GetTickCount]
sub eax, dword [0x4671ac]
mov ecx, dword [0x464108]
cmp eax, dword [ecx + 0xac]
jbe 0x414267
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 0x41425c
push 1
push 0xffffffffffffffff
mov dword [0x46406c], ebx
call fcn.0040dca7
pop ecx
pop ecx
mov dword [0x46406c], 1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [0x4671ac], eax
cmp byte [esp + 0x4c], 0
jne 0x4143d8
cmp dword [0x468480], ebx
je 0x414284
mov al, byte [0x468408]
jmp 0x4143bf
cmp dword [0x466388], ebx
je 0x414296
mov al, byte [0x466270]
jmp 0x4143bf
xor bl, bl
cmp byte [0x467399], bl
jne 0x414314
cmp byte [0x46739a], bl
jne 0x414314
push 0xa0
call esi
test di, ax
je 0x4142b7
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x4142c6
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x4142d5
or bl, 1
push 0xa3
call esi
test di, ax
je 0x4142e4
or bl, 2
push 0xa4
call esi
test di, ax
je 0x4142f3
or bl, 4
push 0xa5
call esi
test di, ax
je 0x414302
or bl, 8
push 0x5b
call esi
test di, ax
je 0x41430e
or bl, 0x40
push 0x5c
call esi
jmp 0x414374
push 0x10
call esi
test di, ax
jne 0x414326
push 0x10
call ebp
test di, ax
je 0x414328
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x41433a
push 0x11
call ebp
test di, ax
je 0x41433d
or bl, 1
push 0x12
call esi
test di, ax
jne 0x41434f
push 0x12
call ebp
test di, ax
je 0x414352
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x414364
push 0x5b
call ebp
test di, ax
je 0x414367
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x414379
push 0x5c
call ebp
test di, ax
je 0x41437c
or bl, 0x80
cmp dword [0x466388], 0
je 0x4143b9
mov al, bl
not al
and al, byte [0x466270]
je 0x4143b9
not al
and byte [0x466272], al
and byte [0x466270], al
and byte [0x466271], al
xor eax, eax
mov al, byte [0x466272]
push eax
push 0x466278
call fcn.00411e9d
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.00412527
add esp, 0x18
cmp byte [esp + 0x3c], 0
je 0x414412
cmp dword [esp + 0x50], ebx
jne 0x414412
push dword [esp + 0x5c]
mov eax, dword [0x464108]
push dword [esp + 0x4c]
movzx eax, byte [eax + 0xc3]
push eax
push 1
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x4c]
call fcn.0041326f
add esp, 0x1c
jmp 0x414431
push 0xffc3d44d
push 1
push dword [esp + 0x58]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00412b58
add esp, 0x18
dec dword [esp + 0x44]
jne 0x41420c
cmp byte [esp + 0x4c], 0
jne 0x4145c0
cmp dword [0x468480], ebx
je 0x414459
mov cl, byte [0x468408]
jmp 0x414593
cmp dword [0x466388], ebx
je 0x41446c
mov cl, byte [0x466270]
jmp 0x414593
xor bl, bl
cmp byte [0x467399], bl
jne 0x4144ea
cmp byte [0x46739a], bl
jne 0x4144ea
push 0xa0
call esi
test di, ax
je 0x41448d
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x41449c
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x4144ab
or bl, 1
push 0xa3
call esi
test di, ax
je 0x4144ba
or bl, 2
push 0xa4
call esi
test di, ax
je 0x4144c9
or bl, 4
push 0xa5
call esi
test di, ax
je 0x4144d8
or bl, 8
push 0x5b
call esi
test di, ax
je 0x4144e4
or bl, 0x40
push 0x5c
call esi
jmp 0x41454a
push 0x10
call esi
test di, ax
jne 0x4144fc
push 0x10
call ebp
test di, ax
je 0x4144fe
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x414510
push 0x11
call ebp
test di, ax
je 0x414513
or bl, 1
push 0x12
call esi
test di, ax
jne 0x414525
push 0x12
call ebp
test di, ax
je 0x414528
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x41453a
push 0x5b
call ebp
test di, ax
je 0x41453d
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x41454f
push 0x5c
call ebp
test di, ax
je 0x414552
or bl, 0x80
cmp dword [0x466388], 0
je 0x41458f
mov al, bl
not al
and al, byte [0x466270]
je 0x41458f
not al
and byte [0x466272], al
and byte [0x466270], al
and byte [0x466271], al
xor eax, eax
mov al, byte [0x466272]
push eax
push 0x466278
call fcn.00411e9d
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 0x4145c0
push 0xffc3d44d
push ebx
not al
push 1
push dword [esp + 0x5c]
and al, cl
push dword [esp + 0x5c]
push eax
call fcn.00412527
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret