Function at 0x508b00
Capabilities:
Log keystrokes via polling

Disassembly:
sub esp, 0x20c
push esi
mov esi, ecx
fld dword [esi + 0x374]
fcomp dword [0x6afd84]
fnstsw ax
test ah, 5
jp 0x508b28
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 0x508b44
mov byte [esi + 0x35d], 1
jmp 0x508b4b
mov byte [esi + 0x35d], 0
mov edx, dword [0x706458]
mov eax, dword [esi + 0x1d8]
mov ecx, dword [0x706454]
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 0x508bca
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.005077e0
mov ecx, dword [edi]
mov dl, byte [ecx + 0x31]
test dl, dl
je 0x508bb0
mov ebx, 1
test al, al
je 0x508bb8
mov byte [esp + 0x10], al
mov eax, dword [esi + 0x1d8]
inc ebp
add edi, 4
cmp ebp, eax
jl 0x508b80
mov dl, byte [esp + 0x10]
test ebx, ebx
fld dword [esp + 0x220]
mov dword [esi + 0x370], ebx
fadd st(0), st(0)
je 0x508be5
fadd dword [esi + 0x374]
jmp 0x508beb
fsubr dword [esi + 0x374]
fstp dword [esi + 0x374]
fld dword [esi + 0x374]
fcomp dword [0x6a8210]
fnstsw ax
test ah, 0x41
jne 0x508c0e
mov dword [esi + 0x374], 0x3f800000
fld dword [esi + 0x374]
fcomp dword [0x6a8524]
fnstsw ax
test ah, 5
jp 0x508c2b
mov dword [esi + 0x374], 0x3dcccccd
mov ecx, dword [esi + 0x1d8]
xor eax, eax
test ecx, ecx
jle 0x508c59
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 0x508c40
cmp dl, 0xf5
jne 0x508c7e
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 0x508ccb
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 0x508cdf
pop edi
pop ebp
pop ebx
or al, 0xff
pop esi
add esp, 0x20c
ret 4
test dl, dl
jle 0x508c6f
mov al, byte [esi + 0x35c]
test al, al
je 0x508cf7
mov cl, byte [esi + 0x35d]
test cl, cl
je 0x508d34
test al, al
mov eax, dword [0x21ebef8]
mov cl, 0x80
jne 0x508d1b
mov bl, byte [esi + 0x35d]
test bl, bl
je 0x508d1b
mov edi, dword [eax + 0x404]
shl edi, 8
test byte [edi + eax + 0x2e], cl
je 0x508d34
mov edi, dword [eax + 0x404]
shl edi, 8
test byte [edi + eax + 0x2e], cl
je 0x508d64
mov al, byte [esi + 0x35d]
test al, al
jne 0x508d64
mov eax, dword [esp + 0x10]
push eax
mov ecx, esi
call fcn.00508390
test al, al
jge 0x508d50
movsx ecx, dl
push ecx
call fcn.005ba77c
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