Function at 0x451790
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x64
mov dword [ebp - 0x60], ecx
mov dword [ebp - 4], 0
mov eax, dword [ebp + 8]
mov dword [ebp - 0x64], eax
cmp dword [ebp - 0x64], 0x507
ja 0x45181d
cmp dword [ebp - 0x64], 0x507
je 0x451d00
cmp dword [ebp - 0x64], 0x2a1
ja 0x4517fe
cmp dword [ebp - 0x64], 0x2a1
je 0x451d00
cmp dword [ebp - 0x64], 0x200
je 0x451d00
cmp dword [ebp - 0x64], 0x201
je 0x451cd7
cmp dword [ebp - 0x64], 0x204
je 0x451cd7
jmp 0x451d2b
cmp dword [ebp - 0x64], 0x501
je 0x451b4a
cmp dword [ebp - 0x64], 0x502
je 0x451b3b
jmp 0x451d2b
cmp dword [ebp - 0x64], 0x565
ja 0x45184e
cmp dword [ebp - 0x64], 0x565
je 0x45186d
cmp dword [ebp - 0x64], 0x511
je 0x451b45
cmp dword [ebp - 0x64], 0x515
je 0x451b40
jmp 0x451d2b
cmp dword [ebp - 0x64], 0x56b
je 0x451ba5
cmp dword [ebp - 0x64], 0x692
je 0x451be3
jmp 0x451d2b
mov ecx, dword [ebp - 0x60]
add ecx, 0x21ac
cmp dword [ebp + 0xc], ecx
jne 0x4518ce
mov edx, dword [ebp - 0x60]
cmp dword [edx + 0x17d0], 0
jle 0x4518c9
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
jne 0x4518a7
push 1
push 0
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x4518c9
lea ecx, [ebp - 0xc]
push ecx
lea edx, [ebp - 8]
push edx
mov ecx, dword [ebp + 0xc]
call fcn.00441c70
push 0
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp - 8]
push ecx
mov ecx, dword [ebp - 0x60]
call fcn.004531e0
jmp 0x451b15
mov edx, dword [ebp - 0x60]
add edx, 0x23fc
cmp dword [ebp + 0xc], edx
jne 0x451930
mov eax, dword [ebp - 0x60]
cmp dword [eax + 0x17d0], 0
jle 0x45192b
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
and ecx, 0x8000
jne 0x451909
push 1
push 1
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x45192b
lea edx, [ebp - 0x14]
push edx
lea eax, [ebp - 0x10]
push eax
mov ecx, dword [ebp + 0xc]
call fcn.00441c70
push 1
mov ecx, dword [ebp - 0x14]
push ecx
mov edx, dword [ebp - 0x10]
push edx
mov ecx, dword [ebp - 0x60]
call fcn.004531e0
jmp 0x451b15
mov eax, dword [ebp - 0x60]
add eax, 0x264c
cmp dword [ebp + 0xc], eax
jne 0x451991
mov ecx, dword [ebp - 0x60]
cmp dword [ecx + 0x17d0], 0
jle 0x45198c
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx edx, ax
and edx, 0x8000
jne 0x45196a
push 1
push 2
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x45198c
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x18]
push ecx
mov ecx, dword [ebp + 0xc]
call fcn.00441c70
push 2
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x18]
push eax
mov ecx, dword [ebp - 0x60]
call fcn.004531e0
jmp 0x451b15
mov ecx, dword [ebp - 0x60]
add ecx, 0x289c
cmp dword [ebp + 0xc], ecx
jne 0x4519f2
mov edx, dword [ebp - 0x60]
cmp dword [edx + 0x17d0], 0
jle 0x4519ed
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
movsx eax, ax
and eax, 0x8000
jne 0x4519cb
push 1
push 3
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x4519ed
lea ecx, [ebp - 0x24]
push ecx
lea edx, [ebp - 0x20]
push edx
mov ecx, dword [ebp + 0xc]
call fcn.00441c70
push 3
mov eax, dword [ebp - 0x24]
push eax
mov ecx, dword [ebp - 0x20]
push ecx
mov ecx, dword [ebp - 0x60]
call fcn.004531e0
jmp 0x451b15
mov edx, dword [ebp - 0x60]
add edx, 0x1b8
cmp dword [ebp + 0xc], edx
jne 0x451a1f
call fcn.0046fab0
test eax, eax
je 0x451a15
push 1
call fcn.0046fae0
add esp, 4
jmp 0x451a1a
call fcn.0046f9d0
jmp 0x451b15
mov eax, dword [ebp - 0x60]
add eax, 0x4c64
cmp dword [ebp + 0xc], eax
jne 0x451a59
push 3
mov ecx, dword [ebp - 0x60]
add ecx, 0x4c64
call fcn.00426ef0
test eax, eax
je 0x451a54
mov ecx, dword [ebp - 0x60]
cmp dword [ecx + 0x5b0c], 0
jne 0x451a54
mov ecx, dword [ebp - 0x60]
call fcn.00452dc0
jmp 0x451b15
mov edx, dword [ebp - 0x60]
add edx, 0x53e0
cmp dword [ebp + 0xc], edx
jne 0x451ab2
push 2
mov ecx, dword [ebp - 0x60]
add ecx, 0x53e0
call fcn.00426ef0
test eax, eax
je 0x451ab0
push 0
mov ecx, dword [ebp - 0x60]
add ecx, 0x53e0
call fcn.00429400
mov dword [ebp - 0x2c], eax
xor eax, eax
cmp dword [ebp - 0x2c], 2
sete al
mov dword [ebp - 0x28], eax
push 0
mov ecx, dword [ebp - 0x28]
push ecx
push 0x81
mov ecx, dword [0x6de314]
call fcn.0053b770
jmp 0x451b15
mov edx, dword [ebp - 0x60]
add edx, 0x58b8
cmp dword [ebp + 0xc], edx
jne 0x451b15
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 0x53b4]
mov dword [ebp - 0x30], ecx
cmp dword [ebp - 0x30], 0
jl 0x451afe
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x60]
add ecx, 0x5284
call fcn.00431180
mov edx, dword [ebp - 0x30]
imul edx, edx, 0x44
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + edx + 0x5b54]
push ecx
mov ecx, dword [0x6de314]
call fcn.0053a630
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x58b8]
mov edx, dword [eax + 0x24]
call edx
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 0x60]
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x60]
mov edx, dword [ecx]
mov ecx, eax
mov eax, dword [edx + 0x10]
call eax
jmp 0x451d42
jmp 0x451d42
jmp 0x451d42
jmp 0x451d42
cmp dword [ebp + 0xc], 0
jne 0x451b60
mov ecx, dword [ebp + 0x10]
push ecx
push 0
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x451ba0
cmp dword [ebp + 0xc], 1
jne 0x451b76
mov edx, dword [ebp + 0x10]
push edx
push 1
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x451ba0
cmp dword [ebp + 0xc], 2
jne 0x451b8c
mov eax, dword [ebp + 0x10]
push eax
push 2
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x451ba0
cmp dword [ebp + 0xc], 3
jne 0x451ba0
mov ecx, dword [ebp + 0x10]
push ecx
push 3
mov ecx, dword [ebp - 0x60]
call fcn.00451d50
jmp 0x451d42
mov edx, dword [ebp - 0x60]
cmp dword [edx + 0x5b0c], 0
je 0x451bde
mov eax, dword [ebp - 0x60]
add eax, 0x4f64
cmp dword [ebp + 0xc], eax
jne 0x451bde
mov ecx, dword [ebp - 0x60]
mov dword [ecx + 0x5b0c], 0
push 0x63abb8
mov ecx, dword [ebp - 0x60]
add ecx, 0x4f64
call fcn.0042b920
jmp 0x451d42
mov edx, dword [ebp - 0x60]
add edx, 0x5284
cmp dword [ebp + 0xc], edx
jne 0x451cd5
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 0x53b4]
mov dword [ebp - 0x34], ecx
cmp dword [ebp - 0x34], 0
jl 0x451cbe
lea edx, [ebp - 0x48]
push edx
lea eax, [ebp - 0x3c]
push eax
mov ecx, dword [ebp - 0x60]
add ecx, 0x5284
call fcn.00441c70
lea ecx, [ebp - 0x4c]
push ecx
lea edx, [ebp - 0x44]
push edx
mov ecx, dword [ebp - 0x60]
add ecx, 0x5284
call fcn.00441d10
lea eax, [ebp - 0x40]
push eax
lea ecx, [ebp - 0x54]
push ecx
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
call fcn.00441d10
mov edx, dword [ebp - 0x60]
add edx, 0x5284
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x5c]
mov ecx, dword [eax + 0x120]
mov edx, dword [ebp - 0x5c]
add ecx, dword [edx + 0x12c]
mov dword [ebp - 0x38], ecx
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x40]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x34]
imul eax, dword [ebp - 0x38]
add eax, dword [ebp - 0x48]
add eax, dword [ebp - 0x50]
push eax
mov ecx, dword [ebp - 0x3c]
add ecx, dword [ebp - 0x44]
sub ecx, dword [ebp - 0x54]
sub ecx, dword [ebp - 0x50]
push ecx
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
call fcn.00441ca0
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x58b8]
mov edx, dword [eax + 0x20]
call edx
jmp 0x451cd5
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
mov eax, dword [ebp - 0x60]
mov edx, dword [eax + 0x58b8]
mov eax, dword [edx + 0x24]
call eax
jmp 0x451d42
push 0xffffffffffffffff
mov ecx, dword [ebp - 0x60]
add ecx, 0x5284
call fcn.00431180
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x58b8]
mov edx, dword [eax + 0x24]
call edx
jmp 0x451d42
mov eax, dword [ebp - 0x60]
mov ecx, dword [eax + 0x53b4]
mov dword [ebp - 0x58], ecx
cmp dword [ebp - 0x58], 0
jge 0x451d29
mov ecx, dword [ebp - 0x60]
add ecx, 0x58b8
mov edx, dword [ebp - 0x60]
mov eax, dword [edx + 0x58b8]
mov edx, dword [eax + 0x24]
call edx
jmp 0x451d42
mov eax, dword [ebp + 0x10]
push eax
mov ecx, dword [ebp + 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
mov ecx, dword [ebp - 0x60]
call fcn.00437eb0
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
mov esp, ebp
pop ebp
ret 0xc