Function at 0x41f2c0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
mov dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
cmp dword [eax + 0x14], 2
jne 0x41f2d7
jmp 0x41f65a
mov ecx, dword [ebp + 8]
push ecx
mov ecx, 0x50a9e78
call fcn.00415e20
push 0
mov ecx, 0x50a9e78
call fcn.00459f30
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 3
jl 0x41f65a
cmp dword [ebp - 0x10], 4
jle 0x41f565
cmp dword [ebp - 0x10], 5
je 0x41f319
jmp 0x41f65a
mov ecx, 0x50a9e78
call fcn.00459fa0
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0x113
jg 0x41f360
cmp dword [ebp - 8], 0x113
je 0x41f49e
mov ecx, dword [ebp - 8]
sub ecx, 1
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0x6c
ja case.0x41f359.2
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 0x41f684]
jmp dword [eax*4 + 0x41f660]
cmp dword [ebp - 8], 0x114
je 0x41f4bd
jmp case.0x41f359.2
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f3b4
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx edx, ax
and edx, 0x8000
jle 0x41f3b2
push 0
sub esp, 8
movsd xmm0, qword [0x4c9088]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e1b0
jmp 0x41f3fb
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cwde
and eax, 0x8000
jle 0x41f3f3
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f3f1
push 0
sub esp, 8
movsd xmm0, qword [0x4c9088]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e230
jmp 0x41f3fb
mov ecx, dword [ebp - 4]
call fcn.0041e2b0
jmp 0x41f560
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 0xe934]
test eax, eax
je 0x41f42e
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x10], 1
mov edx, dword [ebp - 4]
mov byte [edx + 0xe934], 0
push 0xffffffffffffffff
mov ecx, 0x489f1d0
call fcn.0041cbe0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x10], 8
jne 0x41f443
push 0xfffffffffffffff4
mov ecx, 0x489f1d0
call fcn.0041cbe0
mov ecx, dword [ebp - 4]
call fcn.0041e860
mov ecx, 0x489f1d0
call fcn.004604c0
mov ecx, 0x489f1d0
call fcn.00460a10
jmp 0x41f560
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x1c]
mov dword [ecx + 0x20], eax
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x1c]
mov dword [ecx + 0x18], eax
jmp 0x41f560
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x1c]
mov dword [ecx + 0x20], eax
mov ecx, dword [ebp - 4]
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x1c]
mov dword [ecx + 0x18], eax
jmp 0x41f560
push 1
sub esp, 8
movsd xmm0, qword [0x4c9038]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e1b0
jmp 0x41f560
push 1
sub esp, 8
movsd xmm0, qword [0x4c9038]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e230
jmp 0x41f560
push 1
sub esp, 8
movsd xmm0, qword [0x4c9038]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e1b0
jmp 0x41f560
push 1
sub esp, 8
movsd xmm0, qword [0x4c9038]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e230
jmp 0x41f560
push 0
mov ecx, 0x489f1d0
call fcn.00460b00
jmp 0x41f560
push 0
mov ecx, 0x489f1d0
call fcn.00460ba0
jmp 0x41f560
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x1c], 0
jge 0x41f560
mov ecx, 0x489f1d0
call fcn.00415d90
push eax
mov ecx, 0x50a9e78
call fcn.0045a070
mov edx, dword [ebp - 4]
mov dword [edx + 0x18], eax
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 0x18]
mov dword [eax + 0x1c], edx
jmp 0x41f65a
mov ecx, 0x50a9e78
call fcn.00459fa0
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
sub eax, 1
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0x56
ja case.0x41f58f.2
mov ecx, dword [ebp - 0xc]
movzx edx, byte [ecx + 0x41f70c]
jmp dword [edx*4 + 0x41f6f4]
mov ecx, dword [ebp - 4]
call fcn.0041e2b0
jmp 0x41f65a
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 0x1c]
mov dword [eax + 0x20], edx
mov eax, dword [ebp - 4]
cmp dword [eax + 0x1c], 0x100
jne 0x41f5c7
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x1c], 0x101
jmp 0x41f5d1
mov edx, dword [ebp - 4]
mov dword [edx + 0x1c], 0x100
mov eax, dword [ebp - 4]
mov ecx, dword [ebp - 4]
mov edx, dword [ecx + 0x1c]
mov dword [eax + 0x18], edx
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x18]
push ecx
mov ecx, 0x4793b78
call fcn.00475220
jmp 0x41f65a
mov ecx, 0x48a70f4
call fcn.00415e80
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], 5
mov ecx, dword [ebp - 4]
call fcn.00415cc0
jmp 0x41f65a
push 0
mov ecx, 0x489f1d0
call fcn.00460b00
jmp 0x41f65a
push 0
mov ecx, 0x489f1d0
call fcn.00460ba0
jmp 0x41f65a
mov eax, dword [ebp - 4]
cmp dword [eax + 0x1c], 0
jge 0x41f65a
mov ecx, 0x489f1d0
call fcn.00415d90
push eax
mov ecx, 0x50a9e78
call fcn.0045a070
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x18], eax
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x18]
mov dword [edx + 0x1c], ecx
mov esp, ebp
pop ebp
ret 4