Function at 0x40b2c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push ebx
push ebp
mov ebp, ecx
mov al, byte [ebp + 0x938]
test al, al
push esi
push edi
jne 0x40b66d
mov al, byte [0x9095a8]
test al, al
jne 0x40b66d
mov al, byte [ebp + 0x24]
test al, al
mov ebx, dword [sym.imp.USER32.dll_GetAsyncKeyState]
jne 0x40b3af
mov al, byte [0x9096c8]
test al, al
je 0x40b3af
mov eax, dword [0x4ee6d8]
cmp dword [eax], 0
je 0x40b321
mov eax, dword [eax + 0x10]
test eax, eax
je 0x40b321
push 5
push 0x80
call eax
add esp, 8
mov esi, eax
jmp 0x40b323
xor esi, esi
push 0xa1
call ebx
and eax, 0xffff8000
test ax, ax
jne 0x40b340
push 0xa1
mov ecx, ebp
call fcn.0040c150
mov edi, esi
and edi, 0xff
je 0x40b7a2
push 0x10
call ebx
and eax, 0xffff8000
test esi, 0x400
je 0x40b38a
test esi, 0x200
jne 0x40b36c
test ax, ax
je 0x40b37a
push 0
push 0xa0
mov ecx, ebp
call fcn.0040bfb0
mov ecx, dword [ebp + 0x934]
mov eax, dword [ecx]
push 0
push edi
call dword [eax + 0x5c]
jmp 0x40b3af
test esi, 0x200
jne 0x40b397
test ax, ax
jne 0x40b3a3
push 0xa0
mov ecx, ebp
call fcn.0040c150
mov ecx, dword [ebp + 0x934]
mov edx, dword [ecx]
push edi
call dword [edx + 0x60]
mov eax, dword [0x4ee6e0]
test eax, eax
je 0x40b42f
mov ecx, dword [eax]
test ecx, ecx
je 0x40b42f
test ecx, ecx
je 0x40b645
mov ecx, dword [eax + 0x1c]
test ecx, ecx
je 0x40b40c
push 0
call ecx
add esp, 4
test al, al
je 0x40b407
test eax, 0x80000000
je 0x40b3ee
and eax, 0xff
push eax
mov ecx, ebp
call fcn.0040c150
jmp 0x40b407
mov ecx, eax
shr ecx, 0x1e
and ecx, 0xffffff01
push ecx
and eax, 0xff
push eax
mov ecx, ebp
call fcn.0040bfb0
mov eax, dword [0x4ee6e0]
cmp dword [eax], 0
je 0x40b645
mov eax, dword [eax + 0x28]
test eax, eax
je 0x40b645
push 0x444
call eax
add esp, 4
jmp 0x40b645
mov al, byte [ebp + 0x24]
test al, al
je 0x40b58d
lea esi, [ebp + 0x325]
xor eax, eax
push esi
mov ecx, 0x40
mov edi, esi
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 0x20]
mov edx, dword [eax]
push pe_nt_image_headers32
push eax
call dword [edx + 0x24]
test eax, eax
jge 0x40b476
mov eax, dword [ebp + 0x20]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
mov eax, dword [ebp + 0x20]
mov edx, dword [eax]
push esi
push pe_nt_image_headers32
push eax
call dword [edx + 0x24]
mov dl, byte [ebp + 0x376]
mov al, byte [ebp + 0x377]
mov cl, byte [ebp + 0x375]
or al, dl
mov dl, byte [ebp + 0x374]
or al, cl
mov cl, byte [ebp + 0x372]
or al, dl
mov dl, byte [ebp + 0x371]
or al, cl
mov cl, byte [ebp + 0x370]
or al, dl
mov dl, byte [ebp + 0x36e]
or al, cl
mov cl, byte [ebp + 0x36d]
or al, dl
mov dl, byte [ebp + 0x36c]
or al, cl
or al, dl
test al, 0x80
je 0x40b4f0
mov dl, byte [ebp + 0x34f]
mov cl, byte [ebp + 0x44f]
mov al, byte [ebp + 0x35b]
or dl, cl
mov byte [ebp + 0x34f], dl
mov dl, byte [ebp + 0x45b]
or al, dl
mov byte [ebp + 0x35b], al
mov al, byte [ebp + 0x332]
mov cl, byte [ebp + 0x3b5]
mov dl, byte [ebp + 0x3b7]
or cl, al
mov al, byte [ebp + 0x3a2]
mov byte [ebp + 0x3b5], cl
mov cl, byte [ebp + 0x34d]
or dl, cl
mov cl, byte [ebp + 0x341]
mov byte [ebp + 0x3b7], dl
mov dl, byte [ebp + 0x34e]
or al, dl
mov byte [ebp + 0x3a2], al
mov al, byte [ebp + 0x3c1]
or cl, al
mov byte [ebp + 0x341], cl
xor edi, edi
xor eax, eax
mov al, byte [edi + 0x4be75c]
test eax, eax
je 0x40b572
test byte [esi + eax], 0x80
je 0x40b56a
test byte [eax + ebp + 0x425], 0x80
jne 0x40b572
push 0
push edi
mov ecx, ebp
call fcn.0040bfb0
jmp 0x40b572
push edi
mov ecx, ebp
call fcn.0040c150
inc edi
cmp edi, 0x100
jl 0x40b542
lea edi, [ebp + 0x425]
mov ecx, 0x40
rep movsd dword es:[edi], dword [esi]
jmp 0x40b645
mov al, byte [ebp + 0x525]
test al, al
je 0x40b5ee
mov cl, byte [ebp + 0x526]
test cl, cl
jne 0x40b5ea
mov al, byte [ebp + 0x2c5]
test al, al
jne 0x40b637
mov al, byte [ebp + 0x2c6]
test al, al
jne 0x40b5c8
mov ecx, dword [ebp + 0x934]
mov edx, dword [ecx]
push 0
push 0x10
call dword [edx + 0x5c]
mov ecx, dword [ebp + 0x934]
mov eax, dword [ecx]
push 0
push 0xa0
call dword [eax + 0x5c]
mov byte [ebp + 0x235], 0x80
mov byte [ebp + 0x2c5], 0x80
jmp 0x40b637
test al, al
jne 0x40b637
mov al, byte [ebp + 0x526]
test al, al
je 0x40b637
mov al, byte [ebp + 0x2c5]
test al, al
je 0x40b637
mov ecx, dword [ebp + 0x934]
mov edx, dword [ecx]
push 0xa0
call dword [edx + 0x60]
mov al, byte [ebp + 0x2c6]
test al, al
jne 0x40b629
mov ecx, dword [ebp + 0x934]
mov eax, dword [ecx]
push 0x10
call dword [eax + 0x60]
mov byte [ebp + 0x235], 0
mov byte [ebp + 0x2c5], 0
mov byte [ebp + 0x526], 0
mov byte [ebp + 0x525], 0
push 0x14
call ebx
mov bx, ax
mov al, byte [ebp + 0x527]
and bl, 1
cmp al, bl
je 0x40b66d
push 0
push 0xf0
mov ecx, ebp
call fcn.0040bfb0
mov byte [ebp + 0x527], bl
mov al, byte [ebp + 0x528]
test al, al
je 0x40b6b9
mov al, byte [ebp + 0x938]
test al, al
jne 0x40b6b9
lea esi, [ebp + 0x225]
mov ebx, 0xfffffddb
mov edi, esi
sub ebx, ebp
mov al, byte [edi]
test al, 0x80
je 0x40b6ab
and al, 0x7f
mov byte [edi], al
jne 0x40b6ab
mov ecx, dword [ebp + 0x934]
mov edx, dword [ecx]
lea eax, [ebx + edi]
push eax
call dword [edx + 0x60]
inc edi
lea ecx, [ebx + edi]
cmp ecx, 0x100
jl 0x40b690
jmp 0x40b6f6
lea esi, [ebp + 0x225]
mov ebx, 0xfffffddb
mov edi, esi
sub ebx, ebp
mov al, byte [edi]
mov cl, al
and cl, 0x7f
je 0x40b6ea
and al, 0x80
dec cl
or al, cl
mov byte [edi], al
jne 0x40b6ea
mov ecx, dword [ebp + 0x934]
mov edx, dword [ecx]
lea eax, [edi + ebx]
push eax
call dword [edx + 0x60]
inc edi
lea ecx, [edi + ebx]
cmp ecx, 0x100
jl 0x40b6c8
mov byte [ebp + 0x528], 0
mov byte [esi], 0
mov eax, dword [0x4ee6dc]
test eax, eax
je 0x40b7a2
cmp dword [eax], 0
je 0x40b7a2
mov cl, byte [0x9096c9]
test cl, cl
je 0x40b77d
cmp dword [eax], 0
je 0x40b7a2
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x40b77d
push esi
call ecx
add esp, 4
test eax, eax
je 0x40b778
mov eax, dword [0x4ee6dc]
cmp dword [eax], 0
je 0x40b7a2
mov ecx, dword [eax + 0x18]
test ecx, ecx
je 0x40b77d
call ecx
test eax, eax
je 0x40b778
mov eax, dword [0x4ee6dc]
cmp dword [eax], 0
je 0x40b764
mov eax, dword [eax + 0x10]
test eax, eax
je 0x40b764
push esi
call eax
add esp, 4
pop edi
pop esi
mov byte [ebp + 0x2ad], 0
mov byte [ebp + 0x2ae], 0
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [0x4ee6dc]
cmp dword [eax], 0
je 0x40b7a2
mov eax, dword [eax + 0x20]
test eax, eax
je 0x40b7a2
lea edx, [esp + 0x10]
push edx
call eax
add esp, 4
test eax, eax
je 0x40b7a2
mov edi, dword [esp + 0x10]
mov ecx, 0x40
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret