Function at 0x4faec0
Capabilities:
Log keystrokes via polling

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x24
push ebp
push esi
push edi
xor ebp, ebp
push ebp
push eax
call dword [sym.imp.USER32.dll_GetWindowLongW]
mov esi, eax
cmp dword [esi + 0x240], ebp
jne 0x4fb1eb
mov eax, dword [esp + 0x38]
mov edi, dword [sym.imp.USER32.dll_PostMessageW]
add eax, 0xfffffff7
cmp eax, 0x1f
push ebx
mov ebx, dword [sym.imp.USER32.dll_GetDlgCtrlID]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x10], ebp
ja case.0x4faf0e.10
movzx ecx, byte [eax + 0x4fb25c]
jmp dword [ecx*4 + 0x4fb240]
mov ebp, 1
mov dword [esp + 0x38], ebp
jmp case.0x4faf0e.10
mov dword [esp + 0x38], 0xffffffff
mov ebp, 1
jmp case.0x4faf0e.10
mov ebp, 1
mov dword [esp + 0x10], ebp
jmp case.0x4faf0e.10
mov dword [esp + 0x10], 0xffffffff
mov ebp, 1
jmp case.0x4faf0e.10
push 1
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
xor edx, edx
test ax, ax
mov eax, dword [esi + 0x244]
setl dl
push edx
push eax
push esi
call fcn.004fad40
jmp case.0x4faf0e.10
mov eax, dword [esi + 0x244]
cmp eax, 1
jne 0x4fafa5
mov edx, dword [esi + 0x23c]
xor ecx, ecx
test edx, edx
sete cl
push ecx
push esi
call fcn.004f5bb0
push esi
call fcn.004f8740
mov edx, dword [esi + 8]
push edx
jmp 0x4faff7
cmp eax, 7
jne case.0x4faf0e.10
push 0
push esi
lea eax, [esi + 0x2fc]
push eax
call fcn.004f5bf0
push esi
call fcn.004f8740
xor eax, eax
mov dword [esi + 0x2f8], eax
mov dword [esi + 0x240], eax
mov eax, dword [esi + 8]
push eax
push eax
mov dword [esi + 0x244], 8
call ebx
mov edx, dword [esi + 0xc]
movzx ecx, ax
or ecx, 0x7000000
push ecx
push 0x111
push edx
call edi
mov eax, dword [esi + 8]
push eax
call fcn.004fa9a0
lea ecx, [esp + 0x14]
push ecx
push esi
call fcn.004f60c0
test eax, eax
je 0x4fb1e1
test ebp, ebp
je 0x4fb1e1
mov eax, dword [esi + 0x244]
add eax, 0xfffffffd
cmp eax, 5
ja case.0x4fb029.7
jmp dword [eax*4 + 0x4fb27c]
fild dword [esp + 0x38]
fmul dword [0x5eb98c]
fadd dword [esp + 0x14]
fstp dword [esp + 0x14]
jmp 0x4fb07e
fild dword [esp + 0x38]
fmul dword [0x5eb98c]
fadd dword [esp + 0x18]
fstp dword [esp + 0x18]
jmp 0x4fb07e
fild dword [esp + 0x38]
fmul dword [0x5eb98c]
fadd dword [esp + 0x1c]
fstp dword [esp + 0x1c]
jmp 0x4fb07e
fild dword [esp + 0x10]
fmul dword [0x5eb98c]
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
lea edx, [esp + 0x14]
push edx
push esi
call fcn.004f5ce0
push esi
call fcn.004f8740
push esi
call fcn.004f68f0
mov eax, dword [esi + 8]
push eax
push eax
call ebx
mov ecx, dword [esi + 0xc]
movzx eax, ax
or eax, 0x7000000
push eax
push 0x111
push ecx
jmp 0x4fb1c4
push 0
push esi
lea edx, [esp + 0x2c]
push edx
call fcn.004f5f80
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x18]
push ecx
call fcn.004f5a20
fld qword [esp + 0x14]
fld qword [0x5d92f0]
fucompp
fnstsw ax
test ah, 0x44
jp 0x4fb0e9
mov eax, 1
jmp 0x4fb0eb
xor eax, eax
test eax, eax
fild dword [esp + 0x38]
fmul dword [0x5eb98c]
fadd qword [esp + 0x14]
fstp qword [esp + 0x14]
fild dword [esp + 0x10]
fmul dword [0x5eb98c]
fsubr qword [esp + 0x1c]
fst qword [esp + 0x1c]
je 0x4fb11b
fld qword [0x5d92f0]
jmp 0x4fb14f
fld qword [esp + 0x14]
fcomp qword [0x5d8c90]
fld qword [esp + 0x14]
fnstsw ax
test ah, 5
jp 0x4fb138
fadd qword [0x5d6138]
jmp 0x4fb14f
fcomp qword [0x5d6138]
fnstsw ax
test ah, 0x41
jne 0x4fb153
fld qword [esp + 0x14]
fsub qword [0x5d6138]
fstp qword [esp + 0x14]
fcom qword [0x5d8c90]
fnstsw ax
test ah, 5
jp 0x4fb16a
fstp st(0)
fld qword [0x5d8c90]
jmp 0x4fb17d
fcomp qword [0x5d6138]
fnstsw ax
test ah, 0x41
jne 0x4fb181
fld qword [0x5d6138]
fstp qword [esp + 0x1c]
lea edx, [esp + 0x14]
push edx
lea eax, [esp + 0x28]
push eax
push esi
call fcn.004f6780
push 0
push esi
lea ecx, [esp + 0x2c]
push ecx
call fcn.004f5bf0
push esi
call fcn.004f8740
push esi
call fcn.004f68f0
mov eax, dword [esi + 8]
push eax
push eax
call ebx
movzx edx, ax
mov eax, dword [esi + 0xc]
or edx, 0x7000000
push edx
push 0x111
push eax
call edi
mov esi, dword [esi + 8]
push esi
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
push edi
push esi
call fcn.004fa880
push edi
push esi
call dword [sym.imp.USER32.dll_ReleaseDC]
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x24
ret 0x14
cmp dword [esp + 0x38], 0x1b
jne 0x4fb1e2
lea ecx, [esi + 0x268]
mov eax, dword [ecx]
lea edx, [esi + 0x258]
mov dword [edx], eax
mov eax, dword [ecx + 4]
mov dword [edx + 4], eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esi + 0x240], ebp
mov esi, dword [esi + 8]
mov dword [edx + 8], eax
push esi
mov dword [edx + 0xc], ecx
call dword [sym.imp.USER32.dll_GetDC]
mov edi, eax
push edi
push esi
call fcn.004fa880
push edi
push esi
call dword [sym.imp.USER32.dll_ReleaseDC]
pop edi
pop esi
pop ebp
add esp, 0x24
ret 0x14