Function at 0x4631c5
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x94
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x90], eax
mov edx, dword [ebp + 8]
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 0x14]
push esi
xor esi, esi
mov dword [esp + 0x1c], ecx
push edi
mov eax, dword [ebx + 4]
mov edi, dword [ebp + 0x10]
mov dword [ecx], esi
xor ecx, ecx
inc ecx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
cmp edx, 0x106
ja 0x463698
je 0x463668
cmp edx, 0xf
ja 0x463544
je 0x463351
mov eax, edx
dec eax
je 0x46356f
dec eax
je 0x463345
dec eax
je 0x46333a
dec eax
dec eax
je 0x4632d5
dec eax
dec eax
je 0x46328f
dec eax
jne 0x463a41
cmp dword [ebx - 4], esi
je case.default.0x4636e7
push ecx
lea ecx, [ebx - 8]
call fcn.004630ed
mov ecx, dword [ebx - 4]
mov dword [ecx + 0x130], esi
call fcn.00499541
call dword [sym.imp.USER32.dll_DestroyCaret]
or dword [ebx + 0x2164], 0xffffffff
or dword [ebx + 0x2160], 0xffffffff
mov ecx, dword [ebx - 4]
call fcn.00499851
jmp case.default.0x4636e7
mov ecx, dword [ebx - 4]
test ecx, ecx
je case.default.0x4636e7
mov dword [ecx + 0x130], 1
call fcn.00499541
push dword [ebx + 0x2138]
mov edi, dword [esp + 0x18]
push dword [ebx + 0x2134]
push dword [ebx + 0x359c]
push edi
call dword [sym.imp.USER32.dll_CreateCaret]
push edi
call dword [sym.imp.USER32.dll_ShowCaret]
mov dword [ebx + 0x35bc], esi
jmp 0x463282
cmp dword [ebx - 4], esi
je case.default.0x4636e7
movzx eax, di
mov ecx, edi
cdq
idiv dword [ebx + 0x2134]
shr ecx, 0x10
mov esi, eax
xor eax, eax
inc eax
cmp esi, eax
push dword [ebx + 0x1538]
cmovl esi, eax
mov eax, ecx
cdq
xor ecx, ecx
idiv dword [ebx + 0x2138]
inc ecx
mov dword [ebx + 0x1604], esi
cmp eax, ecx
push esi
cmovl eax, ecx
mov ecx, dword [ebx - 4]
push eax
mov dword [ebx + 0x1608], eax
call fcn.0049991f
push 1
mov ecx, ebx
call fcn.00430a7d
lea ecx, [ebx - 8]
call fcn.00463d9d
jmp case.default.0x4636e7
cmp dword [ebx - 4], esi
je case.default.0x4636e7
jmp 0x46332d
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x68]
jmp 0x463d0f
push eax
call dword [sym.imp.USER32.dll_HideCaret]
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x48]
push eax
push ecx
call dword [sym.imp.USER32.dll_BeginPaint]
mov esi, eax
mov eax, dword [ebx + 0x3280]
mov dword [esp + 0xc], esi
test eax, eax
je 0x463389
push 1
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectPalette]
push esi
call dword [sym.imp.GDI32.dll_RealizePalette]
mov edx, dword [ebx - 4]
xor eax, eax
mov ecx, dword [ebx + 0x2148]
mov esi, dword [ebx + 0x2138]
mov edi, dword [ebx + 0x2144]
cmp dword [edx + 0x3140], eax
mov ebx, dword [ebx + 0x2134]
sete al
push eax
mov eax, dword [esp + 0x60]
sub eax, ecx
dec eax
cdq
idiv esi
push eax
mov eax, dword [esp + 0x60]
sub eax, edi
dec eax
cdq
idiv ebx
push eax
mov eax, dword [esp + 0x60]
sub eax, ecx
cdq
idiv esi
mov esi, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x60]
sub eax, edi
cdq
idiv ebx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esi - 4]
push eax
push ebx
call fcn.0049e085
cmp dword [esp + 0x4c], 0
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
jne 0x463444
mov ecx, dword [esi + 0x2144]
cmp dword [esp + 0x50], ecx
jl 0x463444
mov edx, dword [esi + 0x2148]
cmp dword [esp + 0x54], edx
jl 0x463444
mov eax, dword [esi - 4]
mov eax, dword [eax + 0x128]
imul eax, dword [esi + 0x2134]
add eax, ecx
cmp dword [esp + 0x58], eax
jge 0x463444
mov eax, dword [esi - 4]
mov eax, dword [eax + 0x124]
imul eax, dword [esi + 0x2138]
add eax, edx
cmp dword [esp + 0x5c], eax
jl 0x463512
push dword [esi + 0x3270]
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
push eax
push ebx
mov dword [esp + 0x20], eax
call edi
push dword [esi + 0x3270]
mov dword [esp + 0x2c], eax
xor eax, eax
push eax
push eax
call dword [sym.imp.GDI32.dll_CreatePen]
push eax
push ebx
mov dword [esp + 0x28], eax
call edi
push dword [esp + 0x5c]
mov edi, eax
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push ebx
call dword [sym.imp.GDI32.dll_IntersectClipRect]
mov ecx, dword [esi - 4]
mov ebx, dword [esp + 0x10]
mov edx, dword [esi + 0x2148]
mov esi, dword [esi + 0x2144]
mov eax, dword [ecx + 0x124]
imul eax, dword [ebx + 0x2138]
add eax, edx
push eax
mov eax, dword [ecx + 0x128]
mov ecx, ebx
mov ebx, dword [esp + 0x10]
imul eax, dword [ecx + 0x2134]
add eax, esi
push eax
push edx
push esi
push ebx
call dword [sym.imp.GDI32.dll_ExcludeClipRect]
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push dword [esp + 0x5c]
push ebx
call dword [sym.imp.GDI32.dll_Rectangle]
mov ebx, dword [esp + 0x28]
push ebx
mov ebx, dword [esp + 0x10]
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x18]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
call esi
push edi
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push ebx
call edi
push dword [esp + 0x20]
call esi
mov esi, dword [sym.imp.GDI32.dll_GetStockObject]
push 0xd
call esi
push eax
push ebx
call edi
push 6
call esi
push eax
push ebx
call edi
mov ebx, dword [esp + 0x14]
lea eax, [esp + 0x48]
push eax
push ebx
call dword [sym.imp.USER32.dll_EndPaint]
push ebx
call dword [sym.imp.USER32.dll_ShowCaret]
jmp case.default.0x4636e7
mov dword [esp + 0x10], 0x100
cmp edx, 0x101
ja 0x4635ab
mov ecx, dword [esp + 0x10]
cmp edx, ecx
jae 0x4635cd
cmp edx, 0x10
je 0x46359f
cmp edx, 0x15
je 0x463576
cmp edx, 0x21
jne 0x463a41
xor al, al
jmp 0x463d0f
cmp dword [ebx + 0x192c], esi
je 0x463c3f
lea ecx, [ebx - 8]
call fcn.00462668
lea ecx, [ebx - 8]
call fcn.004626fd
mov ecx, dword [ebx - 4]
call fcn.0049e03c
jmp case.default.0x4636e7
mov eax, dword [ebx]
mov ecx, ebx
call dword [eax + 0x50]
jmp 0x463d0f
cmp edx, 0x102
je 0x463668
lea eax, [edx - 0x104]
cmp eax, ecx
ja 0x463a41
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
cmp dword [ebp + 0xc], 0xe5
jne 0x463601
cmp edx, ecx
jne 0x46356f
mov dword [esp + 0x2c], eax
and edi, 0xdfff
lea eax, [esp + 0x2c]
mov dword [esp + 0x30], ecx
push eax
mov dword [esp + 0x38], 0xe5
mov dword [esp + 0x3c], edi
call dword [sym.imp.USER32.dll_TranslateMessage]
jmp 0x463658
lea ecx, [esp + 0x88]
push ecx
push edi
push dword [ebp + 0xc]
push ecx
lea ecx, [ebx - 8]
call fcn.00464144
mov edi, eax
cmp edi, 0xffffffff
je 0x46356f
test edi, edi
je 0x463658
mov ecx, dword [ebx - 4]
call fcn.0049f296
mov ecx, dword [ebx - 4]
call fcn.004998c3
mov ecx, dword [ebx + 0x20ec]
test ecx, ecx
je 0x46364f
push 1
push edi
lea eax, [esp + 0x90]
push eax
call fcn.0047f66c
push esi
lea ecx, [ebx - 8]
call fcn.004630ed
mov ecx, dword [ebx + 0x20e8]
call fcn.004a1451
jmp case.default.0x4636e7
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebx - 4]
mov byte [esp + 0x1f], al
call fcn.004998c3
mov ecx, dword [ebx + 0x20ec]
xor ebx, ebx
inc ebx
test ecx, ecx
je 0x463691
push ebx
push ebx
lea eax, [esp + 0x27]
push eax
push esi
call fcn.0047fc4e
mov al, bl
jmp 0x463d0f
cmp edx, 0x208
ja 0x463a04
cmp edx, 0x207
jae 0x46386b
mov eax, 0x200
cmp edx, eax
ja 0x463855
je 0x4637a3
mov eax, edx
sub eax, 0x111
je 0x463745
dec eax
dec eax
je 0x463736
dec eax
dec eax
jne 0x463a41
mov eax, dword [ebp + 0xc]
movzx ecx, ax
cmp ecx, 7
ja case.default.0x4636e7
jmp dword [ecx*4 + 0x463d29]
push esi
push 0xffffffffffffffff
jmp 0x463729
push esi
jmp 0x463727
push 1
push esi
jmp 0x463729
push 0xffffffffffffffff
jmp 0x4636f8
mov ecx, dword [ebx - 4]
mov eax, dword [ecx + 0x124]
cdq
sub eax, edx
sar eax, 1
push eax
push esi
jmp 0x46372c
mov ecx, dword [ebx - 4]
mov eax, dword [ecx + 0x124]
cdq
sub eax, edx
sar eax, 1
neg eax
jmp 0x46370d
shr eax, 0x10
push eax
push 1
mov ecx, dword [ebx - 4]
call fcn.0049e189
jmp case.default.0x4636e7
mov eax, dword [ebx]
mov ecx, ebx
push dword [ebp + 0xc]
call dword [eax + 0x40]
jmp 0x463d0f
mov eax, dword [ebp + 0xc]
sub eax, 0x170
je 0x463771
sub eax, 0x20
je 0x463764
mov ecx, dword [ebx + 0x20e8]
call fcn.004a1451
jmp 0x46356f
lea ecx, [ebx - 8]
mov eax, dword [ecx]
call dword [eax + 0x38]
jmp 0x46356f
mov edi, dword [ebx - 4]
mov ecx, edi
call fcn.00499326
push dword [edi + 0x20]
mov esi, eax
mov ecx, edi
neg esi
call fcn.00499dbd
push dword [edi + 0x128]
mov ecx, edi
push eax
xor eax, eax
push eax
push esi
push 1
push eax
call fcn.0049e2aa
jmp 0x46356f
xor eax, eax
inc eax
test byte [ebp + 0xc], 0x13
je 0x463d0f
call dword [sym.imp.USER32.dll_GetCapture]
cmp eax, dword [esp + 0x14]
jne 0x46384d
mov ecx, dword [ebp + 0xc]
xor eax, eax
inc eax
test al, cl
je 0x4637ce
mov esi, eax
jmp 0x4637de
mov al, cl
not al
movzx esi, al
and esi, 0x10
or esi, 0x20
shr esi, 4
mov eax, edi
shr eax, 0x10
test ax, ax
cwde
jns 0x4637f0
sub eax, dword [ebx + 0x2138]
inc eax
test di, di
mov dword [esp + 0x10], eax
movsx edi, di
jns 0x463803
sub edi, dword [ebx + 0x2134]
inc edi
call fcn.00463130
push eax
mov eax, dword [ebp + 0xc]
mov ecx, eax
and eax, 4
sub edi, dword [ebx + 0x2144]
and ecx, 8
push ecx
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [ebx - 8]
sub eax, dword [ebx + 0x2148]
cdq
idiv dword [ebx + 0x2138]
push eax
mov eax, edi
cdq
idiv dword [ebx + 0x2134]
push eax
push 4
push esi
call fcn.004630b0
mov ecx, dword [ebx - 4]
push eax
push esi
call fcn.0049ecc8
xor eax, eax
inc eax
jmp 0x463d0f
cmp edx, 0x202
jbe 0x46386b
lea eax, [edx - 0x204]
cmp eax, ecx
ja 0x463a41
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
cmp edx, 0x204
jne 0x463895
test al, 8
jne 0x463887
cmp dword [ebx + 0x197c], 2
jne 0x463895
push ecx
lea ecx, [ebx - 8]
call fcn.004630ed
jmp 0x46356f
sub edx, 0x201
je 0x4638f1
dec edx
je 0x4638e8
dec edx
dec edx
je 0x4638db
dec edx
je 0x4638ce
dec edx
dec edx
je 0x4638c1
dec edx
je 0x4638b4
mov dword [esp + 0x14], esi
jmp 0x4638fd
mov dword [esp + 0x14], 2
and eax, 0xffffffef
jmp 0x4638f9
mov dword [esp + 0x14], 2
or eax, 0x10
jmp 0x4638f7
mov dword [esp + 0x14], 3
and eax, 0xfffffffd
jmp 0x4638f9
mov dword [esp + 0x14], 3
or eax, 2
jmp 0x4638f7
mov dword [esp + 0x14], ecx
and eax, 0xfffffffe
jmp 0x4638f9
mov dword [esp + 0x14], ecx
or eax, ecx
mov esi, ecx
mov dword [esp + 0xc], eax
push ecx
lea ecx, [ebx - 8]
call fcn.004630ed
mov eax, edi
shr eax, 0x10
test esi, esi
je 0x46397f
test ax, ax
cwde
jns 0x46391c
sub eax, dword [ebx + 0x2138]
inc eax
mov dword [esp + 0x10], eax
movsx esi, di
test di, di
jns 0x46392f
sub esi, dword [ebx + 0x2134]
inc esi
call fcn.00463130
push eax
mov eax, dword [esp + 0x10]
mov ecx, eax
and eax, 4
sub esi, dword [ebx + 0x2144]
and ecx, 8
push ecx
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [ebx - 8]
sub eax, dword [ebx + 0x2148]
cdq
idiv dword [ebx + 0x2138]
push eax
mov eax, esi
cdq
idiv dword [ebx + 0x2134]
push eax
push dword [esp + 0x28]
call fcn.00462fcc
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_SetCapture]
jmp case.default.0x4636e7
test ax, ax
cwde
jns 0x46398c
sub eax, dword [ebx + 0x2138]
inc eax
mov dword [esp + 0x10], eax
movsx esi, di
test di, di
jns 0x46399f
sub esi, dword [ebx + 0x2134]
inc esi
call fcn.00463130
push eax
mov eax, dword [esp + 0x10]
mov ecx, eax
and eax, 4
sub esi, dword [ebx + 0x2144]
and ecx, 8
push ecx
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [ebx - 8]
sub eax, dword [ebx + 0x2148]
cdq
idiv dword [ebx + 0x2138]
push eax
mov eax, esi
cdq
idiv dword [ebx + 0x2134]
mov edx, dword [esp + 0x24]
push eax
push 5
push edx
call fcn.004630b0
mov ecx, dword [ebx - 4]
push eax
push edx
call fcn.0049ecc8
test byte [esp + 0xc], 0x13
jne case.default.0x4636e7
call dword [sym.imp.USER32.dll_ReleaseCapture]
jmp case.default.0x4636e7
mov eax, edx
sub eax, 0x307
je 0x463cf2
sub eax, 8
je 0x463cb4
dec eax
dec eax
je 0x463c6e
sub eax, 0x7cf1
je 0x463c60
sub eax, 4
je 0x463c3f
sub eax, 0x1ee
je 0x463c01
cmp edx, 0x20a
jne 0x46356f
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 0x10
cwde
add dword [ebx + 0x35b4], eax
movzx ecx, cx
mov eax, ecx
and eax, 4
and ecx, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], ecx
jmp 0x463be6
mov eax, dword [ebx + 0x35b4]
test eax, eax
jle 0x463a85
push 7
add eax, 0xffffff88
jmp 0x463a90
jns case.default.0x4636e7
push 8
add eax, 0x78
pop ecx
mov dword [ebx + 0x35b4], eax
mov dword [esp + 0x14], ecx
cmp dword [ebx + 0x35b0], esi
je 0x463bc4
cmp dword [ebx + 0x198c], esi
je 0x463ab9
cmp dword [esp + 0x10], esi
jne 0x463bc4
movsx eax, di
mov dword [esp + 0x20], eax
mov eax, edi
shr eax, 0x10
cwde
mov dword [esp + 0x24], eax
lea eax, [esp + 0x20]
push eax
push dword [ebx + 4]
call dword [sym.imp.USER32.dll_ScreenToClient]
test eax, eax
je 0x463be6
mov eax, dword [esp + 0x24]
test eax, eax
jns 0x463aef
sub eax, dword [ebx + 0x2138]
inc eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
test eax, eax
jns 0x463b02
sub eax, dword [ebx + 0x2134]
inc eax
mov dword [esp + 0x18], eax
call fcn.00463130
push eax
mov eax, dword [esp + 0x10]
lea ecx, [ebx - 8]
sub eax, dword [ebx + 0x2148]
cdq
idiv dword [ebx + 0x2138]
push dword [esp + 0x2c]
push dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x28]
sub eax, dword [ebx + 0x2144]
cdq
idiv dword [ebx + 0x2134]
mov edx, dword [esp + 0x24]
push eax
push 1
push edx
call fcn.004630b0
mov ecx, dword [ebx - 4]
push eax
push edx
call fcn.0049ecc8
mov eax, dword [esp + 0x24]
test eax, eax
jns 0x463b60
sub eax, dword [ebx + 0x2138]
inc eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x20]
test eax, eax
jns 0x463b73
sub eax, dword [ebx + 0x2134]
inc eax
mov dword [esp + 0xc], eax
call fcn.00463130
push eax
mov eax, dword [esp + 0x1c]
lea ecx, [ebx - 8]
sub eax, dword [ebx + 0x2148]
cdq
idiv dword [ebx + 0x2138]
push dword [esp + 0x2c]
push dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x1c]
sub eax, dword [ebx + 0x2144]
cdq
idiv dword [ebx + 0x2134]
mov edx, dword [esp + 0x24]
push eax
push 5
push edx
call fcn.004630b0
mov ecx, dword [ebx - 4]
push eax
push edx
call fcn.0049ecc8
jmp 0x463be6
cmp ecx, 7
mov ecx, dword [ebx - 4]
mov eax, dword [ecx + 0x124]
cdq
jne 0x463bdb
sub eax, edx
sar eax, 1
neg eax
jmp 0x463bdf
sub eax, edx
sar eax, 1
push eax
push esi
call fcn.0049e189
push dword [ebx + 0x35b4]
call dword [sym.imp.msvcrt.dll_abs]
pop ecx
cmp eax, 0x78
jge 0x463a74
jmp case.default.0x4636e7
cmp dword [ebx + 0x2154], esi
je 0x463c11
lea ecx, [ebx - 8]
call fcn.0046252b
mov eax, dword [ebp + 0xc]
xor ecx, ecx
inc ecx
mov dword [ebx + 0x2158], eax
mov dword [ebx + 0x2154], ecx
mov dword [ebx + 0x215c], edi
cmp di, cx
je 0x463658
lea ecx, [ebx - 8]
call fcn.0046252b
jmp 0x463658
push dword [ebp + 0xc]
lea ecx, [ebx - 8]
push edi
call fcn.004655a7
test eax, eax
je case.default.0x4636e7
mov ecx, dword [ebx - 4]
call fcn.0049eb2a
jmp case.default.0x4636e7
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0x211c], eax
jmp 0x46356f
mov ecx, dword [esp + 0x14]
cmp dword [ebp + 0xc], ecx
je case.default.0x4636e7
cmp dword [ebx + 0x3280], esi
je case.default.0x4636e7
mov eax, dword [ebx - 8]
lea ecx, [ebx - 8]
call dword [eax + 8]
mov esi, eax
test esi, esi
je case.default.0x4636e7
push esi
call dword [sym.imp.GDI32.dll_RealizePalette]
test eax, eax
je 0x463ca8
push esi
call dword [sym.imp.GDI32.dll_UpdateColors]
mov eax, dword [ebx - 8]
lea ecx, [ebx - 8]
push esi
call dword [eax + 0xc]
jmp case.default.0x4636e7
cmp dword [ebx + 0x3280], esi
je case.default.0x4636e7
mov eax, dword [ebx - 8]
lea ecx, [ebx - 8]
call dword [eax + 8]
mov esi, eax
test esi, esi
je case.default.0x4636e7
push esi
call dword [sym.imp.GDI32.dll_RealizePalette]
test eax, eax
je 0x463cdd
push esi
call dword [sym.imp.GDI32.dll_UpdateColors]
mov eax, dword [ebx - 8]
lea ecx, [ebx - 8]
push esi
call dword [eax + 0xc]
mov ecx, dword [esp + 0x20]
xor eax, eax
inc eax
mov dword [ecx], eax
jmp 0x463d0f
cmp dword [ebx + 0x211c], esi
jne 0x463d07
mov ecx, dword [ebx - 4]
call fcn.0049f38c
call fcn.00499851
mov dword [ebx + 0x211c], esi
mov al, 1
mov ecx, dword [esp + 0x9c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00401000
mov esp, ebp
pop ebp
ret 0x10