Function at 0x411b34
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.00444490
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 0x411d9a
mov dword [esp + 0x44], eax
cmp dword [0x466f78], ebx
jne 0x411bcb
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
sub eax, dword [0x466154]
cmp eax, dword [0x4651e4]
jbe 0x411bcb
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 0x411bc0
push 1
push 0xffffffffffffffff
mov byte [0x463069], 0
call fcn.0040b5c4
pop ecx
pop ecx
mov byte [0x463069], 1
call dword [sym.imp.KERNEL32.DLL_GetTickCount]
mov dword [0x466154], eax
cmp byte [esp + 0x4c], 0
jne 0x411d3c
cmp dword [0x466f78], ebx
je 0x411be8
mov al, byte [0x466f00]
jmp 0x411d23
cmp dword [0x465338], ebx
je 0x411bfa
mov al, byte [0x465224]
jmp 0x411d23
xor bl, bl
cmp byte [0x466341], bl
jne 0x411c78
cmp byte [0x466342], bl
jne 0x411c78
push 0xa0
call esi
test di, ax
je 0x411c1b
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x411c2a
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x411c39
or bl, 1
push 0xa3
call esi
test di, ax
je 0x411c48
or bl, 2
push 0xa4
call esi
test di, ax
je 0x411c57
or bl, 4
push 0xa5
call esi
test di, ax
je 0x411c66
or bl, 8
push 0x5b
call esi
test di, ax
je 0x411c72
or bl, 0x40
push 0x5c
call esi
jmp 0x411cd8
push 0x10
call esi
test di, ax
jne 0x411c8a
push 0x10
call ebp
test di, ax
je 0x411c8c
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x411c9e
push 0x11
call ebp
test di, ax
je 0x411ca1
or bl, 1
push 0x12
call esi
test di, ax
jne 0x411cb3
push 0x12
call ebp
test di, ax
je 0x411cb6
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x411cc8
push 0x5b
call ebp
test di, ax
je 0x411ccb
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x411cdd
push 0x5c
call ebp
test di, ax
je 0x411ce0
or bl, 0x80
cmp dword [0x465338], 0
je 0x411d1d
mov al, bl
not al
and al, byte [0x465224]
je 0x411d1d
not al
and byte [0x465226], al
and byte [0x465224], al
and byte [0x465225], al
xor eax, eax
mov al, byte [0x465226]
push eax
push 0x465228
call fcn.0040f8d6
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.0040fefa
add esp, 0x18
cmp byte [esp + 0x3c], 0
je 0x411d71
cmp dword [esp + 0x50], ebx
jne 0x411d71
push dword [esp + 0x5c]
movzx eax, byte [0x4651f3]
push dword [esp + 0x4c]
push eax
push 1
push dword [esp + 0x68]
push dword [esp + 0x68]
push dword [esp + 0x4c]
call fcn.00410c34
add esp, 0x1c
jmp 0x411d90
push 0xffc3d44d
push 1
push dword [esp + 0x58]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x5c]
call fcn.00410525
add esp, 0x18
dec dword [esp + 0x44]
jne 0x411b78
cmp byte [esp + 0x4c], 0
jne 0x411f1f
cmp dword [0x466f78], ebx
je 0x411db8
mov cl, byte [0x466f00]
jmp 0x411ef2
cmp dword [0x465338], ebx
je 0x411dcb
mov cl, byte [0x465224]
jmp 0x411ef2
xor bl, bl
cmp byte [0x466341], bl
jne 0x411e49
cmp byte [0x466342], bl
jne 0x411e49
push 0xa0
call esi
test di, ax
je 0x411dec
add bl, 0x10
push 0xa1
call esi
test di, ax
je 0x411dfb
or bl, 0x20
push 0xa2
call esi
test di, ax
je 0x411e0a
or bl, 1
push 0xa3
call esi
test di, ax
je 0x411e19
or bl, 2
push 0xa4
call esi
test di, ax
je 0x411e28
or bl, 4
push 0xa5
call esi
test di, ax
je 0x411e37
or bl, 8
push 0x5b
call esi
test di, ax
je 0x411e43
or bl, 0x40
push 0x5c
call esi
jmp 0x411ea9
push 0x10
call esi
test di, ax
jne 0x411e5b
push 0x10
call ebp
test di, ax
je 0x411e5d
mov bl, 0x10
push 0x11
call esi
test di, ax
jne 0x411e6f
push 0x11
call ebp
test di, ax
je 0x411e72
or bl, 1
push 0x12
call esi
test di, ax
jne 0x411e84
push 0x12
call ebp
test di, ax
je 0x411e87
or bl, 4
push 0x5b
call esi
test di, ax
jne 0x411e99
push 0x5b
call ebp
test di, ax
je 0x411e9c
or bl, 0x40
push 0x5c
call esi
test di, ax
jne 0x411eae
push 0x5c
call ebp
test di, ax
je 0x411eb1
or bl, 0x80
cmp dword [0x465338], 0
je 0x411eee
mov al, bl
not al
and al, byte [0x465224]
je 0x411eee
not al
and byte [0x465226], al
and byte [0x465224], al
and byte [0x465225], al
xor eax, eax
mov al, byte [0x465226]
push eax
push 0x465228
call fcn.0040f8d6
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 0x411f1f
push 0xffc3d44d
push ebx
not al
push 1
push dword [esp + 0x5c]
and al, cl
push dword [esp + 0x5c]
push eax
call fcn.0040fefa
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret