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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x60
push eax
lea ecx, [esp + 0x28]
call fcn.004594e0
test byte [0x4d743c], 1
jne 0x45af3b
or dword [0x4d743c], 1
mov ecx, 0x4d742c
call fcn.0044f920
cmp byte [0x4d7438], 0
push ebx
push ebp
push esi
push edi
je 0x45af61
mov ecx, dword [0x4d742c]
mov edi, dword [esp + 0x88]
push ecx
push 0x64
push edi
call dword [sym.imp.KERNEL32.dll_MulDiv]
jmp 0x45af6a
mov eax, dword [esp + 0x88]
mov edi, eax
cmp eax, 1
setg bl
test byte [0x4d743c], 1
mov byte [esp + 0x14], bl
jne 0x45af8e
or dword [0x4d743c], 1
mov ecx, 0x4d742c
call fcn.0044f920
cmp dword [0x4d742c], 0xfa
sete al
mov byte [esp + 0x13], al
test bl, bl
je 0x45afbe
test al, al
jne 0x45afbe
mov esi, dword [esp + 0x3c]
mov edx, dword [esi]
push 4
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45afc2
mov dword [esi + 4], eax
jmp 0x45afc2
mov esi, dword [esp + 0x3c]
cmp byte [esp + 0xa0], 0
je 0x45afec
test edi, edi
je 0x45afe4
cmp dword [esp + 0x8c], 0
jne 0x45b001
cmp dword [esp + 0x90], 0
jne 0x45b001
mov byte [esp + 0xa0], 0
test edi, edi
jne 0x45b001
mov eax, dword [esi]
push 3
push eax
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x45b001
mov dword [esi + 4], eax
mov esi, dword [esp + 0x84]
mov ecx, dword [esi + 4]
mov ebx, dword [esi]
mov edi, dword [esi + 8]
mov ebp, dword [esi + 0xc]
mov dword [esp + 0x54], ecx
mov cl, byte [esp + 0x14]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebp
test cl, cl
je 0x45b040
mov eax, dword [esp + 0x88]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x84], eax
jmp 0x45b052
mov dword [esp + 0x84], 0
mov eax, dword [esp + 0x84]
cmp byte [esp + 0xa0], 0
jne 0x45b07c
test cl, cl
je 0x45b072
add dword [esp + 0x54], eax
add ebx, eax
add eax, eax
sub edi, eax
mov dword [esp + 0x50], ebx
sub ebp, eax
jmp 0x45b074
dec edi
dec ebp
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x58], edi
lea edx, [esp + 0x2c]
push edx
push 0
mov dword [esp + 0x34], 0
call sub.gdiplus.dll_GdipCreatePath
cmp byte [esp + 0xa0], 0
mov dword [esp + 0x30], eax
je 0x45b0fc
mov eax, dword [esp + 0x84]
mov ecx, dword [esi]
mov edx, dword [esi + 4]
add ecx, eax
add edx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esi + 8]
add eax, eax
mov dword [esp + 0x44], edx
mov edx, dword [esi + 0xc]
sub ecx, eax
sub edx, eax
mov eax, dword [esp + 0x14]
push eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x50], edx
lea edx, [ecx + ecx]
push edx
lea ecx, [eax + eax]
push ecx
lea edx, [esp + 0x4c]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.0045ac00
add esp, 0x14
jmp 0x45b232
cmp byte [esp + 0x13], 0
je 0x45b211
cmp dword [esp + 0x94], 6
jne 0x45b211
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x2c]
push ebp
push edi
push ecx
push ebx
push edx
call sub.gdiplus.dll_GdipAddPathRectangleI
mov ebp, dword [esp + 0x94]
test eax, eax
je 0x45b136
mov dword [esp + 0x30], eax
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x14], edi
mov dword [esp + 0x7c], edi
mov ebx, dword [esp + 0x80]
mov edx, edi
shr edx, 0x18
test dl, dl
je 0x45b36d
test ebp, ebp
je 0x45b291
cmp ebp, 6
je 0x45b291
fild dword [esi]
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x14]
xor edx, edx
fstp dword [esp + 0x60]
cmp ebp, 1
fild dword [esi + 4]
setne dl
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], ecx
fstp dword [esp + 0x64]
lea eax, [esp + 0x18]
fild dword [esi + 8]
lea ecx, [esp + 0x24]
push edx
fstp dword [esp + 0x6c]
fild dword [esi + 0xc]
push eax
push ecx
lea edx, [esp + 0x6c]
push edx
fstp dword [esp + 0x7c]
lea ecx, [esp + 0x50]
call fcn.004589a0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
mov edx, dword [ebp]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b1d1
mov dword [ebp + 4], eax
test ebx, ebx
je 0x45b202
lea eax, [esp + 0x24]
push eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], ebx
call fcn.00452550
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ecx, ebp
call fcn.004527e0
mov eax, dword [esp + 0x1c]
push eax
call sub.gdiplus.dll_GdipDeleteBrush
mov ecx, dword [esp + 0x44]
push ecx
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x45b371
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 4]
push eax
mov eax, dword [esi]
push ecx
mov ecx, dword [esp + 0x34]
push edx
push eax
push ecx
call sub.gdiplus.dll_GdipAddPathRectangleI
test eax, eax
je 0x45b232
mov dword [esp + 0x30], eax
mov ebp, dword [esp + 0x94]
cmp ebp, 6
je 0x45b136
fld dword [0x4bf494]
mov edi, dword [esp + 0x7c]
sub esp, 0xc
fstp dword [esp + 8]
fld1
fst dword [esp + 4]
fstp dword [esp]
push edi
call fcn.0047eaa0
fld dword [0x4bf48c]
add esp, 0x10
sub esp, 0xc
fstp dword [esp + 8]
mov dword [esp + 0x20], eax
fld1
fst dword [esp + 4]
fstp dword [esp]
push edi
call fcn.0047eaa0
add esp, 0x10
mov dword [esp + 0x7c], eax
jmp 0x45b142
cmp edi, 0xff000000
je 0x45b326
movzx edx, byte [esp + 0x98]
shl edx, 0x18
and edi, 0xffffff
lea eax, [esp + 0x24]
or edi, edx
push eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x28], edi
call fcn.00452550
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x74]
mov eax, dword [ebp]
push ecx
push edx
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b2e0
mov dword [ebp + 4], eax
test ebx, ebx
je 0x45b31a
lea ecx, [esp + 0x24]
push ecx
lea ecx, [esp + 0x44]
mov dword [esp + 0x28], ebx
call fcn.00452550
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x44]
mov ecx, dword [ebp]
push edx
push eax
push ecx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b310
mov dword [ebp + 4], eax
mov edx, dword [esp + 0x44]
push edx
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esp + 0x1c]
push eax
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x45b371
movzx ecx, byte [esp + 0x98]
shl ecx, 0x18
lea edx, [esp + 0x24]
mov dword [esp + 0x24], ecx
push edx
lea ecx, [esp + 0x44]
call fcn.00452550
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
mov edx, dword [ebp]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x45b361
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x44]
push eax
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x45b371
mov ebp, dword [esp + 0x74]
mov eax, dword [esp + 0x78]
movzx ecx, byte [esp + 0x9c]
cmp edi, eax
sete dl
and eax, 0xffffff
shl ecx, 0x18
or ecx, eax
mov eax, ecx
shr eax, 0x18
test al, al
je 0x45b6cf
cmp dword [esp + 0x88], 0
jle 0x45b6cf
cmp ecx, 0xff000000
je 0x45b6cf
mov edi, dword [esp + 0x94]
test edi, edi
je 0x45b5b5
cmp edi, 6
je 0x45b5b5
test dl, dl
je 0x45b3f2
movzx edx, byte [esp + 0x98]
mov eax, 0x66666667
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
shl edx, 0x18
and ecx, 0xffffff
or ecx, edx
cmp byte [esp + 0xa0], 0
je 0x45b509
mov eax, dword [esp + 0x7c]
fild dword [esi]
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 4]
mov dword [esp + 0x9c], eax
fstp dword [esp + 0x60]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x94], ecx
xor ecx, ecx
dec edx
inc eax
mov dword [esp + 0xa0], edx
fild dword [esp + 0xa0]
cmp edi, 1
setne cl
fstp dword [esp + 0x64]
mov dword [esp + 0xa0], eax
fild dword [esi + 8]
lea edx, [esp + 0x9c]
lea eax, [esp + 0x94]
fstp dword [esp + 0x68]
fild dword [esp + 0xa0]
push ecx
push edx
push eax
fstp dword [esp + 0x78]
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x50]
call fcn.004589a0
fild dword [esp + 0x88]
push ecx
lea edx, [esp + 0x44]
fstp dword [esp + 0xa4]
lea ecx, [esp + 0x1c]
fld dword [esp + 0xa4]
fstp dword [esp]
push edx
call fcn.00457280
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, ebp
call fcn.00452760
test ebx, ebx
je 0x45b4f0
fld dword [esp + 0xa0]
push ecx
lea edx, [esp + 0xa0]
fstp dword [esp]
push edx
lea ecx, [esp + 0x2c]
mov dword [esp + 0xa4], ebx
call fcn.004521b0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x28]
push ecx
mov ecx, ebp
call fcn.00452760
mov edx, dword [esp + 0x24]
push edx
call sub.gdiplus.dll_GdipDeletePen
mov eax, dword [esp + 0x18]
push eax
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [esp + 0x44]
push ecx
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x45b6cf
fild dword [esp + 0x88]
push ecx
lea edx, [esp + 0xa0]
mov dword [esp + 0xa0], ecx
fstp dword [esp + 0xa4]
lea ecx, [esp + 0x1c]
fld dword [esp + 0xa4]
fstp dword [esp]
push edx
call fcn.004521b0
mov eax, dword [esi + 4]
mov ecx, dword [esi]
mov edi, dword [esp + 0x84]
mov edx, dword [esi + 8]
add eax, edi
push eax
add edx, ecx
push edx
push eax
push ecx
lea eax, [esp + 0x28]
push eax
mov ecx, ebp
call fcn.00458da0
test ebx, ebx
je 0x45b5ab
fld dword [esp + 0xa0]
push ecx
lea ecx, [esp + 0xa0]
fstp dword [esp]
push ecx
lea ecx, [esp + 0x2c]
mov dword [esp + 0xa4], ebx
call fcn.004521b0
mov edx, dword [esi + 4]
mov ecx, dword [esi]
lea eax, [edi + edx]
mov edx, dword [esi + 8]
push eax
add edx, ecx
push edx
push eax
push ecx
lea eax, [esp + 0x34]
push eax
mov ecx, ebp
call fcn.00458da0
mov ecx, dword [esp + 0x24]
push ecx
call sub.gdiplus.dll_GdipDeletePen
mov edx, dword [esp + 0x18]
push edx
jmp 0x45b6ca
fild dword [esp + 0x88]
fstp dword [esp + 0x9c]
test dl, dl
jne 0x45b5cc
cmp edi, 6
jne 0x45b5f9
cmp byte [esp + 0xa4], 0
je 0x45b5f9
mov al, byte [esp + 0x98]
cmp al, 0xff
je 0x45b5f9
movzx edx, al
shl edx, 0x16
xor edx, ecx
movzx eax, al
and edx, 0xffffff
shl eax, 0x16
xor edx, eax
mov ecx, edx
fld dword [esp + 0x9c]
lea edx, [esp + 0x24]
push edx
push 0
push ecx
fstp dword [esp]
push ecx
mov dword [esp + 0x34], 0
call sub.gdiplus.dll_GdipCreatePen1
cmp byte [esp + 0xa0], 0
mov dword [esp + 0x28], eax
lea ecx, [esp + 0x24]
je 0x45b676
lea eax, [esp + 0x2c]
push eax
push ecx
mov ecx, ebp
call fcn.00452760
test ebx, ebx
je 0x45b6c5
fld dword [esp + 0x9c]
push ecx
lea edx, [esp + 0xa4]
fstp dword [esp]
push edx
lea ecx, [esp + 0x20]
mov dword [esp + 0xa8], ebx
call fcn.004521b0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, ebp
call fcn.00452760
jmp 0x45b6bb
lea eax, [esp + 0x50]
push eax
push ecx
mov ecx, ebp
call fcn.0045a710
test ebx, ebx
je 0x45b6c5
fld dword [esp + 0x9c]
push ecx
lea edx, [esp + 0xa4]
fstp dword [esp]
push edx
lea ecx, [esp + 0x20]
mov dword [esp + 0xa8], ebx
call fcn.004521b0
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, ebp
call fcn.0045a710
mov edx, dword [esp + 0x18]
push edx
call sub.gdiplus.dll_GdipDeletePen
mov eax, dword [esp + 0x24]
push eax
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [esp + 0x2c]
push ecx
call sub.gdiplus.dll_GdipDeletePath
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x3c]
mov eax, dword [esi]
push edx
push eax
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x45b6f1
mov dword [esi + 4], eax
mov ecx, dword [esp + 0x38]
mov edx, dword [esi]
push ecx
push edx
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x45b705
mov dword [esi + 4], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret