Function at 0x48edf0
Capabilities:
Log keystrokes via polling

Disassembly:
mov al, byte [0x6aada0]
sub esp, 0xf8
test al, al
je 0x48f120
mov ecx, dword [0x6aafa8]
push ebx
push ebp
xor eax, eax
cmp ecx, eax
push esi
push edi
mov byte [0x6aada1], 0
mov word [0x6aaea2], ax
mov word [0x6aaea4], ax
je 0x48ef7f
mov ebp, 1
mov dword [esp + 0x10], ebp
mov eax, 0x6aadc8
mov edx, 0x6d
lea ecx, [ecx]
cmp byte [eax + 0x6d], 1
jne 0x48ee4b
mov byte [eax], 0
jmp 0x48ee64
mov cl, byte [eax]
test cl, cl
jbe 0x48ee64
movzx ecx, cl
inc ecx
cmp ecx, 0xff
jle 0x48ee62
mov ecx, 0xff
mov byte [eax], cl
inc eax
dec edx
jne 0x48ee40
mov ecx, 0x1b
xor eax, eax
mov edi, 0x6aae35
rep stosd dword es:[edi], eax
stosb byte es:[edi], al
mov edi, dword [sym.imp.user32.dll_GetAsyncKeyState]
mov bl, 2
nop
mov eax, dword [0x6aafa8]
mov ecx, dword [eax]
push 0
lea edx, [esp + 0x14]
push edx
lea edx, [esp + 0x1c]
push edx
push 0x14
push eax
call dword [ecx + 0x28]
test eax, eax
jg 0x48ef3e
je 0x48eeca
cmp eax, 0x8007000c
je 0x48eeb5
cmp eax, 0x8007001e
jne 0x48ef43
mov eax, dword [0x6aafa8]
mov dword [esp + 0x10], 0
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
jmp 0x48ef32
cmp dword [esp + 0x10], ebp
jne 0x48ef7f
mov edx, dword [esp + 0x14]
mov si, word [edx*2 + 0x656c28]
cmp si, 0xffff
je 0x48ee80
cmp si, 0x1e
jne 0x48eefd
push 0x12
call edi
test ah, ah
jns 0x48eefd
mov byte [0x6aade6], 0
jmp 0x48ef32
mov al, byte [esp + 0x18]
test al, al
movsx eax, si
jns 0x48ef11
mov byte [eax + 0x6aadc8], 1
jmp 0x48ef32
cmp byte [eax + 0x6aadc8], 1
jne 0x48ef2b
test byte [0x7043e2], bl
jne 0x48ef2b
mov byte [eax + 0x6aae35], 1
jmp 0x48ef32
mov byte [eax + 0x6aadc8], 0
cmp dword [esp + 0x10], ebp
je 0x48ee80
jmp 0x48ef7f
mov ecx, eax
dec ecx
je 0x48ef53
push str.IDirectInputDevice_GetDeviceData__mouse_
push eax
call fcn.004907d0
add esp, 8
jmp 0x48ef7f
push str.keyboard_buffer_overflow
push ebp
call fcn.004907d0
mov eax, dword [0x6aafa8]
add esp, 8
push 0
lea edx, [esp + 0x14]
push edx
push 0
push 0x14
mov dword [esp + 0x20], 0xffffffff
mov ecx, dword [eax]
push eax
call dword [ecx + 0x28]
mov eax, dword [0x6aafac]
test eax, eax
je 0x48f01b
mov ecx, dword [0x70b418]
test ecx, ecx
jne 0x48f01b
mov ecx, dword [eax]
lea edx, [esp + 0x14]
push edx
push 0x14
push eax
call dword [ecx + 0x24]
mov esi, eax
cmp esi, 0x8007000c
je 0x48efe0
cmp esi, 0x8007001e
je 0x48efe0
test esi, esi
je 0x48efcd
push str.GetDeviceState__mouse_
push esi
call fcn.004907d0
add esp, 8
jmp 0x48efeb
push 0x6aafb4
lea ecx, [esp + 0x18]
call fcn.00490240
add esp, 4
jmp 0x48f01b
mov eax, dword [0x6aafac]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
test esi, esi
jge 0x48f01b
xor edx, edx
mov dword [0x6aafb4], edx
mov dword [0x6aafb8], edx
mov dword [0x6aafbc], edx
mov dword [0x6aafc0], edx
mov dword [0x6aafc4], edx
mov dword [0x6aafc8], edx
mov dword [0x6aafcc], edx
mov eax, dword [0x70b418]
xor ebp, ebp
test eax, eax
jne 0x48f11c
mov ebx, 0x6ab010
nop
cmp ebx, 0x6ac210
jge 0x48f11c
mov ecx, dword [0x6aafec]
movsx eax, bp
cmp eax, ecx
jge 0x48f108
lea eax, [eax + eax*8]
shl eax, 6
cmp dword [eax + 0x6ab240], 0xffffffff
setne al
test al, al
je 0x48f108
mov eax, dword [ebp*4 + 0x6aaff0]
test eax, eax
je 0x48f108
mov ecx, dword [eax]
mov edi, dword [ebx + 0x230]
push eax
call dword [ecx + 0x64]
mov esi, eax
test esi, esi
jl 0x48f09f
mov eax, dword [ebp*4 + 0x6aaff0]
mov edx, dword [eax]
lea ecx, [esp + 0x28]
push ecx
push 0xe0
push eax
call dword [edx + 0x24]
mov esi, eax
cmp esi, 0x8007000c
je 0x48f0df
cmp esi, 0x8007001e
je 0x48f0df
test esi, esi
je 0x48f0c3
push str.Poll_GetDeviceState__gamepad_
push esi
call fcn.004907d0
add esp, 8
jmp 0x48f0ec
lea edx, [edi + edi*4]
shl edx, 5
add edx, 0x6ac210
push edx
lea eax, [esp + 0x2c]
push eax
call fcn.00490650
add esp, 8
jmp 0x48f108
mov eax, dword [ebp*4 + 0x6aaff0]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x1c]
test esi, esi
jge 0x48f108
lea edi, [edi + edi*4]
shl edi, 5
add edi, 0x6ac210
mov ecx, 0x28
mov esi, 0x6ac4a0
rep movsd dword es:[edi], dword [esi]
mov eax, dword [0x70b418]
inc ebp
add ebx, 0x240
test eax, eax
je 0x48f030
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xf8
ret