Function at 0x54f89a
Capabilities:
Log keystrokes via polling

Disassembly:
push 0x28
mov eax, 0x67da9b
call fcn.005f1490
mov edi, ecx
mov dword [ebp - 0x14], edi
push 1
call fcn.0054b248
xor ebx, ebx
cmp dword [edi + 0x300], ebx
je 0x54f8d0
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 0x54f8ea
push 2
call dword [sym.imp.USER32.dll_GetAsyncKeyState]
test ax, ax
js 0x54f8f2
cmp dword [0x74aa98], ebx
jne 0x54f8f9
xor eax, eax
jmp 0x55001d
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x54f93e
mov eax, dword [esi]
mov esi, dword [eax + 0xd0]
mov ecx, esi
call dword [0x68dd90]
mov ecx, dword [ebp + 0x14]
call esi
test eax, eax
jne 0x54f93b
mov eax, dword [ebp + 0x14]
mov dword [eax + 0xc8], 1
mov eax, dword [eax]
mov esi, dword [eax + 0x1b8]
mov ecx, esi
call dword [0x68dd90]
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.0042920a
push eax
push 0x71b7b8
call fcn.00444499
pop ecx
pop ecx
mov ecx, edi
mov dword [ebp - 0x18], eax
call fcn.004298ea
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.0045152c
lea ecx, [ebp - 0x10]
call fcn.004026b1
mov byte [ebp - 4], 1
cmp dword [edi + 0x31c], ebx
je 0x54fad6
push 0x42c8
lea ecx, [ebp - 0x10]
call fcn.00404263
test eax, eax
je 0x55003a
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 0x54fb97
lea ecx, [edi + 0x1210]
push eax
call fcn.0053c5d9
push ebx
push ebx
mov ecx, edi
mov eax, dword [eax]
push eax
mov dword [ebp - 0x20], eax
call fcn.0054b958
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x54fab8
mov esi, dword [eax + 0x60]
test esi, esi
jne 0x54fa04
mov eax, ebx
jmp 0x54fa0b
push esi
call fcn.0060fe00
pop ecx
push eax
push esi
lea ecx, [ebp - 0x10]
call fcn.004065bc
mov eax, dword [ebp - 0x10]
cmp dword [eax - 0xc], ebx
jne 0x54fa70
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ecx]
mov esi, dword [eax + 0x1ac]
mov ecx, esi
call dword [0x68dd90]
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 [0x68dd90]
mov ecx, dword [ebp - 0x1c]
call esi
push eax
lea ecx, [ebp - 0x10]
mov byte [ebp - 4], 2
call fcn.00402f98
mov ecx, dword [ebp - 0x2c]
mov byte [ebp - 4], 1
lea ecx, [ecx - 0x10]
call fcn.00406421
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 [0x68dd90]
lea ecx, [edi + 0xda8]
call esi
test eax, eax
je 0x54fab5
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 0x54f9d9
jmp 0x54fb97
test esi, esi
je 0x54fb97
mov eax, dword [esi]
mov esi, dword [eax + 0x1b4]
mov ecx, esi
call dword [0x68dd90]
mov ecx, dword [ebp + 0x14]
call esi
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x14]
cmp dword [eax + 0xc4], ebx
je 0x54fb27
push 0x42bc
lea ecx, [ebp - 0x10]
call fcn.00404263
test eax, eax
je 0x55003a
push dword [ebp - 0x10]
push 0xffffffffffffff96
push ebx
push dword [ebp - 0x30]
call dword [sym.imp.USER32.dll_AppendMenuA]
jmp 0x54fb97
mov eax, dword [eax]
mov esi, dword [eax + 0x140]
mov ecx, esi
call dword [0x68dd90]
mov ecx, dword [ebp + 0x14]
call esi
test eax, eax
je 0x54fb97
push 0x42bb
lea ecx, [ebp - 0x10]
call fcn.00404263
test eax, eax
je 0x55003a
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 [0x68dd90]
lea ecx, [edi + 0xda8]
call esi
test eax, eax
je 0x54fb94
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 0x54fbb4
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.00404263
test eax, eax
je 0x55003a
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.0047556f
lea ecx, [ebp - 0x10]
test eax, eax
je 0x54fc1c
neg esi
sbb esi, esi
and esi, 0x11
add esi, 0x42b9
push esi
call fcn.00404263
test eax, eax
je 0x55003a
push dword [ebp - 0x10]
push 0xffffffffffffff99
jmp 0x54fc3c
neg esi
sbb esi, esi
and esi, 0x11
add esi, 0x42ba
push esi
call fcn.00404263
test eax, eax
je 0x55003a
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 0x54fc93
call fcn.00404263
test eax, eax
je 0x55003a
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 0x54fcb0
call fcn.00404263
test eax, eax
je 0x55003a
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.00406421
cmp dword [ebp - 0x18], 0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x20]
mov dword [ebp - 0x2c], eax
je 0x54fcd6
mov eax, dword [0x74aa98]
mov dword [eax + 0x60], 1
mov edi, dword [0x74aa98]
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 [0x68dd90]
mov ecx, edi
call esi
cmp dword [ebp - 0x18], 0
mov dword [ebp - 0x1c], eax
je 0x54fd09
mov eax, dword [0x74aa98]
mov dword [eax + 0x60], ebx
push dword [ebp - 0x2c]
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
jne 0x54fd22
mov dword [ebp - 4], 3
jmp 0x54fedb
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x54fd7e
mov eax, dword [esi]
mov dword [esi + 0xc8], ebx
mov esi, dword [eax + 0x1c4]
mov ecx, esi
call dword [0x68dd90]
mov edi, dword [ebp + 0x14]
mov ecx, edi
call esi
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x54fd68
mov eax, dword [eax]
mov esi, dword [eax + 0x198]
mov ecx, esi
call dword [0x68dd90]
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 [0x68dd90]
mov ecx, edi
call esi
mov esi, edi
mov eax, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x14]
cmp eax, 0xffffff94
je 0x550025
cmp eax, 0xffffff95
je 0x54ff79
cmp eax, 0xffffff96
je 0x54ff4c
cmp eax, 0xffffff97
je 0x54ff04
cmp eax, 0xffffff98
je 0x54fef9
cmp eax, 0xffffff99
je 0x54fef1
cmp eax, 0xffffff9a
je 0x54fe32
cmp dword [edi + 0x31c], ebx
je 0x54fe1a
neg eax
mov dword [ebp - 0x1c], eax
je 0x54fe1a
push ebx
push ebx
push eax
mov ecx, edi
call fcn.0054b958
mov dword [ebp - 0x24], eax
test eax, eax
je 0x54fe1a
mov eax, dword [edi + 0xda8]
mov esi, dword [eax + 0x1a0]
mov ecx, esi
mov eax, dword [ebp - 0x1c]
push eax
call dword [0x68dd90]
lea ecx, [edi + 0xda8]
call esi
lea ecx, [edi + 0xda8]
push dword [ebp - 0x24]
test eax, eax
jne 0x54ff6f
call fcn.0053c439
jmp 0x54ff74
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x54fe26
mov dword [0x74a734], eax
mov dword [ebp - 4], 6
jmp 0x54fedb
cmp esi, dword [edi + 0x338]
jne 0x54fe40
mov dword [edi + 0x338], ebx
cmp esi, dword [edi + 0x33c]
jne 0x54fe4e
mov dword [edi + 0x33c], ebx
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x54fe62
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 [0x74ab4c]
push dword [esi + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
test eax, eax
jne 0x54fed1
push 0x4df8
call fcn.004399fa
pop ecx
mov dword [ebp - 0x2c], eax
mov byte [ebp - 4], 4
test eax, eax
je 0x54fe9d
push edi
push esi
mov ecx, eax
call fcn.005b54fb
mov edi, eax
jmp 0x54fe9f
mov edi, ebx
mov byte [ebp - 4], bl
test edi, edi
je 0x55003a
mov eax, dword [edi]
mov esi, dword [eax + 0x168]
mov ecx, esi
call dword [0x68dd90]
mov ecx, edi
call esi
mov eax, dword [edi]
push 1
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x68dd90]
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.00451594
mov eax, ebx
jmp 0x55001d
mov dword [edi + 0x2f4], ebx
jmp 0x54ff74
xor eax, eax
inc eax
mov dword [edi + 0x2f4], eax
jmp 0x54ff48
test esi, esi
je 0x54ff99
cmp dword [esi + 0xec], ebx
je 0x54ff2c
push ebx
push ebx
push dword [esi + 0xa4]
mov ecx, edi
call fcn.0054b958
test eax, eax
je 0x54ff2c
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 [0x68dd90]
mov ecx, dword [ebp + 0x14]
call esi
mov esi, eax
jmp 0x54ff9b
cmp esi, dword [edi + 0x338]
jne 0x54ff5a
mov dword [edi + 0x338], ebx
cmp esi, dword [edi + 0x33c]
jne 0x54ff68
mov dword [edi + 0x33c], ebx
lea ecx, [edi + 0xda8]
push esi
call fcn.0053d067
xor esi, esi
inc esi
jmp 0x54ff9b
mov ecx, dword [edi + 0x7a8]
test ecx, ecx
je 0x54ff99
push ebx
call fcn.00512a4a
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 0x54ffaf
push ebx
push ebx
push 0x10
push dword [eax + 0x20]
call dword [sym.imp.USER32.dll_SendMessageA]
test esi, esi
je 0x550004
mov eax, dword [edi]
mov dword [edi + 0x2f8], 1
mov esi, dword [eax + 0x210]
mov ecx, esi
call dword [0x68dd90]
mov ecx, edi
call esi
mov edi, dword [ebp - 0x28]
test edi, edi
je 0x550004
cmp dword [edi + 0x20], 0
je 0x550004
mov eax, dword [edi]
push 1
mov esi, dword [eax + 0x178]
mov ecx, esi
call dword [0x68dd90]
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.00451594
xor eax, eax
inc eax
call fcn.005f145e
ret 0x10
mov ecx, dword [edi + 0x7a8]
test ecx, ecx
je 0x54ff99
push 1
jmp 0x54ff84
call fcn.0041ee2b
int3