Function at 0x300c1394
Capabilities:
Check for unmoving mouse cursor
Log keystrokes via polling

Disassembly:
push ebp
lea ebp, [esp - 0x68]
sub esp, 0x14c
push ebx
push esi
mov esi, ecx
push edi
push esi
lea ecx, [ebp - 0xe4]
call fcn.300932cc
mov ecx, dword [ebp + 0x74]
mov edi, dword [ebp + 0x78]
mov eax, 0x11f
cmp ecx, eax
ja 0x300c1b7e
je 0x300c1b4d
add eax, 0xffffffe1
cmp ecx, eax
ja 0x300c1526
je 0x300c14b2
mov eax, ecx
sub eax, 5
je 0x300c14a9
dec eax
dec eax
je 0x300c1493
dec eax
je 0x300c145d
sub eax, 7
je 0x300c1454
sub eax, 5
je 0x300c23ee
sub eax, 0xc
je 0x300c141e
sub eax, 0x1d
jne 0x300c1448
lea eax, [ebp + 0x7c]
push eax
push dword [ebp + 0x7c]
mov ecx, esi
push edi
push 0x3d
call fcn.300fcf1d
jmp 0x300c1c98
mov ecx, esi
call fcn.300980e3
xor ebx, ebx
inc ebx
cmp word [ebp + 0x7c], bx
jne 0x300c1448
mov edi, dword [esi]
mov ecx, esi
call fcn.300980e3
push eax
mov ecx, esi
call dword [edi + 0x78]
test eax, eax
jne 0x300c2451
mov edi, dword [ebp + 0x78]
push dword [ebp + 0x7c]
push edi
push dword [ebp + 0x74]
jmp 0x300c1c8f
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1448
xor ebx, ebx
cmp edi, ebx
je 0x300c146f
mov ecx, esi
call fcn.30095155
cmp eax, 9
jl 0x300c1481
cmp dword [esi + 0xeec], ebx
mov ecx, esi
sete al
push eax
push ebx
call fcn.300a4a5d
cmp dword [esi + 0xe18], ebx
je 0x300c1448
push ebx
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1448
cmp dword [esi + 0xeec], 0
mov ecx, esi
sete al
push eax
push 1
call fcn.300a4a5d
jmp 0x300c1448
mov ecx, esi
call fcn.300934eb
jmp 0x300c1448
push 1
push edi
lea ecx, [ebp + 0x2c]
mov byte [esi + 0xc10], 1
call fcn.300d2435
xor ebx, ebx
cmp dword [esi + 0xe18], ebx
je 0x300c14f3
cmp edi, 0x1b
je 0x300c14e6
cmp dword [ebp + 0x2c], 0x77
jne 0x300c1772
cmp byte [ebp + 0x36], bl
je 0x300c1772
push ebx
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1772
push 1
push esi
lea ecx, [ebp + 0x60]
call fcn.300bf627
cmp dword [esi + 0xeec], ebx
je 0x300c1516
cmp dword [esi + 0xe18], ebx
jne 0x300c1516
lea ecx, [ebp + 0x2c]
call fcn.300d23f5
mov eax, dword [esi]
lea ecx, [ebp + 0x2c]
push ecx
mov ecx, esi
call dword [eax + 0x30]
jmp 0x300c1b35
mov eax, ecx
sub eax, 0x101
je 0x300c1aef
dec eax
je 0x300c1a89
sub eax, 0xb
je 0x300c1a66
dec eax
dec eax
je 0x300c1838
dec eax
dec eax
je 0x300c1574
dec eax
dec eax
jne 0x300c1448
mov eax, edi
dec eax
je 0x300c222e
dec eax
dec eax
jne 0x300c1448
mov ecx, esi
call fcn.300941df
jmp 0x300c1448
movzx edi, word [ebp + 0x78]
xor eax, eax
inc eax
mov ecx, 0x4e4e
xor ebx, ebx
cmp edi, ecx
mov byte [esi + 0xc10], al
jg 0x300c16b8
je 0x300c16ac
lea ecx, [edi - 0x4e39]
cmp ecx, 0x13
ja case.0x300c15a5.20026
jmp dword [ecx*4 + 0x300c2468]
mov ecx, dword [esi + 0x454]
test byte [ecx + 0x28], 2
jne 0x300c15c3
push eax
call fcn.30091355
jmp 0x300c1770
call fcn.3008c1c8
jmp 0x300c1770
xor ebx, ebx
push ebx
mov ecx, esi
call fcn.300a1fc5
jmp 0x300c1772
push eax
mov ecx, esi
call fcn.300a1fc5
jmp 0x300c1770
push 2
jmp 0x300c15dd
mov ecx, dword [esi + 0x454]
xor edx, edx
mov dx, word [ecx + 0x28]
not edx
and edx, eax
push edx
push eax
call fcn.3000c9a2
jmp 0x300c1770
lea eax, [esi + 0xebc]
push eax
push 0x8000
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1770
xor ebx, ebx
push ebx
push 0x8000
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1772
xor ebx, ebx
push ebx
push 0x20000
jmp 0x300c1629
mov ecx, esi
call fcn.300a25c5
jmp 0x300c1770
mov eax, dword [esi + 0x454]
mov eax, dword [eax + 0x40]
inc eax
push eax
mov ecx, esi
call fcn.300934b9
jmp 0x300c1770
mov eax, dword [esi + 0x454]
mov eax, dword [eax + 0x40]
dec eax
jmp 0x300c1655
xor ebx, ebx
push ebx
mov ecx, esi
call fcn.300934b9
jmp 0x300c1772
xor ebx, ebx
push ebx
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push ebx
lea ecx, [esi + 0x6c8]
call fcn.300fcf1d
push eax
push ebx
push ebx
push str._new
push 0x3023ac48
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1772
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1770
mov ecx, 0xe123
cmp edi, ecx
jg 0x300c17b3
je 0x300c17a4
cmp edi, 0x4e56
je 0x300c1793
cmp edi, 0x4e58
je 0x300c177d
mov ecx, 0x4e5a
cmp edi, ecx
je 0x300c1763
jle case.0x300c15a5.20026
cmp edi, 0x4e78
jle 0x300c1732
cmp edi, 0xe120
je 0x300c1720
cmp edi, 0xe122
jne case.0x300c15a5.20026
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push eax
push 0xa
lea ecx, [ebp - 0x68]
jmp 0x300c1820
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push eax
push 7
lea ecx, [ebp - 0x38]
jmp 0x300c1820
push eax
push esi
lea ecx, [ebp + 0x60]
call fcn.300bf627
add edi, 0xffffb1a5
push edi
mov ecx, esi
call fcn.300fcf1d
xor ebx, ebx
push ebx
mov ecx, esi
call fcn.300a5376
mov eax, dword [ebp + 0x64]
cmp ah, bl
je 0x300c1772
mov ecx, dword [ebp + 0x60]
jmp 0x300c1f80
mov ecx, dword [esi + 0xa30]
push 0xffffffffffffffff
call fcn.300fcf1d
xor ebx, ebx
mov byte [esi + 0xc10], bl
jmp 0x300c2451
push 0x30237288
xor ebx, ebx
push ebx
push dword [esi + 0x598]
call dword [0x302a5544]
jmp 0x300c1772
mov eax, dword [esi]
push 2
xor ebx, ebx
push ebx
mov ecx, esi
call dword [eax + 0xa8]
jmp 0x300c1772
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push eax
push 9
lea ecx, [ebp - 8]
jmp 0x300c1820
sub edi, 0xe125
je 0x300c1813
sub edi, 5
je 0x300c1804
sub edi, 3
je 0x300c1801
dec edi
je 0x300c17eb
dec edi
jne case.0x300c15a5.20026
mov eax, dword [esi + 0x6a0]
mov edi, dword [esi + 0x1c]
mov ecx, esi
mov dword [ebp + 0x5c], eax
call fcn.30095155
mov ecx, dword [edi]
push eax
push dword [ebp + 0x5c]
call fcn.300d8511
jmp case.0x300c15a5.20026
push eax
push dword [esi + 0x6ac]
mov ecx, esi
push dword [esi + 0x6a0]
call fcn.300fcf1d
jmp case.0x300c15a5.20026
push ebx
jmp 0x300c17ec
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push eax
push 0xc
lea ecx, [ebp - 0x20]
jmp 0x300c1820
push ebx
push ebx
push eax
push ebx
push ebx
push ebx
push ebx
push eax
push 0xb
lea ecx, [ebp - 0x50]
call fcn.300fcf1d
mov ecx, esi
push eax
call fcn.300fcf1d
mov byte [esi + 0xc10], bl
jmp 0x300c1445
xor ebx, ebx
cmp dword [esi + 0xe18], ebx
jne 0x300c1a6f
call fcn.300fcf1d
test byte [ebp + 0x7c], 8
mov dword [ebp + 0x54], eax
mov edi, 0x3b5
je 0x300c1979
cmp eax, edi
jne 0x300c1979
push ebx
push esi
mov ecx, esi
call fcn.300bfe4e
push eax
call fcn.300fcf1d
add esp, 0xc
cmp eax, ebx
mov dword [ebp + 0x58], eax
je 0x300c1979
cmp byte [esi + 0xeda], bl
je 0x300c18ca
lea edi, [esi + 0x5d8]
cmp dword [edi], ebx
je 0x300c18ca
push 1
push 8
lea ecx, [ebp + 0x2c]
call fcn.300d2435
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx + 0x18]
cmp eax, ebx
je 0x300c18c1
cmp byte [eax], bl
je 0x300c18c1
push ebx
lea eax, [ebp + 0x2c]
push eax
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c18ca
lea eax, [ebp + 0x2c]
push eax
call fcn.3002bc50
mov eax, dword [ebp + 0x58]
cmp word [eax], bx
push ebx
je 0x300c1964
push ebx
push 3
lea eax, [ebp + 0x7c]
push eax
push 1
push dword [ebp + 0x58]
push ebx
push 0x3b5
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov byte [ebp + eax + 0x7c], bl
lea eax, [ebp + 0x7c]
push eax
xor edi, edi
call fcn.3022ba80
cmp eax, ebx
pop ecx
mov dword [ebp + 0x70], eax
jbe 0x300c1951
cmp dword [esi + 0x5d8], ebx
je 0x300c194b
movzx eax, byte [ebp + edi + 0x7c]
push ebx
push eax
lea ecx, [ebp + 0x2c]
call fcn.300d2435
mov eax, dword [esi + 0x5d8]
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx + 0x18]
cmp eax, ebx
je 0x300c1942
cmp byte [eax], bl
je 0x300c1942
push ebx
lea eax, [ebp + 0x2c]
push eax
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c194b
lea eax, [ebp + 0x2c]
push eax
call fcn.3002bc50
inc edi
cmp edi, dword [ebp + 0x70]
jb 0x300c1906
cmp byte [esi + 0xeda], bl
jne 0x300c1971
mov byte [esi + 0xeda], 1
push 1
jmp 0x300c196a
mov byte [esi + 0xeda], bl
mov ecx, esi
call fcn.30097452
push dword [ebp + 0x58]
jmp 0x300c1a5b
test byte [ebp + 0x7d], 8
je 0x300c1445
push 1
push esi
push dword [ebp + 0x70]
call fcn.300fcf1d
add esp, 0xc
cmp eax, ebx
mov dword [ebp + 0x5c], eax
je 0x300c1445
cmp dword [ebp + 0x54], edi
jne 0x300c19f5
lea eax, [esi + 0xeda]
cmp byte [eax], bl
je 0x300c19f5
push ebx
mov ecx, esi
mov byte [eax], bl
call fcn.30097452
lea edi, [esi + 0x5d8]
cmp dword [edi], ebx
je 0x300c19f5
push 1
push 8
lea ecx, [ebp + 0x2c]
call fcn.300d2435
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx + 0x18]
cmp eax, ebx
je 0x300c19ec
cmp byte [eax], bl
je 0x300c19ec
push ebx
lea eax, [ebp + 0x2c]
push eax
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c19f5
lea eax, [ebp + 0x2c]
push eax
call fcn.3002bc50
mov eax, dword [ebp + 0x5c]
mov dword [ebp + 0x70], eax
jmp 0x300c1a53
push ebx
push ebx
push 3
lea eax, [ebp + 0x7c]
push eax
push 1
push dword [ebp + 0x70]
push ebx
push dword [ebp + 0x54]
call dword [sym.imp.kernel32.dll_WideCharToMultiByte]
mov byte [ebp + eax + 0x7c], bl
lea eax, [ebp + 0x7c]
push eax
xor edi, edi
call fcn.3022ba80
cmp eax, ebx
pop ecx
mov dword [ebp + 0x78], eax
jbe 0x300c1a4c
movzx eax, byte [ebp + edi + 0x7c]
push ebx
push eax
lea ecx, [ebp + 0x10]
call fcn.300d2435
push ebx
lea eax, [ebp + 0x10]
push eax
mov ecx, esi
call fcn.300fcf1d
inc edi
cmp edi, dword [ebp + 0x78]
jb 0x300c1a2b
add dword [ebp + 0x70], 2
mov eax, dword [ebp + 0x70]
cmp word [eax], bx
jne 0x300c19fd
push dword [ebp + 0x5c]
call fcn.300367ec
pop ecx
jmp 0x300c2451
cmp dword [esi + 0xe18], 0
je 0x300c1a77
xor ebx, ebx
inc ebx
jmp 0x300c2451
call fcn.300fcf1d
cmp eax, 0x3b5
jne 0x300c1448
jmp 0x300c1a6f
xor ebx, ebx
cmp dword [esi + 0xe18], ebx
jne 0x300c2451
cmp edi, 9
je 0x300c1ae3
cmp edi, 0xd
je 0x300c1ae3
cmp edi, 8
je 0x300c1ae3
cmp edi, 0x1b
je 0x300c1ae3
cmp dword [esi + 0xeec], ebx
je 0x300c1abb
cmp byte [esi + 0xef0], bl
je 0x300c1ae3
push ebx
push edi
lea ecx, [ebp + 0x2c]
call fcn.300d2435
push 0x12
call dword [sym.imp.USER32.dll_GetKeyState]
test ax, ax
jl 0x300c1ad7
cmp byte [ebp + 0x36], bl
jne 0x300c1ae3
push ebx
lea eax, [ebp + 0x2c]
push eax
mov ecx, esi
call fcn.300fcf1d
mov byte [esi + 0xef0], 1
jmp 0x300c1448
xor ebx, ebx
cmp dword [esi + 0xe18], ebx
mov byte [esi + 0xc10], 1
jne 0x300c1772
push 1
push esi
lea ecx, [ebp + 0x60]
call fcn.300bf627
push 1
push edi
lea ecx, [ebp + 0x10]
call fcn.300d2435
cmp dword [esi + 0xeec], ebx
je 0x300c1b2a
lea ecx, [ebp + 0x10]
call fcn.300d23f5
mov eax, dword [esi]
lea ecx, [ebp + 0x10]
push ecx
mov ecx, esi
call dword [eax + 0x2c]
mov eax, dword [ebp + 0x64]
cmp ah, bl
je 0x300c1b42
mov ecx, dword [ebp + 0x60]
mov byte [ecx + 0x1c], al
mov byte [esi + 0xc10], bl
jmp 0x300c1448
cmp dword [ebp + 0x7c], 0
je 0x300c1448
mov eax, edi
shr eax, 0x10
test al, 0x10
je 0x300c1448
movzx eax, di
push eax
push dword [ebp + 0x7c]
call dword [sym.imp.USER32.dll_GetSubMenu]
push eax
mov ecx, esi
call fcn.300bf1c9
jmp 0x300c1448
mov eax, 0x218
cmp ecx, eax
ja 0x300c211e
je 0x300c20be
mov eax, ecx
sub eax, 0x200
je 0x300c1ffd
dec eax
je 0x300c1f88
dec eax
je 0x300c1f1b
dec eax
je 0x300c1f88
dec eax
je 0x300c1c9f
sub eax, 6
je 0x300c1bed
sub eax, 0xb
jne 0x300c1448
mov ecx, esi
call fcn.300bfe4e
mov ebx, eax
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, ebx
je 0x300c1448
push 0
mov ecx, esi
call fcn.30098ced
jmp 0x300c1448
mov eax, dword [ebp + 0x78]
shr eax, 0x10
movsx eax, ax
push 0x78
pop ecx
cdq
idiv ecx
xor ebx, ebx
push ebx
mov dword [ebp + 0x74], ebx
mov edi, eax
lea eax, [ebp + 0x74]
push eax
push ebx
push 0x68
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov eax, dword [ebp + 0x74]
cmp eax, 0xffffffff
je 0x300c1c1e
imul eax, edi
mov edi, eax
cmp di, bx
je 0x300c1c84
movsx eax, word [ebp + 0x7c]
mov dword [ebp + 0x60], eax
mov eax, dword [ebp + 0x7c]
shr eax, 0x10
movsx eax, ax
mov dword [ebp + 0x64], eax
lea eax, [ebp + 0x60]
push eax
mov ecx, esi
call fcn.300bfe4e
push eax
call dword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [ebp + 0x60]
mov dword [ebp + 0x5c], eax
mov eax, dword [ebp + 0x64]
mov dword [ebp + 0x58], eax
lea eax, [ebp + 0x58]
push eax
lea eax, [ebp + 0x5c]
push eax
mov ecx, esi
call fcn.300fcf1d
mov ecx, dword [ebp + 0x58]
mov eax, dword [ebp + 0x5c]
push ecx
push eax
mov dword [ebp + 0x60], eax
movsx eax, di
mov dword [ebp + 0x64], ecx
push eax
mov ecx, esi
call fcn.300fcf1d
cmp al, bl
jne 0x300c2451
push dword [ebp + 0x7c]
push dword [ebp + 0x78]
push 0x20a
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov ebx, eax
jmp 0x300c2451
push 1
push esi
lea ecx, [ebp + 0x3c]
mov byte [esi + 0xc10], 1
call fcn.300bf627
push 1
mov ecx, esi
call fcn.300981d2
movzx eax, word [ebp + 0x7c]
mov dword [ebp + 0x74], eax
mov eax, dword [ebp + 0x7c]
shr eax, 0x10
mov dword [ebp + 0x28], eax
movzx eax, ax
mov dword [ebp + 0x78], eax
lea eax, [ebp + 0x78]
push eax
lea eax, [ebp + 0x74]
push eax
mov ecx, esi
call fcn.300fcf1d
push dword [ebp + 0x78]
mov ecx, esi
push dword [ebp + 0x74]
call fcn.300fcf1d
xor ebx, ebx
push ebx
lea eax, [ebp + 0x54]
push eax
push dword [ebp + 0x78]
mov ecx, esi
push dword [ebp + 0x74]
mov dword [ebp + 0x54], ebx
push ebx
call fcn.300fcf1d
cmp dword [ebp + 0x54], ebx
mov edi, eax
je 0x300c1d15
push dword [ebp + 0x54]
mov ecx, esi
call fcn.3009b844
cmp dword [edi + 0x24], ebx
mov eax, dword [esi + 0xe8c]
je 0x300c1d4e
cmp dword [esi + 0x40c], 1
jne 0x300c1d30
push 0x265
jmp 0x300c1d35
push 0x262
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
push ebx
push eax
mov dword [ebp + 0x58], eax
call dword [sym.imp.USER32.dll_GetSubMenu]
mov edi, eax
jmp 0x300c1e87
push 0x25c
push eax
call dword [sym.imp.USER32.dll_LoadMenuA]
push ebx
push eax
mov dword [ebp + 0x58], eax
call dword [sym.imp.USER32.dll_GetSubMenu]
mov dword [ebp + 0x78], eax
lea eax, [edi + 0x1c]
mov dword [ebp + 0x48], eax
lea eax, [edi + 0x18]
mov dword [ebp + 0x50], eax
lea eax, [edi + 0x14]
mov dword [ebp + 0x44], ebx
mov dword [ebp + 0x4c], 1
mov dword [ebp + 0x74], eax
mov eax, dword [ebp + 0x74]
cmp dword [eax], ebx
push dword [ebp + 0x44]
push dword [ebp + 0x78]
jne 0x300c1dc9
call dword [sym.imp.USER32.dll_GetMenuItemID]
push 0x400
push dword [ebp + 0x44]
mov dword [ebp + 0x5c], eax
push dword [ebp + 0x78]
call dword [sym.imp.USER32.dll_DeleteMenu]
cmp dword [ebp + 0x5c], ebx
jge 0x300c1e6b
add dword [ebp + 0x4c], 2
add dword [ebp + 0x74], 0x20
add dword [ebp + 0x50], 0x20
add dword [ebp + 0x48], 0x20
jmp 0x300c1e6b
call dword [sym.imp.USER32.dll_GetMenuItemID]
cmp eax, ebx
mov dword [ebp + 0x5c], eax
jle 0x300c1dff
mov ecx, dword [ebp + 0x50]
xor eax, eax
cmp dword [ecx], ebx
sete al
push eax
push dword [ebp + 0x5c]
push dword [ebp + 0x78]
call dword [sym.imp.USER32.dll_EnableMenuItem]
mov eax, dword [ebp + 0x48]
mov eax, dword [eax]
neg eax
sbb eax, eax
and eax, 8
push eax
push dword [ebp + 0x5c]
jmp 0x300c1e5f
cmp dword [ebp + 0x5c], ebx
jge 0x300c1e68
mov eax, dword [edi + 0x8c]
add dword [ebp + 0x4c], 2
add dword [ebp + 0x74], 0x20
add dword [ebp + 0x50], 0x20
add dword [ebp + 0x48], 0x20
neg eax
sbb eax, eax
and eax, 8
push eax
push 0x4e45
push dword [ebp + 0x78]
call dword [sym.imp.USER32.dll_CheckMenuItem]
mov eax, dword [edi + 0x9c]
neg eax
sbb eax, eax
and eax, 8
push eax
push 0x4e44
push dword [ebp + 0x78]
call dword [sym.imp.USER32.dll_CheckMenuItem]
mov eax, dword [edi + 0xac]
neg eax
sbb eax, eax
and eax, 8
push eax
push 0x4e43
push dword [ebp + 0x78]
call dword [sym.imp.USER32.dll_CheckMenuItem]
inc dword [ebp + 0x44]
inc dword [ebp + 0x4c]
add dword [ebp + 0x74], 0x10
add dword [ebp + 0x50], 0x10
add dword [ebp + 0x48], 0x10
cmp dword [ebp + 0x4c], 0x18
jl 0x300c1d84
mov edi, dword [ebp + 0x78]
push dword [ebp + 0x54]
mov ecx, esi
push edi
call fcn.300fcf1d
push edi
mov ecx, esi
call fcn.300bf1c9
cmp dword [esi + 0xeec], ebx
movsx eax, word [ebp + 0x7c]
movsx ecx, word [ebp + 0x28]
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], ecx
mov dword [esi + 0xebc], eax
mov dword [esi + 0xec0], ecx
je 0x300c1eef
cmp dword [esi + 0xe18], ebx
jne 0x300c1eef
add eax, dword [esi + 0xe5c]
add ecx, dword [esi + 0xe60]
mov dword [ebp + 0x60], eax
lea eax, [ebp + 0x60]
push eax
push dword [esi + 0xecc]
mov dword [ebp + 0x64], ecx
call dword [sym.imp.USER32.dll_ClientToScreen]
push ebx
push dword [esi + 0xe80]
jmp 0x300c1f00
lea eax, [ebp + 0x60]
push eax
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_ClientToScreen]
push ebx
push dword [ebp + 0x70]
push ebx
push dword [ebp + 0x64]
push dword [ebp + 0x60]
push 2
push edi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
push dword [ebp + 0x58]
call dword [sym.imp.USER32.dll_DestroyMenu]
jmp 0x300c1f72
mov byte [esi + 0xc10], 1
call dword [sym.imp.USER32.dll_ReleaseCapture]
push 1
push esi
lea ecx, [ebp + 0x3c]
call fcn.300bf627
mov eax, dword [ebp + 0x7c]
movzx ecx, ax
shr eax, 0x10
mov dword [ebp + 0x70], eax
lea eax, [ebp + 0x70]
push eax
lea eax, [ebp + 0x7c]
mov dword [ebp + 0x7c], ecx
push eax
mov ecx, esi
call fcn.300fcf1d
movsx edi, word [ebp + 0x70]
movsx eax, word [ebp + 0x7c]
push edi
push eax
mov ecx, esi
call fcn.300fcf1d
movsx eax, word [ebp + 0x7c]
xor ebx, ebx
push ebx
push edi
push eax
mov ecx, esi
call fcn.300fcf1d
mov eax, dword [ebp + 0x40]
cmp ah, bl
je 0x300c1772
mov ecx, dword [ebp + 0x3c]
mov byte [ecx + 0x1c], al
jmp 0x300c1772
mov byte [esi + 0xc10], 1
call dword [sym.imp.USER32.dll_GetFocus]
mov edi, dword [ebp + 0x70]
xor ebx, ebx
cmp edi, ebx
je 0x300c1fb0
cmp eax, edi
je 0x300c1fa9
push edi
call dword [sym.imp.USER32.dll_SetFocus]
push edi
call dword [sym.imp.USER32.dll_SetCapture]
push 1
push esi
lea ecx, [ebp + 0x3c]
call fcn.300bf627
mov eax, dword [ebp + 0x7c]
movzx ecx, ax
shr eax, 0x10
mov dword [ebp + 0x70], eax
lea eax, [ebp + 0x70]
push eax
lea eax, [ebp + 0x7c]
mov dword [ebp + 0x7c], ecx
push eax
mov ecx, esi
call fcn.300fcf1d
movsx edi, word [ebp + 0x70]
movsx eax, word [ebp + 0x7c]
push ebx
push edi
push eax
mov ecx, esi
call fcn.300fcf1d
movsx eax, word [ebp + 0x7c]
push edi
push eax
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1f72
mov edi, dword [ebp + 0x78]
mov ecx, esi
and edi, 1
call fcn.30095155
xor ebx, ebx
cmp eax, 9
jge 0x300c2037
cmp dword [esi + 0x640], 1
jne 0x300c2037
cmp edi, ebx
jne 0x300c2037
call dword [sym.imp.USER32.dll_ReleaseCapture]
push dword [esi + 0x648]
mov ecx, esi
push dword [esi + 0x644]
call fcn.300fcf1d
mov eax, dword [ebp + 0x7c]
movzx ecx, ax
shr eax, 0x10
mov dword [ebp + 0x7c], eax
lea eax, [ebp + 0x7c]
push eax
lea eax, [ebp + 0x70]
mov dword [ebp + 0x70], ecx
push eax
mov ecx, esi
call fcn.300fcf1d
movsx eax, word [ebp + 0x7c]
push ebx
push eax
movsx eax, word [ebp + 0x70]
push eax
mov ecx, esi
call fcn.300fcf1d
mov ecx, esi
call fcn.30095155
cmp eax, 9
jge 0x300c2092
cmp dword [esi + 0x640], ebx
jne 0x300c2092
cmp edi, ebx
je 0x300c2092
push dword [esi + 0x648]
mov ecx, esi
push dword [esi + 0x644]
call fcn.300fcf1d
cmp dword [esi + 0xeec], ebx
je 0x300c2451
cmp dword [esi + 0xe18], ebx
jne 0x300c2451
mov edi, dword [esi]
mov ecx, esi
call fcn.300980e3
push eax
mov ecx, esi
call dword [edi + 0x78]
jmp 0x300c2451
xor ebx, ebx
inc ebx
cmp edi, ebx
jbe 0x300c2451
cmp edi, 3
jbe 0x300c1448
cmp edi, 5
jbe 0x300c2100
cmp edi, 6
je 0x300c20ed
jbe 0x300c1448
cmp edi, 8
ja 0x300c1448
jmp 0x300c20f4
mov ecx, esi
call fcn.30094f02
mov ecx, esi
call fcn.300fcf1d
jmp 0x300c1448
xor ebx, ebx
cmp dword [esi + 0xe18], ebx
je 0x300c2112
push ebx
mov ecx, esi
call fcn.300fcf1d
mov ecx, esi
call fcn.30094f02
jmp 0x300c1448
mov eax, ecx
sub eax, 0x30f
je 0x300c23f2
dec eax
dec eax
je 0x300c23a9
sub eax, 0xf0
je 0x300c1557
sub eax, 0x61
je 0x300c21e2
dec eax
je 0x300c216f
sub eax, 0x9e
jne 0x300c1448
mov esi, dword [esi + 0xbf8]
test esi, esi
je 0x300c1448
mov ecx, esi
call fcn.300d3b8e
jmp 0x300c1448
mov eax, dword [ebp + 0x7c]
mov ecx, dword [eax]
mov eax, dword [esi + 0x1c]
push ecx
mov ecx, dword [eax + 4]
call fcn.300018f0
xor ebx, ebx
cmp eax, ebx
je 0x300c21d3
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
mov edi, eax
cmp edi, ebx
je 0x300c21d3
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x14]
cmp eax, ebx
mov dword [ebp + 0x5c], eax
je 0x300c21cc
test byte [edi + 0xc5], 2
jne 0x300c21b1
mov ecx, eax
call fcn.30093012
mov ecx, esi
mov byte [edi + 0xcc], 1
call fcn.30095155
mov ecx, dword [ebp + 0x5c]
push eax
push 1
call fcn.30091383
jmp 0x300c21d3
mov byte [edi + 0xcc], 1
mov ecx, dword [ebp + 0x7c]
push 1
call fcn.300bf658
jmp 0x300c1445
mov eax, dword [ebp + 0x7c]
mov eax, dword [eax]
mov esi, dword [esi + 0x1c]
mov ecx, dword [esi + 4]
push eax
call fcn.300018f0
xor ebx, ebx
cmp eax, ebx
je 0x300c221d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 8]
cmp eax, ebx
je 0x300c221d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x14]
mov esi, dword [ebp + 0x7c]
push dword [esi + 8]
mov ecx, eax
push dword [esi + 4]
call fcn.300fcf1d
jmp 0x300c2220
mov esi, dword [ebp + 0x7c]
push 1
mov ecx, esi
call fcn.300bf658
jmp 0x300c1448
call fcn.300fcf1d
fstp qword [ebp + 0x3c]
fld qword [esi + 0xe78]
fadd qword [0x3023ac40]
fcomp qword [ebp + 0x3c]
fnstsw ax
test ah, 0x41
jp 0x300c225a
mov ecx, esi
call fcn.30094f02
mov ecx, esi
call fcn.300fcf1d
fld qword [ebp + 0x3c]
lea edi, [esi + 0xed8]
inc word [edi]
fstp qword [esi + 0xe78]
mov ax, word [edi]
xor ebx, ebx
cmp ax, 0xa
jbe 0x300c2281
mov ecx, esi
call fcn.300fcf1d
mov word [edi], bx
cmp dword [esi + 0xef8], ebx
jne 0x300c2395
cmp dword [esi + 0xeec], ebx
je 0x300c2335
cmp dword [esi + 0xe18], ebx
jne 0x300c2335
cmp dword [esi + 0x640], ebx
jne 0x300c2395
cmp dword [esi + 0xecc], ebx
je 0x300c2395
cmp dword [esi + 0xe34], ebx
je 0x300c2395
lea eax, [ebp + 0x60]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push dword [ebp + 0x64]
push dword [ebp + 0x60]
call dword [sym.imp.USER32.dll_WindowFromPoint]
mov edi, dword [esi + 0xecc]
cmp eax, edi
je 0x300c22f8
push eax
call dword [sym.imp.USER32.dll_GetParent]
cmp eax, edi
jne 0x300c238c
lea eax, [ebp + 0x60]
push eax
push edi
call dword [sym.imp.USER32.dll_ScreenToClient]
mov eax, dword [ebp + 0x60]
mov ecx, dword [ebp + 0x64]
sub eax, dword [esi + 0xe5c]
sub ecx, dword [esi + 0xe60]
cmp eax, ebx
mov dword [ebp + 0x60], eax
mov dword [ebp + 0x64], ecx
jl 0x300c238c
cmp ecx, ebx
jl 0x300c238c
mov edx, dword [esi + 0xe34]
cmp eax, dword [edx + 0xc]
jge 0x300c238c
cmp ecx, dword [edx + 0x10]
jl 0x300c2395
jmp 0x300c238c
cmp dword [esi + 0x640], ebx
jne 0x300c2395
lea eax, [ebp + 0x60]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
push dword [ebp + 0x64]
push dword [ebp + 0x60]
call dword [sym.imp.USER32.dll_WindowFromPoint]
cmp dword [ebp + 0x70], eax
jne 0x300c238c
lea eax, [ebp + 0x60]
push eax
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_ScreenToClient]
lea eax, [ebp + 0x34]
push eax
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_GetClientRect]
mov eax, dword [ebp + 0x60]
cmp eax, dword [ebp + 0x34]
jl 0x300c238c
cmp eax, dword [ebp + 0x3c]
jg 0x300c238c
mov eax, dword [ebp + 0x64]
cmp eax, dword [ebp + 0x38]
jl 0x300c238c
cmp eax, dword [ebp + 0x40]
jle 0x300c2395
mov ecx, esi
push 1
call fcn.30098ced
push 1
mov ecx, esi
call fcn.300fcf1d
mov dword [esi + 0xeb0], ebx
jmp 0x300c2451
mov ebx, dword [ebp + 0x70]
cmp dword [ebp + 0x78], ebx
je 0x300c23ee
push ebx
call dword [sym.imp.USER32.dll_GetDC]
mov ecx, esi
mov edi, eax
call fcn.300fcf1d
mov ecx, esi
call fcn.300fcf1d
mov esi, dword [sym.imp.GDI32.dll_SelectPalette]
push 1
push eax
push edi
call esi
push edi
mov dword [ebp + 0x7c], eax
call dword [sym.imp.GDI32.dll_RealizePalette]
push 1
push dword [ebp + 0x7c]
push edi
call esi
push edi
push ebx
call dword [sym.imp.USER32.dll_ReleaseDC]
xor ebx, ebx
jmp 0x300c2451
call fcn.300d3dfb
mov edi, eax
xor ebx, ebx
cmp edi, ebx
je 0x300c2451
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_GetDC]
push ebx
push edi
mov edi, dword [sym.imp.GDI32.dll_SelectPalette]
push eax
mov dword [ebp + 0x7c], eax
call edi
push dword [ebp + 0x7c]
mov dword [ebp + 0x78], eax
call dword [sym.imp.GDI32.dll_RealizePalette]
mov ecx, esi
call fcn.300fcf1d
mov ecx, esi
call fcn.300fcf1d
mov esi, dword [ebp + 0x7c]
push ebx
push eax
push esi
call edi
push esi
call dword [sym.imp.GDI32.dll_RealizePalette]
inc ebx
push ebx
push dword [ebp + 0x78]
push esi
call edi
push esi
push dword [ebp + 0x70]
call dword [sym.imp.USER32.dll_ReleaseDC]
lea ecx, [ebp - 0xe4]
call fcn.300932eb
pop edi
pop esi
mov eax, ebx
pop ebx
add ebp, 0x68
leave
ret 0x10