Function at 0x517c10
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20c
push esi
mov esi, ecx
fld dword [esi + 0x374]
fcomp dword [0x6c4b94]
fnstsw ax
test ah, 5
jp 0x517c38
xor al, al
pop esi
add esp, 0x20c
ret 4
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov al, byte [esp + 0x24]
test al, al
je 0x517c54
mov byte [esi + 0x35d], 1
jmp 0x517c5b
mov byte [esi + 0x35d], 0
mov edx, dword [0x71c2a8]
mov eax, dword [esi + 0x1d8]
mov ecx, dword [0x71c2a4]
push ebx
push ebp
mov dword [esp + 0x14], edx
xor dl, dl
xor ebx, ebx
xor ebp, ebp
test eax, eax
push edi
mov dword [esp + 0x14], ecx
mov byte [esp + 0x10], dl
jle 0x517cda
lea edi, [esi + 0x34]
lea esp, [esp]
mov eax, dword [esp + 0x220]
mov edx, dword [esi + 0x1d4]
push eax
mov eax, dword [esi + 0x1d0]
lea ecx, [esp + 0x18]
push ecx
mov ecx, dword [edi]
push edx
push eax
call fcn.00517840
mov ecx, dword [edi]
mov dl, byte [ecx + 0x31]
test dl, dl
je 0x517cc0
mov ebx, 1
test al, al
je 0x517cc8
mov byte [esp + 0x10], al
mov eax, dword [esi + 0x1d8]
inc ebp
add edi, 4
cmp ebp, eax
jl 0x517c90
mov dl, byte [esp + 0x10]
test ebx, ebx
fld dword [esp + 0x220]
mov dword [esi + 0x370], ebx
fadd st(0), st(0)
je 0x517cf5
fadd dword [esi + 0x374]
jmp 0x517cfb
fsubr dword [esi + 0x374]
fstp dword [esi + 0x374]
fld dword [esi + 0x374]
fcomp dword [0x6bc4dc]
fnstsw ax
test ah, 0x41
jne 0x517d1e
mov dword [esi + 0x374], 0x3f800000
fld dword [esi + 0x374]
fcomp dword [0x6bc8b4]
fnstsw ax
test ah, 5
jp 0x517d3b
mov dword [esi + 0x374], 0x3dcccccd
mov ecx, dword [esi + 0x1d8]
xor eax, eax
test ecx, ecx
jle 0x517d69
lea ecx, [esi + 0x34]
lea ebx, [ebx]
mov edi, dword [ecx]
mov ebx, dword [esi + 0x374]
mov dword [edi + 0x24], ebx
mov edi, dword [esi + 0x1d8]
inc eax
add ecx, 4
cmp eax, edi
jl 0x517d50
cmp dl, 0xf5
jne 0x517d8e
mov al, byte [esi + 0x35c]
test al, al
sete dl
mov byte [esi + 0x35c], dl
pop edi
pop ebp
pop ebx
xor al, al
pop esi
add esp, 0x20c
ret 4
cmp dl, 0xf6
jne 0x517ddb
lea eax, [esp + 0x11c]
push eax
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov edi, dword [sym.imp.USER32.dll_keybd_event]
push 0
push 1
push 0x45
push 0x14
call edi
push 0
push 3
push 0x45
push 0x14
call edi
mov al, byte [esi + 0x35d]
pop edi
test al, al
pop ebp
sete cl
pop ebx
mov byte [esi + 0x35d], cl
xor al, al
pop esi
add esp, 0x20c
ret 4
cmp dl, 0xf4
jne 0x517def
pop edi
pop ebp
pop ebx
or al, 0xff
pop esi
add esp, 0x20c
ret 4
test dl, dl
jle 0x517d7f
mov al, byte [esi + 0x35c]
test al, al
je 0x517e07
mov cl, byte [esi + 0x35d]
test cl, cl
je 0x517e44
test al, al
mov eax, dword [0x2203688]
mov cl, 0x80
jne 0x517e2b
mov bl, byte [esi + 0x35d]
test bl, bl
je 0x517e2b
mov edi, dword [eax + 0x404]
shl edi, 8
test byte [edi + eax + 0x2e], cl
je 0x517e44
mov edi, dword [eax + 0x404]
shl edi, 8
test byte [edi + eax + 0x2e], cl
je 0x517e74
mov al, byte [esi + 0x35d]
test al, al
jne 0x517e74
mov eax, dword [esp + 0x10]
push eax
mov ecx, esi
call fcn.00517a70
test al, al
jge 0x517e60
movsx ecx, dl
push ecx
call fcn.005cfa15
add esp, 4
pop edi
pop ebp
pop ebx
mov byte [esi + 0x35c], 0
pop esi
add esp, 0x20c
ret 4
pop edi
pop ebp
pop ebx
mov byte [esi + 0x35c], 0
mov al, dl
pop esi
add esp, 0x20c
ret 4