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

Disassembly:
sub esp, 0x5c
push ebp
mov ebp, dword [esp + 0x68]
cmp ebp, 0xff000000
je 0x45bcda
push ebx
push esi
push edi
lea eax, [esp + 0x30]
push eax
push 0
mov dword [esp + 0x38], 0
call sub.gdiplus.dll_GdipCreatePath
cmp byte [esp + 0x8c], 0
mov esi, dword [esp + 0x80]
mov dword [esp + 0x34], eax
je 0x45b76d
mov ecx, dword [esp + 0x84]
push 0
lea edx, [ecx + ecx]
push edx
lea eax, [esp + 0x38]
push esi
push eax
call fcn.0045a950
add esp, 0x10
jmp 0x45b78e
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
push ecx
mov ecx, dword [esi]
push edx
mov edx, dword [esp + 0x38]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipAddPathRectangleI
test eax, eax
je 0x45b78e
mov dword [esp + 0x34], eax
cmp byte [esp + 0x90], 0
jne 0x45b7a3
mov bl, 0xb2
mov byte [esp + 0x88], bl
jmp 0x45b7aa
mov bl, byte [esp + 0x88]
fld dword [0x4bf494]
sub esp, 0xc
fstp dword [esp + 8]
fld1
fst dword [esp + 4]
fstp dword [esp]
push ebp
call fcn.0047eaa0
fld dword [0x4bf48c]
add esp, 4
fstp dword [esp + 8]
mov edi, eax
fld1
fst dword [esp + 4]
fstp dword [esp]
push ebp
call fcn.0047eaa0
add esp, 0x10
movzx ecx, bl
test bl, bl
jne 0x45b7f3
mov ecx, 0xff
mov edx, ebp
shl ecx, 0x18
and edx, 0xffffff
or edx, ecx
mov dword [esp + 0x24], edx
movzx ecx, bl
test bl, bl
jne 0x45b810
mov ecx, 0xff
shl ecx, 0x18
and edi, 0xffffff
or edi, ecx
mov cl, byte [esp + 0x88]
mov ebx, edi
test cl, cl
mov dword [esp + 0x10], ebx
movzx ecx, cl
jne 0x45b834
mov ecx, 0xff
and eax, 0xffffff
shl ecx, 0x18
or eax, ecx
cmp byte [esp + 0x8c], 0
mov edi, eax
mov dword [esp + 0x14], edi
je 0x45babb
fild dword [esi]
lea ebp, [esi + 4]
mov dword [esp + 0x1c], ebx
lea ebx, [esi + 8]
fstp dword [esp + 0x50]
push 1
fild dword [ebp]
mov dword [esp + 0x1c], edi
lea eax, [esp + 0x1c]
push eax
fstp dword [esp + 0x5c]
lea edi, [esi + 0xc]
fild dword [ebx]
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x5c]
fstp dword [esp + 0x64]
push edx
fild dword [edi]
lea ecx, [esp + 0x70]
fstp dword [esp + 0x6c]
call fcn.004589a0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x64]
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [edx]
push ecx
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b8b7
mov ecx, dword [esp + 0x70]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x45b8fc
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x54]
mov dword [esp + 0x20], eax
call fcn.00452550
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x70]
push eax
mov eax, dword [edx]
push ecx
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b8f2
mov ecx, dword [esp + 0x70]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x54]
push edx
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esp + 0x24]
fild dword [esi]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], eax
fstp dword [esp + 0x40]
mov eax, dword [ebp]
dec eax
lea edx, [ecx + ecx]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
mov eax, dword [edi]
xor ecx, ecx
cmp edx, eax
fstp dword [esp + 0x44]
fild dword [ebx]
setge cl
push 1
lea edx, [esp + 0x20]
push edx
fstp dword [esp + 0x50]
inc ecx
add ecx, eax
mov dword [esp + 0x2c], ecx
fild dword [esp + 0x2c]
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x4c]
fstp dword [esp + 0x58]
push ecx
lea ecx, [esp + 0x60]
call fcn.004589a0
mov eax, dword [esp + 0x78]
cmp eax, dword [esp + 0x74]
jne 0x45b992
fldz
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
fstp dword [esp + 0x24]
fld1
mov dword [esp + 0x1c], edx
fstp dword [esp + 0x28]
mov dword [esp + 0x20], eax
push 2
lea ecx, [esp + 0x28]
lea edx, [esp + 0x20]
jmp 0x45ba0a
cmp byte [esp + 0x90], 0
jne 0x45b9ae
movzx ecx, byte [esp + 0x88]
shl ecx, 0x18
and eax, 0xffffff
or eax, ecx
fild dword [esp + 0x84]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
fadd st(0), st(0)
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], edx
fidiv dword [edi]
fstp dword [esp + 0x74]
fld dword [esp + 0x74]
fcomp qword [0x4c9e10]
fnstsw ax
test ah, 1
jne 0x45b9ec
fld dword [0x4bf624]
fstp dword [esp + 0x74]
fldz
push 3
fstp dword [esp + 0x44]
lea ecx, [esp + 0x44]
fld dword [esp + 0x78]
lea edx, [esp + 0x28]
fstp dword [esp + 0x48]
fld1
fstp dword [esp + 0x4c]
push ecx
push edx
lea ecx, [esp + 0x5c]
call fcn.004571d0
fld1
mov edi, dword [esp + 0x54]
lea eax, [esp + 0x38]
push eax
xor ebx, ebx
push ebx
push ecx
fstp dword [esp]
push edi
mov dword [esp + 0x48], ebx
call sub.gdiplus.dll_GdipCreatePen2
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x70]
push ecx
mov dword [esp + 0x40], eax
mov eax, dword [esi]
push edx
push eax
call sub.gdiplus.dll_GdipDrawPath
cmp eax, ebx
je 0x45ba52
mov dword [esi + 4], eax
mov eax, dword [esp + 0x7c]
cmp eax, ebx
je 0x45ba8f
fld1
lea ecx, [esp + 0x24]
push ecx
push ebx
push ecx
fstp dword [esp]
push eax
mov dword [esp + 0x34], ebx
call sub.gdiplus.dll_GdipCreatePen1
lea edx, [esp + 0x30]
mov dword [esp + 0x28], eax
push edx
lea eax, [esp + 0x28]
push eax
mov ecx, esi
call fcn.00452760
mov ecx, dword [esp + 0x24]
push ecx
call sub.gdiplus.dll_GdipDeletePen
mov edx, dword [esp + 0x38]
push edx
call sub.gdiplus.dll_GdipDeletePen
push edi
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esp + 0x64]
push eax
call sub.gdiplus.dll_GdipDeleteBrush
mov ecx, dword [esp + 0x30]
push ecx
call sub.gdiplus.dll_GdipDeletePath
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x5c
ret
mov ebp, dword [esp + 0x70]
push ebp
lea ecx, [esp + 0x44]
call fcn.004594e0
mov ecx, dword [esp + 0x48]
mov edx, dword [ecx]
push 4
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45bae2
mov ecx, dword [esp + 0x48]
mov dword [ecx + 4], eax
fild dword [esi]
lea eax, [esi + 8]
push 1
lea edx, [esp + 0x78]
fstp dword [esp + 0x54]
mov dword [esp + 0x20], eax
fild dword [esi + 4]
push edx
fld1
lea ecx, [esp + 0x58]
fsub st(1), st(0)
mov dword [esp + 0x7c], edi
fxch st(1)
mov dword [esp + 0x2c], ebx
fstp dword [esp + 0x5c]
fild dword [eax]
lea eax, [esp + 0x2c]
push eax
push ecx
fstp dword [esp + 0x68]
lea ecx, [esp + 0x70]
fiadd dword [esi + 0xc]
fstp dword [esp + 0x6c]
call fcn.004589a0
mov edx, dword [esp + 0x30]
mov edi, dword [esp + 0x64]
mov eax, dword [ebp]
push edx
push edi
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45bb45
mov dword [ebp + 4], eax
push edi
call sub.gdiplus.dll_GdipDeleteBrush
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x48]
mov edx, dword [edi]
push ecx
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45bb63
mov dword [edi + 4], eax
mov eax, dword [esp + 0x44]
mov ecx, dword [edi]
push eax
push ecx
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x45bb77
mov dword [edi + 4], eax
cmp byte [esp + 0x90], 0
jne 0x45bb9a
movzx ebx, byte [esp + 0x88]
mov edx, dword [esp + 0x78]
shl ebx, 0x18
and edx, 0xffffff
or ebx, edx
jmp 0x45bb9e
mov ebx, dword [esp + 0x78]
push ebp
lea ecx, [esp + 0x44]
call fcn.004594e0
test byte [0x4d743c], 1
jne 0x45bbc2
or dword [0x4d743c], 1
mov ecx, 0x4d742c
call fcn.0044f920
cmp byte [0x4d7438], 0
je 0x45bcdf
mov eax, dword [0x4d742c]
cmp eax, 0x64
je 0x45bcdf
push 0x64
push eax
push 1
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov edi, eax
cmp edi, 1
mov dword [esp + 0x74], edi
jle 0x45bc0c
mov eax, dword [esp + 0x48]
mov ecx, dword [eax]
push 4
push ecx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45bc0c
mov edx, dword [esp + 0x48]
mov dword [edx + 4], eax
fild dword [esp + 0x74]
lea eax, [esp + 0x38]
push eax
push 0
push ecx
fstp dword [esp]
push ebx
mov dword [esp + 0x48], 0
call sub.gdiplus.dll_GdipCreatePen1
mov ecx, dword [esi + 4]
mov esi, dword [esi]
xor edx, edx
cmp edi, 1
setle dl
mov dword [esp + 0x3c], eax
mov eax, esi
push ecx
sub eax, edx
mov edx, dword [esp + 0x20]
add eax, dword [edx]
push eax
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [ebp]
push esi
push eax
push ecx
call sub.gdiplus.dll_GdipDrawLineI
test eax, eax
je 0x45bc5d
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x45bc97
lea edx, [esp + 0x74]
push edx
lea ecx, [esp + 0x64]
mov dword [esp + 0x78], eax
call fcn.00452550
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x64]
mov ecx, dword [ebp]
push eax
push esi
push ecx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45bc91
mov dword [ebp + 4], eax
push esi
call sub.gdiplus.dll_GdipDeleteBrush
mov edx, dword [esp + 0x38]
push edx
call sub.gdiplus.dll_GdipDeletePen
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x48]
mov ecx, dword [esi]
push eax
push ecx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45bcb9
mov dword [esi + 4], eax
mov edx, dword [esp + 0x44]
mov eax, dword [esi]
push edx
push eax
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x45bccd
mov dword [esi + 4], eax
mov ecx, dword [esp + 0x30]
push ecx
call sub.gdiplus.dll_GdipDeletePath
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x5c
ret
mov edi, 1
mov dword [esp + 0x74], edi
jmp 0x45bc0c