Function at 0x40eae0
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0xc]
push ebp
push esi
cmp ebx, 0x200
push edi
jb 0x40eaf9
cmp ebx, 0x20a
jbe 0x40eb05
cmp ebx, 0x2a1
jne 0x40ed25
mov edi, dword [esp + 0x20]
xor ebp, ebp
cmp ebx, 0x20a
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], ebp
je 0x40eb31
mov eax, edi
mov ecx, edi
and eax, 0xffff
shr ecx, 0x10
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], ecx
jmp 0x40eb4d
lea eax, [esp + 0x18]
lea ecx, [esp + 0x10]
push eax
push ecx
mov ecx, 0x4be4ac
call fcn.00404320
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
push ecx
push eax
mov ecx, 0x4be4ac
call fcn.00404300
mov edx, dword [esp + 0x1c]
push edi
push edx
push ebx
call fcn.00402850
add esp, 0xc
test eax, eax
je 0x40eb90
mov al, byte [0x4be538]
test al, al
je 0x40eead
mov ecx, 0x4c06a0
mov byte [0x4be538], 0
call fcn.0048a940
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push eax
push ecx
mov ecx, 0x4bd618
call fcn.004018a0
mov eax, dword [0x4be498]
cmp eax, ebp
jne 0x40ebf7
mov eax, dword [0x4be49c]
cmp eax, ebp
jne 0x40ebf7
cmp ebx, 0x201
je 0x40ebce
cmp ebx, 0x204
je 0x40ebce
cmp ebx, 0x207
jne 0x40ebe4
cmp dword [0x4be504], ebp
jne 0x40ebe4
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push 1
push edx
push eax
jmp 0x40ebef
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
push ebp
push ecx
push edx
call fcn.0040eee0
add esp, 0xc
xor esi, esi
cmp eax, ebp
je 0x40ec10
mov ecx, dword [esp + 0x18]
mov edx, dword [eax]
push ecx
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, eax
call dword [edx + 0x2c]
mov esi, eax
mov ecx, dword [0x4be494]
cmp esi, ecx
je 0x40ec7f
mov ecx, 0x4bd618
call fcn.004014a0
mov ecx, dword [0x4be494]
cmp ecx, ebp
je 0x40ec52
mov edx, dword [ecx]
push ebp
push ebp
push 0x507
call dword [edx + 0x10]
mov eax, dword [0x4be494]
mov ecx, dword [eax + 0x3c]
cmp ecx, ebp
je 0x40ec52
mov edx, dword [ecx]
push ebp
push eax
push 0x509
call dword [edx + 0x10]
cmp esi, ebp
je 0x40ec77
mov eax, dword [esi]
push ebp
push ebp
push 0x506
mov ecx, esi
call dword [eax + 0x10]
mov ecx, dword [esi + 0x3c]
cmp ecx, ebp
je 0x40ec77
mov edx, dword [ecx]
push ebp
push esi
push 0x508
call dword [edx + 0x10]
mov ecx, esi
mov dword [0x4be494], ecx
mov eax, dword [0x4be490]
cmp eax, ebp
je 0x40ecb3
cmp esi, eax
je 0x40ecb3
cmp ebx, 0x201
je 0x40eca4
cmp ebx, 0x204
je 0x40eca4
cmp ebx, 0x207
jne 0x40ecb3
push ebp
call fcn.0040f010
mov ecx, dword [0x4be494]
add esp, 4
cmp ecx, ebp
jne 0x40ecf5
mov ecx, dword [0x4be498]
cmp ecx, ebp
jne 0x40ecf5
cmp dword [0x4be49c], ebp
jne 0x40ed01
mov al, byte [0x4be530]
test al, al
jne 0x40ed01
mov ecx, dword [0x4be52c]
cmp ecx, ebp
je 0x40ed01
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx]
push edi
push edx
push ebx
call dword [eax + 0x10]
pop edi
pop esi
pop ebp
mov byte [0x4be538], 1
pop ebx
pop ecx
ret
mov edx, dword [esp + 0x1c]
mov eax, dword [ecx]
push edi
push edx
push ebx
call dword [eax + 0x10]
mov al, byte [0x4be538]
test al, al
je 0x40eead
mov ecx, 0x4c06a0
mov byte [0x4be538], 0
call fcn.0048a940
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
push esi
push ebp
push ebx
call fcn.00402850
add esp, 0xc
test eax, eax
jne 0x40eead
mov ecx, dword [0x4be490]
test ecx, ecx
je 0x40ed5a
mov eax, dword [ecx]
push esi
push ebp
push ebx
call dword [eax + 0x10]
test eax, eax
jne 0x40eead
mov ecx, dword [0x4be49c]
test ecx, ecx
je 0x40ed72
mov edx, dword [ecx]
push esi
push ebp
push ebx
call dword [edx + 0x10]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
cmp ebx, 0x100
je 0x40edda
cmp ebx, 0x101
jne 0x40ed8c
cmp ebp, 0x2c
je 0x40edda
jmp 0x40ee1a
cmp ebx, 0x104
jne 0x40ee1a
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
xor esi, esi
call edi
test ah, 0x80
je 0x40edae
mov esi, 2
push 0x10
call edi
test ah, 0x80
je 0x40edba
or esi, 1
push 0x12
call edi
test ah, 0x80
je 0x40edc6
or esi, 4
push esi
push ebp
call fcn.00481810
add esp, 8
test eax, eax
je 0x40ee1a
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
xor esi, esi
call edi
test ah, 0x80
je 0x40edf0
mov esi, 2
push 0x10
call edi
test ah, 0x80
je 0x40edfc
or esi, 1
push 0x12
call edi
test ah, 0x80
je 0x40ee08
or esi, 4
push esi
push ebp
call fcn.00481810
add esp, 8
test eax, eax
jne 0x40eead
xor ebp, ebp
xor ebx, ebx
test ebp, ebp
jne 0x40eead
test ebx, ebx
jne 0x40ee32
mov esi, dword [0x4be484]
jmp 0x40ee43
mov esi, dword [0x4be444]
cmp ebx, 1
je 0x40ee43
mov esi, dword [0x4be404]
test esi, esi
je 0x40ee7c
mov edi, dword [esi + 0x34]
mov ecx, esi
call fcn.004110d0
test eax, eax
je 0x40ee6f
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov eax, dword [esi]
push ecx
mov ecx, dword [esp + 0x1c]
push edx
push ecx
mov ecx, esi
call dword [eax + 0x10]
test eax, eax
jne 0x40ee77
test edi, edi
mov esi, edi
jne 0x40ee47
jmp 0x40ee7c
mov ebp, 1
inc ebx
cmp ebx, 3
jl 0x40ee1e
test ebp, ebp
jne 0x40eead
mov ecx, dword [0x4be52c]
test ecx, ecx
je 0x40eead
mov al, byte [0x4be530]
test al, al
jne 0x40eead
mov eax, dword [esp + 0x20]
mov edx, dword [ecx]
push eax
mov eax, dword [esp + 0x20]
push eax
mov eax, dword [esp + 0x20]
push eax
call dword [edx + 0x10]
pop edi
pop esi
pop ebp
pop ebx
pop ecx
ret