Function at 0x593945
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x28
mov eax, 0x6b1a92
call fcn.0060ae76
mov edi, ecx
mov dword [ebp - 0x14], edi
push 1
call fcn.0058f28b
xor ebx, ebx
cmp dword [edi + 0x300], ebx
je 0x59397b
push 0xec19
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_KillTimer]
mov dword [edi + 0x300], ebx
push 1
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
jns 0x593995
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x59399d
cmp dword [0x775698], ebx
jne 0x5939a4
xor eax, eax
jmp 0x5940c8
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x5939e9
mov eax, dword [esi]
mov esi, dword [eax + 0xd0]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp + 0x14]
call esi
test eax, eax
jne 0x5939e6
mov eax, dword [ebp + 0x14]
mov dword [eax + 0xc8], 1
mov eax, dword [eax]
mov esi, dword [eax + 0x1b8]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp + 0x14]
call esi
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_GetParent]
push eax
call fcn.0042dec8
push eax
push 0x75e6f4
call fcn.0043fb68
pop ecx
pop ecx
mov ecx, edi
mov dword [ebp - 0x18], eax
call fcn.0042e65f
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x34], vtable.CMenu.0
mov dword [ebp - 0x30], ebx
mov dword [ebp - 4], ebx
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
lea ecx, [ebp - 0x34]
call fcn.0044a232
lea ecx, [ebp - 0x10]
call fcn.00401f50
mov byte [ebp - 4], 1
cmp dword [edi + 0x31c], ebx
je 0x593b81
push 0x42c8
lea ecx, [ebp - 0x10]
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xfffffffffffffffe
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, ebx
mov dword [ebp - 0x24], ebx
cmp dword [edi + 0x1218], ebx
jle 0x593c42
lea ecx, [edi + 0x1210]
push eax
call fcn.0058f7d2
push ebx
push ebx
mov ecx, edi
mov eax, dword [eax]
push eax
mov dword [ebp - 0x20], eax
call fcn.0058f9d9
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x593b63
mov esi, dword [eax + 0x60]
test esi, esi
jne 0x593aaf
mov eax, ebx
jmp 0x593ab6
push esi
call fcn.0066be50
pop ecx
push eax
push esi
lea ecx, [ebp - 0x10]
call fcn.00403730
mov eax, dword [ebp - 0x10]
cmp dword [eax - 0xc], ebx
jne 0x593b1b
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov esi, dword [eax + 0x1ac]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp - 0x1c]
call esi
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov esi, dword [eax + 0xc0]
lea eax, [ebp - 0x2c]
push eax
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp - 0x1c]
call esi
push eax
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 2
call fcn.0042a4a2
mov ecx, dword [ebp - 0x2c]
mov byte [ebp - 4], 1
lea ecx, [ecx - 0x10]
call fcn.00428a03
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x20]
push eax
neg ecx
push ecx
push ebx
push dword [ebp - 0x30]
mov dword [ebp - 0x1c], ecx
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [edi + 0xda8]
push dword [ebp - 0x20]
mov esi, dword [eax + 0x1a0]
mov ecx, esi
call dword [0x6bfdfc]
lea ecx, [edi + 0xda8]
call esi
test eax, eax
je 0x593b60
push 8
push dword [ebp - 0x1c]
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_CheckMenuItem]
mov edi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
lea ecx, [edi + 0x1210]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, dword [edi + 0x1218]
jl 0x593a84
jmp 0x593c42
test esi, esi
je 0x593c42
mov eax, dword [esi]
mov esi, dword [eax + 0x1b4]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp + 0x14]
call esi
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x14]
cmp dword [eax + 0xc4], ebx
je 0x593bd2
push 0x42bc
lea ecx, [ebp - 0x10]
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xffffffffffffff96
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
jmp 0x593c42
mov eax, dword [eax]
mov esi, dword [eax + 0x140]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp + 0x14]
call esi
test eax, eax
je 0x593c42
push 0x42bb
lea ecx, [ebp - 0x10]
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xffffffffffffff97
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [edi + 0xda8]
push dword [ebp - 0x2c]
mov esi, dword [eax + 0x1a0]
mov ecx, esi
call dword [0x6bfdfc]
lea ecx, [edi + 0xda8]
call esi
test eax, eax
je 0x593c3f
push 3
push 0xffffffffffffff97
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov edi, dword [ebp - 0x14]
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_GetMenuItemCount]
test eax, eax
jle 0x593c5f
push ebx
push ebx
push 0x800
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [edi + 0x31c]
lea ecx, [ebp - 0x10]
neg eax
sbb eax, eax
and eax, 0xc
add eax, 0x42bd
push eax
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xffffffffffffff9a
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
mov esi, dword [edi + 0x31c]
mov ecx, edi
call fcn.0052fb82
lea ecx, [ebp - 0x10]
test eax, eax
je 0x593cc7
neg esi
sbb esi, esi
and esi, 0x11
add esi, 0x42b9
push esi
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xffffffffffffff99
jmp 0x593ce7
neg esi
sbb esi, esi
and esi, 0x11
add esi, 0x42ba
push esi
call fcn.00404f80
test eax, eax
je 0x5940e5
push dword [ebp - 0x10]
push 0xffffffffffffff98
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
push ebx
push ebx
push 0x800
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
cmp dword [edi + 0x330], 1
lea ecx, [ebp - 0x10]
push 0x42be
jne 0x593d3e
call fcn.00404f80
test eax, eax
je 0x5940e5
mov esi, dword [ebp - 0x10]
push esi
push 0xffffffffffffff94
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
push 8
push 0xffffffffffffff94
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_CheckMenuItem]
jmp 0x593d5b
call fcn.00404f80
test eax, eax
je 0x5940e5
mov esi, dword [ebp - 0x10]
push esi
push 0xffffffffffffff95
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
lea ecx, [esi - 0x10]
mov byte [ebp - 4], bl
call fcn.00428a03
cmp dword [ebp - 0x18], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x20]
mov dword [ebp - 0x2c], eax
je 0x593d81
mov eax, dword [0x775698]
mov dword [eax + 0x60], 1
mov edi, dword [0x775698]
push ebx
push ecx
push dword [ebp + 0x10]
mov eax, dword [edi]
push dword [ebp + 0xc]
push dword [ebp - 0x30]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
cmp dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], eax
je 0x593db4
mov eax, dword [0x775698]
mov dword [eax + 0x60], ebx
push dword [ebp - 0x2c]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x593dcd
mov dword [ebp - 4], 3
jmp 0x593f86
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x593e29
mov eax, dword [esi]
mov dword [esi + 0xc8], ebx
mov esi, dword [eax + 0x1c4]
mov ecx, esi
call dword [0x6bfdfc]
mov edi, dword [ebp + 0x14]
mov ecx, edi
call esi
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x593e13
mov eax, dword [eax]
mov esi, dword [eax + 0x198]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp - 0x2c]
call esi
mov dword [edi + 0xe0], ebx
mov eax, dword [edi]
mov esi, dword [eax + 0x1b8]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
mov esi, edi
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x14]
cmp eax, 0xffffff94
je 0x5940d0
cmp eax, 0xffffff95
je 0x594024
cmp eax, 0xffffff96
je 0x593ff7
cmp eax, 0xffffff97
je 0x593faf
cmp eax, 0xffffff98
je 0x593fa4
cmp eax, 0xffffff99
je 0x593f9c
cmp eax, 0xffffff9a
je 0x593edd
cmp dword [edi + 0x31c], ebx
je 0x593ec5
neg eax
mov dword [ebp - 0x1c], eax
je 0x593ec5
push ebx
push ebx
push eax
mov ecx, edi
call fcn.0058f9d9
mov dword [ebp - 0x24], eax
test eax, eax
je 0x593ec5
mov eax, dword [edi + 0xda8]
mov esi, dword [eax + 0x1a0]
mov ecx, esi
mov eax, dword [ebp - 0x1c]
push eax
call dword [0x6bfdfc]
lea ecx, [edi + 0xda8]
call esi
lea ecx, [edi + 0xda8]
push dword [ebp - 0x24]
test eax, eax
jne 0x59401a
call fcn.005ad40f
jmp 0x59401f
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x593ed1
mov dword [0x775008], eax
mov dword [ebp - 4], 6
jmp 0x593f86
cmp esi, dword [edi + 0x338]
jne 0x593eeb
mov dword [edi + 0x338], ebx
cmp esi, dword [edi + 0x33c]
jne 0x593ef9
mov dword [edi + 0x33c], ebx
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x593f0d
push ebx
push ebx
push 0x10
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
mov esi, dword [ebp - 0x28]
push edi
push ebx
push dword [0x775e7c]
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
jne 0x593f7c
push 0x4df8
call fcn.0044902e
pop ecx
mov dword [ebp - 0x2c], eax
mov byte [ebp - 4], 4
test eax, eax
je 0x593f48
push edi
push esi
mov ecx, eax
call fcn.005d78fe
mov edi, eax
jmp 0x593f4a
mov edi, ebx
mov byte [ebp - 4], bl
test edi, edi
je 0x5940e5
mov eax, dword [edi]
mov esi, dword [eax + 0x168]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
mov eax, dword [edi]
push 1
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
xor ebx, ebx
mov dword [ebp - 4], 5
inc ebx
lea ecx, [ebp - 0x34]
mov dword [ebp - 0x34], vtable.CMenu.0
call fcn.0044a29a
mov eax, ebx
jmp 0x5940c8
mov dword [edi + 0x2f4], ebx
jmp 0x59401f
xor eax, eax
inc eax
mov dword [edi + 0x2f4], eax
jmp 0x593ff3
test esi, esi
je 0x594044
cmp dword [esi + 0xec], ebx
je 0x593fd7
push ebx
push ebx
push dword [esi + 0xa4]
mov ecx, edi
call fcn.0058f9d9
test eax, eax
je 0x593fd7
mov esi, eax
mov dword [ebp + 0x14], esi
mov eax, dword [esi]
mov esi, dword [eax + 0x1b0]
lea eax, [edi + 0xda8]
push eax
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, dword [ebp + 0x14]
call esi
mov esi, eax
jmp 0x594046
cmp esi, dword [edi + 0x338]
jne 0x594005
mov dword [edi + 0x338], ebx
cmp esi, dword [edi + 0x33c]
jne 0x594013
mov dword [edi + 0x33c], ebx
lea ecx, [edi + 0xda8]
push esi
call fcn.005adfde
xor esi, esi
inc esi
jmp 0x594046
mov ecx, dword [edi + 0x7a8]
test ecx, ecx
je 0x594044
push ebx
call fcn.0056be2e
push 0x105
push ebx
push ebx
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_RedrawWindow]
mov esi, ebx
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x59405a
push ebx
push ebx
push 0x10
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
test esi, esi
je 0x5940af
mov eax, dword [edi]
mov dword [edi + 0x2f8], 1
mov esi, dword [eax + 0x210]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
mov edi, dword [ebp - 0x28]
test edi, edi
je 0x5940af
cmp dword [edi + 0x20], 0
je 0x5940af
mov eax, dword [edi]
push 1
mov esi, dword [eax + 0x178]
mov ecx, esi
call dword [0x6bfdfc]
mov ecx, edi
call esi
push 0x581
push ebx
push ebx
push dword [edi + 0x20]
call dword [sym.imp.USER32.dll_RedrawWindow]
lea ecx, [ebp - 0x34]
mov dword [ebp - 4], 7
mov dword [ebp - 0x34], vtable.CMenu.0
call fcn.0044a29a
xor eax, eax
inc eax
call fcn.0060ae44
ret 0x10
mov ecx, dword [edi + 0x7a8]
test ecx, ecx
je 0x594044
push 1
jmp 0x59402f
call fcn.004273da
int3