Function at 0x4881d0
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
push edi
call fcn.00488100
test eax, eax
je 0x4881f4
push 0x10
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ah, ah
js 0x4881f4
mov al, byte [esp + 0x20]
test al, al
je 0x488205
mov eax, 0xffffffff
mov dword [0x4cdcf0], eax
mov dword [0x4cdcf4], eax
jmp 0x48821e
mov ecx, dword [0x4cdcf0]
or eax, 0xffffffff
cmp ecx, eax
je 0x48821e
cmp dword [0x4cdcf4], eax
jne 0x4883bf
mov eax, dword [0x4e64d0]
xor ebx, ebx
cmp eax, ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], ebx
jle 0x4883bf
mov ebp, dword [0x4e64d4]
add ebp, 0x500
jmp 0x488245
xor ebx, ebx
cmp dword [ebp], ebx
jle 0x4883a2
mov dword [esp + 0x10], ebx
mov esi, dword [ebp + 8]
mov ecx, dword [esp + 0x10]
mov eax, dword [0x4cd6a0]
add esi, ecx
test eax, eax
jne 0x4882c6
test dword [ebp - 0xc8], 0x80000
je 0x48838b
cmp dword [esi + 0x14], 1
jne 0x48838b
mov eax, dword [0x4dde34]
cmp dword [esi + 0xc], eax
jne 0x48838b
mov eax, dword [esi + 8]
cmp eax, 0x3c
je 0x48829c
test eax, eax
jne 0x48838b
mov eax, dword [esi]
cmp eax, 0x280
jb 0x48838b
mov edi, dword [esi + 4]
cmp edi, 0x1e0
jb 0x48838b
cmp eax, 0x280
jne 0x4882d1
mov ecx, 0x64
jmp 0x4882e3
cmp dword [esi + 0x10], 1
je 0x48828c
jmp 0x48838b
lea ecx, [eax - 0x280]
mov eax, 0xcccccccd
mul ecx
mov ecx, edx
shr ecx, 4
cmp edi, 0x1e0
jne 0x4882f2
imul ecx, ecx, 0x64
mov edx, ecx
jmp 0x488305
add edi, 0xfffffe20
mov eax, 0xcccccccd
mul edi
shr edx, 4
imul edx, ecx
mov edi, dword [esi + 0xc]
xor ecx, ecx
mov eax, 0x4cdd08
nop
cmp dword [eax], edi
je 0x488321
add eax, 0x38
inc ecx
cmp eax, 0x4cdf00
jl 0x488310
jmp 0x48832f
mov eax, ecx
imul eax, eax, 0x38
mov eax, dword [eax + 0x4cdd0c]
imul edx, eax
cmp ecx, 9
je 0x48838b
xor ecx, ecx
mov eax, 0x4cdf08
jmp 0x488340
cmp dword [eax - 4], 0x20
jne 0x48834b
cmp dword [eax], 8
je 0x488358
add eax, 0xc
inc ecx
cmp eax, 0x4cdf50
jl 0x488340
jmp 0x488365
mov eax, dword [esi + ecx*4 + 0x44]
test eax, eax
je 0x488365
lea edx, [edx + edx*4]
shl edx, 1
mov eax, dword [ebp + 4]
test eax, eax
je 0x488371
lea edx, [edx + edx*4]
shl edx, 1
cmp edx, dword [esp + 0x18]
jbe 0x48838b
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x18], edx
mov dword [0x4cdcf0], ecx
mov dword [0x4cdcf4], ebx
mov ecx, dword [esp + 0x10]
mov eax, dword [ebp]
inc ebx
add ecx, 0x5c
cmp ebx, eax
mov dword [esp + 0x10], ecx
jl 0x488252
mov eax, dword [esp + 0x14]
mov ecx, dword [0x4e64d0]
inc eax
add ebp, 0x50c
cmp eax, ecx
mov dword [esp + 0x14], eax
jl 0x488243
mov ecx, dword [0x4cdcf0]
or eax, 0xffffffff
cmp ecx, eax
je 0x48877d
cmp dword [0x4cdcf4], eax
je 0x48877d
call fcn.004880a0
mov ebp, dword [0x4e62dc]
mov edx, dword [0x4cdcf0]
mov esi, dword [0x4e64d4]
xor eax, eax
mov ecx, 0xd
mov edi, 0x4dde38
rep stosd dword es:[edi], eax
mov eax, dword [0x4cd6a0]
test eax, eax
mov edi, dword [0x4cdcf4]
mov dword [0x4dde50], ebp
je 0x48846d
mov eax, edx
imul eax, eax, 0x50c
lea ecx, [eax + esi + 0x508]
mov eax, edi
imul eax, eax, 0x5c
mov dword [0x4dde54], 0
mov dword [0x4dde44], 1
mov ebx, dword [ecx]
mov ebx, dword [eax + ebx]
mov dword [0x4dde38], ebx
mov ebx, dword [ecx]
mov ebx, dword [eax + ebx + 4]
mov dword [0x4dde3c], ebx
mov ebx, 1
mov dword [0x4dde68], ebx
mov ecx, dword [ecx]
mov eax, dword [eax + ecx + 8]
mov dword [0x4dde64], eax
jmp 0x48847e
mov eax, 1
mov dword [0x4dde54], eax
mov dword [0x4dde44], eax
mov ebx, eax
mov ecx, edx
imul ecx, ecx, 0x50c
mov eax, edi
imul eax, eax, 0x5c
add esi, ecx
mov dword [0x4dde48], 0
mov ecx, dword [esi + 0x508]
mov ecx, dword [eax + ecx + 0xc]
mov dword [0x4dde40], ecx
mov dword [0x4dde4c], ebx
mov dword [0x4dde58], ebx
mov dword [0x4dde60], ebx
mov ecx, dword [esi + 0x508]
add ecx, eax
mov eax, dword [ecx + 0x48]
xor edi, edi
cmp eax, edi
je 0x4884dc
mov dword [0x4cdcf8], ebx
mov dword [0x4dde5c], 0x4b
jmp 0x488505
xor eax, eax
add ecx, 0x44
cmp dword [ecx], edi
jne 0x4884f0
inc eax
add ecx, 4
cmp eax, 6
jl 0x4884e1
jmp 0x488505
mov dword [0x4cdcf8], eax
lea eax, [eax + eax*2]
mov ecx, dword [eax*4 + 0x4cdf00]
mov dword [0x4dde5c], ecx
cmp dword [esi + 0x504], edi
je 0x488599
mov eax, dword [0x4de4a0]
mov ecx, dword [eax]
push 0x4de4a4
push 0x4dde38
push 0x40
push ebp
push ebx
push edx
push eax
call dword [ecx + 0x3c]
cmp eax, edi
jge 0x4885eb
cmp dword [0x4cdcfc], ebx
jle 0x488547
mov dword [0x4cdcfc], ebx
mov dword [0x4dde9c], ebx
mov edx, dword [0x4cdcf0]
mov ecx, dword [0x4e64d4]
imul edx, edx, 0x50c
push eax
push str.Failed_to_create_Hardware_Vertex_Processing___switching_to_software__0x_08x__n
mov dword [edx + ecx + 0x504], edi
call fcn.004777d0
mov ecx, dword [0x4e62dc]
mov eax, dword [0x4de4a0]
mov edx, dword [eax]
add esp, 8
push 0x4de4a4
push 0x4dde38
push 0x80
push ecx
mov ecx, dword [0x4cdcf0]
push ebx
push ecx
push eax
call dword [edx + 0x3c]
jmp 0x4885ca
cmp dword [0x4cdcfc], ebx
jle 0x4885ad
mov dword [0x4cdcfc], ebx
mov dword [0x4dde9c], ebx
mov eax, dword [0x4de4a0]
mov ecx, dword [eax]
push 0x4de4a4
push 0x4dde38
push 0x80
push ebp
push ebx
push edx
push eax
call dword [ecx + 0x3c]
cmp eax, edi
jge 0x4885eb
push eax
push str.Unable_to_create_d3d_device__0x_08x__n
call fcn.004777d0
add esp, 8
call fcn.0048c5a0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xc
ret
mov eax, dword [0x4cdcf0]
mov ecx, dword [0x4e64d4]
imul eax, eax, 0x50c
mov edx, ebx
lea eax, [eax + ecx + 0x46c]
mov dword [0x4e64b8], ebx
mov dword [0x4e6484], edx
test dword [eax], 0x2000000
mov esi, 2
je 0x48862c
mov edx, esi
mov dword [0x4e64b8], esi
mov dword [0x4e6484], edx
mov ecx, ebx
mov dword [0x4e6420], ebx
mov dword [0x4e6434], ecx
test dword [eax], 0x200
je 0x488650
mov ecx, esi
mov dword [0x4e6420], esi
mov dword [0x4e6434], ecx
mov dword [0x4e64c8], edi
test dword [eax], 0x10000
je 0x488664
mov dword [0x4e64c8], ebx
test dword [eax], 0x20000
je 0x488672
mov dword [0x4e64c8], esi
cmp dword [0x4de4b8], edi
mov dword [0x4e64b4], edx
mov dword [0x4e64c4], ecx
jne 0x4886dc
mov eax, dword [0x4de4a4]
mov edx, dword [eax]
push edi
push 0x3f800000
push edi
push ebx
push edi
push edi
push eax
call dword [edx + 0x90]
mov eax, dword [0x4de4a4]
mov ecx, dword [eax]
push edi
push edi
push edi
push edi
push eax
call dword [ecx + 0x3c]
cmp dword [0x4de4b8], edi
jne 0x4886dc
mov eax, dword [0x4de4a4]
mov edx, dword [eax]
push edi
push 0x3f800000
push edi
push ebx
push edi
push edi
push eax
call dword [edx + 0x90]
mov eax, dword [0x4de4a4]
mov ecx, dword [eax]
push edi
push edi
push edi
push edi
push eax
call dword [ecx + 0x3c]
cmp dword [0x4cd6a0], edi
jne 0x48874e
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 7
call esi
mov edx, dword [0x4cdcf0]
mov ecx, dword [0x4cdcf4]
imul edx, edx, 0x50c
mov edi, dword [0x4e64d4]
imul ecx, ecx, 0x5c
mov edx, dword [edx + edi + 0x508]
mov ecx, dword [edx + ecx]
push 8
lea edi, [ecx + eax*2]
call esi
push 0x37
mov ebp, eax
call esi
mov ecx, dword [0x4cdcf4]
mov esi, dword [0x4e64d4]
lea edx, [eax + ebp*2]
mov eax, dword [0x4cdcf0]
imul eax, eax, 0x50c
imul ecx, ecx, 0x5c
mov eax, dword [eax + esi + 0x508]
mov ecx, dword [eax + ecx + 4]
lea eax, [edx + ecx + 7]
jmp 0x488759
mov edi, dword [0x4dde38]
mov eax, dword [0x4dde3c]
mov edx, dword [0x4e62dc]
push 0x202
push eax
push edi
push 0
push 0
push 0
push edx
call dword [sym.imp.USER32.dll_SetWindowPos]
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0xc
ret
push str.Unable_to_locate_a_valid_screen_mode_n
call fcn.004777d0
add esp, 4
call fcn.0048c5a0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xc
ret