Function at 0x4971a0
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x52cda3
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
mov eax, dword [0x578750]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x38]
call fcn.004974c0
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x4971de
jmp 0x4974a5
mov eax, dword [ebp - 0x28]
push eax
call fcn.00504c07
add esp, 4
test eax, eax
jne 0x497205
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x30], ecx
mov edx, dword [ebp - 0x30]
push edx
call fcn.004d7c40
add esp, 4
jmp 0x4974a5
mov byte [0x57a27c], 0
mov ecx, dword [ebp - 0x38]
call fcn.004a1680
mov dword [ebp - 0x10], eax
push 1
mov eax, dword [ebp - 0x10]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x10]
mov eax, dword [edx + 0x5c]
call eax
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0x668], 0xffffffff
mov edx, dword [ebp - 0x38]
mov dword [edx + 0x664], 0xffffffff
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x670], 0xffffffff
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0x66c], 0xffffffff
mov ecx, dword [ebp - 0x38]
add ecx, 0x678
call fcn.004021c0
mov edx, dword [ebp - 0x38]
mov dword [edx + 0x680], 0xffffffff
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x67c], 0xffffffff
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0x68c], 1
mov edx, dword [ebp - 0x38]
cmp dword [edx + 0x608], 0
jl 0x4972a3
mov ecx, dword [ebp - 0x38]
call fcn.0047a310
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
cwde
test eax, eax
jge 0x49743d
lea ecx, [ebp - 0x2c]
call fcn.00401b80
mov dword [ebp - 4], 0
mov ecx, dword [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x2c]
call fcn.00402b30
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [edx + 0x67c]
cmp ecx, dword [eax + 0x5c0]
jne 0x49730b
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [edx + 0x664]
cmp ecx, dword [eax + 0x5bc]
jne 0x49730b
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [edx + 0x66c]
cmp ecx, dword [eax + 0x5f4]
je 0x49735c
mov ecx, dword [ebp - 0x38]
add ecx, 0x678
call fcn.004021c0
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 0x5bc]
mov dword [edx + 0x664], ecx
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 0x5f4]
mov dword [edx + 0x66c], ecx
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 0x5c0]
mov dword [edx + 0x67c], ecx
mov edx, dword [ebp - 0x38]
mov dword [edx + 0x680], 0xffffffff
mov eax, dword [ebp - 0x38]
mov dword [eax + 0x68c], 1
mov ecx, dword [ebp - 0x38]
add ecx, 0x5bc
push ecx
lea edx, [ebp - 0x2c]
push edx
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 0x5f4]
push ecx
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 0x5c0]
push eax
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + 0x5bc]
push edx
mov ecx, dword [ebp - 0x38]
call fcn.00483880
mov ecx, dword [ebp - 0x38]
mov dword [ecx + 0x5f4], eax
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 0x5c0]
mov ecx, dword [ebp - 0x38]
cmp dword [ecx + eax*4 + 0x64], 2
jne 0x4973d9
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 0x5bc]
push eax
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx + 0x74]
call fcn.004485b0
push eax
mov ecx, dword [ebp - 0x38]
call fcn.0047d830
jmp 0x497408
mov edx, dword [ebp - 0x38]
mov eax, dword [edx + 0x5bc]
push eax
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + 0x5c0]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + edx*4 + 0x64]
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx + ecx*4 + 0x68]
call fcn.004485b0
push eax
mov ecx, dword [ebp - 0x38]
call fcn.0047d830
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + 0x5bc]
mov dword [eax + 0x668], edx
mov eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + 0x5f4]
mov dword [eax + 0x670], edx
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x2c]
call fcn.004d61e0
jmp 0x49744b
push 1
mov eax, dword [ebp - 0x28]
push eax
mov ecx, dword [ebp - 0x38]
call fcn.0047b550
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x34], ecx
mov edx, dword [ebp - 0x34]
push edx
call fcn.004d7c40
add esp, 4
mov eax, dword [ebp - 0x38]
push eax
lea ecx, [ebp - 0x24]
call fcn.004e04d3
mov dword [ebp - 4], 1
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + 0x5a0]
push edx
lea eax, [ebp - 0x24]
push eax
mov ecx, dword [ebp - 0x38]
call fcn.00473850
mov ecx, dword [ebp - 0x38]
call fcn.0047cfb0
mov ecx, dword [ebp - 0x38]
call fcn.00484110
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x24]
call fcn.004e0527
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov esp, ebp
pop ebp
ret