Function at 0x41ae30
Capabilities:
Log keystrokes via polling

Disassembly:
push ecx
push esi
mov esi, ecx
call fcn.00404a40
mov eax, dword [esi]
test ah, 0x20
je 0x41ae9f
mov ecx, esi
call fcn.00405eb0
test eax, eax
je 0x41b123
mov ecx, dword [esi]
and ecx, 0xffffdfff
push 0
mov dword [esi], ecx
call fcn.0040fcf0
mov ecx, eax
call fcn.004100a0
mov ecx, dword [esi + 0x37bc]
lea eax, [esp + 4]
push eax
push 1
push 0x12
push ecx
lea edx, [esi + 0x2290]
push edx
mov dword [esp + 0x18], 0x46
call fcn.0040fcf0
mov ecx, eax
call fcn.00411850
mov dword [esi + 0x2288], 0xffffffff
pop esi
pop ecx
ret
push ebp
call fcn.00404a40
mov ecx, dword [eax + 0x10]
xor ebp, ebp
cmp ecx, ebp
je 0x41aeb6
cmp dword [esi + 0x1c], ebp
je 0x41aeb6
mov dword [esi + 0x1c], ebp
cmp dword [esi + 0x3840], ebp
push edi
je 0x41aef9
call fcn.00404a40
mov edi, dword [eax + 8]
call fcn.00404a40
mov eax, dword [eax + 0x10]
or eax, edi
je 0x41aef9
mov edi, 1
mov dword [esi + 0x2048], edi
mov dword [esi + 0x3838], edi
pop edi
mov dword [esi + 0x3840], ebp
pop ebp
mov dword [esi + 0x2028], 3
pop esi
pop ecx
ret
push ebp
mov ecx, esi
call fcn.0041e9a0
test eax, eax
jne 0x41b121
cmp dword [esi + 0x18], ebp
je 0x41af2f
mov ecx, esi
call fcn.0041edb0
test eax, eax
je 0x41b121
pop edi
mov dword [esi + 0x18], ebp
pop ebp
mov dword [esi + 0x2288], 0xffffffff
pop esi
pop ecx
ret
call fcn.00404a40
cmp word [eax + 0x30], bp
je 0x41af76
mov edi, 1
mov dword [esi + 0x18], edi
mov dword [esi + 0x2050], ebp
call fcn.0040d320
mov ecx, esi
mov dword [eax + 0x6fe8], edi
mov dword [eax + 0x6fec], edi
mov dword [eax + 0x6ff0], edi
call fcn.0041e630
test eax, eax
jne 0x41b121
pop edi
mov dword [esi + 0x18], ebp
pop ebp
pop esi
pop ecx
ret
cmp dword [esi + 0x2050], ebp
je 0x41afc7
call fcn.00404a40
mov edi, dword [eax + 8]
call fcn.00404a40
mov ecx, dword [eax + 4]
or ecx, edi
je 0x41b121
mov dword [esi + 0x2050], ebp
call fcn.0040d320
mov edi, 1
mov dword [eax + 0x6fe8], edi
mov dword [eax + 0x6fec], edi
mov dword [eax + 0x6ff0], edi
pop edi
pop ebp
mov dword [esi + 0x2288], 0xffffffff
pop esi
pop ecx
ret
call fcn.00404a40
cmp dword [eax + 8], ebp
je 0x41aff8
mov edi, 1
mov dword [esi + 0x2050], edi
call fcn.0040d320
mov dword [eax + 0x6fe8], edi
mov dword [eax + 0x6fec], edi
mov dword [eax + 0x6ff0], edi
pop edi
pop ebp
pop esi
pop ecx
ret
cmp dword [esi + 0x20], ebp
mov eax, dword [esi + 0x37c4]
push ebx
je 0x41b06e
cmp eax, ebp
je 0x41b04d
cmp dword [esi + 0x37c8], ebp
je 0x41b04d
test byte [esi], 4
je 0x41b090
lea ecx, [esi + 0x3848]
call fcn.00417ba0
test eax, eax
je 0x41b090
mov ecx, dword [esi]
and ecx, 0xfffffffb
or ebx, 0xffffffff
push ebp
mov dword [esi], ecx
mov dword [esi + 0x2288], ebx
call fcn.0040fcf0
mov ecx, eax
call fcn.004100a0
mov dword [esi + 0x3854], ebx
pop ebx
pop edi
pop ebp
pop esi
pop ecx
ret
mov edx, dword [esi + 0x3394]
add edx, 2
imul edx, edx, 0x3e8
push edx
lea ecx, [esi + 0x3848]
call fcn.00417b70
pop ebx
pop edi
pop ebp
pop esi
pop ecx
ret
cmp eax, ebp
je 0x41b07a
cmp dword [esi + 0x37c8], ebp
jne 0x41b090
mov dword [esi + 0x3854], 0xbb8
call dword [sym.imp.WINMM.dll_timeGetTime]
mov dword [esi + 0x3850], eax
mov eax, dword [esi + 0x1c]
or ebx, 0xffffffff
cmp eax, ebp
je 0x41b0a0
mov dword [esi + 0x3854], ebx
call fcn.00404a40
mov eax, dword [esi]
test al, 0x10
je 0x41b0c9
mov ecx, esi
call fcn.0041a7e0
test eax, eax
je 0x41b120
push ebp
call fcn.0040fcf0
mov ecx, eax
call fcn.004100a0
pop ebx
pop edi
pop ebp
pop esi
pop ecx
ret
test al, 4
je 0x41b120
call fcn.00404a40
mov edi, dword [eax + 4]
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
mov ecx, dword [esi + 0x383c]
mov edx, dword [esi + 0x37b8]
movsx eax, ax
or eax, ecx
or eax, edx
or eax, edi
je 0x41b120
mov ecx, dword [esi]
and ecx, 0xfffffffb
push ebp
mov dword [esi], ecx
mov dword [esi + 0x2288], ebx
call fcn.0040fcf0
mov ecx, eax
call fcn.004100a0
call fcn.00421230
mov ecx, eax
call fcn.00421350
mov dword [esi + 0x3854], ebx
pop ebx
pop edi
pop ebp
pop esi
pop ecx
ret