Function at 0x453e80
Capabilities:
Check for unmoving mouse cursor
Find taskbar
Log keystrokes via polling

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4e3298
push eax
mov dword fs:[0], esp
sub esp, 0x44
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x64]
mov esi, ecx
mov eax, dword [edi + 4]
cmp eax, 0x203
ja 0x454407
je case.0x454415.518
cmp eax, 0x201
ja 0x4542a5
je 0x454061
cmp eax, 0xa0
je 0x45401d
cmp eax, 0x200
jne case.0x454415.519
mov eax, dword [esi + 0x598]
test eax, eax
je 0x453f58
mov eax, dword [esi + 0x59c]
test eax, eax
jne 0x453f26
lea eax, [esi + 0xbbc]
test eax, eax
je 0x453efa
mov eax, dword [eax + 0x1c]
lea ecx, [esp + 0x34]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
push edx
lea ecx, [esp + 0x38]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne case.0x454415.519
mov ecx, esi
call fcn.0044f960
jmp case.0x454415.519
mov ecx, esi
call fcn.004c4cb1
test eax, 0xc00000
jne case.0x454415.519
cmp dword [edi + 0x18], 4
jge case.0x454415.519
mov ecx, esi
call fcn.0044f990
xor eax, eax
mov ecx, dword [esp + 0x54]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x50
ret 4
mov eax, dword [esi + 0x590]
test eax, eax
je case.0x454415.519
mov eax, dword [0x52798c]
test eax, eax
jne 0x453f9d
push 1
call dword [sym.imp.USER32.dll_GetSystemMetrics]
mov ecx, dword [edi + 0x18]
sub eax, 4
cmp ecx, eax
jle 0x453fb9
push 0
push str.Shell_TrayWnd
call dword [sym.imp.USER32.dll_FindWindowA]
push eax
call dword [sym.imp.USER32.dll_BringWindowToTop]
mov dword [0x52798c], 1
jmp 0x453fb9
test esi, esi
jne 0x453fa5
xor eax, eax
jmp 0x453fa8
mov eax, dword [esi + 0x1c]
push eax
call dword [sym.imp.USER32.dll_BringWindowToTop]
mov dword [0x52798c], 0
mov eax, dword [esi + 0x594]
test eax, eax
je 0x453fdb
cmp dword [edi + 0x18], 4
jge case.0x454415.519
push 1
mov ecx, esi
call fcn.0044f830
jmp case.0x454415.519
lea eax, [esi + 0xbbc]
test eax, eax
je 0x453fe8
mov eax, dword [eax + 0x1c]
lea edx, [esp + 0x44]
push edx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
push eax
lea edx, [esp + 0x48]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne case.0x454415.519
push 1
mov ecx, esi
call fcn.0044f740
jmp case.0x454415.519
mov eax, dword [esi + 0x598]
test eax, eax
je case.0x454415.519
mov eax, dword [esi + 0x59c]
test eax, eax
je case.0x454415.519
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x1c]
lea edx, [esp + 0x34]
mov dword [esp + 0x38], ecx
push edx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [esp + 0x38]
test eax, eax
jmp 0x453f38
mov ebp, dword [sym.imp.USER32.dll_GetWindowRect]
mov dword [0x52794c], 0
mov eax, dword [esi + 0x6a0]
test eax, eax
je 0x454196
push 0
mov ecx, esi
call fcn.004d0b16
mov ebx, eax
test ebx, ebx
je 0x454196
mov eax, dword [ebx + 0xf8]
lea ecx, [esp + 0x24]
push ecx
mov edx, dword [eax + 0x1c]
push edx
call ebp
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
push eax
lea edx, [esp + 0x28]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x454196
mov eax, dword [esi + 0xe70]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov eax, dword [eax + 0x1c]
push 0x157
push eax
call ebp
cmp eax, 1
je case.0x454415.519
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x157
mov ecx, dword [eax + 0x1c]
push ecx
call ebp
cmp eax, 1
je case.0x454415.519
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [ebx + 0xf8]
mov dword [esp + 0x38], eax
lea ecx, [esp + 0x34]
mov eax, dword [edx + 0x1c]
push ecx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov eax, dword [edi + 4]
and ecx, 0xffff
shl ecx, 0x10
and edx, 0xffff
or ecx, edx
push ecx
mov ecx, dword [ebx + 0xf8]
push eax
call fcn.0042cdd0
mov eax, dword [esi + 0x24c]
test eax, eax
je case.0x454415.519
cmp dword [edi + 8], 9
jne case.0x454415.519
mov edx, dword [edi + 0x18]
push 1
push eax
mov eax, dword [edi + 0x14]
sub esp, 8
mov ecx, esp
mov dword [esp + 0x74], esp
push edx
push eax
call fcn.00454f10
mov ecx, esi
call fcn.00452eb0
test eax, eax
je case.0x454415.519
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0x1dc]
test eax, eax
je case.0x454415.519
mov eax, dword [esi + 0x1d8]
test eax, eax
je case.0x454415.519
mov eax, dword [esi + 0xe74]
mov ecx, dword [eax + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_IsWindowVisible]
test eax, eax
je case.0x454415.519
mov eax, dword [esi + 0xe74]
lea edx, [esp + 0x34]
push edx
mov eax, dword [eax + 0x1c]
push eax
call ebp
mov ecx, dword [esp + 0x34]
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
add ecx, 0x14
mov dword [esp + 0x3c], ecx
push edx
lea ecx, [esp + 0x38]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je case.0x454415.519
mov edx, dword [esp + 0x40]
mov edi, vtable.CMenu.0
mov dword [esp + 0x38], edx
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], 0
mov dword [esp + 0x5c], 5
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push eax
lea ecx, [esp + 0x28]
call fcn.004c67af
lea eax, [esp + 0x24]
mov ecx, esi
push eax
call fcn.0046ab00
call fcn.004c5f20
test eax, eax
je 0x454250
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x74]
jmp 0x454252
xor eax, eax
mov ecx, dword [esp + 0x34]
push 0
push eax
mov eax, dword [esp + 0x40]
inc eax
add ecx, 0x13
push eax
push ecx
push 4
lea ecx, [esp + 0x38]
call fcn.004c28ab
mov edx, dword [esp + 0x28]
push 0
push edx
call fcn.004a3a40
add esp, 8
lea ecx, [esp + 0x24]
call fcn.004c6806
mov dword [esp + 0x24], edi
lea ecx, [esp + 0x24]
mov dword [esp + 0x5c], 6
call fcn.004c6806
mov eax, 1
jmp 0x453f43
cmp eax, 0x202
jne case.0x454415.519
mov eax, dword [esi + 0xa88]
test eax, eax
je 0x4542f8
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x9f4]
lea edx, [esp + 0x34]
mov dword [esp + 0x38], ecx
push edx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esi + 0x9d8]
call fcn.00402ae0
test eax, eax
jge 0x4542f8
mov dword [esi + 0xa88], 0
push edi
mov ecx, esi
call fcn.00453de0
test eax, eax
je 0x45430e
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe8]
mov ebp, dword [sym.imp.USER32.dll_GetFocus]
test eax, eax
jle 0x454385
call ebp
push eax
call fcn.004c1de6
mov ebx, eax
mov eax, dword [esi + 0xe70]
push 0
push 0
mov edx, dword [eax + 0x1c]
push 0x407
push edx
call dword [sym.imp.USER32.dll_SendMessageA]
push eax
call fcn.004c1de6
cmp ebx, eax
jne 0x454385
mov ecx, dword [esi + 0xe70]
lea eax, [esp + 0x34]
push eax
mov edx, dword [ecx + 0x1c]
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
push eax
lea edx, [esp + 0x38]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x454385
mov eax, dword [esi + 0xe8]
mov ecx, esi
push eax
call fcn.0047e740
mov eax, dword [esi + 0xec]
test eax, eax
jle case.0x454415.519
call ebp
push eax
call fcn.004c1de6
mov ebx, eax
mov eax, dword [esi + 0xe74]
push 0
push 0
mov ecx, dword [eax + 0x1c]
push 0x407
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
push eax
call fcn.004c1de6
cmp ebx, eax
jne case.0x454415.519
mov eax, dword [esi + 0xe74]
lea edx, [esp + 0x34]
push edx
mov ecx, dword [eax + 0x1c]
push ecx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
push edx
lea ecx, [esp + 0x38]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je case.0x454415.519
mov edx, dword [esi + 0xec]
mov ecx, esi
push edx
call fcn.0047e740
jmp case.0x454415.519
add eax, 0xfffffdfc
cmp eax, 6
ja case.0x454415.519
jmp dword [eax*4 + 0x454e94]
mov eax, dword [esi + 0x204]
mov ebp, dword [sym.imp.USER32.dll_GetCursorPos]
test eax, eax
je 0x4544b2
lea eax, [esp + 0x34]
push eax
call ebp
lea eax, [esi + 0x9d8]
test eax, eax
je 0x454444
mov eax, dword [eax + 0x1c]
lea ecx, [esp + 0x44]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
push edx
lea ecx, [esp + 0x48]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x4544b2
mov edx, dword [edi + 8]
push 0
shr edx, 0x10
test dx, dx
jle 0x454494
mov eax, dword [esi + 0x1c]
push 0x80a6
push 0x111
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x453f43
mov ecx, dword [esi + 0x1c]
push 0x80a7
push 0x111
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe70]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov edx, dword [eax + 0x1c]
push 0x407
push edx
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x4544da
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
jne 0x4544ff
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
mov edx, dword [esi + 0x1c]
push eax
push ecx
push 0x20a
push edx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov eax, dword [eax + 0x1c]
push eax
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x454521
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
jne 0x454594
lea ecx, [esp + 0x34]
push ecx
call ebp
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov edx, dword [eax + 0x1c]
push edx
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x45454e
mov eax, dword [eax + 0x1c]
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x34]
push edx
lea ecx, [esp + 0x28]
push eax
push ecx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
jne 0x454594
mov edx, dword [edi + 0xc]
mov eax, dword [edi + 8]
mov ecx, dword [esi + 0x1c]
push edx
push eax
push 0x20a
push ecx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0x200]
test eax, eax
je 0x454637
cmp word [edi + 8], 2
jne 0x454637
mov edx, dword [edi + 8]
mov ecx, esi
shr edx, 0x10
test dx, dx
jle 0x4545c1
call fcn.00457480
jmp 0x4545c6
call fcn.00457520
mov eax, dword [esi + 0x1a4]
test eax, eax
jne 0x45462d
push 0
mov ecx, esi
call fcn.004d0b16
mov edi, eax
test edi, edi
je 0x45461d
mov eax, dword [edi + 0xf8]
test eax, eax
je 0x45461d
mov eax, dword [edi + 0x1c]
mov ebx, dword [sym.imp.USER32.dll_IsWindow]
push eax
call ebx
test eax, eax
je 0x45461d
mov eax, dword [edi + 0xf8]
test eax, eax
je 0x454606
mov eax, dword [eax + 0x1c]
push eax
call ebx
test eax, eax
je 0x45461d
mov ecx, dword [edi + 0xf8]
mov dword [ecx + 0x170], 0
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov dword [esi + 0x1a4], 1
mov eax, 1
jmp 0x453f43
cmp dword [esi + 0x25c], 7
jl case.0x454415.519
push 0x11
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jge case.0x454415.519
mov edx, dword [edi + 8]
mov ecx, esi
shr edx, 0x10
test dx, dx
jle 0x454671
call fcn.0047d830
mov eax, 1
jmp 0x453f43
call fcn.0047d8a0
mov eax, 1
jmp 0x453f43
push 0
mov ecx, esi
call fcn.004d0b16
mov ebx, eax
test ebx, ebx
je case.0x454415.519
mov ecx, dword [ebx + 0xf8]
lea eax, [esp + 0x24]
push eax
mov edx, dword [ecx + 0x1c]
push edx
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
push eax
lea edx, [esp + 0x28]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je case.0x454415.519
mov eax, dword [esi + 0xe70]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov eax, dword [eax + 0x1c]
push 0x157
push eax
call ebp
cmp eax, 1
je case.0x454415.519
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x157
mov ecx, dword [eax + 0x1c]
push ecx
call ebp
cmp eax, 1
je case.0x454415.519
mov edx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
mov dword [esp + 0x34], edx
mov edx, dword [ebx + 0xf8]
mov dword [esp + 0x38], eax
lea ecx, [esp + 0x34]
mov eax, dword [edx + 0x1c]
push ecx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
mov eax, dword [edi + 4]
and ecx, 0xffff
shl ecx, 0x10
and edx, 0xffff
or ecx, edx
push ecx
mov ecx, dword [ebx + 0xf8]
push eax
call fcn.0042cdd0
mov eax, dword [esi + 0x250]
test eax, eax
je case.0x454415.519
test byte [edi + 8], 1
je case.0x454415.519
mov edx, dword [edi + 0x18]
push 0
push eax
mov eax, dword [edi + 0x14]
sub esp, 8
mov ecx, esp
mov dword [esp + 0x74], esp
push edx
push eax
call fcn.00454f10
mov ecx, esi
call fcn.00452eb0
test eax, eax
je case.0x454415.519
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe70]
mov ebx, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov ecx, dword [eax + 0x1c]
push 0x407
push ecx
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x4547c3
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
je 0x454890
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov edx, dword [eax + 0x1c]
push edx
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x4547ed
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
je 0x454890
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x157
mov eax, dword [eax + 0x1c]
push eax
call ebx
cmp eax, 1
jne 0x454876
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x147
mov ecx, dword [eax + 0x1c]
push ecx
call ebx
test eax, eax
jl 0x454876
lea edi, [esi + 0x304]
push eax
mov ecx, edi
call fcn.004bff24
test eax, eax
je 0x454857
push eax
mov ecx, edi
call fcn.00454f00
push ecx
mov ecx, esp
mov dword [esp + 0x68], esp
push eax
call fcn.004c54fc
call fcn.004177c0
add esp, 4
mov edx, dword [esi + 0xe74]
push 0
push 0
push 0x14f
mov eax, dword [edx + 0x1c]
push eax
call ebx
mov eax, 1
jmp 0x453f43
push edi
mov ecx, esi
call fcn.00453de0
test eax, eax
je case.0x454415.519
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe70]
push 0
push 0
push 0x407
mov ecx, dword [eax + 0x1c]
push ecx
call ebx
push eax
call fcn.004c1de6
test eax, eax
je 0x4548b2
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
jne 0x4548cb
mov eax, dword [esi + 0xe70]
push 0
push 0
push 0x407
mov edx, dword [eax + 0x1c]
push edx
jmp 0x4548de
mov eax, dword [esi + 0xe74]
push 0
push 0
push 0x407
mov eax, dword [eax + 0x1c]
push eax
call ebx
push eax
call fcn.004c1de6
mov ebp, eax
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [edi]
je 0x454917
mov ecx, ebp
call fcn.004c4ef5
mov ecx, dword [ebp + 0x1c]
push 0xffffffffffffffff
push 0
push 0xb1
push ecx
call ebx
mov edx, dword [ebp + 0x1c]
push 0
push 0
push 0xb7
push edx
call ebx
xor eax, eax
mov dword [esp + 0x34], vtable.CMenu.0
mov dword [esp + 0x38], eax
mov dword [esp + 0x5c], eax
call fcn.004d72f1
mov eax, dword [eax + 0xc]
push 0x156
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
push eax
lea ecx, [esp + 0x38]
call fcn.004c67af
mov eax, dword [esp + 0x38]
push 0
push eax
call dword [sym.imp.USER32.dll_GetSubMenu]
push eax
call fcn.004c677c
mov dword [esp + 0x64], eax
mov eax, dword [0x52700c]
test eax, eax
je 0x454985
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push str.MenuAddress
call fcn.004c57f5
mov ecx, dword [esp + 0x68]
push ecx
call fcn.004187b0
add esp, 8
lea edx, [esp + 0x1c]
push edx
call fcn.00417870
add esp, 4
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x5c], 1
mov ecx, dword [eax - 8]
test ecx, ecx
jne 0x4549cc
mov ecx, dword [esp + 0x64]
push 3
push 0x8216
mov edx, dword [ecx + 4]
push edx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov eax, dword [esp + 0x64]
push 3
push 0x8219
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov edx, dword [ebp + 0x1c]
push 0
push 0
push 0xc6
push edx
call ebx
test eax, eax
jne 0x4549f4
mov eax, dword [esp + 0x64]
push 3
push 0x821c
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov ecx, dword [ebp + 0x1c]
lea edx, [esp + 0x18]
lea eax, [esp + 0x14]
push edx
push eax
push 0xb0
push ecx
call ebx
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
cmp edx, eax
jne 0x454a54
mov eax, dword [esp + 0x64]
push 3
push 0x8217
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov edx, dword [esp + 0x64]
push 3
push 0x8218
mov eax, dword [edx + 4]
push eax
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov ecx, dword [esp + 0x64]
push 3
push 0x821a
mov edx, dword [ecx + 4]
push edx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x454abc
mov eax, dword [0x52251c]
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x10]
mov byte [esp + 0x5c], 2
push ecx
mov ecx, ebp
call fcn.004c27b1
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
call fcn.004c54fc
call fcn.0041afa0
add esp, 4
test eax, eax
je 0x454a99
cmp eax, dword [esp + 0x18]
jne 0x454aae
mov eax, dword [esp + 0x64]
push 3
push 0x821b
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.USER32.dll_EnableMenuItem]
lea ecx, [esp + 0x10]
mov byte [esp + 0x5c], 1
call fcn.004c5787
push 0
mov ecx, esi
call fcn.004d0b16
test eax, eax
mov dword [esp + 0x10], eax
jne 0x454af7
mov edx, dword [esp + 0x64]
push 3
push 0x8231
mov eax, dword [edx + 4]
push eax
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov ecx, dword [esp + 0x64]
push 3
push 0x8232
mov edx, dword [ecx + 4]
push edx
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov eax, dword [esi + 0x1c]
mov ecx, dword [edi + 0x18]
mov edx, dword [edi + 0x14]
push 0
push eax
mov eax, dword [esp + 0x6c]
push ecx
push edx
mov ecx, dword [eax + 4]
push 0x182
push ecx
call dword [sym.imp.USER32.dll_TrackPopupMenuEx]
add eax, 0xffff7dea
cmp eax, 0x1c
ja case.0x454b2e.33311
xor edx, edx
mov dl, byte [eax + 0x454ed8]
jmp dword [edx*4 + 0x454eb0]
mov eax, dword [ebp + 0x1c]
push 0
push 0
push 0x302
push eax
call ebx
mov ecx, esi
call fcn.0043ea40
jmp case.0x454b2e.33311
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0xc7
push ecx
call ebx
jmp case.0x454b2e.33311
mov edx, dword [ebp + 0x1c]
push 0
push 0
push 0x300
push edx
call ebx
jmp case.0x454b2e.33311
mov eax, dword [ebp + 0x1c]
push 0
push 0
push 0x301
push eax
call ebx
jmp case.0x454b2e.33311
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0x302
push ecx
call ebx
jmp case.0x454b2e.33311
mov edx, dword [ebp + 0x1c]
push 0
push 0
push 0x303
push edx
call ebx
jmp case.0x454b2e.33311
mov eax, dword [ebp + 0x1c]
push 0xffffffffffffffff
push 0
push 0xb1
push eax
call ebx
mov ecx, dword [ebp + 0x1c]
push 0
push 0
push 0xb7
push ecx
call ebx
jmp case.0x454b2e.33311
mov edx, dword [esp + 0x10]
push ecx
add edx, 0xdc
mov ecx, esp
mov dword [esp + 0x68], esp
push edx
call fcn.004c54fc
call fcn.004177c0
add esp, 4
jmp case.0x454b2e.33311
mov esi, dword [esp + 0x10]
push 0x51c8ec
lea ecx, [esp + 0x24]
lea eax, [esi + 0xdc]
push eax
push ecx
call fcn.004c5a1c
mov edx, dword [esi + 0xf8]
push ecx
add edx, 0x200
mov ecx, esp
mov dword [esp + 0x68], esp
push edx
push eax
push ecx
mov byte [esp + 0x6c], 3
call fcn.004c59b6
call fcn.004177c0
add esp, 4
lea ecx, [esp + 0x20]
mov byte [esp + 0x5c], 1
call fcn.004c5787
lea ecx, [esp + 0x1c]
mov byte [esp + 0x5c], 0
call fcn.004c5787
mov dword [esp + 0x34], vtable.CMenu.0
lea ecx, [esp + 0x34]
mov dword [esp + 0x5c], 4
call fcn.004c6806
mov eax, 1
jmp 0x453f43
mov eax, dword [esi + 0xe70]
mov ebp, dword [sym.imp.USER32.dll_SendMessageA]
push 0
push 0
mov edx, dword [eax + 0x1c]
push 0x407
push edx
call ebp
push eax
call fcn.004c1de6
test eax, eax
je 0x454c9e
mov eax, dword [eax + 0x1c]
cmp dword [edi], eax
jne 0x454df5
mov esi, dword [esi + 0xe70]
push 0
push 0
push 0x407
mov eax, dword [esi + 0x1c]
push eax
call ebp
push eax
call fcn.004c1de6
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x18]
mov esi, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], edx
lea eax, [esp + 0x34]
mov ecx, dword [esi + 0x1c]
push eax
push ecx
call dword [sym.imp.USER32.dll_ScreenToClient]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x38]
sub esp, 8
mov eax, esp
mov dword [esp + 0x2c], esp
mov dword [eax], ecx
mov ecx, esi
mov dword [eax + 4], edx
call fcn.00454f30
mov edx, dword [0x52251c]
mov edi, eax
mov dword [esp + 0x64], edx
lea eax, [esp + 0x64]
mov ecx, esi
push eax
mov dword [esp + 0x60], 7
call fcn.004c27b1
push 0
push edi
push ecx
lea edx, [esp + 0x70]
mov ecx, esp
mov dword [esp + 0x30], esp
push edx
call fcn.004c54fc
call fcn.00453ce0
add esp, 0xc
mov ebx, eax
lea eax, [esp + 0x64]
push 1
push edi
push ecx
mov ecx, esp
mov dword [esp + 0x30], esp
push eax
call fcn.004c54fc
call fcn.00453ce0
add esp, 0xc
mov edi, eax
lea ecx, [esp + 0x10]
push edi
push 0
push ecx
lea ecx, [esp + 0x70]
call fcn.004bd5f7
push ecx
lea edx, [esp + 0x14]
mov ecx, esp
mov dword [esp + 0x28], esp
push edx
mov byte [esp + 0x64], 8
call fcn.004c54fc
call fcn.00453d60
add esp, 4
test eax, eax
je 0x454db0
lea ecx, [esp + 0x10]
mov byte [esp + 0x5c], 7
call fcn.004c5787
lea ecx, [esp + 0x64]
mov dword [esp + 0x5c], 0xffffffff
call fcn.004c5787
jmp case.0x454415.519
mov eax, dword [esi + 0x1c]
push edi
push ebx
push 0xb1
push eax
call ebp
mov ecx, dword [esi + 0x1c]
push 0
push 0
push 0xb7
push ecx
call ebp
lea ecx, [esp + 0x10]
mov byte [esp + 0x5c], 7
call fcn.004c5787
lea ecx, [esp + 0x64]
mov dword [esp + 0x5c], 0xffffffff
call fcn.004c5787
mov eax, 1
jmp 0x453f43
lea ebx, [esi + 0x9d8]
test ebx, ebx
jne 0x454e03
xor eax, eax
jmp 0x454e06
mov eax, dword [ebx + 0x1c]
lea edx, [esp + 0x24]
push edx
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x14]
push eax
lea edx, [esp + 0x28]
push ecx
push edx
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je case.0x454415.519
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x34], eax
mov eax, dword [esi + 0x9f4]
lea edx, [esp + 0x34]
mov dword [esp + 0x38], ecx
push edx
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
lea ecx, [esp + 0x34]
push ecx
mov ecx, ebx
call fcn.00402ae0
test eax, eax
jge case.0x454415.519
cmp dword [edi + 4], 0x203
jne 0x454e72
mov eax, dword [esi + 0x268]
jmp 0x454e78
mov eax, dword [esi + 0x26c]
mov edx, dword [esi + 0x1c]
push 0
push eax
push 0x111
push edx
call dword [sym.imp.USER32.dll_PostMessageA]
mov eax, 1
jmp 0x453f43