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

Disassembly:
push 0xffffffffffffffff
push 0x540e88
mov eax, dword fs:[0]
push eax
sub esp, 0x6c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x579aa4]
xor eax, esp
push eax
lea eax, [esp + 0x80]
mov dword fs:[0], eax
mov edi, ecx
mov ebp, dword [esp + 0x94]
cmp ebp, 0xff000000
je 0x428ae4
mov esi, dword [esp + 0xa0]
lea eax, [esp + 0x44]
xor ebx, ebx
push eax
add esi, esi
push ebx
mov dword [esp + 0x34], esi
mov dword [esp + 0x4c], ebx
call sub.gdiplus.dll_GdipCreatePath
mov dword [esp + 0x48], eax
mov dword [esp + 0x88], ebx
cmp byte [esp + 0xa8], bl
je 0x4284b3
push ebx
push edi
mov eax, esi
lea ebx, [esp + 0x4c]
call fcn.004276e0
add esp, 8
jmp 0x4284d4
mov ecx, dword [edi + 0xc]
mov edx, dword [edi + 8]
mov eax, dword [edi + 4]
push ecx
mov ecx, dword [edi]
push edx
mov edx, dword [esp + 0x4c]
push eax
push ecx
push edx
call sub.gdiplus.dll_GdipAddPathRectangleI
cmp eax, ebx
je 0x4284d4
mov dword [esp + 0x48], eax
cmp byte [esp + 0xac], 0
jne 0x4284e9
mov bl, 0xb2
mov byte [esp + 0xa4], bl
jmp 0x4284f0
mov bl, byte [esp + 0xa4]
fld dword [0x5619b8]
sub esp, 0xc
fstp dword [esp + 8]
mov eax, ebp
fld1
fst dword [esp + 4]
fstp dword [esp]
call fcn.0046fa30
fld dword [0x5619b4]
fstp dword [esp + 8]
mov esi, eax
fld1
mov eax, ebp
fst dword [esp + 4]
fstp dword [esp]
call fcn.0046fa30
add esp, 0xc
movzx ecx, bl
test bl, bl
jne 0x428538
mov ecx, 0xff
mov edx, ebp
shl ecx, 0x18
and edx, 0xffffff
or edx, ecx
mov dword [esp + 0x38], edx
movzx ecx, bl
test bl, bl
jne 0x428555
mov ecx, 0xff
shl ecx, 0x18
and esi, 0xffffff
or esi, ecx
mov edx, esi
mov dword [esp + 0x1c], edx
movzx ecx, bl
test bl, bl
jne 0x428572
mov ecx, 0xff
and eax, 0xffffff
shl ecx, 0x18
or eax, ecx
cmp byte [esp + 0xa8], 0
mov dword [esp + 0x18], eax
je 0x428895
fild dword [edi]
lea ebx, [edi + 4]
lea ebp, [edi + 8]
lea esi, [edi + 0xc]
fstp dword [esp + 0x20]
lea ecx, [esp + 0x14]
fild dword [ebx]
push ecx
push 0
push 1
fstp dword [esp + 0x20]
push eax
fild dword [ebp]
push edx
lea edx, [esp + 0x68]
push edx
fstp dword [esp + 0x3c]
mov dword [esp + 0x7c], vtable.Gdiplus::LinearGradientBrush.0
fild dword [esi]
fstp dword [esp + 0x40]
fld dword [esp + 0x38]
fstp dword [esp + 0x6c]
fld dword [esp + 0x2c]
mov dword [esp + 0x2c], 0
fstp dword [esp + 0x70]
fld dword [esp + 0x3c]
fstp dword [esp + 0x74]
fld dword [esp + 0x40]
fstp dword [esp + 0x78]
call sub.gdiplus.dll_GdipCreateLineBrushFromRect
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x68], eax
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x90]
push ecx
push eax
mov eax, dword [edx]
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x428624
mov ecx, dword [esp + 0x90]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x428677
lea edx, [esp + 0x20]
push edx
push eax
mov dword [esp + 0x28], 0
call sub.gdiplus.dll_GdipCreateSolidFill
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x90]
push ecx
push eax
mov dword [esp + 0x60], eax
mov eax, dword [edx]
push eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x42866d
mov ecx, dword [esp + 0x90]
mov dword [ecx + 4], eax
mov edx, dword [esp + 0x58]
push edx
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esi]
fild dword [edi]
mov edx, dword [ebx]
xor ecx, ecx
cmp dword [esp + 0x2c], eax
fstp dword [esp + 0x28]
mov dword [esp + 0x54], vtable.Gdiplus::LinearGradientBrush.0
setge cl
dec edx
mov dword [esp + 0x2c], edx
fild dword [esp + 0x2c]
xor edi, edi
fstp dword [esp + 0x24]
fild dword [ebp]
inc ecx
add eax, ecx
fstp dword [esp + 0x20]
mov dword [esp + 0x2c], eax
fild dword [esp + 0x2c]
lea eax, [esp + 0x20]
push eax
mov eax, dword [esp + 0x3c]
fstp dword [esp + 0x30]
push edi
fld dword [esp + 0x30]
push 1
fstp dword [esp + 0x7c]
push eax
fld dword [esp + 0x34]
push eax
fstp dword [esp + 0x88]
lea ecx, [esp + 0x84]
fld dword [esp + 0x34]
push ecx
fstp dword [esp + 0x90]
mov dword [esp + 0x38], edi
fld dword [esp + 0x44]
fstp dword [esp + 0x94]
call sub.gdiplus.dll_GdipCreateLineBrushFromRect
mov edx, dword [esp + 0x20]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x58], edx
mov eax, dword [esp + 0x98]
mov byte [esp + 0x88], 2
cmp eax, dword [esp + 0x94]
jne 0x428755
mov eax, dword [esp + 0x1c]
fldz
mov ecx, dword [esp + 0x18]
fstp dword [esp + 0x38]
fld1
mov dword [esp + 0x2c], eax
lea edx, [esp + 0x38]
fstp dword [esp + 0x3c]
lea eax, [esp + 0x54]
push edx
mov dword [esp + 0x34], ecx
push eax
lea eax, [edi + 2]
lea ecx, [esp + 0x34]
jmp 0x4287eb
cmp byte [esp + 0xac], 0
jne 0x42877a
movzx ecx, byte [esp + 0xa4]
and eax, 0xffffff
shl ecx, 0x18
or ecx, eax
mov dword [esp + 0x98], ecx
mov eax, ecx
fild dword [esp + 0xa0]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
fadd st(0), st(0)
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], edx
fidiv dword [esi]
fstp dword [esp + 0x94]
fld dword [esp + 0x94]
fcomp qword [0x5619a8]
fnstsw ax
test ah, 1
jne 0x4287c1
fld dword [0x5619b0]
fstp dword [esp + 0x94]
fldz
lea ecx, [esp + 0x38]
fstp dword [esp + 0x38]
push ecx
fld dword [esp + 0x98]
lea edx, [esp + 0x58]
fstp dword [esp + 0x40]
push edx
fld1
mov eax, 3
fstp dword [esp + 0x48]
lea ecx, [esp + 0x34]
call fcn.00435f00
fld1
mov ebx, dword [esp + 0x58]
lea eax, [esp + 0x4c]
push eax
push edi
push ecx
fstp dword [esp]
push ebx
mov dword [esp + 0x5c], edi
call sub.gdiplus.dll_GdipCreatePen2
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x90]
push ecx
mov dword [esp + 0x54], eax
mov eax, dword [esi]
push edx
push eax
call sub.gdiplus.dll_GdipDrawPath
cmp eax, edi
je 0x42882e
mov dword [esi + 4], eax
mov eax, dword [esp + 0x9c]
cmp eax, edi
je 0x428876
fld1
lea ecx, [esp + 0x38]
push ecx
push edi
push ecx
fstp dword [esp]
push eax
mov dword [esp + 0x48], edi
call sub.gdiplus.dll_GdipCreatePen1
mov edx, dword [esp + 0x44]
mov ecx, dword [esi]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
push edx
push eax
push ecx
call sub.gdiplus.dll_GdipDrawPath
cmp eax, edi
je 0x42886c
mov dword [esi + 4], eax
mov edx, dword [esp + 0x38]
push edx
call sub.gdiplus.dll_GdipDeletePen
mov eax, dword [esp + 0x4c]
push eax
call sub.gdiplus.dll_GdipDeletePen
push ebx
call sub.gdiplus.dll_GdipDeleteBrush
mov ecx, dword [esp + 0x14]
push ecx
call sub.gdiplus.dll_GdipDeleteBrush
jmp 0x428ada
mov ebp, dword [esp + 0x90]
mov eax, ebp
lea esi, [esp + 0x54]
call fcn.00427b60
mov esi, dword [esp + 0x5c]
mov edx, dword [esi]
push 4
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x4288bc
mov dword [esi + 4], eax
fild dword [edi]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea ebx, [edi + 8]
fstp dword [esp + 0x70]
lea eax, [esp + 0x94]
fild dword [edi + 4]
push eax
fld1
push 0
fsub st(1), st(0)
push 1
fxch st(1)
push ecx
push edx
lea eax, [esp + 0x84]
fstp dword [esp + 0x88]
push eax
fild dword [ebx]
mov dword [esp + 0xac], 0
fstp dword [esp + 0x90]
fiadd dword [edi + 0xc]
fstp dword [esp + 0x94]
call sub.gdiplus.dll_GdipCreateLineBrushFromRect
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x94]
mov edx, dword [ebp]
push ecx
push eax
push edx
mov esi, eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x428935
mov dword [ebp + 4], eax
push esi
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
mov ecx, dword [esi]
push eax
push ecx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x428953
mov dword [esi + 4], eax
mov edx, dword [esp + 0x58]
mov eax, dword [esi]
push edx
push eax
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x428967
mov dword [esi + 4], eax
cmp byte [esp + 0xac], 0
jne 0x428992
movzx ecx, byte [esp + 0xa4]
mov edx, dword [esp + 0x98]
shl ecx, 0x18
and edx, 0xffffff
or ecx, edx
mov dword [esp + 0x98], ecx
mov eax, ebp
lea esi, [esp + 0x54]
call fcn.00427b60
test byte [0x57ec18], 1
jne 0x4289b7
or dword [0x57ec18], 1
mov ecx, 0x57ec1c
call fcn.00401620
cmp byte [0x57ec28], 0
je 0x428afb
mov eax, dword [0x57ec1c]
cmp eax, 0x64
je 0x428afb
push 0x64
push eax
push 1
call dword [sym.imp.KERNEL32.dll_MulDiv]
mov esi, eax
cmp esi, 1
mov dword [esp + 0x94], esi
jle 0x428a04
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
push 4
push ecx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x428a04
mov edx, dword [esp + 0x5c]
mov dword [edx + 4], eax
fild dword [esp + 0x94]
lea eax, [esp + 0x4c]
push eax
push 0
push ecx
mov ecx, dword [esp + 0xa4]
fstp dword [esp]
push ecx
mov dword [esp + 0x5c], 0
call sub.gdiplus.dll_GdipCreatePen1
mov ecx, dword [edi + 4]
mov edi, dword [edi]
xor edx, edx
cmp esi, 1
setle dl
mov dword [esp + 0x50], eax
push ecx
mov eax, edi
sub eax, edx
add eax, dword [ebx]
push eax
mov eax, dword [esp + 0x54]
push ecx
mov ecx, dword [ebp]
push edi
push eax
push ecx
call sub.gdiplus.dll_GdipDrawLineI
test eax, eax
je 0x428a5b
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x428aa4
lea edx, [esp + 0x94]
push edx
push eax
mov dword [esp + 0x9c], 0
call sub.gdiplus.dll_GdipCreateSolidFill
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x94]
mov edx, dword [ebp]
push ecx
push eax
push edx
mov esi, eax
call sub.gdiplus.dll_GdipFillPath
test eax, eax
je 0x428a9e
mov dword [ebp + 4], eax
push esi
call sub.gdiplus.dll_GdipDeleteBrush
mov eax, dword [esp + 0x4c]
push eax
call sub.gdiplus.dll_GdipDeletePen
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x5c]
mov edx, dword [esi]
push ecx
push edx
call sub.gdiplus.dll_GdipSetPixelOffsetMode
test eax, eax
je 0x428ac6
mov dword [esi + 4], eax
mov eax, dword [esp + 0x58]
mov ecx, dword [esi]
push eax
push ecx
call sub.gdiplus.dll_GdipSetSmoothingMode
test eax, eax
je 0x428ada
mov dword [esi + 4], eax
mov edx, dword [esp + 0x44]
push edx
call sub.gdiplus.dll_GdipDeletePath
mov ecx, dword [esp + 0x80]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x78
ret
mov esi, 1
mov dword [esp + 0x94], esi
jmp 0x428a04