Function at 0x40bb40
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
mov eax, dword [esp + 0xc]
test eax, eax
je 0x40bb4d
xor eax, eax
pop ecx
ret
push ebx
mov ebx, dword [esp + 0xc]
push esi
push edi
push ebx
call fcn.00407b50
add esp, 4
test al, al
je 0x40bb70
push 0x10
push 0
push ebx
call fcn.0044485e
add esp, 0xc
jmp 0x40bb79
push ebx
call fcn.00444633
add esp, 4
mov esi, dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push ebp
mov ebp, dword [0x45d800]
test ebp, ebp
je 0x40bb9a
mov al, byte [0x45d6fc]
jmp 0x40bda5
mov al, byte [0x45f111]
test al, al
mov byte [esp + 0x1c], 0
jne 0x40bc20
mov al, byte [0x45f112]
test al, al
jne 0x40bc20
push 0xa0
call edi
test ah, ah
jns 0x40bbc1
mov byte [esp + 0x1c], 0x10
push 0xa1
call edi
test ah, ah
jns 0x40bbd1
or byte [esp + 0x1c], 0x20
push 0xa2
call edi
test ah, ah
jns 0x40bbe1
or byte [esp + 0x1c], 1
push 0xa3
call edi
test ah, ah
jns 0x40bbf1
or byte [esp + 0x1c], 2
push 0xa4
call edi
test ah, ah
jns 0x40bc01
or byte [esp + 0x1c], 4
push 0xa5
call edi
test ah, ah
jns 0x40bc11
or byte [esp + 0x1c], 8
push 0x5b
call edi
test ah, ah
jns 0x40bc8b
or byte [esp + 0x1c], 0x40
jmp 0x40bc8b
push 0x10
call esi
movsx eax, ax
test eax, eax
js 0x40bc33
push 0x10
call edi
test ah, ah
jns 0x40bc38
mov byte [esp + 0x1c], 0x10
push 0x11
call esi
movsx ecx, ax
test ecx, ecx
js 0x40bc4b
push 0x11
call edi
test ah, ah
jns 0x40bc50
or byte [esp + 0x1c], 1
push 0x12
call esi
movsx edx, ax
test edx, edx
js 0x40bc63
push 0x12
call edi
test ah, ah
jns 0x40bc68
or byte [esp + 0x1c], 4
push 0x5b
call esi
movsx eax, ax
test eax, eax
js 0x40bc7b
push 0x5b
call edi
test ah, ah
jns 0x40bc80
or byte [esp + 0x1c], 0x40
push 0x5c
call esi
movsx ecx, ax
test ecx, ecx
js 0x40bc93
push 0x5c
call edi
test ah, ah
jns 0x40bc98
or byte [esp + 0x1c], 0x80
mov ebp, dword [0x45d800]
test ebp, ebp
je 0x40bda1
mov cl, byte [esp + 0x1c]
mov al, byte [0x45d6fc]
not cl
and cl, al
je 0x40bda1
mov bl, byte [0x45d6fc]
mov al, byte [0x45d6fe]
mov dl, byte [0x45d6fd]
not cl
and bl, cl
mov byte [0x45d6fc], bl
and al, cl
mov bl, al
shl bl, 7
mov byte [0x45d7a2], bl
mov bl, al
and bl, 0xfe
shl bl, 6
mov byte [0x45d7a3], bl
mov bl, al
and bl, 0xfc
shl bl, 5
mov byte [0x45d7a4], bl
and dl, cl
mov bl, al
and bl, 0xf8
shl bl, 4
mov byte [0x45d6fd], dl
mov byte [0x45d7a5], bl
mov cl, al
mov dl, al
mov bl, al
and cl, 0xf0
and dl, 0xe0
and bl, 0xc0
shl cl, 3
mov byte [0x45d6fe], al
shl dl, 2
shl bl, 1
and al, 0x80
test cl, cl
mov byte [0x45d7a0], cl
mov byte [0x45d7a1], dl
mov byte [0x45d75b], bl
mov byte [0x45d75c], al
jne 0x40bd56
test dl, dl
mov byte [0x45d710], cl
je 0x40bd5d
mov byte [0x45d710], 0x80
mov al, byte [0x45d7a2]
test al, al
jne 0x40bd76
mov al, byte [0x45d7a3]
test al, al
mov byte [0x45d711], 0
je 0x40bd7d
mov byte [0x45d711], 0x80
mov al, byte [0x45d7a4]
test al, al
jne 0x40bd96
mov al, byte [0x45d7a5]
test al, al
mov byte [0x45d712], 0
je 0x40bd9d
mov byte [0x45d712], 0x80
mov ebx, dword [esp + 0x18]
mov al, byte [esp + 0x1c]
and al, 0x33
mov byte [esp + 0x10], al
je 0x40bfff
test ebp, ebp
je 0x40bdc0
mov dl, byte [0x45d6fc]
jmp 0x40bfe2
mov al, byte [0x45f111]
xor bl, bl
test al, al
mov byte [esp + 0x1c], bl
jne 0x40be58
mov al, byte [0x45f112]
test al, al
jne 0x40be58
push 0xa0
call edi
test ah, ah
jns 0x40bded
mov bl, 0x10
mov byte [esp + 0x1c], bl
push 0xa1
call edi
test ah, ah
jns 0x40bdff
or bl, 0x20
mov byte [esp + 0x1c], bl
push 0xa2
call edi
test ah, ah
jns 0x40be11
or bl, 1
mov byte [esp + 0x1c], bl
push 0xa3
call edi
test ah, ah
jns 0x40be23
or bl, 2
mov byte [esp + 0x1c], bl
push 0xa4
call edi
test ah, ah
jns 0x40be35
or bl, 4
mov byte [esp + 0x1c], bl
push 0xa5
call edi
test ah, ah
jns 0x40be47
or bl, 8
mov byte [esp + 0x1c], bl
push 0x5b
call edi
test ah, ah
jns 0x40beca
or bl, 0x40
mov byte [esp + 0x1c], bl
jmp 0x40beca
push 0x10
call esi
movsx eax, ax
test eax, eax
js 0x40be6b
push 0x10
call edi
test ah, ah
jns 0x40be71
mov bl, 0x10
mov byte [esp + 0x1c], bl
push 0x11
call esi
movsx ecx, ax
test ecx, ecx
js 0x40be84
push 0x11
call edi
test ah, ah
jns 0x40be8b
or bl, 1
mov byte [esp + 0x1c], bl
push 0x12
call esi
movsx edx, ax
test edx, edx
js 0x40be9e
push 0x12
call edi
test ah, ah
jns 0x40bea5
or bl, 4
mov byte [esp + 0x1c], bl
push 0x5b
call esi
movsx eax, ax
test eax, eax
js 0x40beb8
push 0x5b
call edi
test ah, ah
jns 0x40bebf
or bl, 0x40
mov byte [esp + 0x1c], bl
push 0x5c
call esi
movsx ecx, ax
test ecx, ecx
js 0x40bed2
push 0x5c
call edi
test ah, ah
jns 0x40bed9
or bl, 0x80
mov byte [esp + 0x1c], bl
mov eax, dword [0x45d800]
test eax, eax
je 0x40bfda
mov al, byte [0x45d6fc]
mov cl, bl
not cl
and cl, al
je 0x40bfda
mov bl, byte [0x45d6fd]
mov al, byte [0x45d6fe]
not cl
and bl, cl
mov byte [0x45d6fd], bl
and al, cl
mov dl, byte [0x45d6fc]
mov bl, al
shl bl, 7
mov byte [0x45d7a2], bl
mov bl, al
and bl, 0xfe
shl bl, 6
mov byte [0x45d7a3], bl
mov bl, al
and bl, 0xfc
shl bl, 5
mov byte [0x45d7a4], bl
mov bl, al
and bl, 0xf8
shl bl, 4
and dl, cl
mov byte [0x45d7a5], bl
mov bl, al
and bl, 0xc0
mov byte [0x45d6fc], dl
shl bl, 1
mov cl, al
mov dl, al
and cl, 0xf0
and dl, 0xe0
mov byte [0x45d75b], bl
shl cl, 3
mov bl, 0x80
mov byte [0x45d6fe], al
shl dl, 2
and al, bl
test cl, cl
mov byte [0x45d7a0], cl
mov byte [0x45d7a1], dl
mov byte [0x45d75c], al
jne 0x40bf96
test dl, dl
mov byte [0x45d710], cl
je 0x40bf9c
mov byte [0x45d710], bl
mov al, byte [0x45d7a2]
test al, al
jne 0x40bfb5
mov al, byte [0x45d7a3]
test al, al
mov byte [0x45d711], 0
je 0x40bfbb
mov byte [0x45d711], bl
mov al, byte [0x45d7a4]
test al, al
jne 0x40bfd4
mov al, byte [0x45d7a5]
test al, al
mov byte [0x45d712], 0
je 0x40bfda
mov byte [0x45d712], bl
mov dl, byte [esp + 0x1c]
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push 0xffc3d44f
mov byte [esp + 0x20], dl
mov eax, dword [esp + 0x20]
push 1
push eax
push ecx
call fcn.0040b6e0
add esp, 0x10
xor edi, edi
call fcn.0040b860
test al, 1
pop ebp
jne 0x40c023
push 0xffc3d44d
push edi
push edi
push edi
push 0x12
push edi
call fcn.0040aeb0
add esp, 0x18
mov edi, 1
xor eax, eax
mov al, byte [ebx]
cmp al, 0x30
mov esi, ebx
jl 0x40c055
lea ecx, [ecx]
cmp al, 0x39
jg 0x40c055
push 0xffc3d44d
push 0
add al, 0x30
push 0
push 0
push eax
push 2
call fcn.0040aeb0
mov al, byte [esi + 1]
add esp, 0x18
inc edi
inc esi
cmp al, 0x30
jge 0x40c030
push 0xffc3d44d
push 0
push 0
push 0
push 0x12
push 1
call fcn.0040aeb0
add esp, 0x18
lea eax, [edi + 1]
pop edi
pop esi
pop ebx
pop ecx
ret