Function at 0x45d580
Capabilities:
Log keystrokes via polling

Disassembly:
push 0xffffffffffffffff
push 0x5d1d48
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x613ad0]
xor eax, esp
push eax
lea eax, [esp + 0x40]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x18], ebx
call fcn.0057e772
xor ecx, ecx
xor edi, edi
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x45d5c9
push 0x80004005
call fcn.00401a10
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x6c]
cmp dword [eax + 0xa0], edi
mov esi, dword [esp + 0x54]
mov dword [esp + 0x48], edi
je 0x45d63c
cmp eax, edi
mov edx, 0x424f5743
je 0x45d658
cmp dword [eax + 8], edx
jne 0x45d620
mov ecx, dword [eax + 0x54]
cmp ecx, 1
je 0x45d61b
cmp ecx, 2
je 0x45d61b
cmp ecx, 3
je 0x45d61b
cmp ecx, 4
je 0x45d61b
cmp ecx, 8
je 0x45d61b
cmp ecx, 9
jne 0x45d620
cmp dword [eax + 0x58], edi
je 0x45d63c
cmp eax, edi
je 0x45d658
cmp dword [eax + 8], edx
jne 0x45d658
cmp dword [eax + 0x54], 5
jne 0x45d658
cmp dword [eax + 0x160], edi
jne 0x45d658
cmp dword [eax + 0x58], edi
jne 0x45d658
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
movsx ecx, ax
test ecx, 0x10000000
jne 0x45d658
mov dword [esp + 0x28], edi
jmp case.default.0x45d6fe
mov edi, dword [esi + 8]
fild dword [ebx + 0xc0]
mov ebp, dword [esi]
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x18]
mov edx, edi
sub edx, ebp
mov dword [esp + 0x54], edx
fild dword [esp + 0x54]
mov edx, ebx
sub edx, eax
mov dword [esp + 0x54], edx
fdiv st(1)
mov dword [esp + 0x28], 1
fild dword [ecx + 0xc4]
fild dword [esp + 0x54]
fdiv st(1)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x45d6a4
fld st(0)
jmp 0x45d6a6
fld st(2)
fld st(4)
fmul st(1)
call fcn.005ac350
fmul st(2)
mov dword [esp + 0x54], eax
call fcn.005ac350
fld st(3)
fmul st(3)
mov dword [esp + 0x14], eax
call fcn.005ac350
fld st(1)
fmulp st(3)
mov dword [esp + 0x20], eax
fxch st(2)
call fcn.005ac350
fxch st(2)
fmul st(1)
mov dword [esp + 0x24], eax
call fcn.005ac350
fmulp st(1)
mov dword [esp + 0x1c], eax
call fcn.005ac350
mov ecx, dword [esp + 0x50]
add ecx, 0xffffffff
cmp ecx, 7
ja case.default.0x45d6fe
jmp dword [ecx*4 + 0x45d99c]
mov ecx, dword [esp + 0x1c]
add ebp, ecx
mov ecx, dword [esi + 4]
add ecx, eax
mov dword [esi + 0xc], ecx
jmp 0x45d78b
mov edx, dword [esp + 0x54]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x14]
add ebp, edx
add eax, ecx
mov dword [esi + 0xc], eax
jmp 0x45d78b
sub edi, dword [esp + 0x20]
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x24]
add eax, edx
mov dword [esi], edi
mov dword [esi + 0xc], eax
jmp case.default.0x45d6fe
sub edi, dword [esp + 0x54]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x14]
add eax, ecx
mov dword [esi], edi
mov dword [esi + 0xc], eax
jmp case.default.0x45d6fe
mov edx, dword [esp + 0x1c]
add ebp, edx
sub ebx, eax
jmp 0x45d788
sub edi, dword [esp + 0x54]
sub ebx, dword [esp + 0x14]
mov dword [esi], edi
mov dword [esi + 4], ebx
jmp case.default.0x45d6fe
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
add ebp, eax
mov eax, dword [esi + 4]
add eax, ecx
mov dword [esi + 0xc], eax
jmp 0x45d78b
mov edx, dword [esp + 0x54]
add ebp, edx
sub ebx, dword [esp + 0x14]
mov dword [esi + 4], ebx
mov dword [esi + 8], ebp
mov ebp, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov edx, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, ebp
mov eax, edi
sub ecx, edx
sub eax, ebx
test ecx, ecx
je 0x45d7af
test eax, eax
jne 0x45d872
jmp 0x45d7b3
test eax, eax
jne 0x45d7d6
mov eax, dword [esp + 0x50]
cmp eax, 3
je 0x45d7ce
cmp eax, 4
je 0x45d7ce
cmp eax, 5
je 0x45d7ce
add ebx, 1
mov dword [esi + 0xc], ebx
jmp 0x45d7da
add edi, 0xffffffff
mov dword [esi + 4], edi
jmp 0x45d7da
mov eax, dword [esp + 0x50]
test ecx, ecx
jne 0x45d7fa
cmp eax, 1
je 0x45d7f5
cmp eax, 4
je 0x45d7f5
cmp eax, 7
je 0x45d7f5
add edx, 1
mov dword [esi + 8], edx
jmp 0x45d7fa
add ebp, 0xffffffff
mov dword [esi], ebp
cmp dword [esp + 0x28], 0
je 0x45d867
mov edx, dword [esp + 0x18]
mov ecx, dword [edx + 0xc4]
mov edi, dword [edx + 0xc0]
cmp ecx, edi
jle 0x45d840
cmp eax, 3
je 0x45d831
cmp eax, 4
je 0x45d831
cmp eax, 5
je 0x45d831
mov eax, ecx
cdq
idiv edi
add eax, dword [esi + 4]
mov dword [esi + 0xc], eax
jmp 0x45d867
mov eax, ecx
cdq
idiv edi
mov ecx, dword [esi + 0xc]
sub ecx, eax
mov dword [esi + 4], ecx
jmp 0x45d867
cmp eax, 1
je 0x45d85b
cmp eax, 4
je 0x45d85b
cmp eax, 7
je 0x45d85b
mov eax, edi
cdq
idiv ecx
add eax, dword [esi]
mov dword [esi + 8], eax
jmp 0x45d867
mov eax, edi
cdq
idiv ecx
mov edx, dword [esi + 8]
sub edx, eax
mov dword [esi], edx
mov ecx, dword [esi + 8]
mov eax, dword [esi + 0xc]
sub ecx, dword [esi]
sub eax, dword [esi + 4]
imul eax, eax, 0x64
imul ecx, ecx, 0x64
mov edx, eax
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
movzx edi, ax
mov eax, 0x51eb851f
imul ecx
mov eax, dword [0x6152f8]
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
movzx edx, cx
mov ecx, dword [eax + 0x20]
shl edi, 0x10
or edi, edx
push edi
mov edi, dword [sym.imp.USER32.dll_PostMessageW]
push 0
push 0x2667
push ecx
call edi
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + 0x64]
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edx
mov edx, dword [esi + 0xc]
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x40], edx
call fcn.0058efef
mov ebx, dword [sym.imp.USER32.dll_GetSystemMetrics]
push 8
call ebx
mov ecx, eax
add ecx, dword [esp + 0x34]
mov eax, 0x51eb851f
imul ecx, ecx, 0x64
imul ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
movzx esi, ax
push 7
shl esi, 0x10
call ebx
mov ecx, eax
add ecx, dword [esp + 0x30]
mov eax, 0x51eb851f
imul ecx, ecx, 0x64
imul ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, dword [0x6152f8]
movzx eax, cx
or eax, esi
push eax
mov eax, dword [edx + 0x20]
push 0
push 0x2666
push eax
call edi
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov dword [ecx + 0x60], 1
mov dword [esp + 0x48], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x45d980
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x40]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret 8