Function at 0x45cfb9
Capabilities:
Log keystrokes via polling

Disassembly:
push ebp
mov ebp, esp
push ebx
sub esp, 0x34
mov dword [ebp - 0xc], 0
jmp 0x45cfcd
nop
jmp 0x45cfcd
nop
mov eax, dword [0x630424]
cmp eax, 1
jne 0x45d003
mov dword [0x630424], 2
jmp 0x45cff4
mov dword [esp], 1
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
mov eax, dword [0x630424]
cmp eax, 2
sete al
test al, al
jne 0x45cfe3
mov eax, dword [0x6404c4]
test eax, eax
je 0x45d019
mov eax, dword [0x6404c0]
test eax, eax
je 0x45d3af
call fcn.0040934e
mov dword [0xa878ec], eax
mov edx, dword [0xa878ec]
mov eax, dword [0x70b03c]
mov ecx, edx
sub ecx, eax
mov eax, ecx
mov dword [0xa878ec], eax
mov edx, dword [0xa878ec]
mov eax, dword [0x70b038]
add eax, edx
mov dword [0xa878ec], eax
mov ecx, dword [0xa878ec]
mov edx, 0x31b5d43b
mov eax, ecx
mul edx
mov eax, edx
shr eax, 0x18
imul eax, eax, 0x5265c00
mov edx, ecx
sub edx, eax
mov eax, edx
mov dword [0xa878ec], eax
mov eax, dword [0xa878ec]
mov edx, 0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
fild qword [ebp - 0x20]
fld qword [0x500d38]
fmulp st(1)
fnstcw word [ebp - 0x22]
movzx eax, word [ebp - 0x22]
mov ah, 0xc
mov word [ebp - 0x24], ax
fldcw word [ebp - 0x24]
fistp qword [ebp - 0x20]
fldcw word [ebp - 0x22]
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
mov dword [0xa878ec], eax
mov eax, dword [0xa878ec]
mov byte [0x51d6ec], al
mov eax, dword [0xa878ec]
shr eax, 8
mov byte [0x51d6ed], al
mov eax, dword [0xa878ec]
shr eax, 0x10
mov byte [0x51d6ee], al
mov eax, dword [0xa86218]
test eax, eax
je 0x45d108
mov eax, dword [0xa86218]
cmp eax, 0xffffffff
je 0x45d0f2
mov dword [0xa86218], 0xffffffff
jmp 0x45d21f
mov dword [esp], 0x40
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
jmp 0x45cfcd
mov dword [esp], 0xf
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
mov dword [0x70b04c], 1
mov dword [0x70b048], 1
mov dword [esp], 1
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
movzx eax, byte [0x51d248]
test al, al
je 0x45d158
mov dword [0x630424], 2
jmp 0x45d3b0
call fcn.00435715
xor dword [ebp - 0xc], 1
mov eax, dword [0x640480]
test eax, eax
jne 0x45d219
mov dword [0x640494], 1
mov eax, dword [0x640490]
test eax, eax
je 0x45d20f
mov dword [esp + 8], 1
fld qword [0x500c08]
fstp qword [esp]
call fcn.0042a9cc
fld qword [0x640488]
fsubp st(1)
fabs
fld qword [0x500cd0]
fxch st(1)
fucompi st(1)
fstp st(0)
setae al
test al, al
je 0x45d20f
mov eax, dword [0x640484]
mov dword [esp], eax
call fcn.004492be
mov dword [0x640490], 0
call fcn.0043ace9
mov dword [0xa878f0], eax
mov eax, dword [0x640484]
mov dword [esp], eax
call fcn.0043ac40
mov dword [esp + 8], 2
mov dword [esp + 4], 0xf
mov dword [esp], 0
call fcn.004263d1
mov eax, dword [0xa878f0]
mov dword [esp], eax
call fcn.0043ac40
mov dword [0x640494], 0
cmp dword [ebp - 0xc], 1
jne 0x45d23a
mov eax, dword [0x4e4298]
test eax, eax
je 0x45d22d
call fcn.0045d425
mov eax, dword [0x64aacc]
add eax, 1
mov dword [0x64aacc], eax
mov dword [0x70b048], 0
mov eax, dword [0xa86218]
test eax, eax
jne 0x45cfc9
cmp dword [ebp - 0xc], 0
jne 0x45cfcc
mov dword [esp], 0x91
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
call eax
sub esp, 4
cwde
mov ebx, eax
and ebx, 1
mov dword [esp], 0x30d4b
call fcn.00409537
cmp ebx, eax
setne al
test al, al
je 0x45d2bb
mov dword [esp], 0x30d4b
call fcn.00409537
test eax, eax
setne al
test al, al
je 0x45d2aa
mov dword [esp], 0x30d4b
call fcn.00409896
jmp 0x45d2b6
mov dword [esp], 0x30d4b
call fcn.004097a4
call fcn.0045f119
mov dword [esp], 0x14
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
call eax
sub esp, 4
cwde
mov ebx, eax
and ebx, 1
mov dword [esp], 0x187cd
call fcn.00409537
cmp ebx, eax
setne al
test al, al
je 0x45d32f
mov dword [esp], 0x187cd
call fcn.00409537
test eax, eax
setne al
test al, al
je 0x45d314
mov dword [0x640468], 0x12d
mov dword [esp], 0x187cd
call fcn.00409b6e
jmp 0x45d32a
mov dword [0x640468], 0x12d
mov dword [esp], 0x187cd
call fcn.00409ab3
call fcn.0045f119
mov dword [esp], 0x90
mov eax, dword [sym.imp.USER32.dll_GetKeyState]
call eax
sub esp, 4
cwde
mov ebx, eax
and ebx, 1
mov dword [esp], 0x187cc
call fcn.00409537
cmp ebx, eax
setne al
test al, al
je 0x45d3a3
mov dword [esp], 0x187cc
call fcn.00409537
test eax, eax
setne al
test al, al
je 0x45d388
mov dword [0x640468], 0x12c
mov dword [esp], 0x187cc
call fcn.00409b6e
jmp 0x45d39e
mov dword [0x640468], 0x12c
mov dword [esp], 0x187cc
call fcn.00409ab3
call fcn.0045f119
mov eax, dword [0xa86218]
test eax, eax
jmp 0x45cfcd
nop
mov byte [0x51d279], 1
mov dword [0x51d274], 1
jmp 0x45d3d4
mov dword [esp], 0x10
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
mov eax, dword [0x64047c]
cmp eax, 3
setne al
test al, al
jne 0x45d3c3
mov eax, dword [0x640490]
test eax, eax
je 0x45d3f9
mov eax, dword [0x640484]
mov dword [esp], eax
call fcn.004492be
mov dword [esp + 4], 0
mov dword [esp], 0
call fcn.0042b70f
call fcn.00435721
mov eax, dword [0x630438]
mov edx, dword [0x63043c]
mov dword [esp], eax
call sub.msvcrt.dll_exit