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

Disassembly:
sub esp, 0x64
push ebx
push ebp
mov ebp, dword [esp + 0x7c]
push esi
push edi
lea esi, [esp + 0x34]
mov edi, eax
call fcn.00427b60
test byte [0x57ec18], 1
jne 0x427c70
or dword [0x57ec18], 1
mov ecx, 0x57ec1c
call fcn.00401620
cmp byte [0x57ec28], 0
je 0x427c91
mov eax, dword [0x57ec1c]
mov ecx, dword [esp + 0x88]
push eax
push 0x64
push ecx
call dword [sym.imp.KERNEL32.dll_MulDiv]
jmp 0x427c98
mov eax, dword [esp + 0x88]
cmp eax, 1
setg bl
test byte [0x57ec18], 1
mov byte [esp + 0x14], bl
jne 0x427cbc
or dword [0x57ec18], 1
mov ecx, 0x57ec1c
call fcn.00401620
cmp dword [0x57ec1c], 0xfa
sete al
mov byte [esp + 0x84], al
test bl, bl
je 0x427cef
test al, al
jne 0x427cef
mov esi, dword [esp + 0x3c]
mov edx, dword [esi]
push 4
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x427cf3
mov dword [esi + 4], eax
jmp 0x427cf3
mov esi, dword [esp + 0x3c]
cmp byte [esp + 0xa0], 0
je 0x427d23
cmp dword [esp + 0x88], 0
je 0x427d1b
cmp dword [esp + 0x8c], 0
jne 0x427d3e
cmp dword [esp + 0x90], 0
jne 0x427d3e
mov byte [esp + 0xa0], 0
cmp dword [esp + 0x88], 0
jne 0x427d3e
mov eax, dword [esi]
push 3
push eax
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x427d3e
mov dword [esi + 4], eax
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
mov esi, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov dword [esp + 0x50], ecx
mov cl, byte [esp + 0x14]
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], ebx
test cl, cl
je 0x427d74
mov eax, dword [esp + 0x88]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x10], eax
jmp 0x427d80
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp byte [esp + 0xa0], 0
jne 0x427da8
test cl, cl
je 0x427d9e
add dword [esp + 0x50], eax
add dword [esp + 0x54], eax
add eax, eax
sub esi, eax
sub ebx, eax
jmp 0x427da0
dec esi
dec ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x58], esi
lea eax, [esp + 0x2c]
push eax
push 0
mov dword [esp + 0x34], 0
call sub.gdiplus.dll_GdipCreatePath
cmp byte [esp + 0xa0], 0
mov dword [esp + 0x30], eax
je 0x427e24
mov eax, dword [esp + 0x10]
mov ecx, dword [ebp]
mov edx, dword [ebp + 4]
add ecx, eax
add edx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [ebp + 8]
add eax, eax
sub ecx, eax
mov dword [esp + 0x44], edx
mov edx, dword [ebp + 0xc]
sub edx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x90]
push eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x50], edx
lea edx, [ecx + ecx]
lea ecx, [eax + eax]
push edx
push ecx
lea esi, [esp + 0x4c]
lea eax, [esp + 0x38]
call fcn.00427860
add esp, 0xc
jmp 0x427f66
cmp byte [esp + 0x84], 0
je 0x427f44
cmp dword [esp + 0x94], 6
jne 0x427f44
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x2c]
push ebx
push esi
push edx
push eax
push ecx
call sub.gdiplus.dll_GdipAddPathRectangleI
mov ebx, dword [esp + 0x94]
test eax, eax
je 0x427e65
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x14], eax
mov esi, eax
mov ecx, esi
shr ecx, 0x18
mov dword [esp + 0x84], eax
test cl, cl
je 0x428095
xor ecx, ecx
cmp ebx, ecx
je 0x427fc3
cmp ebx, 6
je 0x427fc3
fild dword [ebp]
cmp ebx, 1
setne cl
mov edx, eax
mov eax, dword [esp + 0x14]
fstp dword [esp + 0x60]
fild dword [ebp + 4]
mov dword [esp + 0x18], edx
lea edx, [esp + 0x60]
mov dword [esp + 0x24], eax
fstp dword [esp + 0x64]
lea eax, [esp + 0x18]
fild dword [ebp + 8]
push ecx
push edx
lea ecx, [esp + 0x2c]
fstp dword [esp + 0x70]
lea esi, [esp + 0x48]
fild dword [ebp + 0xc]
fstp dword [esp + 0x74]
call fcn.004360f0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
mov edx, dword [edi]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x427ef6
mov dword [edi + 4], eax
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x427f31
lea eax, [esp + 0x24]
lea esi, [esp + 0x18]
mov dword [esp + 0x24], ebx
call fcn.00436270
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x1c]
mov ecx, dword [edi]
push eax
push esi
push ecx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x427f2b
mov dword [edi + 4], eax
push esi
call sub.gdiplus.dll_GdipDeleteBrush
mov edx, dword [esp + 0x44]
push edx
call sub.gdiplus.dll_GdipDeleteBrush
mov esi, dword [esp + 0x7c]
jmp 0x42809c
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 4]
push edx
mov edx, dword [ebp]
push eax
mov eax, dword [esp + 0x34]
push ecx
push edx
push eax
call sub.gdiplus.dll_GdipAddPathRectangleI
test eax, eax
je 0x427f66
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0x94]
cmp ebx, 6
je 0x427e65
fld dword [0x5619b8]
mov esi, dword [esp + 0x7c]
sub esp, 0xc
fstp dword [esp + 8]
mov eax, esi
fld1
fst dword [esp + 4]
fstp dword [esp]
call fcn.0046fa30
fld dword [0x5619b4]
add esp, 0xc
sub esp, 0xc
fstp dword [esp + 8]
mov dword [esp + 0x20], eax
fld1
mov eax, esi
fst dword [esp + 4]
fstp dword [esp]
call fcn.0046fa30
add esp, 0xc
jmp 0x427e6f
cmp esi, 0xff000000
je 0x42805a
movzx eax, byte [esp + 0x98]
mov dword [esp + 0x18], ecx
shl eax, 0x18
lea ecx, [esp + 0x18]
and esi, 0xffffff
or eax, esi
push ecx
push eax
mov dword [esp + 0x84], eax
call sub.gdiplus.dll_GdipCreateSolidFill
mov eax, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
push edx
push eax
mov ebx, eax
mov eax, dword [edi]
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x428013
mov dword [edi + 4], eax
mov eax, dword [esp + 0x80]
test eax, eax
je 0x42804e
mov dword [esp + 0x24], eax
lea eax, [esp + 0x24]
lea esi, [esp + 0x40]
call fcn.00436270
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x44]
mov edx, dword [edi]
push ecx
push esi
push edx
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x428048
mov dword [edi + 4], eax
push esi
call sub.gdiplus.dll_GdipDeleteBrush
push ebx
call sub.gdiplus.dll_GdipDeleteBrush
mov esi, dword [esp + 0x7c]
jmp 0x428095
mov dword [esp + 0x7c], ecx
movzx ecx, byte [esp + 0x98]
lea eax, [esp + 0x7c]
push eax
shl ecx, 0x18
push ecx
call sub.gdiplus.dll_GdipCreateSolidFill
mov eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x2c]
push edx
push eax
mov ebx, eax
mov eax, dword [edi]
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x42808f
mov dword [edi + 4], eax
push ebx
call sub.gdiplus.dll_GdipDeleteBrush
mov ebx, dword [esp + 0x80]
mov eax, dword [esp + 0x78]
movzx ecx, byte [esp + 0x9c]
cmp esi, eax
sete dl
and eax, 0xffffff
shl ecx, 0x18
or ecx, eax
mov eax, ecx
shr eax, 0x18
test al, al
je 0x4283f2
cmp dword [esp + 0x88], 0
jle 0x4283f2
cmp ecx, 0xff000000
je 0x4283f2
mov esi, dword [esp + 0x94]
test esi, esi
je 0x4282cd
cmp esi, 6
je 0x4282cd
test dl, dl
je 0x42811d
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 0x428227
mov edx, dword [ebp + 4]
fild dword [ebp]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x14]
fstp dword [esp + 0x60]
dec edx
mov dword [esp + 0x9c], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xa0], edx
fild dword [esp + 0xa0]
mov dword [esp + 0x7c], ecx
xor ecx, ecx
inc eax
fstp dword [esp + 0x64]
cmp esi, 1
fild dword [ebp + 8]
setne cl
mov dword [esp + 0xa0], eax
lea edx, [esp + 0x60]
fstp dword [esp + 0x68]
lea eax, [esp + 0x9c]
fild dword [esp + 0xa0]
lea esi, [esp + 0x40]
push ecx
fstp dword [esp + 0x70]
push edx
lea ecx, [esp + 0x84]
call fcn.004360f0
fild dword [esp + 0x88]
push ecx
mov eax, esi
fstp dword [esp + 0xa4]
lea esi, [esp + 0x1c]
fld dword [esp + 0xa4]
fstp dword [esp]
call fcn.00435fd0
mov edx, esi
lea eax, [esp + 0x2c]
mov esi, edi
call fcn.00436060
test ebx, ebx
je 0x42820e
fld dword [esp + 0xa0]
push ecx
lea eax, [esp + 0xa0]
fstp dword [esp]
lea esi, [esp + 0x28]
mov dword [esp + 0xa0], ebx
call fcn.00436460
mov edx, esi
lea eax, [esp + 0x2c]
mov esi, edi
call fcn.00436060
mov eax, dword [esp + 0x24]
push eax
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [esp + 0x18]
push ecx
call sub.gdiplus.dll_GdipDeletePen
mov edx, dword [esp + 0x44]
push edx
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x4283f2
fild dword [esp + 0x88]
push ecx
lea eax, [esp + 0xa0]
lea esi, [esp + 0x1c]
fstp dword [esp + 0xa4]
mov dword [esp + 0xa0], ecx
fld dword [esp + 0xa4]
fstp dword [esp]
call fcn.00436460
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp]
add eax, ecx
mov ecx, dword [ebp + 8]
push edx
add ecx, edx
mov edx, esi
push edx
mov edx, eax
mov esi, edi
call fcn.00435fa0
test ebx, ebx
je 0x4282c3
fld dword [esp + 0xa0]
push ecx
lea eax, [esp + 0xa0]
fstp dword [esp]
lea esi, [esp + 0x28]
mov dword [esp + 0xa0], ebx
call fcn.00436460
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x10]
mov edx, dword [ebp]
add eax, ecx
mov ecx, dword [ebp + 8]
push edx
add ecx, edx
mov edx, esi
push edx
mov edx, eax
mov esi, edi
call fcn.00435fa0
mov eax, dword [esp + 0x24]
push eax
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [esp + 0x18]
push ecx
jmp 0x4283ed
fild dword [esp + 0x88]
fstp dword [esp + 0x9c]
test dl, dl
jne 0x4282e4
cmp esi, 6
jne 0x428311
cmp byte [esp + 0xa4], 0
je 0x428311
mov al, byte [esp + 0x98]
cmp al, 0xff
je 0x428311
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
je 0x42839a
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x24]
mov edx, dword [edi]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipDrawPath
test eax, eax
je 0x428358
mov dword [edi + 4], eax
test ebx, ebx
je 0x4283e8
fld dword [esp + 0x9c]
lea eax, [esp + 0x18]
push eax
push 0
push ecx
fstp dword [esp]
push ebx
mov dword [esp + 0x28], 0
call sub.gdiplus.dll_GdipCreatePen1
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x2c]
lea edx, [esp + 0x18]
mov esi, edi
call fcn.00436060
mov ecx, dword [esp + 0x18]
push ecx
jmp 0x4283e3
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x54]
call fcn.00436030
test ebx, ebx
je 0x4283e8
fld dword [esp + 0x9c]
lea eax, [esp + 0x18]
push eax
push 0
push ecx
fstp dword [esp]
push ebx
mov dword [esp + 0x28], 0
call sub.gdiplus.dll_GdipCreatePen1
lea ecx, [esp + 0x18]
mov dword [esp + 0x1c], eax
push ecx
lea eax, [esp + 0x54]
call fcn.00436030
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 0x428414
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 0x428428
mov dword [esi + 4], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64
ret