Function at 0x5f82d8
Capabilities:
Log keystrokes via polling

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xffffffac
mov byte [esp + 1], 0
push 0
xor ecx, ecx
mov dl, 1
mov eax, dword [0x5c7f20]
call fcn.005d078c
mov edi, eax
xor edx, edx
mov eax, edi
call fcn.005d2ac4
mov dl, 1
mov eax, edi
call fcn.005d7f30
xor edx, edx
mov eax, edi
call fcn.005d7f44
mov ecx, edi
mov dl, 1
mov eax, dword [0x54f9f0]
call fcn.005575c0
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x9c]
mov edx, 0x5f8a28
mov eax, ebp
call fcn.0053d350
mov eax, dword [ebp + 0x74]
mov edx, 0x5f8aa0
call fcn.0050fd80
mov eax, dword [ebp + 0x74]
mov edx, 0x12
call fcn.0050fdf8
mov eax, dword [ebp + 0x74]
mov edx, 0x5d2fff
call fcn.0050fa90
mov eax, dword [ebp + 0x74]
movzx edx, byte [0x5f8aac]
call fcn.0050fe24
mov edx, dword [ebp + 0x58]
add edx, 0x28
mov eax, edi
call fcn.005d18c8
mov eax, edi
call fcn.0053c9a8
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fdiv dword [0x5f8ab0]
fild dword [ebp + 0x58]
fdiv dword [0x5f8ab0]
fsubp st(1)
call fcn.00407b1c
mov edx, eax
mov eax, ebp
call fcn.0053c688
mov edx, 0x14
mov eax, ebp
call fcn.0053c6bc
mov edx, dword [ebp + 0x54]
add edx, 0x41
add edx, dword [ebp + 0x5c]
add edx, 0x14
mov eax, edi
call fcn.005d1900
mov ecx, edi
mov dl, 1
mov eax, dword [0x575a0c]
call fcn.00577458
mov ebx, eax
mov ecx, edi
mov dl, 1
mov eax, dword [0x575a0c]
call fcn.00577458
mov esi, eax
mov eax, dword [ebx + 0x1d8]
mov dl, 5
call fcn.00510350
mov eax, dword [esi + 0x1d8]
mov dl, 5
call fcn.00510350
mov eax, dword [ebx + 0x1dc]
mov edx, 0xffdd69
call fcn.00510610
mov eax, dword [esi + 0x1dc]
mov edx, 0xffdd69
call fcn.00510610
mov edx, edi
mov eax, ebx
mov ecx, dword [eax]
call dword [ecx + 0x9c]
mov edx, edi
mov eax, esi
mov ecx, dword [eax]
call dword [ecx + 0x9c]
fild dword [edi + 0x58]
fdiv dword [0x5f8ab0]
call fcn.00407b1c
mov edx, eax
sub edx, 2
mov eax, ebx
call fcn.0053c6f4
fild dword [edi + 0x58]
fdiv dword [0x5f8ab0]
call fcn.00407b1c
mov edx, eax
sub edx, 2
mov eax, esi
call fcn.0053c6f4
mov edx, dword [edi + 0x5c]
sub edx, dword [ebx + 0x5c]
mov eax, ebx
call fcn.0053c6bc
mov edx, dword [edi + 0x5c]
sub edx, dword [ebx + 0x5c]
mov eax, esi
call fcn.0053c6bc
mov eax, edi
call fcn.0053c9a8
mov edx, eax
sub edx, dword [esi + 0x58]
mov eax, esi
call fcn.0053c688
mov ecx, edi
mov dl, 1
mov eax, dword [0x54f9f0]
call fcn.005575c0
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x9c]
mov edx, 0x5f8ac0
mov eax, ebp
call fcn.0053d350
mov eax, dword [ebp + 0x74]
mov edx, 0x5f8aa0
call fcn.0050fd80
mov eax, dword [ebp + 0x74]
mov edx, 0x12
call fcn.0050fdf8
mov eax, dword [ebp + 0x74]
mov edx, 0xe16169
call fcn.0050fa90
mov eax, dword [ebp + 0x74]
movzx edx, byte [0x5f8aac]
call fcn.0050fe24
fild dword [ebx + 0x5c]
fdiv dword [0x5f8ab0]
fild dword [ebx + 0x54]
faddp st(1)
fild dword [ebp + 0x5c]
fdiv dword [0x5f8ab0]
fsubp st(1)
call fcn.00407b1c
mov edx, eax
mov eax, ebp
call fcn.0053c6bc
fild dword [ebx + 0x58]
fdiv dword [0x5f8ab0]
fild dword [ebp + 0x58]
fdiv dword [0x5f8ab0]
fsubp st(1)
call fcn.00407b1c
mov edx, eax
mov eax, ebp
call fcn.0053c688
mov ecx, edi
mov dl, 1
mov eax, dword [0x54f9f0]
call fcn.005575c0
mov ebp, eax
mov edx, edi
mov eax, ebp
mov ecx, dword [eax]
call dword [ecx + 0x9c]
mov edx, 0x5f8adc
mov eax, ebp
call fcn.0053d350
mov eax, dword [ebp + 0x74]
mov edx, 0x5f8aa0
call fcn.0050fd80
mov eax, dword [ebp + 0x74]
mov edx, 0x12
call fcn.0050fdf8
mov eax, dword [ebp + 0x74]
mov edx, 0xe16169
call fcn.0050fa90
mov eax, dword [ebp + 0x74]
movzx edx, byte [0x5f8aac]
call fcn.0050fe24
fild dword [ebx + 0x5c]
fdiv dword [0x5f8ab0]
fild dword [ebx + 0x54]
faddp st(1)
fild dword [ebp + 0x5c]
fdiv dword [0x5f8ab0]
fsubp st(1)
call fcn.00407b1c
mov edx, eax
mov eax, ebp
call fcn.0053c6bc
fild dword [esi + 0x58]
fdiv dword [0x5f8ab0]
fild dword [esi + 0x50]
faddp st(1)
fild dword [ebp + 0x58]
fdiv dword [0x5f8ab0]
fsubp st(1)
call fcn.00407b1c
mov edx, eax
mov eax, ebp
call fcn.0053c688
mov dl, 4
mov eax, edi
call fcn.005d34c0
push 0x14
push 0x14
mov eax, edi
call fcn.0053c9e8
push eax
mov eax, edi
call fcn.0053c9a8
push eax
push 0
push 0
call sub.gdi32.dll_CreateRoundRectRgn
mov ebp, eax
push 0xffffffffffffffff
push ebp
mov eax, edi
call fcn.00546ec8
push eax
call sub.user32.dll_SetWindowRgn
mov edx, 0xfff4a8
mov eax, edi
call fcn.0053d4cc
mov dl, 1
mov eax, edi
call fcn.005454cc
mov eax, edi
call fcn.005d742c
mov byte [esp + 2], 0
cmp byte [esp + 2], 0xfa
jae 0x5f89c4
add byte [esp + 2], 2
movzx edx, byte [esp + 2]
mov eax, edi
call fcn.005d7f44
push 1
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
cmp byte [esp + 2], 0xfa
jb 0x5f8653
jmp 0x5f89c4
mov eax, edi
call fcn.0053d5c0
lea ecx, [esp + 0x1c]
xor edx, edx
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x14]
mov eax, ebx
call fcn.0053ca58
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x1c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x1c]
jg 0x5f8805
lea ecx, [esp + 0x2c]
mov eax, dword [ebx + 0x58]
xor edx, edx
call fcn.0049aeb0
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x24]
mov eax, ebx
call fcn.0053ca58
mov ebp, dword [esp + 0x24]
lea edx, [esp + 0x2c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x2c]
jl 0x5f8805
lea ecx, [esp + 0x3c]
xor edx, edx
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x34]
mov eax, ebx
call fcn.0053ca58
mov ebp, dword [esp + 0x38]
lea edx, [esp + 0x3c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x40]
jg 0x5f8805
lea ecx, [esp + 0x4c]
mov edx, dword [ebx + 0x5c]
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x44]
mov eax, ebx
call fcn.0053ca58
mov ebp, dword [esp + 0x48]
lea edx, [esp + 0x4c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x50]
jl 0x5f8805
jmp 0x5f87a7
mov eax, dword [ebx + 0x1dc]
call fcn.00510608
mov edx, eax
sub edx, 0x100
mov eax, dword [ebx + 0x1dc]
call fcn.00510610
push 5
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
mov eax, dword [ebx + 0x1dc]
call fcn.00510608
mov ebp, eax
mov eax, ebp
shr eax, 8
cmp al, 0xbe
ja 0x5f8776
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x5f87ce
mov byte [esp + 1], 1
mov byte [esp], 1
jmp 0x5f881f
mov eax, dword [ebx + 0x1dc]
call fcn.00510608
mov edx, eax
add edx, 0x100
mov eax, dword [ebx + 0x1dc]
call fcn.00510610
push 5
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
mov eax, dword [ebx + 0x1dc]
call fcn.00510608
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
shr eax, 8
cmp al, 0xdd
jb 0x5f87d4
lea ecx, [esp + 0x1c]
xor edx, edx
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x1c]
lea ecx, [esp + 0x14]
mov eax, esi
call fcn.0053ca58
mov ebp, dword [esp + 0x14]
lea edx, [esp + 0x1c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x1c]
jg 0x5f899e
lea ecx, [esp + 0x2c]
mov eax, dword [esi + 0x58]
xor edx, edx
call fcn.0049aeb0
lea edx, [esp + 0x2c]
lea ecx, [esp + 0x24]
mov eax, esi
call fcn.0053ca58
mov ebp, dword [esp + 0x24]
lea edx, [esp + 0x2c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x2c]
jl 0x5f899e
lea ecx, [esp + 0x3c]
xor edx, edx
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x34]
mov eax, esi
call fcn.0053ca58
mov ebp, dword [esp + 0x38]
lea edx, [esp + 0x3c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x40]
jg 0x5f899e
lea ecx, [esp + 0x4c]
mov edx, dword [esi + 0x5c]
xor eax, eax
call fcn.0049aeb0
lea edx, [esp + 0x4c]
lea ecx, [esp + 0x44]
mov eax, esi
call fcn.0053ca58
mov ebp, dword [esp + 0x48]
lea edx, [esp + 0x4c]
mov eax, dword [0x635a88]
mov eax, dword [eax]
call fcn.0054d530
cmp ebp, dword [esp + 0x50]
jl 0x5f899e
jmp 0x5f893c
mov eax, dword [esi + 0x1dc]
call fcn.00510608
mov edx, eax
sub edx, 0x100
mov eax, dword [esi + 0x1dc]
call fcn.00510610
push 5
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
mov eax, dword [esi + 0x1dc]
call fcn.00510608
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
shr eax, 8
cmp al, 0xbe
ja 0x5f890b
push 1
call sub.user32.dll_GetKeyState
test ax, ax
jge 0x5f89b8
mov byte [esp + 1], 1
mov byte [esp], 0
jmp 0x5f89b8
mov eax, dword [esi + 0x1dc]
call fcn.00510608
mov edx, eax
add edx, 0x100
mov eax, dword [esi + 0x1dc]
call fcn.00510610
push 5
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
mov eax, dword [esi + 0x1dc]
call fcn.00510608
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
shr eax, 8
cmp al, 0xdd
jb 0x5f896d
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
cmp byte [esp + 1], 0
je 0x5f8683
mov byte [esp + 2], 0xfa
cmp byte [esp + 2], 2
jbe 0x5f8a06
sub byte [esp + 2], 2
movzx edx, byte [esp + 2]
mov eax, edi
call fcn.005d7f44
push 1
call sub.kernel32.dll_Sleep
mov eax, dword [0x635850]
mov eax, dword [eax]
call fcn.005dc46c
cmp byte [esp + 2], 2
ja 0x5f89db
mov dl, 1
mov eax, edi
mov ecx, dword [eax]
call dword [ecx - 4]
movzx eax, byte [esp]
add esp, 0x54
pop ebp
pop edi
pop esi
pop ebx
ret