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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x615c8a
mov eax, dword fs:[0]
push eax
sub esp, 0x80
push ebx
push esi
push edi
mov eax, dword [0x6963f4]
xor eax, esp
push eax
lea eax, [esp + 0x90]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0x78]
test eax, eax
jne 0x45134e
mov eax, dword [ebx + 0x68]
mov ecx, dword [ebx + 0x64]
mov edx, dword [ebx + 0x5c]
push eax
push ecx
mov ecx, dword [ebx + 0x60]
push edx
mov edx, ebx
call fcn.004504a0
test eax, eax
je 0x451912
mov ecx, dword [ebx + 0x5c]
mov dword [eax + 0x14], ecx
mov edx, dword [ebx + 0x60]
mov dword [eax + 0x18], edx
mov ecx, dword [esp + 0x90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp dword [ebx + 0x34], 0
je 0x45137b
cmp dword [eax + 0x1a0c], 0
je 0x45137b
push ebx
call fcn.00452b20
mov ecx, dword [esp + 0x90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov esi, dword [eax + 0x1a28]
mov edi, dword [eax + 0x1a2c]
mov ecx, dword [eax + 0x1a30]
mov edx, dword [eax + 0x1a34]
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], edi
lea esi, [esp + 0x5c]
mov edi, eax
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], edx
call fcn.0044afb0
lea esi, [esp + 0x6c]
call fcn.004e92f0
mov eax, esi
push eax
lea ecx, [esp + 0x60]
push ecx
mov edx, ecx
push edx
call dword [sym.imp.user32.dll_IntersectRect]
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + 0x64]
sub eax, ecx
sub edx, esi
push eax
push edx
push esi
mov edx, ebx
call fcn.004504a0
mov esi, eax
xor eax, eax
cmp esi, eax
mov dword [esp + 0x1c], esi
jne 0x45140a
mov ecx, dword [esp + 0x90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edi, dword [ebx + 0x78]
mov edx, dword [edi + 0xe4]
cmp edx, eax
je 0x45182e
cmp dword [ebx + 0x50], 0
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
je 0x451590
test edx, edx
mov dword [esp + 0x18], 0
jle 0x451561
neg ecx
neg eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + edi + 0xf0]
lea eax, [eax + edi + 0xf0]
mov dword [esp + 0x4c], ecx
mov edx, dword [eax + 4]
mov dword [esp + 0x50], edx
mov ecx, dword [eax + 8]
mov dword [esp + 0x54], ecx
mov edx, dword [eax + 0xc]
lea esi, [esp + 0x4c]
mov dword [esp + 0x58], edx
call fcn.0044afb0
lea eax, [esp + 0x6c]
push eax
mov ecx, esi
push ecx
mov edx, esi
push edx
call dword [sym.imp.user32.dll_IntersectRect]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
push eax
mov edx, esi
mov esi, dword [sym.imp.user32.dll_OffsetRect]
push ecx
push edx
call esi
mov eax, dword [ebx + 0x50]
cmp eax, 1
jne 0x451500
cmp dword [esp + 0x18], 0
jle 0x4514cf
mov eax, dword [ebx + 0x54]
jmp 0x4514d1
xor eax, eax
sub eax, dword [esp + 0x50]
lea ecx, [esp + 0x4c]
add eax, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x50]
neg eax
push eax
push ecx
call esi
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0x14]
jle 0x4514f6
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], edx
jmp 0x451540
cmp eax, 2
jne 0x451540
cmp dword [esp + 0x18], 0
jle 0x451511
mov eax, dword [ebx + 0x54]
jmp 0x451513
xor eax, eax
mov ecx, dword [esp + 0x50]
sub eax, dword [esp + 0x4c]
neg ecx
add eax, dword [esp + 0x14]
push ecx
push eax
lea edx, [esp + 0x54]
push edx
call esi
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x10]
jle 0x451538
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 0x14], eax
add dword [esp + 0x18], 1
mov edi, dword [ebx + 0x78]
mov ecx, dword [esp + 0x18]
add dword [esp + 0x20], 0x1c
cmp ecx, dword [edi + 0xe4]
jl 0x451461
mov esi, dword [esp + 0x1c]
movzx edx, word [esi + 0x2e]
movzx eax, word [esi + 0x2c]
mov ecx, dword [esp + 0x10]
push 0x2ffffff
push 0
push edx
mov edx, dword [esp + 0x20]
push eax
push ecx
push edx
mov ebx, esi
call fcn.004e3ee0
mov ebx, dword [ebp + 8]
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x18]
push eax
mov ecx, esi
call fcn.004e4720
push 1
xor eax, eax
mov ecx, esi
call fcn.004e45e0
mov edi, dword [ebx + 0x78]
cmp dword [edi + 0xe4], 0
mov dword [esp + 0x2c], eax
mov dword [esp + 0x18], 0
jle 0x451810
mov eax, dword [esp + 0x38]
neg eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x34]
neg eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x20], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + edi + 0xf0]
lea eax, [ecx + edi + 0xf0]
mov dword [esp + 0x3c], edx
mov ecx, dword [eax + 4]
mov dword [esp + 0x40], ecx
mov edx, dword [eax + 8]
mov dword [esp + 0x44], edx
mov eax, dword [eax + 0xc]
lea esi, [esp + 0x3c]
mov dword [esp + 0x48], eax
call fcn.0044afb0
lea ecx, [esp + 0x6c]
push ecx
mov edx, esi
push edx
mov eax, esi
push eax
call dword [sym.imp.user32.dll_IntersectRect]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
sub edx, ecx
push edx
mov edx, dword [esp + 0x48]
sub edx, eax
push edx
push eax
mov edx, ebx
call fcn.004504a0
mov ecx, dword [esp + 0x28]
mov edi, eax
mov eax, dword [esp + 0x24]
push eax
mov edx, esi
mov esi, dword [sym.imp.user32.dll_OffsetRect]
push ecx
push edx
mov dword [esp + 0x3c], edi
call esi
mov eax, dword [ebx + 0x50]
cmp eax, 1
jne 0x4516a1
cmp dword [esp + 0x18], 0
jle 0x451670
mov eax, dword [ebx + 0x54]
jmp 0x451672
xor eax, eax
sub eax, dword [esp + 0x40]
lea ecx, [esp + 0x3c]
add eax, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x40]
neg eax
push eax
push ecx
call esi
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x14]
jle 0x451697
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x48]
mov dword [esp + 0x10], edx
jmp 0x4516e1
cmp eax, 2
jne 0x4516e1
cmp dword [esp + 0x18], 0
jle 0x4516b2
mov eax, dword [ebx + 0x54]
jmp 0x4516b4
xor eax, eax
mov ecx, dword [esp + 0x40]
sub eax, dword [esp + 0x3c]
neg ecx
add eax, dword [esp + 0x14]
push ecx
push eax
lea edx, [esp + 0x44]
push edx
call esi
mov eax, dword [esp + 0x48]
cmp eax, dword [esp + 0x10]
jle 0x4516d9
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x14], eax
mov ecx, dword [ebx + 0x78]
mov edx, dword [esp + 0x20]
mov esi, dword [edx + ecx + 0x100]
test esi, esi
lea eax, [edx + ecx]
je 0x451772
mov edi, dword [esp + 0x2c]
mov eax, dword [edi + 4]
push esi
push eax
call dword [sym.imp.gdi32.dll_SelectClipRgn]
cmp dword [ebx + 0x50], 0
je 0x45172c
lea ecx, [esp + 0x7c]
push ecx
push esi
call dword [sym.imp.gdi32.dll_GetRgnBox]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
sub edx, dword [esp + 0x80]
sub eax, dword [esp + 0x7c]
jmp 0x45173c
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
sub edx, dword [esp + 0x38]
sub eax, dword [esp + 0x34]
mov ecx, dword [edi + 4]
push edx
push eax
push ecx
call dword [sym.imp.gdi32.dll_OffsetClipRgn]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
push edx
push eax
push edi
xor eax, eax
xor edx, edx
call fcn.004e4270
mov ecx, dword [edi + 4]
push 0
push ecx
call dword [sym.imp.gdi32.dll_SelectClipRgn]
mov edi, dword [esp + 0x30]
jmp 0x4517c1
add eax, 0xec
cmp dword [eax], 0
jne 0x451798
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
push edx
push eax
push ecx
xor eax, eax
xor edx, edx
mov ecx, edi
call fcn.004e4270
jmp 0x4517c1
push eax
call fcn.0044a800
test eax, eax
je 0x4517a7
mov eax, dword [eax + 0x1c]
jmp 0x4517a9
xor eax, eax
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x3c]
push edx
mov edx, dword [esp + 0x30]
push ecx
push edx
mov ecx, eax
mov edx, edi
call fcn.004e5800
test edi, edi
je 0x4517d0
mov eax, dword [edi]
mov edx, dword [eax + 4]
push 1
mov ecx, edi
call edx
mov eax, dword [ebx + 0x50]
cmp eax, 1
jne 0x4517e2
mov eax, dword [esp + 0x48]
mov dword [esp + 0x10], eax
jmp 0x4517ef
cmp eax, 2
jne 0x4517ef
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x14], ecx
add dword [esp + 0x18], 1
mov edi, dword [ebx + 0x78]
mov edx, dword [esp + 0x18]
add dword [esp + 0x20], 0x1c
cmp edx, dword [edi + 0xe4]
jl 0x4515de
mov esi, dword [esp + 0x1c]
mov edi, esi
call fcn.004e46b0
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x18]
mov dword [eax + 0x10], ecx
mov edx, dword [ebx + 0x1c]
mov dword [eax + 0xc], edx
mov esi, eax
jmp 0x451900
cmp dword [edi + 0x60], eax
je 0x451900
push 0x480
call fcn.0055dbcb
add esp, 4
mov dword [esp + 0x30], eax
xor edi, edi
cmp eax, edi
mov dword [esp + 0x98], edi
je 0x45185d
push eax
call fcn.004e31f0
mov edi, eax
mov dword [esp + 0x98], 0xffffffff
movzx eax, word [esi + 0x2e]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x24]
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], edx
call fcn.004e4850
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0x34]
push eax
push 1
push ecx
push edx
push edi
call fcn.004e3c50
mov eax, dword [ebx + 0x18]
push eax
mov ecx, edi
call fcn.004e4720
push 1
xor eax, eax
mov ecx, edi
call fcn.004e45e0
mov ecx, dword [ebx + 0x78]
add ecx, 0x60
push ecx
mov dword [esp + 0x34], eax
call fcn.0044a800
test eax, eax
je 0x4518ca
mov eax, dword [eax + 0x1c]
jmp 0x4518cc
xor eax, eax
mov edx, dword [esp + 0x30]
xor ecx, ecx
push ecx
push ecx
push edx
mov ecx, eax
mov edx, esi
call fcn.004e5800
mov eax, dword [esi]
mov edx, dword [eax + 4]
push 1
mov ecx, esi
call edx
mov dword [esp + 0x1c], edi
call fcn.004e46b0
mov eax, dword [ebx + 0x18]
mov dword [edi + 0x10], eax
mov ecx, dword [ebx + 0x1c]
mov dword [edi + 0xc], ecx
mov esi, edi
mov edx, dword [esp + 0x5c]
mov dword [esi + 0x14], edx
mov eax, dword [esp + 0x60]
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x90]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4