Function at 0x41e400
Capabilities:
Check for time delay via gettickcount
Log keystrokes via polling
Print debug messages
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4beeb0
push eax
mov eax, dword [ebp + 8]
mov dword fs:[0], esp
sub esp, 0x328
cmp eax, 0x100
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov ebx, ecx
ja 0x41ec1a
je 0x41e9b4
add eax, 0xffffffff
cmp eax, 0x81
ja case.0x41ef5f.515
movzx eax, byte [eax + 0x41f4b4]
jmp dword [eax*4 + 0x41f47c]
mov ecx, dword [ebx + 0x30]
push ecx
call dword [sym.imp.USER32.dll_IsIconic]
test eax, eax
jne 0x41e489
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebx]
mov edx, dword [edx + 0xb8]
push eax
push ecx
mov ecx, ebx
call edx
mov eax, dword [ebx]
mov edx, dword [eax + 0x3c]
mov ecx, ebx
call edx
jmp 0x41f460
push 1
push str.WM_SIZE__iconic_n
lea ecx, [esp + 0x190]
call fcn.00418c20
mov eax, dword [eax + 0x2c]
test eax, eax
jne 0x41e4a8
mov eax, 0x4d366e
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea ecx, [esp + 0x188]
call fcn.004190d0
mov eax, dword [ebx]
mov edx, dword [eax + 0x3c]
mov ecx, ebx
call edx
jmp 0x41f460
mov eax, dword [ebp + 0x10]
movsx ecx, ax
shr eax, 0x10
movsx edx, ax
push 1
mov dword [ebx + 0x9c], ecx
push 0x4d634c
lea ecx, [esp + 0x158]
mov dword [ebx + 0xa0], edx
call fcn.00418c20
mov esi, eax
push 1
push 0x4d6350
lea ecx, [esp + 0xe8]
mov dword [esp + 0x344], 0
call fcn.00418c20
mov edi, eax
push 1
push str.WM_MOVE:__
lea ecx, [esp + 0x78]
mov byte [esp + 0x344], 1
call fcn.00418c20
mov byte [esp + 0x33c], 2
mov ecx, dword [ebx + 0x9c]
push ecx
push eax
lea edx, [esp + 0x200]
push edx
call fcn.00402926
add esp, 0xc
push edi
push eax
lea eax, [esp + 0x120]
push eax
mov byte [esp + 0x348], 3
call fcn.004028d4
add esp, 0xc
mov byte [esp + 0x33c], 4
mov ecx, dword [ebx + 0xa0]
push ecx
push eax
lea edx, [esp + 0x40]
push edx
call fcn.00402926
add esp, 0xc
push esi
push eax
lea eax, [esp + 0xb0]
push eax
mov byte [esp + 0x348], 5
call fcn.004028d4
mov eax, dword [eax + 0x2c]
add esp, 0xc
test eax, eax
jne 0x41e5ab
mov eax, 0x4d366e
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea ecx, [esp + 0xa8]
call fcn.004190d0
lea ecx, [esp + 0x38]
mov byte [esp + 0x33c], 4
call fcn.004190d0
lea ecx, [esp + 0x118]
mov byte [esp + 0x33c], 3
call fcn.004190d0
lea ecx, [esp + 0x1f8]
mov byte [esp + 0x33c], 2
call fcn.004190d0
lea ecx, [esp + 0x70]
mov byte [esp + 0x33c], 1
call fcn.004190d0
lea ecx, [esp + 0xe0]
mov byte [esp + 0x33c], 0
call fcn.004190d0
lea ecx, [esp + 0x150]
mov dword [esp + 0x33c], 0xffffffff
call fcn.004190d0
jmp 0x41f460
mov ecx, dword [esi + 0x1c]
mov dword [ebx + 0x9c], ecx
mov edx, dword [esi + 0x18]
mov dword [ebx + 0xa0], edx
mov eax, dword [esi + 0x14]
mov dword [ebx + 0xa4], eax
mov ecx, dword [esi + 0x10]
mov dword [ebx + 0xa8], ecx
mov edx, dword [esi + 0x14]
mov dword [ebx + 0x68], edx
mov eax, dword [esi + 0x10]
mov dword [ebx + 0x6c], eax
jmp case.0x41ef5f.515
mov ecx, dword [0x5096ac]
cmp ecx, dword [ebx + 0x30]
jne 0x41e682
mov dword [0x5096ac], 0
mov edx, dword [ebx]
mov eax, dword [edx + 0x2c]
push str.Frame
mov ecx, ebx
call eax
test al, al
je 0x41f460
mov edx, dword [ebx]
mov eax, dword [edx + 0xcc]
mov ecx, ebx
call eax
jmp 0x41f460
push 0x38
call fcn.00481acb
add esp, 4
test eax, eax
je 0x41e6c6
mov ecx, dword [ebp + 0xc]
push ecx
mov esi, eax
call fcn.0041da70
mov edi, eax
jmp 0x41e6c8
xor edi, edi
push 0x84
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 6
je 0x41e6f4
push eax
mov ecx, edi
call fcn.00423540
mov esi, eax
jmp 0x41e6f6
xor esi, esi
mov dword [esp + 0x33c], 0xffffffff
mov edx, dword [ebx]
mov eax, dword [edx + 0x80]
push esi
mov ecx, ebx
call eax
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
mov eax, 1
mov ecx, dword [esp + 0x334]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 0x78
call fcn.00481acb
add esp, 4
test eax, eax
je 0x41e758
mov edi, dword [ebx + 0x30]
mov esi, eax
call fcn.0041d960
mov edi, eax
jmp 0x41e75a
xor edi, edi
push 0x84
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 7
je 0x41e786
push eax
mov ecx, edi
call fcn.00423540
mov esi, eax
jmp 0x41e788
xor esi, esi
mov dword [esp + 0x33c], 0xffffffff
mov edx, dword [ebx]
mov eax, dword [edx + 0x78]
push esi
mov ecx, ebx
call eax
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
jmp 0x41f460
mov eax, dword [ebx + 0x38]
test eax, eax
je case.0x41ef5f.515
cmp si, 1
jne case.0x41ef5f.515
mov ecx, dword [eax + 0x2c]
push ecx
call dword [sym.imp.USER32.dll_SetCursor]
mov eax, 1
mov ecx, dword [esp + 0x334]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov esi, ebx
call fcn.0041e360
mov edx, dword [ebx]
mov eax, dword [edx + 4]
mov ecx, ebx
call eax
jmp 0x41f460
mov edx, dword [ebx]
mov eax, dword [edx + 0x2c]
push str.Frame
call eax
test al, al
je 0x41f460
mov edx, dword [ebx]
mov eax, dword [edx + 0xd0]
mov ecx, ebx
call eax
jmp 0x41f460
mov edx, dword [ebx]
mov eax, dword [edx + 0x2c]
push str.Frame
call eax
jmp case.0x41ef5f.515
mov edx, dword [ebx]
mov eax, dword [edx + 0x2c]
push str.Frame
call eax
test al, al
je case.0x41ef5f.515
push 1
push str.GetMinMaxInfo_n
lea ecx, [esp + 0x1c8]
call fcn.00418c20
mov eax, dword [eax + 0x2c]
xor edi, edi
cmp eax, edi
jne 0x41e86f
mov eax, 0x4d366e
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea ecx, [esp + 0x1c0]
call fcn.004190d0
mov ecx, dword [ebx + 0x118]
mov edx, dword [ebx + 0x11c]
push edi
push edi
push 0x92cb0000
lea eax, [esp + 0x24]
push eax
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], edx
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
cmp byte [ebx + 0x120], 0
mov esi, dword [ebp + 0x10]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
je 0x41e8ca
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], eax
mov edx, dword [esp + 0x20]
sub edx, ecx
mov ecx, dword [esp + 0x24]
sub ecx, eax
cmp byte [ebx + 0x122], 0
jne 0x41e8f6
mov dword [esi + 8], edx
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], edi
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0xc], ecx
jmp 0x41f460
push edi
mov dword [esi + 0x18], edx
lea edx, [esp + 0x2c]
push edx
push edi
push 0x30
mov dword [esi + 0x1c], ecx
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
sub eax, ecx
mov dword [esi + 0x10], ecx
mov ecx, dword [esp + 0x34]
sub ecx, edx
mov dword [esi + 0x14], edx
mov dword [esi + 8], eax
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], ecx
mov dword [esi + 0xc], ecx
jmp 0x41f460
mov eax, dword [ebx]
mov edx, dword [eax + 0x2c]
push str.Frame
call edx
test al, al
je case.0x41ef5f.515
test esi, esi
mov edi, dword [sym.imp.USER32.dll_GetWindowThreadProcessId]
je 0x41e95e
lea eax, [esp + 0x10]
push eax
push esi
call edi
jmp 0x41e966
mov dword [esp + 0x10], 0
mov edx, dword [ebx + 0x30]
lea ecx, [esp + 0x18]
push ecx
push edx
call edi
cmp word [ebp + 0xc], 0
setne al
test al, al
mov byte [esp + 0x14], al
jne 0x41e98f
mov eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x10]
je case.0x41ef5f.515
mov edx, dword [ebx]
mov eax, dword [esp + 0x14]
mov edx, dword [edx + 0xd4]
push eax
mov ecx, ebx
call edx
jmp case.0x41ef5f.515
mov eax, dword [ebx]
mov edx, dword [eax + 0x84]
call edx
jmp case.0x41ef5f.515
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0xa
je 0x41e9e0
push 5
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41e9e2
xor edi, edi
mov dword [esp + 0x14], edi
lea eax, [esp + 0x230]
push eax
mov dword [esp + 0x340], 0xb
call dword [sym.imp.USER32.dll_GetKeyboardState]
mov ecx, esi
and ecx, 0xc0000000
neg ecx
sbb ecx, ecx
neg ecx
add ecx, 1
mov dword [esp + 0x10], 0
mov dword [edi + 0x40], ecx
mov cl, 0x80
test byte [esp + 0x241], cl
je 0x41ea2a
or dword [edi + 0x38], 1
test byte [esp + 0x240], cl
je 0x41ea37
or dword [edi + 0x38], 2
mov eax, dword [ebp + 0xc]
add eax, 0xffffffdb
cmp eax, 0x59
ja case.0x41ea4d.41
movzx edx, byte [eax + 0x41f58c]
jmp dword [edx*4 + 0x41f538]
mov dword [esp + 0x10], 0x458
jmp 0x41eba9
mov dword [esp + 0x10], 0x459
jmp 0x41eba9
mov dword [esp + 0x10], 0x45a
jmp 0x41eba9
mov dword [esp + 0x10], 0x45b
jmp 0x41eba9
mov dword [esp + 0x10], 0x45c
jmp 0x41eba9
mov dword [esp + 0x10], 0x45d
jmp 0x41eba9
mov dword [esp + 0x10], 0x45e
jmp 0x41eba9
mov dword [esp + 0x10], 0x45f
jmp 0x41eba9
mov dword [esp + 0x10], 0x460
jmp 0x41eba9
mov dword [esp + 0x10], 0x461
jmp 0x41eba9
mov dword [esp + 0x10], 0x462
jmp 0x41eba9
mov dword [esp + 0x10], 0x463
jmp 0x41eba9
mov dword [esp + 0x10], 0x464
jmp 0x41eba9
mov dword [esp + 0x10], 0x465
jmp 0x41eba9
mov dword [esp + 0x10], 0x466
jmp 0x41eba9
mov dword [esp + 0x10], 0x40d
jmp 0x41eba9
mov dword [esp + 0x10], 0x40f
jmp 0x41eba9
mov dword [esp + 0x10], 0x40e
jmp 0x41eba9
mov dword [esp + 0x10], 0x410
jmp 0x41eba9
mov dword [esp + 0x10], 0x416
jmp 0x41eba9
test byte [esp + 0x241], cl
push 0
je 0x41eb85
mov edx, dword [ebp + 0xc]
lea eax, [esp + 0x14]
push eax
lea ecx, [esp + 0x238]
push ecx
push esi
push edx
mov byte [esp + 0x255], 0
call dword [sym.imp.USER32.dll_ToAscii]
test eax, eax
jne 0x41eba9
movzx eax, word [ebp + 0xc]
mov dword [esp + 0x10], eax
jmp 0x41eba9
mov eax, dword [ebp + 0xc]
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x238]
push edx
push esi
push eax
call dword [sym.imp.USER32.dll_ToAscii]
test eax, eax
jne 0x41ec01
movzx ecx, word [ebp + 0xc]
mov dword [esp + 0x10], ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
test ebx, ebx
mov dword [edi + 0x44], eax
movzx edx, word [esp + 0x10]
mov eax, dword [ebp + 0xc]
mov dword [edi + 0x3c], edx
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], esi
je 0x41ebe8
mov eax, dword [edi + 0x3c]
mov edx, dword [ebx]
mov edx, dword [edx + 0x64]
push eax
push edi
mov ecx, ebx
call edx
test al, al
jne 0x41ebe8
mov eax, dword [ebx]
mov edx, dword [eax + 0x50]
mov ecx, ebx
call edx
mov ebx, eax
test ebx, ebx
jne 0x41ebc7
mov dword [esp + 0x33c], 0xffffffff
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
jmp 0x41f460
mov dword [esp + 0x33c], 0xffffffff
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
jmp case.0x41ef5f.515
cmp eax, 0x200
ja 0x41ef40
je 0x41ee6c
sub eax, 0x101
je 0x41ed55
sub eax, 1
je 0x41ec8d
sub eax, 0x10
jne case.0x41ef5f.515
mov eax, dword [ebx]
mov edx, dword [eax + 0x2c]
push str.Frame
call edx
test al, al
je case.0x41ef5f.515
mov eax, dword [ebp + 0xc]
and eax, 0xfff0
cmp eax, 0xf030
jne case.0x41ef5f.515
cmp byte [ebx + 0x122], 0
jne case.0x41ef5f.515
mov edx, dword [ebx]
mov eax, dword [edx + 0xc4]
push 0
push 1
mov ecx, ebx
call eax
jmp 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 8
je 0x41ecb9
push 5
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41ecbb
xor edi, edi
mov dword [esp + 0x14], edi
mov dword [esp + 0x33c], 9
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
and edx, 0xc0000000
neg edx
sbb edx, edx
mov dword [edi + 0x44], eax
neg edx
mov dword [edi + 0x3c], ecx
add edx, 1
xor eax, eax
mov dword [edi + 0x40], edx
mov dword [edi + 0x30], eax
push 0x11
mov dword [edi + 0x34], eax
mov esi, ebx
call dword [sym.imp.USER32.dll_GetKeyState]
test al, al
js 0x41ed39
push 0x10
call dword [sym.imp.USER32.dll_GetKeyState]
test al, al
jns 0x41ed14
or dword [edi + 0x38], 2
test ebx, ebx
je 0x41ed39
mov ecx, dword [edi + 0x3c]
mov eax, dword [esi]
mov edx, dword [eax + 0x64]
push ecx
push edi
mov ecx, esi
call edx
test al, al
jne 0x41ed39
mov eax, dword [esi]
mov edx, dword [eax + 0x50]
mov ecx, esi
call edx
mov esi, eax
test esi, esi
jne 0x41ed18
mov dword [esp + 0x33c], 0xffffffff
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
mov esi, dword [ebp + 0x10]
jmp case.0x41ef5f.515
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0xc
je 0x41ed81
push 6
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41ed83
xor edi, edi
mov dword [esp + 0x33c], 0xffffffff
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call esi
mov dword [edi + 0x44], eax
mov eax, dword [ebp + 0xc]
add eax, 0xffffffdb
cmp eax, 0x59
ja case.0x41edaf.41
movzx eax, byte [eax + 0x41f638]
jmp dword [eax*4 + 0x41f5e8]
mov eax, 0x458
jmp 0x41ee42
mov eax, 0x459
jmp 0x41ee42
mov eax, 0x45a
jmp 0x41ee42
mov eax, 0x45b
jmp 0x41ee42
mov eax, 0x45c
jmp 0x41ee42
mov eax, 0x45d
jmp 0x41ee42
mov eax, 0x45e
jmp 0x41ee42
mov eax, 0x45f
jmp 0x41ee42
mov eax, 0x460
jmp 0x41ee42
mov eax, 0x461
jmp 0x41ee42
mov eax, 0x462
jmp 0x41ee42
mov eax, 0x463
jmp 0x41ee42
mov eax, 0x464
jmp 0x41ee42
mov eax, 0x465
jmp 0x41ee42
mov eax, 0x466
jmp 0x41ee42
mov eax, 0x40d
jmp 0x41ee42
mov eax, 0x40f
jmp 0x41ee42
mov eax, 0x40e
jmp 0x41ee42
mov eax, 0x410
jmp 0x41ee42
movzx eax, word [ebp + 0xc]
movzx ecx, ax
mov dword [edi + 0x3c], ecx
call esi
mov dword [edi + 0x44], eax
mov eax, dword [edi + 0x3c]
mov edx, dword [ebx]
mov edx, dword [edx + 0x68]
push eax
push edi
mov ecx, ebx
call edx
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
mov esi, dword [ebp + 0x10]
jmp case.0x41ef5f.515
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebx + 0x30]
jne 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0xd
je 0x41eea7
push 2
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov esi, eax
jmp 0x41eea9
xor esi, esi
mov eax, dword [ebp + 0x10]
movsx ecx, ax
shr eax, 0x10
movsx edx, ax
mov dword [esp + 0x33c], 0xffffffff
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], edx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [sym.imp.USER32.dll_GetKeyState]
push 1
mov dword [esi + 0x44], eax
call edi
test ax, ax
jge 0x41eeec
mov dword [esi + 0x2c], 4
mov eax, dword [ebx]
mov eax, dword [eax + 0x60]
jmp 0x41ef25
push 2
call edi
test ax, ax
jge 0x41ef20
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x30]
or dword [esi + 0x38], 5
push eax
mov dword [esi + 0x2c], 4
mov edx, dword [ebx]
mov edx, dword [edx + 0x60]
push ecx
push esi
mov ecx, ebx
call edx
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
jmp 0x41f460
mov eax, dword [ebx]
mov eax, dword [eax + 0x5c]
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x30]
push ecx
push edx
push esi
mov ecx, ebx
call eax
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
jmp 0x41f460
cmp eax, 0x215
ja 0x41f414
je 0x41f306
add eax, 0xfffffdff
cmp eax, 4
ja case.0x41ef5f.515
jmp dword [eax*4 + 0x41f694]
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebx + 0x30]
jne 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0x10
je 0x41efa1
push 3
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov esi, eax
jmp 0x41efa3
xor esi, esi
mov eax, dword [ebp + 0x10]
movzx ecx, ax
mov dword [esp + 0x33c], 0xffffffff
or dword [esi + 0x38], 5
shr eax, 0x10
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x44], eax
and dword [ebx + 0x114], 0xfffffffd
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x30]
mov edx, dword [ebx]
mov edx, dword [edx + 0x58]
push eax
push ecx
push esi
mov ecx, ebx
call edx
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [ebx + 0x30]
jne 0x41effd
cmp dword [ebx + 0x114], 0
jne 0x41effd
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
jmp 0x41f460
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebx + 0x30]
jne 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0x11
je 0x41f046
push 3
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov esi, eax
jmp 0x41f048
xor esi, esi
mov eax, dword [ebp + 0x10]
movzx ecx, ax
mov dword [esp + 0x33c], 0xffffffff
shr eax, 0x10
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov dword [esi + 0x44], eax
and dword [ebx + 0x114], 0xfffffffe
mov eax, dword [esi + 0x34]
mov ecx, dword [esi + 0x30]
mov edx, dword [ebx]
mov edx, dword [edx + 0x58]
push eax
push ecx
push esi
mov ecx, ebx
call edx
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [ebx + 0x30]
jne 0x41f09e
cmp dword [ebx + 0x114], 0
jne 0x41f09e
call dword [sym.imp.USER32.dll_ReleaseCapture]
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
jmp 0x41f460
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebx + 0x30]
jne 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0x12
mov esi, 1
je 0x41f0eb
push esi
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41f0ed
xor edi, edi
mov eax, dword [ebp + 0x10]
movzx ecx, ax
mov dword [esp + 0x33c], 0xffffffff
shr eax, 0x10
mov dword [edi + 0x30], ecx
mov dword [edi + 0x34], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
or dword [edi + 0x38], 5
mov dword [edi + 0x44], eax
sub eax, dword [ebx + 0x10c]
cmp eax, dword [0x509ea0]
jae 0x41f12a
add dword [ebx + 0x110], esi
jmp 0x41f130
mov dword [ebx + 0x110], esi
mov edx, dword [ebx + 0x110]
mov eax, dword [edi + 0x44]
mov dword [edi + 0x40], edx
mov edx, dword [ebx]
mov dword [ebx + 0x10c], eax
mov eax, dword [edx + 0x50]
mov ecx, ebx
call eax
test eax, eax
je 0x41f163
mov esi, dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, esi
je 0x41f163
push esi
call dword [sym.imp.USER32.dll_SetCapture]
or dword [ebx + 0x114], 2
mov eax, dword [edi + 0x34]
mov ecx, dword [edi + 0x30]
mov edx, dword [ebx]
mov edx, dword [edx + 0x54]
push eax
push ecx
push edi
mov ecx, ebx
call edx
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
jmp 0x41f460
test ebx, ebx
mov esi, dword [ebp + 0x10]
mov edi, ebx
je 0x41f1b4
mov eax, dword [edi]
mov edx, dword [eax + 0x2c]
push str.Frame
mov ecx, edi
call edx
test al, al
jne 0x41f1ef
mov eax, dword [edi]
mov edx, dword [eax + 0x50]
mov ecx, edi
call edx
mov edi, eax
test edi, edi
jne 0x41f193
call dword [sym.imp.USER32.dll_GetFocus]
cmp eax, dword [ebx + 0x30]
jne 0x41f460
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0x13
je 0x41f246
push 1
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41f248
cmp byte [edi + 0x122], 0
je 0x41f1b4
mov eax, dword [edi + 0x30]
lea ecx, [esp + 0x28]
push ecx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
mov edx, dword [esp + 0x30]
movzx eax, si
add edx, 0xffffffec
cmp eax, edx
jle 0x41f1b4
mov edx, dword [esp + 0x34]
mov ecx, esi
shr ecx, 0x10
add edx, 0xffffffec
cmp ecx, edx
jle 0x41f1b4
mov eax, dword [edi + 0x30]
push 0
push 0x11
push 0xa1
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [edi]
mov edx, dword [eax + 0x3c]
mov ecx, edi
call edx
jmp 0x41f460
xor edi, edi
movzx eax, si
mov dword [esp + 0x33c], 0xffffffff
shr esi, 0x10
mov dword [edi + 0x30], eax
mov dword [edi + 0x34], esi
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [sym.imp.USER32.dll_GetKeyState]
push 0x11
mov dword [edi + 0x44], eax
call esi
test ax, ax
jge 0x41f27b
or dword [edi + 0x38], 1
push 0x10
call esi
test ax, ax
jge 0x41f288
or dword [edi + 0x38], 2
mov ecx, dword [edi + 0x44]
sub ecx, dword [ebx + 0x10c]
cmp ecx, dword [0x509ea0]
jae 0x41f2a2
add dword [ebx + 0x110], 1
jmp 0x41f2ac
mov dword [ebx + 0x110], 1
mov edx, dword [ebx + 0x110]
mov eax, dword [edi + 0x44]
mov dword [edi + 0x40], edx
mov edx, dword [ebx]
mov dword [ebx + 0x10c], eax
mov eax, dword [edx + 0x50]
mov ecx, ebx
call eax
test eax, eax
je 0x41f2df
mov esi, dword [ebx + 0x30]
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, esi
je 0x41f2df
push esi
call dword [sym.imp.USER32.dll_SetCapture]
or dword [ebx + 0x114], 1
mov eax, dword [edi + 0x34]
mov ecx, dword [edi + 0x30]
mov edx, dword [ebx]
mov edx, dword [edx + 0x54]
push eax
push ecx
push edi
mov ecx, ebx
call edx
mov eax, dword [edi]
mov edx, dword [eax + 4]
mov ecx, edi
call edx
jmp 0x41f460
cmp dword [ebx + 0x114], 0
je 0x41f460
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
test byte [ebx + 0x114], 1
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount]
je 0x41f394
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0xe
je 0x41f359
push 3
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41f35b
xor edi, edi
mov dword [esp + 0x33c], 0xffffffff
mov ecx, dword [esp + 0x18]
mov dword [edi + 0x30], ecx
mov edx, dword [esp + 0x1c]
mov dword [edi + 0x34], edx
call esi
mov ecx, dword [edi + 0x34]
mov edx, dword [edi + 0x30]
push ecx
mov dword [edi + 0x44], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x58]
push edx
push edi
mov ecx, ebx
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
test byte [ebx + 0x114], 2
je 0x41f408
push 0x50
call fcn.00481acb
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
mov dword [esp + 0x33c], 0xf
je 0x41f3c9
push 3
push ebx
push eax
mov edi, ebx
call fcn.0041db40
mov edi, eax
jmp 0x41f3cb
xor edi, edi
mov dword [esp + 0x33c], 0xffffffff
mov ecx, dword [esp + 0x18]
mov dword [edi + 0x30], ecx
mov edx, dword [esp + 0x1c]
or dword [edi + 0x38], 5
mov dword [edi + 0x34], edx
call esi
mov ecx, dword [edi + 0x34]
mov edx, dword [edi + 0x30]
push ecx
mov dword [edi + 0x44], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0x58]
push edx
push edi
mov ecx, ebx
call eax
mov edx, dword [edi]
mov eax, dword [edx + 4]
mov ecx, edi
call eax
mov dword [ebx + 0x114], 0
jmp 0x41f460
sub eax, 0x464
je 0x41f456
sub eax, 1
je 0x41f44a
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
mov eax, dword [ebx + 0x30]
push esi
push ecx
push edx
push eax
call dword [sym.imp.USER32.dll_DefWindowProcA]
mov ecx, dword [esp + 0x334]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
mov ecx, dword [ebx + 0x30]
push ecx
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x41f460
mov edx, dword [ebx + 0x30]
push edx
call dword [sym.imp.USER32.dll_SetFocus]
mov ecx, dword [esp + 0x334]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0xc