Function at 0x41f6c0
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 0x41f6d7
jmp 0x41fa5a
mov ecx, dword [ebp + 8]
push ecx
mov ecx, 0x59ca610
call fcn.004160f0
push 0
mov ecx, 0x59ca610
call fcn.00459700
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 3
jl 0x41fa5a
cmp dword [ebp - 0x10], 4
jle 0x41f965
cmp dword [ebp - 0x10], 5
je 0x41f719
jmp 0x41fa5a
mov ecx, 0x59ca610
call fcn.00459770
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0x113
jg 0x41f760
cmp dword [ebp - 8], 0x113
je 0x41f89e
mov ecx, dword [ebp - 8]
sub ecx, 1
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0x6c
ja case.0x41f759.2
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 0x41fa84]
jmp dword [eax*4 + 0x41fa60]
cmp dword [ebp - 8], 0x114
je 0x41f8bd
jmp case.0x41f759.2
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f7b4
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx edx, ax
and edx, 0x8000
jle 0x41f7b2
push 0
sub esp, 8
movsd xmm0, qword [0x4d5de0]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e5b0
jmp 0x41f7fb
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cwde
and eax, 0x8000
jle 0x41f7f3
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f7f1
push 0
sub esp, 8
movsd xmm0, qword [0x4d5de0]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e630
jmp 0x41f7fb
mov ecx, dword [ebp - 4]
call fcn.0041e6b0
jmp 0x41f960
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 0xe934]
test eax, eax
je 0x41f82e
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x10], 1
mov edx, dword [ebp - 4]
mov byte [edx + 0xe934], 0
push 0xffffffffffffffff
mov ecx, 0x51ca6a0
call fcn.0041cfa0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x10], 8
jne 0x41f843
push 0xfffffffffffffff4
mov ecx, 0x51ca6a0
call fcn.0041cfa0
mov ecx, dword [ebp - 4]
call fcn.0041ec60
mov ecx, 0x51ca6a0
call fcn.0045fc30
mov ecx, 0x51ca6a0
call fcn.00460180
jmp 0x41f960
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 0x41f960
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 0x41f960
push 1
sub esp, 8
movsd xmm0, qword [0x4d5d90]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e5b0
jmp 0x41f960
push 1
sub esp, 8
movsd xmm0, qword [0x4d5d90]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e630
jmp 0x41f960
push 1
sub esp, 8
movsd xmm0, qword [0x4d5d90]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e5b0
jmp 0x41f960
push 1
sub esp, 8
movsd xmm0, qword [0x4d5d90]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041e630
jmp 0x41f960
push 0
mov ecx, 0x51ca6a0
call fcn.00460270
jmp 0x41f960
push 0
mov ecx, 0x51ca6a0
call fcn.00460310
jmp 0x41f960
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x1c], 0
jge 0x41f960
mov ecx, 0x51ca6a0
call fcn.00416060
push eax
mov ecx, 0x59ca610
call fcn.00459840
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 0x41fa5a
mov ecx, 0x59ca610
call fcn.00459770
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.0x41f98f.2
mov ecx, dword [ebp - 0xc]
movzx edx, byte [ecx + 0x41fb0c]
jmp dword [edx*4 + 0x41faf4]
mov ecx, dword [ebp - 4]
call fcn.0041e6b0
jmp 0x41fa5a
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 0x41f9c7
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x1c], 0x101
jmp 0x41f9d1
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, 0x50bf048
call fcn.004751a0
jmp 0x41fa5a
mov ecx, 0x51cad24
call fcn.00416150
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], 5
mov ecx, dword [ebp - 4]
call fcn.00415f30
jmp 0x41fa5a
push 0
mov ecx, 0x51ca6a0
call fcn.00460270
jmp 0x41fa5a
push 0
mov ecx, 0x51ca6a0
call fcn.00460310
jmp 0x41fa5a
mov eax, dword [ebp - 4]
cmp dword [eax + 0x1c], 0
jge 0x41fa5a
mov ecx, 0x51ca6a0
call fcn.00416060
push eax
mov ecx, 0x59ca610
call fcn.00459840
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