Function at 0x41ef60
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 0x41ef77
jmp 0x41f2fa
mov ecx, dword [ebp + 8]
push ecx
mov ecx, 0x50a8e78
call fcn.00415e20
push 0
mov ecx, 0x50a8e78
call fcn.00458e90
mov edx, dword [ebp - 4]
mov eax, dword [edx + 0x14]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 3
jl 0x41f2fa
cmp dword [ebp - 0x10], 4
jle 0x41f205
cmp dword [ebp - 0x10], 5
je 0x41efb9
jmp 0x41f2fa
mov ecx, 0x50a8e78
call fcn.00458f00
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0x113
jg 0x41f000
cmp dword [ebp - 8], 0x113
je 0x41f13e
mov ecx, dword [ebp - 8]
sub ecx, 1
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], 0x6c
ja case.0x41eff9.2
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 0x41f324]
jmp dword [eax*4 + 0x41f300]
cmp dword [ebp - 8], 0x114
je 0x41f15d
jmp case.0x41eff9.2
push 0x11
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f054
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx edx, ax
and edx, 0x8000
jle 0x41f052
push 0
sub esp, 8
movsd xmm0, qword [0x4c7dd8]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041de50
jmp 0x41f09b
push 0x12
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
cwde
and eax, 0x8000
jle 0x41f093
push 0x20
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
movsx ecx, ax
and ecx, 0x8000
jle 0x41f091
push 0
sub esp, 8
movsd xmm0, qword [0x4c7dd8]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041ded0
jmp 0x41f09b
mov ecx, dword [ebp - 4]
call fcn.0041df50
jmp 0x41f200
mov edx, dword [ebp - 4]
movzx eax, byte [edx + 0xe934]
test eax, eax
je 0x41f0ce
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x10], 1
mov edx, dword [ebp - 4]
mov byte [edx + 0xe934], 0
push 0xffffffffffffffff
mov ecx, 0x489e1d0
call fcn.0041c8b0
mov eax, dword [ebp - 4]
cmp dword [eax + 0x10], 8
jne 0x41f0e3
push 0xfffffffffffffff4
mov ecx, 0x489e1d0
call fcn.0041c8b0
mov ecx, dword [ebp - 4]
call fcn.0041e500
mov ecx, 0x489e1d0
call fcn.0045f3a0
mov ecx, 0x489e1d0
call fcn.0045f8f0
jmp 0x41f200
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 0x41f200
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 0x41f200
push 1
sub esp, 8
movsd xmm0, qword [0x4c7d88]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041de50
jmp 0x41f200
push 1
sub esp, 8
movsd xmm0, qword [0x4c7d88]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041ded0
jmp 0x41f200
push 1
sub esp, 8
movsd xmm0, qword [0x4c7d88]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041de50
jmp 0x41f200
push 1
sub esp, 8
movsd xmm0, qword [0x4c7d88]
movsd qword [esp], xmm0
mov ecx, dword [ebp - 4]
call fcn.0041ded0
jmp 0x41f200
push 0
mov ecx, 0x489e1d0
call fcn.0045f9e0
jmp 0x41f200
push 0
mov ecx, 0x489e1d0
call fcn.0045fa80
jmp 0x41f200
mov ecx, dword [ebp - 4]
cmp dword [ecx + 0x1c], 0
jge 0x41f200
mov ecx, 0x489e1d0
call fcn.00415d90
push eax
mov ecx, 0x50a8e78
call fcn.00458fd0
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 0x41f2fa
mov ecx, 0x50a8e78
call fcn.00458f00
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.0x41f22f.2
mov ecx, dword [ebp - 0xc]
movzx edx, byte [ecx + 0x41f3ac]
jmp dword [edx*4 + 0x41f394]
mov ecx, dword [ebp - 4]
call fcn.0041df50
jmp 0x41f2fa
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 0x41f267
mov ecx, dword [ebp - 4]
mov dword [ecx + 0x1c], 0x101
jmp 0x41f271
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, 0x4792b78
call fcn.004741a0
jmp 0x41f2fa
mov ecx, 0x48a60f4
call fcn.00415e80
mov edx, dword [ebp - 4]
mov dword [edx + 0x14], 5
mov ecx, dword [ebp - 4]
call fcn.00415cc0
jmp 0x41f2fa
push 0
mov ecx, 0x489e1d0
call fcn.0045f9e0
jmp 0x41f2fa
push 0
mov ecx, 0x489e1d0
call fcn.0045fa80
jmp 0x41f2fa
mov eax, dword [ebp - 4]
cmp dword [eax + 0x1c], 0
jge 0x41f2fa
mov ecx, 0x489e1d0
call fcn.00415d90
push eax
mov ecx, 0x50a8e78
call fcn.00458fd0
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